@wcardinal/wcardinal-ui 0.443.0 → 0.445.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.
Files changed (31) hide show
  1. package/dist/types/wcardinal/ui/util/index.d.ts +1 -0
  2. package/dist/types/wcardinal/ui/util/util-extract.d.ts +13 -2
  3. package/dist/types/wcardinal/ui/util/util-extractor-canvas.d.ts +18 -0
  4. package/dist/types/wcardinal/ui/util/util-extractor.d.ts +3 -2
  5. package/dist/wcardinal/ui/shape/variant/e-shape-base.js +1 -0
  6. package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
  7. package/dist/wcardinal/ui/util/index.js +1 -0
  8. package/dist/wcardinal/ui/util/index.js.map +1 -1
  9. package/dist/wcardinal/ui/util/util-extract.js +34 -10
  10. package/dist/wcardinal/ui/util/util-extract.js.map +1 -1
  11. package/dist/wcardinal/ui/util/util-extractor-canvas.js +110 -0
  12. package/dist/wcardinal/ui/util/util-extractor-canvas.js.map +1 -0
  13. package/dist/wcardinal/ui/util/util-extractor.js +45 -20
  14. package/dist/wcardinal/ui/util/util-extractor.js.map +1 -1
  15. package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
  16. package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
  17. package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
  18. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
  19. package/dist/wcardinal-ui-theme-dark.js +1 -1
  20. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  21. package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
  22. package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
  23. package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
  24. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
  25. package/dist/wcardinal-ui-theme-white.js +1 -1
  26. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  27. package/dist/wcardinal-ui.cjs.js +188 -30
  28. package/dist/wcardinal-ui.js +188 -30
  29. package/dist/wcardinal-ui.min.js +2 -2
  30. package/dist/wcardinal-ui.min.js.map +1 -1
  31. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.445.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -5442,6 +5442,7 @@ var EShapeBase = /** @class */ (function (_super) {
5442
5442
  if (part & EShapeCopyPart.ACTION) {
5443
5443
  this.action.clearAndAddAll(source.action.values);
5444
5444
  this.interactive = source.interactive;
5445
+ this.title = source.title;
5445
5446
  this.cursor = source.cursor;
5446
5447
  this.shortcut = source.shortcut;
5447
5448
  }
@@ -23628,6 +23629,115 @@ var DCanvasContainer = /** @class */ (function (_super) {
23628
23629
  return DCanvasContainer;
23629
23630
  }(DBase));
23630
23631
 
23632
+ var UtilExtractorCanvas = /** @class */ (function () {
23633
+ function UtilExtractorCanvas(width, height) {
23634
+ var element = document.createElement("canvas");
23635
+ this._element = element;
23636
+ var context = this._element.getContext("2d", {
23637
+ willReadFrequently: true
23638
+ });
23639
+ this._context = context;
23640
+ element.width = width;
23641
+ element.height = height;
23642
+ }
23643
+ Object.defineProperty(UtilExtractorCanvas.prototype, "element", {
23644
+ get: function () {
23645
+ var result = this._element;
23646
+ if (result != null) {
23647
+ return result;
23648
+ }
23649
+ throw new Error("No Element Available");
23650
+ },
23651
+ enumerable: false,
23652
+ configurable: true
23653
+ });
23654
+ UtilExtractorCanvas.prototype.getElement = function () {
23655
+ return this._element;
23656
+ };
23657
+ Object.defineProperty(UtilExtractorCanvas.prototype, "canvas", {
23658
+ get: function () {
23659
+ return this.element;
23660
+ },
23661
+ enumerable: false,
23662
+ configurable: true
23663
+ });
23664
+ Object.defineProperty(UtilExtractorCanvas.prototype, "context", {
23665
+ get: function () {
23666
+ var result = this._context;
23667
+ if (result != null) {
23668
+ return result;
23669
+ }
23670
+ throw new Error("No Context Available");
23671
+ },
23672
+ enumerable: false,
23673
+ configurable: true
23674
+ });
23675
+ UtilExtractorCanvas.prototype.getContext = function () {
23676
+ return this._context;
23677
+ };
23678
+ Object.defineProperty(UtilExtractorCanvas.prototype, "resolution", {
23679
+ get: function () {
23680
+ return 1;
23681
+ },
23682
+ enumerable: false,
23683
+ configurable: true
23684
+ });
23685
+ Object.defineProperty(UtilExtractorCanvas.prototype, "width", {
23686
+ get: function () {
23687
+ var element = this._element;
23688
+ if (element != null) {
23689
+ return element.width;
23690
+ }
23691
+ return 0;
23692
+ },
23693
+ set: function (width) {
23694
+ var element = this._element;
23695
+ if (element != null) {
23696
+ element.width = width;
23697
+ }
23698
+ },
23699
+ enumerable: false,
23700
+ configurable: true
23701
+ });
23702
+ Object.defineProperty(UtilExtractorCanvas.prototype, "height", {
23703
+ get: function () {
23704
+ var element = this._element;
23705
+ if (element != null) {
23706
+ return element.height;
23707
+ }
23708
+ return 0;
23709
+ },
23710
+ set: function (height) {
23711
+ var element = this._element;
23712
+ if (element != null) {
23713
+ element.height = height;
23714
+ }
23715
+ },
23716
+ enumerable: false,
23717
+ configurable: true
23718
+ });
23719
+ UtilExtractorCanvas.prototype.clear = function () {
23720
+ var element = this._element;
23721
+ var context = this._context;
23722
+ if (element != null && context != null) {
23723
+ context.setTransform(1, 0, 0, 1, 0, 0);
23724
+ context.clearRect(0, 0, element.width, element.height);
23725
+ }
23726
+ };
23727
+ UtilExtractorCanvas.prototype.resize = function (width, height) {
23728
+ var element = this._element;
23729
+ if (element != null) {
23730
+ element.width = width;
23731
+ element.height = height;
23732
+ }
23733
+ };
23734
+ UtilExtractorCanvas.prototype.destroy = function () {
23735
+ this._context = null;
23736
+ this._element = null;
23737
+ };
23738
+ return UtilExtractorCanvas;
23739
+ }());
23740
+
23631
23741
  /*
23632
23742
  * Copyright (C) 2019 Toshiba Corporation
23633
23743
  * SPDX-License-Identifier: Apache-2.0
@@ -23637,9 +23747,11 @@ var UtilExtractor = /** @class */ (function () {
23637
23747
  }
23638
23748
  UtilExtractor.toTexture = function (target, resolution, clear, skipUpdateTransform) {
23639
23749
  var scale = target.transform.scale;
23750
+ var width = Math.max(1, Math.ceil(target.width * scale.x));
23751
+ var height = Math.max(1, Math.ceil(target.height * scale.y));
23640
23752
  var result = pixi_js.RenderTexture.create({
23641
- width: target.width * scale.x,
23642
- height: target.height * scale.y,
23753
+ width: width,
23754
+ height: height,
23643
23755
  scaleMode: pixi_js.SCALE_MODES.LINEAR,
23644
23756
  resolution: resolution
23645
23757
  });
@@ -23651,46 +23763,68 @@ var UtilExtractor = /** @class */ (function () {
23651
23763
  return result;
23652
23764
  };
23653
23765
  UtilExtractor.toPixels = function (renderTexture, renderer) {
23766
+ var baseTexture = renderTexture.baseTexture;
23767
+ var realWidth = baseTexture.realWidth;
23768
+ var realHeight = baseTexture.realHeight;
23654
23769
  var resolution = renderTexture.resolution;
23655
23770
  var frame = renderTexture.frame;
23656
- var width = Math.floor(frame.width * resolution);
23657
- var height = Math.floor(frame.height * resolution);
23771
+ var x0 = Math.floor(frame.x * resolution);
23772
+ var y0 = Math.floor(frame.y * resolution);
23773
+ var x1 = Math.floor((frame.x + frame.width) * resolution);
23774
+ var y1 = Math.floor((frame.y + frame.height) * resolution);
23775
+ var width = Math.min(x1 - x0, realWidth);
23776
+ var height = Math.min(y1 - y0, realHeight);
23658
23777
  var pixels = new Uint8Array(4 * width * height);
23659
- var oldRenderTexture = renderer.renderTexture.current;
23660
- renderer.renderTexture.bind(renderTexture);
23661
- var gl = renderer.gl;
23662
- gl.readPixels(frame.x * resolution, frame.y * resolution, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
23663
- renderer.renderTexture.bind(oldRenderTexture);
23778
+ if (0 < width && 0 < height) {
23779
+ var oldRenderTexture = renderer.renderTexture.current;
23780
+ renderer.renderTexture.bind(renderTexture);
23781
+ var gl = renderer.gl;
23782
+ gl.readPixels(x0, y0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
23783
+ renderer.renderTexture.bind(oldRenderTexture);
23784
+ }
23664
23785
  return {
23665
23786
  width: width,
23666
23787
  height: height,
23667
23788
  array: pixels
23668
23789
  };
23669
23790
  };
23670
- UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha) {
23791
+ UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha, result) {
23671
23792
  var width = pixels.width;
23672
23793
  var height = pixels.height;
23673
23794
  var array = pixels.array;
23674
- var canvasRenderTarget = new pixi_js.utils.CanvasRenderTarget(width, height, 1);
23675
- var imageData = canvasRenderTarget.context.getImageData(0, 0, width, height);
23795
+ if (result == null) {
23796
+ result = new UtilExtractorCanvas(width, height);
23797
+ }
23798
+ else {
23799
+ result.resize(width, height);
23800
+ }
23801
+ if (width <= 0 || height <= 0) {
23802
+ return result;
23803
+ }
23804
+ var context = result.getContext();
23805
+ var element = result.getElement();
23806
+ if (context == null || element == null) {
23807
+ return result;
23808
+ }
23809
+ var imageData = context.getImageData(0, 0, width, height);
23676
23810
  if (ignorePremutipliedAlpha) {
23677
23811
  imageData.data.set(array);
23678
23812
  }
23679
23813
  else {
23680
23814
  pixi_js.Extract.arrayPostDivide(array, imageData.data);
23681
23815
  }
23682
- canvasRenderTarget.context.putImageData(imageData, 0, 0);
23816
+ context.putImageData(imageData, 0, 0);
23683
23817
  // Scale down
23684
23818
  if (scale != null && scale !== 1) {
23685
- canvasRenderTarget.context.scale(scale, scale);
23686
- canvasRenderTarget.context.drawImage(canvasRenderTarget.canvas, 0, 0);
23819
+ context.scale(scale, scale);
23820
+ context.drawImage(element, 0, 0);
23687
23821
  var scaledWidth = Math.floor(width * scale);
23688
23822
  var scaledHeight = Math.floor(height * scale);
23689
- var scaledImageData = canvasRenderTarget.context.getImageData(0, 0, scaledWidth, scaledHeight);
23690
- canvasRenderTarget.resize(scaledWidth, scaledHeight);
23691
- canvasRenderTarget.context.putImageData(scaledImageData, 0, 0);
23823
+ var scaledImageData = context.getImageData(0, 0, scaledWidth, scaledHeight);
23824
+ result.resize(scaledWidth, scaledHeight);
23825
+ context.putImageData(scaledImageData, 0, 0);
23692
23826
  }
23693
- return canvasRenderTarget;
23827
+ return result;
23694
23828
  };
23695
23829
  UtilExtractor.toBase64 = function (canvas, format, quality) {
23696
23830
  return canvas.toDataURL(format, quality);
@@ -23825,8 +23959,15 @@ var UtilExtract = /** @class */ (function () {
23825
23959
  // Create a render texture
23826
23960
  var target = options.target;
23827
23961
  var scale = target.transform.scale;
23828
- var width = Math.floor(target.width * scale.x);
23829
- var height = Math.floor(target.height * scale.y);
23962
+ var width = Math.ceil(target.width * scale.x);
23963
+ var height = Math.ceil(target.height * scale.y);
23964
+ if (width <= 0 || height <= 0) {
23965
+ return {
23966
+ width: width,
23967
+ height: height,
23968
+ array: new Uint8Array(0)
23969
+ };
23970
+ }
23830
23971
  var resolution = toResolution(options);
23831
23972
  var renderTexture = UtilExtract.WORK_RENDER_TEXTURE;
23832
23973
  if (renderTexture == null) {
@@ -23874,16 +24015,27 @@ var UtilExtract = /** @class */ (function () {
23874
24015
  var scale = toScale(pixels, options);
23875
24016
  return UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha);
23876
24017
  };
24018
+ /**
24019
+ * Extracts Base64 data URL from the target.
24020
+ * This method internally creates a render texture and a canvas render target.
24021
+ * They are used to extract pixels from the target.
24022
+ * To free the allocated render texture and canvas render target, please call {@link destroy()}.
24023
+ *
24024
+ * @param options an extraction options
24025
+ * @returns extracted Base64 data URL
24026
+ */
23877
24027
  UtilExtract.base64 = function (options) {
23878
- var canvas = this.canvas(options);
23879
- try {
23880
- return UtilExtractor.toBase64(canvas.canvas, options.format, options.quality);
23881
- }
23882
- finally {
23883
- if (canvas) {
23884
- canvas.destroy();
23885
- }
24028
+ var _a, _b, _c;
24029
+ var pixels = this.pixels(options);
24030
+ var ignorePremutipliedAlpha = (_b = (_a = options.alpha) === null || _a === void 0 ? void 0 : _a.premultiplied) === null || _b === void 0 ? void 0 : _b.ignore;
24031
+ var scale = toScale(pixels, options);
24032
+ var canvas = ((_c = this.WORK_CANVAS) !== null && _c !== void 0 ? _c : (this.WORK_CANVAS = new UtilExtractorCanvas(pixels.width, pixels.height)));
24033
+ UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha, canvas);
24034
+ var element = canvas.getElement();
24035
+ if (element != null) {
24036
+ return UtilExtractor.toBase64(element, options.format, options.quality);
23886
24037
  }
24038
+ return "data:,";
23887
24039
  };
23888
24040
  UtilExtract.file = function (options) {
23889
24041
  UtilFileDownloader.downloadUrl(options.filename, this.base64(options));
@@ -23897,6 +24049,11 @@ var UtilExtract = /** @class */ (function () {
23897
24049
  this.WORK_RENDER_TEXTURE = undefined;
23898
24050
  texture.destroy(true);
23899
24051
  }
24052
+ var canvas = this.WORK_CANVAS;
24053
+ if (canvas != null) {
24054
+ this.WORK_CANVAS = undefined;
24055
+ canvas.destroy();
24056
+ }
23900
24057
  };
23901
24058
  return UtilExtract;
23902
24059
  }());
@@ -102997,6 +103154,7 @@ exports.UtilClickOutside = UtilClickOutside;
102997
103154
  exports.UtilClipboard = UtilClipboard;
102998
103155
  exports.UtilExtract = UtilExtract;
102999
103156
  exports.UtilExtractor = UtilExtractor;
103157
+ exports.UtilExtractorCanvas = UtilExtractorCanvas;
103000
103158
  exports.UtilFileAs = UtilFileAs;
103001
103159
  exports.UtilFileDownloader = UtilFileDownloader;
103002
103160
  exports.UtilFileOpener = UtilFileOpener;
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.445.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -5439,6 +5439,7 @@
5439
5439
  if (part & EShapeCopyPart.ACTION) {
5440
5440
  this.action.clearAndAddAll(source.action.values);
5441
5441
  this.interactive = source.interactive;
5442
+ this.title = source.title;
5442
5443
  this.cursor = source.cursor;
5443
5444
  this.shortcut = source.shortcut;
5444
5445
  }
@@ -23625,6 +23626,115 @@
23625
23626
  return DCanvasContainer;
23626
23627
  }(DBase));
23627
23628
 
23629
+ var UtilExtractorCanvas = /** @class */ (function () {
23630
+ function UtilExtractorCanvas(width, height) {
23631
+ var element = document.createElement("canvas");
23632
+ this._element = element;
23633
+ var context = this._element.getContext("2d", {
23634
+ willReadFrequently: true
23635
+ });
23636
+ this._context = context;
23637
+ element.width = width;
23638
+ element.height = height;
23639
+ }
23640
+ Object.defineProperty(UtilExtractorCanvas.prototype, "element", {
23641
+ get: function () {
23642
+ var result = this._element;
23643
+ if (result != null) {
23644
+ return result;
23645
+ }
23646
+ throw new Error("No Element Available");
23647
+ },
23648
+ enumerable: false,
23649
+ configurable: true
23650
+ });
23651
+ UtilExtractorCanvas.prototype.getElement = function () {
23652
+ return this._element;
23653
+ };
23654
+ Object.defineProperty(UtilExtractorCanvas.prototype, "canvas", {
23655
+ get: function () {
23656
+ return this.element;
23657
+ },
23658
+ enumerable: false,
23659
+ configurable: true
23660
+ });
23661
+ Object.defineProperty(UtilExtractorCanvas.prototype, "context", {
23662
+ get: function () {
23663
+ var result = this._context;
23664
+ if (result != null) {
23665
+ return result;
23666
+ }
23667
+ throw new Error("No Context Available");
23668
+ },
23669
+ enumerable: false,
23670
+ configurable: true
23671
+ });
23672
+ UtilExtractorCanvas.prototype.getContext = function () {
23673
+ return this._context;
23674
+ };
23675
+ Object.defineProperty(UtilExtractorCanvas.prototype, "resolution", {
23676
+ get: function () {
23677
+ return 1;
23678
+ },
23679
+ enumerable: false,
23680
+ configurable: true
23681
+ });
23682
+ Object.defineProperty(UtilExtractorCanvas.prototype, "width", {
23683
+ get: function () {
23684
+ var element = this._element;
23685
+ if (element != null) {
23686
+ return element.width;
23687
+ }
23688
+ return 0;
23689
+ },
23690
+ set: function (width) {
23691
+ var element = this._element;
23692
+ if (element != null) {
23693
+ element.width = width;
23694
+ }
23695
+ },
23696
+ enumerable: false,
23697
+ configurable: true
23698
+ });
23699
+ Object.defineProperty(UtilExtractorCanvas.prototype, "height", {
23700
+ get: function () {
23701
+ var element = this._element;
23702
+ if (element != null) {
23703
+ return element.height;
23704
+ }
23705
+ return 0;
23706
+ },
23707
+ set: function (height) {
23708
+ var element = this._element;
23709
+ if (element != null) {
23710
+ element.height = height;
23711
+ }
23712
+ },
23713
+ enumerable: false,
23714
+ configurable: true
23715
+ });
23716
+ UtilExtractorCanvas.prototype.clear = function () {
23717
+ var element = this._element;
23718
+ var context = this._context;
23719
+ if (element != null && context != null) {
23720
+ context.setTransform(1, 0, 0, 1, 0, 0);
23721
+ context.clearRect(0, 0, element.width, element.height);
23722
+ }
23723
+ };
23724
+ UtilExtractorCanvas.prototype.resize = function (width, height) {
23725
+ var element = this._element;
23726
+ if (element != null) {
23727
+ element.width = width;
23728
+ element.height = height;
23729
+ }
23730
+ };
23731
+ UtilExtractorCanvas.prototype.destroy = function () {
23732
+ this._context = null;
23733
+ this._element = null;
23734
+ };
23735
+ return UtilExtractorCanvas;
23736
+ }());
23737
+
23628
23738
  /*
23629
23739
  * Copyright (C) 2019 Toshiba Corporation
23630
23740
  * SPDX-License-Identifier: Apache-2.0
@@ -23634,9 +23744,11 @@
23634
23744
  }
23635
23745
  UtilExtractor.toTexture = function (target, resolution, clear, skipUpdateTransform) {
23636
23746
  var scale = target.transform.scale;
23747
+ var width = Math.max(1, Math.ceil(target.width * scale.x));
23748
+ var height = Math.max(1, Math.ceil(target.height * scale.y));
23637
23749
  var result = pixi_js.RenderTexture.create({
23638
- width: target.width * scale.x,
23639
- height: target.height * scale.y,
23750
+ width: width,
23751
+ height: height,
23640
23752
  scaleMode: pixi_js.SCALE_MODES.LINEAR,
23641
23753
  resolution: resolution
23642
23754
  });
@@ -23648,46 +23760,68 @@
23648
23760
  return result;
23649
23761
  };
23650
23762
  UtilExtractor.toPixels = function (renderTexture, renderer) {
23763
+ var baseTexture = renderTexture.baseTexture;
23764
+ var realWidth = baseTexture.realWidth;
23765
+ var realHeight = baseTexture.realHeight;
23651
23766
  var resolution = renderTexture.resolution;
23652
23767
  var frame = renderTexture.frame;
23653
- var width = Math.floor(frame.width * resolution);
23654
- var height = Math.floor(frame.height * resolution);
23768
+ var x0 = Math.floor(frame.x * resolution);
23769
+ var y0 = Math.floor(frame.y * resolution);
23770
+ var x1 = Math.floor((frame.x + frame.width) * resolution);
23771
+ var y1 = Math.floor((frame.y + frame.height) * resolution);
23772
+ var width = Math.min(x1 - x0, realWidth);
23773
+ var height = Math.min(y1 - y0, realHeight);
23655
23774
  var pixels = new Uint8Array(4 * width * height);
23656
- var oldRenderTexture = renderer.renderTexture.current;
23657
- renderer.renderTexture.bind(renderTexture);
23658
- var gl = renderer.gl;
23659
- gl.readPixels(frame.x * resolution, frame.y * resolution, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
23660
- renderer.renderTexture.bind(oldRenderTexture);
23775
+ if (0 < width && 0 < height) {
23776
+ var oldRenderTexture = renderer.renderTexture.current;
23777
+ renderer.renderTexture.bind(renderTexture);
23778
+ var gl = renderer.gl;
23779
+ gl.readPixels(x0, y0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
23780
+ renderer.renderTexture.bind(oldRenderTexture);
23781
+ }
23661
23782
  return {
23662
23783
  width: width,
23663
23784
  height: height,
23664
23785
  array: pixels
23665
23786
  };
23666
23787
  };
23667
- UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha) {
23788
+ UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha, result) {
23668
23789
  var width = pixels.width;
23669
23790
  var height = pixels.height;
23670
23791
  var array = pixels.array;
23671
- var canvasRenderTarget = new pixi_js.utils.CanvasRenderTarget(width, height, 1);
23672
- var imageData = canvasRenderTarget.context.getImageData(0, 0, width, height);
23792
+ if (result == null) {
23793
+ result = new UtilExtractorCanvas(width, height);
23794
+ }
23795
+ else {
23796
+ result.resize(width, height);
23797
+ }
23798
+ if (width <= 0 || height <= 0) {
23799
+ return result;
23800
+ }
23801
+ var context = result.getContext();
23802
+ var element = result.getElement();
23803
+ if (context == null || element == null) {
23804
+ return result;
23805
+ }
23806
+ var imageData = context.getImageData(0, 0, width, height);
23673
23807
  if (ignorePremutipliedAlpha) {
23674
23808
  imageData.data.set(array);
23675
23809
  }
23676
23810
  else {
23677
23811
  pixi_js.Extract.arrayPostDivide(array, imageData.data);
23678
23812
  }
23679
- canvasRenderTarget.context.putImageData(imageData, 0, 0);
23813
+ context.putImageData(imageData, 0, 0);
23680
23814
  // Scale down
23681
23815
  if (scale != null && scale !== 1) {
23682
- canvasRenderTarget.context.scale(scale, scale);
23683
- canvasRenderTarget.context.drawImage(canvasRenderTarget.canvas, 0, 0);
23816
+ context.scale(scale, scale);
23817
+ context.drawImage(element, 0, 0);
23684
23818
  var scaledWidth = Math.floor(width * scale);
23685
23819
  var scaledHeight = Math.floor(height * scale);
23686
- var scaledImageData = canvasRenderTarget.context.getImageData(0, 0, scaledWidth, scaledHeight);
23687
- canvasRenderTarget.resize(scaledWidth, scaledHeight);
23688
- canvasRenderTarget.context.putImageData(scaledImageData, 0, 0);
23820
+ var scaledImageData = context.getImageData(0, 0, scaledWidth, scaledHeight);
23821
+ result.resize(scaledWidth, scaledHeight);
23822
+ context.putImageData(scaledImageData, 0, 0);
23689
23823
  }
23690
- return canvasRenderTarget;
23824
+ return result;
23691
23825
  };
23692
23826
  UtilExtractor.toBase64 = function (canvas, format, quality) {
23693
23827
  return canvas.toDataURL(format, quality);
@@ -23822,8 +23956,15 @@
23822
23956
  // Create a render texture
23823
23957
  var target = options.target;
23824
23958
  var scale = target.transform.scale;
23825
- var width = Math.floor(target.width * scale.x);
23826
- var height = Math.floor(target.height * scale.y);
23959
+ var width = Math.ceil(target.width * scale.x);
23960
+ var height = Math.ceil(target.height * scale.y);
23961
+ if (width <= 0 || height <= 0) {
23962
+ return {
23963
+ width: width,
23964
+ height: height,
23965
+ array: new Uint8Array(0)
23966
+ };
23967
+ }
23827
23968
  var resolution = toResolution(options);
23828
23969
  var renderTexture = UtilExtract.WORK_RENDER_TEXTURE;
23829
23970
  if (renderTexture == null) {
@@ -23871,16 +24012,27 @@
23871
24012
  var scale = toScale(pixels, options);
23872
24013
  return UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha);
23873
24014
  };
24015
+ /**
24016
+ * Extracts Base64 data URL from the target.
24017
+ * This method internally creates a render texture and a canvas render target.
24018
+ * They are used to extract pixels from the target.
24019
+ * To free the allocated render texture and canvas render target, please call {@link destroy()}.
24020
+ *
24021
+ * @param options an extraction options
24022
+ * @returns extracted Base64 data URL
24023
+ */
23874
24024
  UtilExtract.base64 = function (options) {
23875
- var canvas = this.canvas(options);
23876
- try {
23877
- return UtilExtractor.toBase64(canvas.canvas, options.format, options.quality);
23878
- }
23879
- finally {
23880
- if (canvas) {
23881
- canvas.destroy();
23882
- }
24025
+ var _a, _b, _c;
24026
+ var pixels = this.pixels(options);
24027
+ var ignorePremutipliedAlpha = (_b = (_a = options.alpha) === null || _a === void 0 ? void 0 : _a.premultiplied) === null || _b === void 0 ? void 0 : _b.ignore;
24028
+ var scale = toScale(pixels, options);
24029
+ var canvas = ((_c = this.WORK_CANVAS) !== null && _c !== void 0 ? _c : (this.WORK_CANVAS = new UtilExtractorCanvas(pixels.width, pixels.height)));
24030
+ UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha, canvas);
24031
+ var element = canvas.getElement();
24032
+ if (element != null) {
24033
+ return UtilExtractor.toBase64(element, options.format, options.quality);
23883
24034
  }
24035
+ return "data:,";
23884
24036
  };
23885
24037
  UtilExtract.file = function (options) {
23886
24038
  UtilFileDownloader.downloadUrl(options.filename, this.base64(options));
@@ -23894,6 +24046,11 @@
23894
24046
  this.WORK_RENDER_TEXTURE = undefined;
23895
24047
  texture.destroy(true);
23896
24048
  }
24049
+ var canvas = this.WORK_CANVAS;
24050
+ if (canvas != null) {
24051
+ this.WORK_CANVAS = undefined;
24052
+ canvas.destroy();
24053
+ }
23897
24054
  };
23898
24055
  return UtilExtract;
23899
24056
  }());
@@ -80954,6 +81111,7 @@
80954
81111
  UtilGestureTap: UtilGestureTap,
80955
81112
  UtilGesture: UtilGesture,
80956
81113
  UtilExtract: UtilExtract,
81114
+ UtilExtractorCanvas: UtilExtractorCanvas,
80957
81115
  UtilExtractor: UtilExtractor,
80958
81116
  UtilFileDownloader: UtilFileDownloader,
80959
81117
  UtilFileAs: UtilFileAs,