@leafer-draw/worker 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/worker.cjs +16 -10
- package/dist/worker.esm.js +17 -11
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.esm.min.js.map +1 -1
- package/dist/worker.js +109 -85
- package/dist/worker.min.cjs +1 -1
- package/dist/worker.min.cjs.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +113 -89
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +9 -9
package/dist/worker.module.js
CHANGED
|
@@ -216,57 +216,6 @@ class LeafData {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
-
const {floor: floor$2, max: max$4} = 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$4(floor$2(width + (xGap || 0)), 1), max$4(floor$2(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$1 = IncrementId;
|
|
|
289
238
|
|
|
290
239
|
let tempA, tempB, tempTo;
|
|
291
240
|
|
|
292
|
-
const {max: max$
|
|
241
|
+
const {max: max$4} = 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$4(t, other);
|
|
345
294
|
toTempAB(t, other, change);
|
|
346
|
-
return set$2(tempTo, max$
|
|
295
|
+
return set$2(tempTo, max$4(tempA[0], tempB[0]), max$4(tempA[1], tempB[1]), max$4(tempA[2], tempB[2]), max$4(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$3, pow: pow$1, max: max$
|
|
312
|
+
const {round: round$3, pow: pow$1, max: max$3, floor: floor$2, PI: PI$3} = 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$3(floor$2(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, fourNumber: fourNumber} = MathHelper;
|
|
1261
1210
|
|
|
1262
|
-
const {floor: floor, ceil: ceil$1} = Math;
|
|
1211
|
+
const {floor: floor$1, ceil: ceil$1} = 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(t.x);
|
|
1420
|
-
t.y = floor(t.y);
|
|
1368
|
+
t.x = floor$1(t.x);
|
|
1369
|
+
t.y = floor$1(t.y);
|
|
1421
1370
|
t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
|
|
1422
1371
|
t.height = y > t.y ? ceil$1(t.height + y - t.y) : ceil$1(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, max: max$2} = 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$2(floor(width + (xGap || 0)), 1), realHeight = max$2(floor(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$8.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
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6964
6985
|
get allowBackgroundColor() {
|
|
@@ -7385,6 +7406,7 @@ class Renderer {
|
|
|
7385
7406
|
this.times = 0;
|
|
7386
7407
|
this.config = {
|
|
7387
7408
|
usePartRender: true,
|
|
7409
|
+
ceilPartPixel: true,
|
|
7388
7410
|
maxFPS: 120
|
|
7389
7411
|
};
|
|
7390
7412
|
this.frames = [];
|
|
@@ -7493,8 +7515,9 @@ class Renderer {
|
|
|
7493
7515
|
const {canvas: canvas} = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
7494
7516
|
canvas.save();
|
|
7495
7517
|
bounds.spread(Renderer.clipSpread).ceil();
|
|
7496
|
-
|
|
7497
|
-
canvas.clipWorld(bounds);
|
|
7518
|
+
const {ceilPartPixel: ceilPartPixel} = this.config;
|
|
7519
|
+
canvas.clipWorld(bounds, ceilPartPixel);
|
|
7520
|
+
canvas.clearWorld(bounds, ceilPartPixel);
|
|
7498
7521
|
this.__render(bounds, realBounds);
|
|
7499
7522
|
canvas.restore();
|
|
7500
7523
|
Run.end(t);
|
|
@@ -7693,11 +7716,7 @@ const ColorConvert = {
|
|
|
7693
7716
|
hasTransparent: hasTransparent$3
|
|
7694
7717
|
};
|
|
7695
7718
|
|
|
7696
|
-
const UnitConvert =
|
|
7697
|
-
number(value, percentRefer) {
|
|
7698
|
-
return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
|
|
7699
|
-
}
|
|
7700
|
-
};
|
|
7719
|
+
const UnitConvert = UnitConvertHelper;
|
|
7701
7720
|
|
|
7702
7721
|
const PathArrow = {};
|
|
7703
7722
|
|
|
@@ -9067,9 +9086,10 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9067
9086
|
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
|
|
9068
9087
|
const rx = width / 2, ry = height / 2;
|
|
9069
9088
|
const path = this.__.path = [];
|
|
9089
|
+
let open;
|
|
9070
9090
|
if (innerRadius) {
|
|
9071
9091
|
if (startAngle || endAngle) {
|
|
9072
|
-
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
|
|
9092
|
+
if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
|
|
9073
9093
|
ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
|
|
9074
9094
|
} else {
|
|
9075
9095
|
if (innerRadius < 1) {
|
|
@@ -9086,7 +9106,7 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9086
9106
|
ellipse(path, rx, ry, rx, ry);
|
|
9087
9107
|
}
|
|
9088
9108
|
}
|
|
9089
|
-
closePath$2(path);
|
|
9109
|
+
if (!open) closePath$2(path);
|
|
9090
9110
|
if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
|
|
9091
9111
|
}
|
|
9092
9112
|
};
|
|
@@ -9948,7 +9968,7 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
|
9948
9968
|
ignoreRender(ui, false);
|
|
9949
9969
|
onLoadError(ui, event, error);
|
|
9950
9970
|
leafPaint.loadId = undefined;
|
|
9951
|
-
}, paint.lod && image.getThumbSize());
|
|
9971
|
+
}, paint.lod && image.getThumbSize(paint.lod));
|
|
9952
9972
|
if (ui.placeholderColor) {
|
|
9953
9973
|
if (!ui.placeholderDelay) image.isPlacehold = true; else setTimeout(() => {
|
|
9954
9974
|
if (!image.ready) {
|
|
@@ -10018,7 +10038,7 @@ function getPatternData(paint, box, image) {
|
|
|
10018
10038
|
if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
|
|
10019
10039
|
if (paint.mode === "strench") paint.mode = "stretch";
|
|
10020
10040
|
const {width: width, height: height} = image;
|
|
10021
|
-
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;
|
|
10041
|
+
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;
|
|
10022
10042
|
const sameBox = box.width === width && box.height === height;
|
|
10023
10043
|
const data = {
|
|
10024
10044
|
mode: mode
|
|
@@ -10084,6 +10104,10 @@ function getPatternData(paint, box, image) {
|
|
|
10084
10104
|
if (opacity && opacity < 1) data.opacity = opacity;
|
|
10085
10105
|
if (filters) data.filters = filters;
|
|
10086
10106
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
10107
|
+
if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
|
|
10108
|
+
type: "x",
|
|
10109
|
+
offset: interlace
|
|
10110
|
+
} : interlace;
|
|
10087
10111
|
return data;
|
|
10088
10112
|
}
|
|
10089
10113
|
|
|
@@ -10217,7 +10241,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
|
|
|
10217
10241
|
if (transform) copy$1(imageMatrix, transform);
|
|
10218
10242
|
scale(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
10219
10243
|
}
|
|
10220
|
-
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
|
|
10244
|
+
const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
|
|
10221
10245
|
const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
10222
10246
|
paint.style = pattern;
|
|
10223
10247
|
paint.patternId = id;
|
|
@@ -10239,8 +10263,8 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
|
|
|
10239
10263
|
|
|
10240
10264
|
function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
10241
10265
|
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
|
|
10242
|
-
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
|
|
10243
|
-
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
|
|
10266
|
+
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
|
|
10267
|
+
if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting || snapshot) {
|
|
10244
10268
|
return false;
|
|
10245
10269
|
} else {
|
|
10246
10270
|
if (drawImage) {
|
|
@@ -10914,7 +10938,7 @@ const TextMode = 2;
|
|
|
10914
10938
|
|
|
10915
10939
|
function layoutChar(drawData, style, width, _height) {
|
|
10916
10940
|
const {rows: rows} = drawData;
|
|
10917
|
-
const {textAlign: textAlign, paraIndent: paraIndent,
|
|
10941
|
+
const {textAlign: textAlign, paraIndent: paraIndent, __letterSpacing: __letterSpacing} = style;
|
|
10918
10942
|
const justifyLast = width && textAlign.includes("both");
|
|
10919
10943
|
const justify = justifyLast || width && textAlign.includes("justify");
|
|
10920
10944
|
const justifyLetter = justify && textAlign.includes("letter");
|
|
@@ -10927,8 +10951,8 @@ function layoutChar(drawData, style, width, _height) {
|
|
|
10927
10951
|
remainingWidth = width - row.width - indentWidth;
|
|
10928
10952
|
if (justifyLetter) addLetterWidth = remainingWidth / (row.words.reduce((total, item) => total + item.data.length, 0) - 1); else addWordWidth = wordsLength > 1 ? remainingWidth / (wordsLength - 1) : 0;
|
|
10929
10953
|
}
|
|
10930
|
-
mode =
|
|
10931
|
-
if (row.isOverflow && !
|
|
10954
|
+
mode = __letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
|
|
10955
|
+
if (row.isOverflow && !__letterSpacing) row.textMode = true;
|
|
10932
10956
|
if (mode === TextMode) {
|
|
10933
10957
|
row.x += indentWidth;
|
|
10934
10958
|
toTextChar$1(row);
|
|
@@ -11216,4 +11240,4 @@ Object.assign(Effect, EffectModule);
|
|
|
11216
11240
|
|
|
11217
11241
|
useCanvas();
|
|
11218
11242
|
|
|
11219
|
-
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, MyImage, 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, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, 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, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
11243
|
+
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, MyImage, 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, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, 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, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|