@wcardinal/wcardinal-ui 0.443.0 → 0.444.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 (29) 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/util/index.js +1 -0
  6. package/dist/wcardinal/ui/util/index.js.map +1 -1
  7. package/dist/wcardinal/ui/util/util-extract.js +34 -10
  8. package/dist/wcardinal/ui/util/util-extract.js.map +1 -1
  9. package/dist/wcardinal/ui/util/util-extractor-canvas.js +110 -0
  10. package/dist/wcardinal/ui/util/util-extractor-canvas.js.map +1 -0
  11. package/dist/wcardinal/ui/util/util-extractor.js +45 -20
  12. package/dist/wcardinal/ui/util/util-extractor.js.map +1 -1
  13. package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
  14. package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
  15. package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
  16. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
  17. package/dist/wcardinal-ui-theme-dark.js +1 -1
  18. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  19. package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
  20. package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
  21. package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
  22. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
  23. package/dist/wcardinal-ui-theme-white.js +1 -1
  24. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  25. package/dist/wcardinal-ui.cjs.js +187 -30
  26. package/dist/wcardinal-ui.js +187 -30
  27. package/dist/wcardinal-ui.min.js +2 -2
  28. package/dist/wcardinal-ui.min.js.map +1 -1
  29. package/package.json +1 -1
@@ -57,6 +57,7 @@ export * from "./util-gesture-tap";
57
57
  export * from "./util-gesture-target";
58
58
  export * from "./util-gesture";
59
59
  export * from "./util-extract";
60
+ export * from "./util-extractor-canvas";
60
61
  export * from "./util-extractor-pixels";
61
62
  export * from "./util-extractor";
62
63
  export * from "./util-file-downloader";
@@ -1,8 +1,9 @@
1
- import { Renderer, RenderTexture, utils } from "pixi.js";
1
+ import { Renderer, RenderTexture } from "pixi.js";
2
2
  import { DApplicationLayerLike } from "../d-application-layer-like";
3
3
  import { DApplicationLike } from "../d-application-like";
4
4
  import { DBase } from "../d-base";
5
5
  import { UtilExtractorPixels } from "./util-extractor-pixels";
6
+ import { UtilExtractorCanvas } from "./util-extractor-canvas";
6
7
  export interface UtilExtractTextureResolutionOptions {
7
8
  size: number;
8
9
  }
@@ -41,6 +42,7 @@ export interface UtilExtractFileOptions extends UtilExtractBase64Options {
41
42
  }
42
43
  export declare class UtilExtract {
43
44
  protected static WORK_RENDER_TEXTURE?: RenderTexture;
45
+ protected static WORK_CANVAS?: UtilExtractorCanvas;
44
46
  static texture(options: UtilExtractTextureOptions): RenderTexture;
45
47
  /**
46
48
  * Extracts pixels from the target.
@@ -51,7 +53,16 @@ export declare class UtilExtract {
51
53
  * @returns extracted pixels
52
54
  */
53
55
  static pixels(options: UtilExtractPixelsOptions): UtilExtractorPixels;
54
- static canvas(options: UtilExtractCanvasOptions): utils.CanvasRenderTarget;
56
+ static canvas(options: UtilExtractCanvasOptions): UtilExtractorCanvas;
57
+ /**
58
+ * Extracts Base64 data URL from the target.
59
+ * This method internally creates a render texture and a canvas render target.
60
+ * They are used to extract pixels from the target.
61
+ * To free the allocated render texture and canvas render target, please call {@link destroy()}.
62
+ *
63
+ * @param options an extraction options
64
+ * @returns extracted Base64 data URL
65
+ */
55
66
  static base64(options: UtilExtractBase64Options): string;
56
67
  static file(options: UtilExtractFileOptions): void;
57
68
  /**
@@ -0,0 +1,18 @@
1
+ export declare class UtilExtractorCanvas {
2
+ protected _element: HTMLCanvasElement | null;
3
+ protected _context: CanvasRenderingContext2D | null;
4
+ constructor(width: number, height: number);
5
+ get element(): HTMLCanvasElement;
6
+ getElement(): HTMLCanvasElement | null;
7
+ get canvas(): HTMLCanvasElement;
8
+ get context(): CanvasRenderingContext2D;
9
+ getContext(): CanvasRenderingContext2D | null;
10
+ get resolution(): number;
11
+ get width(): number;
12
+ set width(width: number);
13
+ get height(): number;
14
+ set height(height: number);
15
+ clear(): void;
16
+ resize(width: number, height: number): void;
17
+ destroy(): void;
18
+ }
@@ -1,9 +1,10 @@
1
- import { Renderer, RenderTexture, utils } from "pixi.js";
1
+ import { Renderer, RenderTexture } from "pixi.js";
2
2
  import { DBase } from "../d-base";
3
3
  import { UtilExtractorPixels } from "./util-extractor-pixels";
4
+ import { UtilExtractorCanvas } from "./util-extractor-canvas";
4
5
  export declare class UtilExtractor {
5
6
  static toTexture(target: DBase, resolution?: number, clear?: boolean, skipUpdateTransform?: boolean): RenderTexture;
6
7
  static toPixels(renderTexture: RenderTexture, renderer: Renderer): UtilExtractorPixels;
7
- static toCanvas(pixels: UtilExtractorPixels, scale?: number, ignorePremutipliedAlpha?: boolean): utils.CanvasRenderTarget;
8
+ static toCanvas(pixels: UtilExtractorPixels, scale?: number, ignorePremutipliedAlpha?: boolean, result?: UtilExtractorCanvas): UtilExtractorCanvas;
8
9
  static toBase64(canvas: HTMLCanvasElement, format?: string, quality?: number): string;
9
10
  }
@@ -61,6 +61,7 @@ export * from "./util-gesture-tap";
61
61
  export * from "./util-gesture-target";
62
62
  export * from "./util-gesture";
63
63
  export * from "./util-extract";
64
+ export * from "./util-extractor-canvas";
64
65
  export * from "./util-extractor-pixels";
65
66
  export * from "./util-extractor";
66
67
  export * from "./util-file-downloader";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./format-node\";\nexport * from \"./character\";\nexport * from \"./deep-partial\";\nexport * from \"./dynamic-atlas-item-empty\";\nexport * from \"./dynamic-atlas-item-font-atlas\";\nexport * from \"./dynamic-atlas-item-image\";\nexport * from \"./dynamic-atlas-item-text\";\nexport * from \"./dynamic-atlas-item-white\";\nexport * from \"./dynamic-atlas-item\";\nexport * from \"./dynamic-atlas\";\nexport * from \"./dynamic-font-atlas-chaaracter-origin\";\nexport * from \"./dynamic-font-atlas-character-type\";\nexport * from \"./dynamic-font-atlas-character\";\nexport * from \"./dynamic-font-atlas-characters\";\nexport * from \"./dynamic-font-atlas-font\";\nexport * from \"./dynamic-font-atlas\";\nexport * from \"./dynamic-font-atlases\";\nexport * from \"./dynamic-sdf-font-atlas-font\";\nexport * from \"./dynamic-sdf-font-atlas\";\nexport * from \"./dynamic-sdf-font-atlases\";\nexport * from \"./dynamic-sdf-font-generator\";\nexport * from \"./is-array\";\nexport * from \"./is-function\";\nexport * from \"./is-nan\";\nexport * from \"./is-number\";\nexport * from \"./is-object\";\nexport * from \"./is-string\";\nexport * from \"./lazy\";\nexport * from \"./number-formatter-function\";\nexport * from \"./number-formatter-impl\";\nexport * from \"./number-formatter\";\nexport * from \"./number-formatters\";\nexport * from \"./to-ceiling-index\";\nexport * from \"./to-cloned\";\nexport * from \"./to-enum\";\nexport * from \"./to-id\";\nexport * from \"./to-index-of\";\nexport * from \"./to-label\";\nexport * from \"./to-merged\";\nexport * from \"./to-padded\";\nexport * from \"./to-string\";\nexport * from \"./to-svg-texture\";\nexport * from \"./to-svg-url\";\nexport * from \"./util-alpha\";\nexport * from \"./util-svg-atlas-builder\";\nexport * from \"./util-attach\";\nexport * from \"./util-character-iterator\";\nexport * from \"./util-click-outside\";\nexport * from \"./util-clipboard\";\nexport * from \"./util-gesture-data\";\nexport * from \"./util-gesture-easing-history\";\nexport * from \"./util-gesture-easing\";\nexport * from \"./util-gesture-mode\";\nexport * from \"./util-gesture-modifier\";\nexport * from \"./util-gesture-modifiers\";\nexport * from \"./util-gesture-tap\";\nexport * from \"./util-gesture-target\";\nexport * from \"./util-gesture\";\nexport * from \"./util-extract\";\nexport * from \"./util-extractor-pixels\";\nexport * from \"./util-extractor\";\nexport * from \"./util-file-downloader\";\nexport * from \"./util-file-opener\";\nexport * from \"./util-font\";\nexport * from \"./util-hsv\";\nexport * from \"./util-html-element-clipper-ex-impl\";\nexport * from \"./util-html-element-clipper-ex-rects-impl\";\nexport * from \"./util-html-element-clipper-ex-rects\";\nexport * from \"./util-html-element-clipper-ex\";\nexport * from \"./util-html-element-when\";\nexport * from \"./util-html-element\";\nexport * from \"./util-input-input\";\nexport * from \"./util-input-number\";\nexport * from \"./util-input-text-area\";\nexport * from \"./util-input-text\";\nexport * from \"./util-input\";\nexport * from \"./util-keyboard-event\";\nexport * from \"./util-name\";\nexport * from \"./util-overlay\";\nexport * from \"./util-pointer-event\";\nexport * from \"./util-rgb\";\nexport * from \"./util-rgba\";\nexport * from \"./util-state-blinker\";\nexport * from \"./util-transition\";\nexport * from \"./util-wheel-event\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./format-node\";\nexport * from \"./character\";\nexport * from \"./deep-partial\";\nexport * from \"./dynamic-atlas-item-empty\";\nexport * from \"./dynamic-atlas-item-font-atlas\";\nexport * from \"./dynamic-atlas-item-image\";\nexport * from \"./dynamic-atlas-item-text\";\nexport * from \"./dynamic-atlas-item-white\";\nexport * from \"./dynamic-atlas-item\";\nexport * from \"./dynamic-atlas\";\nexport * from \"./dynamic-font-atlas-chaaracter-origin\";\nexport * from \"./dynamic-font-atlas-character-type\";\nexport * from \"./dynamic-font-atlas-character\";\nexport * from \"./dynamic-font-atlas-characters\";\nexport * from \"./dynamic-font-atlas-font\";\nexport * from \"./dynamic-font-atlas\";\nexport * from \"./dynamic-font-atlases\";\nexport * from \"./dynamic-sdf-font-atlas-font\";\nexport * from \"./dynamic-sdf-font-atlas\";\nexport * from \"./dynamic-sdf-font-atlases\";\nexport * from \"./dynamic-sdf-font-generator\";\nexport * from \"./is-array\";\nexport * from \"./is-function\";\nexport * from \"./is-nan\";\nexport * from \"./is-number\";\nexport * from \"./is-object\";\nexport * from \"./is-string\";\nexport * from \"./lazy\";\nexport * from \"./number-formatter-function\";\nexport * from \"./number-formatter-impl\";\nexport * from \"./number-formatter\";\nexport * from \"./number-formatters\";\nexport * from \"./to-ceiling-index\";\nexport * from \"./to-cloned\";\nexport * from \"./to-enum\";\nexport * from \"./to-id\";\nexport * from \"./to-index-of\";\nexport * from \"./to-label\";\nexport * from \"./to-merged\";\nexport * from \"./to-padded\";\nexport * from \"./to-string\";\nexport * from \"./to-svg-texture\";\nexport * from \"./to-svg-url\";\nexport * from \"./util-alpha\";\nexport * from \"./util-svg-atlas-builder\";\nexport * from \"./util-attach\";\nexport * from \"./util-character-iterator\";\nexport * from \"./util-click-outside\";\nexport * from \"./util-clipboard\";\nexport * from \"./util-gesture-data\";\nexport * from \"./util-gesture-easing-history\";\nexport * from \"./util-gesture-easing\";\nexport * from \"./util-gesture-mode\";\nexport * from \"./util-gesture-modifier\";\nexport * from \"./util-gesture-modifiers\";\nexport * from \"./util-gesture-tap\";\nexport * from \"./util-gesture-target\";\nexport * from \"./util-gesture\";\nexport * from \"./util-extract\";\nexport * from \"./util-extractor-canvas\";\nexport * from \"./util-extractor-pixels\";\nexport * from \"./util-extractor\";\nexport * from \"./util-file-downloader\";\nexport * from \"./util-file-opener\";\nexport * from \"./util-font\";\nexport * from \"./util-hsv\";\nexport * from \"./util-html-element-clipper-ex-impl\";\nexport * from \"./util-html-element-clipper-ex-rects-impl\";\nexport * from \"./util-html-element-clipper-ex-rects\";\nexport * from \"./util-html-element-clipper-ex\";\nexport * from \"./util-html-element-when\";\nexport * from \"./util-html-element\";\nexport * from \"./util-input-input\";\nexport * from \"./util-input-number\";\nexport * from \"./util-input-text-area\";\nexport * from \"./util-input-text\";\nexport * from \"./util-input\";\nexport * from \"./util-keyboard-event\";\nexport * from \"./util-name\";\nexport * from \"./util-overlay\";\nexport * from \"./util-pointer-event\";\nexport * from \"./util-rgb\";\nexport * from \"./util-rgba\";\nexport * from \"./util-state-blinker\";\nexport * from \"./util-transition\";\nexport * from \"./util-wheel-event\";\n"]}
@@ -7,6 +7,7 @@ import { DApplications } from "../d-applications";
7
7
  import { isNumber } from "./is-number";
8
8
  import { UtilExtractor } from "./util-extractor";
9
9
  import { UtilFileDownloader } from "./util-file-downloader";
10
+ import { UtilExtractorCanvas } from "./util-extractor-canvas";
10
11
  var toResolution = function (options) {
11
12
  var _a;
12
13
  var target = options.target;
@@ -76,8 +77,15 @@ var UtilExtract = /** @class */ (function () {
76
77
  // Create a render texture
77
78
  var target = options.target;
78
79
  var scale = target.transform.scale;
79
- var width = Math.floor(target.width * scale.x);
80
- var height = Math.floor(target.height * scale.y);
80
+ var width = Math.ceil(target.width * scale.x);
81
+ var height = Math.ceil(target.height * scale.y);
82
+ if (width <= 0 || height <= 0) {
83
+ return {
84
+ width: width,
85
+ height: height,
86
+ array: new Uint8Array(0)
87
+ };
88
+ }
81
89
  var resolution = toResolution(options);
82
90
  var renderTexture = UtilExtract.WORK_RENDER_TEXTURE;
83
91
  if (renderTexture == null) {
@@ -125,16 +133,27 @@ var UtilExtract = /** @class */ (function () {
125
133
  var scale = toScale(pixels, options);
126
134
  return UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha);
127
135
  };
136
+ /**
137
+ * Extracts Base64 data URL from the target.
138
+ * This method internally creates a render texture and a canvas render target.
139
+ * They are used to extract pixels from the target.
140
+ * To free the allocated render texture and canvas render target, please call {@link destroy()}.
141
+ *
142
+ * @param options an extraction options
143
+ * @returns extracted Base64 data URL
144
+ */
128
145
  UtilExtract.base64 = function (options) {
129
- var canvas = this.canvas(options);
130
- try {
131
- return UtilExtractor.toBase64(canvas.canvas, options.format, options.quality);
132
- }
133
- finally {
134
- if (canvas) {
135
- canvas.destroy();
136
- }
146
+ var _a, _b, _c;
147
+ var pixels = this.pixels(options);
148
+ var ignorePremutipliedAlpha = (_b = (_a = options.alpha) === null || _a === void 0 ? void 0 : _a.premultiplied) === null || _b === void 0 ? void 0 : _b.ignore;
149
+ var scale = toScale(pixels, options);
150
+ var canvas = ((_c = this.WORK_CANVAS) !== null && _c !== void 0 ? _c : (this.WORK_CANVAS = new UtilExtractorCanvas(pixels.width, pixels.height)));
151
+ UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha, canvas);
152
+ var element = canvas.getElement();
153
+ if (element != null) {
154
+ return UtilExtractor.toBase64(element, options.format, options.quality);
137
155
  }
156
+ return "data:,";
138
157
  };
139
158
  UtilExtract.file = function (options) {
140
159
  UtilFileDownloader.downloadUrl(options.filename, this.base64(options));
@@ -148,6 +167,11 @@ var UtilExtract = /** @class */ (function () {
148
167
  this.WORK_RENDER_TEXTURE = undefined;
149
168
  texture.destroy(true);
150
169
  }
170
+ var canvas = this.WORK_CANVAS;
171
+ if (canvas != null) {
172
+ this.WORK_CANVAS = undefined;
173
+ canvas.destroy();
174
+ }
151
175
  };
152
176
  return UtilExtract;
153
177
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"util-extract.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-extract.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Matrix, Renderer, RenderTexture, SCALE_MODES, utils } from \"pixi.js\";\nimport { DApplicationLayerLike } from \"../d-application-layer-like\";\nimport { DApplicationLike } from \"../d-application-like\";\nimport { DApplications } from \"../d-applications\";\nimport { DBase } from \"../d-base\";\nimport { isNumber } from \"./is-number\";\nimport { UtilExtractor } from \"./util-extractor\";\nimport { UtilExtractorPixels } from \"./util-extractor-pixels\";\nimport { UtilFileDownloader } from \"./util-file-downloader\";\n\nexport interface UtilExtractTextureResolutionOptions {\n\tsize: number;\n}\n\nexport interface UtilExtractTextureTransformOptions {\n\tupdate?: boolean;\n}\n\nexport interface UtilExtractTextureOptions {\n\ttarget: DBase;\n\tresolution?: number | UtilExtractTextureResolutionOptions;\n\ttransform?: UtilExtractTextureTransformOptions;\n\tclear?: boolean;\n}\n\nexport interface UtilExtractPixelsOptions extends UtilExtractTextureOptions {\n\trenderer?: Renderer;\n\tapplication?: DApplicationLike;\n\tlayer?: DApplicationLayerLike;\n}\n\nexport interface UtilExtractCanvasScaleOptions {\n\tsize: number;\n}\n\nexport interface UtilExtractCanvasAlphaOptions {\n\tpremultiplied?: {\n\t\tignore?: boolean;\n\t};\n}\n\nexport interface UtilExtractCanvasOptions extends UtilExtractPixelsOptions {\n\tscale?: number | UtilExtractCanvasScaleOptions;\n\talpha?: UtilExtractCanvasAlphaOptions;\n}\n\nexport interface UtilExtractBase64Options extends UtilExtractCanvasOptions {\n\tformat?: string;\n\tquality?: number;\n}\n\nexport interface UtilExtractFileOptions extends UtilExtractBase64Options {\n\tfilename: string;\n}\n\nconst toResolution = (options: UtilExtractTextureOptions): number => {\n\tconst target = options.target;\n\tconst resolution = options.resolution;\n\tif (resolution != null) {\n\t\tif (isNumber(resolution)) {\n\t\t\treturn resolution;\n\t\t} else {\n\t\t\tconst scale = target.transform.scale;\n\t\t\tconst size = Math.max(target.width * scale.x, target.height * scale.y);\n\t\t\treturn Math.min(1, resolution.size / size);\n\t\t}\n\t} else {\n\t\treturn window.devicePixelRatio ?? 1;\n\t}\n};\n\nconst toScale = (\n\tpixels: UtilExtractorPixels,\n\toptions: UtilExtractCanvasOptions\n): number | undefined => {\n\tconst scale = options.scale;\n\tif (scale != null) {\n\t\tif (isNumber(scale)) {\n\t\t\treturn scale;\n\t\t} else {\n\t\t\tconst size = scale.size;\n\t\t\treturn Math.min(1, size / pixels.width, size / pixels.height);\n\t\t}\n\t}\n};\n\nconst toRenderer = (options: UtilExtractPixelsOptions): Renderer => {\n\tconst renderer = options.renderer;\n\tif (renderer) {\n\t\treturn renderer;\n\t}\n\tconst application = options.application;\n\tif (application) {\n\t\treturn application.getLayerBase().renderer;\n\t}\n\tconst layer = options.layer || DApplications.getLayer(options.target);\n\tif (layer) {\n\t\treturn layer.renderer;\n\t}\n\tthrow new Error(\"No renderer / application / layer found.\");\n};\n\nexport class UtilExtract {\n\tprotected static WORK_RENDER_TEXTURE?: RenderTexture;\n\n\tstatic texture(options: UtilExtractTextureOptions): RenderTexture {\n\t\tconst target = options.target;\n\t\tconst resolution = toResolution(options);\n\t\tconst skipUpdateTransform = options.transform?.update;\n\t\treturn UtilExtractor.toTexture(target, resolution, options.clear, skipUpdateTransform);\n\t}\n\n\t/**\n\t * Extracts pixels from the target.\n\t * This method internally creates one render texture and use that to extract pixels from the target.\n\t * To free the allocated render texture, please call {@link destroy()}.\n\t *\n\t * @param options an extraction options\n\t * @returns extracted pixels\n\t */\n\tstatic pixels(options: UtilExtractPixelsOptions): UtilExtractorPixels {\n\t\tconst renderer = toRenderer(options);\n\n\t\t// Create a render texture\n\t\tconst target = options.target;\n\t\tconst scale = target.transform.scale;\n\t\tconst width = Math.floor(target.width * scale.x);\n\t\tconst height = Math.floor(target.height * scale.y);\n\t\tconst resolution = toResolution(options);\n\t\tlet renderTexture = UtilExtract.WORK_RENDER_TEXTURE;\n\t\tif (renderTexture == null) {\n\t\t\trenderTexture = RenderTexture.create({\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tscaleMode: SCALE_MODES.LINEAR,\n\t\t\t\tresolution\n\t\t\t});\n\t\t\tUtilExtract.WORK_RENDER_TEXTURE = renderTexture;\n\t\t} else {\n\t\t\tconst baseTexture = renderTexture.baseTexture;\n\t\t\tconst baseTextureWidth = baseTexture.width;\n\t\t\tconst baseTextureHeight = baseTexture.height;\n\t\t\tconst isWidthDirty = baseTextureWidth < width;\n\t\t\tconst isHeightDirty = baseTextureHeight < height;\n\t\t\tconst isResolutionDirty = renderTexture.resolution !== resolution;\n\t\t\tif (isResolutionDirty || isWidthDirty || isHeightDirty) {\n\t\t\t\tif (isResolutionDirty) {\n\t\t\t\t\tbaseTexture.resolution = resolution;\n\t\t\t\t}\n\t\t\t\trenderTexture.resize(\n\t\t\t\t\tMath.max(width, baseTextureWidth),\n\t\t\t\t\tMath.max(height, baseTextureHeight),\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Render to the render texture\n\t\tconst frame = renderTexture.frame;\n\t\tif (frame.x !== 0 || frame.y !== 0 || frame.width !== width || frame.height !== height) {\n\t\t\tframe.x = 0;\n\t\t\tframe.y = 0;\n\t\t\tframe.width = width;\n\t\t\tframe.height = height;\n\t\t\trenderTexture.frame = frame;\n\t\t}\n\n\t\tconst targetPosition = target.position;\n\t\tconst matrix = new Matrix(1, 0, 0, 1, -targetPosition.x, -targetPosition.y);\n\n\t\trenderer.render(target, renderTexture, options.clear, matrix, options.transform?.update);\n\n\t\t// Extract pixels\n\t\treturn UtilExtractor.toPixels(renderTexture, renderer);\n\t}\n\n\tstatic canvas(options: UtilExtractCanvasOptions): utils.CanvasRenderTarget {\n\t\tconst pixels = this.pixels(options);\n\t\tconst ignorePremutipliedAlpha = options.alpha?.premultiplied?.ignore;\n\t\tconst scale = toScale(pixels, options);\n\t\treturn UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha);\n\t}\n\n\tstatic base64(options: UtilExtractBase64Options): string {\n\t\tconst canvas = this.canvas(options);\n\t\ttry {\n\t\t\treturn UtilExtractor.toBase64(canvas.canvas, options.format, options.quality);\n\t\t} finally {\n\t\t\tif (canvas) {\n\t\t\t\tcanvas.destroy();\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic file(options: UtilExtractFileOptions): void {\n\t\tUtilFileDownloader.downloadUrl(options.filename, this.base64(options));\n\t}\n\n\t/**\n\t * Clears all the memories.\n\t */\n\tstatic destroy(): void {\n\t\tconst texture = this.WORK_RENDER_TEXTURE;\n\t\tif (texture != null) {\n\t\t\tthis.WORK_RENDER_TEXTURE = undefined;\n\t\t\ttexture.destroy(true);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"util-extract.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-extract.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Matrix, Renderer, RenderTexture, SCALE_MODES } from \"pixi.js\";\nimport { DApplicationLayerLike } from \"../d-application-layer-like\";\nimport { DApplicationLike } from \"../d-application-like\";\nimport { DApplications } from \"../d-applications\";\nimport { DBase } from \"../d-base\";\nimport { isNumber } from \"./is-number\";\nimport { UtilExtractor } from \"./util-extractor\";\nimport { UtilExtractorPixels } from \"./util-extractor-pixels\";\nimport { UtilFileDownloader } from \"./util-file-downloader\";\nimport { UtilExtractorCanvas } from \"./util-extractor-canvas\";\n\nexport interface UtilExtractTextureResolutionOptions {\n\tsize: number;\n}\n\nexport interface UtilExtractTextureTransformOptions {\n\tupdate?: boolean;\n}\n\nexport interface UtilExtractTextureOptions {\n\ttarget: DBase;\n\tresolution?: number | UtilExtractTextureResolutionOptions;\n\ttransform?: UtilExtractTextureTransformOptions;\n\tclear?: boolean;\n}\n\nexport interface UtilExtractPixelsOptions extends UtilExtractTextureOptions {\n\trenderer?: Renderer;\n\tapplication?: DApplicationLike;\n\tlayer?: DApplicationLayerLike;\n}\n\nexport interface UtilExtractCanvasScaleOptions {\n\tsize: number;\n}\n\nexport interface UtilExtractCanvasAlphaOptions {\n\tpremultiplied?: {\n\t\tignore?: boolean;\n\t};\n}\n\nexport interface UtilExtractCanvasOptions extends UtilExtractPixelsOptions {\n\tscale?: number | UtilExtractCanvasScaleOptions;\n\talpha?: UtilExtractCanvasAlphaOptions;\n}\n\nexport interface UtilExtractBase64Options extends UtilExtractCanvasOptions {\n\tformat?: string;\n\tquality?: number;\n}\n\nexport interface UtilExtractFileOptions extends UtilExtractBase64Options {\n\tfilename: string;\n}\n\nconst toResolution = (options: UtilExtractTextureOptions): number => {\n\tconst target = options.target;\n\tconst resolution = options.resolution;\n\tif (resolution != null) {\n\t\tif (isNumber(resolution)) {\n\t\t\treturn resolution;\n\t\t} else {\n\t\t\tconst scale = target.transform.scale;\n\t\t\tconst size = Math.max(target.width * scale.x, target.height * scale.y);\n\t\t\treturn Math.min(1, resolution.size / size);\n\t\t}\n\t} else {\n\t\treturn window.devicePixelRatio ?? 1;\n\t}\n};\n\nconst toScale = (\n\tpixels: UtilExtractorPixels,\n\toptions: UtilExtractCanvasOptions\n): number | undefined => {\n\tconst scale = options.scale;\n\tif (scale != null) {\n\t\tif (isNumber(scale)) {\n\t\t\treturn scale;\n\t\t} else {\n\t\t\tconst size = scale.size;\n\t\t\treturn Math.min(1, size / pixels.width, size / pixels.height);\n\t\t}\n\t}\n};\n\nconst toRenderer = (options: UtilExtractPixelsOptions): Renderer => {\n\tconst renderer = options.renderer;\n\tif (renderer) {\n\t\treturn renderer;\n\t}\n\tconst application = options.application;\n\tif (application) {\n\t\treturn application.getLayerBase().renderer;\n\t}\n\tconst layer = options.layer || DApplications.getLayer(options.target);\n\tif (layer) {\n\t\treturn layer.renderer;\n\t}\n\tthrow new Error(\"No renderer / application / layer found.\");\n};\n\nexport class UtilExtract {\n\tprotected static WORK_RENDER_TEXTURE?: RenderTexture;\n\tprotected static WORK_CANVAS?: UtilExtractorCanvas;\n\n\tstatic texture(options: UtilExtractTextureOptions): RenderTexture {\n\t\tconst target = options.target;\n\t\tconst resolution = toResolution(options);\n\t\tconst skipUpdateTransform = options.transform?.update;\n\t\treturn UtilExtractor.toTexture(target, resolution, options.clear, skipUpdateTransform);\n\t}\n\n\t/**\n\t * Extracts pixels from the target.\n\t * This method internally creates one render texture and use that to extract pixels from the target.\n\t * To free the allocated render texture, please call {@link destroy()}.\n\t *\n\t * @param options an extraction options\n\t * @returns extracted pixels\n\t */\n\tstatic pixels(options: UtilExtractPixelsOptions): UtilExtractorPixels {\n\t\tconst renderer = toRenderer(options);\n\n\t\t// Create a render texture\n\t\tconst target = options.target;\n\t\tconst scale = target.transform.scale;\n\t\tconst width = Math.ceil(target.width * scale.x);\n\t\tconst height = Math.ceil(target.height * scale.y);\n\t\tif (width <= 0 || height <= 0) {\n\t\t\treturn {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tarray: new Uint8Array(0)\n\t\t\t};\n\t\t}\n\n\t\tconst resolution = toResolution(options);\n\t\tlet renderTexture = UtilExtract.WORK_RENDER_TEXTURE;\n\t\tif (renderTexture == null) {\n\t\t\trenderTexture = RenderTexture.create({\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tscaleMode: SCALE_MODES.LINEAR,\n\t\t\t\tresolution\n\t\t\t});\n\t\t\tUtilExtract.WORK_RENDER_TEXTURE = renderTexture;\n\t\t} else {\n\t\t\tconst baseTexture = renderTexture.baseTexture;\n\t\t\tconst baseTextureWidth = baseTexture.width;\n\t\t\tconst baseTextureHeight = baseTexture.height;\n\t\t\tconst isWidthDirty = baseTextureWidth < width;\n\t\t\tconst isHeightDirty = baseTextureHeight < height;\n\t\t\tconst isResolutionDirty = renderTexture.resolution !== resolution;\n\t\t\tif (isResolutionDirty || isWidthDirty || isHeightDirty) {\n\t\t\t\tif (isResolutionDirty) {\n\t\t\t\t\tbaseTexture.resolution = resolution;\n\t\t\t\t}\n\t\t\t\trenderTexture.resize(\n\t\t\t\t\tMath.max(width, baseTextureWidth),\n\t\t\t\t\tMath.max(height, baseTextureHeight),\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Render to the render texture\n\t\tconst frame = renderTexture.frame;\n\t\tif (frame.x !== 0 || frame.y !== 0 || frame.width !== width || frame.height !== height) {\n\t\t\tframe.x = 0;\n\t\t\tframe.y = 0;\n\t\t\tframe.width = width;\n\t\t\tframe.height = height;\n\t\t\trenderTexture.frame = frame;\n\t\t}\n\n\t\tconst targetPosition = target.position;\n\t\tconst matrix = new Matrix(1, 0, 0, 1, -targetPosition.x, -targetPosition.y);\n\n\t\trenderer.render(target, renderTexture, options.clear, matrix, options.transform?.update);\n\n\t\t// Extract pixels\n\t\treturn UtilExtractor.toPixels(renderTexture, renderer);\n\t}\n\n\tstatic canvas(options: UtilExtractCanvasOptions): UtilExtractorCanvas {\n\t\tconst pixels = this.pixels(options);\n\t\tconst ignorePremutipliedAlpha = options.alpha?.premultiplied?.ignore;\n\t\tconst scale = toScale(pixels, options);\n\t\treturn UtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha);\n\t}\n\n\t/**\n\t * Extracts Base64 data URL from the target.\n\t * This method internally creates a render texture and a canvas render target.\n\t * They are used to extract pixels from the target.\n\t * To free the allocated render texture and canvas render target, please call {@link destroy()}.\n\t *\n\t * @param options an extraction options\n\t * @returns extracted Base64 data URL\n\t */\n\tstatic base64(options: UtilExtractBase64Options): string {\n\t\tconst pixels = this.pixels(options);\n\t\tconst ignorePremutipliedAlpha = options.alpha?.premultiplied?.ignore;\n\t\tconst scale = toScale(pixels, options);\n\t\tconst canvas = (this.WORK_CANVAS ??= new UtilExtractorCanvas(pixels.width, pixels.height));\n\t\tUtilExtractor.toCanvas(pixels, scale, ignorePremutipliedAlpha, canvas);\n\t\tconst element = canvas.getElement();\n\t\tif (element != null) {\n\t\t\treturn UtilExtractor.toBase64(element, options.format, options.quality);\n\t\t}\n\t\treturn \"data:,\";\n\t}\n\n\tstatic file(options: UtilExtractFileOptions): void {\n\t\tUtilFileDownloader.downloadUrl(options.filename, this.base64(options));\n\t}\n\n\t/**\n\t * Clears all the memories.\n\t */\n\tstatic destroy(): void {\n\t\tconst texture = this.WORK_RENDER_TEXTURE;\n\t\tif (texture != null) {\n\t\t\tthis.WORK_RENDER_TEXTURE = undefined;\n\t\t\ttexture.destroy(true);\n\t\t}\n\n\t\tconst canvas = this.WORK_CANVAS;\n\t\tif (canvas != null) {\n\t\t\tthis.WORK_CANVAS = undefined;\n\t\t\tcanvas.destroy();\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,110 @@
1
+ var UtilExtractorCanvas = /** @class */ (function () {
2
+ function UtilExtractorCanvas(width, height) {
3
+ var element = document.createElement("canvas");
4
+ this._element = element;
5
+ var context = this._element.getContext("2d", {
6
+ willReadFrequently: true
7
+ });
8
+ this._context = context;
9
+ element.width = width;
10
+ element.height = height;
11
+ }
12
+ Object.defineProperty(UtilExtractorCanvas.prototype, "element", {
13
+ get: function () {
14
+ var result = this._element;
15
+ if (result != null) {
16
+ return result;
17
+ }
18
+ throw new Error("No Element Available");
19
+ },
20
+ enumerable: false,
21
+ configurable: true
22
+ });
23
+ UtilExtractorCanvas.prototype.getElement = function () {
24
+ return this._element;
25
+ };
26
+ Object.defineProperty(UtilExtractorCanvas.prototype, "canvas", {
27
+ get: function () {
28
+ return this.element;
29
+ },
30
+ enumerable: false,
31
+ configurable: true
32
+ });
33
+ Object.defineProperty(UtilExtractorCanvas.prototype, "context", {
34
+ get: function () {
35
+ var result = this._context;
36
+ if (result != null) {
37
+ return result;
38
+ }
39
+ throw new Error("No Context Available");
40
+ },
41
+ enumerable: false,
42
+ configurable: true
43
+ });
44
+ UtilExtractorCanvas.prototype.getContext = function () {
45
+ return this._context;
46
+ };
47
+ Object.defineProperty(UtilExtractorCanvas.prototype, "resolution", {
48
+ get: function () {
49
+ return 1;
50
+ },
51
+ enumerable: false,
52
+ configurable: true
53
+ });
54
+ Object.defineProperty(UtilExtractorCanvas.prototype, "width", {
55
+ get: function () {
56
+ var element = this._element;
57
+ if (element != null) {
58
+ return element.width;
59
+ }
60
+ return 0;
61
+ },
62
+ set: function (width) {
63
+ var element = this._element;
64
+ if (element != null) {
65
+ element.width = width;
66
+ }
67
+ },
68
+ enumerable: false,
69
+ configurable: true
70
+ });
71
+ Object.defineProperty(UtilExtractorCanvas.prototype, "height", {
72
+ get: function () {
73
+ var element = this._element;
74
+ if (element != null) {
75
+ return element.height;
76
+ }
77
+ return 0;
78
+ },
79
+ set: function (height) {
80
+ var element = this._element;
81
+ if (element != null) {
82
+ element.height = height;
83
+ }
84
+ },
85
+ enumerable: false,
86
+ configurable: true
87
+ });
88
+ UtilExtractorCanvas.prototype.clear = function () {
89
+ var element = this._element;
90
+ var context = this._context;
91
+ if (element != null && context != null) {
92
+ context.setTransform(1, 0, 0, 1, 0, 0);
93
+ context.clearRect(0, 0, element.width, element.height);
94
+ }
95
+ };
96
+ UtilExtractorCanvas.prototype.resize = function (width, height) {
97
+ var element = this._element;
98
+ if (element != null) {
99
+ element.width = width;
100
+ element.height = height;
101
+ }
102
+ };
103
+ UtilExtractorCanvas.prototype.destroy = function () {
104
+ this._context = null;
105
+ this._element = null;
106
+ };
107
+ return UtilExtractorCanvas;
108
+ }());
109
+ export { UtilExtractorCanvas };
110
+ //# sourceMappingURL=util-extractor-canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util-extractor-canvas.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-extractor-canvas.ts"],"names":[],"mappings":"AAAA;IAIC,6BAAY,KAAa,EAAE,MAAc;QACxC,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;YAC9C,kBAAkB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,sBAAI,wCAAO;aAAX;YACC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,IAAI,MAAM,IAAI,IAAI,EAAE;gBACnB,OAAO,MAAM,CAAC;aACd;YACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAED,wCAAU,GAAV;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,sBAAI,uCAAM;aAAV;YACC,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED,sBAAI,wCAAO;aAAX;YACC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,IAAI,MAAM,IAAI,IAAI,EAAE;gBACnB,OAAO,MAAM,CAAC;aACd;YACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAED,wCAAU,GAAV;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,sBAAI,2CAAU;aAAd;YACC,OAAO,CAAC,CAAC;QACV,CAAC;;;OAAA;IAED,sBAAI,sCAAK;aAAT;YACC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,OAAO,OAAO,CAAC,KAAK,CAAC;aACrB;YACD,OAAO,CAAC,CAAC;QACV,CAAC;aAED,UAAU,KAAa;YACtB,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;aACtB;QACF,CAAC;;;OAPA;IASD,sBAAI,uCAAM;aAAV;YACC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,OAAO,OAAO,CAAC,MAAM,CAAC;aACtB;YACD,OAAO,CAAC,CAAC;QACV,CAAC;aAED,UAAW,MAAc;YACxB,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;aACxB;QACF,CAAC;;;OAPA;IASD,mCAAK,GAAL;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;YACvC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;SACvD;IACF,CAAC;IAED,oCAAM,GAAN,UAAO,KAAa,EAAE,MAAc;QACnC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACtB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;SACxB;IACF,CAAC;IAED,qCAAO,GAAP;QACC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IACF,0BAAC;AAAD,CAAC,AAlGD,IAkGC","sourcesContent":["export class UtilExtractorCanvas {\n\tprotected _element: HTMLCanvasElement | null;\n\tprotected _context: CanvasRenderingContext2D | null;\n\n\tconstructor(width: number, height: number) {\n\t\tconst element = document.createElement(\"canvas\");\n\t\tthis._element = element;\n\t\tconst context = this._element.getContext(\"2d\", {\n\t\t\twillReadFrequently: true\n\t\t});\n\t\tthis._context = context;\n\t\telement.width = width;\n\t\telement.height = height;\n\t}\n\n\tget element(): HTMLCanvasElement {\n\t\tconst result = this._element;\n\t\tif (result != null) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new Error(\"No Element Available\");\n\t}\n\n\tgetElement(): HTMLCanvasElement | null {\n\t\treturn this._element;\n\t}\n\n\tget canvas(): HTMLCanvasElement {\n\t\treturn this.element;\n\t}\n\n\tget context(): CanvasRenderingContext2D {\n\t\tconst result = this._context;\n\t\tif (result != null) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new Error(\"No Context Available\");\n\t}\n\n\tgetContext(): CanvasRenderingContext2D | null {\n\t\treturn this._context;\n\t}\n\n\tget resolution(): number {\n\t\treturn 1;\n\t}\n\n\tget width(): number {\n\t\tconst element = this._element;\n\t\tif (element != null) {\n\t\t\treturn element.width;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tset width(width: number) {\n\t\tconst element = this._element;\n\t\tif (element != null) {\n\t\t\telement.width = width;\n\t\t}\n\t}\n\n\tget height(): number {\n\t\tconst element = this._element;\n\t\tif (element != null) {\n\t\t\treturn element.height;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tset height(height: number) {\n\t\tconst element = this._element;\n\t\tif (element != null) {\n\t\t\telement.height = height;\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tconst element = this._element;\n\t\tconst context = this._context;\n\t\tif (element != null && context != null) {\n\t\t\tcontext.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tcontext.clearRect(0, 0, element.width, element.height);\n\t\t}\n\t}\n\n\tresize(width: number, height: number): void {\n\t\tconst element = this._element;\n\t\tif (element != null) {\n\t\t\telement.width = width;\n\t\t\telement.height = height;\n\t\t}\n\t}\n\n\tdestroy(): void {\n\t\tthis._context = null;\n\t\tthis._element = null;\n\t}\n}\n"]}
@@ -2,16 +2,19 @@
2
2
  * Copyright (C) 2019 Toshiba Corporation
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { Extract, Matrix, RenderTexture, SCALE_MODES, utils } from "pixi.js";
5
+ import { Extract, Matrix, RenderTexture, SCALE_MODES } from "pixi.js";
6
6
  import { DApplications } from "../d-applications";
7
+ import { UtilExtractorCanvas } from "./util-extractor-canvas";
7
8
  var UtilExtractor = /** @class */ (function () {
8
9
  function UtilExtractor() {
9
10
  }
10
11
  UtilExtractor.toTexture = function (target, resolution, clear, skipUpdateTransform) {
11
12
  var scale = target.transform.scale;
13
+ var width = Math.max(1, Math.ceil(target.width * scale.x));
14
+ var height = Math.max(1, Math.ceil(target.height * scale.y));
12
15
  var result = RenderTexture.create({
13
- width: target.width * scale.x,
14
- height: target.height * scale.y,
16
+ width: width,
17
+ height: height,
15
18
  scaleMode: SCALE_MODES.LINEAR,
16
19
  resolution: resolution
17
20
  });
@@ -23,46 +26,68 @@ var UtilExtractor = /** @class */ (function () {
23
26
  return result;
24
27
  };
25
28
  UtilExtractor.toPixels = function (renderTexture, renderer) {
29
+ var baseTexture = renderTexture.baseTexture;
30
+ var realWidth = baseTexture.realWidth;
31
+ var realHeight = baseTexture.realHeight;
26
32
  var resolution = renderTexture.resolution;
27
33
  var frame = renderTexture.frame;
28
- var width = Math.floor(frame.width * resolution);
29
- var height = Math.floor(frame.height * resolution);
34
+ var x0 = Math.floor(frame.x * resolution);
35
+ var y0 = Math.floor(frame.y * resolution);
36
+ var x1 = Math.floor((frame.x + frame.width) * resolution);
37
+ var y1 = Math.floor((frame.y + frame.height) * resolution);
38
+ var width = Math.min(x1 - x0, realWidth);
39
+ var height = Math.min(y1 - y0, realHeight);
30
40
  var pixels = new Uint8Array(4 * width * height);
31
- var oldRenderTexture = renderer.renderTexture.current;
32
- renderer.renderTexture.bind(renderTexture);
33
- var gl = renderer.gl;
34
- gl.readPixels(frame.x * resolution, frame.y * resolution, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
35
- renderer.renderTexture.bind(oldRenderTexture);
41
+ if (0 < width && 0 < height) {
42
+ var oldRenderTexture = renderer.renderTexture.current;
43
+ renderer.renderTexture.bind(renderTexture);
44
+ var gl = renderer.gl;
45
+ gl.readPixels(x0, y0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
46
+ renderer.renderTexture.bind(oldRenderTexture);
47
+ }
36
48
  return {
37
49
  width: width,
38
50
  height: height,
39
51
  array: pixels
40
52
  };
41
53
  };
42
- UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha) {
54
+ UtilExtractor.toCanvas = function (pixels, scale, ignorePremutipliedAlpha, result) {
43
55
  var width = pixels.width;
44
56
  var height = pixels.height;
45
57
  var array = pixels.array;
46
- var canvasRenderTarget = new utils.CanvasRenderTarget(width, height, 1);
47
- var imageData = canvasRenderTarget.context.getImageData(0, 0, width, height);
58
+ if (result == null) {
59
+ result = new UtilExtractorCanvas(width, height);
60
+ }
61
+ else {
62
+ result.resize(width, height);
63
+ }
64
+ if (width <= 0 || height <= 0) {
65
+ return result;
66
+ }
67
+ var context = result.getContext();
68
+ var element = result.getElement();
69
+ if (context == null || element == null) {
70
+ return result;
71
+ }
72
+ var imageData = context.getImageData(0, 0, width, height);
48
73
  if (ignorePremutipliedAlpha) {
49
74
  imageData.data.set(array);
50
75
  }
51
76
  else {
52
77
  Extract.arrayPostDivide(array, imageData.data);
53
78
  }
54
- canvasRenderTarget.context.putImageData(imageData, 0, 0);
79
+ context.putImageData(imageData, 0, 0);
55
80
  // Scale down
56
81
  if (scale != null && scale !== 1) {
57
- canvasRenderTarget.context.scale(scale, scale);
58
- canvasRenderTarget.context.drawImage(canvasRenderTarget.canvas, 0, 0);
82
+ context.scale(scale, scale);
83
+ context.drawImage(element, 0, 0);
59
84
  var scaledWidth = Math.floor(width * scale);
60
85
  var scaledHeight = Math.floor(height * scale);
61
- var scaledImageData = canvasRenderTarget.context.getImageData(0, 0, scaledWidth, scaledHeight);
62
- canvasRenderTarget.resize(scaledWidth, scaledHeight);
63
- canvasRenderTarget.context.putImageData(scaledImageData, 0, 0);
86
+ var scaledImageData = context.getImageData(0, 0, scaledWidth, scaledHeight);
87
+ result.resize(scaledWidth, scaledHeight);
88
+ context.putImageData(scaledImageData, 0, 0);
64
89
  }
65
- return canvasRenderTarget;
90
+ return result;
66
91
  };
67
92
  UtilExtractor.toBase64 = function (canvas, format, quality) {
68
93
  return canvas.toDataURL(format, quality);
@@ -1 +1 @@
1
- {"version":3,"file":"util-extractor.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-extractor.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Extract, Matrix, Renderer, RenderTexture, SCALE_MODES, utils } from \"pixi.js\";\nimport { DApplications } from \"../d-applications\";\nimport { DBase } from \"../d-base\";\nimport { UtilExtractorPixels } from \"./util-extractor-pixels\";\n\nexport class UtilExtractor {\n\tstatic toTexture(\n\t\ttarget: DBase,\n\t\tresolution?: number,\n\t\tclear?: boolean,\n\t\tskipUpdateTransform?: boolean\n\t): RenderTexture {\n\t\tconst scale = target.transform.scale;\n\t\tconst result = RenderTexture.create({\n\t\t\twidth: target.width * scale.x,\n\t\t\theight: target.height * scale.y,\n\t\t\tscaleMode: SCALE_MODES.LINEAR,\n\t\t\tresolution\n\t\t});\n\t\tconst matrix = new Matrix(\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\t-target.position.x,\n\t\t\t-target.position.y\n\t\t);\n\t\tconst layer = DApplications.getLayer(target);\n\t\tif (layer) {\n\t\t\tlayer.renderer.render(target, result, clear, matrix, skipUpdateTransform);\n\t\t}\n\t\treturn result;\n\t}\n\n\tstatic toPixels(renderTexture: RenderTexture, renderer: Renderer): UtilExtractorPixels {\n\t\tconst resolution = renderTexture.resolution;\n\t\tconst frame = renderTexture.frame;\n\t\tconst width = Math.floor(frame.width * resolution);\n\t\tconst height = Math.floor(frame.height * resolution);\n\t\tconst pixels = new Uint8Array(4 * width * height);\n\n\t\tconst oldRenderTexture = renderer.renderTexture.current;\n\t\trenderer.renderTexture.bind(renderTexture);\n\t\tconst gl = renderer.gl;\n\t\tgl.readPixels(\n\t\t\tframe.x * resolution,\n\t\t\tframe.y * resolution,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tgl.RGBA,\n\t\t\tgl.UNSIGNED_BYTE,\n\t\t\tpixels\n\t\t);\n\t\trenderer.renderTexture.bind(oldRenderTexture);\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tarray: pixels\n\t\t};\n\t}\n\n\tstatic toCanvas(\n\t\tpixels: UtilExtractorPixels,\n\t\tscale?: number,\n\t\tignorePremutipliedAlpha?: boolean\n\t): utils.CanvasRenderTarget {\n\t\tconst width = pixels.width;\n\t\tconst height = pixels.height;\n\t\tconst array = pixels.array;\n\t\tconst canvasRenderTarget = new utils.CanvasRenderTarget(width, height, 1);\n\n\t\tconst imageData = canvasRenderTarget.context.getImageData(0, 0, width, height);\n\t\tif (ignorePremutipliedAlpha) {\n\t\t\timageData.data.set(array);\n\t\t} else {\n\t\t\t(Extract as any).arrayPostDivide(array, imageData.data);\n\t\t}\n\t\tcanvasRenderTarget.context.putImageData(imageData, 0, 0);\n\n\t\t// Scale down\n\t\tif (scale != null && scale !== 1) {\n\t\t\tcanvasRenderTarget.context.scale(scale, scale);\n\t\t\tcanvasRenderTarget.context.drawImage(canvasRenderTarget.canvas, 0, 0);\n\t\t\tconst scaledWidth = Math.floor(width * scale);\n\t\t\tconst scaledHeight = Math.floor(height * scale);\n\t\t\tconst scaledImageData = canvasRenderTarget.context.getImageData(\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tscaledWidth,\n\t\t\t\tscaledHeight\n\t\t\t);\n\t\t\tcanvasRenderTarget.resize(scaledWidth, scaledHeight);\n\t\t\tcanvasRenderTarget.context.putImageData(scaledImageData, 0, 0);\n\t\t}\n\n\t\treturn canvasRenderTarget;\n\t}\n\n\tstatic toBase64(canvas: HTMLCanvasElement, format?: string, quality?: number): string {\n\t\treturn canvas.toDataURL(format, quality);\n\t}\n}\n"]}
1
+ {"version":3,"file":"util-extractor.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-extractor.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Extract, Matrix, Renderer, RenderTexture, SCALE_MODES } from \"pixi.js\";\nimport { DApplications } from \"../d-applications\";\nimport { DBase } from \"../d-base\";\nimport { UtilExtractorPixels } from \"./util-extractor-pixels\";\nimport { UtilExtractorCanvas } from \"./util-extractor-canvas\";\n\nexport class UtilExtractor {\n\tstatic toTexture(\n\t\ttarget: DBase,\n\t\tresolution?: number,\n\t\tclear?: boolean,\n\t\tskipUpdateTransform?: boolean\n\t): RenderTexture {\n\t\tconst scale = target.transform.scale;\n\t\tconst width = Math.max(1, Math.ceil(target.width * scale.x));\n\t\tconst height = Math.max(1, Math.ceil(target.height * scale.y));\n\t\tconst result = RenderTexture.create({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tscaleMode: SCALE_MODES.LINEAR,\n\t\t\tresolution\n\t\t});\n\t\tconst matrix = new Matrix(\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\t-target.position.x,\n\t\t\t-target.position.y\n\t\t);\n\t\tconst layer = DApplications.getLayer(target);\n\t\tif (layer) {\n\t\t\tlayer.renderer.render(target, result, clear, matrix, skipUpdateTransform);\n\t\t}\n\t\treturn result;\n\t}\n\n\tstatic toPixels(renderTexture: RenderTexture, renderer: Renderer): UtilExtractorPixels {\n\t\tconst baseTexture = renderTexture.baseTexture;\n\t\tconst realWidth = baseTexture.realWidth;\n\t\tconst realHeight = baseTexture.realHeight;\n\t\tconst resolution = renderTexture.resolution;\n\t\tconst frame = renderTexture.frame;\n\t\tconst x0 = Math.floor(frame.x * resolution);\n\t\tconst y0 = Math.floor(frame.y * resolution);\n\t\tconst x1 = Math.floor((frame.x + frame.width) * resolution);\n\t\tconst y1 = Math.floor((frame.y + frame.height) * resolution);\n\t\tconst width = Math.min(x1 - x0, realWidth);\n\t\tconst height = Math.min(y1 - y0, realHeight);\n\t\tconst pixels = new Uint8Array(4 * width * height);\n\t\tif (0 < width && 0 < height) {\n\t\t\tconst oldRenderTexture = renderer.renderTexture.current;\n\t\t\trenderer.renderTexture.bind(renderTexture);\n\t\t\tconst gl = renderer.gl;\n\t\t\tgl.readPixels(x0, y0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\t\t\trenderer.renderTexture.bind(oldRenderTexture);\n\t\t}\n\t\treturn {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tarray: pixels\n\t\t};\n\t}\n\n\tstatic toCanvas(\n\t\tpixels: UtilExtractorPixels,\n\t\tscale?: number,\n\t\tignorePremutipliedAlpha?: boolean,\n\t\tresult?: UtilExtractorCanvas\n\t): UtilExtractorCanvas {\n\t\tconst width = pixels.width;\n\t\tconst height = pixels.height;\n\t\tconst array = pixels.array;\n\t\tif (result == null) {\n\t\t\tresult = new UtilExtractorCanvas(width, height);\n\t\t} else {\n\t\t\tresult.resize(width, height);\n\t\t}\n\t\tif (width <= 0 || height <= 0) {\n\t\t\treturn result;\n\t\t}\n\t\tconst context = result.getContext();\n\t\tconst element = result.getElement();\n\t\tif (context == null || element == null) {\n\t\t\treturn result;\n\t\t}\n\t\tconst imageData = context.getImageData(0, 0, width, height);\n\t\tif (ignorePremutipliedAlpha) {\n\t\t\timageData.data.set(array);\n\t\t} else {\n\t\t\t(Extract as any).arrayPostDivide(array, imageData.data);\n\t\t}\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\t// Scale down\n\t\tif (scale != null && scale !== 1) {\n\t\t\tcontext.scale(scale, scale);\n\t\t\tcontext.drawImage(element, 0, 0);\n\t\t\tconst scaledWidth = Math.floor(width * scale);\n\t\t\tconst scaledHeight = Math.floor(height * scale);\n\t\t\tconst scaledImageData = context.getImageData(0, 0, scaledWidth, scaledHeight);\n\t\t\tresult.resize(scaledWidth, scaledHeight);\n\t\t\tcontext.putImageData(scaledImageData, 0, 0);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tstatic toBase64(canvas: HTMLCanvasElement, format?: string, quality?: number): string {\n\t\treturn canvas.toDataURL(format, quality);\n\t}\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- Winter Cardinal UI v0.443.0
2
+ Winter Cardinal UI v0.444.0
3
3
  Copyright (C) 2019 Toshiba Corporation
4
4
  SPDX-License-Identifier: Apache-2.0
5
5