@next2d/renderer 2.0.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/package.json +31 -0
  4. package/src/Command/service/CommandInitializeContextService.d.ts +11 -0
  5. package/src/Command/service/CommandInitializeContextService.js +27 -0
  6. package/src/Command/service/CommandRemoveCacheService.d.ts +10 -0
  7. package/src/Command/service/CommandRemoveCacheService.js +24 -0
  8. package/src/Command/service/CommandResizeService.d.ts +12 -0
  9. package/src/Command/service/CommandResizeService.js +27 -0
  10. package/src/Command/usecase/CommandCaptureUseCase.d.ts +13 -0
  11. package/src/Command/usecase/CommandCaptureUseCase.js +53 -0
  12. package/src/Command/usecase/CommandRenderUseCase.d.ts +11 -0
  13. package/src/Command/usecase/CommandRenderUseCase.js +70 -0
  14. package/src/CommandController.d.ts +38 -0
  15. package/src/CommandController.js +102 -0
  16. package/src/DisplayObject/service/DisplayObjectGetBlendModeService.d.ts +11 -0
  17. package/src/DisplayObject/service/DisplayObjectGetBlendModeService.js +45 -0
  18. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerClipRenderUseCase.d.ts +11 -0
  19. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerClipRenderUseCase.js +29 -0
  20. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRenderUseCase.d.ts +12 -0
  21. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRenderUseCase.js +120 -0
  22. package/src/RendererUtil.d.ts +136 -0
  23. package/src/RendererUtil.js +214 -0
  24. package/src/Shape/service/ShapeCommandService.d.ts +11 -0
  25. package/src/Shape/service/ShapeCommandService.js +252 -0
  26. package/src/Shape/usecase/ShapeClipRenderUseCase.d.ts +11 -0
  27. package/src/Shape/usecase/ShapeClipRenderUseCase.js +33 -0
  28. package/src/Shape/usecase/ShapeRenderUseCase.d.ts +11 -0
  29. package/src/Shape/usecase/ShapeRenderUseCase.js +154 -0
  30. package/src/TextField/service/TextFieldGenerateFontStyleService.d.ts +11 -0
  31. package/src/TextField/service/TextFieldGenerateFontStyleService.js +19 -0
  32. package/src/TextField/service/TextFiledGetAlignOffsetService.d.ts +15 -0
  33. package/src/TextField/service/TextFiledGetAlignOffsetService.js +33 -0
  34. package/src/TextField/usecase/TextFieldDrawOffscreenCanvasUseCase.d.ts +15 -0
  35. package/src/TextField/usecase/TextFieldDrawOffscreenCanvasUseCase.js +272 -0
  36. package/src/TextField/usecase/TextFieldRenderUseCase.d.ts +11 -0
  37. package/src/TextField/usecase/TextFieldRenderUseCase.js +150 -0
  38. package/src/Video/usecase/VideoRenderUseCase.d.ts +12 -0
  39. package/src/Video/usecase/VideoRenderUseCase.js +88 -0
  40. package/src/index.d.ts +2 -0
  41. package/src/index.js +26 -0
  42. package/src/interface/IBlendMode.d.ts +1 -0
  43. package/src/interface/IBlendMode.js +1 -0
  44. package/src/interface/IMessage.d.ts +11 -0
  45. package/src/interface/IMessage.js +1 -0
  46. package/src/interface/INode.d.ts +7 -0
  47. package/src/interface/INode.js +1 -0
  48. package/src/interface/IRGBA.d.ts +6 -0
  49. package/src/interface/IRGBA.js +1 -0
  50. package/src/interface/ITextData.d.ts +8 -0
  51. package/src/interface/ITextData.js +1 -0
  52. package/src/interface/ITextFieldAutoSize.d.ts +1 -0
  53. package/src/interface/ITextFieldAutoSize.js +1 -0
  54. package/src/interface/ITextFormat.d.ts +14 -0
  55. package/src/interface/ITextFormat.js +1 -0
  56. package/src/interface/ITextFormatAlign.d.ts +1 -0
  57. package/src/interface/ITextFormatAlign.js +1 -0
  58. package/src/interface/ITextObject.d.ts +12 -0
  59. package/src/interface/ITextObject.js +1 -0
  60. package/src/interface/ITextObjectMode.d.ts +1 -0
  61. package/src/interface/ITextObjectMode.js +1 -0
  62. package/src/interface/ITextSetting.d.ts +25 -0
  63. package/src/interface/ITextSetting.js +1 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Next2D
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ @next2d/renderer
2
+ =============
3
+
4
+ ## Installation
5
+
6
+ ```
7
+ npm install @next2d/renderer
8
+ ```
9
+
10
+ ## License
11
+ This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [LICENSE](LICENSE) file for details.
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@next2d/renderer",
3
+ "version": "2.0.0",
4
+ "description": "Next2D Renderer Package",
5
+ "author": "Toshiyuki Ienaga<ienaga@next2d.app> (https://github.com/ienaga/)",
6
+ "license": "MIT",
7
+ "homepage": "https://next2d.app",
8
+ "bugs": "https://github.com/Next2D/Player/issues",
9
+ "main": "src/index.js",
10
+ "types": "src/index.d.ts",
11
+ "type": "module",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./src/index.js",
15
+ "require": "./src/index.js"
16
+ }
17
+ },
18
+ "keywords": [
19
+ "Next2D",
20
+ "Next2D Renderer"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/Next2D/Player.git"
25
+ },
26
+ "dependencies": {
27
+ "@next2d/webgl": "2.0.0",
28
+ "@next2d/cache": "2.0.0",
29
+ "@next2d/texture-packer": "2.0.0"
30
+ }
31
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description OffscreenCanvasからWebGL2のコンテキストを取得
3
+ * Get WebGL2 context from OffscreenCanvas
4
+ *
5
+ * @param {OffscreenCanvas} canvas
6
+ * @param {number} device_pixel_ratio
7
+ * @return {void}
8
+ * @method
9
+ * @public
10
+ */
11
+ export declare const execute: (canvas: OffscreenCanvas, device_pixel_ratio: number) => void;
@@ -0,0 +1,27 @@
1
+ import { Context } from "@next2d/webgl";
2
+ import { $setCanvas, $setContext, $samples } from "../../RendererUtil";
3
+ /**
4
+ * @description OffscreenCanvasからWebGL2のコンテキストを取得
5
+ * Get WebGL2 context from OffscreenCanvas
6
+ *
7
+ * @param {OffscreenCanvas} canvas
8
+ * @param {number} device_pixel_ratio
9
+ * @return {void}
10
+ * @method
11
+ * @public
12
+ */
13
+ export const execute = (canvas, device_pixel_ratio) => {
14
+ // Set OffscreenCanvas
15
+ $setCanvas(canvas);
16
+ const gl = canvas.getContext("webgl2", {
17
+ "stencil": true,
18
+ "premultipliedAlpha": true,
19
+ "antialias": false,
20
+ "depth": false
21
+ });
22
+ if (!gl) {
23
+ throw new Error("webgl2 is not supported.");
24
+ }
25
+ // Set CanvasToWebGLContext
26
+ $setContext(new Context(gl, $samples, device_pixel_ratio));
27
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @description キャッシュキーを削除
3
+ * Remove cache key
4
+ *
5
+ * @param {Float32Array} remove_cache_keys
6
+ * @return {void}
7
+ * @method
8
+ * @public
9
+ */
10
+ export declare const execute: (remove_cache_keys: Float32Array) => void;
@@ -0,0 +1,24 @@
1
+ import { $cacheStore } from "@next2d/cache";
2
+ import { $context } from "../../RendererUtil";
3
+ /**
4
+ * @description キャッシュキーを削除
5
+ * Remove cache key
6
+ *
7
+ * @param {Float32Array} remove_cache_keys
8
+ * @return {void}
9
+ * @method
10
+ * @public
11
+ */
12
+ export const execute = (remove_cache_keys) => {
13
+ for (let idx = 0; idx < remove_cache_keys.length; ++idx) {
14
+ const cacheKey = `${remove_cache_keys[idx]}`;
15
+ if (!$cacheStore.has(cacheKey)) {
16
+ continue;
17
+ }
18
+ const cache = $cacheStore.getById(cacheKey);
19
+ for (const node of cache.values()) {
20
+ $context.removeNode(node);
21
+ }
22
+ $cacheStore.removeById(cacheKey);
23
+ }
24
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @description 画面リサイズ時にcanvasのリサイズ、内部情報の更新を行う
3
+ * Resize the canvas when resizing the screen and update internal information
4
+ *
5
+ * @param {number} renderer_width
6
+ * @param {number} renderer_height
7
+ * @param {boolean} cache_clear
8
+ * @return {void}
9
+ * @method
10
+ * @public
11
+ */
12
+ export declare const execute: (renderer_width: number, renderer_height: number, cache_clear?: boolean) => void;
@@ -0,0 +1,27 @@
1
+ import { $cacheStore } from "@next2d/cache";
2
+ import { $setRendererSize, $context, $getRendererWidth, $getRendererHeight } from "../../RendererUtil";
3
+ /**
4
+ * @description 画面リサイズ時にcanvasのリサイズ、内部情報の更新を行う
5
+ * Resize the canvas when resizing the screen and update internal information
6
+ *
7
+ * @param {number} renderer_width
8
+ * @param {number} renderer_height
9
+ * @param {boolean} cache_clear
10
+ * @return {void}
11
+ * @method
12
+ * @public
13
+ */
14
+ export const execute = (renderer_width, renderer_height, cache_clear = true) => {
15
+ if ($getRendererWidth() === renderer_width
16
+ && $getRendererHeight() === renderer_height) {
17
+ return;
18
+ }
19
+ // resize
20
+ $setRendererSize(renderer_width, renderer_height);
21
+ // context reset and update
22
+ $context.resize(renderer_width, renderer_height, cache_clear);
23
+ // cache clear
24
+ if (cache_clear) {
25
+ $cacheStore.reset();
26
+ }
27
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description 描画コマンドから描画を実行してcanvasに描画して返却
3
+ * Execute drawing from drawing command and draw to canvas and return
4
+ *
5
+ * @param {Float32Array} render_queue
6
+ * @param {number} width
7
+ * @param {number} height
8
+ * @param {ImageBitmap[]} [image_bitmaps=null]
9
+ * @return {Promise<ImageBitmap>}
10
+ * @method
11
+ * @protected
12
+ */
13
+ export declare const execute: (render_queue: Float32Array, width: number, height: number, image_bitmaps: ImageBitmap[] | null) => Promise<ImageBitmap>;
@@ -0,0 +1,53 @@
1
+ import { execute as displayObjectContainerRenderUseCase } from "../../DisplayObjectContainer/usecase/DisplayObjectContainerRenderUseCase";
2
+ import { execute as shapeRenderUseCase } from "../../Shape/usecase/ShapeRenderUseCase";
3
+ import { execute as textFieldRenderUseCase } from "../../TextField/usecase/TextFieldRenderUseCase";
4
+ import { execute as videoRenderUseCase } from "../../Video/usecase/VideoRenderUseCase";
5
+ import { $context } from "../../RendererUtil";
6
+ /**
7
+ * @description 描画コマンドから描画を実行してcanvasに描画して返却
8
+ * Execute drawing from drawing command and draw to canvas and return
9
+ *
10
+ * @param {Float32Array} render_queue
11
+ * @param {number} width
12
+ * @param {number} height
13
+ * @param {ImageBitmap[]} [image_bitmaps=null]
14
+ * @return {Promise<ImageBitmap>}
15
+ * @method
16
+ * @protected
17
+ */
18
+ export const execute = async (render_queue, width, height, image_bitmaps) => {
19
+ // reset transfer bounds
20
+ $context.clearTransferBounds();
21
+ let index = 1;
22
+ // reset
23
+ $context.reset();
24
+ $context.setTransform(1, 0, 0, 1, 0, 0);
25
+ $context.fillBackgroundColor();
26
+ while (render_queue.length > index) {
27
+ // hidden
28
+ if (!render_queue[index++]) {
29
+ continue;
30
+ }
31
+ // display object type
32
+ const type = render_queue[index++];
33
+ switch (type) {
34
+ case 0x00: // container
35
+ index = displayObjectContainerRenderUseCase(render_queue, index, image_bitmaps);
36
+ break;
37
+ case 0x01: // shape
38
+ index = shapeRenderUseCase(render_queue, index);
39
+ break;
40
+ case 0x02: // text
41
+ index = textFieldRenderUseCase(render_queue, index);
42
+ break;
43
+ case 0x03: // video
44
+ index = videoRenderUseCase(render_queue, index, image_bitmaps);
45
+ break;
46
+ default:
47
+ console.error("unknown type", type);
48
+ break;
49
+ }
50
+ }
51
+ $context.drawArraysInstanced();
52
+ return await $context.createImageBitmap(width, height);
53
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description 描画コマンドから描画を実行
3
+ * Execute drawing from drawing command
4
+ *
5
+ * @param {Float32Array} render_queue
6
+ * @param {ImageBitmap[]} [image_bitmaps=null]
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (render_queue: Float32Array, image_bitmaps: ImageBitmap[] | null) => void;
@@ -0,0 +1,70 @@
1
+ import { execute as displayObjectContainerRenderUseCase } from "../../DisplayObjectContainer/usecase/DisplayObjectContainerRenderUseCase";
2
+ import { execute as shapeRenderUseCase } from "../../Shape/usecase/ShapeRenderUseCase";
3
+ import { execute as textFieldRenderUseCase } from "../../TextField/usecase/TextFieldRenderUseCase";
4
+ import { execute as videoRenderUseCase } from "../../Video/usecase/VideoRenderUseCase";
5
+ import { $context, $isResize, $resizeComplete } from "../../RendererUtil";
6
+ /**
7
+ * @type {number}
8
+ * @private
9
+ */
10
+ let $color = -1;
11
+ /**
12
+ * @description 描画コマンドから描画を実行
13
+ * Execute drawing from drawing command
14
+ *
15
+ * @param {Float32Array} render_queue
16
+ * @param {ImageBitmap[]} [image_bitmaps=null]
17
+ * @return {void}
18
+ * @method
19
+ * @protected
20
+ */
21
+ export const execute = (render_queue, image_bitmaps) => {
22
+ // reset transfer bounds
23
+ $context.clearTransferBounds();
24
+ let index = 0;
25
+ // update background color
26
+ const color = render_queue[index++];
27
+ if ($color !== color) {
28
+ $color = color;
29
+ if ($color === -1) {
30
+ $context.updateBackgroundColor(0, 0, 0, 0);
31
+ }
32
+ else {
33
+ $context.updateBackgroundColor($color >> 16 & 0xff / 255, $color >> 8 & 0xff / 255, $color & 0xff / 255, 1);
34
+ }
35
+ }
36
+ // reset
37
+ $context.reset();
38
+ $context.setTransform(1, 0, 0, 1, 0, 0);
39
+ $context.fillBackgroundColor();
40
+ while (render_queue.length > index) {
41
+ // hidden
42
+ if (!render_queue[index++]) {
43
+ continue;
44
+ }
45
+ // display object type
46
+ const type = render_queue[index++];
47
+ switch (type) {
48
+ case 0x00: // container
49
+ index = displayObjectContainerRenderUseCase(render_queue, index, image_bitmaps);
50
+ break;
51
+ case 0x01: // shape
52
+ index = shapeRenderUseCase(render_queue, index);
53
+ break;
54
+ case 0x02: // text
55
+ index = textFieldRenderUseCase(render_queue, index);
56
+ break;
57
+ case 0x03: // video
58
+ index = videoRenderUseCase(render_queue, index, image_bitmaps);
59
+ break;
60
+ default:
61
+ console.error("unknown type", type);
62
+ break;
63
+ }
64
+ }
65
+ $context.drawArraysInstanced();
66
+ if ($isResize()) {
67
+ $resizeComplete();
68
+ }
69
+ $context.transferMainCanvas();
70
+ };
@@ -0,0 +1,38 @@
1
+ import type { IMessage } from "./interface/IMessage";
2
+ /**
3
+ * @class
4
+ */
5
+ export declare class CommandController {
6
+ /**
7
+ * @description workerの実行状態
8
+ * Execution status of worker
9
+ *
10
+ * @type {string}
11
+ * @default "deactivate"
12
+ * @public
13
+ */
14
+ state: string;
15
+ /**
16
+ * @description 受け取ったメッセージ配列
17
+ * Received message array
18
+ *
19
+ * @type {array}
20
+ * @default []
21
+ * @public
22
+ */
23
+ queue: IMessage[];
24
+ /**
25
+ * @constructor
26
+ * @public
27
+ */
28
+ constructor();
29
+ /**
30
+ * @description 処理を実行
31
+ * Execute process
32
+ *
33
+ * @return {Promise<void>}
34
+ * @method
35
+ * @public
36
+ */
37
+ execute(): Promise<void>;
38
+ }
@@ -0,0 +1,102 @@
1
+ import { execute as commandInitializeContextService } from "./Command/service/CommandInitializeContextService";
2
+ import { execute as commandResizeService } from "./Command/service/CommandResizeService";
3
+ import { execute as commandRenderUseCase } from "./Command/usecase/CommandRenderUseCase";
4
+ import { execute as commandRemoveCacheService } from "./Command/service/CommandRemoveCacheService";
5
+ import { execute as commandCaptureUseCase } from "./Command/usecase/CommandCaptureUseCase";
6
+ import { $cacheStore } from "@next2d/cache";
7
+ /**
8
+ * @class
9
+ */
10
+ export class CommandController {
11
+ /**
12
+ * @constructor
13
+ * @public
14
+ */
15
+ constructor() {
16
+ /**
17
+ * @description workerの実行状態
18
+ * Execution status of worker
19
+ *
20
+ * @type {string}
21
+ * @default "deactivate"
22
+ * @public
23
+ */
24
+ Object.defineProperty(this, "state", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ /**
31
+ * @description 受け取ったメッセージ配列
32
+ * Received message array
33
+ *
34
+ * @type {array}
35
+ * @default []
36
+ * @public
37
+ */
38
+ Object.defineProperty(this, "queue", {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: true,
42
+ value: void 0
43
+ });
44
+ this.state = "deactivate";
45
+ this.queue = [];
46
+ }
47
+ /**
48
+ * @description 処理を実行
49
+ * Execute process
50
+ *
51
+ * @return {Promise<void>}
52
+ * @method
53
+ * @public
54
+ */
55
+ async execute() {
56
+ this.state = "active";
57
+ while (this.queue.length) {
58
+ const object = this.queue.shift();
59
+ if (!object) {
60
+ continue;
61
+ }
62
+ switch (object.command) {
63
+ case "render":
64
+ commandRenderUseCase(object.buffer.subarray(0, object.length), object.imageBitmaps);
65
+ // 描画完了したらメインスレッドにbufferを返却する
66
+ globalThis.postMessage({
67
+ "message": "render",
68
+ "buffer": object.buffer
69
+ // @ts-ignore
70
+ }, [object.buffer.buffer]);
71
+ break;
72
+ case "resize":
73
+ commandResizeService(object.buffer[0], object.buffer[1], Boolean(object.buffer[2]));
74
+ break;
75
+ case "initialize":
76
+ commandInitializeContextService(object.canvas, object.devicePixelRatio);
77
+ break;
78
+ case "removeCache":
79
+ commandRemoveCacheService(object.buffer);
80
+ break;
81
+ case "cacheClear":
82
+ $cacheStore.reset();
83
+ break;
84
+ case "capture":
85
+ {
86
+ const imageBitmap = await commandCaptureUseCase(object.buffer.subarray(0, object.length), object.width, object.height, object.imageBitmaps);
87
+ // 描画完了したらメインスレッドにbufferを返却する
88
+ globalThis.postMessage({
89
+ "message": "capture",
90
+ "buffer": object.buffer,
91
+ "imageBitmap": imageBitmap
92
+ // @ts-ignore
93
+ }, [object.buffer.buffer, imageBitmap]);
94
+ }
95
+ break;
96
+ default:
97
+ break;
98
+ }
99
+ }
100
+ this.state = "deactivate";
101
+ }
102
+ }
@@ -0,0 +1,11 @@
1
+ import type { IBlendMode } from "../../interface/IBlendMode";
2
+ /**
3
+ * @description ブレンドモードを取得します。
4
+ * Get the blend mode.
5
+ *
6
+ * @param {number} blend_number
7
+ * @return {IBlendMode}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (blend_number: number) => IBlendMode;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @description ブレンドモードを取得します。
3
+ * Get the blend mode.
4
+ *
5
+ * @param {number} blend_number
6
+ * @return {IBlendMode}
7
+ * @method
8
+ * @protected
9
+ */
10
+ export const execute = (blend_number) => {
11
+ switch (blend_number) {
12
+ case 0:
13
+ return "copy";
14
+ case 1:
15
+ return "add";
16
+ case 2:
17
+ return "alpha";
18
+ case 3:
19
+ return "darken";
20
+ case 4:
21
+ return "difference";
22
+ case 5:
23
+ return "erase";
24
+ case 6:
25
+ return "hardlight";
26
+ case 7:
27
+ return "invert";
28
+ case 8:
29
+ return "layer";
30
+ case 9:
31
+ return "lighten";
32
+ case 10:
33
+ return "multiply";
34
+ case 11:
35
+ return "normal";
36
+ case 12:
37
+ return "overlay";
38
+ case 13:
39
+ return "screen";
40
+ case 14:
41
+ return "subtract";
42
+ default:
43
+ return "normal"; // normal
44
+ }
45
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description DisplayObjectContainerのマスク描画を実行します。
3
+ * Execute the mask drawing of DisplayObjectContainer.
4
+ *
5
+ * @param {Float32Array} render_queue
6
+ * @param {number} index
7
+ * @return {number}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (render_queue: Float32Array, index: number) => number;
@@ -0,0 +1,29 @@
1
+ import { execute as shapeClipRenderUseCase } from "../../Shape/usecase/ShapeClipRenderUseCase";
2
+ /**
3
+ * @description DisplayObjectContainerのマスク描画を実行します。
4
+ * Execute the mask drawing of DisplayObjectContainer.
5
+ *
6
+ * @param {Float32Array} render_queue
7
+ * @param {number} index
8
+ * @return {number}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export const execute = (render_queue, index) => {
13
+ const length = render_queue[index++];
14
+ for (let idx = 0; idx < length; ++idx) {
15
+ const type = render_queue[index++];
16
+ switch (type) {
17
+ case 0x00: // container
18
+ index = execute(render_queue, index);
19
+ break;
20
+ case 0x01: // shape
21
+ index = shapeClipRenderUseCase(render_queue, index);
22
+ break;
23
+ // text, videoはマスク対象外
24
+ default:
25
+ break;
26
+ }
27
+ }
28
+ return index;
29
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @description DisplayObjectContainerの描画を実行します。
3
+ * Execute the drawing of DisplayObjectContainer.
4
+ *
5
+ * @param {Float32Array} render_queue
6
+ * @param {number} index
7
+ * @param {ImageBitmap[]} [image_bitmaps=null]
8
+ * @return {number}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (render_queue: Float32Array, index: number, image_bitmaps: ImageBitmap[] | null) => number;