leafer-draw 1.7.0 → 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/web.cjs +77 -47
- package/dist/web.esm.js +78 -48
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +230 -134
- 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 +228 -134
- 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
|
@@ -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) {
|
|
@@ -763,7 +763,7 @@ class Matrix {
|
|
|
763
763
|
MatrixHelper.reset(this);
|
|
764
764
|
}
|
|
765
765
|
}
|
|
766
|
-
const tempMatrix = new Matrix();
|
|
766
|
+
const tempMatrix$1 = new Matrix();
|
|
767
767
|
|
|
768
768
|
const TwoPointBoundsHelper = {
|
|
769
769
|
tempPointBounds: {},
|
|
@@ -860,6 +860,12 @@ const AroundHelper = {
|
|
|
860
860
|
}
|
|
861
861
|
if (!onlyBoxSize)
|
|
862
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;
|
|
863
869
|
}
|
|
864
870
|
};
|
|
865
871
|
function get$4(around) {
|
|
@@ -1788,10 +1794,13 @@ function contextAttr(realName) {
|
|
|
1788
1794
|
return (target, key) => {
|
|
1789
1795
|
if (!realName)
|
|
1790
1796
|
realName = key;
|
|
1791
|
-
|
|
1797
|
+
const property = {
|
|
1792
1798
|
get() { return this.context[realName]; },
|
|
1793
1799
|
set(value) { this.context[realName] = value; }
|
|
1794
|
-
}
|
|
1800
|
+
};
|
|
1801
|
+
if (key === 'strokeCap')
|
|
1802
|
+
property.set = function (value) { this.context[realName] = value === 'none' ? 'butt' : value; };
|
|
1803
|
+
Object.defineProperty(target, key, property);
|
|
1795
1804
|
};
|
|
1796
1805
|
}
|
|
1797
1806
|
const contextMethodNameList = [];
|
|
@@ -2067,15 +2076,15 @@ __decorate([
|
|
|
2067
2076
|
contextMethod()
|
|
2068
2077
|
], Canvas$1.prototype, "strokeText", null);
|
|
2069
2078
|
|
|
2070
|
-
const { copy: copy$8, multiplyParent: multiplyParent$
|
|
2079
|
+
const { copy: copy$8, multiplyParent: multiplyParent$4 } = MatrixHelper, { round: round$1 } = Math;
|
|
2071
2080
|
const minSize = { width: 1, height: 1, pixelRatio: 1 };
|
|
2072
2081
|
const canvasSizeAttrs = ['width', 'height', 'pixelRatio'];
|
|
2073
2082
|
class LeaferCanvasBase extends Canvas$1 {
|
|
2074
2083
|
get width() { return this.size.width; }
|
|
2075
2084
|
get height() { return this.size.height; }
|
|
2076
2085
|
get pixelRatio() { return this.size.pixelRatio; }
|
|
2077
|
-
get pixelWidth() { return this.width * this.pixelRatio; }
|
|
2078
|
-
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; }
|
|
2079
2088
|
get pixelSnap() { return this.config.pixelSnap; }
|
|
2080
2089
|
set pixelSnap(value) { this.config.pixelSnap = value; }
|
|
2081
2090
|
get allowBackgroundColor() { return this.view && this.parentView; }
|
|
@@ -2140,7 +2149,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2140
2149
|
setWorld(matrix, parentMatrix) {
|
|
2141
2150
|
const { pixelRatio, pixelSnap } = this, w = this.worldTransform;
|
|
2142
2151
|
if (parentMatrix)
|
|
2143
|
-
multiplyParent$
|
|
2152
|
+
multiplyParent$4(matrix, parentMatrix, w);
|
|
2144
2153
|
w.a = matrix.a * pixelRatio;
|
|
2145
2154
|
w.b = matrix.b * pixelRatio;
|
|
2146
2155
|
w.c = matrix.c * pixelRatio;
|
|
@@ -2162,20 +2171,33 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2162
2171
|
if (w)
|
|
2163
2172
|
this.setTransform(w.a, w.b, w.c, w.d, w.e, w.f);
|
|
2164
2173
|
}
|
|
2165
|
-
setStroke(color, strokeWidth, options) {
|
|
2174
|
+
setStroke(color, strokeWidth, options, childOptions) {
|
|
2166
2175
|
if (strokeWidth)
|
|
2167
2176
|
this.strokeWidth = strokeWidth;
|
|
2168
2177
|
if (color)
|
|
2169
2178
|
this.strokeStyle = color;
|
|
2170
2179
|
if (options)
|
|
2171
|
-
this.setStrokeOptions(options);
|
|
2172
|
-
}
|
|
2173
|
-
setStrokeOptions(options) {
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
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;
|
|
2179
2201
|
}
|
|
2180
2202
|
saveBlendMode(blendMode) {
|
|
2181
2203
|
this.savedBlendMode = this.blendMode;
|
|
@@ -2409,7 +2431,7 @@ const RectHelper = {
|
|
|
2409
2431
|
}
|
|
2410
2432
|
};
|
|
2411
2433
|
|
|
2412
|
-
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;
|
|
2413
2435
|
const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
|
|
2414
2436
|
const { set, toNumberPoints } = PointHelper;
|
|
2415
2437
|
const { M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5 } = PathCommandMap;
|
|
@@ -2484,7 +2506,7 @@ const BezierHelper = {
|
|
|
2484
2506
|
let totalRadian = endRadian - startRadian;
|
|
2485
2507
|
if (totalRadian < 0)
|
|
2486
2508
|
totalRadian += PI2;
|
|
2487
|
-
if (totalRadian === PI$2 || (abs$
|
|
2509
|
+
if (totalRadian === PI$2 || (abs$2(BAx + BAy) < 1.e-12) || (abs$2(CBx + CBy) < 1.e-12)) {
|
|
2488
2510
|
if (data)
|
|
2489
2511
|
data.push(L$6, x1, y1);
|
|
2490
2512
|
if (setPointBounds) {
|
|
@@ -2526,7 +2548,7 @@ const BezierHelper = {
|
|
|
2526
2548
|
totalRadian -= PI2;
|
|
2527
2549
|
if (anticlockwise)
|
|
2528
2550
|
totalRadian -= PI2;
|
|
2529
|
-
const parts = ceil$1(abs$
|
|
2551
|
+
const parts = ceil$1(abs$2(totalRadian / PI_2));
|
|
2530
2552
|
const partRadian = totalRadian / parts;
|
|
2531
2553
|
const partRadian4Sin = sin$3(partRadian / 4);
|
|
2532
2554
|
const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
|
|
@@ -2971,7 +2993,7 @@ const { current, pushData, copyData } = PathConvert;
|
|
|
2971
2993
|
|
|
2972
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;
|
|
2973
2995
|
const { getMinDistanceFrom, getRadianFrom } = PointHelper;
|
|
2974
|
-
const { tan, min, abs: abs$
|
|
2996
|
+
const { tan, min, abs: abs$1 } = Math;
|
|
2975
2997
|
const startPoint = {};
|
|
2976
2998
|
const PathCommandDataHelper = {
|
|
2977
2999
|
beginPath(data) {
|
|
@@ -3034,7 +3056,7 @@ const PathCommandDataHelper = {
|
|
|
3034
3056
|
arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
|
|
3035
3057
|
if (lastX !== undefined) {
|
|
3036
3058
|
const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
|
|
3037
|
-
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))));
|
|
3038
3060
|
}
|
|
3039
3061
|
data.push(U$2, x1, y1, x2, y2, radius);
|
|
3040
3062
|
},
|
|
@@ -3910,6 +3932,13 @@ function defineKey(target, key, descriptor, noConfigurable) {
|
|
|
3910
3932
|
function getDescriptor(object, name) {
|
|
3911
3933
|
return Object.getOwnPropertyDescriptor(object, name);
|
|
3912
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
|
+
}
|
|
3913
3942
|
function getNames(object) {
|
|
3914
3943
|
return Object.getOwnPropertyNames(object);
|
|
3915
3944
|
}
|
|
@@ -4142,15 +4171,7 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
4142
4171
|
const data = target.__DataProcessor.prototype;
|
|
4143
4172
|
const computedKey = '_' + key;
|
|
4144
4173
|
const setMethodName = getSetMethodName(key);
|
|
4145
|
-
const property =
|
|
4146
|
-
get() {
|
|
4147
|
-
const v = this[computedKey];
|
|
4148
|
-
return v === undefined ? defaultValue : v;
|
|
4149
|
-
},
|
|
4150
|
-
set(value) {
|
|
4151
|
-
this[computedKey] = value;
|
|
4152
|
-
}
|
|
4153
|
-
};
|
|
4174
|
+
const property = createDescriptor(key, defaultValue);
|
|
4154
4175
|
if (defaultValue === undefined) {
|
|
4155
4176
|
property.get = function () { return this[computedKey]; };
|
|
4156
4177
|
}
|
|
@@ -4265,7 +4286,7 @@ function registerUIEvent() {
|
|
|
4265
4286
|
};
|
|
4266
4287
|
}
|
|
4267
4288
|
|
|
4268
|
-
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;
|
|
4269
4290
|
const matrix = {}, { round } = Math;
|
|
4270
4291
|
const LeafHelper = {
|
|
4271
4292
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
@@ -4337,6 +4358,14 @@ const LeafHelper = {
|
|
|
4337
4358
|
}
|
|
4338
4359
|
return true;
|
|
4339
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
|
+
},
|
|
4340
4369
|
moveWorld(t, x, y = 0, isInnerPoint, transition) {
|
|
4341
4370
|
const local = typeof x === 'object' ? Object.assign({}, x) : { x, y };
|
|
4342
4371
|
isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : (t.parent && toInnerPoint$1(t.parent.worldTransform, local, local, true));
|
|
@@ -4396,14 +4425,14 @@ const LeafHelper = {
|
|
|
4396
4425
|
},
|
|
4397
4426
|
transformWorld(t, transform, resize, transition) {
|
|
4398
4427
|
copy$6(matrix, t.worldTransform);
|
|
4399
|
-
multiplyParent$
|
|
4428
|
+
multiplyParent$3(matrix, transform);
|
|
4400
4429
|
if (t.parent)
|
|
4401
4430
|
divideParent(matrix, t.parent.worldTransform);
|
|
4402
4431
|
L.setTransform(t, matrix, resize, transition);
|
|
4403
4432
|
},
|
|
4404
4433
|
transform(t, transform, resize, transition) {
|
|
4405
4434
|
copy$6(matrix, t.localTransform);
|
|
4406
|
-
multiplyParent$
|
|
4435
|
+
multiplyParent$3(matrix, transform);
|
|
4407
4436
|
L.setTransform(t, matrix, resize, transition);
|
|
4408
4437
|
},
|
|
4409
4438
|
setTransform(t, transform, resize, transition) {
|
|
@@ -5265,17 +5294,18 @@ const LeafDataProxy = {
|
|
|
5265
5294
|
}
|
|
5266
5295
|
};
|
|
5267
5296
|
|
|
5268
|
-
const { setLayout, multiplyParent: multiplyParent$
|
|
5297
|
+
const { setLayout, multiplyParent: multiplyParent$2, translateInner, defaultWorld } = MatrixHelper;
|
|
5269
5298
|
const { toPoint: toPoint$3, tempPoint } = AroundHelper;
|
|
5270
5299
|
const LeafMatrix = {
|
|
5271
5300
|
__updateWorldMatrix() {
|
|
5272
|
-
|
|
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.__);
|
|
5273
5303
|
},
|
|
5274
5304
|
__updateLocalMatrix() {
|
|
5275
5305
|
if (this.__local) {
|
|
5276
5306
|
const layout = this.__layout, local = this.__local, data = this.__;
|
|
5277
5307
|
if (layout.affectScaleOrRotation) {
|
|
5278
|
-
if ((layout.scaleChanged && (layout.resized = 'scale')) || layout.rotationChanged) {
|
|
5308
|
+
if ((layout.scaleChanged && (layout.resized || (layout.resized = 'scale'))) || layout.rotationChanged) {
|
|
5279
5309
|
setLayout(local, data, null, null, layout.affectRotation);
|
|
5280
5310
|
layout.scaleChanged = layout.rotationChanged = undefined;
|
|
5281
5311
|
}
|
|
@@ -5441,10 +5471,7 @@ const LeafRender = {
|
|
|
5441
5471
|
return this.__renderEraser(canvas, options);
|
|
5442
5472
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
5443
5473
|
this.__draw(tempCanvas, options, canvas);
|
|
5444
|
-
|
|
5445
|
-
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
|
|
5446
|
-
else
|
|
5447
|
-
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
|
|
5474
|
+
LeafHelper.copyCanvasByWorld(this, canvas, tempCanvas, this.__nowWorld, data.__blendMode, true);
|
|
5448
5475
|
tempCanvas.recycle(this.__nowWorld);
|
|
5449
5476
|
}
|
|
5450
5477
|
else {
|
|
@@ -5492,7 +5519,7 @@ const BranchRender = {
|
|
|
5492
5519
|
options.dimOpacity = data.dim === true ? 0.2 : data.dim;
|
|
5493
5520
|
else if (data.dimskip)
|
|
5494
5521
|
options.dimOpacity && (options.dimOpacity = 0);
|
|
5495
|
-
if (data.__single) {
|
|
5522
|
+
if (data.__single && !this.isBranchLeaf) {
|
|
5496
5523
|
if (data.eraser === 'path')
|
|
5497
5524
|
return this.__renderEraser(canvas, options);
|
|
5498
5525
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
@@ -5514,9 +5541,7 @@ const BranchRender = {
|
|
|
5514
5541
|
else {
|
|
5515
5542
|
const { children } = this;
|
|
5516
5543
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
5517
|
-
|
|
5518
|
-
continue;
|
|
5519
|
-
children[i].__render(canvas, options);
|
|
5544
|
+
excludeRenderBounds$1(children[i], options) || children[i].__render(canvas, options);
|
|
5520
5545
|
}
|
|
5521
5546
|
}
|
|
5522
5547
|
},
|
|
@@ -5524,16 +5549,15 @@ const BranchRender = {
|
|
|
5524
5549
|
if (this.__worldOpacity) {
|
|
5525
5550
|
const { children } = this;
|
|
5526
5551
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
5527
|
-
|
|
5528
|
-
continue;
|
|
5529
|
-
children[i].__clip(canvas, options);
|
|
5552
|
+
excludeRenderBounds$1(children[i], options) || children[i].__clip(canvas, options);
|
|
5530
5553
|
}
|
|
5531
5554
|
}
|
|
5532
5555
|
}
|
|
5533
5556
|
};
|
|
5534
5557
|
|
|
5558
|
+
const tempScaleData$1 = {};
|
|
5535
5559
|
const { LEAF, create } = IncrementId;
|
|
5536
|
-
const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
|
|
5560
|
+
const { toInnerPoint, toOuterPoint, multiplyParent: multiplyParent$1 } = MatrixHelper;
|
|
5537
5561
|
const { toOuterOf } = BoundsHelper;
|
|
5538
5562
|
const { copy: copy$3, move } = PointHelper;
|
|
5539
5563
|
const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
|
|
@@ -5715,7 +5739,7 @@ let Leaf = class Leaf {
|
|
|
5715
5739
|
if (!this.__cameraWorld)
|
|
5716
5740
|
this.__cameraWorld = {};
|
|
5717
5741
|
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
5718
|
-
multiplyParent(world, options.matrix, cameraWorld, undefined, world);
|
|
5742
|
+
multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
|
|
5719
5743
|
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
5720
5744
|
cameraWorld.half !== world.half && (cameraWorld.half = world.half);
|
|
5721
5745
|
return cameraWorld;
|
|
@@ -5724,6 +5748,22 @@ let Leaf = class Leaf {
|
|
|
5724
5748
|
return this.__world;
|
|
5725
5749
|
}
|
|
5726
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
|
+
}
|
|
5727
5767
|
getTransform(relative) {
|
|
5728
5768
|
return this.__layout.getTransform(relative || 'local');
|
|
5729
5769
|
}
|
|
@@ -6248,7 +6288,7 @@ class LeafLevelList {
|
|
|
6248
6288
|
}
|
|
6249
6289
|
}
|
|
6250
6290
|
|
|
6251
|
-
const version = "1.
|
|
6291
|
+
const version = "1.8.0";
|
|
6252
6292
|
|
|
6253
6293
|
const debug$4 = Debug.get('LeaferCanvas');
|
|
6254
6294
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
@@ -7120,6 +7160,11 @@ function zoomLayerType() {
|
|
|
7120
7160
|
});
|
|
7121
7161
|
};
|
|
7122
7162
|
}
|
|
7163
|
+
function createAttr(defaultValue) {
|
|
7164
|
+
return (target, key) => {
|
|
7165
|
+
defineKey(target, key, createDescriptor(key, defaultValue));
|
|
7166
|
+
};
|
|
7167
|
+
}
|
|
7123
7168
|
|
|
7124
7169
|
function hasTransparent$3(color) {
|
|
7125
7170
|
if (!color || color.length === 7 || color.length === 4)
|
|
@@ -7177,22 +7222,9 @@ const emptyPaint = {};
|
|
|
7177
7222
|
const debug$1 = Debug.get('UIData');
|
|
7178
7223
|
class UIData extends LeafData {
|
|
7179
7224
|
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
7180
|
-
get __strokeWidth() {
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
const ui = this.__leaf;
|
|
7184
|
-
let { scaleX } = ui.__nowWorld || ui.__world;
|
|
7185
|
-
if (scaleX < 0)
|
|
7186
|
-
scaleX = -scaleX;
|
|
7187
|
-
return scaleX > 1 ? strokeWidth / scaleX : strokeWidth;
|
|
7188
|
-
}
|
|
7189
|
-
else
|
|
7190
|
-
return strokeWidth;
|
|
7191
|
-
}
|
|
7192
|
-
get __hasMultiPaint() {
|
|
7193
|
-
const t = this;
|
|
7194
|
-
return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect;
|
|
7195
|
-
}
|
|
7225
|
+
get __strokeWidth() { return this.__getRealStrokeWidth(); }
|
|
7226
|
+
get __maxStrokeWidth() { const t = this; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth; }
|
|
7227
|
+
get __hasMultiPaint() { const t = this; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect; }
|
|
7196
7228
|
get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
|
|
7197
7229
|
get __hasSurface() { const t = this; return (t.fill || t.stroke); }
|
|
7198
7230
|
get __autoWidth() { return !this._width; }
|
|
@@ -7274,6 +7306,21 @@ class UIData extends LeafData {
|
|
|
7274
7306
|
Paint.compute('stroke', this.__leaf);
|
|
7275
7307
|
this.__needComputePaint = undefined;
|
|
7276
7308
|
}
|
|
7309
|
+
__getRealStrokeWidth(childStyle) {
|
|
7310
|
+
let { strokeWidth, strokeWidthFixed } = this;
|
|
7311
|
+
if (childStyle) {
|
|
7312
|
+
if (childStyle.strokeWidth)
|
|
7313
|
+
strokeWidth = childStyle.strokeWidth;
|
|
7314
|
+
if (childStyle.strokeWidthFixed !== undefined)
|
|
7315
|
+
strokeWidthFixed = childStyle.strokeWidthFixed;
|
|
7316
|
+
}
|
|
7317
|
+
if (strokeWidthFixed) {
|
|
7318
|
+
const scale = this.__leaf.getClampRenderScale();
|
|
7319
|
+
return scale > 1 ? strokeWidth / scale : strokeWidth;
|
|
7320
|
+
}
|
|
7321
|
+
else
|
|
7322
|
+
return strokeWidth;
|
|
7323
|
+
}
|
|
7277
7324
|
__setPaint(attrName, value) {
|
|
7278
7325
|
this.__setInput(attrName, value);
|
|
7279
7326
|
const layout = this.__leaf.__layout;
|
|
@@ -7298,6 +7345,7 @@ class UIData extends LeafData {
|
|
|
7298
7345
|
}
|
|
7299
7346
|
else {
|
|
7300
7347
|
stintSet$2(this, '__isAlphaPixelStroke', undefined);
|
|
7348
|
+
stintSet$2(this, '__hasMultiStrokeStyle', undefined);
|
|
7301
7349
|
this._stroke = this.__isStrokes = undefined;
|
|
7302
7350
|
}
|
|
7303
7351
|
}
|
|
@@ -7319,8 +7367,8 @@ class GroupData extends UIData {
|
|
|
7319
7367
|
|
|
7320
7368
|
class BoxData extends GroupData {
|
|
7321
7369
|
get __boxStroke() { return !this.__pathInputed; }
|
|
7322
|
-
get __drawAfterFill() { const t = this; return
|
|
7323
|
-
get __clipAfterFill() { return
|
|
7370
|
+
get __drawAfterFill() { const t = this; return t.__single || t.__clipAfterFill; }
|
|
7371
|
+
get __clipAfterFill() { const t = this; return t.overflow === 'hide' && t.__leaf.children.length && (t.__leaf.isOverflow || super.__clipAfterFill); }
|
|
7324
7372
|
}
|
|
7325
7373
|
|
|
7326
7374
|
class LeaferData extends GroupData {
|
|
@@ -7440,7 +7488,7 @@ class CanvasData extends RectData {
|
|
|
7440
7488
|
const UIBounds = {
|
|
7441
7489
|
__updateStrokeSpread() {
|
|
7442
7490
|
let width = 0, boxWidth = 0;
|
|
7443
|
-
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7491
|
+
const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box;
|
|
7444
7492
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7445
7493
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7446
7494
|
if (!data.__boxStroke) {
|
|
@@ -7460,13 +7508,15 @@ const UIBounds = {
|
|
|
7460
7508
|
},
|
|
7461
7509
|
__updateRenderSpread() {
|
|
7462
7510
|
let width = 0;
|
|
7463
|
-
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7511
|
+
const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__;
|
|
7464
7512
|
if (shadow)
|
|
7465
7513
|
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));
|
|
7466
7514
|
if (blur)
|
|
7467
7515
|
width = Math.max(width, blur);
|
|
7468
7516
|
if (filter)
|
|
7469
7517
|
width += Filter.getSpread(filter);
|
|
7518
|
+
if (renderSpread)
|
|
7519
|
+
width += renderSpread;
|
|
7470
7520
|
let shapeWidth = width = Math.ceil(width);
|
|
7471
7521
|
if (innerShadow)
|
|
7472
7522
|
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));
|
|
@@ -7489,7 +7539,7 @@ const UIRender = {
|
|
|
7489
7539
|
}
|
|
7490
7540
|
if (data.__useEffect) {
|
|
7491
7541
|
const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
|
|
7492
|
-
stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread &&
|
|
7542
|
+
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')));
|
|
7493
7543
|
data.__useEffect = !!(shadow || otherEffect);
|
|
7494
7544
|
}
|
|
7495
7545
|
data.__checkSingle();
|
|
@@ -7596,17 +7646,17 @@ const RectRender = {
|
|
|
7596
7646
|
if (__drawAfterFill)
|
|
7597
7647
|
this.__drawAfterFill(canvas, options);
|
|
7598
7648
|
if (stroke) {
|
|
7599
|
-
const { strokeAlign, __strokeWidth } = this.__;
|
|
7600
|
-
if (!
|
|
7649
|
+
const { strokeAlign, __strokeWidth: strokeWidth } = this.__;
|
|
7650
|
+
if (!strokeWidth)
|
|
7601
7651
|
return;
|
|
7602
|
-
canvas.setStroke(stroke,
|
|
7603
|
-
const half =
|
|
7652
|
+
canvas.setStroke(stroke, strokeWidth, this.__);
|
|
7653
|
+
const half = strokeWidth / 2;
|
|
7604
7654
|
switch (strokeAlign) {
|
|
7605
7655
|
case 'center':
|
|
7606
7656
|
canvas.strokeRect(0, 0, width, height);
|
|
7607
7657
|
break;
|
|
7608
7658
|
case 'inside':
|
|
7609
|
-
width -=
|
|
7659
|
+
width -= strokeWidth, height -= strokeWidth;
|
|
7610
7660
|
if (width < 0 || height < 0) {
|
|
7611
7661
|
canvas.save();
|
|
7612
7662
|
this.__clip(canvas, options);
|
|
@@ -7617,7 +7667,7 @@ const RectRender = {
|
|
|
7617
7667
|
canvas.strokeRect(x + half, y + half, width, height);
|
|
7618
7668
|
break;
|
|
7619
7669
|
case 'outside':
|
|
7620
|
-
canvas.strokeRect(x - half, y - half, width +
|
|
7670
|
+
canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth);
|
|
7621
7671
|
break;
|
|
7622
7672
|
}
|
|
7623
7673
|
}
|
|
@@ -7630,6 +7680,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7630
7680
|
get isFrame() { return false; }
|
|
7631
7681
|
set scale(value) { MathHelper.assignScale(this, value); }
|
|
7632
7682
|
get scale() { return this.__.scale; }
|
|
7683
|
+
get isAutoWidth() { const t = this.__; return t.__autoWidth || t.autoWidth; }
|
|
7684
|
+
get isAutoHeight() { const t = this.__; return t.__autoHeight || t.autoHeight; }
|
|
7633
7685
|
get pen() {
|
|
7634
7686
|
const { path } = this.__;
|
|
7635
7687
|
pen.set(this.path = path || []);
|
|
@@ -7844,6 +7896,9 @@ __decorate([
|
|
|
7844
7896
|
__decorate([
|
|
7845
7897
|
naturalBoundsType(1)
|
|
7846
7898
|
], UI.prototype, "pixelRatio", void 0);
|
|
7899
|
+
__decorate([
|
|
7900
|
+
affectRenderBoundsType(0)
|
|
7901
|
+
], UI.prototype, "renderSpread", void 0);
|
|
7847
7902
|
__decorate([
|
|
7848
7903
|
pathInputType()
|
|
7849
7904
|
], UI.prototype, "path", void 0);
|
|
@@ -8000,7 +8055,8 @@ let Group = class Group extends UI {
|
|
|
8000
8055
|
}
|
|
8001
8056
|
toJSON(options) {
|
|
8002
8057
|
const data = super.toJSON(options);
|
|
8003
|
-
|
|
8058
|
+
if (!this.childlessJSON)
|
|
8059
|
+
data.children = this.children.map(child => child.toJSON(options));
|
|
8004
8060
|
return data;
|
|
8005
8061
|
}
|
|
8006
8062
|
pick(_hitPoint, _options) { return undefined; }
|
|
@@ -8447,8 +8503,8 @@ let Box = class Box extends Group {
|
|
|
8447
8503
|
__updateRenderSpread() { return this.__updateRectRenderSpread() || -1; }
|
|
8448
8504
|
__updateRectBoxBounds() { }
|
|
8449
8505
|
__updateBoxBounds(_secondLayout) {
|
|
8450
|
-
const data = this.__;
|
|
8451
8506
|
if (this.children.length && !this.pathInputed) {
|
|
8507
|
+
const data = this.__;
|
|
8452
8508
|
if (data.__autoSide) {
|
|
8453
8509
|
if (data.__hasSurface)
|
|
8454
8510
|
this.__extraUpdate();
|
|
@@ -8475,20 +8531,26 @@ let Box = class Box extends Group {
|
|
|
8475
8531
|
__updateStrokeBounds() { }
|
|
8476
8532
|
__updateRenderBounds() {
|
|
8477
8533
|
let isOverflow;
|
|
8478
|
-
const { renderBounds } = this.__layout;
|
|
8479
8534
|
if (this.children.length) {
|
|
8535
|
+
const data = this.__, { renderBounds, boxBounds } = this.__layout;
|
|
8480
8536
|
super.__updateRenderBounds();
|
|
8481
8537
|
copy$2(childrenRenderBounds, renderBounds);
|
|
8482
8538
|
this.__updateRectRenderBounds();
|
|
8483
|
-
|
|
8484
|
-
|
|
8539
|
+
if (data.scrollY || data.scrollX) {
|
|
8540
|
+
childrenRenderBounds.x += data.scrollX;
|
|
8541
|
+
childrenRenderBounds.y += data.scrollY;
|
|
8542
|
+
}
|
|
8543
|
+
isOverflow = !includes$1(boxBounds, childrenRenderBounds);
|
|
8544
|
+
if (isOverflow && data.overflow !== 'hide')
|
|
8485
8545
|
add(renderBounds, childrenRenderBounds);
|
|
8486
8546
|
}
|
|
8487
8547
|
else
|
|
8488
8548
|
this.__updateRectRenderBounds();
|
|
8489
8549
|
DataHelper.stintSet(this, 'isOverflow', isOverflow);
|
|
8550
|
+
this.__updateScrollBar();
|
|
8490
8551
|
}
|
|
8491
8552
|
__updateRectRenderBounds() { }
|
|
8553
|
+
__updateScrollBar() { }
|
|
8492
8554
|
__updateRectChange() { }
|
|
8493
8555
|
__updateChange() {
|
|
8494
8556
|
super.__updateChange();
|
|
@@ -8505,10 +8567,12 @@ let Box = class Box extends Group {
|
|
|
8505
8567
|
if (this.children.length)
|
|
8506
8568
|
this.__renderGroup(canvas, options);
|
|
8507
8569
|
}
|
|
8570
|
+
if (this.scrollBar)
|
|
8571
|
+
this.scrollBar.__render(canvas, options);
|
|
8508
8572
|
}
|
|
8509
8573
|
__drawContent(canvas, options) {
|
|
8510
8574
|
this.__renderGroup(canvas, options);
|
|
8511
|
-
if (this.__.__useStroke) {
|
|
8575
|
+
if (this.__.__useStroke || this.__.__useEffect) {
|
|
8512
8576
|
canvas.setWorld(this.__nowWorld);
|
|
8513
8577
|
this.__drawRenderPath(canvas);
|
|
8514
8578
|
}
|
|
@@ -9167,9 +9231,14 @@ function fills(fills, ui, canvas) {
|
|
|
9167
9231
|
}
|
|
9168
9232
|
}
|
|
9169
9233
|
canvas.fillStyle = item.style;
|
|
9170
|
-
if (item.transform) {
|
|
9234
|
+
if (item.transform || item.scaleFixed) {
|
|
9171
9235
|
canvas.save();
|
|
9172
|
-
|
|
9236
|
+
if (item.transform)
|
|
9237
|
+
canvas.transform(item.transform);
|
|
9238
|
+
if (item.scaleFixed) {
|
|
9239
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true);
|
|
9240
|
+
canvas.scale(1 / scaleX, 1 / scaleY);
|
|
9241
|
+
}
|
|
9173
9242
|
if (item.blendMode)
|
|
9174
9243
|
canvas.blendMode = item.blendMode;
|
|
9175
9244
|
fillPathOrText(ui, canvas);
|
|
@@ -9205,8 +9274,13 @@ function strokeText(stroke, ui, canvas) {
|
|
|
9205
9274
|
}
|
|
9206
9275
|
function drawCenter$1(stroke, strokeWidthScale, ui, canvas) {
|
|
9207
9276
|
const data = ui.__;
|
|
9208
|
-
|
|
9209
|
-
|
|
9277
|
+
if (typeof stroke === 'object') {
|
|
9278
|
+
drawStrokesStyle(stroke, strokeWidthScale, true, ui, canvas);
|
|
9279
|
+
}
|
|
9280
|
+
else {
|
|
9281
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
9282
|
+
drawTextStroke(ui, canvas);
|
|
9283
|
+
}
|
|
9210
9284
|
}
|
|
9211
9285
|
function drawAlign(stroke, align, ui, canvas) {
|
|
9212
9286
|
const out = canvas.getSameCanvas(true, true);
|
|
@@ -9215,15 +9289,9 @@ function drawAlign(stroke, align, ui, canvas) {
|
|
|
9215
9289
|
out.blendMode = align === 'outside' ? 'destination-out' : 'destination-in';
|
|
9216
9290
|
fillText(ui, out);
|
|
9217
9291
|
out.blendMode = 'normal';
|
|
9218
|
-
|
|
9292
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
9219
9293
|
out.recycle(ui.__nowWorld);
|
|
9220
9294
|
}
|
|
9221
|
-
function copyWorld(canvas, out, ui) {
|
|
9222
|
-
if (ui.__worldFlipped || Platform.fullImageShadow)
|
|
9223
|
-
canvas.copyWorldByReset(out, ui.__nowWorld);
|
|
9224
|
-
else
|
|
9225
|
-
canvas.copyWorldToInner(out, ui.__nowWorld, ui.__layout.renderBounds);
|
|
9226
|
-
}
|
|
9227
9295
|
function drawTextStroke(ui, canvas) {
|
|
9228
9296
|
let row, data = ui.__.__textDrawData;
|
|
9229
9297
|
const { rows, decorationY } = data;
|
|
@@ -9239,14 +9307,21 @@ function drawTextStroke(ui, canvas) {
|
|
|
9239
9307
|
rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
|
|
9240
9308
|
}
|
|
9241
9309
|
}
|
|
9242
|
-
function drawStrokesStyle(strokes, isText, ui, canvas) {
|
|
9310
|
+
function drawStrokesStyle(strokes, strokeWidthScale, isText, ui, canvas) {
|
|
9243
9311
|
let item;
|
|
9312
|
+
const data = ui.__, { __hasMultiStrokeStyle } = data;
|
|
9313
|
+
__hasMultiStrokeStyle || canvas.setStroke(undefined, data.__strokeWidth * strokeWidthScale, data);
|
|
9244
9314
|
for (let i = 0, len = strokes.length; i < len; i++) {
|
|
9245
9315
|
item = strokes[i];
|
|
9246
9316
|
if (item.image && PaintImage.checkImage(ui, canvas, item, false))
|
|
9247
9317
|
continue;
|
|
9248
9318
|
if (item.style) {
|
|
9249
|
-
|
|
9319
|
+
if (__hasMultiStrokeStyle) {
|
|
9320
|
+
const { strokeStyle } = item;
|
|
9321
|
+
strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
|
|
9322
|
+
}
|
|
9323
|
+
else
|
|
9324
|
+
canvas.strokeStyle = item.style;
|
|
9250
9325
|
if (item.blendMode) {
|
|
9251
9326
|
canvas.saveBlendMode(item.blendMode);
|
|
9252
9327
|
isText ? drawTextStroke(ui, canvas) : canvas.stroke();
|
|
@@ -9285,8 +9360,13 @@ function strokes(strokes, ui, canvas) {
|
|
|
9285
9360
|
}
|
|
9286
9361
|
function drawCenter(stroke, strokeWidthScale, ui, canvas) {
|
|
9287
9362
|
const data = ui.__;
|
|
9288
|
-
|
|
9289
|
-
|
|
9363
|
+
if (typeof stroke === 'object') {
|
|
9364
|
+
drawStrokesStyle(stroke, strokeWidthScale, false, ui, canvas);
|
|
9365
|
+
}
|
|
9366
|
+
else {
|
|
9367
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
9368
|
+
canvas.stroke();
|
|
9369
|
+
}
|
|
9290
9370
|
if (data.__useArrow)
|
|
9291
9371
|
Paint.strokeArrow(stroke, ui, canvas);
|
|
9292
9372
|
}
|
|
@@ -9308,7 +9388,7 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
9308
9388
|
drawCenter(stroke, 2, ui, out);
|
|
9309
9389
|
out.clipUI(data);
|
|
9310
9390
|
out.clearWorld(renderBounds);
|
|
9311
|
-
|
|
9391
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
9312
9392
|
out.recycle(ui.__nowWorld);
|
|
9313
9393
|
}
|
|
9314
9394
|
}
|
|
@@ -9363,8 +9443,16 @@ function compute(attrName, ui) {
|
|
|
9363
9443
|
if (!(paints instanceof Array))
|
|
9364
9444
|
paints = [paints];
|
|
9365
9445
|
recycleMap = PaintImage.recycleImage(attrName, data);
|
|
9446
|
+
let maxChildStrokeWidth;
|
|
9366
9447
|
for (let i = 0, len = paints.length, item; i < len; i++) {
|
|
9367
|
-
(item = getLeafPaint(attrName, paints[i], ui))
|
|
9448
|
+
if (item = getLeafPaint(attrName, paints[i], ui)) {
|
|
9449
|
+
leafPaints.push(item);
|
|
9450
|
+
if (item.strokeStyle) {
|
|
9451
|
+
maxChildStrokeWidth || (maxChildStrokeWidth = 1);
|
|
9452
|
+
if (item.strokeStyle.strokeWidth)
|
|
9453
|
+
maxChildStrokeWidth = Math.max(maxChildStrokeWidth, item.strokeStyle.strokeWidth);
|
|
9454
|
+
}
|
|
9455
|
+
}
|
|
9368
9456
|
}
|
|
9369
9457
|
data['_' + attrName] = leafPaints.length ? leafPaints : undefined;
|
|
9370
9458
|
if (leafPaints.length) {
|
|
@@ -9381,6 +9469,7 @@ function compute(attrName, ui) {
|
|
|
9381
9469
|
else {
|
|
9382
9470
|
stintSet(data, '__isAlphaPixelStroke', isAlphaPixel);
|
|
9383
9471
|
stintSet(data, '__isTransparentStroke', isTransparent);
|
|
9472
|
+
stintSet(data, '__hasMultiStrokeStyle', maxChildStrokeWidth);
|
|
9384
9473
|
}
|
|
9385
9474
|
}
|
|
9386
9475
|
function getLeafPaint(attrName, paint, ui) {
|
|
@@ -9412,6 +9501,11 @@ function getLeafPaint(attrName, paint, ui) {
|
|
|
9412
9501
|
if (data) {
|
|
9413
9502
|
if (typeof data.style === 'string' && hasTransparent$1(data.style))
|
|
9414
9503
|
data.isTransparent = true;
|
|
9504
|
+
if (paint.style) {
|
|
9505
|
+
if (paint.style.strokeWidth === 0)
|
|
9506
|
+
return undefined;
|
|
9507
|
+
data.strokeStyle = paint.style;
|
|
9508
|
+
}
|
|
9415
9509
|
if (paint.blendMode)
|
|
9416
9510
|
data.blendMode = paint.blendMode;
|
|
9417
9511
|
}
|
|
@@ -9431,8 +9525,8 @@ const PaintModule = {
|
|
|
9431
9525
|
shape
|
|
9432
9526
|
};
|
|
9433
9527
|
|
|
9434
|
-
let origin = {};
|
|
9435
|
-
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
|
|
9528
|
+
let origin = {}, tempMatrix = getMatrixData();
|
|
9529
|
+
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
|
|
9436
9530
|
function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
9437
9531
|
const transform = get$3();
|
|
9438
9532
|
translate$1(transform, box.x + x, box.y + y);
|
|
@@ -9441,7 +9535,7 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
9441
9535
|
rotateOfOuter$1(transform, { x: box.x + box.width / 2, y: box.y + box.height / 2 }, rotation);
|
|
9442
9536
|
data.transform = transform;
|
|
9443
9537
|
}
|
|
9444
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew) {
|
|
9538
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipSize) {
|
|
9445
9539
|
const transform = get$3();
|
|
9446
9540
|
if (rotation)
|
|
9447
9541
|
rotate(transform, rotation);
|
|
@@ -9450,6 +9544,10 @@ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew) {
|
|
|
9450
9544
|
if (scaleX)
|
|
9451
9545
|
scaleHelper(transform, scaleX, scaleY);
|
|
9452
9546
|
translate$1(transform, box.x + x, box.y + y);
|
|
9547
|
+
if (clipSize) {
|
|
9548
|
+
tempMatrix.a = box.width / clipSize.width, tempMatrix.d = box.height / clipSize.height;
|
|
9549
|
+
multiplyParent(transform, tempMatrix);
|
|
9550
|
+
}
|
|
9453
9551
|
data.transform = transform;
|
|
9454
9552
|
}
|
|
9455
9553
|
function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, align) {
|
|
@@ -9486,13 +9584,15 @@ const tempBox = new Bounds();
|
|
|
9486
9584
|
const tempScaleData = {};
|
|
9487
9585
|
const tempImage = {};
|
|
9488
9586
|
function createData(leafPaint, image, paint, box) {
|
|
9489
|
-
const { changeful, sync, editing } = paint;
|
|
9587
|
+
const { changeful, sync, editing, scaleFixed } = paint;
|
|
9490
9588
|
if (changeful)
|
|
9491
9589
|
leafPaint.changeful = changeful;
|
|
9492
9590
|
if (sync)
|
|
9493
9591
|
leafPaint.sync = sync;
|
|
9494
9592
|
if (editing)
|
|
9495
9593
|
leafPaint.editing = editing;
|
|
9594
|
+
if (scaleFixed)
|
|
9595
|
+
leafPaint.scaleFixed = scaleFixed;
|
|
9496
9596
|
leafPaint.data = getPatternData(paint, box, image);
|
|
9497
9597
|
}
|
|
9498
9598
|
function getPatternData(paint, box, image) {
|
|
@@ -9501,7 +9601,7 @@ function getPatternData(paint, box, image) {
|
|
|
9501
9601
|
if (paint.mode === 'strench')
|
|
9502
9602
|
paint.mode = 'stretch';
|
|
9503
9603
|
let { width, height } = image;
|
|
9504
|
-
const { opacity, mode, align, offset, scale, size, rotation, skew, repeat, filters } = paint;
|
|
9604
|
+
const { opacity, mode, align, offset, scale, size, rotation, skew, clipSize, repeat, filters } = paint;
|
|
9505
9605
|
const sameBox = box.width === width && box.height === height;
|
|
9506
9606
|
const data = { mode };
|
|
9507
9607
|
const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
|
|
@@ -9535,8 +9635,8 @@ function getPatternData(paint, box, image) {
|
|
|
9535
9635
|
break;
|
|
9536
9636
|
case 'normal':
|
|
9537
9637
|
case 'clip':
|
|
9538
|
-
if (tempImage.x || tempImage.y || scaleX || rotation || skew)
|
|
9539
|
-
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew);
|
|
9638
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
9639
|
+
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, paint.clipSize);
|
|
9540
9640
|
break;
|
|
9541
9641
|
case 'repeat':
|
|
9542
9642
|
if (!sameBox || scaleX || rotation)
|
|
@@ -9673,18 +9773,16 @@ function ignoreRender(ui, value) {
|
|
|
9673
9773
|
}
|
|
9674
9774
|
|
|
9675
9775
|
const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
|
|
9676
|
-
const { ceil, abs
|
|
9776
|
+
const { ceil, abs } = Math;
|
|
9677
9777
|
function createPattern(ui, paint, pixelRatio) {
|
|
9678
|
-
let { scaleX, scaleY } =
|
|
9778
|
+
let { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
9679
9779
|
const id = scaleX + '-' + scaleY + '-' + pixelRatio;
|
|
9680
9780
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
9681
|
-
scaleX = abs$1(scaleX);
|
|
9682
|
-
scaleY = abs$1(scaleY);
|
|
9683
9781
|
const { image, data } = paint;
|
|
9684
9782
|
let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
|
|
9685
9783
|
if (sx) {
|
|
9686
|
-
sx = abs
|
|
9687
|
-
sy = abs
|
|
9784
|
+
sx = abs(sx);
|
|
9785
|
+
sy = abs(sy);
|
|
9688
9786
|
imageMatrix = get$1();
|
|
9689
9787
|
copy$1(imageMatrix, transform);
|
|
9690
9788
|
scale(imageMatrix, 1 / sx, 1 / sy);
|
|
@@ -9737,9 +9835,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
9737
9835
|
}
|
|
9738
9836
|
}
|
|
9739
9837
|
|
|
9740
|
-
const { abs } = Math;
|
|
9741
9838
|
function checkImage(ui, canvas, paint, allowDraw) {
|
|
9742
|
-
const { scaleX, scaleY } =
|
|
9839
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
9743
9840
|
const { pixelRatio } = canvas, { data } = paint;
|
|
9744
9841
|
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
9745
9842
|
return false;
|
|
@@ -9752,8 +9849,8 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
9752
9849
|
else {
|
|
9753
9850
|
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
9754
9851
|
let { width, height } = data;
|
|
9755
|
-
width *=
|
|
9756
|
-
height *=
|
|
9852
|
+
width *= scaleX * pixelRatio;
|
|
9853
|
+
height *= scaleY * pixelRatio;
|
|
9757
9854
|
if (data.scaleX) {
|
|
9758
9855
|
width *= data.scaleX;
|
|
9759
9856
|
height *= data.scaleY;
|
|
@@ -9763,6 +9860,10 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
9763
9860
|
}
|
|
9764
9861
|
}
|
|
9765
9862
|
if (allowDraw) {
|
|
9863
|
+
if (ui.__.__isFastShadow) {
|
|
9864
|
+
canvas.fillStyle = paint.style || '#000';
|
|
9865
|
+
canvas.fill();
|
|
9866
|
+
}
|
|
9766
9867
|
drawImage(ui, canvas, paint, data);
|
|
9767
9868
|
return true;
|
|
9768
9869
|
}
|
|
@@ -9951,10 +10052,7 @@ function shadow(ui, current, shape) {
|
|
|
9951
10052
|
}
|
|
9952
10053
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, 'destination-out') : other.copyWorld(shape.canvas, shapeBounds, bounds, 'destination-out');
|
|
9953
10054
|
}
|
|
9954
|
-
|
|
9955
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
9956
|
-
else
|
|
9957
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
10055
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
9958
10056
|
if (end && index < end)
|
|
9959
10057
|
other.clearWorld(copyBounds, true);
|
|
9960
10058
|
});
|
|
@@ -10013,10 +10111,7 @@ function innerShadow(ui, current, shape) {
|
|
|
10013
10111
|
copyBounds = bounds;
|
|
10014
10112
|
}
|
|
10015
10113
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), 'source-in');
|
|
10016
|
-
|
|
10017
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
10018
|
-
else
|
|
10019
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
10114
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
10020
10115
|
if (end && index < end)
|
|
10021
10116
|
other.clearWorld(copyBounds, true);
|
|
10022
10117
|
});
|
|
@@ -10072,12 +10167,11 @@ Group.prototype.__renderMask = function (canvas, options) {
|
|
|
10072
10167
|
contentCanvas = getCanvas(canvas);
|
|
10073
10168
|
child.__render(maskCanvas, options);
|
|
10074
10169
|
}
|
|
10075
|
-
if (
|
|
10076
|
-
|
|
10077
|
-
}
|
|
10078
|
-
if (excludeRenderBounds(child, options))
|
|
10170
|
+
if (mask === 'clipping' || mask === 'clipping-path')
|
|
10171
|
+
excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
10079
10172
|
continue;
|
|
10080
|
-
|
|
10173
|
+
}
|
|
10174
|
+
excludeRenderBounds(child, options) || child.__render(contentCanvas || canvas, options);
|
|
10081
10175
|
}
|
|
10082
10176
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity);
|
|
10083
10177
|
};
|
|
@@ -10659,4 +10753,4 @@ Object.assign(Effect, EffectModule);
|
|
|
10659
10753
|
|
|
10660
10754
|
useCanvas();
|
|
10661
10755
|
|
|
10662
|
-
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$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, 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 };
|
|
10756
|
+
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$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, 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 };
|