style_group.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package xvdoc
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. )
  6. type styleRect struct {
  7. x, y int
  8. dx, dy int
  9. styles []string
  10. }
  11. func (s *styleRect) UnmarshalJSON(src []byte) (err error) {
  12. dec := json.NewDecoder(bytes.NewReader(src))
  13. var t json.Token
  14. for dec.More() && err == nil {
  15. if t, err = dec.Token(); err == nil {
  16. if _, check := t.(json.Delim); !check {
  17. switch t.(string) {
  18. case "x":
  19. err = dec.Decode(&s.x)
  20. case "y":
  21. err = dec.Decode(&s.y)
  22. case "dx":
  23. err = dec.Decode(&s.dx)
  24. case "dy":
  25. err = dec.Decode(&s.dy)
  26. case "styles":
  27. err = dec.Decode(&s.styles)
  28. default:
  29. err = dec.Decode(new(interface{}))
  30. }
  31. }
  32. }
  33. }
  34. return
  35. }
  36. //////////////////////////////////////////////////////////////////
  37. type rectMerge struct {
  38. x, y int
  39. dx, dy int
  40. }
  41. func (s *rectMerge) UnmarshalJSON(src []byte) (err error) {
  42. dec := json.NewDecoder(bytes.NewReader(src))
  43. var t json.Token
  44. for dec.More() && err == nil {
  45. if t, err = dec.Token(); err == nil {
  46. if _, check := t.(json.Delim); !check {
  47. switch t.(string) {
  48. case "x":
  49. err = dec.Decode(&s.x)
  50. case "y":
  51. err = dec.Decode(&s.y)
  52. case "dx":
  53. err = dec.Decode(&s.dx)
  54. case "dy":
  55. err = dec.Decode(&s.dy)
  56. default:
  57. err = dec.Decode(new(interface{}))
  58. }
  59. }
  60. }
  61. }
  62. return
  63. }
  64. ///////////////////////////////////////////////////////////////
  65. type cellImage struct {
  66. x, y int
  67. path string
  68. format JSONMap
  69. }
  70. func (s *cellImage) UnmarshalJSON(src []byte) (err error) {
  71. dec := json.NewDecoder(bytes.NewReader(src))
  72. var t json.Token
  73. for dec.More() && err == nil {
  74. if t, err = dec.Token(); err == nil {
  75. if _, check := t.(json.Delim); !check {
  76. switch t.(string) {
  77. case "x":
  78. err = dec.Decode(&s.x)
  79. case "y":
  80. err = dec.Decode(&s.y)
  81. case "path":
  82. err = dec.Decode(&s.path)
  83. case "format":
  84. err = dec.Decode(&s.format)
  85. default:
  86. err = dec.Decode(new(interface{}))
  87. }
  88. }
  89. }
  90. }
  91. return
  92. }
  93. //////////////////////////////////////////////////////////////
  94. type rectWidths struct {
  95. x, dx int
  96. width float64
  97. }
  98. func (s *rectWidths) UnmarshalJSON(src []byte) (err error) {
  99. dec := json.NewDecoder(bytes.NewReader(src))
  100. var t json.Token
  101. for dec.More() && err == nil {
  102. if t, err = dec.Token(); err == nil {
  103. if _, check := t.(json.Delim); !check {
  104. switch t.(string) {
  105. case "x":
  106. err = dec.Decode(&s.x)
  107. case "dx":
  108. err = dec.Decode(&s.dx)
  109. case "width":
  110. err = dec.Decode(&s.width)
  111. default:
  112. err = dec.Decode(new(interface{}))
  113. }
  114. }
  115. }
  116. }
  117. return
  118. }