@swf2es/render 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +17 -2
  3. package/dist/commands.d.ts +67 -0
  4. package/dist/commands.d.ts.map +1 -0
  5. package/dist/commands.js +93 -0
  6. package/dist/commands.js.map +1 -0
  7. package/dist/filter-plan.d.ts +110 -0
  8. package/dist/filter-plan.d.ts.map +1 -0
  9. package/dist/filter-plan.js +480 -0
  10. package/dist/filter-plan.js.map +1 -0
  11. package/dist/filter-shaders.d.ts +63 -0
  12. package/dist/filter-shaders.d.ts.map +1 -0
  13. package/dist/filter-shaders.js +350 -0
  14. package/dist/filter-shaders.js.map +1 -0
  15. package/dist/filters.d.ts +107 -0
  16. package/dist/filters.d.ts.map +1 -0
  17. package/dist/filters.js +187 -0
  18. package/dist/filters.js.map +1 -0
  19. package/dist/geometry.d.ts +83 -0
  20. package/dist/geometry.d.ts.map +1 -0
  21. package/dist/geometry.js +93 -0
  22. package/dist/geometry.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +13 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/keeps.d.ts +17 -0
  28. package/dist/keeps.d.ts.map +1 -0
  29. package/dist/keeps.js +17 -0
  30. package/dist/keeps.js.map +1 -0
  31. package/dist/kernel-shaders.d.ts +74 -0
  32. package/dist/kernel-shaders.d.ts.map +1 -0
  33. package/dist/kernel-shaders.js +323 -0
  34. package/dist/kernel-shaders.js.map +1 -0
  35. package/dist/measure.d.ts +56 -0
  36. package/dist/measure.d.ts.map +1 -0
  37. package/dist/measure.js +287 -0
  38. package/dist/measure.js.map +1 -0
  39. package/dist/plan.d.ts +14 -0
  40. package/dist/plan.d.ts.map +1 -0
  41. package/dist/plan.js +247 -0
  42. package/dist/plan.js.map +1 -0
  43. package/dist/registry.d.ts +49 -0
  44. package/dist/registry.d.ts.map +1 -0
  45. package/dist/registry.js +87 -0
  46. package/dist/registry.js.map +1 -0
  47. package/dist/rows.d.ts +39 -0
  48. package/dist/rows.d.ts.map +1 -0
  49. package/dist/rows.js +60 -0
  50. package/dist/rows.js.map +1 -0
  51. package/dist/scene.d.ts +179 -0
  52. package/dist/scene.d.ts.map +1 -0
  53. package/dist/scene.js +265 -0
  54. package/dist/scene.js.map +1 -0
  55. package/dist/shelves.d.ts +23 -0
  56. package/dist/shelves.d.ts.map +1 -0
  57. package/dist/shelves.js +63 -0
  58. package/dist/shelves.js.map +1 -0
  59. package/dist/textures.d.ts +72 -0
  60. package/dist/textures.d.ts.map +1 -0
  61. package/dist/textures.js +160 -0
  62. package/dist/textures.js.map +1 -0
  63. package/dist/webgl/atlas.d.ts +63 -0
  64. package/dist/webgl/atlas.d.ts.map +1 -0
  65. package/dist/webgl/atlas.js +328 -0
  66. package/dist/webgl/atlas.js.map +1 -0
  67. package/dist/webgl/backend.d.ts +141 -0
  68. package/dist/webgl/backend.d.ts.map +1 -0
  69. package/dist/webgl/backend.js +659 -0
  70. package/dist/webgl/backend.js.map +1 -0
  71. package/dist/webgl/composite.d.ts +101 -0
  72. package/dist/webgl/composite.d.ts.map +1 -0
  73. package/dist/webgl/composite.js +293 -0
  74. package/dist/webgl/composite.js.map +1 -0
  75. package/dist/webgl/draws.d.ts +213 -0
  76. package/dist/webgl/draws.d.ts.map +1 -0
  77. package/dist/webgl/draws.js +714 -0
  78. package/dist/webgl/draws.js.map +1 -0
  79. package/dist/webgl/filters.d.ts +107 -0
  80. package/dist/webgl/filters.d.ts.map +1 -0
  81. package/dist/webgl/filters.js +351 -0
  82. package/dist/webgl/filters.js.map +1 -0
  83. package/dist/webgl/gpu-textures.d.ts +44 -0
  84. package/dist/webgl/gpu-textures.d.ts.map +1 -0
  85. package/dist/webgl/gpu-textures.js +178 -0
  86. package/dist/webgl/gpu-textures.js.map +1 -0
  87. package/dist/webgl/holds.d.ts +97 -0
  88. package/dist/webgl/holds.d.ts.map +1 -0
  89. package/dist/webgl/holds.js +453 -0
  90. package/dist/webgl/holds.js.map +1 -0
  91. package/dist/webgl/index.d.ts +2 -0
  92. package/dist/webgl/index.d.ts.map +1 -0
  93. package/dist/webgl/index.js +4 -0
  94. package/dist/webgl/index.js.map +1 -0
  95. package/dist/webgl/kernels.d.ts +64 -0
  96. package/dist/webgl/kernels.d.ts.map +1 -0
  97. package/dist/webgl/kernels.js +160 -0
  98. package/dist/webgl/kernels.js.map +1 -0
  99. package/dist/webgl/pool.d.ts +71 -0
  100. package/dist/webgl/pool.d.ts.map +1 -0
  101. package/dist/webgl/pool.js +192 -0
  102. package/dist/webgl/pool.js.map +1 -0
  103. package/dist/webgl/programs.d.ts +130 -0
  104. package/dist/webgl/programs.d.ts.map +1 -0
  105. package/dist/webgl/programs.js +582 -0
  106. package/dist/webgl/programs.js.map +1 -0
  107. package/dist/webgl/stage.d.ts +67 -0
  108. package/dist/webgl/stage.d.ts.map +1 -0
  109. package/dist/webgl/stage.js +173 -0
  110. package/dist/webgl/stage.js.map +1 -0
  111. package/dist/webgl/targets.d.ts +172 -0
  112. package/dist/webgl/targets.d.ts.map +1 -0
  113. package/dist/webgl/targets.js +323 -0
  114. package/dist/webgl/targets.js.map +1 -0
  115. package/package.json +35 -3
  116. package/src/commands.ts +98 -0
  117. package/src/filter-plan.ts +755 -0
  118. package/src/filter-shaders.ts +360 -0
  119. package/src/filters.ts +220 -0
  120. package/src/geometry.ts +143 -0
  121. package/src/index.ts +87 -0
  122. package/src/keeps.ts +21 -0
  123. package/src/kernel-shaders.ts +375 -0
  124. package/src/measure.ts +400 -0
  125. package/src/plan.ts +331 -0
  126. package/src/registry.ts +105 -0
  127. package/src/rows.ts +93 -0
  128. package/src/scene.ts +297 -0
  129. package/src/shelves.ts +70 -0
  130. package/src/textures.ts +198 -0
  131. package/src/webgl/atlas.ts +370 -0
  132. package/src/webgl/backend.ts +973 -0
  133. package/src/webgl/composite.ts +372 -0
  134. package/src/webgl/draws.ts +902 -0
  135. package/src/webgl/filters.ts +502 -0
  136. package/src/webgl/gpu-textures.ts +253 -0
  137. package/src/webgl/holds.ts +624 -0
  138. package/src/webgl/index.ts +3 -0
  139. package/src/webgl/kernels.ts +205 -0
  140. package/src/webgl/pool.ts +245 -0
  141. package/src/webgl/programs.ts +620 -0
  142. package/src/webgl/stage.ts +214 -0
  143. package/src/webgl/targets.ts +464 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EAER,aAAa,GACd,MAAM,YAAY,CAAC;AAcpB,mFAAmF;AACnF,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,gGAAgG;AAChG,MAAM,KAAK,GAAa,EAAE,CAAC;AAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;AAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;AAC1B,kGAAkG;AAClG,MAAM,IAAI,GAAa,EAAE,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAgB,EAChB,IAAU,EACV,UAAsB,EACtB,MAAqB;IAErB,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,KAAK,IAAI;gBACP,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtC,MAAM;YAER,KAAK,UAAU;gBACb,wCAAwC;gBACxC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,CACzB,CAAC;gBACF,MAAM;YACR,KAAK,QAAQ;gBACX,mEAAmE;gBACnE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACtB,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM;YACR,CAAC;YAED,KAAK,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;gBACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjF,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;wBACrC,yFAAyF;wBACzF,YAAY;wBACZ,IAAI,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;4BACjC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;wBAChE,CAAC;wBAED,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACX,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BAClC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;4BACzC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC3C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBAC9C,CAAC;wBAED,MAAM;oBACR,CAAC;oBAED,IAAI,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;wBACjC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;wBAC9D,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACrC,CAAC;oBAED,MAAM;gBACR,CAAC;gBAED,2FAA2F;gBAC3F,6BAA6B;gBAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,CAAC;gBAED,YAAY,CACV,KAAK,CAAC,KAAK,EACX,KAAK,GAAG,CAAC,EACT,GAAG,EACH,MAAM,EACN,KAAK,CAAC,MAAM,EACZ,KAAK,GAAG,CAAC,EACT,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACnB,KAAK,CAAC,OAAO,CACd,CAAC;gBACF,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvE,CAAC;gBAED,MAAM;YACR,CAAC;YAED,KAAK,IAAI,EAAE,CAAC;gBACV,8DAA8D;gBAC9D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvE,CAAC;gBAED,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAuB,EACvB,EAAU,EACV,GAAW,EACX,MAAqB,EACrB,GAAe,EACf,EAAU,EACV,KAAK,GAAG,QAAQ,EAChB,OAAO,GAAwB,IAAI;IAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9B,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACxB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,8FAA8F;QAC9F,qBAAqB;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CACxB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAChB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAChB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAChB,KAAK,CACN,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YAClB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;YAC5B,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAClC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAClC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAC7C,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,+FAA+F;QAC/F,0CAA0C;QAC1C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnD,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC;IAC9C,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;IACtD,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;AACvD,CAAC;AAED,6DAA6D;AAC7D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa;IAEb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAC3C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAC3C,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAC1C,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAC1C,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,KAAgB,EAChB,IAAU,EACV,UAAsB,EACtB,IAAY,EACZ,KAAa,EACb,GAAa;IAEb,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,KAAK,IAAI;gBACP,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC7D,CAAC;gBAED,MAAM;YACR,KAAK,UAAU;gBACb,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,EAAE,CAAC;gBACX,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,uHAAuH;AACvH,SAAS,SAAS,CAChB,KAAgB,EAChB,CAAS,EACT,GAAiB,EACjB,CAAe,EACf,CAAS,EACT,KAAe;IAEf,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,wFAAwF;IACxF,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,iBAAiB,CACzB,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,SAAS,OAAO,CAAC,IAAc,EAAE,EAAY;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,2DAA2D;AAC3D,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc;IACxE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC"}
package/dist/plan.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { type Commands } from "./commands.js";
2
+ import { type SceneList } from "./scene.js";
3
+ /**
4
+ * Plan a frame: clear to `background` (0xAARRGGBB, straight), then a run
5
+ * for each stretch of the list under one blend mode, each mask pushed into
6
+ * the stencil and popped out, and each layer pushed and composited, where
7
+ * their markers say; a layer of no size is left out, all in it. A filtered
8
+ * layer of draws, masks and held layers alone, not kept, is held (findHolds):
9
+ * drawn before the stage, with every other such of its level, after those
10
+ * it holds (HOLD_PUSH), and composited where it stands (HELD). Pure: the
11
+ * same list plans the same commands.
12
+ */
13
+ export declare function plan(scene: SceneList, background: number, out: Commands): void;
14
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAUd,MAAM,eAAe,CAAC;AACvB,OAAO,EAYL,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAkD9E"}
package/dist/plan.js ADDED
@@ -0,0 +1,247 @@
1
+ import { CLEAR, COMPOSITE, FILTER, HELD, HOLD_POP, HOLD_PUSH, LAYER_POP, LAYER_PUSH, RUN, STENCIL_POP, STENCIL_PUSH, } from "./commands.js";
2
+ import { ALPHA, DRAW, ERASE, KEPT, KERNEL, LAYER_BEGIN, LAYER_END, MASK_BEGIN, MASK_POP, MASK_USE, NO_WHOLE, } from "./scene.js";
3
+ /**
4
+ * Plan a frame: clear to `background` (0xAARRGGBB, straight), then a run
5
+ * for each stretch of the list under one blend mode, each mask pushed into
6
+ * the stencil and popped out, and each layer pushed and composited, where
7
+ * their markers say; a layer of no size is left out, all in it. A filtered
8
+ * layer of draws, masks and held layers alone, not kept, is held (findHolds):
9
+ * drawn before the stage, with every other such of its level, after those
10
+ * it holds (HOLD_PUSH), and composited where it stands (HELD). Pure: the
11
+ * same list plans the same commands.
12
+ */
13
+ export function plan(scene, background, out) {
14
+ out.reset();
15
+ open.length = 0;
16
+ if (heldAt.length < scene.length) {
17
+ heldAt = new Int32Array(Math.max(scene.length, heldAt.length * 2));
18
+ }
19
+ heldAt.fill(-1, 0, scene.length);
20
+ findHolds(scene);
21
+ // Numbered a level after another, in their order within each (a counting sort by level).
22
+ levelStart.length = mostLevel + 2;
23
+ levelStart.fill(0);
24
+ for (let h = 0; h < heldBegin.length; h++) {
25
+ levelStart[heldLevel[h] + 1]++;
26
+ }
27
+ for (let level = 1; level < levelStart.length; level++) {
28
+ levelStart[level] += levelStart[level - 1];
29
+ }
30
+ heldOrder.length = heldBegin.length;
31
+ for (let h = 0; h < heldBegin.length; h++) {
32
+ heldOrder[levelStart[heldLevel[h]]++] = h;
33
+ }
34
+ for (let n = 0; n < heldOrder.length; n++) {
35
+ heldAt[heldBegin[heldOrder[n]]] = n;
36
+ }
37
+ for (let n = 0; n < heldOrder.length; n++) {
38
+ const h = heldOrder[n];
39
+ const i = heldBegin[h];
40
+ const end = heldEnd[h];
41
+ out.push(HOLD_PUSH, layerParams(out, scene, scene.geometry[i]), n, heldLevel[h]);
42
+ emit(scene, i + 1, end, out, false);
43
+ out.push(HOLD_POP, scene.texture[end], n);
44
+ }
45
+ const alpha = (background >>> 24) / 255;
46
+ out.push(CLEAR, out.param((((background >> 16) & 0xff) / 255) * alpha, (((background >> 8) & 0xff) / 255) * alpha, ((background & 0xff) / 255) * alpha, alpha));
47
+ out.opaqueStage = alpha === 1;
48
+ emit(scene, 0, scene.length, out, true);
49
+ }
50
+ /**
51
+ * The commands for the list's entries from `from` to before `to`: a run for
52
+ * each stretch under one blend mode, outside a mask's own draws, which its
53
+ * markers name for the stencil; masks, layers and kept outputs where their
54
+ * markers are; a held layer's composite where it begins (heldAt). Of the
55
+ * `stage`, not a held layer's content, which clears its own page alone.
56
+ */
57
+ function emit(scene, from, to, out, stage) {
58
+ let first = -1;
59
+ let masking = false;
60
+ const close = (end) => {
61
+ if (first >= 0 && end > first) {
62
+ out.push(RUN, first, end - first, scene.blend[first]);
63
+ }
64
+ first = -1;
65
+ };
66
+ for (let i = from; i < to; i++) {
67
+ switch (scene.kind[i]) {
68
+ case DRAW:
69
+ if (!masking && first >= 0 && scene.blend[i] !== scene.blend[first]) {
70
+ close(i);
71
+ }
72
+ if (!masking && first < 0) {
73
+ first = i;
74
+ }
75
+ break;
76
+ case MASK_BEGIN:
77
+ close(i);
78
+ masking = true;
79
+ break;
80
+ case MASK_USE:
81
+ masking = false;
82
+ out.push(STENCIL_PUSH, scene.geometry[i], scene.row[i]);
83
+ break;
84
+ case MASK_POP:
85
+ close(i);
86
+ out.push(STENCIL_POP, scene.geometry[i], scene.row[i]);
87
+ break;
88
+ case LAYER_BEGIN: {
89
+ close(i);
90
+ if (heldAt[i] >= 0) {
91
+ const end = layerEnd(scene, i);
92
+ out.push(HELD, heldAt[i], scene.geometry[end], scene.row[end]);
93
+ if (stage) {
94
+ noteClearing(out, scene.geometry[end]);
95
+ }
96
+ i = end;
97
+ break;
98
+ }
99
+ const r = scene.layers;
100
+ const at = scene.geometry[i] * 4;
101
+ if (r[at + 2] <= 0 || r[at + 3] <= 0) {
102
+ // Nothing of it shows: all in it left out, up to its end.
103
+ i = layerEnd(scene, i);
104
+ break;
105
+ }
106
+ open.push(scene.geometry[i]);
107
+ out.push(LAYER_PUSH, layerParams(out, scene, scene.geometry[i]), scene.pads[scene.geometry[i]] >= 0 ? 1 : 0);
108
+ break;
109
+ }
110
+ case LAYER_END:
111
+ close(i);
112
+ if (scene.texture[i] >= 0) {
113
+ out.push(FILTER, scene.texture[i]);
114
+ }
115
+ out.push(LAYER_POP, scene.geometry[i], scene.row[i], scene.keeps[open.pop()]);
116
+ noteClearing(out, scene.geometry[i]);
117
+ break;
118
+ case KEPT: {
119
+ close(i);
120
+ const r = scene.layers;
121
+ const at = scene.geometry[i] * 4;
122
+ if (r[at + 2] > 0 && r[at + 3] > 0) {
123
+ out.push(COMPOSITE, out.param(r[at], r[at + 1], r[at + 2], r[at + 3], scene.texture[i]), scene.blend[i], scene.row[i]);
124
+ noteClearing(out, scene.blend[i]);
125
+ }
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ close(to);
131
+ }
132
+ /** Each entry's held layer, by number, where a layer it begins is held; else -1. */
133
+ let heldAt = new Int32Array(256);
134
+ /** The held layers found (findHolds): where each begins and ends, and its level; the deepest level. */
135
+ const heldBegin = [];
136
+ const heldEnd = [];
137
+ const heldLevel = [];
138
+ /** Where each level's held layers start in their numbering, and the held layers in it. */
139
+ const levelStart = [];
140
+ const heldOrder = [];
141
+ let mostLevel = 0;
142
+ /** The layers open as findHolds walks: where each begins, the level its held layers reach, whether it may be held. */
143
+ const openBegin = [];
144
+ const openLevel = [];
145
+ const openHoldable = [];
146
+ /**
147
+ * The layers held: filtered, not kept for the frames after, of some size,
148
+ * and of draws, masks and held layers alone, with no other layer or kept
149
+ * output in them, whose content no other target takes part in. Each has a
150
+ * level, one past the deepest of those in it, and leaves 0, so that a held
151
+ * layer's are drawn before it. A layer of no size is left out, all in it.
152
+ */
153
+ function findHolds(scene) {
154
+ heldBegin.length = 0;
155
+ heldEnd.length = 0;
156
+ heldLevel.length = 0;
157
+ openBegin.length = 0;
158
+ openLevel.length = 0;
159
+ openHoldable.length = 0;
160
+ mostLevel = 0;
161
+ for (let i = 0; i < scene.length; i++) {
162
+ switch (scene.kind[i]) {
163
+ case LAYER_BEGIN: {
164
+ const layer = scene.geometry[i];
165
+ if (scene.layers[layer * 4 + 2] <= 0 || scene.layers[layer * 4 + 3] <= 0) {
166
+ i = layerEnd(scene, i);
167
+ break;
168
+ }
169
+ openBegin.push(i);
170
+ openLevel.push(0);
171
+ openHoldable.push(scene.pads[layer] >= 0 && scene.keeps[layer] < 0);
172
+ break;
173
+ }
174
+ case KEPT:
175
+ if (openHoldable.length > 0) {
176
+ openHoldable[openHoldable.length - 1] = false;
177
+ }
178
+ break;
179
+ case LAYER_END: {
180
+ const begin = openBegin.pop();
181
+ const level = openLevel.pop();
182
+ const held = openHoldable.pop() && scene.texture[i] >= 0;
183
+ if (held) {
184
+ heldBegin.push(begin);
185
+ heldEnd.push(i);
186
+ heldLevel.push(level);
187
+ mostLevel = Math.max(mostLevel, level);
188
+ }
189
+ const top = openBegin.length - 1;
190
+ if (top >= 0) {
191
+ if (held) {
192
+ openLevel[top] = Math.max(openLevel[top], level + 1);
193
+ }
194
+ else {
195
+ openHoldable[top] = false;
196
+ }
197
+ }
198
+ break;
199
+ }
200
+ }
201
+ }
202
+ }
203
+ /**
204
+ * Layer `layer`'s params: its rectangle, then where its object lies in it
205
+ * and its size (SceneList.objects), or a width of -1 for none, as a whole
206
+ * layer's ShaderFilters read it.
207
+ */
208
+ function layerParams(out, scene, layer) {
209
+ const r = scene.layers;
210
+ const o = scene.objects;
211
+ const at = layer * 4;
212
+ return scene.wholes[layer] === NO_WHOLE
213
+ ? out.param(r[at], r[at + 1], r[at + 2], r[at + 3], 0, 0, -1, -1)
214
+ : out.param(r[at], r[at + 1], r[at + 2], r[at + 3], o[at] - r[at], o[at + 1] - r[at + 1], o[at + 2], o[at + 3]);
215
+ }
216
+ /** The layers pushed and not yet popped, by number, innermost last. */
217
+ const open = [];
218
+ /**
219
+ * A layer composited in `mode` noted where it clears the target itself
220
+ * (Commands.clearsTarget), or may leave it less than opaque (opaqueStage).
221
+ */
222
+ function noteClearing(out, mode) {
223
+ if (open.length === 0 && (mode === ERASE || mode === ALPHA)) {
224
+ out.clearsTarget = true;
225
+ }
226
+ if (open.length === 0 && (mode === ERASE || mode === ALPHA || mode >= KERNEL)) {
227
+ out.opaqueStage = false;
228
+ }
229
+ }
230
+ /** The LAYER_END that closes the layer begun at entry `begin`. */
231
+ function layerEnd(scene, begin) {
232
+ let depth = 0;
233
+ for (let i = begin; i < scene.length; i++) {
234
+ switch (scene.kind[i]) {
235
+ case LAYER_BEGIN:
236
+ depth++;
237
+ break;
238
+ case LAYER_END:
239
+ if (--depth === 0) {
240
+ return i;
241
+ }
242
+ break;
243
+ }
244
+ }
245
+ return scene.length;
246
+ }
247
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /** What a registry holds as its owner holds it: its id, and the generation the id had. */
2
+ export interface Handle {
3
+ id: number;
4
+ generation: number;
5
+ }
6
+ /**
7
+ * Ids for what a frame may name, handed out and taken back: a reused id is
8
+ * a new generation, which an old handle does not name; what goes unused
9
+ * for its idle frames is removed; the backend takes what was removed since
10
+ * it last looked. Geometries, textures and kept outputs are each one.
11
+ */
12
+ export declare class Registry {
13
+ private readonly generations;
14
+ private readonly usedAt;
15
+ private readonly idleFrames;
16
+ private readonly held;
17
+ private readonly free;
18
+ /** Removed since the backend last took them. */
19
+ removed: number[];
20
+ frame: number;
21
+ /** A new id, removed once unused for `idle` frames. */
22
+ protected hold(idle: number): Handle;
23
+ /** Whether `handle` still names what it was given for. */
24
+ alive(handle: Handle): boolean;
25
+ /** Whether `id` names anything now. */
26
+ holds(id: number): boolean;
27
+ /** How many ids there have been, the free ones among them. */
28
+ get size(): number;
29
+ /** How many ids name something now. */
30
+ get count(): number;
31
+ /** `id` let go of after `idle` unused frames, where that is fewer than it was given. */
32
+ idleWithin(id: number, idle: number): void;
33
+ /**
34
+ * `id` let go of after `idle` unused frames, more or fewer than before:
35
+ * Infinity keeps it till it is removed, as a texture that alone holds what
36
+ * was drawn into it is kept.
37
+ */
38
+ idleFor(id: number, idle: number): void;
39
+ /** `id` used this frame. */
40
+ use(id: number): void;
41
+ remove(id: number): void;
42
+ /** What `id` held, let go of as it is removed. */
43
+ protected dropped(_id: number): void;
44
+ /** Everything let go of, as a lost context took it: the owners add it again. */
45
+ lost(): void;
46
+ /** A frame ends: what went unused too long is let go of. */
47
+ endFrame(): void;
48
+ }
49
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,KAAK,SAAK;IAEV,uDAAuD;IACvD,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnC;IAED,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7B;IAED,uCAAuC;IACvC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED,8DAA8D;IAC9D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,uCAAuC;IACvC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,wFAAwF;IACxF,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzC;IAED;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAItC;IAED,4BAA4B;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEpB;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAOvB;IAED,kDAAkD;IAClD,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAG;IAEvC,gFAAgF;IAChF,IAAI,IAAI,IAAI,CAIX;IAED,4DAA4D;IAC5D,QAAQ,IAAI,IAAI,CAQf;CACF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Ids for what a frame may name, handed out and taken back: a reused id is
3
+ * a new generation, which an old handle does not name; what goes unused
4
+ * for its idle frames is removed; the backend takes what was removed since
5
+ * it last looked. Geometries, textures and kept outputs are each one.
6
+ */
7
+ export class Registry {
8
+ generations = [];
9
+ usedAt = [];
10
+ idleFrames = [];
11
+ held = [];
12
+ free = [];
13
+ /** Removed since the backend last took them. */
14
+ removed = [];
15
+ frame = 0;
16
+ /** A new id, removed once unused for `idle` frames. */
17
+ hold(idle) {
18
+ const id = this.free.pop() ?? this.held.length;
19
+ this.held[id] = true;
20
+ this.generations[id] = (this.generations[id] ?? 0) + 1;
21
+ this.usedAt[id] = this.frame;
22
+ this.idleFrames[id] = idle;
23
+ return { id, generation: this.generations[id] };
24
+ }
25
+ /** Whether `handle` still names what it was given for. */
26
+ alive(handle) {
27
+ return this.held[handle.id] === true && this.generations[handle.id] === handle.generation;
28
+ }
29
+ /** Whether `id` names anything now. */
30
+ holds(id) {
31
+ return this.held[id] === true;
32
+ }
33
+ /** How many ids there have been, the free ones among them. */
34
+ get size() {
35
+ return this.held.length;
36
+ }
37
+ /** How many ids name something now. */
38
+ get count() {
39
+ return this.held.length - this.free.length;
40
+ }
41
+ /** `id` let go of after `idle` unused frames, where that is fewer than it was given. */
42
+ idleWithin(id, idle) {
43
+ if (this.held[id] && idle < this.idleFrames[id]) {
44
+ this.idleFrames[id] = idle;
45
+ }
46
+ }
47
+ /**
48
+ * `id` let go of after `idle` unused frames, more or fewer than before:
49
+ * Infinity keeps it till it is removed, as a texture that alone holds what
50
+ * was drawn into it is kept.
51
+ */
52
+ idleFor(id, idle) {
53
+ if (this.held[id]) {
54
+ this.idleFrames[id] = idle;
55
+ }
56
+ }
57
+ /** `id` used this frame. */
58
+ use(id) {
59
+ this.usedAt[id] = this.frame;
60
+ }
61
+ remove(id) {
62
+ if (this.held[id]) {
63
+ this.held[id] = false;
64
+ this.removed.push(id);
65
+ this.free.push(id);
66
+ this.dropped(id);
67
+ }
68
+ }
69
+ /** What `id` held, let go of as it is removed. */
70
+ dropped(_id) { }
71
+ /** Everything let go of, as a lost context took it: the owners add it again. */
72
+ lost() {
73
+ for (let id = 0; id < this.held.length; id++) {
74
+ this.remove(id);
75
+ }
76
+ }
77
+ /** A frame ends: what went unused too long is let go of. */
78
+ endFrame() {
79
+ for (let id = 0; id < this.held.length; id++) {
80
+ if (this.held[id] && this.frame - this.usedAt[id] > this.idleFrames[id]) {
81
+ this.remove(id);
82
+ }
83
+ }
84
+ this.frame++;
85
+ }
86
+ }
87
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/rows.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Floats a row: an object's transform on the stage and its colour
3
+ * transform, four texels of a float texture. The linear part; the
4
+ * translation; the multipliers; the offsets, over 255.
5
+ */
6
+ export declare const ROW_FLOATS = 16;
7
+ /** Rows a line of the rows' texture. */
8
+ export declare const ROWS_A_LINE = 256;
9
+ /** The rows of a frame's draws, written in order and uploaded together. */
10
+ export declare class Rows {
11
+ data: Float32Array<ArrayBuffer>;
12
+ count: number;
13
+ /** Written from the first row again, as a frame starts. */
14
+ reset(): void;
15
+ /**
16
+ * A row for the transform at `places[at]`, a b c d tx ty: numbers a
17
+ * caller keeps in a typed array, so that none are boxed passing them.
18
+ */
19
+ addPlaced(places: Float64Array, at: number, ct: ColorRow | null): number;
20
+ /** A row for the translation of the transform at `places[at]` alone. */
21
+ addTranslated(places: Float64Array, at: number, ct: ColorRow | null): number;
22
+ /**
23
+ * A row for the transform `m` and, unless null, the colour transform's
24
+ * multipliers and offsets `ct`: its index.
25
+ */
26
+ add(a: number, b: number, c: number, d: number, tx: number, ty: number, ct: ColorRow | null): number;
27
+ }
28
+ /** A colour transform as Flash gives one: multipliers, and offsets from -255 to 255. */
29
+ export interface ColorRow {
30
+ rMul: number;
31
+ gMul: number;
32
+ bMul: number;
33
+ aMul: number;
34
+ rAdd: number;
35
+ gAdd: number;
36
+ bAdd: number;
37
+ aAdd: number;
38
+ }
39
+ //# sourceMappingURL=rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,wCAAwC;AACxC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,2EAA2E;AAC3E,qBAAa,IAAI;IACf,IAAI,4BAA8C;IAClD,KAAK,SAAK;IAEV,2DAA2D;IAC3D,KAAK,IAAI,IAAI,CAEZ;IAED;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAUvE;IAED,wEAAwE;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAE3E;IAED;;;OAGG;IACH,GAAG,CACD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,QAAQ,GAAG,IAAI,GAClB,MAAM,CA2BR;CACF;AAED,wFAAwF;AACxF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
package/dist/rows.js ADDED
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Floats a row: an object's transform on the stage and its colour
3
+ * transform, four texels of a float texture. The linear part; the
4
+ * translation; the multipliers; the offsets, over 255.
5
+ */
6
+ export const ROW_FLOATS = 16;
7
+ /** Rows a line of the rows' texture. */
8
+ export const ROWS_A_LINE = 256;
9
+ /** The rows of a frame's draws, written in order and uploaded together. */
10
+ export class Rows {
11
+ data = new Float32Array(ROWS_A_LINE * ROW_FLOATS);
12
+ count = 0;
13
+ /** Written from the first row again, as a frame starts. */
14
+ reset() {
15
+ this.count = 0;
16
+ }
17
+ /**
18
+ * A row for the transform at `places[at]`, a b c d tx ty: numbers a
19
+ * caller keeps in a typed array, so that none are boxed passing them.
20
+ */
21
+ addPlaced(places, at, ct) {
22
+ return this.add(places[at], places[at + 1], places[at + 2], places[at + 3], places[at + 4], places[at + 5], ct);
23
+ }
24
+ /** A row for the translation of the transform at `places[at]` alone. */
25
+ addTranslated(places, at, ct) {
26
+ return this.add(1, 0, 0, 1, places[at + 4], places[at + 5], ct);
27
+ }
28
+ /**
29
+ * A row for the transform `m` and, unless null, the colour transform's
30
+ * multipliers and offsets `ct`: its index.
31
+ */
32
+ add(a, b, c, d, tx, ty, ct) {
33
+ const row = this.count++;
34
+ if (this.count * ROW_FLOATS > this.data.length) {
35
+ const grown = new Float32Array(this.data.length * 2);
36
+ grown.set(this.data);
37
+ this.data = grown;
38
+ }
39
+ const out = this.data;
40
+ const at = row * ROW_FLOATS;
41
+ out[at] = a;
42
+ out[at + 1] = b;
43
+ out[at + 2] = c;
44
+ out[at + 3] = d;
45
+ out[at + 4] = tx;
46
+ out[at + 5] = ty;
47
+ out[at + 6] = 0;
48
+ out[at + 7] = 0;
49
+ out[at + 8] = ct ? ct.rMul : 1;
50
+ out[at + 9] = ct ? ct.gMul : 1;
51
+ out[at + 10] = ct ? ct.bMul : 1;
52
+ out[at + 11] = ct ? ct.aMul : 1;
53
+ out[at + 12] = ct ? ct.rAdd / 255 : 0;
54
+ out[at + 13] = ct ? ct.gAdd / 255 : 0;
55
+ out[at + 14] = ct ? ct.bAdd / 255 : 0;
56
+ out[at + 15] = ct ? ct.aAdd / 255 : 0;
57
+ return row;
58
+ }
59
+ }
60
+ //# sourceMappingURL=rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"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"}