@leafer-draw/worker 1.6.7 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/worker.cjs +86 -50
- package/dist/worker.esm.js +87 -51
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.esm.min.js.map +1 -1
- package/dist/worker.js +301 -181
- package/dist/worker.min.cjs +1 -1
- package/dist/worker.min.cjs.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +299 -181
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +9 -9
package/dist/worker.module.js
CHANGED
|
@@ -43,7 +43,7 @@ const IncrementId = {
|
|
|
43
43
|
};
|
|
44
44
|
const I$1 = IncrementId;
|
|
45
45
|
|
|
46
|
-
const { round: round$3, pow: pow$1, PI: PI$
|
|
46
|
+
const { round: round$3, pow: pow$1, PI: PI$3 } = Math;
|
|
47
47
|
const MathHelper = {
|
|
48
48
|
within(value, min, max) {
|
|
49
49
|
if (typeof min === 'object')
|
|
@@ -139,9 +139,9 @@ const MathHelper = {
|
|
|
139
139
|
function randInt(num) {
|
|
140
140
|
return Math.round(Math.random() * num);
|
|
141
141
|
}
|
|
142
|
-
const OneRadian = PI$
|
|
143
|
-
const PI2 = PI$
|
|
144
|
-
const PI_2 = PI$
|
|
142
|
+
const OneRadian = PI$3 / 180;
|
|
143
|
+
const PI2 = PI$3 * 2;
|
|
144
|
+
const PI_2 = PI$3 / 2;
|
|
145
145
|
function getPointData() { return { x: 0, y: 0 }; }
|
|
146
146
|
function getBoundsData() { return { x: 0, y: 0, width: 0, height: 0 }; }
|
|
147
147
|
function getMatrixData() { return { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }; }
|
|
@@ -436,7 +436,7 @@ const MatrixHelper = {
|
|
|
436
436
|
const M$6 = MatrixHelper;
|
|
437
437
|
|
|
438
438
|
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
439
|
-
const { sin: sin$4, cos: cos$4, abs: abs$
|
|
439
|
+
const { sin: sin$4, cos: cos$4, abs: abs$3, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2 } = Math;
|
|
440
440
|
const PointHelper = {
|
|
441
441
|
defaultPoint: getPointData(),
|
|
442
442
|
tempPoint: {},
|
|
@@ -531,8 +531,8 @@ const PointHelper = {
|
|
|
531
531
|
return getDistanceFrom(t.x, t.y, point.x, point.y);
|
|
532
532
|
},
|
|
533
533
|
getDistanceFrom(x1, y1, x2, y2) {
|
|
534
|
-
const x = abs$
|
|
535
|
-
const y = abs$
|
|
534
|
+
const x = abs$3(x2 - x1);
|
|
535
|
+
const y = abs$3(y2 - y1);
|
|
536
536
|
return sqrt$2(x * x + y * y);
|
|
537
537
|
},
|
|
538
538
|
getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
|
|
@@ -549,10 +549,11 @@ const PointHelper = {
|
|
|
549
549
|
getRadianFrom(fromX, fromY, originX, originY, toX, toY, toOriginX, toOriginY) {
|
|
550
550
|
if (toOriginX === undefined)
|
|
551
551
|
toOriginX = originX, toOriginY = originY;
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
const
|
|
555
|
-
|
|
552
|
+
const a = fromX - originX;
|
|
553
|
+
const b = fromY - originY;
|
|
554
|
+
const c = toX - toOriginX;
|
|
555
|
+
const d = toY - toOriginY;
|
|
556
|
+
return Math.atan2(a * d - b * c, a * c + b * d);
|
|
556
557
|
},
|
|
557
558
|
getAtan2(t, to) {
|
|
558
559
|
return atan2$2(to.y - t.y, to.x - t.x);
|
|
@@ -762,7 +763,7 @@ class Matrix {
|
|
|
762
763
|
MatrixHelper.reset(this);
|
|
763
764
|
}
|
|
764
765
|
}
|
|
765
|
-
const tempMatrix = new Matrix();
|
|
766
|
+
const tempMatrix$1 = new Matrix();
|
|
766
767
|
|
|
767
768
|
const TwoPointBoundsHelper = {
|
|
768
769
|
tempPointBounds: {},
|
|
@@ -859,6 +860,12 @@ const AroundHelper = {
|
|
|
859
860
|
}
|
|
860
861
|
if (!onlyBoxSize)
|
|
861
862
|
to.x += box.x, to.y += box.y;
|
|
863
|
+
},
|
|
864
|
+
getPoint(around, box, to) {
|
|
865
|
+
if (!to)
|
|
866
|
+
to = {};
|
|
867
|
+
AroundHelper.toPoint(around, box, to, true);
|
|
868
|
+
return to;
|
|
862
869
|
}
|
|
863
870
|
};
|
|
864
871
|
function get$4(around) {
|
|
@@ -1787,10 +1794,13 @@ function contextAttr(realName) {
|
|
|
1787
1794
|
return (target, key) => {
|
|
1788
1795
|
if (!realName)
|
|
1789
1796
|
realName = key;
|
|
1790
|
-
|
|
1797
|
+
const property = {
|
|
1791
1798
|
get() { return this.context[realName]; },
|
|
1792
1799
|
set(value) { this.context[realName] = value; }
|
|
1793
|
-
}
|
|
1800
|
+
};
|
|
1801
|
+
if (key === 'strokeCap')
|
|
1802
|
+
property.set = function (value) { this.context[realName] = value === 'none' ? 'butt' : value; };
|
|
1803
|
+
Object.defineProperty(target, key, property);
|
|
1794
1804
|
};
|
|
1795
1805
|
}
|
|
1796
1806
|
const contextMethodNameList = [];
|
|
@@ -2066,15 +2076,15 @@ __decorate([
|
|
|
2066
2076
|
contextMethod()
|
|
2067
2077
|
], Canvas$1.prototype, "strokeText", null);
|
|
2068
2078
|
|
|
2069
|
-
const { copy: copy$8, multiplyParent: multiplyParent$
|
|
2079
|
+
const { copy: copy$8, multiplyParent: multiplyParent$4 } = MatrixHelper, { round: round$1 } = Math;
|
|
2070
2080
|
const minSize = { width: 1, height: 1, pixelRatio: 1 };
|
|
2071
2081
|
const canvasSizeAttrs = ['width', 'height', 'pixelRatio'];
|
|
2072
2082
|
class LeaferCanvasBase extends Canvas$1 {
|
|
2073
2083
|
get width() { return this.size.width; }
|
|
2074
2084
|
get height() { return this.size.height; }
|
|
2075
2085
|
get pixelRatio() { return this.size.pixelRatio; }
|
|
2076
|
-
get pixelWidth() { return this.width * this.pixelRatio; }
|
|
2077
|
-
get pixelHeight() { return this.height * this.pixelRatio; }
|
|
2086
|
+
get pixelWidth() { return this.width * this.pixelRatio || 0; }
|
|
2087
|
+
get pixelHeight() { return this.height * this.pixelRatio || 0; }
|
|
2078
2088
|
get pixelSnap() { return this.config.pixelSnap; }
|
|
2079
2089
|
set pixelSnap(value) { this.config.pixelSnap = value; }
|
|
2080
2090
|
get allowBackgroundColor() { return this.view && this.parentView; }
|
|
@@ -2139,7 +2149,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2139
2149
|
setWorld(matrix, parentMatrix) {
|
|
2140
2150
|
const { pixelRatio, pixelSnap } = this, w = this.worldTransform;
|
|
2141
2151
|
if (parentMatrix)
|
|
2142
|
-
multiplyParent$
|
|
2152
|
+
multiplyParent$4(matrix, parentMatrix, w);
|
|
2143
2153
|
w.a = matrix.a * pixelRatio;
|
|
2144
2154
|
w.b = matrix.b * pixelRatio;
|
|
2145
2155
|
w.c = matrix.c * pixelRatio;
|
|
@@ -2161,20 +2171,33 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2161
2171
|
if (w)
|
|
2162
2172
|
this.setTransform(w.a, w.b, w.c, w.d, w.e, w.f);
|
|
2163
2173
|
}
|
|
2164
|
-
setStroke(color, strokeWidth, options) {
|
|
2174
|
+
setStroke(color, strokeWidth, options, childOptions) {
|
|
2165
2175
|
if (strokeWidth)
|
|
2166
2176
|
this.strokeWidth = strokeWidth;
|
|
2167
2177
|
if (color)
|
|
2168
2178
|
this.strokeStyle = color;
|
|
2169
2179
|
if (options)
|
|
2170
|
-
this.setStrokeOptions(options);
|
|
2171
|
-
}
|
|
2172
|
-
setStrokeOptions(options) {
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2180
|
+
this.setStrokeOptions(options, childOptions);
|
|
2181
|
+
}
|
|
2182
|
+
setStrokeOptions(options, childOptions) {
|
|
2183
|
+
let { strokeCap, strokeJoin, dashPattern, dashOffset, miterLimit } = options;
|
|
2184
|
+
if (childOptions) {
|
|
2185
|
+
if (childOptions.strokeCap)
|
|
2186
|
+
strokeCap = childOptions.strokeCap;
|
|
2187
|
+
if (childOptions.strokeJoin)
|
|
2188
|
+
strokeJoin = childOptions.strokeJoin;
|
|
2189
|
+
if (childOptions.dashPattern !== undefined)
|
|
2190
|
+
dashPattern = childOptions.dashPattern;
|
|
2191
|
+
if (childOptions.dashOffset !== undefined)
|
|
2192
|
+
dashOffset = childOptions.dashOffset;
|
|
2193
|
+
if (childOptions.miterLimit)
|
|
2194
|
+
miterLimit = childOptions.miterLimit;
|
|
2195
|
+
}
|
|
2196
|
+
this.strokeCap = strokeCap;
|
|
2197
|
+
this.strokeJoin = strokeJoin;
|
|
2198
|
+
this.dashPattern = dashPattern;
|
|
2199
|
+
this.dashOffset = dashOffset;
|
|
2200
|
+
this.miterLimit = miterLimit;
|
|
2178
2201
|
}
|
|
2179
2202
|
saveBlendMode(blendMode) {
|
|
2180
2203
|
this.savedBlendMode = this.blendMode;
|
|
@@ -2408,7 +2431,7 @@ const RectHelper = {
|
|
|
2408
2431
|
}
|
|
2409
2432
|
};
|
|
2410
2433
|
|
|
2411
|
-
const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$
|
|
2434
|
+
const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow } = Math;
|
|
2412
2435
|
const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
|
|
2413
2436
|
const { set, toNumberPoints } = PointHelper;
|
|
2414
2437
|
const { M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5 } = PathCommandMap;
|
|
@@ -2483,7 +2506,7 @@ const BezierHelper = {
|
|
|
2483
2506
|
let totalRadian = endRadian - startRadian;
|
|
2484
2507
|
if (totalRadian < 0)
|
|
2485
2508
|
totalRadian += PI2;
|
|
2486
|
-
if (totalRadian === PI$2 || (abs$
|
|
2509
|
+
if (totalRadian === PI$2 || (abs$2(BAx + BAy) < 1.e-12) || (abs$2(CBx + CBy) < 1.e-12)) {
|
|
2487
2510
|
if (data)
|
|
2488
2511
|
data.push(L$6, x1, y1);
|
|
2489
2512
|
if (setPointBounds) {
|
|
@@ -2525,7 +2548,7 @@ const BezierHelper = {
|
|
|
2525
2548
|
totalRadian -= PI2;
|
|
2526
2549
|
if (anticlockwise)
|
|
2527
2550
|
totalRadian -= PI2;
|
|
2528
|
-
const parts = ceil$1(abs$
|
|
2551
|
+
const parts = ceil$1(abs$2(totalRadian / PI_2));
|
|
2529
2552
|
const partRadian = totalRadian / parts;
|
|
2530
2553
|
const partRadian4Sin = sin$3(partRadian / 4);
|
|
2531
2554
|
const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
|
|
@@ -2970,7 +2993,7 @@ const { current, pushData, copyData } = PathConvert;
|
|
|
2970
2993
|
|
|
2971
2994
|
const { M: M$3, L: L$4, C: C$2, Q: Q$2, Z: Z$3, N: N$2, D: D$2, X: X$2, G: G$2, F: F$3, O: O$2, P: P$2, U: U$2 } = PathCommandMap;
|
|
2972
2995
|
const { getMinDistanceFrom, getRadianFrom } = PointHelper;
|
|
2973
|
-
const { tan, min, abs: abs$
|
|
2996
|
+
const { tan, min, abs: abs$1 } = Math;
|
|
2974
2997
|
const startPoint = {};
|
|
2975
2998
|
const PathCommandDataHelper = {
|
|
2976
2999
|
beginPath(data) {
|
|
@@ -3033,7 +3056,7 @@ const PathCommandDataHelper = {
|
|
|
3033
3056
|
arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
|
|
3034
3057
|
if (lastX !== undefined) {
|
|
3035
3058
|
const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
|
|
3036
|
-
radius = min(radius, min(d / 2, d / 2 * abs$
|
|
3059
|
+
radius = min(radius, min(d / 2, d / 2 * abs$1(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
|
|
3037
3060
|
}
|
|
3038
3061
|
data.push(U$2, x1, y1, x2, y2, radius);
|
|
3039
3062
|
},
|
|
@@ -3339,7 +3362,7 @@ const { getCenterX, getCenterY } = PointHelper;
|
|
|
3339
3362
|
const { arcTo } = PathCommandDataHelper;
|
|
3340
3363
|
const PathCorner = {
|
|
3341
3364
|
smooth(data, cornerRadius, _cornerSmoothing) {
|
|
3342
|
-
let command, commandLen;
|
|
3365
|
+
let command, lastCommand, commandLen;
|
|
3343
3366
|
let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
|
|
3344
3367
|
const len = data.length;
|
|
3345
3368
|
const smooth = [];
|
|
@@ -3377,8 +3400,10 @@ const PathCorner = {
|
|
|
3377
3400
|
lastY = y;
|
|
3378
3401
|
break;
|
|
3379
3402
|
case Z:
|
|
3380
|
-
|
|
3381
|
-
|
|
3403
|
+
if (lastCommand !== Z) {
|
|
3404
|
+
arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
|
|
3405
|
+
smooth.push(Z);
|
|
3406
|
+
}
|
|
3382
3407
|
i += 1;
|
|
3383
3408
|
break;
|
|
3384
3409
|
default:
|
|
@@ -3387,6 +3412,7 @@ const PathCorner = {
|
|
|
3387
3412
|
smooth.push(data[i + j]);
|
|
3388
3413
|
i += commandLen;
|
|
3389
3414
|
}
|
|
3415
|
+
lastCommand = command;
|
|
3390
3416
|
}
|
|
3391
3417
|
if (command !== Z) {
|
|
3392
3418
|
smooth[1] = startX;
|
|
@@ -3883,12 +3909,12 @@ class LeaferImage {
|
|
|
3883
3909
|
try {
|
|
3884
3910
|
if (transform && pattern.setTransform) {
|
|
3885
3911
|
pattern.setTransform(transform);
|
|
3886
|
-
transform =
|
|
3912
|
+
transform = undefined;
|
|
3887
3913
|
}
|
|
3888
3914
|
}
|
|
3889
3915
|
catch (_a) { }
|
|
3890
3916
|
if (paint)
|
|
3891
|
-
paint
|
|
3917
|
+
DataHelper.stintSet(paint, 'transform', transform);
|
|
3892
3918
|
return pattern;
|
|
3893
3919
|
}
|
|
3894
3920
|
destroy() {
|
|
@@ -3906,6 +3932,13 @@ function defineKey(target, key, descriptor, noConfigurable) {
|
|
|
3906
3932
|
function getDescriptor(object, name) {
|
|
3907
3933
|
return Object.getOwnPropertyDescriptor(object, name);
|
|
3908
3934
|
}
|
|
3935
|
+
function createDescriptor(key, defaultValue) {
|
|
3936
|
+
const privateKey = '_' + key;
|
|
3937
|
+
return {
|
|
3938
|
+
get() { const v = this[privateKey]; return v === undefined ? defaultValue : v; },
|
|
3939
|
+
set(value) { this[privateKey] = value; }
|
|
3940
|
+
};
|
|
3941
|
+
}
|
|
3909
3942
|
function getNames(object) {
|
|
3910
3943
|
return Object.getOwnPropertyNames(object);
|
|
3911
3944
|
}
|
|
@@ -3993,10 +4026,14 @@ function pathInputType(defaultValue) {
|
|
|
3993
4026
|
}));
|
|
3994
4027
|
}
|
|
3995
4028
|
const pathType = boundsType;
|
|
3996
|
-
function affectStrokeBoundsType(defaultValue) {
|
|
4029
|
+
function affectStrokeBoundsType(defaultValue, useStroke) {
|
|
3997
4030
|
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
3998
4031
|
set(value) {
|
|
3999
|
-
this.__setAttr(key, value)
|
|
4032
|
+
if (this.__setAttr(key, value)) {
|
|
4033
|
+
doStrokeType(this);
|
|
4034
|
+
if (useStroke)
|
|
4035
|
+
this.__.__useStroke = true;
|
|
4036
|
+
}
|
|
4000
4037
|
}
|
|
4001
4038
|
}));
|
|
4002
4039
|
}
|
|
@@ -4134,15 +4171,7 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
4134
4171
|
const data = target.__DataProcessor.prototype;
|
|
4135
4172
|
const computedKey = '_' + key;
|
|
4136
4173
|
const setMethodName = getSetMethodName(key);
|
|
4137
|
-
const property =
|
|
4138
|
-
get() {
|
|
4139
|
-
const v = this[computedKey];
|
|
4140
|
-
return v === undefined ? defaultValue : v;
|
|
4141
|
-
},
|
|
4142
|
-
set(value) {
|
|
4143
|
-
this[computedKey] = value;
|
|
4144
|
-
}
|
|
4145
|
-
};
|
|
4174
|
+
const property = createDescriptor(key, defaultValue);
|
|
4146
4175
|
if (defaultValue === undefined) {
|
|
4147
4176
|
property.get = function () { return this[computedKey]; };
|
|
4148
4177
|
}
|
|
@@ -4257,7 +4286,7 @@ function registerUIEvent() {
|
|
|
4257
4286
|
};
|
|
4258
4287
|
}
|
|
4259
4288
|
|
|
4260
|
-
const { copy: copy$6, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$
|
|
4289
|
+
const { copy: copy$6, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$3, divideParent, getLayout } = MatrixHelper;
|
|
4261
4290
|
const matrix = {}, { round } = Math;
|
|
4262
4291
|
const LeafHelper = {
|
|
4263
4292
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
@@ -4329,6 +4358,14 @@ const LeafHelper = {
|
|
|
4329
4358
|
}
|
|
4330
4359
|
return true;
|
|
4331
4360
|
},
|
|
4361
|
+
copyCanvasByWorld(leaf, currentCanvas, fromCanvas, fromWorld, blendMode, onlyResetTransform) {
|
|
4362
|
+
if (!fromWorld)
|
|
4363
|
+
fromWorld = leaf.__nowWorld;
|
|
4364
|
+
if (leaf.__worldFlipped || Platform.fullImageShadow)
|
|
4365
|
+
currentCanvas.copyWorldByReset(fromCanvas, fromWorld, leaf.__nowWorld, blendMode, onlyResetTransform);
|
|
4366
|
+
else
|
|
4367
|
+
currentCanvas.copyWorldToInner(fromCanvas, fromWorld, leaf.__layout.renderBounds, blendMode);
|
|
4368
|
+
},
|
|
4332
4369
|
moveWorld(t, x, y = 0, isInnerPoint, transition) {
|
|
4333
4370
|
const local = typeof x === 'object' ? Object.assign({}, x) : { x, y };
|
|
4334
4371
|
isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : (t.parent && toInnerPoint$1(t.parent.worldTransform, local, local, true));
|
|
@@ -4388,14 +4425,14 @@ const LeafHelper = {
|
|
|
4388
4425
|
},
|
|
4389
4426
|
transformWorld(t, transform, resize, transition) {
|
|
4390
4427
|
copy$6(matrix, t.worldTransform);
|
|
4391
|
-
multiplyParent$
|
|
4428
|
+
multiplyParent$3(matrix, transform);
|
|
4392
4429
|
if (t.parent)
|
|
4393
4430
|
divideParent(matrix, t.parent.worldTransform);
|
|
4394
4431
|
L.setTransform(t, matrix, resize, transition);
|
|
4395
4432
|
},
|
|
4396
4433
|
transform(t, transform, resize, transition) {
|
|
4397
4434
|
copy$6(matrix, t.localTransform);
|
|
4398
|
-
multiplyParent$
|
|
4435
|
+
multiplyParent$3(matrix, transform);
|
|
4399
4436
|
L.setTransform(t, matrix, resize, transition);
|
|
4400
4437
|
},
|
|
4401
4438
|
setTransform(t, transform, resize, transition) {
|
|
@@ -5257,17 +5294,18 @@ const LeafDataProxy = {
|
|
|
5257
5294
|
}
|
|
5258
5295
|
};
|
|
5259
5296
|
|
|
5260
|
-
const { setLayout, multiplyParent: multiplyParent$
|
|
5297
|
+
const { setLayout, multiplyParent: multiplyParent$2, translateInner, defaultWorld } = MatrixHelper;
|
|
5261
5298
|
const { toPoint: toPoint$3, tempPoint } = AroundHelper;
|
|
5262
5299
|
const LeafMatrix = {
|
|
5263
5300
|
__updateWorldMatrix() {
|
|
5264
|
-
|
|
5301
|
+
const { parent, __layout } = this;
|
|
5302
|
+
multiplyParent$2(this.__local || __layout, parent ? parent.__world : defaultWorld, this.__world, !!__layout.affectScaleOrRotation, this.__, parent && (parent.scrollY || parent.scrollX) && parent.__);
|
|
5265
5303
|
},
|
|
5266
5304
|
__updateLocalMatrix() {
|
|
5267
5305
|
if (this.__local) {
|
|
5268
5306
|
const layout = this.__layout, local = this.__local, data = this.__;
|
|
5269
5307
|
if (layout.affectScaleOrRotation) {
|
|
5270
|
-
if ((layout.scaleChanged && (layout.resized = 'scale')) || layout.rotationChanged) {
|
|
5308
|
+
if ((layout.scaleChanged && (layout.resized || (layout.resized = 'scale'))) || layout.rotationChanged) {
|
|
5271
5309
|
setLayout(local, data, null, null, layout.affectRotation);
|
|
5272
5310
|
layout.scaleChanged = layout.rotationChanged = undefined;
|
|
5273
5311
|
}
|
|
@@ -5422,6 +5460,8 @@ const LeafBounds = {
|
|
|
5422
5460
|
|
|
5423
5461
|
const LeafRender = {
|
|
5424
5462
|
__render(canvas, options) {
|
|
5463
|
+
if (options.shape)
|
|
5464
|
+
return this.__renderShape(canvas, options);
|
|
5425
5465
|
if (this.__worldOpacity) {
|
|
5426
5466
|
const data = this.__;
|
|
5427
5467
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
@@ -5431,12 +5471,7 @@ const LeafRender = {
|
|
|
5431
5471
|
return this.__renderEraser(canvas, options);
|
|
5432
5472
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
5433
5473
|
this.__draw(tempCanvas, options, canvas);
|
|
5434
|
-
|
|
5435
|
-
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
|
|
5436
|
-
}
|
|
5437
|
-
else {
|
|
5438
|
-
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
|
|
5439
|
-
}
|
|
5474
|
+
LeafHelper.copyCanvasByWorld(this, canvas, tempCanvas, this.__nowWorld, data.__blendMode, true);
|
|
5440
5475
|
tempCanvas.recycle(this.__nowWorld);
|
|
5441
5476
|
}
|
|
5442
5477
|
else {
|
|
@@ -5446,6 +5481,12 @@ const LeafRender = {
|
|
|
5446
5481
|
Debug.drawBounds(this, canvas, options);
|
|
5447
5482
|
}
|
|
5448
5483
|
},
|
|
5484
|
+
__renderShape(canvas, options) {
|
|
5485
|
+
if (this.__worldOpacity) {
|
|
5486
|
+
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
5487
|
+
this.__drawShape(canvas, options);
|
|
5488
|
+
}
|
|
5489
|
+
},
|
|
5449
5490
|
__clip(canvas, options) {
|
|
5450
5491
|
if (this.__worldOpacity) {
|
|
5451
5492
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
@@ -5478,7 +5519,7 @@ const BranchRender = {
|
|
|
5478
5519
|
options.dimOpacity = data.dim === true ? 0.2 : data.dim;
|
|
5479
5520
|
else if (data.dimskip)
|
|
5480
5521
|
options.dimOpacity && (options.dimOpacity = 0);
|
|
5481
|
-
if (data.__single) {
|
|
5522
|
+
if (data.__single && !this.isBranchLeaf) {
|
|
5482
5523
|
if (data.eraser === 'path')
|
|
5483
5524
|
return this.__renderEraser(canvas, options);
|
|
5484
5525
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
@@ -5500,9 +5541,7 @@ const BranchRender = {
|
|
|
5500
5541
|
else {
|
|
5501
5542
|
const { children } = this;
|
|
5502
5543
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
5503
|
-
|
|
5504
|
-
continue;
|
|
5505
|
-
children[i].__render(canvas, options);
|
|
5544
|
+
excludeRenderBounds$1(children[i], options) || children[i].__render(canvas, options);
|
|
5506
5545
|
}
|
|
5507
5546
|
}
|
|
5508
5547
|
},
|
|
@@ -5510,16 +5549,15 @@ const BranchRender = {
|
|
|
5510
5549
|
if (this.__worldOpacity) {
|
|
5511
5550
|
const { children } = this;
|
|
5512
5551
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
5513
|
-
|
|
5514
|
-
continue;
|
|
5515
|
-
children[i].__clip(canvas, options);
|
|
5552
|
+
excludeRenderBounds$1(children[i], options) || children[i].__clip(canvas, options);
|
|
5516
5553
|
}
|
|
5517
5554
|
}
|
|
5518
5555
|
}
|
|
5519
5556
|
};
|
|
5520
5557
|
|
|
5558
|
+
const tempScaleData$1 = {};
|
|
5521
5559
|
const { LEAF, create } = IncrementId;
|
|
5522
|
-
const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
|
|
5560
|
+
const { toInnerPoint, toOuterPoint, multiplyParent: multiplyParent$1 } = MatrixHelper;
|
|
5523
5561
|
const { toOuterOf } = BoundsHelper;
|
|
5524
5562
|
const { copy: copy$3, move } = PointHelper;
|
|
5525
5563
|
const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
|
|
@@ -5701,7 +5739,7 @@ let Leaf = class Leaf {
|
|
|
5701
5739
|
if (!this.__cameraWorld)
|
|
5702
5740
|
this.__cameraWorld = {};
|
|
5703
5741
|
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
5704
|
-
multiplyParent(world, options.matrix, cameraWorld, undefined, world);
|
|
5742
|
+
multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
|
|
5705
5743
|
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
5706
5744
|
cameraWorld.half !== world.half && (cameraWorld.half = world.half);
|
|
5707
5745
|
return cameraWorld;
|
|
@@ -5710,6 +5748,22 @@ let Leaf = class Leaf {
|
|
|
5710
5748
|
return this.__world;
|
|
5711
5749
|
}
|
|
5712
5750
|
}
|
|
5751
|
+
getClampRenderScale() {
|
|
5752
|
+
let { scaleX } = this.__nowWorld || this.__world;
|
|
5753
|
+
if (scaleX < 0)
|
|
5754
|
+
scaleX = -scaleX;
|
|
5755
|
+
return scaleX > 1 ? scaleX : 1;
|
|
5756
|
+
}
|
|
5757
|
+
getRenderScaleData(abs, scaleFixed) {
|
|
5758
|
+
const { scaleX, scaleY } = ImageManager.patternLocked ? this.__world : this.__nowWorld;
|
|
5759
|
+
if (scaleFixed)
|
|
5760
|
+
tempScaleData$1.scaleX = tempScaleData$1.scaleY = 1;
|
|
5761
|
+
else if (abs)
|
|
5762
|
+
tempScaleData$1.scaleX = scaleX < 0 ? -scaleX : scaleX, tempScaleData$1.scaleY = scaleY < 0 ? -scaleY : scaleY;
|
|
5763
|
+
else
|
|
5764
|
+
tempScaleData$1.scaleX = scaleX, tempScaleData$1.scaleY = scaleY;
|
|
5765
|
+
return tempScaleData$1;
|
|
5766
|
+
}
|
|
5713
5767
|
getTransform(relative) {
|
|
5714
5768
|
return this.__layout.getTransform(relative || 'local');
|
|
5715
5769
|
}
|
|
@@ -5865,7 +5919,8 @@ let Leaf = class Leaf {
|
|
|
5865
5919
|
__drawFast(_canvas, _options) { }
|
|
5866
5920
|
__draw(_canvas, _options, _originCanvas) { }
|
|
5867
5921
|
__clip(_canvas, _options) { }
|
|
5868
|
-
__renderShape(_canvas, _options
|
|
5922
|
+
__renderShape(_canvas, _options) { }
|
|
5923
|
+
__drawShape(_canvas, _options) { }
|
|
5869
5924
|
__updateWorldOpacity() { }
|
|
5870
5925
|
__updateChange() { }
|
|
5871
5926
|
__drawPath(_canvas) { }
|
|
@@ -6233,7 +6288,7 @@ class LeafLevelList {
|
|
|
6233
6288
|
}
|
|
6234
6289
|
}
|
|
6235
6290
|
|
|
6236
|
-
const version = "1.
|
|
6291
|
+
const version = "1.8.0";
|
|
6237
6292
|
|
|
6238
6293
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6239
6294
|
get allowBackgroundColor() { return true; }
|
|
@@ -6924,6 +6979,11 @@ function zoomLayerType() {
|
|
|
6924
6979
|
});
|
|
6925
6980
|
};
|
|
6926
6981
|
}
|
|
6982
|
+
function createAttr(defaultValue) {
|
|
6983
|
+
return (target, key) => {
|
|
6984
|
+
defineKey(target, key, createDescriptor(key, defaultValue));
|
|
6985
|
+
};
|
|
6986
|
+
}
|
|
6927
6987
|
|
|
6928
6988
|
function hasTransparent$3(color) {
|
|
6929
6989
|
if (!color || color.length === 7 || color.length === 4)
|
|
@@ -6981,26 +7041,9 @@ const emptyPaint = {};
|
|
|
6981
7041
|
const debug$1 = Debug.get('UIData');
|
|
6982
7042
|
class UIData extends LeafData {
|
|
6983
7043
|
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
6984
|
-
get __strokeWidth() {
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
const ui = this.__leaf;
|
|
6988
|
-
let { scaleX } = ui.__nowWorld || ui.__world;
|
|
6989
|
-
if (scaleX < 0)
|
|
6990
|
-
scaleX = -scaleX;
|
|
6991
|
-
return scaleX > 1 ? strokeWidth / scaleX : strokeWidth;
|
|
6992
|
-
}
|
|
6993
|
-
else
|
|
6994
|
-
return strokeWidth;
|
|
6995
|
-
}
|
|
6996
|
-
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
6997
|
-
get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
|
|
6998
|
-
get __hasMultiPaint() {
|
|
6999
|
-
const t = this;
|
|
7000
|
-
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
7001
|
-
return true;
|
|
7002
|
-
return t.fill && this.__hasStroke;
|
|
7003
|
-
}
|
|
7044
|
+
get __strokeWidth() { return this.__getRealStrokeWidth(); }
|
|
7045
|
+
get __maxStrokeWidth() { const t = this; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth; }
|
|
7046
|
+
get __hasMultiPaint() { const t = this; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect; }
|
|
7004
7047
|
get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
|
|
7005
7048
|
get __hasSurface() { const t = this; return (t.fill || t.stroke); }
|
|
7006
7049
|
get __autoWidth() { return !this._width; }
|
|
@@ -7082,6 +7125,21 @@ class UIData extends LeafData {
|
|
|
7082
7125
|
Paint.compute('stroke', this.__leaf);
|
|
7083
7126
|
this.__needComputePaint = undefined;
|
|
7084
7127
|
}
|
|
7128
|
+
__getRealStrokeWidth(childStyle) {
|
|
7129
|
+
let { strokeWidth, strokeWidthFixed } = this;
|
|
7130
|
+
if (childStyle) {
|
|
7131
|
+
if (childStyle.strokeWidth)
|
|
7132
|
+
strokeWidth = childStyle.strokeWidth;
|
|
7133
|
+
if (childStyle.strokeWidthFixed !== undefined)
|
|
7134
|
+
strokeWidthFixed = childStyle.strokeWidthFixed;
|
|
7135
|
+
}
|
|
7136
|
+
if (strokeWidthFixed) {
|
|
7137
|
+
const scale = this.__leaf.getClampRenderScale();
|
|
7138
|
+
return scale > 1 ? strokeWidth / scale : strokeWidth;
|
|
7139
|
+
}
|
|
7140
|
+
else
|
|
7141
|
+
return strokeWidth;
|
|
7142
|
+
}
|
|
7085
7143
|
__setPaint(attrName, value) {
|
|
7086
7144
|
this.__setInput(attrName, value);
|
|
7087
7145
|
const layout = this.__leaf.__layout;
|
|
@@ -7106,6 +7164,7 @@ class UIData extends LeafData {
|
|
|
7106
7164
|
}
|
|
7107
7165
|
else {
|
|
7108
7166
|
stintSet$2(this, '__isAlphaPixelStroke', undefined);
|
|
7167
|
+
stintSet$2(this, '__hasMultiStrokeStyle', undefined);
|
|
7109
7168
|
this._stroke = this.__isStrokes = undefined;
|
|
7110
7169
|
}
|
|
7111
7170
|
}
|
|
@@ -7127,8 +7186,8 @@ class GroupData extends UIData {
|
|
|
7127
7186
|
|
|
7128
7187
|
class BoxData extends GroupData {
|
|
7129
7188
|
get __boxStroke() { return !this.__pathInputed; }
|
|
7130
|
-
get __drawAfterFill() { const t = this; return
|
|
7131
|
-
get __clipAfterFill() { return
|
|
7189
|
+
get __drawAfterFill() { const t = this; return t.__single || t.__clipAfterFill; }
|
|
7190
|
+
get __clipAfterFill() { const t = this; return t.overflow === 'hide' && t.__leaf.children.length && (t.__leaf.isOverflow || super.__clipAfterFill); }
|
|
7132
7191
|
}
|
|
7133
7192
|
|
|
7134
7193
|
class LeaferData extends GroupData {
|
|
@@ -7248,7 +7307,7 @@ class CanvasData extends RectData {
|
|
|
7248
7307
|
const UIBounds = {
|
|
7249
7308
|
__updateStrokeSpread() {
|
|
7250
7309
|
let width = 0, boxWidth = 0;
|
|
7251
|
-
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7310
|
+
const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box;
|
|
7252
7311
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7253
7312
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7254
7313
|
if (!data.__boxStroke) {
|
|
@@ -7268,13 +7327,15 @@ const UIBounds = {
|
|
|
7268
7327
|
},
|
|
7269
7328
|
__updateRenderSpread() {
|
|
7270
7329
|
let width = 0;
|
|
7271
|
-
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7330
|
+
const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__;
|
|
7272
7331
|
if (shadow)
|
|
7273
7332
|
shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5));
|
|
7274
7333
|
if (blur)
|
|
7275
7334
|
width = Math.max(width, blur);
|
|
7276
7335
|
if (filter)
|
|
7277
7336
|
width += Filter.getSpread(filter);
|
|
7337
|
+
if (renderSpread)
|
|
7338
|
+
width += renderSpread;
|
|
7278
7339
|
let shapeWidth = width = Math.ceil(width);
|
|
7279
7340
|
if (innerShadow)
|
|
7280
7341
|
innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5));
|
|
@@ -7290,15 +7351,18 @@ const { stintSet: stintSet$1 } = DataHelper;
|
|
|
7290
7351
|
const UIRender = {
|
|
7291
7352
|
__updateChange() {
|
|
7292
7353
|
const data = this.__;
|
|
7354
|
+
if (data.__useStroke) {
|
|
7355
|
+
const useStroke = data.__useStroke = !!(data.stroke && data.strokeWidth);
|
|
7356
|
+
stintSet$1(this.__world, 'half', useStroke && data.strokeAlign === 'center' && data.strokeWidth % 2);
|
|
7357
|
+
stintSet$1(data, '__fillAfterStroke', useStroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
|
|
7358
|
+
}
|
|
7293
7359
|
if (data.__useEffect) {
|
|
7294
7360
|
const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
|
|
7295
|
-
stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread &&
|
|
7361
|
+
stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && fill && !data.__isTransparentFill && !(fill instanceof Array && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside')));
|
|
7296
7362
|
data.__useEffect = !!(shadow || otherEffect);
|
|
7297
7363
|
}
|
|
7298
|
-
stintSet$1(this.__world, 'half', data.__hasHalf);
|
|
7299
|
-
stintSet$1(data, '__fillAfterStroke', data.stroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
|
|
7300
7364
|
data.__checkSingle();
|
|
7301
|
-
stintSet$1(data, '__complex', data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect);
|
|
7365
|
+
stintSet$1(data, '__complex', (data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect));
|
|
7302
7366
|
},
|
|
7303
7367
|
__drawFast(canvas, options) {
|
|
7304
7368
|
drawFast(this, canvas, options);
|
|
@@ -7356,18 +7420,15 @@ const UIRender = {
|
|
|
7356
7420
|
this.__drawFast(canvas, options);
|
|
7357
7421
|
}
|
|
7358
7422
|
},
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
this.
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
if (stroke && !ignoreStroke)
|
|
7369
|
-
this.__.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
|
|
7370
|
-
}
|
|
7423
|
+
__drawShape(canvas, options) {
|
|
7424
|
+
this.__drawRenderPath(canvas);
|
|
7425
|
+
const data = this.__, { fill, stroke } = data;
|
|
7426
|
+
if (fill && !options.ignoreFill)
|
|
7427
|
+
data.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
|
|
7428
|
+
if (data.__isCanvas)
|
|
7429
|
+
this.__drawAfterFill(canvas, options);
|
|
7430
|
+
if (stroke && !options.ignoreStroke)
|
|
7431
|
+
data.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
|
|
7371
7432
|
},
|
|
7372
7433
|
__drawAfterFill(canvas, options) {
|
|
7373
7434
|
if (this.__.__clipAfterFill) {
|
|
@@ -7404,17 +7465,17 @@ const RectRender = {
|
|
|
7404
7465
|
if (__drawAfterFill)
|
|
7405
7466
|
this.__drawAfterFill(canvas, options);
|
|
7406
7467
|
if (stroke) {
|
|
7407
|
-
const { strokeAlign, __strokeWidth } = this.__;
|
|
7408
|
-
if (!
|
|
7468
|
+
const { strokeAlign, __strokeWidth: strokeWidth } = this.__;
|
|
7469
|
+
if (!strokeWidth)
|
|
7409
7470
|
return;
|
|
7410
|
-
canvas.setStroke(stroke,
|
|
7411
|
-
const half =
|
|
7471
|
+
canvas.setStroke(stroke, strokeWidth, this.__);
|
|
7472
|
+
const half = strokeWidth / 2;
|
|
7412
7473
|
switch (strokeAlign) {
|
|
7413
7474
|
case 'center':
|
|
7414
7475
|
canvas.strokeRect(0, 0, width, height);
|
|
7415
7476
|
break;
|
|
7416
7477
|
case 'inside':
|
|
7417
|
-
width -=
|
|
7478
|
+
width -= strokeWidth, height -= strokeWidth;
|
|
7418
7479
|
if (width < 0 || height < 0) {
|
|
7419
7480
|
canvas.save();
|
|
7420
7481
|
this.__clip(canvas, options);
|
|
@@ -7425,7 +7486,7 @@ const RectRender = {
|
|
|
7425
7486
|
canvas.strokeRect(x + half, y + half, width, height);
|
|
7426
7487
|
break;
|
|
7427
7488
|
case 'outside':
|
|
7428
|
-
canvas.strokeRect(x - half, y - half, width +
|
|
7489
|
+
canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth);
|
|
7429
7490
|
break;
|
|
7430
7491
|
}
|
|
7431
7492
|
}
|
|
@@ -7438,6 +7499,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7438
7499
|
get isFrame() { return false; }
|
|
7439
7500
|
set scale(value) { MathHelper.assignScale(this, value); }
|
|
7440
7501
|
get scale() { return this.__.scale; }
|
|
7502
|
+
get isAutoWidth() { const t = this.__; return t.__autoWidth || t.autoWidth; }
|
|
7503
|
+
get isAutoHeight() { const t = this.__; return t.__autoHeight || t.autoHeight; }
|
|
7441
7504
|
get pen() {
|
|
7442
7505
|
const { path } = this.__;
|
|
7443
7506
|
pen.set(this.path = path || []);
|
|
@@ -7492,12 +7555,14 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7492
7555
|
}
|
|
7493
7556
|
}
|
|
7494
7557
|
__updateRenderPath() {
|
|
7495
|
-
|
|
7496
|
-
|
|
7558
|
+
const data = this.__;
|
|
7559
|
+
if (data.path) {
|
|
7497
7560
|
data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
|
|
7498
7561
|
if (data.__useArrow)
|
|
7499
7562
|
PathArrow.addArrows(this, !data.cornerRadius);
|
|
7500
7563
|
}
|
|
7564
|
+
else
|
|
7565
|
+
data.__pathForRender && (data.__pathForRender = undefined);
|
|
7501
7566
|
}
|
|
7502
7567
|
__drawRenderPath(canvas) {
|
|
7503
7568
|
canvas.beginPath();
|
|
@@ -7650,6 +7715,9 @@ __decorate([
|
|
|
7650
7715
|
__decorate([
|
|
7651
7716
|
naturalBoundsType(1)
|
|
7652
7717
|
], UI.prototype, "pixelRatio", void 0);
|
|
7718
|
+
__decorate([
|
|
7719
|
+
affectRenderBoundsType(0)
|
|
7720
|
+
], UI.prototype, "renderSpread", void 0);
|
|
7653
7721
|
__decorate([
|
|
7654
7722
|
pathInputType()
|
|
7655
7723
|
], UI.prototype, "path", void 0);
|
|
@@ -7708,13 +7776,13 @@ __decorate([
|
|
|
7708
7776
|
surfaceType()
|
|
7709
7777
|
], UI.prototype, "fill", void 0);
|
|
7710
7778
|
__decorate([
|
|
7711
|
-
strokeType()
|
|
7779
|
+
strokeType(undefined, true)
|
|
7712
7780
|
], UI.prototype, "stroke", void 0);
|
|
7713
7781
|
__decorate([
|
|
7714
7782
|
strokeType('inside')
|
|
7715
7783
|
], UI.prototype, "strokeAlign", void 0);
|
|
7716
7784
|
__decorate([
|
|
7717
|
-
strokeType(1)
|
|
7785
|
+
strokeType(1, true)
|
|
7718
7786
|
], UI.prototype, "strokeWidth", void 0);
|
|
7719
7787
|
__decorate([
|
|
7720
7788
|
strokeType(false)
|
|
@@ -7806,7 +7874,8 @@ let Group = class Group extends UI {
|
|
|
7806
7874
|
}
|
|
7807
7875
|
toJSON(options) {
|
|
7808
7876
|
const data = super.toJSON(options);
|
|
7809
|
-
|
|
7877
|
+
if (!this.childlessJSON)
|
|
7878
|
+
data.children = this.children.map(child => child.toJSON(options));
|
|
7810
7879
|
return data;
|
|
7811
7880
|
}
|
|
7812
7881
|
pick(_hitPoint, _options) { return undefined; }
|
|
@@ -8141,7 +8210,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8141
8210
|
list.push(item);
|
|
8142
8211
|
this.requestRender();
|
|
8143
8212
|
}
|
|
8144
|
-
zoom(_zoomType,
|
|
8213
|
+
zoom(_zoomType, _optionsOrPadding, _scroll, _transition) {
|
|
8145
8214
|
return Plugin.need('view');
|
|
8146
8215
|
}
|
|
8147
8216
|
getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
|
|
@@ -8186,7 +8255,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8186
8255
|
Leafer_1.list.remove(this);
|
|
8187
8256
|
try {
|
|
8188
8257
|
this.stop();
|
|
8189
|
-
this.
|
|
8258
|
+
this.emitLeafer(LeaferEvent.END);
|
|
8190
8259
|
this.__removeListenEvents();
|
|
8191
8260
|
this.__controllers.forEach(item => !(this.parent && item === this.interaction) && item.destroy());
|
|
8192
8261
|
this.__controllers.length = 0;
|
|
@@ -8253,8 +8322,8 @@ let Box = class Box extends Group {
|
|
|
8253
8322
|
__updateRenderSpread() { return this.__updateRectRenderSpread() || -1; }
|
|
8254
8323
|
__updateRectBoxBounds() { }
|
|
8255
8324
|
__updateBoxBounds(_secondLayout) {
|
|
8256
|
-
const data = this.__;
|
|
8257
8325
|
if (this.children.length && !this.pathInputed) {
|
|
8326
|
+
const data = this.__;
|
|
8258
8327
|
if (data.__autoSide) {
|
|
8259
8328
|
if (data.__hasSurface)
|
|
8260
8329
|
this.__extraUpdate();
|
|
@@ -8281,20 +8350,26 @@ let Box = class Box extends Group {
|
|
|
8281
8350
|
__updateStrokeBounds() { }
|
|
8282
8351
|
__updateRenderBounds() {
|
|
8283
8352
|
let isOverflow;
|
|
8284
|
-
const { renderBounds } = this.__layout;
|
|
8285
8353
|
if (this.children.length) {
|
|
8354
|
+
const data = this.__, { renderBounds, boxBounds } = this.__layout;
|
|
8286
8355
|
super.__updateRenderBounds();
|
|
8287
8356
|
copy$2(childrenRenderBounds, renderBounds);
|
|
8288
8357
|
this.__updateRectRenderBounds();
|
|
8289
|
-
|
|
8290
|
-
|
|
8358
|
+
if (data.scrollY || data.scrollX) {
|
|
8359
|
+
childrenRenderBounds.x += data.scrollX;
|
|
8360
|
+
childrenRenderBounds.y += data.scrollY;
|
|
8361
|
+
}
|
|
8362
|
+
isOverflow = !includes$1(boxBounds, childrenRenderBounds);
|
|
8363
|
+
if (isOverflow && data.overflow !== 'hide')
|
|
8291
8364
|
add(renderBounds, childrenRenderBounds);
|
|
8292
8365
|
}
|
|
8293
8366
|
else
|
|
8294
8367
|
this.__updateRectRenderBounds();
|
|
8295
8368
|
DataHelper.stintSet(this, 'isOverflow', isOverflow);
|
|
8369
|
+
this.__updateScrollBar();
|
|
8296
8370
|
}
|
|
8297
8371
|
__updateRectRenderBounds() { }
|
|
8372
|
+
__updateScrollBar() { }
|
|
8298
8373
|
__updateRectChange() { }
|
|
8299
8374
|
__updateChange() {
|
|
8300
8375
|
super.__updateChange();
|
|
@@ -8311,10 +8386,12 @@ let Box = class Box extends Group {
|
|
|
8311
8386
|
if (this.children.length)
|
|
8312
8387
|
this.__renderGroup(canvas, options);
|
|
8313
8388
|
}
|
|
8389
|
+
if (this.scrollBar)
|
|
8390
|
+
this.scrollBar.__render(canvas, options);
|
|
8314
8391
|
}
|
|
8315
8392
|
__drawContent(canvas, options) {
|
|
8316
8393
|
this.__renderGroup(canvas, options);
|
|
8317
|
-
if (this.__.
|
|
8394
|
+
if (this.__.__useStroke || this.__.__useEffect) {
|
|
8318
8395
|
canvas.setWorld(this.__nowWorld);
|
|
8319
8396
|
this.__drawRenderPath(canvas);
|
|
8320
8397
|
}
|
|
@@ -8534,8 +8611,8 @@ let Polygon = class Polygon extends UI {
|
|
|
8534
8611
|
for (let i = 1; i < sides; i++) {
|
|
8535
8612
|
lineTo$1(path, rx + rx * sin$1((i * 2 * PI$1) / sides), ry - ry * cos$1((i * 2 * PI$1) / sides));
|
|
8536
8613
|
}
|
|
8614
|
+
closePath$1(path);
|
|
8537
8615
|
}
|
|
8538
|
-
closePath$1(path);
|
|
8539
8616
|
}
|
|
8540
8617
|
__updateRenderPath() { }
|
|
8541
8618
|
__updateBoxBounds() { }
|
|
@@ -8773,6 +8850,11 @@ let Text = class Text extends UI {
|
|
|
8773
8850
|
return;
|
|
8774
8851
|
super.__draw(canvas, options, originCanvas);
|
|
8775
8852
|
}
|
|
8853
|
+
__drawShape(canvas, options) {
|
|
8854
|
+
if (options.shape)
|
|
8855
|
+
this.__box && this.__box.__drawShape(canvas, options);
|
|
8856
|
+
super.__drawShape(canvas, options);
|
|
8857
|
+
}
|
|
8776
8858
|
destroy() {
|
|
8777
8859
|
if (this.boxStyle)
|
|
8778
8860
|
this.boxStyle = null;
|
|
@@ -8968,9 +9050,14 @@ function fills(fills, ui, canvas) {
|
|
|
8968
9050
|
}
|
|
8969
9051
|
}
|
|
8970
9052
|
canvas.fillStyle = item.style;
|
|
8971
|
-
if (item.transform) {
|
|
9053
|
+
if (item.transform || item.scaleFixed) {
|
|
8972
9054
|
canvas.save();
|
|
8973
|
-
|
|
9055
|
+
if (item.transform)
|
|
9056
|
+
canvas.transform(item.transform);
|
|
9057
|
+
if (item.scaleFixed) {
|
|
9058
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true);
|
|
9059
|
+
canvas.scale(1 / scaleX, 1 / scaleY);
|
|
9060
|
+
}
|
|
8974
9061
|
if (item.blendMode)
|
|
8975
9062
|
canvas.blendMode = item.blendMode;
|
|
8976
9063
|
fillPathOrText(ui, canvas);
|
|
@@ -9006,8 +9093,13 @@ function strokeText(stroke, ui, canvas) {
|
|
|
9006
9093
|
}
|
|
9007
9094
|
function drawCenter$1(stroke, strokeWidthScale, ui, canvas) {
|
|
9008
9095
|
const data = ui.__;
|
|
9009
|
-
|
|
9010
|
-
|
|
9096
|
+
if (typeof stroke === 'object') {
|
|
9097
|
+
drawStrokesStyle(stroke, strokeWidthScale, true, ui, canvas);
|
|
9098
|
+
}
|
|
9099
|
+
else {
|
|
9100
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
9101
|
+
drawTextStroke(ui, canvas);
|
|
9102
|
+
}
|
|
9011
9103
|
}
|
|
9012
9104
|
function drawAlign(stroke, align, ui, canvas) {
|
|
9013
9105
|
const out = canvas.getSameCanvas(true, true);
|
|
@@ -9016,15 +9108,9 @@ function drawAlign(stroke, align, ui, canvas) {
|
|
|
9016
9108
|
out.blendMode = align === 'outside' ? 'destination-out' : 'destination-in';
|
|
9017
9109
|
fillText(ui, out);
|
|
9018
9110
|
out.blendMode = 'normal';
|
|
9019
|
-
|
|
9111
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
9020
9112
|
out.recycle(ui.__nowWorld);
|
|
9021
9113
|
}
|
|
9022
|
-
function copyWorld(canvas, out, ui) {
|
|
9023
|
-
if (ui.__worldFlipped || Platform.fullImageShadow)
|
|
9024
|
-
canvas.copyWorldByReset(out, ui.__nowWorld);
|
|
9025
|
-
else
|
|
9026
|
-
canvas.copyWorldToInner(out, ui.__nowWorld, ui.__layout.renderBounds);
|
|
9027
|
-
}
|
|
9028
9114
|
function drawTextStroke(ui, canvas) {
|
|
9029
9115
|
let row, data = ui.__.__textDrawData;
|
|
9030
9116
|
const { rows, decorationY } = data;
|
|
@@ -9040,14 +9126,21 @@ function drawTextStroke(ui, canvas) {
|
|
|
9040
9126
|
rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
|
|
9041
9127
|
}
|
|
9042
9128
|
}
|
|
9043
|
-
function drawStrokesStyle(strokes, isText, ui, canvas) {
|
|
9129
|
+
function drawStrokesStyle(strokes, strokeWidthScale, isText, ui, canvas) {
|
|
9044
9130
|
let item;
|
|
9131
|
+
const data = ui.__, { __hasMultiStrokeStyle } = data;
|
|
9132
|
+
__hasMultiStrokeStyle || canvas.setStroke(undefined, data.__strokeWidth * strokeWidthScale, data);
|
|
9045
9133
|
for (let i = 0, len = strokes.length; i < len; i++) {
|
|
9046
9134
|
item = strokes[i];
|
|
9047
9135
|
if (item.image && PaintImage.checkImage(ui, canvas, item, false))
|
|
9048
9136
|
continue;
|
|
9049
9137
|
if (item.style) {
|
|
9050
|
-
|
|
9138
|
+
if (__hasMultiStrokeStyle) {
|
|
9139
|
+
const { strokeStyle } = item;
|
|
9140
|
+
strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
|
|
9141
|
+
}
|
|
9142
|
+
else
|
|
9143
|
+
canvas.strokeStyle = item.style;
|
|
9051
9144
|
if (item.blendMode) {
|
|
9052
9145
|
canvas.saveBlendMode(item.blendMode);
|
|
9053
9146
|
isText ? drawTextStroke(ui, canvas) : canvas.stroke();
|
|
@@ -9086,8 +9179,13 @@ function strokes(strokes, ui, canvas) {
|
|
|
9086
9179
|
}
|
|
9087
9180
|
function drawCenter(stroke, strokeWidthScale, ui, canvas) {
|
|
9088
9181
|
const data = ui.__;
|
|
9089
|
-
|
|
9090
|
-
|
|
9182
|
+
if (typeof stroke === 'object') {
|
|
9183
|
+
drawStrokesStyle(stroke, strokeWidthScale, false, ui, canvas);
|
|
9184
|
+
}
|
|
9185
|
+
else {
|
|
9186
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
9187
|
+
canvas.stroke();
|
|
9188
|
+
}
|
|
9091
9189
|
if (data.__useArrow)
|
|
9092
9190
|
Paint.strokeArrow(stroke, ui, canvas);
|
|
9093
9191
|
}
|
|
@@ -9109,7 +9207,7 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
9109
9207
|
drawCenter(stroke, 2, ui, out);
|
|
9110
9208
|
out.clipUI(data);
|
|
9111
9209
|
out.clearWorld(renderBounds);
|
|
9112
|
-
|
|
9210
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
9113
9211
|
out.recycle(ui.__nowWorld);
|
|
9114
9212
|
}
|
|
9115
9213
|
}
|
|
@@ -9164,8 +9262,16 @@ function compute(attrName, ui) {
|
|
|
9164
9262
|
if (!(paints instanceof Array))
|
|
9165
9263
|
paints = [paints];
|
|
9166
9264
|
recycleMap = PaintImage.recycleImage(attrName, data);
|
|
9265
|
+
let maxChildStrokeWidth;
|
|
9167
9266
|
for (let i = 0, len = paints.length, item; i < len; i++) {
|
|
9168
|
-
(item = getLeafPaint(attrName, paints[i], ui))
|
|
9267
|
+
if (item = getLeafPaint(attrName, paints[i], ui)) {
|
|
9268
|
+
leafPaints.push(item);
|
|
9269
|
+
if (item.strokeStyle) {
|
|
9270
|
+
maxChildStrokeWidth || (maxChildStrokeWidth = 1);
|
|
9271
|
+
if (item.strokeStyle.strokeWidth)
|
|
9272
|
+
maxChildStrokeWidth = Math.max(maxChildStrokeWidth, item.strokeStyle.strokeWidth);
|
|
9273
|
+
}
|
|
9274
|
+
}
|
|
9169
9275
|
}
|
|
9170
9276
|
data['_' + attrName] = leafPaints.length ? leafPaints : undefined;
|
|
9171
9277
|
if (leafPaints.length) {
|
|
@@ -9182,6 +9288,7 @@ function compute(attrName, ui) {
|
|
|
9182
9288
|
else {
|
|
9183
9289
|
stintSet(data, '__isAlphaPixelStroke', isAlphaPixel);
|
|
9184
9290
|
stintSet(data, '__isTransparentStroke', isTransparent);
|
|
9291
|
+
stintSet(data, '__hasMultiStrokeStyle', maxChildStrokeWidth);
|
|
9185
9292
|
}
|
|
9186
9293
|
}
|
|
9187
9294
|
function getLeafPaint(attrName, paint, ui) {
|
|
@@ -9213,6 +9320,11 @@ function getLeafPaint(attrName, paint, ui) {
|
|
|
9213
9320
|
if (data) {
|
|
9214
9321
|
if (typeof data.style === 'string' && hasTransparent$1(data.style))
|
|
9215
9322
|
data.isTransparent = true;
|
|
9323
|
+
if (paint.style) {
|
|
9324
|
+
if (paint.style.strokeWidth === 0)
|
|
9325
|
+
return undefined;
|
|
9326
|
+
data.strokeStyle = paint.style;
|
|
9327
|
+
}
|
|
9216
9328
|
if (paint.blendMode)
|
|
9217
9329
|
data.blendMode = paint.blendMode;
|
|
9218
9330
|
}
|
|
@@ -9232,8 +9344,8 @@ const PaintModule = {
|
|
|
9232
9344
|
shape
|
|
9233
9345
|
};
|
|
9234
9346
|
|
|
9235
|
-
let origin = {};
|
|
9236
|
-
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate } = MatrixHelper;
|
|
9347
|
+
let origin = {}, tempMatrix = getMatrixData();
|
|
9348
|
+
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
|
|
9237
9349
|
function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
9238
9350
|
const transform = get$3();
|
|
9239
9351
|
translate$1(transform, box.x + x, box.y + y);
|
|
@@ -9242,13 +9354,19 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
9242
9354
|
rotateOfOuter$1(transform, { x: box.x + box.width / 2, y: box.y + box.height / 2 }, rotation);
|
|
9243
9355
|
data.transform = transform;
|
|
9244
9356
|
}
|
|
9245
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
9357
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipSize) {
|
|
9246
9358
|
const transform = get$3();
|
|
9247
|
-
translate$1(transform, box.x + x, box.y + y);
|
|
9248
|
-
if (scaleX)
|
|
9249
|
-
scaleHelper(transform, scaleX, scaleY);
|
|
9250
9359
|
if (rotation)
|
|
9251
9360
|
rotate(transform, rotation);
|
|
9361
|
+
if (skew)
|
|
9362
|
+
skewHelper(transform, skew.x, skew.y);
|
|
9363
|
+
if (scaleX)
|
|
9364
|
+
scaleHelper(transform, scaleX, scaleY);
|
|
9365
|
+
translate$1(transform, box.x + x, box.y + y);
|
|
9366
|
+
if (clipSize) {
|
|
9367
|
+
tempMatrix.a = box.width / clipSize.width, tempMatrix.d = box.height / clipSize.height;
|
|
9368
|
+
multiplyParent(transform, tempMatrix);
|
|
9369
|
+
}
|
|
9252
9370
|
data.transform = transform;
|
|
9253
9371
|
}
|
|
9254
9372
|
function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, align) {
|
|
@@ -9285,11 +9403,15 @@ const tempBox = new Bounds();
|
|
|
9285
9403
|
const tempScaleData = {};
|
|
9286
9404
|
const tempImage = {};
|
|
9287
9405
|
function createData(leafPaint, image, paint, box) {
|
|
9288
|
-
const { changeful, sync } = paint;
|
|
9406
|
+
const { changeful, sync, editing, scaleFixed } = paint;
|
|
9289
9407
|
if (changeful)
|
|
9290
9408
|
leafPaint.changeful = changeful;
|
|
9291
9409
|
if (sync)
|
|
9292
9410
|
leafPaint.sync = sync;
|
|
9411
|
+
if (editing)
|
|
9412
|
+
leafPaint.editing = editing;
|
|
9413
|
+
if (scaleFixed)
|
|
9414
|
+
leafPaint.scaleFixed = scaleFixed;
|
|
9293
9415
|
leafPaint.data = getPatternData(paint, box, image);
|
|
9294
9416
|
}
|
|
9295
9417
|
function getPatternData(paint, box, image) {
|
|
@@ -9298,7 +9420,7 @@ function getPatternData(paint, box, image) {
|
|
|
9298
9420
|
if (paint.mode === 'strench')
|
|
9299
9421
|
paint.mode = 'stretch';
|
|
9300
9422
|
let { width, height } = image;
|
|
9301
|
-
const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
|
|
9423
|
+
const { opacity, mode, align, offset, scale, size, rotation, skew, clipSize, repeat, filters } = paint;
|
|
9302
9424
|
const sameBox = box.width === width && box.height === height;
|
|
9303
9425
|
const data = { mode };
|
|
9304
9426
|
const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
|
|
@@ -9332,8 +9454,8 @@ function getPatternData(paint, box, image) {
|
|
|
9332
9454
|
break;
|
|
9333
9455
|
case 'normal':
|
|
9334
9456
|
case 'clip':
|
|
9335
|
-
if (tempImage.x || tempImage.y || scaleX || rotation)
|
|
9336
|
-
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
|
|
9457
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
9458
|
+
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, paint.clipSize);
|
|
9337
9459
|
break;
|
|
9338
9460
|
case 'repeat':
|
|
9339
9461
|
if (!sameBox || scaleX || rotation)
|
|
@@ -9410,11 +9532,11 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
|
9410
9532
|
}
|
|
9411
9533
|
onLoadSuccess(ui, event);
|
|
9412
9534
|
}
|
|
9413
|
-
leafPaint.loadId =
|
|
9535
|
+
leafPaint.loadId = undefined;
|
|
9414
9536
|
}, (error) => {
|
|
9415
9537
|
ignoreRender(ui, false);
|
|
9416
9538
|
onLoadError(ui, event, error);
|
|
9417
|
-
leafPaint.loadId =
|
|
9539
|
+
leafPaint.loadId = undefined;
|
|
9418
9540
|
});
|
|
9419
9541
|
if (ui.placeholderColor) {
|
|
9420
9542
|
if (!ui.placeholderDelay)
|
|
@@ -9470,16 +9592,16 @@ function ignoreRender(ui, value) {
|
|
|
9470
9592
|
}
|
|
9471
9593
|
|
|
9472
9594
|
const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
|
|
9473
|
-
const { ceil, abs
|
|
9595
|
+
const { ceil, abs } = Math;
|
|
9474
9596
|
function createPattern(ui, paint, pixelRatio) {
|
|
9475
|
-
let { scaleX, scaleY } =
|
|
9597
|
+
let { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
9476
9598
|
const id = scaleX + '-' + scaleY + '-' + pixelRatio;
|
|
9477
9599
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
9478
|
-
scaleX = abs$1(scaleX);
|
|
9479
|
-
scaleY = abs$1(scaleY);
|
|
9480
9600
|
const { image, data } = paint;
|
|
9481
9601
|
let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
|
|
9482
9602
|
if (sx) {
|
|
9603
|
+
sx = abs(sx);
|
|
9604
|
+
sy = abs(sy);
|
|
9483
9605
|
imageMatrix = get$1();
|
|
9484
9606
|
copy$1(imageMatrix, transform);
|
|
9485
9607
|
scale(imageMatrix, 1 / sx, 1 / sy);
|
|
@@ -9532,9 +9654,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
9532
9654
|
}
|
|
9533
9655
|
}
|
|
9534
9656
|
|
|
9535
|
-
const { abs } = Math;
|
|
9536
9657
|
function checkImage(ui, canvas, paint, allowDraw) {
|
|
9537
|
-
const { scaleX, scaleY } =
|
|
9658
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
9538
9659
|
const { pixelRatio } = canvas, { data } = paint;
|
|
9539
9660
|
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
9540
9661
|
return false;
|
|
@@ -9547,8 +9668,8 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
9547
9668
|
else {
|
|
9548
9669
|
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
9549
9670
|
let { width, height } = data;
|
|
9550
|
-
width *=
|
|
9551
|
-
height *=
|
|
9671
|
+
width *= scaleX * pixelRatio;
|
|
9672
|
+
height *= scaleY * pixelRatio;
|
|
9552
9673
|
if (data.scaleX) {
|
|
9553
9674
|
width *= data.scaleX;
|
|
9554
9675
|
height *= data.scaleY;
|
|
@@ -9558,6 +9679,10 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
9558
9679
|
}
|
|
9559
9680
|
}
|
|
9560
9681
|
if (allowDraw) {
|
|
9682
|
+
if (ui.__.__isFastShadow) {
|
|
9683
|
+
canvas.fillStyle = paint.style || '#000';
|
|
9684
|
+
canvas.fill();
|
|
9685
|
+
}
|
|
9561
9686
|
drawImage(ui, canvas, paint, data);
|
|
9562
9687
|
return true;
|
|
9563
9688
|
}
|
|
@@ -9746,10 +9871,7 @@ function shadow(ui, current, shape) {
|
|
|
9746
9871
|
}
|
|
9747
9872
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, 'destination-out') : other.copyWorld(shape.canvas, shapeBounds, bounds, 'destination-out');
|
|
9748
9873
|
}
|
|
9749
|
-
|
|
9750
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
9751
|
-
else
|
|
9752
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
9874
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
9753
9875
|
if (end && index < end)
|
|
9754
9876
|
other.clearWorld(copyBounds, true);
|
|
9755
9877
|
});
|
|
@@ -9808,10 +9930,7 @@ function innerShadow(ui, current, shape) {
|
|
|
9808
9930
|
copyBounds = bounds;
|
|
9809
9931
|
}
|
|
9810
9932
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), 'source-in');
|
|
9811
|
-
|
|
9812
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
9813
|
-
else
|
|
9814
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
9933
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
9815
9934
|
if (end && index < end)
|
|
9816
9935
|
other.clearWorld(copyBounds, true);
|
|
9817
9936
|
});
|
|
@@ -9867,12 +9986,11 @@ Group.prototype.__renderMask = function (canvas, options) {
|
|
|
9867
9986
|
contentCanvas = getCanvas(canvas);
|
|
9868
9987
|
child.__render(maskCanvas, options);
|
|
9869
9988
|
}
|
|
9870
|
-
if (
|
|
9871
|
-
|
|
9872
|
-
}
|
|
9873
|
-
if (excludeRenderBounds(child, options))
|
|
9989
|
+
if (mask === 'clipping' || mask === 'clipping-path')
|
|
9990
|
+
excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
9874
9991
|
continue;
|
|
9875
|
-
|
|
9992
|
+
}
|
|
9993
|
+
excludeRenderBounds(child, options) || child.__render(contentCanvas || canvas, options);
|
|
9876
9994
|
}
|
|
9877
9995
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity);
|
|
9878
9996
|
};
|
|
@@ -10454,4 +10572,4 @@ Object.assign(Effect, EffectModule);
|
|
|
10454
10572
|
|
|
10455
10573
|
useCanvas();
|
|
10456
10574
|
|
|
10457
|
-
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, 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, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isEmptyData, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$2 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
10575
|
+
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, 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, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isEmptyData, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
|