@next2d/display 1.18.12 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/package.json +17 -28
  2. package/src/BitmapData/service/BitmapDataCanvasToBufferService.d.ts +10 -0
  3. package/src/BitmapData/service/BitmapDataCanvasToBufferService.js +22 -0
  4. package/src/BitmapData/service/BitmapDataImageToBufferService.d.ts +10 -0
  5. package/src/BitmapData/service/BitmapDataImageToBufferService.js +21 -0
  6. package/src/BitmapData.d.ts +71 -0
  7. package/src/BitmapData.js +133 -0
  8. package/{dist → src}/BlendMode.d.ts +4 -50
  9. package/{dist → src}/BlendMode.js +4 -58
  10. package/src/DisplayObject/service/DisplayObjectApplyChangesService.d.ts +11 -0
  11. package/src/DisplayObject/service/DisplayObjectApplyChangesService.js +16 -0
  12. package/src/DisplayObject/service/DisplayObjectBaseBuildService.d.ts +16 -0
  13. package/src/DisplayObject/service/DisplayObjectBaseBuildService.js +31 -0
  14. package/src/DisplayObject/service/DisplayObjectBlendToNumberService.d.ts +11 -0
  15. package/src/DisplayObject/service/DisplayObjectBlendToNumberService.js +45 -0
  16. package/src/DisplayObject/service/DisplayObjectBuildFilterService.d.ts +12 -0
  17. package/src/DisplayObject/service/DisplayObjectBuildFilterService.js +53 -0
  18. package/src/DisplayObject/service/DisplayObjectCalcBoundsMatrixService.d.ts +14 -0
  19. package/src/DisplayObject/service/DisplayObjectCalcBoundsMatrixService.js +31 -0
  20. package/src/DisplayObject/service/DisplayObjectDispatchAddedEventService.d.ts +11 -0
  21. package/src/DisplayObject/service/DisplayObjectDispatchAddedEventService.js +19 -0
  22. package/src/DisplayObject/service/DisplayObjectDispatchAddedToStageEventService.d.ts +11 -0
  23. package/src/DisplayObject/service/DisplayObjectDispatchAddedToStageEventService.js +21 -0
  24. package/src/DisplayObject/service/DisplayObjectDispatchRemovedEventService.d.ts +11 -0
  25. package/src/DisplayObject/service/DisplayObjectDispatchRemovedEventService.js +19 -0
  26. package/src/DisplayObject/service/DisplayObjectDispatchRemovedToStageEventService.d.ts +11 -0
  27. package/src/DisplayObject/service/DisplayObjectDispatchRemovedToStageEventService.js +27 -0
  28. package/src/DisplayObject/service/DisplayObjectGenerateHashService.d.ts +10 -0
  29. package/src/DisplayObject/service/DisplayObjectGenerateHashService.js +24 -0
  30. package/src/DisplayObject/service/DisplayObjectGetPlaceObjectService.d.ts +12 -0
  31. package/src/DisplayObject/service/DisplayObjectGetPlaceObjectService.js +41 -0
  32. package/src/DisplayObject/service/DisplayObjectGlobalToLocalService.d.ts +13 -0
  33. package/src/DisplayObject/service/DisplayObjectGlobalToLocalService.js +18 -0
  34. package/src/DisplayObject/service/DisplayObjectLocalToGlobalService.d.ts +13 -0
  35. package/src/DisplayObject/service/DisplayObjectLocalToGlobalService.js +17 -0
  36. package/src/DisplayObject/service/DisplayObjectRemoveService.d.ts +11 -0
  37. package/src/DisplayObject/service/DisplayObjectRemoveService.js +16 -0
  38. package/src/DisplayObject/usecase/DisplayObjectConcatenatedMatrixUseCase.d.ts +12 -0
  39. package/src/DisplayObject/usecase/DisplayObjectConcatenatedMatrixUseCase.js +25 -0
  40. package/src/DisplayObject/usecase/DisplayObjectGetAlphaUseCase.d.ts +11 -0
  41. package/src/DisplayObject/usecase/DisplayObjectGetAlphaUseCase.js +24 -0
  42. package/src/DisplayObject/usecase/DisplayObjectGetBlendModeUseCase.d.ts +12 -0
  43. package/src/DisplayObject/usecase/DisplayObjectGetBlendModeUseCase.js +19 -0
  44. package/src/DisplayObject/usecase/DisplayObjectGetBoundsUseCase.d.ts +13 -0
  45. package/src/DisplayObject/usecase/DisplayObjectGetBoundsUseCase.js +37 -0
  46. package/src/DisplayObject/usecase/DisplayObjectGetCalcBoundsUseCase.d.ts +11 -0
  47. package/src/DisplayObject/usecase/DisplayObjectGetCalcBoundsUseCase.js +28 -0
  48. package/src/DisplayObject/usecase/DisplayObjectGetColorTransformUseCase.d.ts +12 -0
  49. package/src/DisplayObject/usecase/DisplayObjectGetColorTransformUseCase.js +17 -0
  50. package/src/DisplayObject/usecase/DisplayObjectGetFiltersUseCase.d.ts +12 -0
  51. package/src/DisplayObject/usecase/DisplayObjectGetFiltersUseCase.js +25 -0
  52. package/src/DisplayObject/usecase/DisplayObjectGetHeightUseCase.d.ts +11 -0
  53. package/src/DisplayObject/usecase/DisplayObjectGetHeightUseCase.js +24 -0
  54. package/src/DisplayObject/usecase/DisplayObjectGetMatrixUseCase.d.ts +12 -0
  55. package/src/DisplayObject/usecase/DisplayObjectGetMatrixUseCase.js +17 -0
  56. package/src/DisplayObject/usecase/DisplayObjectGetRawBoundsUseCase.d.ts +11 -0
  57. package/src/DisplayObject/usecase/DisplayObjectGetRawBoundsUseCase.js +28 -0
  58. package/src/DisplayObject/usecase/DisplayObjectGetRawColorTransformUseCase.d.ts +11 -0
  59. package/src/DisplayObject/usecase/DisplayObjectGetRawColorTransformUseCase.js +25 -0
  60. package/src/DisplayObject/usecase/DisplayObjectGetRawMatrixUseCase.d.ts +12 -0
  61. package/src/DisplayObject/usecase/DisplayObjectGetRawMatrixUseCase.js +26 -0
  62. package/src/DisplayObject/usecase/DisplayObjectGetRotationUseCase.d.ts +11 -0
  63. package/src/DisplayObject/usecase/DisplayObjectGetRotationUseCase.js +23 -0
  64. package/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.d.ts +11 -0
  65. package/src/DisplayObject/usecase/DisplayObjectGetScaleXUseCase.js +29 -0
  66. package/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.d.ts +11 -0
  67. package/src/DisplayObject/usecase/DisplayObjectGetScaleYUseCase.js +29 -0
  68. package/src/DisplayObject/usecase/DisplayObjectGetWidthUseCase.d.ts +11 -0
  69. package/src/DisplayObject/usecase/DisplayObjectGetWidthUseCase.js +24 -0
  70. package/src/DisplayObject/usecase/DisplayObjectGetXUseCase.d.ts +11 -0
  71. package/src/DisplayObject/usecase/DisplayObjectGetXUseCase.js +16 -0
  72. package/src/DisplayObject/usecase/DisplayObjectGetYUseCase.d.ts +11 -0
  73. package/src/DisplayObject/usecase/DisplayObjectGetYUseCase.js +16 -0
  74. package/src/DisplayObject/usecase/DisplayObjectHitTestObjectUseCase.d.ts +10 -0
  75. package/src/DisplayObject/usecase/DisplayObjectHitTestObjectUseCase.js +35 -0
  76. package/src/DisplayObject/usecase/DisplayObjectHitTestPointUseCase.d.ts +14 -0
  77. package/src/DisplayObject/usecase/DisplayObjectHitTestPointUseCase.js +69 -0
  78. package/src/DisplayObject/usecase/DisplayObjectIsMaskReflectedInDisplayUseCase.d.ts +16 -0
  79. package/src/DisplayObject/usecase/DisplayObjectIsMaskReflectedInDisplayUseCase.js +59 -0
  80. package/src/DisplayObject/usecase/DisplayObjectSetAlphaUseCase.d.ts +12 -0
  81. package/src/DisplayObject/usecase/DisplayObjectSetAlphaUseCase.js +32 -0
  82. package/src/DisplayObject/usecase/DisplayObjectSetBlendModeUseCase.d.ts +13 -0
  83. package/src/DisplayObject/usecase/DisplayObjectSetBlendModeUseCase.js +18 -0
  84. package/src/DisplayObject/usecase/DisplayObjectSetFiltersUseCase.d.ts +13 -0
  85. package/src/DisplayObject/usecase/DisplayObjectSetFiltersUseCase.js +15 -0
  86. package/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.d.ts +12 -0
  87. package/src/DisplayObject/usecase/DisplayObjectSetHeightUseCase.js +30 -0
  88. package/src/DisplayObject/usecase/DisplayObjectSetRotationUseCase.d.ts +12 -0
  89. package/src/DisplayObject/usecase/DisplayObjectSetRotationUseCase.js +63 -0
  90. package/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.d.ts +12 -0
  91. package/src/DisplayObject/usecase/DisplayObjectSetScaleXUseCase.js +48 -0
  92. package/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.d.ts +12 -0
  93. package/src/DisplayObject/usecase/DisplayObjectSetScaleYUseCase.js +48 -0
  94. package/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.d.ts +12 -0
  95. package/src/DisplayObject/usecase/DisplayObjectSetWidthUseCase.js +30 -0
  96. package/src/DisplayObject/usecase/DisplayObjectSetXUseCase.d.ts +12 -0
  97. package/src/DisplayObject/usecase/DisplayObjectSetXUseCase.js +27 -0
  98. package/src/DisplayObject/usecase/DisplayObjectSetYUseCase.d.ts +12 -0
  99. package/src/DisplayObject/usecase/DisplayObjectSetYUseCase.js +27 -0
  100. package/src/DisplayObject.d.ts +706 -0
  101. package/src/DisplayObject.js +1094 -0
  102. package/src/DisplayObjectContainer/service/DisplayObjectContainerAddedToStageService.d.ts +11 -0
  103. package/src/DisplayObjectContainer/service/DisplayObjectContainerAddedToStageService.js +24 -0
  104. package/src/DisplayObjectContainer/service/DisplayObjectContainerAssignStageAndRootService.d.ts +11 -0
  105. package/src/DisplayObjectContainer/service/DisplayObjectContainerAssignStageAndRootService.js +26 -0
  106. package/src/DisplayObjectContainer/service/DisplayObjectContainerContainsService.d.ts +13 -0
  107. package/src/DisplayObjectContainer/service/DisplayObjectContainerContainsService.js +32 -0
  108. package/src/DisplayObjectContainer/service/DisplayObjectContainerGetChildAtService.d.ts +13 -0
  109. package/src/DisplayObjectContainer/service/DisplayObjectContainerGetChildAtService.js +14 -0
  110. package/src/DisplayObjectContainer/service/DisplayObjectContainerGetChildByNameService.d.ts +13 -0
  111. package/src/DisplayObjectContainer/service/DisplayObjectContainerGetChildByNameService.js +24 -0
  112. package/src/DisplayObjectContainer/service/DisplayObjectContainerRemovedToStageService.d.ts +12 -0
  113. package/src/DisplayObjectContainer/service/DisplayObjectContainerRemovedToStageService.js +24 -0
  114. package/src/DisplayObjectContainer/service/DisplayObjectContainerUnAssignStageAndRootService.d.ts +11 -0
  115. package/src/DisplayObjectContainer/service/DisplayObjectContainerUnAssignStageAndRootService.js +29 -0
  116. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerAddChildUseCase.d.ts +13 -0
  117. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerAddChildUseCase.js +53 -0
  118. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerAdvanceFrameUseCase.d.ts +11 -0
  119. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerAdvanceFrameUseCase.js +39 -0
  120. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerCalcBoundsMatrixUseCase.d.ts +11 -0
  121. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerCalcBoundsMatrixUseCase.js +62 -0
  122. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerGenerateClipQueueUseCase.d.ts +13 -0
  123. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerGenerateClipQueueUseCase.js +49 -0
  124. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerGenerateRenderQueueUseCase.d.ts +18 -0
  125. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerGenerateRenderQueueUseCase.js +163 -0
  126. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerMouseHitUseCase.d.ts +17 -0
  127. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerMouseHitUseCase.js +206 -0
  128. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerPrepareUseCase.d.ts +11 -0
  129. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerPrepareUseCase.js +32 -0
  130. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRawBoundsMatrixUseCase.d.ts +12 -0
  131. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRawBoundsMatrixUseCase.js +62 -0
  132. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildAtUseCase.d.ts +12 -0
  133. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildAtUseCase.js +19 -0
  134. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildUseCase.d.ts +13 -0
  135. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildUseCase.js +66 -0
  136. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildrenUseCase.d.ts +12 -0
  137. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerRemoveChildrenUseCase.js +25 -0
  138. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSetChildIndexUseCase.d.ts +14 -0
  139. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSetChildIndexUseCase.js +22 -0
  140. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSwapChildrenAtUseCase.d.ts +13 -0
  141. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSwapChildrenAtUseCase.js +23 -0
  142. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSwapChildrenUseCase.d.ts +14 -0
  143. package/src/DisplayObjectContainer/usecase/DisplayObjectContainerSwapChildrenUseCase.js +23 -0
  144. package/src/DisplayObjectContainer.d.ts +229 -0
  145. package/src/DisplayObjectContainer.js +317 -0
  146. package/src/DisplayObjectUtil.d.ts +288 -0
  147. package/src/DisplayObjectUtil.js +465 -0
  148. package/src/FrameLabel.d.ts +45 -0
  149. package/src/FrameLabel.js +59 -0
  150. package/src/Graphics/service/GraphicsCalcFillBoundsService.d.ts +13 -0
  151. package/src/Graphics/service/GraphicsCalcFillBoundsService.js +17 -0
  152. package/src/Graphics/service/GraphicsCalcLineBoundsService.d.ts +17 -0
  153. package/src/Graphics/service/GraphicsCalcLineBoundsService.js +58 -0
  154. package/src/Graphics/service/GraphicsDrawEllipseService.d.ts +15 -0
  155. package/src/Graphics/service/GraphicsDrawEllipseService.js +36 -0
  156. package/src/Graphics/service/GraphicsDrawRectService.d.ts +15 -0
  157. package/src/Graphics/service/GraphicsDrawRectService.js +28 -0
  158. package/src/Graphics/service/GraphicsDrawRoundRectService.d.ts +17 -0
  159. package/src/Graphics/service/GraphicsDrawRoundRectService.js +48 -0
  160. package/src/Graphics/service/GraphicsHitTestService.d.ts +13 -0
  161. package/src/Graphics/service/GraphicsHitTestService.js +73 -0
  162. package/src/Graphics/service/GraphicsMargePathService.d.ts +15 -0
  163. package/src/Graphics/service/GraphicsMargePathService.js +23 -0
  164. package/src/Graphics/service/GraphicsToNumberArrayService.d.ts +10 -0
  165. package/src/Graphics/service/GraphicsToNumberArrayService.js +242 -0
  166. package/src/Graphics/usecase/GraphicsCalcBoundsUseCase.d.ts +17 -0
  167. package/src/Graphics/usecase/GraphicsCalcBoundsUseCase.js +28 -0
  168. package/{dist → src}/Graphics.d.ts +240 -217
  169. package/src/Graphics.js +1224 -0
  170. package/{dist → src}/GraphicsBitmapFill.d.ts +4 -5
  171. package/{dist → src}/GraphicsBitmapFill.js +29 -6
  172. package/{dist → src}/GraphicsGradientFill.d.ts +12 -13
  173. package/{dist → src}/GraphicsGradientFill.js +68 -19
  174. package/src/InteractiveObject.d.ts +37 -0
  175. package/src/InteractiveObject.js +51 -0
  176. package/src/Loader/service/LoaderBuildService.d.ts +13 -0
  177. package/src/Loader/service/LoaderBuildService.js +46 -0
  178. package/src/Loader/service/LoaderLoadStartEventService.d.ts +12 -0
  179. package/src/Loader/service/LoaderLoadStartEventService.js +19 -0
  180. package/src/Loader/service/LoaderProgressEventService.d.ts +12 -0
  181. package/src/Loader/service/LoaderProgressEventService.js +16 -0
  182. package/src/Loader/usecase/LoaderLoadEndEventUseCase.d.ts +12 -0
  183. package/src/Loader/usecase/LoaderLoadEndEventUseCase.js +39 -0
  184. package/src/Loader/usecase/LoaderLoadJsonUseCase.d.ts +14 -0
  185. package/src/Loader/usecase/LoaderLoadJsonUseCase.js +33 -0
  186. package/src/Loader/usecase/LoaderLoadUseCase.d.ts +14 -0
  187. package/src/Loader/usecase/LoaderLoadUseCase.js +39 -0
  188. package/src/Loader/worker/ZlibInflateWorker.d.ts +2 -0
  189. package/src/Loader/worker/ZlibInflateWorker.js +20 -0
  190. package/src/Loader.d.ts +82 -0
  191. package/src/Loader.js +104 -0
  192. package/src/LoaderInfo.d.ts +68 -0
  193. package/src/LoaderInfo.js +96 -0
  194. package/src/LoopConfig.d.ts +61 -0
  195. package/src/LoopConfig.js +86 -0
  196. package/src/LoopType.d.ts +59 -0
  197. package/src/LoopType.js +69 -0
  198. package/src/MovieClip/service/MovieClipAddActionsService.d.ts +12 -0
  199. package/src/MovieClip/service/MovieClipAddActionsService.js +27 -0
  200. package/src/MovieClip/service/MovieClipAddFrameLabelService.d.ts +13 -0
  201. package/src/MovieClip/service/MovieClipAddFrameLabelService.js +16 -0
  202. package/src/MovieClip/service/MovieClipAddLabelsService.d.ts +13 -0
  203. package/src/MovieClip/service/MovieClipAddLabelsService.js +20 -0
  204. package/src/MovieClip/service/MovieClipBuildSoundsService.d.ts +15 -0
  205. package/src/MovieClip/service/MovieClipBuildSoundsService.js +47 -0
  206. package/src/MovieClip/service/MovieClipCurrentFrameLabelService.d.ts +12 -0
  207. package/src/MovieClip/service/MovieClipCurrentFrameLabelService.js +19 -0
  208. package/src/MovieClip/service/MovieClipCurrentLabelsService.d.ts +12 -0
  209. package/src/MovieClip/service/MovieClipCurrentLabelsService.js +14 -0
  210. package/src/MovieClip/service/MovieClipDispatchFrameLabelEventService.d.ts +13 -0
  211. package/src/MovieClip/service/MovieClipDispatchFrameLabelEventService.js +24 -0
  212. package/src/MovieClip/service/MovieClipGetChildrenService.d.ts +13 -0
  213. package/src/MovieClip/service/MovieClipGetChildrenService.js +133 -0
  214. package/src/MovieClip/service/MovieClipGetFrameForLabelService.d.ts +12 -0
  215. package/src/MovieClip/service/MovieClipGetFrameForLabelService.js +22 -0
  216. package/src/MovieClip/service/MovieClipSetActionService.d.ts +12 -0
  217. package/src/MovieClip/service/MovieClipSetActionService.js +21 -0
  218. package/src/MovieClip/service/MovieClipSetSoundsService.d.ts +13 -0
  219. package/src/MovieClip/service/MovieClipSetSoundsService.js +21 -0
  220. package/src/MovieClip/usecase/MovieClipAdvanceFrameUseCase.d.ts +11 -0
  221. package/src/MovieClip/usecase/MovieClipAdvanceFrameUseCase.js +36 -0
  222. package/src/MovieClip/usecase/MovieClipBuildDictionaryCharacterUseCase.d.ts +17 -0
  223. package/src/MovieClip/usecase/MovieClipBuildDictionaryCharacterUseCase.js +51 -0
  224. package/src/MovieClip/usecase/MovieClipBuildFromCharacterUseCase.d.ts +12 -0
  225. package/src/MovieClip/usecase/MovieClipBuildFromCharacterUseCase.js +33 -0
  226. package/src/MovieClip/usecase/MovieClipGoToFrameUseCase.d.ts +12 -0
  227. package/src/MovieClip/usecase/MovieClipGoToFrameUseCase.js +58 -0
  228. package/src/MovieClip/usecase/MovieClipGotoAndPlayUseCase.d.ts +12 -0
  229. package/src/MovieClip/usecase/MovieClipGotoAndPlayUseCase.js +15 -0
  230. package/src/MovieClip/usecase/MovieClipGotoAndStopUseCase.d.ts +12 -0
  231. package/src/MovieClip/usecase/MovieClipGotoAndStopUseCase.js +16 -0
  232. package/src/MovieClip/usecase/MovieClipNextFrameUseCase.d.ts +11 -0
  233. package/src/MovieClip/usecase/MovieClipNextFrameUseCase.js +17 -0
  234. package/src/MovieClip/usecase/MovieClipPrepareActionUseCase.d.ts +11 -0
  235. package/src/MovieClip/usecase/MovieClipPrepareActionUseCase.js +21 -0
  236. package/src/MovieClip/usecase/MovieClipPrepareSoundUseCase.d.ts +11 -0
  237. package/src/MovieClip/usecase/MovieClipPrepareSoundUseCase.js +18 -0
  238. package/src/MovieClip/usecase/MovieClipPrevFrameUseCase.d.ts +11 -0
  239. package/src/MovieClip/usecase/MovieClipPrevFrameUseCase.js +17 -0
  240. package/{dist → src}/MovieClip.d.ts +128 -167
  241. package/src/MovieClip.js +409 -0
  242. package/src/Shape/service/ShapeGetRawBoundsService.d.ts +10 -0
  243. package/src/Shape/service/ShapeGetRawBoundsService.js +13 -0
  244. package/src/Shape/usecase/ShapeBuildFromCharacterUseCase.d.ts +13 -0
  245. package/src/Shape/usecase/ShapeBuildFromCharacterUseCase.js +121 -0
  246. package/src/Shape/usecase/ShapeCalcBoundsMatrixUseCase.d.ts +12 -0
  247. package/src/Shape/usecase/ShapeCalcBoundsMatrixUseCase.js +30 -0
  248. package/src/Shape/usecase/ShapeClearBitmapBufferUseCase.d.ts +11 -0
  249. package/src/Shape/usecase/ShapeClearBitmapBufferUseCase.js +24 -0
  250. package/src/Shape/usecase/ShapeGenerateClipQueueUseCase.d.ts +12 -0
  251. package/src/Shape/usecase/ShapeGenerateClipQueueUseCase.js +30 -0
  252. package/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.d.ts +17 -0
  253. package/src/Shape/usecase/ShapeGenerateRenderQueueUseCase.js +241 -0
  254. package/src/Shape/usecase/ShapeHitTestUseCase.d.ts +15 -0
  255. package/src/Shape/usecase/ShapeHitTestUseCase.js +34 -0
  256. package/src/Shape/usecase/ShapeLoadSrcUseCase.d.ts +12 -0
  257. package/src/Shape/usecase/ShapeLoadSrcUseCase.js +32 -0
  258. package/src/Shape/usecase/ShapeSetBitmapBufferUseCase.d.ts +14 -0
  259. package/src/Shape/usecase/ShapeSetBitmapBufferUseCase.js +22 -0
  260. package/src/Shape.d.ts +153 -0
  261. package/src/Shape.js +235 -0
  262. package/src/Sprite/service/SpriteStartDragService.d.ts +14 -0
  263. package/src/Sprite/service/SpriteStartDragService.js +22 -0
  264. package/src/Sprite/service/SpriteStopDragService.d.ts +11 -0
  265. package/src/Sprite/service/SpriteStopDragService.js +17 -0
  266. package/src/Sprite.d.ts +126 -0
  267. package/src/Sprite.js +192 -0
  268. package/src/Stage/service/StageExecuteFrameActionsService.d.ts +9 -0
  269. package/src/Stage/service/StageExecuteFrameActionsService.js +34 -0
  270. package/src/Stage/service/StageExecuteFrameSoundsService.d.ts +9 -0
  271. package/src/Stage/service/StageExecuteFrameSoundsService.js +35 -0
  272. package/src/Stage/usecase/StageGenerateRenderQueueUseCase.d.ts +18 -0
  273. package/src/Stage/usecase/StageGenerateRenderQueueUseCase.js +42 -0
  274. package/src/Stage/usecase/StageReadyUseCase.d.ts +11 -0
  275. package/src/Stage/usecase/StageReadyUseCase.js +20 -0
  276. package/src/Stage/usecase/StageTickerUseCase.d.ts +9 -0
  277. package/src/Stage/usecase/StageTickerUseCase.js +20 -0
  278. package/src/Stage.d.ts +161 -0
  279. package/src/Stage.js +240 -0
  280. package/src/TextField/service/TextFieldGetRawBoundsService.d.ts +10 -0
  281. package/src/TextField/service/TextFieldGetRawBoundsService.js +12 -0
  282. package/src/TextField/usecase/TextFieldCalcBoundsMatrixUseCase.d.ts +12 -0
  283. package/src/TextField/usecase/TextFieldCalcBoundsMatrixUseCase.js +30 -0
  284. package/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.d.ts +17 -0
  285. package/src/TextField/usecase/TextFieldGenerateRenderQueueUseCase.js +200 -0
  286. package/src/TextField/usecase/TextFieldHitTestUseCase.d.ts +15 -0
  287. package/src/TextField/usecase/TextFieldHitTestUseCase.js +36 -0
  288. package/src/Video/service/VideoGetRawBoundsService.d.ts +11 -0
  289. package/src/Video/service/VideoGetRawBoundsService.js +13 -0
  290. package/src/Video/usecase/VideoCalcBoundsMatrixUseCase.d.ts +12 -0
  291. package/src/Video/usecase/VideoCalcBoundsMatrixUseCase.js +30 -0
  292. package/src/Video/usecase/VideoGenerateRenderQueueUseCase.d.ts +18 -0
  293. package/src/Video/usecase/VideoGenerateRenderQueueUseCase.js +177 -0
  294. package/src/Video/usecase/VideoHitTestUseCase.d.ts +15 -0
  295. package/src/Video/usecase/VideoHitTestUseCase.js +37 -0
  296. package/{dist → src}/index.d.ts +0 -3
  297. package/{dist → src}/index.js +0 -3
  298. package/src/interface/IAjaxEvent.d.ts +5 -0
  299. package/src/interface/IAjaxEvent.js +1 -0
  300. package/src/interface/IAjaxOption.d.ts +13 -0
  301. package/src/interface/IAjaxOption.js +1 -0
  302. package/src/interface/IAnimationToolData.d.ts +8 -0
  303. package/src/interface/IAnimationToolData.js +1 -0
  304. package/src/interface/IAnimationToolDataZlib.d.ts +4 -0
  305. package/src/interface/IAnimationToolDataZlib.js +1 -0
  306. package/src/interface/IBlendMode.d.ts +1 -0
  307. package/src/interface/IBlendMode.js +1 -0
  308. package/src/interface/IBounds.d.ts +6 -0
  309. package/src/interface/IBounds.js +1 -0
  310. package/src/interface/ICapsStyle.d.ts +1 -0
  311. package/src/interface/ICapsStyle.js +1 -0
  312. package/src/interface/ICharacter.d.ts +5 -0
  313. package/src/interface/ICharacter.js +1 -0
  314. package/src/interface/IColorStop.d.ts +7 -0
  315. package/src/interface/IColorStop.js +1 -0
  316. package/src/interface/IDictionaryTag.d.ts +8 -0
  317. package/src/interface/IDictionaryTag.js +1 -0
  318. package/src/interface/IDisplayObject.d.ts +2 -0
  319. package/src/interface/IDisplayObject.js +1 -0
  320. package/src/interface/IFilterArray.d.ts +2 -0
  321. package/src/interface/IFilterArray.js +1 -0
  322. package/src/interface/IGradientType.d.ts +1 -0
  323. package/src/interface/IGradientType.js +1 -0
  324. package/src/interface/IGrid.d.ts +6 -0
  325. package/src/interface/IGrid.js +1 -0
  326. package/src/interface/IInterpolationMethod.d.ts +1 -0
  327. package/src/interface/IInterpolationMethod.js +1 -0
  328. package/src/interface/IJointStyle.d.ts +1 -0
  329. package/src/interface/IJointStyle.js +1 -0
  330. package/src/interface/ILoaderInfoData.d.ts +7 -0
  331. package/src/interface/ILoaderInfoData.js +1 -0
  332. package/src/interface/ILoopConfig.d.ts +8 -0
  333. package/src/interface/ILoopConfig.js +1 -0
  334. package/src/interface/ILoopType.d.ts +1 -0
  335. package/src/interface/ILoopType.js +1 -0
  336. package/src/interface/IMovieClipActionObject.d.ts +5 -0
  337. package/src/interface/IMovieClipActionObject.js +1 -0
  338. package/src/interface/IMovieClipCharacter.d.ts +17 -0
  339. package/src/interface/IMovieClipCharacter.js +1 -0
  340. package/src/interface/IMovieClipLabelObject.d.ts +4 -0
  341. package/src/interface/IMovieClipLabelObject.js +1 -0
  342. package/src/interface/IMovieClipSoundObject.d.ts +5 -0
  343. package/src/interface/IMovieClipSoundObject.js +1 -0
  344. package/src/interface/IParent.d.ts +2 -0
  345. package/src/interface/IParent.js +1 -0
  346. package/src/interface/IPlaceObject.d.ts +14 -0
  347. package/src/interface/IPlaceObject.js +1 -0
  348. package/src/interface/IPlayerHitObject.d.ts +7 -0
  349. package/src/interface/IPlayerHitObject.js +1 -0
  350. package/src/interface/IShapeCharacter.d.ts +14 -0
  351. package/src/interface/IShapeCharacter.js +1 -0
  352. package/src/interface/ISoundCharacter.d.ts +4 -0
  353. package/src/interface/ISoundCharacter.js +1 -0
  354. package/src/interface/ISoundTag.d.ts +6 -0
  355. package/src/interface/ISoundTag.js +1 -0
  356. package/src/interface/ISpreadMethod.d.ts +1 -0
  357. package/src/interface/ISpreadMethod.js +1 -0
  358. package/src/interface/ISprite.d.ts +2 -0
  359. package/src/interface/ISprite.js +1 -0
  360. package/src/interface/IStageData.d.ts +6 -0
  361. package/src/interface/IStageData.js +1 -0
  362. package/src/interface/ISurfaceFilter.d.ts +6 -0
  363. package/src/interface/ISurfaceFilter.js +1 -0
  364. package/src/interface/ITextFieldCharacter.d.ts +26 -0
  365. package/src/interface/ITextFieldCharacter.js +1 -0
  366. package/src/interface/ITextFieldType.d.ts +1 -0
  367. package/src/interface/ITextFieldType.js +1 -0
  368. package/src/interface/ITextFormatAlign.d.ts +1 -0
  369. package/src/interface/ITextFormatAlign.js +1 -0
  370. package/src/interface/IURLLoaderDataFormat.d.ts +1 -0
  371. package/src/interface/IURLLoaderDataFormat.js +1 -0
  372. package/src/interface/IURLRequestHeader.d.ts +4 -0
  373. package/src/interface/IURLRequestHeader.js +1 -0
  374. package/src/interface/IURLRequestMethod.d.ts +1 -0
  375. package/src/interface/IURLRequestMethod.js +1 -0
  376. package/src/interface/IVideoCharacter.d.ts +11 -0
  377. package/src/interface/IVideoCharacter.js +1 -0
  378. package/dist/BitmapData.d.ts +0 -151
  379. package/dist/BitmapData.js +0 -417
  380. package/dist/DisplayObject.d.ts +0 -563
  381. package/dist/DisplayObject.js +0 -1791
  382. package/dist/DisplayObjectContainer.d.ts +0 -346
  383. package/dist/DisplayObjectContainer.js +0 -1612
  384. package/dist/FrameLabel.d.ts +0 -98
  385. package/dist/FrameLabel.js +0 -120
  386. package/dist/Graphics.js +0 -2304
  387. package/dist/InteractiveObject.d.ts +0 -32
  388. package/dist/InteractiveObject.js +0 -43
  389. package/dist/Loader.d.ts +0 -140
  390. package/dist/Loader.js +0 -319
  391. package/dist/LoaderInfo.d.ts +0 -120
  392. package/dist/LoaderInfo.js +0 -184
  393. package/dist/LoopConfig.d.ts +0 -108
  394. package/dist/LoopConfig.js +0 -156
  395. package/dist/LoopType.d.ts +0 -104
  396. package/dist/LoopType.js +0 -122
  397. package/dist/MovieClip.js +0 -934
  398. package/dist/Shape.d.ts +0 -162
  399. package/dist/Shape.js +0 -517
  400. package/dist/Sprite.d.ts +0 -158
  401. package/dist/Sprite.js +0 -258
  402. package/dist/Stage.d.ts +0 -164
  403. package/dist/Stage.js +0 -252
  404. package/dist/TextField.d.ts +0 -656
  405. package/dist/TextField.js +0 -2807
package/dist/TextField.js DELETED
@@ -1,2807 +0,0 @@
1
- import { InteractiveObject, Shape } from "@next2d/display";
2
- import { FocusEvent, Event as Next2DEvent } from "@next2d/events";
3
- import { Tween, Easing } from "@next2d/ui";
4
- import { TextFormat, parsePlainText, parseHtmlText } from "@next2d/text";
5
- import { Rectangle, Point } from "@next2d/geom";
6
- import { $document, $rendererWorker, $getEventType, $TOUCH_MOVE, $MOUSE_MOVE, $textArea, $currentPlayer } from "@next2d/util";
7
- import { $cacheStore, $doUpdated, $clamp, $getArray, $intToRGBA, $isNaN, $Math, $toColorInt, $poolFloat32Array6, $boundsMatrix, $multiplicationMatrix, $poolBoundsObject, $multiplicationColor, $Infinity, $Number, $poolArray, $poolFloat32Array8, $generateFontStyle, $getBoundsObject, $setTimeout, $clearTimeout } from "@next2d/share";
8
- /**
9
- * TextField クラスは、テキストの表示と入力用の表示オブジェクトを作成するために使用されます。
10
- * プロパティインスペクターを使用して、テキストフィールドにインスタンス名を付けることができます。
11
- * また、TextField クラスのメソッドとプロパティを使用して、JavaScript でテキストフィールドを操作できます。
12
- *
13
- * The TextField class is used to create display objects for text display and input.
14
- * You can give a text field an instance name in the Property inspector
15
- * and use the methods and properties of the TextField class to manipulate it with JavaScript.
16
- *
17
- * @class
18
- * @memberOf next2d.display
19
- * @extends InteractiveObject
20
- */
21
- export class TextField extends InteractiveObject {
22
- /**
23
- * @constructor
24
- * @public
25
- */
26
- constructor() {
27
- super();
28
- /**
29
- * @type {boolean}
30
- * @default false
31
- * @private
32
- */
33
- this._$background = false;
34
- /**
35
- * @type {number}
36
- * @default 0xffffff
37
- * @private
38
- */
39
- this._$backgroundColor = 0xffffff;
40
- /**
41
- * @type {boolean}
42
- * @default false
43
- * @private
44
- */
45
- this._$border = false;
46
- /**
47
- * @type {number}
48
- * @default 0x000000
49
- * @private
50
- */
51
- this._$borderColor = 0x000000;
52
- /**
53
- * @type {string}
54
- * @default ""
55
- * @private
56
- */
57
- this._$htmlText = "";
58
- /**
59
- * @type {boolean}
60
- * @default false
61
- * @private
62
- */
63
- this._$multiline = false;
64
- /**
65
- * @type {string}
66
- * @default ""
67
- * @private
68
- */
69
- this._$text = "";
70
- /**
71
- * @type {boolean}
72
- * @default false
73
- * @private
74
- */
75
- this._$wordWrap = false;
76
- /**
77
- * @type {number}
78
- * @default 0
79
- * @private
80
- */
81
- this._$scrollX = 0;
82
- /**
83
- * @type {number}
84
- * @default 0
85
- * @private
86
- */
87
- this._$scrollY = 0;
88
- /**
89
- * @type {number}
90
- * @default 0
91
- * @private
92
- */
93
- this._$maxChars = 0;
94
- /**
95
- * @type {number}
96
- * @default -1
97
- * @private
98
- */
99
- this._$stopIndex = -1;
100
- /**
101
- * @type {number}
102
- * @default -1
103
- * @private
104
- */
105
- this._$compositionStartIndex = -1;
106
- /**
107
- * @type {number}
108
- * @default -1
109
- * @private
110
- */
111
- this._$compositionEndIndex = -1;
112
- // TextFormat
113
- const textFormat = new TextFormat();
114
- textFormat._$setDefault();
115
- /**
116
- * @type {TextFormat}
117
- * @private
118
- */
119
- this._$defaultTextFormat = textFormat;
120
- /**
121
- * @type {string}
122
- * @default ""
123
- * @private
124
- */
125
- this._$rawHtmlText = "";
126
- /**
127
- * @type {object}
128
- * @private
129
- */
130
- this._$bounds = {
131
- "xMin": 0,
132
- "xMax": 100,
133
- "yMin": 0,
134
- "yMax": 100
135
- };
136
- /**
137
- * @type {object}
138
- * @private
139
- */
140
- this._$originBounds = {
141
- "xMin": 0,
142
- "xMax": 100,
143
- "yMin": 0,
144
- "yMax": 100
145
- };
146
- /**
147
- * @type {string}
148
- * @default null
149
- * @private
150
- */
151
- this._$restrict = "";
152
- /**
153
- * @type {boolean}
154
- * @default false
155
- * @private
156
- */
157
- this._$isHTML = false;
158
- /**
159
- * @type {TextData}
160
- * @private
161
- */
162
- this._$textData = null;
163
- /**
164
- * @type {string}
165
- * @default TextFieldAutoSize.NONE
166
- * @private
167
- */
168
- this._$autoSize = "none";
169
- /**
170
- * @type {boolean}
171
- * @default false
172
- * @private
173
- */
174
- this._$autoFontSize = false;
175
- /**
176
- * @type {boolean}
177
- * @default true
178
- * @private
179
- */
180
- this._$focusVisible = false;
181
- /**
182
- * @type {number}
183
- * @default -1
184
- * @private
185
- */
186
- this._$timerId = -1;
187
- /**
188
- * @type {number}
189
- * @default -1
190
- * @private
191
- */
192
- this._$focusIndex = -1;
193
- /**
194
- * @type {number}
195
- * @default -1
196
- * @private
197
- */
198
- this._$selectIndex = -1;
199
- /**
200
- * @type {boolean}
201
- * @default true
202
- * @private
203
- */
204
- this._$scrollEnabled = true;
205
- /**
206
- * @type {Shape}
207
- * @default null
208
- * @private
209
- */
210
- this._$xScrollShape = null;
211
- /**
212
- * @type {Shape}
213
- * @default null
214
- * @private
215
- */
216
- this._$yScrollShape = null;
217
- /**
218
- * @type {string}
219
- * @default null
220
- * @private
221
- */
222
- this._$type = "static";
223
- /**
224
- * @type {boolean}
225
- * @default false
226
- * @private
227
- */
228
- this._$focus = false;
229
- /**
230
- * @type {string}
231
- * @default ""
232
- * @private
233
- */
234
- this._$copyText = "";
235
- /**
236
- * @type {number}
237
- * @default 0
238
- * @private
239
- */
240
- this._$thickness = 0;
241
- /**
242
- * @type {number}
243
- * @default 0
244
- * @private
245
- */
246
- this._$thicknessColor = 0;
247
- /**
248
- * @type {array}
249
- * @default null
250
- * @private
251
- */
252
- this._$textFormats = null;
253
- /**
254
- * @type {array}
255
- * @private
256
- */
257
- this._$cacheKeys = $getArray();
258
- /**
259
- * @type {array}
260
- * @private
261
- */
262
- this._$cacheParams = $getArray(0, 0, 0);
263
- }
264
- /**
265
- * @description 指定されたクラスのストリングを返します。
266
- * Returns the string representation of the specified class.
267
- *
268
- * @return {string}
269
- * @default [class TextField]
270
- * @method
271
- * @static
272
- */
273
- static toString() {
274
- return "[class TextField]";
275
- }
276
- /**
277
- * @description 指定されたクラスの空間名を返します。
278
- * Returns the space name of the specified class.
279
- *
280
- * @return {string}
281
- * @default next2d.display.TextField
282
- * @const
283
- * @static
284
- */
285
- static get namespace() {
286
- return "next2d.display.TextField";
287
- }
288
- /**
289
- * @description 指定されたオブジェクトのストリングを返します。
290
- * Returns the string representation of the specified object.
291
- *
292
- * @return {string}
293
- * @default [object TextField]
294
- * @method
295
- * @public
296
- */
297
- toString() {
298
- return "[object TextField]";
299
- }
300
- /**
301
- * @description 指定されたオブジェクトの空間名を返します。
302
- * Returns the space name of the specified object.
303
- *
304
- * @return {string}
305
- * @default next2d.display.TextField
306
- * @const
307
- * @public
308
- */
309
- get namespace() {
310
- return "next2d.display.TextField";
311
- }
312
- /**
313
- * @description テキストサイズの自動的な拡大 / 縮小および整列を制御します。
314
- * Controls automatic sizing and alignment of text size.
315
- *
316
- * @member {boolean}
317
- * @default false
318
- * @public
319
- */
320
- get autoFontSize() {
321
- return this._$autoFontSize;
322
- }
323
- set autoFontSize(auto_font_size) {
324
- if (auto_font_size !== this._$autoFontSize) {
325
- this._$autoFontSize = auto_font_size;
326
- this._$reload();
327
- }
328
- }
329
- /**
330
- * @description テキストフィールドの自動的な拡大 / 縮小および整列を制御します。
331
- * Controls automatic sizing and alignment of text fields.
332
- *
333
- * @member {string}
334
- * @default TextFieldAutoSize.NONE
335
- * @public
336
- */
337
- get autoSize() {
338
- return this._$autoSize;
339
- }
340
- set autoSize(auto_size) {
341
- if (auto_size !== this._$autoSize) {
342
- this._$autoSize = auto_size;
343
- this._$reload();
344
- }
345
- }
346
- /**
347
- * @description テキストフィールドに背景の塗りつぶしがあるかどうかを指定します。
348
- * Specifies whether the text field has a background fill.
349
- *
350
- * @member {boolean}
351
- * @default false
352
- * @public
353
- */
354
- get background() {
355
- return this._$background;
356
- }
357
- set background(background) {
358
- if (background !== this._$background) {
359
- this._$background = !!background;
360
- this._$reset();
361
- }
362
- }
363
- /**
364
- * @description テキストフィールドの背景の色です。
365
- * The color of the text field background.
366
- *
367
- * @member {number}
368
- * @default 0xffffff
369
- * @public
370
- */
371
- get backgroundColor() {
372
- return this._$backgroundColor;
373
- }
374
- set backgroundColor(background_color) {
375
- background_color = $clamp($toColorInt(background_color), 0, 0xffffff, 0xffffff);
376
- if (background_color !== this._$backgroundColor) {
377
- this._$backgroundColor = background_color;
378
- this._$reset();
379
- }
380
- }
381
- /**
382
- * @description テキストフィールドに境界線があるかどうかを指定します。
383
- * Specifies whether the text field has a border.
384
- *
385
- * @member {boolean}
386
- * @default false
387
- * @public
388
- */
389
- get border() {
390
- return this._$border;
391
- }
392
- set border(border) {
393
- if (border !== this._$border) {
394
- this._$border = !!border;
395
- this._$reset();
396
- }
397
- }
398
- /**
399
- * @description テキストフィールドの境界線の色です。
400
- * The color of the text field border.
401
- *
402
- * @member {number}
403
- * @default 0x000000
404
- * @public
405
- */
406
- get borderColor() {
407
- return this._$borderColor;
408
- }
409
- set borderColor(border_color) {
410
- border_color = $clamp($toColorInt(border_color), 0, 0xffffff, 0);
411
- if (border_color !== this._$borderColor) {
412
- this._$borderColor = border_color;
413
- this._$reset();
414
- }
415
- }
416
- /**
417
- * @description テキストの任意の表示終了位置の設定
418
- * Setting an arbitrary display end position for text.
419
- *
420
- * @member {number}
421
- * @default -1
422
- * @public
423
- */
424
- get stopIndex() {
425
- return this._$stopIndex;
426
- }
427
- set stopIndex(index) {
428
- index |= 0;
429
- if (this._$stopIndex === index) {
430
- return;
431
- }
432
- this._$stopIndex = index;
433
- const textData = this.getTextData();
434
- if (!textData.textTable.length) {
435
- return;
436
- }
437
- let currentTextWidth = 2;
438
- let targetIndex = 0;
439
- for (let idx = 0; idx < textData.textTable.length; ++idx) {
440
- const textObject = textData.textTable[idx];
441
- let countUp = false;
442
- if (textObject.mode === "text") {
443
- countUp = true;
444
- currentTextWidth += textObject.w;
445
- }
446
- if (targetIndex >= index) {
447
- targetIndex = idx;
448
- break;
449
- }
450
- if (textObject.mode === "break") {
451
- countUp = true;
452
- // reset
453
- this._$scrollX = 0;
454
- currentTextWidth = 2;
455
- }
456
- if (countUp) {
457
- targetIndex++;
458
- }
459
- }
460
- const textObject = textData.textTable[targetIndex];
461
- const line = textObject.line;
462
- let currentTextHeight = 0;
463
- for (let idx = 0; idx <= line; ++idx) {
464
- currentTextHeight += textData.heightTable[idx];
465
- }
466
- const height = this.height;
467
- let viewTextHeight = 0;
468
- for (let idx = line; idx > -1; --idx) {
469
- const lineHeight = textData.heightTable[idx];
470
- if (height < viewTextHeight + lineHeight) {
471
- break;
472
- }
473
- viewTextHeight += lineHeight;
474
- }
475
- if (currentTextHeight > height) {
476
- const scaleY = (this.textHeight - height) / height;
477
- this._$scrollY = $Math.min((currentTextHeight - viewTextHeight) / scaleY, height);
478
- }
479
- const width = this.width;
480
- let viewTextWidth = 0;
481
- for (let idx = targetIndex; idx > 0; --idx) {
482
- const textObject = textData.textTable[idx];
483
- if (textObject.mode !== "text") {
484
- continue;
485
- }
486
- if (width < viewTextWidth + textObject.w) {
487
- break;
488
- }
489
- viewTextWidth += textObject.w;
490
- }
491
- if (currentTextWidth > width) {
492
- const scaleX = (this.textWidth - width) / width;
493
- this._$scrollX = $Math.min((currentTextWidth - viewTextWidth) / scaleX, width + 0.5);
494
- }
495
- this._$doChanged();
496
- }
497
- /**
498
- * @description テキストに適用するフォーマットを指定します。
499
- * Specifies the formatting to be applied to the text.
500
- *
501
- * @member {TextFormat}
502
- * @public
503
- */
504
- get defaultTextFormat() {
505
- return this._$defaultTextFormat._$clone();
506
- }
507
- set defaultTextFormat(text_format) {
508
- text_format._$merge(this._$defaultTextFormat);
509
- this._$defaultTextFormat = text_format;
510
- this._$reset();
511
- }
512
- /**
513
- * @description このオブジェクトでマウスまたはその他のユーザー入力メッセージを
514
- *
515
- * @member {boolean}
516
- * @default false
517
- * @public
518
- */
519
- get focus() {
520
- return this._$focus;
521
- }
522
- set focus(focus) {
523
- if (this._$focus === focus) {
524
- return;
525
- }
526
- if (this._$type !== "input") {
527
- return;
528
- }
529
- this._$focus = !!focus;
530
- const name = this._$focus
531
- ? FocusEvent.FOCUS_IN
532
- : FocusEvent.FOCUS_OUT;
533
- if (this.willTrigger(name)) {
534
- this.dispatchEvent(new FocusEvent(name));
535
- }
536
- $textArea.value = "";
537
- if (this._$focus) {
538
- $textArea.focus();
539
- }
540
- else {
541
- this._$focusIndex = -1;
542
- this._$selectIndex = -1;
543
- this._$focusVisible = false;
544
- $clearTimeout(this._$timerId);
545
- $textArea.blur();
546
- }
547
- this._$doChanged();
548
- $doUpdated();
549
- }
550
- /**
551
- * @description テキストフィールドの内容を HTML で表します。
552
- * Contains the HTML representation of the text field contents.
553
- *
554
- * @member {string}
555
- * @default ""
556
- * @public
557
- */
558
- get htmlText() {
559
- if (this._$htmlText) {
560
- return this._$htmlText;
561
- }
562
- const textData = this.getTextData();
563
- let prevTextFormat = textData.textTable[0].textFormat;
564
- let htmlText = "<span";
565
- const style = prevTextFormat._$toStyleString();
566
- if (style) {
567
- htmlText += ` style="${style}"`;
568
- }
569
- htmlText += ">";
570
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
571
- const textObject = textData.textTable[idx];
572
- if (textObject.mode === "wrap") {
573
- continue;
574
- }
575
- if (textObject.mode === "break") {
576
- htmlText += "<br>";
577
- continue;
578
- }
579
- const textFormat = textObject.textFormat;
580
- if (!prevTextFormat._$isSame(textFormat)) {
581
- htmlText += "</span><span";
582
- const style = textFormat._$toStyleString();
583
- if (style) {
584
- htmlText += ` style="${style}"`;
585
- }
586
- htmlText += ">";
587
- // change
588
- prevTextFormat = textFormat;
589
- }
590
- if (textObject.mode === "text") {
591
- htmlText += textObject.text;
592
- }
593
- }
594
- htmlText += "</span>";
595
- this._$htmlText = htmlText;
596
- return htmlText;
597
- }
598
- set htmlText(html_text) {
599
- if (this._$htmlText !== html_text) {
600
- this._$htmlText = `${html_text}`;
601
- this._$rawHtmlText = "";
602
- this._$text = "";
603
- this._$isHTML = true;
604
- this._$reload();
605
- }
606
- }
607
- /**
608
- * @description テキストフィールド内の文字数です。
609
- * The int of characters in a text field.
610
- *
611
- * @member {number}
612
- * @readonly
613
- * @public
614
- */
615
- get length() {
616
- return this.text.length;
617
- }
618
- /**
619
- * @description ユーザーが入力するときに、テキストフィールドに入力できる最大の文字数です。
620
- * The maximum number of characters that the text field can contain,
621
- * as entered by a user.
622
- *
623
- * @member {number}
624
- * @default 0
625
- * @public
626
- */
627
- get maxChars() {
628
- return this._$maxChars;
629
- }
630
- set maxChars(max_chars) {
631
- this._$maxChars = max_chars | 0;
632
- }
633
- /**
634
- * @description フィールドが複数行テキストフィールドであるかどうかを示します。
635
- * Indicates whether field is a multiline text field.
636
- *
637
- * @member {boolean}
638
- * @default false
639
- * @public
640
- */
641
- get multiline() {
642
- return this._$multiline;
643
- }
644
- set multiline(multiline) {
645
- if (multiline !== this._$multiline) {
646
- this._$multiline = !!multiline;
647
- this._$reset();
648
- }
649
- }
650
- /**
651
- * @description フィールドが複数行テキストフィールドであるかどうかを示します。
652
- * Indicates whether field is a multiline text field.
653
- *
654
- * @member {number}
655
- * @readonly
656
- * @public
657
- */
658
- get numLines() {
659
- return this.getTextData().lineTable.length;
660
- }
661
- /**
662
- * @description ユーザーがテキストフィールドに入力できる文字のセットを指定します。
663
- * Indicates the set of characters that a user can enter into the text field.
664
- *
665
- * @member {string}
666
- * @default null
667
- * @public
668
- */
669
- get restrict() {
670
- return this._$restrict;
671
- }
672
- set restrict(restrict) {
673
- this._$restrict = `${restrict}`;
674
- }
675
- /**
676
- * @description スクロール機能のON/OFFの制御。
677
- * Control ON/OFF of the scroll function.
678
- *
679
- * @member {boolean}
680
- * @default true
681
- * @public
682
- */
683
- get scrollEnabled() {
684
- return this._$scrollEnabled;
685
- }
686
- set scrollEnabled(scroll_enabled) {
687
- this._$scrollEnabled = scroll_enabled;
688
- }
689
- /**
690
- * @description テキストの選択位置を返す
691
- * Returns the text selection position
692
- *
693
- * @member {number}
694
- * @readonly
695
- * @public
696
- */
697
- get selectIndex() {
698
- return this._$selectIndex;
699
- }
700
- /**
701
- * @description テキストフィールドのスクロール垂直位置です。
702
- * The scroll vertical position of the text field.
703
- *
704
- * @member {number}
705
- * @public
706
- */
707
- get scrollX() {
708
- return this._$scrollX;
709
- }
710
- set scrollX(scroll_x) {
711
- if (!this._$scrollEnabled
712
- || this._$autoSize !== "none") {
713
- return;
714
- }
715
- // check y animation
716
- if (this._$yScrollShape
717
- && this._$yScrollShape.hasLocalVariable("job")) {
718
- return;
719
- }
720
- scroll_x = $clamp(scroll_x, 0, this.width + 0.5, 0);
721
- if (this._$scrollX !== scroll_x) {
722
- const width = this.width;
723
- if (this._$xScrollShape && this.textWidth > width) {
724
- this._$doChanged();
725
- this._$scrollX = scroll_x;
726
- this._$xScrollShape.width = width * width / this.textWidth;
727
- const parent = this._$parent;
728
- if (parent) {
729
- // start animation
730
- if (this._$xScrollShape.hasLocalVariable("job")) {
731
- this._$xScrollShape.getLocalVariable("job").stop();
732
- }
733
- // view start
734
- this._$xScrollShape.alpha = 0.9;
735
- // set position
736
- this._$xScrollShape.x = this.x + 1
737
- + (width - 1 - this._$xScrollShape.width)
738
- / (width - 1)
739
- * (this._$scrollX - 1);
740
- this._$xScrollShape.y = this.y + this.height - this._$xScrollShape.height - 0.5;
741
- // added sprite
742
- parent.addChildAt(this._$xScrollShape, parent.getChildIndex(this) + 1);
743
- const job = Tween.add(this._$xScrollShape, { "alpha": 0.9 }, { "alpha": 0 }, 0.5, 0.2, Easing.outQuad);
744
- job.addEventListener(Next2DEvent.COMPLETE, (event) => {
745
- const shape = event.target.target;
746
- shape.deleteLocalVariable("job");
747
- if (shape.parent) {
748
- shape.parent.removeChild(shape);
749
- }
750
- });
751
- job.start();
752
- this._$xScrollShape.setLocalVariable("job", job);
753
- }
754
- }
755
- if (this.willTrigger(Next2DEvent.SCROLL)) {
756
- this.dispatchEvent(new Next2DEvent(Next2DEvent.SCROLL, true));
757
- }
758
- }
759
- }
760
- /**
761
- * @description テキストフィールドのスクロール垂直位置です。
762
- * The scroll vertical position of the text field.
763
- *
764
- * @member {number}
765
- * @public
766
- */
767
- get scrollY() {
768
- return this._$scrollY;
769
- }
770
- set scrollY(scroll_y) {
771
- if (!this._$scrollEnabled
772
- || this._$autoSize !== "none"
773
- || !this._$multiline && !this._$wordWrap) {
774
- return;
775
- }
776
- // check x animation
777
- if (this._$xScrollShape
778
- && this._$xScrollShape.hasLocalVariable("job")) {
779
- return;
780
- }
781
- scroll_y = $clamp(scroll_y, 0, this.height, 0);
782
- if (this._$scrollY !== scroll_y) {
783
- const height = this.height;
784
- if (this._$yScrollShape && this.textHeight > height) {
785
- this._$doChanged();
786
- this._$scrollY = scroll_y;
787
- this._$yScrollShape.height = height * height / this.textHeight;
788
- const parent = this._$parent;
789
- if (parent) {
790
- // start animation
791
- if (this._$yScrollShape.hasLocalVariable("job")) {
792
- this._$yScrollShape.getLocalVariable("job").stop();
793
- }
794
- // view start
795
- this._$yScrollShape.alpha = 0.9;
796
- // set position
797
- this._$yScrollShape.x = this.x + this.width - this._$yScrollShape.width - 0.5;
798
- this._$yScrollShape.y = this.y + 0.5
799
- + (height - 1 - this._$yScrollShape.height)
800
- / (height - 1)
801
- * (this._$scrollY - 1);
802
- // added sprite
803
- parent.addChildAt(this._$yScrollShape, parent.getChildIndex(this) + 1);
804
- const job = Tween.add(this._$yScrollShape, { "alpha": 0.9 }, { "alpha": 0 }, 0.5, 0.2, Easing.outQuad);
805
- job.addEventListener(Next2DEvent.COMPLETE, (event) => {
806
- const shape = event.target.target;
807
- shape.deleteLocalVariable("job");
808
- if (shape.parent) {
809
- shape.parent.removeChild(shape);
810
- }
811
- });
812
- job.start();
813
- this._$yScrollShape.setLocalVariable("job", job);
814
- }
815
- }
816
- if (this.willTrigger(Next2DEvent.SCROLL)) {
817
- this.dispatchEvent(new Next2DEvent(Next2DEvent.SCROLL, true));
818
- }
819
- }
820
- }
821
- /**
822
- * @description テキストフィールド内の現在のテキストであるストリングです。
823
- * A string that is the current text in the text field.
824
- *
825
- * @member {string}
826
- * @default ""
827
- * @public
828
- */
829
- get text() {
830
- if (!this._$isHTML) {
831
- return this._$text;
832
- }
833
- if (this._$rawHtmlText) {
834
- return this._$rawHtmlText;
835
- }
836
- let text = "";
837
- const textData = this.getTextData();
838
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
839
- const textObject = textData.textTable[idx];
840
- switch (textObject.mode) {
841
- case "text":
842
- text += textObject.text;
843
- break;
844
- case "break":
845
- text += "\r";
846
- break;
847
- default:
848
- continue;
849
- }
850
- }
851
- this._$rawHtmlText = text;
852
- return text;
853
- }
854
- set text(text) {
855
- if (text === null) {
856
- this._$text = "";
857
- this._$htmlText = "";
858
- this._$rawHtmlText = "";
859
- this._$isHTML = false;
860
- this._$reload();
861
- return;
862
- }
863
- text = `${text}`;
864
- if (text !== this._$text) {
865
- this._$text = text;
866
- this._$htmlText = "";
867
- this._$rawHtmlText = "";
868
- this._$isHTML = false;
869
- this._$reload();
870
- }
871
- }
872
- /**
873
- * @description テキストフィールドのテキストの色です(16 進数形式)。
874
- * The color of the text in a text field, in hexadecimal format.
875
- *
876
- * @member {number}
877
- * @public
878
- */
879
- get textColor() {
880
- return this._$defaultTextFormat.color || 0;
881
- }
882
- set textColor(text_color) {
883
- this._$defaultTextFormat.color = text_color;
884
- this._$reload();
885
- }
886
- /**
887
- * @description テキストの高さです(ピクセル単位)。
888
- * The height of the text in pixels.
889
- *
890
- * @member {number}
891
- * @readonly
892
- * @public
893
- */
894
- get textHeight() {
895
- return this.getTextData().textHeight;
896
- }
897
- /**
898
- * @description テキストの幅です(ピクセル単位)。
899
- * The width of the text in pixels.
900
- *
901
- * @member {number}
902
- * @readonly
903
- * @public
904
- */
905
- get textWidth() {
906
- return this.getTextData().textWidth;
907
- }
908
- /**
909
- * @description 輪郭のテキスト幅です。0(デフォルト値)で無効にできます。
910
- * The text width of the outline, which can be disabled with 0 (the default value).
911
- *
912
- * @member {number}
913
- * @default 0
914
- * @public
915
- */
916
- get thickness() {
917
- return this._$thickness;
918
- }
919
- set thickness(thickness) {
920
- thickness |= 0;
921
- if (thickness !== this._$thickness) {
922
- this._$thickness = thickness;
923
- this._$reset();
924
- }
925
- }
926
- /**
927
- * @description 輪郭のテキストの色です(16 進数形式)。
928
- * The color of the outline text. (Hexadecimal format)
929
- *
930
- * @member {number}
931
- * @default 0
932
- * @public
933
- */
934
- get thicknessColor() {
935
- return this._$thicknessColor;
936
- }
937
- set thicknessColor(thickness_color) {
938
- thickness_color = $clamp($toColorInt(thickness_color), 0, 0xffffff, 0);
939
- if (thickness_color !== this._$thicknessColor) {
940
- this._$thicknessColor = thickness_color;
941
- this._$reset();
942
- }
943
- }
944
- /**
945
- * @description テキストフィールドのタイプです。
946
- * The type of the text field.
947
- *
948
- * @member {string}
949
- * @default TextFieldType.STATIC
950
- * @public
951
- */
952
- get type() {
953
- return this._$type;
954
- }
955
- set type(type) {
956
- this._$type = type;
957
- }
958
- /**
959
- * @description テキストフィールドのテキストを折り返すかどうかを示すブール値です。
960
- * A Boolean value that indicates whether the text field has word wrap.
961
- *
962
- * @member {boolean}
963
- * @default false
964
- * @public
965
- */
966
- get wordWrap() {
967
- return this._$wordWrap;
968
- }
969
- set wordWrap(word_wrap) {
970
- if (this._$wordWrap !== word_wrap) {
971
- this._$wordWrap = !!word_wrap;
972
- this._$reset();
973
- }
974
- }
975
- /**
976
- * @description 表示オブジェクトの幅を示します(ピクセル単位)。
977
- * Indicates the width of the display object, in pixels.
978
- *
979
- * @member {number}
980
- * @public
981
- */
982
- get width() {
983
- return super.width;
984
- }
985
- set width(width) {
986
- width = +width;
987
- if (!$isNaN(width) && width > -1) {
988
- const bounds = this._$getBounds(null);
989
- const xMin = $Math.abs(bounds.xMin);
990
- this._$originBounds.xMax = width + xMin;
991
- this._$originBounds.xMin = xMin;
992
- this._$bounds.xMax = this._$originBounds.xMax;
993
- this._$bounds.xMin = this._$originBounds.xMin;
994
- super.width = width;
995
- this._$reload();
996
- }
997
- }
998
- /**
999
- * @description 表示オブジェクトの高さを示します(ピクセル単位)。
1000
- * Indicates the height of the display object, in pixels.
1001
- *
1002
- * @member {number}
1003
- * @public
1004
- */
1005
- get height() {
1006
- return super.height;
1007
- }
1008
- set height(height) {
1009
- height = +height;
1010
- if (!$isNaN(height) && height > -1) {
1011
- const bounds = this._$getBounds(null);
1012
- const yMin = $Math.abs(bounds.yMin);
1013
- this._$originBounds.yMax = height + yMin;
1014
- this._$bounds.yMax = this._$originBounds.yMax;
1015
- this._$bounds.yMin = this._$originBounds.yMin;
1016
- super.height = height;
1017
- this._$reload();
1018
- }
1019
- }
1020
- /**
1021
- * @description 親 DisplayObjectContainer のローカル座標を基準にした
1022
- * DisplayObject インスタンスの x 座標を示します。
1023
- * Indicates the x coordinate
1024
- * of the DisplayObject instance relative to the local coordinates
1025
- * of the parent DisplayObjectContainer.
1026
- *
1027
- * @member {number}
1028
- * @public
1029
- */
1030
- get x() {
1031
- const matrix = this._$transform.matrix;
1032
- const bounds = this._$getBounds(null);
1033
- return matrix._$matrix[4] + bounds.xMin;
1034
- }
1035
- set x(x) {
1036
- const bounds = this._$getBounds(null);
1037
- super.x = x - bounds.xMin;
1038
- }
1039
- /**
1040
- * @description 親 DisplayObjectContainer のローカル座標を基準にした
1041
- * DisplayObject インスタンスの y 座標を示します。
1042
- * Indicates the y coordinate
1043
- * of the DisplayObject instance relative to the local coordinates
1044
- * of the parent DisplayObjectContainer.
1045
- *
1046
- * @member {number}
1047
- * @public
1048
- */
1049
- get y() {
1050
- const matrix = this._$transform.matrix;
1051
- const bounds = this._$getBounds(null);
1052
- return matrix._$matrix[5] + bounds.yMin;
1053
- }
1054
- set y(y) {
1055
- const bounds = this._$getBounds(null);
1056
- super.y = y - bounds.yMin;
1057
- }
1058
- /**
1059
- * @description newText パラメーターで指定されたストリングを、
1060
- * テキストフィールドのテキストの最後に付加します。
1061
- * Appends the string specified by the newText parameter
1062
- * to the end of the text of the text field.
1063
- *
1064
- * @param {string} new_text
1065
- * @return void
1066
- * @method
1067
- * @public
1068
- */
1069
- appendText(new_text) {
1070
- const currentText = this.text;
1071
- this.text = currentText + `${new_text}`;
1072
- }
1073
- /**
1074
- * @description lineIndex パラメーターで指定された行のテキストを返します。
1075
- * Returns the text of the line specified by the lineIndex parameter.
1076
- *
1077
- * @param {number} line_index
1078
- * @return {string}
1079
- * @public
1080
- */
1081
- getLineText(line_index) {
1082
- if (!this._$text && !this._$htmlText) {
1083
- return "";
1084
- }
1085
- line_index |= 0;
1086
- let lineText = "";
1087
- const textData = this.getTextData();
1088
- for (let idx = 0; idx < textData.textTable.length; idx++) {
1089
- const textObject = textData.textTable[idx];
1090
- if (textObject.line > line_index) {
1091
- break;
1092
- }
1093
- if (textObject.line !== line_index) {
1094
- continue;
1095
- }
1096
- if (textObject.mode !== "text") {
1097
- continue;
1098
- }
1099
- lineText += textObject.text;
1100
- }
1101
- return lineText;
1102
- }
1103
- /**
1104
- * @description beginIndex パラメーターと endIndex パラメーターで指定された文字範囲を、
1105
- * newText パラメーターの内容に置き換えます。
1106
- * Replaces the range of characters that the beginIndex
1107
- * and endIndex parameters specify with the contents of the newText parameter.
1108
- *
1109
- * @param {number} begin_index
1110
- * @param {number} end_index
1111
- * @param {string} new_text
1112
- * @return {void}
1113
- * @method
1114
- * @public
1115
- */
1116
- replaceText(begin_index, end_index, new_text) {
1117
- begin_index |= 0;
1118
- end_index |= 0;
1119
- if (begin_index > -1 && end_index > -1 && end_index >= begin_index) {
1120
- const text = this.text;
1121
- if (begin_index >= text.length) {
1122
- if (end_index >= text.length && end_index >= begin_index) {
1123
- this.text = text + `${new_text}`;
1124
- }
1125
- }
1126
- else {
1127
- this.text = text.slice(0, begin_index)
1128
- + `${new_text}`
1129
- + text.slice(end_index, text.length);
1130
- }
1131
- }
1132
- }
1133
- /**
1134
- * @description text、htmlTextに登録したテキスト情報をTextDataクラスで返却
1135
- * Return text information registered in text and htmlText with TextData class.
1136
- *
1137
- * @param {number} [sub_font_size = 0]
1138
- * @return {array}
1139
- * @method
1140
- * @public
1141
- */
1142
- getTextData(sub_font_size = 0) {
1143
- if (this._$textData !== null) {
1144
- return this._$textData;
1145
- }
1146
- if (!this._$isHTML) {
1147
- this._$textData = parsePlainText(this._$text, this._$defaultTextFormat, {
1148
- "width": this.width,
1149
- "multiline": this._$multiline,
1150
- "wordWrap": this._$wordWrap,
1151
- "subFontSize": sub_font_size,
1152
- "textFormats": this._$textFormats
1153
- });
1154
- }
1155
- else {
1156
- this._$textData = parseHtmlText(this._$htmlText, this._$defaultTextFormat, {
1157
- "width": this.width,
1158
- "multiline": this._$multiline,
1159
- "wordWrap": this._$wordWrap,
1160
- "subFontSize": sub_font_size,
1161
- "textFormats": this._$textFormats
1162
- });
1163
- }
1164
- return this._$textData;
1165
- }
1166
- /**
1167
- * @return {void}
1168
- * @method
1169
- * @public
1170
- */
1171
- selectAll() {
1172
- const textData = this.getTextData();
1173
- if (!textData.textTable.length) {
1174
- return;
1175
- }
1176
- this._$selectIndex = 1;
1177
- this._$focusIndex = textData.textTable.length;
1178
- }
1179
- /**
1180
- * @return {void}
1181
- * @method
1182
- * @public
1183
- */
1184
- copy() {
1185
- if (this._$focusIndex === -1 || this._$selectIndex === -1) {
1186
- return;
1187
- }
1188
- let text = "";
1189
- const minIndex = $Math.min(this._$focusIndex, this._$selectIndex);
1190
- const maxIndex = $Math.max(this._$focusIndex, this._$selectIndex) + 1;
1191
- const textData = this.getTextData();
1192
- for (let idx = minIndex; idx < maxIndex; ++idx) {
1193
- const textObject = textData.textTable[idx];
1194
- if (!textObject || textObject.mode === "wrap") {
1195
- continue;
1196
- }
1197
- switch (textObject.mode) {
1198
- case "text":
1199
- text += textObject.text;
1200
- break;
1201
- case "break":
1202
- text += "\n";
1203
- break;
1204
- }
1205
- }
1206
- this._$copyText = text;
1207
- }
1208
- /**
1209
- * @return {void}
1210
- * @method
1211
- * @public
1212
- */
1213
- paste() {
1214
- if (!this._$copyText || this._$focusIndex === -1) {
1215
- return;
1216
- }
1217
- this.insertText(this._$copyText);
1218
- }
1219
- /**
1220
- * @return {void}
1221
- * @method
1222
- * @public
1223
- */
1224
- arrowUp() {
1225
- if (this._$focusIndex === -1) {
1226
- return;
1227
- }
1228
- const textData = this.getTextData();
1229
- if (!textData.textTable.length) {
1230
- return;
1231
- }
1232
- const index = textData.textTable.length === this._$focusIndex
1233
- ? this._$focusIndex - 1
1234
- : this._$focusIndex;
1235
- const textObject = textData.textTable[index];
1236
- if (!textObject.line) {
1237
- return;
1238
- }
1239
- const line = textObject.mode === "text"
1240
- ? textObject.line
1241
- : textObject.line - 1;
1242
- let currentWidth = 2;
1243
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1244
- const textObject = textData.textTable[idx];
1245
- if (this._$focusIndex === idx) {
1246
- if (textObject.mode === "text") {
1247
- currentWidth += textObject.w / 2;
1248
- }
1249
- break;
1250
- }
1251
- if (textObject.line > line) {
1252
- break;
1253
- }
1254
- if (textObject.line !== line || textObject.mode !== "text") {
1255
- continue;
1256
- }
1257
- currentWidth += textObject.w;
1258
- }
1259
- let textWidth = 2;
1260
- const targetLine = line - 1;
1261
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1262
- const textObject = textData.textTable[idx];
1263
- if (textObject.line > targetLine) {
1264
- this._$focusIndex = textObject.mode === "text" ? idx - 1 : idx;
1265
- this._$selectIndex = -1;
1266
- $clearTimeout(this._$timerId);
1267
- this._$blinking();
1268
- return;
1269
- }
1270
- if (textObject.line !== targetLine || textObject.mode !== "text") {
1271
- continue;
1272
- }
1273
- textWidth += textObject.w;
1274
- if (textWidth > currentWidth) {
1275
- this._$focusIndex = idx;
1276
- this._$selectIndex = -1;
1277
- $clearTimeout(this._$timerId);
1278
- this._$blinking();
1279
- return;
1280
- }
1281
- }
1282
- }
1283
- /**
1284
- * @return {void}
1285
- * @method
1286
- * @public
1287
- */
1288
- arrowDown() {
1289
- if (this._$focusIndex === -1) {
1290
- return;
1291
- }
1292
- const textData = this.getTextData();
1293
- if (!textData.textTable.length) {
1294
- return;
1295
- }
1296
- const textObject = textData.textTable[this._$focusIndex];
1297
- const line = textObject.mode === "text"
1298
- ? textObject.line
1299
- : textObject.line - 1;
1300
- if (line === textData.lineTable.length - 1) {
1301
- return;
1302
- }
1303
- let currentWidth = 2;
1304
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1305
- const textObject = textData.textTable[idx];
1306
- if (this._$focusIndex === idx) {
1307
- if (textObject.mode === "text") {
1308
- currentWidth += textObject.w / 2;
1309
- }
1310
- break;
1311
- }
1312
- if (textObject.line > line) {
1313
- break;
1314
- }
1315
- if (textObject.line !== line || textObject.mode !== "text") {
1316
- continue;
1317
- }
1318
- currentWidth += textObject.w;
1319
- }
1320
- let textWidth = 2;
1321
- const targetLine = line + 1;
1322
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1323
- const textObject = textData.textTable[idx];
1324
- if (textObject.line > targetLine) {
1325
- this._$focusIndex = textObject.mode === "text" ? idx - 1 : idx;
1326
- this._$selectIndex = -1;
1327
- $clearTimeout(this._$timerId);
1328
- this._$blinking();
1329
- return;
1330
- }
1331
- if (textObject.line !== targetLine || textObject.mode !== "text") {
1332
- continue;
1333
- }
1334
- textWidth += textObject.w;
1335
- if (textWidth > currentWidth) {
1336
- this._$focusIndex = idx;
1337
- this._$selectIndex = -1;
1338
- $clearTimeout(this._$timerId);
1339
- this._$blinking();
1340
- return;
1341
- }
1342
- }
1343
- this._$focusIndex = textData.textTable.length;
1344
- this._$selectIndex = -1;
1345
- $clearTimeout(this._$timerId);
1346
- this._$blinking();
1347
- }
1348
- /**
1349
- * @return {void}
1350
- * @method
1351
- * @public
1352
- */
1353
- arrowLeft() {
1354
- if (!this._$focusIndex) {
1355
- return;
1356
- }
1357
- const textData = this.getTextData();
1358
- if (textData.textTable.length && this._$focusIndex < 2) {
1359
- this._$focusIndex = 1;
1360
- return;
1361
- }
1362
- this._$focusIndex--;
1363
- this._$selectIndex = -1;
1364
- $clearTimeout(this._$timerId);
1365
- this._$blinking();
1366
- }
1367
- /**
1368
- * @return {void}
1369
- * @method
1370
- * @public
1371
- */
1372
- arrowRight() {
1373
- const textData = this.getTextData();
1374
- if (textData.textTable.length === this._$focusIndex) {
1375
- return;
1376
- }
1377
- this._$focusIndex++;
1378
- this._$selectIndex = -1;
1379
- $clearTimeout(this._$timerId);
1380
- this._$blinking();
1381
- }
1382
- /**
1383
- * @return {void}
1384
- * @method
1385
- * @public
1386
- */
1387
- deleteText() {
1388
- if (this._$compositionStartIndex > -1) {
1389
- return;
1390
- }
1391
- let minIndex = 0;
1392
- let maxIndex = 0;
1393
- if (this._$selectIndex > -1) {
1394
- minIndex = $Math.min(this._$focusIndex, this._$selectIndex);
1395
- maxIndex = $Math.max(this._$focusIndex, this._$selectIndex) + 1;
1396
- this._$focusIndex = minIndex;
1397
- }
1398
- else {
1399
- if (2 > this._$focusIndex) {
1400
- return;
1401
- }
1402
- this._$focusIndex--;
1403
- }
1404
- const textData = this.getTextData();
1405
- const textObject = textData.textTable[this._$focusIndex];
1406
- if (textObject && textObject.mode === "wrap") {
1407
- this._$focusIndex--;
1408
- }
1409
- const textFormats = $getArray();
1410
- let newText = "";
1411
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1412
- const textObject = textData.textTable[idx];
1413
- if (this._$focusIndex === idx || minIndex <= idx && maxIndex > idx) {
1414
- continue;
1415
- }
1416
- switch (textObject.mode) {
1417
- case "break":
1418
- textFormats.push(textObject.textFormat);
1419
- newText += "\n";
1420
- break;
1421
- case "text":
1422
- textFormats.push(textObject.textFormat);
1423
- newText += textObject.text;
1424
- break;
1425
- default:
1426
- continue;
1427
- }
1428
- }
1429
- if (textData.textTable.length === this._$focusIndex) {
1430
- textFormats.pop();
1431
- newText = newText.slice(0, -1);
1432
- }
1433
- this._$selectIndex = -1;
1434
- if (!newText) {
1435
- // reset
1436
- this.text = null;
1437
- this._$scrollX = 0;
1438
- this._$scrollY = 0;
1439
- this._$focusIndex = 0;
1440
- }
1441
- else {
1442
- const beforeTextWidth = this.textWidth;
1443
- const beforeTextHeight = this.textHeight;
1444
- this._$textFormats = textFormats;
1445
- this.text = newText;
1446
- if (this._$scrollX > 0) {
1447
- const textWidth = this.textWidth;
1448
- const width = this.width;
1449
- switch (true) {
1450
- case width > textWidth:
1451
- this._$scrollY = 0;
1452
- break;
1453
- case beforeTextWidth !== textWidth:
1454
- this._$scrollY -= (beforeTextWidth - textWidth)
1455
- / (textWidth / width);
1456
- break;
1457
- default:
1458
- break;
1459
- }
1460
- }
1461
- if (this._$scrollY > 0) {
1462
- const textHeight = this.textHeight;
1463
- const height = this.height;
1464
- switch (true) {
1465
- case height > textHeight:
1466
- this._$scrollY = 0;
1467
- break;
1468
- case beforeTextHeight !== textHeight:
1469
- this._$scrollY -= (beforeTextHeight - textHeight)
1470
- / (textHeight / height);
1471
- break;
1472
- default:
1473
- break;
1474
- }
1475
- }
1476
- // reset
1477
- this._$textFormats = null;
1478
- $poolArray(textFormats);
1479
- }
1480
- }
1481
- /**
1482
- * @return {void}
1483
- * @method
1484
- * @public
1485
- */
1486
- compositionStart() {
1487
- this._$compositionStartIndex = this._$focusIndex;
1488
- }
1489
- /**
1490
- * @param {string} texts
1491
- * @return {void}
1492
- * @method
1493
- * @public
1494
- */
1495
- compositionUpdate(texts) {
1496
- if (this._$compositionEndIndex > -1) {
1497
- const cacheIndex = this._$compositionStartIndex;
1498
- this._$focusIndex = this._$compositionStartIndex;
1499
- this._$selectIndex = this._$compositionEndIndex - 1;
1500
- this._$compositionStartIndex = -1;
1501
- this.deleteText();
1502
- // reset
1503
- this._$compositionStartIndex = cacheIndex;
1504
- this._$selectIndex = -1;
1505
- }
1506
- let textData = this.getTextData();
1507
- const textFormats = $getArray();
1508
- const length = texts.length;
1509
- let newText = "";
1510
- if (!textData.textTable.length) {
1511
- newText = texts;
1512
- this._$focusIndex = 1;
1513
- this._$compositionStartIndex = 1;
1514
- }
1515
- else {
1516
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1517
- const textObject = textData.textTable[idx];
1518
- if (this._$compositionStartIndex === idx) {
1519
- for (let idx = 0; idx < length; ++idx) {
1520
- textFormats.push(textObject.textFormat._$clone());
1521
- newText += texts[idx];
1522
- }
1523
- }
1524
- switch (textObject.mode) {
1525
- case "break":
1526
- textFormats.push(textObject.textFormat);
1527
- newText += "\n";
1528
- break;
1529
- case "text":
1530
- textFormats.push(textObject.textFormat);
1531
- newText += textObject.text;
1532
- break;
1533
- default:
1534
- continue;
1535
- }
1536
- }
1537
- // last text
1538
- if (this._$compositionStartIndex === textData.textTable.length) {
1539
- const textObject = textData.textTable[this._$compositionStartIndex - 1];
1540
- for (let idx = 0; idx < length; ++idx) {
1541
- textFormats.push(textObject.textFormat._$clone());
1542
- newText += texts[idx];
1543
- }
1544
- }
1545
- }
1546
- // update
1547
- if (textFormats.length) {
1548
- this._$textFormats = textFormats;
1549
- }
1550
- this.text = newText;
1551
- // reset
1552
- this._$textFormats = null;
1553
- $poolArray(textFormats);
1554
- textData = this.getTextData();
1555
- let index = this._$compositionStartIndex + length;
1556
- for (let idx = this._$compositionStartIndex; idx < index; ++idx) {
1557
- const textObject = textData.textTable[idx];
1558
- if (!textObject) {
1559
- break;
1560
- }
1561
- textObject.textFormat.underline = true;
1562
- if (textObject.mode === "wrap") {
1563
- if (idx === this._$compositionStartIndex) {
1564
- let subIndex = 1;
1565
- for (;;) {
1566
- const textObject = textData.textTable[idx - subIndex];
1567
- if (!textObject) {
1568
- break;
1569
- }
1570
- if (textObject.mode === "text") {
1571
- textObject.textFormat.underline = true;
1572
- break;
1573
- }
1574
- subIndex++;
1575
- }
1576
- }
1577
- if (idx > this._$compositionStartIndex) {
1578
- index++;
1579
- }
1580
- }
1581
- }
1582
- this._$compositionEndIndex = this._$focusIndex = index;
1583
- // move textarea element
1584
- const player = $currentPlayer();
1585
- const lastIndex = $Math.min(textData.textTable.length - 1, this._$compositionEndIndex);
1586
- const textObject = textData.textTable[lastIndex];
1587
- if (textObject) {
1588
- const line = textObject.line;
1589
- let offsetHeight = 0;
1590
- for (let idx = 0; idx < line; ++idx) {
1591
- offsetHeight += textData.heightTable[idx];
1592
- }
1593
- const verticalAlign = textData.ascentTable[line];
1594
- let offsetWidth = 0;
1595
- let targetIndex = this._$compositionEndIndex;
1596
- for (;;) {
1597
- const textObject = textData.textTable[targetIndex--];
1598
- if (!textObject || textObject.line !== line) {
1599
- break;
1600
- }
1601
- offsetWidth += textObject.w;
1602
- }
1603
- const lineObject = textData.lineTable[line];
1604
- const offsetAlign = this._$getAlignOffset(lineObject, this.width);
1605
- const point = this.localToGlobal(new Point(offsetWidth + offsetAlign + player.tx, offsetHeight + verticalAlign + player.ty));
1606
- const div = $document
1607
- .getElementById(player.contentElementId);
1608
- let left = point.x * player._$scale;
1609
- let top = point.y * player._$scale;
1610
- if (div) {
1611
- const rect = div.getBoundingClientRect();
1612
- left += rect.left;
1613
- top += rect.top;
1614
- }
1615
- $textArea.style.left = `${left}px`;
1616
- $textArea.style.top = `${top}px`;
1617
- }
1618
- }
1619
- /**
1620
- * @return {void}
1621
- * @method
1622
- * @public
1623
- */
1624
- compositionEnd() {
1625
- if (this._$compositionEndIndex > -1) {
1626
- const textData = this.getTextData();
1627
- for (let idx = this._$compositionStartIndex; idx < this._$compositionEndIndex; ++idx) {
1628
- const textObject = textData.textTable[idx];
1629
- textObject.textFormat.underline = false;
1630
- }
1631
- this._$focusIndex = this._$compositionEndIndex;
1632
- }
1633
- $textArea.blur();
1634
- $textArea.value = "";
1635
- if (this._$focus) {
1636
- $textArea.focus();
1637
- }
1638
- this._$selectIndex = -1;
1639
- this._$compositionStartIndex = -1;
1640
- this._$compositionEndIndex = -1;
1641
- }
1642
- /**
1643
- * @param {string} text
1644
- * @return {void}
1645
- * @method
1646
- * @public
1647
- */
1648
- insertText(texts) {
1649
- if (this._$focusIndex === -1
1650
- || this._$compositionStartIndex > -1) {
1651
- return;
1652
- }
1653
- if (this._$selectIndex > -1) {
1654
- this.deleteText();
1655
- }
1656
- const textData = this.getTextData();
1657
- const textFormats = $getArray();
1658
- let newText = "";
1659
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1660
- const textObject = textData.textTable[idx];
1661
- if (this._$focusIndex === idx) {
1662
- for (let idx = 0; idx < texts.length; ++idx) {
1663
- textFormats.push(textObject.textFormat);
1664
- newText += texts[idx];
1665
- }
1666
- }
1667
- switch (textObject.mode) {
1668
- case "break":
1669
- textFormats.push(textObject.textFormat);
1670
- newText += "\n";
1671
- break;
1672
- case "text":
1673
- textFormats.push(textObject.textFormat);
1674
- newText += textObject.text;
1675
- break;
1676
- default:
1677
- continue;
1678
- }
1679
- }
1680
- if (textData.textTable.length === this._$focusIndex) {
1681
- let textFormat;
1682
- if (textData.textTable.length) {
1683
- const textObject = textData.textTable[textData.textTable.length - 1];
1684
- textFormat = textObject.textFormat._$clone();
1685
- }
1686
- else {
1687
- textFormat = this.defaultTextFormat;
1688
- this._$focusIndex++;
1689
- }
1690
- for (let idx = 0; idx < texts.length; ++idx) {
1691
- textFormats.push(textFormat._$clone());
1692
- newText += texts[idx];
1693
- }
1694
- }
1695
- // update
1696
- this._$textFormats = textFormats;
1697
- this.text = newText;
1698
- // reset
1699
- this._$textFormats = null;
1700
- $poolArray(textFormats);
1701
- this._$focusIndex += texts.length;
1702
- this._$selectIndex = -1;
1703
- $textArea.value = "";
1704
- }
1705
- /**
1706
- * @return {void}
1707
- * @method
1708
- * @private
1709
- */
1710
- _$reset() {
1711
- this._$textData = null;
1712
- this._$doChanged();
1713
- $doUpdated();
1714
- // cache clear
1715
- $cacheStore.removeCache(this._$instanceId);
1716
- }
1717
- /**
1718
- * @return {void}
1719
- * @method
1720
- * @private
1721
- */
1722
- _$reload() {
1723
- this._$reset();
1724
- this.getTextData();
1725
- if (this._$autoSize === "none" && this._$autoFontSize) {
1726
- let maxFontSize = 0;
1727
- const textData = this.getTextData();
1728
- for (let idx = 0; idx < textData.textTable.length; ++idx) {
1729
- const textObject = textData.textTable[idx];
1730
- maxFontSize = $Math.max(maxFontSize, textObject.textFormat.size || 0);
1731
- }
1732
- let subSize = 1;
1733
- if (this.width && this.textWidth) {
1734
- while (maxFontSize > subSize
1735
- && this.textWidth + 4 > this.width) {
1736
- this._$reset();
1737
- this.getTextData(subSize++);
1738
- }
1739
- }
1740
- if (this.height && this.textHeight) {
1741
- while (maxFontSize > subSize
1742
- && this.textHeight + 4 > this.height) {
1743
- this._$reset();
1744
- this.getTextData(subSize++);
1745
- }
1746
- }
1747
- }
1748
- this._$resize();
1749
- }
1750
- /**
1751
- * @return {void}
1752
- * @method
1753
- * @private
1754
- */
1755
- _$blinking() {
1756
- this._$focusVisible = !this._$focusVisible;
1757
- this._$doChanged();
1758
- $doUpdated();
1759
- this._$timerId = +$setTimeout(() => {
1760
- this._$blinking();
1761
- }, 500);
1762
- this._$timerId |= 0;
1763
- }
1764
- /**
1765
- * @param {number} stage_x
1766
- * @param {number} stage_y
1767
- * @return {void}
1768
- * @method
1769
- * @private
1770
- */
1771
- _$setIndex(stage_x, stage_y) {
1772
- if (this._$type !== "input") {
1773
- return;
1774
- }
1775
- const textData = this.getTextData();
1776
- if (!textData.textTable.length) {
1777
- this._$focusIndex = 0;
1778
- this._$selectIndex = -1;
1779
- this.setBlinkingTimer();
1780
- return;
1781
- }
1782
- const width = this.width;
1783
- const height = this.height;
1784
- let tx = 0;
1785
- if (this._$scrollX > 0) {
1786
- tx += this._$scrollX * (this.textWidth - width) / width;
1787
- }
1788
- let ty = 0;
1789
- if (this._$scrollY) {
1790
- ty += this._$scrollY * (this.textHeight - height) / height;
1791
- }
1792
- const eventType = $getEventType();
1793
- const point = this.globalToLocal(new Point(stage_x, stage_y));
1794
- const x = point.x + tx;
1795
- const y = point.y + ty;
1796
- let w = 2;
1797
- let yMin = 2;
1798
- let yMax = yMin + textData.heightTable[0];
1799
- for (let idx = 1; idx < textData.textTable.length; ++idx) {
1800
- const textObject = textData.textTable[idx];
1801
- switch (textObject.mode) {
1802
- case "break":
1803
- case "wrap":
1804
- if (x > w && y > yMin
1805
- && yMax > y
1806
- && width > x) {
1807
- const index = idx;
1808
- switch (eventType) {
1809
- case $TOUCH_MOVE:
1810
- case $MOUSE_MOVE:
1811
- if (this._$selectIndex !== index && this._$focusIndex === index) {
1812
- this._$selectIndex = index;
1813
- if (this._$focusIndex !== index) {
1814
- this._$focusVisible = false;
1815
- $clearTimeout(this._$timerId);
1816
- this._$doChanged();
1817
- $doUpdated();
1818
- }
1819
- }
1820
- break;
1821
- default:
1822
- if (this._$focusIndex !== index || this._$selectIndex > -1) {
1823
- this._$focusIndex = index;
1824
- this._$selectIndex = -1;
1825
- this.setBlinkingTimer();
1826
- }
1827
- break;
1828
- }
1829
- return;
1830
- }
1831
- w = 2;
1832
- yMin += textData.heightTable[textObject.line - 1];
1833
- yMax = yMin + textData.heightTable[textObject.line];
1834
- break;
1835
- case "text":
1836
- if (idx === textData.textTable.length - 1
1837
- && x > w && y > yMin && yMax > y
1838
- && width > x) {
1839
- const index = textData.textTable.length;
1840
- switch (eventType) {
1841
- case $TOUCH_MOVE:
1842
- case $MOUSE_MOVE:
1843
- if (this._$selectIndex !== index) {
1844
- this._$selectIndex = index;
1845
- if (this._$focusIndex !== index) {
1846
- this._$focusVisible = false;
1847
- $clearTimeout(this._$timerId);
1848
- this._$doChanged();
1849
- $doUpdated();
1850
- }
1851
- }
1852
- break;
1853
- default:
1854
- if (this._$focusIndex !== index || this._$selectIndex > -1) {
1855
- this._$focusIndex = index;
1856
- this._$selectIndex = -1;
1857
- this.setBlinkingTimer();
1858
- }
1859
- break;
1860
- }
1861
- return;
1862
- }
1863
- if (x > w && y > yMin
1864
- && yMax > y
1865
- && w + textObject.w > x) {
1866
- let index = idx;
1867
- switch (eventType) {
1868
- case $TOUCH_MOVE:
1869
- case $MOUSE_MOVE:
1870
- if (this._$focusIndex > index) { // left
1871
- if (this._$focusIndex === index + 1) {
1872
- if (w + textObject.w / 2 < x) {
1873
- index = -1;
1874
- }
1875
- }
1876
- else {
1877
- if (w + textObject.w / 2 < x) {
1878
- index += 1;
1879
- }
1880
- }
1881
- }
1882
- else { // right
1883
- if (this._$focusIndex === index) {
1884
- if (w + textObject.w / 2 > x) {
1885
- index = -1;
1886
- }
1887
- }
1888
- else {
1889
- if (w + textObject.w / 2 > x) {
1890
- index -= 1;
1891
- }
1892
- }
1893
- }
1894
- if (this._$selectIndex !== index) {
1895
- this._$selectIndex = index;
1896
- if (this._$selectIndex > -1) {
1897
- this._$focusVisible = false;
1898
- $clearTimeout(this._$timerId);
1899
- }
1900
- this._$doChanged();
1901
- $doUpdated();
1902
- }
1903
- break;
1904
- default:
1905
- if (w + textObject.w / 2 < x) {
1906
- const textObject = textData.textTable[index + 1];
1907
- if (!textObject || textObject.mode === "text") {
1908
- index += 1;
1909
- }
1910
- }
1911
- if (this._$focusIndex !== index || this._$selectIndex > -1) {
1912
- this._$focusIndex = index;
1913
- this._$selectIndex = -1;
1914
- this.setBlinkingTimer();
1915
- }
1916
- break;
1917
- }
1918
- return;
1919
- }
1920
- w += textObject.w;
1921
- break;
1922
- default:
1923
- break;
1924
- }
1925
- }
1926
- switch (eventType) {
1927
- case $TOUCH_MOVE:
1928
- case $MOUSE_MOVE:
1929
- // reset
1930
- this._$focusIndex = -1;
1931
- this._$selectIndex = -1;
1932
- break;
1933
- default:
1934
- this._$focusIndex = textData.textTable.length;
1935
- this._$selectIndex = -1;
1936
- this.setBlinkingTimer();
1937
- break;
1938
- }
1939
- }
1940
- /**
1941
- * @return {void}
1942
- * @method
1943
- * @private
1944
- */
1945
- setBlinkingTimer() {
1946
- this._$focusVisible = false;
1947
- this._$doChanged();
1948
- $doUpdated();
1949
- $clearTimeout(this._$timerId);
1950
- this._$timerId = +$setTimeout(() => {
1951
- this._$blinking();
1952
- }, 500);
1953
- this._$timerId |= 0;
1954
- }
1955
- /**
1956
- * @return {void}
1957
- * @method
1958
- * @private
1959
- */
1960
- _$resize() {
1961
- // update bounds
1962
- if (this._$autoSize !== "none") {
1963
- const tf = this._$defaultTextFormat;
1964
- const width = this.textWidth + 4 + tf._$widthMargin();
1965
- if (this._$wordWrap) {
1966
- this._$bounds.xMax = this._$originBounds.xMax;
1967
- this._$bounds.xMin = this._$originBounds.xMin;
1968
- }
1969
- else {
1970
- switch (this._$autoSize) {
1971
- case "left":
1972
- this._$bounds.xMax = width + this._$bounds.xMin;
1973
- break;
1974
- case "center":
1975
- this._$bounds.xMax = width + this._$bounds.xMin;
1976
- break;
1977
- case "right":
1978
- this._$bounds.xMax = this._$originBounds.xMax
1979
- - (this._$originBounds.xMax - this._$originBounds.xMin
1980
- - (width - this._$originBounds.xMin));
1981
- break;
1982
- default:
1983
- break;
1984
- }
1985
- }
1986
- // set height
1987
- this._$bounds.yMax = this.textHeight + this._$originBounds.yMin + 4;
1988
- }
1989
- else {
1990
- if (this._$scrollEnabled) {
1991
- if (!this._$xScrollShape) {
1992
- this._$xScrollShape = new Shape();
1993
- this
1994
- ._$xScrollShape
1995
- .graphics
1996
- .beginFill("#000", 0.3)
1997
- .drawRoundRect(0, 0, 3, 3, 3);
1998
- this
1999
- ._$xScrollShape
2000
- .scale9Grid = new Rectangle(1.5, 1.5, 0.1, 0.1);
2001
- }
2002
- if (!this._$yScrollShape) {
2003
- this._$yScrollShape = new Shape();
2004
- this
2005
- ._$yScrollShape
2006
- .graphics
2007
- .beginFill("#000", 0.3)
2008
- .drawRoundRect(0, 0, 3, 3, 3);
2009
- this
2010
- ._$yScrollShape
2011
- .scale9Grid = new Rectangle(1.5, 1.5, 0.1, 0.1);
2012
- }
2013
- }
2014
- }
2015
- }
2016
- /**
2017
- * @param {object} text_object
2018
- * @param {number} width
2019
- * @return {number}
2020
- * @method
2021
- * @private
2022
- */
2023
- _$getAlignOffset(text_object, width) {
2024
- // default
2025
- const lineWidth = this
2026
- .getTextData()
2027
- .getLineWidth(text_object.line);
2028
- const textFormat = text_object.textFormat;
2029
- const leftMargin = textFormat.leftMargin || 0;
2030
- if (!this._$wordWrap && lineWidth > width) {
2031
- return $Math.max(0, leftMargin);
2032
- }
2033
- const rightMargin = textFormat.rightMargin || 0;
2034
- if (textFormat.align === "center" // format CENTER
2035
- || this._$autoSize === "center" // autoSize CENTER
2036
- ) {
2037
- return $Math.max(0, width / 2 - leftMargin - rightMargin - lineWidth / 2 - 2);
2038
- }
2039
- if (textFormat.align === "right" // format RIGHT
2040
- || this._$autoSize === "right" // autoSize RIGHT
2041
- ) {
2042
- return $Math.max(0, width - leftMargin - lineWidth - rightMargin - 4);
2043
- }
2044
- // autoSize LEFT
2045
- // format LEFT
2046
- return $Math.max(0, leftMargin);
2047
- }
2048
- /**
2049
- * @param {Float32Array} [matrix=null]
2050
- * @returns {object}
2051
- * @method
2052
- * @private
2053
- */
2054
- _$getBounds(matrix = null) {
2055
- if (matrix) {
2056
- let multiMatrix = matrix;
2057
- const rawMatrix = this._$transform._$rawMatrix();
2058
- if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
2059
- || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
2060
- || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
2061
- multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
2062
- }
2063
- return $boundsMatrix(this._$bounds, multiMatrix);
2064
- }
2065
- return $getBoundsObject(this._$bounds.xMin, this._$bounds.xMax, this._$bounds.yMin, this._$bounds.yMax);
2066
- }
2067
- /**
2068
- * @param {object} character
2069
- * @return {void}
2070
- * @method
2071
- * @private
2072
- */
2073
- _$buildCharacter(character) {
2074
- const textFormat = this._$defaultTextFormat;
2075
- textFormat.font = character.font;
2076
- textFormat.size = character.size | 0;
2077
- textFormat.align = character.align;
2078
- textFormat.color = character.color | 0;
2079
- textFormat.leading = character.leading;
2080
- textFormat.letterSpacing = character.letterSpacing;
2081
- textFormat.leftMargin = character.leftMargin;
2082
- textFormat.rightMargin = character.rightMargin;
2083
- switch (character.fontType) {
2084
- case 1:
2085
- textFormat.bold = true;
2086
- break;
2087
- case 2:
2088
- textFormat.italic = true;
2089
- break;
2090
- case 3:
2091
- textFormat.bold = true;
2092
- textFormat.italic = true;
2093
- break;
2094
- }
2095
- // setup
2096
- this._$type = character.inputType;
2097
- this._$multiline = !!character.multiline;
2098
- this._$wordWrap = !!character.wordWrap;
2099
- this._$border = !!character.border;
2100
- this._$scrollEnabled = !!character.scroll;
2101
- this._$thickness = character.thickness | 0;
2102
- this._$thicknessColor = character.thicknessColor | 0;
2103
- // bounds
2104
- this._$bounds.xMin = character.originBounds.xMin;
2105
- this._$bounds.xMax = character.originBounds.xMax;
2106
- this._$bounds.yMin = character.originBounds.yMin;
2107
- this._$bounds.yMax = character.originBounds.yMax;
2108
- this._$originBounds.xMin = character.originBounds.xMin;
2109
- this._$originBounds.xMax = character.originBounds.xMax;
2110
- this._$originBounds.yMin = character.originBounds.yMin;
2111
- this._$originBounds.yMax = character.originBounds.yMax;
2112
- switch (character.autoSize) {
2113
- case 1:
2114
- this.autoSize = character.align;
2115
- break;
2116
- case 2:
2117
- this.autoFontSize = true;
2118
- break;
2119
- }
2120
- this.text = character.text;
2121
- if ($rendererWorker && this._$stage) {
2122
- this._$createWorkerInstance();
2123
- }
2124
- }
2125
- /**
2126
- * @param {object} character
2127
- * @return {void}
2128
- * @method
2129
- * @private
2130
- */
2131
- _$sync(character) {
2132
- this._$buildCharacter(character);
2133
- }
2134
- /**
2135
- * @param {object} tag
2136
- * @param {DisplayObjectContainer} parent
2137
- * @return {object}
2138
- * @method
2139
- * @private
2140
- */
2141
- _$build(tag, parent) {
2142
- const character = this
2143
- ._$baseBuild(tag, parent);
2144
- this._$buildCharacter(character);
2145
- return character;
2146
- }
2147
- /**
2148
- * @param {CanvasToWebGLContext} context
2149
- * @param {Float32Array} matrix
2150
- * @returns {void}
2151
- * @method
2152
- * @private
2153
- */
2154
- _$clip(context, matrix) {
2155
- // size
2156
- const bounds = this._$getBounds();
2157
- const xMax = bounds.xMax;
2158
- const xMin = bounds.xMin;
2159
- const yMax = bounds.yMax;
2160
- const yMin = bounds.yMin;
2161
- $poolBoundsObject(bounds);
2162
- const width = $Math.ceil($Math.abs(xMax - xMin));
2163
- const height = $Math.ceil($Math.abs(yMax - yMin));
2164
- if (!width || !height) {
2165
- return;
2166
- }
2167
- let multiMatrix = matrix;
2168
- const rawMatrix = this._$transform._$rawMatrix();
2169
- if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
2170
- || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
2171
- || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
2172
- multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
2173
- }
2174
- context.reset();
2175
- context.setTransform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
2176
- context.beginPath();
2177
- context.moveTo(0, 0);
2178
- context.lineTo(width, 0);
2179
- context.lineTo(width, height);
2180
- context.lineTo(0, height);
2181
- context.lineTo(0, 0);
2182
- context.clip();
2183
- if (multiMatrix !== matrix) {
2184
- $poolFloat32Array6(multiMatrix);
2185
- }
2186
- }
2187
- /**
2188
- * @param {CanvasToWebGLContext} context
2189
- * @param {Float32Array} matrix
2190
- * @param {Float32Array} color_transform
2191
- * @return {void}
2192
- * @method
2193
- * @private
2194
- */
2195
- _$draw(context, matrix, color_transform) {
2196
- if (!this._$visible) {
2197
- return;
2198
- }
2199
- if (this._$focusIndex === -1
2200
- && !this._$background
2201
- && !this._$border
2202
- && !this.text) {
2203
- return;
2204
- }
2205
- let multiColor = color_transform;
2206
- const rawColor = this._$transform._$rawColorTransform();
2207
- if (rawColor[0] !== 1 || rawColor[1] !== 1
2208
- || rawColor[2] !== 1 || rawColor[3] !== 1
2209
- || rawColor[4] !== 0 || rawColor[5] !== 0
2210
- || rawColor[6] !== 0 || rawColor[7] !== 0) {
2211
- multiColor = $multiplicationColor(color_transform, rawColor);
2212
- }
2213
- const alpha = $clamp(multiColor[3] + multiColor[7] / 255, 0, 1);
2214
- if (!alpha) {
2215
- return;
2216
- }
2217
- let multiMatrix = matrix;
2218
- const rawMatrix = this._$transform._$rawMatrix();
2219
- if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
2220
- || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
2221
- || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
2222
- multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
2223
- }
2224
- const baseBounds = this._$getBounds(null);
2225
- baseBounds.xMin -= this._$thickness;
2226
- baseBounds.xMax += this._$thickness;
2227
- baseBounds.yMin -= this._$thickness;
2228
- baseBounds.yMax += this._$thickness;
2229
- const bounds = $boundsMatrix(baseBounds, multiMatrix);
2230
- const xMax = +bounds.xMax;
2231
- const xMin = +bounds.xMin;
2232
- const yMax = +bounds.yMax;
2233
- const yMin = +bounds.yMin;
2234
- $poolBoundsObject(bounds);
2235
- const width = $Math.ceil($Math.abs(xMax - xMin));
2236
- const height = $Math.ceil($Math.abs(yMax - yMin));
2237
- switch (true) {
2238
- case width === 0:
2239
- case height === 0:
2240
- case width === -$Infinity:
2241
- case height === -$Infinity:
2242
- case width === $Infinity:
2243
- case height === $Infinity:
2244
- return;
2245
- default:
2246
- break;
2247
- }
2248
- let xScale = +$Math.sqrt(multiMatrix[0] * multiMatrix[0]
2249
- + multiMatrix[1] * multiMatrix[1]);
2250
- if (!$Number.isInteger(xScale)) {
2251
- const value = xScale.toString();
2252
- const index = value.indexOf("e");
2253
- if (index !== -1) {
2254
- xScale = +value.slice(0, index);
2255
- }
2256
- xScale = +xScale.toFixed(4);
2257
- }
2258
- let yScale = +$Math.sqrt(multiMatrix[2] * multiMatrix[2]
2259
- + multiMatrix[3] * multiMatrix[3]);
2260
- if (!$Number.isInteger(yScale)) {
2261
- const value = yScale.toString();
2262
- const index = value.indexOf("e");
2263
- if (index !== -1) {
2264
- yScale = +value.slice(0, index);
2265
- }
2266
- yScale = +yScale.toFixed(4);
2267
- }
2268
- const filters = this._$filters || this.filters;
2269
- const canApply = filters !== null
2270
- && filters.length > 0
2271
- && this._$canApply(filters);
2272
- let filterBounds = $getBoundsObject(0, width, 0, height);
2273
- if (canApply && filters) {
2274
- for (let idx = 0; idx < filters.length; ++idx) {
2275
- filterBounds = filters[idx]
2276
- ._$generateFilterRect(filterBounds, xScale, yScale);
2277
- }
2278
- }
2279
- // cache current buffer
2280
- const manager = context.frameBuffer;
2281
- const currentAttachment = manager.currentAttachment;
2282
- if (!currentAttachment
2283
- || xMin - filterBounds.xMin > currentAttachment.width
2284
- || yMin - filterBounds.yMin > currentAttachment.height) {
2285
- $poolBoundsObject(filterBounds);
2286
- return;
2287
- }
2288
- if (0 > xMin + filterBounds.xMax || 0 > yMin + filterBounds.yMax) {
2289
- $poolBoundsObject(filterBounds);
2290
- return;
2291
- }
2292
- $poolBoundsObject(filterBounds);
2293
- // texture is small or renew
2294
- if (this._$isUpdated()) {
2295
- $cacheStore.removeCache(this._$instanceId);
2296
- context.cachePosition = null;
2297
- this._$cacheKeys.length = 0;
2298
- }
2299
- if (!this._$cacheKeys.length
2300
- || this._$cacheParams[0] !== xScale
2301
- || this._$cacheParams[1] !== yScale
2302
- || this._$cacheParams[2] !== color_transform[7]) {
2303
- const keys = $getArray(xScale, yScale);
2304
- this._$cacheKeys = $cacheStore.generateKeys(this._$instanceId, keys);
2305
- $poolArray(keys);
2306
- this._$cacheParams[0] = xScale;
2307
- this._$cacheParams[1] = yScale;
2308
- this._$cacheParams[2] = color_transform[7];
2309
- }
2310
- const blendMode = this._$blendMode || this.blendMode;
2311
- context.cachePosition = $cacheStore.get(this._$cacheKeys);
2312
- if (!context.cachePosition) {
2313
- // resize
2314
- const lineWidth = $Math.min(1, $Math.max(xScale, yScale));
2315
- const width = $Math.ceil($Math.abs(baseBounds.xMax - baseBounds.xMin) * xScale);
2316
- const height = $Math.ceil($Math.abs(baseBounds.yMax - baseBounds.yMin) * yScale);
2317
- // new canvas
2318
- const canvas = $cacheStore.getCanvas();
2319
- canvas.width = width + lineWidth * 2;
2320
- canvas.height = height + lineWidth * 2;
2321
- const ctx = canvas.getContext("2d");
2322
- if (!ctx) {
2323
- throw new Error("the context is null.");
2324
- }
2325
- // border and background
2326
- if (this._$background || this._$border) {
2327
- ctx.beginPath();
2328
- ctx.moveTo(0, 0);
2329
- ctx.lineTo(width, 0);
2330
- ctx.lineTo(width, height);
2331
- ctx.lineTo(0, height);
2332
- ctx.lineTo(0, 0);
2333
- if (this._$background) {
2334
- const rgb = $intToRGBA(this._$backgroundColor);
2335
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + multiColor[7], 255)) / 255;
2336
- ctx.fillStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2337
- ctx.fill();
2338
- }
2339
- if (this._$border) {
2340
- const rgb = $intToRGBA(this._$borderColor);
2341
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + multiColor[7], 255)) / 255;
2342
- ctx.lineWidth = lineWidth;
2343
- ctx.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2344
- ctx.stroke();
2345
- }
2346
- }
2347
- // mask start
2348
- ctx.save();
2349
- ctx.beginPath();
2350
- ctx.moveTo(2, 2);
2351
- ctx.lineTo(width - 2, 2);
2352
- ctx.lineTo(width - 2, height - 2);
2353
- ctx.lineTo(2, height - 2);
2354
- ctx.lineTo(2, 2);
2355
- ctx.clip();
2356
- let tx = 2;
2357
- if (this._$scrollX > 0) {
2358
- const scaleX = (this.textWidth - this.width) / this.width;
2359
- tx += -this._$scrollX * scaleX;
2360
- }
2361
- let ty = 2;
2362
- if (this._$scrollY > 0) {
2363
- const scaleY = (this.textHeight - this.height) / this.height;
2364
- ty += -this._$scrollY * scaleY;
2365
- }
2366
- ctx.setTransform(xScale, 0, 0, yScale, tx * xScale, ty * yScale);
2367
- ctx.beginPath();
2368
- this._$doDraw(ctx, multiColor, width / xScale, lineWidth);
2369
- ctx.restore();
2370
- const position = manager
2371
- .createCachePosition(width, height);
2372
- const texture = manager
2373
- .createTextureFromCanvas(ctx.canvas);
2374
- context.drawTextureFromRect(texture, position);
2375
- // set cache
2376
- context.cachePosition = position;
2377
- $cacheStore.set(this._$cacheKeys, position);
2378
- // destroy cache
2379
- $cacheStore.destroy(ctx);
2380
- }
2381
- let drawFilter = false;
2382
- let offsetX = 0;
2383
- let offsetY = 0;
2384
- if (filters && filters.length
2385
- && this._$canApply(filters)) {
2386
- drawFilter = true;
2387
- const position = this._$drawFilter(context, multiMatrix, filters, width, height);
2388
- if (position.offsetX) {
2389
- offsetX = position.offsetX;
2390
- }
2391
- if (position.offsetY) {
2392
- offsetY = position.offsetY;
2393
- }
2394
- // update
2395
- context.cachePosition = position;
2396
- }
2397
- const radianX = $Math.atan2(multiMatrix[1], multiMatrix[0]);
2398
- const radianY = $Math.atan2(-multiMatrix[2], multiMatrix[3]);
2399
- if (!drawFilter && (radianX || radianY)) {
2400
- const tx = baseBounds.xMin * xScale;
2401
- const ty = baseBounds.yMin * yScale;
2402
- const cosX = $Math.cos(radianX);
2403
- const sinX = $Math.sin(radianX);
2404
- const cosY = $Math.cos(radianY);
2405
- const sinY = $Math.sin(radianY);
2406
- context.setTransform(cosX, sinX, -sinY, cosY, tx * cosX - ty * sinY + multiMatrix[4], tx * sinX + ty * cosY + multiMatrix[5]);
2407
- }
2408
- else {
2409
- context.setTransform(1, 0, 0, 1, xMin - offsetX, yMin - offsetY);
2410
- }
2411
- // draw
2412
- if (context.cachePosition) {
2413
- context.globalAlpha = alpha;
2414
- context.imageSmoothingEnabled = true;
2415
- context.globalCompositeOperation = blendMode;
2416
- context.drawInstance(xMin - offsetX, yMin - offsetY, xMax, yMax, color_transform);
2417
- // cache position clear
2418
- context.cachePosition = null;
2419
- }
2420
- // get cache
2421
- $poolBoundsObject(baseBounds);
2422
- // pool
2423
- if (multiMatrix !== matrix) {
2424
- $poolFloat32Array6(multiMatrix);
2425
- }
2426
- if (multiColor !== color_transform) {
2427
- $poolFloat32Array8(multiColor);
2428
- }
2429
- }
2430
- /**
2431
- * @param {CanvasRenderingContext2D} context
2432
- * @param {Float32Array} color_transform
2433
- * @param {number} width
2434
- * @param {number} line_width
2435
- * @return {void}
2436
- * @method
2437
- * @private
2438
- */
2439
- _$doDraw(context, color_transform, width, line_width) {
2440
- // init
2441
- const textData = this.getTextData();
2442
- if (!textData.textTable.length
2443
- && this._$focusIndex > -1
2444
- && this._$focusVisible) {
2445
- const textFormat = this._$defaultTextFormat;
2446
- const rgb = $intToRGBA(textFormat.color || 0);
2447
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + color_transform[7], 255)) / 255;
2448
- context.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2449
- context.beginPath();
2450
- context.moveTo(0, 0);
2451
- context.lineTo(0, 0 + (textFormat.size || 12));
2452
- context.stroke();
2453
- return;
2454
- }
2455
- if (this._$selectIndex > -1 && this._$focusIndex > -1) {
2456
- const range = textData.textTable.length - 1;
2457
- let minIndex = 0;
2458
- let maxIndex = 0;
2459
- if (this._$focusIndex <= this._$selectIndex) {
2460
- minIndex = $Math.min(this._$focusIndex, range);
2461
- maxIndex = $Math.min(this._$selectIndex, range);
2462
- }
2463
- else {
2464
- minIndex = $Math.min(this._$selectIndex, range);
2465
- maxIndex = $Math.min(this._$focusIndex - 1, range);
2466
- }
2467
- const textObject = textData.textTable[minIndex];
2468
- const lineObject = textData.lineTable[textObject.line];
2469
- const offsetAlign = this._$getAlignOffset(lineObject, width);
2470
- let x = 0;
2471
- if (minIndex && textObject.mode === "text") {
2472
- let idx = minIndex;
2473
- while (idx) {
2474
- const textObject = textData.textTable[--idx];
2475
- if (textObject.mode !== "text") {
2476
- break;
2477
- }
2478
- x += textObject.w;
2479
- }
2480
- }
2481
- context.fillStyle = "#b4d7ff";
2482
- let w = 0;
2483
- for (let idx = minIndex; idx <= maxIndex; ++idx) {
2484
- const textObject = textData.textTable[idx];
2485
- if (textObject.mode === "text") {
2486
- w += textObject.w;
2487
- if (idx !== maxIndex) {
2488
- continue;
2489
- }
2490
- }
2491
- let y = 0;
2492
- const line = textObject.mode === "text"
2493
- ? textObject.line
2494
- : textObject.line - 1;
2495
- for (let idx = 0; idx < line; ++idx) {
2496
- y += textData.heightTable[idx];
2497
- }
2498
- context.beginPath();
2499
- context.rect(x, y, w + offsetAlign, textData.heightTable[line]);
2500
- context.fill();
2501
- x = 0;
2502
- w = 0;
2503
- }
2504
- }
2505
- const tw = this.width;
2506
- let scrollX = 0;
2507
- if (this._$scrollX > 0) {
2508
- const scaleX = (this.textWidth - tw) / tw;
2509
- scrollX = this._$scrollX * scaleX;
2510
- }
2511
- const limitWidth = tw + scrollX;
2512
- const th = this.height;
2513
- let scrollY = 0;
2514
- if (this._$scrollY > 0) {
2515
- const scaleY = (this.textHeight - th) / th;
2516
- scrollY = this._$scrollY * scaleY;
2517
- }
2518
- const limitHeight = th + scrollY;
2519
- // setup
2520
- let offsetWidth = 0;
2521
- let offsetHeight = 0;
2522
- let offsetAlign = 0;
2523
- let verticalAlign = 0;
2524
- let skip = false;
2525
- let currentIndex = -1;
2526
- for (let idx = 0; idx < textData.textTable.length; ++idx) {
2527
- const textObject = textData.textTable[idx];
2528
- if (textObject.mode === "text" || textObject.mode === "break") {
2529
- currentIndex++;
2530
- if (this._$stopIndex > -1 && currentIndex > this._$stopIndex) {
2531
- break;
2532
- }
2533
- }
2534
- if (skip && textObject.mode === "text") {
2535
- continue;
2536
- }
2537
- const textFormat = textObject.textFormat;
2538
- // check
2539
- if (this._$autoSize === "none") {
2540
- if (offsetHeight > limitHeight) {
2541
- break;
2542
- }
2543
- if (textObject.mode === "text") {
2544
- if (scrollX > offsetWidth + textObject.w
2545
- || offsetWidth > limitWidth) {
2546
- offsetWidth += textObject.w;
2547
- continue;
2548
- }
2549
- }
2550
- }
2551
- // color setting
2552
- const rgb = $intToRGBA(textFormat.color || 0);
2553
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + color_transform[7], 255)) / 255;
2554
- context.fillStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2555
- // focus line
2556
- if (this._$focusVisible && this._$focusIndex === idx) {
2557
- const x = offsetWidth + offsetAlign + 0.1;
2558
- let line = textObject.line;
2559
- let h = textObject.y;
2560
- let y = textData.ascentTable[line];
2561
- if (textObject.mode !== "text") {
2562
- h = textObject.mode === "break"
2563
- ? textObject.h
2564
- : textData.ascentTable[line - 1];
2565
- if (line > 0 && !textData.ascentTable[line - 1]) {
2566
- line = textObject.line;
2567
- y = textData.ascentTable[line - 1];
2568
- }
2569
- else {
2570
- line = textObject.line - 1;
2571
- y = textData.ascentTable[line];
2572
- }
2573
- }
2574
- for (let idx = 0; idx < line; ++idx) {
2575
- y += textData.heightTable[idx];
2576
- }
2577
- context.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2578
- context.beginPath();
2579
- context.moveTo(x, y);
2580
- context.lineTo(x, y - h);
2581
- context.stroke();
2582
- }
2583
- if (this._$thickness) {
2584
- const rgb = $intToRGBA(this._$thicknessColor);
2585
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + color_transform[7], 255)) / 255;
2586
- context.lineWidth = this._$thickness;
2587
- context.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2588
- }
2589
- const line = textObject.line | 0;
2590
- switch (textObject.mode) {
2591
- case "break":
2592
- case "wrap":
2593
- // reset width
2594
- offsetWidth = 0;
2595
- if (line) {
2596
- offsetHeight += textData.heightTable[line - 1];
2597
- }
2598
- if (scrollY > offsetHeight + textData.heightTable[line]) {
2599
- skip = true;
2600
- continue;
2601
- }
2602
- verticalAlign = textData.ascentTable[line];
2603
- offsetAlign = this._$getAlignOffset(textObject, width);
2604
- skip = false;
2605
- break;
2606
- case "text":
2607
- {
2608
- context.beginPath();
2609
- context.font = $generateFontStyle(textFormat.font || "", textFormat.size || 0, !!textFormat.italic, !!textFormat.bold);
2610
- const x = offsetWidth + offsetAlign;
2611
- const y = offsetHeight + verticalAlign;
2612
- if (textFormat.underline) {
2613
- const rgb = $intToRGBA(textFormat.color || 0);
2614
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + color_transform[7], 255)) / 255;
2615
- context.lineWidth = line_width;
2616
- context.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2617
- context.beginPath();
2618
- context.moveTo(x, y + 2);
2619
- context.lineTo(x + textObject.w, y + 2);
2620
- context.stroke();
2621
- }
2622
- if (this._$thickness) {
2623
- context.strokeText(textObject.text, x, y);
2624
- }
2625
- context.fillText(textObject.text, x, y);
2626
- offsetWidth += textObject.w;
2627
- }
2628
- break;
2629
- // case "image":
2630
- // if (!obj.loaded) {
2631
- // continue;
2632
- // }
2633
- // context.beginPath();
2634
- // context.drawImage(obj.image,
2635
- // obj.hspace, obj.y,
2636
- // obj.width, obj.height
2637
- // );
2638
- // break;
2639
- }
2640
- }
2641
- if (this._$focusVisible && this._$focusIndex >= textData.textTable.length) {
2642
- const textObject = textData.textTable[this._$focusIndex - 1];
2643
- if (textObject) {
2644
- const rgb = $intToRGBA(textObject.textFormat.color || 0);
2645
- const alpha = $Math.max(0, $Math.min(rgb.A * 255 + color_transform[7], 255)) / 255;
2646
- context.strokeStyle = `rgba(${rgb.R},${rgb.G},${rgb.B},${alpha})`;
2647
- const x = offsetWidth + offsetAlign + 0.1;
2648
- const y = offsetHeight + verticalAlign;
2649
- context.beginPath();
2650
- if (textObject.mode === "text") {
2651
- context.moveTo(x, y - textObject.y);
2652
- context.lineTo(x, y);
2653
- }
2654
- else {
2655
- context.moveTo(x, y + textObject.h);
2656
- context.lineTo(x, y);
2657
- }
2658
- context.stroke();
2659
- }
2660
- }
2661
- }
2662
- /**
2663
- * @param {CanvasRenderingContext2D} context
2664
- * @param {Float32Array} matrix
2665
- * @param {object} options
2666
- * @return {boolean}
2667
- * @method
2668
- * @private
2669
- */
2670
- _$mouseHit(context, matrix, options) {
2671
- if (!this._$visible) {
2672
- return false;
2673
- }
2674
- return this._$hit(context, matrix, options);
2675
- }
2676
- /**
2677
- * @param {CanvasRenderingContext2D} context
2678
- * @param {Float32Array} matrix
2679
- * @param {object} options
2680
- * @return {boolean}
2681
- * @method
2682
- * @private
2683
- */
2684
- _$hit(context, matrix, options) {
2685
- let multiMatrix = matrix;
2686
- const rawMatrix = this._$transform._$rawMatrix();
2687
- if (rawMatrix[0] !== 1 || rawMatrix[1] !== 0
2688
- || rawMatrix[2] !== 0 || rawMatrix[3] !== 1
2689
- || rawMatrix[4] !== 0 || rawMatrix[5] !== 0) {
2690
- multiMatrix = $multiplicationMatrix(matrix, rawMatrix);
2691
- }
2692
- const baseBounds = this._$getBounds(null);
2693
- const bounds = $boundsMatrix(baseBounds, multiMatrix);
2694
- const xMax = +bounds.xMax;
2695
- const xMin = +bounds.xMin;
2696
- const yMax = +bounds.yMax;
2697
- const yMin = +bounds.yMin;
2698
- $poolBoundsObject(bounds);
2699
- $poolBoundsObject(baseBounds);
2700
- const width = $Math.ceil($Math.abs(xMax - xMin));
2701
- const height = $Math.ceil($Math.abs(yMax - yMin));
2702
- context.setTransform(1, 0, 0, 1, xMin, yMin);
2703
- context.beginPath();
2704
- context.moveTo(0, 0);
2705
- context.lineTo(width, 0);
2706
- context.lineTo(width, height);
2707
- context.lineTo(0, height);
2708
- context.lineTo(0, 0);
2709
- if (multiMatrix !== matrix) {
2710
- $poolFloat32Array6(multiMatrix);
2711
- }
2712
- return context.isPointInPath(options.x, options.y);
2713
- }
2714
- /**
2715
- * @return {void}
2716
- * @method
2717
- * @private
2718
- */
2719
- _$createWorkerInstance() {
2720
- if (this._$created || !$rendererWorker) {
2721
- return;
2722
- }
2723
- this._$created = true;
2724
- const bounds = this._$getBounds();
2725
- const message = {
2726
- "command": "createTextField",
2727
- "buffer": new Float32Array(),
2728
- "instanceId": this._$instanceId,
2729
- "parentId": this._$parent ? this._$parent._$instanceId : -1,
2730
- "xMin": bounds.xMin,
2731
- "yMin": bounds.yMin,
2732
- "xMax": bounds.xMax,
2733
- "yMax": bounds.yMax,
2734
- "limitWidth": this.width,
2735
- "limitHeight": this.height,
2736
- "textHeight": this.textHeight,
2737
- "autoSize": this._$autoSize,
2738
- "wordWrap": this._$wordWrap,
2739
- "border": this._$border,
2740
- "background": this._$background,
2741
- "thickness": this._$thickness
2742
- };
2743
- if (this._$border) {
2744
- message.borderColor = this._$borderColor;
2745
- }
2746
- if (this._$background) {
2747
- message.backgroundColor = this._$backgroundColor;
2748
- }
2749
- if (this._$thickness) {
2750
- message.thicknessColor = this._$backgroundColor;
2751
- }
2752
- if (this._$characterId > -1) {
2753
- message.characterId = this._$characterId;
2754
- }
2755
- if (this._$loaderInfo) {
2756
- message.loaderInfoId = this._$loaderInfo._$id;
2757
- }
2758
- if (this._$scale9Grid) {
2759
- message.grid = {
2760
- "x": this._$scale9Grid.x,
2761
- "y": this._$scale9Grid.y,
2762
- "w": this._$scale9Grid.width,
2763
- "h": this._$scale9Grid.height
2764
- };
2765
- }
2766
- $rendererWorker.postMessage(message);
2767
- }
2768
- /**
2769
- * @return {void}
2770
- * @method
2771
- * @private
2772
- */
2773
- _$postProperty() {
2774
- if (!$rendererWorker) {
2775
- return;
2776
- }
2777
- const message = this._$createMessage();
2778
- const bounds = this._$getBounds(null);
2779
- message.xMin = bounds.xMin;
2780
- message.yMin = bounds.yMin;
2781
- message.xMax = bounds.xMax;
2782
- message.yMax = bounds.yMax;
2783
- $poolBoundsObject(bounds);
2784
- if (this._$isUpdated()) {
2785
- message.limitWidth = this.width;
2786
- message.limitHeight = this.height;
2787
- message.textHeight = this.textHeight;
2788
- message.autoSize = this._$autoSize;
2789
- message.wordWrap = this._$wordWrap;
2790
- message.border = this._$border;
2791
- if (this._$border) {
2792
- message.borderColor = this._$borderColor;
2793
- }
2794
- message.background = this._$background;
2795
- if (this._$background) {
2796
- message.backgroundColor = this._$backgroundColor;
2797
- }
2798
- message.thickness = this._$thickness;
2799
- if (this._$thickness) {
2800
- message.thicknessColor = this._$backgroundColor;
2801
- }
2802
- }
2803
- $rendererWorker.postMessage(message);
2804
- this._$posted = true;
2805
- this._$updated = false;
2806
- }
2807
- }