leafer-draw 1.9.7 → 1.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web.cjs +107 -80
- package/dist/web.esm.js +109 -82
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +230 -168
- 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 +238 -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
|
@@ -247,18 +247,34 @@ class LeafData {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
250
|
+
let tempA, tempB, tempTo;
|
|
251
|
+
|
|
252
|
+
const {max: max$4} = Math, tempFour = [ 0, 0, 0, 0 ];
|
|
253
|
+
|
|
254
|
+
const FourNumberHelper = {
|
|
255
|
+
zero: [ ...tempFour ],
|
|
256
|
+
tempFour: tempFour,
|
|
257
|
+
set(to, top, right, bottom, left) {
|
|
258
|
+
if (right === undefined) right = bottom = left = top;
|
|
259
|
+
to[0] = top;
|
|
260
|
+
to[1] = right;
|
|
261
|
+
to[2] = bottom;
|
|
262
|
+
to[3] = left;
|
|
263
|
+
return to;
|
|
264
|
+
},
|
|
265
|
+
setTemp(top, right, bottom, left) {
|
|
266
|
+
return set$1(tempFour, top, right, bottom, left);
|
|
258
267
|
},
|
|
259
|
-
|
|
268
|
+
toTempAB(a, b, change) {
|
|
269
|
+
tempTo = change ? isNumber(a) ? b : a : [];
|
|
270
|
+
if (isNumber(a)) tempA = setTemp(a), tempB = b; else if (isNumber(b)) tempA = a,
|
|
271
|
+
tempB = setTemp(b); else tempA = a, tempB = b;
|
|
272
|
+
if (tempA.length !== 4) tempA = get$5(tempA);
|
|
273
|
+
if (tempB.length !== 4) tempB = get$5(tempB);
|
|
274
|
+
},
|
|
275
|
+
get(num, maxValue) {
|
|
260
276
|
let data;
|
|
261
|
-
if (
|
|
277
|
+
if (!isNumber(num)) {
|
|
262
278
|
switch (num.length) {
|
|
263
279
|
case 4:
|
|
264
280
|
data = isUndefined(maxValue) ? num : [ ...num ];
|
|
@@ -281,9 +297,39 @@ const MathHelper = {
|
|
|
281
297
|
}
|
|
282
298
|
}
|
|
283
299
|
if (!data) data = [ num, num, num, num ];
|
|
284
|
-
if (maxValue) for (let i = 0; i < 4; i++) if (data[i] > maxValue) data[i] = maxValue;
|
|
300
|
+
if (!isUndefined(maxValue)) for (let i = 0; i < 4; i++) if (data[i] > maxValue) data[i] = maxValue;
|
|
285
301
|
return data;
|
|
286
302
|
},
|
|
303
|
+
max(t, other, change) {
|
|
304
|
+
if (isNumber(t) && isNumber(other)) return max$4(t, other);
|
|
305
|
+
toTempAB(t, other, change);
|
|
306
|
+
return set$1(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]));
|
|
307
|
+
},
|
|
308
|
+
add(t, other, change) {
|
|
309
|
+
if (isNumber(t) && isNumber(other)) return t + other;
|
|
310
|
+
toTempAB(t, other, change);
|
|
311
|
+
return set$1(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
|
|
312
|
+
},
|
|
313
|
+
swapAndScale(t, scaleX, scaleY, change) {
|
|
314
|
+
if (isNumber(t)) return scaleX === scaleY ? t * scaleX : [ t * scaleY, t * scaleX ];
|
|
315
|
+
const to = change ? t : [];
|
|
316
|
+
const [top, right, bottom, left] = t.length === 4 ? t : get$5(t);
|
|
317
|
+
return set$1(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
const {set: set$1, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
|
|
322
|
+
|
|
323
|
+
const {round: round$3, pow: pow$1, PI: PI$3} = Math;
|
|
324
|
+
|
|
325
|
+
const MathHelper = {
|
|
326
|
+
within(value, min, max) {
|
|
327
|
+
if (isObject(min)) max = min.max, min = min.min;
|
|
328
|
+
if (!isUndefined(min) && value < min) value = min;
|
|
329
|
+
if (!isUndefined(max) && value > max) value = max;
|
|
330
|
+
return value;
|
|
331
|
+
},
|
|
332
|
+
fourNumber: FourNumberHelper.get,
|
|
287
333
|
formatRotation(rotation, unsign) {
|
|
288
334
|
rotation %= 360;
|
|
289
335
|
if (unsign) {
|
|
@@ -1014,7 +1060,7 @@ class Matrix {
|
|
|
1014
1060
|
}
|
|
1015
1061
|
}
|
|
1016
1062
|
|
|
1017
|
-
const tempMatrix$
|
|
1063
|
+
const tempMatrix$2 = new Matrix;
|
|
1018
1064
|
|
|
1019
1065
|
const TwoPointBoundsHelper = {
|
|
1020
1066
|
tempPointBounds: {},
|
|
@@ -1164,10 +1210,10 @@ const point = {};
|
|
|
1164
1210
|
|
|
1165
1211
|
const toPoint$4 = {};
|
|
1166
1212
|
|
|
1167
|
-
const tempBounds$
|
|
1213
|
+
const tempBounds$3 = {};
|
|
1168
1214
|
|
|
1169
1215
|
const BoundsHelper = {
|
|
1170
|
-
tempBounds: tempBounds$
|
|
1216
|
+
tempBounds: tempBounds$3,
|
|
1171
1217
|
set(t, x = 0, y = 0, width = 0, height = 0) {
|
|
1172
1218
|
t.x = x;
|
|
1173
1219
|
t.y = y;
|
|
@@ -1218,19 +1264,11 @@ const BoundsHelper = {
|
|
|
1218
1264
|
B.move(t, x, y);
|
|
1219
1265
|
return t;
|
|
1220
1266
|
},
|
|
1221
|
-
toOffsetOutBounds(t, to,
|
|
1222
|
-
if (!to)
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
}
|
|
1227
|
-
if (parent) {
|
|
1228
|
-
to.offsetX = -(B.maxX(parent) - t.x);
|
|
1229
|
-
to.offsetY = -(B.maxY(parent) - t.y);
|
|
1230
|
-
} else {
|
|
1231
|
-
to.offsetX = t.x + t.width;
|
|
1232
|
-
to.offsetY = t.y + t.height;
|
|
1233
|
-
}
|
|
1267
|
+
toOffsetOutBounds(t, to, offsetBounds) {
|
|
1268
|
+
if (!to) to = t; else copy$8(to, t);
|
|
1269
|
+
if (!offsetBounds) offsetBounds = t;
|
|
1270
|
+
to.offsetX = B.maxX(offsetBounds);
|
|
1271
|
+
to.offsetY = B.maxY(offsetBounds);
|
|
1234
1272
|
B.move(to, -to.offsetX, -to.offsetY);
|
|
1235
1273
|
},
|
|
1236
1274
|
scale(t, scaleX, scaleY = scaleX, onlySize) {
|
|
@@ -1244,9 +1282,9 @@ const BoundsHelper = {
|
|
|
1244
1282
|
t.height *= scaleY;
|
|
1245
1283
|
},
|
|
1246
1284
|
tempToOuterOf(t, matrix) {
|
|
1247
|
-
B.copy(tempBounds$
|
|
1248
|
-
B.toOuterOf(tempBounds$
|
|
1249
|
-
return tempBounds$
|
|
1285
|
+
B.copy(tempBounds$3, t);
|
|
1286
|
+
B.toOuterOf(tempBounds$3, matrix);
|
|
1287
|
+
return tempBounds$3;
|
|
1250
1288
|
},
|
|
1251
1289
|
getOuterOf(t, matrix) {
|
|
1252
1290
|
t = Object.assign({}, t);
|
|
@@ -1304,9 +1342,9 @@ const BoundsHelper = {
|
|
|
1304
1342
|
put(t, put, align = "center", putScale = 1, changeSize = true, to) {
|
|
1305
1343
|
to || (to = put);
|
|
1306
1344
|
if (isString(putScale)) putScale = B.getFitScale(t, put, putScale === "cover");
|
|
1307
|
-
tempBounds$
|
|
1308
|
-
tempBounds$
|
|
1309
|
-
AlignHelper.toPoint(align, tempBounds$
|
|
1345
|
+
tempBounds$3.width = changeSize ? put.width *= putScale : put.width * putScale;
|
|
1346
|
+
tempBounds$3.height = changeSize ? put.height *= putScale : put.height * putScale;
|
|
1347
|
+
AlignHelper.toPoint(align, tempBounds$3, t, to, true, true);
|
|
1310
1348
|
},
|
|
1311
1349
|
getSpread(t, spread, side) {
|
|
1312
1350
|
const n = {};
|
|
@@ -1376,7 +1414,7 @@ const BoundsHelper = {
|
|
|
1376
1414
|
first = false;
|
|
1377
1415
|
if (!addMode) copy$8(t, bounds);
|
|
1378
1416
|
} else {
|
|
1379
|
-
add$
|
|
1417
|
+
add$2(t, bounds);
|
|
1380
1418
|
}
|
|
1381
1419
|
}
|
|
1382
1420
|
}
|
|
@@ -1390,7 +1428,7 @@ const BoundsHelper = {
|
|
|
1390
1428
|
B.set(t, point.x, point.y);
|
|
1391
1429
|
},
|
|
1392
1430
|
addPoint(t, point) {
|
|
1393
|
-
add$
|
|
1431
|
+
add$2(t, point, true);
|
|
1394
1432
|
},
|
|
1395
1433
|
getPoints(t) {
|
|
1396
1434
|
const {x: x, y: y, width: width, height: height} = t;
|
|
@@ -1461,7 +1499,7 @@ const BoundsHelper = {
|
|
|
1461
1499
|
|
|
1462
1500
|
const B = BoundsHelper;
|
|
1463
1501
|
|
|
1464
|
-
const {add: add$
|
|
1502
|
+
const {add: add$2, copy: copy$8} = B;
|
|
1465
1503
|
|
|
1466
1504
|
class Bounds {
|
|
1467
1505
|
get minX() {
|
|
@@ -1606,7 +1644,7 @@ class Bounds {
|
|
|
1606
1644
|
}
|
|
1607
1645
|
}
|
|
1608
1646
|
|
|
1609
|
-
const tempBounds$
|
|
1647
|
+
const tempBounds$2 = new Bounds;
|
|
1610
1648
|
|
|
1611
1649
|
class AutoBounds {
|
|
1612
1650
|
constructor(top, right, bottom, left, width, height) {
|
|
@@ -2261,7 +2299,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2261
2299
|
const {pixelRatio: pixelRatio, pixelSnap: pixelSnap} = this, w = this.worldTransform;
|
|
2262
2300
|
if (parentMatrix) multiplyParent$4(matrix, parentMatrix, w);
|
|
2263
2301
|
pixelScale(matrix, pixelRatio, w);
|
|
2264
|
-
if (pixelSnap) {
|
|
2302
|
+
if (pixelSnap && !matrix.ignorePixelSnap) {
|
|
2265
2303
|
if (matrix.half && matrix.half * pixelRatio % 2) w.e = round$1(w.e - .5) + .5, w.f = round$1(w.f - .5) + .5; else w.e = round$1(w.e),
|
|
2266
2304
|
w.f = round$1(w.f);
|
|
2267
2305
|
}
|
|
@@ -3985,7 +4023,7 @@ const I = ImageManager;
|
|
|
3985
4023
|
|
|
3986
4024
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
3987
4025
|
|
|
3988
|
-
const {floor: floor$1, max: max$
|
|
4026
|
+
const {floor: floor$1, max: max$3} = Math;
|
|
3989
4027
|
|
|
3990
4028
|
class LeaferImage {
|
|
3991
4029
|
get url() {
|
|
@@ -4074,7 +4112,7 @@ class LeaferImage {
|
|
|
4074
4112
|
}
|
|
4075
4113
|
if (data) return data;
|
|
4076
4114
|
}
|
|
4077
|
-
const canvas = Platform.origin.createCanvas(max$
|
|
4115
|
+
const canvas = Platform.origin.createCanvas(max$3(floor$1(width + (xGap || 0)), 1), max$3(floor$1(height + (yGap || 0)), 1));
|
|
4078
4116
|
const ctx = canvas.getContext("2d");
|
|
4079
4117
|
if (opacity) ctx.globalAlpha = opacity;
|
|
4080
4118
|
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
@@ -4868,7 +4906,7 @@ const WaitHelper = {
|
|
|
4868
4906
|
|
|
4869
4907
|
const {getRelativeWorld: getRelativeWorld$1, updateBounds: updateBounds$2} = LeafHelper;
|
|
4870
4908
|
|
|
4871
|
-
const {toOuterOf: toOuterOf$
|
|
4909
|
+
const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$4} = BoundsHelper;
|
|
4872
4910
|
|
|
4873
4911
|
const localContent = "_localContentBounds";
|
|
4874
4912
|
|
|
@@ -4891,7 +4929,7 @@ class LeafLayout {
|
|
|
4891
4929
|
this._renderBounds = bounds;
|
|
4892
4930
|
}
|
|
4893
4931
|
get localContentBounds() {
|
|
4894
|
-
toOuterOf$
|
|
4932
|
+
toOuterOf$3(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {}));
|
|
4895
4933
|
return this[localContent];
|
|
4896
4934
|
}
|
|
4897
4935
|
get localStrokeBounds() {
|
|
@@ -4901,15 +4939,15 @@ class LeafLayout {
|
|
|
4901
4939
|
return this._localRenderBounds || this;
|
|
4902
4940
|
}
|
|
4903
4941
|
get worldContentBounds() {
|
|
4904
|
-
toOuterOf$
|
|
4942
|
+
toOuterOf$3(this.contentBounds, this.leaf.__world, this[worldContent] || (this[worldContent] = {}));
|
|
4905
4943
|
return this[worldContent];
|
|
4906
4944
|
}
|
|
4907
4945
|
get worldBoxBounds() {
|
|
4908
|
-
toOuterOf$
|
|
4946
|
+
toOuterOf$3(this.boxBounds, this.leaf.__world, this[worldBox] || (this[worldBox] = {}));
|
|
4909
4947
|
return this[worldBox];
|
|
4910
4948
|
}
|
|
4911
4949
|
get worldStrokeBounds() {
|
|
4912
|
-
toOuterOf$
|
|
4950
|
+
toOuterOf$3(this.strokeBounds, this.leaf.__world, this[worldStroke] || (this[worldStroke] = {}));
|
|
4913
4951
|
return this[worldStroke];
|
|
4914
4952
|
}
|
|
4915
4953
|
get a() {
|
|
@@ -5761,14 +5799,14 @@ const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafH
|
|
|
5761
5799
|
|
|
5762
5800
|
const {updateBounds: updateBounds$1} = BranchHelper;
|
|
5763
5801
|
|
|
5764
|
-
const {toOuterOf: toOuterOf$
|
|
5802
|
+
const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$3} = BoundsHelper;
|
|
5765
5803
|
|
|
5766
5804
|
const {toBounds: toBounds} = PathBounds;
|
|
5767
5805
|
|
|
5768
5806
|
const LeafBounds = {
|
|
5769
5807
|
__updateWorldBounds() {
|
|
5770
5808
|
const layout = this.__layout;
|
|
5771
|
-
toOuterOf$
|
|
5809
|
+
toOuterOf$2(layout.renderBounds, this.__world, this.__world);
|
|
5772
5810
|
if (layout.resized) {
|
|
5773
5811
|
if (layout.resized === "inner") this.__onUpdateSize();
|
|
5774
5812
|
if (this.__hasLocalEvent) BoundsEvent.emitLocal(this);
|
|
@@ -5824,13 +5862,13 @@ const LeafBounds = {
|
|
|
5824
5862
|
__updateLocalBoxBounds() {
|
|
5825
5863
|
if (this.__hasMotionPath) this.__updateMotionPath();
|
|
5826
5864
|
if (this.__hasAutoLayout) this.__updateAutoLayout();
|
|
5827
|
-
toOuterOf$
|
|
5865
|
+
toOuterOf$2(this.__layout.boxBounds, this.__local, this.__local);
|
|
5828
5866
|
},
|
|
5829
5867
|
__updateLocalStrokeBounds() {
|
|
5830
|
-
toOuterOf$
|
|
5868
|
+
toOuterOf$2(this.__layout.strokeBounds, this.__localMatrix, this.__layout.localStrokeBounds);
|
|
5831
5869
|
},
|
|
5832
5870
|
__updateLocalRenderBounds() {
|
|
5833
|
-
toOuterOf$
|
|
5871
|
+
toOuterOf$2(this.__layout.renderBounds, this.__localMatrix, this.__layout.localRenderBounds);
|
|
5834
5872
|
},
|
|
5835
5873
|
__updateBoxBounds(_secondLayout, _bounds) {
|
|
5836
5874
|
const b = this.__layout.boxBounds;
|
|
@@ -5868,11 +5906,11 @@ const LeafBounds = {
|
|
|
5868
5906
|
},
|
|
5869
5907
|
__updateStrokeBounds(_bounds) {
|
|
5870
5908
|
const layout = this.__layout;
|
|
5871
|
-
copyAndSpread$
|
|
5909
|
+
copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
|
|
5872
5910
|
},
|
|
5873
5911
|
__updateRenderBounds(_bounds) {
|
|
5874
|
-
const layout = this.__layout;
|
|
5875
|
-
|
|
5912
|
+
const layout = this.__layout, {renderSpread: renderSpread} = layout;
|
|
5913
|
+
isNumber(renderSpread) && renderSpread <= 0 ? copy$3(layout.renderBounds, layout.strokeBounds) : copyAndSpread$2(layout.renderBounds, layout.boxBounds, renderSpread);
|
|
5876
5914
|
}
|
|
5877
5915
|
};
|
|
5878
5916
|
|
|
@@ -5970,11 +6008,13 @@ const tempScaleData$1 = {};
|
|
|
5970
6008
|
|
|
5971
6009
|
const {LEAF: LEAF, create: create} = IncrementId;
|
|
5972
6010
|
|
|
6011
|
+
const {stintSet: stintSet$3} = DataHelper;
|
|
6012
|
+
|
|
5973
6013
|
const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: multiplyParent$1} = MatrixHelper;
|
|
5974
6014
|
|
|
5975
|
-
const {toOuterOf: toOuterOf} = BoundsHelper;
|
|
6015
|
+
const {toOuterOf: toOuterOf$1} = BoundsHelper;
|
|
5976
6016
|
|
|
5977
|
-
const {copy: copy$2, move: move} = PointHelper;
|
|
6017
|
+
const {copy: copy$2, move: move$2} = PointHelper;
|
|
5978
6018
|
|
|
5979
6019
|
const {moveLocal: moveLocal, zoomOfLocal: zoomOfLocal, rotateOfLocal: rotateOfLocal, skewOfLocal: skewOfLocal, moveWorld: moveWorld, zoomOfWorld: zoomOfWorld, rotateOfWorld: rotateOfWorld, skewOfWorld: skewOfWorld, transform: transform, transformWorld: transformWorld, setTransform: setTransform, getFlipTransform: getFlipTransform, getLocalOrigin: getLocalOrigin, getRelativeWorld: getRelativeWorld, drop: drop} = LeafHelper;
|
|
5980
6020
|
|
|
@@ -6250,8 +6290,9 @@ let Leaf = class Leaf {
|
|
|
6250
6290
|
if (!this.__cameraWorld) this.__cameraWorld = {};
|
|
6251
6291
|
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
6252
6292
|
multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
|
|
6253
|
-
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
6254
|
-
cameraWorld
|
|
6293
|
+
toOuterOf$1(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
6294
|
+
stintSet$3(cameraWorld, "half", world.half);
|
|
6295
|
+
stintSet$3(cameraWorld, "ignorePixelSnap", world.ignorePixelSnap);
|
|
6255
6296
|
return cameraWorld;
|
|
6256
6297
|
} else {
|
|
6257
6298
|
return this.__world;
|
|
@@ -6285,7 +6326,7 @@ let Leaf = class Leaf {
|
|
|
6285
6326
|
getWorldBounds(inner, relative, change) {
|
|
6286
6327
|
const matrix = relative ? getRelativeWorld(this, relative) : this.worldTransform;
|
|
6287
6328
|
const to = change ? inner : {};
|
|
6288
|
-
toOuterOf(inner, matrix, to);
|
|
6329
|
+
toOuterOf$1(inner, matrix, to);
|
|
6289
6330
|
return to;
|
|
6290
6331
|
}
|
|
6291
6332
|
worldToLocal(world, to, distance, relative) {
|
|
@@ -6318,7 +6359,7 @@ let Leaf = class Leaf {
|
|
|
6318
6359
|
}
|
|
6319
6360
|
getBoxPointByInner(inner, _relative, _distance, change) {
|
|
6320
6361
|
const point = change ? inner : Object.assign({}, inner), {x: x, y: y} = this.boxBounds;
|
|
6321
|
-
move(point, -x, -y);
|
|
6362
|
+
move$2(point, -x, -y);
|
|
6322
6363
|
return point;
|
|
6323
6364
|
}
|
|
6324
6365
|
getInnerPoint(world, relative, distance, change) {
|
|
@@ -6328,7 +6369,7 @@ let Leaf = class Leaf {
|
|
|
6328
6369
|
}
|
|
6329
6370
|
getInnerPointByBox(box, _relative, _distance, change) {
|
|
6330
6371
|
const point = change ? box : Object.assign({}, box), {x: x, y: y} = this.boxBounds;
|
|
6331
|
-
move(point, x, y);
|
|
6372
|
+
move$2(point, x, y);
|
|
6332
6373
|
return point;
|
|
6333
6374
|
}
|
|
6334
6375
|
getInnerPointByLocal(local, _relative, distance, change) {
|
|
@@ -6774,7 +6815,7 @@ class LeafLevelList {
|
|
|
6774
6815
|
}
|
|
6775
6816
|
}
|
|
6776
6817
|
|
|
6777
|
-
const version = "1.9.
|
|
6818
|
+
const version = "1.9.8";
|
|
6778
6819
|
|
|
6779
6820
|
const debug$4 = Debug.get("LeaferCanvas");
|
|
6780
6821
|
|
|
@@ -6809,7 +6850,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6809
6850
|
}
|
|
6810
6851
|
if (Platform.syncDomFont && !this.parentView) {
|
|
6811
6852
|
style.display = "none";
|
|
6812
|
-
document.body.appendChild(this.view);
|
|
6853
|
+
if (document.body) document.body.appendChild(this.view);
|
|
6813
6854
|
}
|
|
6814
6855
|
this.__createContext();
|
|
6815
6856
|
if (!this.autoLayout) this.resize(config);
|
|
@@ -7405,6 +7446,7 @@ class Renderer {
|
|
|
7405
7446
|
usePartRender: true,
|
|
7406
7447
|
maxFPS: 120
|
|
7407
7448
|
};
|
|
7449
|
+
this.frames = [];
|
|
7408
7450
|
this.target = target;
|
|
7409
7451
|
this.canvas = canvas;
|
|
7410
7452
|
if (userConfig) this.config = DataHelper.default(userConfig, this.config);
|
|
@@ -7557,12 +7599,15 @@ class Renderer {
|
|
|
7557
7599
|
const target = this.target;
|
|
7558
7600
|
if (this.requestTime || !target) return;
|
|
7559
7601
|
if (target.parentApp) return target.parentApp.requestRender(false);
|
|
7560
|
-
|
|
7602
|
+
this.requestTime = this.frameTime || Date.now();
|
|
7561
7603
|
const render = () => {
|
|
7562
|
-
const nowFPS = 1e3 / (Date.now() - requestTime);
|
|
7604
|
+
const nowFPS = 1e3 / ((this.frameTime = Date.now()) - this.requestTime);
|
|
7563
7605
|
const {maxFPS: maxFPS} = this.config;
|
|
7564
|
-
if (maxFPS && nowFPS > maxFPS
|
|
7565
|
-
|
|
7606
|
+
if (maxFPS && nowFPS > maxFPS) return Platform.requestRender(render);
|
|
7607
|
+
const {frames: frames} = this;
|
|
7608
|
+
if (frames.length > 30) frames.shift();
|
|
7609
|
+
frames.push(nowFPS);
|
|
7610
|
+
this.FPS = Math.round(frames.reduce((a, b) => a + b, 0) / frames.length);
|
|
7566
7611
|
this.requestTime = 0;
|
|
7567
7612
|
this.checkRender();
|
|
7568
7613
|
};
|
|
@@ -8035,39 +8080,41 @@ class CanvasData extends RectData {
|
|
|
8035
8080
|
}
|
|
8036
8081
|
}
|
|
8037
8082
|
|
|
8083
|
+
const {max: max$2, add: add$1} = FourNumberHelper;
|
|
8084
|
+
|
|
8038
8085
|
const UIBounds = {
|
|
8039
8086
|
__updateStrokeSpread() {
|
|
8040
|
-
let
|
|
8087
|
+
let spread = 0, boxSpread = 0;
|
|
8041
8088
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8042
8089
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8043
|
-
|
|
8090
|
+
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8044
8091
|
if (!data.__boxStroke) {
|
|
8045
|
-
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 *
|
|
8092
|
+
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8046
8093
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8047
|
-
|
|
8094
|
+
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
8048
8095
|
}
|
|
8049
8096
|
}
|
|
8050
|
-
if (data.__useArrow)
|
|
8097
|
+
if (data.__useArrow) spread += strokeWidth * 5;
|
|
8051
8098
|
if (box) {
|
|
8052
|
-
|
|
8053
|
-
|
|
8099
|
+
spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
|
|
8100
|
+
boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
|
|
8054
8101
|
}
|
|
8055
|
-
this.__layout.strokeBoxSpread =
|
|
8056
|
-
return
|
|
8102
|
+
this.__layout.strokeBoxSpread = boxSpread;
|
|
8103
|
+
return spread;
|
|
8057
8104
|
},
|
|
8058
8105
|
__updateRenderSpread() {
|
|
8059
|
-
let
|
|
8060
|
-
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__;
|
|
8061
|
-
if (shadow)
|
|
8062
|
-
if (blur)
|
|
8063
|
-
if (filter)
|
|
8064
|
-
if (renderSpread)
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
if (
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
return
|
|
8106
|
+
let spread = 0;
|
|
8107
|
+
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
|
|
8108
|
+
if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
|
|
8109
|
+
if (blur) spread = max$2(spread, blur);
|
|
8110
|
+
if (filter) spread = add$1(spread, Filter.getSpread(filter));
|
|
8111
|
+
if (renderSpread) spread = add$1(spread, renderSpread);
|
|
8112
|
+
if (strokeSpread) spread = add$1(spread, strokeSpread);
|
|
8113
|
+
let shapeSpread = spread;
|
|
8114
|
+
if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
|
|
8115
|
+
if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
|
|
8116
|
+
this.__layout.renderShapeSpread = shapeSpread;
|
|
8117
|
+
return box ? max$2(box.__updateRenderSpread(), spread) : spread;
|
|
8071
8118
|
}
|
|
8072
8119
|
};
|
|
8073
8120
|
|
|
@@ -9378,7 +9425,7 @@ __decorate([ resizeType() ], Canvas.prototype, "contextSettings", void 0);
|
|
|
9378
9425
|
|
|
9379
9426
|
Canvas = __decorate([ registerUI() ], Canvas);
|
|
9380
9427
|
|
|
9381
|
-
const {copyAndSpread: copyAndSpread, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9428
|
+
const {copyAndSpread: copyAndSpread$1, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9382
9429
|
|
|
9383
9430
|
let Text = class Text extends UI {
|
|
9384
9431
|
get __tag() {
|
|
@@ -9425,13 +9472,13 @@ let Text = class Text extends UI {
|
|
|
9425
9472
|
if (this.isOverflow) setList(data.__textBoxBounds = {}, [ b, contentBounds ]), layout.renderChanged = true; else data.__textBoxBounds = b;
|
|
9426
9473
|
}
|
|
9427
9474
|
__updateRenderSpread() {
|
|
9428
|
-
let
|
|
9429
|
-
if (!
|
|
9430
|
-
return
|
|
9475
|
+
let spread = super.__updateRenderSpread();
|
|
9476
|
+
if (!spread) spread = this.isOverflow ? 1 : 0;
|
|
9477
|
+
return spread;
|
|
9431
9478
|
}
|
|
9432
9479
|
__updateRenderBounds() {
|
|
9433
9480
|
const {renderBounds: renderBounds, renderSpread: renderSpread} = this.__layout;
|
|
9434
|
-
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9481
|
+
copyAndSpread$1(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9435
9482
|
if (this.__box) this.__box.__layout.renderBounds = renderBounds;
|
|
9436
9483
|
}
|
|
9437
9484
|
__updateChange() {
|
|
@@ -9799,24 +9846,29 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
9799
9846
|
}
|
|
9800
9847
|
}
|
|
9801
9848
|
|
|
9802
|
-
const {getSpread: getSpread, getOuterOf: getOuterOf, getByMove: getByMove, getIntersectData: getIntersectData} = BoundsHelper;
|
|
9849
|
+
const {getSpread: getSpread, copyAndSpread: copyAndSpread, toOuterOf: toOuterOf, getOuterOf: getOuterOf, getByMove: getByMove, move: move$1, getIntersectData: getIntersectData} = BoundsHelper;
|
|
9850
|
+
|
|
9851
|
+
const tempBounds$1 = {};
|
|
9803
9852
|
|
|
9804
9853
|
function shape(ui, current, options) {
|
|
9805
9854
|
const canvas = current.getSameCanvas();
|
|
9806
|
-
const nowWorld = ui.__nowWorld,
|
|
9807
|
-
|
|
9855
|
+
const currentBounds = current.bounds, nowWorld = ui.__nowWorld, layout = ui.__layout;
|
|
9856
|
+
const nowWorldShapeBounds = ui.__nowWorldShapeBounds || (ui.__nowWorldShapeBounds = {});
|
|
9857
|
+
toOuterOf(layout.strokeSpread ? (copyAndSpread(tempBounds$1, layout.boxBounds, layout.strokeSpread),
|
|
9858
|
+
tempBounds$1) : layout.boxBounds, nowWorld, nowWorldShapeBounds);
|
|
9859
|
+
let bounds, renderBounds, matrix, fitMatrix, shapeBounds, worldCanvas;
|
|
9808
9860
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
9809
|
-
if (currentBounds.includes(
|
|
9861
|
+
if (currentBounds.includes(nowWorldShapeBounds)) {
|
|
9810
9862
|
worldCanvas = canvas;
|
|
9811
|
-
bounds = shapeBounds =
|
|
9863
|
+
bounds = shapeBounds = nowWorldShapeBounds;
|
|
9864
|
+
renderBounds = nowWorld;
|
|
9812
9865
|
} else {
|
|
9813
|
-
const {renderShapeSpread: spread} = ui.__layout;
|
|
9814
9866
|
let worldClipBounds;
|
|
9815
9867
|
if (Platform.fullImageShadow) {
|
|
9816
|
-
worldClipBounds =
|
|
9868
|
+
worldClipBounds = nowWorldShapeBounds;
|
|
9817
9869
|
} else {
|
|
9818
|
-
const spreadBounds =
|
|
9819
|
-
worldClipBounds = getIntersectData(spreadBounds,
|
|
9870
|
+
const spreadBounds = layout.renderShapeSpread ? getSpread(currentBounds, FourNumberHelper.swapAndScale(layout.renderShapeSpread, scaleX, scaleY)) : currentBounds;
|
|
9871
|
+
worldClipBounds = getIntersectData(spreadBounds, nowWorldShapeBounds);
|
|
9820
9872
|
}
|
|
9821
9873
|
fitMatrix = currentBounds.getFitMatrix(worldClipBounds);
|
|
9822
9874
|
let {a: fitScaleX, d: fitScaleY} = fitMatrix;
|
|
@@ -9826,8 +9878,10 @@ function shape(ui, current, options) {
|
|
|
9826
9878
|
scaleX *= fitScaleX;
|
|
9827
9879
|
scaleY *= fitScaleY;
|
|
9828
9880
|
}
|
|
9829
|
-
shapeBounds = getOuterOf(
|
|
9881
|
+
shapeBounds = getOuterOf(nowWorldShapeBounds, fitMatrix);
|
|
9830
9882
|
bounds = getByMove(shapeBounds, -fitMatrix.e, -fitMatrix.f);
|
|
9883
|
+
renderBounds = getOuterOf(nowWorld, fitMatrix);
|
|
9884
|
+
move$1(renderBounds, -fitMatrix.e, -fitMatrix.f);
|
|
9831
9885
|
const userMatrix = options.matrix;
|
|
9832
9886
|
if (userMatrix) {
|
|
9833
9887
|
matrix = new Matrix(fitMatrix);
|
|
@@ -9846,6 +9900,7 @@ function shape(ui, current, options) {
|
|
|
9846
9900
|
matrix: matrix,
|
|
9847
9901
|
fitMatrix: fitMatrix,
|
|
9848
9902
|
bounds: bounds,
|
|
9903
|
+
renderBounds: renderBounds,
|
|
9849
9904
|
worldCanvas: worldCanvas,
|
|
9850
9905
|
shapeBounds: shapeBounds,
|
|
9851
9906
|
scaleX: scaleX,
|
|
@@ -9949,7 +10004,7 @@ const PaintModule = {
|
|
|
9949
10004
|
shape: shape
|
|
9950
10005
|
};
|
|
9951
10006
|
|
|
9952
|
-
let origin = {}, tempMatrix = getMatrixData();
|
|
10007
|
+
let origin = {}, tempMatrix$1 = getMatrixData();
|
|
9953
10008
|
|
|
9954
10009
|
const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
|
|
9955
10010
|
|
|
@@ -9964,12 +10019,12 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
9964
10019
|
data.transform = transform;
|
|
9965
10020
|
}
|
|
9966
10021
|
|
|
9967
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew,
|
|
10022
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY) {
|
|
9968
10023
|
const transform = get$3();
|
|
9969
10024
|
layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
|
|
9970
|
-
if (
|
|
9971
|
-
tempMatrix.a =
|
|
9972
|
-
multiplyParent(transform, tempMatrix);
|
|
10025
|
+
if (clipScaleX) {
|
|
10026
|
+
tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
|
|
10027
|
+
multiplyParent(transform, tempMatrix$1);
|
|
9973
10028
|
}
|
|
9974
10029
|
data.transform = transform;
|
|
9975
10030
|
}
|
|
@@ -10070,7 +10125,12 @@ function getPatternData(paint, box, image) {
|
|
|
10070
10125
|
|
|
10071
10126
|
case "normal":
|
|
10072
10127
|
case "clip":
|
|
10073
|
-
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
10128
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew) {
|
|
10129
|
+
let clipScaleX, clipScaleY;
|
|
10130
|
+
if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
|
|
10131
|
+
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
|
|
10132
|
+
if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : scaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
|
|
10133
|
+
}
|
|
10074
10134
|
break;
|
|
10075
10135
|
|
|
10076
10136
|
case "repeat":
|
|
@@ -10228,7 +10288,7 @@ function ignoreRender(ui, value) {
|
|
|
10228
10288
|
|
|
10229
10289
|
const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
|
|
10230
10290
|
|
|
10231
|
-
const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
|
|
10291
|
+
const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
|
|
10232
10292
|
|
|
10233
10293
|
function createPattern(ui, paint, pixelRatio) {
|
|
10234
10294
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -10277,8 +10337,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10277
10337
|
if (transform || scaleX !== 1 || scaleY !== 1) {
|
|
10278
10338
|
const canvasWidth = width + (xGap || 0);
|
|
10279
10339
|
const canvasHeight = height + (yGap || 0);
|
|
10280
|
-
scaleX /= canvasWidth / max(floor(canvasWidth), 1);
|
|
10281
|
-
scaleY /= canvasHeight / max(floor(canvasHeight), 1);
|
|
10340
|
+
scaleX /= canvasWidth / max$1(floor(canvasWidth), 1);
|
|
10341
|
+
scaleY /= canvasHeight / max$1(floor(canvasHeight), 1);
|
|
10282
10342
|
if (!imageMatrix) {
|
|
10283
10343
|
imageMatrix = get$1();
|
|
10284
10344
|
if (transform) copy$1(imageMatrix, transform);
|
|
@@ -10304,17 +10364,15 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
10304
10364
|
if (allowDraw) {
|
|
10305
10365
|
if (data.repeat) {
|
|
10306
10366
|
allowDraw = false;
|
|
10307
|
-
} else {
|
|
10308
|
-
|
|
10309
|
-
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
height *= data.scaleY;
|
|
10315
|
-
}
|
|
10316
|
-
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
10367
|
+
} else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || Export.running)) {
|
|
10368
|
+
let {width: width, height: height} = data;
|
|
10369
|
+
width *= scaleX * pixelRatio;
|
|
10370
|
+
height *= scaleY * pixelRatio;
|
|
10371
|
+
if (data.scaleX) {
|
|
10372
|
+
width *= data.scaleX;
|
|
10373
|
+
height *= data.scaleY;
|
|
10317
10374
|
}
|
|
10375
|
+
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
10318
10376
|
}
|
|
10319
10377
|
}
|
|
10320
10378
|
if (allowDraw) {
|
|
@@ -10494,20 +10552,20 @@ const PaintGradientModule = {
|
|
|
10494
10552
|
getTransform: getTransform
|
|
10495
10553
|
};
|
|
10496
10554
|
|
|
10497
|
-
const {copy: copy, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper;
|
|
10555
|
+
const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
|
|
10498
10556
|
|
|
10499
|
-
const tempBounds = {};
|
|
10557
|
+
const tempBounds = {}, tempMatrix = new Matrix;
|
|
10500
10558
|
|
|
10501
10559
|
const offsetOutBounds$1 = {};
|
|
10502
10560
|
|
|
10503
10561
|
function shadow(ui, current, shape) {
|
|
10504
|
-
let copyBounds,
|
|
10505
|
-
const {__nowWorld: nowWorld
|
|
10562
|
+
let copyBounds, transform;
|
|
10563
|
+
const {__nowWorld: nowWorld} = ui;
|
|
10506
10564
|
const {shadow: shadow} = ui.__;
|
|
10507
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
10565
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
10508
10566
|
const other = current.getSameCanvas();
|
|
10509
10567
|
const end = shadow.length - 1;
|
|
10510
|
-
toOffsetOutBounds$1(bounds, offsetOutBounds$1);
|
|
10568
|
+
toOffsetOutBounds$1(bounds, offsetOutBounds$1, renderBounds);
|
|
10511
10569
|
shadow.forEach((item, index) => {
|
|
10512
10570
|
let otherScale = 1;
|
|
10513
10571
|
if (item.scaleFixed) {
|
|
@@ -10515,54 +10573,61 @@ function shadow(ui, current, shape) {
|
|
|
10515
10573
|
if (sx > 1) otherScale = 1 / sx;
|
|
10516
10574
|
}
|
|
10517
10575
|
other.setWorldShadow(offsetOutBounds$1.offsetX + item.x * scaleX * otherScale, offsetOutBounds$1.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale, ColorConvert.string(item.color));
|
|
10518
|
-
|
|
10519
|
-
|
|
10520
|
-
|
|
10576
|
+
transform = getShadowTransform(ui, other, shape, item, offsetOutBounds$1, otherScale);
|
|
10577
|
+
if (transform) other.setTransform(transform);
|
|
10578
|
+
drawWorldShadow(other, offsetOutBounds$1, shape);
|
|
10579
|
+
if (transform) other.resetTransform();
|
|
10580
|
+
copyBounds = renderBounds;
|
|
10521
10581
|
if (item.box) {
|
|
10522
10582
|
other.restore();
|
|
10523
10583
|
other.save();
|
|
10524
10584
|
if (worldCanvas) {
|
|
10525
|
-
other.copyWorld(other,
|
|
10585
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
10526
10586
|
copyBounds = nowWorld;
|
|
10527
10587
|
}
|
|
10528
10588
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, "destination-out") : other.copyWorld(shape.canvas, shapeBounds, bounds, "destination-out");
|
|
10529
10589
|
}
|
|
10530
|
-
|
|
10590
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
10531
10591
|
if (end && index < end) other.clearWorld(copyBounds);
|
|
10532
10592
|
});
|
|
10533
10593
|
other.recycle(copyBounds);
|
|
10534
10594
|
}
|
|
10535
10595
|
|
|
10536
|
-
function
|
|
10537
|
-
let
|
|
10538
|
-
shadow.forEach(item =>
|
|
10539
|
-
|
|
10596
|
+
function getShadowRenderSpread(_ui, shadow) {
|
|
10597
|
+
let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
|
|
10598
|
+
shadow.forEach(item => {
|
|
10599
|
+
x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
|
|
10600
|
+
top = max(top, spread + blur - y);
|
|
10601
|
+
right = max(right, spread + blur + x);
|
|
10602
|
+
bottom = max(bottom, spread + blur + y);
|
|
10603
|
+
left = max(left, spread + blur - x);
|
|
10604
|
+
});
|
|
10605
|
+
return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
|
|
10606
|
+
}
|
|
10607
|
+
|
|
10608
|
+
function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
|
|
10609
|
+
if (shadow.spread) {
|
|
10610
|
+
const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
|
|
10611
|
+
tempMatrix.set().scaleOfOuter({
|
|
10612
|
+
x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
|
|
10613
|
+
y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
|
|
10614
|
+
}, spreadScale);
|
|
10615
|
+
return tempMatrix;
|
|
10616
|
+
}
|
|
10617
|
+
return undefined;
|
|
10540
10618
|
}
|
|
10541
10619
|
|
|
10542
|
-
function drawWorldShadow(canvas, outBounds,
|
|
10543
|
-
const {
|
|
10620
|
+
function drawWorldShadow(canvas, outBounds, shape) {
|
|
10621
|
+
const {shapeBounds: shapeBounds} = shape;
|
|
10622
|
+
let from, to;
|
|
10544
10623
|
if (Platform.fullImageShadow) {
|
|
10545
10624
|
copy(tempBounds, canvas.bounds);
|
|
10546
|
-
tempBounds.x
|
|
10547
|
-
|
|
10548
|
-
if (spreadScale) {
|
|
10549
|
-
const {fitMatrix: fitMatrix} = shape;
|
|
10550
|
-
tempBounds.x -= (bounds.x + (fitMatrix ? fitMatrix.e : 0) + bounds.width / 2) * (spreadScale - 1);
|
|
10551
|
-
tempBounds.y -= (bounds.y + (fitMatrix ? fitMatrix.f : 0) + bounds.height / 2) * (spreadScale - 1);
|
|
10552
|
-
tempBounds.width *= spreadScale;
|
|
10553
|
-
tempBounds.height *= spreadScale;
|
|
10554
|
-
}
|
|
10555
|
-
canvas.copyWorld(shape.canvas, canvas.bounds, tempBounds);
|
|
10625
|
+
move(tempBounds, outBounds.x - shapeBounds.x, outBounds.y - shapeBounds.y);
|
|
10626
|
+
from = canvas.bounds, to = tempBounds;
|
|
10556
10627
|
} else {
|
|
10557
|
-
|
|
10558
|
-
copy(tempBounds, outBounds);
|
|
10559
|
-
tempBounds.x -= outBounds.width / 2 * (spreadScale - 1);
|
|
10560
|
-
tempBounds.y -= outBounds.height / 2 * (spreadScale - 1);
|
|
10561
|
-
tempBounds.width *= spreadScale;
|
|
10562
|
-
tempBounds.height *= spreadScale;
|
|
10563
|
-
}
|
|
10564
|
-
canvas.copyWorld(shape.canvas, shapeBounds, spreadScale ? tempBounds : outBounds);
|
|
10628
|
+
from = shapeBounds, to = outBounds;
|
|
10565
10629
|
}
|
|
10630
|
+
canvas.copyWorld(shape.canvas, from, to);
|
|
10566
10631
|
}
|
|
10567
10632
|
|
|
10568
10633
|
const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
@@ -10570,13 +10635,13 @@ const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
|
10570
10635
|
const offsetOutBounds = {};
|
|
10571
10636
|
|
|
10572
10637
|
function innerShadow(ui, current, shape) {
|
|
10573
|
-
let copyBounds,
|
|
10574
|
-
const {__nowWorld: nowWorld
|
|
10638
|
+
let copyBounds, transform;
|
|
10639
|
+
const {__nowWorld: nowWorld} = ui;
|
|
10575
10640
|
const {innerShadow: innerShadow} = ui.__;
|
|
10576
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
10641
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
10577
10642
|
const other = current.getSameCanvas();
|
|
10578
10643
|
const end = innerShadow.length - 1;
|
|
10579
|
-
toOffsetOutBounds(bounds, offsetOutBounds);
|
|
10644
|
+
toOffsetOutBounds(bounds, offsetOutBounds, renderBounds);
|
|
10580
10645
|
innerShadow.forEach((item, index) => {
|
|
10581
10646
|
let otherScale = 1;
|
|
10582
10647
|
if (item.scaleFixed) {
|
|
@@ -10585,16 +10650,17 @@ function innerShadow(ui, current, shape) {
|
|
|
10585
10650
|
}
|
|
10586
10651
|
other.save();
|
|
10587
10652
|
other.setWorldShadow(offsetOutBounds.offsetX + item.x * scaleX * otherScale, offsetOutBounds.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale);
|
|
10588
|
-
|
|
10589
|
-
|
|
10653
|
+
transform = getShadowTransform(ui, other, shape, item, offsetOutBounds, otherScale, true);
|
|
10654
|
+
if (transform) other.setTransform(transform);
|
|
10655
|
+
drawWorldShadow(other, offsetOutBounds, shape);
|
|
10590
10656
|
other.restore();
|
|
10591
10657
|
if (worldCanvas) {
|
|
10592
|
-
other.copyWorld(other,
|
|
10658
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
10593
10659
|
other.copyWorld(worldCanvas, nowWorld, nowWorld, "source-out");
|
|
10594
10660
|
copyBounds = nowWorld;
|
|
10595
10661
|
} else {
|
|
10596
10662
|
other.copyWorld(shape.canvas, shapeBounds, bounds, "source-out");
|
|
10597
|
-
copyBounds =
|
|
10663
|
+
copyBounds = renderBounds;
|
|
10598
10664
|
}
|
|
10599
10665
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), "source-in");
|
|
10600
10666
|
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
@@ -10603,6 +10669,8 @@ function innerShadow(ui, current, shape) {
|
|
|
10603
10669
|
other.recycle(copyBounds);
|
|
10604
10670
|
}
|
|
10605
10671
|
|
|
10672
|
+
const getInnerShadowSpread = getShadowRenderSpread;
|
|
10673
|
+
|
|
10606
10674
|
function blur(ui, current, origin) {
|
|
10607
10675
|
const {blur: blur} = ui.__;
|
|
10608
10676
|
origin.setWorldBlur(blur * ui.__nowWorld.a);
|
|
@@ -10617,10 +10685,12 @@ const EffectModule = {
|
|
|
10617
10685
|
innerShadow: innerShadow,
|
|
10618
10686
|
blur: blur,
|
|
10619
10687
|
backgroundBlur: backgroundBlur,
|
|
10620
|
-
|
|
10688
|
+
getShadowRenderSpread: getShadowRenderSpread,
|
|
10689
|
+
getShadowTransform: getShadowTransform,
|
|
10621
10690
|
isTransformShadow(_shadow) {
|
|
10622
10691
|
return undefined;
|
|
10623
|
-
}
|
|
10692
|
+
},
|
|
10693
|
+
getInnerShadowSpread: getInnerShadowSpread
|
|
10624
10694
|
};
|
|
10625
10695
|
|
|
10626
10696
|
const {excludeRenderBounds: excludeRenderBounds} = LeafBoundsHelper;
|
|
@@ -10637,6 +10707,7 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
10637
10707
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity, undefined, true);
|
|
10638
10708
|
maskCanvas = contentCanvas = null;
|
|
10639
10709
|
}
|
|
10710
|
+
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
10640
10711
|
maskOpacity = child.__.opacity;
|
|
10641
10712
|
usedGrayscaleAlpha = false;
|
|
10642
10713
|
if (mask === "path" || mask === "clipping-path") {
|
|
@@ -10654,7 +10725,6 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
10654
10725
|
if (!contentCanvas) contentCanvas = getCanvas(canvas);
|
|
10655
10726
|
child.__render(maskCanvas, options);
|
|
10656
10727
|
}
|
|
10657
|
-
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
10658
10728
|
continue;
|
|
10659
10729
|
}
|
|
10660
10730
|
const childBlendMode = maskOpacity === 1 && child.__.__blendMode;
|
|
@@ -11244,4 +11314,4 @@ Object.assign(Effect, EffectModule);
|
|
|
11244
11314
|
|
|
11245
11315
|
useCanvas();
|
|
11246
11316
|
|
|
11247
|
-
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, 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$
|
|
11317
|
+
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, FourNumberHelper, 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, 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 };
|