leafer-game 1.12.3 → 2.0.0
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/dist/web.js +110 -85
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/dist/web.module.js +114 -89
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +12 -12
package/dist/web.module.js
CHANGED
|
@@ -216,57 +216,6 @@ class LeafData {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
-
const {floor: floor$3, max: max$5} = Math;
|
|
220
|
-
|
|
221
|
-
const Platform = {
|
|
222
|
-
toURL(text, fileType) {
|
|
223
|
-
let url = encodeURIComponent(text);
|
|
224
|
-
if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
|
|
225
|
-
return url;
|
|
226
|
-
},
|
|
227
|
-
image: {
|
|
228
|
-
hitCanvasSize: 100,
|
|
229
|
-
maxCacheSize: 2560 * 1600,
|
|
230
|
-
maxPatternSize: 4096 * 2160,
|
|
231
|
-
crossOrigin: "anonymous",
|
|
232
|
-
isLarge(size, scaleX, scaleY, largeSize) {
|
|
233
|
-
return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
|
|
234
|
-
},
|
|
235
|
-
isSuperLarge(size, scaleX, scaleY) {
|
|
236
|
-
return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
|
|
237
|
-
},
|
|
238
|
-
getRealURL(url) {
|
|
239
|
-
const {prefix: prefix, suffix: suffix} = Platform.image;
|
|
240
|
-
if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
|
|
241
|
-
if (prefix && url[0] === "/") url = prefix + url;
|
|
242
|
-
return url;
|
|
243
|
-
},
|
|
244
|
-
resize(image, width, height, xGap, yGap, clip, smooth, opacity, _filters) {
|
|
245
|
-
const canvas = Platform.origin.createCanvas(max$5(floor$3(width + (xGap || 0)), 1), max$5(floor$3(height + (yGap || 0)), 1));
|
|
246
|
-
const ctx = canvas.getContext("2d");
|
|
247
|
-
if (opacity) ctx.globalAlpha = opacity;
|
|
248
|
-
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
249
|
-
if (clip) {
|
|
250
|
-
const scaleX = width / clip.width, scaleY = height / clip.height;
|
|
251
|
-
ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
|
|
252
|
-
ctx.drawImage(image, 0, 0, image.width, image.height);
|
|
253
|
-
} else ctx.drawImage(image, 0, 0, width, height);
|
|
254
|
-
return canvas;
|
|
255
|
-
},
|
|
256
|
-
setPatternTransform(pattern, transform, paint) {
|
|
257
|
-
try {
|
|
258
|
-
if (transform && pattern.setTransform) {
|
|
259
|
-
pattern.setTransform(transform);
|
|
260
|
-
transform = undefined;
|
|
261
|
-
}
|
|
262
|
-
} catch (_a) {}
|
|
263
|
-
if (paint) DataHelper.stintSet(paint, "transform", transform);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
const {image: image$1} = Platform;
|
|
269
|
-
|
|
270
219
|
const IncrementId = {
|
|
271
220
|
RUNTIME: "runtime",
|
|
272
221
|
LEAF: "leaf",
|
|
@@ -289,7 +238,7 @@ const I$2 = IncrementId;
|
|
|
289
238
|
|
|
290
239
|
let tempA, tempB, tempTo;
|
|
291
240
|
|
|
292
|
-
const {max: max$
|
|
241
|
+
const {max: max$5} = Math, tempFour = [ 0, 0, 0, 0 ];
|
|
293
242
|
|
|
294
243
|
const FourNumberHelper = {
|
|
295
244
|
zero: [ ...tempFour ],
|
|
@@ -341,9 +290,9 @@ const FourNumberHelper = {
|
|
|
341
290
|
return data;
|
|
342
291
|
},
|
|
343
292
|
max(t, other, change) {
|
|
344
|
-
if (isNumber(t) && isNumber(other)) return max$
|
|
293
|
+
if (isNumber(t) && isNumber(other)) return max$5(t, other);
|
|
345
294
|
toTempAB(t, other, change);
|
|
346
|
-
return set$2(tempTo, max$
|
|
295
|
+
return set$2(tempTo, max$5(tempA[0], tempB[0]), max$5(tempA[1], tempB[1]), max$5(tempA[2], tempB[2]), max$5(tempA[3], tempB[3]));
|
|
347
296
|
},
|
|
348
297
|
add(t, other, change) {
|
|
349
298
|
if (isNumber(t) && isNumber(other)) return t + other;
|
|
@@ -360,7 +309,7 @@ const FourNumberHelper = {
|
|
|
360
309
|
|
|
361
310
|
const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
|
|
362
311
|
|
|
363
|
-
const {round: round$6, pow: pow$2, max: max$
|
|
312
|
+
const {round: round$6, pow: pow$2, max: max$4, floor: floor$3, PI: PI$4} = Math;
|
|
364
313
|
|
|
365
314
|
const MathHelper = {
|
|
366
315
|
within(value, min, max) {
|
|
@@ -414,7 +363,7 @@ const MathHelper = {
|
|
|
414
363
|
}
|
|
415
364
|
},
|
|
416
365
|
getFloorScale(num, min = 1) {
|
|
417
|
-
return max$
|
|
366
|
+
return max$4(floor$3(num), min) / num;
|
|
418
367
|
},
|
|
419
368
|
randInt: randInt,
|
|
420
369
|
randColor(opacity) {
|
|
@@ -1259,7 +1208,7 @@ const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
|
|
|
1259
1208
|
|
|
1260
1209
|
const {float: float$3, fourNumber: fourNumber$1} = MathHelper;
|
|
1261
1210
|
|
|
1262
|
-
const {floor: floor$
|
|
1211
|
+
const {floor: floor$2, ceil: ceil$2} = Math;
|
|
1263
1212
|
|
|
1264
1213
|
let right$1, bottom$1, boundsRight, boundsBottom;
|
|
1265
1214
|
|
|
@@ -1416,8 +1365,8 @@ const BoundsHelper = {
|
|
|
1416
1365
|
},
|
|
1417
1366
|
ceil(t) {
|
|
1418
1367
|
const {x: x, y: y} = t;
|
|
1419
|
-
t.x = floor$
|
|
1420
|
-
t.y = floor$
|
|
1368
|
+
t.x = floor$2(t.x);
|
|
1369
|
+
t.y = floor$2(t.y);
|
|
1421
1370
|
t.width = x > t.x ? ceil$2(t.width + x - t.x) : ceil$2(t.width);
|
|
1422
1371
|
t.height = y > t.y ? ceil$2(t.height + y - t.y) : ceil$2(t.height);
|
|
1423
1372
|
},
|
|
@@ -1549,6 +1498,9 @@ const BoundsHelper = {
|
|
|
1549
1498
|
isEmpty(t) {
|
|
1550
1499
|
return t.x === 0 && t.y === 0 && t.width === 0 && t.height === 0;
|
|
1551
1500
|
},
|
|
1501
|
+
hasSize(t) {
|
|
1502
|
+
return t.width && t.height;
|
|
1503
|
+
},
|
|
1552
1504
|
reset(t) {
|
|
1553
1505
|
B.set(t);
|
|
1554
1506
|
}
|
|
@@ -1725,6 +1677,12 @@ class AutoBounds {
|
|
|
1725
1677
|
}
|
|
1726
1678
|
}
|
|
1727
1679
|
|
|
1680
|
+
const UnitConvertHelper = {
|
|
1681
|
+
number(value, percentRefer) {
|
|
1682
|
+
return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
|
|
1683
|
+
}
|
|
1684
|
+
};
|
|
1685
|
+
|
|
1728
1686
|
const StringNumberMap = {
|
|
1729
1687
|
0: 1,
|
|
1730
1688
|
1: 1,
|
|
@@ -1741,6 +1699,69 @@ const StringNumberMap = {
|
|
|
1741
1699
|
E: 1
|
|
1742
1700
|
};
|
|
1743
1701
|
|
|
1702
|
+
const {floor: floor$1, max: max$3} = Math;
|
|
1703
|
+
|
|
1704
|
+
const Platform = {
|
|
1705
|
+
toURL(text, fileType) {
|
|
1706
|
+
let url = encodeURIComponent(text);
|
|
1707
|
+
if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
|
|
1708
|
+
return url;
|
|
1709
|
+
},
|
|
1710
|
+
image: {
|
|
1711
|
+
hitCanvasSize: 100,
|
|
1712
|
+
maxCacheSize: 2560 * 1600,
|
|
1713
|
+
maxPatternSize: 4096 * 2160,
|
|
1714
|
+
crossOrigin: "anonymous",
|
|
1715
|
+
isLarge(size, scaleX, scaleY, largeSize) {
|
|
1716
|
+
return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
|
|
1717
|
+
},
|
|
1718
|
+
isSuperLarge(size, scaleX, scaleY) {
|
|
1719
|
+
return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
|
|
1720
|
+
},
|
|
1721
|
+
getRealURL(url) {
|
|
1722
|
+
const {prefix: prefix, suffix: suffix} = image$1;
|
|
1723
|
+
if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
|
|
1724
|
+
if (prefix && url[0] === "/") url = prefix + url;
|
|
1725
|
+
return url;
|
|
1726
|
+
},
|
|
1727
|
+
resize(view, width, height, xGap, yGap, clip, smooth, opacity, _filters, interlace) {
|
|
1728
|
+
const realWidth = max$3(floor$1(width + (xGap || 0)), 1), realHeight = max$3(floor$1(height + (yGap || 0)), 1);
|
|
1729
|
+
let interlaceX, interlaceY, interlaceOffset;
|
|
1730
|
+
if (interlace && (interlaceOffset = UnitConvertHelper.number(interlace.offset, (interlaceX = interlace.type === "x") ? width : height))) interlaceX || (interlaceY = true);
|
|
1731
|
+
const canvas = Platform.origin.createCanvas(interlaceY ? realWidth * 2 : realWidth, interlaceX ? realHeight * 2 : realHeight);
|
|
1732
|
+
const ctx = canvas.getContext("2d");
|
|
1733
|
+
if (opacity) ctx.globalAlpha = opacity;
|
|
1734
|
+
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
1735
|
+
if (image$1.canUse(view)) {
|
|
1736
|
+
if (clip) {
|
|
1737
|
+
const scaleX = width / clip.width, scaleY = height / clip.height;
|
|
1738
|
+
ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
|
|
1739
|
+
ctx.drawImage(view, 0, 0, view.width, view.height);
|
|
1740
|
+
} else ctx.drawImage(view, 0, 0, width, height);
|
|
1741
|
+
if (interlaceOffset) {
|
|
1742
|
+
ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset - realWidth : realWidth, interlaceX ? realHeight : interlaceOffset - realHeight, realWidth, realHeight);
|
|
1743
|
+
ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset : realWidth, interlaceX ? realHeight : interlaceOffset, realWidth, realHeight);
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
return canvas;
|
|
1747
|
+
},
|
|
1748
|
+
canUse(view) {
|
|
1749
|
+
return view && view.width && !view.__closed;
|
|
1750
|
+
},
|
|
1751
|
+
setPatternTransform(pattern, transform, paint) {
|
|
1752
|
+
try {
|
|
1753
|
+
if (transform && pattern.setTransform) {
|
|
1754
|
+
pattern.setTransform(transform);
|
|
1755
|
+
transform = undefined;
|
|
1756
|
+
}
|
|
1757
|
+
} catch (_a) {}
|
|
1758
|
+
if (paint) DataHelper.stintSet(paint, "transform", transform);
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
};
|
|
1762
|
+
|
|
1763
|
+
const {image: image$1} = Platform;
|
|
1764
|
+
|
|
1744
1765
|
const {randColor: randColor} = MathHelper;
|
|
1745
1766
|
|
|
1746
1767
|
class Debug {
|
|
@@ -3783,9 +3804,10 @@ class TaskItem {
|
|
|
3783
3804
|
run() {
|
|
3784
3805
|
return __awaiter(this, void 0, void 0, function*() {
|
|
3785
3806
|
try {
|
|
3786
|
-
if (this.isComplete) return;
|
|
3807
|
+
if (this.isComplete || this.runing) return;
|
|
3808
|
+
this.runing = true;
|
|
3787
3809
|
if (this.canUse && !this.canUse()) return this.cancel();
|
|
3788
|
-
if (this.task
|
|
3810
|
+
if (this.task) yield this.task();
|
|
3789
3811
|
} catch (error) {
|
|
3790
3812
|
debug$a.error(error);
|
|
3791
3813
|
}
|
|
@@ -3901,7 +3923,7 @@ class TaskProcessor {
|
|
|
3901
3923
|
stop() {
|
|
3902
3924
|
this.isComplete = true;
|
|
3903
3925
|
this.list.forEach(task => {
|
|
3904
|
-
if (!task.isComplete) task.
|
|
3926
|
+
if (!task.isComplete) task.run();
|
|
3905
3927
|
});
|
|
3906
3928
|
this.pause();
|
|
3907
3929
|
this.empty();
|
|
@@ -4191,7 +4213,7 @@ class LeaferImage {
|
|
|
4191
4213
|
getFull(_filters) {
|
|
4192
4214
|
return this.view;
|
|
4193
4215
|
}
|
|
4194
|
-
getCanvas(width, height, opacity, filters, xGap, yGap, smooth) {
|
|
4216
|
+
getCanvas(width, height, opacity, filters, xGap, yGap, smooth, interlace) {
|
|
4195
4217
|
width || (width = this.width);
|
|
4196
4218
|
height || (height = this.height);
|
|
4197
4219
|
if (this.cache) {
|
|
@@ -4204,7 +4226,7 @@ class LeaferImage {
|
|
|
4204
4226
|
}
|
|
4205
4227
|
if (data) return data;
|
|
4206
4228
|
}
|
|
4207
|
-
const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters);
|
|
4229
|
+
const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters, interlace);
|
|
4208
4230
|
this.cache = this.use > 1 ? {
|
|
4209
4231
|
data: canvas,
|
|
4210
4232
|
params: arguments
|
|
@@ -4220,13 +4242,13 @@ class LeaferImage {
|
|
|
4220
4242
|
return this.url;
|
|
4221
4243
|
}
|
|
4222
4244
|
setThumbView(_view) {}
|
|
4223
|
-
getThumbSize() {
|
|
4245
|
+
getThumbSize(_lod) {
|
|
4224
4246
|
return undefined;
|
|
4225
4247
|
}
|
|
4226
4248
|
getMinLevel() {
|
|
4227
4249
|
return undefined;
|
|
4228
4250
|
}
|
|
4229
|
-
getLevelData(_level) {
|
|
4251
|
+
getLevelData(_level, _width, _height) {
|
|
4230
4252
|
return undefined;
|
|
4231
4253
|
}
|
|
4232
4254
|
clearLevels(_checkUse) {}
|
|
@@ -6096,7 +6118,7 @@ const LeafRender = {
|
|
|
6096
6118
|
}
|
|
6097
6119
|
};
|
|
6098
6120
|
|
|
6099
|
-
const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper;
|
|
6121
|
+
const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper, {hasSize: hasSize} = BoundsHelper;
|
|
6100
6122
|
|
|
6101
6123
|
const BranchRender = {
|
|
6102
6124
|
__updateChange() {
|
|
@@ -6108,8 +6130,8 @@ const BranchRender = {
|
|
|
6108
6130
|
this.__.__checkSingle();
|
|
6109
6131
|
},
|
|
6110
6132
|
__render(canvas, options) {
|
|
6111
|
-
this.__nowWorld = this.__getNowWorld(options);
|
|
6112
|
-
if (this.__worldOpacity) {
|
|
6133
|
+
const nowWorld = this.__nowWorld = this.__getNowWorld(options);
|
|
6134
|
+
if (this.__worldOpacity && hasSize(nowWorld)) {
|
|
6113
6135
|
const data = this.__;
|
|
6114
6136
|
if (data.__useDim) {
|
|
6115
6137
|
if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.bright && !options.topRendering) return options.topList.add(this); else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
|
|
@@ -6118,7 +6140,6 @@ const BranchRender = {
|
|
|
6118
6140
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6119
6141
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
6120
6142
|
this.__renderBranch(tempCanvas, options);
|
|
6121
|
-
const nowWorld = this.__nowWorld;
|
|
6122
6143
|
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6123
6144
|
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
6124
6145
|
tempCanvas.recycle(nowWorld);
|
|
@@ -6958,7 +6979,7 @@ class LeafLevelList {
|
|
|
6958
6979
|
}
|
|
6959
6980
|
}
|
|
6960
6981
|
|
|
6961
|
-
const version = "
|
|
6982
|
+
const version = "2.0.0";
|
|
6962
6983
|
|
|
6963
6984
|
const debug$5 = Debug.get("LeaferCanvas");
|
|
6964
6985
|
|
|
@@ -7582,6 +7603,7 @@ class Renderer {
|
|
|
7582
7603
|
this.times = 0;
|
|
7583
7604
|
this.config = {
|
|
7584
7605
|
usePartRender: true,
|
|
7606
|
+
ceilPartPixel: true,
|
|
7585
7607
|
maxFPS: 120
|
|
7586
7608
|
};
|
|
7587
7609
|
this.frames = [];
|
|
@@ -7690,8 +7712,9 @@ class Renderer {
|
|
|
7690
7712
|
const {canvas: canvas} = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
7691
7713
|
canvas.save();
|
|
7692
7714
|
bounds.spread(Renderer.clipSpread).ceil();
|
|
7693
|
-
|
|
7694
|
-
canvas.clipWorld(bounds);
|
|
7715
|
+
const {ceilPartPixel: ceilPartPixel} = this.config;
|
|
7716
|
+
canvas.clipWorld(bounds, ceilPartPixel);
|
|
7717
|
+
canvas.clearWorld(bounds, ceilPartPixel);
|
|
7695
7718
|
this.__render(bounds, realBounds);
|
|
7696
7719
|
canvas.restore();
|
|
7697
7720
|
Run.end(t);
|
|
@@ -8090,11 +8113,7 @@ const ColorConvert = {
|
|
|
8090
8113
|
hasTransparent: hasTransparent$3
|
|
8091
8114
|
};
|
|
8092
8115
|
|
|
8093
|
-
const UnitConvert =
|
|
8094
|
-
number(value, percentRefer) {
|
|
8095
|
-
return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
|
|
8096
|
-
}
|
|
8097
|
-
};
|
|
8116
|
+
const UnitConvert = UnitConvertHelper;
|
|
8098
8117
|
|
|
8099
8118
|
const PathArrow = {};
|
|
8100
8119
|
|
|
@@ -9464,9 +9483,10 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9464
9483
|
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
|
|
9465
9484
|
const rx = width / 2, ry = height / 2;
|
|
9466
9485
|
const path = this.__.path = [];
|
|
9486
|
+
let open;
|
|
9467
9487
|
if (innerRadius) {
|
|
9468
9488
|
if (startAngle || endAngle) {
|
|
9469
|
-
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
|
|
9489
|
+
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
|
|
9470
9490
|
ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
|
|
9471
9491
|
} else {
|
|
9472
9492
|
if (innerRadius < 1) {
|
|
@@ -9483,7 +9503,7 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9483
9503
|
ellipse(path, rx, ry, rx, ry);
|
|
9484
9504
|
}
|
|
9485
9505
|
}
|
|
9486
|
-
closePath$2(path);
|
|
9506
|
+
if (!open) closePath$2(path);
|
|
9487
9507
|
if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
|
|
9488
9508
|
}
|
|
9489
9509
|
};
|
|
@@ -11348,6 +11368,7 @@ ui$5.__updateHitCanvas = function() {
|
|
|
11348
11368
|
ImageManager.patternLocked = true;
|
|
11349
11369
|
this.__renderShape(h, {
|
|
11350
11370
|
matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y),
|
|
11371
|
+
snapshot: true,
|
|
11351
11372
|
ignoreFill: !isHitPixelFill,
|
|
11352
11373
|
ignoreStroke: !isHitPixelStroke
|
|
11353
11374
|
});
|
|
@@ -12179,7 +12200,7 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
|
12179
12200
|
ignoreRender(ui, false);
|
|
12180
12201
|
onLoadError(ui, event, error);
|
|
12181
12202
|
leafPaint.loadId = undefined;
|
|
12182
|
-
}, paint.lod && image.getThumbSize());
|
|
12203
|
+
}, paint.lod && image.getThumbSize(paint.lod));
|
|
12183
12204
|
if (ui.placeholderColor) {
|
|
12184
12205
|
if (!ui.placeholderDelay) image.isPlacehold = true; else setTimeout(() => {
|
|
12185
12206
|
if (!image.ready) {
|
|
@@ -12249,7 +12270,7 @@ function getPatternData(paint, box, image) {
|
|
|
12249
12270
|
if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
|
|
12250
12271
|
if (paint.mode === "strench") paint.mode = "stretch";
|
|
12251
12272
|
const {width: width, height: height} = image;
|
|
12252
|
-
const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters} = paint;
|
|
12273
|
+
const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters, interlace: interlace} = paint;
|
|
12253
12274
|
const sameBox = box.width === width && box.height === height;
|
|
12254
12275
|
const data = {
|
|
12255
12276
|
mode: mode
|
|
@@ -12315,6 +12336,10 @@ function getPatternData(paint, box, image) {
|
|
|
12315
12336
|
if (opacity && opacity < 1) data.opacity = opacity;
|
|
12316
12337
|
if (filters) data.filters = filters;
|
|
12317
12338
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
12339
|
+
if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
|
|
12340
|
+
type: "x",
|
|
12341
|
+
offset: interlace
|
|
12342
|
+
} : interlace;
|
|
12318
12343
|
return data;
|
|
12319
12344
|
}
|
|
12320
12345
|
|
|
@@ -12448,7 +12473,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
|
|
|
12448
12473
|
if (transform) copy$1(imageMatrix, transform);
|
|
12449
12474
|
scale(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
12450
12475
|
}
|
|
12451
|
-
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
|
|
12476
|
+
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
|
|
12452
12477
|
const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
12453
12478
|
paint.style = pattern;
|
|
12454
12479
|
paint.patternId = id;
|
|
@@ -12470,8 +12495,8 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
|
|
|
12470
12495
|
|
|
12471
12496
|
function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
12472
12497
|
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
|
|
12473
|
-
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
|
|
12474
|
-
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
|
|
12498
|
+
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
|
|
12499
|
+
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting || snapshot) {
|
|
12475
12500
|
return false;
|
|
12476
12501
|
} else {
|
|
12477
12502
|
if (drawImage) {
|
|
@@ -13145,7 +13170,7 @@ const TextMode = 2;
|
|
|
13145
13170
|
|
|
13146
13171
|
function layoutChar(drawData, style, width, _height) {
|
|
13147
13172
|
const {rows: rows} = drawData;
|
|
13148
|
-
const {textAlign: textAlign, paraIndent: paraIndent,
|
|
13173
|
+
const {textAlign: textAlign, paraIndent: paraIndent, __letterSpacing: __letterSpacing} = style;
|
|
13149
13174
|
const justifyLast = width && textAlign.includes("both");
|
|
13150
13175
|
const justify = justifyLast || width && textAlign.includes("justify");
|
|
13151
13176
|
const justifyLetter = justify && textAlign.includes("letter");
|
|
@@ -13158,8 +13183,8 @@ function layoutChar(drawData, style, width, _height) {
|
|
|
13158
13183
|
remainingWidth = width - row.width - indentWidth;
|
|
13159
13184
|
if (justifyLetter) addLetterWidth = remainingWidth / (row.words.reduce((total, item) => total + item.data.length, 0) - 1); else addWordWidth = wordsLength > 1 ? remainingWidth / (wordsLength - 1) : 0;
|
|
13160
13185
|
}
|
|
13161
|
-
mode =
|
|
13162
|
-
if (row.isOverflow && !
|
|
13186
|
+
mode = __letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
|
|
13187
|
+
if (row.isOverflow && !__letterSpacing) row.textMode = true;
|
|
13163
13188
|
if (mode === TextMode) {
|
|
13164
13189
|
row.x += indentWidth;
|
|
13165
13190
|
toTextChar$1(row);
|
|
@@ -15565,4 +15590,4 @@ Creator.finder = function(target) {
|
|
|
15565
15590
|
return new Finder(target);
|
|
15566
15591
|
};
|
|
15567
15592
|
|
|
15568
|
-
export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
15593
|
+
export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|