ranger-compiler 3.5.0 → 3.5.2

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 (338) hide show
  1. package/CHANGELOG.md +1160 -19
  2. package/LICENSE +3 -1
  3. package/README.md +124 -29
  4. package/dist/Lang.rgr +1188 -290
  5. package/dist/api.d.ts +2343 -879
  6. package/dist/api.js +79924 -56922
  7. package/dist/lib/JSON.rgr +102 -91
  8. package/dist/lib/Shell.rgr +4 -4
  9. package/dist/lib/apple/AppleToolchain.rgr +4 -4
  10. package/dist/lib/apple/README.md +5 -4
  11. package/dist/lib/apple/apple_test.rgr +1 -1
  12. package/dist/lib/core/README.md +1 -1
  13. package/dist/lib/evg/EVG.rgr +12 -0
  14. package/dist/lib/evg/EVGA11yFromTree.rgr +302 -0
  15. package/dist/lib/evg/EVGA11yTree.rgr +894 -0
  16. package/dist/lib/evg/EVGBox.rgr +267 -0
  17. package/dist/lib/evg/EVGBoxShorthandTest.rgr +220 -0
  18. package/dist/lib/evg/EVGCodepoint.rgr +316 -0
  19. package/dist/lib/evg/EVGColor.rgr +700 -0
  20. package/dist/lib/evg/EVGCommands.rgr +177 -0
  21. package/dist/lib/evg/EVGComponent.rgr +331 -0
  22. package/dist/lib/evg/EVGComponentTest.rgr +387 -0
  23. package/dist/lib/evg/EVGConnector.rgr +541 -0
  24. package/dist/lib/evg/EVGConnectorTest.rgr +306 -0
  25. package/dist/lib/evg/EVGDisplayList.rgr +4186 -0
  26. package/dist/lib/evg/EVGEasing.rgr +370 -0
  27. package/dist/lib/evg/EVGEffectTest.rgr +253 -0
  28. package/dist/lib/evg/EVGElement.rgr +4914 -0
  29. package/dist/lib/evg/EVGFixedTest.rgr +289 -0
  30. package/dist/lib/evg/EVGFlexRulesTest.rgr +317 -0
  31. package/dist/lib/evg/EVGFlexWrapTest.rgr +246 -0
  32. package/dist/lib/evg/EVGFling.rgr +244 -0
  33. package/dist/lib/evg/EVGFocus.rgr +400 -0
  34. package/dist/lib/evg/EVGFocusTest.rgr +399 -0
  35. package/dist/lib/evg/EVGGradient.rgr +322 -0
  36. package/dist/lib/evg/EVGGrapheme.rgr +190 -0
  37. package/dist/lib/evg/EVGGrid.rgr +975 -0
  38. package/dist/lib/evg/EVGHitTest.rgr +208 -0
  39. package/dist/lib/evg/EVGHoles.rgr +294 -0
  40. package/dist/lib/evg/EVGHostMeasurerTest.rgr +281 -0
  41. package/dist/lib/evg/EVGHostTextMeasurer.rgr +331 -0
  42. package/dist/lib/evg/EVGHostTree.rgr +834 -0
  43. package/dist/lib/evg/EVGHostTreeTest.rgr +447 -0
  44. package/dist/lib/evg/EVGImageDecode.rgr +117 -0
  45. package/dist/lib/evg/EVGImageMeasurer.rgr +86 -0
  46. package/dist/lib/evg/EVGInspect.rgr +883 -0
  47. package/dist/lib/evg/EVGInvalidateTest.rgr +432 -0
  48. package/dist/lib/evg/EVGJsonTest.rgr +535 -0
  49. package/dist/lib/evg/EVGLayout.rgr +4220 -0
  50. package/dist/lib/evg/EVGMeasure.rgr +1267 -0
  51. package/dist/lib/evg/EVGOverlayTest.rgr +626 -0
  52. package/dist/lib/evg/EVGPatch.rgr +1721 -0
  53. package/dist/lib/evg/EVGPatchTest.rgr +692 -0
  54. package/dist/lib/evg/EVGPopoverTest.rgr +395 -0
  55. package/dist/lib/evg/EVGReconcile.rgr +226 -0
  56. package/dist/lib/evg/EVGReconcileTest.rgr +421 -0
  57. package/dist/lib/evg/EVGReject.rgr +126 -0
  58. package/dist/lib/evg/EVGRelayoutTest.rgr +375 -0
  59. package/dist/lib/evg/EVGRtlLayoutTest.rgr +319 -0
  60. package/dist/lib/evg/EVGRuler.rgr +232 -0
  61. package/dist/lib/evg/EVGRulerTest.rgr +172 -0
  62. package/dist/lib/evg/EVGSelectChrome.rgr +178 -0
  63. package/dist/lib/evg/EVGStyleCacheTest.rgr +419 -0
  64. package/dist/lib/evg/EVGStyleSheet.rgr +2148 -0
  65. package/dist/lib/evg/EVGStyleStateTest.rgr +407 -0
  66. package/dist/lib/evg/EVGStyleVarTest.rgr +471 -0
  67. package/dist/lib/evg/EVGText.rgr +105 -0
  68. package/dist/lib/evg/EVGTextEngine.rgr +536 -0
  69. package/dist/lib/evg/EVGTextMeasurer.rgr +720 -0
  70. package/dist/lib/evg/EVGTimingTest.rgr +1417 -0
  71. package/dist/lib/evg/EVGToolbar.rgr +1369 -0
  72. package/dist/lib/evg/EVGTransition.rgr +728 -0
  73. package/dist/lib/evg/EVGTreeJson.rgr +721 -0
  74. package/dist/lib/evg/EVGUnit.rgr +554 -0
  75. package/dist/lib/evg/EVGViewportUnitTest.rgr +236 -0
  76. package/dist/lib/evg/EvgApp.rgr +189 -0
  77. package/dist/lib/evg/EvgBitmapTracer.rgr +4277 -0
  78. package/dist/lib/evg/EvgBitmapTracerTest.rgr +2119 -0
  79. package/dist/lib/evg/EvgHost.rgr +451 -0
  80. package/dist/lib/evg/EvgTest.rgr +91 -0
  81. package/dist/lib/evg/EvgTraceColor.rgr +236 -0
  82. package/dist/lib/evg/EvgTraceCurve.rgr +648 -0
  83. package/dist/lib/evg/EvgTraceFit.rgr +767 -0
  84. package/dist/lib/evg/EvgTracePath.rgr +435 -0
  85. package/dist/lib/evg/EvgTraceTypes.rgr +559 -0
  86. package/dist/lib/evg/EvgViewport.rgr +313 -0
  87. package/dist/lib/evg/FxDemoDoc.rgr +185 -0
  88. package/dist/lib/evg/HOSTS.md +227 -0
  89. package/dist/lib/evg/ISSUES.md +835 -0
  90. package/dist/lib/evg/PLAN_ACCESSIBILITY.md +650 -0
  91. package/dist/lib/evg/PLAN_CSS_LAYOUT_AND_FONTS.md +1124 -0
  92. package/dist/lib/evg/PLAN_EFFECTS.md +431 -0
  93. package/dist/lib/evg/PLAN_EVG.md +518 -0
  94. package/dist/lib/evg/PLAN_EVG_RENDERER.md +1674 -0
  95. package/dist/lib/evg/PLAN_INSPECTOR.md +788 -0
  96. package/dist/lib/evg/PLAN_LINKS_AND_FORMS.md +157 -0
  97. package/dist/lib/evg/PLAN_NATIVE_HOSTS.md +671 -0
  98. package/dist/lib/evg/PLAN_VECTOR_IR.md +664 -0
  99. package/dist/lib/evg/PLAN_VIEW_TRANSFORM.md +322 -0
  100. package/dist/lib/evg/PathBuilder.rgr +333 -0
  101. package/dist/lib/evg/README.md +1236 -0
  102. package/dist/lib/evg/SPEC.md +1252 -0
  103. package/dist/lib/evg/SVGPathParser.rgr +1199 -0
  104. package/dist/lib/evg/SvgParser.rgr +1736 -0
  105. package/dist/lib/evg/TODO_EVG_RENDERER.md +595 -0
  106. package/dist/lib/evg/VectorShapes.rgr +331 -0
  107. package/dist/lib/evg/VectorStroke.rgr +107 -0
  108. package/dist/lib/evg/VectorViewBox.rgr +380 -0
  109. package/dist/lib/evg/agent/README.md +290 -0
  110. package/dist/lib/evg/agent/evg_agent.rgr +899 -0
  111. package/dist/lib/evg/agent/fixtures/broken.evg.json +7 -0
  112. package/dist/lib/evg/agent/fixtures/card.evg.json +9 -0
  113. package/dist/lib/evg/agent/fixtures/connector.css +63 -0
  114. package/dist/lib/evg/agent/fixtures/connector.evg.json +14 -0
  115. package/dist/lib/evg/agent/fixtures/drawn.evg.json +129 -0
  116. package/dist/lib/evg/agent/fixtures/gradient.evg.json +4 -0
  117. package/dist/lib/evg/agent/fixtures/popover.css +99 -0
  118. package/dist/lib/evg/agent/fixtures/popover.evg.json +30 -0
  119. package/dist/lib/evg/agent/roundtrip.sh +74 -0
  120. package/dist/lib/evg/agent/smoke.sh +230 -0
  121. package/dist/lib/evg/android/README.md +97 -0
  122. package/dist/lib/evg/android/androidstubs/AndroidStubs.kt +175 -0
  123. package/dist/lib/evg/android/androidstubs/Annotation.kt +10 -0
  124. package/dist/lib/evg/android/androidstubs/App.kt +30 -0
  125. package/dist/lib/evg/android/androidstubs/Content.kt +41 -0
  126. package/dist/lib/evg/android/androidstubs/ContentRes.kt +12 -0
  127. package/dist/lib/evg/android/androidstubs/InputMethod.kt +46 -0
  128. package/dist/lib/evg/android/androidstubs/Net.kt +6 -0
  129. package/dist/lib/evg/android/androidstubs/Os.kt +30 -0
  130. package/dist/lib/evg/android/androidstubs/Util.kt +15 -0
  131. package/dist/lib/evg/android/androidstubs/View.kt +113 -0
  132. package/dist/lib/evg/android/androidstubs/Widget.kt +16 -0
  133. package/dist/lib/evg/android/src/android/kotlin/fi/ranger/evg/AndroidEvgSurface.kt +323 -0
  134. package/dist/lib/evg/android/src/android/kotlin/fi/ranger/evg/AndroidTextMeasurer.kt +56 -0
  135. package/dist/lib/evg/android/src/android/kotlin/fi/ranger/evg/RippleEffect.kt +262 -0
  136. package/dist/lib/evg/android/src/awt/kotlin/fi/ranger/evg/AwtEvgSurface.kt +238 -0
  137. package/dist/lib/evg/android/src/awt/kotlin/fi/ranger/evg/AwtTextMeasurer.kt +85 -0
  138. package/dist/lib/evg/android/src/main/kotlin/fi/ranger/evg/EvgEngineThread.kt +115 -0
  139. package/dist/lib/evg/android/src/main/kotlin/fi/ranger/evg/EvgPainter.kt +231 -0
  140. package/dist/lib/evg/android/src/main/kotlin/fi/ranger/evg/EvgSurface.kt +117 -0
  141. package/dist/lib/evg/android/src/main/kotlin/fi/ranger/evg/RecordingSurface.kt +94 -0
  142. package/dist/lib/evg/apple/README.md +128 -0
  143. package/dist/lib/evg/apple/Sources/CoreGraphicsEvgSurface.swift +329 -0
  144. package/dist/lib/evg/apple/Sources/CoreTextMeasurer.swift +70 -0
  145. package/dist/lib/evg/apple/Sources/EvgEngineQueue.swift +105 -0
  146. package/dist/lib/evg/apple/Sources/EvgPainter.swift +225 -0
  147. package/dist/lib/evg/apple/Sources/EvgSurface.swift +163 -0
  148. package/dist/lib/evg/apple/Sources/RecordingSurface.swift +110 -0
  149. package/dist/lib/evg/bench/EvgLayoutBench.rgr +34 -0
  150. package/dist/lib/evg/bench/README.md +64 -0
  151. package/dist/lib/evg/bench/layout-bench.mjs +316 -0
  152. package/dist/lib/evg/bench/layout-cases.mjs +510 -0
  153. package/dist/lib/evg/bench/layout-conformance.mjs +254 -0
  154. package/dist/lib/evg/bin/.gitignore +17 -0
  155. package/dist/lib/evg/evg_test.rgr +313 -0
  156. package/dist/lib/evg/gl/README.md +198 -0
  157. package/dist/lib/evg/gl/a11y-paint-check.mjs +73 -0
  158. package/dist/lib/evg/gl/blur-check.mjs +399 -0
  159. package/dist/lib/evg/gl/boxmodel.json +1 -0
  160. package/dist/lib/evg/gl/demo.html +46 -0
  161. package/dist/lib/evg/gl/effect-presets.css +285 -0
  162. package/dist/lib/evg/gl/effect-presets.js +63 -0
  163. package/dist/lib/evg/gl/effect-shots.mjs +135 -0
  164. package/dist/lib/evg/gl/evg-a11y.js +566 -0
  165. package/dist/lib/evg/gl/evg-binary.js +160 -0
  166. package/dist/lib/evg/gl/evg-engine.js +296 -0
  167. package/dist/lib/evg/gl/evg-fx.js +237 -0
  168. package/dist/lib/evg/gl/evg-gestures.js +209 -0
  169. package/dist/lib/evg/gl/evg-list.js +167 -0
  170. package/dist/lib/evg/gl/evg-measure.js +186 -0
  171. package/dist/lib/evg/gl/evg-textinput.js +303 -0
  172. package/dist/lib/evg/gl/evg-view.js +144 -0
  173. package/dist/lib/evg/gl/evg-webgl.js +3942 -0
  174. package/dist/lib/evg/gl/fx-check.mjs +998 -0
  175. package/dist/lib/evg/gl/fx-demo.html +166 -0
  176. package/dist/lib/evg/gl/fx-demo.js +2 -0
  177. package/dist/lib/evg/gl/fx-serve.mjs +47 -0
  178. package/dist/lib/evg/gl/gestures-check.mjs +189 -0
  179. package/dist/lib/evg/gl/list-binary-check.mjs +152 -0
  180. package/dist/lib/evg/gl/measure-check.mjs +135 -0
  181. package/dist/lib/evg/gl/rotation-check.mjs +207 -0
  182. package/dist/lib/evg/gl/shift-check.mjs +113 -0
  183. package/dist/lib/evg/gl/stroke-check.mjs +168 -0
  184. package/dist/lib/evg/gl/text-snap-check.mjs +139 -0
  185. package/dist/lib/evg/gl/view-check.mjs +343 -0
  186. package/dist/lib/evg/gl/view-policy-check.mjs +184 -0
  187. package/dist/lib/evg/html/evg-dom.js +318 -0
  188. package/dist/lib/evg/html/evg-html.js +600 -0
  189. package/dist/lib/evg/inspect/README.md +415 -0
  190. package/dist/lib/evg/inspect/browser-smoke.mjs +115 -0
  191. package/dist/lib/evg/inspect/evg-inspect.js +947 -0
  192. package/dist/lib/evg/inspect/shots/css.png +0 -0
  193. package/dist/lib/evg/inspect/shots/dashboard.png +0 -0
  194. package/dist/lib/evg/inspect/shots/pptx-slide.png +0 -0
  195. package/dist/lib/evg/inspect/shots/state.png +0 -0
  196. package/dist/lib/evg/inspect/shots.mjs +226 -0
  197. package/dist/lib/evg/oracle/css-blur.json +576 -0
  198. package/dist/lib/evg/oracle/css-box.json +157 -0
  199. package/dist/lib/evg/oracle/css-timing.json +709 -0
  200. package/dist/lib/evg/oracle/css_blur_oracle.mjs +529 -0
  201. package/dist/lib/evg/oracle/css_box_oracle.mjs +106 -0
  202. package/dist/lib/evg/oracle/css_timing_oracle.mjs +389 -0
  203. package/dist/lib/evg/original/EVGColor.clj +310 -0
  204. package/dist/lib/evg/original/EVGColorContext.rgr +178 -0
  205. package/dist/lib/evg/original/SVGPath.rgr +627 -0
  206. package/dist/lib/evg/original/Vec2.crgr +103 -0
  207. package/dist/lib/evg/ranger.json +9 -0
  208. package/dist/lib/evg/showcase/README.md +246 -0
  209. package/dist/lib/evg/showcase/assets/emblem.svg +30 -0
  210. package/dist/lib/evg/showcase/assets/rosette.svg +22 -0
  211. package/dist/lib/evg/showcase/build.mjs +651 -0
  212. package/dist/lib/evg/showcase/pages/album.tsx +30 -0
  213. package/dist/lib/evg/showcase/pages/boxmodel.tsx +37 -0
  214. package/dist/lib/evg/showcase/pages/cards.tsx +41 -0
  215. package/dist/lib/evg/showcase/pages/chart_api.tsx +170 -0
  216. package/dist/lib/evg/showcase/pages/charts.tsx +219 -0
  217. package/dist/lib/evg/showcase/pages/drawing.tsx +160 -0
  218. package/dist/lib/evg/showcase/pages/emoji.tsx +91 -0
  219. package/dist/lib/evg/showcase/pages/flex.tsx +46 -0
  220. package/dist/lib/evg/showcase/pages/more.tsx +332 -0
  221. package/dist/lib/evg/showcase/pages/plots.tsx +262 -0
  222. package/dist/lib/evg/showcase/pages/svg.tsx +63 -0
  223. package/dist/lib/evg/showcase/pages/tables.tsx +209 -0
  224. package/dist/lib/evg/showcase/pages/typography.tsx +43 -0
  225. package/dist/lib/evg/showcase/pages/units.tsx +35 -0
  226. package/dist/lib/evg/showcase/pages/variants.tsx +233 -0
  227. package/dist/lib/evg/showcase/pages/vector.tsx +75 -0
  228. package/dist/lib/evg/showcase/pages/views.tsx +223 -0
  229. package/dist/lib/evg/showcase/tests/chart_api_smoke.mjs +339 -0
  230. package/dist/lib/evg/showcase/tests/gl_smoke.mjs +125 -0
  231. package/dist/lib/evg/showcase/themes/chart_api-default.css +15 -0
  232. package/dist/lib/evg/showcase/themes/charts-default.css +29 -0
  233. package/dist/lib/evg/showcase/themes/drawing-default.css +35 -0
  234. package/dist/lib/evg/showcase/themes/more-default.css +128 -0
  235. package/dist/lib/evg/showcase/themes/plots-default.css +18 -0
  236. package/dist/lib/evg/showcase/themes/showcase.css +508 -0
  237. package/dist/lib/evg/showcase/themes/tables-default.css +123 -0
  238. package/dist/lib/evg/showcase/themes/variants-default.css +15 -0
  239. package/dist/lib/evg/showcase/themes/views-default.css +15 -0
  240. package/dist/lib/evg/tools/bench_vs_potrace.mjs +290 -0
  241. package/dist/lib/evg/tools/evg_image_tool.rgr +488 -0
  242. package/dist/lib/evg/tools/evg_trace_bench.rgr +114 -0
  243. package/dist/lib/evg/tools/evg_trace_cli.rgr +662 -0
  244. package/dist/lib/evg/tools/evg_trace_cpp_bench.rgr +83 -0
  245. package/dist/lib/evg/tools/run_trace_bench.sh +74 -0
  246. package/dist/lib/evg/tools/run_trace_cli_smoke.sh +128 -0
  247. package/dist/lib/evg/web/responsive/EvgResponsiveCheck.rgr +271 -0
  248. package/dist/lib/evg/web/responsive/EvgResponsiveDemo.rgr +531 -0
  249. package/dist/lib/evg/web/responsive/README.md +97 -0
  250. package/dist/lib/evg/web/responsive/build.mjs +90 -0
  251. package/dist/lib/evg/web/responsive/dom-check.mjs +169 -0
  252. package/dist/lib/evg/web/responsive/index.html +177 -0
  253. package/dist/lib/evg/web/responsive/smoke.mjs +221 -0
  254. package/dist/lib/evg/web/tools/assets-client.mjs +95 -0
  255. package/dist/lib/evg/web/tools/boot-bench.mjs +189 -0
  256. package/dist/lib/evg/web/tools/inline-assets.mjs +119 -0
  257. package/dist/lib/evg/web/tools/minify.mjs +60 -0
  258. package/dist/lib/evg/web/tracer/build.mjs +87 -0
  259. package/dist/lib/evg/web/tracer/index.html +2805 -0
  260. package/dist/lib/evg/web/tracer/sample.png +0 -0
  261. package/dist/lib/evg/web/tracer/smoke.mjs +1162 -0
  262. package/dist/lib/evgr/Cargo.lock +21 -0
  263. package/dist/lib/evgr/Cargo.toml +19 -0
  264. package/dist/lib/evgr/README.md +140 -0
  265. package/dist/lib/evgr/bench/NativeBench.rgr +246 -0
  266. package/dist/lib/evgr/bench/compare.mjs +252 -0
  267. package/dist/lib/evgr/bench/speed.mjs +277 -0
  268. package/dist/lib/evgr/bin/.gitignore +3 -0
  269. package/dist/lib/evgr/src/bin/bench.rs +106 -0
  270. package/dist/lib/evgr/src/bin/smoke.rs +13 -0
  271. package/dist/lib/evgr/src/grid.rs +730 -0
  272. package/dist/lib/evgr/src/lib.rs +1003 -0
  273. package/dist/lib/evgr/src/style.rs +468 -0
  274. package/dist/lib/evgr/src/text.rs +83 -0
  275. package/dist/lib/image/BitReader.rgr +171 -0
  276. package/dist/lib/image/Buffer.rgr +173 -0
  277. package/dist/lib/image/DCT.rgr +283 -0
  278. package/dist/lib/image/Deflate.rgr +339 -0
  279. package/dist/lib/image/HuffmanDecoder.rgr +181 -0
  280. package/dist/lib/image/ImageBuffer.rgr +706 -0
  281. package/dist/lib/image/JPEGDecoder.rgr +808 -0
  282. package/dist/lib/image/PNGDecoder.rgr +544 -0
  283. package/dist/lib/image/PNGEncoder.rgr +388 -0
  284. package/dist/lib/image/PPMImage.rgr +224 -0
  285. package/dist/lib/image/ProgressiveJPEGDecoder.rgr +1154 -0
  286. package/dist/lib/image/README.md +33 -0
  287. package/dist/lib/image/RasterBuffer.rgr +294 -0
  288. package/dist/lib/image/VP8BoolDecoder.rgr +163 -0
  289. package/dist/lib/image/WebPDecoder.rgr +433 -0
  290. package/dist/lib/image/WebPLossless.rgr +1035 -0
  291. package/dist/lib/image/WebPLossy.rgr +1929 -0
  292. package/dist/lib/image/ranger.json +9 -0
  293. package/dist/lib/image/testdata/webp/anim_2f_24x16.webp +0 -0
  294. package/dist/lib/image/testdata/webp/fixtures.txt +33 -0
  295. package/dist/lib/image/testdata/webp/gen_fixtures.py +261 -0
  296. package/dist/lib/image/testdata/webp/ll_1x1.webp +0 -0
  297. package/dist/lib/image/testdata/webp/ll_alpha_29x21.webp +0 -0
  298. package/dist/lib/image/testdata/webp/ll_gradient_64x64.webp +0 -0
  299. package/dist/lib/image/testdata/webp/ll_meta_32x32.webp +0 -0
  300. package/dist/lib/image/testdata/webp/ll_noise_17x9.webp +0 -0
  301. package/dist/lib/image/testdata/webp/ll_pal11_23x11.webp +0 -0
  302. package/dist/lib/image/testdata/webp/ll_pal2_19x7.webp +0 -0
  303. package/dist/lib/image/testdata/webp/ll_pal40_16x16.webp +0 -0
  304. package/dist/lib/image/testdata/webp/ll_pal4_13x5.webp +0 -0
  305. package/dist/lib/image/testdata/webp/ll_photo_40x30.webp +0 -0
  306. package/dist/lib/image/testdata/webp/ll_predictors_64x32.webp +0 -0
  307. package/dist/lib/image/testdata/webp/ly_1x1.webp +0 -0
  308. package/dist/lib/image/testdata/webp/ly_alph_raw_f0_21x13.webp +0 -0
  309. package/dist/lib/image/testdata/webp/ly_alph_raw_f1_21x13.webp +0 -0
  310. package/dist/lib/image/testdata/webp/ly_alph_raw_f2_21x13.webp +0 -0
  311. package/dist/lib/image/testdata/webp/ly_alph_raw_f3_21x13.webp +0 -0
  312. package/dist/lib/image/testdata/webp/ly_alph_vp8l_f0_21x13.webp +0 -0
  313. package/dist/lib/image/testdata/webp/ly_alph_vp8l_f1_21x13.webp +0 -0
  314. package/dist/lib/image/testdata/webp/ly_alph_vp8l_f2_21x13.webp +0 -0
  315. package/dist/lib/image/testdata/webp/ly_alph_vp8l_f3_21x13.webp +0 -0
  316. package/dist/lib/image/testdata/webp/ly_alpha_33x17.webp +0 -0
  317. package/dist/lib/image/testdata/webp/ly_exif_15x11.webp +0 -0
  318. package/dist/lib/image/testdata/webp/ly_i16_96x80.webp +0 -0
  319. package/dist/lib/image/testdata/webp/ly_nofilter_24x20.webp +0 -0
  320. package/dist/lib/image/testdata/webp/ly_odd_17x9.webp +0 -0
  321. package/dist/lib/image/testdata/webp/ly_photo_48x40.webp +0 -0
  322. package/dist/lib/image/testdata/webp/ly_q100_20x18.webp +0 -0
  323. package/dist/lib/image/testdata/webp/ly_sharp_40x36.webp +0 -0
  324. package/dist/lib/image/testdata/webp/ly_simple_filter_33x31.webp +0 -0
  325. package/dist/lib/image/testdata/webp/ly_vpx_parts8_37x45.webp +0 -0
  326. package/dist/lib/image/testdata/webp/ly_vpx_skip_96x80.webp +0 -0
  327. package/dist/lib/image/tests/WebPDecodeTool.rgr +81 -0
  328. package/dist/lib/image/tests/WebPDecoderTest.rgr +1162 -0
  329. package/dist/lib/image/tests/run_webp_tests.sh +39 -0
  330. package/dist/lib/rust/RsJson.rgr +468 -0
  331. package/dist/lib/rust/RsPrelude.rgr +1663 -0
  332. package/dist/lib/shell_test.rgr +7 -7
  333. package/dist/lib/stdlib.rgr +21 -5
  334. package/dist/lib/zip/ranger.json +6 -0
  335. package/dist/rgrc.js +87318 -67610
  336. package/package.json +1010 -1040
  337. package/dist/README.md +0 -117
  338. package/dist/package.json +0 -47
@@ -0,0 +1,173 @@
1
+ ; SPDX-License-Identifier: MIT
2
+
3
+ ; Buffer.rgr - A growable buffer system for Ranger
4
+ ; Uses a linked list of fixed-size buffer chunks for efficient memory management
5
+
6
+ class BufferChunk {
7
+ def data:buffer (buffer_alloc 0)
8
+ def used:int 0
9
+ def capacity:int 0
10
+ def next@(optional):BufferChunk
11
+
12
+ Constructor (size:int) {
13
+ data = (buffer_alloc size)
14
+ capacity = size
15
+ used = 0
16
+ }
17
+
18
+ fn remaining:int () {
19
+ return (capacity - used)
20
+ }
21
+
22
+ fn isFull:boolean () {
23
+ return (used >= capacity)
24
+ }
25
+ }
26
+
27
+ class GrowableBuffer {
28
+ def firstChunk:BufferChunk (new BufferChunk(4096))
29
+ def currentChunk:BufferChunk (new BufferChunk(4096))
30
+ def chunkSize:int 4096 ; Default chunk size: 4KB
31
+ def totalSize:int 0
32
+
33
+ Constructor () {
34
+ ; Create first chunk - reassign with proper size
35
+ def chunk (new BufferChunk(chunkSize))
36
+ firstChunk = chunk
37
+ currentChunk = chunk
38
+ }
39
+
40
+ fn setChunkSize:void (size:int) {
41
+ chunkSize = size
42
+ }
43
+
44
+ fn allocateNewChunk:void () {
45
+ def newChunk (new BufferChunk(chunkSize))
46
+ currentChunk.next = newChunk
47
+ currentChunk = newChunk
48
+ }
49
+
50
+ fn writeByte:void (b:int) {
51
+ if (currentChunk.isFull()) {
52
+ this.allocateNewChunk()
53
+ }
54
+ def pos:int currentChunk.used
55
+ buffer_set currentChunk.data pos b
56
+ currentChunk.used = pos + 1
57
+ totalSize = totalSize + 1
58
+ }
59
+
60
+ fn writeBytes:void (src:buffer srcOffset:int length:int) {
61
+ def i 0
62
+ while (i < length) {
63
+ def b:int (buffer_get src (srcOffset + i))
64
+ this.writeByte(b)
65
+ i = i + 1
66
+ }
67
+ }
68
+
69
+ fn writeBuffer:void (src:buffer) {
70
+ def len:int (buffer_length src)
71
+ this.writeBytes(src 0 len)
72
+ }
73
+
74
+ fn writeString:void (s:string) {
75
+ ; Convert string to bytes and write
76
+ def len (strlen s)
77
+ def i 0
78
+ while (i < len) {
79
+ def ch:int (charAt s i)
80
+ this.writeByte(ch)
81
+ i = i + 1
82
+ }
83
+ }
84
+
85
+ fn writeInt16BE:void (value:int) {
86
+ ; Write 16-bit big-endian integer
87
+ def highD:double (value / 256)
88
+ def high:int (to_int highD)
89
+ def low:int (value - (high * 256))
90
+ this.writeByte(high)
91
+ this.writeByte(low)
92
+ }
93
+
94
+ fn writeInt32BE:void (value:int) {
95
+ ; Write 32-bit big-endian integer
96
+ def b1D:double (value / 16777216)
97
+ def b1:int (to_int b1D)
98
+ def rem1:int (value - (b1 * 16777216))
99
+ def b2D:double (rem1 / 65536)
100
+ def b2:int (to_int b2D)
101
+ def rem2:int (rem1 - (b2 * 65536))
102
+ def b3D:double (rem2 / 256)
103
+ def b3:int (to_int b3D)
104
+ def b4:int (rem2 - (b3 * 256))
105
+ this.writeByte(b1)
106
+ this.writeByte(b2)
107
+ this.writeByte(b3)
108
+ this.writeByte(b4)
109
+ }
110
+
111
+ fn size:int () {
112
+ return totalSize
113
+ }
114
+
115
+ fn toBuffer:buffer () {
116
+ ; Combine all chunks into a single buffer
117
+ def allocSize:int totalSize
118
+ def result:buffer (buffer_alloc allocSize)
119
+ def pos 0
120
+ def chunk:BufferChunk firstChunk
121
+ def done:boolean false
122
+
123
+ while (done == false) {
124
+ def chunkUsed:int chunk.used
125
+ def i 0
126
+ while (i < chunkUsed) {
127
+ def b:int (buffer_get chunk.data i)
128
+ buffer_set result pos b
129
+ pos = pos + 1
130
+ i = i + 1
131
+ }
132
+ if (null? chunk.next) {
133
+ done = true
134
+ } {
135
+ chunk = (unwrap chunk.next)
136
+ }
137
+ }
138
+
139
+ return result
140
+ }
141
+
142
+ fn toString:string () {
143
+ ; Convert buffer content to string (for text-based content)
144
+ def result ""
145
+ def chunk:BufferChunk firstChunk
146
+ def done:boolean false
147
+
148
+ while (done == false) {
149
+ def chunkUsed:int chunk.used
150
+ def i 0
151
+ while (i < chunkUsed) {
152
+ def b:int (buffer_get chunk.data i)
153
+ result = result + (strfromcode b)
154
+ i = i + 1
155
+ }
156
+ if (null? chunk.next) {
157
+ done = true
158
+ } {
159
+ chunk = (unwrap chunk.next)
160
+ }
161
+ }
162
+
163
+ return result
164
+ }
165
+
166
+ fn clear:void () {
167
+ ; Reset buffer - reuse first chunk, discard others
168
+ def chunk (new BufferChunk(chunkSize))
169
+ firstChunk = chunk
170
+ currentChunk = chunk
171
+ totalSize = 0
172
+ }
173
+ }
@@ -0,0 +1,283 @@
1
+ ; SPDX-License-Identifier: MIT
2
+
3
+ ; DCT.rgr - Inverse Discrete Cosine Transform for JPEG decoding
4
+ ; Uses integer arithmetic with fixed-point scaling
5
+ ; Updated to use int_buffer for efficient cross-language compilation
6
+
7
+ class IDCT {
8
+ ; Precomputed cosine table: cos((2*x+1) * u * pi / 16) * 1024
9
+ ; For each (x, u) pair where x,u = 0..7
10
+ ; Table layout: cosTable[x * 8 + u] = cos value
11
+ def cosTable:int_buffer (int_buffer_alloc 64)
12
+
13
+ ; Zigzag order to row-major index mapping
14
+ def zigzagMap:int_buffer (int_buffer_alloc 64)
15
+
16
+ Constructor () {
17
+ ; Initialize full cosine table for IDCT
18
+ ; cos((2*x+1) * u * pi / 16) * 1024 for x=0..7, u=0..7
19
+ ; Row x=0: u=0,1,2,3,4,5,6,7
20
+ int_buffer_set cosTable 0 1024 ; cos(1*0*pi/16) = 1.000
21
+ int_buffer_set cosTable 1 1004 ; cos(1*1*pi/16) = 0.981
22
+ int_buffer_set cosTable 2 946 ; cos(1*2*pi/16) = 0.924
23
+ int_buffer_set cosTable 3 851 ; cos(1*3*pi/16) = 0.831
24
+ int_buffer_set cosTable 4 724 ; cos(1*4*pi/16) = 0.707
25
+ int_buffer_set cosTable 5 569 ; cos(1*5*pi/16) = 0.556
26
+ int_buffer_set cosTable 6 392 ; cos(1*6*pi/16) = 0.383
27
+ int_buffer_set cosTable 7 200 ; cos(1*7*pi/16) = 0.195
28
+
29
+ ; Row x=1: cos((3)*u*pi/16)
30
+ int_buffer_set cosTable 8 1024
31
+ int_buffer_set cosTable 9 851
32
+ int_buffer_set cosTable 10 392
33
+ int_buffer_set cosTable 11 -200
34
+ int_buffer_set cosTable 12 -724
35
+ int_buffer_set cosTable 13 -1004
36
+ int_buffer_set cosTable 14 -946
37
+ int_buffer_set cosTable 15 -569
38
+
39
+ ; Row x=2: cos((5)*u*pi/16)
40
+ int_buffer_set cosTable 16 1024
41
+ int_buffer_set cosTable 17 569
42
+ int_buffer_set cosTable 18 -392
43
+ int_buffer_set cosTable 19 -1004
44
+ int_buffer_set cosTable 20 -724
45
+ int_buffer_set cosTable 21 200
46
+ int_buffer_set cosTable 22 946
47
+ int_buffer_set cosTable 23 851
48
+
49
+ ; Row x=3: cos((7)*u*pi/16)
50
+ int_buffer_set cosTable 24 1024
51
+ int_buffer_set cosTable 25 200
52
+ int_buffer_set cosTable 26 -946
53
+ int_buffer_set cosTable 27 -569
54
+ int_buffer_set cosTable 28 724
55
+ int_buffer_set cosTable 29 851
56
+ int_buffer_set cosTable 30 -392
57
+ int_buffer_set cosTable 31 -1004
58
+
59
+ ; Row x=4: cos((9)*u*pi/16)
60
+ int_buffer_set cosTable 32 1024
61
+ int_buffer_set cosTable 33 -200
62
+ int_buffer_set cosTable 34 -946
63
+ int_buffer_set cosTable 35 569
64
+ int_buffer_set cosTable 36 724
65
+ int_buffer_set cosTable 37 -851
66
+ int_buffer_set cosTable 38 -392
67
+ int_buffer_set cosTable 39 1004
68
+
69
+ ; Row x=5: cos((11)*u*pi/16)
70
+ int_buffer_set cosTable 40 1024
71
+ int_buffer_set cosTable 41 -569
72
+ int_buffer_set cosTable 42 -392
73
+ int_buffer_set cosTable 43 1004
74
+ int_buffer_set cosTable 44 -724
75
+ int_buffer_set cosTable 45 -200
76
+ int_buffer_set cosTable 46 946
77
+ int_buffer_set cosTable 47 -851
78
+
79
+ ; Row x=6: cos((13)*u*pi/16)
80
+ int_buffer_set cosTable 48 1024
81
+ int_buffer_set cosTable 49 -851
82
+ int_buffer_set cosTable 50 392
83
+ int_buffer_set cosTable 51 200
84
+ int_buffer_set cosTable 52 -724
85
+ int_buffer_set cosTable 53 1004
86
+ int_buffer_set cosTable 54 -946
87
+ int_buffer_set cosTable 55 569
88
+
89
+ ; Row x=7: cos((15)*u*pi/16)
90
+ int_buffer_set cosTable 56 1024
91
+ int_buffer_set cosTable 57 -1004
92
+ int_buffer_set cosTable 58 946
93
+ int_buffer_set cosTable 59 -851
94
+ int_buffer_set cosTable 60 724
95
+ int_buffer_set cosTable 61 -569
96
+ int_buffer_set cosTable 62 392
97
+ int_buffer_set cosTable 63 -200
98
+
99
+ ; Zigzag to row-major mapping (JPEG standard zigzag order)
100
+ int_buffer_set zigzagMap 0 0
101
+ int_buffer_set zigzagMap 1 1
102
+ int_buffer_set zigzagMap 2 8
103
+ int_buffer_set zigzagMap 3 16
104
+ int_buffer_set zigzagMap 4 9
105
+ int_buffer_set zigzagMap 5 2
106
+ int_buffer_set zigzagMap 6 3
107
+ int_buffer_set zigzagMap 7 10
108
+
109
+ int_buffer_set zigzagMap 8 17
110
+ int_buffer_set zigzagMap 9 24
111
+ int_buffer_set zigzagMap 10 32
112
+ int_buffer_set zigzagMap 11 25
113
+ int_buffer_set zigzagMap 12 18
114
+ int_buffer_set zigzagMap 13 11
115
+ int_buffer_set zigzagMap 14 4
116
+ int_buffer_set zigzagMap 15 5
117
+
118
+ int_buffer_set zigzagMap 16 12
119
+ int_buffer_set zigzagMap 17 19
120
+ int_buffer_set zigzagMap 18 26
121
+ int_buffer_set zigzagMap 19 33
122
+ int_buffer_set zigzagMap 20 40
123
+ int_buffer_set zigzagMap 21 48
124
+ int_buffer_set zigzagMap 22 41
125
+ int_buffer_set zigzagMap 23 34
126
+
127
+ int_buffer_set zigzagMap 24 27
128
+ int_buffer_set zigzagMap 25 20
129
+ int_buffer_set zigzagMap 26 13
130
+ int_buffer_set zigzagMap 27 6
131
+ int_buffer_set zigzagMap 28 7
132
+ int_buffer_set zigzagMap 29 14
133
+ int_buffer_set zigzagMap 30 21
134
+ int_buffer_set zigzagMap 31 28
135
+
136
+ int_buffer_set zigzagMap 32 35
137
+ int_buffer_set zigzagMap 33 42
138
+ int_buffer_set zigzagMap 34 49
139
+ int_buffer_set zigzagMap 35 56
140
+ int_buffer_set zigzagMap 36 57
141
+ int_buffer_set zigzagMap 37 50
142
+ int_buffer_set zigzagMap 38 43
143
+ int_buffer_set zigzagMap 39 36
144
+
145
+ int_buffer_set zigzagMap 40 29
146
+ int_buffer_set zigzagMap 41 22
147
+ int_buffer_set zigzagMap 42 15
148
+ int_buffer_set zigzagMap 43 23
149
+ int_buffer_set zigzagMap 44 30
150
+ int_buffer_set zigzagMap 45 37
151
+ int_buffer_set zigzagMap 46 44
152
+ int_buffer_set zigzagMap 47 51
153
+
154
+ int_buffer_set zigzagMap 48 58
155
+ int_buffer_set zigzagMap 49 59
156
+ int_buffer_set zigzagMap 50 52
157
+ int_buffer_set zigzagMap 51 45
158
+ int_buffer_set zigzagMap 52 38
159
+ int_buffer_set zigzagMap 53 31
160
+ int_buffer_set zigzagMap 54 39
161
+ int_buffer_set zigzagMap 55 46
162
+
163
+ int_buffer_set zigzagMap 56 53
164
+ int_buffer_set zigzagMap 57 60
165
+ int_buffer_set zigzagMap 58 61
166
+ int_buffer_set zigzagMap 59 54
167
+ int_buffer_set zigzagMap 60 47
168
+ int_buffer_set zigzagMap 61 55
169
+ int_buffer_set zigzagMap 62 62
170
+ int_buffer_set zigzagMap 63 63
171
+ }
172
+
173
+ fn dezigzag:int_buffer (zigzag:int_buffer) {
174
+ ; Convert from zigzag order to row-major 8x8 block
175
+ ; Returns new 64-element buffer
176
+ def block:int_buffer (int_buffer_alloc 64)
177
+
178
+ def i 0
179
+ while (i < 64) {
180
+ def pos:int (int_buffer_get zigzagMap i)
181
+ def val:int (int_buffer_get zigzag i)
182
+ int_buffer_set block pos val
183
+ i = i + 1
184
+ }
185
+ return block
186
+ }
187
+
188
+ fn idct1d:void (input:int_buffer startIdx:int stride:int output:int_buffer outIdx:int outStride:int) {
189
+ ; 1D IDCT: output[x] = sum over u of: C(u) * input[u] * cos((2x+1)*u*pi/16)
190
+ ; C(0) = 1/sqrt(2), C(u>0) = 1
191
+ ; cosTable is scaled by 1024
192
+
193
+ ; Flat path: with every AC coefficient zero the result is the same
194
+ ; value eight times over, because cosTable[x * 8] is 1024 for every x.
195
+ ; Most rows of a photographic 8x8 block are like this, and after the
196
+ ; row pass most columns are too, so this skips the bulk of the work.
197
+ def hasAC:boolean false
198
+ def uc 1
199
+ while (uc < 8) {
200
+ if ((int_buffer_get input (startIdx + (uc * stride))) != 0) {
201
+ hasAC = true
202
+ uc = 8
203
+ }
204
+ uc = uc + 1
205
+ }
206
+ if (hasAC == false) {
207
+ def dcSum:int 0
208
+ def dcCoeff:int (int_buffer_get input startIdx)
209
+ if (dcCoeff != 0) {
210
+ def dcContrib:int (dcCoeff * 1024)
211
+ dcContrib = (bit_shr (dcContrib * 724) 10)
212
+ dcSum = dcSum + dcContrib
213
+ }
214
+ def flat:int (bit_shr dcSum 11)
215
+ def fx 0
216
+ while (fx < 8) {
217
+ int_buffer_set output (outIdx + (fx * outStride)) flat
218
+ fx = fx + 1
219
+ }
220
+ return
221
+ }
222
+
223
+ def x 0
224
+ while (x < 8) {
225
+ def sum:int 0
226
+ def u 0
227
+ while (u < 8) {
228
+ def coeff:int (int_buffer_get input (startIdx + (u * stride)))
229
+ if (coeff != 0) {
230
+ def cosVal:int (int_buffer_get cosTable ((x * 8) + u))
231
+ def contrib:int (coeff * cosVal)
232
+ if (u == 0) {
233
+ ; C(0) = 1/sqrt(2) ≈ 724/1024
234
+ contrib = (bit_shr (contrib * 724) 10)
235
+ }
236
+ sum = sum + contrib
237
+ }
238
+ u = u + 1
239
+ }
240
+ ; Scale down by 1024 (cosine table scale) and divide by 2 for IDCT normalization
241
+ int_buffer_set output (outIdx + (x * outStride)) (bit_shr sum 11)
242
+ x = x + 1
243
+ }
244
+ }
245
+
246
+ fn transform:void (block:int_buffer output:int_buffer) {
247
+ ; Perform 2D IDCT on 8x8 block using separable method
248
+ ; 2D IDCT = 1D IDCT on rows, then 1D IDCT on columns
249
+
250
+ ; Temporary buffer for row transform results
251
+ def temp:int_buffer (int_buffer_alloc 64)
252
+
253
+ ; First pass: 1D IDCT on each row
254
+ def row 0
255
+ while (row < 8) {
256
+ def rowStart:int (row * 8)
257
+ this.idct1d(block rowStart 1 temp rowStart 1)
258
+ row = row + 1
259
+ }
260
+
261
+ ; Second pass: 1D IDCT on each column
262
+ def col 0
263
+ while (col < 8) {
264
+ this.idct1d(temp col 8 output col 8)
265
+ col = col + 1
266
+ }
267
+
268
+ ; Level shift: add 128 and clamp to 0-255
269
+ ; The 2D transform has normalization factor of 1/4 already included via two 1D transforms
270
+ def i 0
271
+ while (i < 64) {
272
+ def val:int ((int_buffer_get output i) + 128)
273
+ if (val < 0) { val = 0 }
274
+ if (val > 255) { val = 255 }
275
+ int_buffer_set output i val
276
+ i = i + 1
277
+ }
278
+ }
279
+
280
+ fn transformFast:void (coeffs:int_buffer output:int_buffer) {
281
+ this.transform(coeffs output)
282
+ }
283
+ }