@leafer-draw/worker 1.5.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/worker.cjs +68 -71
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.esm.js +68 -71
- package/dist/worker.esm.js.map +1 -1
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.esm.min.js.map +1 -1
- package/dist/worker.js +260 -165
- package/dist/worker.js.map +1 -1
- package/dist/worker.min.cjs +1 -1
- package/dist/worker.min.cjs.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +260 -165
- package/dist/worker.module.js.map +1 -1
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +9 -7
- package/src/core.ts +86 -0
- package/src/index.ts +2 -2
- package/types/index.d.ts +8 -1
package/dist/worker.module.js
CHANGED
|
@@ -45,7 +45,7 @@ const IncrementId = {
|
|
|
45
45
|
};
|
|
46
46
|
const I$1 = IncrementId;
|
|
47
47
|
|
|
48
|
-
const { round, pow: pow$1, PI: PI$4 } = Math;
|
|
48
|
+
const { round: round$3, pow: pow$1, PI: PI$4 } = Math;
|
|
49
49
|
const MathHelper = {
|
|
50
50
|
within(value, min, max) {
|
|
51
51
|
if (typeof min === 'object')
|
|
@@ -109,7 +109,7 @@ const MathHelper = {
|
|
|
109
109
|
},
|
|
110
110
|
float(num, maxLength) {
|
|
111
111
|
const a = maxLength !== undefined ? pow$1(10, maxLength) : 1000000000000;
|
|
112
|
-
num = round(num * a) / a;
|
|
112
|
+
num = round$3(num * a) / a;
|
|
113
113
|
return num === -0 ? 0 : num;
|
|
114
114
|
},
|
|
115
115
|
getScaleData(scale, size, originSize, scaleData) {
|
|
@@ -132,8 +132,15 @@ const MathHelper = {
|
|
|
132
132
|
scaleData.scaleX = scale.x;
|
|
133
133
|
scaleData.scaleY = scale.y;
|
|
134
134
|
}
|
|
135
|
+
},
|
|
136
|
+
randInt,
|
|
137
|
+
randColor(opacity) {
|
|
138
|
+
return `rgba(${randInt(255)},${randInt(255)},${randInt(255)},${opacity || 1})`;
|
|
135
139
|
}
|
|
136
140
|
};
|
|
141
|
+
function randInt(num) {
|
|
142
|
+
return Math.round(Math.random() * num);
|
|
143
|
+
}
|
|
137
144
|
const OneRadian = PI$4 / 180;
|
|
138
145
|
const PI2 = PI$4 * 2;
|
|
139
146
|
const PI_2 = PI$4 / 2;
|
|
@@ -431,7 +438,7 @@ const MatrixHelper = {
|
|
|
431
438
|
const M$6 = MatrixHelper;
|
|
432
439
|
|
|
433
440
|
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
434
|
-
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, PI: PI$3 } = Math;
|
|
441
|
+
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2, PI: PI$3 } = Math;
|
|
435
442
|
const PointHelper = {
|
|
436
443
|
defaultPoint: getPointData(),
|
|
437
444
|
tempPoint: {},
|
|
@@ -452,6 +459,10 @@ const PointHelper = {
|
|
|
452
459
|
t.x = x;
|
|
453
460
|
t.y = y;
|
|
454
461
|
},
|
|
462
|
+
round(t, halfPixel) {
|
|
463
|
+
t.x = halfPixel ? round$2(t.x - 0.5) + 0.5 : round$2(t.x);
|
|
464
|
+
t.y = halfPixel ? round$2(t.y - 0.5) + 0.5 : round$2(t.y);
|
|
465
|
+
},
|
|
455
466
|
move(t, x, y) {
|
|
456
467
|
t.x += x;
|
|
457
468
|
t.y += y;
|
|
@@ -1317,6 +1328,7 @@ const StringNumberMap = {
|
|
|
1317
1328
|
'E': 1
|
|
1318
1329
|
};
|
|
1319
1330
|
|
|
1331
|
+
const { randColor } = MathHelper;
|
|
1320
1332
|
class Debug {
|
|
1321
1333
|
constructor(name) {
|
|
1322
1334
|
this.repeatMap = {};
|
|
@@ -1331,6 +1343,19 @@ class Debug {
|
|
|
1331
1343
|
static set exclude(name) {
|
|
1332
1344
|
this.excludeList = getNameList(name);
|
|
1333
1345
|
}
|
|
1346
|
+
static drawRepaint(canvas, bounds) {
|
|
1347
|
+
const color = randColor();
|
|
1348
|
+
canvas.fillWorld(bounds, color.replace('1)', '.1)'));
|
|
1349
|
+
canvas.strokeWorld(bounds, color);
|
|
1350
|
+
}
|
|
1351
|
+
static drawBounds(leaf, canvas, _options) {
|
|
1352
|
+
const showHit = Debug.showBounds === 'hit', w = leaf.__nowWorld, color = randColor();
|
|
1353
|
+
if (showHit)
|
|
1354
|
+
canvas.setWorld(w), leaf.__drawHitPath(canvas), canvas.fillStyle = color.replace('1)', '.2)'), canvas.fill();
|
|
1355
|
+
canvas.resetTransform();
|
|
1356
|
+
canvas.setStroke(color, 2);
|
|
1357
|
+
showHit ? canvas.stroke() : canvas.strokeWorld(w, color);
|
|
1358
|
+
}
|
|
1334
1359
|
log(...messages) {
|
|
1335
1360
|
if (D$4.enable) {
|
|
1336
1361
|
if (D$4.filterList.length && D$4.filterList.every(name => name !== this.name))
|
|
@@ -1417,7 +1442,7 @@ const Plugin = {
|
|
|
1417
1442
|
return rs;
|
|
1418
1443
|
},
|
|
1419
1444
|
need(name) {
|
|
1420
|
-
console.error('
|
|
1445
|
+
console.error('please install plugin: ' + (name.includes('-x') ? '' : '@leafer-in/') + name);
|
|
1421
1446
|
}
|
|
1422
1447
|
};
|
|
1423
1448
|
setTimeout(() => check.forEach(name => Plugin.has(name, true)));
|
|
@@ -2017,7 +2042,7 @@ __decorate([
|
|
|
2017
2042
|
contextMethod()
|
|
2018
2043
|
], Canvas$1.prototype, "strokeText", null);
|
|
2019
2044
|
|
|
2020
|
-
const { copy: copy$8 } = MatrixHelper;
|
|
2045
|
+
const { copy: copy$8, multiplyParent: multiplyParent$3 } = MatrixHelper, { round: round$1 } = Math;
|
|
2021
2046
|
const minSize = { width: 1, height: 1, pixelRatio: 1 };
|
|
2022
2047
|
const canvasSizeAttrs = ['width', 'height', 'pixelRatio'];
|
|
2023
2048
|
class LeaferCanvasBase extends Canvas$1 {
|
|
@@ -2026,6 +2051,8 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2026
2051
|
get pixelRatio() { return this.size.pixelRatio; }
|
|
2027
2052
|
get pixelWidth() { return this.width * this.pixelRatio; }
|
|
2028
2053
|
get pixelHeight() { return this.height * this.pixelRatio; }
|
|
2054
|
+
get pixelSnap() { return this.config.pixelSnap; }
|
|
2055
|
+
set pixelSnap(value) { this.config.pixelSnap = value; }
|
|
2029
2056
|
get allowBackgroundColor() { return this.view && this.parentView; }
|
|
2030
2057
|
constructor(config, manager) {
|
|
2031
2058
|
super();
|
|
@@ -2086,15 +2113,22 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2086
2113
|
stopAutoLayout() { }
|
|
2087
2114
|
setCursor(_cursor) { }
|
|
2088
2115
|
setWorld(matrix, parentMatrix) {
|
|
2089
|
-
const { pixelRatio } = this;
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2116
|
+
const { pixelRatio, pixelSnap } = this, w = this.worldTransform;
|
|
2117
|
+
if (parentMatrix)
|
|
2118
|
+
multiplyParent$3(matrix, parentMatrix, w);
|
|
2119
|
+
w.a = matrix.a * pixelRatio;
|
|
2120
|
+
w.b = matrix.b * pixelRatio;
|
|
2121
|
+
w.c = matrix.c * pixelRatio;
|
|
2122
|
+
w.d = matrix.d * pixelRatio;
|
|
2123
|
+
w.e = matrix.e * pixelRatio;
|
|
2124
|
+
w.f = matrix.f * pixelRatio;
|
|
2125
|
+
if (pixelSnap) {
|
|
2126
|
+
if (matrix.half && (matrix.half * pixelRatio) % 2)
|
|
2127
|
+
w.e = round$1(w.e - 0.5) + 0.5, w.f = round$1(w.f - 0.5) + 0.5;
|
|
2128
|
+
else
|
|
2129
|
+
w.e = round$1(w.e), w.f = round$1(w.f);
|
|
2097
2130
|
}
|
|
2131
|
+
this.setTransform(w.a, w.b, w.c, w.d, w.e, w.f);
|
|
2098
2132
|
}
|
|
2099
2133
|
useWorldTransform(worldTransform) {
|
|
2100
2134
|
if (worldTransform)
|
|
@@ -2237,12 +2271,13 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2237
2271
|
return this.width === size.width && this.height === size.height && (!size.pixelRatio || this.pixelRatio === size.pixelRatio);
|
|
2238
2272
|
}
|
|
2239
2273
|
getSameCanvas(useSameWorldTransform, useSameSmooth) {
|
|
2240
|
-
const canvas = this.manager ? this.manager.get(
|
|
2274
|
+
const { size, pixelSnap } = this, canvas = this.manager ? this.manager.get(size) : Creator.canvas(Object.assign({}, size));
|
|
2241
2275
|
canvas.save();
|
|
2242
2276
|
if (useSameWorldTransform)
|
|
2243
2277
|
copy$8(canvas.worldTransform, this.worldTransform), canvas.useWorldTransform();
|
|
2244
2278
|
if (useSameSmooth)
|
|
2245
2279
|
canvas.smooth = this.smooth;
|
|
2280
|
+
canvas.pixelSnap !== pixelSnap && (canvas.pixelSnap = pixelSnap);
|
|
2246
2281
|
return canvas;
|
|
2247
2282
|
}
|
|
2248
2283
|
recycle(clearBounds) {
|
|
@@ -3669,7 +3704,7 @@ const Resource = {
|
|
|
3669
3704
|
const R = Resource;
|
|
3670
3705
|
|
|
3671
3706
|
const ImageManager = {
|
|
3672
|
-
maxRecycled:
|
|
3707
|
+
maxRecycled: 10,
|
|
3673
3708
|
recycledList: [],
|
|
3674
3709
|
patternTasker: new TaskProcessor(),
|
|
3675
3710
|
get(config) {
|
|
@@ -4022,9 +4057,8 @@ function hitType(defaultValue) {
|
|
|
4022
4057
|
set(value) {
|
|
4023
4058
|
if (this.__setAttr(key, value)) {
|
|
4024
4059
|
this.__layout.hitCanvasChanged = true;
|
|
4025
|
-
if (Debug.
|
|
4060
|
+
if (Debug.showBounds === 'hit')
|
|
4026
4061
|
this.__layout.surfaceChanged || this.__layout.surfaceChange();
|
|
4027
|
-
}
|
|
4028
4062
|
if (this.leafer)
|
|
4029
4063
|
this.leafer.updateCursor();
|
|
4030
4064
|
}
|
|
@@ -4185,7 +4219,7 @@ function registerUIEvent() {
|
|
|
4185
4219
|
}
|
|
4186
4220
|
|
|
4187
4221
|
const { copy: copy$6, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
4188
|
-
const matrix = {};
|
|
4222
|
+
const matrix = {}, { round } = Math;
|
|
4189
4223
|
const LeafHelper = {
|
|
4190
4224
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
4191
4225
|
if (checkAutoLayout && leaf.__hasAutoLayout && leaf.__layout.matrixChanged)
|
|
@@ -4259,6 +4293,8 @@ const LeafHelper = {
|
|
|
4259
4293
|
y = x.y, x = x.x;
|
|
4260
4294
|
x += t.x;
|
|
4261
4295
|
y += t.y;
|
|
4296
|
+
if (t.leafer && t.leafer.config.pointSnap)
|
|
4297
|
+
x = round(x), y = round(y);
|
|
4262
4298
|
transition ? t.animate({ x, y }, transition) : (t.x = x, t.y = y);
|
|
4263
4299
|
},
|
|
4264
4300
|
zoomOfWorld(t, origin, scaleX, scaleY, resize, transition) {
|
|
@@ -4497,6 +4533,7 @@ class LeafLayout {
|
|
|
4497
4533
|
set contentBounds(bounds) { this._contentBounds = bounds; }
|
|
4498
4534
|
get strokeBounds() { return this._strokeBounds || this.boxBounds; }
|
|
4499
4535
|
get renderBounds() { return this._renderBounds || this.boxBounds; }
|
|
4536
|
+
set renderBounds(bounds) { this._renderBounds = bounds; }
|
|
4500
4537
|
get localContentBounds() { toOuterOf$2(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {})); return this[localContent]; }
|
|
4501
4538
|
get localStrokeBounds() { return this._localStrokeBounds || this; }
|
|
4502
4539
|
get localRenderBounds() { return this._localRenderBounds || this; }
|
|
@@ -4515,11 +4552,13 @@ class LeafLayout {
|
|
|
4515
4552
|
get height() { return this.boxBounds.height; }
|
|
4516
4553
|
constructor(leaf) {
|
|
4517
4554
|
this.leaf = leaf;
|
|
4518
|
-
this.boxBounds = { x: 0, y: 0, width: 0, height: 0 };
|
|
4519
4555
|
if (this.leaf.__local)
|
|
4520
4556
|
this._localRenderBounds = this._localStrokeBounds = this.leaf.__local;
|
|
4521
|
-
|
|
4522
|
-
|
|
4557
|
+
if (leaf.__world) {
|
|
4558
|
+
this.boxBounds = { x: 0, y: 0, width: 0, height: 0 };
|
|
4559
|
+
this.boxChange();
|
|
4560
|
+
this.matrixChange();
|
|
4561
|
+
}
|
|
4523
4562
|
}
|
|
4524
4563
|
createLocal() {
|
|
4525
4564
|
const local = this.leaf.__local = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0 };
|
|
@@ -4851,6 +4890,9 @@ class ResizeEvent extends Event {
|
|
|
4851
4890
|
}
|
|
4852
4891
|
this.old = oldSize;
|
|
4853
4892
|
}
|
|
4893
|
+
static isResizing(leaf) {
|
|
4894
|
+
return this.resizingKeys && this.resizingKeys[leaf.innerId] !== undefined;
|
|
4895
|
+
}
|
|
4854
4896
|
}
|
|
4855
4897
|
ResizeEvent.RESIZE = 'resize';
|
|
4856
4898
|
|
|
@@ -4893,6 +4935,7 @@ class RenderEvent extends Event {
|
|
|
4893
4935
|
}
|
|
4894
4936
|
RenderEvent.REQUEST = 'render.request';
|
|
4895
4937
|
RenderEvent.CHILD_START = 'render.child_start';
|
|
4938
|
+
RenderEvent.CHILD_END = 'render.child_end';
|
|
4896
4939
|
RenderEvent.START = 'render.start';
|
|
4897
4940
|
RenderEvent.BEFORE = 'render.before';
|
|
4898
4941
|
RenderEvent.RENDER = 'render';
|
|
@@ -5272,24 +5315,27 @@ const LeafBounds = {
|
|
|
5272
5315
|
const LeafRender = {
|
|
5273
5316
|
__render(canvas, options) {
|
|
5274
5317
|
if (this.__worldOpacity) {
|
|
5318
|
+
const data = this.__;
|
|
5275
5319
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
5276
|
-
canvas.opacity =
|
|
5320
|
+
canvas.opacity = options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
5277
5321
|
if (this.__.__single) {
|
|
5278
|
-
if (
|
|
5322
|
+
if (data.eraser === 'path')
|
|
5279
5323
|
return this.__renderEraser(canvas, options);
|
|
5280
5324
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
5281
5325
|
this.__draw(tempCanvas, options, canvas);
|
|
5282
5326
|
if (this.__worldFlipped) {
|
|
5283
|
-
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null,
|
|
5327
|
+
canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, data.__blendMode, true);
|
|
5284
5328
|
}
|
|
5285
5329
|
else {
|
|
5286
|
-
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds,
|
|
5330
|
+
canvas.copyWorldToInner(tempCanvas, this.__nowWorld, this.__layout.renderBounds, data.__blendMode);
|
|
5287
5331
|
}
|
|
5288
5332
|
tempCanvas.recycle(this.__nowWorld);
|
|
5289
5333
|
}
|
|
5290
5334
|
else {
|
|
5291
5335
|
this.__draw(canvas, options);
|
|
5292
5336
|
}
|
|
5337
|
+
if (Debug.showBounds)
|
|
5338
|
+
Debug.drawBounds(this, canvas, options);
|
|
5293
5339
|
}
|
|
5294
5340
|
},
|
|
5295
5341
|
__clip(canvas, options) {
|
|
@@ -5319,14 +5365,19 @@ const BranchRender = {
|
|
|
5319
5365
|
__render(canvas, options) {
|
|
5320
5366
|
this.__nowWorld = this.__getNowWorld(options);
|
|
5321
5367
|
if (this.__worldOpacity) {
|
|
5322
|
-
|
|
5323
|
-
|
|
5368
|
+
const data = this.__;
|
|
5369
|
+
if (data.dim)
|
|
5370
|
+
options.dimOpacity = data.dim === true ? 0.2 : data.dim;
|
|
5371
|
+
else if (data.dimskip)
|
|
5372
|
+
options.dimOpacity && (options.dimOpacity = 0);
|
|
5373
|
+
if (data.__single) {
|
|
5374
|
+
if (data.eraser === 'path')
|
|
5324
5375
|
return this.__renderEraser(canvas, options);
|
|
5325
5376
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
5326
5377
|
this.__renderBranch(tempCanvas, options);
|
|
5327
5378
|
const nowWorld = this.__nowWorld;
|
|
5328
|
-
canvas.opacity =
|
|
5329
|
-
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld,
|
|
5379
|
+
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
5380
|
+
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
5330
5381
|
tempCanvas.recycle(nowWorld);
|
|
5331
5382
|
}
|
|
5332
5383
|
else {
|
|
@@ -5401,9 +5452,11 @@ let Leaf = class Leaf {
|
|
|
5401
5452
|
reset(data) {
|
|
5402
5453
|
if (this.leafer)
|
|
5403
5454
|
this.leafer.forceRender(this.__world);
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5455
|
+
if (data !== 0) {
|
|
5456
|
+
this.__world = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0, scaleX: 1, scaleY: 1 };
|
|
5457
|
+
if (data !== null)
|
|
5458
|
+
this.__local = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0 };
|
|
5459
|
+
}
|
|
5407
5460
|
this.__worldOpacity = 1;
|
|
5408
5461
|
this.__ = new this.__DataProcessor(this);
|
|
5409
5462
|
this.__layout = new this.__LayoutProcessor(this);
|
|
@@ -5539,9 +5592,10 @@ let Leaf = class Leaf {
|
|
|
5539
5592
|
if (options.matrix) {
|
|
5540
5593
|
if (!this.__cameraWorld)
|
|
5541
5594
|
this.__cameraWorld = {};
|
|
5542
|
-
const cameraWorld = this.__cameraWorld;
|
|
5543
|
-
multiplyParent(
|
|
5595
|
+
const cameraWorld = this.__cameraWorld, world = this.__world;
|
|
5596
|
+
multiplyParent(world, options.matrix, cameraWorld, undefined, world);
|
|
5544
5597
|
toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
|
|
5598
|
+
cameraWorld.half !== world.half && (cameraWorld.half = world.half);
|
|
5545
5599
|
return cameraWorld;
|
|
5546
5600
|
}
|
|
5547
5601
|
else {
|
|
@@ -5701,7 +5755,7 @@ let Leaf = class Leaf {
|
|
|
5701
5755
|
__updateHitCanvas() { }
|
|
5702
5756
|
__render(_canvas, _options) { }
|
|
5703
5757
|
__drawFast(_canvas, _options) { }
|
|
5704
|
-
__draw(_canvas, _options) { }
|
|
5758
|
+
__draw(_canvas, _options, _originCanvas) { }
|
|
5705
5759
|
__clip(_canvas, _options) { }
|
|
5706
5760
|
__renderShape(_canvas, _options, _ignoreFill, _ignoreStroke) { }
|
|
5707
5761
|
__updateWorldOpacity() { }
|
|
@@ -6071,7 +6125,7 @@ class LeafLevelList {
|
|
|
6071
6125
|
}
|
|
6072
6126
|
}
|
|
6073
6127
|
|
|
6074
|
-
const version = "1.
|
|
6128
|
+
const version = "1.6.0";
|
|
6075
6129
|
|
|
6076
6130
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6077
6131
|
get allowBackgroundColor() { return true; }
|
|
@@ -6311,7 +6365,6 @@ function updateChange(updateList) {
|
|
|
6311
6365
|
}
|
|
6312
6366
|
|
|
6313
6367
|
const { worldBounds } = LeafBoundsHelper;
|
|
6314
|
-
const bigBounds = { x: 0, y: 0, width: 100000, height: 100000 };
|
|
6315
6368
|
class LayoutBlockData {
|
|
6316
6369
|
constructor(list) {
|
|
6317
6370
|
this.updatedBounds = new Bounds();
|
|
@@ -6325,13 +6378,7 @@ class LayoutBlockData {
|
|
|
6325
6378
|
this.beforeBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6326
6379
|
}
|
|
6327
6380
|
setAfter() {
|
|
6328
|
-
|
|
6329
|
-
if (list.some(leaf => leaf.noBounds)) {
|
|
6330
|
-
this.afterBounds.set(bigBounds);
|
|
6331
|
-
}
|
|
6332
|
-
else {
|
|
6333
|
-
this.afterBounds.setListWithFn(list, worldBounds);
|
|
6334
|
-
}
|
|
6381
|
+
this.afterBounds.setListWithFn(this.updatedList.list, worldBounds);
|
|
6335
6382
|
this.updatedBounds.setList([this.beforeBounds, this.afterBounds]);
|
|
6336
6383
|
}
|
|
6337
6384
|
merge(data) {
|
|
@@ -6533,6 +6580,13 @@ class Renderer {
|
|
|
6533
6580
|
requestLayout() {
|
|
6534
6581
|
this.target.emit(LayoutEvent.REQUEST);
|
|
6535
6582
|
}
|
|
6583
|
+
checkRender() {
|
|
6584
|
+
if (this.running) {
|
|
6585
|
+
if (this.changed && this.canvas.view)
|
|
6586
|
+
this.render();
|
|
6587
|
+
this.target.emit(RenderEvent.NEXT);
|
|
6588
|
+
}
|
|
6589
|
+
}
|
|
6536
6590
|
render(callback) {
|
|
6537
6591
|
if (!(this.running && this.canvas.view))
|
|
6538
6592
|
return this.update();
|
|
@@ -6541,8 +6595,6 @@ class Renderer {
|
|
|
6541
6595
|
this.totalBounds = new Bounds();
|
|
6542
6596
|
debug$2.log(target.innerName, '--->');
|
|
6543
6597
|
try {
|
|
6544
|
-
if (!target.isApp)
|
|
6545
|
-
target.app.emit(RenderEvent.CHILD_START, target);
|
|
6546
6598
|
this.emitRender(RenderEvent.START);
|
|
6547
6599
|
this.renderOnce(callback);
|
|
6548
6600
|
this.emitRender(RenderEvent.END, this.totalBounds);
|
|
@@ -6610,20 +6662,12 @@ class Renderer {
|
|
|
6610
6662
|
}
|
|
6611
6663
|
clipRender(block) {
|
|
6612
6664
|
const t = Run.start('PartRender');
|
|
6613
|
-
const { canvas } = this;
|
|
6614
|
-
const bounds = block.getIntersect(canvas.bounds);
|
|
6615
|
-
const includes = block.includes(this.target.__world);
|
|
6616
|
-
const realBounds = new Bounds(bounds);
|
|
6665
|
+
const { canvas } = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
|
|
6617
6666
|
canvas.save();
|
|
6618
|
-
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
|
|
6622
|
-
bounds.spread(10 + 1 / this.canvas.pixelRatio).ceil();
|
|
6623
|
-
canvas.clearWorld(bounds, true);
|
|
6624
|
-
canvas.clipWorld(bounds, true);
|
|
6625
|
-
}
|
|
6626
|
-
this.__render(bounds, includes, realBounds);
|
|
6667
|
+
bounds.spread(Renderer.clipSpread).ceil();
|
|
6668
|
+
canvas.clearWorld(bounds, true);
|
|
6669
|
+
canvas.clipWorld(bounds, true);
|
|
6670
|
+
this.__render(bounds, block.includes(this.target.__world), realBounds);
|
|
6627
6671
|
canvas.restore();
|
|
6628
6672
|
Run.end(t);
|
|
6629
6673
|
}
|
|
@@ -6637,23 +6681,17 @@ class Renderer {
|
|
|
6637
6681
|
Run.end(t);
|
|
6638
6682
|
}
|
|
6639
6683
|
__render(bounds, includes, realBounds) {
|
|
6640
|
-
const options =
|
|
6684
|
+
const { canvas } = this, options = includes ? { includes } : { bounds, includes };
|
|
6641
6685
|
if (this.needFill)
|
|
6642
|
-
|
|
6686
|
+
canvas.fillWorld(bounds, this.config.fill);
|
|
6643
6687
|
if (Debug.showRepaint)
|
|
6644
|
-
|
|
6645
|
-
this.target.__render(
|
|
6688
|
+
Debug.drawRepaint(canvas, bounds);
|
|
6689
|
+
this.target.__render(canvas, options);
|
|
6646
6690
|
this.renderBounds = realBounds = realBounds || bounds;
|
|
6647
6691
|
this.renderOptions = options;
|
|
6648
6692
|
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
if (Debug.showBoundsView)
|
|
6652
|
-
this.renderBoundsView(options);
|
|
6653
|
-
this.canvas.updateRender(realBounds);
|
|
6654
|
-
}
|
|
6655
|
-
renderHitView(_options) { }
|
|
6656
|
-
renderBoundsView(_options) { }
|
|
6693
|
+
canvas.updateRender(realBounds);
|
|
6694
|
+
}
|
|
6657
6695
|
addBlock(block) {
|
|
6658
6696
|
if (!this.updateBlocks)
|
|
6659
6697
|
this.updateBlocks = [];
|
|
@@ -6669,17 +6707,24 @@ class Renderer {
|
|
|
6669
6707
|
}
|
|
6670
6708
|
}
|
|
6671
6709
|
__requestRender() {
|
|
6710
|
+
const target = this.target;
|
|
6711
|
+
if (target.parentApp)
|
|
6712
|
+
return target.parentApp.renderer.update(false);
|
|
6672
6713
|
if (this.requestTime)
|
|
6673
6714
|
return;
|
|
6674
6715
|
const requestTime = this.requestTime = Date.now();
|
|
6675
6716
|
Platform.requestRender(() => {
|
|
6676
6717
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - requestTime)));
|
|
6677
6718
|
this.requestTime = 0;
|
|
6678
|
-
if (
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6719
|
+
if (target.isApp) {
|
|
6720
|
+
target.emit(RenderEvent.CHILD_START, target);
|
|
6721
|
+
target.children.forEach(leafer => {
|
|
6722
|
+
leafer.renderer.FPS = this.FPS;
|
|
6723
|
+
leafer.renderer.checkRender();
|
|
6724
|
+
});
|
|
6725
|
+
target.emit(RenderEvent.CHILD_END, target);
|
|
6682
6726
|
}
|
|
6727
|
+
this.checkRender();
|
|
6683
6728
|
});
|
|
6684
6729
|
}
|
|
6685
6730
|
__onResize(e) {
|
|
@@ -6737,6 +6782,7 @@ class Renderer {
|
|
|
6737
6782
|
}
|
|
6738
6783
|
}
|
|
6739
6784
|
}
|
|
6785
|
+
Renderer.clipSpread = 10;
|
|
6740
6786
|
|
|
6741
6787
|
Object.assign(Creator, {
|
|
6742
6788
|
watcher: (target, options) => new Watcher(target, options),
|
|
@@ -6825,6 +6871,7 @@ class UIData extends LeafData {
|
|
|
6825
6871
|
return strokeWidth;
|
|
6826
6872
|
}
|
|
6827
6873
|
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
6874
|
+
get __hasHalf() { const t = this; return (t.stroke && t.strokeAlign === 'center' && t.strokeWidth % 2) || undefined; }
|
|
6828
6875
|
get __hasMultiPaint() {
|
|
6829
6876
|
const t = this;
|
|
6830
6877
|
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
@@ -6869,14 +6916,14 @@ class UIData extends LeafData {
|
|
|
6869
6916
|
this.__removeInput('fill');
|
|
6870
6917
|
PaintImage.recycleImage('fill', this);
|
|
6871
6918
|
this.__isFills = false;
|
|
6872
|
-
|
|
6873
|
-
this.__pixelFill = false;
|
|
6919
|
+
this.__pixelFill && (this.__pixelFill = false);
|
|
6874
6920
|
}
|
|
6875
6921
|
this._fill = value;
|
|
6876
6922
|
}
|
|
6877
6923
|
else if (typeof value === 'object') {
|
|
6878
6924
|
this.__setInput('fill', value);
|
|
6879
|
-
|
|
6925
|
+
const layout = this.__leaf.__layout;
|
|
6926
|
+
layout.boxChanged || layout.boxChange();
|
|
6880
6927
|
this.__isFills = true;
|
|
6881
6928
|
this._fill || (this._fill = emptyPaint);
|
|
6882
6929
|
}
|
|
@@ -6887,14 +6934,14 @@ class UIData extends LeafData {
|
|
|
6887
6934
|
this.__removeInput('stroke');
|
|
6888
6935
|
PaintImage.recycleImage('stroke', this);
|
|
6889
6936
|
this.__isStrokes = false;
|
|
6890
|
-
|
|
6891
|
-
this.__pixelStroke = false;
|
|
6937
|
+
this.__pixelStroke && (this.__pixelStroke = false);
|
|
6892
6938
|
}
|
|
6893
6939
|
this._stroke = value;
|
|
6894
6940
|
}
|
|
6895
6941
|
else if (typeof value === 'object') {
|
|
6896
6942
|
this.__setInput('stroke', value);
|
|
6897
|
-
|
|
6943
|
+
const layout = this.__leaf.__layout;
|
|
6944
|
+
layout.boxChanged || layout.boxChange();
|
|
6898
6945
|
this.__isStrokes = true;
|
|
6899
6946
|
this._stroke || (this._stroke = emptyPaint);
|
|
6900
6947
|
}
|
|
@@ -7009,6 +7056,31 @@ class TextData extends UIData {
|
|
|
7009
7056
|
this._fontWeight = value;
|
|
7010
7057
|
}
|
|
7011
7058
|
}
|
|
7059
|
+
setBoxStyle(value) {
|
|
7060
|
+
let t = this.__leaf, box = t.__box;
|
|
7061
|
+
if (value) {
|
|
7062
|
+
const { boxStyle } = this;
|
|
7063
|
+
if (box)
|
|
7064
|
+
for (let key in boxStyle)
|
|
7065
|
+
box[key] = undefined;
|
|
7066
|
+
else
|
|
7067
|
+
box = t.__box = UICreator.get('Rect', 0);
|
|
7068
|
+
const layout = t.__layout, boxLayout = box.__layout;
|
|
7069
|
+
if (!boxStyle)
|
|
7070
|
+
box.parent = t, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds;
|
|
7071
|
+
box.set(value);
|
|
7072
|
+
if (boxLayout.strokeChanged)
|
|
7073
|
+
layout.strokeChange();
|
|
7074
|
+
if (boxLayout.renderChanged)
|
|
7075
|
+
layout.renderChange();
|
|
7076
|
+
box.__updateChange();
|
|
7077
|
+
}
|
|
7078
|
+
else if (box) {
|
|
7079
|
+
t.__box = box.parent = null;
|
|
7080
|
+
box.destroy();
|
|
7081
|
+
}
|
|
7082
|
+
this._boxStyle = value;
|
|
7083
|
+
}
|
|
7012
7084
|
}
|
|
7013
7085
|
|
|
7014
7086
|
class ImageData extends RectData {
|
|
@@ -7046,7 +7118,7 @@ class CanvasData extends RectData {
|
|
|
7046
7118
|
const UIBounds = {
|
|
7047
7119
|
__updateStrokeSpread() {
|
|
7048
7120
|
let width = 0, boxWidth = 0;
|
|
7049
|
-
const data = this.__, { strokeAlign, strokeWidth } = data;
|
|
7121
|
+
const data = this.__, { strokeAlign, strokeWidth } = data, box = this.__box;
|
|
7050
7122
|
if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
|
|
7051
7123
|
boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
|
|
7052
7124
|
if (!data.__boxStroke) {
|
|
@@ -7057,6 +7129,10 @@ const UIBounds = {
|
|
|
7057
7129
|
}
|
|
7058
7130
|
if (data.__useArrow)
|
|
7059
7131
|
width += strokeWidth * 5;
|
|
7132
|
+
if (box) {
|
|
7133
|
+
width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width);
|
|
7134
|
+
boxWidth = box.__layout.strokeBoxSpread;
|
|
7135
|
+
}
|
|
7060
7136
|
this.__layout.strokeBoxSpread = boxWidth;
|
|
7061
7137
|
return width;
|
|
7062
7138
|
},
|
|
@@ -7075,25 +7151,26 @@ const UIBounds = {
|
|
|
7075
7151
|
if (backgroundBlur)
|
|
7076
7152
|
shapeWidth = Math.max(shapeWidth, backgroundBlur);
|
|
7077
7153
|
this.__layout.renderShapeSpread = shapeWidth;
|
|
7078
|
-
|
|
7154
|
+
width += this.__layout.strokeSpread || 0;
|
|
7155
|
+
return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width;
|
|
7079
7156
|
}
|
|
7080
7157
|
};
|
|
7081
7158
|
|
|
7082
7159
|
const UIRender = {
|
|
7083
7160
|
__updateChange() {
|
|
7084
|
-
const data = this.__;
|
|
7161
|
+
const data = this.__, w = this.__world;
|
|
7085
7162
|
if (data.__useEffect) {
|
|
7086
7163
|
const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
|
|
7087
7164
|
data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
|
|
7088
7165
|
}
|
|
7166
|
+
const half = data.__hasHalf;
|
|
7167
|
+
w.half !== half && (w.half = half);
|
|
7089
7168
|
data.__checkSingle();
|
|
7090
7169
|
const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
|
|
7091
|
-
if (complex)
|
|
7170
|
+
if (complex)
|
|
7092
7171
|
data.__complex = true;
|
|
7093
|
-
|
|
7094
|
-
else {
|
|
7172
|
+
else
|
|
7095
7173
|
data.__complex && (data.__complex = false);
|
|
7096
|
-
}
|
|
7097
7174
|
},
|
|
7098
7175
|
__drawFast(canvas, options) {
|
|
7099
7176
|
drawFast(this, canvas, options);
|
|
@@ -7180,10 +7257,11 @@ function drawFast(ui, canvas, options) {
|
|
|
7180
7257
|
|
|
7181
7258
|
const RectRender = {
|
|
7182
7259
|
__drawFast(canvas, options) {
|
|
7183
|
-
let {
|
|
7260
|
+
let { x, y, width, height } = this.__layout.boxBounds;
|
|
7261
|
+
const { fill, stroke, __drawAfterFill } = this.__;
|
|
7184
7262
|
if (fill) {
|
|
7185
7263
|
canvas.fillStyle = fill;
|
|
7186
|
-
canvas.fillRect(
|
|
7264
|
+
canvas.fillRect(x, y, width, height);
|
|
7187
7265
|
}
|
|
7188
7266
|
if (__drawAfterFill)
|
|
7189
7267
|
this.__drawAfterFill(canvas, options);
|
|
@@ -7202,14 +7280,14 @@ const RectRender = {
|
|
|
7202
7280
|
if (width < 0 || height < 0) {
|
|
7203
7281
|
canvas.save();
|
|
7204
7282
|
this.__clip(canvas, options);
|
|
7205
|
-
canvas.strokeRect(half, half, width, height);
|
|
7283
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7206
7284
|
canvas.restore();
|
|
7207
7285
|
}
|
|
7208
7286
|
else
|
|
7209
|
-
canvas.strokeRect(half, half, width, height);
|
|
7287
|
+
canvas.strokeRect(x + half, y + half, width, height);
|
|
7210
7288
|
break;
|
|
7211
7289
|
case 'outside':
|
|
7212
|
-
canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
|
|
7290
|
+
canvas.strokeRect(x - half, y - half, width + __strokeWidth, height + __strokeWidth);
|
|
7213
7291
|
break;
|
|
7214
7292
|
}
|
|
7215
7293
|
}
|
|
@@ -7365,6 +7443,12 @@ __decorate([
|
|
|
7365
7443
|
__decorate([
|
|
7366
7444
|
surfaceType(false)
|
|
7367
7445
|
], UI.prototype, "locked", void 0);
|
|
7446
|
+
__decorate([
|
|
7447
|
+
surfaceType(false)
|
|
7448
|
+
], UI.prototype, "dim", void 0);
|
|
7449
|
+
__decorate([
|
|
7450
|
+
surfaceType(false)
|
|
7451
|
+
], UI.prototype, "dimskip", void 0);
|
|
7368
7452
|
__decorate([
|
|
7369
7453
|
sortType(0)
|
|
7370
7454
|
], UI.prototype, "zIndex", void 0);
|
|
@@ -7626,7 +7710,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7626
7710
|
start: true,
|
|
7627
7711
|
hittable: true,
|
|
7628
7712
|
smooth: true,
|
|
7629
|
-
lazySpeard: 100
|
|
7713
|
+
lazySpeard: 100,
|
|
7630
7714
|
};
|
|
7631
7715
|
this.leafs = 0;
|
|
7632
7716
|
this.__eventIds = [];
|
|
@@ -8050,13 +8134,13 @@ let Box = class Box extends Group {
|
|
|
8050
8134
|
super.__updateRenderBounds();
|
|
8051
8135
|
copy$2(childrenRenderBounds, renderBounds);
|
|
8052
8136
|
this.__updateRectRenderBounds();
|
|
8053
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds);
|
|
8137
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
|
|
8054
8138
|
if (isOverflow && this.__.overflow !== 'hide')
|
|
8055
8139
|
add(renderBounds, childrenRenderBounds);
|
|
8056
8140
|
}
|
|
8057
8141
|
else
|
|
8058
8142
|
this.__updateRectRenderBounds();
|
|
8059
|
-
|
|
8143
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8060
8144
|
}
|
|
8061
8145
|
__updateRectRenderBounds() { }
|
|
8062
8146
|
__updateRectChange() { }
|
|
@@ -8464,33 +8548,13 @@ Canvas = __decorate([
|
|
|
8464
8548
|
registerUI()
|
|
8465
8549
|
], Canvas);
|
|
8466
8550
|
|
|
8467
|
-
const { copyAndSpread, includes,
|
|
8551
|
+
const { copyAndSpread, includes, spread, setList } = BoundsHelper;
|
|
8468
8552
|
let Text = class Text extends UI {
|
|
8469
8553
|
get __tag() { return 'Text'; }
|
|
8470
|
-
get textDrawData() {
|
|
8471
|
-
this.__layout.update();
|
|
8472
|
-
return this.__.__textDrawData;
|
|
8473
|
-
}
|
|
8554
|
+
get textDrawData() { this.updateLayout(); return this.__.__textDrawData; }
|
|
8474
8555
|
constructor(data) {
|
|
8475
8556
|
super(data);
|
|
8476
8557
|
}
|
|
8477
|
-
__drawHitPath(canvas) {
|
|
8478
|
-
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8479
|
-
canvas.beginPath();
|
|
8480
|
-
if (this.__.__letterSpacing < 0) {
|
|
8481
|
-
this.__drawPathByData(canvas);
|
|
8482
|
-
}
|
|
8483
|
-
else {
|
|
8484
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8485
|
-
}
|
|
8486
|
-
}
|
|
8487
|
-
__drawPathByData(drawer, _data) {
|
|
8488
|
-
const { x, y, width, height } = this.__layout.boxBounds;
|
|
8489
|
-
drawer.rect(x, y, width, height);
|
|
8490
|
-
}
|
|
8491
|
-
__drawRenderPath(canvas) {
|
|
8492
|
-
canvas.font = this.__.__font;
|
|
8493
|
-
}
|
|
8494
8558
|
__updateTextDrawData() {
|
|
8495
8559
|
const data = this.__;
|
|
8496
8560
|
const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data;
|
|
@@ -8507,15 +8571,16 @@ let Text = class Text extends UI {
|
|
|
8507
8571
|
const layout = this.__layout;
|
|
8508
8572
|
const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data;
|
|
8509
8573
|
this.__updateTextDrawData();
|
|
8510
|
-
const { bounds } = data.__textDrawData;
|
|
8574
|
+
const { bounds: contentBounds } = data.__textDrawData;
|
|
8511
8575
|
const b = layout.boxBounds;
|
|
8576
|
+
layout.contentBounds = contentBounds;
|
|
8512
8577
|
if (data.__lineHeight < fontSize)
|
|
8513
|
-
spread(
|
|
8578
|
+
spread(contentBounds, fontSize / 2);
|
|
8514
8579
|
if (autoWidth || autoHeight) {
|
|
8515
|
-
b.x = autoWidth ?
|
|
8516
|
-
b.y = autoHeight ?
|
|
8517
|
-
b.width = autoWidth ?
|
|
8518
|
-
b.height = autoHeight ?
|
|
8580
|
+
b.x = autoWidth ? contentBounds.x : 0;
|
|
8581
|
+
b.y = autoHeight ? contentBounds.y : 0;
|
|
8582
|
+
b.width = autoWidth ? contentBounds.width : data.width;
|
|
8583
|
+
b.height = autoHeight ? contentBounds.height : data.height;
|
|
8519
8584
|
if (padding) {
|
|
8520
8585
|
const [top, right, bottom, left] = data.__padding;
|
|
8521
8586
|
if (autoWidth)
|
|
@@ -8529,23 +8594,45 @@ let Text = class Text extends UI {
|
|
|
8529
8594
|
super.__updateBoxBounds();
|
|
8530
8595
|
if (italic)
|
|
8531
8596
|
b.width += fontSize * 0.16;
|
|
8532
|
-
const
|
|
8533
|
-
if (
|
|
8534
|
-
|
|
8535
|
-
layout.renderChanged = true;
|
|
8536
|
-
setList(data.__textBoxBounds = {}, [b, bounds]);
|
|
8537
|
-
}
|
|
8597
|
+
const isOverflow = !includes(b, contentBounds) || undefined;
|
|
8598
|
+
if (isOverflow)
|
|
8599
|
+
setList(data.__textBoxBounds = {}, [b, contentBounds]), layout.renderChanged = true;
|
|
8538
8600
|
else
|
|
8539
|
-
data.__textBoxBounds =
|
|
8601
|
+
data.__textBoxBounds = b;
|
|
8602
|
+
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8603
|
+
}
|
|
8604
|
+
__onUpdateSize() {
|
|
8605
|
+
if (this.__box)
|
|
8606
|
+
this.__box.__onUpdateSize();
|
|
8607
|
+
super.__onUpdateSize();
|
|
8540
8608
|
}
|
|
8541
8609
|
__updateRenderSpread() {
|
|
8542
8610
|
let width = super.__updateRenderSpread();
|
|
8543
8611
|
if (!width)
|
|
8544
|
-
width = this.
|
|
8612
|
+
width = this.isOverflow ? 1 : 0;
|
|
8545
8613
|
return width;
|
|
8546
8614
|
}
|
|
8547
8615
|
__updateRenderBounds() {
|
|
8548
|
-
|
|
8616
|
+
const { renderBounds, renderSpread } = this.__layout;
|
|
8617
|
+
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
8618
|
+
if (this.__box)
|
|
8619
|
+
this.__box.__layout.renderBounds = renderBounds;
|
|
8620
|
+
}
|
|
8621
|
+
__drawRenderPath(canvas) {
|
|
8622
|
+
canvas.font = this.__.__font;
|
|
8623
|
+
}
|
|
8624
|
+
__draw(canvas, options, originCanvas) {
|
|
8625
|
+
const box = this.__box;
|
|
8626
|
+
if (box)
|
|
8627
|
+
box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas);
|
|
8628
|
+
if (this.textEditing && !Export.running)
|
|
8629
|
+
return;
|
|
8630
|
+
super.__draw(canvas, options, originCanvas);
|
|
8631
|
+
}
|
|
8632
|
+
destroy() {
|
|
8633
|
+
if (this.boxStyle)
|
|
8634
|
+
this.boxStyle = null;
|
|
8635
|
+
super.destroy();
|
|
8549
8636
|
}
|
|
8550
8637
|
};
|
|
8551
8638
|
__decorate([
|
|
@@ -8557,6 +8644,9 @@ __decorate([
|
|
|
8557
8644
|
__decorate([
|
|
8558
8645
|
boundsType(0)
|
|
8559
8646
|
], Text.prototype, "height", void 0);
|
|
8647
|
+
__decorate([
|
|
8648
|
+
surfaceType()
|
|
8649
|
+
], Text.prototype, "boxStyle", void 0);
|
|
8560
8650
|
__decorate([
|
|
8561
8651
|
dataType(false)
|
|
8562
8652
|
], Text.prototype, "resizeFontSize", void 0);
|
|
@@ -9042,9 +9132,11 @@ const tempBox = new Bounds();
|
|
|
9042
9132
|
const tempPoint = {};
|
|
9043
9133
|
const tempScaleData = {};
|
|
9044
9134
|
function createData(leafPaint, image, paint, box) {
|
|
9045
|
-
const { blendMode, sync } = paint;
|
|
9135
|
+
const { blendMode, changeful, sync } = paint;
|
|
9046
9136
|
if (blendMode)
|
|
9047
9137
|
leafPaint.blendMode = blendMode;
|
|
9138
|
+
if (changeful)
|
|
9139
|
+
leafPaint.changeful = changeful;
|
|
9048
9140
|
if (sync)
|
|
9049
9141
|
leafPaint.sync = sync;
|
|
9050
9142
|
leafPaint.data = getPatternData(paint, box, image);
|
|
@@ -9277,40 +9369,32 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
9277
9369
|
}
|
|
9278
9370
|
|
|
9279
9371
|
const { abs } = Math;
|
|
9280
|
-
function checkImage(ui, canvas, paint,
|
|
9372
|
+
function checkImage(ui, canvas, paint, allowDraw) {
|
|
9281
9373
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
9282
|
-
const { pixelRatio } = canvas;
|
|
9283
|
-
if (!
|
|
9374
|
+
const { pixelRatio } = canvas, { data } = paint;
|
|
9375
|
+
if (!data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
9284
9376
|
return false;
|
|
9285
9377
|
}
|
|
9286
9378
|
else {
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
let { width, height } = data;
|
|
9291
|
-
width *= abs(scaleX) * pixelRatio;
|
|
9292
|
-
height *= abs(scaleY) * pixelRatio;
|
|
9293
|
-
if (data.scaleX) {
|
|
9294
|
-
width *= data.scaleX;
|
|
9295
|
-
height *= data.scaleY;
|
|
9296
|
-
}
|
|
9297
|
-
allowPaint = (width * height > Platform.image.maxCacheSize) || Export.running;
|
|
9379
|
+
if (allowDraw) {
|
|
9380
|
+
if (data.repeat) {
|
|
9381
|
+
allowDraw = false;
|
|
9298
9382
|
}
|
|
9299
9383
|
else {
|
|
9300
|
-
|
|
9384
|
+
if (!(paint.changeful || ResizeEvent.isResizing(ui) || Export.running)) {
|
|
9385
|
+
let { width, height } = data;
|
|
9386
|
+
width *= abs(scaleX) * pixelRatio;
|
|
9387
|
+
height *= abs(scaleY) * pixelRatio;
|
|
9388
|
+
if (data.scaleX) {
|
|
9389
|
+
width *= data.scaleX;
|
|
9390
|
+
height *= data.scaleY;
|
|
9391
|
+
}
|
|
9392
|
+
allowDraw = (width * height > Platform.image.maxCacheSize);
|
|
9393
|
+
}
|
|
9301
9394
|
}
|
|
9302
9395
|
}
|
|
9303
|
-
if (
|
|
9304
|
-
canvas
|
|
9305
|
-
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
9306
|
-
if (paint.blendMode)
|
|
9307
|
-
canvas.blendMode = paint.blendMode;
|
|
9308
|
-
if (data.opacity)
|
|
9309
|
-
canvas.opacity *= data.opacity;
|
|
9310
|
-
if (data.transform)
|
|
9311
|
-
canvas.transform(data.transform);
|
|
9312
|
-
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
9313
|
-
canvas.restore();
|
|
9396
|
+
if (allowDraw) {
|
|
9397
|
+
drawImage(ui, canvas, paint, data);
|
|
9314
9398
|
return true;
|
|
9315
9399
|
}
|
|
9316
9400
|
else {
|
|
@@ -9331,13 +9415,26 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
9331
9415
|
}
|
|
9332
9416
|
}
|
|
9333
9417
|
}
|
|
9418
|
+
function drawImage(ui, canvas, paint, data) {
|
|
9419
|
+
canvas.save();
|
|
9420
|
+
ui.windingRule ? canvas.clip(ui.windingRule) : canvas.clip();
|
|
9421
|
+
if (paint.blendMode)
|
|
9422
|
+
canvas.blendMode = paint.blendMode;
|
|
9423
|
+
if (data.opacity)
|
|
9424
|
+
canvas.opacity *= data.opacity;
|
|
9425
|
+
if (data.transform)
|
|
9426
|
+
canvas.transform(data.transform);
|
|
9427
|
+
canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
|
|
9428
|
+
canvas.restore();
|
|
9429
|
+
}
|
|
9334
9430
|
|
|
9335
9431
|
function recycleImage(attrName, data) {
|
|
9336
9432
|
const paints = data['_' + attrName];
|
|
9337
9433
|
if (paints instanceof Array) {
|
|
9338
|
-
let image, recycleMap, input, url;
|
|
9434
|
+
let paint, image, recycleMap, input, url;
|
|
9339
9435
|
for (let i = 0, len = paints.length; i < len; i++) {
|
|
9340
|
-
|
|
9436
|
+
paint = paints[i];
|
|
9437
|
+
image = paint.image;
|
|
9341
9438
|
url = image && image.url;
|
|
9342
9439
|
if (url) {
|
|
9343
9440
|
if (!recycleMap)
|
|
@@ -9352,8 +9449,6 @@ function recycleImage(attrName, data) {
|
|
|
9352
9449
|
}
|
|
9353
9450
|
image.unload(paints[i].loadId, !input.some((item) => item.url === url));
|
|
9354
9451
|
}
|
|
9355
|
-
else
|
|
9356
|
-
paints[i].style = null;
|
|
9357
9452
|
}
|
|
9358
9453
|
}
|
|
9359
9454
|
return recycleMap;
|
|
@@ -9532,7 +9627,7 @@ const { toOffsetOutBounds } = BoundsHelper;
|
|
|
9532
9627
|
const offsetOutBounds = {};
|
|
9533
9628
|
function innerShadow(ui, current, shape) {
|
|
9534
9629
|
let copyBounds, spreadScale;
|
|
9535
|
-
const { __nowWorld: nowWorld, __layout
|
|
9630
|
+
const { __nowWorld: nowWorld, __layout } = ui;
|
|
9536
9631
|
const { innerShadow } = ui.__;
|
|
9537
9632
|
const { worldCanvas, bounds, shapeBounds, scaleX, scaleY } = shape;
|
|
9538
9633
|
const other = current.getSameCanvas();
|