@next2d/webgpu 3.0.5 → 3.1.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 (296) hide show
  1. package/package.json +3 -3
  2. package/src/AtlasManager.d.ts +75 -6
  3. package/src/AtlasManager.js +106 -30
  4. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.d.ts +2 -2
  5. package/src/AttachmentManager/service/AttachmentManagerCreateAttachmentObjectService.js +3 -3
  6. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.d.ts +4 -4
  7. package/src/AttachmentManager/service/AttachmentManagerCreateColorBufferService.js +4 -4
  8. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.d.ts +5 -5
  9. package/src/AttachmentManager/service/AttachmentManagerCreateStencilBufferService.js +6 -6
  10. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.d.ts +6 -6
  11. package/src/AttachmentManager/service/AttachmentManagerCreateTextureObjectService.js +7 -7
  12. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.d.ts +6 -6
  13. package/src/AttachmentManager/service/AttachmentManagerGetColorBufferService.js +9 -9
  14. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.d.ts +6 -6
  15. package/src/AttachmentManager/service/AttachmentManagerGetStencilBufferService.js +10 -10
  16. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.d.ts +7 -7
  17. package/src/AttachmentManager/service/AttachmentManagerGetTextureService.js +10 -10
  18. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.d.ts +3 -3
  19. package/src/AttachmentManager/service/AttachmentManagerReleaseTextureService.js +7 -7
  20. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.d.ts +10 -10
  21. package/src/AttachmentManager/usecase/AttachmentManagerGetAttachmentObjectUseCase.js +16 -16
  22. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.d.ts +6 -6
  23. package/src/AttachmentManager/usecase/AttachmentManagerReleaseAttachmentUseCase.js +10 -10
  24. package/src/AttachmentManager.d.ts +28 -6
  25. package/src/AttachmentManager.js +28 -23
  26. package/src/BezierConverter/BezierConverter.d.ts +9 -3
  27. package/src/BezierConverter/BezierConverter.js +5 -3
  28. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.d.ts +2 -13
  29. package/src/BezierConverter/usecase/BezierConverterAdaptiveCubicToQuadUseCase.js +13 -25
  30. package/src/Blend/BlendInstancedManager.d.ts +19 -15
  31. package/src/Blend/BlendInstancedManager.js +35 -22
  32. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.d.ts +9 -2
  33. package/src/Blend/usecase/BlendApplyComplexBlendUseCase.js +28 -17
  34. package/src/Blend.d.ts +20 -2
  35. package/src/Blend.js +20 -4
  36. package/src/BufferManager/service/BufferManagerReleaseUniformBufferService.js +2 -2
  37. package/src/BufferManager/service/BufferManagerReleaseVertexBufferService.js +2 -2
  38. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.d.ts +1 -0
  39. package/src/BufferManager/service/BufferManagerUpdateIndirectBufferService.js +1 -0
  40. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.d.ts +1 -0
  41. package/src/BufferManager/usecase/BufferManagerCleanupStorageBuffersUseCase.js +1 -0
  42. package/src/BufferManager.d.ts +108 -43
  43. package/src/BufferManager.js +113 -153
  44. package/src/Context/service/ContextComputeBitmapMatrixService.d.ts +7 -0
  45. package/src/Context/service/ContextComputeBitmapMatrixService.js +7 -0
  46. package/src/Context/service/ContextComputeGradientMatrixService.d.ts +9 -1
  47. package/src/Context/service/ContextComputeGradientMatrixService.js +15 -7
  48. package/src/Context/service/ContextFillSimpleService.d.ts +14 -0
  49. package/src/Context/service/ContextFillSimpleService.js +14 -0
  50. package/src/Context/service/ContextFillWithStencilMainService.d.ts +11 -0
  51. package/src/Context/service/ContextFillWithStencilMainService.js +11 -0
  52. package/src/Context/service/ContextFillWithStencilService.d.ts +11 -0
  53. package/src/Context/service/ContextFillWithStencilService.js +11 -0
  54. package/src/Context/usecase/ContextApplyFilterUseCase.d.ts +17 -0
  55. package/src/Context/usecase/ContextApplyFilterUseCase.js +201 -62
  56. package/src/Context/usecase/ContextBitmapFillUseCase.d.ts +23 -0
  57. package/src/Context/usecase/ContextBitmapFillUseCase.js +47 -0
  58. package/src/Context/usecase/ContextBitmapStrokeUseCase.d.ts +23 -0
  59. package/src/Context/usecase/ContextBitmapStrokeUseCase.js +35 -0
  60. package/src/Context/usecase/ContextClipUseCase.d.ts +15 -0
  61. package/src/Context/usecase/ContextClipUseCase.js +19 -0
  62. package/src/Context/usecase/ContextContainerEndLayerUseCase.d.ts +21 -1
  63. package/src/Context/usecase/ContextContainerEndLayerUseCase.js +195 -104
  64. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.d.ts +13 -0
  65. package/src/Context/usecase/ContextDrawArraysInstancedUseCase.js +41 -20
  66. package/src/Context/usecase/ContextDrawIndirectUseCase.d.ts +16 -1
  67. package/src/Context/usecase/ContextDrawIndirectUseCase.js +53 -30
  68. package/src/Context/usecase/ContextGradientFillUseCase.d.ts +23 -0
  69. package/src/Context/usecase/ContextGradientFillUseCase.js +47 -0
  70. package/src/Context/usecase/ContextGradientStrokeUseCase.d.ts +23 -0
  71. package/src/Context/usecase/ContextGradientStrokeUseCase.js +35 -0
  72. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.d.ts +13 -1
  73. package/src/Context/usecase/ContextProcessComplexBlendQueueUseCase.js +126 -60
  74. package/src/Context.d.ts +445 -63
  75. package/src/Context.js +566 -144
  76. package/src/FillTexturePool.d.ts +39 -0
  77. package/src/FillTexturePool.js +70 -7
  78. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.d.ts +21 -2
  79. package/src/Filter/BevelFilter/FilterApplyBevelFilterUseCase.js +33 -26
  80. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.d.ts +5 -5
  81. package/src/Filter/BlurFilter/FilterApplyBlurFilterUseCase.js +81 -64
  82. package/src/Filter/BlurFilterUseCase.d.ts +15 -11
  83. package/src/Filter/BlurFilterUseCase.js +22 -17
  84. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.d.ts +2 -2
  85. package/src/Filter/ColorMatrixFilter/FilterApplyColorMatrixFilterUseCase.js +5 -5
  86. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.d.ts +15 -1
  87. package/src/Filter/ConvolutionFilter/FilterApplyConvolutionFilterUseCase.js +23 -17
  88. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.d.ts +20 -1
  89. package/src/Filter/DisplacementMapFilter/FilterApplyDisplacementMapFilterUseCase.js +37 -26
  90. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.d.ts +7 -7
  91. package/src/Filter/DropShadowFilter/FilterApplyDropShadowFilterUseCase.js +19 -31
  92. package/src/Filter/FilterGradientLUTCache.js +2 -0
  93. package/src/Filter/FilterUtil.d.ts +23 -0
  94. package/src/Filter/FilterUtil.js +33 -0
  95. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.d.ts +5 -5
  96. package/src/Filter/GlowFilter/FilterApplyGlowFilterUseCase.js +12 -21
  97. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.d.ts +6 -6
  98. package/src/Filter/GradientBevelFilter/FilterApplyGradientBevelFilterUseCase.js +16 -19
  99. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.d.ts +5 -5
  100. package/src/Filter/GradientGlowFilter/FilterApplyGradientGlowFilterUseCase.js +13 -16
  101. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.d.ts +13 -1
  102. package/src/FrameBufferManager/service/FrameBufferManagerCreateRenderPassDescriptorService.js +30 -3
  103. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.d.ts +11 -1
  104. package/src/FrameBufferManager/service/FrameBufferManagerCreateStencilRenderPassDescriptorService.js +36 -6
  105. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.d.ts +10 -10
  106. package/src/FrameBufferManager/usecase/FrameBufferManagerCreateAttachmentUseCase.js +15 -15
  107. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.d.ts +4 -4
  108. package/src/FrameBufferManager/usecase/FrameBufferManagerReleaseTemporaryAttachmentUseCase.js +5 -5
  109. package/src/FrameBufferManager.d.ts +95 -3
  110. package/src/FrameBufferManager.js +97 -8
  111. package/src/Gradient/GradientLUTCache.d.ts +36 -4
  112. package/src/Gradient/GradientLUTCache.js +61 -5
  113. package/src/Gradient/GradientLUTGenerator.d.ts +26 -14
  114. package/src/Gradient/GradientLUTGenerator.js +74 -43
  115. package/src/Mask/service/MaskUnionMaskService.d.ts +16 -1
  116. package/src/Mask/service/MaskUnionMaskService.js +45 -31
  117. package/src/Mask.d.ts +57 -3
  118. package/src/Mask.js +75 -11
  119. package/src/Mesh/service/MeshFillGenerateService.d.ts +4 -4
  120. package/src/Mesh/service/MeshFillGenerateService.js +4 -4
  121. package/src/Mesh/service/MeshStrokeFillGenerateService.d.ts +4 -4
  122. package/src/Mesh/service/MeshStrokeFillGenerateService.js +4 -4
  123. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.d.ts +3 -3
  124. package/src/Mesh/usecase/MeshBitmapStrokeGenerateUseCase.js +10 -3
  125. package/src/Mesh/usecase/MeshFillGenerateUseCase.d.ts +2 -2
  126. package/src/Mesh/usecase/MeshFillGenerateUseCase.js +9 -2
  127. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.d.ts +3 -3
  128. package/src/Mesh/usecase/MeshGradientStrokeGenerateUseCase.js +10 -3
  129. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.d.ts +8 -14
  130. package/src/Mesh/usecase/MeshStrokeGenerateUseCase.js +214 -129
  131. package/src/PathCommand.d.ts +24 -23
  132. package/src/PathCommand.js +25 -79
  133. package/src/Shader/PipelineManager.d.ts +223 -6
  134. package/src/Shader/PipelineManager.js +308 -66
  135. package/src/Shader/ShaderInstancedManager.d.ts +17 -0
  136. package/src/Shader/ShaderInstancedManager.js +17 -0
  137. package/src/Shader/ShaderSource.d.ts +317 -12
  138. package/src/Shader/ShaderSource.js +328 -39
  139. package/src/Shader/wgsl/common/SharedWgsl.d.ts +28 -1
  140. package/src/Shader/wgsl/common/SharedWgsl.js +28 -9
  141. package/src/Shader/wgsl/fragment/BasicFragment.d.ts +14 -0
  142. package/src/Shader/wgsl/fragment/BasicFragment.js +14 -0
  143. package/src/Shader/wgsl/fragment/BitmapFragment.d.ts +7 -0
  144. package/src/Shader/wgsl/fragment/BitmapFragment.js +7 -0
  145. package/src/Shader/wgsl/fragment/EffectFragment.d.ts +42 -0
  146. package/src/Shader/wgsl/fragment/EffectFragment.js +42 -0
  147. package/src/Shader/wgsl/fragment/FillFragment.d.ts +7 -0
  148. package/src/Shader/wgsl/fragment/FillFragment.js +7 -0
  149. package/src/Shader/wgsl/fragment/FilterFragment.d.ts +70 -0
  150. package/src/Shader/wgsl/fragment/FilterFragment.js +70 -0
  151. package/src/Shader/wgsl/fragment/GradientFragment.d.ts +21 -0
  152. package/src/Shader/wgsl/fragment/GradientFragment.js +43 -8
  153. package/src/Shader/wgsl/fragment/InstancedFragment.d.ts +7 -0
  154. package/src/Shader/wgsl/fragment/InstancedFragment.js +7 -0
  155. package/src/Shader/wgsl/fragment/MaskFragment.d.ts +7 -0
  156. package/src/Shader/wgsl/fragment/MaskFragment.js +7 -0
  157. package/src/Shader/wgsl/fragment/StencilFragment.d.ts +14 -0
  158. package/src/Shader/wgsl/fragment/StencilFragment.js +14 -0
  159. package/src/Shader/wgsl/vertex/BasicVertex.d.ts +7 -0
  160. package/src/Shader/wgsl/vertex/BasicVertex.js +7 -0
  161. package/src/Shader/wgsl/vertex/BitmapVertex.d.ts +7 -0
  162. package/src/Shader/wgsl/vertex/BitmapVertex.js +7 -0
  163. package/src/Shader/wgsl/vertex/FillVertex.d.ts +7 -0
  164. package/src/Shader/wgsl/vertex/FillVertex.js +7 -0
  165. package/src/Shader/wgsl/vertex/FilterVertex.d.ts +77 -1
  166. package/src/Shader/wgsl/vertex/FilterVertex.js +135 -42
  167. package/src/Shader/wgsl/vertex/GradientVertex.d.ts +7 -0
  168. package/src/Shader/wgsl/vertex/GradientVertex.js +7 -0
  169. package/src/Shader/wgsl/vertex/InstancedVertex.d.ts +7 -0
  170. package/src/Shader/wgsl/vertex/InstancedVertex.js +7 -0
  171. package/src/Shader/wgsl/vertex/MaskVertex.d.ts +7 -0
  172. package/src/Shader/wgsl/vertex/MaskVertex.js +7 -0
  173. package/src/Shader/wgsl/vertex/StencilVertex.d.ts +14 -0
  174. package/src/Shader/wgsl/vertex/StencilVertex.js +14 -0
  175. package/src/TextureManager/service/TextureManagerInitializeSamplersService.d.ts +2 -2
  176. package/src/TextureManager/service/TextureManagerInitializeSamplersService.js +2 -2
  177. package/src/TextureManager.d.ts +36 -5
  178. package/src/TextureManager.js +36 -24
  179. package/src/TexturePool/service/TexturePoolCleanupService.d.ts +4 -4
  180. package/src/TexturePool/service/TexturePoolCleanupService.js +6 -6
  181. package/src/TexturePool/service/TexturePoolReleaseService.d.ts +4 -4
  182. package/src/TexturePool/service/TexturePoolReleaseService.js +5 -5
  183. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.d.ts +10 -10
  184. package/src/TexturePool/usecase/TexturePoolAcquireUseCase.js +19 -18
  185. package/src/TexturePool.d.ts +36 -35
  186. package/src/TexturePool.js +44 -65
  187. package/src/WebGPUUtil.d.ts +79 -34
  188. package/src/WebGPUUtil.js +79 -36
  189. package/src/interface/IAttachmentObject.d.ts +36 -0
  190. package/src/interface/IBlendMode.d.ts +7 -0
  191. package/src/interface/IBlendState.d.ts +8 -0
  192. package/src/interface/IBounds.d.ts +23 -0
  193. package/src/interface/IColorBufferObject.d.ts +28 -0
  194. package/src/interface/IComplexBlendItem.d.ts +48 -0
  195. package/src/interface/IFilterConfig.d.ts +28 -2
  196. package/src/interface/IGradientStop.d.ts +20 -0
  197. package/src/interface/ILocalFilterConfig.d.ts +32 -2
  198. package/src/interface/IMeshResult.d.ts +8 -0
  199. package/src/interface/IPoint.d.ts +12 -0
  200. package/src/interface/IPooledTexture.d.ts +24 -0
  201. package/src/interface/IQuadraticSegment.d.ts +8 -0
  202. package/src/interface/IStencilBufferObject.d.ts +28 -0
  203. package/src/interface/IStorageBufferConfig.d.ts +8 -1
  204. package/src/interface/ITextureObject.d.ts +28 -0
  205. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.d.ts +0 -5
  206. package/src/AttachmentManager/service/AttachmentManagerCreateRenderPassDescriptorService.js +0 -42
  207. package/src/Blend/service/BlendAddService.d.ts +0 -1
  208. package/src/Blend/service/BlendAddService.js +0 -8
  209. package/src/Blend/service/BlendAlphaService.d.ts +0 -1
  210. package/src/Blend/service/BlendAlphaService.js +0 -8
  211. package/src/Blend/service/BlendEraseService.d.ts +0 -1
  212. package/src/Blend/service/BlendEraseService.js +0 -8
  213. package/src/Blend/service/BlendGetStateService.d.ts +0 -12
  214. package/src/Blend/service/BlendGetStateService.js +0 -13
  215. package/src/Blend/service/BlendOneZeroService.d.ts +0 -1
  216. package/src/Blend/service/BlendOneZeroService.js +0 -8
  217. package/src/Blend/service/BlendResetService.d.ts +0 -1
  218. package/src/Blend/service/BlendResetService.js +0 -8
  219. package/src/Blend/service/BlendScreenService.d.ts +0 -1
  220. package/src/Blend/service/BlendScreenService.js +0 -8
  221. package/src/Blend/service/BlendSetModeService.d.ts +0 -2
  222. package/src/Blend/service/BlendSetModeService.js +0 -4
  223. package/src/Blend/usecase/BlendOperationUseCase.d.ts +0 -11
  224. package/src/Blend/usecase/BlendOperationUseCase.js +0 -31
  225. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.d.ts +0 -9
  226. package/src/BufferManager/usecase/BufferManagerReleaseStorageBufferUseCase.js +0 -15
  227. package/src/Compute/ComputePipelineManager.d.ts +0 -61
  228. package/src/Compute/ComputePipelineManager.js +0 -313
  229. package/src/Compute/service/ComputeExecuteBlurService.d.ts +0 -21
  230. package/src/Compute/service/ComputeExecuteBlurService.js +0 -81
  231. package/src/Filter/BevelFilterShader.d.ts +0 -2
  232. package/src/Filter/BevelFilterShader.js +0 -107
  233. package/src/Filter/BitmapFilterShader.d.ts +0 -2
  234. package/src/Filter/BitmapFilterShader.js +0 -207
  235. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.d.ts +0 -40
  236. package/src/Filter/BlurFilter/service/BlurFilterComputeShaderService.js +0 -51
  237. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.d.ts +0 -25
  238. package/src/Filter/BlurFilter/usecase/FilterApplyBlurComputeUseCase.js +0 -180
  239. package/src/Filter/BlurFilterShader.d.ts +0 -5
  240. package/src/Filter/BlurFilterShader.js +0 -109
  241. package/src/Filter/ColorMatrixFilterShader.d.ts +0 -4
  242. package/src/Filter/ColorMatrixFilterShader.js +0 -51
  243. package/src/Filter/ConvolutionFilterShader.d.ts +0 -2
  244. package/src/Filter/ConvolutionFilterShader.js +0 -115
  245. package/src/Filter/DisplacementMapFilterShader.d.ts +0 -2
  246. package/src/Filter/DisplacementMapFilterShader.js +0 -114
  247. package/src/Filter/DropShadowFilterShader.d.ts +0 -4
  248. package/src/Filter/DropShadowFilterShader.js +0 -93
  249. package/src/Filter/GlowFilterShader.d.ts +0 -4
  250. package/src/Filter/GlowFilterShader.js +0 -66
  251. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.d.ts +0 -11
  252. package/src/FrameBufferManager/service/FrameBufferManagerFlushPendingReleasesService.js +0 -19
  253. package/src/Mask/usecase/MaskBindUseCase.d.ts +0 -10
  254. package/src/Mask/usecase/MaskBindUseCase.js +0 -20
  255. package/src/Mesh/service/MeshLerpService.d.ts +0 -13
  256. package/src/Mesh/service/MeshLerpService.js +0 -17
  257. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.d.ts +0 -14
  258. package/src/Mesh/usecase/MeshSplitQuadraticBezierUseCase.js +0 -28
  259. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.d.ts +0 -18
  260. package/src/Mesh/usecase/MeshStrokeFillGenerateUseCase.js +0 -54
  261. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.d.ts +0 -11
  262. package/src/SamplerCache/service/SamplerCacheCreateCommonSamplersService.js +0 -35
  263. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.d.ts +0 -13
  264. package/src/SamplerCache/service/SamplerCacheGenerateKeyService.js +0 -15
  265. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.d.ts +0 -15
  266. package/src/SamplerCache/service/SamplerCacheGetOrCreateService.js +0 -30
  267. package/src/SamplerCache.d.ts +0 -18
  268. package/src/SamplerCache.js +0 -61
  269. package/src/Shader/BlendModeShader.d.ts +0 -51
  270. package/src/Shader/BlendModeShader.js +0 -71
  271. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.d.ts +0 -12
  272. package/src/Shader/GradientLUTGenerator/service/GradientLUTCalculateResolutionService.js +0 -28
  273. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.d.ts +0 -13
  274. package/src/Shader/GradientLUTGenerator/service/GradientLUTGeneratePixelsService.js +0 -61
  275. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.d.ts +0 -19
  276. package/src/Shader/GradientLUTGenerator/service/GradientLUTInterpolateColorService.js +0 -37
  277. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.d.ts +0 -11
  278. package/src/Shader/GradientLUTGenerator/service/GradientLUTParseStopsService.js +0 -24
  279. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.d.ts +0 -14
  280. package/src/Shader/GradientLUTGenerator/usecase/GradientLUTGenerateDataUseCase.js +0 -24
  281. package/src/Shader/wgsl/fragment/BlendFragment.d.ts +0 -8
  282. package/src/Shader/wgsl/fragment/BlendFragment.js +0 -63
  283. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.d.ts +0 -13
  284. package/src/TextureManager/usecase/TextureManagerCreateTextureFromImageBitmapUseCase.js +0 -30
  285. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.d.ts +0 -15
  286. package/src/TextureManager/usecase/TextureManagerCreateTextureFromPixelsUseCase.js +0 -26
  287. package/src/TexturePool/service/TexturePoolEvictOldestService.d.ts +0 -11
  288. package/src/TexturePool/service/TexturePoolEvictOldestService.js +0 -24
  289. package/src/interface/ICachedBindGroup.d.ts +0 -8
  290. package/src/interface/ICachedBindGroup.js +0 -1
  291. package/src/interface/IGradientLUTData.d.ts +0 -8
  292. package/src/interface/IGradientLUTData.js +0 -1
  293. package/src/interface/IPooledBuffer.d.ts +0 -8
  294. package/src/interface/IPooledBuffer.js +0 -1
  295. package/src/interface/IRectangleInfo.d.ts +0 -13
  296. package/src/interface/IRectangleInfo.js +0 -1
@@ -1,24 +1,44 @@
1
1
  import { $context } from "../../WebGPUUtil";
2
2
  /**
3
3
  * @description Canvas 2Dコンテキスト(点が矩形内にあるか判定用)
4
+ * Canvas 2D context for point-in-rectangle testing
4
5
  */
5
- const canvas = new OffscreenCanvas(1, 1);
6
- const $canvasContext = canvas.getContext("2d");
6
+ const $canvas = new OffscreenCanvas(1, 1);
7
+ /**
8
+ * @description 矩形内の点判定用2Dコンテキスト
9
+ * 2D context used for point-in-path detection
10
+ */
11
+ const $canvasContext = $canvas.getContext("2d");
7
12
  /**
8
13
  * @description 再利用可能なPointオブジェクト(GC回避)
14
+ * Reusable Point objects to avoid GC overhead
9
15
  */
10
16
  const $startPoint = { "x": 0, "y": 0 };
17
+ /**
18
+ * @description 再利用可能な制御点オブジェクト(GC回避)
19
+ * Reusable control point object to avoid GC overhead
20
+ */
11
21
  const $controlPoint = { "x": 0, "y": 0 };
22
+ /**
23
+ * @description 再利用可能な終了点オブジェクト(GC回避)
24
+ * Reusable end point object to avoid GC overhead
25
+ */
12
26
  const $endPoint = { "x": 0, "y": 0 };
27
+ /**
28
+ * @description 再利用可能な前の点オブジェクト(GC回避)
29
+ * Reusable previous point object to avoid GC overhead
30
+ */
13
31
  const $prevPoint = { "x": 0, "y": 0 };
14
32
  /**
15
33
  * @description 法線ベクトルを計算(WebGL版のMeshCalculateNormalVectorServiceと同じ)
16
- * @param {number} x - 方向ベクトルのx成分
17
- * @param {number} y - 方向ベクトルのy成分
18
- * @param {number} thickness - 線の太さ(半分の値)
19
- * @return {IPoint}
34
+ * Calculate the normal vector (same as WebGL MeshCalculateNormalVectorService)
35
+ *
36
+ * @param {number} x - 方向ベクトルのx成分 / X component of direction vector
37
+ * @param {number} y - 方向ベクトルのy成分 / Y component of direction vector
38
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
39
+ * @return {IPoint} 法線ベクトル / Normal vector
20
40
  */
21
- const calculateNormalVector = (x, y, thickness) => {
41
+ const $calculateNormalVector = (x, y, thickness) => {
22
42
  const magnitude = Math.sqrt(x * x + y * y);
23
43
  if (magnitude === 0) {
24
44
  return { "x": 0, "y": 0 };
@@ -30,15 +50,25 @@ const calculateNormalVector = (x, y, thickness) => {
30
50
  };
31
51
  /**
32
52
  * @description 線形補間(lerp)
53
+ * Linear interpolation between two points
54
+ *
55
+ * @param {IPoint} p0 - 始点 / Start point
56
+ * @param {IPoint} p1 - 終点 / End point
57
+ * @param {number} t - 補間パラメータ(0〜1) / Interpolation parameter (0-1)
58
+ * @return {IPoint} 補間された点 / Interpolated point
33
59
  */
34
- const lerp = (p0, p1, t) => ({
60
+ const $lerp = (p0, p1, t) => ({
35
61
  "x": p0.x + (p1.x - p0.x) * t,
36
62
  "y": p0.y + (p1.y - p0.y) * t
37
63
  });
38
64
  /**
39
65
  * @description ベクトルの正規化
66
+ * Normalize a vector to unit length
67
+ *
68
+ * @param {IPoint} point - 正規化する点 / Point to normalize
69
+ * @return {IPoint} 正規化された点 / Normalized point
40
70
  */
41
- const normalize = (point) => {
71
+ const $normalize = (point) => {
42
72
  const length = Math.sqrt(point.x * point.x + point.y * point.y);
43
73
  return length === 0
44
74
  ? { "x": 0, "y": 0 }
@@ -46,25 +76,46 @@ const normalize = (point) => {
46
76
  };
47
77
  /**
48
78
  * @description 二次ベジェ曲線上の座標を計算
79
+ * Calculate a point on a quadratic Bezier curve
80
+ *
81
+ * @param {number} t - 曲線パラメータ(0〜1) / Curve parameter (0-1)
82
+ * @param {IPoint} s0 - 始点 / Start point
83
+ * @param {IPoint} s1 - 制御点 / Control point
84
+ * @param {IPoint} s2 - 終点 / End point
85
+ * @return {IPoint} 曲線上の座標 / Point on the curve
49
86
  */
50
- const getQuadraticBezierPoint = (t, s0, s1, s2) => ({
87
+ const $getQuadraticBezierPoint = (t, s0, s1, s2) => ({
51
88
  "x": (1 - t) ** 2 * s0.x + 2 * (1 - t) * t * s1.x + t ** 2 * s2.x,
52
89
  "y": (1 - t) ** 2 * s0.y + 2 * (1 - t) * t * s1.y + t ** 2 * s2.y
53
90
  });
54
91
  /**
55
92
  * @description 二次ベジェ曲線上の接線ベクトルを計算
93
+ * Calculate the tangent vector on a quadratic Bezier curve
94
+ *
95
+ * @param {number} t - 曲線パラメータ(0〜1) / Curve parameter (0-1)
96
+ * @param {IPoint} s0 - 始点 / Start point
97
+ * @param {IPoint} s1 - 制御点 / Control point
98
+ * @param {IPoint} s2 - 終点 / End point
99
+ * @return {IPoint} 接線ベクトル / Tangent vector
56
100
  */
57
- const getQuadraticBezierTangent = (t, s0, s1, s2) => ({
101
+ const $getQuadraticBezierTangent = (t, s0, s1, s2) => ({
58
102
  "x": 2 * (1 - t) * (s1.x - s0.x) + 2 * t * (s2.x - s1.x),
59
103
  "y": 2 * (1 - t) * (s1.y - s0.y) + 2 * t * (s2.y - s1.y)
60
104
  });
61
105
  /**
62
106
  * @description 二次ベジェ曲線を分割
107
+ * Split a quadratic Bezier curve at a given parameter
108
+ *
109
+ * @param {IPoint} s0 - 始点 / Start point
110
+ * @param {IPoint} s1 - 制御点 / Control point
111
+ * @param {IPoint} s2 - 終点 / End point
112
+ * @param {number} t - 分割パラメータ / Split parameter
113
+ * @return {Array<IPoint[]>} 分割された2つの曲線 / Two split curves
63
114
  */
64
- const splitQuadraticBezier = (s0, s1, s2, t = 0.5) => {
65
- const M0 = lerp(s0, s1, t);
66
- const M1 = lerp(s1, s2, t);
67
- const M01 = lerp(M0, M1, t);
115
+ const $splitQuadraticBezier = (s0, s1, s2, t = 0.5) => {
116
+ const M0 = $lerp(s0, s1, t);
117
+ const M1 = $lerp(s1, s2, t);
118
+ const M01 = $lerp(M0, M1, t);
68
119
  return [
69
120
  [s0, M0, M01],
70
121
  [M01, M1, s2]
@@ -72,13 +123,20 @@ const splitQuadraticBezier = (s0, s1, s2, t = 0.5) => {
72
123
  };
73
124
  /**
74
125
  * @description ベジェ曲線を複数回分割
126
+ * Split a Bezier curve multiple times
127
+ *
128
+ * @param {IPoint} s0 - 始点 / Start point
129
+ * @param {IPoint} s1 - 制御点 / Control point
130
+ * @param {IPoint} s2 - 終点 / End point
131
+ * @param {number} n - 分割回数 / Number of splits
132
+ * @return {Array<IPoint[]>} 分割されたセグメント配列 / Array of split segments
75
133
  */
76
- const splitBezierMultipleTimes = (s0, s1, s2, n = 4) => {
134
+ const $splitBezierMultipleTimes = (s0, s1, s2, n = 4) => {
77
135
  let segments = [[s0, s1, s2]];
78
136
  for (let i = 0; i < n; i++) {
79
137
  const newSegments = [];
80
138
  for (const seg of segments) {
81
- const splitted = splitQuadraticBezier(seg[0], seg[1], seg[2], 0.5);
139
+ const splitted = $splitQuadraticBezier(seg[0], seg[1], seg[2], 0.5);
82
140
  newSegments.push(splitted[0], splitted[1]);
83
141
  }
84
142
  segments = newSegments;
@@ -87,14 +145,21 @@ const splitBezierMultipleTimes = (s0, s1, s2, n = 4) => {
87
145
  };
88
146
  /**
89
147
  * @description 2次ベジェのオフセットを計算
148
+ * Calculate offset of a quadratic Bezier curve
149
+ *
150
+ * @param {IPoint} s0 - 始点 / Start point
151
+ * @param {IPoint} s1 - 制御点 / Control point
152
+ * @param {IPoint} s2 - 終点 / End point
153
+ * @param {number} offset - オフセット距離 / Offset distance
154
+ * @return {IPoint[]} オフセットされた点配列 / Array of offset points
90
155
  */
91
- const approximateOffsetQuadratic = (s0, s1, s2, offset) => {
156
+ const $approximateOffsetQuadratic = (s0, s1, s2, offset) => {
92
157
  const tValues = [0, 0.5, 1];
93
158
  const newPoints = [];
94
159
  for (const t of tValues) {
95
- const pos = getQuadraticBezierPoint(t, s0, s1, s2);
96
- const tan = getQuadraticBezierTangent(t, s0, s1, s2);
97
- const n = normalize({ "x": -tan.y, "y": tan.x });
160
+ const pos = $getQuadraticBezierPoint(t, s0, s1, s2);
161
+ const tan = $getQuadraticBezierTangent(t, s0, s1, s2);
162
+ const n = $normalize({ "x": -tan.y, "y": tan.x });
98
163
  newPoints.push({
99
164
  "x": pos.x + n.x * offset,
100
165
  "y": pos.y + n.y * offset
@@ -104,15 +169,22 @@ const approximateOffsetQuadratic = (s0, s1, s2, offset) => {
104
169
  };
105
170
  /**
106
171
  * @description カーブの矩形を計算(WebGL版のMeshCalculateCurveRectangleUseCaseと同じ)
172
+ * Calculate curve rectangle (same as WebGL MeshCalculateCurveRectangleUseCase)
173
+ *
174
+ * @param {IPoint} start_point - 始点 / Start point
175
+ * @param {IPoint} control_point - 制御点 / Control point
176
+ * @param {IPoint} end_point - 終点 / End point
177
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
178
+ * @return {IPath} カーブ矩形パス / Curve rectangle path
107
179
  */
108
- const calculateCurveRectangle = (startPoint, controlPoint, endPoint, thickness) => {
180
+ const $calculateCurveRectangle = (start_point, control_point, end_point, thickness) => {
109
181
  // WebGL版と同じ分割数(5回分割 = 32セグメント)
110
- const segments = splitBezierMultipleTimes(startPoint, controlPoint, endPoint, 5);
182
+ const segments = $splitBezierMultipleTimes(start_point, control_point, end_point, 5);
111
183
  const leftCurves = [];
112
184
  const rightCurves = [];
113
185
  for (const seg of segments) {
114
- leftCurves.push(approximateOffsetQuadratic(seg[0], seg[1], seg[2], +thickness));
115
- rightCurves.push(approximateOffsetQuadratic(seg[0], seg[1], seg[2], -thickness));
186
+ leftCurves.push($approximateOffsetQuadratic(seg[0], seg[1], seg[2], +thickness));
187
+ rightCurves.push($approximateOffsetQuadratic(seg[0], seg[1], seg[2], -thickness));
116
188
  }
117
189
  // セグメント間の連続性を確保:各セグメントの終点を次のセグメントの始点に強制一致
118
190
  // これにより内側の曲線のつなぎめの隙間を解消
@@ -147,32 +219,34 @@ const calculateCurveRectangle = (startPoint, controlPoint, endPoint, thickness)
147
219
  };
148
220
  /**
149
221
  * @description 直線の矩形を計算(WebGL版のMeshCalculateLineRectangleUseCaseと同じ)
150
- * @param {IPoint} startPoint - 開始点
151
- * @param {IPoint} endPoint - 終了点
152
- * @param {number} thickness - 線の太さ(半分の値)
153
- * @return {IPath} 矩形パス
222
+ * Calculate line rectangle (same as WebGL MeshCalculateLineRectangleUseCase)
223
+ *
224
+ * @param {IPoint} start_point - 開始点 / Start point
225
+ * @param {IPoint} end_point - 終了点 / End point
226
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
227
+ * @return {IPath} 矩形パス / Rectangle path
154
228
  */
155
- const calculateLineRectangle = (startPoint, endPoint, thickness) => {
229
+ const $calculateLineRectangle = (start_point, end_point, thickness) => {
156
230
  const vector = {
157
- "x": endPoint.x - startPoint.x,
158
- "y": endPoint.y - startPoint.y
231
+ "x": end_point.x - start_point.x,
232
+ "y": end_point.y - start_point.y
159
233
  };
160
- const normal = calculateNormalVector(vector.x, vector.y, thickness);
234
+ const normal = $calculateNormalVector(vector.x, vector.y, thickness);
161
235
  const shiftedUpStart = {
162
- "x": startPoint.x + normal.x,
163
- "y": startPoint.y + normal.y
236
+ "x": start_point.x + normal.x,
237
+ "y": start_point.y + normal.y
164
238
  };
165
239
  const shiftedUpEnd = {
166
- "x": endPoint.x + normal.x,
167
- "y": endPoint.y + normal.y
240
+ "x": end_point.x + normal.x,
241
+ "y": end_point.y + normal.y
168
242
  };
169
243
  const shiftedDownEnd = {
170
- "x": endPoint.x - normal.x,
171
- "y": endPoint.y - normal.y
244
+ "x": end_point.x - normal.x,
245
+ "y": end_point.y - normal.y
172
246
  };
173
247
  const shiftedDownStart = {
174
- "x": startPoint.x - normal.x,
175
- "y": startPoint.y - normal.y
248
+ "x": start_point.x - normal.x,
249
+ "y": start_point.y - normal.y
176
250
  };
177
251
  return [
178
252
  shiftedUpStart.x, shiftedUpStart.y, false,
@@ -184,9 +258,16 @@ const calculateLineRectangle = (startPoint, endPoint, thickness) => {
184
258
  };
185
259
  /**
186
260
  * @description メッシュのパスの中で指定座標が含まれる線を探す
261
+ * Find paths overlapping with specified coordinates
187
262
  * WebGL版のMeshFindOverlappingPathsServiceと同じ
263
+ *
264
+ * @param {number} x - 中心x座標 / Center x coordinate
265
+ * @param {number} y - 中心y座標 / Center y coordinate
266
+ * @param {number} r - 半径 / Radius
267
+ * @param {IPath} paths - パスデータ / Path data
268
+ * @return {number[]} 重複する座標配列 / Array of overlapping coordinates
188
269
  */
189
- const findOverlappingPaths = (x, y, r, paths) => {
270
+ const $findOverlappingPaths = (x, y, r, paths) => {
190
271
  const points = [];
191
272
  // 浮動小数点誤差を考慮した許容範囲(非常に小さい値)
192
273
  const epsilon = 0.0001;
@@ -208,9 +289,14 @@ const findOverlappingPaths = (x, y, r, paths) => {
208
289
  };
209
290
  /**
210
291
  * @description 矩形内に含まれてない座標を返却
292
+ * Return coordinates that are not inside the rectangle
211
293
  * WebGL版のMeshIsPointInsideRectangleServiceと同じ
294
+ *
295
+ * @param {number[]} points - 判定対象の座標配列 / Array of points to test
296
+ * @param {IPath} rectangle - 矩形パス / Rectangle path
297
+ * @return {number[] | null} 矩形外の座標またはnull / Point outside rectangle or null
212
298
  */
213
- const findPointOutsideRectangle = (points, rectangle) => {
299
+ const $findPointOutsideRectangle = (points, rectangle) => {
214
300
  $canvasContext.beginPath();
215
301
  $canvasContext.moveTo(rectangle[0], rectangle[1]);
216
302
  for (let idx = 3; idx < rectangle.length; idx += 3) {
@@ -235,23 +321,31 @@ const findPointOutsideRectangle = (points, rectangle) => {
235
321
  };
236
322
  /**
237
323
  * @description ベベル結合を生成(WebGL版のMeshGenerateCalculateBevelJoinUseCaseと同じ)
324
+ * Generate bevel join (same as WebGL MeshGenerateCalculateBevelJoinUseCase)
325
+ *
326
+ * @param {number} x - 結合点のx座標 / Join point x coordinate
327
+ * @param {number} y - 結合点のy座標 / Join point y coordinate
328
+ * @param {number} r - 半径 / Radius
329
+ * @param {IPath[]} rectangles - 矩形パス配列 / Array of rectangle paths
330
+ * @param {boolean} is_last - 最後の結合かどうか / Whether this is the last join
331
+ * @return {void}
238
332
  */
239
- const generateBevelJoin = (x, y, r, rectangles, isLast = false) => {
333
+ const $generateBevelJoin = (x, y, r, rectangles, is_last = false) => {
240
334
  // WebGL版と同じ: isLastフラグでインデックスを切り替え
241
- const indexA = isLast ? 0 : rectangles.length - 1;
242
- const indexB = isLast ? rectangles.length - 1 : rectangles.length - 2;
243
- const pathsA = findOverlappingPaths(x, y, r, rectangles[indexA]);
244
- const pathsB = findOverlappingPaths(x, y, r, rectangles[indexB]);
335
+ const indexA = is_last ? 0 : rectangles.length - 1;
336
+ const indexB = is_last ? rectangles.length - 1 : rectangles.length - 2;
337
+ const pathsA = $findOverlappingPaths(x, y, r, rectangles[indexA]);
338
+ const pathsB = $findOverlappingPaths(x, y, r, rectangles[indexB]);
245
339
  // パスが並行であれば終了
246
340
  if (pathsA[0] === pathsB[0] && pathsA[1] === pathsB[1]
247
341
  || pathsA[0] === pathsB[2] && pathsA[1] === pathsB[3]) {
248
342
  return;
249
343
  }
250
- const pointA = findPointOutsideRectangle(pathsA, rectangles[indexB]);
344
+ const pointA = $findPointOutsideRectangle(pathsA, rectangles[indexB]);
251
345
  if (!pointA) {
252
346
  return;
253
347
  }
254
- const pointB = findPointOutsideRectangle(pathsB, rectangles[indexA]);
348
+ const pointB = $findPointOutsideRectangle(pathsB, rectangles[indexA]);
255
349
  if (!pointB) {
256
350
  return;
257
351
  }
@@ -264,18 +358,26 @@ const generateBevelJoin = (x, y, r, rectangles, isLast = false) => {
264
358
  };
265
359
  /**
266
360
  * @description ラウンド結合を生成(WebGL版のMeshGenerateCalculateRoundJoinUseCaseと同じ)
361
+ * Generate round join (same as WebGL MeshGenerateCalculateRoundJoinUseCase)
362
+ *
363
+ * @param {number} x - 結合点のx座標 / Join point x coordinate
364
+ * @param {number} y - 結合点のy座標 / Join point y coordinate
365
+ * @param {number} r - 半径 / Radius
366
+ * @param {IPath[]} rectangles - 矩形パス配列 / Array of rectangle paths
367
+ * @param {boolean} is_last - 最後の結合かどうか / Whether this is the last join
368
+ * @return {void}
267
369
  */
268
- const generateRoundJoin = (x, y, r, rectangles, isLast = false) => {
370
+ const $generateRoundJoin = (x, y, r, rectangles, is_last = false) => {
269
371
  // WebGL版と同じ: isLastフラグでインデックスを切り替え
270
- const indexA = isLast ? 0 : rectangles.length - 1;
271
- const indexB = isLast ? rectangles.length - 1 : rectangles.length - 2;
272
- const pathsA = findOverlappingPaths(x, y, r, rectangles[indexA]);
273
- const pathsB = findOverlappingPaths(x, y, r, rectangles[indexB]);
274
- const pointA = findPointOutsideRectangle(pathsA, rectangles[indexB]);
372
+ const indexA = is_last ? 0 : rectangles.length - 1;
373
+ const indexB = is_last ? rectangles.length - 1 : rectangles.length - 2;
374
+ const pathsA = $findOverlappingPaths(x, y, r, rectangles[indexA]);
375
+ const pathsB = $findOverlappingPaths(x, y, r, rectangles[indexB]);
376
+ const pointA = $findPointOutsideRectangle(pathsA, rectangles[indexB]);
275
377
  if (!pointA) {
276
378
  return;
277
379
  }
278
- const pointB = findPointOutsideRectangle(pathsB, rectangles[indexA]);
380
+ const pointB = $findPointOutsideRectangle(pathsB, rectangles[indexA]);
279
381
  if (!pointB) {
280
382
  return;
281
383
  }
@@ -302,34 +404,43 @@ const generateRoundJoin = (x, y, r, rectangles, isLast = false) => {
302
404
  };
303
405
  /**
304
406
  * @description マイター結合を生成(WebGL版のMeshGenerateCalculateMiterJoinUseCaseと同じ)
407
+ * Generate miter join (same as WebGL MeshGenerateCalculateMiterJoinUseCase)
408
+ *
409
+ * @param {IPoint} start_point - 結合点 / Join point
410
+ * @param {IPoint} end_point - 終了点 / End point
411
+ * @param {IPoint} prev_point - 前の点 / Previous point
412
+ * @param {number} r - 半径 / Radius
413
+ * @param {IPath[]} rectangles - 矩形パス配列 / Array of rectangle paths
414
+ * @param {boolean} is_last - 最後の結合かどうか / Whether this is the last join
415
+ * @return {void}
305
416
  */
306
- const generateMiterJoin = (startPoint, endPoint, prevPoint, r, rectangles, isLast = false) => {
307
- const indexA = isLast ? 0 : rectangles.length - 1;
308
- const indexB = isLast ? rectangles.length - 1 : rectangles.length - 2;
309
- const pathsA = findOverlappingPaths(startPoint.x, startPoint.y, r, rectangles[indexA]);
310
- const pathsB = findOverlappingPaths(startPoint.x, startPoint.y, r, rectangles[indexB]);
417
+ const $generateMiterJoin = (start_point, end_point, prev_point, r, rectangles, is_last = false) => {
418
+ const indexA = is_last ? 0 : rectangles.length - 1;
419
+ const indexB = is_last ? rectangles.length - 1 : rectangles.length - 2;
420
+ const pathsA = $findOverlappingPaths(start_point.x, start_point.y, r, rectangles[indexA]);
421
+ const pathsB = $findOverlappingPaths(start_point.x, start_point.y, r, rectangles[indexB]);
311
422
  // パスが並行であれば終了
312
423
  if (pathsA[0] === pathsB[0] && pathsA[1] === pathsB[1]
313
424
  || pathsA[0] === pathsB[2] && pathsA[1] === pathsB[3]) {
314
425
  return;
315
426
  }
316
- const pointA = findPointOutsideRectangle(pathsA, rectangles[indexB]);
427
+ const pointA = $findPointOutsideRectangle(pathsA, rectangles[indexB]);
317
428
  if (!pointA) {
318
429
  return;
319
430
  }
320
- const pointB = findPointOutsideRectangle(pathsB, rectangles[indexA]);
431
+ const pointB = $findPointOutsideRectangle(pathsB, rectangles[indexA]);
321
432
  if (!pointB) {
322
433
  return;
323
434
  }
324
- const aVx = endPoint.x - startPoint.x;
325
- const aVy = endPoint.y - startPoint.y;
435
+ const aVx = end_point.x - start_point.x;
436
+ const aVy = end_point.y - start_point.y;
326
437
  const lengthA = Math.hypot(aVx, aVy);
327
438
  const normalizeA = {
328
439
  "x": aVx / lengthA,
329
440
  "y": aVy / lengthA
330
441
  };
331
- const bVx = prevPoint.x - startPoint.x;
332
- const bVy = prevPoint.y - startPoint.y;
442
+ const bVx = prev_point.x - start_point.x;
443
+ const bVy = prev_point.y - start_point.y;
333
444
  const lengthB = Math.hypot(bVx, bVy);
334
445
  const normalizeB = {
335
446
  "x": bVx / lengthB,
@@ -340,7 +451,7 @@ const generateMiterJoin = (startPoint, endPoint, prevPoint, r, rectangles, isLas
340
451
  const denom = d1x * d2y - d1y * d2x;
341
452
  if (denom === 0) {
342
453
  rectangles.splice(-1, 0, [
343
- startPoint.x, startPoint.y, false,
454
+ start_point.x, start_point.y, false,
344
455
  pointA[0], pointA[1], false,
345
456
  pointB[0], pointB[1], false
346
457
  ]);
@@ -350,18 +461,24 @@ const generateMiterJoin = (startPoint, endPoint, prevPoint, r, rectangles, isLas
350
461
  const ix = pointA[0] + t * d1x;
351
462
  const iy = pointA[1] + t * d1y;
352
463
  rectangles.splice(-1, 0, [
353
- startPoint.x, startPoint.y, false,
464
+ start_point.x, start_point.y, false,
354
465
  pointA[0], pointA[1], false,
355
466
  ix, iy, false,
356
- startPoint.x, startPoint.y, false,
467
+ start_point.x, start_point.y, false,
357
468
  pointB[0], pointB[1], false,
358
469
  ix, iy, false
359
470
  ]);
360
471
  };
361
472
  /**
362
473
  * @description ラウンドキャップを生成(WebGL版のMeshGenerateCalculateRoundCapServiceと同じ)
474
+ * Generate round cap (same as WebGL MeshGenerateCalculateRoundCapService)
475
+ *
476
+ * @param {IPath} vertices - パス頂点 / Path vertices
477
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
478
+ * @param {IPath[]} rectangles - 矩形パス配列 / Array of rectangle paths
479
+ * @return {void}
363
480
  */
364
- const generateRoundCap = (vertices, thickness, rectangles) => {
481
+ const $generateRoundCap = (vertices, thickness, rectangles) => {
365
482
  // 始点のキャップ
366
483
  // WebGL版と同じく隣接頂点を直接使用(制御点でもそのまま使用する)
367
484
  // カーブの場合、制御点への方向が正しい接線方向となる
@@ -393,8 +510,14 @@ const generateRoundCap = (vertices, thickness, rectangles) => {
393
510
  };
394
511
  /**
395
512
  * @description スクエアキャップを生成(WebGL版のMeshGenerateCalculateSquareCapServiceと同じ)
513
+ * Generate square cap (same as WebGL MeshGenerateCalculateSquareCapService)
514
+ *
515
+ * @param {IPath} vertices - パス頂点 / Path vertices
516
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
517
+ * @param {IPath[]} rectangles - 矩形パス配列 / Array of rectangle paths
518
+ * @return {void}
396
519
  */
397
- const generateSquareCap = (vertices, thickness, rectangles) => {
520
+ const $generateSquareCap = (vertices, thickness, rectangles) => {
398
521
  // 始点のキャップ
399
522
  // WebGL版と同じく隣接頂点を直接使用(制御点でもそのまま使用する)
400
523
  const startX = vertices[0];
@@ -446,9 +569,9 @@ const generateSquareCap = (vertices, thickness, rectangles) => {
446
569
  * @description 線の外周を算出して塗りのフォーマットで返却(WebGL版と同じ)
447
570
  * Calculate the outer circumference of the line and return it in the format of the fill
448
571
  *
449
- * @param {IPath} vertices - パス頂点 [x, y, isCurve, ...]
450
- * @param {number} thickness - 線の太さ(半分の値)
451
- * @return {IPath[]} パス配列
572
+ * @param {IPath} vertices - パス頂点 [x, y, isCurve, ...] / Path vertices
573
+ * @param {number} thickness - 線の太さ(半分の値) / Half line thickness
574
+ * @return {IPath[]} パス配列 / Array of paths
452
575
  */
453
576
  export const generateStrokeOutline = (vertices, thickness) => {
454
577
  // 再利用可能なオブジェクトを使用
@@ -476,23 +599,23 @@ export const generateStrokeOutline = (vertices, thickness) => {
476
599
  endPoint.x = x;
477
600
  endPoint.y = y;
478
601
  if (vertices[idx - 1]) {
479
- rectangles.push(calculateCurveRectangle(startPoint, controlPoint, endPoint, thickness));
602
+ rectangles.push($calculateCurveRectangle(startPoint, controlPoint, endPoint, thickness));
480
603
  }
481
604
  else {
482
- rectangles.push(calculateLineRectangle(startPoint, endPoint, thickness));
605
+ rectangles.push($calculateLineRectangle(startPoint, endPoint, thickness));
483
606
  }
484
607
  if (rectangles.length > 1) {
485
608
  switch ($context.joints) {
486
609
  case 0: // bevel
487
- generateBevelJoin(startPoint.x, startPoint.y, thickness, rectangles);
610
+ $generateBevelJoin(startPoint.x, startPoint.y, thickness, rectangles);
488
611
  break;
489
612
  case 1: // miter
490
613
  prevPoint.x = vertices[idx - 6];
491
614
  prevPoint.y = vertices[idx - 5];
492
- generateMiterJoin(startPoint, endPoint, prevPoint, thickness, rectangles);
615
+ $generateMiterJoin(startPoint, endPoint, prevPoint, thickness, rectangles);
493
616
  break;
494
617
  case 2: // round
495
- generateRoundJoin(startPoint.x, startPoint.y, thickness, rectangles);
618
+ $generateRoundJoin(startPoint.x, startPoint.y, thickness, rectangles);
496
619
  break;
497
620
  }
498
621
  }
@@ -512,7 +635,7 @@ export const generateStrokeOutline = (vertices, thickness) => {
512
635
  // 始点と終点が繋がっている時はjointsの設定を適用(WebGL版と同じ)
513
636
  switch ($context.joints) {
514
637
  case 0: // bevel
515
- generateBevelJoin(startX, startY, thickness, rectangles, true);
638
+ $generateBevelJoin(startX, startY, thickness, rectangles, true);
516
639
  break;
517
640
  case 1: // miter
518
641
  startPoint.x = startX;
@@ -521,10 +644,10 @@ export const generateStrokeOutline = (vertices, thickness) => {
521
644
  endPoint.y = vertices[4];
522
645
  prevPoint.x = vertices[vertices.length - 6];
523
646
  prevPoint.y = vertices[vertices.length - 5];
524
- generateMiterJoin(startPoint, endPoint, prevPoint, thickness, rectangles, true);
647
+ $generateMiterJoin(startPoint, endPoint, prevPoint, thickness, rectangles, true);
525
648
  break;
526
649
  case 2: // round
527
- generateRoundJoin(startX, startY, thickness, rectangles, true);
650
+ $generateRoundJoin(startX, startY, thickness, rectangles, true);
528
651
  break;
529
652
  default:
530
653
  break;
@@ -534,10 +657,10 @@ export const generateStrokeOutline = (vertices, thickness) => {
534
657
  // 始点と終点が繋がってない時はcapsの設定を適用
535
658
  switch ($context.caps) {
536
659
  case 1: // round
537
- generateRoundCap(vertices, thickness, rectangles);
660
+ $generateRoundCap(vertices, thickness, rectangles);
538
661
  break;
539
662
  case 2: // square
540
- generateSquareCap(vertices, thickness, rectangles);
663
+ $generateSquareCap(vertices, thickness, rectangles);
541
664
  break;
542
665
  default:
543
666
  break;
@@ -547,9 +670,11 @@ export const generateStrokeOutline = (vertices, thickness) => {
547
670
  };
548
671
  /**
549
672
  * @description ストロークメッシュを生成(WebGL版のMeshStrokeGenerateUseCaseと同じ)
550
- * @param {IPath[]} vertices - パス頂点配列
551
- * @param {number} thickness - 線の太さ(フル値、内部で/2される)
552
- * @return {IPath[]}
673
+ * Generate stroke mesh (same as WebGL MeshStrokeGenerateUseCase)
674
+ *
675
+ * @param {IPath[]} vertices - パス頂点配列 / Array of path vertices
676
+ * @param {number} thickness - 線の太さ(フル値、内部で/2される) / Full line thickness (halved internally)
677
+ * @return {IPath[]} 塗りフォーマットのパス配列 / Array of fill-format paths
553
678
  */
554
679
  export const generateStrokeMesh = (vertices, thickness) => {
555
680
  // WebGL版と同じ: 内部で半分にする
@@ -566,43 +691,3 @@ export const generateStrokeMesh = (vertices, thickness) => {
566
691
  }
567
692
  return fillVertices;
568
693
  };
569
- /**
570
- * @description IPoint[][]形式からストロークメッシュを生成(後方互換用)
571
- * @param {IPoint[][]} paths - パス配列
572
- * @param {number} thickness - 線の太さ
573
- * @return {Float32Array}
574
- */
575
- export const generateStrokeMeshFromPoints = (paths, thickness) => {
576
- const triangles = [];
577
- // WebGL版と同じ: 内部で半分にする
578
- const halfThickness = thickness / 2;
579
- for (const path of paths) {
580
- if (path.length < 2) {
581
- continue;
582
- }
583
- // 各線分に対して矩形を生成
584
- for (let i = 0; i < path.length - 1; i++) {
585
- const startPoint = path[i];
586
- const endPoint = path[i + 1];
587
- const vector = {
588
- "x": endPoint.x - startPoint.x,
589
- "y": endPoint.y - startPoint.y
590
- };
591
- const normal = calculateNormalVector(vector.x, vector.y, halfThickness);
592
- // 矩形の4頂点
593
- const p0x = startPoint.x + normal.x;
594
- const p0y = startPoint.y + normal.y;
595
- const p1x = endPoint.x + normal.x;
596
- const p1y = endPoint.y + normal.y;
597
- const p2x = endPoint.x - normal.x;
598
- const p2y = endPoint.y - normal.y;
599
- const p3x = startPoint.x - normal.x;
600
- const p3y = startPoint.y - normal.y;
601
- // Triangle 1: p0, p1, p2
602
- triangles.push(p0x, p0y, 0, 0, p1x, p1y, 0, 0, p2x, p2y, 0, 0);
603
- // Triangle 2: p0, p2, p3
604
- triangles.push(p0x, p0y, 0, 0, p2x, p2y, 0, 0, p3x, p3y, 0, 0);
605
- }
606
- }
607
- return new Float32Array(triangles);
608
- };