@next2d/core 1.18.12 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +20 -28
- package/src/Canvas/service/CanvasBootOffscreenCanvasService.d.ts +10 -0
- package/src/Canvas/service/CanvasBootOffscreenCanvasService.js +19 -0
- package/src/Canvas/service/CanvasInitializeService.d.ts +11 -0
- package/src/Canvas/service/CanvasInitializeService.js +23 -0
- package/src/Canvas/service/CanvasSetPositionService.d.ts +9 -0
- package/src/Canvas/service/CanvasSetPositionService.js +30 -0
- package/src/Canvas/usecase/CanvasPointerDownEventUseCase.d.ts +10 -0
- package/src/Canvas/usecase/CanvasPointerDownEventUseCase.js +57 -0
- package/src/Canvas/usecase/CanvasPointerLeaveEventUseCase.d.ts +10 -0
- package/src/Canvas/usecase/CanvasPointerLeaveEventUseCase.js +23 -0
- package/src/Canvas/usecase/CanvasPointerMoveEventUseCase.d.ts +10 -0
- package/src/Canvas/usecase/CanvasPointerMoveEventUseCase.js +30 -0
- package/src/Canvas/usecase/CanvasPointerUpEventUseCase.d.ts +10 -0
- package/src/Canvas/usecase/CanvasPointerUpEventUseCase.js +29 -0
- package/src/Canvas/usecase/CanvasRegisterEventUseCase.d.ts +10 -0
- package/src/Canvas/usecase/CanvasRegisterEventUseCase.js +39 -0
- package/src/Canvas/usecase/CanvasWheelEventUseCase.d.ts +11 -0
- package/src/Canvas/usecase/CanvasWheelEventUseCase.js +32 -0
- package/src/Canvas.d.ts +5 -0
- package/src/Canvas.js +16 -0
- package/src/CoreUtil.d.ts +116 -0
- package/src/CoreUtil.js +165 -0
- package/src/Display.d.ts +3 -0
- package/{dist → src}/Display.js +5 -7
- package/src/Events.d.ts +3 -0
- package/{dist → src}/Events.js +3 -2
- package/src/Filters.d.ts +3 -0
- package/src/Geom.d.ts +3 -0
- package/{dist → src}/Geom.js +2 -3
- package/src/Media.d.ts +3 -0
- package/src/Net.d.ts +3 -0
- package/{dist → src}/Net.js +2 -3
- package/src/Next2D/service/VideoSyncService.d.ts +11 -0
- package/src/Next2D/service/VideoSyncService.js +50 -0
- package/src/Next2D/usecase/CaptureToCanvasUseCase.d.ts +12 -0
- package/src/Next2D/usecase/CaptureToCanvasUseCase.js +92 -0
- package/src/Next2D/usecase/CreateRootMovieClipUseCase.d.ts +15 -0
- package/src/Next2D/usecase/CreateRootMovieClipUseCase.js +46 -0
- package/src/Next2D/usecase/LoadUseCase.d.ts +12 -0
- package/src/Next2D/usecase/LoadUseCase.js +66 -0
- package/src/Next2D.d.ts +138 -0
- package/src/Next2D.js +209 -0
- package/src/Player/service/PlayerAppendElementService.d.ts +9 -0
- package/src/Player/service/PlayerAppendElementService.js +22 -0
- package/src/Player/service/PlayerApplyContainerElementStyleService.d.ts +12 -0
- package/src/Player/service/PlayerApplyContainerElementStyleService.js +44 -0
- package/src/Player/service/PlayerCreateContainerElementService.d.ts +9 -0
- package/src/Player/service/PlayerCreateContainerElementService.js +28 -0
- package/src/Player/service/PlayerDoubleClickEventService.d.ts +10 -0
- package/src/Player/service/PlayerDoubleClickEventService.js +24 -0
- package/src/Player/service/PlayerKeyDownEventService.d.ts +10 -0
- package/src/Player/service/PlayerKeyDownEventService.js +24 -0
- package/src/Player/service/PlayerKeyUpEventService.d.ts +10 -0
- package/src/Player/service/PlayerKeyUpEventService.js +23 -0
- package/src/Player/service/PlayerLoadingAnimationService.d.ts +10 -0
- package/src/Player/service/PlayerLoadingAnimationService.js +33 -0
- package/src/Player/service/PlayerPointerDownEventService.d.ts +10 -0
- package/src/Player/service/PlayerPointerDownEventService.js +47 -0
- package/src/Player/service/PlayerPointerMoveEventService.d.ts +10 -0
- package/src/Player/service/PlayerPointerMoveEventService.js +86 -0
- package/src/Player/service/PlayerPointerUpEventService.d.ts +10 -0
- package/src/Player/service/PlayerPointerUpEventService.js +35 -0
- package/src/Player/service/PlayerRemoveCachePostMessageService.d.ts +9 -0
- package/src/Player/service/PlayerRemoveCachePostMessageService.js +37 -0
- package/src/Player/service/PlayerRemoveLoadingElementService.d.ts +9 -0
- package/src/Player/service/PlayerRemoveLoadingElementService.js +18 -0
- package/src/Player/service/PlayerRenderingPostMessageService.d.ts +14 -0
- package/src/Player/service/PlayerRenderingPostMessageService.js +74 -0
- package/src/Player/service/PlayerResizePostMessageService.d.ts +10 -0
- package/src/Player/service/PlayerResizePostMessageService.js +40 -0
- package/src/Player/service/PlayerSetCurrentMousePointService.d.ts +10 -0
- package/src/Player/service/PlayerSetCurrentMousePointService.js +33 -0
- package/src/Player/service/PlayerStopService.d.ts +9 -0
- package/src/Player/service/PlayerStopService.js +18 -0
- package/src/Player/service/PlayerTransferCanvasPostMessageService.d.ts +13 -0
- package/src/Player/service/PlayerTransferCanvasPostMessageService.js +80 -0
- package/src/Player/usecase/PlayerBootUseCase.d.ts +11 -0
- package/src/Player/usecase/PlayerBootUseCase.js +30 -0
- package/src/Player/usecase/PlayerHitTestUseCase.d.ts +9 -0
- package/src/Player/usecase/PlayerHitTestUseCase.js +35 -0
- package/src/Player/usecase/PlayerPlayUseCase.d.ts +9 -0
- package/src/Player/usecase/PlayerPlayUseCase.js +26 -0
- package/src/Player/usecase/PlayerReadyCompleteUseCase.d.ts +5 -0
- package/src/Player/usecase/PlayerReadyCompleteUseCase.js +16 -0
- package/src/Player/usecase/PlayerRegisterEventUseCase.d.ts +9 -0
- package/src/Player/usecase/PlayerRegisterEventUseCase.js +15 -0
- package/src/Player/usecase/PlayerResizeEventUseCase.d.ts +9 -0
- package/src/Player/usecase/PlayerResizeEventUseCase.js +78 -0
- package/src/Player/usecase/PlayerResizeRegisterUseCase.d.ts +9 -0
- package/src/Player/usecase/PlayerResizeRegisterUseCase.js +20 -0
- package/src/Player/usecase/PlayerTickerUseCase.d.ts +10 -0
- package/src/Player/usecase/PlayerTickerUseCase.js +50 -0
- package/src/Player.d.ts +193 -0
- package/src/Player.js +314 -0
- package/src/RendererWorker.d.ts +5 -0
- package/src/RendererWorker.js +2 -0
- package/src/Text.d.ts +3 -0
- package/{dist → src}/Text.js +3 -2
- package/src/UI.d.ts +3 -0
- package/{dist → src}/UI.js +1 -2
- package/{dist → src}/index.d.ts +1 -0
- package/{dist → src}/index.js +1 -0
- package/src/interface/ICaptureMessage.d.ts +8 -0
- package/src/interface/ICaptureMessage.js +1 -0
- package/src/interface/ICaptureOptions.d.ts +7 -0
- package/src/interface/ICaptureOptions.js +1 -0
- package/src/interface/IDisplay.d.ts +15 -0
- package/src/interface/IDisplay.js +1 -0
- package/src/interface/IDisplayObject.d.ts +2 -0
- package/src/interface/IDisplayObject.js +1 -0
- package/src/interface/IEvents.d.ts +13 -0
- package/src/interface/IEvents.js +1 -0
- package/src/interface/IFilters.d.ts +12 -0
- package/src/interface/IFilters.js +1 -0
- package/src/interface/IGeom.d.ts +7 -0
- package/src/interface/IGeom.js +1 -0
- package/src/interface/IMedia.d.ts +7 -0
- package/src/interface/IMedia.js +1 -0
- package/src/interface/INet.d.ts +4 -0
- package/src/interface/INet.js +1 -0
- package/src/interface/IPlayerHitObject.d.ts +7 -0
- package/src/interface/IPlayerHitObject.js +1 -0
- package/src/interface/IPlayerOptions.d.ts +7 -0
- package/src/interface/IPlayerOptions.js +1 -0
- package/src/interface/IRemoveCacheMessage.d.ts +4 -0
- package/src/interface/IRemoveCacheMessage.js +1 -0
- package/src/interface/IRenderMessage.d.ts +6 -0
- package/src/interface/IRenderMessage.js +1 -0
- package/src/interface/IResizeMessage.d.ts +4 -0
- package/src/interface/IResizeMessage.js +1 -0
- package/src/interface/IStageData.d.ts +6 -0
- package/src/interface/IStageData.js +1 -0
- package/src/interface/IText.d.ts +6 -0
- package/src/interface/IText.js +1 -0
- package/src/interface/IUI.d.ts +5 -0
- package/src/interface/IUI.js +1 -0
- package/src/renderer.worker.inline.js +1 -0
- package/dist/Display.d.ts +0 -3
- package/dist/Events.d.ts +0 -3
- package/dist/Filters.d.ts +0 -3
- package/dist/Geom.d.ts +0 -3
- package/dist/Media.d.ts +0 -3
- package/dist/Net.d.ts +0 -3
- package/dist/Next2D.d.ts +0 -62
- package/dist/Next2D.js +0 -198
- package/dist/Player.d.ts +0 -336
- package/dist/Player.js +0 -1879
- package/dist/Text.d.ts +0 -3
- package/dist/UI.d.ts +0 -3
- /package/{dist → src}/Filters.js +0 -0
- /package/{dist → src}/Media.js +0 -0
package/src/CoreUtil.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @type {string}
|
|
3
|
+
* @const
|
|
4
|
+
*/
|
|
5
|
+
export const $PREFIX = "__next2d__";
|
|
6
|
+
/**
|
|
7
|
+
* @type {number}
|
|
8
|
+
* @const
|
|
9
|
+
*/
|
|
10
|
+
export const $devicePixelRatio = Math.min(2, window.devicePixelRatio);
|
|
11
|
+
/**
|
|
12
|
+
* @param {number} value
|
|
13
|
+
* @param {number} min
|
|
14
|
+
* @param {number} max
|
|
15
|
+
* @param {number} [default_value=null]
|
|
16
|
+
* @return {number}
|
|
17
|
+
* @method
|
|
18
|
+
* @static
|
|
19
|
+
*/
|
|
20
|
+
export const $clamp = (value, min, max, default_value = null) => {
|
|
21
|
+
const number = +value;
|
|
22
|
+
return isNaN(number) && default_value !== null
|
|
23
|
+
? default_value
|
|
24
|
+
: Math.min(Math.max(min, isNaN(number) ? 0 : number), max);
|
|
25
|
+
};
|
|
26
|
+
const canvas = document.createElement("canvas");
|
|
27
|
+
canvas.width = canvas.height = 1;
|
|
28
|
+
/**
|
|
29
|
+
* @type {CanvasRenderingContext2D}
|
|
30
|
+
* @const
|
|
31
|
+
*/
|
|
32
|
+
export const $hitContext = canvas.getContext("2d");
|
|
33
|
+
/**
|
|
34
|
+
* @type {HTMLDivElement}
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
let $mainElement = null;
|
|
38
|
+
/**
|
|
39
|
+
* @description メインのコンテナになるDivElementを設定します。
|
|
40
|
+
* Set the DivElement to be the main container.
|
|
41
|
+
*
|
|
42
|
+
* @param {HTMLDivElement} element
|
|
43
|
+
* @method
|
|
44
|
+
* @protected
|
|
45
|
+
*/
|
|
46
|
+
export const $setMainElement = (element) => {
|
|
47
|
+
$mainElement = element;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* @type {HTMLCanvasElement | null}
|
|
51
|
+
* @private
|
|
52
|
+
*/
|
|
53
|
+
let $canvas = null;
|
|
54
|
+
/**
|
|
55
|
+
* @description メインのCanvasになるCanvasElementを設定します。
|
|
56
|
+
* Set the CanvasElement to be the main canvas.
|
|
57
|
+
*
|
|
58
|
+
* @param {HTMLCanvasElement} element
|
|
59
|
+
* @method
|
|
60
|
+
* @protected
|
|
61
|
+
*/
|
|
62
|
+
export const $setCanvas = (element) => {
|
|
63
|
+
$canvas = element;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* @description メインのCanvasになるCanvasElementを取得します。
|
|
67
|
+
* Get the CanvasElement to be the main canvas.
|
|
68
|
+
*
|
|
69
|
+
* @return {HTMLCanvasElement}
|
|
70
|
+
* @method
|
|
71
|
+
* @protected
|
|
72
|
+
*/
|
|
73
|
+
export const $getCanvas = () => {
|
|
74
|
+
return $canvas;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* @description メインのコンテナになるDivElementを取得します。
|
|
78
|
+
* Get the DivElement to be the main container.
|
|
79
|
+
*
|
|
80
|
+
* @return {HTMLDivElement}
|
|
81
|
+
* @method
|
|
82
|
+
* @protected
|
|
83
|
+
*/
|
|
84
|
+
export const $getMainElement = () => {
|
|
85
|
+
return $mainElement;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* @description 描画用のmatrix情報
|
|
89
|
+
* Matrix information for drawing
|
|
90
|
+
*
|
|
91
|
+
* @type {Float32Array}
|
|
92
|
+
* @protected
|
|
93
|
+
*/
|
|
94
|
+
export const $renderMatrix = new Float32Array([1, 0, 0, 1, 0, 0]);
|
|
95
|
+
/**
|
|
96
|
+
* @description マウス、タップ時の画面のmatrix情報
|
|
97
|
+
* Screen matrix information when mouse or tap is pressed
|
|
98
|
+
*
|
|
99
|
+
* @type {Float32Array}
|
|
100
|
+
* @protected
|
|
101
|
+
*/
|
|
102
|
+
export const $hitMatrix = new Float32Array([1, 0, 0, 1, 0, 0]);
|
|
103
|
+
/**
|
|
104
|
+
* @description マウス、タップがヒットしたDisplayObjectを取得します。
|
|
105
|
+
* Get the DisplayObject that the mouse or tap hit.
|
|
106
|
+
*
|
|
107
|
+
* @type {IPlayerHitObject}
|
|
108
|
+
* @protected
|
|
109
|
+
*/
|
|
110
|
+
export const $hitObject = {
|
|
111
|
+
"x": 0,
|
|
112
|
+
"y": 0,
|
|
113
|
+
"pointer": "",
|
|
114
|
+
"hit": null
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* @description マウス、タップがヒットしたDisplayObjectを取得します。
|
|
118
|
+
* Get the DisplayObject that the mouse or tap hit.
|
|
119
|
+
*
|
|
120
|
+
* @type {IDisplayObject<any> | null}
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
123
|
+
let $rollOverDisplayObject = null;
|
|
124
|
+
/**
|
|
125
|
+
* @description マウス、タップがヒットしたDisplayObjectを取得します。
|
|
126
|
+
* Get the DisplayObject that the mouse or tap hit.
|
|
127
|
+
*
|
|
128
|
+
* @param {IDisplayObject<any>} displayObject
|
|
129
|
+
* @return {void}
|
|
130
|
+
* @method
|
|
131
|
+
* @protected
|
|
132
|
+
*/
|
|
133
|
+
export const $setRollOverDisplayObject = (displayObject) => {
|
|
134
|
+
$rollOverDisplayObject = displayObject;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* @description マウス、タップがヒットしたDisplayObjectを取得します。
|
|
138
|
+
* Get the DisplayObject that the mouse or tap hit.
|
|
139
|
+
*
|
|
140
|
+
* @return {IDisplayObject<any>}
|
|
141
|
+
* @method
|
|
142
|
+
* @protected
|
|
143
|
+
*/
|
|
144
|
+
export const $getRollOverDisplayObject = () => {
|
|
145
|
+
return $rollOverDisplayObject;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* @description 指定された値を2の累乗に切り上げます。
|
|
149
|
+
* Rounds the specified value up to a power of two.
|
|
150
|
+
*
|
|
151
|
+
* @param {number} v
|
|
152
|
+
* @return {number}
|
|
153
|
+
* @method
|
|
154
|
+
* @protected
|
|
155
|
+
*/
|
|
156
|
+
export const $upperPowerOfTwo = (v) => {
|
|
157
|
+
v--;
|
|
158
|
+
v |= v >> 1;
|
|
159
|
+
v |= v >> 2;
|
|
160
|
+
v |= v >> 4;
|
|
161
|
+
v |= v >> 8;
|
|
162
|
+
v |= v >> 16;
|
|
163
|
+
v++;
|
|
164
|
+
return v;
|
|
165
|
+
};
|
package/src/Display.d.ts
ADDED
package/{dist → src}/Display.js
RENAMED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Sprite, MovieClip, BitmapData, BlendMode, DisplayObject, DisplayObjectContainer, FrameLabel, Graphics, InteractiveObject, Loader, Shape, stage } from "@next2d/display";
|
|
2
2
|
const display = {
|
|
3
|
-
DisplayObject,
|
|
4
|
-
InteractiveObject,
|
|
5
|
-
DisplayObjectContainer,
|
|
6
3
|
Sprite,
|
|
7
4
|
MovieClip,
|
|
8
5
|
BitmapData,
|
|
9
6
|
BlendMode,
|
|
7
|
+
DisplayObject,
|
|
8
|
+
DisplayObjectContainer,
|
|
10
9
|
FrameLabel,
|
|
11
10
|
Graphics,
|
|
11
|
+
InteractiveObject,
|
|
12
12
|
Loader,
|
|
13
|
-
LoaderInfo,
|
|
14
13
|
Shape,
|
|
15
|
-
|
|
16
|
-
TextField
|
|
14
|
+
stage
|
|
17
15
|
};
|
|
18
16
|
Object.entries(display).forEach(([key, DisplayClass]) => {
|
|
19
17
|
Object.defineProperty(display, key, {
|
package/src/Events.d.ts
ADDED
package/{dist → src}/Events.js
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Event, EventDispatcher, EventPhase, FocusEvent, HTTPStatusEvent, IOErrorEvent,
|
|
1
|
+
import { Event, EventDispatcher, EventPhase, FocusEvent, HTTPStatusEvent, IOErrorEvent, PointerEvent, JobEvent, ProgressEvent, VideoEvent } from "@next2d/events";
|
|
2
2
|
const events = {
|
|
3
3
|
Event,
|
|
4
4
|
EventDispatcher,
|
|
@@ -6,7 +6,8 @@ const events = {
|
|
|
6
6
|
FocusEvent,
|
|
7
7
|
HTTPStatusEvent,
|
|
8
8
|
IOErrorEvent,
|
|
9
|
-
|
|
9
|
+
PointerEvent,
|
|
10
|
+
JobEvent,
|
|
10
11
|
ProgressEvent,
|
|
11
12
|
VideoEvent
|
|
12
13
|
};
|
package/src/Filters.d.ts
ADDED
package/src/Geom.d.ts
ADDED
package/{dist → src}/Geom.js
RENAMED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ColorTransform, Matrix, Point, Rectangle
|
|
1
|
+
import { ColorTransform, Matrix, Point, Rectangle } from "@next2d/geom";
|
|
2
2
|
const geom = {
|
|
3
3
|
ColorTransform,
|
|
4
4
|
Matrix,
|
|
5
5
|
Point,
|
|
6
|
-
Rectangle
|
|
7
|
-
Transform
|
|
6
|
+
Rectangle
|
|
8
7
|
};
|
|
9
8
|
Object.entries(geom).forEach(([key, GeomClass]) => {
|
|
10
9
|
Object.defineProperty(geom, key, {
|
package/src/Media.d.ts
ADDED
package/src/Net.d.ts
ADDED
package/{dist → src}/Net.js
RENAMED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DisplayObject } from "@next2d/display";
|
|
2
|
+
/**
|
|
3
|
+
* @description DisplayObject の子要素に Video が含まれている場合、ロードが完了するまで待機します。
|
|
4
|
+
* If the child element of DisplayObject contains Video, wait until the loading is complete.
|
|
5
|
+
*
|
|
6
|
+
* @param {DisplayObject} display_object
|
|
7
|
+
* @return {Promise<void>}
|
|
8
|
+
* @method
|
|
9
|
+
* @protected
|
|
10
|
+
*/
|
|
11
|
+
export declare const execute: <D extends DisplayObject>(display_object: D) => Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description DisplayObject の子要素に Video が含まれている場合、ロードが完了するまで待機します。
|
|
3
|
+
* If the child element of DisplayObject contains Video, wait until the loading is complete.
|
|
4
|
+
*
|
|
5
|
+
* @param {DisplayObject} display_object
|
|
6
|
+
* @return {Promise<void>}
|
|
7
|
+
* @method
|
|
8
|
+
* @protected
|
|
9
|
+
*/
|
|
10
|
+
export const execute = async (display_object) => {
|
|
11
|
+
switch (true) {
|
|
12
|
+
case display_object.isVideo:
|
|
13
|
+
break;
|
|
14
|
+
case display_object.isContainerEnabled:
|
|
15
|
+
{
|
|
16
|
+
const children = display_object.children;
|
|
17
|
+
for (let idx = 0; idx < children.length; ++idx) {
|
|
18
|
+
const displayObject = children[idx];
|
|
19
|
+
if (!displayObject) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (displayObject.isVideo) {
|
|
23
|
+
const muted = displayObject.muted;
|
|
24
|
+
displayObject.muted = true;
|
|
25
|
+
await displayObject.play();
|
|
26
|
+
displayObject.pause();
|
|
27
|
+
displayObject.muted = muted;
|
|
28
|
+
await new Promise((resolve) => {
|
|
29
|
+
const wait = async () => {
|
|
30
|
+
if (displayObject.loaded) {
|
|
31
|
+
displayObject.seek(0);
|
|
32
|
+
resolve();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
requestAnimationFrame(wait);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
requestAnimationFrame(wait);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (displayObject.isContainerEnabled) {
|
|
42
|
+
await execute(displayObject);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DisplayObject } from "@next2d/display";
|
|
2
|
+
import type { ICaptureOptions } from "../../interface/ICaptureOptions";
|
|
3
|
+
/**
|
|
4
|
+
* @description 指定した DisplayObject を Canvas に描画する
|
|
5
|
+
* Draw the specified DisplayObject in Canvas
|
|
6
|
+
*
|
|
7
|
+
* @param {D} display_object
|
|
8
|
+
* @param {ICaptureOptions} [opstions=null]
|
|
9
|
+
* @method
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
export declare const execute: <D extends DisplayObject>(display_object: D, opstions?: ICaptureOptions | null) => Promise<HTMLCanvasElement>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { stage } from "@next2d/display";
|
|
2
|
+
import { $cacheStore } from "@next2d/cache";
|
|
3
|
+
import { $player } from "../../Player";
|
|
4
|
+
import { $devicePixelRatio } from "../../CoreUtil";
|
|
5
|
+
import { execute as playerResizePostMessageService } from "../../Player/service/PlayerResizePostMessageService";
|
|
6
|
+
import { execute as playerTransferCanvasPostMessageService } from "../../Player/service/PlayerTransferCanvasPostMessageService";
|
|
7
|
+
import { execute as videoSyncService } from "../service/VideoSyncService";
|
|
8
|
+
import { Matrix, ColorTransform } from "@next2d/geom";
|
|
9
|
+
/**
|
|
10
|
+
* @type {Float32Array}
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
const $MATRIX_ARRAY_IDENTITY = new Float32Array([1, 0, 0, 1, 0, 0]);
|
|
14
|
+
/**
|
|
15
|
+
* @type {Float32Array}
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
const $COLOR_ARRAY_IDENTITY = new Float32Array([1, 1, 1, 1, 0, 0, 0, 0]);
|
|
19
|
+
/**
|
|
20
|
+
* @description 指定した DisplayObject を Canvas に描画する
|
|
21
|
+
* Draw the specified DisplayObject in Canvas
|
|
22
|
+
*
|
|
23
|
+
* @param {D} display_object
|
|
24
|
+
* @param {ICaptureOptions} [opstions=null]
|
|
25
|
+
* @method
|
|
26
|
+
* @protected
|
|
27
|
+
*/
|
|
28
|
+
export const execute = async (display_object, opstions = null) => {
|
|
29
|
+
if (opstions && opstions.videoSync) {
|
|
30
|
+
await videoSyncService(display_object);
|
|
31
|
+
}
|
|
32
|
+
const tColorTransform = opstions && opstions.colorTransform
|
|
33
|
+
? opstions.colorTransform.rawData
|
|
34
|
+
: $COLOR_ARRAY_IDENTITY;
|
|
35
|
+
const rectangle = display_object.getBounds();
|
|
36
|
+
const translateMatrix = new Float32Array([
|
|
37
|
+
1, 0, 0, 1, -rectangle.x, -rectangle.y
|
|
38
|
+
]);
|
|
39
|
+
const tMatrix = opstions && opstions.matrix
|
|
40
|
+
? Matrix.multiply(opstions.matrix.rawData, translateMatrix)
|
|
41
|
+
: Matrix.multiply($MATRIX_ARRAY_IDENTITY, translateMatrix);
|
|
42
|
+
const transferredCanvas = opstions && opstions.canvas
|
|
43
|
+
? opstions.canvas
|
|
44
|
+
: $cacheStore.getCanvas();
|
|
45
|
+
const xScale = Math.sqrt(tMatrix[0] * tMatrix[0] + tMatrix[1] * tMatrix[1]);
|
|
46
|
+
const yScale = Math.sqrt(tMatrix[2] * tMatrix[2] + tMatrix[3] * tMatrix[3]);
|
|
47
|
+
const width = Math.ceil(display_object.width * xScale);
|
|
48
|
+
const height = Math.ceil(display_object.height * yScale);
|
|
49
|
+
if (width <= 0 || height <= 0) {
|
|
50
|
+
return transferredCanvas;
|
|
51
|
+
}
|
|
52
|
+
// resize canvas
|
|
53
|
+
transferredCanvas.width = width;
|
|
54
|
+
transferredCanvas.height = height;
|
|
55
|
+
const stopFlag = $player.stopFlag;
|
|
56
|
+
if (!stopFlag) {
|
|
57
|
+
$player.stop();
|
|
58
|
+
}
|
|
59
|
+
// resize
|
|
60
|
+
let isResize = false;
|
|
61
|
+
const cacheWidth = $player.rendererWidth;
|
|
62
|
+
const cacheHeight = $player.rendererHeight;
|
|
63
|
+
const cacheScale = $player.rendererScale;
|
|
64
|
+
if (width > cacheWidth || height > cacheHeight) {
|
|
65
|
+
isResize = true;
|
|
66
|
+
const scale = Math.min(width / stage.stageWidth, height / stage.stageHeight) * $devicePixelRatio;
|
|
67
|
+
// update
|
|
68
|
+
stage.rendererScale = $player.rendererScale = scale;
|
|
69
|
+
stage.rendererWidth = $player.rendererWidth = width;
|
|
70
|
+
stage.rendererHeight = $player.rendererHeight = height;
|
|
71
|
+
// workerにリサイズを通知
|
|
72
|
+
playerResizePostMessageService(false);
|
|
73
|
+
}
|
|
74
|
+
// draw
|
|
75
|
+
await playerTransferCanvasPostMessageService(display_object, tMatrix, tColorTransform, transferredCanvas);
|
|
76
|
+
// restore
|
|
77
|
+
if (isResize) {
|
|
78
|
+
stage.rendererScale = $player.rendererScale = cacheScale;
|
|
79
|
+
stage.rendererWidth = $player.rendererWidth = cacheWidth;
|
|
80
|
+
stage.rendererHeight = $player.rendererHeight = cacheHeight;
|
|
81
|
+
// workerにリサイズを通知
|
|
82
|
+
playerResizePostMessageService(false);
|
|
83
|
+
}
|
|
84
|
+
if (!stopFlag) {
|
|
85
|
+
$player.play();
|
|
86
|
+
}
|
|
87
|
+
Matrix.release(tMatrix);
|
|
88
|
+
if (opstions && opstions.colorTransform) {
|
|
89
|
+
ColorTransform.release(tColorTransform);
|
|
90
|
+
}
|
|
91
|
+
return transferredCanvas;
|
|
92
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IPlayerOptions } from "../../interface/IPlayerOptions";
|
|
2
|
+
import { Sprite } from "@next2d/display";
|
|
3
|
+
/**
|
|
4
|
+
* @description RootのMovieClipを作成します。
|
|
5
|
+
* Create a MovieClip for Root.
|
|
6
|
+
*
|
|
7
|
+
* @param {number} [width=240]
|
|
8
|
+
* @param {number} [height=240]
|
|
9
|
+
* @param {number} [fps=60]
|
|
10
|
+
* @param {object} [options=null]
|
|
11
|
+
* @return {Sprite}
|
|
12
|
+
* @method
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
export declare const execute: (width?: number, height?: number, fps?: number, options?: IPlayerOptions | null) => Sprite;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { $clamp } from "../../CoreUtil";
|
|
2
|
+
import { execute as playerRemoveLoadingElementService } from "../../Player/service/PlayerRemoveLoadingElementService";
|
|
3
|
+
import { execute as playerAppendElementService } from "../../Player/service/PlayerAppendElementService";
|
|
4
|
+
import { execute as playerReadyCompleteUseCase } from "../../Player/usecase/PlayerReadyCompleteUseCase";
|
|
5
|
+
import { execute as playerBootUseCase } from "../../Player/usecase/PlayerBootUseCase";
|
|
6
|
+
import { execute as canvasSetPositionService } from "../../Canvas/service/CanvasSetPositionService";
|
|
7
|
+
import { Sprite, stage } from "@next2d/display";
|
|
8
|
+
/**
|
|
9
|
+
* @type {boolean}
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
let $boot = false;
|
|
13
|
+
/**
|
|
14
|
+
* @description RootのMovieClipを作成します。
|
|
15
|
+
* Create a MovieClip for Root.
|
|
16
|
+
*
|
|
17
|
+
* @param {number} [width=240]
|
|
18
|
+
* @param {number} [height=240]
|
|
19
|
+
* @param {number} [fps=60]
|
|
20
|
+
* @param {object} [options=null]
|
|
21
|
+
* @return {Sprite}
|
|
22
|
+
* @method
|
|
23
|
+
* @protected
|
|
24
|
+
*/
|
|
25
|
+
export const execute = (width = 240, height = 240, fps = 60, options = null) => {
|
|
26
|
+
if ($boot) {
|
|
27
|
+
return stage.getChildAt(0);
|
|
28
|
+
}
|
|
29
|
+
$boot = true;
|
|
30
|
+
// setup
|
|
31
|
+
stage.stageWidth = width | 0;
|
|
32
|
+
stage.stageHeight = height | 0;
|
|
33
|
+
stage.frameRate = $clamp(fps, 1, 60, 60);
|
|
34
|
+
// boot player
|
|
35
|
+
playerBootUseCase(options);
|
|
36
|
+
const root = stage.addChild(new Sprite());
|
|
37
|
+
// ready complete
|
|
38
|
+
playerReadyCompleteUseCase();
|
|
39
|
+
// remove loading
|
|
40
|
+
playerRemoveLoadingElementService();
|
|
41
|
+
// append canvas
|
|
42
|
+
playerAppendElementService();
|
|
43
|
+
// set position
|
|
44
|
+
canvasSetPositionService();
|
|
45
|
+
return root;
|
|
46
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IPlayerOptions } from "../../interface/IPlayerOptions";
|
|
2
|
+
/**
|
|
3
|
+
* @description 指定のURLからJSONファイルを読み込みます。
|
|
4
|
+
* Reads a JSON file from the specified URL.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} url
|
|
7
|
+
* @param {object} [options=null]
|
|
8
|
+
* @return {Promise}
|
|
9
|
+
* @method
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
export declare const execute: (url: string, options?: IPlayerOptions | null) => Promise<void>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { $clamp } from "../../CoreUtil";
|
|
2
|
+
import { URLRequest } from "@next2d/net";
|
|
3
|
+
import { IOErrorEvent } from "@next2d/events";
|
|
4
|
+
import { execute as playerResizeEventUseCase } from "../../Player/usecase/PlayerResizeEventUseCase";
|
|
5
|
+
import { execute as playerRemoveLoadingElementService } from "../../Player/service/PlayerRemoveLoadingElementService";
|
|
6
|
+
import { execute as playerAppendCanvasElementService } from "../../Player/service/PlayerAppendElementService";
|
|
7
|
+
import { execute as playerReadyCompleteUseCase } from "../../Player/usecase/PlayerReadyCompleteUseCase";
|
|
8
|
+
import { execute as playerBootUseCase } from "../../Player/usecase/PlayerBootUseCase";
|
|
9
|
+
import { execute as canvasSetPositionService } from "../../Canvas/service/CanvasSetPositionService";
|
|
10
|
+
import { Loader, stage } from "@next2d/display";
|
|
11
|
+
/**
|
|
12
|
+
* @description 指定のURLからJSONファイルを読み込みます。
|
|
13
|
+
* Reads a JSON file from the specified URL.
|
|
14
|
+
*
|
|
15
|
+
* @param {string} url
|
|
16
|
+
* @param {object} [options=null]
|
|
17
|
+
* @return {Promise}
|
|
18
|
+
* @method
|
|
19
|
+
* @protected
|
|
20
|
+
*/
|
|
21
|
+
export const execute = async (url, options = null) => {
|
|
22
|
+
if (url === "develop") {
|
|
23
|
+
const path = location
|
|
24
|
+
.search
|
|
25
|
+
.slice(1)
|
|
26
|
+
.split("&")[0];
|
|
27
|
+
if (!path) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
url = `${location.origin}/${path}`;
|
|
31
|
+
}
|
|
32
|
+
if (!url) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (url.charAt(1) === "/") {
|
|
36
|
+
url = url.slice(1);
|
|
37
|
+
}
|
|
38
|
+
// player
|
|
39
|
+
playerBootUseCase(options);
|
|
40
|
+
const loader = new Loader();
|
|
41
|
+
const loaderInfo = loader.contentLoaderInfo;
|
|
42
|
+
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, (event) => {
|
|
43
|
+
alert("Error: " + event.text);
|
|
44
|
+
});
|
|
45
|
+
await loader.load(new URLRequest(url));
|
|
46
|
+
if (!loaderInfo.data) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// update properties
|
|
50
|
+
const stageData = loaderInfo.data.stage;
|
|
51
|
+
stage.stageWidth = stageData.width;
|
|
52
|
+
stage.stageHeight = stageData.height;
|
|
53
|
+
stage.frameRate = $clamp(stageData.fps, 1, 60, 60);
|
|
54
|
+
stage.backgroundColor = options && options.bgColor ? options.bgColor : stageData.bgColor;
|
|
55
|
+
stage.addChild(loaderInfo.content);
|
|
56
|
+
// resize
|
|
57
|
+
playerResizeEventUseCase();
|
|
58
|
+
// // ready complete
|
|
59
|
+
playerReadyCompleteUseCase();
|
|
60
|
+
// // remove loading
|
|
61
|
+
playerRemoveLoadingElementService();
|
|
62
|
+
// // append canvas
|
|
63
|
+
playerAppendCanvasElementService();
|
|
64
|
+
// // set position
|
|
65
|
+
canvasSetPositionService();
|
|
66
|
+
};
|