leafer-draw 1.9.3 → 1.9.5
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.cjs +62 -33
- package/dist/web.esm.js +63 -34
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +150 -165
- package/dist/web.min.cjs +1 -1
- package/dist/web.min.cjs.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/dist/web.module.js +152 -168
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +3 -3
package/dist/web.module.js
CHANGED
|
@@ -54,7 +54,7 @@ function isUndefined(value) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function isNull(value) {
|
|
57
|
-
return value
|
|
57
|
+
return value == null;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
function isString(value) {
|
|
@@ -136,6 +136,9 @@ class LeafData {
|
|
|
136
136
|
const {path: path} = this;
|
|
137
137
|
return path && path.length === 6 && path[0] === 1;
|
|
138
138
|
}
|
|
139
|
+
get __usePathBox() {
|
|
140
|
+
return this.__pathInputed;
|
|
141
|
+
}
|
|
139
142
|
get __blendMode() {
|
|
140
143
|
if (this.eraser && this.eraser !== "path") return "destination-out";
|
|
141
144
|
const {blendMode: blendMode} = this;
|
|
@@ -304,6 +307,9 @@ const MathHelper = {
|
|
|
304
307
|
num = round$3(num * a) / a;
|
|
305
308
|
return num === -0 ? 0 : num;
|
|
306
309
|
},
|
|
310
|
+
sign(num) {
|
|
311
|
+
return num < 0 ? -1 : 1;
|
|
312
|
+
},
|
|
307
313
|
getScaleData(scale, size, originSize, scaleData) {
|
|
308
314
|
if (!scaleData) scaleData = {};
|
|
309
315
|
if (size) {
|
|
@@ -1131,13 +1137,13 @@ const AlignHelper = {
|
|
|
1131
1137
|
}
|
|
1132
1138
|
};
|
|
1133
1139
|
|
|
1134
|
-
const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$
|
|
1140
|
+
const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$2} = TwoPointBoundsHelper;
|
|
1135
1141
|
|
|
1136
1142
|
const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
|
|
1137
1143
|
|
|
1138
1144
|
const {float: float, fourNumber: fourNumber} = MathHelper;
|
|
1139
1145
|
|
|
1140
|
-
const {floor: floor$2, ceil: ceil$
|
|
1146
|
+
const {floor: floor$2, ceil: ceil$2} = Math;
|
|
1141
1147
|
|
|
1142
1148
|
let right$1, bottom$1, boundsRight, boundsBottom;
|
|
1143
1149
|
|
|
@@ -1266,7 +1272,7 @@ const BoundsHelper = {
|
|
|
1266
1272
|
point.x = t.x;
|
|
1267
1273
|
toOuterPoint$2(matrix, point, toPoint$4);
|
|
1268
1274
|
addPoint$2(tempPointBounds$1, toPoint$4.x, toPoint$4.y);
|
|
1269
|
-
toBounds$
|
|
1275
|
+
toBounds$2(tempPointBounds$1, to);
|
|
1270
1276
|
}
|
|
1271
1277
|
},
|
|
1272
1278
|
toInnerOf(t, matrix, to) {
|
|
@@ -1304,8 +1310,8 @@ const BoundsHelper = {
|
|
|
1304
1310
|
const {x: x, y: y} = t;
|
|
1305
1311
|
t.x = floor$2(t.x);
|
|
1306
1312
|
t.y = floor$2(t.y);
|
|
1307
|
-
t.width = x > t.x ? ceil$
|
|
1308
|
-
t.height = y > t.y ? ceil$
|
|
1313
|
+
t.width = x > t.x ? ceil$2(t.width + x - t.x) : ceil$2(t.width);
|
|
1314
|
+
t.height = y > t.y ? ceil$2(t.height + y - t.y) : ceil$2(t.height);
|
|
1309
1315
|
},
|
|
1310
1316
|
unsign(t) {
|
|
1311
1317
|
if (t.width < 0) {
|
|
@@ -1365,7 +1371,7 @@ const BoundsHelper = {
|
|
|
1365
1371
|
},
|
|
1366
1372
|
setPoints(t, points) {
|
|
1367
1373
|
points.forEach((point, index) => index === 0 ? setPoint$2(tempPointBounds$1, point.x, point.y) : addPoint$2(tempPointBounds$1, point.x, point.y));
|
|
1368
|
-
toBounds$
|
|
1374
|
+
toBounds$2(tempPointBounds$1, t);
|
|
1369
1375
|
},
|
|
1370
1376
|
setPoint(t, point) {
|
|
1371
1377
|
B.set(t, point.x, point.y);
|
|
@@ -2218,15 +2224,15 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2218
2224
|
DataHelper.copyAttrs(s, size, canvasSizeAttrs);
|
|
2219
2225
|
canvasSizeAttrs.forEach(key => s[key] || (s[key] = 1));
|
|
2220
2226
|
this.bounds = new Bounds(0, 0, this.width, this.height);
|
|
2221
|
-
|
|
2222
|
-
this.updateViewSize();
|
|
2223
|
-
this.smooth = this.config.smooth;
|
|
2224
|
-
}
|
|
2227
|
+
this.updateViewSize();
|
|
2225
2228
|
this.updateClientBounds();
|
|
2226
|
-
if (this.context
|
|
2227
|
-
this.
|
|
2228
|
-
this.
|
|
2229
|
-
|
|
2229
|
+
if (this.context) {
|
|
2230
|
+
this.smooth = this.config.smooth;
|
|
2231
|
+
if (!this.unreal && takeCanvas) {
|
|
2232
|
+
this.clearWorld(takeCanvas.bounds);
|
|
2233
|
+
this.copyWorld(takeCanvas);
|
|
2234
|
+
takeCanvas.recycle();
|
|
2235
|
+
}
|
|
2230
2236
|
}
|
|
2231
2237
|
}
|
|
2232
2238
|
updateViewSize() {}
|
|
@@ -2540,7 +2546,7 @@ const RectHelper = {
|
|
|
2540
2546
|
}
|
|
2541
2547
|
};
|
|
2542
2548
|
|
|
2543
|
-
const {sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
|
|
2549
|
+
const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil$1, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
|
|
2544
2550
|
|
|
2545
2551
|
const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
|
|
2546
2552
|
|
|
@@ -2611,9 +2617,11 @@ const BezierHelper = {
|
|
|
2611
2617
|
const CBy = toY - y1;
|
|
2612
2618
|
let startRadian = atan2$1(BAy, BAx);
|
|
2613
2619
|
let endRadian = atan2$1(CBy, CBx);
|
|
2620
|
+
const lenBA = hypot(BAx, BAy);
|
|
2621
|
+
const lenCB = hypot(CBx, CBy);
|
|
2614
2622
|
let totalRadian = endRadian - startRadian;
|
|
2615
2623
|
if (totalRadian < 0) totalRadian += PI2;
|
|
2616
|
-
if (
|
|
2624
|
+
if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$2(totalRadian - PI$2) < 1e-12) {
|
|
2617
2625
|
if (data) data.push(L$6, x1, y1);
|
|
2618
2626
|
if (setPointBounds) {
|
|
2619
2627
|
setPoint$1(setPointBounds, fromX, fromY);
|
|
@@ -2646,7 +2654,7 @@ const BezierHelper = {
|
|
|
2646
2654
|
let totalRadian = endRadian - startRadian;
|
|
2647
2655
|
if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
|
|
2648
2656
|
if (anticlockwise) totalRadian -= PI2;
|
|
2649
|
-
const parts = ceil(abs$2(totalRadian / PI_2));
|
|
2657
|
+
const parts = ceil$1(abs$2(totalRadian / PI_2));
|
|
2650
2658
|
const partRadian = totalRadian / parts;
|
|
2651
2659
|
const partRadian4Sin = sin$3(partRadian / 4);
|
|
2652
2660
|
const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
|
|
@@ -3205,11 +3213,7 @@ class PathCreator {
|
|
|
3205
3213
|
this.set(path);
|
|
3206
3214
|
}
|
|
3207
3215
|
set(path) {
|
|
3208
|
-
|
|
3209
|
-
this.__path = isString(path) ? PathHelper.parse(path) : path;
|
|
3210
|
-
} else {
|
|
3211
|
-
this.__path = [];
|
|
3212
|
-
}
|
|
3216
|
+
this.__path = path ? isString(path) ? PathHelper.parse(path) : path : [];
|
|
3213
3217
|
return this;
|
|
3214
3218
|
}
|
|
3215
3219
|
beginPath() {
|
|
@@ -3377,7 +3381,7 @@ const {M: M$1, L: L$2, C: C, Q: Q, Z: Z$1, N: N, D: D$1, X: X, G: G, F: F$1, O:
|
|
|
3377
3381
|
|
|
3378
3382
|
const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc: arc, ellipse: ellipse$1} = BezierHelper;
|
|
3379
3383
|
|
|
3380
|
-
const {addPointBounds: addPointBounds, copy: copy$6, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$
|
|
3384
|
+
const {addPointBounds: addPointBounds, copy: copy$6, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
|
|
3381
3385
|
|
|
3382
3386
|
const debug$a = Debug.get("PathBounds");
|
|
3383
3387
|
|
|
@@ -3392,7 +3396,7 @@ const setEndPoint = {};
|
|
|
3392
3396
|
const PathBounds = {
|
|
3393
3397
|
toBounds(data, setBounds) {
|
|
3394
3398
|
PathBounds.toTwoPointBounds(data, setPointBounds);
|
|
3395
|
-
toBounds$
|
|
3399
|
+
toBounds$1(setPointBounds, setBounds);
|
|
3396
3400
|
},
|
|
3397
3401
|
toTwoPointBounds(data, setPointBounds) {
|
|
3398
3402
|
if (!data || !data.length) return setPoint(setPointBounds, 0, 0);
|
|
@@ -3579,14 +3583,18 @@ const PathCorner = {
|
|
|
3579
3583
|
}
|
|
3580
3584
|
};
|
|
3581
3585
|
|
|
3582
|
-
|
|
3586
|
+
function path(path) {
|
|
3587
|
+
return new PathCreator(path);
|
|
3588
|
+
}
|
|
3589
|
+
|
|
3590
|
+
const pen = path();
|
|
3591
|
+
|
|
3592
|
+
PathHelper.creator = path();
|
|
3583
3593
|
|
|
3584
3594
|
PathHelper.parse = PathConvert.parse;
|
|
3585
3595
|
|
|
3586
3596
|
PathHelper.convertToCanvasData = PathConvert.toCanvasData;
|
|
3587
3597
|
|
|
3588
|
-
const pen = new PathCreator;
|
|
3589
|
-
|
|
3590
3598
|
const {drawRoundRect: drawRoundRect} = RectHelper;
|
|
3591
3599
|
|
|
3592
3600
|
function roundRect(drawer) {
|
|
@@ -3951,7 +3959,7 @@ const ImageManager = {
|
|
|
3951
3959
|
return FileHelper.alphaPixelTypes.some(item => I.isFormat(item, config));
|
|
3952
3960
|
},
|
|
3953
3961
|
isFormat(format, config) {
|
|
3954
|
-
if (config.format
|
|
3962
|
+
if (config.format) return config.format === format;
|
|
3955
3963
|
const {url: url} = config;
|
|
3956
3964
|
if (url.startsWith("data:")) {
|
|
3957
3965
|
if (url.startsWith("data:" + FileHelper.mineType(format))) return true;
|
|
@@ -4045,7 +4053,7 @@ class LeaferImage {
|
|
|
4045
4053
|
getFull(_filters) {
|
|
4046
4054
|
return this.view;
|
|
4047
4055
|
}
|
|
4048
|
-
getCanvas(width, height, opacity, _filters, xGap, yGap) {
|
|
4056
|
+
getCanvas(width, height, opacity, _filters, xGap, yGap, smooth) {
|
|
4049
4057
|
width || (width = this.width);
|
|
4050
4058
|
height || (height = this.height);
|
|
4051
4059
|
if (this.cache) {
|
|
@@ -4061,6 +4069,7 @@ class LeaferImage {
|
|
|
4061
4069
|
const canvas = Platform.origin.createCanvas(max$1(floor$1(width + (xGap || 0)), 1), max$1(floor$1(height + (yGap || 0)), 1));
|
|
4062
4070
|
const ctx = canvas.getContext("2d");
|
|
4063
4071
|
if (opacity) ctx.globalAlpha = opacity;
|
|
4072
|
+
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
4064
4073
|
ctx.drawImage(this.view, 0, 0, width, height);
|
|
4065
4074
|
this.cache = this.use > 1 ? {
|
|
4066
4075
|
data: canvas,
|
|
@@ -4102,7 +4111,7 @@ function createDescriptor(key, defaultValue) {
|
|
|
4102
4111
|
return {
|
|
4103
4112
|
get() {
|
|
4104
4113
|
const v = this[privateKey];
|
|
4105
|
-
return
|
|
4114
|
+
return v == null ? defaultValue : v;
|
|
4106
4115
|
},
|
|
4107
4116
|
set(value) {
|
|
4108
4117
|
this[privateKey] = value;
|
|
@@ -4388,21 +4397,21 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
4388
4397
|
};
|
|
4389
4398
|
} else if (typeof defaultValue === "function") {
|
|
4390
4399
|
property.get = function() {
|
|
4391
|
-
|
|
4392
|
-
return v
|
|
4400
|
+
const v = this[computedKey];
|
|
4401
|
+
return v == null ? defaultValue(this.__leaf) : v;
|
|
4393
4402
|
};
|
|
4394
4403
|
} else if (isObject(defaultValue)) {
|
|
4395
4404
|
const isEmpty = isEmptyData(defaultValue);
|
|
4396
4405
|
property.get = function() {
|
|
4397
|
-
|
|
4398
|
-
return v
|
|
4406
|
+
const v = this[computedKey];
|
|
4407
|
+
return v == null ? this[computedKey] = isEmpty ? {} : DataHelper.clone(defaultValue) : v;
|
|
4399
4408
|
};
|
|
4400
4409
|
}
|
|
4401
4410
|
const isBox = target.isBranchLeaf;
|
|
4402
4411
|
if (key === "width") {
|
|
4403
4412
|
property.get = function() {
|
|
4404
4413
|
const v = this[computedKey];
|
|
4405
|
-
if (v
|
|
4414
|
+
if (v == null) {
|
|
4406
4415
|
const t = this, naturalWidth = t.__naturalWidth, leaf = t.__leaf;
|
|
4407
4416
|
if (!defaultValue || leaf.pathInputed) return leaf.boxBounds.width;
|
|
4408
4417
|
if (naturalWidth) return t._height && t.__useNaturalRatio ? t._height * naturalWidth / t.__naturalHeight : naturalWidth;
|
|
@@ -4412,7 +4421,7 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
4412
4421
|
} else if (key === "height") {
|
|
4413
4422
|
property.get = function() {
|
|
4414
4423
|
const v = this[computedKey];
|
|
4415
|
-
if (v
|
|
4424
|
+
if (v == null) {
|
|
4416
4425
|
const t = this, naturalHeight = t.__naturalHeight, leaf = t.__leaf;
|
|
4417
4426
|
if (!defaultValue || leaf.pathInputed) return leaf.boxBounds.height;
|
|
4418
4427
|
if (naturalHeight) return t._width && t.__useNaturalRatio ? t._width * naturalHeight / t.__naturalWidth : naturalHeight;
|
|
@@ -4712,8 +4721,9 @@ const L = LeafHelper;
|
|
|
4712
4721
|
|
|
4713
4722
|
const {updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$2, updateAllWorldOpacity: updateAllWorldOpacity, updateAllChange: updateAllChange$1, updateChange: updateChange$1} = L;
|
|
4714
4723
|
|
|
4715
|
-
function getTempLocal(t,
|
|
4716
|
-
|
|
4724
|
+
function getTempLocal(t, worldPoint) {
|
|
4725
|
+
t.updateLayout();
|
|
4726
|
+
return t.parent ? PointHelper.tempToInnerOf(worldPoint, t.parent.scrollWorldTransform) : worldPoint;
|
|
4717
4727
|
}
|
|
4718
4728
|
|
|
4719
4729
|
const LeafBoundsHelper = {
|
|
@@ -5172,7 +5182,7 @@ class LeafLayout {
|
|
|
5172
5182
|
}
|
|
5173
5183
|
boxChange() {
|
|
5174
5184
|
this.boxChanged = true;
|
|
5175
|
-
this.localBoxChanged || this.localBoxChange();
|
|
5185
|
+
this.localBoxChanged ? this.boundsChanged || (this.boundsChanged = true) : this.localBoxChange();
|
|
5176
5186
|
this.hitCanvasChanged = true;
|
|
5177
5187
|
}
|
|
5178
5188
|
localBoxChange() {
|
|
@@ -5206,7 +5216,7 @@ class LeafLayout {
|
|
|
5206
5216
|
}
|
|
5207
5217
|
matrixChange() {
|
|
5208
5218
|
this.matrixChanged = true;
|
|
5209
|
-
this.localBoxChanged || this.localBoxChange();
|
|
5219
|
+
this.localBoxChanged ? this.boundsChanged || (this.boundsChanged = true) : this.localBoxChange();
|
|
5210
5220
|
}
|
|
5211
5221
|
surfaceChange() {
|
|
5212
5222
|
this.surfaceChanged = true;
|
|
@@ -5731,7 +5741,7 @@ const {updateBounds: updateBounds$1} = BranchHelper;
|
|
|
5731
5741
|
|
|
5732
5742
|
const {toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$3} = BoundsHelper;
|
|
5733
5743
|
|
|
5734
|
-
const {toBounds: toBounds
|
|
5744
|
+
const {toBounds: toBounds} = PathBounds;
|
|
5735
5745
|
|
|
5736
5746
|
const LeafBounds = {
|
|
5737
5747
|
__updateWorldBounds() {
|
|
@@ -5803,8 +5813,8 @@ const LeafBounds = {
|
|
|
5803
5813
|
__updateBoxBounds(_secondLayout, _bounds) {
|
|
5804
5814
|
const b = this.__layout.boxBounds;
|
|
5805
5815
|
const data = this.__;
|
|
5806
|
-
if (data.
|
|
5807
|
-
toBounds
|
|
5816
|
+
if (data.__usePathBox) {
|
|
5817
|
+
toBounds(data.path, b);
|
|
5808
5818
|
} else {
|
|
5809
5819
|
b.x = 0;
|
|
5810
5820
|
b.y = 0;
|
|
@@ -6272,10 +6282,10 @@ let Leaf = class Leaf {
|
|
|
6272
6282
|
relative.innerToWorld(world, to, distance);
|
|
6273
6283
|
world = to ? to : world;
|
|
6274
6284
|
}
|
|
6275
|
-
toInnerPoint(this.
|
|
6285
|
+
toInnerPoint(this.scrollWorldTransform, world, to, distance);
|
|
6276
6286
|
}
|
|
6277
6287
|
innerToWorld(inner, to, distance, relative) {
|
|
6278
|
-
toOuterPoint(this.
|
|
6288
|
+
toOuterPoint(this.scrollWorldTransform, inner, to, distance);
|
|
6279
6289
|
if (relative) relative.worldToInner(to ? to : inner, null, distance);
|
|
6280
6290
|
}
|
|
6281
6291
|
getBoxPoint(world, relative, distance, change) {
|
|
@@ -6739,7 +6749,7 @@ class LeafLevelList {
|
|
|
6739
6749
|
}
|
|
6740
6750
|
}
|
|
6741
6751
|
|
|
6742
|
-
const version = "1.9.
|
|
6752
|
+
const version = "1.9.5";
|
|
6743
6753
|
|
|
6744
6754
|
const debug$4 = Debug.get("LeaferCanvas");
|
|
6745
6755
|
|
|
@@ -6830,10 +6840,22 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6830
6840
|
updateViewSize() {
|
|
6831
6841
|
const {width: width, height: height, pixelRatio: pixelRatio} = this;
|
|
6832
6842
|
const {style: style} = this.view;
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
|
|
6843
|
+
if (this.unreal) {
|
|
6844
|
+
const {config: config, autoWidthStr: autoWidthStr, autoHeightStr: autoHeightStr} = this;
|
|
6845
|
+
if (config.width) {
|
|
6846
|
+
if (isUndefined(autoWidthStr)) this.autoWidthStr = style.width || "";
|
|
6847
|
+
style.width = config.width + "px";
|
|
6848
|
+
} else if (!isUndefined(autoWidthStr)) style.width = autoWidthStr;
|
|
6849
|
+
if (config.height) {
|
|
6850
|
+
if (isUndefined(autoHeightStr)) this.autoHeightStr = style.height || "";
|
|
6851
|
+
style.height = config.height + "px";
|
|
6852
|
+
} else if (!isUndefined(autoHeightStr)) style.height = autoHeightStr;
|
|
6853
|
+
} else {
|
|
6854
|
+
style.width = width + "px";
|
|
6855
|
+
style.height = height + "px";
|
|
6856
|
+
this.view.width = Math.ceil(width * pixelRatio);
|
|
6857
|
+
this.view.height = Math.ceil(height * pixelRatio);
|
|
6858
|
+
}
|
|
6837
6859
|
}
|
|
6838
6860
|
updateClientBounds() {
|
|
6839
6861
|
if (this.view.parentElement) this.clientBounds = this.view.getBoundingClientRect();
|
|
@@ -6842,6 +6864,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6842
6864
|
this.resizeListener = listener;
|
|
6843
6865
|
if (autoBounds) {
|
|
6844
6866
|
this.autoBounds = autoBounds;
|
|
6867
|
+
if (this.resizeObserver) return;
|
|
6845
6868
|
try {
|
|
6846
6869
|
this.resizeObserver = new ResizeObserver(entries => {
|
|
6847
6870
|
this.updateClientBounds();
|
|
@@ -6858,18 +6881,10 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6858
6881
|
} catch (_a) {
|
|
6859
6882
|
this.imitateResizeObserver();
|
|
6860
6883
|
}
|
|
6884
|
+
this.stopListenPixelRatio();
|
|
6861
6885
|
} else {
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
if (!this.config.pixelRatio && this.pixelRatio !== pixelRatio) {
|
|
6865
|
-
const {width: width, height: height} = this;
|
|
6866
|
-
this.emitResize({
|
|
6867
|
-
width: width,
|
|
6868
|
-
height: height,
|
|
6869
|
-
pixelRatio: pixelRatio
|
|
6870
|
-
});
|
|
6871
|
-
}
|
|
6872
|
-
});
|
|
6886
|
+
this.listenPixelRatio();
|
|
6887
|
+
if (this.unreal) this.updateViewSize();
|
|
6873
6888
|
}
|
|
6874
6889
|
}
|
|
6875
6890
|
imitateResizeObserver() {
|
|
@@ -6878,6 +6893,25 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6878
6893
|
Platform.requestRender(this.imitateResizeObserver.bind(this));
|
|
6879
6894
|
}
|
|
6880
6895
|
}
|
|
6896
|
+
listenPixelRatio() {
|
|
6897
|
+
if (!this.windowListener) window.addEventListener("resize", this.windowListener = () => {
|
|
6898
|
+
const pixelRatio = Platform.devicePixelRatio;
|
|
6899
|
+
if (!this.config.pixelRatio && this.pixelRatio !== pixelRatio) {
|
|
6900
|
+
const {width: width, height: height} = this;
|
|
6901
|
+
this.emitResize({
|
|
6902
|
+
width: width,
|
|
6903
|
+
height: height,
|
|
6904
|
+
pixelRatio: pixelRatio
|
|
6905
|
+
});
|
|
6906
|
+
}
|
|
6907
|
+
});
|
|
6908
|
+
}
|
|
6909
|
+
stopListenPixelRatio() {
|
|
6910
|
+
if (this.windowListener) {
|
|
6911
|
+
window.removeEventListener("resize", this.windowListener);
|
|
6912
|
+
this.windowListener = null;
|
|
6913
|
+
}
|
|
6914
|
+
}
|
|
6881
6915
|
checkAutoBounds(parentSize) {
|
|
6882
6916
|
const view = this.view;
|
|
6883
6917
|
const {x: x, y: y, width: width, height: height} = this.autoBounds.getBoundsFrom(parentSize);
|
|
@@ -6915,10 +6949,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6915
6949
|
destroy() {
|
|
6916
6950
|
if (this.view) {
|
|
6917
6951
|
this.stopAutoLayout();
|
|
6918
|
-
|
|
6919
|
-
window.removeEventListener("resize", this.windowListener);
|
|
6920
|
-
this.windowListener = null;
|
|
6921
|
-
}
|
|
6952
|
+
this.stopListenPixelRatio();
|
|
6922
6953
|
if (!this.unreal) {
|
|
6923
6954
|
const view = this.view;
|
|
6924
6955
|
if (view.parentElement) view.remove();
|
|
@@ -7347,7 +7378,7 @@ class Renderer {
|
|
|
7347
7378
|
this.times = 0;
|
|
7348
7379
|
this.config = {
|
|
7349
7380
|
usePartRender: true,
|
|
7350
|
-
maxFPS:
|
|
7381
|
+
maxFPS: 120
|
|
7351
7382
|
};
|
|
7352
7383
|
this.target = target;
|
|
7353
7384
|
this.canvas = canvas;
|
|
@@ -7502,11 +7533,15 @@ class Renderer {
|
|
|
7502
7533
|
if (this.requestTime || !target) return;
|
|
7503
7534
|
if (target.parentApp) return target.parentApp.requestRender(false);
|
|
7504
7535
|
const requestTime = this.requestTime = Date.now();
|
|
7505
|
-
|
|
7506
|
-
|
|
7536
|
+
const render = () => {
|
|
7537
|
+
const nowFPS = 1e3 / (Date.now() - requestTime);
|
|
7538
|
+
const {maxFPS: maxFPS} = this.config;
|
|
7539
|
+
if (maxFPS && nowFPS > maxFPS - .5) return Platform.requestRender(render);
|
|
7540
|
+
this.FPS = Math.min(120, Math.ceil(nowFPS));
|
|
7507
7541
|
this.requestTime = 0;
|
|
7508
7542
|
this.checkRender();
|
|
7509
|
-
}
|
|
7543
|
+
};
|
|
7544
|
+
Platform.requestRender(render);
|
|
7510
7545
|
}
|
|
7511
7546
|
__onResize(e) {
|
|
7512
7547
|
if (this.canvas.unreal) return;
|
|
@@ -7549,7 +7584,8 @@ class Renderer {
|
|
|
7549
7584
|
if (this.target) {
|
|
7550
7585
|
this.stop();
|
|
7551
7586
|
this.__removeListenEvents();
|
|
7552
|
-
this.
|
|
7587
|
+
this.config = {};
|
|
7588
|
+
this.target = this.canvas = null;
|
|
7553
7589
|
}
|
|
7554
7590
|
}
|
|
7555
7591
|
}
|
|
@@ -7857,7 +7893,11 @@ class LeaferData extends GroupData {
|
|
|
7857
7893
|
|
|
7858
7894
|
class FrameData extends BoxData {}
|
|
7859
7895
|
|
|
7860
|
-
class LineData extends UIData {
|
|
7896
|
+
class LineData extends UIData {
|
|
7897
|
+
get __usePathBox() {
|
|
7898
|
+
return this.points || this.__pathInputed;
|
|
7899
|
+
}
|
|
7900
|
+
}
|
|
7861
7901
|
|
|
7862
7902
|
class RectData extends UIData {
|
|
7863
7903
|
get __boxStroke() {
|
|
@@ -7871,7 +7911,7 @@ class EllipseData extends UIData {
|
|
|
7871
7911
|
}
|
|
7872
7912
|
}
|
|
7873
7913
|
|
|
7874
|
-
class PolygonData extends
|
|
7914
|
+
class PolygonData extends LineData {}
|
|
7875
7915
|
|
|
7876
7916
|
class StarData extends UIData {}
|
|
7877
7917
|
|
|
@@ -8181,20 +8221,9 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8181
8221
|
if (!path) this.__drawPathByBox(pen);
|
|
8182
8222
|
return pen;
|
|
8183
8223
|
}
|
|
8184
|
-
constructor(data) {
|
|
8185
|
-
super(data);
|
|
8186
|
-
}
|
|
8187
8224
|
reset(_data) {}
|
|
8188
|
-
set(data,
|
|
8189
|
-
if (data)
|
|
8190
|
-
if (transition) {
|
|
8191
|
-
if (transition === "temp") {
|
|
8192
|
-
this.lockNormalStyle = true;
|
|
8193
|
-
Object.assign(this, data);
|
|
8194
|
-
this.lockNormalStyle = false;
|
|
8195
|
-
} else this.animate(data, transition);
|
|
8196
|
-
} else Object.assign(this, data);
|
|
8197
|
-
}
|
|
8225
|
+
set(data, _transition) {
|
|
8226
|
+
if (data) Object.assign(this, data);
|
|
8198
8227
|
}
|
|
8199
8228
|
get(name) {
|
|
8200
8229
|
return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
|
|
@@ -8240,7 +8269,7 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8240
8269
|
const data = this.__;
|
|
8241
8270
|
if (data.path) {
|
|
8242
8271
|
data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
|
|
8243
|
-
if (data.__useArrow) PathArrow.addArrows(this
|
|
8272
|
+
if (data.__useArrow) PathArrow.addArrows(this);
|
|
8244
8273
|
} else data.__pathForRender && (data.__pathForRender = undefined);
|
|
8245
8274
|
}
|
|
8246
8275
|
__drawRenderPath(canvas) {
|
|
@@ -8264,7 +8293,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8264
8293
|
drawImagePlaceholder(canvas, _image) {
|
|
8265
8294
|
Paint.fill(this.__.placeholderColor, this, canvas);
|
|
8266
8295
|
}
|
|
8267
|
-
animate(
|
|
8296
|
+
animate(keyframe, _options, _type, _isTemp) {
|
|
8297
|
+
this.set(keyframe);
|
|
8268
8298
|
return Plugin.need("animate");
|
|
8269
8299
|
}
|
|
8270
8300
|
killAnimate(_type, _nextStyle) {}
|
|
@@ -8453,9 +8483,6 @@ let Group = class Group extends UI {
|
|
|
8453
8483
|
get isBranch() {
|
|
8454
8484
|
return true;
|
|
8455
8485
|
}
|
|
8456
|
-
constructor(data) {
|
|
8457
|
-
super(data);
|
|
8458
|
-
}
|
|
8459
8486
|
reset(data) {
|
|
8460
8487
|
this.__setBranch();
|
|
8461
8488
|
super.reset(data);
|
|
@@ -8580,7 +8607,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8580
8607
|
const canvas = this.canvas = Creator.canvas(config);
|
|
8581
8608
|
this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
|
|
8582
8609
|
if (this.isApp) this.__setApp();
|
|
8583
|
-
this.__checkAutoLayout(
|
|
8610
|
+
this.__checkAutoLayout();
|
|
8584
8611
|
this.view = canvas.view;
|
|
8585
8612
|
if (!parentApp) {
|
|
8586
8613
|
this.selector = Creator.selector(this);
|
|
@@ -8679,7 +8706,8 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8679
8706
|
this.leafer = leafer;
|
|
8680
8707
|
this.__level = 1;
|
|
8681
8708
|
}
|
|
8682
|
-
__checkAutoLayout(
|
|
8709
|
+
__checkAutoLayout() {
|
|
8710
|
+
const {config: config, parentApp: parentApp} = this;
|
|
8683
8711
|
if (!parentApp) {
|
|
8684
8712
|
if (!config.width || !config.height) this.autoLayout = new AutoBounds(config);
|
|
8685
8713
|
this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
|
|
@@ -8705,9 +8733,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8705
8733
|
return super.__getAttr(attrName);
|
|
8706
8734
|
}
|
|
8707
8735
|
__changeCanvasSize(attrName, newValue) {
|
|
8708
|
-
const
|
|
8709
|
-
data
|
|
8710
|
-
|
|
8736
|
+
const {config: config, canvas: canvas} = this;
|
|
8737
|
+
const data = DataHelper.copyAttrs({}, canvas, canvasSizeAttrs);
|
|
8738
|
+
data[attrName] = config[attrName] = newValue;
|
|
8739
|
+
config.width && config.height ? canvas.stopAutoLayout() : this.__checkAutoLayout();
|
|
8711
8740
|
this.__doResize(data);
|
|
8712
8741
|
}
|
|
8713
8742
|
__changeFill(newValue) {
|
|
@@ -8854,9 +8883,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8854
8883
|
if (!this.parent) {
|
|
8855
8884
|
if (this.selector) this.selector.destroy();
|
|
8856
8885
|
if (this.hitCanvasManager) this.hitCanvasManager.destroy();
|
|
8857
|
-
this.canvasManager.destroy();
|
|
8886
|
+
if (this.canvasManager) this.canvasManager.destroy();
|
|
8858
8887
|
}
|
|
8859
|
-
this.canvas.destroy();
|
|
8888
|
+
if (this.canvas) this.canvas.destroy();
|
|
8860
8889
|
this.config.view = this.view = this.parentApp = null;
|
|
8861
8890
|
if (this.userConfig) this.userConfig.view = null;
|
|
8862
8891
|
super.destroy();
|
|
@@ -8884,9 +8913,6 @@ let Rect = class Rect extends UI {
|
|
|
8884
8913
|
get __tag() {
|
|
8885
8914
|
return "Rect";
|
|
8886
8915
|
}
|
|
8887
|
-
constructor(data) {
|
|
8888
|
-
super(data);
|
|
8889
|
-
}
|
|
8890
8916
|
};
|
|
8891
8917
|
|
|
8892
8918
|
__decorate([ dataProcessor(RectData) ], Rect.prototype, "__", void 0);
|
|
@@ -8940,29 +8966,24 @@ let Box = class Box extends Group {
|
|
|
8940
8966
|
}
|
|
8941
8967
|
__updateStrokeBounds() {}
|
|
8942
8968
|
__updateRenderBounds() {
|
|
8943
|
-
let isOverflow;
|
|
8969
|
+
let isOverflow, isScrollMode;
|
|
8944
8970
|
if (this.children.length) {
|
|
8945
|
-
const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout;
|
|
8971
|
+
const data = this.__, layout = this.__layout, {renderBounds: renderBounds, boxBounds: boxBounds} = layout, {overflow: overflow} = data;
|
|
8946
8972
|
const childrenRenderBounds = layout.childrenRenderBounds || (layout.childrenRenderBounds = getBoundsData());
|
|
8947
8973
|
super.__updateRenderBounds(childrenRenderBounds);
|
|
8948
|
-
if (
|
|
8974
|
+
if (isScrollMode = overflow.includes("scroll")) {
|
|
8949
8975
|
add(childrenRenderBounds, boxBounds);
|
|
8950
8976
|
scroll(childrenRenderBounds, data);
|
|
8951
8977
|
}
|
|
8952
8978
|
this.__updateRectRenderBounds();
|
|
8953
8979
|
isOverflow = !includes$1(boxBounds, childrenRenderBounds);
|
|
8954
|
-
if (isOverflow &&
|
|
8980
|
+
if (isOverflow && overflow === "show") add(renderBounds, childrenRenderBounds);
|
|
8955
8981
|
} else this.__updateRectRenderBounds();
|
|
8956
8982
|
DataHelper.stintSet(this, "isOverflow", isOverflow);
|
|
8957
|
-
this.__checkScroll();
|
|
8983
|
+
this.__checkScroll(isScrollMode);
|
|
8958
8984
|
}
|
|
8959
8985
|
__updateRectRenderBounds() {}
|
|
8960
|
-
|
|
8961
|
-
if (this.hasScroller) this.__updateScroll();
|
|
8962
|
-
super.__updateWorldBounds();
|
|
8963
|
-
}
|
|
8964
|
-
__checkScroll() {}
|
|
8965
|
-
__updateScroll() {}
|
|
8986
|
+
__checkScroll(_isScrollMode) {}
|
|
8966
8987
|
__updateRectChange() {}
|
|
8967
8988
|
__updateChange() {
|
|
8968
8989
|
super.__updateChange();
|
|
@@ -9023,9 +9044,6 @@ let Frame = class Frame extends Box {
|
|
|
9023
9044
|
get isFrame() {
|
|
9024
9045
|
return true;
|
|
9025
9046
|
}
|
|
9026
|
-
constructor(data) {
|
|
9027
|
-
super(data);
|
|
9028
|
-
}
|
|
9029
9047
|
};
|
|
9030
9048
|
|
|
9031
9049
|
__decorate([ dataProcessor(FrameData) ], Frame.prototype, "__", void 0);
|
|
@@ -9042,9 +9060,6 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9042
9060
|
get __tag() {
|
|
9043
9061
|
return "Ellipse";
|
|
9044
9062
|
}
|
|
9045
|
-
constructor(data) {
|
|
9046
|
-
super(data);
|
|
9047
|
-
}
|
|
9048
9063
|
__updatePath() {
|
|
9049
9064
|
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
|
|
9050
9065
|
const rx = width / 2, ry = height / 2;
|
|
@@ -9088,8 +9103,6 @@ const {moveTo: moveTo$2, lineTo: lineTo$2, drawPoints: drawPoints$1} = PathComma
|
|
|
9088
9103
|
|
|
9089
9104
|
const {rotate: rotate$1, getAngle: getAngle$1, getDistance: getDistance$2, defaultPoint: defaultPoint} = PointHelper;
|
|
9090
9105
|
|
|
9091
|
-
const {toBounds: toBounds} = PathBounds;
|
|
9092
|
-
|
|
9093
9106
|
let Line = class Line extends UI {
|
|
9094
9107
|
get __tag() {
|
|
9095
9108
|
return "Line";
|
|
@@ -9106,31 +9119,16 @@ let Line = class Line extends UI {
|
|
|
9106
9119
|
this.rotation = getAngle$1(defaultPoint, value);
|
|
9107
9120
|
if (this.height) this.height = 0;
|
|
9108
9121
|
}
|
|
9109
|
-
constructor(data) {
|
|
9110
|
-
super(data);
|
|
9111
|
-
}
|
|
9112
9122
|
__updatePath() {
|
|
9113
9123
|
const data = this.__;
|
|
9114
9124
|
const path = data.path = [];
|
|
9115
9125
|
if (data.points) {
|
|
9116
|
-
drawPoints$1(path, data.points,
|
|
9126
|
+
drawPoints$1(path, data.points, data.curve, data.closed);
|
|
9117
9127
|
} else {
|
|
9118
9128
|
moveTo$2(path, 0, 0);
|
|
9119
9129
|
lineTo$2(path, this.width, 0);
|
|
9120
9130
|
}
|
|
9121
9131
|
}
|
|
9122
|
-
__updateRenderPath() {
|
|
9123
|
-
const data = this.__;
|
|
9124
|
-
if (!this.pathInputed && data.points && data.curve) {
|
|
9125
|
-
drawPoints$1(data.__pathForRender = [], data.points, data.curve, data.closed);
|
|
9126
|
-
if (data.__useArrow) PathArrow.addArrows(this, false);
|
|
9127
|
-
} else super.__updateRenderPath();
|
|
9128
|
-
}
|
|
9129
|
-
__updateBoxBounds() {
|
|
9130
|
-
if (this.points) {
|
|
9131
|
-
toBounds(this.__.__pathForRender, this.__layout.boxBounds);
|
|
9132
|
-
} else super.__updateBoxBounds();
|
|
9133
|
-
}
|
|
9134
9132
|
};
|
|
9135
9133
|
|
|
9136
9134
|
__decorate([ dataProcessor(LineData) ], Line.prototype, "__", void 0);
|
|
@@ -9157,15 +9155,13 @@ let Polygon = class Polygon extends UI {
|
|
|
9157
9155
|
get __tag() {
|
|
9158
9156
|
return "Polygon";
|
|
9159
9157
|
}
|
|
9160
|
-
constructor(data) {
|
|
9161
|
-
super(data);
|
|
9162
|
-
}
|
|
9163
9158
|
__updatePath() {
|
|
9164
|
-
const
|
|
9165
|
-
|
|
9166
|
-
|
|
9159
|
+
const data = this.__;
|
|
9160
|
+
const path = data.path = [];
|
|
9161
|
+
if (data.points) {
|
|
9162
|
+
drawPoints(path, data.points, data.curve, true);
|
|
9167
9163
|
} else {
|
|
9168
|
-
const {width: width, height: height, sides: sides} =
|
|
9164
|
+
const {width: width, height: height, sides: sides} = data;
|
|
9169
9165
|
const rx = width / 2, ry = height / 2;
|
|
9170
9166
|
moveTo$1(path, rx, 0);
|
|
9171
9167
|
for (let i = 1; i < sides; i++) {
|
|
@@ -9200,9 +9196,6 @@ let Star = class Star extends UI {
|
|
|
9200
9196
|
get __tag() {
|
|
9201
9197
|
return "Star";
|
|
9202
9198
|
}
|
|
9203
|
-
constructor(data) {
|
|
9204
|
-
super(data);
|
|
9205
|
-
}
|
|
9206
9199
|
__updatePath() {
|
|
9207
9200
|
const {width: width, height: height, corners: corners, innerRadius: innerRadius} = this.__;
|
|
9208
9201
|
const rx = width / 2, ry = height / 2;
|
|
@@ -9235,9 +9228,6 @@ let Image$1 = class Image extends Rect {
|
|
|
9235
9228
|
const {fill: fill} = this.__;
|
|
9236
9229
|
return isArray(fill) && fill[0].image;
|
|
9237
9230
|
}
|
|
9238
|
-
constructor(data) {
|
|
9239
|
-
super(data);
|
|
9240
|
-
}
|
|
9241
9231
|
};
|
|
9242
9232
|
|
|
9243
9233
|
__decorate([ dataProcessor(ImageData) ], Image$1.prototype, "__", void 0);
|
|
@@ -9337,9 +9327,6 @@ let Text = class Text extends UI {
|
|
|
9337
9327
|
this.updateLayout();
|
|
9338
9328
|
return this.__.__textDrawData;
|
|
9339
9329
|
}
|
|
9340
|
-
constructor(data) {
|
|
9341
|
-
super(data);
|
|
9342
|
-
}
|
|
9343
9330
|
__updateTextDrawData() {
|
|
9344
9331
|
const data = this.__;
|
|
9345
9332
|
const {lineHeight: lineHeight, letterSpacing: letterSpacing, fontFamily: fontFamily, fontSize: fontSize, fontWeight: fontWeight, italic: italic, textCase: textCase, textOverflow: textOverflow, padding: padding} = data;
|
|
@@ -9472,9 +9459,6 @@ let Path = class Path extends UI {
|
|
|
9472
9459
|
get __tag() {
|
|
9473
9460
|
return "Path";
|
|
9474
9461
|
}
|
|
9475
|
-
constructor(data) {
|
|
9476
|
-
super(data);
|
|
9477
|
-
}
|
|
9478
9462
|
};
|
|
9479
9463
|
|
|
9480
9464
|
__decorate([ dataProcessor(PathData) ], Path.prototype, "__", void 0);
|
|
@@ -9487,9 +9471,6 @@ let Pen = class Pen extends Group {
|
|
|
9487
9471
|
get __tag() {
|
|
9488
9472
|
return "Pen";
|
|
9489
9473
|
}
|
|
9490
|
-
constructor(data) {
|
|
9491
|
-
super(data);
|
|
9492
|
-
}
|
|
9493
9474
|
setStyle(data) {
|
|
9494
9475
|
const path = this.pathElement = new Path(data);
|
|
9495
9476
|
this.pathStyle = data;
|
|
@@ -10185,7 +10166,7 @@ function ignoreRender(ui, value) {
|
|
|
10185
10166
|
|
|
10186
10167
|
const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
|
|
10187
10168
|
|
|
10188
|
-
const {floor: floor, max: max, abs: abs} = Math;
|
|
10169
|
+
const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
|
|
10189
10170
|
|
|
10190
10171
|
function createPattern(ui, paint, pixelRatio) {
|
|
10191
10172
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -10195,8 +10176,6 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10195
10176
|
let imageScale, imageMatrix, {width: width, height: height, scaleX: sx, scaleY: sy, transform: transform, repeat: repeat, gap: gap} = data;
|
|
10196
10177
|
scaleX *= pixelRatio;
|
|
10197
10178
|
scaleY *= pixelRatio;
|
|
10198
|
-
const xGap = gap && gap.x * scaleX;
|
|
10199
|
-
const yGap = gap && gap.y * scaleY;
|
|
10200
10179
|
if (sx) {
|
|
10201
10180
|
sx = abs(sx);
|
|
10202
10181
|
sy = abs(sy);
|
|
@@ -10213,7 +10192,10 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10213
10192
|
if (size > Platform.image.maxCacheSize) return false;
|
|
10214
10193
|
}
|
|
10215
10194
|
let maxSize = Platform.image.maxPatternSize;
|
|
10216
|
-
if (
|
|
10195
|
+
if (image.isSVG) {
|
|
10196
|
+
const ws = width / image.width;
|
|
10197
|
+
if (ws > 1) imageScale = ws / ceil(ws);
|
|
10198
|
+
} else {
|
|
10217
10199
|
const imageSize = image.width * image.height;
|
|
10218
10200
|
if (maxSize > imageSize) maxSize = imageSize;
|
|
10219
10201
|
}
|
|
@@ -10228,18 +10210,20 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10228
10210
|
scaleX /= sx;
|
|
10229
10211
|
scaleY /= sy;
|
|
10230
10212
|
}
|
|
10213
|
+
const xGap = gap && gap.x * scaleX;
|
|
10214
|
+
const yGap = gap && gap.y * scaleY;
|
|
10231
10215
|
if (transform || scaleX !== 1 || scaleY !== 1) {
|
|
10216
|
+
const canvasWidth = width + (xGap || 0);
|
|
10217
|
+
const canvasHeight = height + (yGap || 0);
|
|
10218
|
+
scaleX /= canvasWidth / max(floor(canvasWidth), 1);
|
|
10219
|
+
scaleY /= canvasHeight / max(floor(canvasHeight), 1);
|
|
10232
10220
|
if (!imageMatrix) {
|
|
10233
10221
|
imageMatrix = get$1();
|
|
10234
10222
|
if (transform) copy$1(imageMatrix, transform);
|
|
10235
10223
|
}
|
|
10236
10224
|
scale(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
10237
10225
|
}
|
|
10238
|
-
|
|
10239
|
-
const canvasWidth = width + (xGap || 0), canvasHeight = height + (yGap || 0);
|
|
10240
|
-
scale(imageMatrix, canvasWidth / max(floor(canvasWidth), 1), canvasHeight / max(floor(canvasHeight), 1));
|
|
10241
|
-
}
|
|
10242
|
-
const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap);
|
|
10226
|
+
const canvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
|
|
10243
10227
|
const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
10244
10228
|
paint.style = pattern;
|
|
10245
10229
|
paint.patternId = id;
|
|
@@ -11187,4 +11171,4 @@ Object.assign(Effect, EffectModule);
|
|
|
11187
11171
|
|
|
11188
11172
|
useCanvas();
|
|
11189
11173
|
|
|
11190
|
-
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, Image$1 as 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, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, 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, 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, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
11174
|
+
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, Image$1 as 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, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, 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, 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$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|