vislite 0.5.2 → 0.6.0-alpha.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 (194) hide show
  1. package/.editorconfig +18 -18
  2. package/.eslintrc.js +24 -0
  3. package/AUTHORS.txt +6 -6
  4. package/CHANGELOG +15 -1
  5. package/LICENSE +20 -20
  6. package/README.md +41 -2
  7. package/lib/Buffer/index.umd.js +2 -2
  8. package/lib/Buffer/index.umd.min.js +2 -2
  9. package/lib/Canvas/index.umd.js +19 -8
  10. package/lib/Canvas/index.umd.min.js +3 -3
  11. package/lib/Cardinal/index.umd.js +2 -2
  12. package/lib/Cardinal/index.umd.min.js +2 -2
  13. package/lib/Eoap/index.umd.js +2 -2
  14. package/lib/Eoap/index.umd.min.js +2 -2
  15. package/lib/Geometry/index.umd.js +7 -4
  16. package/lib/Geometry/index.umd.min.js +2 -2
  17. package/lib/Hermite/index.umd.js +2 -2
  18. package/lib/Hermite/index.umd.min.js +2 -2
  19. package/lib/Matrix4/index.umd.js +14 -8
  20. package/lib/Matrix4/index.umd.min.js +3 -3
  21. package/lib/Mercator/index.umd.js +2 -2
  22. package/lib/Mercator/index.umd.min.js +2 -2
  23. package/lib/OralCanvas/index.es.js +14 -6
  24. package/lib/OralCanvas/index.es.min.js +3 -3
  25. package/lib/OralWebGL/index.es.js +27 -19
  26. package/lib/OralWebGL/index.es.min.js +3 -3
  27. package/lib/SVG/index.umd.js +6 -4
  28. package/lib/SVG/index.umd.min.js +2 -2
  29. package/lib/Shader/index.umd.js +10 -10
  30. package/lib/Shader/index.umd.min.js +3 -3
  31. package/lib/Texture/index.umd.js +4 -3
  32. package/lib/Texture/index.umd.min.js +2 -2
  33. package/lib/TreeLayout/index.umd.js +8 -5
  34. package/lib/TreeLayout/index.umd.min.js +2 -2
  35. package/lib/WebGL/index.umd.js +27 -19
  36. package/lib/WebGL/index.umd.min.js +3 -3
  37. package/lib/animation/index.umd.js +4 -3
  38. package/lib/animation/index.umd.min.js +2 -2
  39. package/lib/formatColor/index.umd.js +2 -2
  40. package/lib/formatColor/index.umd.min.js +2 -2
  41. package/lib/getLoopColors/index.umd.js +2 -2
  42. package/lib/getLoopColors/index.umd.min.js +2 -2
  43. package/lib/getWebGLContext/index.umd.js +4 -3
  44. package/lib/getWebGLContext/index.umd.min.js +2 -2
  45. package/lib/index.umd.js +73 -34
  46. package/lib/index.umd.min.js +3 -3
  47. package/lib/move/index.umd.js +2 -2
  48. package/lib/move/index.umd.min.js +2 -2
  49. package/lib/resizeObserver/index.umd.js +4 -3
  50. package/lib/resizeObserver/index.umd.min.js +2 -2
  51. package/lib/rotate/index.umd.js +2 -2
  52. package/lib/rotate/index.umd.min.js +2 -2
  53. package/lib/ruler/index.umd.js +14 -2
  54. package/lib/ruler/index.umd.min.js +3 -3
  55. package/lib/scale/index.umd.js +2 -2
  56. package/lib/scale/index.umd.min.js +2 -2
  57. package/lib/throttle/index.umd.js +2 -2
  58. package/lib/throttle/index.umd.min.js +2 -2
  59. package/lib/viewHandler/index.umd.js +4 -4
  60. package/lib/viewHandler/index.umd.min.js +3 -3
  61. package/miniprogram/ui-canvas/index.js +107 -107
  62. package/miniprogram/ui-canvas/index.json +4 -4
  63. package/miniprogram/ui-canvas/index.wxml +4 -4
  64. package/miniprogram/ui-canvas/index.wxss +5 -5
  65. package/package/Buffer/index.ts +2 -2
  66. package/package/Canvas/index.ts +2 -2
  67. package/package/Cardinal/index.ts +2 -2
  68. package/package/Eoap/index.ts +2 -2
  69. package/package/Geometry/index.ts +2 -2
  70. package/package/Hermite/index.ts +2 -2
  71. package/package/Matrix4/index.ts +2 -2
  72. package/package/Mercator/index.ts +2 -2
  73. package/package/OralCanvas/index.ts +2 -2
  74. package/package/OralWebGL/index.ts +2 -2
  75. package/package/SVG/index.ts +2 -2
  76. package/package/Shader/index.ts +39 -39
  77. package/package/Texture/index.ts +2 -2
  78. package/package/TreeLayout/index.ts +1 -1
  79. package/package/WebGL/index.ts +2 -2
  80. package/package/animation/index.ts +2 -2
  81. package/package/formatColor/index.ts +2 -2
  82. package/package/getLoopColors/index.ts +2 -2
  83. package/package/getWebGLContext/index.ts +39 -39
  84. package/package/index.ts +76 -76
  85. package/package/move/index.ts +2 -2
  86. package/package/resizeObserver/index.ts +2 -2
  87. package/package/rotate/index.ts +2 -2
  88. package/package/ruler/index.ts +2 -2
  89. package/package/scale/index.ts +2 -2
  90. package/package/throttle/index.ts +2 -2
  91. package/package/viewHandler/index.ts +2 -2
  92. package/package.json +6 -2
  93. package/src/Canvas.ts +70 -67
  94. package/src/Eoap.ts +66 -66
  95. package/src/Geometry.ts +82 -82
  96. package/src/Matrix4/index.ts +17 -9
  97. package/src/Matrix4/move.ts +12 -12
  98. package/src/Matrix4/rotate.ts +15 -15
  99. package/src/Matrix4/scale.ts +11 -11
  100. package/src/Matrix4/transform.ts +64 -64
  101. package/src/Mercator.ts +27 -27
  102. package/src/SVG.ts +24 -24
  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 +51 -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 +149 -140
  110. package/src/common/canvas/painter.ts +417 -426
  111. package/src/common/canvas/texts.ts +18 -18
  112. package/src/common/geometry/prism-horizontal.ts +35 -33
  113. package/src/common/geometry/prism-vertical.ts +40 -40
  114. package/src/common/geometry/sphere-fragment.ts +40 -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 -186
  119. package/src/common/svg/dictionary.ts +1 -1
  120. package/src/common/svg/gradient.ts +63 -63
  121. package/src/common/svg/index.ts +356 -356
  122. package/src/common/svg/tool.ts +44 -44
  123. package/src/common/tree/index.ts +25 -25
  124. package/src/common/tree/toInnerTree.ts +57 -56
  125. package/src/common/tree/toPlainTree.ts +132 -131
  126. package/src/common/webgl/buffer.ts +79 -79
  127. package/src/common/webgl/doDraw.ts +108 -108
  128. package/src/common/webgl/getColorFactory.ts +26 -26
  129. package/src/common/webgl/getShader.ts +48 -48
  130. package/src/common/webgl/getTexture.ts +11 -11
  131. package/src/common/webgl/getWebGLContext.ts +28 -27
  132. package/src/common/webgl/index.ts +224 -223
  133. package/src/common/webgl/shader.ts +75 -75
  134. package/src/common/webgl/texture.ts +97 -96
  135. package/src/formatColor.ts +44 -44
  136. package/src/getLoopColors.ts +42 -42
  137. package/src/interpolation/Cardinal.ts +110 -110
  138. package/src/interpolation/Hermite.ts +65 -65
  139. package/src/{TreeLayout/index.ts → layout/TreeLayout.ts} +21 -21
  140. package/src/move.ts +7 -7
  141. package/src/resizeObserver.ts +37 -36
  142. package/src/rotate.ts +7 -7
  143. package/src/ruler.ts +41 -19
  144. package/src/scale.ts +6 -6
  145. package/src/shader/fsColor.c +7 -7
  146. package/src/shader/fsColors.c +7 -7
  147. package/src/shader/fsCube.c +8 -8
  148. package/src/shader/fsImage.c +8 -8
  149. package/src/shader/vsColor.c +17 -17
  150. package/src/shader/vsColors.c +13 -13
  151. package/src/shader/vsCube.c +13 -13
  152. package/src/shader/vsImage.c +13 -13
  153. package/src/throttle.ts +52 -51
  154. package/src/viewHandler.ts +158 -158
  155. package/types/Buffer.d.ts +23 -23
  156. package/types/Canvas.d.ts +8 -0
  157. package/types/CanvasConfig.d.ts +106 -106
  158. package/types/CanvasOption.d.ts +8 -7
  159. package/types/CanvasOpts.d.ts +10 -0
  160. package/types/Cardinal.d.ts +13 -13
  161. package/types/Geometry.d.ts +40 -40
  162. package/types/GeometryOption.d.ts +11 -11
  163. package/types/GeometryResult.d.ts +18 -18
  164. package/types/Gradient.d.ts +14 -14
  165. package/types/Hermite.d.ts +18 -18
  166. package/types/Map.d.ts +9 -9
  167. package/types/Matrix4.d.ts +5 -0
  168. package/types/Object3D.d.ts +114 -114
  169. package/types/SVG.d.ts +238 -238
  170. package/types/SVGConfig.d.ts +76 -76
  171. package/types/Scene3D.d.ts +6 -6
  172. package/types/Shader.d.ts +21 -21
  173. package/types/Texture.d.ts +16 -16
  174. package/types/Tree.d.ts +69 -69
  175. package/types/TreeConfig.d.ts +24 -24
  176. package/types/TreeLayout.d.ts +54 -54
  177. package/types/TreeOption.d.ts +48 -48
  178. package/types/WebGL.d.ts +38 -38
  179. package/types/WebGLOption.d.ts +7 -7
  180. package/types/animation.d.ts +6 -6
  181. package/types/formatColor.d.ts +2 -2
  182. package/types/getLoopColors.d.ts +2 -2
  183. package/types/getWebGLContext.d.ts +2 -2
  184. package/types/index.d.ts +175 -175
  185. package/types/move.d.ts +2 -2
  186. package/types/painterConfig.d.ts +2 -2
  187. package/types/resizeObserver.d.ts +2 -2
  188. package/types/rotate.d.ts +2 -2
  189. package/types/ruler.d.ts +7 -7
  190. package/types/scale.d.ts +2 -2
  191. package/types/throttle.d.ts +4 -4
  192. package/types/throttleOption.d.ts +21 -21
  193. package/types/viewHandler.d.ts +13 -13
  194. package/uni-app/ui-canvas.vue +239 -206
@@ -1,29 +1,29 @@
1
- // 线性渐变
2
- export let linearGradient = function (painter: CanvasRenderingContext2D, x0: number, y0: number, x1: number, y1: number) {
3
- let gradient = painter.createLinearGradient(x0, y0, x1, y1)
4
- let enhanceGradient = {
5
- "value": function () {
6
- return gradient
7
- },
8
- "setColor": function (stop: number, color: string) {
9
- gradient.addColorStop(stop, color)
10
- return enhanceGradient
11
- }
12
- };
13
- return enhanceGradient
14
- }
15
-
16
- // 环形渐变
17
- export let radialGradient = function (painter: CanvasRenderingContext2D, cx: number, cy: number, r: number) {
18
- let gradient = painter.createRadialGradient(cx, cy, 0, cx, cy, r)
19
- let enhanceGradient = {
20
- "value": function () {
21
- return gradient
22
- },
23
- "setColor": function (stop: number, color: string) {
24
- gradient.addColorStop(stop, color)
25
- return enhanceGradient
26
- }
27
- }
28
- return enhanceGradient
29
- }
1
+ // 线性渐变
2
+ export const linearGradient = function (painter: CanvasRenderingContext2D, x0: number, y0: number, x1: number, y1: number) {
3
+ const gradient = painter.createLinearGradient(x0, y0, x1, y1)
4
+ const enhanceGradient = {
5
+ "value": function () {
6
+ return gradient
7
+ },
8
+ "setColor": function (stop: number, color: string) {
9
+ gradient.addColorStop(stop, color)
10
+ return enhanceGradient
11
+ }
12
+ };
13
+ return enhanceGradient
14
+ }
15
+
16
+ // 环形渐变
17
+ export const radialGradient = function (painter: CanvasRenderingContext2D, cx: number, cy: number, r: number) {
18
+ const gradient = painter.createRadialGradient(cx, cy, 0, cx, cy, r)
19
+ const enhanceGradient = {
20
+ "value": function () {
21
+ return gradient
22
+ },
23
+ "setColor": function (stop: number, color: string) {
24
+ gradient.addColorStop(stop, color)
25
+ return enhanceGradient
26
+ }
27
+ }
28
+ return enhanceGradient
29
+ }
@@ -1,4 +1,5 @@
1
1
  import type CanvasConfigType from "../../../types/CanvasConfig"
2
+ import type CanvasOptsType from '../../../types/CanvasOpts'
2
3
 
3
4
  import PainterRender from "./painter"
4
5
  import assemble from "../assemble"
@@ -6,163 +7,171 @@ import { linearGradient, radialGradient } from "./gradient"
6
7
  import { initText } from './config'
7
8
 
8
9
  // 属性名向下兼容
9
- let oldAttrName = {
10
- "font-size": "fontSize",
11
- "font-family": "fontFamily",
12
- "font-weight": "fontWeight",
13
- "font-style": "fontStyle",
14
- "arc-start-cap": "arcStartCap",
15
- "arc-end-cap": "arcEndCap",
10
+ const oldAttrName = {
11
+ "font-size": "fontSize",
12
+ "font-family": "fontFamily",
13
+ "font-weight": "fontWeight",
14
+ "font-style": "fontStyle",
15
+ "arc-start-cap": "arcStartCap",
16
+ "arc-end-cap": "arcEndCap",
16
17
  }
17
18
 
18
19
  class Canvas extends PainterRender {
19
- readonly name: string = "Canvas"
20
-
21
- private __regionList = {} //区域映射表
22
-
23
- // 步长由1改为10是为了优化区域计算有时候出错问题
24
- // 2023年7月6日 于南京
25
- private __regionAssemble = assemble(0, 255, 10, 3)
26
-
27
- constructor(ViewCanvas: HTMLCanvasElement, RegionCanvas: HTMLCanvasElement) {
28
- super(
29
- ViewCanvas,
30
- {},
31
- RegionCanvas ? new PainterRender(RegionCanvas, {
32
- willReadFrequently: true,
33
- }) : null, true
34
- )
35
-
36
- this.setRegion("")
37
- }
38
-
39
- config(configs: CanvasConfigType) {
40
- for (let key in configs) {
41
- let _key = oldAttrName[key] || key
42
- this.useConfig(_key, configs[key])
20
+ readonly name: string = "Canvas"
21
+
22
+ private __regionList = {} //区域映射表
23
+
24
+ // 步长由1改为10是为了优化区域计算有时候出错问题
25
+ // 2023年7月6日 于南京
26
+ private __regionAssemble = assemble(0, 255, 10, 3)
27
+
28
+ constructor(ViewCanvas: HTMLCanvasElement, RegionCanvas: HTMLCanvasElement, opts: CanvasOptsType = {}) {
29
+ super(
30
+ ViewCanvas,
31
+ opts,
32
+ RegionCanvas ? new PainterRender(RegionCanvas, {
33
+ willReadFrequently: true,
34
+ }) : null, true
35
+ )
36
+
37
+ this.setRegion("")
43
38
  }
44
39
 
45
- return this
46
- }
47
-
48
- // 是否绘制的内容只需要进行区域记录
49
- onlyRegion(flag: boolean) {
50
- this.__onlyRegion = flag
51
- return this
52
- }
53
-
54
- // 设置当前绘制区域名称
55
- setRegion(regionName: string | number) {
56
- if (this.__region) {
57
- if (regionName) {
58
- if (this.__regionList[regionName] == void 0) {
59
- let tempColor = this.__regionAssemble()
60
- this.__regionList[regionName] =
61
- "rgb(" + tempColor[0] + "," + tempColor[1] + "," + tempColor[2] + ")"
40
+ config(configs: CanvasConfigType) {
41
+ for (const key in configs) {
42
+ const _key = oldAttrName[key] || key
43
+ this.useConfig(_key, configs[key])
62
44
  }
63
45
 
64
- this.__region.useConfig("fillStyle", this.__regionList[regionName]) &&
65
- this.__region.useConfig("strokeStyle", this.__regionList[regionName])
66
- } else {
67
- this.__region.useConfig("fillStyle", "#000000") &&
68
- this.__region.useConfig("strokeStyle", "#000000")
69
- }
46
+ return this
70
47
  }
71
- return this
72
- }
73
48
 
74
- // 获取当前事件触发的区域名称
75
- getRegion(x: number, y: number): Promise<string> {
76
- return new Promise((resolve, reject) => {
77
- let imgData = this.__region ? this.__region.painter.getImageData(x - 0.5, y - 0.5, 1, 1) : {
78
- data: [0, 0, 0, 0]
79
- }
80
-
81
- // 获取点击点的颜色
82
- let currentRGBA = imgData.data
49
+ // 是否绘制的内容只需要进行区域记录
50
+ onlyRegion(flag: boolean) {
51
+ this.__onlyRegion = flag
52
+ return this
53
+ }
83
54
 
84
- let doit = () => {
55
+ // 设置当前绘制区域名称
56
+ setRegion(regionName: string | number) {
85
57
  if (this.__region) {
86
-
87
- // 查找当前点击的区域
88
- for (let key in this.__regionList) {
89
- if (
90
- "rgb(" +
91
- currentRGBA[0] +
92
- "," +
93
- currentRGBA[1] +
94
- "," +
95
- currentRGBA[2] +
96
- ")" ==
97
- this.__regionList[key]
98
- ) {
99
- resolve(key)
100
- break
58
+ if (regionName) {
59
+ if (this.__regionList[regionName] == void 0) {
60
+ const tempColor = this.__regionAssemble()
61
+ this.__regionList[regionName] =
62
+ "rgb(" + tempColor[0] + "," + tempColor[1] + "," + tempColor[2] + ")"
63
+ }
64
+
65
+ this.__region.useConfig("fillStyle", this.__regionList[regionName]) &&
66
+ this.__region.useConfig("strokeStyle", this.__regionList[regionName])
67
+ } else {
68
+ this.__region.useConfig("fillStyle", "#000000") &&
69
+ this.__region.useConfig("strokeStyle", "#000000")
101
70
  }
102
- }
103
71
  }
72
+ return this
73
+ }
104
74
 
105
- resolve("")
106
- }
75
+ // 获取当前事件触发的区域名称
76
+ getRegion(x: number, y: number): Promise<string> {
77
+ return new Promise((resolve) => {
78
+ const imgData = this.__region ? this.__region.painter.getImageData(x - 0.5, y - 0.5, 1, 1) : {
79
+ data: [0, 0, 0, 0]
80
+ }
81
+
82
+ // 获取点击点的颜色
83
+ let currentRGBA = imgData.data
84
+
85
+ const doit = () => {
86
+ if (this.__region) {
87
+
88
+ // 查找当前点击的区域
89
+ for (const key in this.__regionList) {
90
+ if (
91
+ "rgb(" +
92
+ currentRGBA[0] +
93
+ "," +
94
+ currentRGBA[1] +
95
+ "," +
96
+ currentRGBA[2] +
97
+ ")" ==
98
+ this.__regionList[key]
99
+ ) {
100
+ resolve(key)
101
+ break
102
+ }
103
+ }
104
+ }
105
+
106
+ resolve("")
107
+ }
107
108
 
108
- // 如果有值
109
- if (currentRGBA) {
110
- doit()
111
- }
109
+ // 如果有值
110
+ if (currentRGBA) {
111
+ doit()
112
+ }
112
113
 
113
- // 否则就是在Promise中
114
- else {
115
- (imgData as any).then((data: Uint8ClampedArray) => {
116
- currentRGBA = data
117
- doit()
114
+ // 否则就是在Promise中
115
+ else {
116
+ (imgData as any).then((data: Uint8ClampedArray) => {
117
+ currentRGBA = data
118
+ doit()
119
+ })
120
+ }
118
121
  })
119
- }
120
- })
121
- }
122
-
123
- textWidth(text: string) {
124
- this.painter.save()
125
-
126
- initText(this.painter, this.__specialConfig, 0, 0, 0)
127
-
128
- // 虽然我们限制了只可以输入字符串,可是不代表所有环境都可以保证,为了确保方法不失效,强转成字符串
129
- let width = this.painter.measureText(text + "").width
130
-
131
- this.painter.restore()
132
-
133
- return width
134
- }
135
-
136
- // 获取原始画笔
137
- getContext(isRegion = false) {
138
- return isRegion ? (this.__region ? this.__region.painter : null) : this.painter
139
- }
140
-
141
- // 线性渐变
142
- createLinearGradient(x0: number, y0: number, x1: number, y1: number) {
143
- return linearGradient(this.painter, x0, y0, x1, y1)
144
- }
145
-
146
- // 环形渐变
147
- createRadialGradient(cx: number, cy: number, r: number) {
148
- return radialGradient(this.painter, cx, cy, r)
149
- }
150
-
151
- // 获取指定位置颜色
152
- getColor(x: number, y: number) {
153
- let currentRGBA = this.painter.getImageData(x - 0.5, y - 0.5, 1, 1).data
154
- return (
155
- "rgba(" +
156
- currentRGBA[0] +
157
- "," +
158
- currentRGBA[1] +
159
- "," +
160
- currentRGBA[2] +
161
- "," +
162
- currentRGBA[3] +
163
- ")"
164
- )
165
- }
122
+ }
123
+
124
+ textWidth(text: string) {
125
+ this.painter.save()
126
+
127
+ initText(this.painter, this.__specialConfig, 0, 0, 0)
128
+
129
+ // 虽然我们限制了只可以输入字符串,可是不代表所有环境都可以保证,为了确保方法不失效,强转成字符串
130
+ const width = this.painter.measureText(text + "").width
131
+
132
+ this.painter.restore()
133
+
134
+ return width
135
+ }
136
+
137
+ // 获取原始画笔
138
+ getContext(isRegion = false) {
139
+ return isRegion ? (this.__region ? this.__region.painter : null) : this.painter
140
+ }
141
+
142
+ // 获取画布信息
143
+ getInfo() {
144
+ return {
145
+ width: this.painter.canvas.width,
146
+ height: this.painter.canvas.height
147
+ }
148
+ }
149
+
150
+ // 线性渐变
151
+ createLinearGradient(x0: number, y0: number, x1: number, y1: number) {
152
+ return linearGradient(this.painter, x0, y0, x1, y1)
153
+ }
154
+
155
+ // 环形渐变
156
+ createRadialGradient(cx: number, cy: number, r: number) {
157
+ return radialGradient(this.painter, cx, cy, r)
158
+ }
159
+
160
+ // 获取指定位置颜色
161
+ getColor(x: number, y: number) {
162
+ const currentRGBA = this.painter.getImageData(x - 0.5, y - 0.5, 1, 1).data
163
+ return (
164
+ "rgba(" +
165
+ currentRGBA[0] +
166
+ "," +
167
+ currentRGBA[1] +
168
+ "," +
169
+ currentRGBA[2] +
170
+ "," +
171
+ currentRGBA[3] +
172
+ ")"
173
+ )
174
+ }
166
175
  }
167
176
 
168
177
  export default Canvas