vislite 0.7.0 → 0.7.1

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 (90) hide show
  1. package/CHANGELOG +11 -1
  2. package/README.md +135 -135
  3. package/lib/Buffer/index.umd.js +2 -2
  4. package/lib/Buffer/index.umd.min.js +2 -2
  5. package/lib/Canvas/index.umd.js +19 -13
  6. package/lib/Canvas/index.umd.min.js +3 -3
  7. package/lib/Cardinal/index.umd.js +2 -2
  8. package/lib/Cardinal/index.umd.min.js +2 -2
  9. package/lib/Eoap/index.umd.js +2 -2
  10. package/lib/Eoap/index.umd.min.js +2 -2
  11. package/lib/Geometry/index.umd.js +2 -2
  12. package/lib/Geometry/index.umd.min.js +2 -2
  13. package/lib/Hermite/index.umd.js +2 -2
  14. package/lib/Hermite/index.umd.min.js +2 -2
  15. package/lib/Matrix4/index.umd.js +2 -2
  16. package/lib/Matrix4/index.umd.min.js +2 -2
  17. package/lib/Mercator/index.umd.js +2 -2
  18. package/lib/Mercator/index.umd.min.js +2 -2
  19. package/lib/OralCanvas/index.es.js +11 -7
  20. package/lib/OralCanvas/index.es.min.js +3 -3
  21. package/lib/OralWebGL/index.es.js +2 -3
  22. package/lib/OralWebGL/index.es.min.js +3 -3
  23. package/lib/SVG/index.umd.js +2 -2
  24. package/lib/SVG/index.umd.min.js +2 -2
  25. package/lib/Shader/index.umd.js +2 -3
  26. package/lib/Shader/index.umd.min.js +3 -3
  27. package/lib/Texture/index.umd.js +2 -2
  28. package/lib/Texture/index.umd.min.js +2 -2
  29. package/lib/TreeLayout/index.umd.js +2 -2
  30. package/lib/TreeLayout/index.umd.min.js +2 -2
  31. package/lib/WebGL/index.umd.js +2 -3
  32. package/lib/WebGL/index.umd.min.js +3 -3
  33. package/lib/animation/index.umd.js +2 -2
  34. package/lib/animation/index.umd.min.js +2 -2
  35. package/lib/formatColor/index.umd.js +2 -2
  36. package/lib/formatColor/index.umd.min.js +2 -2
  37. package/lib/getLoopColors/index.umd.js +2 -2
  38. package/lib/getLoopColors/index.umd.min.js +2 -2
  39. package/lib/getWebGLContext/index.umd.js +2 -2
  40. package/lib/getWebGLContext/index.umd.min.js +2 -2
  41. package/lib/index.umd.js +19 -14
  42. package/lib/index.umd.min.js +3 -3
  43. package/lib/move/index.umd.js +2 -2
  44. package/lib/move/index.umd.min.js +2 -2
  45. package/lib/resizeObserver/index.umd.js +2 -2
  46. package/lib/resizeObserver/index.umd.min.js +2 -2
  47. package/lib/rotate/index.umd.js +2 -2
  48. package/lib/rotate/index.umd.min.js +2 -2
  49. package/lib/ruler/index.umd.js +2 -2
  50. package/lib/ruler/index.umd.min.js +2 -2
  51. package/lib/scale/index.umd.js +2 -2
  52. package/lib/scale/index.umd.min.js +2 -2
  53. package/lib/throttle/index.umd.js +2 -2
  54. package/lib/throttle/index.umd.min.js +2 -2
  55. package/lib/viewHandler/index.umd.js +2 -2
  56. package/lib/viewHandler/index.umd.min.js +2 -2
  57. package/package.json +1 -1
  58. package/src/Canvas.ts +8 -6
  59. package/src/Geometry.ts +0 -1
  60. package/src/Matrix4/rotate.ts +15 -15
  61. package/src/Matrix4/transform.ts +64 -64
  62. package/src/WebGL.ts +66 -66
  63. package/src/common/assemble.ts +22 -22
  64. package/src/common/canvas/index.ts +10 -4
  65. package/src/common/canvas/painter.ts +1 -1
  66. package/src/common/geometry/prism-vertical.ts +40 -40
  67. package/src/common/geometry/tool/rotateLine.ts +35 -35
  68. package/src/common/setStyle.ts +5 -5
  69. package/src/common/svg/config.ts +190 -190
  70. package/src/common/svg/index.ts +356 -356
  71. package/src/common/svg/tool.ts +44 -44
  72. package/src/common/tree/toInnerTree.ts +59 -59
  73. package/src/common/tree/toPlainTree.ts +132 -132
  74. package/src/common/webgl/buffer.ts +79 -79
  75. package/src/common/webgl/doDraw.ts +108 -108
  76. package/src/common/webgl/getWebGLContext.ts +28 -28
  77. package/src/common/webgl/index.ts +226 -226
  78. package/src/common/webgl/shader.ts +1 -1
  79. package/src/common/webgl/texture.ts +97 -97
  80. package/src/layout/TreeLayout.ts +188 -188
  81. package/src/resizeObserver.ts +37 -37
  82. package/src/ruler.ts +209 -209
  83. package/src/viewHandler.ts +160 -160
  84. package/types/Canvas.d.ts +308 -308
  85. package/types/Geometry.d.ts +65 -65
  86. package/types/Object3D.d.ts +114 -114
  87. package/types/SVGConfig.d.ts +79 -79
  88. package/types/Shader.d.ts +23 -21
  89. package/types/TreeConfig.d.ts +36 -36
  90. package/uni-app/ui-canvas.vue +53 -9
@@ -1,190 +1,190 @@
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 const initDefs = (el: SVGElement) => {
9
- const defs = el.getElementsByTagName('defs')
10
- if (defs.length <= 0) {
11
- const newDefs = toNode("defs")
12
- el.appendChild(newDefs)
13
- return newDefs
14
- } else {
15
- return defs[0]
16
- }
17
- }
18
-
19
- // 文字统一设置方法
20
- export const 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"] as number) * 0.5,
35
- middle: 0,
36
- bottom: -(config["fontSize"] as number) * 0.5,
37
- } as {
38
- [key: string]: number
39
- })[config.textBaseline as string]
40
- )
41
-
42
- setStyle(el, {
43
- // 文字对齐方式
44
- "text-anchor": ({
45
- left: "start",
46
- right: "end",
47
- center: "middle",
48
- } as {
49
- [key: string]: string
50
- })[config.textAlign as string],
51
- "dominant-baseline": "central",
52
-
53
- // 文字大小和字体设置
54
- "font-size": config["fontSize"] + "px",
55
- "font-family": config["fontFamily"],
56
- })
57
-
58
- // 位置
59
- setAttribute(el, "x", x)
60
- setAttribute(el, "y", y)
61
-
62
- // 旋转
63
- if (typeof deg == "number") {
64
- deg = deg % 360
65
- setAttribute(el, "transform", "rotate(" + deg + "," + x + "," + y + ")")
66
- }
67
- }
68
-
69
- // 画圆统一设置方法
70
- export const initCircle = (el: SVGElement, cx: number, cy: number, r: number) => {
71
- if (el.nodeName.toLowerCase() !== "circle")
72
- throw new Error("Need a <circle> !")
73
- setAttribute(el, "cx", cx)
74
- setAttribute(el, "cy", cy)
75
- setAttribute(el, "r", r)
76
- }
77
-
78
- // 路径统一设置方法
79
- export const initPath = (el: SVGElement, path: string) => {
80
- if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
81
- setAttribute(el, "d", path)
82
- }
83
-
84
- // 画矩形统一设置方法
85
- export const initRect = (
86
- el: SVGElement,
87
- x: number,
88
- y: number,
89
- width: number,
90
- height: number
91
- ) => {
92
- if (el.nodeName.toLowerCase() !== "rect") throw new Error("Need a <rect> !")
93
-
94
- // 由于高和宽不可以是负数,校对一下
95
- if (height < 0) {
96
- height *= -1
97
- y -= height
98
- }
99
- if (width < 0) {
100
- width *= -1
101
- x -= width
102
- }
103
-
104
- setAttribute(el, "x", x)
105
- setAttribute(el, "y", y)
106
- setAttribute(el, "width", width)
107
- setAttribute(el, "height", height)
108
- }
109
-
110
- // 画弧统一设置方法
111
- export const initArc = (
112
- el: SVGElement,
113
- config: SVGConfigType,
114
- cx: number,
115
- cy: number,
116
- r1: number,
117
- r2: number,
118
- beginDeg: number,
119
- deg: number
120
- ) => {
121
- if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
122
-
123
- beginDeg = (beginDeg / 180) * Math.PI
124
- deg = (deg / 180) * Math.PI
125
-
126
- beginDeg = beginDeg % (Math.PI * 2)
127
-
128
- if (r1 > r2) {
129
- const temp = r1
130
- r1 = r2
131
- r2 = temp
132
- }
133
-
134
- // 当|deg|>=2π的时候都认为是一个圆环
135
- if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
136
- deg = Math.PI * 1.999999
137
- } else {
138
- deg = deg % (Math.PI * 2)
139
- }
140
-
141
- arc(
142
- beginDeg,
143
- deg,
144
- cx,
145
- cy,
146
- r1,
147
- r2,
148
- function (
149
- beginA: number,
150
- endA: number,
151
- begInnerX: number,
152
- begInnerY: number,
153
- begOuterX: number,
154
- begOuterY: number,
155
- endInnerX: number,
156
- endInnerY: number,
157
- endOuterX: number,
158
- endOuterY: number,
159
- r: number
160
- ) {
161
- const f = endA - beginA > Math.PI ? 1 : 0
162
- let d = "M" + begInnerX + " " + begInnerY
163
- if (r < 0) r = -r
164
-
165
- d +=
166
- // 横半径 竖半径 x轴偏移角度 0小弧/1大弧 0逆时针/1顺时针 终点x 终点y
167
- "A" + r1 + " " + r1 + " 0 " + f + " 1 " + endInnerX + " " + endInnerY
168
-
169
- // 结尾
170
- if (config.arcEndCap == "round")
171
- d += "A" + r + " " + r + " " + " 0 1 0 " + endOuterX + " " + endOuterY
172
- else if (config.arcEndCap == "-round")
173
- d += "A" + r + " " + r + " " + " 0 1 1 " + endOuterX + " " + endOuterY
174
- else d += "L" + endOuterX + " " + endOuterY
175
- d +=
176
- "A" + r2 + " " + r2 + " 0 " + f + " 0 " + begOuterX + " " + begOuterY
177
-
178
- // 开头
179
- if (config.arcStartCap == "round")
180
- d += "A" + r + " " + r + " " + " 0 1 0 " + begInnerX + " " + begInnerY
181
- else if (config.arcStartCap == "-round")
182
- d += "A" + r + " " + r + " " + " 0 1 1 " + begInnerX + " " + begInnerY
183
- else d += "L" + begInnerX + " " + begInnerY
184
-
185
- if (config.arcStartCap == "butt") d += "Z"
186
-
187
- setAttribute(el, "d", d)
188
- }
189
- )
190
- }
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 const initDefs = (el: SVGElement) => {
9
+ const defs = el.getElementsByTagName('defs')
10
+ if (defs.length <= 0) {
11
+ const newDefs = toNode("defs")
12
+ el.appendChild(newDefs)
13
+ return newDefs
14
+ } else {
15
+ return defs[0]
16
+ }
17
+ }
18
+
19
+ // 文字统一设置方法
20
+ export const 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"] as number) * 0.5,
35
+ middle: 0,
36
+ bottom: -(config["fontSize"] as number) * 0.5,
37
+ } as {
38
+ [key: string]: number
39
+ })[config.textBaseline as string]
40
+ )
41
+
42
+ setStyle(el, {
43
+ // 文字对齐方式
44
+ "text-anchor": ({
45
+ left: "start",
46
+ right: "end",
47
+ center: "middle",
48
+ } as {
49
+ [key: string]: string
50
+ })[config.textAlign as string],
51
+ "dominant-baseline": "central",
52
+
53
+ // 文字大小和字体设置
54
+ "font-size": config["fontSize"] + "px",
55
+ "font-family": config["fontFamily"],
56
+ })
57
+
58
+ // 位置
59
+ setAttribute(el, "x", x)
60
+ setAttribute(el, "y", y)
61
+
62
+ // 旋转
63
+ if (typeof deg == "number") {
64
+ deg = deg % 360
65
+ setAttribute(el, "transform", "rotate(" + deg + "," + x + "," + y + ")")
66
+ }
67
+ }
68
+
69
+ // 画圆统一设置方法
70
+ export const initCircle = (el: SVGElement, cx: number, cy: number, r: number) => {
71
+ if (el.nodeName.toLowerCase() !== "circle")
72
+ throw new Error("Need a <circle> !")
73
+ setAttribute(el, "cx", cx)
74
+ setAttribute(el, "cy", cy)
75
+ setAttribute(el, "r", r)
76
+ }
77
+
78
+ // 路径统一设置方法
79
+ export const initPath = (el: SVGElement, path: string) => {
80
+ if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
81
+ setAttribute(el, "d", path)
82
+ }
83
+
84
+ // 画矩形统一设置方法
85
+ export const initRect = (
86
+ el: SVGElement,
87
+ x: number,
88
+ y: number,
89
+ width: number,
90
+ height: number
91
+ ) => {
92
+ if (el.nodeName.toLowerCase() !== "rect") throw new Error("Need a <rect> !")
93
+
94
+ // 由于高和宽不可以是负数,校对一下
95
+ if (height < 0) {
96
+ height *= -1
97
+ y -= height
98
+ }
99
+ if (width < 0) {
100
+ width *= -1
101
+ x -= width
102
+ }
103
+
104
+ setAttribute(el, "x", x)
105
+ setAttribute(el, "y", y)
106
+ setAttribute(el, "width", width)
107
+ setAttribute(el, "height", height)
108
+ }
109
+
110
+ // 画弧统一设置方法
111
+ export const initArc = (
112
+ el: SVGElement,
113
+ config: SVGConfigType,
114
+ cx: number,
115
+ cy: number,
116
+ r1: number,
117
+ r2: number,
118
+ beginDeg: number,
119
+ deg: number
120
+ ) => {
121
+ if (el.nodeName.toLowerCase() !== "path") throw new Error("Need a <path> !")
122
+
123
+ beginDeg = (beginDeg / 180) * Math.PI
124
+ deg = (deg / 180) * Math.PI
125
+
126
+ beginDeg = beginDeg % (Math.PI * 2)
127
+
128
+ if (r1 > r2) {
129
+ const temp = r1
130
+ r1 = r2
131
+ r2 = temp
132
+ }
133
+
134
+ // 当|deg|>=2π的时候都认为是一个圆环
135
+ if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
136
+ deg = Math.PI * 1.999999
137
+ } else {
138
+ deg = deg % (Math.PI * 2)
139
+ }
140
+
141
+ arc(
142
+ beginDeg,
143
+ deg,
144
+ cx,
145
+ cy,
146
+ r1,
147
+ r2,
148
+ function (
149
+ beginA: number,
150
+ endA: number,
151
+ begInnerX: number,
152
+ begInnerY: number,
153
+ begOuterX: number,
154
+ begOuterY: number,
155
+ endInnerX: number,
156
+ endInnerY: number,
157
+ endOuterX: number,
158
+ endOuterY: number,
159
+ r: number
160
+ ) {
161
+ const f = endA - beginA > Math.PI ? 1 : 0
162
+ let d = "M" + begInnerX + " " + begInnerY
163
+ if (r < 0) r = -r
164
+
165
+ d +=
166
+ // 横半径 竖半径 x轴偏移角度 0小弧/1大弧 0逆时针/1顺时针 终点x 终点y
167
+ "A" + r1 + " " + r1 + " 0 " + f + " 1 " + endInnerX + " " + endInnerY
168
+
169
+ // 结尾
170
+ if (config.arcEndCap == "round")
171
+ d += "A" + r + " " + r + " " + " 0 1 0 " + endOuterX + " " + endOuterY
172
+ else if (config.arcEndCap == "-round")
173
+ d += "A" + r + " " + r + " " + " 0 1 1 " + endOuterX + " " + endOuterY
174
+ else d += "L" + endOuterX + " " + endOuterY
175
+ d +=
176
+ "A" + r2 + " " + r2 + " 0 " + f + " 0 " + begOuterX + " " + begOuterY
177
+
178
+ // 开头
179
+ if (config.arcStartCap == "round")
180
+ d += "A" + r + " " + r + " " + " 0 1 0 " + begInnerX + " " + begInnerY
181
+ else if (config.arcStartCap == "-round")
182
+ d += "A" + r + " " + r + " " + " 0 1 1 " + begInnerX + " " + begInnerY
183
+ else d += "L" + begInnerX + " " + begInnerY
184
+
185
+ if (config.arcStartCap == "butt") d += "Z"
186
+
187
+ setAttribute(el, "d", d)
188
+ }
189
+ )
190
+ }