@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.
- package/dist/types/wcardinal/ui/util/index.d.ts +1 -0
- package/dist/types/wcardinal/ui/util/util-extract.d.ts +13 -2
- package/dist/types/wcardinal/ui/util/util-extractor-canvas.d.ts +18 -0
- package/dist/types/wcardinal/ui/util/util-extractor.d.ts +3 -2
- package/dist/wcardinal/ui/util/index.js +1 -0
- package/dist/wcardinal/ui/util/index.js.map +1 -1
- package/dist/wcardinal/ui/util/util-extract.js +34 -10
- package/dist/wcardinal/ui/util/util-extract.js.map +1 -1
- package/dist/wcardinal/ui/util/util-extractor-canvas.js +110 -0
- package/dist/wcardinal/ui/util/util-extractor-canvas.js.map +1 -0
- package/dist/wcardinal/ui/util/util-extractor.js +45 -20
- package/dist/wcardinal/ui/util/util-extractor.js.map +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark.js +1 -1
- package/dist/wcardinal-ui-theme-dark.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-white.js +1 -1
- package/dist/wcardinal-ui-theme-white.min.js +1 -1
- package/dist/wcardinal-ui.cjs.js +187 -30
- package/dist/wcardinal-ui.js +187 -30
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- 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
|
|
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):
|
|
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
|
|
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):
|
|
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.
|
|
80
|
-
var height = Math.
|
|
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
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
|
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:
|
|
14
|
-
height:
|
|
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
|
|
29
|
-
var
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
47
|
-
|
|
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
|
-
|
|
79
|
+
context.putImageData(imageData, 0, 0);
|
|
55
80
|
// Scale down
|
|
56
81
|
if (scale != null && scale !== 1) {
|
|
57
|
-
|
|
58
|
-
|
|
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 =
|
|
62
|
-
|
|
63
|
-
|
|
86
|
+
var scaledImageData = context.getImageData(0, 0, scaledWidth, scaledHeight);
|
|
87
|
+
result.resize(scaledWidth, scaledHeight);
|
|
88
|
+
context.putImageData(scaledImageData, 0, 0);
|
|
64
89
|
}
|
|
65
|
-
return
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAY,aAAa,EAAE,WAAW,EAAE,
|
|
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"]}
|