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,627 @@
1
+ ; SPDX-License-Identifier: MIT
2
+
3
+
4
+ Import "Vec2.clj"
5
+
6
+ class PathExecutor {
7
+ fn Move:void( x:double y:double) {
8
+ print "Move called with " + x + ", " + y
9
+ }
10
+ fn Line:void( x:double y:double) {
11
+ print "Line called with " + x + ", " + y
12
+ }
13
+ fn Curve:void( x0:double y0:double x1:double y1:double x2:double y2:double) {
14
+ print "Cubic bezier curve called with " + x0 + ", " + y0 + " "+ x1 + ", " + y1 + " "+ x2 + ", " + y2 + " "
15
+ }
16
+ }
17
+
18
+ class PathCollector {
19
+ Extends(PathExecutor)
20
+ def pathParts:[string]
21
+ fn Move:void( x:double y:double) {
22
+ push pathParts "M " + x + " " + y +" "
23
+ }
24
+ fn Line:void( x:double y:double) {
25
+ push pathParts "L " + x + " " + y +" "
26
+ }
27
+ fn Curve:void( x0:double y0:double x1:double y1:double x2:double y2:double) {
28
+ push pathParts "C " + x0 + " " + y0 +" "+ x1 + " " + y1 +" "+ x2 + " " + y2 +" "
29
+ }
30
+ fn getString:string () {
31
+ return (join pathParts " ")
32
+ }
33
+ }
34
+
35
+ class PathSegment {
36
+ def t0:double 0.0
37
+ def t1:double 0.0
38
+ def t2:double 0.0
39
+ def t3:double 0.0
40
+ def t4:double 0.0
41
+ def t5:double 0.0
42
+ def t6:double 0.0
43
+ }
44
+
45
+ class EVGBezierPath {
46
+ def points:[Vec2]
47
+ def next:EVGBezierPath
48
+ def pointCnt:int 0
49
+ def closed:boolean false
50
+ def bounds:Vec2 (Vec2.CreateNew ( 0.0 0.0 ))
51
+ def cp1:Vec2 (Vec2.CreateNew ( 0.0 0.0 ))
52
+ def cp2:Vec2 (Vec2.CreateNew ( 0.0 0.0 ))
53
+ def controlPoint:Vec2 (Vec2.CreateNew ( 0.0 0.0 ))
54
+
55
+ fn close:void () {
56
+ closed = true
57
+ }
58
+ fn Line:void (point:Vec2) {
59
+ }
60
+ fn moveTo:void (point:Vec2) {
61
+ controlPoint.x = point.x
62
+ controlPoint.y = point.y
63
+ }
64
+ }
65
+
66
+ class EVGPathParser {
67
+
68
+ def i:int 0
69
+ def len:int 0
70
+ def buff:charbuffer
71
+ def last_number:double 0.0
72
+
73
+ fn __sqr:double (v:double) {
74
+ return (v * v)
75
+ }
76
+ fn __xformPoint:Vec2 (point:Vec2 seg:PathSegment) {
77
+ def res:Vec2 (Vec2.CreateNew ( ((point.x * seg.t0) + (point.y * seg.t2) + seg.t4)
78
+ ((point.x * seg.t1) + (point.y * seg.t3) + seg.t5) ) )
79
+ return res
80
+ }
81
+ fn __xformVec:Vec2 (point:Vec2 seg:PathSegment) {
82
+ return (Vec2.CreateNew ( ((point.x * seg.t0) + (point.y * seg.t2))
83
+ ((point.x * seg.t1) + (point.y * seg.t3)) ) )
84
+ }
85
+ fn __vmag:double (point:Vec2) {
86
+ return (sqrt ((point.x * point.x) + (point.y * point.y)))
87
+ }
88
+ fn __vecrat:double (u:Vec2 v:Vec2) {
89
+ return (((u.x * v.x) + (u.y * v.y)) / ((this.__vmag(u)) * (this.__vmag(v))))
90
+ }
91
+ fn __vecang:double (u:Vec2 v:Vec2) {
92
+ def r:double (this.__vecrat(u v))
93
+ if (r < -1.0) {
94
+ r = -1.0
95
+ }
96
+ if (r > 1.0) {
97
+ r = 1.0
98
+ }
99
+ def res:double 1.0
100
+ if ((u.x * v.y) < (u.y * v.x)) {
101
+ res = -1.0
102
+ }
103
+ return (res * (acos r))
104
+ }
105
+
106
+ fn scanNumber:boolean () {
107
+ def s:charbuffer (unwrap this.buff)
108
+ def fc:char (charAt s i)
109
+ def c:char fc
110
+ def sp:int 0
111
+ def ep:int 0
112
+ fc = (charAt s i)
113
+ if (((fc == 45) && (((charAt s (i + 1))) >= 46) && (((charAt s (i + 1))) <= 57)) || ((fc >= 48) && (fc <= 57))) {
114
+ sp = i
115
+ i = 1 + i
116
+ c = (charAt s i)
117
+ while ((i < len) && (((c >= 48) && (c <= 57)) || (c == ((ccode "."))) || ((i == sp) && ((c == ((ccode "+"))) || (c == ((ccode "-"))))))) {
118
+ i = 1 + i
119
+ if (i >= len) {
120
+ break
121
+ }
122
+ c = (charAt s i)
123
+ }
124
+ ep = i
125
+ last_number = (unwrap (str2double ((substring s sp ep))))
126
+ return true
127
+ }
128
+ return false
129
+ }
130
+
131
+ fn pathArcTo:Vec2 ( callback:PathExecutor cp:Vec2 args:PathSegment rel:boolean ) {
132
+ def rx 0.0
133
+ def ry 0.0
134
+ def rotx 0.0
135
+ def x1 0.0
136
+ def y1 0.0
137
+ def x2 0.0
138
+ def y2 0.0
139
+ def cx 0.0
140
+ def cy 0.0
141
+ def dx 0.0
142
+ def dy 0.0
143
+ def d 0.0
144
+ def x1p 0.0
145
+ def y1p 0.0
146
+ def cxp 0.0
147
+ def cyp 0.0
148
+ def s 0.0
149
+ def sa 0.0
150
+ def sb 0.0
151
+ def ux 0.0
152
+ def uy 0.0
153
+ def vx 0.0
154
+ def vy 0.0
155
+ def a1 0.0
156
+ def da 0.0
157
+ def x 0.0
158
+ def y 0.0
159
+ def tanx 0.0
160
+ def tany 0.0
161
+ def a 0.0
162
+ def px 0.0
163
+ def py 0.0
164
+ def ptanx 0.0
165
+ def ptany 0.0
166
+ def t (new PathSegment())
167
+ def sinrx 0.0
168
+ def cosrx 0.0
169
+ def fa 0.0
170
+ def fs 0.0
171
+ def i 0
172
+ def ndivs 0
173
+ def hda 0.0
174
+ def kappa 0.0
175
+ def PI_VALUE (M_PI)
176
+ def cpx cp.x
177
+ def cpy cp.y
178
+ rx = ( fabs args.t0)
179
+ ry = ( fabs args.t1)
180
+ rotx = args.t2 / 180.00 * PI_VALUE
181
+ fa = (? ( (fabs args.t3) > 0.00001 ) 1.0 0.0 )
182
+ fs = (? ( (fabs args.t4) > 0.00001 ) 1.0 0.0 )
183
+ x1 = cpx
184
+ y1 = cpy
185
+ if rel {
186
+ x2 = cpx + args.t5
187
+ y2 = cpy + args.t6
188
+ } {
189
+ x2 = args.t5
190
+ y2 = args.t6
191
+ }
192
+ dx = x1 - x2
193
+ dy = y1 - y2
194
+ d = (sqrt ((dx*dx) + (dy*dy)))
195
+ if( (d < 0.00001 ) || (rx < 0.00001) || (ry < 0.00001) ) {
196
+ callback.Line( x2 y2 )
197
+ return (Vec2.CreateNew (x2 y2))
198
+ }
199
+ sinrx = (sin rotx)
200
+ cosrx = (cos rotx)
201
+ x1p = ( cosrx * dx ) / 2.0 + ( sinrx * dy / 2.0 )
202
+ y1p = ( -1.0 * sinrx * dx ) / 2.0 + ( cosrx * dy / 2.0 )
203
+ d = (x1p*x1p) / (rx*rx) + (y1p*y1p) / (ry*ry)
204
+ if ( d > 1.0 ) {
205
+ d = (sqrt d)
206
+ rx = rx * d
207
+ ry = ry * d
208
+ }
209
+ s = 0.0
210
+ sa = (rx*rx)*(ry*ry) - (rx*rx)*(y1p*y1p) - (ry*ry)*(x1p*x1p)
211
+ sb = (rx*rx)*(y1p*y1p) + (ry*ry)*(x1p*x1p)
212
+ if( sa < 0.0 ) {
213
+ sa = 0.0
214
+ }
215
+ if( sb > 0.0 ) {
216
+ s = (sqrt (sa / sb))
217
+ }
218
+ if ( fa == fs ) {
219
+ s = -1.0 * s
220
+ }
221
+
222
+ cxp = s * rx * y1p / ry
223
+ cyp = s * (-1.0 * ry) * x1p / rx
224
+ cx = (x1 + x2) / 2.0 + (cosrx * cxp - sinrx * cyp)
225
+ cy = (y1 + y2) / 2.0 + (sinrx * cxp + cosrx * cyp)
226
+
227
+ def u (Vec2.CreateNew ( ( ( x1p - cxp ) / rx) ( ( y1p - cyp ) / ry) ) )
228
+ def v (Vec2.CreateNew ( ( ( -1.0*x1p - cxp ) / rx ) ( ( -1.0*y1p - cyp ) / ry ) ))
229
+ def unitV (Vec2.CreateNew (1.0 0.0 ))
230
+ a1 = (this.__vecang( unitV u ))
231
+ da = (this.__vecang( u v))
232
+ if( (fs == 0.0) && (da > 0.0) ) {
233
+ da = da - 2.0 * PI_VALUE
234
+ } {
235
+ if( ( fs == 1.0) && (da < 0.0)) {
236
+ da = 2.0 * PI_VALUE + da
237
+ }
238
+ }
239
+ t.t0 = cosrx
240
+ t.t1 = sinrx
241
+ t.t2 = -1.0 * sinrx
242
+ t.t3 = cosrx
243
+ t.t4 = cx
244
+ t.t5 = cy
245
+
246
+ ndivs = (to_int ( ( (fabs da) / (PI_VALUE * 0.5) ) + 1.0 ) )
247
+ hda = ( da / (to_double ndivs)) / 2.0
248
+ kappa = (fabs ( 4.0 / 3.0 * (1.0 - (cos hda) ) / (sin hda) ) )
249
+ if (da < 0.0) {
250
+ kappa = -1.0 * kappa
251
+ }
252
+ i = 0
253
+ while ( i <= ndivs ) {
254
+ a = a1 + (da * (to_double i) / (to_double ndivs))
255
+ dx = (cos a)
256
+ dy = (sin a)
257
+ def trans (this.__xformPoint ( (Vec2.CreateNew ( (dx*rx) (dy*ry) )) t ))
258
+ x = trans.x
259
+ y = trans.y
260
+ def v_trans (this.__xformVec ( (Vec2.CreateNew ( (-1.0 * dy*rx *kappa) (dx*ry*kappa) )) t ))
261
+ tanx = v_trans.x
262
+ tany = v_trans.y
263
+ if( i > 0 ) {
264
+ callback.Curve(
265
+ (px + ptanx) (py + ptany)
266
+ (x - tanx) ( y - tany )
267
+ x y
268
+ )
269
+ }
270
+ px = x
271
+ py = y
272
+ ptanx = tanx
273
+ ptany = tany
274
+ i = i + 1
275
+ }
276
+
277
+ def rv (Vec2.CreateNew (x2 y2))
278
+ return rv
279
+ }
280
+
281
+ fn parsePath:void (path:string callback:PathExecutor) {
282
+
283
+ i = 0
284
+ this.buff = (to_charbuffer path)
285
+ def s:charbuffer (unwrap this.buff)
286
+ len = (length s)
287
+
288
+ def buff:charbuffer (to_charbuffer path)
289
+ def cmd:char (ccode "L")
290
+ def path:EVGBezierPath (new EVGBezierPath ())
291
+
292
+ def args:PathSegment (new PathSegment())
293
+ def require_args:int 2
294
+ def arg_cnt:int 0
295
+
296
+ def QPx:PathSegment (new PathSegment())
297
+ def QPy:PathSegment (new PathSegment())
298
+ def CPx:PathSegment (new PathSegment())
299
+ def CPy:PathSegment (new PathSegment())
300
+
301
+ def cx:double 0.0
302
+ def cy:double 0.0
303
+ def cx2:double 0.0
304
+ def cy2:double 0.0
305
+
306
+ ; callback.Move( cx cy )
307
+
308
+ def last_i:int -1
309
+
310
+ while ( i < len ) {
311
+ if(last_i == i) {
312
+ i = i + 1
313
+ }
314
+ last_i = i
315
+ def c:char (charAt s i)
316
+
317
+ if( (c == (ccode "V")) || (c == (ccode "v")) || (c == (ccode "H")) || (c == (ccode "h")) ) {
318
+ cmd = c
319
+ require_args = 1
320
+ arg_cnt = 0
321
+ continue
322
+ }
323
+ if( (c == (ccode "m")) || (c == (ccode "M")) || (c == (ccode "L")) || (c == (ccode "l")) || (c == (ccode "t")) || (c == (ccode "T")) ) {
324
+ cmd = c
325
+ require_args = 2
326
+ arg_cnt = 0
327
+ continue
328
+ }
329
+ if( (c == (ccode "q")) || (c == (ccode "Q")) || (c == (ccode "S")) || (c == (ccode "s")) ) {
330
+ cmd = c
331
+ require_args = 4
332
+ arg_cnt = 0
333
+ continue
334
+ }
335
+ if( (c == (ccode "c")) || (c == (ccode "C")) ) {
336
+ cmd = c
337
+ require_args = 6
338
+ arg_cnt = 0
339
+ continue
340
+ }
341
+ if( (c == (ccode "a")) || (c == (ccode "A")) ) {
342
+ cmd = c
343
+ require_args = 7
344
+ arg_cnt = 0
345
+ continue
346
+ }
347
+ if(this.scanNumber()) {
348
+ switch arg_cnt {
349
+ case 0 { args.t0 = last_number }
350
+ case 1 { args.t1 = last_number }
351
+ case 2 { args.t2 = last_number }
352
+ case 3 { args.t3 = last_number }
353
+ case 4 { args.t4 = last_number }
354
+ case 5 { args.t5 = last_number }
355
+ case 6 { args.t6 = last_number }
356
+ default {
357
+
358
+ }
359
+ }
360
+ arg_cnt = arg_cnt + 1
361
+ if ( arg_cnt >= require_args ) {
362
+ switch cmd {
363
+ case (ccode "m") {
364
+ callback.Move( (cx + args.t0) (cy + args.t1) )
365
+ cx = args.t0
366
+ cy = args.t1
367
+ cmd = (ccode "L")
368
+ require_args = 2
369
+ cx2 = cx
370
+ cy2 = cy
371
+ }
372
+ case (ccode "M") {
373
+ callback.Move( args.t0 args.t1 )
374
+ cx = args.t0
375
+ cy = args.t1
376
+ cmd = (ccode "L")
377
+ require_args = 2
378
+ cx2 = cx
379
+ cy2 = cy
380
+ }
381
+ case (ccode "l") {
382
+ callback.Line( (cx + args.t0) (cy + args.t1) )
383
+ cx = cx + args.t0
384
+ cy = cy + args.t1
385
+ cx2 = cx
386
+ cy2 = cy
387
+ }
388
+ case (ccode "L") {
389
+ callback.Line( args.t0 args.t1 )
390
+ cx = args.t0
391
+ cy = args.t1
392
+ cx2 = cx
393
+ cy2 = cy
394
+ }
395
+ case (ccode "h") {
396
+ callback.Line( (cx + args.t0) cy )
397
+ cx = cx + args.t0
398
+ cx2 = cx
399
+ }
400
+ case (ccode "H") {
401
+ callback.Line( args.t0 cy )
402
+ cx = args.t0
403
+ cx2 = cx
404
+ }
405
+ case (ccode "v") {
406
+ callback.Line( cx (cy + args.t0) )
407
+ cy = cy + args.t0
408
+ cy2 = cy
409
+ }
410
+ case (ccode "V") {
411
+ callback.Line( cx args.t0 )
412
+ cy = args.t0
413
+ cy2 = cy
414
+ }
415
+ case (ccode "c") {
416
+ callback.Curve( (cx + args.t0) (cy + args.t1)
417
+ (cx + args.t2) (cy + args.t3)
418
+ (cx + args.t4) (cy + args.t5)
419
+ )
420
+ cx2 = cx + args.t2
421
+ cy2 = cy + args.t3
422
+ cx = cx + args.t4
423
+ cy = cy + args.t5
424
+ }
425
+ case (ccode "C") {
426
+ callback.Curve( args.t0 args.t1
427
+ args.t2 args.t3
428
+ args.t4 args.t5
429
+ )
430
+ cx2 = args.t2
431
+ cy2 = args.t3
432
+ cx = args.t4
433
+ cy = args.t5
434
+ }
435
+ case (ccode "s") {
436
+ callback.Curve( (cx + cx - cx2) (cy + cy - cy2)
437
+ (cx + args.t0) (cy + args.t1)
438
+ (cx + args.t2) (cy + args.t3)
439
+ )
440
+ cx2 = cx + args.t0
441
+ cy2 = cy + args.t1
442
+ cx = cx + args.t2
443
+ cy = cy + args.t3
444
+ }
445
+ case (ccode "S") {
446
+ callback.Curve( (cx + cx - cx2) (cy + cy - cy2)
447
+ args.t0 args.t1
448
+ args.t2 args.t3
449
+ )
450
+ cx2 = args.t0
451
+ cy2 = args.t1
452
+ cx = args.t2
453
+ cy = args.t3
454
+ }
455
+ case (ccode "q") {
456
+ QPx.t0 = cx
457
+ QPy.t0 = cy
458
+ QPx.t1 = cx + args.t0
459
+ QPy.t1 = cy + args.t1
460
+ QPx.t2 = cx + args.t2
461
+ QPy.t2 = cy + args.t3
462
+ CPx.t0 = QPx.t0
463
+ CPy.t0 = QPy.t0
464
+ CPx.t1 = QPx.t0 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t0 )
465
+ CPy.t1 = QPy.t0 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t0 )
466
+ CPx.t2 = QPx.t2 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t2 )
467
+ CPy.t2 = QPy.t2 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t2 )
468
+ CPx.t3 = QPx.t2
469
+ CPy.t3 = QPy.t2
470
+ callback.Curve( CPx.t1 CPy.t1
471
+ CPx.t2 CPy.t2
472
+ CPx.t3 CPy.t3
473
+ )
474
+ cx2 = CPx.t2
475
+ cy2 = CPy.t2
476
+ cx = CPx.t3
477
+ cy = CPy.t3
478
+ }
479
+ case (ccode "Q") {
480
+ QPx.t0 = cx
481
+ QPy.t0 = cy
482
+ QPx.t1 = args.t0
483
+ QPy.t1 = args.t1
484
+ QPx.t2 = args.t2
485
+ QPy.t2 = args.t3
486
+ CPx.t0 = QPx.t0
487
+ CPy.t0 = QPy.t0
488
+ CPx.t1 = QPx.t0 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t0 )
489
+ CPy.t1 = QPy.t0 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t0 )
490
+ CPx.t2 = QPx.t2 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t2 )
491
+ CPy.t2 = QPy.t2 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t2 )
492
+ CPx.t3 = QPx.t2
493
+ CPy.t3 = QPy.t2
494
+ callback.Curve( CPx.t1 CPy.t1
495
+ CPx.t2 CPy.t2
496
+ CPx.t3 CPy.t3
497
+ )
498
+ cx2 = CPx.t1
499
+ cy2 = CPy.t1
500
+ cx = CPx.t2
501
+ cy = CPy.t3
502
+ }
503
+ case (ccode "T") {
504
+ QPx.t0 = cx
505
+ QPy.t0 = cy
506
+ QPx.t1 = 2.0*cx - cx2
507
+ QPy.t1 = 2.0*cy - cy2
508
+ QPx.t2 = args.t0
509
+ QPy.t2 = args.t1
510
+ CPx.t0 = QPx.t0
511
+ CPy.t0 = QPy.t0
512
+ CPx.t1 = QPx.t0 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t0 )
513
+ CPy.t1 = QPy.t0 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t0 )
514
+
515
+ ; TODO: is this correct here ?? it was stored to index 3
516
+ CPx.t2 = QPx.t2
517
+ CPy.t2 = QPy.t2
518
+ callback.Curve( CPx.t0 CPy.t0
519
+ CPx.t1 CPy.t1
520
+ CPx.t2 CPy.t2
521
+ )
522
+ cx2 = CPx.t1
523
+ cy2 = CPy.t1
524
+ cx = CPx.t2
525
+ cy = CPy.t3
526
+ }
527
+ case (ccode "t") {
528
+ QPx.t0 = cx
529
+ QPy.t0 = cy
530
+ QPx.t1 = 2.0*cx - cx2
531
+ QPy.t1 = 2.0*cy - cy2
532
+ QPx.t2 = cx + args.t0
533
+ QPy.t2 = cy + args.t1
534
+ CPx.t0 = QPx.t0
535
+ CPy.t0 = QPy.t0
536
+ CPx.t1 = QPx.t0 + ( 2.0 / 3.0 ) * ( QPx.t1 - QPx.t0 )
537
+ CPy.t1 = QPy.t0 + ( 2.0 / 3.0 ) * ( QPy.t1 - QPy.t0 )
538
+
539
+ ; TODO: is this correct here ?? it was stored to index 3
540
+ CPx.t2 = QPx.t2
541
+ CPy.t2 = QPy.t2
542
+ callback.Curve( CPx.t0 CPy.t0
543
+ CPx.t1 CPy.t1
544
+ CPx.t2 CPy.t2
545
+ )
546
+ cx2 = CPx.t1
547
+ cy2 = CPy.t1
548
+ cx = CPx.t2
549
+ cy = CPy.t3
550
+ }
551
+ case (ccode "a") {
552
+ def res (this.pathArcTo(callback (Vec2.CreateNew (cx cy)) args true ))
553
+ cx = res.x
554
+ cy = res.y
555
+ cx2 = cx
556
+ cy2 = cy
557
+ }
558
+ case (ccode "A") {
559
+ def res (this.pathArcTo(callback (Vec2.CreateNew (cx cy)) args false ))
560
+ cx = res.x
561
+ cy = res.y
562
+ cx2 = cx
563
+ cy2 = cy
564
+ }
565
+ default {
566
+ if (arg_cnt >= 2) {
567
+ cx = args.t0
568
+ cy = args.t1
569
+ cx2 = cx
570
+ cy2 = cy
571
+ }
572
+ }
573
+ }
574
+ ; if arg cnt was matched reset args
575
+ arg_cnt = 0
576
+ }
577
+ }
578
+ }
579
+ }
580
+ sfn m@(main) () {
581
+ def path1 "M130 110 C 120 140, 180 140, 170 110"
582
+ def path2 "M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"
583
+ def path3 "M10 80 Q 95 10 180 80"
584
+ def path4 "M10 80 Q 52.5 10, 95 80 T 180 80"
585
+ def path5 "M-130 -110 C 120 140, 180 140, 170 110"
586
+ def path6 "M10 315
587
+ L 110 215
588
+ A 30 50 0 0 1 162.55 162.45
589
+ L 172.55 152.45
590
+ A 30 50 -45 0 1 215.1 109.9
591
+ L 315 10"
592
+
593
+ def path7 "M 14.781 14.347 h 1.738 c 0.24 0 0.436 -0.194 0.436 -0.435 v -1.739 c 0 -0.239 -0.195 -0.435 -0.436 -0.435 h -1.738 c -0.239 0 -0.435 0.195 -0.435 0.435 v 1.739 C 14.347 14.152 14.542 14.347 14.781 14.347 M 18.693 3.045 H 1.307 c -0.48 0 -0.869 0.39 -0.869 0.869 v 12.17 c 0 0.479 0.389 0.869 0.869 0.869 h 17.387 c 0.479 0 0.869 -0.39 0.869 -0.869 V 3.915 C 19.562 3.435 19.173 3.045 18.693 3.045 M 18.693 16.085 H 1.307 V 9.13 h 17.387 V 16.085 Z M 18.693 5.653 H 1.307 V 3.915 h 17.387 V 5.653 Z M 3.48 12.608 h 7.824 c 0.24 0 0.435 -0.195 0.435 -0.436 c 0 -0.239 -0.194 -0.435 -0.435 -0.435 H 3.48 c -0.24 0 -0.435 0.195 -0.435 0.435 C 3.045 12.413 3.24 12.608 3.48 12.608 M 3.48 14.347 h 6.085 c 0.24 0 0.435 -0.194 0.435 -0.435 s -0.195 -0.435 -0.435 -0.435 H 3.48 c -0.24 0 -0.435 0.194 -0.435 0.435 S 3.24 14.347 3.48 14.347"
594
+ def path8 "M 4.423 9.141 H 3.565 c -0.237 0 -0.429 0.192 -0.429 0.429 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.192 0.429 -0.429 S 4.66 9.141 4.423 9.141 M 6.997 16.861 H 6.139 c -0.237 0 -0.429 0.192 -0.429 0.43 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.191 0.429 -0.429 S 7.234 16.861 6.997 16.861 M 4.423 16.861 H 3.565 c -0.237 0 -0.429 0.192 -0.429 0.43 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.191 0.429 -0.429 S 4.66 16.861 4.423 16.861 M 13.861 9.998 h 0.857 c 0.236 0 0.429 -0.192 0.429 -0.429 s -0.192 -0.429 -0.429 -0.429 h -0.857 c -0.237 0 -0.43 0.192 -0.43 0.429 S 13.624 9.998 13.861 9.998 M 14.719 16.861 h -0.857 c -0.237 0 -0.43 0.192 -0.43 0.43 s 0.192 0.429 0.43 0.429 h 0.857 c 0.236 0 0.429 -0.191 0.429 -0.429 S 14.955 16.861 14.719 16.861 M 15.576 13.001 c -0.236 0 -0.429 0.192 -0.429 0.43 c 0 0.236 0.192 0.429 0.429 0.429 c 0.237 0 0.43 -0.192 0.43 -0.429 C 16.006 13.193 15.813 13.001 15.576 13.001 M 6.997 9.141 H 6.139 c -0.237 0 -0.429 0.192 -0.429 0.429 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.192 0.429 -0.429 S 7.234 9.141 6.997 9.141 M 12.145 9.141 h -0.857 c -0.236 0 -0.429 0.192 -0.429 0.429 s 0.193 0.429 0.429 0.429 h 0.857 c 0.237 0 0.43 -0.192 0.43 -0.429 S 12.382 9.141 12.145 9.141 M 17.722 10.856 V 7.424 c 0 -0.948 -0.769 -1.716 -1.716 -1.716 h -0.617 l -1.038 -3.873 c -0.245 -0.916 -1.186 -1.458 -2.101 -1.213 L 3.592 2.912 C 2.676 3.157 2.133 4.098 2.378 5.014 l 0.186 0.695 H 2.278 c -0.947 0 -1.716 0.768 -1.716 1.716 V 17.72 c 0 0.947 0.769 1.716 1.716 1.716 h 13.728 c 0.947 0 1.716 -0.769 1.716 -1.716 v -1.716 c 0.947 0 1.716 -0.769 1.716 -1.716 v -1.716 C 19.438 11.624 18.669 10.856 17.722 10.856 M 16.006 6.566 c 0.473 0 0.857 0.384 0.857 0.858 v 0.238 c -0.253 -0.146 -0.544 -0.238 -0.857 -0.238 h -0.157 l -0.229 -0.858 H 16.006 Z M 14.41 5.372 l 0.55 2.053 H 6.67 L 14.41 5.372 Z M 3.814 3.741 l 8.657 -2.29 c 0.458 -0.123 0.928 0.149 1.051 0.607 l 0.222 0.828 L 3.43 5.621 l -0.223 -0.83 C 3.084 4.333 3.356 3.863 3.814 3.741 M 1.42 7.424 c 0 -0.474 0.384 -0.858 0.858 -0.858 h 0.517 l 0.229 0.858 H 2.278 c -0.314 0 -0.605 0.091 -0.858 0.238 V 7.424 Z M 16.863 17.72 c 0 0.474 -0.385 0.858 -0.857 0.858 H 2.278 c -0.474 0 -0.858 -0.385 -0.858 -0.858 V 9.141 c 0 -0.474 0.384 -0.858 0.858 -0.858 h 13.728 c 0.473 0 0.857 0.384 0.857 0.858 v 1.715 h -1.716 c -0.947 0 -1.716 0.768 -1.716 1.716 v 1.716 c 0 0.947 0.769 1.716 1.716 1.716 h 1.716 V 17.72 Z M 18.58 14.288 c 0 0.474 -0.385 0.857 -0.858 0.857 h -2.574 c -0.474 0 -0.857 -0.384 -0.857 -0.857 v -1.716 c 0 -0.474 0.384 -0.858 0.857 -0.858 h 2.574 c 0.474 0 0.858 0.385 0.858 0.858 V 14.288 Z M 9.571 16.861 H 8.713 c -0.237 0 -0.429 0.192 -0.429 0.43 s 0.192 0.429 0.429 0.429 h 0.858 c 0.236 0 0.429 -0.191 0.429 -0.429 S 9.808 16.861 9.571 16.861 M 12.145 16.861 h -0.857 c -0.236 0 -0.429 0.192 -0.429 0.43 s 0.193 0.429 0.429 0.429 h 0.857 c 0.237 0 0.43 -0.191 0.43 -0.429 S 12.382 16.861 12.145 16.861 M 9.571 9.141 H 8.713 c -0.237 0 -0.429 0.192 -0.429 0.429 s 0.192 0.429 0.429 0.429 h 0.858 C 9.808 9.998 10 9.806 10 9.569 S 9.808 9.141 9.571 9.141"
595
+ def path9 "M 4.423 9.141 H 3.565 c -0.237 0 -0.429 0.192 -0.429 0.429 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.192 0.429 -0.429 S 4.66 9.141 4.423 9.141 M 6.997 16.861 H 6.139 c -0.237 0 -0.429 0.192 -0.429 0.43 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.191 0.429 -0.429 S 7.234 16.861 6.997 16.861 M 4.423 16.861 H 3.565 c -0.237 0 -0.429 0.192 -0.429 0.43 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.191 0.429 -0.429 S 4.66 16.861 4.423 16.861 M 13.861 9.998 h 0.857 c 0.236 0 0.429 -0.192 0.429 -0.429 s -0.192 -0.429 -0.429 -0.429 h -0.857 c -0.237 0 -0.43 0.192 -0.43 0.429 S 13.624 9.998 13.861 9.998 M 14.719 16.861 h -0.857 c -0.237 0 -0.43 0.192 -0.43 0.43 s 0.192 0.429 0.43 0.429 h 0.857 c 0.236 0 0.429 -0.191 0.429 -0.429 S 14.955 16.861 14.719 16.861 M 15.576 13.001 c -0.236 0 -0.429 0.192 -0.429 0.43 c 0 0.236 0.192 0.429 0.429 0.429 c 0.237 0 0.43 -0.192 0.43 -0.429 C 16.006 13.193 15.813 13.001 15.576 13.001 M 6.997 9.141 H 6.139 c -0.237 0 -0.429 0.192 -0.429 0.429 s 0.192 0.429 0.429 0.429 h 0.858 c 0.237 0 0.429 -0.192 0.429 -0.429 S 7.234 9.141 6.997 9.141 M 12.145 9.141 h -0.857 c -0.236 0 -0.429 0.192 -0.429 0.429 s 0.193 0.429 0.429 0.429 h 0.857 c 0.237 0 0.43 -0.192 0.43 -0.429 S 12.382 9.141 12.145 9.141 M 17.722 10.856 V 7.424 c 0 -0.948 -0.769 -1.716 -1.716 -1.716 h -0.617 l -1.038 -3.873 -3 -4"
596
+ def path10 "M 16.853 8.355 V 5.888 c 0 -3.015 -2.467 -5.482 -5.482 -5.482 H 8.629 c -3.015 0 -5.482 2.467 -5.482 5.482 v 2.467 l -2.741 7.127 c 0 1.371 4.295 4.112 9.594 4.112 s 9.594 -2.741 9.594 -4.112 L 16.853 8.355 Z M 5.888 17.367 c -0.284 0 -0.514 -0.23 -0.514 -0.514 c 0 -0.284 0.23 -0.514 0.514 -0.514 c 0.284 0 0.514 0.23 0.514 0.514 C 6.402 17.137 6.173 17.367 5.888 17.367 Z M 5.203 10 c 0 -0.377 0.19 -0.928 0.423 -1.225 c 0 0 0.651 -0.831 1.976 -0.831 c 0.672 0 1.141 0.309 1.141 0.309 C 9.057 8.46 9.315 8.938 9.315 9.315 v 1.028 c 0 0.188 -0.308 0.343 -0.685 0.343 H 5.888 C 5.511 10.685 5.203 10.377 5.203 10 Z M 7.944 16.853 H 7.259 v -1.371 l 0.685 -0.685 V 16.853 Z M 9.657 16.853 H 8.629 v -2.741 h 1.028 V 16.853 Z M 8.972 13.426 v -1.028 c 0 -0.568 0.46 -1.028 1.028 -1.028 c 0.568 0 1.028 0.46 1.028 1.028 v 1.028 H 8.972 Z M 11.371 16.853 h -1.028 v -2.741 h 1.028 V 16.853 Z M 12.741 16.853 h -0.685 v -2.056 l 0.685 0.685 V 16.853 Z M 14.112 17.367 c -0.284 0 -0.514 -0.23 -0.514 -0.514 c 0 -0.284 0.23 -0.514 0.514 -0.514 c 0.284 0 0.514 0.23 0.514 0.514 C 14.626 17.137 14.396 17.367 14.112 17.367 Z M 14.112 10.685 h -2.741 c -0.377 0 -0.685 -0.154 -0.685 -0.343 V 9.315 c 0 -0.377 0.258 -0.855 0.572 -1.062 c 0 0 0.469 -0.309 1.141 -0.309 c 1.325 0 1.976 0.831 1.976 0.831 c 0.232 0.297 0.423 0.848 0.423 1.225 S 14.489 10.685 14.112 10.685 Z M 18.347 15.801 c -0.041 0.016 -0.083 0.023 -0.124 0.023 c -0.137 0 -0.267 -0.083 -0.319 -0.218 l -2.492 -6.401 c -0.659 -1.647 -1.474 -2.289 -2.905 -2.289 c -0.95 0 -1.746 0.589 -1.754 0.595 c -0.422 0.317 -1.084 0.316 -1.507 0 C 9.239 7.505 8.435 6.916 7.492 6.916 c -1.431 0 -2.246 0.642 -2.906 2.292 l -2.491 6.398 c -0.069 0.176 -0.268 0.264 -0.443 0.195 c -0.176 -0.068 -0.264 -0.267 -0.195 -0.444 l 2.492 -6.401 c 0.765 -1.911 1.824 -2.726 3.543 -2.726 c 1.176 0 2.125 0.702 2.165 0.731 c 0.179 0.135 0.506 0.135 0.685 0 c 0.04 -0.029 0.99 -0.731 2.165 -0.731 c 1.719 0 2.779 0.814 3.542 2.723 l 2.493 6.404 C 18.611 15.534 18.524 15.733 18.347 15.801 Z"
597
+ def path11 "M10,6.536c-2.263,0-4.099,1.836-4.099,4.098S7.737,14.732,10,14.732s4.099-1.836,4.099-4.098S12.263,6.536,10,6.536M10,13.871c-1.784,0-3.235-1.453-3.235-3.237S8.216,7.399,10,7.399c1.784,0,3.235,1.452,3.235,3.235S11.784,13.871,10,13.871M17.118,5.672l-3.237,0.014L12.52,3.697c-0.082-0.105-0.209-0.168-0.343-0.168H7.824c-0.134,0-0.261,0.062-0.343,0.168L6.12,5.686H2.882c-0.951,0-1.726,0.748-1.726,1.699v7.362c0,0.951,0.774,1.725,1.726,1.725h14.236c0.951,0,1.726-0.773,1.726-1.725V7.195C18.844,6.244,18.069,5.672,17.118,5.672 M17.98,14.746c0,0.477-0.386,0.861-0.862,0.861H2.882c-0.477,0-0.863-0.385-0.863-0.861V7.384c0-0.477,0.386-0.85,0.863-0.85l3.451,0.014c0.134,0,0.261-0.062,0.343-0.168l1.361-1.989h3.926l1.361,1.989c0.082,0.105,0.209,0.168,0.343,0.168l3.451-0.014c0.477,0,0.862,0.184,0.862,0.661V14.746z"
598
+ def ex (new PathExecutor)
599
+ def parser (new EVGPathParser)
600
+ parser.parsePath(path1 ex)
601
+ parser.parsePath(path2 ex)
602
+ parser.parsePath(path3 ex)
603
+ parser.parsePath(path4 ex)
604
+ parser.parsePath(path5 ex)
605
+ parser.parsePath(path6 ex)
606
+ def coll (new PathCollector)
607
+ parser.parsePath(path6 coll)
608
+ print (coll.getString())
609
+
610
+ def coll (new PathCollector)
611
+ parser.parsePath(path7 coll)
612
+ print (coll.getString())
613
+ print " ----- "
614
+ def coll (new PathCollector)
615
+ parser.parsePath(path8 coll)
616
+ print (coll.getString())
617
+ print " ----- "
618
+ def coll (new PathCollector)
619
+ parser.parsePath(path9 coll)
620
+ print (coll.getString())
621
+ print " ----- "
622
+ def coll (new PathCollector)
623
+ parser.parsePath(path10 coll)
624
+ print (coll.getString())
625
+ }
626
+ }
627
+