vislite 0.1.1 → 0.2.0-alpha.8

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 (112) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +20 -1
  3. package/LICENSE +20 -20
  4. package/README.md +53 -52
  5. package/lib/Canvas/index.umd.js +135 -46
  6. package/lib/Canvas/index.umd.min.js +7 -3
  7. package/lib/Cardinal/index.umd.js +6 -2
  8. package/lib/Cardinal/index.umd.min.js +6 -2
  9. package/lib/Eoap/index.umd.js +9 -5
  10. package/lib/Eoap/index.umd.min.js +6 -2
  11. package/lib/Hermite/index.umd.js +6 -2
  12. package/lib/Hermite/index.umd.min.js +6 -2
  13. package/lib/Matrix4/index.umd.js +6 -2
  14. package/lib/Matrix4/index.umd.min.js +6 -2
  15. package/lib/Mercator/index.umd.js +42 -0
  16. package/lib/Mercator/index.umd.min.js +15 -0
  17. package/lib/OralCanvas/index.es.js +124 -44
  18. package/lib/OralCanvas/index.es.min.js +7 -3
  19. package/lib/OralWebGL/index.es.js +568 -0
  20. package/lib/OralWebGL/index.es.min.js +15 -0
  21. package/lib/SVG/index.umd.js +16 -5
  22. package/lib/SVG/index.umd.min.js +7 -3
  23. package/lib/WebGL/index.umd.js +627 -0
  24. package/lib/WebGL/index.umd.min.js +15 -0
  25. package/lib/animation/index.umd.js +6 -2
  26. package/lib/animation/index.umd.min.js +6 -2
  27. package/lib/getLoopColors/index.umd.js +6 -2
  28. package/lib/getLoopColors/index.umd.min.js +6 -2
  29. package/lib/index.umd.js +1514 -862
  30. package/lib/index.umd.min.js +7 -3
  31. package/lib/rotate/index.umd.js +6 -2
  32. package/lib/rotate/index.umd.min.js +6 -2
  33. package/lib/ruler/index.umd.js +6 -2
  34. package/lib/ruler/index.umd.min.js +6 -2
  35. package/lib/viewHandler/index.umd.js +129 -0
  36. package/lib/viewHandler/index.umd.min.js +15 -0
  37. package/miniprogram/ui-canvas/index.js +21 -7
  38. package/miniprogram/ui-canvas/index.json +4 -4
  39. package/miniprogram/ui-canvas/index.wxml +4 -4
  40. package/miniprogram/ui-canvas/index.wxss +5 -5
  41. package/package/Canvas/index.ts +1 -1
  42. package/package/Cardinal/index.ts +2 -2
  43. package/package/Eoap/index.ts +2 -2
  44. package/package/Hermite/index.ts +2 -2
  45. package/package/Matrix4/index.ts +2 -2
  46. package/package/Mercator/index.ts +3 -0
  47. package/package/OralCanvas/index.ts +1 -1
  48. package/package/OralWebGL/index.ts +2 -0
  49. package/package/SVG/index.ts +2 -2
  50. package/package/WebGL/index.ts +2 -0
  51. package/package/animation/index.ts +2 -2
  52. package/package/getLoopColors/index.ts +2 -2
  53. package/package/index.ts +32 -9
  54. package/package/rotate/index.ts +2 -2
  55. package/package/ruler/index.ts +2 -2
  56. package/package/viewHandler/index.ts +3 -0
  57. package/package.json +11 -2
  58. package/src/Canvas.ts +10 -1
  59. package/src/Eoap.ts +5 -5
  60. package/src/Matrix4/index.ts +76 -76
  61. package/src/Matrix4/move.ts +12 -12
  62. package/src/Matrix4/rotate.ts +15 -15
  63. package/src/Matrix4/scale.ts +11 -11
  64. package/src/Matrix4/transform.ts +64 -64
  65. package/src/Mercator.ts +27 -0
  66. package/src/SVG.ts +1 -1
  67. package/src/WebGL.ts +53 -0
  68. package/src/animation.ts +99 -99
  69. package/src/common/assemble.ts +23 -0
  70. package/src/common/canvas/arc.ts +50 -50
  71. package/src/common/canvas/config.ts +7 -6
  72. package/src/common/canvas/index.ts +29 -28
  73. package/src/common/canvas/painter.ts +51 -8
  74. package/src/common/canvas/texts.ts +19 -0
  75. package/src/common/setStyle.ts +5 -5
  76. package/src/common/svg/config.ts +127 -126
  77. package/src/common/svg/index.ts +13 -3
  78. package/src/common/svg/tool.ts +43 -42
  79. package/src/common/webgl/buffer.ts +80 -0
  80. package/src/common/webgl/doDraw.ts +97 -0
  81. package/src/common/webgl/getColorFactory.ts +27 -0
  82. package/src/common/webgl/getShader.ts +70 -0
  83. package/src/common/webgl/getTexture.ts +12 -0
  84. package/src/common/webgl/getWebGLContext.ts +28 -0
  85. package/src/common/webgl/index.ts +213 -0
  86. package/src/common/webgl/shader.ts +76 -0
  87. package/src/common/webgl/texture.ts +100 -0
  88. package/src/getLoopColors.ts +42 -42
  89. package/src/interpolation/Cardinal.ts +91 -91
  90. package/src/interpolation/Hermite.ts +65 -65
  91. package/src/rotate.ts +7 -7
  92. package/src/ruler.ts +99 -99
  93. package/src/viewHandler.ts +140 -0
  94. package/types/Canvas.d.ts +220 -283
  95. package/types/CanvasConfig.d.ts +81 -0
  96. package/types/Cardinal.d.ts +13 -13
  97. package/types/Hermite.d.ts +18 -18
  98. package/types/Map.d.ts +10 -0
  99. package/types/Matrix4.d.ts +42 -42
  100. package/types/Object3D.d.ts +107 -0
  101. package/types/SVG.d.ts +210 -264
  102. package/types/SVGConfig.d.ts +59 -0
  103. package/types/Scene3D.d.ts +7 -0
  104. package/types/WebGL.d.ts +39 -0
  105. package/types/animation.d.ts +6 -6
  106. package/types/getLoopColors.d.ts +2 -2
  107. package/types/index.d.ts +70 -26
  108. package/types/rotate.d.ts +2 -2
  109. package/types/ruler.d.ts +2 -2
  110. package/types/viewHandler.d.ts +13 -0
  111. package/uni-app/ui-canvas.vue +111 -15
  112. package/types/Eoap.d.ts +0 -10
@@ -0,0 +1,59 @@
1
+ export default interface SVGConfigType {
2
+
3
+ /**
4
+ * 填充色或图案,默认"#000"
5
+ */
6
+ fillStyle?: string
7
+
8
+ /**
9
+ * 轮廓色或图案,默认"#000"
10
+ */
11
+ strokeStyle?: string
12
+
13
+ /**
14
+ * 线条宽度,默认1(单位px)
15
+ */
16
+ lineWidth?: number
17
+
18
+ /**
19
+ * 文字水平对齐方式,默认"left"左对齐(还有"center"居中和"right"右对齐)
20
+ */
21
+ textAlign?: string
22
+
23
+ /**
24
+ * 文字垂直对齐方式,默认"middle"垂直居中(还有"top"上对齐和"bottom"下对齐)
25
+ */
26
+ textBaseline?: string
27
+
28
+ /**
29
+ * 设置线条虚线,默认为[]表示使用实线绘制
30
+ *
31
+ * 值应该是一个数组,格式:[实线长,虚线长,实线长 ...],数组长度任意,会自动循环
32
+ */
33
+ lineDash?: Array<number>
34
+
35
+ /**
36
+ * 文字大小,默认16
37
+ */
38
+ "fontSize"?: number
39
+ "font-size"?: number // 向下兼容
40
+
41
+ /**
42
+ * 字体,默认"sans-serif"
43
+ */
44
+ "fontFamily"?: string
45
+ "font-family"?: string // 向下兼容
46
+
47
+ /**
48
+ * 圆弧开始端闭合方式,默认"butt"直线闭合(还有"round"圆帽闭合,"-round"反圆帽闭合)
49
+ */
50
+ "arcStartCap"?: string
51
+ "arc-start-cap"?: string // 向下兼容
52
+
53
+ /**
54
+ * 圆弧结束端闭合方式,默认"butt"直线闭合(还有"round"圆帽闭合,"-round"反圆帽闭合)
55
+ */
56
+ "arcEndCap"?: string
57
+ "arc-end-cap"?: string // 向下兼容
58
+
59
+ }
@@ -0,0 +1,7 @@
1
+ import Object3D from './Object3D'
2
+ import Matrix4Type from './Matrix4'
3
+
4
+ export default interface Scene3D {
5
+ children: Object3D[]
6
+ matrix: Matrix4Type
7
+ }
@@ -0,0 +1,39 @@
1
+ import Object3DType from './Object3D'
2
+ import Matrix4Type from './Matrix4'
3
+
4
+ export default interface WebGLType {
5
+
6
+ matrix(initMatrix4?: number[]): Matrix4Type
7
+
8
+ /**
9
+ * 使用模型数据绘制
10
+ * @param object3D 记录着的模型数据
11
+ */
12
+ render(object3D: Object3DType): void
13
+
14
+ /**
15
+ * 重新绘制
16
+ */
17
+ review(): this
18
+
19
+ /**
20
+ * 返回变换矩阵
21
+ */
22
+ getMatrix(): Matrix4Type
23
+
24
+ /**
25
+ * 返回所有的Object3D内容
26
+ */
27
+ getObject3D(): Object3DType[]
28
+
29
+ /**
30
+ * 设置区域
31
+ */
32
+ setRegion(regionName: string | number): this
33
+
34
+ /**
35
+ * 获取区域
36
+ */
37
+ getRegion(x: number, y: number): Promise<string>
38
+
39
+ }
@@ -1,7 +1,7 @@
1
- interface animationFun {
2
- (deep: number): void
3
- }
4
-
5
- export default interface animationType {
6
- (doback: animationFun, duration?: number, callback?: animationFun): Function
1
+ interface animationFun {
2
+ (deep: number): void
3
+ }
4
+
5
+ export default interface animationType {
6
+ (doback: animationFun, duration?: number, callback?: animationFun): Function
7
7
  }
@@ -1,3 +1,3 @@
1
- export default interface getLoopColorsType {
2
- (num: number, alpha?: number): string[]
1
+ export default interface getLoopColorsType {
2
+ (num: number, alpha?: number): string[]
3
3
  }
package/types/index.d.ts CHANGED
@@ -1,58 +1,102 @@
1
- import Matrix4Type from './Matrix4'
2
- import CanvasType from './Canvas'
3
- import SVGType from './SVG'
4
- import EoapType from './Eoap'
5
- import HermiteType from './Hermite'
6
1
  import CardinalType from './Cardinal'
2
+ import HermiteType from './Hermite'
3
+
4
+ import Matrix4Type from './Matrix4'
7
5
  import rotateType from './rotate'
8
- import animationType from './animation'
6
+
9
7
  import getLoopColorsType from './getLoopColors'
8
+ import animationType from './animation'
10
9
  import rulerType from './ruler'
11
10
 
12
- interface NewCanvasType extends CanvasType {
13
- new(el: HTMLElement | null): this
14
- }
11
+ import SVGType from './SVG'
12
+ import CanvasType from './Canvas'
13
+ import WebGLType from './WebGL'
14
+
15
+ import MapType from './Map'
15
16
 
17
+ import viewHandlerType from './viewHandler'
18
+
19
+ // 插值
16
20
  interface NewCardinalType extends CardinalType {
17
21
  new(t?: number): this
18
22
  }
19
-
20
- interface NewEoapType extends EoapType {
21
- new(scale?: number, center?: number[]): this
22
- }
23
-
24
23
  interface NewHermiteType extends HermiteType {
25
- new(u: number): this
24
+ new(u?: number): this
26
25
  }
27
26
 
27
+ // 变换
28
28
  interface NewMatrix4Type extends Matrix4Type {
29
29
  new(initMatrix4?: number[]): this
30
30
  }
31
31
 
32
+ // 画笔
32
33
  interface NewSVGType extends SVGType {
33
34
  new(el: HTMLElement | null): this
34
35
  }
36
+ interface NewCanvasType extends CanvasType {
37
+ new(el: HTMLElement | null): this
38
+ }
39
+ interface NewWebGLType extends WebGLType {
40
+ new(el: HTMLElement | null): this
41
+ }
42
+
43
+ // 投影
44
+ interface NewEoapType extends MapType {
45
+ new(scale?: number, center?: number[]): this
46
+ }
47
+ interface NewMercatorType extends MapType {
48
+ new(scale?: number, center?: number[]): this
49
+ }
35
50
 
36
51
  export default class VISLite {
52
+
53
+ // 插值
54
+ static Cardinal: NewCardinalType
55
+ static Hermite: NewHermiteType
56
+
57
+ // 变换
37
58
  static Matrix4: NewMatrix4Type
38
- static Canvas: NewCanvasType
39
- static SVG: NewSVGType
40
- static Eoap: NewEoapType
41
59
  static rotate: rotateType
42
- static Hermite: NewHermiteType
43
- static Cardinal: NewCardinalType
60
+
61
+ // 工具
44
62
  static getLoopColors: getLoopColorsType
45
63
  static animation: animationType
46
64
  static ruler: rulerType
65
+
66
+ // 画笔
67
+ static SVG: NewSVGType
68
+ static Canvas: NewCanvasType
69
+ static WebGL: NewWebGLType
70
+
71
+ // 投影
72
+ static Eoap: NewEoapType
73
+ static Mercator: NewMercatorType
74
+
75
+ // 辅助
76
+ static viewHandler: viewHandlerType
47
77
  }
48
78
 
79
+ // 插值
80
+ export let Cardinal: NewCardinalType
81
+ export let Hermite: NewHermiteType
82
+
83
+ // 变换
49
84
  export let Matrix4: NewMatrix4Type
50
- export let Canvas: NewCanvasType
51
- export let SVG: NewSVGType
52
- export let Eoap: NewEoapType
53
85
  export let rotate: rotateType
54
- export let Hermite: NewHermiteType
55
- export let Cardinal: NewCardinalType
86
+
87
+ // 工具
56
88
  export let getLoopColors: getLoopColorsType
57
89
  export let animation: animationType
58
- export let ruler: rulerType
90
+ export let ruler: rulerType
91
+
92
+ // 画笔
93
+ export let SVG: NewSVGType
94
+ export let Canvas: NewCanvasType
95
+ export let WebGL: NewWebGLType
96
+
97
+ // 投影
98
+ export let Eoap: NewEoapType
99
+ export let Mercator: NewMercatorType
100
+
101
+ // 辅助
102
+ export let viewHandler: viewHandlerType
package/types/rotate.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export default interface rotateType {
2
- (cx: number, cy: number, deg: number, x: number, y: number): number[]
1
+ export default interface rotateType {
2
+ (cx: number, cy: number, deg: number, x: number, y: number): number[]
3
3
  }
package/types/ruler.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export default interface rulerType {
2
- (maxValue: number, minValue: number, num: number): number[]
1
+ export default interface rulerType {
2
+ (maxValue: number, minValue: number, num: number): number[]
3
3
  }
@@ -0,0 +1,13 @@
1
+ export interface paramsType {
2
+ type: string
3
+ value: number,
4
+ normal: number[]
5
+ }
6
+
7
+ export interface callbackFun {
8
+ (params: paramsType): void
9
+ }
10
+
11
+ export default interface viewHandlerType {
12
+ (callback: callbackFun): void
13
+ }
@@ -1,7 +1,15 @@
1
1
  <template>
2
- <view>
2
+ <view :class="cover || isH5 ? 'cover-view' : 'normal-view'">
3
+ <view :class="'view-img view-' + uniqueid" @touchstart="doitstart">
4
+ <image
5
+ :style="{ width: width + 'px', height: height + 'px' }"
6
+ :src="viewImg"
7
+ ></image>
8
+ </view>
9
+
3
10
  <!-- #ifdef MP-ALIPAY -->
4
11
  <canvas
12
+ class="painter"
5
13
  :id="'painter-' + uniqueid"
6
14
  @touchstart="doitstart"
7
15
  :style="{ width: width + 'px', height: height + 'px' }"
@@ -14,6 +22,7 @@
14
22
  <!-- #endif -->
15
23
  <!-- #ifdef MP-WEIXIN -->
16
24
  <canvas
25
+ class="painter"
17
26
  canvas-id="painter"
18
27
  @touchstart="doitstart"
19
28
  :style="{ width: width + 'px', height: height + 'px' }"
@@ -26,6 +35,7 @@
26
35
  <!-- #endif -->
27
36
  <!-- #ifndef MP-WEIXIN||MP-ALIPAY -->
28
37
  <canvas
38
+ class="painter"
29
39
  :canvas-id="'painter-' + uniqueid"
30
40
  @touchstart="doitstart"
31
41
  :style="{ width: width + 'px', height: height + 'px' }"
@@ -45,6 +55,13 @@ export default {
45
55
  return {
46
56
  uniqueid: (Math.random() * 10000).toFixed(0),
47
57
  help: {},
58
+ viewImg: "",
59
+ // #ifdef H5
60
+ isH5: true,
61
+ // #endif
62
+ // #ifndef H5
63
+ isH5: false,
64
+ // #endif
48
65
  };
49
66
  },
50
67
  props: {
@@ -60,18 +77,25 @@ export default {
60
77
  type: Function,
61
78
  default: () => {},
62
79
  },
80
+ cover: {
81
+ type: Boolean,
82
+ default: true,
83
+ },
63
84
  },
64
85
  methods: {
65
86
  fetch() {
87
+ let painter, region, painterid, regionid;
66
88
  // #ifdef MP-WEIXIN
67
- let painter = uni.createCanvasContext("painter", this);
68
- let region = uni.createCanvasContext("region", this);
69
- let regionid = "region";
89
+ painter = uni.createCanvasContext("painter", this);
90
+ region = uni.createCanvasContext("region", this);
91
+ painterid = "painter";
92
+ regionid = "region";
70
93
  // #endif
71
94
  // #ifndef MP-WEIXIN
72
- let painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
73
- let region = uni.createCanvasContext("region-" + this.uniqueid, this);
74
- let regionid = "region-" + this.uniqueid;
95
+ painter = uni.createCanvasContext("painter-" + this.uniqueid, this);
96
+ region = uni.createCanvasContext("region-" + this.uniqueid, this);
97
+ painterid = "painter-" + this.uniqueid;
98
+ regionid = "region-" + this.uniqueid;
75
99
  // #endif
76
100
 
77
101
  let _this = this;
@@ -83,6 +107,9 @@ export default {
83
107
  },
84
108
  {
85
109
  getContext() {
110
+ // #ifdef MP-ALIPAY
111
+ let getImageData = region.getImageData;
112
+ // #endif
86
113
  region.getImageData = (x, y, width, height) => {
87
114
  return new Promise((resolve, reject) => {
88
115
  let options = {
@@ -100,7 +127,7 @@ export default {
100
127
  };
101
128
 
102
129
  // #ifdef MP-ALIPAY
103
- region.getImageData(options, _this);
130
+ getImageData(options, _this);
104
131
  // #endif
105
132
  // #ifndef MP-ALIPAY
106
133
  uni.canvasGetImageData(options, _this);
@@ -114,27 +141,69 @@ export default {
114
141
  this.help.instance.draw = () => {
115
142
  painter.draw();
116
143
  region.draw();
144
+
145
+ // 如果不使用原生渲染
146
+ if (!this.cover && !this.isH5) {
147
+ uni.canvasToTempFilePath(
148
+ {
149
+ canvasId: painterid,
150
+ success: (e) => {
151
+ this.viewImg = e.tempFilePath;
152
+ },
153
+ },
154
+ this
155
+ );
156
+ }
117
157
  };
118
158
  return new Promise((resolve, reject) => {
159
+ this.help.instance.toDataURL = () => {
160
+ return new Promise((resolveUrl) => {
161
+ uni.canvasToTempFilePath(
162
+ {
163
+ canvasId: painterid,
164
+ success: function (e) {
165
+ resolveUrl(e.tempFilePath);
166
+ },
167
+ },
168
+ this
169
+ );
170
+ });
171
+ };
172
+
119
173
  resolve(this.help.instance);
120
174
  });
121
175
  },
122
176
  doit(event, doback) {
123
- if(doback){
124
- let doRun = (x, y) => {
125
- this.help.instance.getRegion(x, y).then((regionName) => {
126
- doback(regionName);
177
+ let doRun = (x, y) => {
178
+ this.help.instance.getRegion(x, y).then((regionName) => {
179
+ // 兼容旧语法
180
+ if (typeof doback == "function") doback(regionName);
181
+
182
+ this.$emit("dotouchstart", {
183
+ name: regionName,
184
+ x: x,
185
+ y: y,
127
186
  });
128
- };
187
+ });
188
+ };
129
189
 
190
+ if (this.cover || this.isH5) {
130
191
  // #ifdef MP-ALIPAY
131
192
  uni
132
193
  .createSelectorQuery()
133
194
  .selectViewport()
134
195
  .scrollOffset()
135
196
  .exec((ret) => {
136
- let x = event.touches[0].x + ret[0].scrollLeft;
137
- let y = event.touches[0].y + ret[0].scrollTop;
197
+ let x, y;
198
+ // #ifdef MP-ALIPAY
199
+ x = event.touches[0].x;
200
+ y = event.touches[0].y;
201
+ // #endif
202
+ // #ifndef MP-ALIPAY
203
+ x = event.touches[0].x + ret[0].scrollLeft;
204
+ y = event.touches[0].y + ret[0].scrollTop;
205
+ // #endif
206
+
138
207
  doRun(x, y);
139
208
  });
140
209
  // #endif
@@ -143,6 +212,24 @@ export default {
143
212
  let y = event.touches[0].y;
144
213
  doRun(x, y);
145
214
  // #endif
215
+ } else {
216
+ uni
217
+ .createSelectorQuery()
218
+ .selectViewport()
219
+ .scrollOffset()
220
+ .exec((ret) => {
221
+ uni
222
+ .createSelectorQuery()
223
+ .in(this)
224
+ .select(".view-" + this.uniqueid)
225
+ .boundingClientRect((data) => {
226
+ doRun(
227
+ event.touches[0].pageX - data.left - ret[0].scrollLeft,
228
+ event.touches[0].pageY - data.top - ret[0].scrollTop
229
+ );
230
+ })
231
+ .exec();
232
+ });
146
233
  }
147
234
  },
148
235
  doitstart(event) {
@@ -158,4 +245,13 @@ export default {
158
245
  position: fixed;
159
246
  left: 50000px;
160
247
  }
248
+
249
+ .cover-view .view-img {
250
+ display: none;
251
+ }
252
+
253
+ .normal-view .painter {
254
+ position: fixed;
255
+ left: 50000px;
256
+ }
161
257
  </style>
package/types/Eoap.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export default interface EoapType {
2
-
3
- /**
4
- * 返回该点的绘图坐标(特别需要注意,计算出来的位置是偏离中心点的距离)
5
- * @param longitude 经纬度
6
- * @param latitude
7
- */
8
- use(longitude: number, latitude: number): number[]
9
-
10
- }