@leafer-draw/miniapp 2.0.1 → 2.0.3
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/miniapp.cjs +64 -34
- package/dist/miniapp.esm.js +52 -36
- package/dist/miniapp.esm.min.js +1 -1
- package/dist/miniapp.esm.min.js.map +1 -1
- package/dist/miniapp.min.cjs +1 -1
- package/dist/miniapp.min.cjs.map +1 -1
- package/dist/miniapp.module.js +203 -94
- package/dist/miniapp.module.min.js +1 -1
- package/dist/miniapp.module.min.js.map +1 -1
- package/package.json +7 -9
- package/src/index.ts +2 -2
- package/types/index.d.ts +1 -8
- package/src/core.ts +0 -143
package/dist/miniapp.module.js
CHANGED
|
@@ -213,6 +213,7 @@ class LeafData {
|
|
|
213
213
|
}
|
|
214
214
|
destroy() {
|
|
215
215
|
this.__input = this.__middle = null;
|
|
216
|
+
if (this.__complexData) this.__complexData.destroy();
|
|
216
217
|
}
|
|
217
218
|
}
|
|
218
219
|
|
|
@@ -311,6 +312,8 @@ const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumbe
|
|
|
311
312
|
|
|
312
313
|
const {round: round$3, pow: pow$1, max: max$3, floor: floor$2, PI: PI$3} = Math;
|
|
313
314
|
|
|
315
|
+
const tempScaleData$1 = {};
|
|
316
|
+
|
|
314
317
|
const MathHelper = {
|
|
315
318
|
within(value, min, max) {
|
|
316
319
|
if (isObject(min)) max = min.max, min = min.min;
|
|
@@ -354,6 +357,24 @@ const MathHelper = {
|
|
|
354
357
|
} else if (scale) MathHelper.assignScale(scaleData, scale);
|
|
355
358
|
return scaleData;
|
|
356
359
|
},
|
|
360
|
+
getScaleFixedData(worldScaleData, scaleFixed, unscale, abs, _localScaleData) {
|
|
361
|
+
let {scaleX: scaleX, scaleY: scaleY} = worldScaleData;
|
|
362
|
+
if (abs || scaleFixed) scaleX < 0 && (scaleX = -scaleX), scaleY < 0 && (scaleY = -scaleY);
|
|
363
|
+
if (scaleFixed) {
|
|
364
|
+
if (scaleFixed === true) {
|
|
365
|
+
scaleX = scaleY = unscale ? 1 : 1 / scaleX;
|
|
366
|
+
} else {
|
|
367
|
+
let minScale;
|
|
368
|
+
if (isNumber(scaleFixed)) minScale = scaleFixed; else if (scaleFixed === "zoom-in") minScale = 1;
|
|
369
|
+
if (minScale) {
|
|
370
|
+
if (scaleX > minScale || scaleY > minScale) scaleX = scaleY = unscale ? 1 : 1 / scaleX; else scaleX = scaleY = unscale ? 1 : 1 / minScale;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
tempScaleData$1.scaleX = scaleX;
|
|
375
|
+
tempScaleData$1.scaleY = scaleY;
|
|
376
|
+
return tempScaleData$1;
|
|
377
|
+
},
|
|
357
378
|
assignScale(scaleData, scale) {
|
|
358
379
|
if (isNumber(scale)) {
|
|
359
380
|
scaleData.scaleX = scaleData.scaleY = scale;
|
|
@@ -850,8 +871,8 @@ const PointHelper = {
|
|
|
850
871
|
if (isObject(originPoints[0])) points = [], originPoints.forEach(p => points.push(p.x, p.y));
|
|
851
872
|
return points;
|
|
852
873
|
},
|
|
853
|
-
isSame(t, point) {
|
|
854
|
-
return float$1(t.x) === float$1(point.x) && float$1(t.y) === float$1(point.y);
|
|
874
|
+
isSame(t, point, quick) {
|
|
875
|
+
return quick ? t.x === point.x && t.y === point.y : float$1(t.x) === float$1(point.x) && float$1(t.y) === float$1(point.y);
|
|
855
876
|
},
|
|
856
877
|
reset(t) {
|
|
857
878
|
P$5.reset(t);
|
|
@@ -926,8 +947,8 @@ class Point {
|
|
|
926
947
|
getAtan2(to) {
|
|
927
948
|
return PointHelper.getAtan2(this, to);
|
|
928
949
|
}
|
|
929
|
-
isSame(point) {
|
|
930
|
-
return PointHelper.isSame(this, point);
|
|
950
|
+
isSame(point, quick) {
|
|
951
|
+
return PointHelper.isSame(this, point, quick);
|
|
931
952
|
}
|
|
932
953
|
reset() {
|
|
933
954
|
PointHelper.reset(this);
|
|
@@ -1183,9 +1204,9 @@ const AroundHelper = {
|
|
|
1183
1204
|
}
|
|
1184
1205
|
if (!onlyBoxSize) to.x += box.x, to.y += box.y;
|
|
1185
1206
|
},
|
|
1186
|
-
getPoint(around, box, to) {
|
|
1207
|
+
getPoint(around, box, to, onlyBoxSize = true) {
|
|
1187
1208
|
if (!to) to = {};
|
|
1188
|
-
AroundHelper.toPoint(around, box, to,
|
|
1209
|
+
AroundHelper.toPoint(around, box, to, onlyBoxSize);
|
|
1189
1210
|
return to;
|
|
1190
1211
|
}
|
|
1191
1212
|
};
|
|
@@ -1452,6 +1473,9 @@ const BoundsHelper = {
|
|
|
1452
1473
|
y: y + height
|
|
1453
1474
|
} ];
|
|
1454
1475
|
},
|
|
1476
|
+
getPoint(t, around, onlyBoxSize = false, to) {
|
|
1477
|
+
return AroundHelper.getPoint(around, t, to, onlyBoxSize);
|
|
1478
|
+
},
|
|
1455
1479
|
hitRadiusPoint(t, point, pointMatrix) {
|
|
1456
1480
|
if (pointMatrix) point = PointHelper.tempToInnerRadiusPointOf(point, pointMatrix);
|
|
1457
1481
|
return point.x >= t.x - point.radiusX && point.x <= t.x + t.width + point.radiusX && (point.y >= t.y - point.radiusY && point.y <= t.y + t.height + point.radiusY);
|
|
@@ -1623,6 +1647,9 @@ class Bounds {
|
|
|
1623
1647
|
getPoints() {
|
|
1624
1648
|
return BoundsHelper.getPoints(this);
|
|
1625
1649
|
}
|
|
1650
|
+
getPoint(around, onlyBoxSize, to) {
|
|
1651
|
+
return BoundsHelper.getPoint(this, around, onlyBoxSize, to);
|
|
1652
|
+
}
|
|
1626
1653
|
hitPoint(point, pointMatrix) {
|
|
1627
1654
|
return BoundsHelper.hitPoint(this, point, pointMatrix);
|
|
1628
1655
|
}
|
|
@@ -1897,7 +1924,10 @@ const UICreator = {
|
|
|
1897
1924
|
list$1[tag] = UI;
|
|
1898
1925
|
},
|
|
1899
1926
|
get(tag, data, x, y, width, height) {
|
|
1900
|
-
if (!list$1[tag])
|
|
1927
|
+
if (!list$1[tag]) {
|
|
1928
|
+
debug$d.warn("not register " + tag);
|
|
1929
|
+
return undefined;
|
|
1930
|
+
}
|
|
1901
1931
|
const ui = new list$1[tag](data);
|
|
1902
1932
|
if (!isUndefined(x)) {
|
|
1903
1933
|
ui.x = x;
|
|
@@ -3754,10 +3784,10 @@ function canvasPatch(drawer) {
|
|
|
3754
3784
|
const FileHelper = {
|
|
3755
3785
|
alphaPixelTypes: [ "png", "webp", "svg" ],
|
|
3756
3786
|
upperCaseTypeMap: {},
|
|
3757
|
-
|
|
3758
|
-
if (!type || type.startsWith(
|
|
3787
|
+
mimeType(type, base = "image") {
|
|
3788
|
+
if (!type || type.startsWith(base)) return type;
|
|
3759
3789
|
if (type === "jpg") type = "jpeg";
|
|
3760
|
-
return "
|
|
3790
|
+
return base + "/" + type;
|
|
3761
3791
|
},
|
|
3762
3792
|
fileType(filename) {
|
|
3763
3793
|
const l = filename.split(".");
|
|
@@ -3790,6 +3820,8 @@ const FileHelper = {
|
|
|
3790
3820
|
|
|
3791
3821
|
const F = FileHelper;
|
|
3792
3822
|
|
|
3823
|
+
F.mineType = F.mimeType;
|
|
3824
|
+
|
|
3793
3825
|
F.alphaPixelTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
|
|
3794
3826
|
|
|
3795
3827
|
const debug$8 = Debug.get("TaskProcessor");
|
|
@@ -4034,6 +4066,9 @@ const debug$7 = Debug.get("Resource");
|
|
|
4034
4066
|
|
|
4035
4067
|
const Resource = {
|
|
4036
4068
|
tasker: new TaskProcessor,
|
|
4069
|
+
queue: new TaskProcessor({
|
|
4070
|
+
parallel: 1
|
|
4071
|
+
}),
|
|
4037
4072
|
map: {},
|
|
4038
4073
|
get isComplete() {
|
|
4039
4074
|
return R.tasker.isComplete;
|
|
@@ -4070,6 +4105,12 @@ const Resource = {
|
|
|
4070
4105
|
R.set(key, value);
|
|
4071
4106
|
return value;
|
|
4072
4107
|
},
|
|
4108
|
+
loadFilm(_key, _format) {
|
|
4109
|
+
return undefined;
|
|
4110
|
+
},
|
|
4111
|
+
loadVideo(_key, _format) {
|
|
4112
|
+
return undefined;
|
|
4113
|
+
},
|
|
4073
4114
|
destroy() {
|
|
4074
4115
|
R.map = {};
|
|
4075
4116
|
}
|
|
@@ -4080,16 +4121,15 @@ const R = Resource;
|
|
|
4080
4121
|
const ImageManager = {
|
|
4081
4122
|
maxRecycled: 10,
|
|
4082
4123
|
recycledList: [],
|
|
4083
|
-
patternTasker:
|
|
4084
|
-
|
|
4085
|
-
}),
|
|
4086
|
-
get(config) {
|
|
4124
|
+
patternTasker: Resource.queue,
|
|
4125
|
+
get(config, type) {
|
|
4087
4126
|
let image = Resource.get(config.url);
|
|
4088
|
-
if (!image) Resource.set(config.url, image = Creator.image(config));
|
|
4127
|
+
if (!image) Resource.set(config.url, image = type === "film" ? Creator.film(config) : Creator.image(config));
|
|
4089
4128
|
image.use++;
|
|
4090
4129
|
return image;
|
|
4091
4130
|
},
|
|
4092
4131
|
recycle(image) {
|
|
4132
|
+
if (image.parent) image = image.parent;
|
|
4093
4133
|
image.use--;
|
|
4094
4134
|
setTimeout(() => {
|
|
4095
4135
|
if (!image.use) {
|
|
@@ -4120,7 +4160,7 @@ const ImageManager = {
|
|
|
4120
4160
|
if (config.format) return config.format === format;
|
|
4121
4161
|
const {url: url} = config;
|
|
4122
4162
|
if (url.startsWith("data:")) {
|
|
4123
|
-
if (url.startsWith("data:" + FileHelper.
|
|
4163
|
+
if (url.startsWith("data:" + FileHelper.mimeType(format))) return true;
|
|
4124
4164
|
} else {
|
|
4125
4165
|
if (url.includes("." + format) || url.includes("." + FileHelper.upperCaseTypeMap[format])) return true; else if (format === "png" && !url.includes(".")) return true;
|
|
4126
4166
|
}
|
|
@@ -4136,6 +4176,9 @@ const I = ImageManager;
|
|
|
4136
4176
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
4137
4177
|
|
|
4138
4178
|
class LeaferImage {
|
|
4179
|
+
get tag() {
|
|
4180
|
+
return "Image";
|
|
4181
|
+
}
|
|
4139
4182
|
get url() {
|
|
4140
4183
|
return this.config.url;
|
|
4141
4184
|
}
|
|
@@ -4164,7 +4207,7 @@ class LeaferImage {
|
|
|
4164
4207
|
if (!this.loading) {
|
|
4165
4208
|
this.loading = true;
|
|
4166
4209
|
Resource.tasker.add(() => __awaiter(this, void 0, void 0, function*() {
|
|
4167
|
-
return yield Platform.origin.
|
|
4210
|
+
return yield Platform.origin["load" + this.tag](this.getLoadUrl(thumbSize), this.crossOrigin, this).then(img => {
|
|
4168
4211
|
if (thumbSize) this.setThumbView(img);
|
|
4169
4212
|
this.setView(img);
|
|
4170
4213
|
}).catch(e => {
|
|
@@ -4238,6 +4281,9 @@ class LeaferImage {
|
|
|
4238
4281
|
Platform.image.setPatternTransform(pattern, transform, paint);
|
|
4239
4282
|
return pattern;
|
|
4240
4283
|
}
|
|
4284
|
+
render(canvas, x, y, width, height, _leaf, _paint, _imageScaleX, _imageScaleY) {
|
|
4285
|
+
canvas.drawImage(this.view, x, y, width, height);
|
|
4286
|
+
}
|
|
4241
4287
|
getLoadUrl(_thumbSize) {
|
|
4242
4288
|
return this.url;
|
|
4243
4289
|
}
|
|
@@ -4252,8 +4298,10 @@ class LeaferImage {
|
|
|
4252
4298
|
return undefined;
|
|
4253
4299
|
}
|
|
4254
4300
|
clearLevels(_checkUse) {}
|
|
4301
|
+
destroyFilter() {}
|
|
4255
4302
|
destroy() {
|
|
4256
4303
|
this.clearLevels();
|
|
4304
|
+
this.destroyFilter();
|
|
4257
4305
|
const {view: view} = this;
|
|
4258
4306
|
if (view && view.close) view.close();
|
|
4259
4307
|
this.config = {
|
|
@@ -4264,6 +4312,18 @@ class LeaferImage {
|
|
|
4264
4312
|
}
|
|
4265
4313
|
}
|
|
4266
4314
|
|
|
4315
|
+
class LeaferFilm extends LeaferImage {
|
|
4316
|
+
get tag() {
|
|
4317
|
+
return "Film";
|
|
4318
|
+
}
|
|
4319
|
+
}
|
|
4320
|
+
|
|
4321
|
+
class LeaferVideo extends LeaferImage {
|
|
4322
|
+
get tag() {
|
|
4323
|
+
return "Video";
|
|
4324
|
+
}
|
|
4325
|
+
}
|
|
4326
|
+
|
|
4267
4327
|
function defineKey(target, key, descriptor, noConfigurable) {
|
|
4268
4328
|
if (!noConfigurable) descriptor.configurable = descriptor.enumerable = true;
|
|
4269
4329
|
Object.defineProperty(target, key, descriptor);
|
|
@@ -4438,7 +4498,6 @@ function dimType(defaultValue) {
|
|
|
4438
4498
|
if (this.__setAttr(key, value)) {
|
|
4439
4499
|
const data = this.__;
|
|
4440
4500
|
DataHelper.stintSet(data, "__useDim", data.dim || data.bright || data.dimskip);
|
|
4441
|
-
this.__layout.surfaceChange();
|
|
4442
4501
|
}
|
|
4443
4502
|
}
|
|
4444
4503
|
}));
|
|
@@ -4488,7 +4547,6 @@ function sortType(defaultValue) {
|
|
|
4488
4547
|
return decorateLeafAttr(defaultValue, key => attr({
|
|
4489
4548
|
set(value) {
|
|
4490
4549
|
if (this.__setAttr(key, value)) {
|
|
4491
|
-
this.__layout.surfaceChange();
|
|
4492
4550
|
this.waitParent(() => {
|
|
4493
4551
|
this.parent.__layout.childrenSortChange();
|
|
4494
4552
|
});
|
|
@@ -4525,7 +4583,6 @@ function hitType(defaultValue) {
|
|
|
4525
4583
|
set(value) {
|
|
4526
4584
|
if (this.__setAttr(key, value)) {
|
|
4527
4585
|
this.__layout.hitCanvasChanged = true;
|
|
4528
|
-
if (Debug.showBounds === "hit") this.__layout.surfaceChange();
|
|
4529
4586
|
if (this.leafer) this.leafer.updateCursor();
|
|
4530
4587
|
}
|
|
4531
4588
|
}
|
|
@@ -4731,6 +4788,10 @@ const LeafHelper = {
|
|
|
4731
4788
|
if (layout.stateStyleChanged) leaf.updateState();
|
|
4732
4789
|
if (layout.opacityChanged) updateAllWorldOpacity(leaf);
|
|
4733
4790
|
leaf.__updateChange();
|
|
4791
|
+
if (layout.surfaceChanged) {
|
|
4792
|
+
if (leaf.__hasComplex) L.updateComplex(leaf);
|
|
4793
|
+
layout.surfaceChanged = false;
|
|
4794
|
+
}
|
|
4734
4795
|
},
|
|
4735
4796
|
updateAllChange(leaf) {
|
|
4736
4797
|
updateChange$1(leaf);
|
|
@@ -4755,6 +4816,9 @@ const LeafHelper = {
|
|
|
4755
4816
|
if (!fromWorld) fromWorld = leaf.__nowWorld;
|
|
4756
4817
|
if (leaf.__worldFlipped || Platform.fullImageShadow) currentCanvas.copyWorldByReset(fromCanvas, fromWorld, leaf.__nowWorld, blendMode, onlyResetTransform); else currentCanvas.copyWorldToInner(fromCanvas, fromWorld, leaf.__layout.renderBounds, blendMode);
|
|
4757
4818
|
},
|
|
4819
|
+
renderComplex(_leaf, _canvas, _options) {},
|
|
4820
|
+
updateComplex(_leaf) {},
|
|
4821
|
+
checkComplex(_leaf) {},
|
|
4758
4822
|
moveWorld(t, x, y = 0, isInnerPoint, transition) {
|
|
4759
4823
|
const local = isObject(x) ? Object.assign({}, x) : {
|
|
4760
4824
|
x: x,
|
|
@@ -4866,6 +4930,9 @@ const LeafHelper = {
|
|
|
4866
4930
|
divideParent(matrix, relative.scrollWorldTransform);
|
|
4867
4931
|
return temp ? matrix : Object.assign({}, matrix);
|
|
4868
4932
|
},
|
|
4933
|
+
updateScaleFixedWorld(_t) {},
|
|
4934
|
+
updateOuterBounds(_t) {},
|
|
4935
|
+
cacheId(_t) {},
|
|
4869
4936
|
drop(t, parent, index, resize) {
|
|
4870
4937
|
t.setTransform(L.getRelativeWorld(t, parent, true), resize);
|
|
4871
4938
|
parent.add(t, index);
|
|
@@ -4916,7 +4983,8 @@ const LeafBoundsHelper = {
|
|
|
4916
4983
|
return target.__.eraser || target.__.visible === 0 ? null : target.__layout.localStrokeBounds;
|
|
4917
4984
|
},
|
|
4918
4985
|
localRenderBounds(target) {
|
|
4919
|
-
|
|
4986
|
+
const {__: __, __layout: __layout} = target;
|
|
4987
|
+
return __.eraser || __.visible === 0 ? null : __layout.localOuterBounds || __layout.localRenderBounds;
|
|
4920
4988
|
},
|
|
4921
4989
|
maskLocalBoxBounds(target, index) {
|
|
4922
4990
|
return checkMask(target, index) && target.__localBoxBounds;
|
|
@@ -4925,7 +4993,8 @@ const LeafBoundsHelper = {
|
|
|
4925
4993
|
return checkMask(target, index) && target.__layout.localStrokeBounds;
|
|
4926
4994
|
},
|
|
4927
4995
|
maskLocalRenderBounds(target, index) {
|
|
4928
|
-
|
|
4996
|
+
const {__layout: __layout} = target;
|
|
4997
|
+
return checkMask(target, index) && (__layout.localOuterBounds || __layout.localRenderBounds);
|
|
4929
4998
|
},
|
|
4930
4999
|
excludeRenderBounds(child, options) {
|
|
4931
5000
|
if (options.bounds && !options.bounds.hit(child.__world, options.matrix)) return true;
|
|
@@ -5445,7 +5514,6 @@ class LeafLayout {
|
|
|
5445
5514
|
}
|
|
5446
5515
|
opacityChange() {
|
|
5447
5516
|
this.opacityChanged = true;
|
|
5448
|
-
this.surfaceChanged || this.surfaceChange();
|
|
5449
5517
|
}
|
|
5450
5518
|
childrenSortChange() {
|
|
5451
5519
|
if (!this.childrenSortChanged) {
|
|
@@ -5938,6 +6006,7 @@ const LeafMatrix = {
|
|
|
5938
6006
|
const {parent: parent, __layout: __layout, __world: __world, __scrollWorld: __scrollWorld, __: __} = this;
|
|
5939
6007
|
multiplyParent$2(this.__local || __layout, parent ? parent.__scrollWorld || parent.__world : defaultWorld, __world, !!__layout.affectScaleOrRotation, __);
|
|
5940
6008
|
if (__scrollWorld) translateInner(Object.assign(__scrollWorld, __world), __.scrollX, __.scrollY);
|
|
6009
|
+
if (__layout.scaleFixed) LeafHelper.updateScaleFixedWorld(this);
|
|
5941
6010
|
},
|
|
5942
6011
|
__updateLocalMatrix() {
|
|
5943
6012
|
if (this.__local) {
|
|
@@ -5971,6 +6040,7 @@ const LeafBounds = {
|
|
|
5971
6040
|
__updateWorldBounds() {
|
|
5972
6041
|
const {__layout: __layout, __world: __world} = this;
|
|
5973
6042
|
toOuterOf$2(__layout.renderBounds, __world, __world);
|
|
6043
|
+
if (this.__hasComplex) LeafHelper.checkComplex(this);
|
|
5974
6044
|
if (__layout.resized) {
|
|
5975
6045
|
if (__layout.resized === "inner") this.__onUpdateSize();
|
|
5976
6046
|
if (this.__hasLocalEvent) BoundsEvent.emitLocal(this);
|
|
@@ -6020,6 +6090,7 @@ const LeafBounds = {
|
|
|
6020
6090
|
layout.renderChanged = undefined;
|
|
6021
6091
|
if (this.parent) this.parent.__layout.renderChange();
|
|
6022
6092
|
}
|
|
6093
|
+
if (layout.outerScale) LeafHelper.updateOuterBounds(this);
|
|
6023
6094
|
layout.resized || (layout.resized = "local");
|
|
6024
6095
|
layout.boundsChanged = undefined;
|
|
6025
6096
|
},
|
|
@@ -6086,7 +6157,7 @@ const LeafRender = {
|
|
|
6086
6157
|
const data = this.__;
|
|
6087
6158
|
if (data.bright && !options.topRendering) return options.topList.add(this);
|
|
6088
6159
|
canvas.setWorld(this.__nowWorld = this.__getNowWorld(options));
|
|
6089
|
-
canvas.opacity = options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
6160
|
+
canvas.opacity = options.ignoreOpacity ? 1 : options.dimOpacity && !data.dimskip ? data.opacity * options.dimOpacity : data.opacity;
|
|
6090
6161
|
if (this.__.__single) {
|
|
6091
6162
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6092
6163
|
const tempCanvas = canvas.getSameCanvas(true, true);
|
|
@@ -6140,7 +6211,7 @@ const BranchRender = {
|
|
|
6140
6211
|
if (data.eraser === "path") return this.__renderEraser(canvas, options);
|
|
6141
6212
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
6142
6213
|
this.__renderBranch(tempCanvas, options);
|
|
6143
|
-
canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6214
|
+
canvas.opacity = options.ignoreOpacity ? 1 : options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
|
|
6144
6215
|
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
|
|
6145
6216
|
tempCanvas.recycle(nowWorld);
|
|
6146
6217
|
} else {
|
|
@@ -6152,9 +6223,11 @@ const BranchRender = {
|
|
|
6152
6223
|
if (this.__hasMask) {
|
|
6153
6224
|
this.__renderMask(canvas, options);
|
|
6154
6225
|
} else {
|
|
6226
|
+
let child;
|
|
6155
6227
|
const {children: children} = this;
|
|
6156
6228
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
6157
|
-
|
|
6229
|
+
child = children[i];
|
|
6230
|
+
excludeRenderBounds$1(child, options) || (child.__hasComplex ? LeafHelper.renderComplex(child, canvas, options) : child.__render(canvas, options));
|
|
6158
6231
|
}
|
|
6159
6232
|
}
|
|
6160
6233
|
},
|
|
@@ -6168,8 +6241,6 @@ const BranchRender = {
|
|
|
6168
6241
|
}
|
|
6169
6242
|
};
|
|
6170
6243
|
|
|
6171
|
-
const tempScaleData$1 = {};
|
|
6172
|
-
|
|
6173
6244
|
const {LEAF: LEAF, create: create} = IncrementId;
|
|
6174
6245
|
|
|
6175
6246
|
const {stintSet: stintSet$4} = DataHelper;
|
|
@@ -6180,6 +6251,8 @@ const {toOuterOf: toOuterOf$1} = BoundsHelper;
|
|
|
6180
6251
|
|
|
6181
6252
|
const {copy: copy$2, move: move$2} = PointHelper;
|
|
6182
6253
|
|
|
6254
|
+
const {getScaleFixedData: getScaleFixedData} = MathHelper;
|
|
6255
|
+
|
|
6183
6256
|
const {moveLocal: moveLocal, zoomOfLocal: zoomOfLocal, rotateOfLocal: rotateOfLocal, skewOfLocal: skewOfLocal, moveWorld: moveWorld, zoomOfWorld: zoomOfWorld, rotateOfWorld: rotateOfWorld, skewOfWorld: skewOfWorld, transform: transform, transformWorld: transformWorld, setTransform: setTransform, getFlipTransform: getFlipTransform, getLocalOrigin: getLocalOrigin, getRelativeWorld: getRelativeWorld, drop: drop} = LeafHelper;
|
|
6184
6257
|
|
|
6185
6258
|
let Leaf = class Leaf {
|
|
@@ -6338,6 +6411,7 @@ let Leaf = class Leaf {
|
|
|
6338
6411
|
this.__level = this.parent ? this.parent.__level + 1 : 1;
|
|
6339
6412
|
if (this.animation) this.__runAnimation("in");
|
|
6340
6413
|
if (this.__bubbleMap) this.__emitLifeEvent(ChildEvent.MOUNTED);
|
|
6414
|
+
if (leafer.cacheId) LeafHelper.cacheId(this);
|
|
6341
6415
|
} else {
|
|
6342
6416
|
this.__emitLifeEvent(ChildEvent.UNMOUNTED);
|
|
6343
6417
|
}
|
|
@@ -6467,13 +6541,8 @@ let Leaf = class Leaf {
|
|
|
6467
6541
|
if (scaleX < 0) scaleX = -scaleX;
|
|
6468
6542
|
return scaleX > 1 ? scaleX : 1;
|
|
6469
6543
|
}
|
|
6470
|
-
getRenderScaleData(abs, scaleFixed) {
|
|
6471
|
-
|
|
6472
|
-
if (abs) scaleX < 0 && (scaleX = -scaleX), scaleY < 0 && (scaleY = -scaleY);
|
|
6473
|
-
if (scaleFixed === true || scaleFixed === "zoom-in" && scaleX > 1 && scaleY > 1) scaleX = scaleY = 1;
|
|
6474
|
-
tempScaleData$1.scaleX = scaleX;
|
|
6475
|
-
tempScaleData$1.scaleY = scaleY;
|
|
6476
|
-
return tempScaleData$1;
|
|
6544
|
+
getRenderScaleData(abs, scaleFixed, unscale = true) {
|
|
6545
|
+
return getScaleFixedData(ImageManager.patternLocked ? this.__world : this.__nowWorld || this.__world, scaleFixed, unscale, abs);
|
|
6477
6546
|
}
|
|
6478
6547
|
getTransform(relative) {
|
|
6479
6548
|
return this.__layout.getTransform(relative || "local");
|
|
@@ -6645,7 +6714,7 @@ let Leaf = class Leaf {
|
|
|
6645
6714
|
__drawPath(_canvas) {}
|
|
6646
6715
|
__drawRenderPath(_canvas) {}
|
|
6647
6716
|
__updatePath() {}
|
|
6648
|
-
__updateRenderPath() {}
|
|
6717
|
+
__updateRenderPath(_updateCache) {}
|
|
6649
6718
|
getMotionPathData() {
|
|
6650
6719
|
return Plugin.need("path");
|
|
6651
6720
|
}
|
|
@@ -6719,9 +6788,11 @@ let Branch = class Branch extends Leaf {
|
|
|
6719
6788
|
return 0;
|
|
6720
6789
|
}
|
|
6721
6790
|
__updateRenderSpread() {
|
|
6791
|
+
let layout;
|
|
6722
6792
|
const {children: children} = this;
|
|
6723
6793
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
6724
|
-
|
|
6794
|
+
layout = children[i].__layout;
|
|
6795
|
+
if (layout.renderSpread || layout.localOuterBounds) return 1;
|
|
6725
6796
|
}
|
|
6726
6797
|
return 0;
|
|
6727
6798
|
}
|
|
@@ -6754,6 +6825,7 @@ let Branch = class Branch extends Leaf {
|
|
|
6754
6825
|
this.add(item, index);
|
|
6755
6826
|
noIndex || index++;
|
|
6756
6827
|
}); else child = UICreator.get(child.tag, child);
|
|
6828
|
+
if (!child) return;
|
|
6757
6829
|
}
|
|
6758
6830
|
if (child.parent) child.parent.remove(child);
|
|
6759
6831
|
child.parent = this;
|
|
@@ -6979,7 +7051,7 @@ class LeafLevelList {
|
|
|
6979
7051
|
}
|
|
6980
7052
|
}
|
|
6981
7053
|
|
|
6982
|
-
const version = "2.0.
|
|
7054
|
+
const version = "2.0.3";
|
|
6983
7055
|
|
|
6984
7056
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6985
7057
|
get allowBackgroundColor() {
|
|
@@ -7084,8 +7156,6 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
7084
7156
|
}
|
|
7085
7157
|
}
|
|
7086
7158
|
|
|
7087
|
-
const {mineType: mineType, fileType: fileType} = FileHelper;
|
|
7088
|
-
|
|
7089
7159
|
Object.assign(Creator, {
|
|
7090
7160
|
canvas: (options, manager) => new LeaferCanvas(options, manager),
|
|
7091
7161
|
image: options => new LeaferImage(options)
|
|
@@ -7101,12 +7171,12 @@ function useCanvas(_canvasType, app) {
|
|
|
7101
7171
|
};
|
|
7102
7172
|
return app.createOffscreenCanvas ? app.createOffscreenCanvas(data) : app.createOffScreenCanvas(data);
|
|
7103
7173
|
},
|
|
7104
|
-
canvasToDataURL: (canvas, type, quality) => canvas.toDataURL(
|
|
7174
|
+
canvasToDataURL: (canvas, type, quality) => canvas.toDataURL(FileHelper.mimeType(type), quality),
|
|
7105
7175
|
canvasToBolb: (canvas, type, quality) => canvas.toBuffer(type, {
|
|
7106
7176
|
quality: quality
|
|
7107
7177
|
}),
|
|
7108
7178
|
canvasSaveAs: (canvas, filePath, quality) => {
|
|
7109
|
-
let data = canvas.toDataURL(
|
|
7179
|
+
let data = canvas.toDataURL(FileHelper.mimeType(FileHelper.fileType(filePath)), quality);
|
|
7110
7180
|
data = data.substring(data.indexOf("64,") + 3);
|
|
7111
7181
|
return Platform.origin.download(data, filePath);
|
|
7112
7182
|
},
|
|
@@ -7140,7 +7210,7 @@ function useCanvas(_canvasType, app) {
|
|
|
7140
7210
|
});
|
|
7141
7211
|
});
|
|
7142
7212
|
},
|
|
7143
|
-
loadImage(src) {
|
|
7213
|
+
loadImage(src, _crossOrigin, _leaferImage) {
|
|
7144
7214
|
return new Promise((resolve, reject) => {
|
|
7145
7215
|
const img = Platform.canvas.view.createImage();
|
|
7146
7216
|
img.onload = () => {
|
|
@@ -7152,6 +7222,14 @@ function useCanvas(_canvasType, app) {
|
|
|
7152
7222
|
img.src = Platform.image.getRealURL(src);
|
|
7153
7223
|
});
|
|
7154
7224
|
},
|
|
7225
|
+
loadContent(url, responseType = "text") {
|
|
7226
|
+
return new Promise((resolve, reject) => app.request({
|
|
7227
|
+
url: url,
|
|
7228
|
+
responseType: responseType === "arrayBuffer" ? "arraybuffer" : "text",
|
|
7229
|
+
success: res => resolve(responseType === "json" && typeof res.data === "string" ? JSON.parse(res.data) : res.data),
|
|
7230
|
+
fail: reject
|
|
7231
|
+
}));
|
|
7232
|
+
},
|
|
7155
7233
|
noRepeat: "repeat-x"
|
|
7156
7234
|
};
|
|
7157
7235
|
Platform.miniapp = {
|
|
@@ -7703,7 +7781,7 @@ class Renderer {
|
|
|
7703
7781
|
getCellList() {
|
|
7704
7782
|
return undefined;
|
|
7705
7783
|
}
|
|
7706
|
-
addBlock(block) {
|
|
7784
|
+
addBlock(block, _leafList) {
|
|
7707
7785
|
if (!this.updateBlocks) this.updateBlocks = [];
|
|
7708
7786
|
this.updateBlocks.push(block);
|
|
7709
7787
|
}
|
|
@@ -7751,7 +7829,8 @@ class Renderer {
|
|
|
7751
7829
|
__onLayoutEnd(event) {
|
|
7752
7830
|
if (event.data) event.data.map(item => {
|
|
7753
7831
|
let empty;
|
|
7754
|
-
|
|
7832
|
+
const {updatedList: updatedList} = item;
|
|
7833
|
+
if (updatedList) updatedList.list.some(leaf => {
|
|
7755
7834
|
empty = !leaf.__world.width || !leaf.__world.height;
|
|
7756
7835
|
if (empty) {
|
|
7757
7836
|
if (!leaf.isLeafer) debug$2.tip(leaf.innerName, ": empty");
|
|
@@ -7759,7 +7838,7 @@ class Renderer {
|
|
|
7759
7838
|
}
|
|
7760
7839
|
return empty;
|
|
7761
7840
|
});
|
|
7762
|
-
this.addBlock(empty ? this.canvas.bounds : item.updatedBounds);
|
|
7841
|
+
this.addBlock(empty ? this.canvas.bounds : item.updatedBounds, updatedList);
|
|
7763
7842
|
});
|
|
7764
7843
|
}
|
|
7765
7844
|
emitRender(type, bounds, options) {
|
|
@@ -7807,7 +7886,9 @@ function effectType(defaultValue) {
|
|
|
7807
7886
|
set(value) {
|
|
7808
7887
|
this.__setAttr(key, value);
|
|
7809
7888
|
if (value) this.__.__useEffect = true;
|
|
7810
|
-
|
|
7889
|
+
const layout = this.__layout;
|
|
7890
|
+
layout.renderChanged || layout.renderChange();
|
|
7891
|
+
layout.surfaceChange();
|
|
7811
7892
|
}
|
|
7812
7893
|
}));
|
|
7813
7894
|
}
|
|
@@ -8021,15 +8102,16 @@ class UIData extends LeafData {
|
|
|
8021
8102
|
this.__needComputePaint = undefined;
|
|
8022
8103
|
}
|
|
8023
8104
|
__getRealStrokeWidth(childStyle) {
|
|
8024
|
-
let {strokeWidth: strokeWidth,
|
|
8105
|
+
let {strokeWidth: strokeWidth, strokeScaleFixed: strokeScaleFixed} = this;
|
|
8025
8106
|
if (childStyle) {
|
|
8026
8107
|
if (childStyle.strokeWidth) strokeWidth = childStyle.strokeWidth;
|
|
8027
|
-
if (!isUndefined(childStyle.
|
|
8108
|
+
if (!isUndefined(childStyle.strokeScaleFixed)) strokeScaleFixed = childStyle.strokeScaleFixed;
|
|
8028
8109
|
}
|
|
8029
|
-
if (
|
|
8030
|
-
const
|
|
8031
|
-
|
|
8032
|
-
}
|
|
8110
|
+
if (strokeScaleFixed) {
|
|
8111
|
+
const {scaleX: scaleX} = this.__leaf.getRenderScaleData(true, strokeScaleFixed, false);
|
|
8112
|
+
if (scaleX !== 1) return strokeWidth * scaleX;
|
|
8113
|
+
}
|
|
8114
|
+
return strokeWidth;
|
|
8033
8115
|
}
|
|
8034
8116
|
__setPaint(attrName, value) {
|
|
8035
8117
|
this.__setInput(attrName, value);
|
|
@@ -8167,13 +8249,16 @@ class TextData extends UIData {
|
|
|
8167
8249
|
}
|
|
8168
8250
|
|
|
8169
8251
|
class ImageData extends RectData {
|
|
8252
|
+
get __urlType() {
|
|
8253
|
+
return "image";
|
|
8254
|
+
}
|
|
8170
8255
|
setUrl(value) {
|
|
8171
8256
|
this.__setImageFill(value);
|
|
8172
8257
|
this._url = value;
|
|
8173
8258
|
}
|
|
8174
8259
|
__setImageFill(value) {
|
|
8175
8260
|
this.fill = value ? {
|
|
8176
|
-
type:
|
|
8261
|
+
type: this.__urlType,
|
|
8177
8262
|
mode: "stretch",
|
|
8178
8263
|
url: value
|
|
8179
8264
|
} : undefined;
|
|
@@ -8212,7 +8297,7 @@ const UIBounds = {
|
|
|
8212
8297
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8213
8298
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8214
8299
|
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8215
|
-
if (!data.__boxStroke) {
|
|
8300
|
+
if (!data.__boxStroke || data.__useArrow) {
|
|
8216
8301
|
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8217
8302
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8218
8303
|
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
@@ -8369,6 +8454,12 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8369
8454
|
get isFrame() {
|
|
8370
8455
|
return false;
|
|
8371
8456
|
}
|
|
8457
|
+
set strokeWidthFixed(value) {
|
|
8458
|
+
this.strokeScaleFixed = value;
|
|
8459
|
+
}
|
|
8460
|
+
get strokeWidthFixed() {
|
|
8461
|
+
return this.strokeScaleFixed;
|
|
8462
|
+
}
|
|
8372
8463
|
set scale(value) {
|
|
8373
8464
|
MathHelper.assignScale(this, value);
|
|
8374
8465
|
}
|
|
@@ -8424,6 +8515,9 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8424
8515
|
getPathString(curve, pathForRender, floatLength) {
|
|
8425
8516
|
return PathConvert.stringify(this.getPath(curve, pathForRender), floatLength);
|
|
8426
8517
|
}
|
|
8518
|
+
asPath(curve, pathForRender) {
|
|
8519
|
+
this.path = this.getPath(curve, pathForRender);
|
|
8520
|
+
}
|
|
8427
8521
|
load() {
|
|
8428
8522
|
this.__.__computePaint();
|
|
8429
8523
|
}
|
|
@@ -8433,16 +8527,18 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8433
8527
|
data.lazy && !this.__inLazyBounds && !Export.running ? data.__needComputePaint = true : data.__computePaint();
|
|
8434
8528
|
}
|
|
8435
8529
|
}
|
|
8436
|
-
__updateRenderPath() {
|
|
8530
|
+
__updateRenderPath(updateCache) {
|
|
8437
8531
|
const data = this.__;
|
|
8438
8532
|
if (data.path) {
|
|
8439
8533
|
data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path;
|
|
8440
|
-
if (data.__useArrow) PathArrow.addArrows(this);
|
|
8534
|
+
if (data.__useArrow) PathArrow.addArrows(this, updateCache);
|
|
8441
8535
|
} else data.__pathForRender && (data.__pathForRender = undefined);
|
|
8442
8536
|
}
|
|
8443
8537
|
__drawRenderPath(canvas) {
|
|
8538
|
+
const data = this.__;
|
|
8444
8539
|
canvas.beginPath();
|
|
8445
|
-
|
|
8540
|
+
if (data.__useArrow) PathArrow.updateArrow(this);
|
|
8541
|
+
this.__drawPathByData(canvas, data.__pathForRender);
|
|
8446
8542
|
}
|
|
8447
8543
|
__drawPath(canvas) {
|
|
8448
8544
|
canvas.beginPath();
|
|
@@ -8491,6 +8587,7 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
8491
8587
|
static setEditOuter(_toolName) {}
|
|
8492
8588
|
static setEditInner(_editorName) {}
|
|
8493
8589
|
destroy() {
|
|
8590
|
+
this.__.__willDestroy = true;
|
|
8494
8591
|
this.fill = this.stroke = null;
|
|
8495
8592
|
if (this.__animate) this.killAnimate();
|
|
8496
8593
|
super.destroy();
|
|
@@ -8607,7 +8704,7 @@ __decorate([ strokeType("inside") ], UI.prototype, "strokeAlign", void 0);
|
|
|
8607
8704
|
|
|
8608
8705
|
__decorate([ strokeType(1, true) ], UI.prototype, "strokeWidth", void 0);
|
|
8609
8706
|
|
|
8610
|
-
__decorate([ strokeType(false) ], UI.prototype, "
|
|
8707
|
+
__decorate([ strokeType(false) ], UI.prototype, "strokeScaleFixed", void 0);
|
|
8611
8708
|
|
|
8612
8709
|
__decorate([ strokeType("none") ], UI.prototype, "strokeCap", void 0);
|
|
8613
8710
|
|
|
@@ -8673,7 +8770,10 @@ let Group = class Group extends UI {
|
|
|
8673
8770
|
}
|
|
8674
8771
|
toJSON(options) {
|
|
8675
8772
|
const data = super.toJSON(options);
|
|
8676
|
-
if (!this.childlessJSON)
|
|
8773
|
+
if (!this.childlessJSON) {
|
|
8774
|
+
const children = data.children = [];
|
|
8775
|
+
this.children.forEach(child => child.skipJSON || children.push(child.toJSON(options)));
|
|
8776
|
+
}
|
|
8677
8777
|
return data;
|
|
8678
8778
|
}
|
|
8679
8779
|
pick(_hitPoint, _options) {
|
|
@@ -8822,12 +8922,12 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8822
8922
|
this.emitLeafer(LeaferEvent.STOP);
|
|
8823
8923
|
}
|
|
8824
8924
|
}
|
|
8825
|
-
unlockLayout() {
|
|
8925
|
+
unlockLayout(updateLayout = true) {
|
|
8826
8926
|
this.layouter.start();
|
|
8827
|
-
this.updateLayout();
|
|
8927
|
+
if (updateLayout) this.updateLayout();
|
|
8828
8928
|
}
|
|
8829
|
-
lockLayout() {
|
|
8830
|
-
this.updateLayout();
|
|
8929
|
+
lockLayout(updateLayout = true) {
|
|
8930
|
+
if (updateLayout) this.updateLayout();
|
|
8831
8931
|
this.layouter.stop();
|
|
8832
8932
|
}
|
|
8833
8933
|
resize(size) {
|
|
@@ -9236,9 +9336,9 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9236
9336
|
return "Ellipse";
|
|
9237
9337
|
}
|
|
9238
9338
|
__updatePath() {
|
|
9239
|
-
const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} =
|
|
9339
|
+
const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = data;
|
|
9240
9340
|
const rx = width / 2, ry = height / 2;
|
|
9241
|
-
const path =
|
|
9341
|
+
const path = data.path = [];
|
|
9242
9342
|
let open;
|
|
9243
9343
|
if (innerRadius) {
|
|
9244
9344
|
if (startAngle || endAngle) {
|
|
@@ -9260,7 +9360,7 @@ let Ellipse = class Ellipse extends UI {
|
|
|
9260
9360
|
}
|
|
9261
9361
|
}
|
|
9262
9362
|
if (!open) closePath$2(path);
|
|
9263
|
-
if (Platform.ellipseToCurve)
|
|
9363
|
+
if (Platform.ellipseToCurve || data.__useArrow) data.path = this.getPath(true);
|
|
9264
9364
|
}
|
|
9265
9365
|
};
|
|
9266
9366
|
|
|
@@ -9735,8 +9835,8 @@ function fills(fills, ui, canvas, renderOptions) {
|
|
|
9735
9835
|
canvas.save();
|
|
9736
9836
|
if (item.transform) canvas.transform(item.transform);
|
|
9737
9837
|
if (originPaint.scaleFixed) {
|
|
9738
|
-
const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
9739
|
-
if (
|
|
9838
|
+
const {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, originPaint.scaleFixed, false);
|
|
9839
|
+
if (scaleX !== 1) canvas.scale(scaleX, scaleY);
|
|
9740
9840
|
}
|
|
9741
9841
|
if (originPaint.blendMode) canvas.blendMode = originPaint.blendMode;
|
|
9742
9842
|
fillPathOrText(ui, canvas, renderOptions);
|
|
@@ -10010,11 +10110,14 @@ function compute(attrName, ui) {
|
|
|
10010
10110
|
function getLeafPaint(attrName, paint, ui) {
|
|
10011
10111
|
if (!isObject(paint) || paint.visible === false || paint.opacity === 0) return undefined;
|
|
10012
10112
|
let leafPaint;
|
|
10013
|
-
const {boxBounds: boxBounds} = ui.__layout;
|
|
10014
|
-
switch (
|
|
10113
|
+
const {boxBounds: boxBounds} = ui.__layout, {type: type} = paint;
|
|
10114
|
+
switch (type) {
|
|
10015
10115
|
case "image":
|
|
10116
|
+
case "film":
|
|
10117
|
+
case "video":
|
|
10016
10118
|
if (!paint.url) return undefined;
|
|
10017
10119
|
leafPaint = PaintImage.image(ui, attrName, paint, boxBounds, !recycleMap || !recycleMap[paint.url]);
|
|
10120
|
+
if (type !== "image") PaintImage[type](leafPaint);
|
|
10018
10121
|
break;
|
|
10019
10122
|
|
|
10020
10123
|
case "linear":
|
|
@@ -10030,7 +10133,7 @@ function getLeafPaint(attrName, paint, ui) {
|
|
|
10030
10133
|
break;
|
|
10031
10134
|
|
|
10032
10135
|
case "solid":
|
|
10033
|
-
const {
|
|
10136
|
+
const {color: color, opacity: opacity} = paint;
|
|
10034
10137
|
leafPaint = {
|
|
10035
10138
|
type: type,
|
|
10036
10139
|
style: ColorConvert.string(color, opacity)
|
|
@@ -10074,7 +10177,7 @@ const {isSame: isSame} = BoundsHelper;
|
|
|
10074
10177
|
|
|
10075
10178
|
function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
10076
10179
|
let leafPaint, event;
|
|
10077
|
-
const image = ImageManager.get(paint);
|
|
10180
|
+
const image = ImageManager.get(paint, paint.type);
|
|
10078
10181
|
if (cache && paint === cache.paint && isSame(boxBounds, cache.boxBounds)) {
|
|
10079
10182
|
leafPaint = cache.leafPaint;
|
|
10080
10183
|
} else {
|
|
@@ -10135,8 +10238,8 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
|
|
|
10135
10238
|
}
|
|
10136
10239
|
|
|
10137
10240
|
function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds) {
|
|
10138
|
-
|
|
10139
|
-
|
|
10241
|
+
const data = ui.__;
|
|
10242
|
+
if (attrName === "fill" && !data.__naturalWidth) {
|
|
10140
10243
|
data.__naturalWidth = image.width / data.pixelRatio;
|
|
10141
10244
|
data.__naturalHeight = image.height / data.pixelRatio;
|
|
10142
10245
|
if (data.__autoSide) {
|
|
@@ -10148,7 +10251,13 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
|
|
|
10148
10251
|
return false;
|
|
10149
10252
|
}
|
|
10150
10253
|
}
|
|
10151
|
-
if (!leafPaint.data)
|
|
10254
|
+
if (!leafPaint.data) {
|
|
10255
|
+
PaintImage.createData(leafPaint, image, paint, boxBounds);
|
|
10256
|
+
const {transform: transform} = leafPaint.data, {opacity: opacity, blendMode: blendMode} = paint;
|
|
10257
|
+
const clip = transform && !transform.onlyScale || data.path || data.cornerRadius;
|
|
10258
|
+
if (clip || opacity && opacity < 1 || blendMode) leafPaint.complex = clip ? 2 : true;
|
|
10259
|
+
}
|
|
10260
|
+
if (paint.filter) PaintImage.applyFilter(leafPaint, image, paint.filter, ui);
|
|
10152
10261
|
return true;
|
|
10153
10262
|
}
|
|
10154
10263
|
|
|
@@ -10191,7 +10300,7 @@ function getPatternData(paint, box, image) {
|
|
|
10191
10300
|
if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
|
|
10192
10301
|
if (paint.mode === "strench") paint.mode = "stretch";
|
|
10193
10302
|
const {width: width, height: height} = image;
|
|
10194
|
-
const {
|
|
10303
|
+
const {mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, interlace: interlace} = paint;
|
|
10195
10304
|
const sameBox = box.width === width && box.height === height;
|
|
10196
10305
|
const data = {
|
|
10197
10306
|
mode: mode
|
|
@@ -10254,8 +10363,6 @@ function getPatternData(paint, box, image) {
|
|
|
10254
10363
|
data.scaleX = scaleX;
|
|
10255
10364
|
data.scaleY = scaleY;
|
|
10256
10365
|
}
|
|
10257
|
-
if (opacity && opacity < 1) data.opacity = opacity;
|
|
10258
|
-
if (filters) data.filters = filters;
|
|
10259
10366
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
10260
10367
|
if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
|
|
10261
10368
|
type: "x",
|
|
@@ -10286,7 +10393,7 @@ const {get: get$2, set: set, rotateOfOuter: rotateOfOuter$1, translate: translat
|
|
|
10286
10393
|
|
|
10287
10394
|
function stretchMode(data, box, scaleX, scaleY) {
|
|
10288
10395
|
const transform = get$2(), {x: x, y: y} = box;
|
|
10289
|
-
if (x || y) translate(transform, x, y); else transform.onlyScale = true;
|
|
10396
|
+
if (x || y) translate(transform, x, y); else if (scaleX > 0 && scaleY > 0) transform.onlyScale = true;
|
|
10290
10397
|
scaleHelper(transform, scaleX, scaleY);
|
|
10291
10398
|
data.transform = transform;
|
|
10292
10399
|
}
|
|
@@ -10375,10 +10482,10 @@ function createPatternTask(paint, ui, canvas, renderOptions) {
|
|
|
10375
10482
|
}
|
|
10376
10483
|
|
|
10377
10484
|
function createPattern(paint, ui, canvas, renderOptions) {
|
|
10378
|
-
let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = scaleX + "-" + scaleY;
|
|
10485
|
+
let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
|
|
10379
10486
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
10380
10487
|
if (!(Platform.image.isLarge(paint.image, scaleX, scaleY) && !paint.data.repeat)) {
|
|
10381
|
-
const {image: image, data: data} = paint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
|
|
10488
|
+
const {image: image, data: data} = paint, {opacity: opacity} = paint.originPaint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
|
|
10382
10489
|
let imageMatrix, xGap, yGap, {width: width, height: height} = image;
|
|
10383
10490
|
if (fixScale) scaleX *= fixScale, scaleY *= fixScale;
|
|
10384
10491
|
width *= scaleX;
|
|
@@ -10394,7 +10501,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
|
|
|
10394
10501
|
if (transform) copy$1(imageMatrix, transform);
|
|
10395
10502
|
scale(imageMatrix, 1 / scaleX, 1 / scaleY);
|
|
10396
10503
|
}
|
|
10397
|
-
const imageCanvas = image.getCanvas(width, height,
|
|
10504
|
+
const imageCanvas = image.getCanvas(width, height, opacity, undefined, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
|
|
10398
10505
|
const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
|
|
10399
10506
|
paint.style = pattern;
|
|
10400
10507
|
paint.patternId = id;
|
|
@@ -10415,15 +10522,15 @@ function getPatternFixScale(paint, imageScaleX, imageScaleY) {
|
|
|
10415
10522
|
}
|
|
10416
10523
|
|
|
10417
10524
|
function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
10418
|
-
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
|
|
10525
|
+
const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
|
|
10419
10526
|
const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
|
|
10420
|
-
if (!data || paint.patternId ===
|
|
10527
|
+
if (!data || paint.patternId === id && !exporting || snapshot) {
|
|
10421
10528
|
return false;
|
|
10422
10529
|
} else {
|
|
10423
10530
|
if (drawImage) {
|
|
10424
10531
|
if (data.repeat) {
|
|
10425
10532
|
drawImage = false;
|
|
10426
|
-
} else if (!(originPaint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
|
|
10533
|
+
} else if (!(originPaint.changeful || paint.film || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || exporting)) {
|
|
10427
10534
|
drawImage = Platform.image.isLarge(image, scaleX, scaleY) || image.width * scaleX > 8096 || image.height * scaleY > 8096;
|
|
10428
10535
|
}
|
|
10429
10536
|
}
|
|
@@ -10441,20 +10548,21 @@ function checkImage(paint, drawImage, ui, canvas, renderOptions) {
|
|
|
10441
10548
|
}
|
|
10442
10549
|
}
|
|
10443
10550
|
|
|
10444
|
-
function drawImage(paint,
|
|
10445
|
-
const {data: data, image: image
|
|
10446
|
-
let {width: width, height: height} = image
|
|
10447
|
-
if (
|
|
10551
|
+
function drawImage(paint, imageScaleX, imageScaleY, ui, canvas, _renderOptions) {
|
|
10552
|
+
const {data: data, image: image, complex: complex} = paint;
|
|
10553
|
+
let {width: width, height: height} = image;
|
|
10554
|
+
if (complex) {
|
|
10555
|
+
const {blendMode: blendMode, opacity: opacity} = paint.originPaint, {transform: transform} = data;
|
|
10448
10556
|
canvas.save();
|
|
10449
|
-
|
|
10557
|
+
complex === 2 && canvas.clipUI(ui);
|
|
10450
10558
|
blendMode && (canvas.blendMode = blendMode);
|
|
10451
10559
|
opacity && (canvas.opacity *= opacity);
|
|
10452
10560
|
transform && canvas.transform(transform);
|
|
10453
|
-
|
|
10561
|
+
image.render(canvas, 0, 0, width, height, ui, paint, imageScaleX, imageScaleY);
|
|
10454
10562
|
canvas.restore();
|
|
10455
10563
|
} else {
|
|
10456
10564
|
if (data.scaleX) width *= data.scaleX, height *= data.scaleY;
|
|
10457
|
-
|
|
10565
|
+
image.render(canvas, 0, 0, width, height, ui, paint, imageScaleX, imageScaleY);
|
|
10458
10566
|
}
|
|
10459
10567
|
}
|
|
10460
10568
|
|
|
@@ -10484,6 +10592,7 @@ function recycleImage(attrName, data) {
|
|
|
10484
10592
|
if (!recycleMap) recycleMap = {};
|
|
10485
10593
|
recycleMap[url] = true;
|
|
10486
10594
|
ImageManager.recyclePaint(paint);
|
|
10595
|
+
if (data.__willDestroy && image.parent) PaintImage.recycleFilter(image, data.__leaf);
|
|
10487
10596
|
if (image.loading) {
|
|
10488
10597
|
if (!input) {
|
|
10489
10598
|
input = data.__input && data.__input[attrName] || [];
|
|
@@ -11395,4 +11504,4 @@ try {
|
|
|
11395
11504
|
if (wx) useCanvas("miniapp", wx);
|
|
11396
11505
|
} catch (_a) {}
|
|
11397
11506
|
|
|
11398
|
-
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
11507
|
+
export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferVideo, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|