vislite 1.2.1 → 1.3.0-alpha.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 (168) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +18 -1
  3. package/LICENSE +20 -20
  4. package/README.md +9 -33
  5. package/lib/Buffer/index.es.js +1 -1
  6. package/lib/Buffer/index.es.min.js +1 -1
  7. package/lib/Canvas/index.es.js +36 -7
  8. package/lib/Canvas/index.es.min.js +2 -2
  9. package/lib/Cardinal/index.es.js +1 -1
  10. package/lib/Cardinal/index.es.min.js +1 -1
  11. package/lib/Eoap/index.es.js +1 -1
  12. package/lib/Eoap/index.es.min.js +1 -1
  13. package/lib/Hermite/index.es.js +1 -1
  14. package/lib/Hermite/index.es.min.js +1 -1
  15. package/lib/MapCoordinate/index.es.d.ts +3 -0
  16. package/lib/MapCoordinate/index.es.js +217 -0
  17. package/lib/MapCoordinate/index.es.min.d.ts +3 -0
  18. package/lib/MapCoordinate/index.es.min.js +5 -0
  19. package/lib/Matrix4/index.es.js +1 -1
  20. package/lib/Matrix4/index.es.min.js +1 -1
  21. package/lib/Mercator/index.es.js +1 -1
  22. package/lib/Mercator/index.es.min.js +1 -1
  23. package/lib/RawCanvas/index.es.js +36 -7
  24. package/lib/RawCanvas/index.es.min.js +2 -2
  25. package/lib/SVG/index.es.js +47 -20
  26. package/lib/SVG/index.es.min.js +2 -2
  27. package/lib/Shader/index.es.js +1 -1
  28. package/lib/Shader/index.es.min.js +1 -1
  29. package/lib/Texture/index.es.js +1 -1
  30. package/lib/Texture/index.es.min.js +1 -1
  31. package/lib/TreeLayout/index.es.js +1 -1
  32. package/lib/TreeLayout/index.es.min.js +1 -1
  33. package/lib/animation/index.es.js +1 -1
  34. package/lib/animation/index.es.min.js +1 -1
  35. package/lib/assemble/index.es.js +1 -1
  36. package/lib/assemble/index.es.min.js +1 -1
  37. package/lib/getLoopColors/index.es.js +1 -1
  38. package/lib/getLoopColors/index.es.min.js +1 -1
  39. package/lib/getWebGLContext/index.es.js +1 -1
  40. package/lib/getWebGLContext/index.es.min.js +1 -1
  41. package/lib/index.umd.js +198 -26
  42. package/lib/index.umd.min.js +2 -2
  43. package/lib/initOption/index.es.js +1 -1
  44. package/lib/initOption/index.es.min.js +1 -1
  45. package/lib/mergeOption/index.es.js +1 -1
  46. package/lib/mergeOption/index.es.min.js +1 -1
  47. package/lib/move/index.es.js +1 -1
  48. package/lib/move/index.es.min.js +1 -1
  49. package/lib/rotate/index.es.js +1 -1
  50. package/lib/rotate/index.es.min.js +1 -1
  51. package/lib/ruler/index.es.js +1 -1
  52. package/lib/ruler/index.es.min.js +1 -1
  53. package/lib/scale/index.es.js +1 -1
  54. package/lib/scale/index.es.min.js +1 -1
  55. package/lib/throttle/index.es.js +1 -1
  56. package/lib/throttle/index.es.min.js +1 -1
  57. package/minialipay/ui-canvas/drawImage.js +35 -35
  58. package/minialipay/ui-canvas/index.acss +4 -4
  59. package/minialipay/ui-canvas/index.axml +3 -3
  60. package/minialipay/ui-canvas/index.d.ts +1 -1
  61. package/minialipay/ui-canvas/index.js +100 -100
  62. package/minialipay/ui-canvas/index.json +6 -6
  63. package/miniprogram/ui-canvas/drawImage.js +35 -35
  64. package/miniprogram/ui-canvas/index.js +117 -117
  65. package/miniprogram/ui-canvas/index.json +4 -4
  66. package/miniprogram/ui-canvas/index.wxml +4 -4
  67. package/miniprogram/ui-canvas/index.wxss +5 -5
  68. package/package/Buffer/index.ts +2 -2
  69. package/package/Canvas/index.ts +2 -2
  70. package/package/Cardinal/index.ts +2 -2
  71. package/package/Eoap/index.ts +2 -2
  72. package/package/Hermite/index.ts +2 -2
  73. package/package/MapCoordinate/index.ts +3 -0
  74. package/package/Matrix4/index.ts +2 -2
  75. package/package/Mercator/index.ts +2 -2
  76. package/package/RawCanvas/index.ts +2 -2
  77. package/package/SVG/index.ts +2 -2
  78. package/package/Shader/index.ts +2 -2
  79. package/package/Texture/index.ts +2 -2
  80. package/package/TreeLayout/index.ts +2 -2
  81. package/package/animation/index.ts +2 -2
  82. package/package/assemble/index.ts +2 -2
  83. package/package/getLoopColors/index.ts +2 -2
  84. package/package/getWebGLContext/index.ts +40 -40
  85. package/package/index.ts +80 -75
  86. package/package/initOption/index.ts +2 -2
  87. package/package/mergeOption/index.ts +2 -2
  88. package/package/move/index.ts +2 -2
  89. package/package/rotate/index.ts +2 -2
  90. package/package/ruler/index.ts +2 -2
  91. package/package/scale/index.ts +2 -2
  92. package/package/throttle/index.ts +2 -2
  93. package/package.json +75 -77
  94. package/src/Canvas.ts +84 -84
  95. package/src/Eoap.ts +66 -66
  96. package/src/Matrix4/index.ts +84 -84
  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/common/assemble.ts +22 -22
  104. package/src/common/canvas/arc.ts +51 -51
  105. package/src/common/canvas/config.ts +176 -158
  106. package/src/common/canvas/default.ts +64 -61
  107. package/src/common/canvas/gradient.ts +31 -31
  108. package/src/common/canvas/index.ts +188 -188
  109. package/src/common/canvas/painter.ts +443 -430
  110. package/src/common/canvas/texts.ts +18 -18
  111. package/src/common/map/getBoundary.ts +16 -0
  112. package/src/common/map/tool.ts +30 -0
  113. package/src/common/option.ts +29 -29
  114. package/src/common/setStyle.ts +5 -5
  115. package/src/common/svg/config.ts +213 -194
  116. package/src/common/svg/default.ts +29 -26
  117. package/src/common/svg/gradient.ts +53 -53
  118. package/src/common/svg/index.ts +332 -332
  119. package/src/common/svg/tool.ts +51 -42
  120. package/src/common/tree/index.ts +25 -25
  121. package/src/common/tree/toPlainTree.ts +132 -132
  122. package/src/common/type.ts +26 -26
  123. package/src/common/webgl/buffer.ts +79 -79
  124. package/src/common/webgl/getWebGLContext.ts +45 -45
  125. package/src/common/webgl/shader.ts +75 -75
  126. package/src/common/webgl/texture.ts +97 -97
  127. package/src/coordinate/MapCoordinate.ts +81 -0
  128. package/src/getLoopColors.ts +42 -42
  129. package/src/interpolation/Cardinal.ts +110 -110
  130. package/src/interpolation/Hermite.ts +65 -65
  131. package/src/move.ts +7 -7
  132. package/src/rotate.ts +7 -7
  133. package/src/ruler.ts +209 -209
  134. package/src/scale.ts +6 -6
  135. package/types/Buffer.d.ts +23 -23
  136. package/types/Canvas.d.ts +352 -344
  137. package/types/CanvasConfig.d.ts +88 -116
  138. package/types/CanvasOption.d.ts +8 -8
  139. package/types/CanvasOpts.d.ts +9 -9
  140. package/types/Cardinal.d.ts +13 -13
  141. package/types/Gradient.d.ts +14 -14
  142. package/types/Hermite.d.ts +18 -18
  143. package/types/Map.d.ts +9 -9
  144. package/types/MapConfig.d.ts +28 -0
  145. package/types/MapCoordinate.d.ts +23 -0
  146. package/types/Matrix4.d.ts +47 -47
  147. package/types/SVG.d.ts +243 -243
  148. package/types/SVGConfig.d.ts +71 -89
  149. package/types/Shader.d.ts +16 -16
  150. package/types/Texture.d.ts +16 -16
  151. package/types/TreeConfig.d.ts +36 -36
  152. package/types/TreeOption.d.ts +48 -48
  153. package/types/animation.d.ts +5 -5
  154. package/types/assemble.d.ts +5 -5
  155. package/types/getLoopColors.d.ts +5 -5
  156. package/types/getWebGLContext.d.ts +7 -7
  157. package/types/index.d.ts +179 -165
  158. package/types/move.d.ts +5 -5
  159. package/types/option.d.ts +12 -12
  160. package/types/painterConfig.d.ts +4 -4
  161. package/types/rotate.d.ts +5 -5
  162. package/types/ruler.d.ts +10 -10
  163. package/types/scale.d.ts +5 -5
  164. package/types/throttle.d.ts +5 -5
  165. package/types/ui-canvas.d.ts +4 -4
  166. package/types/uni-canvas.d.ts +3 -3
  167. package/uni-app/drawImage.js +19 -19
  168. package/uni-app/ui-canvas.vue +284 -284
package/types/ruler.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export interface rulerOptionType {
2
- max?: number
3
- min?: number
4
- }
5
-
6
- /**
7
- * 刻度尺刻度运算,返回一个数组,表示刻度尺上应该显示的刻度
8
- */
9
- export default interface rulerType {
10
- (maxValue: number, minValue: number, num: number, option?: rulerOptionType): number[]
1
+ export interface rulerOptionType {
2
+ max?: number
3
+ min?: number
4
+ }
5
+
6
+ /**
7
+ * 刻度尺刻度运算,返回一个数组,表示刻度尺上应该显示的刻度
8
+ */
9
+ export default interface rulerType {
10
+ (maxValue: number, minValue: number, num: number, option?: rulerOptionType): number[]
11
11
  }
package/types/scale.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- /**
2
- * 缩放
3
- */
4
- export default interface scaleType {
5
- (cx: number, cy: number, times: number, x: number, y: number): [number, number]
1
+ /**
2
+ * 缩放
3
+ */
4
+ export default interface scaleType {
5
+ (cx: number, cy: number, times: number, x: number, y: number): [number, number]
6
6
  }
@@ -1,6 +1,6 @@
1
- import { throttleType } from "oipage/corejs/throttle"
2
-
3
- /**
4
- * 节流函数
5
- */
1
+ import { throttleType } from "oipage/corejs/throttle"
2
+
3
+ /**
4
+ * 节流函数
5
+ */
6
6
  export default throttleType
@@ -1,5 +1,5 @@
1
- import CanvasType from "./Canvas"
2
-
3
- export default interface UiCanvasType {
4
- fetch(): Promise<CanvasType>
1
+ import CanvasType from "./Canvas"
2
+
3
+ export default interface UiCanvasType {
4
+ fetch(): Promise<CanvasType>
5
5
  }
@@ -1,4 +1,4 @@
1
- /**
2
- * ui-canvas
3
- */
1
+ /**
2
+ * ui-canvas
3
+ */
4
4
  declare module "vislite/uni-app/ui-canvas.vue";
@@ -1,20 +1,20 @@
1
- export default function (_this, drawImage) {
2
- return function (imgUrl, x, y, w, h) {
3
- return new Promise((resolve) => {
4
- if (/^http/.test(imgUrl)) {
5
- uni.downloadFile({
6
- url: imgUrl,
7
- success: function (res) {
8
- drawImage.call(_this, res.tempFilePath, x, y, w, h, true).then(() => {
9
- resolve({});
10
- });
11
- },
12
- });
13
- } else {
14
- drawImage.call(_this, imgUrl, x, y, w, h, true).then(() => {
15
- resolve({});
16
- });
17
- }
18
- });
19
- };
1
+ export default function (_this, drawImage) {
2
+ return function (imgUrl, x, y, w, h) {
3
+ return new Promise((resolve) => {
4
+ if (/^http/.test(imgUrl)) {
5
+ uni.downloadFile({
6
+ url: imgUrl,
7
+ success: function (res) {
8
+ drawImage.call(_this, res.tempFilePath, x, y, w, h, true).then(() => {
9
+ resolve({});
10
+ });
11
+ },
12
+ });
13
+ } else {
14
+ drawImage.call(_this, imgUrl, x, y, w, h, true).then(() => {
15
+ resolve({});
16
+ });
17
+ }
18
+ });
19
+ };
20
20
  };
@@ -1,284 +1,284 @@
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 RawCanvas from "../lib/RawCanvas/index.es.min.js";
89
- import drawImage from "./drawImage.js";
90
-
91
- export default {
92
- data() {
93
- return {
94
- uniqueid: (Math.random() * 10000).toFixed(0),
95
- help: {},
96
- viewImg: "",
97
- // #ifdef H5
98
- isH5: true,
99
- // #endif
100
- // #ifndef H5
101
- isH5: false,
102
- // #endif
103
- hadFetch:false
104
- };
105
- },
106
- props: {
107
- width: {
108
- type: Number,
109
- default: 300,
110
- },
111
- height: {
112
- type: Number,
113
- default: 150,
114
- },
115
- cover: {
116
- type: Boolean,
117
- default: true,
118
- },
119
- region: {
120
- type: Boolean,
121
- default: true,
122
- },
123
- },
124
- methods: {
125
- fetch() {
126
- let painter, region, painterid, regionid;
127
- // #ifdef MP-WEIXIN
128
- painter = uni.createCanvasContext("painter", this);
129
- if (this.region) region = uni.createCanvasContext("region", this);
130
- painterid = "painter";
131
- regionid = "region";
132
- // #endif
133
- // #ifndef MP-WEIXIN
134
- painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
135
- if (this.region)
136
- region = uni.createCanvasContext("region-" + this.uniqueid, this);
137
- painterid = "painter-" + this.uniqueid;
138
- regionid = "region-" + this.uniqueid;
139
- // #endif
140
-
141
- // #ifdef MP-ALIPAY
142
- if(!this.hadFetch) painter.scale(2, 2);
143
- // #endif
144
-
145
- let scaleSize = 1;
146
-
147
- // #ifdef MP-ALIPAY
148
- scaleSize = 2;
149
- // #endif
150
-
151
- let _this = this;
152
- this.help.instance = new RawCanvas(
153
- {
154
- getContext() {
155
- return painter;
156
- },
157
- },
158
- _this.region
159
- ? {
160
- getContext() {
161
- // #ifdef MP-ALIPAY
162
- let getImageData = region.getImageData;
163
- // #endif
164
- region.getImageData = (x, y, width, height) => {
165
- return new Promise((resolve, reject) => {
166
- let options = {
167
- x,
168
- y,
169
- width,
170
- height,
171
- canvasId: regionid,
172
- success: function success(res) {
173
- resolve(res.data);
174
- },
175
- fail: function fail(error) {
176
- reject(error);
177
- },
178
- };
179
-
180
- // #ifdef MP-ALIPAY
181
- getImageData(options);
182
- // #endif
183
- // #ifndef MP-ALIPAY
184
- uni.canvasGetImageData(options, _this);
185
- // #endif
186
- });
187
- };
188
- return region;
189
- },
190
- }
191
- : null,
192
- scaleSize
193
- );
194
- this.help.instance.draw = (reserve = false, callback = () => {}) => {
195
- painter.draw(reserve, () => {
196
- // 如果不使用原生渲染
197
- if (!this.cover && !this.isH5) {
198
- uni.canvasToTempFilePath(
199
- {
200
- canvasId: painterid,
201
- success: (e) => {
202
- this.viewImg = e.tempFilePath;
203
- if (_this.region) region.draw(reserve);
204
- callback();
205
- },
206
- },
207
- // #ifndef MP-ALIPAY
208
- this
209
- // #endif
210
- );
211
- } else {
212
- if (_this.region) region.draw(reserve);
213
- callback();
214
- }
215
- });
216
- };
217
-
218
- this.hadFetch = true;
219
- return new Promise((resolve, reject) => {
220
- this.help.instance.toDataURL = () => {
221
- return new Promise((resolveUrl) => {
222
- uni.canvasToTempFilePath(
223
- {
224
- canvasId: painterid,
225
- success: function (e) {
226
- resolveUrl(e.tempFilePath);
227
- },
228
- },
229
- // #ifndef MP-ALIPAY
230
- this
231
- // #endif
232
- );
233
- });
234
- };
235
-
236
- this.help.instance.drawImage = drawImage(
237
- this.help.instance,
238
- this.help.instance.drawImage
239
- );
240
-
241
- resolve(this.help.instance);
242
- });
243
- },
244
- doit(event) {
245
- let doRun = (x, y) => {
246
- this.help.instance.getRegion(x, y).then((regionName) => {
247
- this.$emit("dotouchstart", {
248
- name: regionName,
249
- x: x,
250
- y: y,
251
- });
252
- });
253
- };
254
-
255
- if (this.cover || this.isH5) {
256
- let x = event.touches[0].x;
257
- let y = event.touches[0].y;
258
- doRun(x, y);
259
- } else {
260
- uni
261
- .createSelectorQuery()
262
- .selectViewport()
263
- .scrollOffset()
264
- .exec((ret) => {
265
- uni
266
- .createSelectorQuery()
267
- .in(this)
268
- .select(".view-" + this.uniqueid)
269
- .boundingClientRect((data) => {
270
- doRun(
271
- event.touches[0].pageX - data.left - ret[0].scrollLeft,
272
- event.touches[0].pageY - data.top - ret[0].scrollTop
273
- );
274
- })
275
- .exec();
276
- });
277
- }
278
- },
279
- doitstart(event) {
280
- this.doit(event);
281
- },
282
- },
283
- };
284
- </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 RawCanvas from "../lib/RawCanvas/index.es.min.js";
89
+ import drawImage from "./drawImage.js";
90
+
91
+ export default {
92
+ data() {
93
+ return {
94
+ uniqueid: (Math.random() * 10000).toFixed(0),
95
+ help: {},
96
+ viewImg: "",
97
+ // #ifdef H5
98
+ isH5: true,
99
+ // #endif
100
+ // #ifndef H5
101
+ isH5: false,
102
+ // #endif
103
+ hadFetch:false
104
+ };
105
+ },
106
+ props: {
107
+ width: {
108
+ type: Number,
109
+ default: 300,
110
+ },
111
+ height: {
112
+ type: Number,
113
+ default: 150,
114
+ },
115
+ cover: {
116
+ type: Boolean,
117
+ default: true,
118
+ },
119
+ region: {
120
+ type: Boolean,
121
+ default: true,
122
+ },
123
+ },
124
+ methods: {
125
+ fetch() {
126
+ let painter, region, painterid, regionid;
127
+ // #ifdef MP-WEIXIN
128
+ painter = uni.createCanvasContext("painter", this);
129
+ if (this.region) region = uni.createCanvasContext("region", this);
130
+ painterid = "painter";
131
+ regionid = "region";
132
+ // #endif
133
+ // #ifndef MP-WEIXIN
134
+ painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
135
+ if (this.region)
136
+ region = uni.createCanvasContext("region-" + this.uniqueid, this);
137
+ painterid = "painter-" + this.uniqueid;
138
+ regionid = "region-" + this.uniqueid;
139
+ // #endif
140
+
141
+ // #ifdef MP-ALIPAY
142
+ if(!this.hadFetch) painter.scale(2, 2);
143
+ // #endif
144
+
145
+ let scaleSize = 1;
146
+
147
+ // #ifdef MP-ALIPAY
148
+ scaleSize = 2;
149
+ // #endif
150
+
151
+ let _this = this;
152
+ this.help.instance = new RawCanvas(
153
+ {
154
+ getContext() {
155
+ return painter;
156
+ },
157
+ },
158
+ _this.region
159
+ ? {
160
+ getContext() {
161
+ // #ifdef MP-ALIPAY
162
+ let getImageData = region.getImageData;
163
+ // #endif
164
+ region.getImageData = (x, y, width, height) => {
165
+ return new Promise((resolve, reject) => {
166
+ let options = {
167
+ x,
168
+ y,
169
+ width,
170
+ height,
171
+ canvasId: regionid,
172
+ success: function success(res) {
173
+ resolve(res.data);
174
+ },
175
+ fail: function fail(error) {
176
+ reject(error);
177
+ },
178
+ };
179
+
180
+ // #ifdef MP-ALIPAY
181
+ getImageData(options);
182
+ // #endif
183
+ // #ifndef MP-ALIPAY
184
+ uni.canvasGetImageData(options, _this);
185
+ // #endif
186
+ });
187
+ };
188
+ return region;
189
+ },
190
+ }
191
+ : null,
192
+ scaleSize
193
+ );
194
+ this.help.instance.draw = (reserve = false, callback = () => {}) => {
195
+ painter.draw(reserve, () => {
196
+ // 如果不使用原生渲染
197
+ if (!this.cover && !this.isH5) {
198
+ uni.canvasToTempFilePath(
199
+ {
200
+ canvasId: painterid,
201
+ success: (e) => {
202
+ this.viewImg = e.tempFilePath;
203
+ if (_this.region) region.draw(reserve);
204
+ callback();
205
+ },
206
+ },
207
+ // #ifndef MP-ALIPAY
208
+ this
209
+ // #endif
210
+ );
211
+ } else {
212
+ if (_this.region) region.draw(reserve);
213
+ callback();
214
+ }
215
+ });
216
+ };
217
+
218
+ this.hadFetch = true;
219
+ return new Promise((resolve, reject) => {
220
+ this.help.instance.toDataURL = () => {
221
+ return new Promise((resolveUrl) => {
222
+ uni.canvasToTempFilePath(
223
+ {
224
+ canvasId: painterid,
225
+ success: function (e) {
226
+ resolveUrl(e.tempFilePath);
227
+ },
228
+ },
229
+ // #ifndef MP-ALIPAY
230
+ this
231
+ // #endif
232
+ );
233
+ });
234
+ };
235
+
236
+ this.help.instance.drawImage = drawImage(
237
+ this.help.instance,
238
+ this.help.instance.drawImage
239
+ );
240
+
241
+ resolve(this.help.instance);
242
+ });
243
+ },
244
+ doit(event) {
245
+ let doRun = (x, y) => {
246
+ this.help.instance.getRegion(x, y).then((regionName) => {
247
+ this.$emit("dotouchstart", {
248
+ name: regionName,
249
+ x: x,
250
+ y: y,
251
+ });
252
+ });
253
+ };
254
+
255
+ if (this.cover || this.isH5) {
256
+ let x = event.touches[0].x;
257
+ let y = event.touches[0].y;
258
+ doRun(x, y);
259
+ } else {
260
+ uni
261
+ .createSelectorQuery()
262
+ .selectViewport()
263
+ .scrollOffset()
264
+ .exec((ret) => {
265
+ uni
266
+ .createSelectorQuery()
267
+ .in(this)
268
+ .select(".view-" + this.uniqueid)
269
+ .boundingClientRect((data) => {
270
+ doRun(
271
+ event.touches[0].pageX - data.left - ret[0].scrollLeft,
272
+ event.touches[0].pageY - data.top - ret[0].scrollTop
273
+ );
274
+ })
275
+ .exec();
276
+ });
277
+ }
278
+ },
279
+ doitstart(event) {
280
+ this.doit(event);
281
+ },
282
+ },
283
+ };
284
+ </script>