openscad-cpp-evaluator 1.49.7__tar.gz → 1.49.9__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.
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/colored_body.hpp +10 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/booleans.cpp +3 -3
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/modifiers.cpp +7 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/csg_generate.cpp +1 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/csg_resolve.cpp +4 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/export.cpp +12 -2
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_booleans.cpp +32 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_multi_color_merge.cpp +16 -1
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/.gitignore +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/.gitmodules +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/LICENSE +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/README.md +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/cmake/patch_manifold.cmake +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/LICENSE +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope_table.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/.DS_Store +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_concurrent_parse.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_strict_commas.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/coverage.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/format_closure.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/reassign.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/utf8.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/resources/fonts/LiberationSans-Bold.ttf +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/resources/fonts/LiberationSans-BoldItalic.ttf +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/resources/fonts/LiberationSans-Italic.ttf +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/format_closure.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/import/scene_import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/utf8.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/xkcd_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/xkcd_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_discretizer.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_include_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_openscad_parity.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_undef_args.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/uv.lock +0 -0
|
@@ -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"
|
|
@@ -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,
|
|
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(
|
|
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,
|
|
461
|
+
ev.recordRunColors(c, kThemeCutColor);
|
|
462
462
|
mixedColors = true;
|
|
463
463
|
}
|
|
464
464
|
}
|
|
@@ -25,10 +25,16 @@ std::vector<ColoredBody> generateBackground(Evaluator&, const CSGParams&,
|
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
// Only the ordinary bodies are re-tagged. A `#` or `%` inside the subtree
|
|
29
|
+
// keeps its own look, as in OpenSCAD -- and a `#` operand's drawing-only
|
|
30
|
+
// copy (HighlightGhost) has to stay one: stamped ShowOnly, it was drawn as
|
|
31
|
+
// solid geometry, so a cut-away cylinder stood out of the part (BelfrySCAD
|
|
32
|
+
// #912).
|
|
28
33
|
std::vector<ColoredBody> generateShowOnly(Evaluator&, const CSGParams&,
|
|
29
34
|
const std::vector<std::unique_ptr<CSGNode>>& children, const oscad::ASTNode&) {
|
|
30
35
|
std::vector<ColoredBody> result = flattenCsgTree(children);
|
|
31
|
-
for (ColoredBody& b : result)
|
|
36
|
+
for (ColoredBody& b : result)
|
|
37
|
+
if (b.role == BodyRole::Normal) b.role = BodyRole::ShowOnly;
|
|
32
38
|
return result;
|
|
33
39
|
}
|
|
34
40
|
|
|
@@ -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(
|
|
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;
|
|
@@ -335,7 +335,10 @@ std::vector<ColoredBody> Evaluator::evaluateImpl(const NodeList& nodes, EvalCont
|
|
|
335
335
|
if (anyShowOnly) {
|
|
336
336
|
std::vector<ColoredBody> filtered;
|
|
337
337
|
for (ColoredBody& b : result) {
|
|
338
|
-
|
|
338
|
+
// rerootAtShowOnly already dropped everything outside the `!`;
|
|
339
|
+
// what is left is its subtree, `%` and `#` bodies included.
|
|
340
|
+
if (b.role == BodyRole::ShowOnly || b.role == BodyRole::Highlight ||
|
|
341
|
+
b.role == BodyRole::HighlightGhost || b.role == BodyRole::Background)
|
|
339
342
|
filtered.push_back(std::move(b));
|
|
340
343
|
}
|
|
341
344
|
return filtered;
|
|
@@ -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));
|
|
@@ -336,6 +336,38 @@ TEST(Modifiers, MoreThanOneShowOnlyTakesTheFirstAndWarns) {
|
|
|
336
336
|
})) << "no warning in: " << (echoed.empty() ? "(nothing)" : echoed.front());
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
+
// BelfrySCAD #912: a `#` operand inside a `!` subtree. The cut still
|
|
340
|
+
// happens, and the operand's drawing-only copy stays a HighlightGhost --
|
|
341
|
+
// stamped ShowOnly, it was drawn as solid, standing out of the part.
|
|
342
|
+
TEST(Modifiers, ShowOnlyKeepsAHighlightedOperandsGhost) {
|
|
343
|
+
Evaluated e = evaluateSrc(
|
|
344
|
+
"module M() difference() { cube(10); translate([5,5,-5]) #cylinder(h=20, r=2, $fn=16); }\n"
|
|
345
|
+
"!M();");
|
|
346
|
+
ASSERT_EQ(e.bodies.size(), 2u);
|
|
347
|
+
const auto solid = std::find_if(e.bodies.begin(), e.bodies.end(),
|
|
348
|
+
[](const ColoredBody& b) { return b.role == BodyRole::ShowOnly; });
|
|
349
|
+
const auto ghost = std::find_if(e.bodies.begin(), e.bodies.end(),
|
|
350
|
+
[](const ColoredBody& b) { return b.role == BodyRole::HighlightGhost; });
|
|
351
|
+
ASSERT_NE(solid, e.bodies.end());
|
|
352
|
+
ASSERT_NE(ghost, e.bodies.end());
|
|
353
|
+
EXPECT_LT(solid->body->Volume(), 1000.0 - 40.0) << "the cylinder was not cut away";
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// As in OpenSCAD: inside the `!`, `%` and `#` keep their looks; outside it,
|
|
357
|
+
// nothing survives.
|
|
358
|
+
TEST(Modifiers, ShowOnlyKeepsBackgroundAndHighlightInsideIt) {
|
|
359
|
+
Evaluated e = evaluateSrc(
|
|
360
|
+
"!union() { cube(10); %translate([15,0,0]) cube(10); #translate([0,15,0]) cube(10); }\n"
|
|
361
|
+
"translate([-20,0,0]) cube(5);");
|
|
362
|
+
std::vector<BodyRole> roles;
|
|
363
|
+
for (const ColoredBody& b : e.bodies) roles.push_back(b.role);
|
|
364
|
+
EXPECT_EQ(std::count(roles.begin(), roles.end(), BodyRole::Background), 1);
|
|
365
|
+
// A `#` union operand is merged into the solid and drawn by its red copy.
|
|
366
|
+
EXPECT_EQ(std::count(roles.begin(), roles.end(), BodyRole::HighlightGhost), 1);
|
|
367
|
+
EXPECT_EQ(std::count(roles.begin(), roles.end(), BodyRole::ShowOnly), 1);
|
|
368
|
+
EXPECT_EQ(e.bodies.size(), 3u) << "the cube outside the ! survived";
|
|
369
|
+
}
|
|
370
|
+
|
|
339
371
|
TEST(Modifiers, NoShowOnlyMeansAllRolesPassThrough) {
|
|
340
372
|
Evaluated e = evaluateSrc("%cube(1); cube(2);");
|
|
341
373
|
EXPECT_EQ(e.bodies.size(), 2u);
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/tests/test_multi_color_merge.cpp
RENAMED
|
@@ -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,
|
|
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
|
}
|
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/.github/workflows/wheels.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/examples/minimal_debugger.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/external/openscad_cpp_parser/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.49.7 → openscad_cpp_evaluator-1.49.9}/src/builtins/primitives_3d.cpp
RENAMED
|
File without changes
|