@swf2es/player 0.1.0 → 0.1.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.
Files changed (277) hide show
  1. package/package.json +7 -7
  2. package/dist/audio.d.ts +0 -22
  3. package/dist/audio.d.ts.map +0 -1
  4. package/dist/audio.js +0 -106
  5. package/dist/audio.js.map +0 -1
  6. package/dist/bitmap-filters.d.ts +0 -29
  7. package/dist/bitmap-filters.d.ts.map +0 -1
  8. package/dist/bitmap-filters.js +0 -906
  9. package/dist/bitmap-filters.js.map +0 -1
  10. package/dist/bitmap-ops.d.ts +0 -113
  11. package/dist/bitmap-ops.d.ts.map +0 -1
  12. package/dist/bitmap-ops.js +0 -725
  13. package/dist/bitmap-ops.js.map +0 -1
  14. package/dist/bitmap.d.ts +0 -98
  15. package/dist/bitmap.d.ts.map +0 -1
  16. package/dist/bitmap.js +0 -314
  17. package/dist/bitmap.js.map +0 -1
  18. package/dist/bounds.d.ts +0 -26
  19. package/dist/bounds.d.ts.map +0 -1
  20. package/dist/bounds.js +0 -300
  21. package/dist/bounds.js.map +0 -1
  22. package/dist/color.d.ts +0 -7
  23. package/dist/color.d.ts.map +0 -1
  24. package/dist/color.js +0 -42
  25. package/dist/color.js.map +0 -1
  26. package/dist/display.d.ts +0 -425
  27. package/dist/display.d.ts.map +0 -1
  28. package/dist/display.js +0 -1274
  29. package/dist/display.js.map +0 -1
  30. package/dist/drawing.d.ts +0 -52
  31. package/dist/drawing.d.ts.map +0 -1
  32. package/dist/drawing.js +0 -204
  33. package/dist/drawing.js.map +0 -1
  34. package/dist/filters.d.ts +0 -54
  35. package/dist/filters.d.ts.map +0 -1
  36. package/dist/filters.js +0 -155
  37. package/dist/filters.js.map +0 -1
  38. package/dist/fonts.d.ts +0 -23
  39. package/dist/fonts.d.ts.map +0 -1
  40. package/dist/fonts.js +0 -91
  41. package/dist/fonts.js.map +0 -1
  42. package/dist/geometry.d.ts +0 -21
  43. package/dist/geometry.d.ts.map +0 -1
  44. package/dist/geometry.js +0 -76
  45. package/dist/geometry.js.map +0 -1
  46. package/dist/gradients.d.ts +0 -29
  47. package/dist/gradients.d.ts.map +0 -1
  48. package/dist/gradients.js +0 -116
  49. package/dist/gradients.js.map +0 -1
  50. package/dist/images.d.ts +0 -22
  51. package/dist/images.d.ts.map +0 -1
  52. package/dist/images.js +0 -147
  53. package/dist/images.js.map +0 -1
  54. package/dist/input.d.ts +0 -79
  55. package/dist/input.d.ts.map +0 -1
  56. package/dist/input.js +0 -366
  57. package/dist/input.js.map +0 -1
  58. package/dist/keyboard.d.ts +0 -97
  59. package/dist/keyboard.d.ts.map +0 -1
  60. package/dist/keyboard.js +0 -583
  61. package/dist/keyboard.js.map +0 -1
  62. package/dist/morph.d.ts +0 -17
  63. package/dist/morph.d.ts.map +0 -1
  64. package/dist/morph.js +0 -218
  65. package/dist/morph.js.map +0 -1
  66. package/dist/pixi-blend.d.ts +0 -7
  67. package/dist/pixi-blend.d.ts.map +0 -1
  68. package/dist/pixi-blend.js +0 -253
  69. package/dist/pixi-blend.js.map +0 -1
  70. package/dist/pixi-color.d.ts +0 -54
  71. package/dist/pixi-color.d.ts.map +0 -1
  72. package/dist/pixi-color.js +0 -336
  73. package/dist/pixi-color.js.map +0 -1
  74. package/dist/pixi-filters.d.ts +0 -40
  75. package/dist/pixi-filters.d.ts.map +0 -1
  76. package/dist/pixi-filters.js +0 -953
  77. package/dist/pixi-filters.js.map +0 -1
  78. package/dist/pixi-resolve.d.ts +0 -4
  79. package/dist/pixi-resolve.d.ts.map +0 -1
  80. package/dist/pixi-resolve.js +0 -76
  81. package/dist/pixi-resolve.js.map +0 -1
  82. package/dist/pixi.d.ts +0 -219
  83. package/dist/pixi.d.ts.map +0 -1
  84. package/dist/pixi.js +0 -2169
  85. package/dist/pixi.js.map +0 -1
  86. package/dist/playerglobal/flash/filters/filters.d.ts +0 -26
  87. package/dist/playerglobal/flash/filters/filters.d.ts.map +0 -1
  88. package/dist/playerglobal/flash/filters/filters.js +0 -287
  89. package/dist/playerglobal/flash/filters/filters.js.map +0 -1
  90. package/dist/playerglobal/flash/system/FSCommand.d.ts +0 -4
  91. package/dist/playerglobal/flash/system/FSCommand.d.ts.map +0 -1
  92. package/dist/playerglobal/flash/system/FSCommand.js +0 -18
  93. package/dist/playerglobal/flash/system/FSCommand.js.map +0 -1
  94. package/dist/playerglobal/natives.d.ts +0 -10
  95. package/dist/playerglobal/natives.d.ts.map +0 -1
  96. package/dist/playerglobal/natives.js +0 -53
  97. package/dist/playerglobal/natives.js.map +0 -1
  98. package/dist/png.d.ts +0 -4
  99. package/dist/png.d.ts.map +0 -1
  100. package/dist/png.js +0 -140
  101. package/dist/png.js.map +0 -1
  102. package/dist/render/art.d.ts +0 -148
  103. package/dist/render/art.d.ts.map +0 -1
  104. package/dist/render/art.js +0 -575
  105. package/dist/render/art.js.map +0 -1
  106. package/dist/render/batchers.d.ts +0 -23
  107. package/dist/render/batchers.d.ts.map +0 -1
  108. package/dist/render/batchers.js +0 -52
  109. package/dist/render/batchers.js.map +0 -1
  110. package/dist/render/bitmaps.d.ts +0 -117
  111. package/dist/render/bitmaps.d.ts.map +0 -1
  112. package/dist/render/bitmaps.js +0 -422
  113. package/dist/render/bitmaps.js.map +0 -1
  114. package/dist/render/blend.d.ts +0 -37
  115. package/dist/render/blend.d.ts.map +0 -1
  116. package/dist/render/blend.js +0 -195
  117. package/dist/render/blend.js.map +0 -1
  118. package/dist/render/color.d.ts +0 -111
  119. package/dist/render/color.d.ts.map +0 -1
  120. package/dist/render/color.js +0 -533
  121. package/dist/render/color.js.map +0 -1
  122. package/dist/render/compositing.d.ts +0 -77
  123. package/dist/render/compositing.d.ts.map +0 -1
  124. package/dist/render/compositing.js +0 -188
  125. package/dist/render/compositing.js.map +0 -1
  126. package/dist/render/filters.d.ts +0 -98
  127. package/dist/render/filters.d.ts.map +0 -1
  128. package/dist/render/filters.js +0 -1326
  129. package/dist/render/filters.js.map +0 -1
  130. package/dist/render/hooks.d.ts +0 -4
  131. package/dist/render/hooks.d.ts.map +0 -1
  132. package/dist/render/hooks.js +0 -48
  133. package/dist/render/hooks.js.map +0 -1
  134. package/dist/render/node.d.ts +0 -139
  135. package/dist/render/node.d.ts.map +0 -1
  136. package/dist/render/node.js +0 -59
  137. package/dist/render/node.js.map +0 -1
  138. package/dist/render/patches.d.ts +0 -54
  139. package/dist/render/patches.d.ts.map +0 -1
  140. package/dist/render/patches.js +0 -154
  141. package/dist/render/patches.js.map +0 -1
  142. package/dist/render/planes.d.ts +0 -74
  143. package/dist/render/planes.d.ts.map +0 -1
  144. package/dist/render/planes.js +0 -267
  145. package/dist/render/planes.js.map +0 -1
  146. package/dist/render/pointer.d.ts +0 -5
  147. package/dist/render/pointer.d.ts.map +0 -1
  148. package/dist/render/pointer.js +0 -279
  149. package/dist/render/pointer.js.map +0 -1
  150. package/dist/render/pools.d.ts +0 -122
  151. package/dist/render/pools.d.ts.map +0 -1
  152. package/dist/render/pools.js +0 -238
  153. package/dist/render/pools.js.map +0 -1
  154. package/dist/render/resolve.d.ts +0 -4
  155. package/dist/render/resolve.d.ts.map +0 -1
  156. package/dist/render/resolve.js +0 -76
  157. package/dist/render/resolve.js.map +0 -1
  158. package/dist/render/saffron.d.ts +0 -135
  159. package/dist/render/saffron.d.ts.map +0 -1
  160. package/dist/render/saffron.js +0 -725
  161. package/dist/render/saffron.js.map +0 -1
  162. package/dist/render/settle.d.ts +0 -60
  163. package/dist/render/settle.d.ts.map +0 -1
  164. package/dist/render/settle.js +0 -128
  165. package/dist/render/settle.js.map +0 -1
  166. package/dist/render/shared.d.ts +0 -25
  167. package/dist/render/shared.d.ts.map +0 -1
  168. package/dist/render/shared.js +0 -33
  169. package/dist/render/shared.js.map +0 -1
  170. package/dist/render/snapshot.d.ts +0 -21
  171. package/dist/render/snapshot.d.ts.map +0 -1
  172. package/dist/render/snapshot.js +0 -91
  173. package/dist/render/snapshot.js.map +0 -1
  174. package/dist/render/spares.d.ts +0 -56
  175. package/dist/render/spares.d.ts.map +0 -1
  176. package/dist/render/spares.js +0 -160
  177. package/dist/render/spares.js.map +0 -1
  178. package/dist/render/strokes.d.ts +0 -107
  179. package/dist/render/strokes.d.ts.map +0 -1
  180. package/dist/render/strokes.js +0 -448
  181. package/dist/render/strokes.js.map +0 -1
  182. package/dist/render/table.d.ts +0 -213
  183. package/dist/render/table.d.ts.map +0 -1
  184. package/dist/render/table.js +0 -795
  185. package/dist/render/table.js.map +0 -1
  186. package/dist/render/tessellate.d.ts +0 -89
  187. package/dist/render/tessellate.d.ts.map +0 -1
  188. package/dist/render/tessellate.js +0 -386
  189. package/dist/render/tessellate.js.map +0 -1
  190. package/dist/render/text.d.ts +0 -40
  191. package/dist/render/text.d.ts.map +0 -1
  192. package/dist/render/text.js +0 -309
  193. package/dist/render/text.js.map +0 -1
  194. package/dist/render/three.d.ts +0 -83
  195. package/dist/render/three.d.ts.map +0 -1
  196. package/dist/render/three.js +0 -511
  197. package/dist/render/three.js.map +0 -1
  198. package/dist/render/triangles.d.ts +0 -28
  199. package/dist/render/triangles.d.ts.map +0 -1
  200. package/dist/render/triangles.js +0 -189
  201. package/dist/render/triangles.js.map +0 -1
  202. package/dist/render/view.d.ts +0 -238
  203. package/dist/render/view.d.ts.map +0 -1
  204. package/dist/render/view.js +0 -1173
  205. package/dist/render/view.js.map +0 -1
  206. package/dist/render/worker/bitmaps.d.ts +0 -43
  207. package/dist/render/worker/bitmaps.d.ts.map +0 -1
  208. package/dist/render/worker/bitmaps.js +0 -151
  209. package/dist/render/worker/bitmaps.js.map +0 -1
  210. package/dist/render/worker/drawing.d.ts +0 -21
  211. package/dist/render/worker/drawing.d.ts.map +0 -1
  212. package/dist/render/worker/drawing.js +0 -356
  213. package/dist/render/worker/drawing.js.map +0 -1
  214. package/dist/render/worker/filters.d.ts +0 -7
  215. package/dist/render/worker/filters.d.ts.map +0 -1
  216. package/dist/render/worker/filters.js +0 -125
  217. package/dist/render/worker/filters.js.map +0 -1
  218. package/dist/render/worker/frames.d.ts +0 -32
  219. package/dist/render/worker/frames.d.ts.map +0 -1
  220. package/dist/render/worker/frames.js +0 -124
  221. package/dist/render/worker/frames.js.map +0 -1
  222. package/dist/render/worker/host.d.ts +0 -60
  223. package/dist/render/worker/host.d.ts.map +0 -1
  224. package/dist/render/worker/host.js +0 -297
  225. package/dist/render/worker/host.js.map +0 -1
  226. package/dist/render/worker/libraries.d.ts +0 -36
  227. package/dist/render/worker/libraries.d.ts.map +0 -1
  228. package/dist/render/worker/libraries.js +0 -153
  229. package/dist/render/worker/libraries.js.map +0 -1
  230. package/dist/render/worker/presentation.d.ts +0 -18
  231. package/dist/render/worker/presentation.d.ts.map +0 -1
  232. package/dist/render/worker/presentation.js +0 -47
  233. package/dist/render/worker/presentation.js.map +0 -1
  234. package/dist/render/worker/renderer.d.ts +0 -4
  235. package/dist/render/worker/renderer.d.ts.map +0 -1
  236. package/dist/render/worker/renderer.js +0 -21
  237. package/dist/render/worker/renderer.js.map +0 -1
  238. package/dist/render/worker/scene.d.ts +0 -32
  239. package/dist/render/worker/scene.d.ts.map +0 -1
  240. package/dist/render/worker/scene.js +0 -611
  241. package/dist/render/worker/scene.js.map +0 -1
  242. package/dist/render/worker/text.d.ts +0 -47
  243. package/dist/render/worker/text.d.ts.map +0 -1
  244. package/dist/render/worker/text.js +0 -261
  245. package/dist/render/worker/text.js.map +0 -1
  246. package/dist/render/worker/thread.d.ts +0 -23
  247. package/dist/render/worker/thread.d.ts.map +0 -1
  248. package/dist/render/worker/thread.js +0 -107
  249. package/dist/render/worker/thread.js.map +0 -1
  250. package/dist/render/worker/values.d.ts +0 -18
  251. package/dist/render/worker/values.d.ts.map +0 -1
  252. package/dist/render/worker/values.js +0 -64
  253. package/dist/render/worker/values.js.map +0 -1
  254. package/dist/sha256.d.ts +0 -5
  255. package/dist/sha256.d.ts.map +0 -1
  256. package/dist/sha256.js +0 -96
  257. package/dist/sha256.js.map +0 -1
  258. package/dist/shapes.d.ts +0 -71
  259. package/dist/shapes.d.ts.map +0 -1
  260. package/dist/shapes.js +0 -340
  261. package/dist/shapes.js.map +0 -1
  262. package/dist/static-text.d.ts +0 -33
  263. package/dist/static-text.d.ts.map +0 -1
  264. package/dist/static-text.js +0 -105
  265. package/dist/static-text.js.map +0 -1
  266. package/dist/text-layout.d.ts +0 -66
  267. package/dist/text-layout.d.ts.map +0 -1
  268. package/dist/text-layout.js +0 -315
  269. package/dist/text-layout.js.map +0 -1
  270. package/dist/text.d.ts +0 -67
  271. package/dist/text.d.ts.map +0 -1
  272. package/dist/text.js +0 -383
  273. package/dist/text.js.map +0 -1
  274. package/dist/timeline.d.ts +0 -150
  275. package/dist/timeline.d.ts.map +0 -1
  276. package/dist/timeline.js +0 -266
  277. package/dist/timeline.js.map +0 -1
@@ -1,611 +0,0 @@
1
- // Experimental complete snapshots of 2D scenes. Assets stay in a
2
- // library registry loaded once per thread; scripting objects never enter shared memory.
3
- import { IDENTITY_COLOR, sameColor } from "../../display/color.js";
4
- import { BitmapObject, CHILDREN, CONTENT, Container, ShapeObject, StaticTextObject, TextObject, TRANSFORM, } from "../../display/display.js";
5
- import { BLEND_MODES } from "../../display/displayobject.js";
6
- import { BitmapMirror, BitmapRecords, BitmapSnapshot } from "./bitmaps.js";
7
- import { bindDrawing, readDrawing, writeDrawing } from "./drawing.js";
8
- import { readFilters, writeFilters } from "./filters.js";
9
- import { sceneLibraries } from "./libraries.js";
10
- import { readText, SnapshotText, writeText } from "./text.js";
11
- import { ValuesReader, ValuesWriter } from "./values.js";
12
- const VERSION = 5;
13
- const HEADER = 2;
14
- const ROW = 27;
15
- const CONTAINER = 1;
16
- const VISIBLE = 2;
17
- const STATIC_TEXT = 4;
18
- const TEXT = 8;
19
- const BITMAP = 16;
20
- const DYNAMIC = 32;
21
- const MORPH = 64;
22
- const KINDS = CONTAINER | STATIC_TEXT | TEXT | BITMAP | DYNAMIC | MORPH;
23
- /** Minimum space for the nodes, plus any filter and content tail values. */
24
- export const sceneFrameBytes = (nodes, contentValues = 0) => (HEADER + nodes * ROW + contentValues) * 8;
25
- export class SceneSnapshot {
26
- nodes = [];
27
- parents = [];
28
- indices = new Map();
29
- assets;
30
- bitmaps = new BitmapSnapshot();
31
- constructor(source) {
32
- this.assets = sceneLibraries(source);
33
- }
34
- encode(root, bytes, morphs) {
35
- if (morphs) {
36
- morphs.length = 0;
37
- }
38
- const data = new Float64Array(bytes.buffer, bytes.byteOffset, Math.floor(bytes.byteLength / 8));
39
- const nodes = this.nodes;
40
- const parents = this.parents;
41
- nodes.length = parents.length = 0;
42
- this.indices.clear();
43
- this.bitmaps.clear();
44
- nodes.push(root);
45
- parents.push(-1);
46
- try {
47
- for (let i = 0; i < nodes.length; i++) {
48
- if (sceneFrameBytes(nodes.length) > bytes.byteLength) {
49
- throw new RangeError("scene snapshot exceeds its slot capacity");
50
- }
51
- const o = nodes[i];
52
- const container = o instanceof Container;
53
- if ((!container &&
54
- !(o instanceof ShapeObject) &&
55
- !(o instanceof TextObject) &&
56
- !(o instanceof StaticTextObject) &&
57
- !(o instanceof BitmapObject)) ||
58
- (o.drawing && !container && !(o instanceof ShapeObject)) ||
59
- o.space ||
60
- o.projection ||
61
- !BLEND_MODES.includes(o.blendMode)) {
62
- throw new Error("experimental worker snapshot supports 2D shapes, text, bitmaps and containers only");
63
- }
64
- this.indices.set(o, i);
65
- let character = 0;
66
- let library = 0;
67
- if (o instanceof ShapeObject) {
68
- if (o.stale ||
69
- (!o.drawing && !o.morph && o.shape && o.shape.id <= 0) ||
70
- o.shape?.layers.some((layer) => layer.meshes?.length ||
71
- layer.strokes.some(({ line }) => line.fill?.type === "bitmap"))) {
72
- throw new Error("experimental worker snapshot needs an unchanged shape from its library");
73
- }
74
- const asset = o.morph ?? o.shape;
75
- if (!o.drawing && asset) {
76
- const ref = this.assets.ref(asset);
77
- character = ref.character;
78
- library = ref.library;
79
- }
80
- const layers = o.shape?.layers ?? [];
81
- for (let k = 0; k < layers.length; k++) {
82
- const fills = layers[k].fills;
83
- for (let j = 0; j < fills.length; j++) {
84
- const fill = fills[j].fill;
85
- if (fill.type === "image") {
86
- if (!("type" in fill.image) ||
87
- !fill.image.pixels ||
88
- fill.image.store?.version ||
89
- fill.image.store?.disposed) {
90
- throw new Error("worker scene needs immutable library bitmap fills");
91
- }
92
- this.assets.ref(fill.image);
93
- }
94
- }
95
- }
96
- }
97
- else if (o instanceof StaticTextObject) {
98
- const ref = this.assets.ref(o.definition);
99
- character = ref.character;
100
- library = ref.library;
101
- }
102
- const at = HEADER + i * ROW;
103
- const m = o.matrix;
104
- const c = o.colorTransform ?? IDENTITY_COLOR;
105
- data.set([
106
- o.serial,
107
- parents[i],
108
- character,
109
- (container
110
- ? CONTAINER
111
- : o instanceof StaticTextObject
112
- ? STATIC_TEXT
113
- : o instanceof TextObject
114
- ? TEXT
115
- : o instanceof BitmapObject
116
- ? BITMAP
117
- : o.drawing || (o instanceof ShapeObject && !o.shape)
118
- ? DYNAMIC
119
- : o instanceof ShapeObject && o.morph
120
- ? MORPH
121
- : 0) | (o.visible ? VISIBLE : 0),
122
- m.a,
123
- m.b,
124
- m.c,
125
- m.d,
126
- m.tx,
127
- m.ty,
128
- c.rMul,
129
- c.gMul,
130
- c.bMul,
131
- c.aMul,
132
- c.rAdd,
133
- c.gAdd,
134
- c.bAdd,
135
- c.aAdd,
136
- BLEND_MODES.indexOf(o.blendMode),
137
- o.depth ?? Number.NaN,
138
- o.clipDepth,
139
- -1,
140
- 0,
141
- library,
142
- 0,
143
- 0,
144
- 0,
145
- ], at);
146
- if (container) {
147
- for (let k = 0; k < o.children.length; k++) {
148
- nodes.push(o.children[k]);
149
- parents.push(i);
150
- }
151
- }
152
- }
153
- let end = HEADER + nodes.length * ROW;
154
- for (let i = 0; i < nodes.length; i++) {
155
- const o = nodes[i];
156
- const at = HEADER + i * ROW;
157
- if (o.mask) {
158
- const mask = this.indices.get(o.mask);
159
- if (mask === undefined || o.mask.maskOf !== o) {
160
- throw new Error("experimental worker snapshot needs masks inside its scene");
161
- }
162
- data[at + 21] = mask;
163
- }
164
- if (o.maskOf && (!this.indices.has(o.maskOf) || o.maskOf.mask !== o)) {
165
- throw new Error("experimental worker snapshot needs mask owners inside its scene");
166
- }
167
- if (o.filters.length) {
168
- data[at + 22] = end;
169
- end = writeFilters(o.filters, data, end);
170
- }
171
- if (o instanceof TextObject) {
172
- data[at + 24] = end;
173
- end = writeText(o, data, end, this.assets);
174
- }
175
- else if (o instanceof BitmapObject) {
176
- data[at + 24] = end;
177
- end = this.bitmaps.write(o, data, end);
178
- }
179
- else if (o instanceof ShapeObject && o.morph && !o.drawing) {
180
- data[at + 24] = end;
181
- if (!Number.isInteger(o.ratio) || o.ratio < 0 || o.ratio > 65535) {
182
- throw new Error("invalid worker morph ratio");
183
- }
184
- if (end >= data.length) {
185
- throw new RangeError("scene snapshot exceeds its slot capacity");
186
- }
187
- data[end++] = o.ratio;
188
- morphs?.push({ object: o, morph: o.morph, ratio: o.ratio });
189
- }
190
- if (o.drawing) {
191
- data[at + 25] = end;
192
- end = writeDrawing(o.drawing, data, end, this.assets, this.bitmaps);
193
- }
194
- const flags = Number(o.cachedAsBitmap) | (o.scroll ? 2 : 0) | (o.scale9Grid ? 4 : 0);
195
- if (flags) {
196
- data[at + 26] = end;
197
- const w = new ValuesWriter(data, end);
198
- w.number(flags);
199
- const rects = [o.scroll, o.scale9Grid];
200
- for (let k = 0; k < rects.length; k++) {
201
- const rect = rects[k];
202
- if (rect) {
203
- w.number(rect.xMin);
204
- w.number(rect.yMin);
205
- w.number(rect.xMax);
206
- w.number(rect.yMax);
207
- }
208
- }
209
- end = w.at;
210
- }
211
- }
212
- data[0] = VERSION;
213
- data[1] = nodes.length;
214
- return end * 8;
215
- }
216
- finally {
217
- // A failed or blocked publication must not retain removed display objects.
218
- nodes.length = parents.length = 0;
219
- this.indices.clear();
220
- this.bitmaps.clear();
221
- }
222
- }
223
- }
224
- export class SceneMirror {
225
- nodes = new Map();
226
- seen = new Set();
227
- rows = [];
228
- childCounts = [];
229
- masks = new Set();
230
- assets;
231
- bitmaps = new BitmapMirror();
232
- constructor(source) {
233
- this.assets = sceneLibraries(source);
234
- }
235
- dispose() {
236
- this.bitmaps.begin();
237
- this.bitmaps.finish();
238
- this.nodes.clear();
239
- this.rows.length = 0;
240
- }
241
- apply(bytes) {
242
- if (bytes.byteLength < sceneFrameBytes(1) || bytes.byteLength % 8 !== 0) {
243
- throw new Error("invalid scene snapshot length");
244
- }
245
- const data = new Float64Array(bytes.buffer, bytes.byteOffset, bytes.byteLength / 8);
246
- const count = data[1];
247
- if (data[0] !== VERSION ||
248
- !Number.isInteger(count) ||
249
- count < 1 ||
250
- sceneFrameBytes(count) > bytes.length) {
251
- throw new Error("invalid scene snapshot header");
252
- }
253
- this.seen.clear();
254
- this.masks.clear();
255
- const filters = [];
256
- const filterEnds = [];
257
- const contentEnds = [];
258
- const texts = [];
259
- const bitmaps = [];
260
- const drawings = [];
261
- const drawingEnds = [];
262
- const ratios = [];
263
- const displayStates = [];
264
- const bitmapRecords = new BitmapRecords();
265
- let end = HEADER + count * ROW;
266
- // Validate before touching the mirror, so a rejected frame leaves it intact.
267
- for (let i = 0; i < count; i++) {
268
- const at = HEADER + i * ROW;
269
- const [id, parent, character, flags] = data.subarray(at, at + 4);
270
- const kind = flags & KINDS;
271
- const library = data[at + 23];
272
- const asset = this.assets.character(library, character);
273
- if (!Number.isSafeInteger(id) ||
274
- id < 0 ||
275
- this.seen.has(id) ||
276
- !Number.isInteger(flags) ||
277
- flags < 0 ||
278
- flags > (KINDS | VISIBLE) ||
279
- ![0, CONTAINER, STATIC_TEXT, TEXT, BITMAP, DYNAMIC, MORPH].includes(kind) ||
280
- !Number.isSafeInteger(library) ||
281
- library < 0 ||
282
- !Number.isInteger(parent) ||
283
- (i === 0 ? parent !== -1 || !(flags & CONTAINER) : parent < 0 || parent >= i) ||
284
- (i > 0 && !(data[HEADER + parent * ROW + 3] & CONTAINER)) ||
285
- (kind === 0 || kind === STATIC_TEXT || kind === MORPH
286
- ? !Number.isInteger(character) ||
287
- character <= 0 ||
288
- asset?.type !== (kind === 0 ? "shape" : kind === MORPH ? "morph" : "static")
289
- : character !== 0 || library !== 0)) {
290
- throw new Error(`invalid scene snapshot node: row ${i}, id ${id}, parent ${parent}, kind ${kind}, asset ${library}:${character} (${asset?.type ?? "missing"})`);
291
- }
292
- const blend = data[at + 18];
293
- const depth = data[at + 19];
294
- const clipDepth = data[at + 20];
295
- const mask = data[at + 21];
296
- const offset = data[at + 22];
297
- if (!Number.isInteger(blend) ||
298
- blend < 0 ||
299
- blend >= BLEND_MODES.length ||
300
- (!Number.isNaN(depth) && !Number.isSafeInteger(depth)) ||
301
- !Number.isSafeInteger(clipDepth) ||
302
- clipDepth < 0 ||
303
- !Number.isInteger(mask) ||
304
- mask < -1 ||
305
- mask >= count ||
306
- (mask !== -1 && this.masks.has(mask)) ||
307
- (offset !== 0 && offset !== end)) {
308
- throw new Error("invalid scene snapshot effects");
309
- }
310
- if (mask !== -1) {
311
- this.masks.add(mask);
312
- }
313
- if (offset !== 0) {
314
- const decoded = readFilters(data, offset);
315
- end = decoded.end;
316
- filters.push(decoded.filters);
317
- }
318
- else {
319
- filters.push([]);
320
- }
321
- filterEnds.push(end);
322
- const content = data[at + 24];
323
- if (kind === TEXT || kind === BITMAP || kind === MORPH) {
324
- if (content !== end) {
325
- throw new Error("invalid scene snapshot content offset");
326
- }
327
- if (kind === TEXT) {
328
- const decoded = readText(data, content, this.assets);
329
- texts.push(decoded.record);
330
- bitmaps.push(null);
331
- end = decoded.end;
332
- }
333
- else if (kind === MORPH) {
334
- if (content >= data.length ||
335
- !Number.isInteger(data[content]) ||
336
- data[content] < 0 ||
337
- data[content] > 65535) {
338
- throw new Error("invalid scene snapshot morph ratio");
339
- }
340
- texts.push(null);
341
- bitmaps.push(null);
342
- end = content + 1;
343
- }
344
- else {
345
- const decoded = bitmapRecords.read(data, content);
346
- texts.push(null);
347
- bitmaps.push(decoded.record);
348
- end = decoded.end;
349
- }
350
- }
351
- else {
352
- if (content !== 0) {
353
- throw new Error("unexpected scene snapshot content");
354
- }
355
- texts.push(null);
356
- bitmaps.push(null);
357
- }
358
- contentEnds.push(end);
359
- ratios.push(kind === MORPH ? data[content] : 0);
360
- const drawing = data[at + 25];
361
- if (drawing !== 0) {
362
- if (drawing !== end || ![CONTAINER, 0, DYNAMIC, MORPH].includes(kind)) {
363
- throw new Error("invalid scene snapshot drawing offset");
364
- }
365
- const decoded = readDrawing(data, drawing, this.assets, bitmapRecords);
366
- drawings.push(decoded.record);
367
- end = decoded.end;
368
- }
369
- else {
370
- drawings.push(null);
371
- }
372
- drawingEnds.push(end);
373
- const state = data[at + 26];
374
- let cached = false;
375
- let scroll = null;
376
- let grid = null;
377
- if (state !== 0) {
378
- if (state !== end) {
379
- throw new Error("invalid scene snapshot display state offset");
380
- }
381
- const r = new ValuesReader(data, end);
382
- const flags = r.integer(1, 7);
383
- cached = !!(flags & 1);
384
- const rect = () => ({
385
- xMin: r.number(),
386
- yMin: r.number(),
387
- xMax: r.number(),
388
- yMax: r.number(),
389
- });
390
- scroll = flags & 2 ? rect() : null;
391
- grid = flags & 4 ? rect() : null;
392
- end = r.at;
393
- }
394
- displayStates.push({ cached, scroll, grid });
395
- this.seen.add(id);
396
- }
397
- if (end !== data.length) {
398
- throw new Error("invalid scene snapshot filter tail");
399
- }
400
- const rows = this.rows;
401
- rows.length = 0;
402
- this.childCounts.length = count;
403
- this.childCounts.fill(0);
404
- this.bitmaps.begin();
405
- for (let i = 0; i < count; i++) {
406
- const at = HEADER + i * ROW;
407
- const id = data[at];
408
- const character = data[at + 2];
409
- const library = data[at + 23];
410
- const kind = data[at + 3] & KINDS;
411
- let node = this.nodes.get(id);
412
- if (!node || node.character !== character || node.library !== library || node.kind !== kind) {
413
- node?.object.setMask(null);
414
- node?.object.maskOf?.setMask(null);
415
- node?.object.parent?.removeChild(node.object);
416
- const asset = this.assets.character(library, character);
417
- node = {
418
- object: kind === CONTAINER
419
- ? new Container()
420
- : kind === TEXT
421
- ? new SnapshotText()
422
- : kind === BITMAP
423
- ? new BitmapObject(null)
424
- : asset?.type === "static"
425
- ? new StaticTextObject(asset, this.assets.library(library).characters)
426
- : asset?.type === "morph"
427
- ? ShapeObject.ofMorph(asset)
428
- : new ShapeObject(asset?.type === "shape" ? asset : null),
429
- character,
430
- library,
431
- kind,
432
- textValues: new Float64Array(),
433
- drawingValues: new Uint8Array(),
434
- drawingImages: [],
435
- filterValues: new Float64Array(),
436
- };
437
- this.nodes.set(id, node);
438
- }
439
- const o = node.object;
440
- const m = o.matrix;
441
- const visible = !!(data[at + 3] & VISIBLE);
442
- const color = {
443
- rMul: data[at + 10],
444
- gMul: data[at + 11],
445
- bMul: data[at + 12],
446
- aMul: data[at + 13],
447
- rAdd: data[at + 14],
448
- gAdd: data[at + 15],
449
- bAdd: data[at + 16],
450
- aAdd: data[at + 17],
451
- };
452
- const ct = sameColor(color, IDENTITY_COLOR) ? null : color;
453
- if (m.a !== data[at + 4] ||
454
- m.b !== data[at + 5] ||
455
- m.c !== data[at + 6] ||
456
- m.d !== data[at + 7] ||
457
- m.tx !== data[at + 8] ||
458
- m.ty !== data[at + 9] ||
459
- o.visible !== visible ||
460
- !sameColor(o.colorTransform, ct)) {
461
- o.matrix = {
462
- a: data[at + 4],
463
- b: data[at + 5],
464
- c: data[at + 6],
465
- d: data[at + 7],
466
- tx: data[at + 8],
467
- ty: data[at + 9],
468
- };
469
- o.colorTransform = ct;
470
- o.visible = visible;
471
- o.invalidate(TRANSFORM);
472
- }
473
- const offset = data[at + 22];
474
- const values = offset ? data.subarray(offset, filterEnds[i]) : data.subarray(0, 0);
475
- if (!sameValues(node.filterValues, values)) {
476
- node.filterValues = values.slice();
477
- o.filters = filters[i];
478
- o.invalidate(TRANSFORM);
479
- }
480
- if (o instanceof SnapshotText) {
481
- const values = data.subarray(data[at + 24], contentEnds[i]);
482
- if (!sameValues(node.textValues, values)) {
483
- node.textValues = values.slice();
484
- o.apply(texts[i]);
485
- }
486
- }
487
- else if (o instanceof BitmapObject) {
488
- this.bitmaps.apply(o, bitmaps[i]);
489
- }
490
- if (o instanceof ShapeObject && o.ratio !== ratios[i]) {
491
- o.ratio = ratios[i];
492
- o.invalidate(CONTENT);
493
- }
494
- const drawing = drawings[i];
495
- const drawingStart = data[at + 25];
496
- // Byte comparison preserves packed bitmap bits even where Float64 reads NaN.
497
- const drawingValues = drawingStart
498
- ? bytes.subarray(drawingStart * 8, drawingEnds[i] * 8)
499
- : bytes.subarray(0, 0);
500
- const resolved = drawing ? bindDrawing(drawing, this.bitmaps, o) : null;
501
- let imagesChanged = node.drawingImages.length !== (drawing?.images.length ?? 0);
502
- if (drawing) {
503
- for (let k = 0; k < drawing.images.length; k++) {
504
- if (node.drawingImages[k] !== drawing.images[k].target.image) {
505
- imagesChanged = true;
506
- }
507
- }
508
- }
509
- if (imagesChanged || !sameValues(node.drawingValues, drawingValues)) {
510
- node.drawingImages.length = 0;
511
- if (drawing) {
512
- for (let k = 0; k < drawing.images.length; k++) {
513
- node.drawingImages.push(drawing.images[k].target.image);
514
- }
515
- }
516
- node.drawingValues = drawingValues.slice();
517
- o.drawing = resolved;
518
- o.invalidate(CONTENT);
519
- }
520
- const state = displayStates[i];
521
- if (o.cachedAsBitmap !== state.cached ||
522
- !sameRect(o.scroll, state.scroll) ||
523
- !sameRect(o.scale9Grid, state.grid)) {
524
- o.cachedAsBitmap = state.cached;
525
- o.scroll = state.scroll;
526
- o.scrollRect = state.scroll;
527
- o.scale9Grid = state.grid;
528
- o.invalidate(CONTENT | TRANSFORM);
529
- }
530
- const blend = BLEND_MODES[data[at + 18]];
531
- if (o.blendMode !== blend) {
532
- o.blendMode = blend;
533
- o.invalidate(TRANSFORM);
534
- }
535
- rows.push(o);
536
- if (i === 0) {
537
- o.parent?.removeChild(o);
538
- }
539
- else {
540
- const parent = data[at + 1];
541
- const container = rows[parent];
542
- const index = this.childCounts[parent]++;
543
- if (container.children[index] !== o) {
544
- container.addChildAt(o, index);
545
- }
546
- }
547
- }
548
- for (const [id, node] of this.nodes) {
549
- if (!this.seen.has(id)) {
550
- node.object.setMask(null);
551
- node.object.maskOf?.setMask(null);
552
- node.object.parent?.removeChild(node.object);
553
- this.nodes.delete(id);
554
- }
555
- }
556
- // Reordering children clears their timeline depths; restore these only
557
- // after the full tree is attached, before Pixi groups timeline masks.
558
- for (let i = 0; i < rows.length; i++) {
559
- const o = rows[i];
560
- if (o instanceof Container) {
561
- o.depths.clear();
562
- }
563
- }
564
- for (let i = 0; i < count; i++) {
565
- const at = HEADER + i * ROW;
566
- const o = rows[i];
567
- const depth = Number.isNaN(data[at + 19]) ? null : data[at + 19];
568
- const clipDepth = data[at + 20];
569
- if (o.depth !== depth || o.clipDepth !== clipDepth) {
570
- o.depth = depth;
571
- o.clipDepth = clipDepth;
572
- o.invalidate(TRANSFORM);
573
- o.parent?.invalidate(CHILDREN);
574
- }
575
- if (depth !== null) {
576
- o.parent?.depths.set(depth, o);
577
- }
578
- const mask = data[at + 21];
579
- if (o.mask !== (mask === -1 ? null : rows[mask])) {
580
- o.setMask(null);
581
- }
582
- }
583
- for (let i = 0; i < count; i++) {
584
- const mask = data[HEADER + i * ROW + 21];
585
- rows[i].setMask(mask === -1 ? null : rows[mask]);
586
- }
587
- this.bitmaps.finish();
588
- return rows[0];
589
- }
590
- }
591
- function sameValues(a, b) {
592
- if (a.length !== b.length) {
593
- return false;
594
- }
595
- for (let i = 0; i < a.length; i++) {
596
- if (!Object.is(a[i], b[i])) {
597
- return false;
598
- }
599
- }
600
- return true;
601
- }
602
- function sameRect(a, b) {
603
- return (a === b ||
604
- (a !== null &&
605
- b !== null &&
606
- Object.is(a.xMin, b.xMin) &&
607
- Object.is(a.yMin, b.yMin) &&
608
- Object.is(a.xMax, b.xMax) &&
609
- Object.is(a.yMax, b.yMax)));
610
- }
611
- //# sourceMappingURL=scene.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/render/worker/scene.ts"],"names":[],"mappings":"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"}