@swf2es/player 0.0.0-stage → 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 (1329) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +51 -0
  3. package/README.md +38 -2
  4. package/dist/air-definitions.d.ts +2 -0
  5. package/dist/air-definitions.d.ts.map +1 -0
  6. package/dist/air-definitions.js +130 -0
  7. package/dist/air-definitions.js.map +1 -0
  8. package/dist/avm1/amf.d.ts +155 -0
  9. package/dist/avm1/amf.d.ts.map +1 -0
  10. package/dist/avm1/amf.js +508 -0
  11. package/dist/avm1/amf.js.map +1 -0
  12. package/dist/avm1/avm1.d.ts +448 -0
  13. package/dist/avm1/avm1.d.ts.map +1 -0
  14. package/dist/avm1/avm1.js +1305 -0
  15. package/dist/avm1/avm1.js.map +1 -0
  16. package/dist/avm1/bindings.d.ts +56 -0
  17. package/dist/avm1/bindings.d.ts.map +1 -0
  18. package/dist/avm1/bindings.js +215 -0
  19. package/dist/avm1/bindings.js.map +1 -0
  20. package/dist/avm1/classes.d.ts +33 -0
  21. package/dist/avm1/classes.d.ts.map +1 -0
  22. package/dist/avm1/classes.js +76 -0
  23. package/dist/avm1/classes.js.map +1 -0
  24. package/dist/avm1/clips.d.ts +54 -0
  25. package/dist/avm1/clips.d.ts.map +1 -0
  26. package/dist/avm1/clips.js +230 -0
  27. package/dist/avm1/clips.js.map +1 -0
  28. package/dist/avm1/compile.d.ts +8 -0
  29. package/dist/avm1/compile.d.ts.map +1 -0
  30. package/dist/avm1/compile.js +141 -0
  31. package/dist/avm1/compile.js.map +1 -0
  32. package/dist/avm1/external.d.ts +44 -0
  33. package/dist/avm1/external.d.ts.map +1 -0
  34. package/dist/avm1/external.js +80 -0
  35. package/dist/avm1/external.js.map +1 -0
  36. package/dist/avm1/focus.d.ts +68 -0
  37. package/dist/avm1/focus.d.ts.map +1 -0
  38. package/dist/avm1/focus.js +279 -0
  39. package/dist/avm1/focus.js.map +1 -0
  40. package/dist/avm1/globals/BitmapData.d.ts +30 -0
  41. package/dist/avm1/globals/BitmapData.d.ts.map +1 -0
  42. package/dist/avm1/globals/BitmapData.js +543 -0
  43. package/dist/avm1/globals/BitmapData.js.map +1 -0
  44. package/dist/avm1/globals/Button.d.ts +8 -0
  45. package/dist/avm1/globals/Button.d.ts.map +1 -0
  46. package/dist/avm1/globals/Button.js +32 -0
  47. package/dist/avm1/globals/Button.js.map +1 -0
  48. package/dist/avm1/globals/Color.d.ts +11 -0
  49. package/dist/avm1/globals/Color.d.ts.map +1 -0
  50. package/dist/avm1/globals/Color.js +116 -0
  51. package/dist/avm1/globals/Color.js.map +1 -0
  52. package/dist/avm1/globals/ExternalInterface.d.ts +20 -0
  53. package/dist/avm1/globals/ExternalInterface.d.ts.map +1 -0
  54. package/dist/avm1/globals/ExternalInterface.js +311 -0
  55. package/dist/avm1/globals/ExternalInterface.js.map +1 -0
  56. package/dist/avm1/globals/FileReference.d.ts +4 -0
  57. package/dist/avm1/globals/FileReference.d.ts.map +1 -0
  58. package/dist/avm1/globals/FileReference.js +218 -0
  59. package/dist/avm1/globals/FileReference.js.map +1 -0
  60. package/dist/avm1/globals/Key.d.ts +21 -0
  61. package/dist/avm1/globals/Key.d.ts.map +1 -0
  62. package/dist/avm1/globals/Key.js +61 -0
  63. package/dist/avm1/globals/Key.js.map +1 -0
  64. package/dist/avm1/globals/LoadVars.d.ts +39 -0
  65. package/dist/avm1/globals/LoadVars.d.ts.map +1 -0
  66. package/dist/avm1/globals/LoadVars.js +209 -0
  67. package/dist/avm1/globals/LoadVars.js.map +1 -0
  68. package/dist/avm1/globals/LocalConnection.d.ts +5 -0
  69. package/dist/avm1/globals/LocalConnection.d.ts.map +1 -0
  70. package/dist/avm1/globals/LocalConnection.js +93 -0
  71. package/dist/avm1/globals/LocalConnection.js.map +1 -0
  72. package/dist/avm1/globals/MovieClip.d.ts +156 -0
  73. package/dist/avm1/globals/MovieClip.d.ts.map +1 -0
  74. package/dist/avm1/globals/MovieClip.js +1071 -0
  75. package/dist/avm1/globals/MovieClip.js.map +1 -0
  76. package/dist/avm1/globals/MovieClipLoader.d.ts +29 -0
  77. package/dist/avm1/globals/MovieClipLoader.d.ts.map +1 -0
  78. package/dist/avm1/globals/MovieClipLoader.js +91 -0
  79. package/dist/avm1/globals/MovieClipLoader.js.map +1 -0
  80. package/dist/avm1/globals/NetConnection.d.ts +68 -0
  81. package/dist/avm1/globals/NetConnection.d.ts.map +1 -0
  82. package/dist/avm1/globals/NetConnection.js +262 -0
  83. package/dist/avm1/globals/NetConnection.js.map +1 -0
  84. package/dist/avm1/globals/PrintJob.d.ts +4 -0
  85. package/dist/avm1/globals/PrintJob.d.ts.map +1 -0
  86. package/dist/avm1/globals/PrintJob.js +38 -0
  87. package/dist/avm1/globals/PrintJob.js.map +1 -0
  88. package/dist/avm1/globals/Selection.d.ts +17 -0
  89. package/dist/avm1/globals/Selection.d.ts.map +1 -0
  90. package/dist/avm1/globals/Selection.js +63 -0
  91. package/dist/avm1/globals/Selection.js.map +1 -0
  92. package/dist/avm1/globals/SharedObject.d.ts +20 -0
  93. package/dist/avm1/globals/SharedObject.d.ts.map +1 -0
  94. package/dist/avm1/globals/SharedObject.js +246 -0
  95. package/dist/avm1/globals/SharedObject.js.map +1 -0
  96. package/dist/avm1/globals/Sound.d.ts +36 -0
  97. package/dist/avm1/globals/Sound.d.ts.map +1 -0
  98. package/dist/avm1/globals/Sound.js +239 -0
  99. package/dist/avm1/globals/Sound.js.map +1 -0
  100. package/dist/avm1/globals/Stage.d.ts +7 -0
  101. package/dist/avm1/globals/Stage.d.ts.map +1 -0
  102. package/dist/avm1/globals/Stage.js +13 -0
  103. package/dist/avm1/globals/Stage.js.map +1 -0
  104. package/dist/avm1/globals/StyleSheet.d.ts +10 -0
  105. package/dist/avm1/globals/StyleSheet.d.ts.map +1 -0
  106. package/dist/avm1/globals/StyleSheet.js +206 -0
  107. package/dist/avm1/globals/StyleSheet.js.map +1 -0
  108. package/dist/avm1/globals/TextField.d.ts +44 -0
  109. package/dist/avm1/globals/TextField.d.ts.map +1 -0
  110. package/dist/avm1/globals/TextField.js +397 -0
  111. package/dist/avm1/globals/TextField.js.map +1 -0
  112. package/dist/avm1/globals/TextFormat.d.ts +19 -0
  113. package/dist/avm1/globals/TextFormat.d.ts.map +1 -0
  114. package/dist/avm1/globals/TextFormat.js +195 -0
  115. package/dist/avm1/globals/TextFormat.js.map +1 -0
  116. package/dist/avm1/globals/TextSnapshot.d.ts +6 -0
  117. package/dist/avm1/globals/TextSnapshot.d.ts.map +1 -0
  118. package/dist/avm1/globals/TextSnapshot.js +89 -0
  119. package/dist/avm1/globals/TextSnapshot.js.map +1 -0
  120. package/dist/avm1/globals/XML.d.ts +9 -0
  121. package/dist/avm1/globals/XML.d.ts.map +1 -0
  122. package/dist/avm1/globals/XML.js +397 -0
  123. package/dist/avm1/globals/XML.js.map +1 -0
  124. package/dist/avm1/globals/XMLNode.d.ts +93 -0
  125. package/dist/avm1/globals/XMLNode.d.ts.map +1 -0
  126. package/dist/avm1/globals/XMLNode.js +414 -0
  127. package/dist/avm1/globals/XMLNode.js.map +1 -0
  128. package/dist/avm1/globals/XMLSocket.d.ts +19 -0
  129. package/dist/avm1/globals/XMLSocket.d.ts.map +1 -0
  130. package/dist/avm1/globals/XMLSocket.js +206 -0
  131. package/dist/avm1/globals/XMLSocket.js.map +1 -0
  132. package/dist/avm1/globals/drawing.d.ts +8 -0
  133. package/dist/avm1/globals/drawing.d.ts.map +1 -0
  134. package/dist/avm1/globals/drawing.js +203 -0
  135. package/dist/avm1/globals/drawing.js.map +1 -0
  136. package/dist/avm1/globals/filters.d.ts +30 -0
  137. package/dist/avm1/globals/filters.d.ts.map +1 -0
  138. package/dist/avm1/globals/filters.js +636 -0
  139. package/dist/avm1/globals/filters.js.map +1 -0
  140. package/dist/avm1/globals/geom.d.ts +28 -0
  141. package/dist/avm1/globals/geom.d.ts.map +1 -0
  142. package/dist/avm1/globals/geom.js +601 -0
  143. package/dist/avm1/globals/geom.js.map +1 -0
  144. package/dist/avm1/input.d.ts +106 -0
  145. package/dist/avm1/input.d.ts.map +1 -0
  146. package/dist/avm1/input.js +484 -0
  147. package/dist/avm1/input.js.map +1 -0
  148. package/dist/avm1/keyboard.d.ts +17 -0
  149. package/dist/avm1/keyboard.d.ts.map +1 -0
  150. package/dist/avm1/keyboard.js +114 -0
  151. package/dist/avm1/keyboard.js.map +1 -0
  152. package/dist/avm1/loads.d.ts +67 -0
  153. package/dist/avm1/loads.d.ts.map +1 -0
  154. package/dist/avm1/loads.js +353 -0
  155. package/dist/avm1/loads.js.map +1 -0
  156. package/dist/avm1/net.d.ts +83 -0
  157. package/dist/avm1/net.d.ts.map +1 -0
  158. package/dist/avm1/net.js +220 -0
  159. package/dist/avm1/net.js.map +1 -0
  160. package/dist/avm1/paths.d.ts +30 -0
  161. package/dist/avm1/paths.d.ts.map +1 -0
  162. package/dist/avm1/paths.js +105 -0
  163. package/dist/avm1/paths.js.map +1 -0
  164. package/dist/avm1/pointer.d.ts +113 -0
  165. package/dist/avm1/pointer.d.ts.map +1 -0
  166. package/dist/avm1/pointer.js +513 -0
  167. package/dist/avm1/pointer.js.map +1 -0
  168. package/dist/avm1/queue.d.ts +106 -0
  169. package/dist/avm1/queue.d.ts.map +1 -0
  170. package/dist/avm1/queue.js +304 -0
  171. package/dist/avm1/queue.js.map +1 -0
  172. package/dist/avm1/sound.d.ts +36 -0
  173. package/dist/avm1/sound.d.ts.map +1 -0
  174. package/dist/avm1/sound.js +107 -0
  175. package/dist/avm1/sound.js.map +1 -0
  176. package/dist/avm1/swf.d.ts +90 -0
  177. package/dist/avm1/swf.d.ts.map +1 -0
  178. package/dist/avm1/swf.js +142 -0
  179. package/dist/avm1/swf.js.map +1 -0
  180. package/dist/avm1/timers.d.ts +49 -0
  181. package/dist/avm1/timers.d.ts.map +1 -0
  182. package/dist/avm1/timers.js +114 -0
  183. package/dist/avm1/timers.js.map +1 -0
  184. package/dist/bitmap/bitmap.d.ts +231 -0
  185. package/dist/bitmap/bitmap.d.ts.map +1 -0
  186. package/dist/bitmap/bitmap.js +628 -0
  187. package/dist/bitmap/bitmap.js.map +1 -0
  188. package/dist/bitmap/draw.d.ts +11 -0
  189. package/dist/bitmap/draw.d.ts.map +1 -0
  190. package/dist/bitmap/draw.js +69 -0
  191. package/dist/bitmap/draw.js.map +1 -0
  192. package/dist/bitmap/dxt.d.ts +5 -0
  193. package/dist/bitmap/dxt.d.ts.map +1 -0
  194. package/dist/bitmap/dxt.js +12 -0
  195. package/dist/bitmap/dxt.js.map +1 -0
  196. package/dist/bitmap/filters.d.ts +82 -0
  197. package/dist/bitmap/filters.d.ts.map +1 -0
  198. package/dist/bitmap/filters.js +657 -0
  199. package/dist/bitmap/filters.js.map +1 -0
  200. package/dist/bitmap/images.d.ts +30 -0
  201. package/dist/bitmap/images.d.ts.map +1 -0
  202. package/dist/bitmap/images.js +241 -0
  203. package/dist/bitmap/images.js.map +1 -0
  204. package/dist/bitmap/kernel.d.ts +12 -0
  205. package/dist/bitmap/kernel.d.ts.map +1 -0
  206. package/dist/bitmap/kernel.js +66 -0
  207. package/dist/bitmap/kernel.js.map +1 -0
  208. package/dist/bitmap/ops.d.ts +144 -0
  209. package/dist/bitmap/ops.d.ts.map +1 -0
  210. package/dist/bitmap/ops.js +1240 -0
  211. package/dist/bitmap/ops.js.map +1 -0
  212. package/dist/bitmap/pixel-bender.d.ts +89 -0
  213. package/dist/bitmap/pixel-bender.d.ts.map +1 -0
  214. package/dist/bitmap/pixel-bender.js +912 -0
  215. package/dist/bitmap/pixel-bender.js.map +1 -0
  216. package/dist/bitmap/png.d.ts +4 -0
  217. package/dist/bitmap/png.d.ts.map +1 -0
  218. package/dist/bitmap/png.js +140 -0
  219. package/dist/bitmap/png.js.map +1 -0
  220. package/dist/bitmap/turbulence.d.ts +17 -0
  221. package/dist/bitmap/turbulence.d.ts.map +1 -0
  222. package/dist/bitmap/turbulence.js +90 -0
  223. package/dist/bitmap/turbulence.js.map +1 -0
  224. package/dist/clock.d.ts +60 -0
  225. package/dist/clock.d.ts.map +1 -0
  226. package/dist/clock.js +183 -0
  227. package/dist/clock.js.map +1 -0
  228. package/dist/display/bitmapobject.d.ts +18 -0
  229. package/dist/display/bitmapobject.d.ts.map +1 -0
  230. package/dist/display/bitmapobject.js +26 -0
  231. package/dist/display/bitmapobject.js.map +1 -0
  232. package/dist/display/bounds.d.ts +59 -0
  233. package/dist/display/bounds.d.ts.map +1 -0
  234. package/dist/display/bounds.js +521 -0
  235. package/dist/display/bounds.js.map +1 -0
  236. package/dist/display/buttonobject.d.ts +76 -0
  237. package/dist/display/buttonobject.d.ts.map +1 -0
  238. package/dist/display/buttonobject.js +306 -0
  239. package/dist/display/buttonobject.js.map +1 -0
  240. package/dist/display/color.d.ts +9 -0
  241. package/dist/display/color.d.ts.map +1 -0
  242. package/dist/display/color.js +41 -0
  243. package/dist/display/color.js.map +1 -0
  244. package/dist/display/container.d.ts +49 -0
  245. package/dist/display/container.d.ts.map +1 -0
  246. package/dist/display/container.js +151 -0
  247. package/dist/display/container.js.map +1 -0
  248. package/dist/display/display.d.ts +11 -0
  249. package/dist/display/display.d.ts.map +1 -0
  250. package/dist/display/display.js +15 -0
  251. package/dist/display/display.js.map +1 -0
  252. package/dist/display/displayobject.d.ts +363 -0
  253. package/dist/display/displayobject.d.ts.map +1 -0
  254. package/dist/display/displayobject.js +665 -0
  255. package/dist/display/displayobject.js.map +1 -0
  256. package/dist/display/drawing.d.ts +111 -0
  257. package/dist/display/drawing.d.ts.map +1 -0
  258. package/dist/display/drawing.js +614 -0
  259. package/dist/display/drawing.js.map +1 -0
  260. package/dist/display/filters.d.ts +99 -0
  261. package/dist/display/filters.d.ts.map +1 -0
  262. package/dist/display/filters.js +286 -0
  263. package/dist/display/filters.js.map +1 -0
  264. package/dist/display/geometry.d.ts +37 -0
  265. package/dist/display/geometry.d.ts.map +1 -0
  266. package/dist/display/geometry.js +190 -0
  267. package/dist/display/geometry.js.map +1 -0
  268. package/dist/display/gradients.d.ts +29 -0
  269. package/dist/display/gradients.d.ts.map +1 -0
  270. package/dist/display/gradients.js +118 -0
  271. package/dist/display/gradients.js.map +1 -0
  272. package/dist/display/graphicsdata.d.ts +41 -0
  273. package/dist/display/graphicsdata.d.ts.map +1 -0
  274. package/dist/display/graphicsdata.js +593 -0
  275. package/dist/display/graphicsdata.js.map +1 -0
  276. package/dist/display/instantiate.d.ts +15 -0
  277. package/dist/display/instantiate.d.ts.map +1 -0
  278. package/dist/display/instantiate.js +72 -0
  279. package/dist/display/instantiate.js.map +1 -0
  280. package/dist/display/matrix3d.d.ts +68 -0
  281. package/dist/display/matrix3d.d.ts.map +1 -0
  282. package/dist/display/matrix3d.js +374 -0
  283. package/dist/display/matrix3d.js.map +1 -0
  284. package/dist/display/morph.d.ts +17 -0
  285. package/dist/display/morph.d.ts.map +1 -0
  286. package/dist/display/morph.js +227 -0
  287. package/dist/display/morph.js.map +1 -0
  288. package/dist/display/movieclip.d.ts +115 -0
  289. package/dist/display/movieclip.d.ts.map +1 -0
  290. package/dist/display/movieclip.js +681 -0
  291. package/dist/display/movieclip.js.map +1 -0
  292. package/dist/display/perspective.d.ts +35 -0
  293. package/dist/display/perspective.d.ts.map +1 -0
  294. package/dist/display/perspective.js +194 -0
  295. package/dist/display/perspective.js.map +1 -0
  296. package/dist/display/plane.d.ts +52 -0
  297. package/dist/display/plane.d.ts.map +1 -0
  298. package/dist/display/plane.js +142 -0
  299. package/dist/display/plane.js.map +1 -0
  300. package/dist/display/scale9.d.ts +78 -0
  301. package/dist/display/scale9.d.ts.map +1 -0
  302. package/dist/display/scale9.js +237 -0
  303. package/dist/display/scale9.js.map +1 -0
  304. package/dist/display/shapeobject.d.ts +53 -0
  305. package/dist/display/shapeobject.d.ts.map +1 -0
  306. package/dist/display/shapeobject.js +132 -0
  307. package/dist/display/shapeobject.js.map +1 -0
  308. package/dist/display/shapes.d.ts +146 -0
  309. package/dist/display/shapes.d.ts.map +1 -0
  310. package/dist/display/shapes.js +408 -0
  311. package/dist/display/shapes.js.map +1 -0
  312. package/dist/display/stretch.d.ts +42 -0
  313. package/dist/display/stretch.d.ts.map +1 -0
  314. package/dist/display/stretch.js +192 -0
  315. package/dist/display/stretch.js.map +1 -0
  316. package/dist/display/textobjects.d.ts +98 -0
  317. package/dist/display/textobjects.d.ts.map +1 -0
  318. package/dist/display/textobjects.js +223 -0
  319. package/dist/display/textobjects.js.map +1 -0
  320. package/dist/display/timeline.d.ts +252 -0
  321. package/dist/display/timeline.d.ts.map +1 -0
  322. package/dist/display/timeline.js +472 -0
  323. package/dist/display/timeline.js.map +1 -0
  324. package/dist/display/value-lists.d.ts +10 -0
  325. package/dist/display/value-lists.d.ts.map +1 -0
  326. package/dist/display/value-lists.js +41 -0
  327. package/dist/display/value-lists.js.map +1 -0
  328. package/dist/display/videoobject.d.ts +7 -0
  329. package/dist/display/videoobject.d.ts.map +1 -0
  330. package/dist/display/videoobject.js +7 -0
  331. package/dist/display/videoobject.js.map +1 -0
  332. package/dist/display/walk.d.ts +45 -0
  333. package/dist/display/walk.d.ts.map +1 -0
  334. package/dist/display/walk.js +128 -0
  335. package/dist/display/walk.js.map +1 -0
  336. package/dist/files.d.ts +77 -0
  337. package/dist/files.d.ts.map +1 -0
  338. package/dist/files.js +335 -0
  339. package/dist/files.js.map +1 -0
  340. package/dist/hosts.d.ts +406 -0
  341. package/dist/hosts.d.ts.map +1 -0
  342. package/dist/hosts.js +208 -0
  343. package/dist/hosts.js.map +1 -0
  344. package/dist/index.d.ts +24 -0
  345. package/dist/index.d.ts.map +1 -0
  346. package/dist/index.js +19 -0
  347. package/dist/index.js.map +1 -0
  348. package/dist/input/activation.d.ts +12 -0
  349. package/dist/input/activation.d.ts.map +1 -0
  350. package/dist/input/activation.js +57 -0
  351. package/dist/input/activation.js.map +1 -0
  352. package/dist/input/avm1.d.ts +22 -0
  353. package/dist/input/avm1.d.ts.map +1 -0
  354. package/dist/input/avm1.js +83 -0
  355. package/dist/input/avm1.js.map +1 -0
  356. package/dist/input/canvas.d.ts +19 -0
  357. package/dist/input/canvas.d.ts.map +1 -0
  358. package/dist/input/canvas.js +64 -0
  359. package/dist/input/canvas.js.map +1 -0
  360. package/dist/input/context-menu.d.ts +16 -0
  361. package/dist/input/context-menu.d.ts.map +1 -0
  362. package/dist/input/context-menu.js +64 -0
  363. package/dist/input/context-menu.js.map +1 -0
  364. package/dist/input/keyboard.d.ts +138 -0
  365. package/dist/input/keyboard.d.ts.map +1 -0
  366. package/dist/input/keyboard.js +459 -0
  367. package/dist/input/keyboard.js.map +1 -0
  368. package/dist/input/pointer.d.ts +186 -0
  369. package/dist/input/pointer.d.ts.map +1 -0
  370. package/dist/input/pointer.js +864 -0
  371. package/dist/input/pointer.js.map +1 -0
  372. package/dist/input/text-editor.d.ts +47 -0
  373. package/dist/input/text-editor.d.ts.map +1 -0
  374. package/dist/input/text-editor.js +320 -0
  375. package/dist/input/text-editor.js.map +1 -0
  376. package/dist/input/touch.d.ts +41 -0
  377. package/dist/input/touch.d.ts.map +1 -0
  378. package/dist/input/touch.js +210 -0
  379. package/dist/input/touch.js.map +1 -0
  380. package/dist/localconnection.d.ts +34 -0
  381. package/dist/localconnection.d.ts.map +1 -0
  382. package/dist/localconnection.js +91 -0
  383. package/dist/localconnection.js.map +1 -0
  384. package/dist/media/audio.d.ts +67 -0
  385. package/dist/media/audio.d.ts.map +1 -0
  386. package/dist/media/audio.js +377 -0
  387. package/dist/media/audio.js.map +1 -0
  388. package/dist/media/dynamic-sound.d.ts +10 -0
  389. package/dist/media/dynamic-sound.d.ts.map +1 -0
  390. package/dist/media/dynamic-sound.js +91 -0
  391. package/dist/media/dynamic-sound.js.map +1 -0
  392. package/dist/media/extract.d.ts +41 -0
  393. package/dist/media/extract.d.ts.map +1 -0
  394. package/dist/media/extract.js +136 -0
  395. package/dist/media/extract.js.map +1 -0
  396. package/dist/media/mp3.d.ts +19 -0
  397. package/dist/media/mp3.d.ts.map +1 -0
  398. package/dist/media/mp3.js +153 -0
  399. package/dist/media/mp3.js.map +1 -0
  400. package/dist/media/sounds.d.ts +157 -0
  401. package/dist/media/sounds.d.ts.map +1 -0
  402. package/dist/media/sounds.js +508 -0
  403. package/dist/media/sounds.js.map +1 -0
  404. package/dist/media/streaming-audio.d.ts +3 -0
  405. package/dist/media/streaming-audio.d.ts.map +1 -0
  406. package/dist/media/streaming-audio.js +134 -0
  407. package/dist/media/streaming-audio.js.map +1 -0
  408. package/dist/player.d.ts +169 -0
  409. package/dist/player.d.ts.map +1 -0
  410. package/dist/player.js +617 -0
  411. package/dist/player.js.map +1 -0
  412. package/dist/playerglobal/air/net/WebSocket.d.ts +4 -0
  413. package/dist/playerglobal/air/net/WebSocket.d.ts.map +1 -0
  414. package/dist/playerglobal/air/net/WebSocket.js +251 -0
  415. package/dist/playerglobal/air/net/WebSocket.js.map +1 -0
  416. package/dist/playerglobal/air-library.d.ts +6 -0
  417. package/dist/playerglobal/air-library.d.ts.map +1 -0
  418. package/dist/playerglobal/air-library.js +9 -0
  419. package/dist/playerglobal/air-library.js.map +1 -0
  420. package/dist/playerglobal/context3d/context.d.ts +5 -0
  421. package/dist/playerglobal/context3d/context.d.ts.map +1 -0
  422. package/dist/playerglobal/context3d/context.js +472 -0
  423. package/dist/playerglobal/context3d/context.js.map +1 -0
  424. package/dist/playerglobal/context3d/errors.d.ts +11 -0
  425. package/dist/playerglobal/context3d/errors.d.ts.map +1 -0
  426. package/dist/playerglobal/context3d/errors.js +101 -0
  427. package/dist/playerglobal/context3d/errors.js.map +1 -0
  428. package/dist/playerglobal/context3d/lifecycle.d.ts +61 -0
  429. package/dist/playerglobal/context3d/lifecycle.d.ts.map +1 -0
  430. package/dist/playerglobal/context3d/lifecycle.js +342 -0
  431. package/dist/playerglobal/context3d/lifecycle.js.map +1 -0
  432. package/dist/playerglobal/context3d/readback.d.ts +21 -0
  433. package/dist/playerglobal/context3d/readback.d.ts.map +1 -0
  434. package/dist/playerglobal/context3d/readback.js +56 -0
  435. package/dist/playerglobal/context3d/readback.js.map +1 -0
  436. package/dist/playerglobal/context3d/resources.d.ts +5 -0
  437. package/dist/playerglobal/context3d/resources.d.ts.map +1 -0
  438. package/dist/playerglobal/context3d/resources.js +298 -0
  439. package/dist/playerglobal/context3d/resources.js.map +1 -0
  440. package/dist/playerglobal/context3d.d.ts +6 -0
  441. package/dist/playerglobal/context3d.d.ts.map +1 -0
  442. package/dist/playerglobal/context3d.js +96 -0
  443. package/dist/playerglobal/context3d.js.map +1 -0
  444. package/dist/playerglobal/flash/accessibility/Accessibility.d.ts +4 -0
  445. package/dist/playerglobal/flash/accessibility/Accessibility.d.ts.map +1 -0
  446. package/dist/playerglobal/flash/accessibility/Accessibility.js +22 -0
  447. package/dist/playerglobal/flash/accessibility/Accessibility.js.map +1 -0
  448. package/dist/playerglobal/flash/crypto/generateRandomBytes.d.ts +3 -0
  449. package/dist/playerglobal/flash/crypto/generateRandomBytes.d.ts.map +1 -0
  450. package/dist/playerglobal/flash/crypto/generateRandomBytes.js +33 -0
  451. package/dist/playerglobal/flash/crypto/generateRandomBytes.js.map +1 -0
  452. package/dist/playerglobal/flash/data/EncryptedLocalStore.d.ts +4 -0
  453. package/dist/playerglobal/flash/data/EncryptedLocalStore.d.ts.map +1 -0
  454. package/dist/playerglobal/flash/data/EncryptedLocalStore.js +62 -0
  455. package/dist/playerglobal/flash/data/EncryptedLocalStore.js.map +1 -0
  456. package/dist/playerglobal/flash/desktop/Clipboard.d.ts +9 -0
  457. package/dist/playerglobal/flash/desktop/Clipboard.d.ts.map +1 -0
  458. package/dist/playerglobal/flash/desktop/Clipboard.js +174 -0
  459. package/dist/playerglobal/flash/desktop/Clipboard.js.map +1 -0
  460. package/dist/playerglobal/flash/desktop/NativeApplication.d.ts +6 -0
  461. package/dist/playerglobal/flash/desktop/NativeApplication.d.ts.map +1 -0
  462. package/dist/playerglobal/flash/desktop/NativeApplication.js +180 -0
  463. package/dist/playerglobal/flash/desktop/NativeApplication.js.map +1 -0
  464. package/dist/playerglobal/flash/display/AVM1Movie.d.ts +3 -0
  465. package/dist/playerglobal/flash/display/AVM1Movie.d.ts.map +1 -0
  466. package/dist/playerglobal/flash/display/AVM1Movie.js +20 -0
  467. package/dist/playerglobal/flash/display/AVM1Movie.js.map +1 -0
  468. package/dist/playerglobal/flash/display/Bitmap.d.ts +4 -0
  469. package/dist/playerglobal/flash/display/Bitmap.d.ts.map +1 -0
  470. package/dist/playerglobal/flash/display/Bitmap.js +59 -0
  471. package/dist/playerglobal/flash/display/Bitmap.js.map +1 -0
  472. package/dist/playerglobal/flash/display/BitmapData.d.ts +10 -0
  473. package/dist/playerglobal/flash/display/BitmapData.d.ts.map +1 -0
  474. package/dist/playerglobal/flash/display/BitmapData.js +634 -0
  475. package/dist/playerglobal/flash/display/BitmapData.js.map +1 -0
  476. package/dist/playerglobal/flash/display/DisplayObject.d.ts +8 -0
  477. package/dist/playerglobal/flash/display/DisplayObject.d.ts.map +1 -0
  478. package/dist/playerglobal/flash/display/DisplayObject.js +615 -0
  479. package/dist/playerglobal/flash/display/DisplayObject.js.map +1 -0
  480. package/dist/playerglobal/flash/display/DisplayObjectContainer.d.ts +4 -0
  481. package/dist/playerglobal/flash/display/DisplayObjectContainer.d.ts.map +1 -0
  482. package/dist/playerglobal/flash/display/DisplayObjectContainer.js +225 -0
  483. package/dist/playerglobal/flash/display/DisplayObjectContainer.js.map +1 -0
  484. package/dist/playerglobal/flash/display/Graphics.d.ts +8 -0
  485. package/dist/playerglobal/flash/display/Graphics.d.ts.map +1 -0
  486. package/dist/playerglobal/flash/display/Graphics.js +346 -0
  487. package/dist/playerglobal/flash/display/Graphics.js.map +1 -0
  488. package/dist/playerglobal/flash/display/InteractiveObject.d.ts +12 -0
  489. package/dist/playerglobal/flash/display/InteractiveObject.d.ts.map +1 -0
  490. package/dist/playerglobal/flash/display/InteractiveObject.js +88 -0
  491. package/dist/playerglobal/flash/display/InteractiveObject.js.map +1 -0
  492. package/dist/playerglobal/flash/display/Loader.d.ts +4 -0
  493. package/dist/playerglobal/flash/display/Loader.d.ts.map +1 -0
  494. package/dist/playerglobal/flash/display/Loader.js +80 -0
  495. package/dist/playerglobal/flash/display/Loader.js.map +1 -0
  496. package/dist/playerglobal/flash/display/LoaderInfo.d.ts +8 -0
  497. package/dist/playerglobal/flash/display/LoaderInfo.d.ts.map +1 -0
  498. package/dist/playerglobal/flash/display/LoaderInfo.js +129 -0
  499. package/dist/playerglobal/flash/display/LoaderInfo.js.map +1 -0
  500. package/dist/playerglobal/flash/display/MovieClip.d.ts +4 -0
  501. package/dist/playerglobal/flash/display/MovieClip.d.ts.map +1 -0
  502. package/dist/playerglobal/flash/display/MovieClip.js +195 -0
  503. package/dist/playerglobal/flash/display/MovieClip.js.map +1 -0
  504. package/dist/playerglobal/flash/display/NativeWindow.d.ts +8 -0
  505. package/dist/playerglobal/flash/display/NativeWindow.d.ts.map +1 -0
  506. package/dist/playerglobal/flash/display/NativeWindow.js +246 -0
  507. package/dist/playerglobal/flash/display/NativeWindow.js.map +1 -0
  508. package/dist/playerglobal/flash/display/Shader.d.ts +4 -0
  509. package/dist/playerglobal/flash/display/Shader.d.ts.map +1 -0
  510. package/dist/playerglobal/flash/display/Shader.js +27 -0
  511. package/dist/playerglobal/flash/display/Shader.js.map +1 -0
  512. package/dist/playerglobal/flash/display/ShaderData.d.ts +7 -0
  513. package/dist/playerglobal/flash/display/ShaderData.d.ts.map +1 -0
  514. package/dist/playerglobal/flash/display/ShaderData.js +86 -0
  515. package/dist/playerglobal/flash/display/ShaderData.js.map +1 -0
  516. package/dist/playerglobal/flash/display/ShaderInput.d.ts +20 -0
  517. package/dist/playerglobal/flash/display/ShaderInput.d.ts.map +1 -0
  518. package/dist/playerglobal/flash/display/ShaderInput.js +65 -0
  519. package/dist/playerglobal/flash/display/ShaderInput.js.map +1 -0
  520. package/dist/playerglobal/flash/display/ShaderJob.d.ts +4 -0
  521. package/dist/playerglobal/flash/display/ShaderJob.d.ts.map +1 -0
  522. package/dist/playerglobal/flash/display/ShaderJob.js +182 -0
  523. package/dist/playerglobal/flash/display/ShaderJob.js.map +1 -0
  524. package/dist/playerglobal/flash/display/ShaderParameter.d.ts +4 -0
  525. package/dist/playerglobal/flash/display/ShaderParameter.d.ts.map +1 -0
  526. package/dist/playerglobal/flash/display/ShaderParameter.js +24 -0
  527. package/dist/playerglobal/flash/display/ShaderParameter.js.map +1 -0
  528. package/dist/playerglobal/flash/display/Shape.d.ts +4 -0
  529. package/dist/playerglobal/flash/display/Shape.d.ts.map +1 -0
  530. package/dist/playerglobal/flash/display/Shape.js +14 -0
  531. package/dist/playerglobal/flash/display/Shape.js.map +1 -0
  532. package/dist/playerglobal/flash/display/SimpleButton.d.ts +4 -0
  533. package/dist/playerglobal/flash/display/SimpleButton.d.ts.map +1 -0
  534. package/dist/playerglobal/flash/display/SimpleButton.js +104 -0
  535. package/dist/playerglobal/flash/display/SimpleButton.js.map +1 -0
  536. package/dist/playerglobal/flash/display/Sprite.d.ts +4 -0
  537. package/dist/playerglobal/flash/display/Sprite.d.ts.map +1 -0
  538. package/dist/playerglobal/flash/display/Sprite.js +85 -0
  539. package/dist/playerglobal/flash/display/Sprite.js.map +1 -0
  540. package/dist/playerglobal/flash/display/Stage.d.ts +4 -0
  541. package/dist/playerglobal/flash/display/Stage.d.ts.map +1 -0
  542. package/dist/playerglobal/flash/display/Stage.js +232 -0
  543. package/dist/playerglobal/flash/display/Stage.js.map +1 -0
  544. package/dist/playerglobal/flash/display/Stage3D.d.ts +4 -0
  545. package/dist/playerglobal/flash/display/Stage3D.d.ts.map +1 -0
  546. package/dist/playerglobal/flash/display/Stage3D.js +55 -0
  547. package/dist/playerglobal/flash/display/Stage3D.js.map +1 -0
  548. package/dist/playerglobal/flash/display/shaders.d.ts +45 -0
  549. package/dist/playerglobal/flash/display/shaders.d.ts.map +1 -0
  550. package/dist/playerglobal/flash/display/shaders.js +229 -0
  551. package/dist/playerglobal/flash/display/shaders.js.map +1 -0
  552. package/dist/playerglobal/flash/events/Event.d.ts +4 -0
  553. package/dist/playerglobal/flash/events/Event.d.ts.map +1 -0
  554. package/dist/playerglobal/flash/events/Event.js +59 -0
  555. package/dist/playerglobal/flash/events/Event.js.map +1 -0
  556. package/dist/playerglobal/flash/events/EventDispatcher.d.ts +11 -0
  557. package/dist/playerglobal/flash/events/EventDispatcher.d.ts.map +1 -0
  558. package/dist/playerglobal/flash/events/EventDispatcher.js +104 -0
  559. package/dist/playerglobal/flash/events/EventDispatcher.js.map +1 -0
  560. package/dist/playerglobal/flash/events/GestureEvent.d.ts +4 -0
  561. package/dist/playerglobal/flash/events/GestureEvent.d.ts.map +1 -0
  562. package/dist/playerglobal/flash/events/GestureEvent.js +35 -0
  563. package/dist/playerglobal/flash/events/GestureEvent.js.map +1 -0
  564. package/dist/playerglobal/flash/events/HTTPStatusEvent.d.ts +3 -0
  565. package/dist/playerglobal/flash/events/HTTPStatusEvent.d.ts.map +1 -0
  566. package/dist/playerglobal/flash/events/HTTPStatusEvent.js +9 -0
  567. package/dist/playerglobal/flash/events/HTTPStatusEvent.js.map +1 -0
  568. package/dist/playerglobal/flash/events/KeyboardEvent.d.ts +4 -0
  569. package/dist/playerglobal/flash/events/KeyboardEvent.d.ts.map +1 -0
  570. package/dist/playerglobal/flash/events/KeyboardEvent.js +52 -0
  571. package/dist/playerglobal/flash/events/KeyboardEvent.js.map +1 -0
  572. package/dist/playerglobal/flash/events/MouseEvent.d.ts +11 -0
  573. package/dist/playerglobal/flash/events/MouseEvent.d.ts.map +1 -0
  574. package/dist/playerglobal/flash/events/MouseEvent.js +60 -0
  575. package/dist/playerglobal/flash/events/MouseEvent.js.map +1 -0
  576. package/dist/playerglobal/flash/events/PressAndTapGestureEvent.d.ts +4 -0
  577. package/dist/playerglobal/flash/events/PressAndTapGestureEvent.d.ts.map +1 -0
  578. package/dist/playerglobal/flash/events/PressAndTapGestureEvent.js +31 -0
  579. package/dist/playerglobal/flash/events/PressAndTapGestureEvent.js.map +1 -0
  580. package/dist/playerglobal/flash/events/TimerEvent.d.ts +4 -0
  581. package/dist/playerglobal/flash/events/TimerEvent.d.ts.map +1 -0
  582. package/dist/playerglobal/flash/events/TimerEvent.js +17 -0
  583. package/dist/playerglobal/flash/events/TimerEvent.js.map +1 -0
  584. package/dist/playerglobal/flash/events/TouchEvent.d.ts +4 -0
  585. package/dist/playerglobal/flash/events/TouchEvent.d.ts.map +1 -0
  586. package/dist/playerglobal/flash/events/TouchEvent.js +46 -0
  587. package/dist/playerglobal/flash/events/TouchEvent.js.map +1 -0
  588. package/dist/playerglobal/flash/external/ExternalInterface.d.ts +4 -0
  589. package/dist/playerglobal/flash/external/ExternalInterface.d.ts.map +1 -0
  590. package/dist/playerglobal/flash/external/ExternalInterface.js +74 -0
  591. package/dist/playerglobal/flash/external/ExternalInterface.js.map +1 -0
  592. package/dist/playerglobal/flash/filesystem/File.d.ts +22 -0
  593. package/dist/playerglobal/flash/filesystem/File.d.ts.map +1 -0
  594. package/dist/playerglobal/flash/filesystem/File.js +341 -0
  595. package/dist/playerglobal/flash/filesystem/File.js.map +1 -0
  596. package/dist/playerglobal/flash/filesystem/FileStream.d.ts +4 -0
  597. package/dist/playerglobal/flash/filesystem/FileStream.d.ts.map +1 -0
  598. package/dist/playerglobal/flash/filesystem/FileStream.js +454 -0
  599. package/dist/playerglobal/flash/filesystem/FileStream.js.map +1 -0
  600. package/dist/playerglobal/flash/filesystem/paths.d.ts +43 -0
  601. package/dist/playerglobal/flash/filesystem/paths.d.ts.map +1 -0
  602. package/dist/playerglobal/flash/filesystem/paths.js +157 -0
  603. package/dist/playerglobal/flash/filesystem/paths.js.map +1 -0
  604. package/dist/playerglobal/flash/filesystem/writes.d.ts +36 -0
  605. package/dist/playerglobal/flash/filesystem/writes.d.ts.map +1 -0
  606. package/dist/playerglobal/flash/filesystem/writes.js +144 -0
  607. package/dist/playerglobal/flash/filesystem/writes.js.map +1 -0
  608. package/dist/playerglobal/flash/filters/BevelFilter.d.ts +4 -0
  609. package/dist/playerglobal/flash/filters/BevelFilter.d.ts.map +1 -0
  610. package/dist/playerglobal/flash/filters/BevelFilter.js +5 -0
  611. package/dist/playerglobal/flash/filters/BevelFilter.js.map +1 -0
  612. package/dist/playerglobal/flash/filters/BitmapFilter.d.ts +33 -0
  613. package/dist/playerglobal/flash/filters/BitmapFilter.d.ts.map +1 -0
  614. package/dist/playerglobal/flash/filters/BitmapFilter.js +206 -0
  615. package/dist/playerglobal/flash/filters/BitmapFilter.js.map +1 -0
  616. package/dist/playerglobal/flash/filters/BlurFilter.d.ts +4 -0
  617. package/dist/playerglobal/flash/filters/BlurFilter.d.ts.map +1 -0
  618. package/dist/playerglobal/flash/filters/BlurFilter.js +5 -0
  619. package/dist/playerglobal/flash/filters/BlurFilter.js.map +1 -0
  620. package/dist/playerglobal/flash/filters/ColorMatrixFilter.d.ts +4 -0
  621. package/dist/playerglobal/flash/filters/ColorMatrixFilter.d.ts.map +1 -0
  622. package/dist/playerglobal/flash/filters/ColorMatrixFilter.js +12 -0
  623. package/dist/playerglobal/flash/filters/ColorMatrixFilter.js.map +1 -0
  624. package/dist/playerglobal/flash/filters/ConvolutionFilter.d.ts +4 -0
  625. package/dist/playerglobal/flash/filters/ConvolutionFilter.d.ts.map +1 -0
  626. package/dist/playerglobal/flash/filters/ConvolutionFilter.js +27 -0
  627. package/dist/playerglobal/flash/filters/ConvolutionFilter.js.map +1 -0
  628. package/dist/playerglobal/flash/filters/DisplacementMapFilter.d.ts +12 -0
  629. package/dist/playerglobal/flash/filters/DisplacementMapFilter.d.ts.map +1 -0
  630. package/dist/playerglobal/flash/filters/DisplacementMapFilter.js +52 -0
  631. package/dist/playerglobal/flash/filters/DisplacementMapFilter.js.map +1 -0
  632. package/dist/playerglobal/flash/filters/DropShadowFilter.d.ts +4 -0
  633. package/dist/playerglobal/flash/filters/DropShadowFilter.d.ts.map +1 -0
  634. package/dist/playerglobal/flash/filters/DropShadowFilter.js +5 -0
  635. package/dist/playerglobal/flash/filters/DropShadowFilter.js.map +1 -0
  636. package/dist/playerglobal/flash/filters/GlowFilter.d.ts +4 -0
  637. package/dist/playerglobal/flash/filters/GlowFilter.d.ts.map +1 -0
  638. package/dist/playerglobal/flash/filters/GlowFilter.js +5 -0
  639. package/dist/playerglobal/flash/filters/GlowFilter.js.map +1 -0
  640. package/dist/playerglobal/flash/filters/GradientBevelFilter.d.ts +4 -0
  641. package/dist/playerglobal/flash/filters/GradientBevelFilter.d.ts.map +1 -0
  642. package/dist/playerglobal/flash/filters/GradientBevelFilter.js +5 -0
  643. package/dist/playerglobal/flash/filters/GradientBevelFilter.js.map +1 -0
  644. package/dist/playerglobal/flash/filters/GradientGlowFilter.d.ts +4 -0
  645. package/dist/playerglobal/flash/filters/GradientGlowFilter.d.ts.map +1 -0
  646. package/dist/playerglobal/flash/filters/GradientGlowFilter.js +5 -0
  647. package/dist/playerglobal/flash/filters/GradientGlowFilter.js.map +1 -0
  648. package/dist/playerglobal/flash/filters/ShaderFilter.d.ts +4 -0
  649. package/dist/playerglobal/flash/filters/ShaderFilter.d.ts.map +1 -0
  650. package/dist/playerglobal/flash/filters/ShaderFilter.js +54 -0
  651. package/dist/playerglobal/flash/filters/ShaderFilter.js.map +1 -0
  652. package/dist/playerglobal/flash/geom/Matrix3D.d.ts +4 -0
  653. package/dist/playerglobal/flash/geom/Matrix3D.d.ts.map +1 -0
  654. package/dist/playerglobal/flash/geom/Matrix3D.js +362 -0
  655. package/dist/playerglobal/flash/geom/Matrix3D.js.map +1 -0
  656. package/dist/playerglobal/flash/geom/PerspectiveProjection.d.ts +13 -0
  657. package/dist/playerglobal/flash/geom/PerspectiveProjection.d.ts.map +1 -0
  658. package/dist/playerglobal/flash/geom/PerspectiveProjection.js +123 -0
  659. package/dist/playerglobal/flash/geom/PerspectiveProjection.js.map +1 -0
  660. package/dist/playerglobal/flash/geom/Transform.d.ts +13 -0
  661. package/dist/playerglobal/flash/geom/Transform.d.ts.map +1 -0
  662. package/dist/playerglobal/flash/geom/Transform.js +246 -0
  663. package/dist/playerglobal/flash/geom/Transform.js.map +1 -0
  664. package/dist/playerglobal/flash/geom/Utils3D.d.ts +4 -0
  665. package/dist/playerglobal/flash/geom/Utils3D.d.ts.map +1 -0
  666. package/dist/playerglobal/flash/geom/Utils3D.js +86 -0
  667. package/dist/playerglobal/flash/geom/Utils3D.js.map +1 -0
  668. package/dist/playerglobal/flash/globalization/Collator.d.ts +4 -0
  669. package/dist/playerglobal/flash/globalization/Collator.d.ts.map +1 -0
  670. package/dist/playerglobal/flash/globalization/Collator.js +150 -0
  671. package/dist/playerglobal/flash/globalization/Collator.js.map +1 -0
  672. package/dist/playerglobal/flash/globalization/CurrencyFormatter.d.ts +4 -0
  673. package/dist/playerglobal/flash/globalization/CurrencyFormatter.d.ts.map +1 -0
  674. package/dist/playerglobal/flash/globalization/CurrencyFormatter.js +273 -0
  675. package/dist/playerglobal/flash/globalization/CurrencyFormatter.js.map +1 -0
  676. package/dist/playerglobal/flash/globalization/CurrencyParseResult.d.ts +4 -0
  677. package/dist/playerglobal/flash/globalization/CurrencyParseResult.d.ts.map +1 -0
  678. package/dist/playerglobal/flash/globalization/CurrencyParseResult.js +22 -0
  679. package/dist/playerglobal/flash/globalization/CurrencyParseResult.js.map +1 -0
  680. package/dist/playerglobal/flash/globalization/DateTimeFormatter.d.ts +4 -0
  681. package/dist/playerglobal/flash/globalization/DateTimeFormatter.d.ts.map +1 -0
  682. package/dist/playerglobal/flash/globalization/DateTimeFormatter.js +464 -0
  683. package/dist/playerglobal/flash/globalization/DateTimeFormatter.js.map +1 -0
  684. package/dist/playerglobal/flash/globalization/LocaleID.d.ts +4 -0
  685. package/dist/playerglobal/flash/globalization/LocaleID.d.ts.map +1 -0
  686. package/dist/playerglobal/flash/globalization/LocaleID.js +145 -0
  687. package/dist/playerglobal/flash/globalization/LocaleID.js.map +1 -0
  688. package/dist/playerglobal/flash/globalization/NumberFormatter.d.ts +67 -0
  689. package/dist/playerglobal/flash/globalization/NumberFormatter.d.ts.map +1 -0
  690. package/dist/playerglobal/flash/globalization/NumberFormatter.js +445 -0
  691. package/dist/playerglobal/flash/globalization/NumberFormatter.js.map +1 -0
  692. package/dist/playerglobal/flash/globalization/NumberParseResult.d.ts +3 -0
  693. package/dist/playerglobal/flash/globalization/NumberParseResult.d.ts.map +1 -0
  694. package/dist/playerglobal/flash/globalization/NumberParseResult.js +23 -0
  695. package/dist/playerglobal/flash/globalization/NumberParseResult.js.map +1 -0
  696. package/dist/playerglobal/flash/globalization/StringTools.d.ts +4 -0
  697. package/dist/playerglobal/flash/globalization/StringTools.d.ts.map +1 -0
  698. package/dist/playerglobal/flash/globalization/StringTools.js +60 -0
  699. package/dist/playerglobal/flash/globalization/StringTools.js.map +1 -0
  700. package/dist/playerglobal/flash/globalization/locale.d.ts +62 -0
  701. package/dist/playerglobal/flash/globalization/locale.d.ts.map +1 -0
  702. package/dist/playerglobal/flash/globalization/locale.js +191 -0
  703. package/dist/playerglobal/flash/globalization/locale.js.map +1 -0
  704. package/dist/playerglobal/flash/media/Camera.d.ts +4 -0
  705. package/dist/playerglobal/flash/media/Camera.d.ts.map +1 -0
  706. package/dist/playerglobal/flash/media/Camera.js +90 -0
  707. package/dist/playerglobal/flash/media/Camera.js.map +1 -0
  708. package/dist/playerglobal/flash/media/Microphone.d.ts +4 -0
  709. package/dist/playerglobal/flash/media/Microphone.d.ts.map +1 -0
  710. package/dist/playerglobal/flash/media/Microphone.js +127 -0
  711. package/dist/playerglobal/flash/media/Microphone.js.map +1 -0
  712. package/dist/playerglobal/flash/media/Sound.d.ts +16 -0
  713. package/dist/playerglobal/flash/media/Sound.d.ts.map +1 -0
  714. package/dist/playerglobal/flash/media/Sound.js +544 -0
  715. package/dist/playerglobal/flash/media/Sound.js.map +1 -0
  716. package/dist/playerglobal/flash/media/SoundMixer.d.ts +4 -0
  717. package/dist/playerglobal/flash/media/SoundMixer.d.ts.map +1 -0
  718. package/dist/playerglobal/flash/media/SoundMixer.js +75 -0
  719. package/dist/playerglobal/flash/media/SoundMixer.js.map +1 -0
  720. package/dist/playerglobal/flash/media/SoundTransform.d.ts +4 -0
  721. package/dist/playerglobal/flash/media/SoundTransform.d.ts.map +1 -0
  722. package/dist/playerglobal/flash/media/SoundTransform.js +41 -0
  723. package/dist/playerglobal/flash/media/SoundTransform.js.map +1 -0
  724. package/dist/playerglobal/flash/media/Video.d.ts +4 -0
  725. package/dist/playerglobal/flash/media/Video.d.ts.map +1 -0
  726. package/dist/playerglobal/flash/media/Video.js +44 -0
  727. package/dist/playerglobal/flash/media/Video.js.map +1 -0
  728. package/dist/playerglobal/flash/net/FileFilter.d.ts +4 -0
  729. package/dist/playerglobal/flash/net/FileFilter.d.ts.map +1 -0
  730. package/dist/playerglobal/flash/net/FileFilter.js +28 -0
  731. package/dist/playerglobal/flash/net/FileFilter.js.map +1 -0
  732. package/dist/playerglobal/flash/net/FileReference.d.ts +4 -0
  733. package/dist/playerglobal/flash/net/FileReference.d.ts.map +1 -0
  734. package/dist/playerglobal/flash/net/FileReference.js +198 -0
  735. package/dist/playerglobal/flash/net/FileReference.js.map +1 -0
  736. package/dist/playerglobal/flash/net/LocalConnection.d.ts +5 -0
  737. package/dist/playerglobal/flash/net/LocalConnection.d.ts.map +1 -0
  738. package/dist/playerglobal/flash/net/LocalConnection.js +168 -0
  739. package/dist/playerglobal/flash/net/LocalConnection.js.map +1 -0
  740. package/dist/playerglobal/flash/net/NetConnection.d.ts +4 -0
  741. package/dist/playerglobal/flash/net/NetConnection.d.ts.map +1 -0
  742. package/dist/playerglobal/flash/net/NetConnection.js +156 -0
  743. package/dist/playerglobal/flash/net/NetConnection.js.map +1 -0
  744. package/dist/playerglobal/flash/net/SharedObject.d.ts +4 -0
  745. package/dist/playerglobal/flash/net/SharedObject.d.ts.map +1 -0
  746. package/dist/playerglobal/flash/net/SharedObject.js +300 -0
  747. package/dist/playerglobal/flash/net/SharedObject.js.map +1 -0
  748. package/dist/playerglobal/flash/net/Socket.d.ts +4 -0
  749. package/dist/playerglobal/flash/net/Socket.d.ts.map +1 -0
  750. package/dist/playerglobal/flash/net/Socket.js +283 -0
  751. package/dist/playerglobal/flash/net/Socket.js.map +1 -0
  752. package/dist/playerglobal/flash/net/URLRequest.d.ts +4 -0
  753. package/dist/playerglobal/flash/net/URLRequest.d.ts.map +1 -0
  754. package/dist/playerglobal/flash/net/URLRequest.js +94 -0
  755. package/dist/playerglobal/flash/net/URLRequest.js.map +1 -0
  756. package/dist/playerglobal/flash/net/URLStream.d.ts +4 -0
  757. package/dist/playerglobal/flash/net/URLStream.d.ts.map +1 -0
  758. package/dist/playerglobal/flash/net/URLStream.js +147 -0
  759. package/dist/playerglobal/flash/net/URLStream.js.map +1 -0
  760. package/dist/playerglobal/flash/net/XMLSocket.d.ts +4 -0
  761. package/dist/playerglobal/flash/net/XMLSocket.d.ts.map +1 -0
  762. package/dist/playerglobal/flash/net/XMLSocket.js +15 -0
  763. package/dist/playerglobal/flash/net/XMLSocket.js.map +1 -0
  764. package/dist/playerglobal/flash/net/local-modern.d.ts +4 -0
  765. package/dist/playerglobal/flash/net/local-modern.d.ts.map +1 -0
  766. package/dist/playerglobal/flash/net/local-modern.js +143 -0
  767. package/dist/playerglobal/flash/net/local-modern.js.map +1 -0
  768. package/dist/playerglobal/flash/net/local-values.d.ts +6 -0
  769. package/dist/playerglobal/flash/net/local-values.d.ts.map +1 -0
  770. package/dist/playerglobal/flash/net/local-values.js +218 -0
  771. package/dist/playerglobal/flash/net/local-values.js.map +1 -0
  772. package/dist/playerglobal/flash/net/navigateToURL.d.ts +4 -0
  773. package/dist/playerglobal/flash/net/navigateToURL.d.ts.map +1 -0
  774. package/dist/playerglobal/flash/net/navigateToURL.js +30 -0
  775. package/dist/playerglobal/flash/net/navigateToURL.js.map +1 -0
  776. package/dist/playerglobal/flash/profiler/Telemetry.d.ts +3 -0
  777. package/dist/playerglobal/flash/profiler/Telemetry.d.ts.map +1 -0
  778. package/dist/playerglobal/flash/profiler/Telemetry.js +26 -0
  779. package/dist/playerglobal/flash/profiler/Telemetry.js.map +1 -0
  780. package/dist/playerglobal/flash/sensors/Accelerometer.d.ts +3 -0
  781. package/dist/playerglobal/flash/sensors/Accelerometer.d.ts.map +1 -0
  782. package/dist/playerglobal/flash/sensors/Accelerometer.js +13 -0
  783. package/dist/playerglobal/flash/sensors/Accelerometer.js.map +1 -0
  784. package/dist/playerglobal/flash/system/ApplicationDomain.d.ts +4 -0
  785. package/dist/playerglobal/flash/system/ApplicationDomain.d.ts.map +1 -0
  786. package/dist/playerglobal/flash/system/ApplicationDomain.js +70 -0
  787. package/dist/playerglobal/flash/system/ApplicationDomain.js.map +1 -0
  788. package/dist/playerglobal/flash/system/Capabilities.d.ts +4 -0
  789. package/dist/playerglobal/flash/system/Capabilities.d.ts.map +1 -0
  790. package/dist/playerglobal/flash/system/Capabilities.js +164 -0
  791. package/dist/playerglobal/flash/system/Capabilities.js.map +1 -0
  792. package/dist/playerglobal/flash/system/FSCommandHost.d.ts +4 -0
  793. package/dist/playerglobal/flash/system/FSCommandHost.d.ts.map +1 -0
  794. package/dist/playerglobal/flash/system/FSCommandHost.js +18 -0
  795. package/dist/playerglobal/flash/system/FSCommandHost.js.map +1 -0
  796. package/dist/playerglobal/flash/system/Security.d.ts +4 -0
  797. package/dist/playerglobal/flash/system/Security.d.ts.map +1 -0
  798. package/dist/playerglobal/flash/system/Security.js +47 -0
  799. package/dist/playerglobal/flash/system/Security.js.map +1 -0
  800. package/dist/playerglobal/flash/system/SecurityDomain.d.ts +4 -0
  801. package/dist/playerglobal/flash/system/SecurityDomain.d.ts.map +1 -0
  802. package/dist/playerglobal/flash/system/SecurityDomain.js +22 -0
  803. package/dist/playerglobal/flash/system/SecurityDomain.js.map +1 -0
  804. package/dist/playerglobal/flash/system/System.d.ts +4 -0
  805. package/dist/playerglobal/flash/system/System.d.ts.map +1 -0
  806. package/dist/playerglobal/flash/system/System.js +74 -0
  807. package/dist/playerglobal/flash/system/System.js.map +1 -0
  808. package/dist/playerglobal/flash/system/Worker.d.ts +6 -0
  809. package/dist/playerglobal/flash/system/Worker.d.ts.map +1 -0
  810. package/dist/playerglobal/flash/system/Worker.js +113 -0
  811. package/dist/playerglobal/flash/system/Worker.js.map +1 -0
  812. package/dist/playerglobal/flash/text/Font.d.ts +8 -0
  813. package/dist/playerglobal/flash/text/Font.d.ts.map +1 -0
  814. package/dist/playerglobal/flash/text/Font.js +96 -0
  815. package/dist/playerglobal/flash/text/Font.js.map +1 -0
  816. package/dist/playerglobal/flash/text/StaticText.d.ts +3 -0
  817. package/dist/playerglobal/flash/text/StaticText.d.ts.map +1 -0
  818. package/dist/playerglobal/flash/text/StaticText.js +17 -0
  819. package/dist/playerglobal/flash/text/StaticText.js.map +1 -0
  820. package/dist/playerglobal/flash/text/StyleSheet.d.ts +9 -0
  821. package/dist/playerglobal/flash/text/StyleSheet.d.ts.map +1 -0
  822. package/dist/playerglobal/flash/text/StyleSheet.js +66 -0
  823. package/dist/playerglobal/flash/text/StyleSheet.js.map +1 -0
  824. package/dist/playerglobal/flash/text/TextField.d.ts +4 -0
  825. package/dist/playerglobal/flash/text/TextField.d.ts.map +1 -0
  826. package/dist/playerglobal/flash/text/TextField.js +708 -0
  827. package/dist/playerglobal/flash/text/TextField.js.map +1 -0
  828. package/dist/playerglobal/flash/text/TextRenderer.d.ts +4 -0
  829. package/dist/playerglobal/flash/text/TextRenderer.d.ts.map +1 -0
  830. package/dist/playerglobal/flash/text/TextRenderer.js +78 -0
  831. package/dist/playerglobal/flash/text/TextRenderer.js.map +1 -0
  832. package/dist/playerglobal/flash/text/engine/FontDescription.d.ts +4 -0
  833. package/dist/playerglobal/flash/text/engine/FontDescription.d.ts.map +1 -0
  834. package/dist/playerglobal/flash/text/engine/FontDescription.js +142 -0
  835. package/dist/playerglobal/flash/text/engine/FontDescription.js.map +1 -0
  836. package/dist/playerglobal/flash/text/engine/TabStop.d.ts +4 -0
  837. package/dist/playerglobal/flash/text/engine/TabStop.d.ts.map +1 -0
  838. package/dist/playerglobal/flash/text/engine/TabStop.js +47 -0
  839. package/dist/playerglobal/flash/text/engine/TabStop.js.map +1 -0
  840. package/dist/playerglobal/flash/trace/Trace.d.ts +3 -0
  841. package/dist/playerglobal/flash/trace/Trace.d.ts.map +1 -0
  842. package/dist/playerglobal/flash/trace/Trace.js +18 -0
  843. package/dist/playerglobal/flash/trace/Trace.js.map +1 -0
  844. package/dist/playerglobal/flash/ui/ContextMenu.d.ts +4 -0
  845. package/dist/playerglobal/flash/ui/ContextMenu.d.ts.map +1 -0
  846. package/dist/playerglobal/flash/ui/ContextMenu.js +18 -0
  847. package/dist/playerglobal/flash/ui/ContextMenu.js.map +1 -0
  848. package/dist/playerglobal/flash/ui/GameInput.d.ts +4 -0
  849. package/dist/playerglobal/flash/ui/GameInput.d.ts.map +1 -0
  850. package/dist/playerglobal/flash/ui/GameInput.js +20 -0
  851. package/dist/playerglobal/flash/ui/GameInput.js.map +1 -0
  852. package/dist/playerglobal/flash/ui/Keyboard.d.ts +3 -0
  853. package/dist/playerglobal/flash/ui/Keyboard.d.ts.map +1 -0
  854. package/dist/playerglobal/flash/ui/Keyboard.js +28 -0
  855. package/dist/playerglobal/flash/ui/Keyboard.js.map +1 -0
  856. package/dist/playerglobal/flash/ui/Mouse.d.ts +4 -0
  857. package/dist/playerglobal/flash/ui/Mouse.d.ts.map +1 -0
  858. package/dist/playerglobal/flash/ui/Mouse.js +128 -0
  859. package/dist/playerglobal/flash/ui/Mouse.js.map +1 -0
  860. package/dist/playerglobal/flash/ui/Multitouch.d.ts +4 -0
  861. package/dist/playerglobal/flash/ui/Multitouch.d.ts.map +1 -0
  862. package/dist/playerglobal/flash/ui/Multitouch.js +47 -0
  863. package/dist/playerglobal/flash/ui/Multitouch.js.map +1 -0
  864. package/dist/playerglobal/flash/utils/ByteArray.d.ts +5 -0
  865. package/dist/playerglobal/flash/utils/ByteArray.d.ts.map +1 -0
  866. package/dist/playerglobal/flash/utils/ByteArray.js +156 -0
  867. package/dist/playerglobal/flash/utils/ByteArray.js.map +1 -0
  868. package/dist/playerglobal/flash/utils/Timer.d.ts +4 -0
  869. package/dist/playerglobal/flash/utils/Timer.d.ts.map +1 -0
  870. package/dist/playerglobal/flash/utils/Timer.js +26 -0
  871. package/dist/playerglobal/flash/utils/Timer.js.map +1 -0
  872. package/dist/playerglobal/flash/xml/XMLDocument.d.ts +4 -0
  873. package/dist/playerglobal/flash/xml/XMLDocument.d.ts.map +1 -0
  874. package/dist/playerglobal/flash/xml/XMLDocument.js +75 -0
  875. package/dist/playerglobal/flash/xml/XMLDocument.js.map +1 -0
  876. package/dist/playerglobal/index.d.ts +6 -0
  877. package/dist/playerglobal/index.d.ts.map +1 -0
  878. package/dist/playerglobal/index.js +225 -0
  879. package/dist/playerglobal/index.js.map +1 -0
  880. package/dist/playerglobal/libraries.d.ts +5 -0
  881. package/dist/playerglobal/libraries.d.ts.map +1 -0
  882. package/dist/playerglobal/libraries.js +11 -0
  883. package/dist/playerglobal/libraries.js.map +1 -0
  884. package/dist/playerglobal/playerglobal-library.d.ts +3 -0
  885. package/dist/playerglobal/playerglobal-library.d.ts.map +1 -0
  886. package/dist/playerglobal/playerglobal-library.js +23 -0
  887. package/dist/playerglobal/playerglobal-library.js.map +1 -0
  888. package/dist/playerglobal/toplevel.d.ts +14 -0
  889. package/dist/playerglobal/toplevel.d.ts.map +1 -0
  890. package/dist/playerglobal/toplevel.js +123 -0
  891. package/dist/playerglobal/toplevel.js.map +1 -0
  892. package/dist/scene/advanced.d.ts +28 -0
  893. package/dist/scene/advanced.d.ts.map +1 -0
  894. package/dist/scene/advanced.js +182 -0
  895. package/dist/scene/advanced.js.map +1 -0
  896. package/dist/scene/context-menu.d.ts +16 -0
  897. package/dist/scene/context-menu.d.ts.map +1 -0
  898. package/dist/scene/context-menu.js +230 -0
  899. package/dist/scene/context-menu.js.map +1 -0
  900. package/dist/scene/fills.d.ts +45 -0
  901. package/dist/scene/fills.d.ts.map +1 -0
  902. package/dist/scene/fills.js +39 -0
  903. package/dist/scene/fills.js.map +1 -0
  904. package/dist/scene/filter-layers.d.ts +99 -0
  905. package/dist/scene/filter-layers.d.ts.map +1 -0
  906. package/dist/scene/filter-layers.js +352 -0
  907. package/dist/scene/filter-layers.js.map +1 -0
  908. package/dist/scene/filters.d.ts +47 -0
  909. package/dist/scene/filters.d.ts.map +1 -0
  910. package/dist/scene/filters.js +314 -0
  911. package/dist/scene/filters.js.map +1 -0
  912. package/dist/scene/hidden.d.ts +8 -0
  913. package/dist/scene/hidden.d.ts.map +1 -0
  914. package/dist/scene/hidden.js +33 -0
  915. package/dist/scene/hidden.js.map +1 -0
  916. package/dist/scene/lines.d.ts +87 -0
  917. package/dist/scene/lines.d.ts.map +1 -0
  918. package/dist/scene/lines.js +242 -0
  919. package/dist/scene/lines.js.map +1 -0
  920. package/dist/scene/masks.d.ts +32 -0
  921. package/dist/scene/masks.d.ts.map +1 -0
  922. package/dist/scene/masks.js +136 -0
  923. package/dist/scene/masks.js.map +1 -0
  924. package/dist/scene/paints.d.ts +86 -0
  925. package/dist/scene/paints.d.ts.map +1 -0
  926. package/dist/scene/paints.js +282 -0
  927. package/dist/scene/paints.js.map +1 -0
  928. package/dist/scene/parts.d.ts +57 -0
  929. package/dist/scene/parts.d.ts.map +1 -0
  930. package/dist/scene/parts.js +156 -0
  931. package/dist/scene/parts.js.map +1 -0
  932. package/dist/scene/pixel-bender-glsl.d.ts +32 -0
  933. package/dist/scene/pixel-bender-glsl.d.ts.map +1 -0
  934. package/dist/scene/pixel-bender-glsl.js +618 -0
  935. package/dist/scene/pixel-bender-glsl.js.map +1 -0
  936. package/dist/scene/planes.d.ts +89 -0
  937. package/dist/scene/planes.d.ts.map +1 -0
  938. package/dist/scene/planes.js +177 -0
  939. package/dist/scene/planes.js.map +1 -0
  940. package/dist/scene/pointer.d.ts +18 -0
  941. package/dist/scene/pointer.d.ts.map +1 -0
  942. package/dist/scene/pointer.js +245 -0
  943. package/dist/scene/pointer.js.map +1 -0
  944. package/dist/scene/shapes.d.ts +56 -0
  945. package/dist/scene/shapes.d.ts.map +1 -0
  946. package/dist/scene/shapes.js +300 -0
  947. package/dist/scene/shapes.js.map +1 -0
  948. package/dist/scene/stale-shapes.d.ts +18 -0
  949. package/dist/scene/stale-shapes.d.ts.map +1 -0
  950. package/dist/scene/stale-shapes.js +39 -0
  951. package/dist/scene/stale-shapes.js.map +1 -0
  952. package/dist/scene/strokes.d.ts +20 -0
  953. package/dist/scene/strokes.d.ts.map +1 -0
  954. package/dist/scene/strokes.js +111 -0
  955. package/dist/scene/strokes.js.map +1 -0
  956. package/dist/scene/text-items.d.ts +48 -0
  957. package/dist/scene/text-items.d.ts.map +1 -0
  958. package/dist/scene/text-items.js +206 -0
  959. package/dist/scene/text-items.js.map +1 -0
  960. package/dist/scene/text.d.ts +98 -0
  961. package/dist/scene/text.d.ts.map +1 -0
  962. package/dist/scene/text.js +249 -0
  963. package/dist/scene/text.js.map +1 -0
  964. package/dist/scene/view.d.ts +277 -0
  965. package/dist/scene/view.d.ts.map +1 -0
  966. package/dist/scene/view.js +1185 -0
  967. package/dist/scene/view.js.map +1 -0
  968. package/dist/scripting/clipboard.d.ts +61 -0
  969. package/dist/scripting/clipboard.d.ts.map +1 -0
  970. package/dist/scripting/clipboard.js +147 -0
  971. package/dist/scripting/clipboard.js.map +1 -0
  972. package/dist/scripting/code.d.ts +294 -0
  973. package/dist/scripting/code.d.ts.map +1 -0
  974. package/dist/scripting/code.js +901 -0
  975. package/dist/scripting/code.js.map +1 -0
  976. package/dist/scripting/evaluate.d.ts +38 -0
  977. package/dist/scripting/evaluate.d.ts.map +1 -0
  978. package/dist/scripting/evaluate.js +145 -0
  979. package/dist/scripting/evaluate.js.map +1 -0
  980. package/dist/scripting/events.d.ts +69 -0
  981. package/dist/scripting/events.d.ts.map +1 -0
  982. package/dist/scripting/events.js +173 -0
  983. package/dist/scripting/events.js.map +1 -0
  984. package/dist/scripting/handover.d.ts +76 -0
  985. package/dist/scripting/handover.d.ts.map +1 -0
  986. package/dist/scripting/handover.js +183 -0
  987. package/dist/scripting/handover.js.map +1 -0
  988. package/dist/scripting/lazy.d.ts +9 -0
  989. package/dist/scripting/lazy.d.ts.map +1 -0
  990. package/dist/scripting/lazy.js +39 -0
  991. package/dist/scripting/lazy.js.map +1 -0
  992. package/dist/scripting/lifecycle.d.ts +90 -0
  993. package/dist/scripting/lifecycle.d.ts.map +1 -0
  994. package/dist/scripting/lifecycle.js +273 -0
  995. package/dist/scripting/lifecycle.js.map +1 -0
  996. package/dist/scripting/loads.d.ts +220 -0
  997. package/dist/scripting/loads.d.ts.map +1 -0
  998. package/dist/scripting/loads.js +861 -0
  999. package/dist/scripting/loads.js.map +1 -0
  1000. package/dist/scripting/sha256.d.ts +5 -0
  1001. package/dist/scripting/sha256.d.ts.map +1 -0
  1002. package/dist/scripting/sha256.js +96 -0
  1003. package/dist/scripting/sha256.js.map +1 -0
  1004. package/dist/scripting/symbols.d.ts +74 -0
  1005. package/dist/scripting/symbols.d.ts.map +1 -0
  1006. package/dist/scripting/symbols.js +349 -0
  1007. package/dist/scripting/symbols.js.map +1 -0
  1008. package/dist/scripting/timers.d.ts +145 -0
  1009. package/dist/scripting/timers.d.ts.map +1 -0
  1010. package/dist/scripting/timers.js +435 -0
  1011. package/dist/scripting/timers.js.map +1 -0
  1012. package/dist/scripting/workers.d.ts +138 -0
  1013. package/dist/scripting/workers.d.ts.map +1 -0
  1014. package/dist/scripting/workers.js +924 -0
  1015. package/dist/scripting/workers.js.map +1 -0
  1016. package/dist/scripting.d.ts +486 -0
  1017. package/dist/scripting.d.ts.map +1 -0
  1018. package/dist/scripting.js +1019 -0
  1019. package/dist/scripting.js.map +1 -0
  1020. package/dist/stage.d.ts +3 -0
  1021. package/dist/stage.d.ts.map +1 -0
  1022. package/dist/stage.js +5 -0
  1023. package/dist/stage.js.map +1 -0
  1024. package/dist/text/csm.d.ts +34 -0
  1025. package/dist/text/csm.d.ts.map +1 -0
  1026. package/dist/text/csm.js +114 -0
  1027. package/dist/text/csm.js.map +1 -0
  1028. package/dist/text/css.d.ts +9 -0
  1029. package/dist/text/css.d.ts.map +1 -0
  1030. package/dist/text/css.js +168 -0
  1031. package/dist/text/css.js.map +1 -0
  1032. package/dist/text/fonts.d.ts +23 -0
  1033. package/dist/text/fonts.d.ts.map +1 -0
  1034. package/dist/text/fonts.js +98 -0
  1035. package/dist/text/fonts.js.map +1 -0
  1036. package/dist/text/layout.d.ts +79 -0
  1037. package/dist/text/layout.d.ts.map +1 -0
  1038. package/dist/text/layout.js +394 -0
  1039. package/dist/text/layout.js.map +1 -0
  1040. package/dist/text/saffron.d.ts +121 -0
  1041. package/dist/text/saffron.d.ts.map +1 -0
  1042. package/dist/text/saffron.js +442 -0
  1043. package/dist/text/saffron.js.map +1 -0
  1044. package/dist/text/static.d.ts +33 -0
  1045. package/dist/text/static.d.ts.map +1 -0
  1046. package/dist/text/static.js +110 -0
  1047. package/dist/text/static.js.map +1 -0
  1048. package/dist/text/text.d.ts +69 -0
  1049. package/dist/text/text.d.ts.map +1 -0
  1050. package/dist/text/text.js +432 -0
  1051. package/dist/text/text.js.map +1 -0
  1052. package/dist/workers/protocol.d.ts +128 -0
  1053. package/dist/workers/protocol.d.ts.map +1 -0
  1054. package/dist/workers/protocol.js +2 -0
  1055. package/dist/workers/protocol.js.map +1 -0
  1056. package/dist/workers/thread.d.ts +15 -0
  1057. package/dist/workers/thread.d.ts.map +1 -0
  1058. package/dist/workers/thread.js +160 -0
  1059. package/dist/workers/thread.js.map +1 -0
  1060. package/dist/workers/wire.d.ts +53 -0
  1061. package/dist/workers/wire.d.ts.map +1 -0
  1062. package/dist/workers/wire.js +199 -0
  1063. package/dist/workers/wire.js.map +1 -0
  1064. package/package.json +55 -3
  1065. package/src/air-definitions.ts +129 -0
  1066. package/src/avm1/amf.ts +564 -0
  1067. package/src/avm1/avm1.ts +1652 -0
  1068. package/src/avm1/bindings.ts +257 -0
  1069. package/src/avm1/classes.ts +85 -0
  1070. package/src/avm1/clips.ts +305 -0
  1071. package/src/avm1/compile.ts +179 -0
  1072. package/src/avm1/external.ts +99 -0
  1073. package/src/avm1/focus.ts +342 -0
  1074. package/src/avm1/globals/BitmapData.ts +736 -0
  1075. package/src/avm1/globals/Button.ts +43 -0
  1076. package/src/avm1/globals/Color.ts +138 -0
  1077. package/src/avm1/globals/ExternalInterface.ts +402 -0
  1078. package/src/avm1/globals/FileReference.ts +249 -0
  1079. package/src/avm1/globals/Key.ts +102 -0
  1080. package/src/avm1/globals/LoadVars.ts +280 -0
  1081. package/src/avm1/globals/LocalConnection.ts +137 -0
  1082. package/src/avm1/globals/MovieClip.ts +1365 -0
  1083. package/src/avm1/globals/MovieClipLoader.ts +150 -0
  1084. package/src/avm1/globals/NetConnection.ts +352 -0
  1085. package/src/avm1/globals/PrintJob.ts +57 -0
  1086. package/src/avm1/globals/Selection.ts +103 -0
  1087. package/src/avm1/globals/SharedObject.ts +300 -0
  1088. package/src/avm1/globals/Sound.ts +326 -0
  1089. package/src/avm1/globals/Stage.ts +19 -0
  1090. package/src/avm1/globals/StyleSheet.ts +280 -0
  1091. package/src/avm1/globals/TextField.ts +611 -0
  1092. package/src/avm1/globals/TextFormat.ts +250 -0
  1093. package/src/avm1/globals/TextSnapshot.ts +128 -0
  1094. package/src/avm1/globals/XML.ts +521 -0
  1095. package/src/avm1/globals/XMLNode.ts +502 -0
  1096. package/src/avm1/globals/XMLSocket.ts +267 -0
  1097. package/src/avm1/globals/drawing.ts +253 -0
  1098. package/src/avm1/globals/filters.ts +782 -0
  1099. package/src/avm1/globals/geom.ts +887 -0
  1100. package/src/avm1/input.ts +556 -0
  1101. package/src/avm1/keyboard.ts +133 -0
  1102. package/src/avm1/loads.ts +461 -0
  1103. package/src/avm1/net.ts +287 -0
  1104. package/src/avm1/paths.ts +132 -0
  1105. package/src/avm1/pointer.ts +607 -0
  1106. package/src/avm1/queue.ts +335 -0
  1107. package/src/avm1/sound.ts +135 -0
  1108. package/src/avm1/swf.ts +193 -0
  1109. package/src/avm1/timers.ts +141 -0
  1110. package/src/bitmap/bitmap.ts +796 -0
  1111. package/src/bitmap/draw.ts +96 -0
  1112. package/src/bitmap/dxt.ts +20 -0
  1113. package/src/bitmap/filters.ts +810 -0
  1114. package/src/bitmap/images.ts +304 -0
  1115. package/src/bitmap/kernel.ts +77 -0
  1116. package/src/bitmap/ops.ts +1608 -0
  1117. package/src/bitmap/pixel-bender.ts +1089 -0
  1118. package/src/bitmap/png.ts +152 -0
  1119. package/src/bitmap/turbulence.ts +117 -0
  1120. package/src/clock.ts +196 -0
  1121. package/src/display/bitmapobject.ts +31 -0
  1122. package/src/display/bounds.ts +702 -0
  1123. package/src/display/buttonobject.ts +382 -0
  1124. package/src/display/color.ts +54 -0
  1125. package/src/display/container.ts +169 -0
  1126. package/src/display/display.ts +28 -0
  1127. package/src/display/displayobject.ts +823 -0
  1128. package/src/display/drawing.ts +744 -0
  1129. package/src/display/filters.ts +393 -0
  1130. package/src/display/geometry.ts +237 -0
  1131. package/src/display/gradients.ts +165 -0
  1132. package/src/display/graphicsdata.ts +745 -0
  1133. package/src/display/instantiate.ts +95 -0
  1134. package/src/display/matrix3d.ts +461 -0
  1135. package/src/display/morph.ts +275 -0
  1136. package/src/display/movieclip.ts +771 -0
  1137. package/src/display/perspective.ts +253 -0
  1138. package/src/display/plane.ts +192 -0
  1139. package/src/display/scale9.ts +321 -0
  1140. package/src/display/shapeobject.ts +160 -0
  1141. package/src/display/shapes.ts +602 -0
  1142. package/src/display/stretch.ts +217 -0
  1143. package/src/display/textobjects.ts +248 -0
  1144. package/src/display/timeline.ts +831 -0
  1145. package/src/display/value-lists.ts +50 -0
  1146. package/src/display/videoobject.ts +7 -0
  1147. package/src/display/walk.ts +169 -0
  1148. package/src/files.ts +466 -0
  1149. package/src/hosts.ts +645 -0
  1150. package/src/index.ts +66 -0
  1151. package/src/input/activation.ts +62 -0
  1152. package/src/input/avm1.ts +102 -0
  1153. package/src/input/canvas.ts +74 -0
  1154. package/src/input/context-menu.ts +105 -0
  1155. package/src/input/keyboard.ts +645 -0
  1156. package/src/input/pointer.ts +1127 -0
  1157. package/src/input/text-editor.ts +361 -0
  1158. package/src/input/touch.ts +302 -0
  1159. package/src/localconnection.ts +129 -0
  1160. package/src/media/audio.ts +484 -0
  1161. package/src/media/dynamic-sound.ts +118 -0
  1162. package/src/media/extract.ts +191 -0
  1163. package/src/media/mp3.ts +205 -0
  1164. package/src/media/sounds.ts +735 -0
  1165. package/src/media/streaming-audio.ts +150 -0
  1166. package/src/player.ts +686 -0
  1167. package/src/playerglobal/air/net/WebSocket.ts +318 -0
  1168. package/src/playerglobal/air-library.ts +14 -0
  1169. package/src/playerglobal/context3d/context.ts +672 -0
  1170. package/src/playerglobal/context3d/errors.ts +116 -0
  1171. package/src/playerglobal/context3d/lifecycle.ts +428 -0
  1172. package/src/playerglobal/context3d/readback.ts +65 -0
  1173. package/src/playerglobal/context3d/resources.ts +406 -0
  1174. package/src/playerglobal/context3d.ts +111 -0
  1175. package/src/playerglobal/flash/accessibility/Accessibility.ts +30 -0
  1176. package/src/playerglobal/flash/crypto/generateRandomBytes.ts +38 -0
  1177. package/src/playerglobal/flash/data/EncryptedLocalStore.ts +75 -0
  1178. package/src/playerglobal/flash/desktop/Clipboard.ts +217 -0
  1179. package/src/playerglobal/flash/desktop/NativeApplication.ts +241 -0
  1180. package/src/playerglobal/flash/display/AVM1Movie.ts +24 -0
  1181. package/src/playerglobal/flash/display/Bitmap.ts +76 -0
  1182. package/src/playerglobal/flash/display/BitmapData.ts +963 -0
  1183. package/src/playerglobal/flash/display/DisplayObject.ts +787 -0
  1184. package/src/playerglobal/flash/display/DisplayObjectContainer.ts +274 -0
  1185. package/src/playerglobal/flash/display/Graphics.ts +489 -0
  1186. package/src/playerglobal/flash/display/InteractiveObject.ts +124 -0
  1187. package/src/playerglobal/flash/display/Loader.ts +126 -0
  1188. package/src/playerglobal/flash/display/LoaderInfo.ts +205 -0
  1189. package/src/playerglobal/flash/display/MovieClip.ts +245 -0
  1190. package/src/playerglobal/flash/display/NativeWindow.ts +313 -0
  1191. package/src/playerglobal/flash/display/Shader.ts +39 -0
  1192. package/src/playerglobal/flash/display/ShaderData.ts +105 -0
  1193. package/src/playerglobal/flash/display/ShaderInput.ts +101 -0
  1194. package/src/playerglobal/flash/display/ShaderJob.ts +234 -0
  1195. package/src/playerglobal/flash/display/ShaderParameter.ts +36 -0
  1196. package/src/playerglobal/flash/display/Shape.ts +19 -0
  1197. package/src/playerglobal/flash/display/SimpleButton.ts +126 -0
  1198. package/src/playerglobal/flash/display/Sprite.ts +115 -0
  1199. package/src/playerglobal/flash/display/Stage.ts +298 -0
  1200. package/src/playerglobal/flash/display/Stage3D.ts +90 -0
  1201. package/src/playerglobal/flash/display/shaders.ts +296 -0
  1202. package/src/playerglobal/flash/events/Event.ts +85 -0
  1203. package/src/playerglobal/flash/events/EventDispatcher.ts +143 -0
  1204. package/src/playerglobal/flash/events/GestureEvent.ts +49 -0
  1205. package/src/playerglobal/flash/events/HTTPStatusEvent.ts +12 -0
  1206. package/src/playerglobal/flash/events/KeyboardEvent.ts +75 -0
  1207. package/src/playerglobal/flash/events/MouseEvent.ts +88 -0
  1208. package/src/playerglobal/flash/events/PressAndTapGestureEvent.ts +48 -0
  1209. package/src/playerglobal/flash/events/TimerEvent.ts +20 -0
  1210. package/src/playerglobal/flash/events/TouchEvent.ts +64 -0
  1211. package/src/playerglobal/flash/external/ExternalInterface.ts +104 -0
  1212. package/src/playerglobal/flash/filesystem/File.ts +450 -0
  1213. package/src/playerglobal/flash/filesystem/FileStream.ts +556 -0
  1214. package/src/playerglobal/flash/filesystem/paths.ts +181 -0
  1215. package/src/playerglobal/flash/filesystem/writes.ts +203 -0
  1216. package/src/playerglobal/flash/filters/BevelFilter.ts +9 -0
  1217. package/src/playerglobal/flash/filters/BitmapFilter.ts +237 -0
  1218. package/src/playerglobal/flash/filters/BlurFilter.ts +8 -0
  1219. package/src/playerglobal/flash/filters/ColorMatrixFilter.ts +15 -0
  1220. package/src/playerglobal/flash/filters/ConvolutionFilter.ts +31 -0
  1221. package/src/playerglobal/flash/filters/DisplacementMapFilter.ts +69 -0
  1222. package/src/playerglobal/flash/filters/DropShadowFilter.ts +9 -0
  1223. package/src/playerglobal/flash/filters/GlowFilter.ts +9 -0
  1224. package/src/playerglobal/flash/filters/GradientBevelFilter.ts +8 -0
  1225. package/src/playerglobal/flash/filters/GradientGlowFilter.ts +8 -0
  1226. package/src/playerglobal/flash/filters/ShaderFilter.ts +75 -0
  1227. package/src/playerglobal/flash/geom/Matrix3D.ts +468 -0
  1228. package/src/playerglobal/flash/geom/PerspectiveProjection.ts +162 -0
  1229. package/src/playerglobal/flash/geom/Transform.ts +335 -0
  1230. package/src/playerglobal/flash/geom/Utils3D.ts +132 -0
  1231. package/src/playerglobal/flash/globalization/Collator.ts +205 -0
  1232. package/src/playerglobal/flash/globalization/CurrencyFormatter.ts +365 -0
  1233. package/src/playerglobal/flash/globalization/CurrencyParseResult.ts +35 -0
  1234. package/src/playerglobal/flash/globalization/DateTimeFormatter.ts +594 -0
  1235. package/src/playerglobal/flash/globalization/LocaleID.ts +202 -0
  1236. package/src/playerglobal/flash/globalization/NumberFormatter.ts +574 -0
  1237. package/src/playerglobal/flash/globalization/NumberParseResult.ts +40 -0
  1238. package/src/playerglobal/flash/globalization/StringTools.ts +78 -0
  1239. package/src/playerglobal/flash/globalization/locale.ts +245 -0
  1240. package/src/playerglobal/flash/media/Camera.ts +122 -0
  1241. package/src/playerglobal/flash/media/Microphone.ts +177 -0
  1242. package/src/playerglobal/flash/media/Sound.ts +714 -0
  1243. package/src/playerglobal/flash/media/SoundMixer.ts +97 -0
  1244. package/src/playerglobal/flash/media/SoundTransform.ts +61 -0
  1245. package/src/playerglobal/flash/media/Video.ts +64 -0
  1246. package/src/playerglobal/flash/net/FileFilter.ts +42 -0
  1247. package/src/playerglobal/flash/net/FileReference.ts +273 -0
  1248. package/src/playerglobal/flash/net/LocalConnection.ts +218 -0
  1249. package/src/playerglobal/flash/net/NetConnection.ts +219 -0
  1250. package/src/playerglobal/flash/net/SharedObject.ts +356 -0
  1251. package/src/playerglobal/flash/net/Socket.ts +360 -0
  1252. package/src/playerglobal/flash/net/URLRequest.ts +140 -0
  1253. package/src/playerglobal/flash/net/URLStream.ts +203 -0
  1254. package/src/playerglobal/flash/net/XMLSocket.ts +18 -0
  1255. package/src/playerglobal/flash/net/local-modern.ts +164 -0
  1256. package/src/playerglobal/flash/net/local-values.ts +245 -0
  1257. package/src/playerglobal/flash/net/navigateToURL.ts +42 -0
  1258. package/src/playerglobal/flash/profiler/Telemetry.ts +35 -0
  1259. package/src/playerglobal/flash/sensors/Accelerometer.ts +15 -0
  1260. package/src/playerglobal/flash/system/ApplicationDomain.ts +94 -0
  1261. package/src/playerglobal/flash/system/Capabilities.ts +203 -0
  1262. package/src/playerglobal/flash/system/FSCommandHost.ts +23 -0
  1263. package/src/playerglobal/flash/system/Security.ts +61 -0
  1264. package/src/playerglobal/flash/system/SecurityDomain.ts +27 -0
  1265. package/src/playerglobal/flash/system/System.ts +96 -0
  1266. package/src/playerglobal/flash/system/Worker.ts +147 -0
  1267. package/src/playerglobal/flash/text/Font.ts +124 -0
  1268. package/src/playerglobal/flash/text/StaticText.ts +21 -0
  1269. package/src/playerglobal/flash/text/StyleSheet.ts +87 -0
  1270. package/src/playerglobal/flash/text/TextField.ts +789 -0
  1271. package/src/playerglobal/flash/text/TextRenderer.ts +104 -0
  1272. package/src/playerglobal/flash/text/engine/FontDescription.ts +198 -0
  1273. package/src/playerglobal/flash/text/engine/TabStop.ts +70 -0
  1274. package/src/playerglobal/flash/trace/Trace.ts +25 -0
  1275. package/src/playerglobal/flash/ui/ContextMenu.ts +26 -0
  1276. package/src/playerglobal/flash/ui/GameInput.ts +27 -0
  1277. package/src/playerglobal/flash/ui/Keyboard.ts +34 -0
  1278. package/src/playerglobal/flash/ui/Mouse.ts +170 -0
  1279. package/src/playerglobal/flash/ui/Multitouch.ts +62 -0
  1280. package/src/playerglobal/flash/utils/ByteArray.ts +184 -0
  1281. package/src/playerglobal/flash/utils/Timer.ts +39 -0
  1282. package/src/playerglobal/flash/xml/XMLDocument.ts +101 -0
  1283. package/src/playerglobal/index.ts +233 -0
  1284. package/src/playerglobal/libraries.ts +12 -0
  1285. package/src/playerglobal/playerglobal-library.ts +28 -0
  1286. package/src/playerglobal/toplevel.ts +158 -0
  1287. package/src/scene/advanced.ts +282 -0
  1288. package/src/scene/context-menu.ts +270 -0
  1289. package/src/scene/fills.ts +90 -0
  1290. package/src/scene/filter-layers.ts +503 -0
  1291. package/src/scene/filters.ts +421 -0
  1292. package/src/scene/hidden.ts +37 -0
  1293. package/src/scene/lines.ts +322 -0
  1294. package/src/scene/masks.ts +195 -0
  1295. package/src/scene/paints.ts +378 -0
  1296. package/src/scene/parts.ts +205 -0
  1297. package/src/scene/pixel-bender-glsl.ts +722 -0
  1298. package/src/scene/planes.ts +260 -0
  1299. package/src/scene/pointer.ts +278 -0
  1300. package/src/scene/shapes.ts +386 -0
  1301. package/src/scene/stale-shapes.ts +56 -0
  1302. package/src/scene/strokes.ts +157 -0
  1303. package/src/scene/text-items.ts +324 -0
  1304. package/src/scene/text.ts +360 -0
  1305. package/src/scene/view.ts +1591 -0
  1306. package/src/scripting/clipboard.ts +169 -0
  1307. package/src/scripting/code.ts +1094 -0
  1308. package/src/scripting/evaluate.ts +178 -0
  1309. package/src/scripting/events.ts +236 -0
  1310. package/src/scripting/handover.ts +253 -0
  1311. package/src/scripting/lazy.ts +67 -0
  1312. package/src/scripting/lifecycle.ts +307 -0
  1313. package/src/scripting/loads.ts +1112 -0
  1314. package/src/scripting/sha256.ts +107 -0
  1315. package/src/scripting/symbols.ts +454 -0
  1316. package/src/scripting/timers.ts +504 -0
  1317. package/src/scripting/workers.ts +1144 -0
  1318. package/src/scripting.ts +1300 -0
  1319. package/src/stage.ts +7 -0
  1320. package/src/text/csm.ts +173 -0
  1321. package/src/text/css.ts +198 -0
  1322. package/src/text/fonts.ts +129 -0
  1323. package/src/text/layout.ts +525 -0
  1324. package/src/text/saffron.ts +539 -0
  1325. package/src/text/static.ts +147 -0
  1326. package/src/text/text.ts +538 -0
  1327. package/src/workers/protocol.ts +124 -0
  1328. package/src/workers/thread.ts +188 -0
  1329. package/src/workers/wire.ts +263 -0
@@ -0,0 +1,1608 @@
1
+ // The pixel operations of BitmapData that read and write its store alone
2
+ // (bitmap.ts): each on unmultiplied ARGB as Flash's results show it works,
3
+ // the store premultiplying again as it writes. The rules are the ones
4
+ // Flash traces under adl and records in Ruffle's corpus.
5
+ import {
6
+ type CopyOp,
7
+ DRAW_OPAQUE,
8
+ DRAW_SKIP_ZERO_ALPHA,
9
+ DRAW_SMOOTH,
10
+ DRAW_TRANSFORM,
11
+ DrawKernel,
12
+ } from "@swf2es/native/render";
13
+ import { BitmapStore, over, type PixelRect, premultiply, unmultiply } from "./bitmap.js";
14
+ import { bitmapKernel, drawKernel } from "./kernel.js";
15
+ import { perlinSetup } from "./turbulence.js";
16
+
17
+ const M = 2147483647;
18
+
19
+ /**
20
+ * Flash's noise generator's first state: Park-Miller's minimal standard,
21
+ * x * 16807 mod 2^31 - 1, a seed of 0 taken as 1 and one under 0 as
22
+ * -seed + 1 (all 25 pixels Ruffle's bitmapdata_getvector records of
23
+ * noise(0) match). The render module draws from it (pixels.zig).
24
+ */
25
+ function noiseState(seed: number): number {
26
+ let s = seed | 0;
27
+ if (s <= 0) {
28
+ s = -s + 1;
29
+ }
30
+
31
+ return s % M || 1;
32
+ }
33
+
34
+ /**
35
+ * noise: each pixel's channels drawn in R, G, B order, then alpha, which
36
+ * only a transparent bitmap draws; a grayscale draw is one for all three
37
+ * colours, then alpha. A value is low + r % (high - low + 1), high capped
38
+ * at 255 and a range upside down giving low. A colour left out is 0, an
39
+ * alpha left out 255.
40
+ */
41
+ export function noise(
42
+ store: BitmapStore,
43
+ seed: number,
44
+ low: number,
45
+ high: number,
46
+ channels: number,
47
+ gray: boolean,
48
+ ): void {
49
+ const lo = Math.max(0, Math.min(255, low));
50
+ const hi = Math.max(0, Math.min(255, high));
51
+ bitmapKernel()?.noise(
52
+ store.pixels,
53
+ noiseState(seed),
54
+ lo,
55
+ hi - lo + 1,
56
+ channels & 15,
57
+ gray,
58
+ store.transparent,
59
+ );
60
+ store.changed();
61
+ }
62
+
63
+ /** The channel's shift in ARGB: 1 red, 2 green, 4 blue, 8 alpha; -1 for another value. */
64
+ function shiftOf(channel: number): number {
65
+ switch (channel) {
66
+ case 1:
67
+ return 16;
68
+ case 2:
69
+ return 8;
70
+ case 4:
71
+ return 0;
72
+ case 8:
73
+ return 24;
74
+ default:
75
+ return -1;
76
+ }
77
+ }
78
+
79
+ /** Each destination pixel's channel set from the source pixel's channel, both unmultiplied. */
80
+ export function copyChannel(
81
+ store: BitmapStore,
82
+ source: BitmapStore,
83
+ rect: PixelRect,
84
+ dx: number,
85
+ dy: number,
86
+ from: number,
87
+ to: number,
88
+ ): void {
89
+ const fromShift = shiftOf(from);
90
+ const toShift = shiftOf(to);
91
+ if (toShift < 0 || (toShift === 24 && !store.transparent)) {
92
+ return;
93
+ }
94
+
95
+ // A source of more than one channel, or none, copies 0, as Flash does.
96
+ copied(store, source, rect, dx, dy, { op: "channel", from: fromShift, to: toShift });
97
+ }
98
+
99
+ /**
100
+ * colorTransform as Flash computes it, fitted under adl: each channel read
101
+ * back as p * 255 / a, floored; then (c * floor(mul * 256) >> 8) +
102
+ * trunc(offset), clamped to 0..255, the alpha alike; and written
103
+ * premultiplied as c * (a + 1) >> 8, not as setPixel32 rounds. A pixel
104
+ * of alpha 0 is left as it is; an opaque bitmap's alpha is transformed
105
+ * like a transparent one's.
106
+ */
107
+ export function colorTransform(
108
+ store: BitmapStore,
109
+ rect: PixelRect,
110
+ ct: {
111
+ rMul: number;
112
+ gMul: number;
113
+ bMul: number;
114
+ aMul: number;
115
+ rAdd: number;
116
+ gAdd: number;
117
+ bAdd: number;
118
+ aAdd: number;
119
+ },
120
+ ): void {
121
+ const c = store.clip(rect);
122
+ if (!c) {
123
+ return;
124
+ }
125
+
126
+ const fixed = (m: number) => Math.trunc(m * 256);
127
+ const muls = [ct.rMul, ct.gMul, ct.bMul, ct.aMul].map(fixed);
128
+ const adds = [ct.rAdd, ct.gAdd, ct.bAdd, ct.aAdd].map(Math.trunc);
129
+ bitmapKernel()?.transform(store.pixels, store.width, c, muls, adds);
130
+ store.changed();
131
+ }
132
+
133
+ /**
134
+ * merge: each channel ((s * m + d * (256 - m)) >> 8) & 0xFF, unmultiplied,
135
+ * the multiplier a uint and nothing clamped, as 18 multipliers from -257
136
+ * to 2^32 - 1 show Flash computing it under adl; a double holds the
137
+ * product, so the shift is a division.
138
+ */
139
+ export function merge(
140
+ store: BitmapStore,
141
+ source: BitmapStore,
142
+ rect: PixelRect,
143
+ dx: number,
144
+ dy: number,
145
+ muls: [number, number, number, number],
146
+ ): void {
147
+ copied(store, source, rect, dx, dy, { op: "merge", muls });
148
+ }
149
+
150
+ /**
151
+ * The source rect's pixels against the destination's at the point, both
152
+ * clipped and unmultiplied, each destination pixel made by `op` of the
153
+ * pair (pixel-ops.ts). In place, rows down and pixels along, each read as
154
+ * the ones before it left it, as Flash does: a move down or right repeats
155
+ * what it wrote.
156
+ */
157
+ function copied(
158
+ store: BitmapStore,
159
+ source: BitmapStore,
160
+ rect: PixelRect,
161
+ dx: number,
162
+ dy: number,
163
+ op: CopyOp,
164
+ ): void {
165
+ const s = source.clip(rect);
166
+ if (!s) {
167
+ return;
168
+ }
169
+
170
+ dx += s.x - rect.x;
171
+ dy += s.y - rect.y;
172
+ const d = store.clip({ x: dx, y: dy, width: s.width, height: s.height });
173
+ if (!d) {
174
+ return;
175
+ }
176
+
177
+ // The store written first: if it is the source, both are then its own array.
178
+ const into = store.pixels;
179
+ const from = source.readable;
180
+ const sx = s.x + (d.x - dx);
181
+ const sy = s.y + (d.y - dy);
182
+ bitmapKernel()?.copy(into, store.width, from, source.width, d, sx, sy, store.transparent, op);
183
+ store.changed();
184
+ }
185
+
186
+ /**
187
+ * paletteMap: each copied pixel the sum of its channels' entries in the
188
+ * four tables, red, green, blue and alpha, wrapping at 32 bits, as Flash
189
+ * makes it (Ruffle's operations.rs); a table not given maps its channel
190
+ * to itself.
191
+ */
192
+ export function paletteMap(
193
+ store: BitmapStore,
194
+ source: BitmapStore,
195
+ rect: PixelRect,
196
+ dx: number,
197
+ dy: number,
198
+ tables: readonly [Uint32Array, Uint32Array, Uint32Array, Uint32Array],
199
+ ): void {
200
+ copied(store, source, rect, dx, dy, { op: "palette", tables });
201
+ }
202
+
203
+ /**
204
+ * compare's differing pixels, null where none differ: 0 for a pixel the
205
+ * same in both, the colours' differences, opaque, where they differ, else
206
+ * the alphas' difference in every channel (Ruffle's operations.rs).
207
+ */
208
+ export function comparePixels(left: BitmapStore, right: BitmapStore): Uint32Array | null {
209
+ const out = new Uint32Array(left.width * left.height);
210
+ let different = false;
211
+ for (let i = 0; i < out.length; i++) {
212
+ const p = left.unmultiplied(left.readable[i]);
213
+ const q = right.unmultiplied(right.readable[i]);
214
+ if (p === q) {
215
+ continue;
216
+ }
217
+
218
+ different = true;
219
+ if ((p & 0xffffff) !== (q & 0xffffff)) {
220
+ out[i] =
221
+ (0xff000000 |
222
+ ((((p >>> 16) - (q >>> 16)) & 0xff) << 16) |
223
+ ((((p >>> 8) - (q >>> 8)) & 0xff) << 8) |
224
+ ((p - q) & 0xff)) >>>
225
+ 0;
226
+ } else {
227
+ const alpha = ((p >>> 24) - (q >>> 24)) & 0xff;
228
+ out[i] = ((alpha << 24) | (alpha << 16) | (alpha << 8) | alpha) >>> 0;
229
+ }
230
+ }
231
+
232
+ return different ? out : null;
233
+ }
234
+
235
+ /**
236
+ * perlinNoise: each pixel's channels from turbulence.ts, a channel left
237
+ * out its least, alpha left out opaque, written as they come, not
238
+ * premultiplied, as Flash writes them (Ruffle's operations.rs, whose
239
+ * conversion to a byte is Flash's). A channel's noise is drawn from the
240
+ * next of the generator's four only for the channels asked for.
241
+ */
242
+ export function perlinNoise(
243
+ store: BitmapStore,
244
+ base: [number, number],
245
+ offsets: readonly [number, number][],
246
+ seed: number,
247
+ stitch: boolean,
248
+ fractal: boolean,
249
+ channels: number,
250
+ gray: boolean,
251
+ ): void {
252
+ const { width, height } = store;
253
+ // A base's sign is dropped (adl).
254
+ const frequency: [number, number] = [
255
+ base[0] === 0 ? 0 : 1 / Math.abs(base[0]),
256
+ base[1] === 0 ? 0 : 1 / Math.abs(base[1]),
257
+ ];
258
+ bitmapKernel()?.perlin(store.pixels, width, {
259
+ ...perlinSetup(seed, frequency, stitch, width, height),
260
+ offsets,
261
+ fractal,
262
+ channels: channels & 15,
263
+ gray,
264
+ transparent: store.transparent,
265
+ });
266
+ store.changed();
267
+ }
268
+
269
+ /** scroll: the pixels moved by (x, y); what nothing moved onto keeps its old pixels. */
270
+ export function scroll(store: BitmapStore, x: number, y: number): void {
271
+ const { width, height } = store;
272
+ // Nothing moves: the pixels are left where they are, on the GPU or not, and
273
+ // a GPU copy that holds the newest stays current, or the next move on it
274
+ // would bring the store back and leave the CPU's copy behind.
275
+ if (x === 0 && y === 0) {
276
+ if (!store.onGpu(() => true)) {
277
+ store.changed();
278
+ }
279
+
280
+ return;
281
+ }
282
+
283
+ // The pixels that stay within the store, moved on the GPU where it holds the newest.
284
+ const moved = store.clip({ x: -x, y: -y, width, height });
285
+ if (store.onGpu((copy) => !moved || copy.copy(store, moved, moved.x + x, moved.y + y))) {
286
+ return;
287
+ }
288
+
289
+ const old = store.pixels.slice();
290
+ for (let row = 0; row < height; row++) {
291
+ const sy = row - y;
292
+ if (sy < 0 || sy >= height) {
293
+ continue;
294
+ }
295
+
296
+ for (let col = 0; col < width; col++) {
297
+ const sx = col - x;
298
+ if (sx >= 0 && sx < width) {
299
+ store.pixels[row * width + col] = old[sy * width + sx];
300
+ }
301
+ }
302
+ }
303
+
304
+ store.changed();
305
+ }
306
+
307
+ const OPERATIONS: Record<string, (a: number, b: number) => boolean> = {
308
+ "<": (a, b) => a < b,
309
+ "<=": (a, b) => a <= b,
310
+ ">": (a, b) => a > b,
311
+ ">=": (a, b) => a >= b,
312
+ "==": (a, b) => a === b,
313
+ "!=": (a, b) => a !== b,
314
+ };
315
+
316
+ /** Whether `op` is one threshold takes. */
317
+ export function isThresholdOperation(op: string): boolean {
318
+ // Its own keys only: "constructor" and the rest of Object's are not operations.
319
+ return Object.hasOwn(OPERATIONS, op);
320
+ }
321
+
322
+ /**
323
+ * threshold: each source pixel, unmultiplied and masked, compared with the
324
+ * masked threshold as unsigned numbers; where the test holds the
325
+ * destination pixel becomes `color`, elsewhere the source pixel if
326
+ * `copySource`; how many held. With `premultiplied`, as AVM1's
327
+ * BitmapData has it (Ruffle's operations.rs), the pixel is compared as it
328
+ * is kept, premultiplied, and `color` and the source pixel are written as
329
+ * a transparent bitmap keeps them, the colour's channels premultiplied by
330
+ * its alpha. Flash leaves an opaque bitmap's alpha as written there too,
331
+ * which its getPixel32 then reads; here an opaque store keeps every alpha
332
+ * at 255, which its drawing, copies and filters take it to have, so its
333
+ * getPixel32 alone differs from Flash's (its getPixel does not).
334
+ */
335
+ export function threshold(
336
+ store: BitmapStore,
337
+ source: BitmapStore,
338
+ rect: PixelRect,
339
+ dx: number,
340
+ dy: number,
341
+ op: string,
342
+ value: number,
343
+ color: number,
344
+ mask: number,
345
+ copySource: boolean,
346
+ premultiplied = false,
347
+ ): number {
348
+ const test = OPERATIONS[op];
349
+ const target = (value & mask) >>> 0;
350
+ let count = 0;
351
+ const s = source.clip(rect);
352
+ if (!s) {
353
+ return 0;
354
+ }
355
+
356
+ dx += s.x - rect.x;
357
+ dy += s.y - rect.y;
358
+ const d = store.clip({ x: dx, y: dy, width: s.width, height: s.height });
359
+ if (!d) {
360
+ return 0;
361
+ }
362
+
363
+ const sx = s.x + (d.x - dx);
364
+ const sy = s.y + (d.y - dy);
365
+ // In place, each pixel read as the ones before it left it (copied).
366
+ const into = store.pixels;
367
+ const pixels = source.readable;
368
+ const opaque = store.transparent ? 0 : 0xff000000;
369
+ const fill = premultiplied
370
+ ? (premultiply(color >>> 0) | opaque) >>> 0
371
+ : store.premultiplied(color >>> 0);
372
+ for (let row = 0; row < d.height; row++) {
373
+ for (let i = 0; i < d.width; i++) {
374
+ const to = (d.y + row) * store.width + d.x + i;
375
+ const raw = pixels[(sy + row) * source.width + sx + i];
376
+ if (test(((premultiplied ? raw : unmultiply(raw)) & mask) >>> 0, target)) {
377
+ into[to] = fill;
378
+ count++;
379
+ } else if (copySource) {
380
+ into[to] = (raw | opaque) >>> 0;
381
+ }
382
+ }
383
+ }
384
+
385
+ store.changed();
386
+ return count;
387
+ }
388
+
389
+ /**
390
+ * getColorBoundsRect: the smallest rect holding every pixel whose
391
+ * unmultiplied value, masked, is `color` (or is not, without findColor);
392
+ * empty where none is, and where the one found is the pixel at the
393
+ * origin alone, as Flash has it (Ruffle's bitmap_data). With
394
+ * `premultiplied`, as AVM1's BitmapData has it (Ruffle's operations.rs),
395
+ * the pixel is compared as it is kept, premultiplied, masked, with the
396
+ * colour premultiplied and not masked, and an opaque bitmap's alpha is
397
+ * in the mask.
398
+ */
399
+ export function colorBounds(
400
+ store: BitmapStore,
401
+ mask: number,
402
+ color: number,
403
+ find: boolean,
404
+ premultiplied = false,
405
+ ): PixelRect {
406
+ let x0 = store.width;
407
+ let y0 = store.height;
408
+ let x1 = -1;
409
+ let y1 = -1;
410
+ if (premultiplied && !store.transparent) {
411
+ mask = (mask | 0xff000000) >>> 0;
412
+ }
413
+
414
+ const target = premultiplied ? store.premultiplied(color >>> 0) : (color & mask) >>> 0;
415
+ for (let y = 0; y < store.height; y++) {
416
+ for (let x = 0; x < store.width; x++) {
417
+ const pixel = store.pixels[y * store.width + x];
418
+ const hit = ((premultiplied ? pixel : unmultiply(pixel)) & mask) >>> 0 === target;
419
+ if (hit === find) {
420
+ x0 = Math.min(x0, x);
421
+ y0 = Math.min(y0, y);
422
+ x1 = Math.max(x1, x);
423
+ y1 = Math.max(y1, y);
424
+ }
425
+ }
426
+ }
427
+
428
+ // Flash takes extents that end at the origin for none found: a lone hit at (0, 0) gives an empty rect.
429
+ return x1 <= 0 && y1 <= 0
430
+ ? { x: 0, y: 0, width: 0, height: 0 }
431
+ : { x: x0, y: y0, width: x1 - x0 + 1, height: y1 - y0 + 1 };
432
+ }
433
+
434
+ /** floodFill: the 4-connected region of the start pixel's exact value set to `color`. */
435
+ export function floodFill(store: BitmapStore, x: number, y: number, color: number): void {
436
+ const { width, height } = store;
437
+ if (x < 0 || y < 0 || x >= width || y >= height) {
438
+ return;
439
+ }
440
+
441
+ const from = store.pixels[y * width + x];
442
+ const to = store.premultiplied(color >>> 0);
443
+ if (from === to) {
444
+ return;
445
+ }
446
+
447
+ const stack = [y * width + x];
448
+ while (stack.length) {
449
+ const i = stack.pop() as number;
450
+ if (store.pixels[i] !== from) {
451
+ continue;
452
+ }
453
+
454
+ store.pixels[i] = to;
455
+ const px = i % width;
456
+ if (px > 0) {
457
+ stack.push(i - 1);
458
+ }
459
+
460
+ if (px < width - 1) {
461
+ stack.push(i + 1);
462
+ }
463
+
464
+ if (i >= width) {
465
+ stack.push(i - width);
466
+ }
467
+
468
+ if (i + width < width * height) {
469
+ stack.push(i + width);
470
+ }
471
+ }
472
+
473
+ store.changed();
474
+ }
475
+
476
+ /** histogram: four arrays of 256 counts, red, green, blue and alpha, of the rect's unmultiplied pixels. */
477
+ export function histogram(store: BitmapStore, rect: PixelRect): number[][] {
478
+ const counts = [0, 1, 2, 3].map(() => new Array<number>(256).fill(0));
479
+ const c = store.clip(rect);
480
+ if (!c) {
481
+ return counts;
482
+ }
483
+
484
+ for (let y = c.y; y < c.y + c.height; y++) {
485
+ for (let x = c.x; x < c.x + c.width; x++) {
486
+ const p = unmultiply(store.pixels[y * store.width + x]);
487
+ counts[0][(p >>> 16) & 0xff]++;
488
+ counts[1][(p >>> 8) & 0xff]++;
489
+ counts[2][p & 0xff]++;
490
+ counts[3][p >>> 24]++;
491
+ }
492
+ }
493
+
494
+ return counts;
495
+ }
496
+
497
+ /** The unmultiplied alpha at (x, y), as a hit test reads it: an opaque bitmap's 255; -1 outside. */
498
+ export function alphaAt(store: BitmapStore, x: number, y: number): number {
499
+ if (x < 0 || y < 0 || x >= store.width || y >= store.height) {
500
+ return -1;
501
+ }
502
+
503
+ return store.transparent ? store.readable[y * store.width + x] >>> 24 : 255;
504
+ }
505
+
506
+ /**
507
+ * Flash's pixelDissolve taps, by the state's width in bits: a Galois LFSR,
508
+ * s >> 1, xor the tap where s was odd, read off adl for every width a
509
+ * BitmapData can have (2 to 26 bits).
510
+ */
511
+ const DISSOLVE_TAPS = [
512
+ 0, 0, 3, 6, 12, 20, 48, 96, 184, 272, 576, 1280, 3232, 6912, 13568, 24576, 46080, 73728, 132096,
513
+ 466944, 589824, 1310720, 3145728, 4325376, 14155776, 18874368, 59244544,
514
+ ];
515
+
516
+ /** Bits to number 0..n - 1: ceil(log2(n)). */
517
+ function bitsFor(n: number): number {
518
+ return n <= 1 ? 0 : 32 - Math.clz32(n - 1);
519
+ }
520
+
521
+ /**
522
+ * pixelDissolve as Flash does it, fitted under adl: a state of
523
+ * ceil(log2 w) + ceil(log2 h) bits stands for the pixel (s & (2^bw - 1),
524
+ * s >> bw) of the rect, a state outside it skipped; each call writes
525
+ * numPixels pixels, from the seed on, and returns the state after the
526
+ * last, raw, so the next call goes on from there. Every call writes the
527
+ * pixel at the origin too, which no state stands for, and so n calls of
528
+ * 1 write n + 1 (Ruffle's bitmapdata_pixeldissolve); 0 starts at the tap,
529
+ * and a seed past the generator's states steps down to them as any state
530
+ * does, its bits shifted out, or to 0, which writes the origin for good. A
531
+ * pixel takes the fill colour where the source is the destination, and
532
+ * there it is the source rect that dissolves, the point aside, though
533
+ * clipped as a copy's; else the source's pixel. A rect a pixel high or
534
+ * wide dissolves nothing and gives the seed back as it came; a count of 0
535
+ * writes the origin alone and gives the seed back, the tap for 0. AS3's
536
+ * answers are AVM1's (the dissolve-noise case).
537
+ */
538
+ export function pixelDissolve(
539
+ store: BitmapStore,
540
+ source: BitmapStore,
541
+ rect: PixelRect,
542
+ dx: number,
543
+ dy: number,
544
+ seed: number,
545
+ count: number,
546
+ fill: number,
547
+ ): number {
548
+ // Over the rect clipped to the source and then to the destination, as the copies are.
549
+ const sc = source.clip(rect);
550
+ if (!sc) {
551
+ return seed;
552
+ }
553
+
554
+ const ox = dx + (sc.x - rect.x);
555
+ const oy = dy + (sc.y - rect.y);
556
+ const dc = store.clip({ x: ox, y: oy, width: sc.width, height: sc.height });
557
+ if (!dc) {
558
+ return seed;
559
+ }
560
+
561
+ const rx = sc.x + (dc.x - ox);
562
+ const ry = sc.y + (dc.y - oy);
563
+ dx = dc.x;
564
+ dy = dc.y;
565
+ const { width: w, height: h } = dc;
566
+ if (w <= 1 || h <= 1) {
567
+ return seed;
568
+ }
569
+
570
+ const bw = bitsFor(w);
571
+ const bits = bw + bitsFor(h);
572
+ const tap = DISSOLVE_TAPS[bits] ?? 0;
573
+ const xMask = (1 << bw) - 1;
574
+ const color = store.premultiplied(fill >>> 0);
575
+ // An opaque store keeps every alpha at 255, as threshold's copies have it.
576
+ const opaque = store.transparent ? 0 : 0xff000000;
577
+ const next = (s: number) => (s & 1 ? (s >>> 1) ^ tap : s >>> 1);
578
+
579
+ // A position of the rect, written where it lies in both bitmaps.
580
+ const write = (state: number) => {
581
+ const px = state & xMask;
582
+ const py = Math.floor(state / 2 ** bw);
583
+ const sx = rx + px;
584
+ const sy = ry + py;
585
+ // In place, Flash fills the source rect's pixels, wherever the point is.
586
+ const tx = source === store ? sx : dx + px;
587
+ const ty = source === store ? sy : dy + py;
588
+ if (
589
+ sx < 0 ||
590
+ sy < 0 ||
591
+ sx >= source.width ||
592
+ sy >= source.height ||
593
+ tx < 0 ||
594
+ ty < 0 ||
595
+ tx >= store.width ||
596
+ ty >= store.height
597
+ ) {
598
+ return;
599
+ }
600
+
601
+ store.pixels[ty * store.width + tx] =
602
+ source === store ? color : (source.pixels[sy * source.width + sx] | opaque) >>> 0;
603
+ };
604
+ const inside = (state: number) => (state & xMask) < w && Math.floor(state / 2 ** bw) < h;
605
+
606
+ // The origin is written on every call; 0, which no state within the
607
+ // generator's steps to (a seed past them may), starts at the tap.
608
+ write(0);
609
+ if (seed === 0) {
610
+ seed = tap;
611
+ }
612
+
613
+ if (count === 0) {
614
+ store.changed();
615
+ return seed;
616
+ }
617
+
618
+ let s = seed >>> 0;
619
+
620
+ // The states inside the rect come round every w * h - 1 writes (state 0
621
+ // is the origin's, which only a seed past the states steps down to, and
622
+ // stays at), so a count past that is one full round, which writes every
623
+ // pixel, and the remainder: the same pixels and the seed Flash returns,
624
+ // without its seconds-long loop.
625
+ const round = w * h - 1;
626
+ const steps = count > round ? round + (count % round) : count;
627
+ for (let k = 0; k < steps; k++) {
628
+ // A seed's bits past the states shift out, and every state then comes
629
+ // round within 2^bits steps, so this ends.
630
+ while (!inside(s)) {
631
+ s = next(s);
632
+ }
633
+
634
+ write(s);
635
+ s = next(s);
636
+ }
637
+
638
+ store.changed();
639
+ return s;
640
+ }
641
+
642
+ /** An affine matrix as Flash's flash.geom.Matrix has it: x' = a x + c y + tx, y' = b x + d y + ty. */
643
+ export interface Affine {
644
+ a: number;
645
+ b: number;
646
+ c: number;
647
+ d: number;
648
+ tx: number;
649
+ ty: number;
650
+ }
651
+
652
+ export interface ColorTransformValues {
653
+ rMul: number;
654
+ gMul: number;
655
+ bMul: number;
656
+ aMul: number;
657
+ rAdd: number;
658
+ gAdd: number;
659
+ bAdd: number;
660
+ aAdd: number;
661
+ }
662
+
663
+ interface PreparedColorTransform extends ColorTransformValues {
664
+ skipZeroAlpha: boolean;
665
+ }
666
+
667
+ /** A display object's layer drawn (drawBitmap): a Bitmap's, a drawing's snapshot, or none. */
668
+ export type Layer = "bitmap" | "drawing" | null;
669
+
670
+ // The blend modes draw composites with, as the numbers the pixel loops take,
671
+ // worked out once a draw.
672
+ const NORMAL = 0;
673
+ const MULTIPLY = 1;
674
+ const SCREEN = 2;
675
+ const LIGHTEN = 3;
676
+ const DARKEN = 4;
677
+ const DIFFERENCE = 5;
678
+ const ADD = 6;
679
+ const SUBTRACT = 7;
680
+ const INVERT = 8;
681
+ const OVERLAY = 9;
682
+ const HARDLIGHT = 10;
683
+ const ERASE = 11;
684
+ const ALPHA = 12;
685
+
686
+ /**
687
+ * Each blend mode draw takes, by its name; any other draws nothing. Alpha
688
+ * and erase need a layer: a display object drawn has one, and they then
689
+ * scale the destination's alpha where it covers; a BitmapData drawn has
690
+ * not, and they do nothing.
691
+ */
692
+ const MODES = new Map([
693
+ ["normal", NORMAL],
694
+ ["layer", NORMAL],
695
+ ["multiply", MULTIPLY],
696
+ ["screen", SCREEN],
697
+ ["lighten", LIGHTEN],
698
+ ["darken", DARKEN],
699
+ ["difference", DIFFERENCE],
700
+ ["add", ADD],
701
+ ["subtract", SUBTRACT],
702
+ ["invert", INVERT],
703
+ ["overlay", OVERLAY],
704
+ ["hardlight", HARDLIGHT],
705
+ ["erase", ERASE],
706
+ ["alpha", ALPHA],
707
+ ]);
708
+
709
+ /**
710
+ * draw of a bitmap source: each destination pixel in the clip takes the
711
+ * source pixel under its centre, through the matrix's inverse, clamped to
712
+ * the source's edges (bilinear when smoothing), scaled by how much of the
713
+ * pixel the transformed source covers (a 4 x 4 sample grid), passed
714
+ * through the colour transform as colorTransform does, and composited by
715
+ * the blend mode. Flash's own pixels, under adl: nearest at the centre,
716
+ * normal as the store's source-over, alpha and erase as nothing unless the
717
+ * source is a display object's `layer`: a Bitmap's, every pixel of which it
718
+ * covers, or a drawing's snapshot, which covers only where it drew.
719
+ */
720
+ export function drawBitmap(
721
+ store: BitmapStore,
722
+ source: BitmapStore,
723
+ m: Affine,
724
+ ct: ColorTransformValues | null,
725
+ mode: string,
726
+ clip: PixelRect | null,
727
+ smooth: boolean,
728
+ rows = false,
729
+ layer: Layer = null,
730
+ ): void {
731
+ const code = MODES.get(mode);
732
+ const whole = code === ERASE || code === ALPHA;
733
+ if (code === undefined || (whole && layer === null)) {
734
+ return;
735
+ }
736
+
737
+ // A drawing's alpha blend leaves the destination where it drew nothing, or drew clear (adl).
738
+ const keepClear = code === ALPHA && layer === "drawing";
739
+
740
+ // Flash rasterises the translation snapped down to quarter pixels, which
741
+ // its 4 x 4 coverage then reads exactly (a move of 0.49 covers 3/4 and
742
+ // 1/4 of the edge pixels under adl).
743
+ m = { ...m, tx: Math.floor(m.tx * 4) / 4, ty: Math.floor(m.ty * 4) / 4 };
744
+ const det = m.a * m.d - m.b * m.c;
745
+ if (det === 0) {
746
+ return;
747
+ }
748
+
749
+ // The destination pixels the source can reach: its corners through the matrix.
750
+ const corners = [
751
+ [0, 0],
752
+ [source.width, 0],
753
+ [0, source.height],
754
+ [source.width, source.height],
755
+ ].map(([x, y]) => [m.a * x + m.c * y + m.tx, m.b * x + m.d * y + m.ty]);
756
+ const xs = corners.map((p) => p[0]);
757
+ const ys = corners.map((p) => p[1]);
758
+ let area: PixelRect | null = store.clip({
759
+ x: Math.floor(Math.min(...xs)),
760
+ y: Math.floor(Math.min(...ys)),
761
+ width: Math.ceil(Math.max(...xs)) - Math.floor(Math.min(...xs)),
762
+ height: Math.ceil(Math.max(...ys)) - Math.floor(Math.min(...ys)),
763
+ });
764
+ if (area && clip) {
765
+ area = store.clip({
766
+ x: Math.max(area.x, clip.x),
767
+ y: Math.max(area.y, clip.y),
768
+ width: Math.min(area.x + area.width, clip.x + clip.width) - Math.max(area.x, clip.x),
769
+ height: Math.min(area.y + area.height, clip.y + clip.height) - Math.max(area.y, clip.y),
770
+ });
771
+ }
772
+
773
+ if (!area) {
774
+ return;
775
+ }
776
+
777
+ // A layer's blend reads the source as it was: of a Bitmap of the bitmap itself, the part
778
+ // that can reach the area is copied first.
779
+ if (whole && source === store) {
780
+ [source, m] = reachable(store, m, area);
781
+ }
782
+
783
+ const transform = ct ? prepareColorTransform(ct) : null;
784
+ // Unscaled at a whole pixel, as every snapshot of a display object is
785
+ // composited: each covered pixel is covered whole and is the source's
786
+ // own, so it is copied straight, as the general path below would.
787
+ const moved =
788
+ m.a === 1 &&
789
+ m.b === 0 &&
790
+ m.c === 0 &&
791
+ m.d === 1 &&
792
+ Number.isInteger(m.tx) &&
793
+ Number.isInteger(m.ty) &&
794
+ source !== store;
795
+ // The inverse: from a destination point to the source's.
796
+ const ia = m.d / det;
797
+ const ib = -m.b / det;
798
+ const ic = -m.c / det;
799
+ const id = m.a / det;
800
+ const itx = -(ia * m.tx + ic * m.ty);
801
+ const ity = -(ib * m.tx + id * m.ty);
802
+ if (code === NORMAL && source !== store) {
803
+ const inverse = job.inverse;
804
+ inverse[0] = ia;
805
+ inverse[1] = ib;
806
+ inverse[2] = ic;
807
+ inverse[3] = id;
808
+ inverse[4] = itx;
809
+ inverse[5] = ity;
810
+ if (drawnNatively(store, source, m, moved, area, transform, smooth)) {
811
+ return;
812
+ }
813
+ }
814
+
815
+ if (moved) {
816
+ if (composite(store, source, area, m.tx, m.ty, transform, code, keepClear)) {
817
+ store.changed();
818
+ }
819
+
820
+ return;
821
+ }
822
+
823
+ // How many of the pixel's 4 x 4 samples fall inside the source.
824
+ const coverage = (x: number, y: number) => {
825
+ let hits = 0;
826
+ for (let k = 0; k < 16; k++) {
827
+ const px = x + ((k & 3) + 0.5) / 4;
828
+ const py = y + ((k >> 2) + 0.5) / 4;
829
+ const sx = ia * px + ic * py + itx;
830
+ const sy = ib * px + id * py + ity;
831
+ if (sx >= 0 && sy >= 0 && sx < source.width && sy < source.height) {
832
+ hits++;
833
+ }
834
+ }
835
+
836
+ return hits;
837
+ };
838
+
839
+ // The arrays taken once. What the source reads as: its own pixels drawn into itself, else as
840
+ // a draw reads them. The store's, which bring back what the GPU drew last or copy a library
841
+ // bitmap's, are taken at the first pixel put, but first when the source is the store, which
842
+ // reads them as written.
843
+ let into = source === store ? store.pixels : null;
844
+ const pixels = source === store ? source.readable : source.drawable;
845
+ // Whether a pixel was put, for the store to count a change: a draw that puts none is none.
846
+ let wrote = false;
847
+
848
+ // Through a Bitmap of itself, a BitmapData is drawn in plain scan order,
849
+ // each pixel reading what the ones before it wrote, which smears both
850
+ // ways (adl): pixel by pixel. A layer's blend has a copy of it by now.
851
+ if (source === store && !rows) {
852
+ for (let y = area.y; y < area.y + area.height; y++) {
853
+ for (let x = area.x; x < area.x + area.width; x++) {
854
+ const hits = coverage(x, y);
855
+ if (hits === 0) {
856
+ continue;
857
+ }
858
+
859
+ const cx = x + 0.5;
860
+ const cy = y + 0.5;
861
+ const sx = ia * cx + ic * cy + itx;
862
+ const sy = ib * cx + id * cy + ity;
863
+ let p = smooth
864
+ ? bilinear(pixels, source.width, source.height, sx - 0.5, sy - 0.5)
865
+ : nearest(pixels, source.width, source.height, sx, sy);
866
+ if (transform) {
867
+ p = transformed(p, transform);
868
+ }
869
+
870
+ if (hits < 16) {
871
+ p = scaleBy(p, hits / 16);
872
+ }
873
+
874
+ into ??= store.pixels;
875
+ put(store, into, y * store.width + x, code, p);
876
+ wrote = true;
877
+ }
878
+ }
879
+
880
+ if (wrote) {
881
+ store.changed();
882
+ }
883
+
884
+ return;
885
+ }
886
+
887
+ // Otherwise a row at a time, each pass over it in a loop of its own, so
888
+ // that no pixel crosses a call: a pixel past 2^30 a call returns is a
889
+ // number V8 allocates. Every pixel of a row is read before one is
890
+ // written, which is how Flash draws a BitmapData into itself: a move
891
+ // right keeps the pixels, a move down smears rows.
892
+ const n = area.width;
893
+ const buffers = takeRows(n);
894
+ try {
895
+ const { pixels: row, hits, us, vs } = buffers;
896
+ const w = source.width;
897
+ const h = source.height;
898
+
899
+ for (let y = area.y; y < area.y + area.height; y++) {
900
+ // Where all 16 samples of a pixel surely fall inside the source, and
901
+ // where none can: only the pixels between are tested sample by sample.
902
+ spanFrom = Number.NEGATIVE_INFINITY;
903
+ spanTo = Number.POSITIVE_INFINITY;
904
+ const spans = !whole && coveredSpan(ia, ic, itx, w, y) && coveredSpan(ib, id, ity, h, y);
905
+ const fullFrom = spans ? Math.max(area.x, spanFrom) : 0;
906
+ const fullTo = spans ? Math.min(area.x + n, spanTo) : 0;
907
+ let any = 0;
908
+
909
+ for (let x = area.x, k = 0; k < n; x++, k++) {
910
+ const cx = x + 0.5;
911
+ const cy = y + 0.5;
912
+ const sx = ia * cx + ic * cy + itx;
913
+ const sy = ib * cx + id * cy + ity;
914
+ let hit = 16;
915
+ if (whole) {
916
+ // Erase and alpha take a pixel whole where the source is at its centre, as adl
917
+ // draws a shape's edge for them, an edge through the centre counted on its right
918
+ // and below.
919
+ hit = sx > 0 && sy > 0 && sx <= w && sy <= h ? 16 : 0;
920
+ } else if (x < fullFrom || x >= fullTo) {
921
+ hit = coverage(x, y);
922
+ }
923
+
924
+ hits[k] = hit;
925
+ if (hit === 0) {
926
+ continue;
927
+ }
928
+
929
+ any++;
930
+ us[k] = sx;
931
+ vs[k] = sy;
932
+ }
933
+
934
+ if (any === 0) {
935
+ continue;
936
+ }
937
+
938
+ sampleRow(pixels, w, h, us, vs, hits, row, n, smooth);
939
+ if (transform) {
940
+ transformRow(row, hits, n, transform);
941
+ }
942
+
943
+ coverRow(row, hits, n);
944
+ into ??= store.pixels;
945
+ blendRow(store, into, y * store.width + area.x, row, hits, n, code, keepClear);
946
+ wrote = true;
947
+ }
948
+ } finally {
949
+ giveRowsBack(buffers);
950
+ }
951
+
952
+ if (wrote) {
953
+ store.changed();
954
+ }
955
+ }
956
+
957
+ /** The draw kernel's job, filled for each draw: drawBitmap allocates nothing for it. */
958
+ const job = DrawKernel.job();
959
+
960
+ /** How far a source point may lie for the draw kernel, whose numbers are then exact as drawBitmap's. */
961
+ const REACH = 2 ** 30;
962
+
963
+ /**
964
+ * A draw in the normal blend mode of another store, by the draw kernel
965
+ * (draw.zig), whose pixels are those of the paths below, to the bit, the
966
+ * matrix's inverse in `job.inverse` already: whether it drew it, which it
967
+ * does not for numbers it cannot take as they are, nor where the realm has
968
+ * no kernel.
969
+ */
970
+ function drawnNatively(
971
+ store: BitmapStore,
972
+ source: BitmapStore,
973
+ m: Affine,
974
+ moved: boolean,
975
+ area: PixelRect,
976
+ ct: PreparedColorTransform | null,
977
+ smooth: boolean,
978
+ ): boolean {
979
+ // A store the GPU drew last is read back only by a draw that puts a pixel, as below.
980
+ if (store.newerOnGpu) {
981
+ return false;
982
+ }
983
+
984
+ // The source rows the draw reads: the area's, moved; else those its corners reach, and one
985
+ // more each way for smoothing and rounding. A point far out, or not finite, is drawn below.
986
+ const inverse = job.inverse;
987
+ let top: number;
988
+ let bottom: number;
989
+ if (moved) {
990
+ if (Math.abs(m.tx) >= 2 ** 31 || Math.abs(m.ty) >= 2 ** 31) {
991
+ return false;
992
+ }
993
+
994
+ top = area.y - m.ty;
995
+ bottom = top + area.height;
996
+ } else {
997
+ const x0 = area.x;
998
+ const x1 = area.x + area.width;
999
+ const y0 = area.y;
1000
+ const y1 = area.y + area.height;
1001
+ const ia = inverse[0];
1002
+ const ib = inverse[1];
1003
+ const ic = inverse[2];
1004
+ const id = inverse[3];
1005
+ const itx = inverse[4];
1006
+ const ity = inverse[5];
1007
+ const ya = ib * x0 + id * y0 + ity;
1008
+ const yb = ib * x1 + id * y0 + ity;
1009
+ const yc = ib * x0 + id * y1 + ity;
1010
+ const yd = ib * x1 + id * y1 + ity;
1011
+ const xa = ia * x0 + ic * y0 + itx;
1012
+ const xb = ia * x1 + ic * y0 + itx;
1013
+ const xc = ia * x0 + ic * y1 + itx;
1014
+ const xd = ia * x1 + ic * y1 + itx;
1015
+ const low = Math.min(ya, yb, yc, yd);
1016
+ const high = Math.max(ya, yb, yc, yd);
1017
+ const far = Math.max(Math.abs(xa), Math.abs(xb), Math.abs(xc), Math.abs(xd));
1018
+ if (!(Math.abs(low) < REACH && Math.abs(high) < REACH && far < REACH)) {
1019
+ return false;
1020
+ }
1021
+
1022
+ top = Math.max(0, Math.min(source.height - 1, Math.floor(low) - 1));
1023
+ bottom = Math.max(top + 1, Math.min(source.height, Math.ceil(high) + 1));
1024
+ }
1025
+
1026
+ if (ct) {
1027
+ const t = job.transform;
1028
+ t[0] = ct.rMul;
1029
+ t[1] = ct.gMul;
1030
+ t[2] = ct.bMul;
1031
+ t[3] = ct.aMul;
1032
+ t[4] = ct.rAdd;
1033
+ t[5] = ct.gAdd;
1034
+ t[6] = ct.bAdd;
1035
+ t[7] = ct.aAdd;
1036
+ if (!t.every(Number.isFinite)) {
1037
+ return false;
1038
+ }
1039
+ }
1040
+
1041
+ // Copying wide source rows for a small clip can cost more than the draw.
1042
+ // Whole-pixel moves do less work per destination pixel, so their limit is lower.
1043
+ const sourcePixels = source.width * (bottom - top);
1044
+ const copiedPerPixel = moved ? 32 : 128;
1045
+ if (sourcePixels > Math.max(1024, area.width * area.height * copiedPerPixel)) {
1046
+ return false;
1047
+ }
1048
+
1049
+ const kernel = drawKernel();
1050
+ if (!kernel) {
1051
+ return false;
1052
+ }
1053
+
1054
+ job.source = source.drawable;
1055
+ job.sourceWidth = source.width;
1056
+ job.sourceHeight = source.height;
1057
+ job.sourceTop = top;
1058
+ job.sourceRows = bottom - top;
1059
+ job.into = store.readable;
1060
+ job.intoWidth = store.width;
1061
+ job.x = area.x;
1062
+ job.y = area.y;
1063
+ job.width = area.width;
1064
+ job.height = area.height;
1065
+ job.moved = moved;
1066
+ job.tx = moved ? m.tx : 0;
1067
+ job.ty = moved ? m.ty : 0;
1068
+ job.flags =
1069
+ (smooth ? DRAW_SMOOTH : 0) |
1070
+ (ct ? DRAW_TRANSFORM : 0) |
1071
+ (store.transparent ? 0 : DRAW_OPAQUE) |
1072
+ (ct?.skipZeroAlpha ? DRAW_SKIP_ZERO_ALPHA : 0);
1073
+ const result = kernel.draw(job);
1074
+ // The job holds no store's pixels past the draw.
1075
+ job.source = EMPTY;
1076
+ job.into = EMPTY;
1077
+ if (result === "refused") {
1078
+ return false;
1079
+ }
1080
+
1081
+ if (result === "written") {
1082
+ kernel.writeBack(job, store.pixels);
1083
+ store.changed();
1084
+ }
1085
+
1086
+ return true;
1087
+ }
1088
+
1089
+ const EMPTY = new Uint32Array(0);
1090
+
1091
+ /** drawBitmap's buffers for a row. */
1092
+ interface RowScratch {
1093
+ pixels: Uint32Array;
1094
+ hits: Uint8Array;
1095
+ /** Each pixel's point in the source. */
1096
+ us: Float64Array;
1097
+ vs: Float64Array;
1098
+ }
1099
+
1100
+ /**
1101
+ * The row buffers kept between draws, which drawBitmap and composite take
1102
+ * for a draw and give back after it. A draw runs to its end without
1103
+ * calling out, so no other draw can take them in the middle of one:
1104
+ * `scratchTaken` holds that, and a draw that finds them taken throws
1105
+ * rather than overwrite a row another is working on.
1106
+ */
1107
+ let scratch: RowScratch = {
1108
+ pixels: new Uint32Array(0),
1109
+ hits: new Uint8Array(0),
1110
+ us: new Float64Array(0),
1111
+ vs: new Float64Array(0),
1112
+ };
1113
+ let scratchTaken = false;
1114
+
1115
+ /** The widest row whose buffers are kept for the next draw: a wider one's go with its draw. */
1116
+ const ROW_KEPT = 8192;
1117
+
1118
+ /** Buffers for rows of `n` pixels: the kept ones where they are wide enough, until given back. */
1119
+ function takeRows(n: number): RowScratch {
1120
+ if (scratch.pixels.length >= n) {
1121
+ if (scratchTaken) {
1122
+ throw new Error("drawBitmap's row buffers are taken by a draw already under way");
1123
+ }
1124
+
1125
+ scratchTaken = true;
1126
+ return scratch;
1127
+ }
1128
+
1129
+ const buffers = {
1130
+ pixels: new Uint32Array(n),
1131
+ hits: new Uint8Array(n),
1132
+ us: new Float64Array(n),
1133
+ vs: new Float64Array(n),
1134
+ };
1135
+ if (n <= ROW_KEPT && !scratchTaken) {
1136
+ scratch = buffers;
1137
+ scratchTaken = true;
1138
+ }
1139
+
1140
+ return buffers;
1141
+ }
1142
+
1143
+ function giveRowsBack(buffers: RowScratch): void {
1144
+ if (buffers === scratch) {
1145
+ scratchTaken = false;
1146
+ }
1147
+ }
1148
+
1149
+ /** coveredSpan's answer: the first pixel of a row covered whole and the one past the last. */
1150
+ let spanFrom = 0;
1151
+ let spanTo = 0;
1152
+
1153
+ /**
1154
+ * Narrows spanFrom to spanTo, the destination pixels in row y whose 16 samples
1155
+ * all have u = a x + c y' + t within [0, size), y' each of the row's four
1156
+ * sample rows; false where u barely moves along x without being still,
1157
+ * which leaves every pixel to be tested. The span keeps a margin of a
1158
+ * thousandth of a pixel, and more where the numbers are large, from where
1159
+ * the samples' own arithmetic decides, so a pixel in it is one the tests
1160
+ * find whole.
1161
+ */
1162
+ function coveredSpan(a: number, c: number, t: number, size: number, y: number): boolean {
1163
+ if (a === 0) {
1164
+ // u is the same all along a sample row, worked out as the tests do.
1165
+ for (let k = 0; k < 4; k++) {
1166
+ const u = c * (y + (k + 0.5) / 4) + t;
1167
+ if (!(u >= 0 && u < size)) {
1168
+ spanFrom = Number.POSITIVE_INFINITY;
1169
+ }
1170
+ }
1171
+
1172
+ return true;
1173
+ }
1174
+
1175
+ if (Math.abs(a) < 1e-6) {
1176
+ return false;
1177
+ }
1178
+
1179
+ for (let k = 0; k < 4; k++) {
1180
+ const offset = c * (y + (k + 0.5) / 4) + t;
1181
+ // The x where u is 0 and where it is size, in either order.
1182
+ const at0 = -offset / a;
1183
+ const atSize = (size - offset) / a;
1184
+ const margin =
1185
+ 0.001 +
1186
+ (1e-12 * (Math.abs(offset) + size + Math.abs(a) * (Math.abs(at0) + Math.abs(atSize)))) /
1187
+ Math.abs(a);
1188
+ const low = Math.min(at0, atSize) + margin;
1189
+ const high = Math.max(at0, atSize) - margin;
1190
+ if (!Number.isFinite(low) || !Number.isFinite(high)) {
1191
+ return false;
1192
+ }
1193
+
1194
+ // Samples lie at x + 1/8 to x + 7/8.
1195
+ spanFrom = Math.max(spanFrom, Math.ceil(low - 0.125));
1196
+ spanTo = Math.min(spanTo, Math.floor(high - 0.875) + 1);
1197
+ }
1198
+
1199
+ return true;
1200
+ }
1201
+
1202
+ /** The source's pixel under each covered pixel's point of the row, nearest or bilinear. */
1203
+ function sampleRow(
1204
+ from: Uint32Array,
1205
+ width: number,
1206
+ height: number,
1207
+ us: Float64Array,
1208
+ vs: Float64Array,
1209
+ hits: Uint8Array,
1210
+ row: Uint32Array,
1211
+ n: number,
1212
+ smooth: boolean,
1213
+ ): void {
1214
+ for (let k = 0; k < n; k++) {
1215
+ if (hits[k] === 0) {
1216
+ continue;
1217
+ }
1218
+
1219
+ row[k] = smooth
1220
+ ? bilinear(from, width, height, us[k] - 0.5, vs[k] - 0.5)
1221
+ : nearest(from, width, height, us[k], vs[k]);
1222
+ }
1223
+ }
1224
+
1225
+ /** The row's covered pixels through the colour transform, a run of one pixel transformed once. */
1226
+ function transformRow(
1227
+ row: Uint32Array,
1228
+ hits: Uint8Array,
1229
+ n: number,
1230
+ ct: PreparedColorTransform,
1231
+ ): void {
1232
+ let last = -1;
1233
+ let out = 0;
1234
+ for (let k = 0; k < n; k++) {
1235
+ if (hits[k] === 0) {
1236
+ continue;
1237
+ }
1238
+
1239
+ const p = row[k];
1240
+ if (p !== last) {
1241
+ last = p;
1242
+ out = transformed(p, ct);
1243
+ }
1244
+
1245
+ row[k] = out;
1246
+ }
1247
+ }
1248
+
1249
+ /** The row's partly covered pixels scaled by their coverage. */
1250
+ function coverRow(row: Uint32Array, hits: Uint8Array, n: number): void {
1251
+ for (let k = 0; k < n; k++) {
1252
+ const hit = hits[k];
1253
+ if (hit !== 0 && hit < 16) {
1254
+ row[k] = scaleBy(row[k], hit / 16);
1255
+ }
1256
+ }
1257
+ }
1258
+
1259
+ /**
1260
+ * The row's covered pixels composited into the store's pixels from `at` by
1261
+ * the blend mode; with `keepClear`, a clear one leaves the destination be.
1262
+ */
1263
+ function blendRow(
1264
+ store: BitmapStore,
1265
+ into: Uint32Array,
1266
+ at: number,
1267
+ row: Uint32Array,
1268
+ hits: Uint8Array,
1269
+ n: number,
1270
+ mode: number,
1271
+ keepClear: boolean,
1272
+ ): void {
1273
+ if (mode === NORMAL) {
1274
+ const opaque = store.transparent ? 0 : 0xff000000;
1275
+ for (let k = 0; k < n; k++) {
1276
+ if (hits[k] === 0) {
1277
+ continue;
1278
+ }
1279
+
1280
+ const p = row[k];
1281
+ const sa = p >>> 24;
1282
+ into[at + k] = sa === 255 ? p : (over(p, into[at + k]) | opaque) >>> 0;
1283
+ }
1284
+
1285
+ return;
1286
+ }
1287
+
1288
+ for (let k = 0; k < n; k++) {
1289
+ if (hits[k] !== 0 && !(keepClear && row[k] >>> 24 === 0)) {
1290
+ put(store, into, at + k, mode, row[k]);
1291
+ }
1292
+ }
1293
+ }
1294
+
1295
+ /** `source` at (tx, ty) composited into `area` of the store, a pixel each; whether it put one. */
1296
+ function composite(
1297
+ store: BitmapStore,
1298
+ source: BitmapStore,
1299
+ area: PixelRect,
1300
+ tx: number,
1301
+ ty: number,
1302
+ ct: PreparedColorTransform | null,
1303
+ mode: number,
1304
+ keepClear: boolean,
1305
+ ): boolean {
1306
+ const from = source.drawable;
1307
+ const opaque = store.transparent ? 0 : 0xff000000;
1308
+ // The store's pixels, taken as drawBitmap takes them: at the first pixel put.
1309
+ let into: Uint32Array | null = null;
1310
+ if (!ct && mode === NORMAL) {
1311
+ for (let y = area.y; y < area.y + area.height; y++) {
1312
+ let i = y * store.width + area.x;
1313
+ let j = (y - ty) * source.width + (area.x - tx);
1314
+ for (let x = 0; x < area.width; x++, i++, j++) {
1315
+ // Source over, inline: what blend("normal") computes.
1316
+ const p = from[j];
1317
+ const sa = p >>> 24;
1318
+ if (sa === 0) {
1319
+ continue;
1320
+ }
1321
+
1322
+ into ??= store.pixels;
1323
+ into[i] = sa === 255 ? p : (over(p, into[i]) | opaque) >>> 0;
1324
+ }
1325
+ }
1326
+
1327
+ return into !== null;
1328
+ }
1329
+
1330
+ // A row at a time through the passes drawBitmap's rows take, every pixel covered.
1331
+ const n = area.width;
1332
+ const buffers = takeRows(n);
1333
+ try {
1334
+ const { pixels: row, hits } = buffers;
1335
+ hits.fill(16, 0, n);
1336
+ into = store.pixels;
1337
+
1338
+ for (let y = area.y; y < area.y + area.height; y++) {
1339
+ const j = (y - ty) * source.width + (area.x - tx);
1340
+ // A view and a copy: a loop copying it was slower, for all a view allocates.
1341
+ row.set(from.subarray(j, j + n));
1342
+ if (ct) {
1343
+ transformRow(row, hits, n, ct);
1344
+ }
1345
+
1346
+ blendRow(store, into, y * store.width + area.x, row, hits, n, mode, keepClear);
1347
+ }
1348
+ } finally {
1349
+ giveRowsBack(buffers);
1350
+ }
1351
+
1352
+ return true;
1353
+ }
1354
+
1355
+ /**
1356
+ * A drawn pixel composited into the store by the blend mode, opaque where
1357
+ * the store is, but for erase and alpha: an opaque bitmap holds the alpha
1358
+ * they leave, as Flash's memory does, and reads it back (getPixel32).
1359
+ */
1360
+ function put(store: BitmapStore, into: Uint32Array, i: number, mode: number, p: number): void {
1361
+ const out = blend(mode, p, into[i]);
1362
+ if (store.transparent) {
1363
+ into[i] = out;
1364
+ } else if (mode === ERASE || mode === ALPHA) {
1365
+ into[i] = out;
1366
+ store.holdsAlpha ||= out >>> 24 !== 255;
1367
+ } else {
1368
+ into[i] = (out | 0xff000000) >>> 0;
1369
+ }
1370
+ }
1371
+
1372
+ /**
1373
+ * The part of `store` a draw of itself through `m` into `area` can read,
1374
+ * copied, as a layer reads it before the draw writes, and the matrix that
1375
+ * draws the copy where the store would be drawn: the area's corners taken
1376
+ * back through the matrix, a pixel wider for smoothing, within the store.
1377
+ */
1378
+ function reachable(store: BitmapStore, m: Affine, area: PixelRect): [BitmapStore, Affine] {
1379
+ const det = m.a * m.d - m.b * m.c;
1380
+ const back = [
1381
+ [area.x, area.y],
1382
+ [area.x + area.width, area.y],
1383
+ [area.x, area.y + area.height],
1384
+ [area.x + area.width, area.y + area.height],
1385
+ ].map(([x, y]) => [
1386
+ (m.d * (x - m.tx) - m.c * (y - m.ty)) / det,
1387
+ (m.a * (y - m.ty) - m.b * (x - m.tx)) / det,
1388
+ ]);
1389
+ const x0 = Math.max(0, Math.floor(Math.min(...back.map((p) => p[0]))) - 1);
1390
+ const y0 = Math.max(0, Math.floor(Math.min(...back.map((p) => p[1]))) - 1);
1391
+ const x1 = Math.min(store.width, Math.ceil(Math.max(...back.map((p) => p[0]))) + 1);
1392
+ const y1 = Math.min(store.height, Math.ceil(Math.max(...back.map((p) => p[1]))) + 1);
1393
+ const width = Math.max(0, x1 - x0);
1394
+ const height = Math.max(0, y1 - y0);
1395
+ const copy = new BitmapStore(width, height, store.transparent, 0);
1396
+ const from = store.readable;
1397
+ const into = copy.pixels;
1398
+ for (let y = 0; y < height; y++) {
1399
+ into.set(
1400
+ from.subarray((y0 + y) * store.width + x0, (y0 + y) * store.width + x0 + width),
1401
+ y * width,
1402
+ );
1403
+ }
1404
+
1405
+ copy.holdsAlpha = store.holdsAlpha;
1406
+ return [copy, { ...m, tx: m.tx + m.a * x0 + m.c * y0, ty: m.ty + m.b * x0 + m.d * y0 }];
1407
+ }
1408
+
1409
+ function nearest(from: Uint32Array, width: number, height: number, x: number, y: number): number {
1410
+ const px = Math.min(width - 1, Math.max(0, Math.floor(x)));
1411
+ const py = Math.min(height - 1, Math.max(0, Math.floor(y)));
1412
+ return from[py * width + px];
1413
+ }
1414
+
1415
+ /** Bilinear between the four premultiplied pixels round (x, y), clamped to the edges. */
1416
+ function bilinear(from: Uint32Array, width: number, height: number, x: number, y: number): number {
1417
+ const x0 = Math.floor(x);
1418
+ const y0 = Math.floor(y);
1419
+ const fx = x - x0;
1420
+ const fy = y - y0;
1421
+ const left = Math.min(width - 1, Math.max(0, x0));
1422
+ const right = Math.min(width - 1, Math.max(0, x0 + 1));
1423
+ const top = Math.min(height - 1, Math.max(0, y0)) * width;
1424
+ const bottom = Math.min(height - 1, Math.max(0, y0 + 1)) * width;
1425
+ const p00 = from[top + left];
1426
+ const p10 = from[top + right];
1427
+ const p01 = from[bottom + left];
1428
+ const p11 = from[bottom + right];
1429
+ const gx = 1 - fx;
1430
+ const gy = 1 - fy;
1431
+
1432
+ return (
1433
+ ((lerp4(p00, p10, p01, p11, 24, fx, fy, gx, gy) << 24) |
1434
+ (lerp4(p00, p10, p01, p11, 16, fx, fy, gx, gy) << 16) |
1435
+ (lerp4(p00, p10, p01, p11, 8, fx, fy, gx, gy) << 8) |
1436
+ lerp4(p00, p10, p01, p11, 0, fx, fy, gx, gy)) >>>
1437
+ 0
1438
+ );
1439
+ }
1440
+
1441
+ /** One channel of bilinear's four pixels, weighed by fx and fy and by gx and gy, their complements. */
1442
+ function lerp4(
1443
+ p00: number,
1444
+ p10: number,
1445
+ p01: number,
1446
+ p11: number,
1447
+ shift: number,
1448
+ fx: number,
1449
+ fy: number,
1450
+ gx: number,
1451
+ gy: number,
1452
+ ): number {
1453
+ const top = ((p00 >>> shift) & 0xff) * gx + ((p10 >>> shift) & 0xff) * fx;
1454
+ const bottom = ((p01 >>> shift) & 0xff) * gx + ((p11 >>> shift) & 0xff) * fx;
1455
+ return Math.round(top * gy + bottom * fy);
1456
+ }
1457
+
1458
+ /** A premultiplied pixel through a colour transform, as colorTransform computes it. */
1459
+ function transformed(p: number, ct: PreparedColorTransform): number {
1460
+ const a0 = p >>> 24;
1461
+ if (a0 === 0 && ct.skipZeroAlpha) {
1462
+ return 0;
1463
+ }
1464
+
1465
+ const a = colorChannel(a0, ct.aMul, ct.aAdd);
1466
+ return (
1467
+ ((a << 24) |
1468
+ (drawColorChannel(p, a0, 16, ct.rMul, ct.rAdd, a) << 16) |
1469
+ (drawColorChannel(p, a0, 8, ct.gMul, ct.gAdd, a) << 8) |
1470
+ drawColorChannel(p, a0, 0, ct.bMul, ct.bAdd, a)) >>>
1471
+ 0
1472
+ );
1473
+ }
1474
+
1475
+ function prepareColorTransform(ct: ColorTransformValues): PreparedColorTransform {
1476
+ return {
1477
+ rMul: Math.trunc(ct.rMul * 256),
1478
+ gMul: Math.trunc(ct.gMul * 256),
1479
+ bMul: Math.trunc(ct.bMul * 256),
1480
+ aMul: Math.trunc(ct.aMul * 256),
1481
+ rAdd: Math.trunc(ct.rAdd),
1482
+ gAdd: Math.trunc(ct.gAdd),
1483
+ bAdd: Math.trunc(ct.bAdd),
1484
+ aAdd: Math.trunc(ct.aAdd),
1485
+ // The alpha-zero guard tests the original offset before truncation.
1486
+ skipZeroAlpha: ct.aAdd <= 0,
1487
+ };
1488
+ }
1489
+
1490
+ // These stay outside the pixel loops so a transform creates no per-pixel closures.
1491
+ function colorChannel(v: number, mul: number, add: number): number {
1492
+ return Math.max(0, Math.min(255, Math.floor((v * mul) / 256) + add));
1493
+ }
1494
+
1495
+ function straightChannel(p: number, alpha: number, shift: number): number {
1496
+ return alpha === 0 ? 0 : Math.min(255, Math.floor((((p >>> shift) & 0xff) * 255) / alpha));
1497
+ }
1498
+
1499
+ function premultipliedChannel(v: number, alpha: number): number {
1500
+ return alpha === 255 ? v : (v * (alpha + 1)) >> 8;
1501
+ }
1502
+
1503
+ function drawColorChannel(
1504
+ p: number,
1505
+ alpha: number,
1506
+ shift: number,
1507
+ mul: number,
1508
+ add: number,
1509
+ outAlpha: number,
1510
+ ): number {
1511
+ const v = colorChannel(straightChannel(p, alpha, shift), mul, add);
1512
+
1513
+ return premultipliedChannel(v, outAlpha);
1514
+ }
1515
+
1516
+ /** A premultiplied pixel with all four channels scaled by a coverage. */
1517
+ function scaleBy(p: number, f: number): number {
1518
+ return (
1519
+ ((Math.round((p >>> 24) * f) << 24) |
1520
+ (Math.round(((p >>> 16) & 0xff) * f) << 16) |
1521
+ (Math.round(((p >>> 8) & 0xff) * f) << 8) |
1522
+ Math.round((p & 0xff) * f)) >>>
1523
+ 0
1524
+ );
1525
+ }
1526
+
1527
+ /**
1528
+ * The destination alone, as erase and alpha leave it: each channel scaled
1529
+ * by k / 255, what the source's alpha leaves or is, floored, as adl's are.
1530
+ */
1531
+ function scaleFloored(d: number, k: number): number {
1532
+ const a = Math.floor(((d >>> 24) * k) / 255);
1533
+ const r = Math.floor((((d >>> 16) & 0xff) * k) / 255);
1534
+ const g = Math.floor((((d >>> 8) & 0xff) * k) / 255);
1535
+ const b = Math.floor(((d & 0xff) * k) / 255);
1536
+ return ((a << 24) | (r << 16) | (g << 8) | b) >>> 0;
1537
+ }
1538
+
1539
+ /** x * y / 255, rounded as the blend modes' arithmetic has it. */
1540
+ function mul(x: number, y: number): number {
1541
+ return (x * y + 127) / 255;
1542
+ }
1543
+
1544
+ /**
1545
+ * Premultiplied s over d by a blend mode, the W3C's compositing with each
1546
+ * mode's mix. Every helper takes its operands as arguments, so a pixel
1547
+ * allocates nothing: a closure over them would take a context each call.
1548
+ */
1549
+ function blend(mode: number, s: number, d: number): number {
1550
+ if (mode === NORMAL) {
1551
+ return over(s, d);
1552
+ }
1553
+
1554
+ const sa = s >>> 24;
1555
+ if (mode === ERASE || mode === ALPHA) {
1556
+ return scaleFloored(d, mode === ERASE ? 255 - sa : sa);
1557
+ }
1558
+
1559
+ const da = d >>> 24;
1560
+ const a =
1561
+ mode === ADD || mode === SUBTRACT
1562
+ ? Math.min(255, sa + da)
1563
+ : Math.min(255, Math.round(sa + da - mul(sa, da)));
1564
+ return (
1565
+ ((a << 24) |
1566
+ (blendChannel(mode, (s >>> 16) & 0xff, (d >>> 16) & 0xff, sa, da) << 16) |
1567
+ (blendChannel(mode, (s >>> 8) & 0xff, (d >>> 8) & 0xff, sa, da) << 8) |
1568
+ blendChannel(mode, s & 0xff, d & 0xff, sa, da)) >>>
1569
+ 0
1570
+ );
1571
+ }
1572
+
1573
+ /** A colour channel of blend: source cs and destination cd under alphas sa and da. */
1574
+ function blendChannel(mode: number, cs: number, cd: number, sa: number, da: number): number {
1575
+ let b: number;
1576
+ switch (mode) {
1577
+ case MULTIPLY:
1578
+ b = mul(cs, cd);
1579
+ break;
1580
+ case SCREEN:
1581
+ b = (cs * da) / 255 + (cd * sa) / 255 - mul(cs, cd);
1582
+ break;
1583
+ case LIGHTEN:
1584
+ b = Math.max(mul(cs, da), mul(cd, sa));
1585
+ break;
1586
+ case DARKEN:
1587
+ b = Math.min(mul(cs, da), mul(cd, sa));
1588
+ break;
1589
+ case DIFFERENCE:
1590
+ b = Math.abs(mul(cs, da) - mul(cd, sa));
1591
+ break;
1592
+ case ADD:
1593
+ return Math.min(255, cs + cd);
1594
+ case SUBTRACT:
1595
+ return Math.max(0, cd - cs);
1596
+ case INVERT:
1597
+ // The destination inverted, the source's colour unused.
1598
+ return Math.max(0, Math.min(255, Math.floor(mul(255 - cd, sa) + mul(cd, 255 - sa))));
1599
+ case OVERLAY:
1600
+ b = 2 * cd <= da ? 2 * mul(cs, cd) : mul(sa, da) - 2 * mul(da - cd, sa - cs);
1601
+ break;
1602
+ default:
1603
+ b = 2 * cs <= sa ? 2 * mul(cs, cd) : mul(sa, da) - 2 * mul(da - cd, sa - cs);
1604
+ break;
1605
+ }
1606
+
1607
+ return Math.max(0, Math.min(255, Math.floor(b + mul(cs, 255 - da) + mul(cd, 255 - sa))));
1608
+ }