leafer-ui 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/README.md +10 -4
- 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 +242 -144
- 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 +240 -144
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +11 -11
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$9, multiplyParent: multiplyParent$
|
|
2079
|
+
const { copy: copy$9, 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$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$
|
|
4289
|
+
const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$3, divideParent, getLayout } = MatrixHelper;
|
|
4269
4290
|
const matrix$1 = {}, { 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$7(matrix$1, t.worldTransform);
|
|
4399
|
-
multiplyParent$
|
|
4428
|
+
multiplyParent$3(matrix$1, transform);
|
|
4400
4429
|
if (t.parent)
|
|
4401
4430
|
divideParent(matrix$1, t.parent.worldTransform);
|
|
4402
4431
|
L.setTransform(t, matrix$1, resize, transition);
|
|
4403
4432
|
},
|
|
4404
4433
|
transform(t, transform, resize, transition) {
|
|
4405
4434
|
copy$7(matrix$1, t.localTransform);
|
|
4406
|
-
multiplyParent$
|
|
4435
|
+
multiplyParent$3(matrix$1, transform);
|
|
4407
4436
|
L.setTransform(t, matrix$1, 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$4, 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$5 = Debug.get('LeaferCanvas');
|
|
6254
6294
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
@@ -7277,6 +7317,11 @@ function zoomLayerType() {
|
|
|
7277
7317
|
});
|
|
7278
7318
|
};
|
|
7279
7319
|
}
|
|
7320
|
+
function createAttr(defaultValue) {
|
|
7321
|
+
return (target, key) => {
|
|
7322
|
+
defineKey(target, key, createDescriptor(key, defaultValue));
|
|
7323
|
+
};
|
|
7324
|
+
}
|
|
7280
7325
|
|
|
7281
7326
|
function hasTransparent$3(color) {
|
|
7282
7327
|
if (!color || color.length === 7 || color.length === 4)
|
|
@@ -7334,22 +7379,9 @@ const emptyPaint = {};
|
|
|
7334
7379
|
const debug$2 = Debug.get('UIData');
|
|
7335
7380
|
class UIData extends LeafData {
|
|
7336
7381
|
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
7337
|
-
get __strokeWidth() {
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
const ui = this.__leaf;
|
|
7341
|
-
let { scaleX } = ui.__nowWorld || ui.__world;
|
|
7342
|
-
if (scaleX < 0)
|
|
7343
|
-
scaleX = -scaleX;
|
|
7344
|
-
return scaleX > 1 ? strokeWidth / scaleX : strokeWidth;
|
|
7345
|
-
}
|
|
7346
|
-
else
|
|
7347
|
-
return strokeWidth;
|
|
7348
|
-
}
|
|
7349
|
-
get __hasMultiPaint() {
|
|
7350
|
-
const t = this;
|
|
7351
|
-
return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect;
|
|
7352
|
-
}
|
|
7382
|
+
get __strokeWidth() { return this.__getRealStrokeWidth(); }
|
|
7383
|
+
get __maxStrokeWidth() { const t = this; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth; }
|
|
7384
|
+
get __hasMultiPaint() { const t = this; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect; }
|
|
7353
7385
|
get __clipAfterFill() { const t = this; return (t.cornerRadius || t.innerShadow || t.__pathInputed); }
|
|
7354
7386
|
get __hasSurface() { const t = this; return (t.fill || t.stroke); }
|
|
7355
7387
|
get __autoWidth() { return !this._width; }
|
|
@@ -7431,6 +7463,21 @@ class UIData extends LeafData {
|
|
|
7431
7463
|
Paint.compute('stroke', this.__leaf);
|
|
7432
7464
|
this.__needComputePaint = undefined;
|
|
7433
7465
|
}
|
|
7466
|
+
__getRealStrokeWidth(childStyle) {
|
|
7467
|
+
let { strokeWidth, strokeWidthFixed } = this;
|
|
7468
|
+
if (childStyle) {
|
|
7469
|
+
if (childStyle.strokeWidth)
|
|
7470
|
+
strokeWidth = childStyle.strokeWidth;
|
|
7471
|
+
if (childStyle.strokeWidthFixed !== undefined)
|
|
7472
|
+
strokeWidthFixed = childStyle.strokeWidthFixed;
|
|
7473
|
+
}
|
|
7474
|
+
if (strokeWidthFixed) {
|
|
7475
|
+
const scale = this.__leaf.getClampRenderScale();
|
|
7476
|
+
return scale > 1 ? strokeWidth / scale : strokeWidth;
|
|
7477
|
+
}
|
|
7478
|
+
else
|
|
7479
|
+
return strokeWidth;
|
|
7480
|
+
}
|
|
7434
7481
|
__setPaint(attrName, value) {
|
|
7435
7482
|
this.__setInput(attrName, value);
|
|
7436
7483
|
const layout = this.__leaf.__layout;
|
|
@@ -7455,6 +7502,7 @@ class UIData extends LeafData {
|
|
|
7455
7502
|
}
|
|
7456
7503
|
else {
|
|
7457
7504
|
stintSet$2(this, '__isAlphaPixelStroke', undefined);
|
|
7505
|
+
stintSet$2(this, '__hasMultiStrokeStyle', undefined);
|
|
7458
7506
|
this._stroke = this.__isStrokes = undefined;
|
|
7459
7507
|
}
|
|
7460
7508
|
}
|
|
@@ -7476,8 +7524,8 @@ class GroupData extends UIData {
|
|
|
7476
7524
|
|
|
7477
7525
|
class BoxData extends GroupData {
|
|
7478
7526
|
get __boxStroke() { return !this.__pathInputed; }
|
|
7479
|
-
get __drawAfterFill() { const t = this; return
|
|
7480
|
-
get __clipAfterFill() { return
|
|
7527
|
+
get __drawAfterFill() { const t = this; return t.__single || t.__clipAfterFill; }
|
|
7528
|
+
get __clipAfterFill() { const t = this; return t.overflow === 'hide' && t.__leaf.children.length && (t.__leaf.isOverflow || super.__clipAfterFill); }
|
|
7481
7529
|
}
|
|
7482
7530
|
|
|
7483
7531
|
class LeaferData extends GroupData {
|
|
@@ -7597,7 +7645,7 @@ class CanvasData extends RectData {
|
|
|
7597
7645
|
const UIBounds = {
|
|
7598
7646
|
__updateStrokeSpread() {
|
|
7599
7647
|
let width = 0, boxWidth = 0;
|
|
7600
|
-
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7648
|
+
const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box;
|
|
7601
7649
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7602
7650
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7603
7651
|
if (!data.__boxStroke) {
|
|
@@ -7617,13 +7665,15 @@ const UIBounds = {
|
|
|
7617
7665
|
},
|
|
7618
7666
|
__updateRenderSpread() {
|
|
7619
7667
|
let width = 0;
|
|
7620
|
-
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7668
|
+
const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__;
|
|
7621
7669
|
if (shadow)
|
|
7622
7670
|
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));
|
|
7623
7671
|
if (blur)
|
|
7624
7672
|
width = Math.max(width, blur);
|
|
7625
7673
|
if (filter)
|
|
7626
7674
|
width += Filter.getSpread(filter);
|
|
7675
|
+
if (renderSpread)
|
|
7676
|
+
width += renderSpread;
|
|
7627
7677
|
let shapeWidth = width = Math.ceil(width);
|
|
7628
7678
|
if (innerShadow)
|
|
7629
7679
|
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));
|
|
@@ -7646,7 +7696,7 @@ const UIRender = {
|
|
|
7646
7696
|
}
|
|
7647
7697
|
if (data.__useEffect) {
|
|
7648
7698
|
const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
|
|
7649
|
-
stintSet$1(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread &&
|
|
7699
|
+
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')));
|
|
7650
7700
|
data.__useEffect = !!(shadow || otherEffect);
|
|
7651
7701
|
}
|
|
7652
7702
|
data.__checkSingle();
|
|
@@ -7753,17 +7803,17 @@ const RectRender = {
|
|
|
7753
7803
|
if (__drawAfterFill)
|
|
7754
7804
|
this.__drawAfterFill(canvas, options);
|
|
7755
7805
|
if (stroke) {
|
|
7756
|
-
const { strokeAlign, __strokeWidth } = this.__;
|
|
7757
|
-
if (!
|
|
7806
|
+
const { strokeAlign, __strokeWidth: strokeWidth } = this.__;
|
|
7807
|
+
if (!strokeWidth)
|
|
7758
7808
|
return;
|
|
7759
|
-
canvas.setStroke(stroke,
|
|
7760
|
-
const half =
|
|
7809
|
+
canvas.setStroke(stroke, strokeWidth, this.__);
|
|
7810
|
+
const half = strokeWidth / 2;
|
|
7761
7811
|
switch (strokeAlign) {
|
|
7762
7812
|
case 'center':
|
|
7763
7813
|
canvas.strokeRect(0, 0, width, height);
|
|
7764
7814
|
break;
|
|
7765
7815
|
case 'inside':
|
|
7766
|
-
width -=
|
|
7816
|
+
width -= strokeWidth, height -= strokeWidth;
|
|
7767
7817
|
if (width < 0 || height < 0) {
|
|
7768
7818
|
canvas.save();
|
|
7769
7819
|
this.__clip(canvas, options);
|
|
@@ -7774,7 +7824,7 @@ const RectRender = {
|
|
|
7774
7824
|
canvas.strokeRect(x + half, y + half, width, height);
|
|
7775
7825
|
break;
|
|
7776
7826
|
case 'outside':
|
|
7777
|
-
canvas.strokeRect(x - half, y - half, width +
|
|
7827
|
+
canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth);
|
|
7778
7828
|
break;
|
|
7779
7829
|
}
|
|
7780
7830
|
}
|
|
@@ -7787,6 +7837,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7787
7837
|
get isFrame() { return false; }
|
|
7788
7838
|
set scale(value) { MathHelper.assignScale(this, value); }
|
|
7789
7839
|
get scale() { return this.__.scale; }
|
|
7840
|
+
get isAutoWidth() { const t = this.__; return t.__autoWidth || t.autoWidth; }
|
|
7841
|
+
get isAutoHeight() { const t = this.__; return t.__autoHeight || t.autoHeight; }
|
|
7790
7842
|
get pen() {
|
|
7791
7843
|
const { path } = this.__;
|
|
7792
7844
|
pen.set(this.path = path || []);
|
|
@@ -8001,6 +8053,9 @@ __decorate([
|
|
|
8001
8053
|
__decorate([
|
|
8002
8054
|
naturalBoundsType(1)
|
|
8003
8055
|
], UI.prototype, "pixelRatio", void 0);
|
|
8056
|
+
__decorate([
|
|
8057
|
+
affectRenderBoundsType(0)
|
|
8058
|
+
], UI.prototype, "renderSpread", void 0);
|
|
8004
8059
|
__decorate([
|
|
8005
8060
|
pathInputType()
|
|
8006
8061
|
], UI.prototype, "path", void 0);
|
|
@@ -8157,7 +8212,8 @@ let Group = class Group extends UI {
|
|
|
8157
8212
|
}
|
|
8158
8213
|
toJSON(options) {
|
|
8159
8214
|
const data = super.toJSON(options);
|
|
8160
|
-
|
|
8215
|
+
if (!this.childlessJSON)
|
|
8216
|
+
data.children = this.children.map(child => child.toJSON(options));
|
|
8161
8217
|
return data;
|
|
8162
8218
|
}
|
|
8163
8219
|
pick(_hitPoint, _options) { return undefined; }
|
|
@@ -8604,8 +8660,8 @@ let Box = class Box extends Group {
|
|
|
8604
8660
|
__updateRenderSpread() { return this.__updateRectRenderSpread() || -1; }
|
|
8605
8661
|
__updateRectBoxBounds() { }
|
|
8606
8662
|
__updateBoxBounds(_secondLayout) {
|
|
8607
|
-
const data = this.__;
|
|
8608
8663
|
if (this.children.length && !this.pathInputed) {
|
|
8664
|
+
const data = this.__;
|
|
8609
8665
|
if (data.__autoSide) {
|
|
8610
8666
|
if (data.__hasSurface)
|
|
8611
8667
|
this.__extraUpdate();
|
|
@@ -8632,20 +8688,26 @@ let Box = class Box extends Group {
|
|
|
8632
8688
|
__updateStrokeBounds() { }
|
|
8633
8689
|
__updateRenderBounds() {
|
|
8634
8690
|
let isOverflow;
|
|
8635
|
-
const { renderBounds } = this.__layout;
|
|
8636
8691
|
if (this.children.length) {
|
|
8692
|
+
const data = this.__, { renderBounds, boxBounds } = this.__layout;
|
|
8637
8693
|
super.__updateRenderBounds();
|
|
8638
8694
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8639
8695
|
this.__updateRectRenderBounds();
|
|
8640
|
-
|
|
8641
|
-
|
|
8696
|
+
if (data.scrollY || data.scrollX) {
|
|
8697
|
+
childrenRenderBounds.x += data.scrollX;
|
|
8698
|
+
childrenRenderBounds.y += data.scrollY;
|
|
8699
|
+
}
|
|
8700
|
+
isOverflow = !includes$1(boxBounds, childrenRenderBounds);
|
|
8701
|
+
if (isOverflow && data.overflow !== 'hide')
|
|
8642
8702
|
add(renderBounds, childrenRenderBounds);
|
|
8643
8703
|
}
|
|
8644
8704
|
else
|
|
8645
8705
|
this.__updateRectRenderBounds();
|
|
8646
8706
|
DataHelper.stintSet(this, 'isOverflow', isOverflow);
|
|
8707
|
+
this.__updateScrollBar();
|
|
8647
8708
|
}
|
|
8648
8709
|
__updateRectRenderBounds() { }
|
|
8710
|
+
__updateScrollBar() { }
|
|
8649
8711
|
__updateRectChange() { }
|
|
8650
8712
|
__updateChange() {
|
|
8651
8713
|
super.__updateChange();
|
|
@@ -8662,10 +8724,12 @@ let Box = class Box extends Group {
|
|
|
8662
8724
|
if (this.children.length)
|
|
8663
8725
|
this.__renderGroup(canvas, options);
|
|
8664
8726
|
}
|
|
8727
|
+
if (this.scrollBar)
|
|
8728
|
+
this.scrollBar.__render(canvas, options);
|
|
8665
8729
|
}
|
|
8666
8730
|
__drawContent(canvas, options) {
|
|
8667
8731
|
this.__renderGroup(canvas, options);
|
|
8668
|
-
if (this.__.__useStroke) {
|
|
8732
|
+
if (this.__.__useStroke || this.__.__useEffect) {
|
|
8669
8733
|
canvas.setWorld(this.__nowWorld);
|
|
8670
8734
|
this.__drawRenderPath(canvas);
|
|
8671
8735
|
}
|
|
@@ -10468,18 +10532,20 @@ leaf.__hitWorld = function (point) {
|
|
|
10468
10532
|
}
|
|
10469
10533
|
return this.__hit(inner);
|
|
10470
10534
|
};
|
|
10471
|
-
leaf.__hitFill = function (inner) {
|
|
10472
|
-
leaf.__hitStroke = function (inner, strokeWidth) {
|
|
10473
|
-
leaf.__hitPixel = function (inner) {
|
|
10474
|
-
leaf.__drawHitPath = function (canvas) {
|
|
10475
|
-
this.__drawRenderPath(canvas); };
|
|
10535
|
+
leaf.__hitFill = function (inner) { const h = this.__hitCanvas; return h && h.hitFill(inner, this.__.windingRule); };
|
|
10536
|
+
leaf.__hitStroke = function (inner, strokeWidth) { const h = this.__hitCanvas; return h && h.hitStroke(inner, strokeWidth); };
|
|
10537
|
+
leaf.__hitPixel = function (inner) { const h = this.__hitCanvas; return h && h.hitPixel(inner, this.__layout.renderBounds, h.hitScale); };
|
|
10538
|
+
leaf.__drawHitPath = function (canvas) { canvas && this.__drawRenderPath(canvas); };
|
|
10476
10539
|
|
|
10477
10540
|
const matrix = new Matrix();
|
|
10478
10541
|
const ui$1 = UI.prototype;
|
|
10479
10542
|
ui$1.__updateHitCanvas = function () {
|
|
10480
10543
|
if (this.__box)
|
|
10481
10544
|
this.__box.__updateHitCanvas();
|
|
10482
|
-
const
|
|
10545
|
+
const leafer = this.leafer || (this.parent && this.parent.leafer);
|
|
10546
|
+
if (!leafer)
|
|
10547
|
+
return;
|
|
10548
|
+
const data = this.__, { hitCanvasManager } = leafer;
|
|
10483
10549
|
const isHitPixelFill = (data.__isAlphaPixelFill || data.__isCanvas) && data.hitFill === 'pixel';
|
|
10484
10550
|
const isHitPixelStroke = data.__isAlphaPixelStroke && data.hitStroke === 'pixel';
|
|
10485
10551
|
const isHitPixel = isHitPixelFill || isHitPixelStroke;
|
|
@@ -10515,7 +10581,7 @@ ui$1.__hit = function (inner) {
|
|
|
10515
10581
|
const needHitFillPath = ((data.fill || data.__isCanvas) && (hitFill === 'path' || (hitFill === 'pixel' && !(data.__isAlphaPixelFill || data.__isCanvas)))) || hitFill === 'all';
|
|
10516
10582
|
if (needHitFillPath && this.__hitFill(inner))
|
|
10517
10583
|
return true;
|
|
10518
|
-
const { hitStroke,
|
|
10584
|
+
const { hitStroke, __maxStrokeWidth: strokeWidth } = data;
|
|
10519
10585
|
const needHitStrokePath = (data.stroke && (hitStroke === 'path' || (hitStroke === 'pixel' && !data.__isAlphaPixelStroke))) || hitStroke === 'all';
|
|
10520
10586
|
if (!needHitFillPath && !needHitStrokePath)
|
|
10521
10587
|
return false;
|
|
@@ -10524,16 +10590,16 @@ ui$1.__hit = function (inner) {
|
|
|
10524
10590
|
if (needHitStrokePath) {
|
|
10525
10591
|
switch (data.strokeAlign) {
|
|
10526
10592
|
case 'inside':
|
|
10527
|
-
hitWidth +=
|
|
10593
|
+
hitWidth += strokeWidth * 2;
|
|
10528
10594
|
if (!needHitFillPath && this.__hitFill(inner) && this.__hitStroke(inner, hitWidth))
|
|
10529
10595
|
return true;
|
|
10530
10596
|
hitWidth = radiusWidth;
|
|
10531
10597
|
break;
|
|
10532
10598
|
case 'center':
|
|
10533
|
-
hitWidth +=
|
|
10599
|
+
hitWidth += strokeWidth;
|
|
10534
10600
|
break;
|
|
10535
10601
|
case 'outside':
|
|
10536
|
-
hitWidth +=
|
|
10602
|
+
hitWidth += strokeWidth * 2;
|
|
10537
10603
|
if (!needHitFillPath) {
|
|
10538
10604
|
if (!this.__hitFill(inner) && this.__hitStroke(inner, hitWidth))
|
|
10539
10605
|
return true;
|
|
@@ -10945,9 +11011,14 @@ function fills(fills, ui, canvas) {
|
|
|
10945
11011
|
}
|
|
10946
11012
|
}
|
|
10947
11013
|
canvas.fillStyle = item.style;
|
|
10948
|
-
if (item.transform) {
|
|
11014
|
+
if (item.transform || item.scaleFixed) {
|
|
10949
11015
|
canvas.save();
|
|
10950
|
-
|
|
11016
|
+
if (item.transform)
|
|
11017
|
+
canvas.transform(item.transform);
|
|
11018
|
+
if (item.scaleFixed) {
|
|
11019
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true);
|
|
11020
|
+
canvas.scale(1 / scaleX, 1 / scaleY);
|
|
11021
|
+
}
|
|
10951
11022
|
if (item.blendMode)
|
|
10952
11023
|
canvas.blendMode = item.blendMode;
|
|
10953
11024
|
fillPathOrText(ui, canvas);
|
|
@@ -10983,8 +11054,13 @@ function strokeText(stroke, ui, canvas) {
|
|
|
10983
11054
|
}
|
|
10984
11055
|
function drawCenter$1(stroke, strokeWidthScale, ui, canvas) {
|
|
10985
11056
|
const data = ui.__;
|
|
10986
|
-
|
|
10987
|
-
|
|
11057
|
+
if (typeof stroke === 'object') {
|
|
11058
|
+
drawStrokesStyle(stroke, strokeWidthScale, true, ui, canvas);
|
|
11059
|
+
}
|
|
11060
|
+
else {
|
|
11061
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
11062
|
+
drawTextStroke(ui, canvas);
|
|
11063
|
+
}
|
|
10988
11064
|
}
|
|
10989
11065
|
function drawAlign(stroke, align, ui, canvas) {
|
|
10990
11066
|
const out = canvas.getSameCanvas(true, true);
|
|
@@ -10993,15 +11069,9 @@ function drawAlign(stroke, align, ui, canvas) {
|
|
|
10993
11069
|
out.blendMode = align === 'outside' ? 'destination-out' : 'destination-in';
|
|
10994
11070
|
fillText(ui, out);
|
|
10995
11071
|
out.blendMode = 'normal';
|
|
10996
|
-
|
|
11072
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
10997
11073
|
out.recycle(ui.__nowWorld);
|
|
10998
11074
|
}
|
|
10999
|
-
function copyWorld(canvas, out, ui) {
|
|
11000
|
-
if (ui.__worldFlipped || Platform.fullImageShadow)
|
|
11001
|
-
canvas.copyWorldByReset(out, ui.__nowWorld);
|
|
11002
|
-
else
|
|
11003
|
-
canvas.copyWorldToInner(out, ui.__nowWorld, ui.__layout.renderBounds);
|
|
11004
|
-
}
|
|
11005
11075
|
function drawTextStroke(ui, canvas) {
|
|
11006
11076
|
let row, data = ui.__.__textDrawData;
|
|
11007
11077
|
const { rows, decorationY } = data;
|
|
@@ -11017,14 +11087,21 @@ function drawTextStroke(ui, canvas) {
|
|
|
11017
11087
|
rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
|
|
11018
11088
|
}
|
|
11019
11089
|
}
|
|
11020
|
-
function drawStrokesStyle(strokes, isText, ui, canvas) {
|
|
11090
|
+
function drawStrokesStyle(strokes, strokeWidthScale, isText, ui, canvas) {
|
|
11021
11091
|
let item;
|
|
11092
|
+
const data = ui.__, { __hasMultiStrokeStyle } = data;
|
|
11093
|
+
__hasMultiStrokeStyle || canvas.setStroke(undefined, data.__strokeWidth * strokeWidthScale, data);
|
|
11022
11094
|
for (let i = 0, len = strokes.length; i < len; i++) {
|
|
11023
11095
|
item = strokes[i];
|
|
11024
11096
|
if (item.image && PaintImage.checkImage(ui, canvas, item, false))
|
|
11025
11097
|
continue;
|
|
11026
11098
|
if (item.style) {
|
|
11027
|
-
|
|
11099
|
+
if (__hasMultiStrokeStyle) {
|
|
11100
|
+
const { strokeStyle } = item;
|
|
11101
|
+
strokeStyle ? canvas.setStroke(item.style, data.__getRealStrokeWidth(strokeStyle) * strokeWidthScale, data, strokeStyle) : canvas.setStroke(item.style, data.__strokeWidth * strokeWidthScale, data);
|
|
11102
|
+
}
|
|
11103
|
+
else
|
|
11104
|
+
canvas.strokeStyle = item.style;
|
|
11028
11105
|
if (item.blendMode) {
|
|
11029
11106
|
canvas.saveBlendMode(item.blendMode);
|
|
11030
11107
|
isText ? drawTextStroke(ui, canvas) : canvas.stroke();
|
|
@@ -11063,8 +11140,13 @@ function strokes(strokes, ui, canvas) {
|
|
|
11063
11140
|
}
|
|
11064
11141
|
function drawCenter(stroke, strokeWidthScale, ui, canvas) {
|
|
11065
11142
|
const data = ui.__;
|
|
11066
|
-
|
|
11067
|
-
|
|
11143
|
+
if (typeof stroke === 'object') {
|
|
11144
|
+
drawStrokesStyle(stroke, strokeWidthScale, false, ui, canvas);
|
|
11145
|
+
}
|
|
11146
|
+
else {
|
|
11147
|
+
canvas.setStroke(stroke, data.__strokeWidth * strokeWidthScale, data);
|
|
11148
|
+
canvas.stroke();
|
|
11149
|
+
}
|
|
11068
11150
|
if (data.__useArrow)
|
|
11069
11151
|
Paint.strokeArrow(stroke, ui, canvas);
|
|
11070
11152
|
}
|
|
@@ -11086,7 +11168,7 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
11086
11168
|
drawCenter(stroke, 2, ui, out);
|
|
11087
11169
|
out.clipUI(data);
|
|
11088
11170
|
out.clearWorld(renderBounds);
|
|
11089
|
-
|
|
11171
|
+
LeafHelper.copyCanvasByWorld(ui, canvas, out);
|
|
11090
11172
|
out.recycle(ui.__nowWorld);
|
|
11091
11173
|
}
|
|
11092
11174
|
}
|
|
@@ -11141,8 +11223,16 @@ function compute(attrName, ui) {
|
|
|
11141
11223
|
if (!(paints instanceof Array))
|
|
11142
11224
|
paints = [paints];
|
|
11143
11225
|
recycleMap = PaintImage.recycleImage(attrName, data);
|
|
11226
|
+
let maxChildStrokeWidth;
|
|
11144
11227
|
for (let i = 0, len = paints.length, item; i < len; i++) {
|
|
11145
|
-
(item = getLeafPaint(attrName, paints[i], ui))
|
|
11228
|
+
if (item = getLeafPaint(attrName, paints[i], ui)) {
|
|
11229
|
+
leafPaints.push(item);
|
|
11230
|
+
if (item.strokeStyle) {
|
|
11231
|
+
maxChildStrokeWidth || (maxChildStrokeWidth = 1);
|
|
11232
|
+
if (item.strokeStyle.strokeWidth)
|
|
11233
|
+
maxChildStrokeWidth = Math.max(maxChildStrokeWidth, item.strokeStyle.strokeWidth);
|
|
11234
|
+
}
|
|
11235
|
+
}
|
|
11146
11236
|
}
|
|
11147
11237
|
data['_' + attrName] = leafPaints.length ? leafPaints : undefined;
|
|
11148
11238
|
if (leafPaints.length) {
|
|
@@ -11159,6 +11249,7 @@ function compute(attrName, ui) {
|
|
|
11159
11249
|
else {
|
|
11160
11250
|
stintSet(data, '__isAlphaPixelStroke', isAlphaPixel);
|
|
11161
11251
|
stintSet(data, '__isTransparentStroke', isTransparent);
|
|
11252
|
+
stintSet(data, '__hasMultiStrokeStyle', maxChildStrokeWidth);
|
|
11162
11253
|
}
|
|
11163
11254
|
}
|
|
11164
11255
|
function getLeafPaint(attrName, paint, ui) {
|
|
@@ -11190,6 +11281,11 @@ function getLeafPaint(attrName, paint, ui) {
|
|
|
11190
11281
|
if (data) {
|
|
11191
11282
|
if (typeof data.style === 'string' && hasTransparent$1(data.style))
|
|
11192
11283
|
data.isTransparent = true;
|
|
11284
|
+
if (paint.style) {
|
|
11285
|
+
if (paint.style.strokeWidth === 0)
|
|
11286
|
+
return undefined;
|
|
11287
|
+
data.strokeStyle = paint.style;
|
|
11288
|
+
}
|
|
11193
11289
|
if (paint.blendMode)
|
|
11194
11290
|
data.blendMode = paint.blendMode;
|
|
11195
11291
|
}
|
|
@@ -11209,8 +11305,8 @@ const PaintModule = {
|
|
|
11209
11305
|
shape
|
|
11210
11306
|
};
|
|
11211
11307
|
|
|
11212
|
-
let origin = {};
|
|
11213
|
-
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
|
|
11308
|
+
let origin = {}, tempMatrix = getMatrixData();
|
|
11309
|
+
const { get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent, scale: scaleHelper, rotate, skew: skewHelper } = MatrixHelper;
|
|
11214
11310
|
function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
11215
11311
|
const transform = get$3();
|
|
11216
11312
|
translate$1(transform, box.x + x, box.y + y);
|
|
@@ -11219,7 +11315,7 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
11219
11315
|
rotateOfOuter$1(transform, { x: box.x + box.width / 2, y: box.y + box.height / 2 }, rotation);
|
|
11220
11316
|
data.transform = transform;
|
|
11221
11317
|
}
|
|
11222
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew) {
|
|
11318
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipSize) {
|
|
11223
11319
|
const transform = get$3();
|
|
11224
11320
|
if (rotation)
|
|
11225
11321
|
rotate(transform, rotation);
|
|
@@ -11228,6 +11324,10 @@ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew) {
|
|
|
11228
11324
|
if (scaleX)
|
|
11229
11325
|
scaleHelper(transform, scaleX, scaleY);
|
|
11230
11326
|
translate$1(transform, box.x + x, box.y + y);
|
|
11327
|
+
if (clipSize) {
|
|
11328
|
+
tempMatrix.a = box.width / clipSize.width, tempMatrix.d = box.height / clipSize.height;
|
|
11329
|
+
multiplyParent(transform, tempMatrix);
|
|
11330
|
+
}
|
|
11231
11331
|
data.transform = transform;
|
|
11232
11332
|
}
|
|
11233
11333
|
function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, align) {
|
|
@@ -11264,13 +11364,15 @@ const tempBox = new Bounds();
|
|
|
11264
11364
|
const tempScaleData = {};
|
|
11265
11365
|
const tempImage = {};
|
|
11266
11366
|
function createData(leafPaint, image, paint, box) {
|
|
11267
|
-
const { changeful, sync, editing } = paint;
|
|
11367
|
+
const { changeful, sync, editing, scaleFixed } = paint;
|
|
11268
11368
|
if (changeful)
|
|
11269
11369
|
leafPaint.changeful = changeful;
|
|
11270
11370
|
if (sync)
|
|
11271
11371
|
leafPaint.sync = sync;
|
|
11272
11372
|
if (editing)
|
|
11273
11373
|
leafPaint.editing = editing;
|
|
11374
|
+
if (scaleFixed)
|
|
11375
|
+
leafPaint.scaleFixed = scaleFixed;
|
|
11274
11376
|
leafPaint.data = getPatternData(paint, box, image);
|
|
11275
11377
|
}
|
|
11276
11378
|
function getPatternData(paint, box, image) {
|
|
@@ -11279,7 +11381,7 @@ function getPatternData(paint, box, image) {
|
|
|
11279
11381
|
if (paint.mode === 'strench')
|
|
11280
11382
|
paint.mode = 'stretch';
|
|
11281
11383
|
let { width, height } = image;
|
|
11282
|
-
const { opacity, mode, align, offset, scale, size, rotation, skew, repeat, filters } = paint;
|
|
11384
|
+
const { opacity, mode, align, offset, scale, size, rotation, skew, clipSize, repeat, filters } = paint;
|
|
11283
11385
|
const sameBox = box.width === width && box.height === height;
|
|
11284
11386
|
const data = { mode };
|
|
11285
11387
|
const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
|
|
@@ -11313,8 +11415,8 @@ function getPatternData(paint, box, image) {
|
|
|
11313
11415
|
break;
|
|
11314
11416
|
case 'normal':
|
|
11315
11417
|
case 'clip':
|
|
11316
|
-
if (tempImage.x || tempImage.y || scaleX || rotation || skew)
|
|
11317
|
-
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew);
|
|
11418
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
11419
|
+
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, paint.clipSize);
|
|
11318
11420
|
break;
|
|
11319
11421
|
case 'repeat':
|
|
11320
11422
|
if (!sameBox || scaleX || rotation)
|
|
@@ -11451,18 +11553,16 @@ function ignoreRender(ui, value) {
|
|
|
11451
11553
|
}
|
|
11452
11554
|
|
|
11453
11555
|
const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
|
|
11454
|
-
const { ceil, abs
|
|
11556
|
+
const { ceil, abs } = Math;
|
|
11455
11557
|
function createPattern(ui, paint, pixelRatio) {
|
|
11456
|
-
let { scaleX, scaleY } =
|
|
11558
|
+
let { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
11457
11559
|
const id = scaleX + '-' + scaleY + '-' + pixelRatio;
|
|
11458
11560
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
11459
|
-
scaleX = abs$1(scaleX);
|
|
11460
|
-
scaleY = abs$1(scaleY);
|
|
11461
11561
|
const { image, data } = paint;
|
|
11462
11562
|
let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
|
|
11463
11563
|
if (sx) {
|
|
11464
|
-
sx = abs
|
|
11465
|
-
sy = abs
|
|
11564
|
+
sx = abs(sx);
|
|
11565
|
+
sy = abs(sy);
|
|
11466
11566
|
imageMatrix = get$1();
|
|
11467
11567
|
copy$1(imageMatrix, transform);
|
|
11468
11568
|
scale(imageMatrix, 1 / sx, 1 / sy);
|
|
@@ -11515,9 +11615,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11515
11615
|
}
|
|
11516
11616
|
}
|
|
11517
11617
|
|
|
11518
|
-
const { abs } = Math;
|
|
11519
11618
|
function checkImage(ui, canvas, paint, allowDraw) {
|
|
11520
|
-
const { scaleX, scaleY } =
|
|
11619
|
+
const { scaleX, scaleY } = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
11521
11620
|
const { pixelRatio } = canvas, { data } = paint;
|
|
11522
11621
|
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
11523
11622
|
return false;
|
|
@@ -11530,8 +11629,8 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
11530
11629
|
else {
|
|
11531
11630
|
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
11532
11631
|
let { width, height } = data;
|
|
11533
|
-
width *=
|
|
11534
|
-
height *=
|
|
11632
|
+
width *= scaleX * pixelRatio;
|
|
11633
|
+
height *= scaleY * pixelRatio;
|
|
11535
11634
|
if (data.scaleX) {
|
|
11536
11635
|
width *= data.scaleX;
|
|
11537
11636
|
height *= data.scaleY;
|
|
@@ -11541,6 +11640,10 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
11541
11640
|
}
|
|
11542
11641
|
}
|
|
11543
11642
|
if (allowDraw) {
|
|
11643
|
+
if (ui.__.__isFastShadow) {
|
|
11644
|
+
canvas.fillStyle = paint.style || '#000';
|
|
11645
|
+
canvas.fill();
|
|
11646
|
+
}
|
|
11544
11647
|
drawImage(ui, canvas, paint, data);
|
|
11545
11648
|
return true;
|
|
11546
11649
|
}
|
|
@@ -11729,10 +11832,7 @@ function shadow(ui, current, shape) {
|
|
|
11729
11832
|
}
|
|
11730
11833
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, 'destination-out') : other.copyWorld(shape.canvas, shapeBounds, bounds, 'destination-out');
|
|
11731
11834
|
}
|
|
11732
|
-
|
|
11733
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
11734
|
-
else
|
|
11735
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
11835
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
11736
11836
|
if (end && index < end)
|
|
11737
11837
|
other.clearWorld(copyBounds, true);
|
|
11738
11838
|
});
|
|
@@ -11791,10 +11891,7 @@ function innerShadow(ui, current, shape) {
|
|
|
11791
11891
|
copyBounds = bounds;
|
|
11792
11892
|
}
|
|
11793
11893
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), 'source-in');
|
|
11794
|
-
|
|
11795
|
-
current.copyWorldByReset(other, copyBounds, nowWorld, item.blendMode);
|
|
11796
|
-
else
|
|
11797
|
-
current.copyWorldToInner(other, copyBounds, __layout.renderBounds, item.blendMode);
|
|
11894
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
11798
11895
|
if (end && index < end)
|
|
11799
11896
|
other.clearWorld(copyBounds, true);
|
|
11800
11897
|
});
|
|
@@ -11850,12 +11947,11 @@ Group.prototype.__renderMask = function (canvas, options) {
|
|
|
11850
11947
|
contentCanvas = getCanvas(canvas);
|
|
11851
11948
|
child.__render(maskCanvas, options);
|
|
11852
11949
|
}
|
|
11853
|
-
if (
|
|
11854
|
-
|
|
11855
|
-
}
|
|
11856
|
-
if (excludeRenderBounds(child, options))
|
|
11950
|
+
if (mask === 'clipping' || mask === 'clipping-path')
|
|
11951
|
+
excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
11857
11952
|
continue;
|
|
11858
|
-
|
|
11953
|
+
}
|
|
11954
|
+
excludeRenderBounds(child, options) || child.__render(contentCanvas || canvas, options);
|
|
11859
11955
|
}
|
|
11860
11956
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity);
|
|
11861
11957
|
};
|
|
@@ -12442,4 +12538,4 @@ Object.assign(Creator, {
|
|
|
12442
12538
|
});
|
|
12443
12539
|
useCanvas();
|
|
12444
12540
|
|
|
12445
|
-
export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, 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, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, 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 };
|
|
12541
|
+
export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, 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, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, 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 };
|