@next2d/player 1.14.7 → 1.14.9

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 (414) hide show
  1. package/README.cn.md +44 -36
  2. package/README.ja.md +44 -30
  3. package/README.md +56 -37
  4. package/dist/interface/AjaxEventImpl.d.ts +5 -0
  5. package/dist/interface/AjaxEventImpl.js +1 -0
  6. package/dist/interface/AjaxOptionImpl.d.ts +13 -0
  7. package/dist/interface/AjaxOptionImpl.js +1 -0
  8. package/dist/interface/AttachmentImpl.d.ts +11 -0
  9. package/dist/interface/AttachmentImpl.js +1 -0
  10. package/dist/interface/BitmapDataChannelImpl.d.ts +1 -0
  11. package/dist/interface/BitmapDataChannelImpl.js +1 -0
  12. package/dist/interface/BitmapDrawObjectImpl.d.ts +6 -0
  13. package/dist/interface/BitmapDrawObjectImpl.js +1 -0
  14. package/dist/interface/BitmapFilterTypeImpl.d.ts +1 -0
  15. package/dist/interface/BitmapFilterTypeImpl.js +1 -0
  16. package/dist/interface/BlendModeImpl.d.ts +1 -0
  17. package/dist/interface/BlendModeImpl.js +1 -0
  18. package/dist/interface/BoundsImpl.d.ts +6 -0
  19. package/dist/interface/BoundsImpl.js +1 -0
  20. package/dist/interface/Character.d.ts +2 -0
  21. package/dist/interface/Character.js +1 -0
  22. package/dist/interface/CharacterImpl.d.ts +2 -0
  23. package/dist/interface/CharacterImpl.js +1 -0
  24. package/dist/interface/ClassNameMap.d.ts +4 -0
  25. package/dist/interface/ClassNameMap.js +1 -0
  26. package/dist/interface/ClipObjectImpl.d.ts +14 -0
  27. package/dist/interface/ClipObjectImpl.js +1 -0
  28. package/dist/interface/ColorStopImpl.d.ts +7 -0
  29. package/dist/interface/ColorStopImpl.js +1 -0
  30. package/dist/interface/DictionaryTagImpl.d.ts +7 -0
  31. package/dist/interface/DictionaryTagImpl.js +1 -0
  32. package/dist/interface/DisplacementMapFilterModeImpl.d.ts +1 -0
  33. package/dist/interface/DisplacementMapFilterModeImpl.js +1 -0
  34. package/dist/interface/DisplayImpl.d.ts +28 -0
  35. package/dist/interface/DisplayImpl.js +1 -0
  36. package/dist/interface/DisplayObjectImpl.d.ts +2 -0
  37. package/dist/interface/DisplayObjectImpl.js +1 -0
  38. package/dist/interface/DragRulesImpl.d.ts +7 -0
  39. package/dist/interface/DragRulesImpl.js +1 -0
  40. package/dist/interface/DropTargetImpl.d.ts +2 -0
  41. package/dist/interface/DropTargetImpl.js +1 -0
  42. package/dist/interface/EventDispatcherImpl.d.ts +2 -0
  43. package/dist/interface/EventDispatcherImpl.js +1 -0
  44. package/dist/interface/EventListenerImpl.d.ts +6 -0
  45. package/dist/interface/EventListenerImpl.js +1 -0
  46. package/dist/interface/EventsImpl.d.ts +20 -0
  47. package/dist/interface/EventsImpl.js +1 -0
  48. package/dist/interface/FillMeshImpl.d.ts +5 -0
  49. package/dist/interface/FillMeshImpl.js +1 -0
  50. package/dist/interface/FilterArrayImpl.d.ts +10 -0
  51. package/dist/interface/FilterArrayImpl.js +1 -0
  52. package/dist/interface/FilterQualityImpl.d.ts +1 -0
  53. package/dist/interface/FilterQualityImpl.js +1 -0
  54. package/dist/interface/FiltersImpl.d.ts +20 -0
  55. package/dist/interface/FiltersImpl.js +1 -0
  56. package/dist/interface/GeomImpl.d.ts +12 -0
  57. package/dist/interface/GeomImpl.js +1 -0
  58. package/dist/interface/GradientTypeImpl.d.ts +3 -0
  59. package/dist/interface/GradientTypeImpl.js +1 -0
  60. package/dist/interface/GraphicsParentImpl.d.ts +2 -0
  61. package/dist/interface/GraphicsParentImpl.js +1 -0
  62. package/dist/interface/GridImpl.d.ts +6 -0
  63. package/dist/interface/GridImpl.js +1 -0
  64. package/dist/interface/ImageTypeImpl.d.ts +1 -0
  65. package/dist/interface/ImageTypeImpl.js +1 -0
  66. package/dist/interface/IndexRangeImpl.d.ts +4 -0
  67. package/dist/interface/IndexRangeImpl.js +1 -0
  68. package/dist/interface/LoaderInfoDataImpl.d.ts +7 -0
  69. package/dist/interface/LoaderInfoDataImpl.js +1 -0
  70. package/dist/interface/LoopConfigImpl.d.ts +8 -0
  71. package/dist/interface/LoopConfigImpl.js +1 -0
  72. package/dist/interface/LoopTypeImpl.d.ts +1 -0
  73. package/dist/interface/LoopTypeImpl.js +1 -0
  74. package/dist/interface/MediaImpl.d.ts +10 -0
  75. package/dist/interface/MediaImpl.js +1 -0
  76. package/dist/interface/MovieClipActionObjectImpl.d.ts +5 -0
  77. package/dist/interface/MovieClipActionObjectImpl.js +1 -0
  78. package/dist/interface/MovieClipCharacterImpl.d.ts +18 -0
  79. package/dist/interface/MovieClipCharacterImpl.js +1 -0
  80. package/dist/interface/MovieClipLabelObjectImpl.d.ts +4 -0
  81. package/dist/interface/MovieClipLabelObjectImpl.js +1 -0
  82. package/dist/interface/MovieClipSoundObjectImpl.d.ts +5 -0
  83. package/dist/interface/MovieClipSoundObjectImpl.js +1 -0
  84. package/dist/interface/NetImpl.d.ts +6 -0
  85. package/dist/interface/NetImpl.js +1 -0
  86. package/dist/interface/NoCodeDataImpl.d.ts +7 -0
  87. package/dist/interface/NoCodeDataImpl.js +1 -0
  88. package/dist/interface/NoCodeDataZlibImpl.d.ts +4 -0
  89. package/dist/interface/NoCodeDataZlibImpl.js +1 -0
  90. package/dist/interface/ParentImpl.d.ts +2 -0
  91. package/dist/interface/ParentImpl.js +1 -0
  92. package/dist/interface/PlaceObjectImpl.d.ts +12 -0
  93. package/dist/interface/PlaceObjectImpl.js +1 -0
  94. package/dist/interface/PlayerHitObjectImpl.d.ts +7 -0
  95. package/dist/interface/PlayerHitObjectImpl.js +1 -0
  96. package/dist/interface/PlayerModeImpl.d.ts +1 -0
  97. package/dist/interface/PlayerModeImpl.js +1 -0
  98. package/dist/interface/PlayerOptionsImpl.d.ts +8 -0
  99. package/dist/interface/PlayerOptionsImpl.js +1 -0
  100. package/dist/interface/PointImpl.d.ts +4 -0
  101. package/dist/interface/PointImpl.js +1 -0
  102. package/dist/interface/PreObjectImpl.d.ts +23 -0
  103. package/dist/interface/PreObjectImpl.js +1 -0
  104. package/dist/interface/PropertyContainerMessageImpl.d.ts +6 -0
  105. package/dist/interface/PropertyContainerMessageImpl.js +1 -0
  106. package/dist/interface/PropertyMessageImpl.d.ts +41 -0
  107. package/dist/interface/PropertyMessageImpl.js +1 -0
  108. package/dist/interface/PropertyMessageMapImpl.d.ts +2 -0
  109. package/dist/interface/PropertyMessageMapImpl.js +1 -0
  110. package/dist/interface/PropertyShapeMessageImpl.d.ts +6 -0
  111. package/dist/interface/PropertyShapeMessageImpl.js +1 -0
  112. package/dist/interface/PropertyTextMessageImpl.d.ts +25 -0
  113. package/dist/interface/PropertyTextMessageImpl.js +1 -0
  114. package/dist/interface/PropertyVideoMessageImpl.d.ts +5 -0
  115. package/dist/interface/PropertyVideoMessageImpl.js +1 -0
  116. package/dist/interface/RGBAImpl.d.ts +6 -0
  117. package/dist/interface/RGBAImpl.js +1 -0
  118. package/dist/interface/RenderDisplayObjectImpl.d.ts +2 -0
  119. package/dist/interface/RenderDisplayObjectImpl.js +1 -0
  120. package/dist/interface/ShapeCharacterImpl.d.ts +14 -0
  121. package/dist/interface/ShapeCharacterImpl.js +1 -0
  122. package/dist/interface/SoundCharacterImpl.d.ts +5 -0
  123. package/dist/interface/SoundCharacterImpl.js +1 -0
  124. package/dist/interface/SoundTagImpl.d.ts +6 -0
  125. package/dist/interface/SoundTagImpl.js +1 -0
  126. package/dist/interface/SpriteImpl.d.ts +2 -0
  127. package/dist/interface/SpriteImpl.js +1 -0
  128. package/dist/interface/StageDataImpl.d.ts +6 -0
  129. package/dist/interface/StageDataImpl.js +1 -0
  130. package/dist/interface/StageQualityImpl.d.ts +1 -0
  131. package/dist/interface/StageQualityImpl.js +1 -0
  132. package/dist/interface/StrokeMethImpl.d.ts +4 -0
  133. package/dist/interface/StrokeMethImpl.js +1 -0
  134. package/dist/interface/StrokeTypeImpl.d.ts +2 -0
  135. package/dist/interface/StrokeTypeImpl.js +1 -0
  136. package/dist/interface/SurfaceFilterImpl.d.ts +6 -0
  137. package/dist/interface/SurfaceFilterImpl.js +1 -0
  138. package/dist/interface/TextBreakObjectImpl.d.ts +9 -0
  139. package/dist/interface/TextBreakObjectImpl.js +1 -0
  140. package/dist/interface/TextCharacterImpl.d.ts +27 -0
  141. package/dist/interface/TextCharacterImpl.js +1 -0
  142. package/dist/interface/TextDataImpl.d.ts +2 -0
  143. package/dist/interface/TextDataImpl.js +1 -0
  144. package/dist/interface/TextFieldAutoSizeImpl.d.ts +1 -0
  145. package/dist/interface/TextFieldAutoSizeImpl.js +1 -0
  146. package/dist/interface/TextFieldTypeImpl.d.ts +1 -0
  147. package/dist/interface/TextFieldTypeImpl.js +1 -0
  148. package/dist/interface/TextFormatAlignImpl.d.ts +1 -0
  149. package/dist/interface/TextFormatAlignImpl.js +1 -0
  150. package/dist/interface/TextFormatImpl.d.ts +16 -0
  151. package/dist/interface/TextFormatImpl.js +1 -0
  152. package/dist/interface/TextFormatVerticalAlignImpl.d.ts +1 -0
  153. package/dist/interface/TextFormatVerticalAlignImpl.js +1 -0
  154. package/dist/interface/TextImageObjectImpl.d.ts +11 -0
  155. package/dist/interface/TextImageObjectImpl.js +1 -0
  156. package/dist/interface/TextImpl.d.ts +6 -0
  157. package/dist/interface/TextImpl.js +1 -0
  158. package/dist/interface/TextModeImpl.d.ts +1 -0
  159. package/dist/interface/TextModeImpl.js +1 -0
  160. package/dist/interface/TextObjectImpl.d.ts +7 -0
  161. package/dist/interface/TextObjectImpl.js +1 -0
  162. package/dist/interface/TextObjectModeImpl.d.ts +1 -0
  163. package/dist/interface/TextObjectModeImpl.js +1 -0
  164. package/dist/interface/TextStringObjectImpl.d.ts +7 -0
  165. package/dist/interface/TextStringObjectImpl.js +1 -0
  166. package/dist/interface/UIImpl.d.ts +8 -0
  167. package/dist/interface/UIImpl.js +1 -0
  168. package/dist/interface/URLLoaderDataFormatImpl.d.ts +1 -0
  169. package/dist/interface/URLLoaderDataFormatImpl.js +1 -0
  170. package/dist/interface/URLRequestMethodImpl.d.ts +1 -0
  171. package/dist/interface/URLRequestMethodImpl.js +1 -0
  172. package/dist/interface/UniformDataImpl.d.ts +5 -0
  173. package/dist/interface/UniformDataImpl.js +1 -0
  174. package/dist/interface/UnzipQueueImpl.d.ts +6 -0
  175. package/dist/interface/UnzipQueueImpl.js +1 -0
  176. package/dist/interface/VerticesImpl.d.ts +1 -0
  177. package/dist/interface/VerticesImpl.js +1 -0
  178. package/dist/interface/VideoCharacterImpl.d.ts +12 -0
  179. package/dist/interface/VideoCharacterImpl.js +1 -0
  180. package/dist/player/index.d.ts +1 -0
  181. package/dist/player/index.js +40 -0
  182. package/dist/player/next2d/display/BitmapData.d.ts +143 -0
  183. package/dist/player/next2d/display/BitmapData.js +390 -0
  184. package/dist/player/next2d/display/BlendMode.d.ts +204 -0
  185. package/dist/player/next2d/display/BlendMode.js +240 -0
  186. package/dist/player/next2d/display/DisplayObject.d.ts +571 -0
  187. package/dist/player/next2d/display/DisplayObject.js +1733 -0
  188. package/dist/player/next2d/display/DisplayObjectContainer.d.ts +351 -0
  189. package/dist/player/next2d/display/DisplayObjectContainer.js +1765 -0
  190. package/dist/player/next2d/display/FrameLabel.d.ts +98 -0
  191. package/dist/player/next2d/display/FrameLabel.js +122 -0
  192. package/dist/player/next2d/display/Graphics.d.ts +577 -0
  193. package/dist/player/next2d/display/Graphics.js +2193 -0
  194. package/dist/player/next2d/display/GraphicsBitmapFill.d.ts +49 -0
  195. package/dist/player/next2d/display/GraphicsBitmapFill.js +90 -0
  196. package/dist/player/next2d/display/GraphicsGradientFill.d.ts +66 -0
  197. package/dist/player/next2d/display/GraphicsGradientFill.js +162 -0
  198. package/dist/player/next2d/display/InteractiveObject.d.ts +32 -0
  199. package/dist/player/next2d/display/InteractiveObject.js +44 -0
  200. package/dist/player/next2d/display/Loader.d.ts +131 -0
  201. package/dist/player/next2d/display/Loader.js +324 -0
  202. package/dist/player/next2d/display/LoaderInfo.d.ts +122 -0
  203. package/dist/player/next2d/display/LoaderInfo.js +191 -0
  204. package/dist/player/next2d/display/LoopConfig.d.ts +108 -0
  205. package/dist/player/next2d/display/LoopConfig.js +160 -0
  206. package/dist/player/next2d/display/LoopType.d.ts +104 -0
  207. package/dist/player/next2d/display/LoopType.js +122 -0
  208. package/dist/player/next2d/display/MovieClip.d.ts +312 -0
  209. package/dist/player/next2d/display/MovieClip.js +959 -0
  210. package/dist/player/next2d/display/Shape.d.ts +167 -0
  211. package/dist/player/next2d/display/Shape.js +514 -0
  212. package/dist/player/next2d/display/Sprite.d.ts +174 -0
  213. package/dist/player/next2d/display/Sprite.js +288 -0
  214. package/dist/player/next2d/display/Stage.d.ts +164 -0
  215. package/dist/player/next2d/display/Stage.js +255 -0
  216. package/dist/player/next2d/events/Event.d.ts +424 -0
  217. package/dist/player/next2d/events/Event.js +569 -0
  218. package/dist/player/next2d/events/EventDispatcher.d.ts +138 -0
  219. package/dist/player/next2d/events/EventDispatcher.js +624 -0
  220. package/dist/player/next2d/events/EventPhase.d.ts +80 -0
  221. package/dist/player/next2d/events/EventPhase.js +94 -0
  222. package/dist/player/next2d/events/FocusEvent.d.ts +89 -0
  223. package/dist/player/next2d/events/FocusEvent.js +103 -0
  224. package/dist/player/next2d/events/HTTPStatusEvent.d.ts +107 -0
  225. package/dist/player/next2d/events/HTTPStatusEvent.js +142 -0
  226. package/dist/player/next2d/events/IOErrorEvent.d.ts +82 -0
  227. package/dist/player/next2d/events/IOErrorEvent.js +102 -0
  228. package/dist/player/next2d/events/MouseEvent.d.ts +163 -0
  229. package/dist/player/next2d/events/MouseEvent.js +207 -0
  230. package/dist/player/next2d/events/ProgressEvent.d.ts +97 -0
  231. package/dist/player/next2d/events/ProgressEvent.js +125 -0
  232. package/dist/player/next2d/events/VideoEvent.d.ts +145 -0
  233. package/dist/player/next2d/events/VideoEvent.js +183 -0
  234. package/dist/player/next2d/filters/BevelFilter.d.ts +254 -0
  235. package/dist/player/next2d/filters/BevelFilter.js +501 -0
  236. package/dist/player/next2d/filters/BitmapFilter.d.ts +75 -0
  237. package/dist/player/next2d/filters/BitmapFilter.js +96 -0
  238. package/dist/player/next2d/filters/BlurFilter.d.ts +150 -0
  239. package/dist/player/next2d/filters/BlurFilter.js +373 -0
  240. package/dist/player/next2d/filters/ColorMatrixFilter.d.ts +116 -0
  241. package/dist/player/next2d/filters/ColorMatrixFilter.js +180 -0
  242. package/dist/player/next2d/filters/ConvolutionFilter.d.ts +210 -0
  243. package/dist/player/next2d/filters/ConvolutionFilter.js +375 -0
  244. package/dist/player/next2d/filters/DisplacementMapFilter.d.ts +212 -0
  245. package/dist/player/next2d/filters/DisplacementMapFilter.js +381 -0
  246. package/dist/player/next2d/filters/DropShadowFilter.d.ts +240 -0
  247. package/dist/player/next2d/filters/DropShadowFilter.js +470 -0
  248. package/dist/player/next2d/filters/GlowFilter.d.ts +204 -0
  249. package/dist/player/next2d/filters/GlowFilter.js +362 -0
  250. package/dist/player/next2d/filters/GradientBevelFilter.d.ts +243 -0
  251. package/dist/player/next2d/filters/GradientBevelFilter.js +483 -0
  252. package/dist/player/next2d/filters/GradientGlowFilter.d.ts +243 -0
  253. package/dist/player/next2d/filters/GradientGlowFilter.js +473 -0
  254. package/dist/player/next2d/geom/ColorTransform.d.ts +201 -0
  255. package/dist/player/next2d/geom/ColorTransform.js +279 -0
  256. package/dist/player/next2d/geom/Matrix.d.ts +299 -0
  257. package/dist/player/next2d/geom/Matrix.js +455 -0
  258. package/dist/player/next2d/geom/Point.d.ts +213 -0
  259. package/dist/player/next2d/geom/Point.js +276 -0
  260. package/dist/player/next2d/geom/Rectangle.d.ts +364 -0
  261. package/dist/player/next2d/geom/Rectangle.js +517 -0
  262. package/dist/player/next2d/geom/Transform.d.ts +213 -0
  263. package/dist/player/next2d/geom/Transform.js +497 -0
  264. package/dist/player/next2d/media/Sound.d.ts +208 -0
  265. package/dist/player/next2d/media/Sound.js +515 -0
  266. package/dist/player/next2d/media/SoundMixer.d.ts +68 -0
  267. package/dist/player/next2d/media/SoundMixer.js +115 -0
  268. package/dist/player/next2d/media/SoundTransform.d.ts +80 -0
  269. package/dist/player/next2d/media/SoundTransform.js +113 -0
  270. package/dist/player/next2d/media/Video.d.ts +329 -0
  271. package/dist/player/next2d/media/Video.js +871 -0
  272. package/dist/player/next2d/net/URLRequest.d.ts +143 -0
  273. package/dist/player/next2d/net/URLRequest.js +239 -0
  274. package/dist/player/next2d/net/URLRequestHeader.d.ts +82 -0
  275. package/dist/player/next2d/net/URLRequestHeader.js +107 -0
  276. package/dist/player/next2d/text/TextField.d.ts +642 -0
  277. package/dist/player/next2d/text/TextField.js +2707 -0
  278. package/dist/player/next2d/text/TextFormat.d.ts +250 -0
  279. package/dist/player/next2d/text/TextFormat.js +473 -0
  280. package/dist/player/next2d/ui/Easing.d.ts +359 -0
  281. package/dist/player/next2d/ui/Easing.js +481 -0
  282. package/dist/player/next2d/ui/Job.d.ts +155 -0
  283. package/dist/player/next2d/ui/Job.js +344 -0
  284. package/dist/player/next2d/ui/Tween.d.ts +62 -0
  285. package/dist/player/next2d/ui/Tween.js +72 -0
  286. package/dist/player/packages/Display.d.ts +3 -0
  287. package/dist/player/packages/Display.js +36 -0
  288. package/dist/player/packages/Events.d.ts +3 -0
  289. package/dist/player/packages/Events.js +28 -0
  290. package/dist/player/packages/Filters.d.ts +3 -0
  291. package/dist/player/packages/Filters.js +28 -0
  292. package/dist/player/packages/Geom.d.ts +3 -0
  293. package/dist/player/packages/Geom.js +20 -0
  294. package/dist/player/packages/Media.d.ts +3 -0
  295. package/dist/player/packages/Media.js +18 -0
  296. package/dist/player/packages/Net.d.ts +3 -0
  297. package/dist/player/packages/Net.js +14 -0
  298. package/dist/player/packages/Text.d.ts +3 -0
  299. package/dist/player/packages/Text.js +14 -0
  300. package/dist/player/packages/UI.d.ts +3 -0
  301. package/dist/player/packages/UI.js +16 -0
  302. package/dist/player/player/Next2D.d.ts +71 -0
  303. package/dist/player/player/Next2D.js +206 -0
  304. package/dist/player/player/Player.d.ts +334 -0
  305. package/dist/player/player/Player.js +1912 -0
  306. package/dist/player/util/CacheStore.d.ts +115 -0
  307. package/dist/player/util/CacheStore.js +280 -0
  308. package/dist/player/util/Global.d.ts +23 -0
  309. package/dist/player/util/Global.js +67 -0
  310. package/dist/player/util/RenderUtil.d.ts +472 -0
  311. package/dist/player/util/RenderUtil.js +686 -0
  312. package/dist/player/util/Shortcut.d.ts +28 -0
  313. package/dist/player/util/Shortcut.js +28 -0
  314. package/dist/player/util/Util.d.ts +337 -0
  315. package/dist/player/util/Util.js +841 -0
  316. package/dist/renderer/RenderDisplayObject.d.ts +129 -0
  317. package/dist/renderer/RenderDisplayObject.js +567 -0
  318. package/dist/renderer/RenderDisplayObjectContainer.d.ts +70 -0
  319. package/dist/renderer/RenderDisplayObjectContainer.js +670 -0
  320. package/dist/renderer/RenderGlobal.d.ts +76 -0
  321. package/dist/renderer/RenderGlobal.js +88 -0
  322. package/dist/renderer/RenderGraphics.d.ts +90 -0
  323. package/dist/renderer/RenderGraphics.js +597 -0
  324. package/dist/renderer/RenderPlayer.d.ts +164 -0
  325. package/dist/renderer/RenderPlayer.js +421 -0
  326. package/dist/renderer/RenderShape.d.ts +32 -0
  327. package/dist/renderer/RenderShape.js +104 -0
  328. package/dist/renderer/RenderTextField.d.ts +119 -0
  329. package/dist/renderer/RenderTextField.js +709 -0
  330. package/dist/renderer/RenderVideo.d.ts +59 -0
  331. package/dist/renderer/RenderVideo.js +272 -0
  332. package/dist/webgl/BezierConverter.d.ts +59 -0
  333. package/dist/webgl/BezierConverter.js +107 -0
  334. package/dist/webgl/CanvasGradientToWebGL.d.ts +94 -0
  335. package/dist/webgl/CanvasGradientToWebGL.js +187 -0
  336. package/dist/webgl/CanvasPatternToWebGL.d.ts +39 -0
  337. package/dist/webgl/CanvasPatternToWebGL.js +70 -0
  338. package/dist/webgl/CanvasToWebGLContext.d.ts +596 -0
  339. package/dist/webgl/CanvasToWebGLContext.js +1453 -0
  340. package/dist/webgl/CanvasToWebGLContextBlend.d.ts +97 -0
  341. package/dist/webgl/CanvasToWebGLContextBlend.js +303 -0
  342. package/dist/webgl/CanvasToWebGLContextGrid.d.ts +74 -0
  343. package/dist/webgl/CanvasToWebGLContextGrid.js +314 -0
  344. package/dist/webgl/CanvasToWebGLContextMask.d.ts +113 -0
  345. package/dist/webgl/CanvasToWebGLContextMask.js +443 -0
  346. package/dist/webgl/CanvasToWebGLContextPath.d.ts +111 -0
  347. package/dist/webgl/CanvasToWebGLContextPath.js +213 -0
  348. package/dist/webgl/CanvasToWebGLContextStyle.d.ts +77 -0
  349. package/dist/webgl/CanvasToWebGLContextStyle.js +145 -0
  350. package/dist/webgl/ColorBufferPool.d.ts +58 -0
  351. package/dist/webgl/ColorBufferPool.js +137 -0
  352. package/dist/webgl/FrameBufferManager.d.ts +135 -0
  353. package/dist/webgl/FrameBufferManager.js +367 -0
  354. package/dist/webgl/StencilBufferPool.d.ts +56 -0
  355. package/dist/webgl/StencilBufferPool.js +147 -0
  356. package/dist/webgl/TextureManager.d.ts +130 -0
  357. package/dist/webgl/TextureManager.js +303 -0
  358. package/dist/webgl/VertexArrayObjectManager.d.ts +95 -0
  359. package/dist/webgl/VertexArrayObjectManager.js +289 -0
  360. package/dist/webgl/WebGLFillMeshGenerator.d.ts +31 -0
  361. package/dist/webgl/WebGLFillMeshGenerator.js +104 -0
  362. package/dist/webgl/WebGLStrokeMeshGenerator.d.ts +182 -0
  363. package/dist/webgl/WebGLStrokeMeshGenerator.js +510 -0
  364. package/dist/webgl/shader/CanvasToWebGLShader.d.ts +85 -0
  365. package/dist/webgl/shader/CanvasToWebGLShader.js +196 -0
  366. package/dist/webgl/shader/CanvasToWebGLShaderList.d.ts +70 -0
  367. package/dist/webgl/shader/CanvasToWebGLShaderList.js +115 -0
  368. package/dist/webgl/shader/GradientLUTGenerator.d.ts +36 -0
  369. package/dist/webgl/shader/GradientLUTGenerator.js +129 -0
  370. package/dist/webgl/shader/WebGLShaderUniform.d.ts +52 -0
  371. package/dist/webgl/shader/WebGLShaderUniform.js +168 -0
  372. package/dist/webgl/shader/fragment/FragmentShaderLibrary.d.ts +18 -0
  373. package/dist/webgl/shader/fragment/FragmentShaderLibrary.js +35 -0
  374. package/dist/webgl/shader/fragment/FragmentShaderSource.d.ts +29 -0
  375. package/dist/webgl/shader/fragment/FragmentShaderSource.js +99 -0
  376. package/dist/webgl/shader/fragment/FragmentShaderSourceBlend.d.ts +67 -0
  377. package/dist/webgl/shader/fragment/FragmentShaderSourceBlend.js +319 -0
  378. package/dist/webgl/shader/fragment/FragmentShaderSourceGradient.d.ts +44 -0
  379. package/dist/webgl/shader/fragment/FragmentShaderSourceGradient.js +114 -0
  380. package/dist/webgl/shader/fragment/FragmentShaderSourceGradientLUT.d.ts +14 -0
  381. package/dist/webgl/shader/fragment/FragmentShaderSourceGradientLUT.js +58 -0
  382. package/dist/webgl/shader/fragment/FragmentShaderSourceTexture.d.ts +12 -0
  383. package/dist/webgl/shader/fragment/FragmentShaderSourceTexture.js +36 -0
  384. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceBlurFilter.d.ts +12 -0
  385. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceBlurFilter.js +42 -0
  386. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.d.ts +11 -0
  387. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceColorMatrixFilter.js +35 -0
  388. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.d.ts +16 -0
  389. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceConvolutionFilter.js +80 -0
  390. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.d.ts +15 -0
  391. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceDisplacementMapFilter.js +106 -0
  392. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceFilter.d.ts +112 -0
  393. package/dist/webgl/shader/fragment/filter/FragmentShaderSourceFilter.js +275 -0
  394. package/dist/webgl/shader/variants/BlendShaderVariantCollection.d.ts +99 -0
  395. package/dist/webgl/shader/variants/BlendShaderVariantCollection.js +242 -0
  396. package/dist/webgl/shader/variants/FilterShaderVariantCollection.d.ts +150 -0
  397. package/dist/webgl/shader/variants/FilterShaderVariantCollection.js +398 -0
  398. package/dist/webgl/shader/variants/GradientLUTShaderVariantCollection.d.ts +49 -0
  399. package/dist/webgl/shader/variants/GradientLUTShaderVariantCollection.js +110 -0
  400. package/dist/webgl/shader/variants/GradientShapeShaderVariantCollection.d.ts +61 -0
  401. package/dist/webgl/shader/variants/GradientShapeShaderVariantCollection.js +199 -0
  402. package/dist/webgl/shader/variants/ShapeShaderVariantCollection.d.ts +117 -0
  403. package/dist/webgl/shader/variants/ShapeShaderVariantCollection.js +430 -0
  404. package/dist/webgl/shader/vertex/VertexShaderLibrary.d.ts +18 -0
  405. package/dist/webgl/shader/vertex/VertexShaderLibrary.js +75 -0
  406. package/dist/webgl/shader/vertex/VertexShaderSource.d.ts +23 -0
  407. package/dist/webgl/shader/vertex/VertexShaderSource.js +92 -0
  408. package/dist/webgl/shader/vertex/VertexShaderSourceFill.d.ts +45 -0
  409. package/dist/webgl/shader/vertex/VertexShaderSourceFill.js +112 -0
  410. package/dist/webgl/shader/vertex/VertexShaderSourceStroke.d.ts +27 -0
  411. package/dist/webgl/shader/vertex/VertexShaderSourceStroke.js +149 -0
  412. package/package.json +28 -25
  413. package/SECURITY.md +0 -3
  414. package/next2d.js +0 -7
@@ -0,0 +1,871 @@
1
+ import { DisplayObject } from "../display/DisplayObject";
2
+ import { VideoEvent } from "../events/VideoEvent";
3
+ import { SoundMixer } from "./SoundMixer";
4
+ import { Rectangle } from "../geom/Rectangle";
5
+ import { $document } from "../../util/Shortcut";
6
+ import { $audioContext, $currentPlayer, $isTouch, $rendererWorker } from "../../util/Util";
7
+ import { $Math, $cancelAnimationFrame, $requestAnimationFrame, $getBoundsObject, $boundsMatrix, $clamp, $multiplicationMatrix, $poolFloat32Array6, $MATRIX_ARRAY_IDENTITY, $OffscreenCanvas, $multiplicationColor, $poolFloat32Array8, $Infinity, $poolBoundsObject, $getFloat32Array6, $getArray, $poolArray } from "../../util/RenderUtil";
8
+ /**
9
+ * サーバーまたはローカルに保存された録画済みビデオファイルを再生する Video オブジェクトです。
10
+ * ビデオストリームを再生するには、attachNetStream() を使用して、ビデオを Video オブジェクトに関連付けます。
11
+ * 次に、addChild() を使用して、Video オブジェクトを表示リストに追加します。
12
+ *
13
+ * A Video object that plays a recorded video file stored on a server or locally.
14
+ * To play a video stream, use attachNetStream() to attach the video to the Video object.
15
+ * Then, add the Video object to the display list using addChild().
16
+ *
17
+ * @class
18
+ * @memberOf next2d.media
19
+ * @extends DisplayObject
20
+ */
21
+ export class Video extends DisplayObject {
22
+ _$smoothing;
23
+ _$loop;
24
+ _$autoPlay;
25
+ _$bounds;
26
+ _$bytesLoaded;
27
+ _$bytesTotal;
28
+ _$timerId;
29
+ _$video;
30
+ _$stop;
31
+ _$volume;
32
+ _$ready;
33
+ _$context;
34
+ /**
35
+ * @param {number} [width = 0]
36
+ * @param {number} [height = 0]
37
+ *
38
+ * @constructor
39
+ * @public
40
+ */
41
+ constructor(width = 0, height = 0) {
42
+ super();
43
+ /**
44
+ * @type {boolean}
45
+ * @default true
46
+ * @private
47
+ */
48
+ this._$smoothing = true;
49
+ /**
50
+ * @type {boolean}
51
+ * @default false
52
+ * @private
53
+ */
54
+ this._$loop = false;
55
+ /**
56
+ * @type {boolean}
57
+ * @default true
58
+ * @private
59
+ */
60
+ this._$autoPlay = true;
61
+ /**
62
+ * @type {object}
63
+ * @private
64
+ */
65
+ this._$bounds = $getBoundsObject(0, width, 0, height);
66
+ /**
67
+ * @type {number}
68
+ * @default 0
69
+ * @private
70
+ */
71
+ this._$bytesLoaded = 0;
72
+ /**
73
+ * @type {number}
74
+ * @default 0
75
+ * @private
76
+ */
77
+ this._$bytesTotal = 0;
78
+ /**
79
+ * @type {number}
80
+ * @default -1
81
+ * @private
82
+ */
83
+ this._$timerId = -1;
84
+ /**
85
+ * @type {HTMLVideoElement}
86
+ * @default null
87
+ * @private
88
+ */
89
+ this._$video = null;
90
+ /**
91
+ * @type {boolean}
92
+ * @default true
93
+ * @private
94
+ */
95
+ this._$stop = true;
96
+ /**
97
+ * @type {boolean}
98
+ * @default false
99
+ * @private
100
+ */
101
+ this._$ready = false;
102
+ /**
103
+ * @type {number}
104
+ * @default 1
105
+ * @private
106
+ */
107
+ this._$volume = 1;
108
+ /**
109
+ * @type {CanvasRenderingContext2D}
110
+ * @default null
111
+ * @private
112
+ */
113
+ this._$context = null;
114
+ }
115
+ /**
116
+ * @description 指定されたクラスのストリングを返します。
117
+ * Returns the string representation of the specified class.
118
+ *
119
+ * @return {string}
120
+ * @default [class Video]
121
+ * @method
122
+ * @static
123
+ */
124
+ static toString() {
125
+ return "[class Video]";
126
+ }
127
+ /**
128
+ * @description 指定されたクラスの空間名を返します。
129
+ * Returns the space name of the specified class.
130
+ *
131
+ * @return {string}
132
+ * @default next2d.media.Video
133
+ * @const
134
+ * @static
135
+ */
136
+ static get namespace() {
137
+ return "next2d.media.Video";
138
+ }
139
+ /**
140
+ * @description 指定されたオブジェクトのストリングを返します。
141
+ * Returns the string representation of the specified object.
142
+ *
143
+ * @return {string}
144
+ * @default [object Video]
145
+ * @method
146
+ * @public
147
+ */
148
+ toString() {
149
+ return "[object Video]";
150
+ }
151
+ /**
152
+ * @description 指定されたオブジェクトの空間名を返します。
153
+ * Returns the space name of the specified object.
154
+ *
155
+ * @return {string}
156
+ * @default next2d.media.Video
157
+ * @const
158
+ * @public
159
+ */
160
+ get namespace() {
161
+ return "next2d.media.Video";
162
+ }
163
+ /**
164
+ * @description 既にアプリケーションにロードされているデータのバイト数です。
165
+ * The number of bytes of data that have been loaded into the application.
166
+ *
167
+ * @member {number}
168
+ * @default 0
169
+ * @readonly
170
+ * @public
171
+ */
172
+ get bytesLoaded() {
173
+ return this._$bytesLoaded;
174
+ }
175
+ /**
176
+ * @description アプリケーションにロードされるファイルの総バイト数。
177
+ * The total size in bytes of the file being loaded into the application.
178
+ *
179
+ * @member {number}
180
+ * @default 0
181
+ * @readonly
182
+ * @public
183
+ */
184
+ get bytesTotal() {
185
+ return this._$bytesTotal;
186
+ }
187
+ /**
188
+ * @description 現在のキーフレーム
189
+ * Current keyframe
190
+ *
191
+ *
192
+ * @member {number}
193
+ * @readonly
194
+ * @public
195
+ */
196
+ get currentTime() {
197
+ return this._$video ? this._$video.currentTime : 0;
198
+ }
199
+ /**
200
+ * @description キーフレーム総数
201
+ * Total number of keyframes
202
+ *
203
+ * @member {number}
204
+ * @readonly
205
+ * @public
206
+ */
207
+ get duration() {
208
+ return this._$video ? this._$video.duration : 0;
209
+ }
210
+ /**
211
+ * @description ビデオをループ生成するかどうかを指定します。
212
+ * Specifies whether to generate a video loop.
213
+ *
214
+ * @member {boolean}
215
+ * @default false
216
+ * @public
217
+ */
218
+ get loop() {
219
+ return this._$loop;
220
+ }
221
+ set loop(loop) {
222
+ this._$loop = !!loop;
223
+ }
224
+ /**
225
+ * @description ビデオの自動再生の設定。
226
+ * Setting up automatic video playback.
227
+ *
228
+ * @member {boolean}
229
+ * @default true
230
+ * @public
231
+ */
232
+ get autoPlay() {
233
+ return this._$autoPlay;
234
+ }
235
+ set autoPlay(auto_play) {
236
+ this._$autoPlay = !!auto_play;
237
+ }
238
+ /**
239
+ * @description ビデオを拡大 / 縮小する際にスムージング(補間)するかどうかを指定します。
240
+ * Specifies whether the video should be smoothed (interpolated)
241
+ * when it is scaled.
242
+ *
243
+ * @member {boolean}
244
+ * @default true
245
+ * @public
246
+ */
247
+ get smoothing() {
248
+ return this._$smoothing;
249
+ }
250
+ set smoothing(smoothing) {
251
+ this._$smoothing = !!smoothing;
252
+ }
253
+ /**
254
+ * @description 映像コンテンツへの URL を指定します。
255
+ * Specifies the URL to the video content.
256
+ *
257
+ * @member {string}
258
+ * @default ""
259
+ * @public
260
+ */
261
+ get src() {
262
+ return this._$video ? this._$video.src : "";
263
+ }
264
+ set src(src) {
265
+ if (!this._$video) {
266
+ this._$video = this._$initializeVideo();
267
+ }
268
+ this._$video.src = src;
269
+ this._$video.load();
270
+ }
271
+ /**
272
+ * @description ビデオストリームの高さをピクセル単位で指定する整数です。
273
+ * An integer specifying the height of the video stream, in pixels.
274
+ *
275
+ * @member {number}
276
+ * @default 320
277
+ * @readonly
278
+ * @public
279
+ */
280
+ get videoHeight() {
281
+ return this._$video ? this._$video.videoHeight : this._$bounds.yMax;
282
+ }
283
+ /**
284
+ * @description ビデオストリームの幅をピクセル単位で指定する整数です。
285
+ * An integer specifying the width of the video stream, in pixels.
286
+ *
287
+ * @member {number}
288
+ * @default 240
289
+ * @readonly
290
+ * @public
291
+ */
292
+ get videoWidth() {
293
+ return this._$video ? this._$video.videoWidth : this._$bounds.xMax;
294
+ }
295
+ /**
296
+ * @description ボリュームです。範囲は 0(無音)~ 1(フルボリューム)です。
297
+ * The volume, ranging from 0 (silent) to 1 (full volume).
298
+ *
299
+ * @member {number}
300
+ * @default 1
301
+ * @public
302
+ */
303
+ get volume() {
304
+ return this._$volume;
305
+ }
306
+ set volume(volume) {
307
+ this._$volume = $clamp($Math.min(SoundMixer.volume, volume), 0, 1, 1);
308
+ if (this._$video) {
309
+ this._$video.volume = this._$volume;
310
+ }
311
+ }
312
+ /**
313
+ * @description Video オブジェクトに現在表示されているイメージ(ビデオストリームではない)をクリアします。
314
+ * Clears the image currently displayed
315
+ * in the Video object (not the video stream).
316
+ *
317
+ * @return {void}
318
+ * @method
319
+ * @public
320
+ */
321
+ clear() {
322
+ if (this._$video) {
323
+ this._$video.pause();
324
+ }
325
+ // reset
326
+ this._$video = null;
327
+ this._$bounds.xMax = 0;
328
+ this._$bounds.yMax = 0;
329
+ this._$doChanged();
330
+ }
331
+ /**
332
+ * @description ビデオストリームの再生を一時停止します。
333
+ * Pauses playback of a video stream.
334
+ *
335
+ * @return {void}
336
+ * @method
337
+ * @public
338
+ */
339
+ pause() {
340
+ if (this._$video && !this._$stop) {
341
+ this._$stop = true;
342
+ this._$video.pause();
343
+ $cancelAnimationFrame(this._$timerId);
344
+ this._$timerId = -1;
345
+ if (this.hasEventListener(VideoEvent.PAUSE)) {
346
+ this.dispatchEvent(new VideoEvent(VideoEvent.PAUSE, false, false, this._$bytesLoaded, this._$bytesTotal));
347
+ }
348
+ const player = $currentPlayer();
349
+ player._$videos.splice(player._$videos.indexOf(this), 1);
350
+ }
351
+ }
352
+ /**
353
+ * @description ローカルディレクトリまたは Web サーバーからメディアファイルを再生します。
354
+ * Plays a media file from a local directory or a web server;
355
+ *
356
+ * @returns {void}
357
+ * @method
358
+ * @public
359
+ */
360
+ play() {
361
+ if (this._$video && this._$stop) {
362
+ this._$stop = false;
363
+ this._$video.volume = $Math.min(this._$volume, SoundMixer.volume);
364
+ this
365
+ ._$video
366
+ .play()
367
+ .then(() => {
368
+ this._$timerId = $requestAnimationFrame(() => {
369
+ this._$update();
370
+ });
371
+ if (this.hasEventListener(VideoEvent.PLAY)) {
372
+ this.dispatchEvent(new VideoEvent(VideoEvent.PLAY, false, false, this._$bytesLoaded, this._$bytesTotal));
373
+ }
374
+ const player = $currentPlayer();
375
+ if (player._$videos.indexOf(this) === -1) {
376
+ player._$videos.push(this);
377
+ }
378
+ this._$ready = true;
379
+ });
380
+ }
381
+ }
382
+ /**
383
+ * @description 指定された位置に最も近いキーフレームをシークします。
384
+ * Seeks the keyframe closest to the specified location.
385
+ *
386
+ * @param {number} offset
387
+ * @return {void}
388
+ * @method
389
+ * @public
390
+ */
391
+ seek(offset) {
392
+ if (this._$video) {
393
+ this._$video.currentTime = offset;
394
+ if (this.hasEventListener(VideoEvent.SEEK)) {
395
+ this.dispatchEvent(new VideoEvent(VideoEvent.SEEK, false, false, this._$bytesLoaded, this._$bytesTotal));
396
+ }
397
+ }
398
+ }
399
+ /**
400
+ * @return {void}
401
+ * @method
402
+ * @private
403
+ */
404
+ _$update() {
405
+ const player = $currentPlayer();
406
+ if (!this.stage || !this._$video) {
407
+ if (this._$video) {
408
+ this._$video.pause();
409
+ }
410
+ $cancelAnimationFrame(this._$timerId);
411
+ this._$timerId = -1;
412
+ player._$videos.splice(player._$videos.indexOf(this), 1);
413
+ return;
414
+ }
415
+ if ($rendererWorker) {
416
+ this._$postProperty();
417
+ }
418
+ // update
419
+ this._$bytesLoaded = this._$video.currentTime;
420
+ if (this._$video.currentTime) {
421
+ if (this.hasEventListener(VideoEvent.PROGRESS)) {
422
+ this.dispatchEvent(new VideoEvent(VideoEvent.PROGRESS, false, false, this._$bytesLoaded, this._$bytesTotal));
423
+ }
424
+ this._$doChanged();
425
+ }
426
+ this._$timerId = $requestAnimationFrame(() => {
427
+ this._$update();
428
+ });
429
+ }
430
+ /**
431
+ * @return {void}
432
+ * @method
433
+ * @private
434
+ */
435
+ _$start() {
436
+ if (!this._$video) {
437
+ return;
438
+ }
439
+ this._$bounds.xMax = this._$video.videoWidth;
440
+ this._$bounds.yMax = this._$video.videoHeight;
441
+ this._$bytesTotal = this._$video.duration;
442
+ const player = $currentPlayer();
443
+ if (this._$autoPlay) {
444
+ this._$stop = false;
445
+ this
446
+ ._$video
447
+ .play()
448
+ .then(() => {
449
+ if (player._$videos.indexOf(this) === -1) {
450
+ player._$videos.push(this);
451
+ }
452
+ if (this.hasEventListener(VideoEvent.PLAY_START)) {
453
+ this.dispatchEvent(new VideoEvent(VideoEvent.PLAY_START, false, false, this._$bytesLoaded, this._$bytesTotal));
454
+ }
455
+ this._$timerId = $requestAnimationFrame(() => {
456
+ this._$update();
457
+ });
458
+ this._$ready = true;
459
+ this._$doChanged();
460
+ });
461
+ }
462
+ this._$createContext();
463
+ }
464
+ /**
465
+ * @return {HTMLVideoElement}
466
+ * @method
467
+ * @private
468
+ */
469
+ _$initializeVideo() {
470
+ const video = $document.createElement("video");
471
+ video.autoplay = false;
472
+ video.crossOrigin = "anonymous";
473
+ if (!$audioContext) {
474
+ video.muted = true;
475
+ }
476
+ if ($isTouch) {
477
+ video.setAttribute("playsinline", "");
478
+ }
479
+ video.addEventListener("canplaythrough", () => {
480
+ this._$start();
481
+ });
482
+ video.addEventListener("ended", () => {
483
+ if (this._$loop) {
484
+ video.currentTime = 0;
485
+ return;
486
+ }
487
+ if (this.hasEventListener(VideoEvent.PLAY_END)) {
488
+ this.dispatchEvent(new VideoEvent(VideoEvent.PLAY_END, false, false, this._$bytesLoaded, this._$bytesTotal));
489
+ }
490
+ $cancelAnimationFrame(this._$timerId);
491
+ this._$timerId = -1;
492
+ });
493
+ return video;
494
+ }
495
+ /**
496
+ * @return {void}
497
+ * @method
498
+ * @private
499
+ */
500
+ _$createContext() {
501
+ if ($rendererWorker) {
502
+ const canvas = new $OffscreenCanvas(this._$bounds.xMax, this._$bounds.yMax);
503
+ this._$context = canvas.getContext("2d");
504
+ }
505
+ }
506
+ /**
507
+ * @param {object} character
508
+ * @return {void}
509
+ * @method
510
+ * @private
511
+ */
512
+ _$buildCharacter(character) {
513
+ if (character.buffer && !character._$buffer) {
514
+ character._$buffer = new Uint8Array(character.buffer);
515
+ character.buffer = null;
516
+ }
517
+ this._$loop = character.loop;
518
+ this._$autoPlay = character.autoPlay;
519
+ this._$bounds.xMin = character.bounds.xMin;
520
+ this._$bounds.yMin = character.bounds.yMin;
521
+ this._$bounds.xMax = character.bounds.xMax;
522
+ this._$bounds.yMax = character.bounds.yMax;
523
+ if (!this._$video) {
524
+ this._$video = this._$initializeVideo();
525
+ }
526
+ this._$video.src = URL.createObjectURL(new Blob([character._$buffer], { "type": "video/mp4" }));
527
+ // setup
528
+ this._$video.volume = $Math.min(character.volume, SoundMixer.volume);
529
+ this._$video.load();
530
+ if ($rendererWorker && this._$stage) {
531
+ this._$createWorkerInstance();
532
+ }
533
+ }
534
+ /**
535
+ * @return {object}
536
+ * @method
537
+ * @private
538
+ */
539
+ _$sync() {
540
+ const character = super._$sync();
541
+ if (character) {
542
+ this._$buildCharacter(character);
543
+ }
544
+ return character;
545
+ }
546
+ /**
547
+ * @param {object} tag
548
+ * @param {DisplayObjectContainer} parent
549
+ * @return {object}
550
+ * @method
551
+ * @private
552
+ */
553
+ _$build(tag, parent) {
554
+ const character = this._$baseBuild(tag, parent);
555
+ this._$buildCharacter(character);
556
+ return character;
557
+ }
558
+ /**
559
+ * @param {CanvasToWebGLContext} context
560
+ * @param {Float32Array} matrix
561
+ * @returns {void}
562
+ * @method
563
+ * @private
564
+ */
565
+ _$clip(context, matrix) {
566
+ const width = this._$bounds.xMax;
567
+ const height = this._$bounds.yMax;
568
+ if (!width || !height) {
569
+ return;
570
+ }
571
+ let multiMatrix = matrix;
572
+ const rawMatrix = this._$transform._$rawMatrix();
573
+ if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
574
+ || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
575
+ || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
576
+ multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
577
+ }
578
+ context.reset();
579
+ context.setTransform(multiMatrix[0], multiMatrix[1], multiMatrix[2], multiMatrix[3], multiMatrix[4], multiMatrix[5]);
580
+ context.beginPath();
581
+ context.moveTo(0, 0);
582
+ context.lineTo(width, 0);
583
+ context.lineTo(width, height);
584
+ context.lineTo(0, height);
585
+ context.lineTo(0, 0);
586
+ context.clip();
587
+ if (multiMatrix !== matrix) {
588
+ $poolFloat32Array6(multiMatrix);
589
+ }
590
+ }
591
+ /**
592
+ * @param {CanvasToWebGLContext} context
593
+ * @param {Float32Array} matrix
594
+ * @param {Float32Array} color_transform
595
+ * @return {void}
596
+ * @method
597
+ * @private
598
+ */
599
+ _$draw(context, matrix, color_transform) {
600
+ if (!this._$visible || !this._$video || !this._$ready) {
601
+ return;
602
+ }
603
+ let multiColor = color_transform;
604
+ const rawColor = this._$transform._$rawColorTransform();
605
+ if (rawColor[0] !== 1 || rawColor[1] !== 1
606
+ || rawColor[2] !== 1 || rawColor[3] !== 1
607
+ || rawColor[4] !== 0 || rawColor[5] !== 0
608
+ || rawColor[6] !== 0 || rawColor[7] !== 0) {
609
+ multiColor = $multiplicationColor(color_transform, rawColor);
610
+ }
611
+ const alpha = $clamp(multiColor[3] + multiColor[7] / 255, 0, 1, 0);
612
+ if (!alpha) {
613
+ if (multiColor !== color_transform) {
614
+ $poolFloat32Array8(multiColor);
615
+ }
616
+ return;
617
+ }
618
+ let multiMatrix = matrix;
619
+ const rawMatrix = this._$transform._$rawMatrix();
620
+ if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
621
+ || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
622
+ || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
623
+ multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
624
+ }
625
+ // default bounds
626
+ const bounds = $boundsMatrix(this._$bounds, multiMatrix);
627
+ const xMax = +bounds.xMax;
628
+ const xMin = +bounds.xMin;
629
+ const yMax = +bounds.yMax;
630
+ const yMin = +bounds.yMin;
631
+ $poolBoundsObject(bounds);
632
+ const width = $Math.ceil($Math.abs(xMax - xMin));
633
+ const height = $Math.ceil($Math.abs(yMax - yMin));
634
+ switch (true) {
635
+ case width === 0:
636
+ case height === 0:
637
+ case width === -$Infinity:
638
+ case height === -$Infinity:
639
+ case width === $Infinity:
640
+ case height === $Infinity:
641
+ return;
642
+ default:
643
+ break;
644
+ }
645
+ // cache current buffer
646
+ const manager = context.frameBuffer;
647
+ const currentAttachment = manager.currentAttachment;
648
+ if (!currentAttachment
649
+ || xMin > currentAttachment.width
650
+ || yMin > currentAttachment.height) {
651
+ return;
652
+ }
653
+ const filters = this._$filters || this.filters;
654
+ if (0 > xMin + width || 0 > yMin + height) {
655
+ if (filters && filters.length && this._$canApply(filters)) {
656
+ const xScale = +$Math.sqrt(multiMatrix[0] * multiMatrix[0]
657
+ + multiMatrix[1] * multiMatrix[1]);
658
+ const yScale = +$Math.sqrt(multiMatrix[2] * multiMatrix[2]
659
+ + multiMatrix[3] * multiMatrix[3]);
660
+ let rect = new Rectangle(0, 0, width, height);
661
+ for (let idx = 0; idx < filters.length; ++idx) {
662
+ // @ts-ignore
663
+ rect = filters[idx]._$generateFilterRect(rect, xScale, yScale);
664
+ }
665
+ if (0 > rect.x + rect.width || 0 > rect.y + rect.height) {
666
+ return;
667
+ }
668
+ }
669
+ else {
670
+ return;
671
+ }
672
+ }
673
+ const blendMode = this._$blendMode || this.blendMode;
674
+ let texture = manager.createTextureFromVideo(this._$video, this._$smoothing);
675
+ if (filters && filters.length
676
+ && this._$canApply(filters)) {
677
+ const xScale = +$Math.sqrt(multiMatrix[0] * multiMatrix[0]
678
+ + multiMatrix[1] * multiMatrix[1]);
679
+ const yScale = +$Math.sqrt(multiMatrix[2] * multiMatrix[2]
680
+ + multiMatrix[3] * multiMatrix[3]);
681
+ if (xScale !== 1 || yScale !== 1) {
682
+ const currentAttachment = manager.currentAttachment;
683
+ // create cache buffer
684
+ const attachment = manager
685
+ .createCacheAttachment(width, height, false);
686
+ context._$bind(attachment);
687
+ const parentMatrix = $getFloat32Array6(xScale, 0, 0, yScale, width / 2, height / 2);
688
+ const baseMatrix = $getFloat32Array6(1, 0, 0, 1, -texture.width / 2, -texture.height / 2);
689
+ const scaleMatrix = $multiplicationMatrix(parentMatrix, baseMatrix);
690
+ $poolFloat32Array6(parentMatrix);
691
+ $poolFloat32Array6(baseMatrix);
692
+ context.reset();
693
+ context.setTransform(scaleMatrix[0], scaleMatrix[1], scaleMatrix[2], scaleMatrix[3], scaleMatrix[4], scaleMatrix[5]);
694
+ context.drawImage(texture, 0, 0, texture.width, texture.height);
695
+ manager.releaseTexture(texture);
696
+ $poolFloat32Array6(scaleMatrix);
697
+ texture = manager.getTextureFromCurrentAttachment();
698
+ // release buffer
699
+ manager.releaseAttachment(attachment, false);
700
+ // end draw and reset current buffer
701
+ context._$bind(currentAttachment);
702
+ }
703
+ // draw filter
704
+ texture = this._$drawFilter(context, texture, multiMatrix, filters, width, height);
705
+ // reset
706
+ context.reset();
707
+ // draw
708
+ context.globalAlpha = alpha;
709
+ context.imageSmoothingEnabled = this._$smoothing;
710
+ context.globalCompositeOperation = blendMode;
711
+ // size
712
+ const bounds = $boundsMatrix(this._$bounds, multiMatrix);
713
+ context.setTransform(1, 0, 0, 1, bounds.xMin - texture._$offsetX, bounds.yMin - texture._$offsetY);
714
+ context.drawImage(texture, 0, 0, texture.width, texture.height, multiColor);
715
+ // pool
716
+ $poolBoundsObject(bounds);
717
+ }
718
+ else {
719
+ // reset
720
+ context.reset();
721
+ context.setTransform(multiMatrix[0], multiMatrix[1], multiMatrix[2], multiMatrix[3], multiMatrix[4], multiMatrix[5]);
722
+ // draw
723
+ context.globalAlpha = alpha;
724
+ context.imageSmoothingEnabled = this._$smoothing;
725
+ context.globalCompositeOperation = blendMode;
726
+ context.drawImage(texture, 0, 0, texture.width, texture.height, multiColor);
727
+ manager.releaseTexture(texture);
728
+ }
729
+ if (multiMatrix !== matrix) {
730
+ $poolFloat32Array6(multiMatrix);
731
+ }
732
+ if (multiColor !== color_transform) {
733
+ $poolFloat32Array8(multiColor);
734
+ }
735
+ }
736
+ /**
737
+ * @param {CanvasRenderingContext2D} context
738
+ * @param {Float32Array} matrix
739
+ * @param {object} options
740
+ * @return {boolean}
741
+ * @method
742
+ * @private
743
+ */
744
+ _$mouseHit(context, matrix, options) {
745
+ if (!this._$visible) {
746
+ return false;
747
+ }
748
+ return this._$hit(context, matrix, options);
749
+ }
750
+ /**
751
+ * @param {CanvasRenderingContext2D} context
752
+ * @param {array} matrix
753
+ * @param {object} options
754
+ * @return {boolean}
755
+ * @method
756
+ * @private
757
+ */
758
+ _$hit(context, matrix, options) {
759
+ let multiMatrix = matrix;
760
+ const rawMatrix = this._$transform._$rawMatrix();
761
+ if (rawMatrix !== $MATRIX_ARRAY_IDENTITY) {
762
+ multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
763
+ }
764
+ const baseBounds = this._$getBounds(null);
765
+ const bounds = $boundsMatrix(baseBounds, multiMatrix);
766
+ const xMax = +bounds.xMax;
767
+ const xMin = +bounds.xMin;
768
+ const yMax = +bounds.yMax;
769
+ const yMin = +bounds.yMin;
770
+ $poolBoundsObject(bounds);
771
+ $poolBoundsObject(baseBounds);
772
+ const width = $Math.ceil($Math.abs(xMax - xMin));
773
+ const height = $Math.ceil($Math.abs(yMax - yMin));
774
+ context.setTransform(1, 0, 0, 1, xMin, yMin);
775
+ context.beginPath();
776
+ context.moveTo(0, 0);
777
+ context.lineTo(width, 0);
778
+ context.lineTo(width, height);
779
+ context.lineTo(0, height);
780
+ context.lineTo(0, 0);
781
+ if (multiMatrix !== matrix) {
782
+ $poolFloat32Array6(multiMatrix);
783
+ }
784
+ return context.isPointInPath(options.x, options.y);
785
+ }
786
+ /**
787
+ * @param {Float32Array} [matrix=null]
788
+ * @return {object}
789
+ * @method
790
+ * @private
791
+ */
792
+ _$getBounds(matrix = null) {
793
+ if (matrix) {
794
+ let multiMatrix = matrix;
795
+ const rawMatrix = this._$transform._$rawMatrix();
796
+ if (rawMatrix !== $MATRIX_ARRAY_IDENTITY) {
797
+ multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
798
+ }
799
+ const bounds = $boundsMatrix(this._$bounds, multiMatrix);
800
+ if (multiMatrix !== matrix) {
801
+ $poolFloat32Array6(multiMatrix);
802
+ }
803
+ return bounds;
804
+ }
805
+ return $getBoundsObject(this._$bounds.xMin, this._$bounds.xMax, this._$bounds.yMin, this._$bounds.yMax);
806
+ }
807
+ /**
808
+ * @return {void}
809
+ * @method
810
+ * @private
811
+ */
812
+ _$createWorkerInstance() {
813
+ if (!$rendererWorker || this._$created) {
814
+ return;
815
+ }
816
+ this._$created = true;
817
+ const message = {
818
+ "command": "createVideo",
819
+ "instanceId": this._$instanceId,
820
+ "parentId": this._$parent ? this._$parent._$instanceId : -1,
821
+ "smoothing": this._$smoothing,
822
+ "xMin": this._$bounds.xMin,
823
+ "yMin": this._$bounds.yMin,
824
+ "xMax": this._$bounds.xMax,
825
+ "yMax": this._$bounds.yMax
826
+ };
827
+ if (this._$characterId > -1) {
828
+ message.characterId = this._$characterId;
829
+ }
830
+ if (this._$loaderInfo) {
831
+ message.loaderInfoId = this._$loaderInfo._$id;
832
+ }
833
+ if (this._$scale9Grid) {
834
+ message.grid = {
835
+ "x": this._$scale9Grid.x,
836
+ "y": this._$scale9Grid.y,
837
+ "w": this._$scale9Grid.width,
838
+ "h": this._$scale9Grid.height
839
+ };
840
+ }
841
+ $rendererWorker.postMessage(message);
842
+ }
843
+ /**
844
+ * @return {void}
845
+ * @method
846
+ * @private
847
+ */
848
+ _$postProperty() {
849
+ if (!$rendererWorker) {
850
+ return;
851
+ }
852
+ const message = this._$createMessage();
853
+ message.smoothing = this._$smoothing;
854
+ const options = $getArray();
855
+ const context = this._$context;
856
+ if (context && this._$video) {
857
+ message.xMin = this._$bounds.xMin;
858
+ message.yMin = this._$bounds.yMin;
859
+ message.xMax = this._$bounds.xMax;
860
+ message.yMax = this._$bounds.yMax;
861
+ context.drawImage(this._$video, 0, 0);
862
+ const imageBitmap = context.canvas.transferToImageBitmap();
863
+ message.imageBitmap = imageBitmap;
864
+ options.push(imageBitmap);
865
+ }
866
+ $rendererWorker.postMessage(message, options);
867
+ $poolArray(options);
868
+ this._$posted = true;
869
+ this._$updated = false;
870
+ }
871
+ }