leafer-draw 1.12.4 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web.js CHANGED
@@ -199,56 +199,6 @@ var LeaferUI = function(exports) {
199
199
  this.__input = this.__middle = null;
200
200
  }
201
201
  }
202
- const {floor: floor$2, max: max$4} = Math;
203
- const Platform = {
204
- toURL(text, fileType) {
205
- let url = encodeURIComponent(text);
206
- if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
207
- return url;
208
- },
209
- image: {
210
- hitCanvasSize: 100,
211
- maxCacheSize: 2560 * 1600,
212
- maxPatternSize: 4096 * 2160,
213
- crossOrigin: "anonymous",
214
- isLarge(size, scaleX, scaleY, largeSize) {
215
- return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
216
- },
217
- isSuperLarge(size, scaleX, scaleY) {
218
- return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
219
- },
220
- getRealURL(url) {
221
- const {prefix: prefix, suffix: suffix} = Platform.image;
222
- if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
223
- if (prefix && url[0] === "/") url = prefix + url;
224
- return url;
225
- },
226
- resize(image, width, height, xGap, yGap, clip, smooth, opacity, _filters) {
227
- const canvas = Platform.origin.createCanvas(max$4(floor$2(width + (xGap || 0)), 1), max$4(floor$2(height + (yGap || 0)), 1));
228
- const ctx = canvas.getContext("2d");
229
- if (opacity) ctx.globalAlpha = opacity;
230
- ctx.imageSmoothingEnabled = smooth === false ? false : true;
231
- if (image) {
232
- if (clip) {
233
- const scaleX = width / clip.width, scaleY = height / clip.height;
234
- ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
235
- ctx.drawImage(image, 0, 0, image.width, image.height);
236
- } else ctx.drawImage(image, 0, 0, width, height);
237
- }
238
- return canvas;
239
- },
240
- setPatternTransform(pattern, transform, paint) {
241
- try {
242
- if (transform && pattern.setTransform) {
243
- pattern.setTransform(transform);
244
- transform = undefined;
245
- }
246
- } catch (_a) {}
247
- if (paint) DataHelper.stintSet(paint, "transform", transform);
248
- }
249
- }
250
- };
251
- const {image: image$1} = Platform;
252
202
  const IncrementId = {
253
203
  RUNTIME: "runtime",
254
204
  LEAF: "leaf",
@@ -268,7 +218,7 @@ var LeaferUI = function(exports) {
268
218
  };
269
219
  const I$1 = IncrementId;
270
220
  let tempA, tempB, tempTo;
271
- const {max: max$3} = Math, tempFour = [ 0, 0, 0, 0 ];
221
+ const {max: max$4} = Math, tempFour = [ 0, 0, 0, 0 ];
272
222
  const FourNumberHelper = {
273
223
  zero: [ ...tempFour ],
274
224
  tempFour: tempFour,
@@ -319,9 +269,9 @@ var LeaferUI = function(exports) {
319
269
  return data;
320
270
  },
321
271
  max(t, other, change) {
322
- if (isNumber(t) && isNumber(other)) return max$3(t, other);
272
+ if (isNumber(t) && isNumber(other)) return max$4(t, other);
323
273
  toTempAB(t, other, change);
324
- return set$2(tempTo, max$3(tempA[0], tempB[0]), max$3(tempA[1], tempB[1]), max$3(tempA[2], tempB[2]), max$3(tempA[3], tempB[3]));
274
+ return set$2(tempTo, max$4(tempA[0], tempB[0]), max$4(tempA[1], tempB[1]), max$4(tempA[2], tempB[2]), max$4(tempA[3], tempB[3]));
325
275
  },
326
276
  add(t, other, change) {
327
277
  if (isNumber(t) && isNumber(other)) return t + other;
@@ -336,7 +286,7 @@ var LeaferUI = function(exports) {
336
286
  }
337
287
  };
338
288
  const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
339
- const {round: round$3, pow: pow$1, max: max$2, floor: floor$1, PI: PI$3} = Math;
289
+ const {round: round$3, pow: pow$1, max: max$3, floor: floor$2, PI: PI$3} = Math;
340
290
  const MathHelper = {
341
291
  within(value, min, max) {
342
292
  if (isObject(min)) max = min.max, min = min.min;
@@ -389,7 +339,7 @@ var LeaferUI = function(exports) {
389
339
  }
390
340
  },
391
341
  getFloorScale(num, min = 1) {
392
- return max$2(floor$1(num), min) / num;
342
+ return max$3(floor$2(num), min) / num;
393
343
  },
394
344
  randInt: randInt,
395
345
  randColor(opacity) {
@@ -1195,7 +1145,7 @@ var LeaferUI = function(exports) {
1195
1145
  const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$2, addPoint: addPoint$2, toBounds: toBounds$2} = TwoPointBoundsHelper;
1196
1146
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1197
1147
  const {float: float, fourNumber: fourNumber} = MathHelper;
1198
- const {floor: floor, ceil: ceil$1} = Math;
1148
+ const {floor: floor$1, ceil: ceil$1} = Math;
1199
1149
  let right$1, bottom$1, boundsRight, boundsBottom;
1200
1150
  const point = {};
1201
1151
  const toPoint$4 = {};
@@ -1347,8 +1297,8 @@ var LeaferUI = function(exports) {
1347
1297
  },
1348
1298
  ceil(t) {
1349
1299
  const {x: x, y: y} = t;
1350
- t.x = floor(t.x);
1351
- t.y = floor(t.y);
1300
+ t.x = floor$1(t.x);
1301
+ t.y = floor$1(t.y);
1352
1302
  t.width = x > t.x ? ceil$1(t.width + x - t.x) : ceil$1(t.width);
1353
1303
  t.height = y > t.y ? ceil$1(t.height + y - t.y) : ceil$1(t.height);
1354
1304
  },
@@ -1480,6 +1430,9 @@ var LeaferUI = function(exports) {
1480
1430
  isEmpty(t) {
1481
1431
  return t.x === 0 && t.y === 0 && t.width === 0 && t.height === 0;
1482
1432
  },
1433
+ hasSize(t) {
1434
+ return t.width && t.height;
1435
+ },
1483
1436
  reset(t) {
1484
1437
  B.set(t);
1485
1438
  }
@@ -1650,6 +1603,11 @@ var LeaferUI = function(exports) {
1650
1603
  return new Bounds(left, top, width ? width : parent.width - left - right, height ? height : parent.height - top - bottom);
1651
1604
  }
1652
1605
  }
1606
+ const UnitConvertHelper = {
1607
+ number(value, percentRefer) {
1608
+ return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
1609
+ }
1610
+ };
1653
1611
  const StringNumberMap = {
1654
1612
  0: 1,
1655
1613
  1: 1,
@@ -1665,6 +1623,66 @@ var LeaferUI = function(exports) {
1665
1623
  e: 1,
1666
1624
  E: 1
1667
1625
  };
1626
+ const {floor: floor, max: max$2} = Math;
1627
+ const Platform = {
1628
+ toURL(text, fileType) {
1629
+ let url = encodeURIComponent(text);
1630
+ if (fileType === "text") url = "data:text/plain;charset=utf-8," + url; else if (fileType === "svg") url = "data:image/svg+xml," + url;
1631
+ return url;
1632
+ },
1633
+ image: {
1634
+ hitCanvasSize: 100,
1635
+ maxCacheSize: 2560 * 1600,
1636
+ maxPatternSize: 4096 * 2160,
1637
+ crossOrigin: "anonymous",
1638
+ isLarge(size, scaleX, scaleY, largeSize) {
1639
+ return size.width * size.height * (scaleX ? scaleX * scaleY : 1) > (largeSize || image$1.maxCacheSize);
1640
+ },
1641
+ isSuperLarge(size, scaleX, scaleY) {
1642
+ return image$1.isLarge(size, scaleX, scaleY, image$1.maxPatternSize);
1643
+ },
1644
+ getRealURL(url) {
1645
+ const {prefix: prefix, suffix: suffix} = image$1;
1646
+ if (suffix && !url.startsWith("data:") && !url.startsWith("blob:")) url += (url.includes("?") ? "&" : "?") + suffix;
1647
+ if (prefix && url[0] === "/") url = prefix + url;
1648
+ return url;
1649
+ },
1650
+ resize(view, width, height, xGap, yGap, clip, smooth, opacity, _filters, interlace) {
1651
+ const realWidth = max$2(floor(width + (xGap || 0)), 1), realHeight = max$2(floor(height + (yGap || 0)), 1);
1652
+ let interlaceX, interlaceY, interlaceOffset;
1653
+ if (interlace && (interlaceOffset = UnitConvertHelper.number(interlace.offset, interlace.type === "x" ? width : height))) interlace.type === "x" ? interlaceX = true : interlaceY = true;
1654
+ const canvas = Platform.origin.createCanvas(interlaceY ? realWidth * 2 : realWidth, interlaceX ? realHeight * 2 : realHeight);
1655
+ const ctx = canvas.getContext("2d");
1656
+ if (opacity) ctx.globalAlpha = opacity;
1657
+ ctx.imageSmoothingEnabled = smooth === false ? false : true;
1658
+ if (image$1.canUse(view)) {
1659
+ if (clip) {
1660
+ const scaleX = width / clip.width, scaleY = height / clip.height;
1661
+ ctx.setTransform(scaleX, 0, 0, scaleY, -clip.x * scaleX, -clip.y * scaleY);
1662
+ ctx.drawImage(view, 0, 0, view.width, view.height);
1663
+ } else ctx.drawImage(view, 0, 0, width, height);
1664
+ if (interlaceOffset) {
1665
+ ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset - realWidth : realWidth, interlaceX ? realHeight : interlaceOffset - realHeight, realWidth, realHeight);
1666
+ ctx.drawImage(canvas, 0, 0, realWidth, realHeight, interlaceX ? interlaceOffset : realWidth, interlaceX ? realHeight : interlaceOffset, realWidth, realHeight);
1667
+ }
1668
+ }
1669
+ return canvas;
1670
+ },
1671
+ canUse(view) {
1672
+ return view && view.width && !view.__closed;
1673
+ },
1674
+ setPatternTransform(pattern, transform, paint) {
1675
+ try {
1676
+ if (transform && pattern.setTransform) {
1677
+ pattern.setTransform(transform);
1678
+ transform = undefined;
1679
+ }
1680
+ } catch (_a) {}
1681
+ if (paint) DataHelper.stintSet(paint, "transform", transform);
1682
+ }
1683
+ }
1684
+ };
1685
+ const {image: image$1} = Platform;
1668
1686
  const {randColor: randColor} = MathHelper;
1669
1687
  class Debug {
1670
1688
  constructor(name) {
@@ -3096,10 +3114,10 @@ var LeaferUI = function(exports) {
3096
3114
  data.push(O$2, x, y, radius, startAngle, endAngle, anticlockwise ? 1 : 0);
3097
3115
  }
3098
3116
  },
3099
- arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
3117
+ arcTo(data, x1, y1, x2, y2, radius, lastX, lastY, fullRadius) {
3100
3118
  if (!isUndefined(lastX)) {
3101
- const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
3102
- radius = min(radius, min(d / 2, d / 2 * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3119
+ const r = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2) / (fullRadius ? 1 : 2);
3120
+ radius = min(radius, min(r, r * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3103
3121
  }
3104
3122
  data.push(U$2, x1, y1, x2, y2, radius);
3105
3123
  },
@@ -3424,7 +3442,7 @@ var LeaferUI = function(exports) {
3424
3442
  let command, lastCommand, commandLen;
3425
3443
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3426
3444
  if (isArray(cornerRadius)) cornerRadius = cornerRadius[0] || 0;
3427
- const len = data.length;
3445
+ const len = data.length, three = len === 9;
3428
3446
  const smooth = [];
3429
3447
  while (i < len) {
3430
3448
  command = data[i];
@@ -3436,7 +3454,7 @@ var LeaferUI = function(exports) {
3436
3454
  if (data[i] === L$1) {
3437
3455
  secondX = data[i + 1];
3438
3456
  secondY = data[i + 2];
3439
- smooth.push(M, getCenterX(startX, secondX), getCenterY(startY, secondY));
3457
+ three ? smooth.push(M, startX, startY) : smooth.push(M, getCenterX(startX, secondX), getCenterY(startY, secondY));
3440
3458
  } else {
3441
3459
  smooth.push(M, startX, startY);
3442
3460
  }
@@ -3448,11 +3466,11 @@ var LeaferUI = function(exports) {
3448
3466
  i += 3;
3449
3467
  switch (data[i]) {
3450
3468
  case L$1:
3451
- arcTo(smooth, x, y, data[i + 1], data[i + 2], cornerRadius, lastX, lastY);
3469
+ arcTo(smooth, x, y, data[i + 1], data[i + 2], cornerRadius, lastX, lastY, three);
3452
3470
  break;
3453
3471
 
3454
3472
  case Z:
3455
- arcTo(smooth, x, y, startX, startY, cornerRadius, lastX, lastY);
3473
+ arcTo(smooth, x, y, startX, startY, cornerRadius, lastX, lastY, three);
3456
3474
  break;
3457
3475
 
3458
3476
  default:
@@ -3464,7 +3482,7 @@ var LeaferUI = function(exports) {
3464
3482
 
3465
3483
  case Z:
3466
3484
  if (lastCommand !== Z) {
3467
- arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3485
+ arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY, three);
3468
3486
  smooth.push(Z);
3469
3487
  }
3470
3488
  i += 1;
@@ -3551,9 +3569,10 @@ var LeaferUI = function(exports) {
3551
3569
  run() {
3552
3570
  return __awaiter(this, void 0, void 0, function*() {
3553
3571
  try {
3554
- if (this.isComplete) return;
3572
+ if (this.isComplete || this.runing) return;
3573
+ this.runing = true;
3555
3574
  if (this.canUse && !this.canUse()) return this.cancel();
3556
- if (this.task && this.parent.running) yield this.task();
3575
+ if (this.task) yield this.task();
3557
3576
  } catch (error) {
3558
3577
  debug$9.error(error);
3559
3578
  }
@@ -3668,7 +3687,7 @@ var LeaferUI = function(exports) {
3668
3687
  stop() {
3669
3688
  this.isComplete = true;
3670
3689
  this.list.forEach(task => {
3671
- if (!task.isComplete) task.cancel();
3690
+ if (!task.isComplete) task.run();
3672
3691
  });
3673
3692
  this.pause();
3674
3693
  this.empty();
@@ -3951,7 +3970,7 @@ var LeaferUI = function(exports) {
3951
3970
  getFull(_filters) {
3952
3971
  return this.view;
3953
3972
  }
3954
- getCanvas(width, height, opacity, filters, xGap, yGap, smooth) {
3973
+ getCanvas(width, height, opacity, filters, xGap, yGap, smooth, interlace) {
3955
3974
  width || (width = this.width);
3956
3975
  height || (height = this.height);
3957
3976
  if (this.cache) {
@@ -3964,7 +3983,7 @@ var LeaferUI = function(exports) {
3964
3983
  }
3965
3984
  if (data) return data;
3966
3985
  }
3967
- const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters);
3986
+ const canvas = Platform.image.resize(this.view, width, height, xGap, yGap, undefined, smooth, opacity, filters, interlace);
3968
3987
  this.cache = this.use > 1 ? {
3969
3988
  data: canvas,
3970
3989
  params: arguments
@@ -5706,7 +5725,7 @@ var LeaferUI = function(exports) {
5706
5725
  if (this.__layout.opacityChanged) this.__layout.opacityChanged = false;
5707
5726
  }
5708
5727
  };
5709
- const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper;
5728
+ const {excludeRenderBounds: excludeRenderBounds$1} = LeafBoundsHelper, {hasSize: hasSize} = BoundsHelper;
5710
5729
  const BranchRender = {
5711
5730
  __updateChange() {
5712
5731
  const {__layout: layout} = this;
@@ -5717,8 +5736,8 @@ var LeaferUI = function(exports) {
5717
5736
  this.__.__checkSingle();
5718
5737
  },
5719
5738
  __render(canvas, options) {
5720
- this.__nowWorld = this.__getNowWorld(options);
5721
- if (this.__worldOpacity) {
5739
+ const nowWorld = this.__nowWorld = this.__getNowWorld(options);
5740
+ if (this.__worldOpacity && hasSize(nowWorld)) {
5722
5741
  const data = this.__;
5723
5742
  if (data.__useDim) {
5724
5743
  if (data.dim) options.dimOpacity = data.dim === true ? .2 : data.dim; else if (data.bright && !options.topRendering) return options.topList.add(this); else if (data.dimskip) options.dimOpacity && (options.dimOpacity = 0);
@@ -5727,7 +5746,6 @@ var LeaferUI = function(exports) {
5727
5746
  if (data.eraser === "path") return this.__renderEraser(canvas, options);
5728
5747
  const tempCanvas = canvas.getSameCanvas(false, true);
5729
5748
  this.__renderBranch(tempCanvas, options);
5730
- const nowWorld = this.__nowWorld;
5731
5749
  canvas.opacity = options.dimOpacity ? data.opacity * options.dimOpacity : data.opacity;
5732
5750
  canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, data.__blendMode, true);
5733
5751
  tempCanvas.recycle(nowWorld);
@@ -6549,7 +6567,7 @@ var LeaferUI = function(exports) {
6549
6567
  this.levelMap = null;
6550
6568
  }
6551
6569
  }
6552
- const version = "1.12.4";
6570
+ const version = "2.0.1";
6553
6571
  const debug$4 = Debug.get("LeaferCanvas");
6554
6572
  class LeaferCanvas extends LeaferCanvasBase {
6555
6573
  set zIndex(zIndex) {
@@ -7146,6 +7164,7 @@ var LeaferUI = function(exports) {
7146
7164
  this.times = 0;
7147
7165
  this.config = {
7148
7166
  usePartRender: true,
7167
+ ceilPartPixel: true,
7149
7168
  maxFPS: 120
7150
7169
  };
7151
7170
  this.frames = [];
@@ -7254,8 +7273,9 @@ var LeaferUI = function(exports) {
7254
7273
  const {canvas: canvas} = this, bounds = block.getIntersect(canvas.bounds), realBounds = new Bounds(bounds);
7255
7274
  canvas.save();
7256
7275
  bounds.spread(Renderer.clipSpread).ceil();
7257
- canvas.clearWorld(bounds);
7258
- canvas.clipWorld(bounds);
7276
+ const {ceilPartPixel: ceilPartPixel} = this.config;
7277
+ canvas.clipWorld(bounds, ceilPartPixel);
7278
+ canvas.clearWorld(bounds, ceilPartPixel);
7259
7279
  this.__render(bounds, realBounds);
7260
7280
  canvas.restore();
7261
7281
  Run.end(t);
@@ -7442,11 +7462,7 @@ var LeaferUI = function(exports) {
7442
7462
  const ColorConvert = {
7443
7463
  hasTransparent: hasTransparent$3
7444
7464
  };
7445
- const UnitConvert = {
7446
- number(value, percentRefer) {
7447
- return isObject(value) ? value.type === "percent" ? value.value * percentRefer : value.value : value;
7448
- }
7449
- };
7465
+ const UnitConvert = UnitConvertHelper;
7450
7466
  const PathArrow = {};
7451
7467
  const Paint = {};
7452
7468
  const PaintImage = {};
@@ -7509,16 +7525,16 @@ var LeaferUI = function(exports) {
7509
7525
  return t.fill || t.stroke;
7510
7526
  }
7511
7527
  get __autoWidth() {
7512
- return !this._width;
7528
+ return this._width == null;
7513
7529
  }
7514
7530
  get __autoHeight() {
7515
- return !this._height;
7531
+ return this._height == null;
7516
7532
  }
7517
7533
  get __autoSide() {
7518
- return !this._width || !this._height;
7534
+ return this._width == null || this._height == null;
7519
7535
  }
7520
7536
  get __autoSize() {
7521
- return !this._width && !this._height;
7537
+ return this._width == null && this._height == null;
7522
7538
  }
7523
7539
  setVisible(value) {
7524
7540
  this._visible = value;
@@ -8664,9 +8680,10 @@ var LeaferUI = function(exports) {
8664
8680
  const {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = this.__;
8665
8681
  const rx = width / 2, ry = height / 2;
8666
8682
  const path = this.__.path = [];
8683
+ let open;
8667
8684
  if (innerRadius) {
8668
8685
  if (startAngle || endAngle) {
8669
- if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
8686
+ if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
8670
8687
  ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
8671
8688
  } else {
8672
8689
  if (innerRadius < 1) {
@@ -8683,7 +8700,7 @@ var LeaferUI = function(exports) {
8683
8700
  ellipse(path, rx, ry, rx, ry);
8684
8701
  }
8685
8702
  }
8686
- closePath$2(path);
8703
+ if (!open) closePath$2(path);
8687
8704
  if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
8688
8705
  }
8689
8706
  };
@@ -9495,7 +9512,7 @@ var LeaferUI = function(exports) {
9495
9512
  if (paint.padding) box = tempBox.set(box).shrink(paint.padding);
9496
9513
  if (paint.mode === "strench") paint.mode = "stretch";
9497
9514
  const {width: width, height: height} = image;
9498
- const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters} = paint;
9515
+ const {opacity: opacity, mode: mode, align: align, offset: offset, scale: scale, size: size, rotation: rotation, skew: skew, clipSize: clipSize, repeat: repeat, gap: gap, filters: filters, interlace: interlace} = paint;
9499
9516
  const sameBox = box.width === width && box.height === height;
9500
9517
  const data = {
9501
9518
  mode: mode
@@ -9561,6 +9578,10 @@ var LeaferUI = function(exports) {
9561
9578
  if (opacity && opacity < 1) data.opacity = opacity;
9562
9579
  if (filters) data.filters = filters;
9563
9580
  if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
9581
+ if (interlace) data.interlace = isNumber(interlace) || interlace.type === "percent" ? {
9582
+ type: "x",
9583
+ offset: interlace
9584
+ } : interlace;
9564
9585
  return data;
9565
9586
  }
9566
9587
  function getGapData(gap, repeat, width, height, box) {
@@ -9681,7 +9702,7 @@ var LeaferUI = function(exports) {
9681
9702
  if (transform) copy$1(imageMatrix, transform);
9682
9703
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
9683
9704
  }
9684
- const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth);
9705
+ const imageCanvas = image.getCanvas(width, height, data.opacity, data.filters, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
9685
9706
  const pattern = image.getPattern(imageCanvas, data.repeat || (Platform.origin.noRepeat || "no-repeat"), imageMatrix, paint);
9686
9707
  paint.style = pattern;
9687
9708
  paint.patternId = id;
@@ -9701,8 +9722,8 @@ var LeaferUI = function(exports) {
9701
9722
  }
9702
9723
  function checkImage(paint, drawImage, ui, canvas, renderOptions) {
9703
9724
  const {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions);
9704
- const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting} = renderOptions;
9705
- if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting) {
9725
+ const {image: image, data: data, originPaint: originPaint} = paint, {exporting: exporting, snapshot: snapshot} = renderOptions;
9726
+ if (!data || paint.patternId === scaleX + "-" + scaleY && !exporting || snapshot) {
9706
9727
  return false;
9707
9728
  } else {
9708
9729
  if (drawImage) {
@@ -10295,7 +10316,7 @@ var LeaferUI = function(exports) {
10295
10316
  const TextMode = 2;
10296
10317
  function layoutChar(drawData, style, width, _height) {
10297
10318
  const {rows: rows} = drawData;
10298
- const {textAlign: textAlign, paraIndent: paraIndent, letterSpacing: letterSpacing} = style;
10319
+ const {textAlign: textAlign, paraIndent: paraIndent, __letterSpacing: __letterSpacing} = style;
10299
10320
  const justifyLast = width && textAlign.includes("both");
10300
10321
  const justify = justifyLast || width && textAlign.includes("justify");
10301
10322
  const justifyLetter = justify && textAlign.includes("letter");
@@ -10308,8 +10329,8 @@ var LeaferUI = function(exports) {
10308
10329
  remainingWidth = width - row.width - indentWidth;
10309
10330
  if (justifyLetter) addLetterWidth = remainingWidth / (row.words.reduce((total, item) => total + item.data.length, 0) - 1); else addWordWidth = wordsLength > 1 ? remainingWidth / (wordsLength - 1) : 0;
10310
10331
  }
10311
- mode = letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
10312
- if (row.isOverflow && !letterSpacing) row.textMode = true;
10332
+ mode = __letterSpacing || row.isOverflow || justifyLetter ? CharMode : addWordWidth ? WordMode : TextMode;
10333
+ if (row.isOverflow && !__letterSpacing) row.textMode = true;
10313
10334
  if (mode === TextMode) {
10314
10335
  row.x += indentWidth;
10315
10336
  toTextChar$1(row);
@@ -10374,7 +10395,7 @@ var LeaferUI = function(exports) {
10374
10395
  let {x: x, y: y, width: width, height: height} = bounds, realHeight = __lineHeight * countRows + (paraSpacing ? paraSpacing * (drawData.paraNumber - 1) : 0);
10375
10396
  let starY = __baseLine;
10376
10397
  if (__clipText && realHeight > height) {
10377
- realHeight = Math.max(height, __lineHeight);
10398
+ realHeight = Math.max(style.__autoHeight ? realHeight : height, __lineHeight);
10378
10399
  if (countRows > 1) drawData.overflow = countRows;
10379
10400
  } else if (height || autoSizeAlign) {
10380
10401
  switch (verticalAlign) {
@@ -10430,10 +10451,10 @@ var LeaferUI = function(exports) {
10430
10451
  bounds.height = realHeight;
10431
10452
  }
10432
10453
  function clipText(drawData, style, x, width) {
10433
- if (!width) return;
10434
10454
  const {rows: rows, overflow: overflow} = drawData;
10435
10455
  let {textOverflow: textOverflow} = style;
10436
- rows.splice(overflow);
10456
+ if (overflow) rows.splice(overflow);
10457
+ if (!width) return;
10437
10458
  if (textOverflow && textOverflow !== "show") {
10438
10459
  if (textOverflow === "hide") textOverflow = ""; else if (textOverflow === "ellipsis") textOverflow = "...";
10439
10460
  let char, charRight;
@@ -10680,6 +10701,7 @@ var LeaferUI = function(exports) {
10680
10701
  exports.UIData = UIData;
10681
10702
  exports.UIRender = UIRender;
10682
10703
  exports.UnitConvert = UnitConvert;
10704
+ exports.UnitConvertHelper = UnitConvertHelper;
10683
10705
  exports.WaitHelper = WaitHelper;
10684
10706
  exports.WatchEvent = WatchEvent;
10685
10707
  exports.Watcher = Watcher;