vislite 0.2.0 → 0.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.
- package/AUTHORS.txt +6 -6
- package/CHANGELOG +27 -1
- package/LICENSE +20 -20
- package/README.md +53 -53
- package/lib/Canvas/index.umd.js +87 -14
- package/lib/Canvas/index.umd.min.js +3 -3
- package/lib/Cardinal/index.umd.js +16 -5
- package/lib/Cardinal/index.umd.min.js +3 -3
- package/lib/Eoap/index.umd.js +2 -2
- package/lib/Eoap/index.umd.min.js +2 -2
- package/lib/Hermite/index.umd.js +2 -2
- package/lib/Hermite/index.umd.min.js +2 -2
- package/lib/Matrix4/index.umd.js +2 -2
- package/lib/Matrix4/index.umd.min.js +2 -2
- package/lib/Mercator/index.umd.js +2 -2
- package/lib/Mercator/index.umd.min.js +2 -2
- package/lib/OralCanvas/index.es.js +87 -14
- package/lib/OralCanvas/index.es.min.js +3 -3
- package/lib/OralWebGL/index.es.js +17 -6
- package/lib/OralWebGL/index.es.min.js +3 -3
- package/lib/SVG/index.umd.js +78 -62
- package/lib/SVG/index.umd.min.js +3 -3
- package/lib/WebGL/index.umd.js +15 -6
- package/lib/WebGL/index.umd.min.js +3 -3
- package/lib/animation/index.umd.js +2 -2
- package/lib/animation/index.umd.min.js +2 -2
- package/lib/getLoopColors/index.umd.js +2 -2
- package/lib/getLoopColors/index.umd.min.js +2 -2
- package/lib/index.umd.js +190 -81
- package/lib/index.umd.min.js +3 -3
- package/lib/rotate/index.umd.js +2 -2
- package/lib/rotate/index.umd.min.js +2 -2
- package/lib/ruler/index.umd.js +2 -2
- package/lib/ruler/index.umd.min.js +2 -2
- package/lib/viewHandler/index.umd.js +2 -2
- package/lib/viewHandler/index.umd.min.js +2 -2
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/Canvas/index.ts +1 -1
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/OralCanvas/index.ts +1 -1
- package/package/OralWebGL/index.ts +1 -1
- package/package/SVG/index.ts +2 -2
- package/package/animation/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package.json +4 -4
- package/src/Matrix4/index.ts +76 -76
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/animation.ts +99 -99
- package/src/common/canvas/arc.ts +50 -50
- package/src/common/canvas/config.ts +142 -61
- package/src/common/canvas/gradient.ts +29 -0
- package/src/common/canvas/index.ts +122 -82
- package/src/common/canvas/painter.ts +12 -0
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/config.ts +173 -128
- package/src/common/svg/index.ts +315 -266
- package/src/common/svg/tool.ts +43 -43
- package/src/common/webgl/doDraw.ts +13 -3
- package/src/common/webgl/getShader.ts +6 -0
- package/src/common/webgl/index.ts +4 -0
- package/src/getLoopColors.ts +42 -42
- package/src/interpolation/Cardinal.ts +109 -91
- package/src/interpolation/Hermite.ts +65 -65
- package/src/rotate.ts +7 -7
- package/src/ruler.ts +99 -99
- package/types/Canvas.d.ts +282 -221
- package/types/CanvasConfig.d.ts +3 -3
- package/types/Cardinal.d.ts +13 -13
- package/types/Gradient.d.ts +15 -0
- package/types/Hermite.d.ts +18 -18
- package/types/Matrix4.d.ts +42 -42
- package/types/Object3D.d.ts +7 -0
- package/types/SVG.d.ts +210 -210
- package/types/animation.d.ts +6 -6
- package/types/getLoopColors.d.ts +2 -2
- package/types/rotate.d.ts +2 -2
- package/types/ruler.d.ts +2 -2
- package/uni-app/ui-canvas.vue +22 -46
package/lib/SVG/index.umd.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
(function (global, factory) {
|
|
12
12
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -113,22 +113,22 @@
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
var initText = function (el, config, x, y, deg) {
|
|
116
|
-
if (el.nodeName.toLowerCase() !==
|
|
117
|
-
throw new Error(
|
|
116
|
+
if (el.nodeName.toLowerCase() !== "text")
|
|
117
|
+
throw new Error("Need a <text> !");
|
|
118
118
|
setAttribute(el, "dy", {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
top: config["fontSize"] * 0.5,
|
|
120
|
+
middle: 0,
|
|
121
|
+
bottom: -config["fontSize"] * 0.5,
|
|
122
122
|
}[config.textBaseline]);
|
|
123
123
|
setStyle(el, {
|
|
124
124
|
"text-anchor": {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
left: "start",
|
|
126
|
+
right: "end",
|
|
127
|
+
center: "middle",
|
|
128
128
|
}[config.textAlign],
|
|
129
129
|
"dominant-baseline": "central",
|
|
130
|
-
"font-size": config[
|
|
131
|
-
"font-family": config[
|
|
130
|
+
"font-size": config["fontSize"] + "px",
|
|
131
|
+
"font-family": config["fontFamily"],
|
|
132
132
|
});
|
|
133
133
|
setAttribute(el, "x", x);
|
|
134
134
|
setAttribute(el, "y", y);
|
|
@@ -138,20 +138,20 @@
|
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
140
|
var initCircle = function (el, cx, cy, r) {
|
|
141
|
-
if (el.nodeName.toLowerCase() !==
|
|
142
|
-
throw new Error(
|
|
143
|
-
setAttribute(el,
|
|
144
|
-
setAttribute(el,
|
|
145
|
-
setAttribute(el,
|
|
141
|
+
if (el.nodeName.toLowerCase() !== "circle")
|
|
142
|
+
throw new Error("Need a <circle> !");
|
|
143
|
+
setAttribute(el, "cx", cx);
|
|
144
|
+
setAttribute(el, "cy", cy);
|
|
145
|
+
setAttribute(el, "r", r);
|
|
146
146
|
};
|
|
147
147
|
var initPath = function (el, path) {
|
|
148
|
-
if (el.nodeName.toLowerCase() !==
|
|
149
|
-
throw new Error(
|
|
150
|
-
setAttribute(el,
|
|
148
|
+
if (el.nodeName.toLowerCase() !== "path")
|
|
149
|
+
throw new Error("Need a <path> !");
|
|
150
|
+
setAttribute(el, "d", path);
|
|
151
151
|
};
|
|
152
152
|
var initRect = function (el, x, y, width, height) {
|
|
153
|
-
if (el.nodeName.toLowerCase() !==
|
|
154
|
-
throw new Error(
|
|
153
|
+
if (el.nodeName.toLowerCase() !== "rect")
|
|
154
|
+
throw new Error("Need a <rect> !");
|
|
155
155
|
if (height < 0) {
|
|
156
156
|
height *= -1;
|
|
157
157
|
y -= height;
|
|
@@ -160,14 +160,16 @@
|
|
|
160
160
|
width *= -1;
|
|
161
161
|
x -= width;
|
|
162
162
|
}
|
|
163
|
-
setAttribute(el,
|
|
164
|
-
setAttribute(el,
|
|
165
|
-
setAttribute(el,
|
|
166
|
-
setAttribute(el,
|
|
163
|
+
setAttribute(el, "x", x);
|
|
164
|
+
setAttribute(el, "y", y);
|
|
165
|
+
setAttribute(el, "width", width);
|
|
166
|
+
setAttribute(el, "height", height);
|
|
167
167
|
};
|
|
168
168
|
var initArc = function (el, config, cx, cy, r1, r2, beginDeg, deg) {
|
|
169
|
-
if (el.nodeName.toLowerCase() !==
|
|
170
|
-
throw new Error(
|
|
169
|
+
if (el.nodeName.toLowerCase() !== "path")
|
|
170
|
+
throw new Error("Need a <path> !");
|
|
171
|
+
beginDeg = (beginDeg / 180) * Math.PI;
|
|
172
|
+
deg = (deg / 180) * Math.PI;
|
|
171
173
|
beginDeg = beginDeg % (Math.PI * 2);
|
|
172
174
|
if (r1 > r2) {
|
|
173
175
|
var temp = r1;
|
|
@@ -181,27 +183,28 @@
|
|
|
181
183
|
deg = deg % (Math.PI * 2);
|
|
182
184
|
}
|
|
183
185
|
arc(beginDeg, deg, cx, cy, r1, r2, function (beginA, endA, begInnerX, begInnerY, begOuterX, begOuterY, endInnerX, endInnerY, endOuterX, endOuterY, r) {
|
|
184
|
-
var f =
|
|
186
|
+
var f = endA - beginA > Math.PI ? 1 : 0, d = "M" + begInnerX + " " + begInnerY;
|
|
185
187
|
if (r < 0)
|
|
186
188
|
r = -r;
|
|
187
189
|
d +=
|
|
188
190
|
"A" + r1 + " " + r1 + " 0 " + f + " 1 " + endInnerX + " " + endInnerY;
|
|
189
|
-
if (config
|
|
191
|
+
if (config.arcEndCap == "round")
|
|
190
192
|
d += "A" + r + " " + r + " " + " 0 1 0 " + endOuterX + " " + endOuterY;
|
|
191
|
-
else if (config
|
|
193
|
+
else if (config.arcEndCap == "-round")
|
|
192
194
|
d += "A" + r + " " + r + " " + " 0 1 1 " + endOuterX + " " + endOuterY;
|
|
193
195
|
else
|
|
194
196
|
d += "L" + endOuterX + " " + endOuterY;
|
|
195
|
-
d +=
|
|
196
|
-
|
|
197
|
+
d +=
|
|
198
|
+
"A" + r2 + " " + r2 + " 0 " + f + " 0 " + begOuterX + " " + begOuterY;
|
|
199
|
+
if (config.arcStartCap == "round")
|
|
197
200
|
d += "A" + r + " " + r + " " + " 0 1 0 " + begInnerX + " " + begInnerY;
|
|
198
|
-
else if (config
|
|
201
|
+
else if (config.arcStartCap == "-round")
|
|
199
202
|
d += "A" + r + " " + r + " " + " 0 1 1 " + begInnerX + " " + begInnerY;
|
|
200
203
|
else
|
|
201
204
|
d += "L" + begInnerX + " " + begInnerY;
|
|
202
|
-
if (config
|
|
205
|
+
if (config.arcStartCap == "butt")
|
|
203
206
|
d += "Z";
|
|
204
|
-
setAttribute(el,
|
|
207
|
+
setAttribute(el, "d", d);
|
|
205
208
|
});
|
|
206
209
|
};
|
|
207
210
|
|
|
@@ -217,29 +220,29 @@
|
|
|
217
220
|
"font-size": "fontSize",
|
|
218
221
|
"font-family": "fontFamily",
|
|
219
222
|
"arc-start-cap": "arcStartCap",
|
|
220
|
-
"arc-end-cap": "arcEndCap"
|
|
223
|
+
"arc-end-cap": "arcEndCap",
|
|
221
224
|
};
|
|
222
225
|
var SVG$1 = (function () {
|
|
223
226
|
function SVG(svg) {
|
|
224
227
|
this.name = "SVG";
|
|
225
228
|
this.__config = {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
fillStyle: "#000",
|
|
230
|
+
strokeStyle: "#000",
|
|
231
|
+
lineWidth: 1,
|
|
232
|
+
textAlign: "left",
|
|
233
|
+
textBaseline: "middle",
|
|
231
234
|
"font-size": 16,
|
|
232
235
|
"font-family": "sans-serif",
|
|
233
236
|
"arc-start-cap": "butt",
|
|
234
237
|
"arc-end-cap": "butt",
|
|
235
|
-
|
|
238
|
+
lineDash: [],
|
|
236
239
|
};
|
|
237
240
|
this.__path = "";
|
|
238
241
|
this.__currentPosition = [];
|
|
239
242
|
this.__svg = svg;
|
|
240
243
|
}
|
|
241
244
|
SVG.prototype.config = function (params) {
|
|
242
|
-
if (typeof params !==
|
|
245
|
+
if (typeof params !== "object") {
|
|
243
246
|
return this.__config[oldAttrName[params] || params];
|
|
244
247
|
}
|
|
245
248
|
else {
|
|
@@ -259,7 +262,7 @@
|
|
|
259
262
|
};
|
|
260
263
|
SVG.prototype.appendEl = function (el, context) {
|
|
261
264
|
context = context || this.__svg;
|
|
262
|
-
if (typeof el ==
|
|
265
|
+
if (typeof el == "string")
|
|
263
266
|
el = toNode(el);
|
|
264
267
|
context.appendChild(el);
|
|
265
268
|
this.__useEl = el;
|
|
@@ -267,14 +270,15 @@
|
|
|
267
270
|
};
|
|
268
271
|
SVG.prototype.appendBoard = function (el, context) {
|
|
269
272
|
var _el = el;
|
|
270
|
-
if (typeof el ==
|
|
271
|
-
_el =
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
273
|
+
if (typeof el == "string")
|
|
274
|
+
_el =
|
|
275
|
+
{
|
|
276
|
+
text: "text",
|
|
277
|
+
path: "path",
|
|
278
|
+
arc: "path",
|
|
279
|
+
circle: "circle",
|
|
280
|
+
rect: "rect",
|
|
281
|
+
}[el] || "";
|
|
278
282
|
if (_el == "")
|
|
279
283
|
throw new Error("Unsupported drawing method:" + el);
|
|
280
284
|
return this.appendEl(_el, context);
|
|
@@ -291,7 +295,7 @@
|
|
|
291
295
|
SVG.prototype.attr = function (params) {
|
|
292
296
|
if (!this.__useEl)
|
|
293
297
|
throw new Error("Currently, no node can be modified or viewed.");
|
|
294
|
-
if (typeof params !==
|
|
298
|
+
if (typeof params !== "object") {
|
|
295
299
|
return getAttribute(this.__useEl, params);
|
|
296
300
|
}
|
|
297
301
|
else {
|
|
@@ -402,17 +406,28 @@
|
|
|
402
406
|
return this;
|
|
403
407
|
};
|
|
404
408
|
SVG.prototype.arc = function (x, y, r, beginDeg, deg) {
|
|
405
|
-
var begPosition = rotate(x, y, beginDeg, x + r, y);
|
|
406
|
-
var endPosition = rotate(x, y, beginDeg + deg, x + r, y);
|
|
407
|
-
|
|
408
|
-
deg = deg / Math.PI * 180;
|
|
409
|
-
if (this.__path == '') {
|
|
409
|
+
var begPosition = rotate(x, y, (beginDeg / 180) * Math.PI, x + r, y);
|
|
410
|
+
var endPosition = rotate(x, y, ((beginDeg + deg) / 180) * Math.PI, x + r, y);
|
|
411
|
+
if (this.__path == "") {
|
|
410
412
|
this.__path += "M" + begPosition[0] + "," + begPosition[1];
|
|
411
413
|
}
|
|
412
|
-
else if (begPosition[0] != this.__currentPosition[0] ||
|
|
414
|
+
else if (begPosition[0] != this.__currentPosition[0] ||
|
|
415
|
+
begPosition[1] != this.__currentPosition[1]) {
|
|
413
416
|
this.__path += "L" + begPosition[0] + "," + begPosition[1];
|
|
414
417
|
}
|
|
415
|
-
this.__path +=
|
|
418
|
+
this.__path +=
|
|
419
|
+
"A" +
|
|
420
|
+
r +
|
|
421
|
+
"," +
|
|
422
|
+
r +
|
|
423
|
+
" 0 " +
|
|
424
|
+
(deg > 180 || deg < -180 ? 1 : 0) +
|
|
425
|
+
"," +
|
|
426
|
+
(deg > 0 ? 1 : 0) +
|
|
427
|
+
" " +
|
|
428
|
+
endPosition[0] +
|
|
429
|
+
"," +
|
|
430
|
+
endPosition[1];
|
|
416
431
|
return this;
|
|
417
432
|
};
|
|
418
433
|
SVG.prototype.quadraticCurveTo = function (cpx, cpy, x, y) {
|
|
@@ -420,7 +435,8 @@
|
|
|
420
435
|
return this;
|
|
421
436
|
};
|
|
422
437
|
SVG.prototype.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {
|
|
423
|
-
this.__path +=
|
|
438
|
+
this.__path +=
|
|
439
|
+
"C" + cp1x + " " + cp1y + "," + cp2x + " " + cp2y + "," + x + " " + y;
|
|
424
440
|
return this;
|
|
425
441
|
};
|
|
426
442
|
return SVG;
|
package/lib/SVG/index.umd.min.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
|
-
var t,e;t=this,e=function(){"use strict";var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},t(e,i)},e=["href","title","show","type","role","actuate"],i=function(t,i,n){e.indexOf(i)>-1?t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:"+i,n+""):t.setAttribute(i,n+"")},n=i;function o(t,e){i(t,"stroke",e.strokeStyle),i(t,"fill",e.fillStyle),i(t,"stroke-dasharray",e.lineDash.join(","))}function r(t,e){i(t,"fill",e.fillStyle)}function s(t,e){i(t,"stroke",e.strokeStyle),i(t,"fill","none"),i(t,"stroke-dasharray",e.lineDash.join(","))}var h=function(t,e,i,n,o){var r=Math.cos(i),s=Math.sin(i);return[+((n-t)*r-(o-e)*s+t).toFixed(7),+((n-t)*s+(o-e)*r+e).toFixed(7)]},u=function(t,e,i,o,r){if("text"!==t.nodeName.toLowerCase())throw new Error("Need a <text> !");n(t,"dy",{top:.5*e
|
|
11
|
+
var t,e;t=this,e=function(){"use strict";var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},t(e,i)},e=["href","title","show","type","role","actuate"],i=function(t,i,n){e.indexOf(i)>-1?t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:"+i,n+""):t.setAttribute(i,n+"")},n=i;function o(t,e){i(t,"stroke",e.strokeStyle),i(t,"fill",e.fillStyle),i(t,"stroke-dasharray",e.lineDash.join(","))}function r(t,e){i(t,"fill",e.fillStyle)}function s(t,e){i(t,"stroke",e.strokeStyle),i(t,"fill","none"),i(t,"stroke-dasharray",e.lineDash.join(","))}var h=function(t,e,i,n,o){var r=Math.cos(i),s=Math.sin(i);return[+((n-t)*r-(o-e)*s+t).toFixed(7),+((n-t)*s+(o-e)*r+e).toFixed(7)]},u=function(t,e,i,o,r){if("text"!==t.nodeName.toLowerCase())throw new Error("Need a <text> !");n(t,"dy",{top:.5*e.fontSize,middle:0,bottom:.5*-e.fontSize}[e.textBaseline]),function(t,e){for(var i in e)t.style[i]=e[i]}(t,{"text-anchor":{left:"start",right:"end",center:"middle"}[e.textAlign],"dominant-baseline":"central","font-size":e.fontSize+"px","font-family":e.fontFamily}),n(t,"x",i),n(t,"y",o),"number"==typeof r&&n(t,"transform","rotate("+(r%=360)+","+i+","+o+")")},_=function(t,e,i,o){if("circle"!==t.nodeName.toLowerCase())throw new Error("Need a <circle> !");n(t,"cx",e),n(t,"cy",i),n(t,"r",o)},c=function(t,e){if("path"!==t.nodeName.toLowerCase())throw new Error("Need a <path> !");n(t,"d",e)},a=function(t,e,i,o,r){if("rect"!==t.nodeName.toLowerCase())throw new Error("Need a <rect> !");r<0&&(i-=r*=-1),o<0&&(e-=o*=-1),n(t,"x",e),n(t,"y",i),n(t,"width",o),n(t,"height",r)},f=function(t,e,i,o,r,s,u,_){if("path"!==t.nodeName.toLowerCase())throw new Error("Need a <path> !");if(u=u/180*Math.PI,_=_/180*Math.PI,u%=2*Math.PI,r>s){var c=r;r=s,s=c}_>=1.999999*Math.PI||_<=1.999999*-Math.PI?_=1.999999*Math.PI:_%=2*Math.PI,function(t,e,i,n,o,r,s){e<0&&(t+=e,e*=-1);var u,_=[];u=h(0,0,t,o,0),_[0]=u[0],_[1]=u[1],u=h(0,0,e,u[0],u[1]),_[2]=u[0],_[3]=u[1],u=h(0,0,t,r,0),_[4]=u[0],_[5]=u[1],u=h(0,0,e,u[0],u[1]),_[6]=u[0],_[7]=u[1],s(t,t+e,_[0]+i,_[1]+n,_[4]+i,_[5]+n,_[2]+i,_[3]+n,_[6]+i,_[7]+n,.5*(r-o))}(u,_,i,o,r,s,(function(i,o,h,u,_,c,a,f,l,p,d){var y=o-i>Math.PI?1:0,E="M"+h+" "+u;d<0&&(d=-d),E+="A"+r+" "+r+" 0 "+y+" 1 "+a+" "+f,"round"==e.arcEndCap?E+="A"+d+" "+d+" 0 1 0 "+l+" "+p:"-round"==e.arcEndCap?E+="A"+d+" "+d+" 0 1 1 "+l+" "+p:E+="L"+l+" "+p,E+="A"+s+" "+s+" 0 "+y+" 0 "+_+" "+c,"round"==e.arcStartCap?E+="A"+d+" "+d+" 0 1 0 "+h+" "+u:"-round"==e.arcStartCap?E+="A"+d+" "+d+" 0 1 1 "+h+" "+u:E+="L"+h+" "+u,"butt"==e.arcStartCap&&(E+="Z"),n(t,"d",E)}))};function l(t,e,i,n,o){var r=Math.cos(i),s=Math.sin(i);return[(n-t)*r-(o-e)*s+t,(n-t)*s+(o-e)*r+e]}var p={"font-size":"fontSize","font-family":"fontFamily","arc-start-cap":"arcStartCap","arc-end-cap":"arcEndCap"},d=function(){function t(t){this.name="SVG",this.__config={fillStyle:"#000",strokeStyle:"#000",lineWidth:1,textAlign:"left",textBaseline:"middle","font-size":16,"font-family":"sans-serif","arc-start-cap":"butt","arc-end-cap":"butt",lineDash:[]},this.__path="",this.__currentPosition=[],this.__svg=t}return t.prototype.config=function(t){if("object"!=typeof t)return this.__config[p[t]||t];for(var e in t){var i=p[e]||e;this.__config[i]=t[e]}return this},t.prototype.useEl=function(t){return this.__useEl=t,this},t.prototype.getEl=function(){return this.__useEl},t.prototype.appendEl=function(t,e){var i;return e=e||this.__svg,"string"==typeof t&&(i=t,t=document.createElementNS("http://www.w3.org/2000/svg",i)),e.appendChild(t),this.__useEl=t,this},t.prototype.appendBoard=function(t,e){var i=t;if("string"==typeof t&&(i={text:"text",path:"path",arc:"path",circle:"circle",rect:"rect"}[t]||""),""==i)throw new Error("Unsupported drawing method:"+t);return this.appendEl(i,e)},t.prototype.remove=function(){if(!this.__useEl)throw new Error("Currently, no node can be deleted.");return this.__useEl.parentNode.removeChild(this.__useEl),this},t.prototype.attr=function(t){if(!this.__useEl)throw new Error("Currently, no node can be modified or viewed.");if("object"!=typeof t)return function(t,i){return e.indexOf(i)>-1&&(i="xlink:"+i),t.getAttribute(i)}(this.__useEl,t);for(var i in t)n(this.__useEl,i,t[i]);return this},t.prototype.fillText=function(t,e,i,n){return void 0===n&&(n=0),u(this.__useEl,this.__config,e,i,n),this.__useEl.textContent=t,r(this.__useEl,this.__config),this},t.prototype.strokeText=function(t,e,i,n){return void 0===n&&(n=0),u(this.__useEl,this.__config,e,i,n),this.__useEl.textContent=t,s(this.__useEl,this.__config),this},t.prototype.fullText=function(t,e,i,n){return void 0===n&&(n=0),u(this.__useEl,this.__config,e,i,n),this.__useEl.textContent=t,o(this.__useEl,this.__config),this},t.prototype.fillArc=function(t,e,i,n,o,s){return f(this.__useEl,this.__config,t,e,i,n,o,s),r(this.__useEl,this.__config),this},t.prototype.strokeArc=function(t,e,i,n,o,r){return f(this.__useEl,this.__config,t,e,i,n,o,r),s(this.__useEl,this.__config),this},t.prototype.fullArc=function(t,e,i,n,r,s){return f(this.__useEl,this.__config,t,e,i,n,r,s),o(this.__useEl,this.__config),this},t.prototype.fillCircle=function(t,e,i){return _(this.__useEl,t,e,i),r(this.__useEl,this.__config),this},t.prototype.strokeCircle=function(t,e,i){return _(this.__useEl,t,e,i),s(this.__useEl,this.__config),this},t.prototype.fullCircle=function(t,e,i){return _(this.__useEl,t,e,i),o(this.__useEl,this.__config),this},t.prototype.fillRect=function(t,e,i,n){return a(this.__useEl,t,e,i,n),r(this.__useEl,this.__config),this},t.prototype.strokeRect=function(t,e,i,n){return a(this.__useEl,t,e,i,n),s(this.__useEl,this.__config),this},t.prototype.fullRect=function(t,e,i,n){return a(this.__useEl,t,e,i,n),o(this.__useEl,this.__config),this},t.prototype.beginPath=function(){return this.__currentPosition=[],this.__path="",this},t.prototype.closePath=function(){return this.__path+="Z",this},t.prototype.moveTo=function(t,e){return this.__currentPosition=[t,e],this.__path+="M"+t+" "+e,this},t.prototype.lineTo=function(t,e){return this.__currentPosition=[t,e],this.__path+=(""==this.__path?"M":"L")+t+" "+e,this},t.prototype.fill=function(){return c(this.__useEl,this.__path),r(this.__useEl,this.__config),this},t.prototype.stroke=function(){return c(this.__useEl,this.__path),s(this.__useEl,this.__config),this},t.prototype.full=function(){return c(this.__useEl,this.__path),o(this.__useEl,this.__config),this},t.prototype.arc=function(t,e,i,n,o){var r=l(t,e,n/180*Math.PI,t+i,e),s=l(t,e,(n+o)/180*Math.PI,t+i,e);return""==this.__path?this.__path+="M"+r[0]+","+r[1]:r[0]==this.__currentPosition[0]&&r[1]==this.__currentPosition[1]||(this.__path+="L"+r[0]+","+r[1]),this.__path+="A"+i+","+i+" 0 "+(o>180||o<-180?1:0)+","+(o>0?1:0)+" "+s[0]+","+s[1],this},t.prototype.quadraticCurveTo=function(t,e,i,n){return this.__path+="Q"+t+" "+e+","+i+" "+n,this},t.prototype.bezierCurveTo=function(t,e,i,n,o,r){return this.__path+="C"+t+" "+e+","+i+" "+n+","+o+" "+r,this},t}();return function(e){function i(t){if(!t)throw new Error("VISLite SVG:The mount point requires an HTMLElement type but encountered null.");var i=t.clientWidth,n=t.clientHeight,o=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.appendChild(o),o.setAttribute("width",i+""),o.setAttribute("height",n+""),o.setAttribute("viewBox","0 0 "+i+" "+n),e.call(this,o)||this}return function(e,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}(i,e),i}(d)},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).VISLite_SVG=e();
|
package/lib/WebGL/index.umd.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
(function (global, factory) {
|
|
12
12
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -360,11 +360,12 @@
|
|
|
360
360
|
(mesh.geometry.attributes.normal ? "1" : "0") +
|
|
361
361
|
(mesh.material.image ? "1" : "0") +
|
|
362
362
|
(mesh.material.color ? "1" : "0") +
|
|
363
|
+
(mesh.material.colors ? "1" : "0") +
|
|
363
364
|
(mesh.material.cube ? "1" : "0");
|
|
364
365
|
if (shaders[uniqueName])
|
|
365
366
|
return shaders[uniqueName].use();
|
|
366
|
-
var vertexShader = "\n attribute vec4 a_position;\n\n ".concat(mesh.geometry.attributes.normal ? 'attribute vec4 a_normal;varying vec3 v_normal;' : '', "\n\n uniform mat4 u_matrix_world;\n uniform mat4 u_matrix_mesh;\n uniform mat4 u_matrix_proporion;\n\n ").concat(mesh.material.image ? 'attribute vec2 a_textcoord;varying vec2 v_textcoord;' : '', "\n\n void main(){\n vec4 temp = a_position;\n\n // \u5E94\u7528\u53D8\u6362\u77E9\u9635\uFF1A\u5C4F\u5E55\u6BD4\u8C03\u5E73\u77E9\u9635\u3001\u4E16\u754C\u77E9\u9635\u3001\u7269\u4F53\u77E9\u9635\n temp = u_matrix_proporion * u_matrix_world * u_matrix_mesh * temp;\n\n // \u628A\u539F\u751F\u7684WebGL\u4F7F\u7528\u7684\u5DE6\u624B\u5750\u6807\u7CFB\u53D8\u6210\u4E86\u53F3\u624B\u5750\u6807\u7CFB\n temp.z = -1.0 * temp.z;\n\n // \u8868\u793A\u773C\u775B\u8DDD\u79BBvec4(0.0,0.0,1.0)\u7684\u8DDD\u79BB\n float dist = 4.0;\n\n // \u4F7F\u7528\u6295\u5F71\u76F4\u63A5\u8BA1\u7B97\n // \u4E3A\u4FDD\u8BC1\u7EB9\u7406\u548C\u76F8\u5BF9\u4F4D\u7F6E\u6B63\u786E\n // x\u3001y\u3001z\u7684\u6539\u53D8\u6EE1\u8DB3\u7EBF\u6027\u53D8\u6362\n gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));\n\n ").concat(mesh.geometry.attributes.normal ? 'v_normal = normalize(vec3(a_normal));' : '', "\n ").concat(mesh.material.image ? 'v_textcoord = a_textcoord;' : '', "\n }\n ");
|
|
367
|
-
var fragmentShader = "\n precision mediump float;\n\n ".concat(mesh.geometry.attributes.normal ? 'varying vec3 v_normal;' : '', "\n ").concat(mesh.material.color ? 'uniform vec4 u_color;' : '', "\n ").concat(mesh.material.cube ? 'uniform samplerCube u_texture;' : '', "\n ").concat(mesh.material.image ? 'uniform sampler2D u_sampler;varying vec2 v_textcoord;' : '', "\n\n void main(){\n ").concat(mesh.material.color ? 'gl_FragColor = u_color;' : '', "\n ").concat(mesh.material.cube ? 'gl_FragColor = textureCube(u_texture,normalize(v_normal));' : '', "\n ").concat(mesh.material.image ? 'gl_FragColor = texture2D(u_sampler,v_textcoord);' : '', "\n }\n ");
|
|
367
|
+
var vertexShader = "\n attribute vec4 a_position;\n\n ".concat(mesh.geometry.attributes.normal ? 'attribute vec4 a_normal;varying vec3 v_normal;' : '', "\n\n uniform mat4 u_matrix_world;\n uniform mat4 u_matrix_mesh;\n uniform mat4 u_matrix_proporion;\n\n ").concat(mesh.material.image ? 'attribute vec2 a_textcoord;varying vec2 v_textcoord;' : '', "\n\n ").concat(mesh.material.colors ? 'attribute vec4 a_color;varying vec4 v_color;' : '', "\n\n void main(){\n vec4 temp = a_position;\n\n // \u5E94\u7528\u53D8\u6362\u77E9\u9635\uFF1A\u5C4F\u5E55\u6BD4\u8C03\u5E73\u77E9\u9635\u3001\u4E16\u754C\u77E9\u9635\u3001\u7269\u4F53\u77E9\u9635\n temp = u_matrix_proporion * u_matrix_world * u_matrix_mesh * temp;\n\n // \u628A\u539F\u751F\u7684WebGL\u4F7F\u7528\u7684\u5DE6\u624B\u5750\u6807\u7CFB\u53D8\u6210\u4E86\u53F3\u624B\u5750\u6807\u7CFB\n temp.z = -1.0 * temp.z;\n\n // \u8868\u793A\u773C\u775B\u8DDD\u79BBvec4(0.0,0.0,1.0)\u7684\u8DDD\u79BB\n float dist = 4.0;\n\n // \u4F7F\u7528\u6295\u5F71\u76F4\u63A5\u8BA1\u7B97\n // \u4E3A\u4FDD\u8BC1\u7EB9\u7406\u548C\u76F8\u5BF9\u4F4D\u7F6E\u6B63\u786E\n // x\u3001y\u3001z\u7684\u6539\u53D8\u6EE1\u8DB3\u7EBF\u6027\u53D8\u6362\n gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));\n\n ").concat(mesh.geometry.attributes.normal ? 'v_normal = normalize(vec3(a_normal));' : '', "\n ").concat(mesh.material.image ? 'v_textcoord = a_textcoord;' : '', "\n ").concat(mesh.material.colors ? 'v_color=a_color;' : '', "\n }\n ");
|
|
368
|
+
var fragmentShader = "\n precision mediump float;\n\n ".concat(mesh.geometry.attributes.normal ? 'varying vec3 v_normal;' : '', "\n ").concat(mesh.material.color ? 'uniform vec4 u_color;' : '', "\n ").concat(mesh.material.cube ? 'uniform samplerCube u_texture;' : '', "\n ").concat(mesh.material.image ? 'uniform sampler2D u_sampler;varying vec2 v_textcoord;' : '', "\n ").concat(mesh.material.colors ? 'varying vec4 v_color;' : '', "\n\n void main(){\n ").concat(mesh.material.color ? 'gl_FragColor = u_color;' : '', "\n ").concat(mesh.material.cube ? 'gl_FragColor = textureCube(u_texture,normalize(v_normal));' : '', "\n ").concat(mesh.material.image ? 'gl_FragColor = texture2D(u_sampler,v_textcoord);' : '', "\n ").concat(mesh.material.colors ? 'gl_FragColor=v_color;' : '', "\n }\n ");
|
|
368
369
|
var shader = new ShaderObject(painter).compile(vertexShader, fragmentShader).use();
|
|
369
370
|
shaders[uniqueName] = shader;
|
|
370
371
|
return shader;
|
|
@@ -374,18 +375,23 @@
|
|
|
374
375
|
var shader = getShader(type, painter, mesh);
|
|
375
376
|
new BufferObject(painter).use()
|
|
376
377
|
.write(mesh.geometry.attributes.position.array)
|
|
377
|
-
.divide(painter.getAttribLocation(shader.program, "a_position"), mesh.geometry.attributes.position.itemSize,
|
|
378
|
+
.divide(painter.getAttribLocation(shader.program, "a_position"), mesh.geometry.attributes.position.itemSize, mesh.geometry.attributes.position.itemSize, 0);
|
|
378
379
|
painter.uniformMatrix4fv(painter.getUniformLocation(shader.program, "u_matrix_world"), false, globalWorld.matrix);
|
|
379
380
|
painter.uniformMatrix4fv(painter.getUniformLocation(shader.program, "u_matrix_proporion"), false, globalWorld.proporion);
|
|
380
381
|
painter.uniformMatrix4fv(painter.getUniformLocation(shader.program, "u_matrix_mesh"), false, meshWorld.matrix);
|
|
381
382
|
if (mesh.geometry.attributes.normal) {
|
|
382
383
|
new BufferObject(painter).use()
|
|
383
384
|
.write(mesh.geometry.attributes.normal.array)
|
|
384
|
-
.divide(painter.getAttribLocation(shader.program, "a_normal"), mesh.geometry.attributes.normal.itemSize,
|
|
385
|
+
.divide(painter.getAttribLocation(shader.program, "a_normal"), mesh.geometry.attributes.normal.itemSize, mesh.geometry.attributes.normal.itemSize, 0);
|
|
385
386
|
}
|
|
386
387
|
if ("color" in mesh.material) {
|
|
387
388
|
painter.uniform4f(painter.getUniformLocation(shader.program, "u_color"), mesh.material.color.r, mesh.material.color.g, mesh.material.color.b, mesh.material.color.alpha);
|
|
388
389
|
}
|
|
390
|
+
if ("colors" in mesh.material) {
|
|
391
|
+
new BufferObject(painter).use()
|
|
392
|
+
.write(mesh.material.colors.array)
|
|
393
|
+
.divide(painter.getAttribLocation(shader.program, "a_color"), mesh.material.colors.itemSize, mesh.material.colors.itemSize, 0);
|
|
394
|
+
}
|
|
389
395
|
else if ("cube" in mesh.material) {
|
|
390
396
|
var size = mesh.material.cube.right.image.value.width;
|
|
391
397
|
getTexture(type, painter, 'cube').useCube([
|
|
@@ -546,6 +552,9 @@
|
|
|
546
552
|
if (mesh.geometry.index && Array.isArray(mesh.geometry.index.array)) {
|
|
547
553
|
mesh.geometry.index.array = new Uint8Array(mesh.geometry.index.array);
|
|
548
554
|
}
|
|
555
|
+
if (mesh.material.colors && Array.isArray(mesh.material.colors.array)) {
|
|
556
|
+
mesh.material.colors.array = new Float32Array(mesh.material.colors.array);
|
|
557
|
+
}
|
|
549
558
|
}
|
|
550
559
|
this.__scene.children.push(object3D);
|
|
551
560
|
this.draw(object3D);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
|
-
var t,e;t=this,e=function(){"use strict";var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},t(e,r)};function e(t,e,r){if(r||2===arguments.length)for(var i,n=0,o=e.length;n<o;n++)!i&&n in e||(i||(i=Array.prototype.slice.call(e,0,n)),i[n]=e[n]);return t.concat(i||Array.prototype.slice.call(e))}function r(t,e,r){void 0===r&&(r={});for(var i=["webgl","experimental-webgl","webkit-3d","moz-webgl"],n=null,o=0;o<i.length;o++){try{n=t.getContext(i[o],r)}catch(t){}if(n)break}if(!n)throw new Error("Non canvas or browser does not support webgl.");var a=n.canvas.width,_=n.canvas.height,u=a*e,s=_*e;return n.viewport(.5*(a-u),.5*(_-s),u,s),n.depthFunc(n.LEQUAL),n.enable(n.DEPTH_TEST),n}function i(t){var e=t.drawingBufferWidth,r=t.drawingBufferHeight,i=new Uint8Array(4*e*r);return t.readPixels(0,0,e,r,t.RGBA,t.UNSIGNED_BYTE,i),function(t,n){return"rgba("+i[4*((n=r-n)*e+t)]+","+i[4*(n*e+t)+1]+","+i[4*(n*e+t)+2]+","+i[4*(n*e+t)+3]+")"}}var n=function(t,e){for(var r=[],i=0;i<4;i++)for(var n=0;n<e.length/4;n++)r[4*n+i]=t[i]*e[4*n]+t[i+4]*e[4*n+1]+t[i+8]*e[4*n+2]+t[i+12]*e[4*n+3];return r},o=function(){function t(t){void 0===t&&(t=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.name="Matrix4",this.__matrix4=t}return t.prototype.move=function(t,e,r,i){return void 0===i&&(i=0),this.__matrix4=n(function(t,e,r,i){void 0===i&&(i=0);var n=Math.sqrt(e*e+r*r+i*i);return[1,0,0,0,0,1,0,0,0,0,1,0,e*t/n,r*t/n,i*t/n,1]}(t,e,r,i),this.__matrix4),this},t.prototype.rotate=function(t,e,r,i,o,a,_){var u=function(t,e,r,i,n,o){if("number"==typeof t&&"number"==typeof e){if("number"!=typeof r?(r=0,i=t,n=e,o=1):"number"==typeof i&&"number"==typeof n&&"number"==typeof o||(i=t,n=e,o=r,t=0,e=0,r=0),t==i&&e==n&&r==o)throw new Error("It's not a legitimate ray!");var a=Math.sqrt((i-t)*(i-t)+(n-e)*(n-e)),_=0!=a?(n-e)/a:1,u=0!=a?(i-t)/a:0,s=(i-t)*u+(n-e)*_,m=o-r,c=Math.sqrt(s*s+m*m),l=0!=c?m/c:1,h=0!=c?s/c:0;return[[_,l*u,u*h,0,-u,_*l,_*h,0,0,-h,l,0,e*u-t*_,r*h-t*u*l-e*_*l,-t*u*h-e*_*h-r*l,1],[_,-u,0,0,l*u,l*_,-h,0,u*h,_*h,l,0,t,e,r,1]]}throw new Error("a1 and b1 is required!")}(e,r,i,o,a,_);return this.__matrix4=n(n(n(u[1],function(t){var e=Math.sin(t),r=Math.cos(t);return[r,e,0,0,-e,r,0,0,0,0,1,0,0,0,0,1]}(t)),u[0]),this.__matrix4),this},t.prototype.scale=function(t,e,r,i,o,a){return void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),this.__matrix4=n(function(t,e,r,i,n,o){return void 0===i&&(i=0),void 0===n&&(n=0),void 0===o&&(o=0),[t,0,0,0,0,e,0,0,0,0,r,0,i-i*t,n-n*e,o-o*r,1]}(t,e,r,i,o,a),this.__matrix4),this},t.prototype.multiply=function(t,e){return void 0===e&&(e=!1),this.__matrix4=e?n(this.__matrix4,t):n(t,this.__matrix4),this},t.prototype.use=function(t,e,r,i){return void 0===r&&(r=0),void 0===i&&(i=1),n(this.__matrix4,[t,e,r,i])},t.prototype.value=function(){return this.__matrix4},t}(),a=function(){function t(t,e){void 0===e&&(e=!1),this.__painter=t,this.__isElement=e,this.__buffer=function(t){return t.createBuffer()}(t),this.__type=e?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER}return t.prototype.use=function(){return this.__painter.bindBuffer(this.__type,this.__buffer),this},t.prototype.write=function(t){return function(t,e,r,i){var n=r?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER;t.bufferData(n,e,i)}(this.__painter,t,this.__isElement,this.__painter.STATIC_DRAW),this.__fsize=t.BYTES_PER_ELEMENT,this},t.prototype.divide=function(t,e,r,i){return void 0===i&&(i=0),function(t,e,r,i,n,o,a){t.vertexAttribPointer(e,r,i,a,n,o),t.enableVertexAttribArray(e)}(this.__painter,t,e,this.__painter.FLOAT,r*this.__fsize,i*this.__fsize,!1),this},t}(),_=function(){function t(t,e,r){void 0===r&&(r=0),this.__painter=t,this.__type={"2d":t.TEXTURE_2D,cube:t.TEXTURE_CUBE_MAP}[e],this.__texture=function(t,e,r){var i=t.createTexture();return e==t.TEXTURE_2D&&t.activeTexture(t["TEXTURE"+r]),t.bindTexture(e,i),i}(t,this.__type,r),t.texParameteri(this.__type,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(this.__type,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}return t.prototype.useImage=function(t){return function(t,e,r,i,n,o){t.texImage2D(e,r,i,i,n,o)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t),this},t.prototype.useCube=function(t,e,r){return function(t,e,r,i,n,o,a,_,u){for(var s,m=[t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y,t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z],c=0;c<m.length;c++)o[c]&&(s=m[c],t.texImage2D(s,r,i,a,_,0,i,n,null),t.bindTexture(e,u),t.texImage2D(s,r,i,i,n,o[c]));t.generateMipmap(e)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t,e,r,this.__texture),this},t}(),u={};function s(t,e,r){var i=t+"-"+r;return u[i]||(u[i]=new _(e,r)),u[i]}var m=function(t,e,r){var i=t.createShader(e);if(null==i)throw new Error("Unable to create shader!");if(t.shaderSource(i,r),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw new Error("Failed to compile shader:"+t.getShaderInfoLog(i));return i},c=function(){function t(t){this.__painter=t}return t.prototype.use=function(){return this.__painter.useProgram(this.program),this},t.prototype.compile=function(t,e){return this.program=function(t,e,r){var i=m(t,t.VERTEX_SHADER,e),n=m(t,t.FRAGMENT_SHADER,r),o=t.createProgram();if(t.attachShader(o,i),t.attachShader(o,n),t.linkProgram(o),!t.getProgramParameter(o,t.LINK_STATUS))throw new Error("Failed to link program: "+t.getProgramInfoLog(o));return o}(this.__painter,t,e),this},t}(),l={};function h(t,e,r,i,n){var o=function(t,e,r){var i=t+(r.geometry.attributes.normal?"1":"0")+(r.material.image?"1":"0")+(r.material.color?"1":"0")+(r.material.cube?"1":"0");if(l[i])return l[i].use();var n="\n attribute vec4 a_position;\n\n ".concat(r.geometry.attributes.normal?"attribute vec4 a_normal;varying vec3 v_normal;":"","\n\n uniform mat4 u_matrix_world;\n uniform mat4 u_matrix_mesh;\n uniform mat4 u_matrix_proporion;\n\n ").concat(r.material.image?"attribute vec2 a_textcoord;varying vec2 v_textcoord;":"","\n\n void main(){\n vec4 temp = a_position;\n\n // 应用变换矩阵:屏幕比调平矩阵、世界矩阵、物体矩阵\n temp = u_matrix_proporion * u_matrix_world * u_matrix_mesh * temp;\n\n // 把原生的WebGL使用的左手坐标系变成了右手坐标系\n temp.z = -1.0 * temp.z;\n\n // 表示眼睛距离vec4(0.0,0.0,1.0)的距离\n float dist = 4.0;\n\n // 使用投影直接计算\n // 为保证纹理和相对位置正确\n // x、y、z的改变满足线性变换\n gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));\n\n ").concat(r.geometry.attributes.normal?"v_normal = normalize(vec3(a_normal));":"","\n ").concat(r.material.image?"v_textcoord = a_textcoord;":"","\n }\n "),o="\n precision mediump float;\n\n ".concat(r.geometry.attributes.normal?"varying vec3 v_normal;":"","\n ").concat(r.material.color?"uniform vec4 u_color;":"","\n ").concat(r.material.cube?"uniform samplerCube u_texture;":"","\n ").concat(r.material.image?"uniform sampler2D u_sampler;varying vec2 v_textcoord;":"","\n\n void main(){\n ").concat(r.material.color?"gl_FragColor = u_color;":"","\n ").concat(r.material.cube?"gl_FragColor = textureCube(u_texture,normalize(v_normal));":"","\n ").concat(r.material.image?"gl_FragColor = texture2D(u_sampler,v_textcoord);":"","\n }\n "),a=new c(e).compile(n,o).use();return l[i]=a,a}(t,e,r);if(new a(e).use().write(r.geometry.attributes.position.array).divide(e.getAttribLocation(o.program,"a_position"),r.geometry.attributes.position.itemSize,3,0),e.uniformMatrix4fv(e.getUniformLocation(o.program,"u_matrix_world"),!1,n.matrix),e.uniformMatrix4fv(e.getUniformLocation(o.program,"u_matrix_proporion"),!1,n.proporion),e.uniformMatrix4fv(e.getUniformLocation(o.program,"u_matrix_mesh"),!1,i.matrix),r.geometry.attributes.normal&&new a(e).use().write(r.geometry.attributes.normal.array).divide(e.getAttribLocation(o.program,"a_normal"),r.geometry.attributes.normal.itemSize,3,0),"color"in r.material)e.uniform4f(e.getUniformLocation(o.program,"u_color"),r.material.color.r,r.material.color.g,r.material.color.b,r.material.color.alpha);else if("cube"in r.material){var _=r.material.cube.right.image.value.width;s(t,e,"cube").useCube([r.material.cube.right.image.value,r.material.cube.left.image.value,r.material.cube.top.image.value,r.material.cube.bottom.image.value,r.material.cube.far.image.value,r.material.cube.near.image.value],_,_)}else"image"in r.material&&(e.uniform1i(e.getUniformLocation(o.program,"u_sampler"),0),new a(e).use().write(r.geometry.attributes.uv.array).divide(e.getAttribLocation(o.program,"a_textcoord"),r.geometry.attributes.uv.itemSize,2,0),s(t,e,"2d").useImage(r.material.image.value));r.geometry.index?(new a(e,!0).use().write(r.geometry.index.array),e.drawElements(e[r.geometry.type],r.geometry.index.count,e.UNSIGNED_BYTE,0)):e.drawArrays(e[r.geometry.type],0,r.geometry.attributes.position.count)}var p=!1,g=function(){function t(t,e){this.name="WebGL",this.__getColor=function(t,e){return"rgba(0,0,0,1)"},this.__regionList={},this.__regionAssemble=function(t,e,r,i){for(var n=[],o=0;o<i;o++)n[o]=t;return function(){for(var o=0;o<i;o++){if(n[o]<e){n[o]=+(n[o]+r).toFixed(7);break}o<i-1&&(n[o]=t)}return n}}(0,1,.2,3),this.__regionName="",this.__regionColor=[0,0,0,1],this.__scene={children:[],matrix:new o([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,10])},this.__unique=(new Date).valueOf(),this.painter=r(t,10),this.__regionPainter=r(e,10,{});var i=this.painter.canvas.width/this.painter.canvas.height,n=1,a=1;i>1?n=1/i:a=i;var _=Math.min(n,a);this.__proporion=[n,0,0,0,0,a,0,0,0,0,_,0,0,0,0,1]}return t.prototype.matrix=function(t){return new o(t)},t.prototype.getMatrix=function(){return this.__scene.matrix},t.prototype.getObject3D=function(){return this.__scene.children},t.prototype.review=function(t){void 0===t&&(t=!1),t?(this.__regionPainter.clearColor(1,1,1,1),this.__regionPainter.clear(this.__regionPainter.COLOR_BUFFER_BIT)):(this.painter.clearColor(1,1,1,1),this.painter.clear(this.painter.COLOR_BUFFER_BIT));for(var e=0;e<this.__scene.children.length;e++)this.draw(this.__scene.children[e],t);return this},t.prototype.draw=function(t,e){void 0===e&&(e=!1),e||(p=!0);var r={matrix:t.matrix.value()},n={matrix:this.__scene.matrix.value(),proporion:this.__proporion};this.setRegion(t.region);for(var o=0;o<t.mesh.length;o++)e?(h("painter"+this.__unique,this.__regionPainter,{geometry:t.mesh[o].geometry,material:{color:{r:this.__regionColor[0],g:this.__regionColor[1],b:this.__regionColor[2],alpha:this.__regionColor[3]}}},r,n),this.__getColor=i(this.__regionPainter)):h("region"+this.__unique,this.painter,t.mesh[o],r,n)},t.prototype.render=function(t){"matrix"in t||(t.matrix=new o),"region"in t||(t.region="");for(var e=0;e<t.mesh.length;e++){var r=t.mesh[e];r.geometry.attributes.normal&&Array.isArray(r.geometry.attributes.normal.array)&&(r.geometry.attributes.normal.array=new Float32Array(r.geometry.attributes.normal.array)),r.geometry.attributes.position&&Array.isArray(r.geometry.attributes.position.array)&&(r.geometry.attributes.position.array=new Float32Array(r.geometry.attributes.position.array)),r.geometry.attributes.uv&&Array.isArray(r.geometry.attributes.uv.array)&&(r.geometry.attributes.uv.array=new Float32Array(r.geometry.attributes.uv.array)),r.geometry.index&&Array.isArray(r.geometry.index.array)&&(r.geometry.index.array=new Uint8Array(r.geometry.index.array))}this.__scene.children.push(t),this.draw(t)},t.prototype.setRegion=function(t){return this.__regionName=t+"",t?(null==this.__regionList[t]&&(this.__regionList[t]=e(e([],this.__regionAssemble(),!0),[1],!1)),this.__regionColor=this.__regionList[t]):this.__regionColor=[0,0,0,1],this},t.prototype.getRegion=function(t,e){var r=this;return p&&this.review(!0),p=!1,new Promise((function(i,n){var o=r.__getColor(t,e);for(var a in r.__regionList){var _=r.__regionList[a];if("rgba("+255*_[0]+","+255*_[1]+","+255*_[2]+","+255*_[3]+")"==o){i(a);break}}i("")}))},t}();return function(e){function r(t){if(!t)throw new Error("VISLite WebGL:The mount point requires an HTMLElement type but encountered null.");var r,i,n=t.clientWidth,o=t.clientHeight,a=t;a._vislite_canvas_?(r=a._vislite_canvas_[0],i=a._vislite_canvas_[1]):(i=document.createElement("canvas"),t.appendChild(i),i.style.position="absolute",i.style.zIndex="-1",r=document.createElement("canvas"),t.appendChild(r),a._vislite_canvas_=[r,i],t.setAttribute("vislite","WebGL"));for(var _=0,u=[r,i];_<u.length;_++){var s=u[_];s.style.width=n+"px",s.setAttribute("width",n+""),s.style.height=o+"px",s.setAttribute("height",o+"")}return e.call(this,r,i)||this}return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function i(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(i.prototype=r.prototype,new i)}(r,e),r}(g)},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).VISLite_WebGL=e();
|
|
11
|
+
var t,r;t=this,r=function(){"use strict";var t=function(r,e){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])},t(r,e)};function r(t,r,e){if(e||2===arguments.length)for(var i,o=0,a=r.length;o<a;o++)!i&&o in r||(i||(i=Array.prototype.slice.call(r,0,o)),i[o]=r[o]);return t.concat(i||Array.prototype.slice.call(r))}function e(t,r,e){void 0===e&&(e={});for(var i=["webgl","experimental-webgl","webkit-3d","moz-webgl"],o=null,a=0;a<i.length;a++){try{o=t.getContext(i[a],e)}catch(t){}if(o)break}if(!o)throw new Error("Non canvas or browser does not support webgl.");var n=o.canvas.width,_=o.canvas.height,s=n*r,u=_*r;return o.viewport(.5*(n-s),.5*(_-u),s,u),o.depthFunc(o.LEQUAL),o.enable(o.DEPTH_TEST),o}function i(t){var r=t.drawingBufferWidth,e=t.drawingBufferHeight,i=new Uint8Array(4*r*e);return t.readPixels(0,0,r,e,t.RGBA,t.UNSIGNED_BYTE,i),function(t,o){return"rgba("+i[4*((o=e-o)*r+t)]+","+i[4*(o*r+t)+1]+","+i[4*(o*r+t)+2]+","+i[4*(o*r+t)+3]+")"}}var o=function(t,r){for(var e=[],i=0;i<4;i++)for(var o=0;o<r.length/4;o++)e[4*o+i]=t[i]*r[4*o]+t[i+4]*r[4*o+1]+t[i+8]*r[4*o+2]+t[i+12]*r[4*o+3];return e},a=function(){function t(t){void 0===t&&(t=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.name="Matrix4",this.__matrix4=t}return t.prototype.move=function(t,r,e,i){return void 0===i&&(i=0),this.__matrix4=o(function(t,r,e,i){void 0===i&&(i=0);var o=Math.sqrt(r*r+e*e+i*i);return[1,0,0,0,0,1,0,0,0,0,1,0,r*t/o,e*t/o,i*t/o,1]}(t,r,e,i),this.__matrix4),this},t.prototype.rotate=function(t,r,e,i,a,n,_){var s=function(t,r,e,i,o,a){if("number"==typeof t&&"number"==typeof r){if("number"!=typeof e?(e=0,i=t,o=r,a=1):"number"==typeof i&&"number"==typeof o&&"number"==typeof a||(i=t,o=r,a=e,t=0,r=0,e=0),t==i&&r==o&&e==a)throw new Error("It's not a legitimate ray!");var n=Math.sqrt((i-t)*(i-t)+(o-r)*(o-r)),_=0!=n?(o-r)/n:1,s=0!=n?(i-t)/n:0,u=(i-t)*s+(o-r)*_,m=a-e,c=Math.sqrt(u*u+m*m),l=0!=c?m/c:1,h=0!=c?u/c:0;return[[_,l*s,s*h,0,-s,_*l,_*h,0,0,-h,l,0,r*s-t*_,e*h-t*s*l-r*_*l,-t*s*h-r*_*h-e*l,1],[_,-s,0,0,l*s,l*_,-h,0,s*h,_*h,l,0,t,r,e,1]]}throw new Error("a1 and b1 is required!")}(r,e,i,a,n,_);return this.__matrix4=o(o(o(s[1],function(t){var r=Math.sin(t),e=Math.cos(t);return[e,r,0,0,-r,e,0,0,0,0,1,0,0,0,0,1]}(t)),s[0]),this.__matrix4),this},t.prototype.scale=function(t,r,e,i,a,n){return void 0===i&&(i=0),void 0===a&&(a=0),void 0===n&&(n=0),this.__matrix4=o(function(t,r,e,i,o,a){return void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),[t,0,0,0,0,r,0,0,0,0,e,0,i-i*t,o-o*r,a-a*e,1]}(t,r,e,i,a,n),this.__matrix4),this},t.prototype.multiply=function(t,r){return void 0===r&&(r=!1),this.__matrix4=r?o(this.__matrix4,t):o(t,this.__matrix4),this},t.prototype.use=function(t,r,e,i){return void 0===e&&(e=0),void 0===i&&(i=1),o(this.__matrix4,[t,r,e,i])},t.prototype.value=function(){return this.__matrix4},t}(),n=function(){function t(t,r){void 0===r&&(r=!1),this.__painter=t,this.__isElement=r,this.__buffer=function(t){return t.createBuffer()}(t),this.__type=r?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER}return t.prototype.use=function(){return this.__painter.bindBuffer(this.__type,this.__buffer),this},t.prototype.write=function(t){return function(t,r,e,i){var o=e?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER;t.bufferData(o,r,i)}(this.__painter,t,this.__isElement,this.__painter.STATIC_DRAW),this.__fsize=t.BYTES_PER_ELEMENT,this},t.prototype.divide=function(t,r,e,i){return void 0===i&&(i=0),function(t,r,e,i,o,a,n){t.vertexAttribPointer(r,e,i,n,o,a),t.enableVertexAttribArray(r)}(this.__painter,t,r,this.__painter.FLOAT,e*this.__fsize,i*this.__fsize,!1),this},t}(),_=function(){function t(t,r,e){void 0===e&&(e=0),this.__painter=t,this.__type={"2d":t.TEXTURE_2D,cube:t.TEXTURE_CUBE_MAP}[r],this.__texture=function(t,r,e){var i=t.createTexture();return r==t.TEXTURE_2D&&t.activeTexture(t["TEXTURE"+e]),t.bindTexture(r,i),i}(t,this.__type,e),t.texParameteri(this.__type,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(this.__type,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}return t.prototype.useImage=function(t){return function(t,r,e,i,o,a){t.texImage2D(r,e,i,i,o,a)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t),this},t.prototype.useCube=function(t,r,e){return function(t,r,e,i,o,a,n,_,s){for(var u,m=[t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y,t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z],c=0;c<m.length;c++)a[c]&&(u=m[c],t.texImage2D(u,e,i,n,_,0,i,o,null),t.bindTexture(r,s),t.texImage2D(u,e,i,i,o,a[c]));t.generateMipmap(r)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t,r,e,this.__texture),this},t}(),s={};function u(t,r,e){var i=t+"-"+e;return s[i]||(s[i]=new _(r,e)),s[i]}var m=function(t,r,e){var i=t.createShader(r);if(null==i)throw new Error("Unable to create shader!");if(t.shaderSource(i,e),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw new Error("Failed to compile shader:"+t.getShaderInfoLog(i));return i},c=function(){function t(t){this.__painter=t}return t.prototype.use=function(){return this.__painter.useProgram(this.program),this},t.prototype.compile=function(t,r){return this.program=function(t,r,e){var i=m(t,t.VERTEX_SHADER,r),o=m(t,t.FRAGMENT_SHADER,e),a=t.createProgram();if(t.attachShader(a,i),t.attachShader(a,o),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Failed to link program: "+t.getProgramInfoLog(a));return a}(this.__painter,t,r),this},t}(),l={};function h(t,r,e,i,o){var a=function(t,r,e){var i=t+(e.geometry.attributes.normal?"1":"0")+(e.material.image?"1":"0")+(e.material.color?"1":"0")+(e.material.colors?"1":"0")+(e.material.cube?"1":"0");if(l[i])return l[i].use();var o="\n attribute vec4 a_position;\n\n ".concat(e.geometry.attributes.normal?"attribute vec4 a_normal;varying vec3 v_normal;":"","\n\n uniform mat4 u_matrix_world;\n uniform mat4 u_matrix_mesh;\n uniform mat4 u_matrix_proporion;\n\n ").concat(e.material.image?"attribute vec2 a_textcoord;varying vec2 v_textcoord;":"","\n\n ").concat(e.material.colors?"attribute vec4 a_color;varying vec4 v_color;":"","\n\n void main(){\n vec4 temp = a_position;\n\n // 应用变换矩阵:屏幕比调平矩阵、世界矩阵、物体矩阵\n temp = u_matrix_proporion * u_matrix_world * u_matrix_mesh * temp;\n\n // 把原生的WebGL使用的左手坐标系变成了右手坐标系\n temp.z = -1.0 * temp.z;\n\n // 表示眼睛距离vec4(0.0,0.0,1.0)的距离\n float dist = 4.0;\n\n // 使用投影直接计算\n // 为保证纹理和相对位置正确\n // x、y、z的改变满足线性变换\n gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));\n\n ").concat(e.geometry.attributes.normal?"v_normal = normalize(vec3(a_normal));":"","\n ").concat(e.material.image?"v_textcoord = a_textcoord;":"","\n ").concat(e.material.colors?"v_color=a_color;":"","\n }\n "),a="\n precision mediump float;\n\n ".concat(e.geometry.attributes.normal?"varying vec3 v_normal;":"","\n ").concat(e.material.color?"uniform vec4 u_color;":"","\n ").concat(e.material.cube?"uniform samplerCube u_texture;":"","\n ").concat(e.material.image?"uniform sampler2D u_sampler;varying vec2 v_textcoord;":"","\n ").concat(e.material.colors?"varying vec4 v_color;":"","\n\n void main(){\n ").concat(e.material.color?"gl_FragColor = u_color;":"","\n ").concat(e.material.cube?"gl_FragColor = textureCube(u_texture,normalize(v_normal));":"","\n ").concat(e.material.image?"gl_FragColor = texture2D(u_sampler,v_textcoord);":"","\n ").concat(e.material.colors?"gl_FragColor=v_color;":"","\n }\n "),n=new c(r).compile(o,a).use();return l[i]=n,n}(t,r,e);if(new n(r).use().write(e.geometry.attributes.position.array).divide(r.getAttribLocation(a.program,"a_position"),e.geometry.attributes.position.itemSize,e.geometry.attributes.position.itemSize,0),r.uniformMatrix4fv(r.getUniformLocation(a.program,"u_matrix_world"),!1,o.matrix),r.uniformMatrix4fv(r.getUniformLocation(a.program,"u_matrix_proporion"),!1,o.proporion),r.uniformMatrix4fv(r.getUniformLocation(a.program,"u_matrix_mesh"),!1,i.matrix),e.geometry.attributes.normal&&new n(r).use().write(e.geometry.attributes.normal.array).divide(r.getAttribLocation(a.program,"a_normal"),e.geometry.attributes.normal.itemSize,e.geometry.attributes.normal.itemSize,0),"color"in e.material&&r.uniform4f(r.getUniformLocation(a.program,"u_color"),e.material.color.r,e.material.color.g,e.material.color.b,e.material.color.alpha),"colors"in e.material)new n(r).use().write(e.material.colors.array).divide(r.getAttribLocation(a.program,"a_color"),e.material.colors.itemSize,e.material.colors.itemSize,0);else if("cube"in e.material){var _=e.material.cube.right.image.value.width;u(t,r,"cube").useCube([e.material.cube.right.image.value,e.material.cube.left.image.value,e.material.cube.top.image.value,e.material.cube.bottom.image.value,e.material.cube.far.image.value,e.material.cube.near.image.value],_,_)}else"image"in e.material&&(r.uniform1i(r.getUniformLocation(a.program,"u_sampler"),0),new n(r).use().write(e.geometry.attributes.uv.array).divide(r.getAttribLocation(a.program,"a_textcoord"),e.geometry.attributes.uv.itemSize,2,0),u(t,r,"2d").useImage(e.material.image.value));e.geometry.index?(new n(r,!0).use().write(e.geometry.index.array),r.drawElements(r[e.geometry.type],e.geometry.index.count,r.UNSIGNED_BYTE,0)):r.drawArrays(r[e.geometry.type],0,e.geometry.attributes.position.count)}var p=!1,g=function(){function t(t,r){this.name="WebGL",this.__getColor=function(t,r){return"rgba(0,0,0,1)"},this.__regionList={},this.__regionAssemble=function(t,r,e,i){for(var o=[],a=0;a<i;a++)o[a]=t;return function(){for(var a=0;a<i;a++){if(o[a]<r){o[a]=+(o[a]+e).toFixed(7);break}a<i-1&&(o[a]=t)}return o}}(0,1,.2,3),this.__regionName="",this.__regionColor=[0,0,0,1],this.__scene={children:[],matrix:new a([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,10])},this.__unique=(new Date).valueOf(),this.painter=e(t,10),this.__regionPainter=e(r,10,{});var i=this.painter.canvas.width/this.painter.canvas.height,o=1,n=1;i>1?o=1/i:n=i;var _=Math.min(o,n);this.__proporion=[o,0,0,0,0,n,0,0,0,0,_,0,0,0,0,1]}return t.prototype.matrix=function(t){return new a(t)},t.prototype.getMatrix=function(){return this.__scene.matrix},t.prototype.getObject3D=function(){return this.__scene.children},t.prototype.review=function(t){void 0===t&&(t=!1),t?(this.__regionPainter.clearColor(1,1,1,1),this.__regionPainter.clear(this.__regionPainter.COLOR_BUFFER_BIT)):(this.painter.clearColor(1,1,1,1),this.painter.clear(this.painter.COLOR_BUFFER_BIT));for(var r=0;r<this.__scene.children.length;r++)this.draw(this.__scene.children[r],t);return this},t.prototype.draw=function(t,r){void 0===r&&(r=!1),r||(p=!0);var e={matrix:t.matrix.value()},o={matrix:this.__scene.matrix.value(),proporion:this.__proporion};this.setRegion(t.region);for(var a=0;a<t.mesh.length;a++)r?(h("painter"+this.__unique,this.__regionPainter,{geometry:t.mesh[a].geometry,material:{color:{r:this.__regionColor[0],g:this.__regionColor[1],b:this.__regionColor[2],alpha:this.__regionColor[3]}}},e,o),this.__getColor=i(this.__regionPainter)):h("region"+this.__unique,this.painter,t.mesh[a],e,o)},t.prototype.render=function(t){"matrix"in t||(t.matrix=new a),"region"in t||(t.region="");for(var r=0;r<t.mesh.length;r++){var e=t.mesh[r];e.geometry.attributes.normal&&Array.isArray(e.geometry.attributes.normal.array)&&(e.geometry.attributes.normal.array=new Float32Array(e.geometry.attributes.normal.array)),e.geometry.attributes.position&&Array.isArray(e.geometry.attributes.position.array)&&(e.geometry.attributes.position.array=new Float32Array(e.geometry.attributes.position.array)),e.geometry.attributes.uv&&Array.isArray(e.geometry.attributes.uv.array)&&(e.geometry.attributes.uv.array=new Float32Array(e.geometry.attributes.uv.array)),e.geometry.index&&Array.isArray(e.geometry.index.array)&&(e.geometry.index.array=new Uint8Array(e.geometry.index.array)),e.material.colors&&Array.isArray(e.material.colors.array)&&(e.material.colors.array=new Float32Array(e.material.colors.array))}this.__scene.children.push(t),this.draw(t)},t.prototype.setRegion=function(t){return this.__regionName=t+"",t?(null==this.__regionList[t]&&(this.__regionList[t]=r(r([],this.__regionAssemble(),!0),[1],!1)),this.__regionColor=this.__regionList[t]):this.__regionColor=[0,0,0,1],this},t.prototype.getRegion=function(t,r){var e=this;return p&&this.review(!0),p=!1,new Promise((function(i,o){var a=e.__getColor(t,r);for(var n in e.__regionList){var _=e.__regionList[n];if("rgba("+255*_[0]+","+255*_[1]+","+255*_[2]+","+255*_[3]+")"==a){i(n);break}}i("")}))},t}();return function(r){function e(t){if(!t)throw new Error("VISLite WebGL:The mount point requires an HTMLElement type but encountered null.");var e,i,o=t.clientWidth,a=t.clientHeight,n=t;n._vislite_canvas_?(e=n._vislite_canvas_[0],i=n._vislite_canvas_[1]):(i=document.createElement("canvas"),t.appendChild(i),i.style.position="absolute",i.style.zIndex="-1",e=document.createElement("canvas"),t.appendChild(e),n._vislite_canvas_=[e,i],t.setAttribute("vislite","WebGL"));for(var _=0,s=[e,i];_<s.length;_++){var u=s[_];u.style.width=o+"px",u.setAttribute("width",o+""),u.style.height=a+"px",u.setAttribute("height",a+"")}return r.call(this,e,i)||this}return function(r,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}(e,r),e}(g)},"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t="undefined"!=typeof globalThis?globalThis:t||self).VISLite_WebGL=r();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
(function (global, factory) {
|
|
12
12
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
var e,t;e=this,t=function(){"use strict";var e,t=[];return function(i,n,r){void 0===n&&(n=400),void 0===r&&(r=function(){});var o={timer:function(e,i,n){if(!e)throw new Error("Tick is required!");var r=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return t.push({id:r,createTime:new Date,tick:e,duration:i,callback:n}),o.start(),r},start:function(){e||(e=setInterval(o.tick,13))},tick:function(){var e,i,n,r,a,u,f,c=t;for((t=[]).length=0,i=0;i<c.length;i++)e=(a=c[i]).createTime,n=a.tick,u=a.duration,r=a.callback,n(f=(f=(+(new Date).valueOf()-e.valueOf())/u)>1?1:f),f<1&&a.id?t.push(a):r(f);t.length<=0&&o.stop()},stop:function(){e&&(clearInterval(e),e=null)}},a=o.timer((function(e){i(e)}),n,r);return function(){var e;for(e in t)if(t[e].id==a)return void(t[e].id=void 0)}}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VISLite_animation=t();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
(function (global, factory) {
|
|
12
12
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v0.
|
|
2
|
+
* VISLite JavaScript Library v0.3.0-alpha.1
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*
|
|
5
5
|
* Copyright zxl20070701
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
* https://zxl20070701.github.io/notebook/home.html
|
|
8
8
|
*
|
|
9
|
-
* Publish Date:
|
|
9
|
+
* Publish Date: Wed Jun 28 2023 22:51:53 GMT+0800 (中国标准时间)
|
|
10
10
|
*/
|
|
11
11
|
var e,t;e=this,t=function(){"use strict";return function(e,t){void 0===t&&(t=1);var r=["rgba(84,112,198,"+t+")","rgba(145,204,117,"+t+")","rgba(250,200,88,"+t+")","rgba(238,102,102,"+t+")","rgba(115,192,222,"+t+")","rgba(59,162,114,"+t+")","rgba(252,132,82,"+t+")","rgba(154,96,180,"+t+")","rgba(234,124,204,"+t+")"],n=[];if(e<=r.length)return r;if(e%r.length==0)for(var o=0;o<e/r.length;o++)n=n.concat(r);else{for(var a=1;a<e/r.length;a++)n=n.concat(r);if(e%r.length==1)n=n.concat(r[4]);else for(var f=0;f<e%r.length;f++)n=n.concat(r[f])}return n}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VISLite_getLoopColors=t();
|