openscad-cpp-evaluator 0.4.0__tar.gz → 0.4.2__tar.gz

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 (194) hide show
  1. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/CMakeLists.txt +15 -14
  2. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/PKG-INFO +1 -1
  3. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/bindings/module.cpp +15 -0
  4. openscad_cpp_evaluator-0.4.2/cmake/embed_font.cmake +28 -0
  5. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/pyproject.toml +1 -1
  6. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/python/openscad_cpp_evaluator/__init__.py +2 -1
  7. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/CMakeLists.txt +2 -0
  8. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/text/stb_font_provider.cpp +7 -10
  9. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_python_bindings.py +27 -0
  10. openscad_cpp_evaluator-0.4.0/include/openscad_cpp_evaluator/bundled_font_path.hpp.in +0 -6
  11. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/.github/workflows/ci.yml +0 -0
  12. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/.github/workflows/wheels.yml +0 -0
  13. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/.gitignore +0 -0
  14. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/.gitmodules +0 -0
  15. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/CLAUDE.md +0 -0
  16. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/LICENSE +0 -0
  17. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/README.md +0 -0
  18. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/bindings/CMakeLists.txt +0 -0
  19. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/examples/CMakeLists.txt +0 -0
  20. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/examples/eval_perf_benchmark.cpp +0 -0
  21. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/examples/manifold_cache_reuse.cpp +0 -0
  22. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/examples/minimal_debugger.cpp +0 -0
  23. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
  24. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/.gitignore +0 -0
  25. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/CLAUDE.md +0 -0
  26. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
  27. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/README.md +0 -0
  28. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
  29. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
  30. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
  31. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
  32. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
  33. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
  34. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
  35. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
  36. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
  37. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
  38. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
  39. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
  40. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
  41. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
  42. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
  43. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
  44. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/api.cpp +0 -0
  45. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
  46. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
  47. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
  48. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
  49. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
  50. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
  51. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
  52. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
  53. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/comments.cpp +0 -0
  54. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
  55. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
  56. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
  57. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
  58. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
  59. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
  60. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
  61. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/position.cpp +0 -0
  62. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
  63. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/scope.cpp +0 -0
  64. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
  65. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
  66. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
  67. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
  68. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
  69. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
  70. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
  71. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
  72. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
  73. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
  74. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
  75. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
  76. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
  77. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
  78. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
  79. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
  80. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
  81. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
  82. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
  83. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
  84. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
  85. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
  86. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
  87. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
  88. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
  89. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
  90. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
  91. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
  92. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
  93. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
  94. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
  95. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
  96. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
  97. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
  98. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
  99. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
  100. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
  101. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
  102. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
  103. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
  104. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
  105. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/export.hpp +0 -0
  106. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
  107. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
  108. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
  109. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
  110. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
  111. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
  112. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/profile.hpp +0 -0
  113. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
  114. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/segments.hpp +0 -0
  115. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
  116. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
  117. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
  118. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/value.hpp +0 -0
  119. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
  120. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/resources/fonts/LICENSE +0 -0
  121. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/resources/fonts/LiberationSans-Regular.ttf +0 -0
  122. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/booleans.cpp +0 -0
  123. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/builtins.hpp +0 -0
  124. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/call_args.cpp +0 -0
  125. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/color.cpp +0 -0
  126. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/control.cpp +0 -0
  127. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/extrude.cpp +0 -0
  128. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/function_builtins.cpp +0 -0
  129. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/import.cpp +0 -0
  130. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/modifiers.cpp +0 -0
  131. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/primitives_2d.cpp +0 -0
  132. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/primitives_3d.cpp +0 -0
  133. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/registry.cpp +0 -0
  134. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/roof.cpp +0 -0
  135. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/segments.cpp +0 -0
  136. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/surface.cpp +0 -0
  137. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/text.cpp +0 -0
  138. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/topology.cpp +0 -0
  139. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/builtins/transforms.cpp +0 -0
  140. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/bytecode_compiler.cpp +0 -0
  141. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/bytecode_vm.cpp +0 -0
  142. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/colored_body.cpp +0 -0
  143. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/csg_generate.cpp +0 -0
  144. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/csg_resolve.cpp +0 -0
  145. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/css_colors.cpp +0 -0
  146. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/debug/debug_repl.cpp +0 -0
  147. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/debug_profile.cpp +0 -0
  148. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/eval_context.cpp +0 -0
  149. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/eval_error.cpp +0 -0
  150. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/eval_use.cpp +0 -0
  151. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/export.cpp +0 -0
  152. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/expr_eval.cpp +0 -0
  153. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/import/dxf_import.cpp +0 -0
  154. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/import/mesh_import.cpp +0 -0
  155. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/import/surface_load.cpp +0 -0
  156. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/import/svg_import.cpp +0 -0
  157. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/manifold_cache.cpp +0 -0
  158. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/stmt_eval.cpp +0 -0
  159. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/text/text_metrics.cpp +0 -0
  160. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/user_calls.cpp +0 -0
  161. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/value.cpp +0 -0
  162. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/src/zip_stored.cpp +0 -0
  163. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/CMakeLists.txt +0 -0
  164. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_booleans.cpp +0 -0
  165. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_bytecode_compiler.cpp +0 -0
  166. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_cli.cpp +0 -0
  167. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_control_flow.cpp +0 -0
  168. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_csg_tree.cpp +0 -0
  169. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_debug_hooks.cpp +0 -0
  170. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_dxf_svg_import.cpp +0 -0
  171. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_eval_context.cpp +0 -0
  172. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_export.cpp +0 -0
  173. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_expr_eval.cpp +0 -0
  174. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_extrude_roof.cpp +0 -0
  175. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_function_builtins.cpp +0 -0
  176. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_helpers.hpp +0 -0
  177. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_import_export.cpp +0 -0
  178. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_manifold_cache.cpp +0 -0
  179. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_multi_color_merge.cpp +0 -0
  180. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_primitives.cpp +0 -0
  181. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_profiling.cpp +0 -0
  182. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_scoping.cpp +0 -0
  183. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_surface.cpp +0 -0
  184. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_tail_calls.cpp +0 -0
  185. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_text.cpp +0 -0
  186. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_transforms.cpp +0 -0
  187. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_use.cpp +0 -0
  188. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_value.cpp +0 -0
  189. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_viewport_params.cpp +0 -0
  190. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tests/test_zip_stored.cpp +0 -0
  191. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tools/cli/CMakeLists.txt +0 -0
  192. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tools/cli/cli_lib.cpp +0 -0
  193. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tools/cli/cli_lib.hpp +0 -0
  194. {openscad_cpp_evaluator-0.4.0 → openscad_cpp_evaluator-0.4.2}/tools/cli/main.cpp +0 -0
@@ -147,21 +147,22 @@ FetchContent_MakeAvailable(stb)
147
147
  FetchContent_Declare(cpp_linenoise GIT_REPOSITORY https://github.com/yhirose/cpp-linenoise.git GIT_TAG master GIT_SHALLOW TRUE)
148
148
  FetchContent_MakeAvailable(cpp_linenoise)
149
149
 
150
- # Bakes an absolute path to the bundled default font (resources/fonts/) into
151
- # a generated header, so StbFontProvider's default constructor doesn't need
152
- # a runtime-configurable resource search path.
153
- #
154
- # ponytail: fine for this repo's own tests/CLI (always built from this
155
- # source tree) but not how a packaged/installed build should ship a font --
156
- # a real install needs either the resource file copied alongside the
157
- # installed binary or the font bytes embedded directly into the binary
158
- # (e.g. via a generated byte-array header). Upgrade when packaging is
159
- # actually needed; not worth building now for a resource this project only
160
- # consumes from its own build tree so far.
161
- configure_file(
162
- ${CMAKE_CURRENT_SOURCE_DIR}/include/openscad_cpp_evaluator/bundled_font_path.hpp.in
163
- ${CMAKE_CURRENT_BINARY_DIR}/generated/openscad_cpp_evaluator/bundled_font_path.hpp
150
+ # Embeds the bundled default font's (resources/fonts/) raw bytes into a
151
+ # generated header (kBundledFontData/kBundledFontDataSize), so
152
+ # StbFontProvider's default constructor needs no runtime file path at all --
153
+ # a real installed/packaged build (e.g. the PyPI wheel) has no guarantee the
154
+ # source tree's resources/fonts/ is present or at any predictable path
155
+ # alongside the installed shared library.
156
+ set(BUNDLED_FONT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/resources/fonts/LiberationSans-Regular.ttf)
157
+ set(BUNDLED_FONT_HEADER ${CMAKE_CURRENT_BINARY_DIR}/generated/openscad_cpp_evaluator/bundled_font_data.hpp)
158
+ add_custom_command(
159
+ OUTPUT ${BUNDLED_FONT_HEADER}
160
+ COMMAND ${CMAKE_COMMAND} -DIN_FILE=${BUNDLED_FONT_SRC} -DOUT_FILE=${BUNDLED_FONT_HEADER}
161
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/embed_font.cmake
162
+ DEPENDS ${BUNDLED_FONT_SRC} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/embed_font.cmake
163
+ COMMENT "Embedding bundled font bytes into bundled_font_data.hpp"
164
164
  )
165
+ add_custom_target(generate_bundled_font DEPENDS ${BUNDLED_FONT_HEADER})
165
166
 
166
167
  option(BUILD_TESTING "Build tests" ON)
167
168
  option(BUILD_EXAMPLES "Build the examples/ programs (e.g. minimal_debugger)" ON)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscad_cpp_evaluator
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: C++ OpenSCAD evaluator with Python bindings
5
5
  Author: NeuSCAD Contributors
6
6
  License-Expression: MIT
@@ -130,6 +130,21 @@ nb::dict bodyToDict(oscadeval::ColoredBody& cb) {
130
130
  d["color"] = nb::make_tuple((*cb.color)[0], (*cb.color)[1], (*cb.color)[2], (*cb.color)[3]);
131
131
  else
132
132
  d["color"] = nb::none();
133
+ // Per-triangle RGBA, set only for a real multi-color CSG merge (see
134
+ // Evaluator::attachTriColors) -- None for the common single-material
135
+ // case, matching the reference's ColoredBody.tri_colors exactly (an
136
+ // (numTri, 4) float32 array or None). The renderer reads this to split
137
+ // one merged body's triangles across separate opaque/translucent draw
138
+ // buffers.
139
+ if (cb.triColors) {
140
+ const std::vector<std::array<float, 4>>& src = *cb.triColors;
141
+ std::vector<float> flat;
142
+ flat.reserve(src.size() * 4);
143
+ for (const auto& rgba : src) flat.insert(flat.end(), rgba.begin(), rgba.end());
144
+ d["tri_colors"] = vecToNumpy(std::move(flat), {src.size(), 4});
145
+ } else {
146
+ d["tri_colors"] = nb::none();
147
+ }
133
148
  return d;
134
149
  }
135
150
 
@@ -0,0 +1,28 @@
1
+ # Reads IN_FILE (binary) and writes OUT_FILE: a C++ header exposing its
2
+ # bytes as a static array (kBundledFontData/kBundledFontDataSize). Run via
3
+ # `cmake -DIN_FILE=... -DOUT_FILE=... -P embed_font.cmake` as a build-time
4
+ # add_custom_command, not configure_file -- a font baked in as bytes has no
5
+ # runtime file path to go stale once the shared library is installed
6
+ # somewhere other than its own build tree (see this script's own call site
7
+ # in the top-level CMakeLists.txt for the packaging bug this replaces).
8
+ if(NOT DEFINED IN_FILE OR NOT DEFINED OUT_FILE)
9
+ message(FATAL_ERROR "embed_font.cmake requires -DIN_FILE=... -DOUT_FILE=...")
10
+ endif()
11
+
12
+ file(READ "${IN_FILE}" _hex HEX)
13
+ string(LENGTH "${_hex}" _hexLen)
14
+ math(EXPR _byteCount "${_hexLen} / 2")
15
+ string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," _bytesCsv "${_hex}")
16
+
17
+ file(WRITE "${OUT_FILE}"
18
+ "// Auto-generated by cmake/embed_font.cmake from ${IN_FILE} -- do not edit.
19
+ #pragma once
20
+ #include <cstddef>
21
+
22
+ namespace oscadeval {
23
+ inline constexpr unsigned char kBundledFontData[] = {
24
+ ${_bytesCsv}
25
+ };
26
+ inline constexpr std::size_t kBundledFontDataSize = ${_byteCount};
27
+ } // namespace oscadeval
28
+ ")
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "openscad_cpp_evaluator"
7
- version = "0.4.0"
7
+ version = "0.4.2"
8
8
  description = "C++ OpenSCAD evaluator with Python bindings"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -287,6 +287,7 @@ class ColoredBody:
287
287
  color: Optional[tuple] # RGBA 0-1, or None to follow the theme
288
288
  section: object = None # kept for API parity (always None here)
289
289
  flat_preview: bool = False
290
+ tri_colors: Optional[object] = None # (numTri, 4) float32 ndarray, real multi-color CSG merges only
290
291
 
291
292
 
292
293
  def bodies_from_dicts(body_dicts) -> list:
@@ -295,7 +296,7 @@ def bodies_from_dicts(body_dicts) -> list:
295
296
  instances. Shared by Evaluator.evaluate() and a debug session's own live
296
297
  partial-render (see debug_evaluate()'s `generate_partial` hook kwarg,
297
298
  module.cpp) so both paths convert identically."""
298
- return [ColoredBody(_BodyShim(d), d["color"], None, d["flat_preview"]) for d in body_dicts]
299
+ return [ColoredBody(_BodyShim(d), d["color"], None, d["flat_preview"], d.get("tri_colors")) for d in body_dicts]
299
300
 
300
301
 
301
302
  class Evaluator:
@@ -47,6 +47,8 @@ target_include_directories(openscad_cpp_evaluator PUBLIC
47
47
  )
48
48
  target_include_directories(openscad_cpp_evaluator PRIVATE ${stb_SOURCE_DIR} ${CMAKE_BINARY_DIR}/generated)
49
49
 
50
+ add_dependencies(openscad_cpp_evaluator generate_bundled_font)
51
+
50
52
  target_link_libraries(openscad_cpp_evaluator PUBLIC openscad_cpp_parser manifold Boost::polygon)
51
53
  target_link_libraries(openscad_cpp_evaluator PRIVATE linenoise)
52
54
  target_compile_options(openscad_cpp_evaluator PRIVATE
@@ -1,11 +1,10 @@
1
1
  #include "openscad_cpp_evaluator/stb_font_provider.hpp"
2
2
 
3
- #include "openscad_cpp_evaluator/bundled_font_path.hpp"
3
+ #include "openscad_cpp_evaluator/bundled_font_data.hpp"
4
4
 
5
5
  #define STB_TRUETYPE_IMPLEMENTATION
6
6
  #include <stb_truetype.h>
7
7
 
8
- #include <fstream>
9
8
  #include <stdexcept>
10
9
 
11
10
  namespace oscadeval {
@@ -82,16 +81,14 @@ struct StbFontProvider::Impl {
82
81
  };
83
82
 
84
83
  StbFontProvider::StbFontProvider() : impl_(std::make_unique<Impl>()) {
85
- std::ifstream in(kBundledFontPath, std::ios::binary);
86
- if (!in) throw std::runtime_error(std::string("could not open bundled font '") + kBundledFontPath + "'");
87
- in.seekg(0, std::ios::end);
88
- const auto size = in.tellg();
89
- in.seekg(0);
90
- impl_->data.resize(static_cast<size_t>(size));
91
- in.read(reinterpret_cast<char*>(impl_->data.data()), size);
84
+ // Embedded at build time (cmake/embed_font.cmake) -- no runtime file
85
+ // path to resolve, so this works identically whether running from this
86
+ // repo's own build tree or a packaged/installed wheel on another
87
+ // machine entirely.
88
+ impl_->data.assign(kBundledFontData, kBundledFontData + kBundledFontDataSize);
92
89
 
93
90
  if (!stbtt_InitFont(&impl_->info, impl_->data.data(), 0)) {
94
- throw std::runtime_error(std::string("failed to parse bundled font '") + kBundledFontPath + "'");
91
+ throw std::runtime_error("failed to parse bundled font");
95
92
  }
96
93
  impl_->family = fontNameString(impl_->info, 1);
97
94
  impl_->style = fontNameString(impl_->info, 2);
@@ -192,6 +192,33 @@ def test_dyn_explicit_distinguishes_seeded_from_script_assigned():
192
192
  assert "$fa" not in ev.dyn_explicit
193
193
 
194
194
 
195
+ def test_tri_colors_populated_for_a_real_multicolor_csg_merge():
196
+ # Found via BelfrySCAD's own renderer crashing on ColoredBody.tri_colors
197
+ # missing entirely -- the C++ core (Evaluator::attachTriColors,
198
+ # booleans.cpp) already computes this, bodyToDict() just never exposed
199
+ # it. union()-ing an opaque cube with a translucent sphere forces a real
200
+ # merge with two distinct triangle colors.
201
+ path = _write("union() { color([1,0,0,1]) cube(10); "
202
+ "color([0,1,0,0.5]) translate([5,5,5]) sphere(8); }")
203
+ ev = Evaluator()
204
+ bodies, _ = ev.evaluate(path)
205
+ assert len(bodies) == 1
206
+ tri_colors = bodies[0].tri_colors
207
+ assert tri_colors is not None
208
+ num_tris = bodies[0].body.to_mesh().tri_verts.shape[0]
209
+ assert tri_colors.shape == (num_tris, 4)
210
+ # Two distinct colors actually present, not e.g. all-default filler.
211
+ assert len({tuple(row) for row in tri_colors}) >= 2
212
+
213
+
214
+ def test_tri_colors_is_none_for_an_ordinary_single_color_body():
215
+ path = _write("cube(1);")
216
+ ev = Evaluator()
217
+ bodies, _ = ev.evaluate(path)
218
+ assert len(bodies) == 1
219
+ assert bodies[0].tri_colors is None
220
+
221
+
195
222
  def main():
196
223
  tests = [v for k, v in sorted(globals().items()) if k.startswith("test_") and callable(v)]
197
224
  failures = []
@@ -1,6 +0,0 @@
1
- #pragma once
2
-
3
- // Generated by CMake (configure_file) -- see CMakeLists.txt.
4
- namespace oscadeval {
5
- inline constexpr const char* kBundledFontPath = "@CMAKE_CURRENT_SOURCE_DIR@/resources/fonts/LiberationSans-Regular.ttf";
6
- } // namespace oscadeval