vislite 0.5.2-alpha.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/.editorconfig +18 -18
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +143 -137
  4. package/LICENSE +20 -20
  5. package/README.md +69 -69
  6. package/lib/Buffer/index.umd.js +36 -36
  7. package/lib/Buffer/index.umd.min.js +2 -2
  8. package/lib/Canvas/index.umd.js +650 -650
  9. package/lib/Canvas/index.umd.min.js +2 -2
  10. package/lib/Cardinal/index.umd.js +91 -91
  11. package/lib/Cardinal/index.umd.min.js +2 -2
  12. package/lib/Eoap/index.umd.js +34 -34
  13. package/lib/Eoap/index.umd.min.js +2 -2
  14. package/lib/Geometry/index.umd.js +142 -142
  15. package/lib/Geometry/index.umd.min.js +2 -2
  16. package/lib/Hermite/index.umd.js +36 -36
  17. package/lib/Hermite/index.umd.min.js +2 -2
  18. package/lib/Matrix4/index.umd.js +119 -119
  19. package/lib/Matrix4/index.umd.min.js +2 -2
  20. package/lib/Mercator/index.umd.js +20 -20
  21. package/lib/Mercator/index.umd.min.js +2 -2
  22. package/lib/OralCanvas/index.es.js +598 -598
  23. package/lib/OralCanvas/index.es.min.js +2 -2
  24. package/lib/OralWebGL/index.es.js +532 -532
  25. package/lib/OralWebGL/index.es.min.js +3 -3
  26. package/lib/SVG/index.umd.js +470 -405
  27. package/lib/SVG/index.umd.min.js +3 -3
  28. package/lib/Shader/index.umd.js +69 -69
  29. package/lib/Shader/index.umd.min.js +3 -3
  30. package/lib/Texture/index.umd.js +53 -53
  31. package/lib/Texture/index.umd.min.js +2 -2
  32. package/lib/TreeLayout/index.umd.js +363 -363
  33. package/lib/TreeLayout/index.umd.min.js +2 -2
  34. package/lib/WebGL/index.umd.js +579 -579
  35. package/lib/WebGL/index.umd.min.js +3 -3
  36. package/lib/animation/index.umd.js +72 -72
  37. package/lib/animation/index.umd.min.js +2 -2
  38. package/lib/formatColor/index.umd.js +40 -40
  39. package/lib/formatColor/index.umd.min.js +2 -2
  40. package/lib/getLoopColors/index.umd.js +36 -36
  41. package/lib/getLoopColors/index.umd.min.js +2 -2
  42. package/lib/getWebGLContext/index.umd.js +44 -44
  43. package/lib/getWebGLContext/index.umd.min.js +2 -2
  44. package/lib/index.umd.js +2744 -2662
  45. package/lib/index.umd.min.js +3 -3
  46. package/lib/move/index.umd.js +27 -0
  47. package/lib/move/index.umd.min.js +11 -0
  48. package/lib/resizeObserver/index.umd.js +29 -29
  49. package/lib/resizeObserver/index.umd.min.js +2 -2
  50. package/lib/rotate/index.umd.js +8 -8
  51. package/lib/rotate/index.umd.min.js +2 -2
  52. package/lib/ruler/index.umd.js +126 -126
  53. package/lib/ruler/index.umd.min.js +2 -2
  54. package/lib/scale/index.umd.js +26 -0
  55. package/lib/scale/index.umd.min.js +11 -0
  56. package/lib/throttle/index.umd.js +49 -49
  57. package/lib/throttle/index.umd.min.js +2 -2
  58. package/lib/viewHandler/index.umd.js +120 -120
  59. package/lib/viewHandler/index.umd.min.js +2 -2
  60. package/miniprogram/ui-canvas/index.js +107 -107
  61. package/miniprogram/ui-canvas/index.json +4 -4
  62. package/miniprogram/ui-canvas/index.wxml +4 -4
  63. package/miniprogram/ui-canvas/index.wxss +5 -5
  64. package/package/Buffer/index.ts +2 -2
  65. package/package/Canvas/index.ts +2 -2
  66. package/package/Cardinal/index.ts +2 -2
  67. package/package/Eoap/index.ts +2 -2
  68. package/package/Geometry/index.ts +2 -2
  69. package/package/Hermite/index.ts +2 -2
  70. package/package/Matrix4/index.ts +2 -2
  71. package/package/Mercator/index.ts +2 -2
  72. package/package/OralCanvas/index.ts +2 -2
  73. package/package/OralWebGL/index.ts +2 -2
  74. package/package/SVG/index.ts +2 -2
  75. package/package/Shader/index.ts +39 -39
  76. package/package/Texture/index.ts +2 -2
  77. package/package/TreeLayout/index.ts +2 -2
  78. package/package/WebGL/index.ts +2 -2
  79. package/package/animation/index.ts +2 -2
  80. package/package/formatColor/index.ts +2 -2
  81. package/package/getLoopColors/index.ts +2 -2
  82. package/package/getWebGLContext/index.ts +39 -39
  83. package/package/index.ts +76 -72
  84. package/package/move/index.ts +3 -0
  85. package/package/resizeObserver/index.ts +2 -2
  86. package/package/rotate/index.ts +2 -2
  87. package/package/ruler/index.ts +2 -2
  88. package/package/scale/index.ts +3 -0
  89. package/package/throttle/index.ts +2 -2
  90. package/package/viewHandler/index.ts +2 -2
  91. package/package.json +66 -66
  92. package/src/Canvas.ts +67 -67
  93. package/src/Eoap.ts +66 -66
  94. package/src/Geometry.ts +82 -82
  95. package/src/Matrix4/index.ts +76 -76
  96. package/src/Matrix4/move.ts +12 -12
  97. package/src/Matrix4/rotate.ts +15 -15
  98. package/src/Matrix4/scale.ts +11 -11
  99. package/src/Matrix4/transform.ts +64 -64
  100. package/src/Mercator.ts +27 -27
  101. package/src/SVG.ts +24 -24
  102. package/src/TreeLayout/index.ts +186 -186
  103. package/src/WebGL.ts +66 -66
  104. package/src/animation.ts +98 -98
  105. package/src/common/assemble.ts +22 -22
  106. package/src/common/canvas/arc.ts +50 -50
  107. package/src/common/canvas/config.ts +158 -158
  108. package/src/common/canvas/gradient.ts +29 -29
  109. package/src/common/canvas/index.ts +168 -168
  110. package/src/common/canvas/painter.ts +426 -426
  111. package/src/common/canvas/texts.ts +18 -18
  112. package/src/common/geometry/prism-horizontal.ts +33 -33
  113. package/src/common/geometry/prism-vertical.ts +40 -40
  114. package/src/common/geometry/sphere-fragment.ts +39 -39
  115. package/src/common/geometry/tool/circle.ts +11 -11
  116. package/src/common/mergeOption.ts +6 -6
  117. package/src/common/setStyle.ts +5 -5
  118. package/src/common/svg/config.ts +186 -174
  119. package/src/common/svg/gradient.ts +63 -0
  120. package/src/common/svg/index.ts +356 -344
  121. package/src/common/svg/tool.ts +44 -44
  122. package/src/common/tree/index.ts +25 -25
  123. package/src/common/tree/toInnerTree.ts +56 -56
  124. package/src/common/tree/toPlainTree.ts +131 -131
  125. package/src/common/webgl/buffer.ts +79 -79
  126. package/src/common/webgl/doDraw.ts +108 -108
  127. package/src/common/webgl/getColorFactory.ts +26 -26
  128. package/src/common/webgl/getShader.ts +48 -48
  129. package/src/common/webgl/getTexture.ts +11 -11
  130. package/src/common/webgl/getWebGLContext.ts +27 -27
  131. package/src/common/webgl/index.ts +223 -223
  132. package/src/common/webgl/shader.ts +75 -75
  133. package/src/common/webgl/texture.ts +96 -96
  134. package/src/formatColor.ts +44 -44
  135. package/src/getLoopColors.ts +42 -42
  136. package/src/interpolation/Cardinal.ts +110 -110
  137. package/src/interpolation/Hermite.ts +65 -65
  138. package/src/move.ts +8 -0
  139. package/src/resizeObserver.ts +36 -36
  140. package/src/rotate.ts +7 -7
  141. package/src/ruler.ts +188 -188
  142. package/src/scale.ts +7 -0
  143. package/src/shader/fsColor.c +7 -7
  144. package/src/shader/fsColors.c +7 -7
  145. package/src/shader/fsCube.c +8 -8
  146. package/src/shader/fsImage.c +8 -8
  147. package/src/shader/vsColor.c +17 -17
  148. package/src/shader/vsColors.c +13 -13
  149. package/src/shader/vsCube.c +13 -13
  150. package/src/shader/vsImage.c +13 -13
  151. package/src/throttle.ts +51 -51
  152. package/src/viewHandler.ts +158 -158
  153. package/types/Buffer.d.ts +23 -23
  154. package/types/Canvas.d.ts +300 -300
  155. package/types/CanvasConfig.d.ts +106 -106
  156. package/types/CanvasOption.d.ts +7 -7
  157. package/types/Cardinal.d.ts +13 -13
  158. package/types/Geometry.d.ts +40 -40
  159. package/types/GeometryOption.d.ts +11 -11
  160. package/types/GeometryResult.d.ts +18 -18
  161. package/types/Gradient.d.ts +14 -14
  162. package/types/Hermite.d.ts +18 -18
  163. package/types/Map.d.ts +9 -9
  164. package/types/Matrix4.d.ts +42 -42
  165. package/types/Object3D.d.ts +114 -114
  166. package/types/SVG.d.ts +238 -215
  167. package/types/SVGConfig.d.ts +76 -76
  168. package/types/Scene3D.d.ts +6 -6
  169. package/types/Shader.d.ts +21 -21
  170. package/types/Texture.d.ts +16 -16
  171. package/types/Tree.d.ts +69 -69
  172. package/types/TreeConfig.d.ts +24 -24
  173. package/types/TreeLayout.d.ts +54 -54
  174. package/types/TreeOption.d.ts +48 -48
  175. package/types/WebGL.d.ts +38 -38
  176. package/types/WebGLOption.d.ts +7 -7
  177. package/types/animation.d.ts +6 -6
  178. package/types/formatColor.d.ts +2 -2
  179. package/types/getLoopColors.d.ts +2 -2
  180. package/types/getWebGLContext.d.ts +2 -2
  181. package/types/index.d.ts +175 -169
  182. package/types/move.d.ts +3 -0
  183. package/types/painterConfig.d.ts +2 -2
  184. package/types/resizeObserver.d.ts +2 -2
  185. package/types/rotate.d.ts +2 -2
  186. package/types/ruler.d.ts +7 -7
  187. package/types/scale.d.ts +3 -0
  188. package/types/throttle.d.ts +4 -4
  189. package/types/throttleOption.d.ts +21 -21
  190. package/types/viewHandler.d.ts +13 -13
  191. package/uni-app/ui-canvas.vue +226 -226
@@ -1,174 +1,186 @@
1
- import type SVGConfigType from "../../../types/SVGConfig"
2
-
3
- import { setAttribute } from "./tool"
4
- import setStyle from "../setStyle"
5
- import arc from "../canvas/arc"
6
-
7
- // 文字统一设置方法
8
- export let initText = (
9
- el: SVGElement,
10
- config: SVGConfigType,
11
- x: number,
12
- y: number,
13
- deg: number
14
- ) => {
15
- if (el.nodeName.toLowerCase() !== "text") throw new Error("Need a <text> !")
16
-
17
- // 垂直对齐采用dy实现
18
- setAttribute(
19
- el,
20
- "dy",
21
- {
22
- top: config["fontSize"] * 0.5,
23
- middle: 0,
24
- bottom: -config["fontSize"] * 0.5,
25
- }[config.textBaseline]
26
- )
27
-
28
- setStyle(el, {
29
- // 文字对齐方式
30
- "text-anchor": {
31
- left: "start",
32
- right: "end",
33
- center: "middle",
34
- }[config.textAlign],
35
- "dominant-baseline": "central",
36
-
37
- // 文字大小和字体设置
38
- "font-size": config["fontSize"] + "px",
39
- "font-family": config["fontFamily"],
40
- })
41
-
42
- // 位置
43
- setAttribute(el, "x", x)
44
- setAttribute(el, "y", y)
45
-
46
- // 旋转
47
- if (typeof deg == "number") {
48
- deg = deg % 360
49
- setAttribute(el, "transform", "rotate(" + deg + "," + x + "," + y + ")")
50
- }
51
- }
52
-
53
- // 画圆统一设置方法
54
- export let initCircle = (el: SVGElement, cx: number, cy: number, r: number) => {
55
- if (el.nodeName.toLowerCase() !== "circle")
56
- throw new Error("Need a <circle> !")
57
- setAttribute(el, "cx", cx)
58
- setAttribute(el, "cy", cy)
59
- setAttribute(el, "r", r)
60
- }
61
-
62
- // 路径统一设置方法
63
- export let initPath = (el: SVGElement, path: string) => {
64
- if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
65
- setAttribute(el, "d", path)
66
- }
67
-
68
- // 画矩形统一设置方法
69
- export let initRect = (
70
- el: SVGElement,
71
- x: number,
72
- y: number,
73
- width: number,
74
- height: number
75
- ) => {
76
- if (el.nodeName.toLowerCase() !== "rect") throw new Error("Need a <rect> !")
77
-
78
- // 由于高和宽不可以是负数,校对一下
79
- if (height < 0) {
80
- height *= -1
81
- y -= height
82
- }
83
- if (width < 0) {
84
- width *= -1
85
- x -= width
86
- }
87
-
88
- setAttribute(el, "x", x)
89
- setAttribute(el, "y", y)
90
- setAttribute(el, "width", width)
91
- setAttribute(el, "height", height)
92
- }
93
-
94
- // 画弧统一设置方法
95
- export let initArc = (
96
- el: SVGElement,
97
- config: SVGConfigType,
98
- cx: number,
99
- cy: number,
100
- r1: number,
101
- r2: number,
102
- beginDeg: number,
103
- deg: number
104
- ) => {
105
- if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
106
-
107
- beginDeg = (beginDeg / 180) * Math.PI
108
- deg = (deg / 180) * Math.PI
109
-
110
- beginDeg = beginDeg % (Math.PI * 2)
111
-
112
- if (r1 > r2) {
113
- let temp = r1
114
- r1 = r2
115
- r2 = temp
116
- }
117
-
118
- // 当|deg|>=2π的时候都认为是一个圆环
119
- if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
120
- deg = Math.PI * 1.999999
121
- } else {
122
- deg = deg % (Math.PI * 2)
123
- }
124
-
125
- arc(
126
- beginDeg,
127
- deg,
128
- cx,
129
- cy,
130
- r1,
131
- r2,
132
- function (
133
- beginA: number,
134
- endA: number,
135
- begInnerX: number,
136
- begInnerY: number,
137
- begOuterX: number,
138
- begOuterY: number,
139
- endInnerX: number,
140
- endInnerY: number,
141
- endOuterX: number,
142
- endOuterY: number,
143
- r: number
144
- ) {
145
- let f = endA - beginA > Math.PI ? 1 : 0,
146
- d = "M" + begInnerX + " " + begInnerY
147
- if (r < 0) r = -r
148
-
149
- d +=
150
- // 横半径 竖半径 x轴偏移角度 0小弧/1大弧 0逆时针/1顺时针 终点x 终点y
151
- "A" + r1 + " " + r1 + " 0 " + f + " 1 " + endInnerX + " " + endInnerY
152
-
153
- // 结尾
154
- if (config.arcEndCap == "round")
155
- d += "A" + r + " " + r + " " + " 0 1 0 " + endOuterX + " " + endOuterY
156
- else if (config.arcEndCap == "-round")
157
- d += "A" + r + " " + r + " " + " 0 1 1 " + endOuterX + " " + endOuterY
158
- else d += "L" + endOuterX + " " + endOuterY
159
- d +=
160
- "A" + r2 + " " + r2 + " 0 " + f + " 0 " + begOuterX + " " + begOuterY
161
-
162
- // 开头
163
- if (config.arcStartCap == "round")
164
- d += "A" + r + " " + r + " " + " 0 1 0 " + begInnerX + " " + begInnerY
165
- else if (config.arcStartCap == "-round")
166
- d += "A" + r + " " + r + " " + " 0 1 1 " + begInnerX + " " + begInnerY
167
- else d += "L" + begInnerX + " " + begInnerY
168
-
169
- if (config.arcStartCap == "butt") d += "Z"
170
-
171
- setAttribute(el, "d", d)
172
- }
173
- )
174
- }
1
+ import type SVGConfigType from "../../../types/SVGConfig"
2
+
3
+ import { setAttribute } from "./tool"
4
+ import setStyle from "../setStyle"
5
+ import arc from "../canvas/arc"
6
+ import { toNode } from "./tool"
7
+
8
+ export let initDefs = (el: SVGElement) => {
9
+ let defs = el.getElementsByTagName('defs')
10
+ if (defs.length <= 0) {
11
+ let newDefs = toNode("defs")
12
+ el.appendChild(newDefs)
13
+ return newDefs
14
+ } else {
15
+ return defs[0]
16
+ }
17
+ }
18
+
19
+ // 文字统一设置方法
20
+ export let initText = (
21
+ el: SVGElement,
22
+ config: SVGConfigType,
23
+ x: number,
24
+ y: number,
25
+ deg: number
26
+ ) => {
27
+ if (el.nodeName.toLowerCase() !== "text") throw new Error("Need a <text> !")
28
+
29
+ // 垂直对齐采用dy实现
30
+ setAttribute(
31
+ el,
32
+ "dy",
33
+ {
34
+ top: config["fontSize"] * 0.5,
35
+ middle: 0,
36
+ bottom: -config["fontSize"] * 0.5,
37
+ }[config.textBaseline]
38
+ )
39
+
40
+ setStyle(el, {
41
+ // 文字对齐方式
42
+ "text-anchor": {
43
+ left: "start",
44
+ right: "end",
45
+ center: "middle",
46
+ }[config.textAlign],
47
+ "dominant-baseline": "central",
48
+
49
+ // 文字大小和字体设置
50
+ "font-size": config["fontSize"] + "px",
51
+ "font-family": config["fontFamily"],
52
+ })
53
+
54
+ // 位置
55
+ setAttribute(el, "x", x)
56
+ setAttribute(el, "y", y)
57
+
58
+ // 旋转
59
+ if (typeof deg == "number") {
60
+ deg = deg % 360
61
+ setAttribute(el, "transform", "rotate(" + deg + "," + x + "," + y + ")")
62
+ }
63
+ }
64
+
65
+ // 画圆统一设置方法
66
+ export let initCircle = (el: SVGElement, cx: number, cy: number, r: number) => {
67
+ if (el.nodeName.toLowerCase() !== "circle")
68
+ throw new Error("Need a <circle> !")
69
+ setAttribute(el, "cx", cx)
70
+ setAttribute(el, "cy", cy)
71
+ setAttribute(el, "r", r)
72
+ }
73
+
74
+ // 路径统一设置方法
75
+ export let initPath = (el: SVGElement, path: string) => {
76
+ if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
77
+ setAttribute(el, "d", path)
78
+ }
79
+
80
+ // 画矩形统一设置方法
81
+ export let initRect = (
82
+ el: SVGElement,
83
+ x: number,
84
+ y: number,
85
+ width: number,
86
+ height: number
87
+ ) => {
88
+ if (el.nodeName.toLowerCase() !== "rect") throw new Error("Need a <rect> !")
89
+
90
+ // 由于高和宽不可以是负数,校对一下
91
+ if (height < 0) {
92
+ height *= -1
93
+ y -= height
94
+ }
95
+ if (width < 0) {
96
+ width *= -1
97
+ x -= width
98
+ }
99
+
100
+ setAttribute(el, "x", x)
101
+ setAttribute(el, "y", y)
102
+ setAttribute(el, "width", width)
103
+ setAttribute(el, "height", height)
104
+ }
105
+
106
+ // 画弧统一设置方法
107
+ export let initArc = (
108
+ el: SVGElement,
109
+ config: SVGConfigType,
110
+ cx: number,
111
+ cy: number,
112
+ r1: number,
113
+ r2: number,
114
+ beginDeg: number,
115
+ deg: number
116
+ ) => {
117
+ if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
118
+
119
+ beginDeg = (beginDeg / 180) * Math.PI
120
+ deg = (deg / 180) * Math.PI
121
+
122
+ beginDeg = beginDeg % (Math.PI * 2)
123
+
124
+ if (r1 > r2) {
125
+ let temp = r1
126
+ r1 = r2
127
+ r2 = temp
128
+ }
129
+
130
+ // 当|deg|>=2π的时候都认为是一个圆环
131
+ if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
132
+ deg = Math.PI * 1.999999
133
+ } else {
134
+ deg = deg % (Math.PI * 2)
135
+ }
136
+
137
+ arc(
138
+ beginDeg,
139
+ deg,
140
+ cx,
141
+ cy,
142
+ r1,
143
+ r2,
144
+ function (
145
+ beginA: number,
146
+ endA: number,
147
+ begInnerX: number,
148
+ begInnerY: number,
149
+ begOuterX: number,
150
+ begOuterY: number,
151
+ endInnerX: number,
152
+ endInnerY: number,
153
+ endOuterX: number,
154
+ endOuterY: number,
155
+ r: number
156
+ ) {
157
+ let f = endA - beginA > Math.PI ? 1 : 0,
158
+ d = "M" + begInnerX + " " + begInnerY
159
+ if (r < 0) r = -r
160
+
161
+ d +=
162
+ // 横半径 竖半径 x轴偏移角度 0小弧/1大弧 0逆时针/1顺时针 终点x 终点y
163
+ "A" + r1 + " " + r1 + " 0 " + f + " 1 " + endInnerX + " " + endInnerY
164
+
165
+ // 结尾
166
+ if (config.arcEndCap == "round")
167
+ d += "A" + r + " " + r + " " + " 0 1 0 " + endOuterX + " " + endOuterY
168
+ else if (config.arcEndCap == "-round")
169
+ d += "A" + r + " " + r + " " + " 0 1 1 " + endOuterX + " " + endOuterY
170
+ else d += "L" + endOuterX + " " + endOuterY
171
+ d +=
172
+ "A" + r2 + " " + r2 + " 0 " + f + " 0 " + begOuterX + " " + begOuterY
173
+
174
+ // 开头
175
+ if (config.arcStartCap == "round")
176
+ d += "A" + r + " " + r + " " + " 0 1 0 " + begInnerX + " " + begInnerY
177
+ else if (config.arcStartCap == "-round")
178
+ d += "A" + r + " " + r + " " + " 0 1 1 " + begInnerX + " " + begInnerY
179
+ else d += "L" + begInnerX + " " + begInnerY
180
+
181
+ if (config.arcStartCap == "butt") d += "Z"
182
+
183
+ setAttribute(el, "d", d)
184
+ }
185
+ )
186
+ }
@@ -0,0 +1,63 @@
1
+ import { initDefs } from './config'
2
+ import { toNode, setAttribute } from "./tool"
3
+
4
+ // 线性渐变
5
+ export let linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
6
+
7
+ let defs = initDefs(el)
8
+ let gradientId = "vislite-lg-" + new Date().valueOf() + "-" + Math.random()
9
+
10
+ let linearGradient = toNode("linearGradient")
11
+ defs.appendChild(linearGradient)
12
+ setAttribute(linearGradient, "id", gradientId)
13
+ setAttribute(linearGradient, "x1", x0 + "%")
14
+ setAttribute(linearGradient, "y1", y0 + "%")
15
+ setAttribute(linearGradient, "x2", x1 + "%")
16
+ setAttribute(linearGradient, "y2", y1 + "%")
17
+
18
+ let enhanceGradient = {
19
+ "value": function () {
20
+ return "url(#" + gradientId + ")";
21
+ },
22
+ "setColor": function (stop: number, color: string) {
23
+
24
+ let stopEl = toNode("stop")
25
+ linearGradient.appendChild(stopEl)
26
+ setAttribute(stopEl, "offset", (stop * 100) + "%")
27
+ setAttribute(stopEl, "style", "stop-color:" + color + ";")
28
+
29
+ return enhanceGradient
30
+ }
31
+ }
32
+ return enhanceGradient
33
+ }
34
+
35
+ // 环形渐变
36
+ export let radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
37
+
38
+ let defs = initDefs(el)
39
+ let gradientId = "vislite-rg-" + new Date().valueOf() + "-" + Math.random()
40
+
41
+ let radialGradient = toNode("radialGradient")
42
+ defs.appendChild(radialGradient)
43
+ setAttribute(radialGradient, "id", gradientId)
44
+ setAttribute(radialGradient, "cx", cx + "%")
45
+ setAttribute(radialGradient, "cy", cy + "%")
46
+ setAttribute(radialGradient, "r", r + "%")
47
+
48
+ let enhanceGradient = {
49
+ "value": function () {
50
+ return "url(#" + gradientId + ")";
51
+ },
52
+ "setColor": function (stop: number, color: string) {
53
+
54
+ let stopEl = toNode("stop")
55
+ radialGradient.appendChild(stopEl)
56
+ setAttribute(stopEl, "offset", (stop * 100) + "%")
57
+ setAttribute(stopEl, "style", "stop-color:" + color + ";")
58
+
59
+ return enhanceGradient
60
+ }
61
+ }
62
+ return enhanceGradient
63
+ }