vislite 0.8.1-alpha.1 → 0.8.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 (196) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +220 -214
  3. package/LICENSE +20 -20
  4. package/README.md +136 -136
  5. package/lib/Buffer/index.umd.js +36 -36
  6. package/lib/Buffer/index.umd.min.js +2 -2
  7. package/lib/Canvas/index.umd.js +694 -691
  8. package/lib/Canvas/index.umd.min.js +3 -3
  9. package/lib/Cardinal/index.umd.js +91 -91
  10. package/lib/Cardinal/index.umd.min.js +2 -2
  11. package/lib/Eoap/index.umd.js +34 -34
  12. package/lib/Eoap/index.umd.min.js +2 -2
  13. package/lib/Geometry/index.umd.js +286 -286
  14. package/lib/Geometry/index.umd.min.js +2 -2
  15. package/lib/Hermite/index.umd.js +36 -36
  16. package/lib/Hermite/index.umd.min.js +2 -2
  17. package/lib/Matrix4/index.umd.js +125 -125
  18. package/lib/Matrix4/index.umd.min.js +2 -2
  19. package/lib/Mercator/index.umd.js +20 -20
  20. package/lib/Mercator/index.umd.min.js +2 -2
  21. package/lib/OralCanvas/index.es.js +637 -634
  22. package/lib/OralCanvas/index.es.min.js +3 -3
  23. package/lib/OralWebGL/index.es.js +560 -560
  24. package/lib/OralWebGL/index.es.min.js +3 -3
  25. package/lib/SVG/index.umd.js +471 -471
  26. package/lib/SVG/index.umd.min.js +2 -2
  27. package/lib/Shader/index.umd.js +69 -69
  28. package/lib/Shader/index.umd.min.js +3 -3
  29. package/lib/Texture/index.umd.js +54 -54
  30. package/lib/Texture/index.umd.min.js +2 -2
  31. package/lib/TreeLayout/index.umd.js +368 -368
  32. package/lib/TreeLayout/index.umd.min.js +2 -2
  33. package/lib/WebGL/index.umd.js +607 -607
  34. package/lib/WebGL/index.umd.min.js +3 -3
  35. package/lib/animation/index.umd.js +73 -73
  36. package/lib/animation/index.umd.min.js +2 -2
  37. package/lib/formatColor/index.umd.js +40 -40
  38. package/lib/formatColor/index.umd.min.js +2 -2
  39. package/lib/getLoopColors/index.umd.js +36 -36
  40. package/lib/getLoopColors/index.umd.min.js +2 -2
  41. package/lib/getWebGLContext/index.umd.js +63 -63
  42. package/lib/getWebGLContext/index.umd.min.js +2 -2
  43. package/lib/index.umd.js +2974 -2971
  44. package/lib/index.umd.min.js +3 -3
  45. package/lib/move/index.umd.js +8 -8
  46. package/lib/move/index.umd.min.js +2 -2
  47. package/lib/resizeObserver/index.umd.js +30 -30
  48. package/lib/resizeObserver/index.umd.min.js +2 -2
  49. package/lib/rotate/index.umd.js +8 -8
  50. package/lib/rotate/index.umd.min.js +2 -2
  51. package/lib/ruler/index.umd.js +138 -138
  52. package/lib/ruler/index.umd.min.js +2 -2
  53. package/lib/scale/index.umd.js +7 -7
  54. package/lib/scale/index.umd.min.js +2 -2
  55. package/lib/throttle/index.umd.js +49 -49
  56. package/lib/throttle/index.umd.min.js +2 -2
  57. package/lib/viewHandler/index.umd.js +120 -120
  58. package/lib/viewHandler/index.umd.min.js +2 -2
  59. package/miniprogram/ui-canvas/drawImage.js +6 -4
  60. package/miniprogram/ui-canvas/index.js +122 -122
  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 +40 -40
  83. package/package/index.ts +76 -76
  84. package/package/move/index.ts +2 -2
  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 +2 -2
  89. package/package/throttle/index.ts +2 -2
  90. package/package/viewHandler/index.ts +2 -2
  91. package/package.json +70 -70
  92. package/src/Canvas.ts +72 -72
  93. package/src/Eoap.ts +66 -66
  94. package/src/Geometry.ts +210 -210
  95. package/src/Matrix4/index.ts +84 -84
  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/WebGL.ts +66 -66
  103. package/src/animation.ts +98 -98
  104. package/src/common/assemble.ts +22 -22
  105. package/src/common/canvas/arc.ts +51 -51
  106. package/src/common/canvas/config.ts +158 -158
  107. package/src/common/canvas/gradient.ts +29 -29
  108. package/src/common/canvas/index.ts +183 -183
  109. package/src/common/canvas/painter.ts +453 -446
  110. package/src/common/canvas/texts.ts +18 -18
  111. package/src/common/geometry/prism-horizontal.ts +50 -50
  112. package/src/common/geometry/prism-vertical.ts +55 -55
  113. package/src/common/geometry/sphere-fragment.ts +40 -40
  114. package/src/common/geometry/tool/circle.ts +17 -17
  115. package/src/common/geometry/tool/rotateLine.ts +48 -48
  116. package/src/common/geometry/tool/triangles.ts +23 -23
  117. package/src/common/mergeOption.ts +6 -6
  118. package/src/common/setStyle.ts +5 -5
  119. package/src/common/svg/config.ts +190 -190
  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 +59 -59
  125. package/src/common/tree/toPlainTree.ts +132 -132
  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 +45 -45
  132. package/src/common/webgl/index.ts +227 -227
  133. package/src/common/webgl/shader.ts +75 -75
  134. package/src/common/webgl/texture.ts +97 -97
  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/layout/TreeLayout.ts +188 -188
  140. package/src/move.ts +7 -7
  141. package/src/resizeObserver.ts +37 -37
  142. package/src/rotate.ts +7 -7
  143. package/src/ruler.ts +209 -209
  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 -52
  154. package/src/viewHandler.ts +160 -160
  155. package/types/Buffer.d.ts +23 -23
  156. package/types/Canvas.d.ts +318 -318
  157. package/types/CanvasConfig.d.ts +106 -106
  158. package/types/CanvasOption.d.ts +8 -8
  159. package/types/CanvasOpts.d.ts +9 -9
  160. package/types/Cardinal.d.ts +13 -13
  161. package/types/Geometry.d.ts +132 -132
  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 +47 -47
  168. package/types/Object3D.d.ts +114 -114
  169. package/types/SVG.d.ts +238 -238
  170. package/types/SVGConfig.d.ts +79 -79
  171. package/types/Scene3D.d.ts +6 -6
  172. package/types/Shader.d.ts +23 -23
  173. package/types/Texture.d.ts +16 -16
  174. package/types/Tree.d.ts +69 -69
  175. package/types/TreeConfig.d.ts +36 -36
  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 +14 -14
  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 +4 -4
  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/ui-canvas.d.ts +4 -4
  194. package/types/viewHandler.d.ts +13 -13
  195. package/uni-app/drawImage.js +19 -17
  196. package/uni-app/ui-canvas.vue +290 -290
@@ -1,290 +1,290 @@
1
- <template>
2
- <view
3
- :class="cover || isH5 ? 'cover-view' : 'normal-view'"
4
- :style="{ display: 'inline-block' }"
5
- >
6
- <view
7
- v-if="!cover && !isH5"
8
- :class="'view-img view-' + uniqueid"
9
- @touchstart="doitstart"
10
- >
11
- <image
12
- :style="{ width: width + 'px', height: height + 'px' }"
13
- :src="viewImg"
14
- ></image>
15
- </view>
16
-
17
- <!-- #ifdef MP-ALIPAY -->
18
- <canvas
19
- :width="2 * width + 'px'"
20
- :height="2 * height + 'px'"
21
- class="painter"
22
- :id="'painter-' + uniqueid"
23
- @touchstart="doitstart"
24
- :style="[
25
- { width: width + 'px', height: height + 'px' },
26
- cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
27
- ]"
28
- ></canvas>
29
- <canvas
30
- v-if="region"
31
- class="region"
32
- :id="'region-' + uniqueid"
33
- :style="{
34
- width: width + 'px',
35
- height: height + 'px',
36
- position: 'fixed',
37
- left: '50000px',
38
- }"
39
- ></canvas>
40
- <!-- #endif -->
41
- <!-- #ifdef MP-WEIXIN -->
42
- <canvas
43
- class="painter"
44
- canvas-id="painter"
45
- @touchstart="doitstart"
46
- :style="[
47
- { width: width + 'px', height: height + 'px' },
48
- cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
49
- ]"
50
- ></canvas>
51
- <canvas
52
- v-if="region"
53
- class="region"
54
- canvas-id="region"
55
- :style="{
56
- width: width + 'px',
57
- height: height + 'px',
58
- position: 'fixed',
59
- left: '50000px',
60
- }"
61
- ></canvas>
62
- <!-- #endif -->
63
- <!-- #ifndef MP-WEIXIN||MP-ALIPAY -->
64
- <canvas
65
- class="painter"
66
- :canvas-id="'painter-' + uniqueid"
67
- @touchstart="doitstart"
68
- :style="[
69
- { width: width + 'px', height: height + 'px' },
70
- cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
71
- ]"
72
- ></canvas>
73
- <canvas
74
- v-if="region"
75
- class="region"
76
- :canvas-id="'region-' + uniqueid"
77
- :style="{
78
- width: width + 'px',
79
- height: height + 'px',
80
- position: 'fixed',
81
- left: '50000px',
82
- }"
83
- ></canvas>
84
- <!-- #endif -->
85
- </view>
86
- </template>
87
- <script>
88
- import OralCanvas from "../lib/OralCanvas/index.es.js";
89
- import drawImage from "./drawImage.js";
90
- export default {
91
- data() {
92
- return {
93
- uniqueid: (Math.random() * 10000).toFixed(0),
94
- help: {},
95
- viewImg: "",
96
- // #ifdef H5
97
- isH5: true,
98
- // #endif
99
- // #ifndef H5
100
- isH5: false,
101
- // #endif
102
- hadFetch:false
103
- };
104
- },
105
- props: {
106
- width: {
107
- type: Number,
108
- default: 300,
109
- },
110
- height: {
111
- type: Number,
112
- default: 150,
113
- },
114
- touchstart: {
115
- type: Function,
116
- default: () => {},
117
- },
118
- cover: {
119
- type: Boolean,
120
- default: true,
121
- },
122
- region: {
123
- type: Boolean,
124
- default: true,
125
- },
126
- },
127
- methods: {
128
- fetch() {
129
- let painter, region, painterid, regionid;
130
- // #ifdef MP-WEIXIN
131
- painter = uni.createCanvasContext("painter", this);
132
- if (this.region) region = uni.createCanvasContext("region", this);
133
- painterid = "painter";
134
- regionid = "region";
135
- // #endif
136
- // #ifndef MP-WEIXIN
137
- painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
138
- if (this.region)
139
- region = uni.createCanvasContext("region-" + this.uniqueid, this);
140
- painterid = "painter-" + this.uniqueid;
141
- regionid = "region-" + this.uniqueid;
142
- // #endif
143
-
144
- // #ifdef MP-ALIPAY
145
- if(!this.hadFetch) painter.scale(2, 2);
146
- // #endif
147
-
148
- let scaleSize = 1;
149
-
150
- // #ifdef MP-ALIPAY
151
- scaleSize = 2;
152
- // #endif
153
-
154
- let _this = this;
155
- this.help.instance = new OralCanvas(
156
- {
157
- getContext() {
158
- return painter;
159
- },
160
- },
161
- _this.region
162
- ? {
163
- getContext() {
164
- // #ifdef MP-ALIPAY
165
- let getImageData = region.getImageData;
166
- // #endif
167
- region.getImageData = (x, y, width, height) => {
168
- return new Promise((resolve, reject) => {
169
- let options = {
170
- x,
171
- y,
172
- width,
173
- height,
174
- canvasId: regionid,
175
- success: function success(res) {
176
- resolve(res.data);
177
- },
178
- fail: function fail(error) {
179
- reject(error);
180
- },
181
- };
182
-
183
- // #ifdef MP-ALIPAY
184
- getImageData(options);
185
- // #endif
186
- // #ifndef MP-ALIPAY
187
- uni.canvasGetImageData(options, _this);
188
- // #endif
189
- });
190
- };
191
- return region;
192
- },
193
- }
194
- : null,
195
- scaleSize
196
- );
197
- this.help.instance.draw = (reserve = false, callback = () => {}) => {
198
- painter.draw(reserve, () => {
199
- // 如果不使用原生渲染
200
- if (!this.cover && !this.isH5) {
201
- uni.canvasToTempFilePath(
202
- {
203
- canvasId: painterid,
204
- success: (e) => {
205
- this.viewImg = e.tempFilePath;
206
- if (_this.region) region.draw(reserve);
207
- callback();
208
- },
209
- },
210
- // #ifndef MP-ALIPAY
211
- this
212
- // #endif
213
- );
214
- } else {
215
- if (_this.region) region.draw(reserve);
216
- callback();
217
- }
218
- });
219
- };
220
-
221
- this.hadFetch = true;
222
- return new Promise((resolve, reject) => {
223
- this.help.instance.toDataURL = () => {
224
- return new Promise((resolveUrl) => {
225
- uni.canvasToTempFilePath(
226
- {
227
- canvasId: painterid,
228
- success: function (e) {
229
- resolveUrl(e.tempFilePath);
230
- },
231
- },
232
- // #ifndef MP-ALIPAY
233
- this
234
- // #endif
235
- );
236
- });
237
- };
238
-
239
- this.help.instance.drawImage = drawImage(
240
- this.help.instance,
241
- this.help.instance.drawImage
242
- );
243
-
244
- resolve(this.help.instance);
245
- });
246
- },
247
- doit(event, doback) {
248
- let doRun = (x, y) => {
249
- this.help.instance.getRegion(x, y).then((regionName) => {
250
- // 兼容旧语法
251
- if (typeof doback == "function") doback(regionName);
252
-
253
- this.$emit("dotouchstart", {
254
- name: regionName,
255
- x: x,
256
- y: y,
257
- });
258
- });
259
- };
260
-
261
- if (this.cover || this.isH5) {
262
- let x = event.touches[0].x;
263
- let y = event.touches[0].y;
264
- doRun(x, y);
265
- } else {
266
- uni
267
- .createSelectorQuery()
268
- .selectViewport()
269
- .scrollOffset()
270
- .exec((ret) => {
271
- uni
272
- .createSelectorQuery()
273
- .in(this)
274
- .select(".view-" + this.uniqueid)
275
- .boundingClientRect((data) => {
276
- doRun(
277
- event.touches[0].pageX - data.left - ret[0].scrollLeft,
278
- event.touches[0].pageY - data.top - ret[0].scrollTop
279
- );
280
- })
281
- .exec();
282
- });
283
- }
284
- },
285
- doitstart(event) {
286
- this.doit(event, this.touchstart);
287
- },
288
- },
289
- };
290
- </script>
1
+ <template>
2
+ <view
3
+ :class="cover || isH5 ? 'cover-view' : 'normal-view'"
4
+ :style="{ display: 'inline-block' }"
5
+ >
6
+ <view
7
+ v-if="!cover && !isH5"
8
+ :class="'view-img view-' + uniqueid"
9
+ @touchstart="doitstart"
10
+ >
11
+ <image
12
+ :style="{ width: width + 'px', height: height + 'px' }"
13
+ :src="viewImg"
14
+ ></image>
15
+ </view>
16
+
17
+ <!-- #ifdef MP-ALIPAY -->
18
+ <canvas
19
+ :width="2 * width + 'px'"
20
+ :height="2 * height + 'px'"
21
+ class="painter"
22
+ :id="'painter-' + uniqueid"
23
+ @touchstart="doitstart"
24
+ :style="[
25
+ { width: width + 'px', height: height + 'px' },
26
+ cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
27
+ ]"
28
+ ></canvas>
29
+ <canvas
30
+ v-if="region"
31
+ class="region"
32
+ :id="'region-' + uniqueid"
33
+ :style="{
34
+ width: width + 'px',
35
+ height: height + 'px',
36
+ position: 'fixed',
37
+ left: '50000px',
38
+ }"
39
+ ></canvas>
40
+ <!-- #endif -->
41
+ <!-- #ifdef MP-WEIXIN -->
42
+ <canvas
43
+ class="painter"
44
+ canvas-id="painter"
45
+ @touchstart="doitstart"
46
+ :style="[
47
+ { width: width + 'px', height: height + 'px' },
48
+ cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
49
+ ]"
50
+ ></canvas>
51
+ <canvas
52
+ v-if="region"
53
+ class="region"
54
+ canvas-id="region"
55
+ :style="{
56
+ width: width + 'px',
57
+ height: height + 'px',
58
+ position: 'fixed',
59
+ left: '50000px',
60
+ }"
61
+ ></canvas>
62
+ <!-- #endif -->
63
+ <!-- #ifndef MP-WEIXIN||MP-ALIPAY -->
64
+ <canvas
65
+ class="painter"
66
+ :canvas-id="'painter-' + uniqueid"
67
+ @touchstart="doitstart"
68
+ :style="[
69
+ { width: width + 'px', height: height + 'px' },
70
+ cover || isH5 ? {} : { position: 'fixed', left: '50000px' },
71
+ ]"
72
+ ></canvas>
73
+ <canvas
74
+ v-if="region"
75
+ class="region"
76
+ :canvas-id="'region-' + uniqueid"
77
+ :style="{
78
+ width: width + 'px',
79
+ height: height + 'px',
80
+ position: 'fixed',
81
+ left: '50000px',
82
+ }"
83
+ ></canvas>
84
+ <!-- #endif -->
85
+ </view>
86
+ </template>
87
+ <script>
88
+ import OralCanvas from "../lib/OralCanvas/index.es.js";
89
+ import drawImage from "./drawImage.js";
90
+ export default {
91
+ data() {
92
+ return {
93
+ uniqueid: (Math.random() * 10000).toFixed(0),
94
+ help: {},
95
+ viewImg: "",
96
+ // #ifdef H5
97
+ isH5: true,
98
+ // #endif
99
+ // #ifndef H5
100
+ isH5: false,
101
+ // #endif
102
+ hadFetch:false
103
+ };
104
+ },
105
+ props: {
106
+ width: {
107
+ type: Number,
108
+ default: 300,
109
+ },
110
+ height: {
111
+ type: Number,
112
+ default: 150,
113
+ },
114
+ touchstart: {
115
+ type: Function,
116
+ default: () => {},
117
+ },
118
+ cover: {
119
+ type: Boolean,
120
+ default: true,
121
+ },
122
+ region: {
123
+ type: Boolean,
124
+ default: true,
125
+ },
126
+ },
127
+ methods: {
128
+ fetch() {
129
+ let painter, region, painterid, regionid;
130
+ // #ifdef MP-WEIXIN
131
+ painter = uni.createCanvasContext("painter", this);
132
+ if (this.region) region = uni.createCanvasContext("region", this);
133
+ painterid = "painter";
134
+ regionid = "region";
135
+ // #endif
136
+ // #ifndef MP-WEIXIN
137
+ painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
138
+ if (this.region)
139
+ region = uni.createCanvasContext("region-" + this.uniqueid, this);
140
+ painterid = "painter-" + this.uniqueid;
141
+ regionid = "region-" + this.uniqueid;
142
+ // #endif
143
+
144
+ // #ifdef MP-ALIPAY
145
+ if(!this.hadFetch) painter.scale(2, 2);
146
+ // #endif
147
+
148
+ let scaleSize = 1;
149
+
150
+ // #ifdef MP-ALIPAY
151
+ scaleSize = 2;
152
+ // #endif
153
+
154
+ let _this = this;
155
+ this.help.instance = new OralCanvas(
156
+ {
157
+ getContext() {
158
+ return painter;
159
+ },
160
+ },
161
+ _this.region
162
+ ? {
163
+ getContext() {
164
+ // #ifdef MP-ALIPAY
165
+ let getImageData = region.getImageData;
166
+ // #endif
167
+ region.getImageData = (x, y, width, height) => {
168
+ return new Promise((resolve, reject) => {
169
+ let options = {
170
+ x,
171
+ y,
172
+ width,
173
+ height,
174
+ canvasId: regionid,
175
+ success: function success(res) {
176
+ resolve(res.data);
177
+ },
178
+ fail: function fail(error) {
179
+ reject(error);
180
+ },
181
+ };
182
+
183
+ // #ifdef MP-ALIPAY
184
+ getImageData(options);
185
+ // #endif
186
+ // #ifndef MP-ALIPAY
187
+ uni.canvasGetImageData(options, _this);
188
+ // #endif
189
+ });
190
+ };
191
+ return region;
192
+ },
193
+ }
194
+ : null,
195
+ scaleSize
196
+ );
197
+ this.help.instance.draw = (reserve = false, callback = () => {}) => {
198
+ painter.draw(reserve, () => {
199
+ // 如果不使用原生渲染
200
+ if (!this.cover && !this.isH5) {
201
+ uni.canvasToTempFilePath(
202
+ {
203
+ canvasId: painterid,
204
+ success: (e) => {
205
+ this.viewImg = e.tempFilePath;
206
+ if (_this.region) region.draw(reserve);
207
+ callback();
208
+ },
209
+ },
210
+ // #ifndef MP-ALIPAY
211
+ this
212
+ // #endif
213
+ );
214
+ } else {
215
+ if (_this.region) region.draw(reserve);
216
+ callback();
217
+ }
218
+ });
219
+ };
220
+
221
+ this.hadFetch = true;
222
+ return new Promise((resolve, reject) => {
223
+ this.help.instance.toDataURL = () => {
224
+ return new Promise((resolveUrl) => {
225
+ uni.canvasToTempFilePath(
226
+ {
227
+ canvasId: painterid,
228
+ success: function (e) {
229
+ resolveUrl(e.tempFilePath);
230
+ },
231
+ },
232
+ // #ifndef MP-ALIPAY
233
+ this
234
+ // #endif
235
+ );
236
+ });
237
+ };
238
+
239
+ this.help.instance.drawImage = drawImage(
240
+ this.help.instance,
241
+ this.help.instance.drawImage
242
+ );
243
+
244
+ resolve(this.help.instance);
245
+ });
246
+ },
247
+ doit(event, doback) {
248
+ let doRun = (x, y) => {
249
+ this.help.instance.getRegion(x, y).then((regionName) => {
250
+ // 兼容旧语法
251
+ if (typeof doback == "function") doback(regionName);
252
+
253
+ this.$emit("dotouchstart", {
254
+ name: regionName,
255
+ x: x,
256
+ y: y,
257
+ });
258
+ });
259
+ };
260
+
261
+ if (this.cover || this.isH5) {
262
+ let x = event.touches[0].x;
263
+ let y = event.touches[0].y;
264
+ doRun(x, y);
265
+ } else {
266
+ uni
267
+ .createSelectorQuery()
268
+ .selectViewport()
269
+ .scrollOffset()
270
+ .exec((ret) => {
271
+ uni
272
+ .createSelectorQuery()
273
+ .in(this)
274
+ .select(".view-" + this.uniqueid)
275
+ .boundingClientRect((data) => {
276
+ doRun(
277
+ event.touches[0].pageX - data.left - ret[0].scrollLeft,
278
+ event.touches[0].pageY - data.top - ret[0].scrollTop
279
+ );
280
+ })
281
+ .exec();
282
+ });
283
+ }
284
+ },
285
+ doitstart(event) {
286
+ this.doit(event, this.touchstart);
287
+ },
288
+ },
289
+ };
290
+ </script>