leafer-draw 1.9.6 → 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 +117 -81
- package/dist/web.esm.js +119 -83
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +274 -181
- 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 +283 -181
- 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;
|
|
258
264
|
},
|
|
259
|
-
|
|
265
|
+
setTemp(top, right, bottom, left) {
|
|
266
|
+
return set$1(tempFour, top, right, bottom, left);
|
|
267
|
+
},
|
|
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) {
|
|
@@ -423,6 +469,15 @@ const MatrixHelper = {
|
|
|
423
469
|
t.c *= scaleY;
|
|
424
470
|
t.d *= scaleY;
|
|
425
471
|
},
|
|
472
|
+
pixelScale(t, pixelRatio, to) {
|
|
473
|
+
to || (to = t);
|
|
474
|
+
to.a = t.a * pixelRatio;
|
|
475
|
+
to.b = t.b * pixelRatio;
|
|
476
|
+
to.c = t.c * pixelRatio;
|
|
477
|
+
to.d = t.d * pixelRatio;
|
|
478
|
+
to.e = t.e * pixelRatio;
|
|
479
|
+
to.f = t.f * pixelRatio;
|
|
480
|
+
},
|
|
426
481
|
scaleOfOuter(t, origin, scaleX, scaleY) {
|
|
427
482
|
M$6.toInnerPoint(t, origin, tempPoint$3);
|
|
428
483
|
M$6.scaleOfInner(t, tempPoint$3, scaleX, scaleY);
|
|
@@ -922,6 +977,10 @@ class Matrix {
|
|
|
922
977
|
this.scaleY *= y || x;
|
|
923
978
|
return this;
|
|
924
979
|
}
|
|
980
|
+
pixelScale(pixelRatio) {
|
|
981
|
+
MatrixHelper.pixelScale(this, pixelRatio);
|
|
982
|
+
return this;
|
|
983
|
+
}
|
|
925
984
|
scaleOfOuter(origin, x, y) {
|
|
926
985
|
MatrixHelper.scaleOfOuter(this, origin, x, y);
|
|
927
986
|
return this;
|
|
@@ -1001,7 +1060,7 @@ class Matrix {
|
|
|
1001
1060
|
}
|
|
1002
1061
|
}
|
|
1003
1062
|
|
|
1004
|
-
const tempMatrix$
|
|
1063
|
+
const tempMatrix$2 = new Matrix;
|
|
1005
1064
|
|
|
1006
1065
|
const TwoPointBoundsHelper = {
|
|
1007
1066
|
tempPointBounds: {},
|
|
@@ -1151,10 +1210,10 @@ const point = {};
|
|
|
1151
1210
|
|
|
1152
1211
|
const toPoint$4 = {};
|
|
1153
1212
|
|
|
1154
|
-
const tempBounds$
|
|
1213
|
+
const tempBounds$3 = {};
|
|
1155
1214
|
|
|
1156
1215
|
const BoundsHelper = {
|
|
1157
|
-
tempBounds: tempBounds$
|
|
1216
|
+
tempBounds: tempBounds$3,
|
|
1158
1217
|
set(t, x = 0, y = 0, width = 0, height = 0) {
|
|
1159
1218
|
t.x = x;
|
|
1160
1219
|
t.y = y;
|
|
@@ -1205,19 +1264,11 @@ const BoundsHelper = {
|
|
|
1205
1264
|
B.move(t, x, y);
|
|
1206
1265
|
return t;
|
|
1207
1266
|
},
|
|
1208
|
-
toOffsetOutBounds(t, to,
|
|
1209
|
-
if (!to)
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
}
|
|
1214
|
-
if (parent) {
|
|
1215
|
-
to.offsetX = -(B.maxX(parent) - t.x);
|
|
1216
|
-
to.offsetY = -(B.maxY(parent) - t.y);
|
|
1217
|
-
} else {
|
|
1218
|
-
to.offsetX = t.x + t.width;
|
|
1219
|
-
to.offsetY = t.y + t.height;
|
|
1220
|
-
}
|
|
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);
|
|
1221
1272
|
B.move(to, -to.offsetX, -to.offsetY);
|
|
1222
1273
|
},
|
|
1223
1274
|
scale(t, scaleX, scaleY = scaleX, onlySize) {
|
|
@@ -1231,9 +1282,9 @@ const BoundsHelper = {
|
|
|
1231
1282
|
t.height *= scaleY;
|
|
1232
1283
|
},
|
|
1233
1284
|
tempToOuterOf(t, matrix) {
|
|
1234
|
-
B.copy(tempBounds$
|
|
1235
|
-
B.toOuterOf(tempBounds$
|
|
1236
|
-
return tempBounds$
|
|
1285
|
+
B.copy(tempBounds$3, t);
|
|
1286
|
+
B.toOuterOf(tempBounds$3, matrix);
|
|
1287
|
+
return tempBounds$3;
|
|
1237
1288
|
},
|
|
1238
1289
|
getOuterOf(t, matrix) {
|
|
1239
1290
|
t = Object.assign({}, t);
|
|
@@ -1291,9 +1342,9 @@ const BoundsHelper = {
|
|
|
1291
1342
|
put(t, put, align = "center", putScale = 1, changeSize = true, to) {
|
|
1292
1343
|
to || (to = put);
|
|
1293
1344
|
if (isString(putScale)) putScale = B.getFitScale(t, put, putScale === "cover");
|
|
1294
|
-
tempBounds$
|
|
1295
|
-
tempBounds$
|
|
1296
|
-
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);
|
|
1297
1348
|
},
|
|
1298
1349
|
getSpread(t, spread, side) {
|
|
1299
1350
|
const n = {};
|
|
@@ -1363,7 +1414,7 @@ const BoundsHelper = {
|
|
|
1363
1414
|
first = false;
|
|
1364
1415
|
if (!addMode) copy$8(t, bounds);
|
|
1365
1416
|
} else {
|
|
1366
|
-
add$
|
|
1417
|
+
add$2(t, bounds);
|
|
1367
1418
|
}
|
|
1368
1419
|
}
|
|
1369
1420
|
}
|
|
@@ -1377,7 +1428,7 @@ const BoundsHelper = {
|
|
|
1377
1428
|
B.set(t, point.x, point.y);
|
|
1378
1429
|
},
|
|
1379
1430
|
addPoint(t, point) {
|
|
1380
|
-
add$
|
|
1431
|
+
add$2(t, point, true);
|
|
1381
1432
|
},
|
|
1382
1433
|
getPoints(t) {
|
|
1383
1434
|
const {x: x, y: y, width: width, height: height} = t;
|
|
@@ -1448,7 +1499,7 @@ const BoundsHelper = {
|
|
|
1448
1499
|
|
|
1449
1500
|
const B = BoundsHelper;
|
|
1450
1501
|
|
|
1451
|
-
const {add: add$
|
|
1502
|
+
const {add: add$2, copy: copy$8} = B;
|
|
1452
1503
|
|
|
1453
1504
|
class Bounds {
|
|
1454
1505
|
get minX() {
|
|
@@ -1593,7 +1644,7 @@ class Bounds {
|
|
|
1593
1644
|
}
|
|
1594
1645
|
}
|
|
1595
1646
|
|
|
1596
|
-
const tempBounds$
|
|
1647
|
+
const tempBounds$2 = new Bounds;
|
|
1597
1648
|
|
|
1598
1649
|
class AutoBounds {
|
|
1599
1650
|
constructor(top, right, bottom, left, width, height) {
|
|
@@ -2146,7 +2197,7 @@ __decorate([ contextMethod() ], Canvas$1.prototype, "measureText", null);
|
|
|
2146
2197
|
|
|
2147
2198
|
__decorate([ contextMethod() ], Canvas$1.prototype, "strokeText", null);
|
|
2148
2199
|
|
|
2149
|
-
const {copy: copy$7, multiplyParent: multiplyParent$4} = MatrixHelper, {round: round$1} = Math, tempPixelBounds = new Bounds, tempPixelBounds2 = new Bounds;
|
|
2200
|
+
const {copy: copy$7, multiplyParent: multiplyParent$4, pixelScale: pixelScale} = MatrixHelper, {round: round$1} = Math, tempPixelBounds = new Bounds, tempPixelBounds2 = new Bounds;
|
|
2150
2201
|
|
|
2151
2202
|
const minSize = {
|
|
2152
2203
|
width: 1,
|
|
@@ -2247,13 +2298,8 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2247
2298
|
setWorld(matrix, parentMatrix) {
|
|
2248
2299
|
const {pixelRatio: pixelRatio, pixelSnap: pixelSnap} = this, w = this.worldTransform;
|
|
2249
2300
|
if (parentMatrix) multiplyParent$4(matrix, parentMatrix, w);
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
w.c = matrix.c * pixelRatio;
|
|
2253
|
-
w.d = matrix.d * pixelRatio;
|
|
2254
|
-
w.e = matrix.e * pixelRatio;
|
|
2255
|
-
w.f = matrix.f * pixelRatio;
|
|
2256
|
-
if (pixelSnap) {
|
|
2301
|
+
pixelScale(matrix, pixelRatio, w);
|
|
2302
|
+
if (pixelSnap && !matrix.ignorePixelSnap) {
|
|
2257
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),
|
|
2258
2304
|
w.f = round$1(w.f);
|
|
2259
2305
|
}
|
|
@@ -3977,7 +4023,7 @@ const I = ImageManager;
|
|
|
3977
4023
|
|
|
3978
4024
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
3979
4025
|
|
|
3980
|
-
const {floor: floor$1, max: max$
|
|
4026
|
+
const {floor: floor$1, max: max$3} = Math;
|
|
3981
4027
|
|
|
3982
4028
|
class LeaferImage {
|
|
3983
4029
|
get url() {
|
|
@@ -4066,7 +4112,7 @@ class LeaferImage {
|
|
|
4066
4112
|
}
|
|
4067
4113
|
if (data) return data;
|
|
4068
4114
|
}
|
|
4069
|
-
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));
|
|
4070
4116
|
const ctx = canvas.getContext("2d");
|
|
4071
4117
|
if (opacity) ctx.globalAlpha = opacity;
|
|
4072
4118
|
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
@@ -4265,6 +4311,18 @@ function surfaceType(defaultValue) {
|
|
|
4265
4311
|
}));
|
|
4266
4312
|
}
|
|
4267
4313
|
|
|
4314
|
+
function dimType(defaultValue) {
|
|
4315
|
+
return decorateLeafAttr(defaultValue, key => attr({
|
|
4316
|
+
set(value) {
|
|
4317
|
+
if (this.__setAttr(key, value)) {
|
|
4318
|
+
const data = this.__;
|
|
4319
|
+
DataHelper.stintSet(data, "__useDim", data.dim || data.bright || data.dimskip);
|
|
4320
|
+
this.__layout.surfaceChange();
|
|
4321
|
+
}
|
|
4322
|
+
}
|
|
4323
|
+
}));
|
|
4324
|
+
}
|
|
4325
|
+
|
|
4268
4326
|
function opacityType(defaultValue) {
|
|
4269
4327
|
return decorateLeafAttr(defaultValue, key => attr({
|
|
4270
4328
|
set(value) {
|
|
@@ -4309,7 +4367,7 @@ function sortType(defaultValue) {
|
|
|
4309
4367
|
return decorateLeafAttr(defaultValue, key => attr({
|
|
4310
4368
|
set(value) {
|
|
4311
4369
|
if (this.__setAttr(key, value)) {
|
|
4312
|
-
this.__layout.
|
|
4370
|
+
this.__layout.surfaceChange();
|
|
4313
4371
|
this.waitParent(() => {
|
|
4314
4372
|
this.parent.__layout.childrenSortChange();
|
|
4315
4373
|
});
|
|
@@ -4346,7 +4404,7 @@ function hitType(defaultValue) {
|
|
|
4346
4404
|
set(value) {
|
|
4347
4405
|
if (this.__setAttr(key, value)) {
|
|
4348
4406
|
this.__layout.hitCanvasChanged = true;
|
|
4349
|
-
if (Debug.showBounds === "hit") this.__layout.
|
|
4407
|
+
if (Debug.showBounds === "hit") this.__layout.surfaceChange();
|
|
4350
4408
|
if (this.leafer) this.leafer.updateCursor();
|
|
4351
4409
|
}
|
|
4352
4410
|
}
|
|
@@ -4848,7 +4906,7 @@ const WaitHelper = {
|
|
|
4848
4906
|
|
|
4849
4907
|
const {getRelativeWorld: getRelativeWorld$1, updateBounds: updateBounds$2} = LeafHelper;
|
|
4850
4908
|
|
|
4851
|
-
const {toOuterOf: toOuterOf$
|
|
4909
|
+
const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$4} = BoundsHelper;
|
|
4852
4910
|
|
|
4853
4911
|
const localContent = "_localContentBounds";
|
|
4854
4912
|
|
|
@@ -4871,7 +4929,7 @@ class LeafLayout {
|
|
|
4871
4929
|
this._renderBounds = bounds;
|
|
4872
4930
|
}
|
|
4873
4931
|
get localContentBounds() {
|
|
4874
|
-
toOuterOf$
|
|
4932
|
+
toOuterOf$3(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {}));
|
|
4875
4933
|
return this[localContent];
|
|
4876
4934
|
}
|
|
4877
4935
|
get localStrokeBounds() {
|
|
@@ -4881,15 +4939,15 @@ class LeafLayout {
|
|
|
4881
4939
|
return this._localRenderBounds || this;
|
|
4882
4940
|
}
|
|
4883
4941
|
get worldContentBounds() {
|
|
4884
|
-
toOuterOf$
|
|
4942
|
+
toOuterOf$3(this.contentBounds, this.leaf.__world, this[worldContent] || (this[worldContent] = {}));
|
|
4885
4943
|
return this[worldContent];
|
|
4886
4944
|
}
|
|
4887
4945
|
get worldBoxBounds() {
|
|
4888
|
-
toOuterOf$
|
|
4946
|
+
toOuterOf$3(this.boxBounds, this.leaf.__world, this[worldBox] || (this[worldBox] = {}));
|
|
4889
4947
|
return this[worldBox];
|
|
4890
4948
|
}
|
|
4891
4949
|
get worldStrokeBounds() {
|
|
4892
|
-
toOuterOf$
|
|
4950
|
+
toOuterOf$3(this.strokeBounds, this.leaf.__world, this[worldStroke] || (this[worldStroke] = {}));
|
|
4893
4951
|
return this[worldStroke];
|
|
4894
4952
|
}
|
|
4895
4953
|
get a() {
|
|
@@ -5741,14 +5799,14 @@ const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafH
|
|
|
5741
5799
|
|
|
5742
5800
|
const {updateBounds: updateBounds$1} = BranchHelper;
|
|
5743
5801
|
|
|
5744
|
-
const {toOuterOf: toOuterOf$
|
|
5802
|
+
const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$3} = BoundsHelper;
|
|
5745
5803
|
|
|
5746
5804
|
const {toBounds: toBounds} = PathBounds;
|
|
5747
5805
|
|
|
5748
5806
|
const LeafBounds = {
|
|
5749
5807
|
__updateWorldBounds() {
|
|
5750
5808
|
const layout = this.__layout;
|
|
5751
|
-
toOuterOf$
|
|
5809
|
+
toOuterOf$2(layout.renderBounds, this.__world, this.__world);
|
|
5752
5810
|
if (layout.resized) {
|
|
5753
5811
|
if (layout.resized === "inner") this.__onUpdateSize();
|
|
5754
5812
|
if (this.__hasLocalEvent) BoundsEvent.emitLocal(this);
|
|
@@ -5804,13 +5862,13 @@ const LeafBounds = {
|
|
|
5804
5862
|
__updateLocalBoxBounds() {
|
|
5805
5863
|
if (this.__hasMotionPath) this.__updateMotionPath();
|
|
5806
5864
|
if (this.__hasAutoLayout) this.__updateAutoLayout();
|
|
5807
|
-
toOuterOf$
|
|
5865
|
+
toOuterOf$2(this.__layout.boxBounds, this.__local, this.__local);
|
|
5808
5866
|
},
|
|
5809
5867
|
__updateLocalStrokeBounds() {
|
|
5810
|
-
toOuterOf$
|
|
5868
|
+
toOuterOf$2(this.__layout.strokeBounds, this.__localMatrix, this.__layout.localStrokeBounds);
|
|
5811
5869
|
},
|
|
5812
5870
|
__updateLocalRenderBounds() {
|
|
5813
|
-
toOuterOf$
|
|
5871
|
+
toOuterOf$2(this.__layout.renderBounds, this.__localMatrix, this.__layout.localRenderBounds);
|
|
5814
5872
|
},
|
|
5815
5873
|
__updateBoxBounds(_secondLayout, _bounds) {
|
|
5816
5874
|
const b = this.__layout.boxBounds;
|
|
@@ -5848,11 +5906,11 @@ const LeafBounds = {
|
|
|
5848
5906
|
},
|
|
5849
5907
|
__updateStrokeBounds(_bounds) {
|
|
5850
5908
|
const layout = this.__layout;
|
|
5851
|
-
copyAndSpread$
|
|
5909
|
+
copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
|
|
5852
5910
|
},
|
|
5853
5911
|
__updateRenderBounds(_bounds) {
|
|
5854
|
-
const layout = this.__layout;
|
|
5855
|
-
|
|
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);
|
|
5856
5914
|
}
|
|
5857
5915
|
};
|
|
5858
5916
|
|
|
@@ -5861,6 +5919,7 @@ const LeafRender = {
|
|
|
5861
5919
|
if (options.shape) return this.__renderShape(canvas, options);
|
|
5862
5920
|
if (this.__worldOpacity) {
|
|
5863
5921
|
const data = this.__;
|
|
5922
|
+
if (data.bright && !options.topRendering) return options.topList.add(this);
|
|
5864
5923
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
5865
5924
|
canvas.opacity = options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
5866
5925
|
if (this.__.__single) {
|
|
@@ -5909,7 +5968,9 @@ const BranchRender = {
|
|
|
5909
5968
|
this.__nowWorld = this.__getNowWorld(options);
|
|
5910
5969
|
if (this.__worldOpacity) {
|
|
5911
5970
|
const data = this.__;
|
|
5912
|
-
if (data.
|
|
5971
|
+
if (data.__useDim) {
|
|
5972
|
+
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);
|
|
5973
|
+
}
|
|
5913
5974
|
if (data.__single && !this.isBranchLeaf) {
|
|
5914
5975
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
5915
5976
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
@@ -5947,11 +6008,13 @@ const tempScaleData$1 = {};
|
|
|
5947
6008
|
|
|
5948
6009
|
const {LEAF: LEAF, create: create} = IncrementId;
|
|
5949
6010
|
|
|
6011
|
+
const {stintSet: stintSet$3} = DataHelper;
|
|
6012
|
+
|
|
5950
6013
|
const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: multiplyParent$1} = MatrixHelper;
|
|
5951
6014
|
|
|
5952
|
-
const {toOuterOf: toOuterOf} = BoundsHelper;
|
|
6015
|
+
const {toOuterOf: toOuterOf$1} = BoundsHelper;
|
|
5953
6016
|
|
|
5954
|
-
const {copy: copy$2, move: move} = PointHelper;
|
|
6017
|
+
const {copy: copy$2, move: move$2} = PointHelper;
|
|
5955
6018
|
|
|
5956
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;
|
|
5957
6020
|
|
|
@@ -6227,8 +6290,9 @@ let Leaf = class Leaf {
|
|
|
6227
6290
|
if (!this.__cameraWorld) this.__cameraWorld = {};
|
|
6228
6291
|
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
6229
6292
|
multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
|
|
6230
|
-
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
6231
|
-
cameraWorld
|
|
6293
|
+
toOuterOf$1(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
6294
|
+
stintSet$3(cameraWorld, "half", world.half);
|
|
6295
|
+
stintSet$3(cameraWorld, "ignorePixelSnap", world.ignorePixelSnap);
|
|
6232
6296
|
return cameraWorld;
|
|
6233
6297
|
} else {
|
|
6234
6298
|
return this.__world;
|
|
@@ -6262,7 +6326,7 @@ let Leaf = class Leaf {
|
|
|
6262
6326
|
getWorldBounds(inner, relative, change) {
|
|
6263
6327
|
const matrix = relative ? getRelativeWorld(this, relative) : this.worldTransform;
|
|
6264
6328
|
const to = change ? inner : {};
|
|
6265
|
-
toOuterOf(inner, matrix, to);
|
|
6329
|
+
toOuterOf$1(inner, matrix, to);
|
|
6266
6330
|
return to;
|
|
6267
6331
|
}
|
|
6268
6332
|
worldToLocal(world, to, distance, relative) {
|
|
@@ -6295,7 +6359,7 @@ let Leaf = class Leaf {
|
|
|
6295
6359
|
}
|
|
6296
6360
|
getBoxPointByInner(inner, _relative, _distance, change) {
|
|
6297
6361
|
const point = change ? inner : Object.assign({}, inner), {x: x, y: y} = this.boxBounds;
|
|
6298
|
-
move(point, -x, -y);
|
|
6362
|
+
move$2(point, -x, -y);
|
|
6299
6363
|
return point;
|
|
6300
6364
|
}
|
|
6301
6365
|
getInnerPoint(world, relative, distance, change) {
|
|
@@ -6305,7 +6369,7 @@ let Leaf = class Leaf {
|
|
|
6305
6369
|
}
|
|
6306
6370
|
getInnerPointByBox(box, _relative, _distance, change) {
|
|
6307
6371
|
const point = change ? box : Object.assign({}, box), {x: x, y: y} = this.boxBounds;
|
|
6308
|
-
move(point, x, y);
|
|
6372
|
+
move$2(point, x, y);
|
|
6309
6373
|
return point;
|
|
6310
6374
|
}
|
|
6311
6375
|
getInnerPointByLocal(local, _relative, distance, change) {
|
|
@@ -6751,7 +6815,7 @@ class LeafLevelList {
|
|
|
6751
6815
|
}
|
|
6752
6816
|
}
|
|
6753
6817
|
|
|
6754
|
-
const version = "1.9.
|
|
6818
|
+
const version = "1.9.8";
|
|
6755
6819
|
|
|
6756
6820
|
const debug$4 = Debug.get("LeaferCanvas");
|
|
6757
6821
|
|
|
@@ -6786,7 +6850,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6786
6850
|
}
|
|
6787
6851
|
if (Platform.syncDomFont && !this.parentView) {
|
|
6788
6852
|
style.display = "none";
|
|
6789
|
-
document.body.appendChild(this.view);
|
|
6853
|
+
if (document.body) document.body.appendChild(this.view);
|
|
6790
6854
|
}
|
|
6791
6855
|
this.__createContext();
|
|
6792
6856
|
if (!this.autoLayout) this.resize(config);
|
|
@@ -7382,6 +7446,7 @@ class Renderer {
|
|
|
7382
7446
|
usePartRender: true,
|
|
7383
7447
|
maxFPS: 120
|
|
7384
7448
|
};
|
|
7449
|
+
this.frames = [];
|
|
7385
7450
|
this.target = target;
|
|
7386
7451
|
this.canvas = canvas;
|
|
7387
7452
|
if (userConfig) this.config = DataHelper.default(userConfig, this.config);
|
|
@@ -7511,7 +7576,7 @@ class Renderer {
|
|
|
7511
7576
|
};
|
|
7512
7577
|
if (this.needFill) canvas.fillWorld(bounds, this.config.fill);
|
|
7513
7578
|
if (Debug.showRepaint) Debug.drawRepaint(canvas, bounds);
|
|
7514
|
-
this.target
|
|
7579
|
+
Platform.render(this.target, canvas, options);
|
|
7515
7580
|
this.renderBounds = realBounds = realBounds || bounds;
|
|
7516
7581
|
this.renderOptions = options;
|
|
7517
7582
|
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
@@ -7534,12 +7599,15 @@ class Renderer {
|
|
|
7534
7599
|
const target = this.target;
|
|
7535
7600
|
if (this.requestTime || !target) return;
|
|
7536
7601
|
if (target.parentApp) return target.parentApp.requestRender(false);
|
|
7537
|
-
|
|
7602
|
+
this.requestTime = this.frameTime || Date.now();
|
|
7538
7603
|
const render = () => {
|
|
7539
|
-
const nowFPS = 1e3 / (Date.now() - requestTime);
|
|
7604
|
+
const nowFPS = 1e3 / ((this.frameTime = Date.now()) - this.requestTime);
|
|
7540
7605
|
const {maxFPS: maxFPS} = this.config;
|
|
7541
|
-
if (maxFPS && nowFPS > maxFPS
|
|
7542
|
-
|
|
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);
|
|
7543
7611
|
this.requestTime = 0;
|
|
7544
7612
|
this.checkRender();
|
|
7545
7613
|
};
|
|
@@ -7604,6 +7672,15 @@ Object.assign(Creator, {
|
|
|
7604
7672
|
|
|
7605
7673
|
Platform.layout = Layouter.fullLayout;
|
|
7606
7674
|
|
|
7675
|
+
Platform.render = function(target, canvas, options) {
|
|
7676
|
+
const topOptions = Object.assign(Object.assign({}, options), {
|
|
7677
|
+
topRendering: true
|
|
7678
|
+
});
|
|
7679
|
+
options.topList = new LeafList;
|
|
7680
|
+
target.__render(canvas, options);
|
|
7681
|
+
if (options.topList.length) options.topList.forEach(item => item.__render(canvas, topOptions));
|
|
7682
|
+
};
|
|
7683
|
+
|
|
7607
7684
|
function effectType(defaultValue) {
|
|
7608
7685
|
return decorateLeafAttr(defaultValue, key => attr({
|
|
7609
7686
|
set(value) {
|
|
@@ -8003,39 +8080,41 @@ class CanvasData extends RectData {
|
|
|
8003
8080
|
}
|
|
8004
8081
|
}
|
|
8005
8082
|
|
|
8083
|
+
const {max: max$2, add: add$1} = FourNumberHelper;
|
|
8084
|
+
|
|
8006
8085
|
const UIBounds = {
|
|
8007
8086
|
__updateStrokeSpread() {
|
|
8008
|
-
let
|
|
8087
|
+
let spread = 0, boxSpread = 0;
|
|
8009
8088
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8010
8089
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8011
|
-
|
|
8090
|
+
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8012
8091
|
if (!data.__boxStroke) {
|
|
8013
|
-
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 *
|
|
8092
|
+
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8014
8093
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8015
|
-
|
|
8094
|
+
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
8016
8095
|
}
|
|
8017
8096
|
}
|
|
8018
|
-
if (data.__useArrow)
|
|
8097
|
+
if (data.__useArrow) spread += strokeWidth * 5;
|
|
8019
8098
|
if (box) {
|
|
8020
|
-
|
|
8021
|
-
|
|
8099
|
+
spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
|
|
8100
|
+
boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
|
|
8022
8101
|
}
|
|
8023
|
-
this.__layout.strokeBoxSpread =
|
|
8024
|
-
return
|
|
8102
|
+
this.__layout.strokeBoxSpread = boxSpread;
|
|
8103
|
+
return spread;
|
|
8025
8104
|
},
|
|
8026
8105
|
__updateRenderSpread() {
|
|
8027
|
-
let
|
|
8028
|
-
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__;
|
|
8029
|
-
if (shadow)
|
|
8030
|
-
if (blur)
|
|
8031
|
-
if (filter)
|
|
8032
|
-
if (renderSpread)
|
|
8033
|
-
|
|
8034
|
-
|
|
8035
|
-
if (
|
|
8036
|
-
|
|
8037
|
-
|
|
8038
|
-
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;
|
|
8039
8118
|
}
|
|
8040
8119
|
};
|
|
8041
8120
|
|
|
@@ -8379,9 +8458,9 @@ __decorate([ visibleType(true) ], UI.prototype, "visible", void 0);
|
|
|
8379
8458
|
|
|
8380
8459
|
__decorate([ surfaceType(false) ], UI.prototype, "locked", void 0);
|
|
8381
8460
|
|
|
8382
|
-
__decorate([
|
|
8461
|
+
__decorate([ dimType(false) ], UI.prototype, "dim", void 0);
|
|
8383
8462
|
|
|
8384
|
-
__decorate([
|
|
8463
|
+
__decorate([ dimType(false) ], UI.prototype, "dimskip", void 0);
|
|
8385
8464
|
|
|
8386
8465
|
__decorate([ sortType(0) ], UI.prototype, "zIndex", void 0);
|
|
8387
8466
|
|
|
@@ -9346,7 +9425,7 @@ __decorate([ resizeType() ], Canvas.prototype, "contextSettings", void 0);
|
|
|
9346
9425
|
|
|
9347
9426
|
Canvas = __decorate([ registerUI() ], Canvas);
|
|
9348
9427
|
|
|
9349
|
-
const {copyAndSpread: copyAndSpread, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9428
|
+
const {copyAndSpread: copyAndSpread$1, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9350
9429
|
|
|
9351
9430
|
let Text = class Text extends UI {
|
|
9352
9431
|
get __tag() {
|
|
@@ -9393,13 +9472,13 @@ let Text = class Text extends UI {
|
|
|
9393
9472
|
if (this.isOverflow) setList(data.__textBoxBounds = {}, [ b, contentBounds ]), layout.renderChanged = true; else data.__textBoxBounds = b;
|
|
9394
9473
|
}
|
|
9395
9474
|
__updateRenderSpread() {
|
|
9396
|
-
let
|
|
9397
|
-
if (!
|
|
9398
|
-
return
|
|
9475
|
+
let spread = super.__updateRenderSpread();
|
|
9476
|
+
if (!spread) spread = this.isOverflow ? 1 : 0;
|
|
9477
|
+
return spread;
|
|
9399
9478
|
}
|
|
9400
9479
|
__updateRenderBounds() {
|
|
9401
9480
|
const {renderBounds: renderBounds, renderSpread: renderSpread} = this.__layout;
|
|
9402
|
-
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9481
|
+
copyAndSpread$1(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9403
9482
|
if (this.__box) this.__box.__layout.renderBounds = renderBounds;
|
|
9404
9483
|
}
|
|
9405
9484
|
__updateChange() {
|
|
@@ -9767,24 +9846,29 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
9767
9846
|
}
|
|
9768
9847
|
}
|
|
9769
9848
|
|
|
9770
|
-
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 = {};
|
|
9771
9852
|
|
|
9772
9853
|
function shape(ui, current, options) {
|
|
9773
9854
|
const canvas = current.getSameCanvas();
|
|
9774
|
-
const nowWorld = ui.__nowWorld,
|
|
9775
|
-
|
|
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;
|
|
9776
9860
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
9777
|
-
if (currentBounds.includes(
|
|
9861
|
+
if (currentBounds.includes(nowWorldShapeBounds)) {
|
|
9778
9862
|
worldCanvas = canvas;
|
|
9779
|
-
bounds = shapeBounds =
|
|
9863
|
+
bounds = shapeBounds = nowWorldShapeBounds;
|
|
9864
|
+
renderBounds = nowWorld;
|
|
9780
9865
|
} else {
|
|
9781
|
-
const {renderShapeSpread: spread} = ui.__layout;
|
|
9782
9866
|
let worldClipBounds;
|
|
9783
9867
|
if (Platform.fullImageShadow) {
|
|
9784
|
-
worldClipBounds =
|
|
9868
|
+
worldClipBounds = nowWorldShapeBounds;
|
|
9785
9869
|
} else {
|
|
9786
|
-
const spreadBounds =
|
|
9787
|
-
worldClipBounds = getIntersectData(spreadBounds,
|
|
9870
|
+
const spreadBounds = layout.renderShapeSpread ? getSpread(currentBounds, FourNumberHelper.swapAndScale(layout.renderShapeSpread, scaleX, scaleY)) : currentBounds;
|
|
9871
|
+
worldClipBounds = getIntersectData(spreadBounds, nowWorldShapeBounds);
|
|
9788
9872
|
}
|
|
9789
9873
|
fitMatrix = currentBounds.getFitMatrix(worldClipBounds);
|
|
9790
9874
|
let {a: fitScaleX, d: fitScaleY} = fitMatrix;
|
|
@@ -9794,8 +9878,10 @@ function shape(ui, current, options) {
|
|
|
9794
9878
|
scaleX *= fitScaleX;
|
|
9795
9879
|
scaleY *= fitScaleY;
|
|
9796
9880
|
}
|
|
9797
|
-
shapeBounds = getOuterOf(
|
|
9881
|
+
shapeBounds = getOuterOf(nowWorldShapeBounds, fitMatrix);
|
|
9798
9882
|
bounds = getByMove(shapeBounds, -fitMatrix.e, -fitMatrix.f);
|
|
9883
|
+
renderBounds = getOuterOf(nowWorld, fitMatrix);
|
|
9884
|
+
move$1(renderBounds, -fitMatrix.e, -fitMatrix.f);
|
|
9799
9885
|
const userMatrix = options.matrix;
|
|
9800
9886
|
if (userMatrix) {
|
|
9801
9887
|
matrix = new Matrix(fitMatrix);
|
|
@@ -9814,6 +9900,7 @@ function shape(ui, current, options) {
|
|
|
9814
9900
|
matrix: matrix,
|
|
9815
9901
|
fitMatrix: fitMatrix,
|
|
9816
9902
|
bounds: bounds,
|
|
9903
|
+
renderBounds: renderBounds,
|
|
9817
9904
|
worldCanvas: worldCanvas,
|
|
9818
9905
|
shapeBounds: shapeBounds,
|
|
9819
9906
|
scaleX: scaleX,
|
|
@@ -9917,7 +10004,7 @@ const PaintModule = {
|
|
|
9917
10004
|
shape: shape
|
|
9918
10005
|
};
|
|
9919
10006
|
|
|
9920
|
-
let origin = {}, tempMatrix = getMatrixData();
|
|
10007
|
+
let origin = {}, tempMatrix$1 = getMatrixData();
|
|
9921
10008
|
|
|
9922
10009
|
const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
|
|
9923
10010
|
|
|
@@ -9932,12 +10019,12 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
9932
10019
|
data.transform = transform;
|
|
9933
10020
|
}
|
|
9934
10021
|
|
|
9935
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew,
|
|
10022
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY) {
|
|
9936
10023
|
const transform = get$3();
|
|
9937
10024
|
layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
|
|
9938
|
-
if (
|
|
9939
|
-
tempMatrix.a =
|
|
9940
|
-
multiplyParent(transform, tempMatrix);
|
|
10025
|
+
if (clipScaleX) {
|
|
10026
|
+
tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
|
|
10027
|
+
multiplyParent(transform, tempMatrix$1);
|
|
9941
10028
|
}
|
|
9942
10029
|
data.transform = transform;
|
|
9943
10030
|
}
|
|
@@ -10038,7 +10125,12 @@ function getPatternData(paint, box, image) {
|
|
|
10038
10125
|
|
|
10039
10126
|
case "normal":
|
|
10040
10127
|
case "clip":
|
|
10041
|
-
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
|
+
}
|
|
10042
10134
|
break;
|
|
10043
10135
|
|
|
10044
10136
|
case "repeat":
|
|
@@ -10196,7 +10288,7 @@ function ignoreRender(ui, value) {
|
|
|
10196
10288
|
|
|
10197
10289
|
const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
|
|
10198
10290
|
|
|
10199
|
-
const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
|
|
10291
|
+
const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
|
|
10200
10292
|
|
|
10201
10293
|
function createPattern(ui, paint, pixelRatio) {
|
|
10202
10294
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -10245,8 +10337,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10245
10337
|
if (transform || scaleX !== 1 || scaleY !== 1) {
|
|
10246
10338
|
const canvasWidth = width + (xGap || 0);
|
|
10247
10339
|
const canvasHeight = height + (yGap || 0);
|
|
10248
|
-
scaleX /= canvasWidth / max(floor(canvasWidth), 1);
|
|
10249
|
-
scaleY /= canvasHeight / max(floor(canvasHeight), 1);
|
|
10340
|
+
scaleX /= canvasWidth / max$1(floor(canvasWidth), 1);
|
|
10341
|
+
scaleY /= canvasHeight / max$1(floor(canvasHeight), 1);
|
|
10250
10342
|
if (!imageMatrix) {
|
|
10251
10343
|
imageMatrix = get$1();
|
|
10252
10344
|
if (transform) copy$1(imageMatrix, transform);
|
|
@@ -10272,17 +10364,15 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
10272
10364
|
if (allowDraw) {
|
|
10273
10365
|
if (data.repeat) {
|
|
10274
10366
|
allowDraw = false;
|
|
10275
|
-
} else {
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10280
|
-
|
|
10281
|
-
|
|
10282
|
-
height *= data.scaleY;
|
|
10283
|
-
}
|
|
10284
|
-
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;
|
|
10285
10374
|
}
|
|
10375
|
+
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
10286
10376
|
}
|
|
10287
10377
|
}
|
|
10288
10378
|
if (allowDraw) {
|
|
@@ -10462,20 +10552,20 @@ const PaintGradientModule = {
|
|
|
10462
10552
|
getTransform: getTransform
|
|
10463
10553
|
};
|
|
10464
10554
|
|
|
10465
|
-
const {copy: copy, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper;
|
|
10555
|
+
const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
|
|
10466
10556
|
|
|
10467
|
-
const tempBounds = {};
|
|
10557
|
+
const tempBounds = {}, tempMatrix = new Matrix;
|
|
10468
10558
|
|
|
10469
10559
|
const offsetOutBounds$1 = {};
|
|
10470
10560
|
|
|
10471
10561
|
function shadow(ui, current, shape) {
|
|
10472
|
-
let copyBounds,
|
|
10473
|
-
const {__nowWorld: nowWorld
|
|
10562
|
+
let copyBounds, transform;
|
|
10563
|
+
const {__nowWorld: nowWorld} = ui;
|
|
10474
10564
|
const {shadow: shadow} = ui.__;
|
|
10475
|
-
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;
|
|
10476
10566
|
const other = current.getSameCanvas();
|
|
10477
10567
|
const end = shadow.length - 1;
|
|
10478
|
-
toOffsetOutBounds$1(bounds, offsetOutBounds$1);
|
|
10568
|
+
toOffsetOutBounds$1(bounds, offsetOutBounds$1, renderBounds);
|
|
10479
10569
|
shadow.forEach((item, index) => {
|
|
10480
10570
|
let otherScale = 1;
|
|
10481
10571
|
if (item.scaleFixed) {
|
|
@@ -10483,54 +10573,61 @@ function shadow(ui, current, shape) {
|
|
|
10483
10573
|
if (sx > 1) otherScale = 1 / sx;
|
|
10484
10574
|
}
|
|
10485
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));
|
|
10486
|
-
|
|
10487
|
-
|
|
10488
|
-
|
|
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;
|
|
10489
10581
|
if (item.box) {
|
|
10490
10582
|
other.restore();
|
|
10491
10583
|
other.save();
|
|
10492
10584
|
if (worldCanvas) {
|
|
10493
|
-
other.copyWorld(other,
|
|
10585
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
10494
10586
|
copyBounds = nowWorld;
|
|
10495
10587
|
}
|
|
10496
10588
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, "destination-out") : other.copyWorld(shape.canvas, shapeBounds, bounds, "destination-out");
|
|
10497
10589
|
}
|
|
10498
|
-
|
|
10590
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
10499
10591
|
if (end && index < end) other.clearWorld(copyBounds);
|
|
10500
10592
|
});
|
|
10501
10593
|
other.recycle(copyBounds);
|
|
10502
10594
|
}
|
|
10503
10595
|
|
|
10504
|
-
function
|
|
10505
|
-
let
|
|
10506
|
-
shadow.forEach(item =>
|
|
10507
|
-
|
|
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;
|
|
10508
10618
|
}
|
|
10509
10619
|
|
|
10510
|
-
function drawWorldShadow(canvas, outBounds,
|
|
10511
|
-
const {
|
|
10620
|
+
function drawWorldShadow(canvas, outBounds, shape) {
|
|
10621
|
+
const {shapeBounds: shapeBounds} = shape;
|
|
10622
|
+
let from, to;
|
|
10512
10623
|
if (Platform.fullImageShadow) {
|
|
10513
10624
|
copy(tempBounds, canvas.bounds);
|
|
10514
|
-
tempBounds.x
|
|
10515
|
-
|
|
10516
|
-
if (spreadScale) {
|
|
10517
|
-
const {fitMatrix: fitMatrix} = shape;
|
|
10518
|
-
tempBounds.x -= (bounds.x + (fitMatrix ? fitMatrix.e : 0) + bounds.width / 2) * (spreadScale - 1);
|
|
10519
|
-
tempBounds.y -= (bounds.y + (fitMatrix ? fitMatrix.f : 0) + bounds.height / 2) * (spreadScale - 1);
|
|
10520
|
-
tempBounds.width *= spreadScale;
|
|
10521
|
-
tempBounds.height *= spreadScale;
|
|
10522
|
-
}
|
|
10523
|
-
canvas.copyWorld(shape.canvas, canvas.bounds, tempBounds);
|
|
10625
|
+
move(tempBounds, outBounds.x - shapeBounds.x, outBounds.y - shapeBounds.y);
|
|
10626
|
+
from = canvas.bounds, to = tempBounds;
|
|
10524
10627
|
} else {
|
|
10525
|
-
|
|
10526
|
-
copy(tempBounds, outBounds);
|
|
10527
|
-
tempBounds.x -= outBounds.width / 2 * (spreadScale - 1);
|
|
10528
|
-
tempBounds.y -= outBounds.height / 2 * (spreadScale - 1);
|
|
10529
|
-
tempBounds.width *= spreadScale;
|
|
10530
|
-
tempBounds.height *= spreadScale;
|
|
10531
|
-
}
|
|
10532
|
-
canvas.copyWorld(shape.canvas, shapeBounds, spreadScale ? tempBounds : outBounds);
|
|
10628
|
+
from = shapeBounds, to = outBounds;
|
|
10533
10629
|
}
|
|
10630
|
+
canvas.copyWorld(shape.canvas, from, to);
|
|
10534
10631
|
}
|
|
10535
10632
|
|
|
10536
10633
|
const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
@@ -10538,13 +10635,13 @@ const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
|
10538
10635
|
const offsetOutBounds = {};
|
|
10539
10636
|
|
|
10540
10637
|
function innerShadow(ui, current, shape) {
|
|
10541
|
-
let copyBounds,
|
|
10542
|
-
const {__nowWorld: nowWorld
|
|
10638
|
+
let copyBounds, transform;
|
|
10639
|
+
const {__nowWorld: nowWorld} = ui;
|
|
10543
10640
|
const {innerShadow: innerShadow} = ui.__;
|
|
10544
|
-
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;
|
|
10545
10642
|
const other = current.getSameCanvas();
|
|
10546
10643
|
const end = innerShadow.length - 1;
|
|
10547
|
-
toOffsetOutBounds(bounds, offsetOutBounds);
|
|
10644
|
+
toOffsetOutBounds(bounds, offsetOutBounds, renderBounds);
|
|
10548
10645
|
innerShadow.forEach((item, index) => {
|
|
10549
10646
|
let otherScale = 1;
|
|
10550
10647
|
if (item.scaleFixed) {
|
|
@@ -10553,16 +10650,17 @@ function innerShadow(ui, current, shape) {
|
|
|
10553
10650
|
}
|
|
10554
10651
|
other.save();
|
|
10555
10652
|
other.setWorldShadow(offsetOutBounds.offsetX + item.x * scaleX * otherScale, offsetOutBounds.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale);
|
|
10556
|
-
|
|
10557
|
-
|
|
10653
|
+
transform = getShadowTransform(ui, other, shape, item, offsetOutBounds, otherScale, true);
|
|
10654
|
+
if (transform) other.setTransform(transform);
|
|
10655
|
+
drawWorldShadow(other, offsetOutBounds, shape);
|
|
10558
10656
|
other.restore();
|
|
10559
10657
|
if (worldCanvas) {
|
|
10560
|
-
other.copyWorld(other,
|
|
10658
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
10561
10659
|
other.copyWorld(worldCanvas, nowWorld, nowWorld, "source-out");
|
|
10562
10660
|
copyBounds = nowWorld;
|
|
10563
10661
|
} else {
|
|
10564
10662
|
other.copyWorld(shape.canvas, shapeBounds, bounds, "source-out");
|
|
10565
|
-
copyBounds =
|
|
10663
|
+
copyBounds = renderBounds;
|
|
10566
10664
|
}
|
|
10567
10665
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), "source-in");
|
|
10568
10666
|
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
@@ -10571,6 +10669,8 @@ function innerShadow(ui, current, shape) {
|
|
|
10571
10669
|
other.recycle(copyBounds);
|
|
10572
10670
|
}
|
|
10573
10671
|
|
|
10672
|
+
const getInnerShadowSpread = getShadowRenderSpread;
|
|
10673
|
+
|
|
10574
10674
|
function blur(ui, current, origin) {
|
|
10575
10675
|
const {blur: blur} = ui.__;
|
|
10576
10676
|
origin.setWorldBlur(blur * ui.__nowWorld.a);
|
|
@@ -10585,10 +10685,12 @@ const EffectModule = {
|
|
|
10585
10685
|
innerShadow: innerShadow,
|
|
10586
10686
|
blur: blur,
|
|
10587
10687
|
backgroundBlur: backgroundBlur,
|
|
10588
|
-
|
|
10688
|
+
getShadowRenderSpread: getShadowRenderSpread,
|
|
10689
|
+
getShadowTransform: getShadowTransform,
|
|
10589
10690
|
isTransformShadow(_shadow) {
|
|
10590
10691
|
return undefined;
|
|
10591
|
-
}
|
|
10692
|
+
},
|
|
10693
|
+
getInnerShadowSpread: getInnerShadowSpread
|
|
10592
10694
|
};
|
|
10593
10695
|
|
|
10594
10696
|
const {excludeRenderBounds: excludeRenderBounds} = LeafBoundsHelper;
|
|
@@ -10605,6 +10707,7 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
10605
10707
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity, undefined, true);
|
|
10606
10708
|
maskCanvas = contentCanvas = null;
|
|
10607
10709
|
}
|
|
10710
|
+
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
10608
10711
|
maskOpacity = child.__.opacity;
|
|
10609
10712
|
usedGrayscaleAlpha = false;
|
|
10610
10713
|
if (mask === "path" || mask === "clipping-path") {
|
|
@@ -10622,7 +10725,6 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
10622
10725
|
if (!contentCanvas) contentCanvas = getCanvas(canvas);
|
|
10623
10726
|
child.__render(maskCanvas, options);
|
|
10624
10727
|
}
|
|
10625
|
-
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
10626
10728
|
continue;
|
|
10627
10729
|
}
|
|
10628
10730
|
const childBlendMode = maskOpacity === 1 && child.__.__blendMode;
|
|
@@ -11212,4 +11314,4 @@ Object.assign(Effect, EffectModule);
|
|
|
11212
11314
|
|
|
11213
11315
|
useCanvas();
|
|
11214
11316
|
|
|
11215
|
-
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$
|
|
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 };
|