openscad-cpp-evaluator 1.49.7__tar.gz → 1.49.8__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 (235) hide show
  1. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/PKG-INFO +1 -1
  2. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/colored_body.hpp +10 -0
  3. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/pyproject.toml +1 -1
  4. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/booleans.cpp +3 -3
  5. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/csg_generate.cpp +1 -1
  6. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/export.cpp +12 -2
  7. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_multi_color_merge.cpp +16 -1
  8. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/.github/workflows/ci.yml +0 -0
  9. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/.github/workflows/wheels.yml +0 -0
  10. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/.gitignore +0 -0
  11. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/.gitmodules +0 -0
  12. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/CLAUDE.md +0 -0
  13. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/CMakeLists.txt +0 -0
  14. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/LICENSE +0 -0
  15. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/README.md +0 -0
  16. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/bindings/CMakeLists.txt +0 -0
  17. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/bindings/ast_to_py.cpp +0 -0
  18. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/bindings/module.cpp +0 -0
  19. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/cmake/embed_font.cmake +0 -0
  20. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/cmake/patch_manifold.cmake +0 -0
  21. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/examples/CMakeLists.txt +0 -0
  22. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/examples/eval_perf_benchmark.cpp +0 -0
  23. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/examples/manifold_cache_reuse.cpp +0 -0
  24. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/examples/minimal_debugger.cpp +0 -0
  25. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
  26. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/.gitignore +0 -0
  27. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/CLAUDE.md +0 -0
  28. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
  29. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/LICENSE +0 -0
  30. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/README.md +0 -0
  31. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
  32. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
  33. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
  34. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
  35. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
  36. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
  37. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
  38. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
  39. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
  40. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
  41. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
  42. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
  43. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
  44. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope_table.hpp +0 -0
  45. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
  46. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
  47. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/.DS_Store +0 -0
  48. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
  49. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/api.cpp +0 -0
  50. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
  51. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
  52. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
  53. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
  54. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
  55. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
  56. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
  57. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
  58. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/comments.cpp +0 -0
  59. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
  60. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
  61. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
  62. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
  63. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
  64. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
  65. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
  66. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/position.cpp +0 -0
  67. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
  68. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/scope.cpp +0 -0
  69. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
  70. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
  71. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
  72. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
  73. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
  74. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
  75. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
  76. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_concurrent_parse.cpp +0 -0
  77. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
  78. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
  79. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
  80. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
  81. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
  82. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
  83. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
  84. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
  85. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
  86. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
  87. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_profile_time.cpp +0 -0
  88. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
  89. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
  90. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
  91. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
  92. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
  93. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_strict_commas.cpp +0 -0
  94. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
  95. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
  96. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
  97. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
  98. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
  99. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
  100. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
  101. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
  102. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
  103. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/coverage.hpp +0 -0
  104. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
  105. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
  106. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
  107. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
  108. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
  109. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
  110. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
  111. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
  112. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
  113. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
  114. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/export.hpp +0 -0
  115. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
  116. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
  117. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/format_closure.hpp +0 -0
  118. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
  119. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
  120. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
  121. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
  122. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
  123. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
  124. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
  125. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/profile.hpp +0 -0
  126. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/reassign.hpp +0 -0
  127. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
  128. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/segments.hpp +0 -0
  129. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
  130. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
  131. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/utf8.hpp +0 -0
  132. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/value.hpp +0 -0
  133. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
  134. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/python/openscad_cpp_evaluator/__init__.py +0 -0
  135. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/resources/fonts/LICENSE +0 -0
  136. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/resources/fonts/LiberationSans-Bold.ttf +0 -0
  137. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/resources/fonts/LiberationSans-BoldItalic.ttf +0 -0
  138. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/resources/fonts/LiberationSans-Italic.ttf +0 -0
  139. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/resources/fonts/LiberationSans-Regular.ttf +0 -0
  140. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/CMakeLists.txt +0 -0
  141. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/builtins.hpp +0 -0
  142. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/call_args.cpp +0 -0
  143. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/color.cpp +0 -0
  144. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/control.cpp +0 -0
  145. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/dxf_dim.cpp +0 -0
  146. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/extrude.cpp +0 -0
  147. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/function_builtins.cpp +0 -0
  148. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/import.cpp +0 -0
  149. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/modifiers.cpp +0 -0
  150. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/primitives_2d.cpp +0 -0
  151. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/primitives_3d.cpp +0 -0
  152. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/profile_time.cpp +0 -0
  153. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/registry.cpp +0 -0
  154. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/roof.cpp +0 -0
  155. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/segments.cpp +0 -0
  156. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/surface.cpp +0 -0
  157. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/text.cpp +0 -0
  158. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/topology.cpp +0 -0
  159. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/builtins/transforms.cpp +0 -0
  160. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/bytecode_compiler.cpp +0 -0
  161. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/bytecode_vm.cpp +0 -0
  162. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/colored_body.cpp +0 -0
  163. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/coverage.cpp +0 -0
  164. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/csg_resolve.cpp +0 -0
  165. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/css_colors.cpp +0 -0
  166. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/debug/debug_repl.cpp +0 -0
  167. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/debug_profile.cpp +0 -0
  168. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/eval_context.cpp +0 -0
  169. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/eval_error.cpp +0 -0
  170. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/eval_use.cpp +0 -0
  171. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/expr_eval.cpp +0 -0
  172. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/format_closure.cpp +0 -0
  173. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/import/dxf_import.cpp +0 -0
  174. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/import/mesh_import.cpp +0 -0
  175. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/import/scene_import.cpp +0 -0
  176. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/import/surface_load.cpp +0 -0
  177. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/import/svg_import.cpp +0 -0
  178. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/manifold_cache.cpp +0 -0
  179. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/measure_geometry.cpp +0 -0
  180. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/mesh_check.cpp +0 -0
  181. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/stmt_eval.cpp +0 -0
  182. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/text/font_match.cpp +0 -0
  183. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/text/freetype_font_provider.cpp +0 -0
  184. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/text/text_metrics.cpp +0 -0
  185. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/user_calls.cpp +0 -0
  186. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/utf8.cpp +0 -0
  187. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/value.cpp +0 -0
  188. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/xkcd_colors.cpp +0 -0
  189. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/xkcd_colors.hpp +0 -0
  190. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/src/zip_stored.cpp +0 -0
  191. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/CMakeLists.txt +0 -0
  192. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_booleans.cpp +0 -0
  193. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_bytecode_compiler.cpp +0 -0
  194. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_children_separate.cpp +0 -0
  195. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_cli.cpp +0 -0
  196. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_control_flow.cpp +0 -0
  197. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_coverage.cpp +0 -0
  198. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_csg_tree.cpp +0 -0
  199. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_debug_hooks.cpp +0 -0
  200. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_discretizer.cpp +0 -0
  201. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_dxf_svg_import.cpp +0 -0
  202. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_eval_context.cpp +0 -0
  203. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_export.cpp +0 -0
  204. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_expr_eval.cpp +0 -0
  205. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_extrude_roof.cpp +0 -0
  206. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_feature_detection.cpp +0 -0
  207. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_function_builtins.cpp +0 -0
  208. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_helpers.hpp +0 -0
  209. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_import_export.cpp +0 -0
  210. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_include_cache.cpp +0 -0
  211. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_manifold_cache.cpp +0 -0
  212. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_mesh_check.cpp +0 -0
  213. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_openscad_parity.cpp +0 -0
  214. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_primitives.cpp +0 -0
  215. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_profile_time.cpp +0 -0
  216. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_profiling.cpp +0 -0
  217. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_python_bindings.py +0 -0
  218. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_render_expr.cpp +0 -0
  219. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_scope_trail.cpp +0 -0
  220. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_scoping.cpp +0 -0
  221. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_surface.cpp +0 -0
  222. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_tail_calls.cpp +0 -0
  223. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_text.cpp +0 -0
  224. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_transforms.cpp +0 -0
  225. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_undef_args.cpp +0 -0
  226. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_unexpected_args.cpp +0 -0
  227. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_use.cpp +0 -0
  228. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_value.cpp +0 -0
  229. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_viewport_params.cpp +0 -0
  230. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tests/test_zip_stored.cpp +0 -0
  231. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tools/cli/CMakeLists.txt +0 -0
  232. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tools/cli/cli_lib.cpp +0 -0
  233. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tools/cli/cli_lib.hpp +0 -0
  234. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/tools/cli/main.cpp +0 -0
  235. {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.8}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscad_cpp_evaluator
3
- Version: 1.49.7
3
+ Version: 1.49.8
4
4
  Summary: C++ OpenSCAD evaluator with Python bindings
5
5
  Author: NeuSCAD Contributors
6
6
  License-Expression: MIT AND OFL-1.1
@@ -45,6 +45,16 @@ inline constexpr std::array<float, 4> kDefaultGeometryColor{0.9f, 0.85f, 0.1f, 1
45
45
  // geometry colour so a cut reads as a cut.
46
46
  inline constexpr std::array<float, 4> kCutFaceColor{157.0f / 255.0f, 203.0f / 255.0f, 81.0f / 255.0f, 1.0f};
47
47
 
48
+ // What a per-triangle colour array holds for the two colours above, so a
49
+ // renderer can still draw them in its live theme: baking the real values
50
+ // painted every uncoloured difference() yellow and green whatever the
51
+ // theme (BelfrySCAD #884's follow-up). Negative RGB is no colour a script
52
+ // can make; alpha 1 keeps them opaque for a renderer's alpha split.
53
+ // Export writes the real colours in their place (resolveThemeColors), so
54
+ // files are unchanged.
55
+ inline constexpr std::array<float, 4> kThemeBodyColor{-1.0f, -1.0f, -1.0f, 1.0f};
56
+ inline constexpr std::array<float, 4> kThemeCutColor{-2.0f, -2.0f, -2.0f, 1.0f};
57
+
48
58
  struct ColoredBody {
49
59
  std::optional<manifold::Manifold> body;
50
60
  std::optional<std::array<float, 4>> color; // RGBA; nullopt = "no explicit color() -- follow the live theme"
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "openscad_cpp_evaluator"
7
- version = "1.49.7"
7
+ version = "1.49.8"
8
8
  description = "C++ OpenSCAD evaluator with Python bindings"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -214,12 +214,12 @@ void attachTriColors(Evaluator& ev, ColoredBody& cb) {
214
214
  std::all_of(perRunColor.begin(), perRunColor.end(), [&](const auto& c) { return c == perRunColor.front(); });
215
215
  if (allSame) return;
216
216
 
217
- std::vector<std::array<float, 4>> triColors(numTris, kDefaultGeometryColor);
217
+ std::vector<std::array<float, 4>> triColors(numTris, kThemeBodyColor);
218
218
  for (size_t i = 0; i + 1 < runIdx.size(); ++i) {
219
219
  const size_t start = runIdx[i] / 3;
220
220
  const size_t end = std::min<size_t>(runIdx[i + 1] / 3, numTris);
221
221
  if (start >= numTris) continue;
222
- const std::array<float, 4> color = perRunColor[i].value_or(kDefaultGeometryColor);
222
+ const std::array<float, 4> color = perRunColor[i].value_or(kThemeBodyColor);
223
223
  for (size_t t = start; t < end; ++t) triColors[t] = color;
224
224
  }
225
225
  cb.triColors = std::move(triColors);
@@ -458,7 +458,7 @@ std::vector<ColoredBody> generateCsg(Evaluator& ev, const CSGParams& params, con
458
458
  if (op == "difference" && res3d && !ev.measuring()) {
459
459
  for (ColoredBody& c : bodies3d) {
460
460
  if (c.color || c.triColors) continue;
461
- ev.recordRunColors(c, kCutFaceColor);
461
+ ev.recordRunColors(c, kThemeCutColor);
462
462
  mixedColors = true;
463
463
  }
464
464
  }
@@ -517,7 +517,7 @@ void Evaluator::restampCachedIds(std::vector<ColoredBody>& bodies, const oscad::
517
517
  if (cb.triColors && cb.body) {
518
518
  const manifold::MeshGL rebuilt = cb.body->GetMeshGL();
519
519
  const size_t numTris = rebuilt.triVerts.size() / 3;
520
- std::vector<std::array<float, 4>> triColors(numTris, cb.color.value_or(kDefaultGeometryColor));
520
+ std::vector<std::array<float, 4>> triColors(numTris, cb.color.value_or(kThemeBodyColor));
521
521
  for (size_t i = 0; i + 1 < rebuilt.runIndex.size() && i < rebuilt.runOriginalID.size(); ++i) {
522
522
  auto it = runColor.find(rebuilt.runOriginalID[i]);
523
523
  if (it == runColor.end()) continue;
@@ -459,6 +459,16 @@ std::vector<std::string> mixedDimensionWarnings(const std::vector<ColoredBody>&
459
459
  return out;
460
460
  }
461
461
 
462
+ // A file has no theme: the stand-ins a renderer draws in its theme's colours
463
+ // are written as the colours they stand in for (colored_body.hpp).
464
+ static std::vector<std::array<float, 4>> resolveThemeColors(std::vector<std::array<float, 4>> colors) {
465
+ for (auto& c : colors) {
466
+ if (c == kThemeBodyColor) c = kDefaultGeometryColor;
467
+ else if (c == kThemeCutColor) c = kCutFaceColor;
468
+ }
469
+ return colors;
470
+ }
471
+
462
472
  std::vector<ExportObject> splitBodiesForExport(const std::vector<ColoredBody>& bodies, std::vector<int>* openParts,
463
473
  bool splitComponents, bool splitColors) {
464
474
  struct Solid {
@@ -492,7 +502,7 @@ std::vector<ExportObject> splitBodiesForExport(const std::vector<ColoredBody>& b
492
502
  meshToArrays(*cb.rawMesh, obj.verts, obj.tris);
493
503
  if (obj.tris.empty()) continue;
494
504
  obj.color = cb.color.value_or(kDefaultExportColor);
495
- if (cb.triColors) obj.triColors = *cb.triColors;
505
+ if (cb.triColors) obj.triColors = resolveThemeColors(*cb.triColors);
496
506
  loose.push_back(std::move(obj));
497
507
  if (openParts) openParts->push_back(index);
498
508
  continue;
@@ -501,7 +511,7 @@ std::vector<ExportObject> splitBodiesForExport(const std::vector<ColoredBody>& b
501
511
  Solid s;
502
512
  s.man = *cb.body;
503
513
  s.color = cb.color;
504
- if (cb.triColors) s.triColors = *cb.triColors;
514
+ if (cb.triColors) s.triColors = resolveThemeColors(*cb.triColors);
505
515
  s.tris = s.man.GetMeshGL().triVerts;
506
516
  if (s.tris.empty()) continue;
507
517
  solids.push_back(std::move(s));
@@ -1,4 +1,5 @@
1
1
  #include "openscad_cpp_evaluator/evaluator.hpp"
2
+ #include "openscad_cpp_evaluator/export.hpp"
2
3
  #include "openscad_cpp_evaluator/manifold_cache.hpp"
3
4
 
4
5
  #include "test_helpers.hpp"
@@ -73,7 +74,7 @@ TEST(MultiColorCsgMerge, DifferenceCutFaceGetsTheCutGreen) {
73
74
  const auto distinct = distinctColors(*e.bodies[0].triColors);
74
75
  EXPECT_EQ(distinct.size(), 3u);
75
76
  EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, {0.0f, 1.0f, 1.0f, 0.5f}); }));
76
- EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kCutFaceColor); }));
77
+ EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kThemeCutColor); }));
77
78
  }
78
79
 
79
80
  TEST(MultiColorCsgMerge, UncolouredMinuendCutByUncolouredToolStillShowsTheCut) {
@@ -84,6 +85,20 @@ TEST(MultiColorCsgMerge, UncolouredMinuendCutByUncolouredToolStillShowsTheCut) {
84
85
  ASSERT_TRUE(e.bodies[0].triColors.has_value());
85
86
  const auto distinct = distinctColors(*e.bodies[0].triColors);
86
87
  EXPECT_EQ(distinct.size(), 2u);
88
+ // Both are the theme stand-ins, not baked colours, so a renderer can
89
+ // draw them in its live theme rather than always yellow and green.
90
+ EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kThemeCutColor); }));
91
+ EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kThemeBodyColor); }));
92
+ }
93
+
94
+ TEST(MultiColorCsgMerge, ExportWritesRealColoursForTheThemeStandIns) {
95
+ // A file has no theme: the stand-ins are written as the colours they
96
+ // replaced, so exports are unchanged.
97
+ Evaluated e = evalSrc("difference() { cube(10); translate([5,5,-1]) cylinder(h=12, d=6, $fn=16); }");
98
+ const std::vector<ExportObject> objs = splitBodiesForExport(e.bodies, nullptr, false, true);
99
+ ASSERT_EQ(objs.size(), 1u);
100
+ const auto distinct = distinctColors(objs[0].triColors);
101
+ EXPECT_EQ(distinct.size(), 2u);
87
102
  EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kCutFaceColor); }));
88
103
  EXPECT_TRUE(std::any_of(distinct.begin(), distinct.end(), [](const auto& c) { return approxEqual(c, kDefaultGeometryColor); }));
89
104
  }