123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package xvdoc
- import (
- "bytes"
- "encoding/json"
- )
- type styleRect struct {
- x, y int
- dx, dy int
- styles []string
- }
- func (s *styleRect) UnmarshalJSON(src []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(src))
- var t json.Token
- for dec.More() && err == nil {
- if t, err = dec.Token(); err == nil {
- if _, check := t.(json.Delim); !check {
- switch t.(string) {
- case "x":
- err = dec.Decode(&s.x)
- case "y":
- err = dec.Decode(&s.y)
- case "dx":
- err = dec.Decode(&s.dx)
- case "dy":
- err = dec.Decode(&s.dy)
- case "styles":
- err = dec.Decode(&s.styles)
- default:
- err = dec.Decode(new(interface{}))
- }
- }
- }
- }
- return
- }
- //////////////////////////////////////////////////////////////////
- type rectMerge struct {
- x, y int
- dx, dy int
- }
- func (s *rectMerge) UnmarshalJSON(src []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(src))
- var t json.Token
- for dec.More() && err == nil {
- if t, err = dec.Token(); err == nil {
- if _, check := t.(json.Delim); !check {
- switch t.(string) {
- case "x":
- err = dec.Decode(&s.x)
- case "y":
- err = dec.Decode(&s.y)
- case "dx":
- err = dec.Decode(&s.dx)
- case "dy":
- err = dec.Decode(&s.dy)
- default:
- err = dec.Decode(new(interface{}))
- }
- }
- }
- }
- return
- }
- ///////////////////////////////////////////////////////////////
- type cellImage struct {
- x, y int
- path string
- format JSONMap
- }
- func (s *cellImage) UnmarshalJSON(src []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(src))
- var t json.Token
- for dec.More() && err == nil {
- if t, err = dec.Token(); err == nil {
- if _, check := t.(json.Delim); !check {
- switch t.(string) {
- case "x":
- err = dec.Decode(&s.x)
- case "y":
- err = dec.Decode(&s.y)
- case "path":
- err = dec.Decode(&s.path)
- case "format":
- err = dec.Decode(&s.format)
- default:
- err = dec.Decode(new(interface{}))
- }
- }
- }
- }
- return
- }
- //////////////////////////////////////////////////////////////
- type rectWidths struct {
- x, dx int
- width float64
- }
- func (s *rectWidths) UnmarshalJSON(src []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(src))
- var t json.Token
- for dec.More() && err == nil {
- if t, err = dec.Token(); err == nil {
- if _, check := t.(json.Delim); !check {
- switch t.(string) {
- case "x":
- err = dec.Decode(&s.x)
- case "dx":
- err = dec.Decode(&s.dx)
- case "width":
- err = dec.Decode(&s.width)
- default:
- err = dec.Decode(new(interface{}))
- }
- }
- }
- }
- return
- }
|