openscad-cpp-evaluator 1.43.0__tar.gz → 1.44.0__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.43.0 → openscad_cpp_evaluator-1.44.0}/CLAUDE.md +21 -5
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/bytecode.hpp +9 -16
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -9
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/format_closure.hpp +4 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/builtins.hpp +5 -11
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/extrude.cpp +1 -3
- openscad_cpp_evaluator-1.44.0/src/builtins/roof.cpp +1162 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/text.cpp +7 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/bytecode_vm.cpp +3 -19
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/export.cpp +9 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/expr_eval.cpp +3 -3
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/format_closure.cpp +2 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/stmt_eval.cpp +2 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/user_calls.cpp +7 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/value.cpp +5 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_bytecode_compiler.cpp +19 -19
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_control_flow.cpp +3 -3
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_csg_tree.cpp +2 -2
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_expr_eval.cpp +2 -2
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_extrude_roof.cpp +151 -8
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_openscad_parity.cpp +31 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_python_bindings.py +14 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_use.cpp +1 -1
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_value.cpp +6 -7
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/uv.lock +1 -1
- openscad_cpp_evaluator-1.43.0/src/builtins/roof.cpp +0 -485
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/README.md +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/cmake/patch_manifold.cmake +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/LICENSE +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope_table.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/.DS_Store +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_concurrent_parse.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_strict_commas.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/coverage.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/utf8.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/resources/fonts/LiberationSans-Bold.ttf +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/resources/fonts/LiberationSans-BoldItalic.ttf +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/resources/fonts/LiberationSans-Italic.ttf +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/import/scene_import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/utf8.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/xkcd_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/xkcd_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_discretizer.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_include_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_profile_time.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_undef_args.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-1.43.0 → openscad_cpp_evaluator-1.44.0}/tools/cli/main.cpp +0 -0
|
@@ -211,8 +211,23 @@ Challenges and Experiences"), `roof.cpp` was rewritten from scratch as a close p
|
|
|
211
211
|
`roof_vd.cc`'s `voronoi_diagram_roof`/`vd_inner_faces`/`discretize_arc` (CGAL/Eigen/Clipper2Lib
|
|
212
212
|
swapped for `manifold::vec2` arithmetic and `manifold::Triangulate`), on top of Boost.Polygon's
|
|
213
213
|
Voronoi builder (fetched as just `boostorg/polygon` + `boostorg/config`, confirmed to need nothing
|
|
214
|
-
else from Boost).
|
|
215
|
-
|
|
214
|
+
else from Boost). **`method="straight"` is its own construction** (`StraightSkeletonRoof` in
|
|
215
|
+
`roof.cpp`), a true straight-skeleton roof written from the literature (Aichholzer et al. 1995;
|
|
216
|
+
Felkel & Obdržálek 1998's event-driven wavefront) and the reference binary's black-box output --
|
|
217
|
+
no CGAL, and no OpenSCAD roof source read. It simulates the shrinking wavefront event by event
|
|
218
|
+
(edge, split and vertex events; a vertex event reconnects every wavefront edge at the meeting point
|
|
219
|
+
by angle), O(n^2 log n): 5000 vertices in ~0.5 s. Its input is welded first (`weldContours`: corners
|
|
220
|
+
within 2^-19 of the extent snapped together or onto edges, then a Clipper2 union), because a 2D
|
|
221
|
+
union often hands back pieces sharing an edge as separate outlines a hairline apart, and spikes
|
|
222
|
+
are cut away (`dropSpikes`). It matches OpenSCAD 2026.02.01 (`--enable=roof`) in volume, height and
|
|
223
|
+
vertex set on every shape compared that the reference does not crash on -- the reference segfaults
|
|
224
|
+
on many unions of rectangles/triangles that touch along edges, so those were checked only for being
|
|
225
|
+
valid 45-degree roofs (roof area = floor area x sqrt 2). Until this landed both methods built the
|
|
226
|
+
Voronoi roof, wrong for any concave outline. **Warnings**: `$fs`/`$fa` clamping (via the shared
|
|
227
|
+
`Discretizer::fromCtx`) and `Unknown roof method '...'` (a non-string shown as str() shows it) are
|
|
228
|
+
printed BEFORE the children run, as the reference does -- `computeRoofParams` therefore runs at
|
|
229
|
+
`Op::PushBuiltinWrap` time like every other wrap kind (it used to be deferred to Pop on the belief
|
|
230
|
+
that the warning followed the children). **Verified independently**, not just "it compiles": a brute-force
|
|
216
231
|
distance-transform grid search over a square-frame-with-a-hole test case found the same ridge height
|
|
217
232
|
(≈1.756) this implementation produces — the Python reference's own SDF fallback gets this case
|
|
218
233
|
measurably wrong (≈1.5, ~15% low) since it was never more than a documented approximation for
|
|
@@ -1115,9 +1130,10 @@ grep for `ponytail:`.
|
|
|
1115
1130
|
`toCrossSection`; no children/generate-time-bounds dependency, so its resolve/generate split is
|
|
1116
1131
|
the simple kind (segment count for `r=` IS resolvable early here, unlike `rotate_extrude`'s,
|
|
1117
1132
|
since `offset`'s own radius argument is already known at resolve time).
|
|
1118
|
-
- `src/builtins/roof.cpp` — `roof()
|
|
1119
|
-
`roof()` note above for the full story of why this replaced an
|
|
1120
|
-
approximation mid-Phase-6)
|
|
1133
|
+
- `src/builtins/roof.cpp` — `roof()`: the default `method="voronoi"` built on Boost.Polygon's
|
|
1134
|
+
segment Voronoi diagram (see the `roof()` note above for the full story of why this replaced an
|
|
1135
|
+
earlier straight-skeleton approximation mid-Phase-6), and `method="straight"`'s straight-skeleton
|
|
1136
|
+
wavefront simulation (`StraightSkeletonRoof`, same note). `voronoiRoof` scales the merged cross-section's polygons into signed
|
|
1121
1137
|
32-bit integer coordinates (`chooseScale`, headroom below 2^31 for Boost.Polygon's own internal
|
|
1122
1138
|
robustness margin), constructs the Voronoi diagram over the resulting segments, walks it
|
|
1123
1139
|
(`vdInnerFaces`, discretizing parabolic point-vs-segment bisector edges via `discretizeArc`) to get
|
|
@@ -287,14 +287,13 @@ enum class Op {
|
|
|
287
287
|
// this AFTER would silently drop uncacheable/ManifoldCache taint
|
|
288
288
|
// tracking for a rands() call embedded in the wrapper's own
|
|
289
289
|
// arguments), computes this site's own params for every kind except
|
|
290
|
-
// Modifier (empty, no ctx push)
|
|
291
|
-
// BuiltinWrapSite's own doc comment) via that kind's own native
|
|
290
|
+
// Modifier (empty, no ctx push) via that kind's own native
|
|
292
291
|
// compute function (computeTransformParams/computeColorParams/etc.,
|
|
293
292
|
// builtins.hpp) -- always a possibly-$-scoped child EvalContext,
|
|
294
293
|
// pushed onto f.ctxChain unconditionally for every non-Modifier kind
|
|
295
|
-
//
|
|
296
|
-
// frame, and stashes {params, randsBefore, siteIdx
|
|
297
|
-
//
|
|
294
|
+
// -- pushes a fresh ev.treeStack_
|
|
295
|
+
// frame, and stashes {params, randsBefore, siteIdx} onto
|
|
296
|
+
// VmFrame::builtinWrapStack (a real per-frame LIFO
|
|
298
297
|
// stack, not a single slot: Push/PopBuiltinWrap pairs can nest or
|
|
299
298
|
// sequence within one frame's own instruction stream, e.g.
|
|
300
299
|
// `translate(a) translate(b) recur();`). The compiler always emits a
|
|
@@ -311,12 +310,7 @@ enum class Op {
|
|
|
311
310
|
// VmFrame::builtinWrapStack's own top entry FIRST (before anything
|
|
312
311
|
// that can itself throw, e.g. Evaluator::setTreeDepthOrThrow below --
|
|
313
312
|
// so the exception-teardown path's own pending count is already
|
|
314
|
-
// correct if THIS throws);
|
|
315
|
-
// HERE via computeRoofParams(ev, pending.deferredArgs, ctx) -- the one
|
|
316
|
-
// kind whose params computation has an observable side effect
|
|
317
|
-
// (ev.warn()) that must stay ordered AFTER children, unlike every
|
|
318
|
-
// other kind's params (computed at Push, before children, since
|
|
319
|
-
// nothing else in this group has an order-sensitive side effect); pops
|
|
313
|
+
// correct if THIS throws); pops
|
|
320
314
|
// the ctx Push made (every kind except Modifier); pops ev.treeStack_
|
|
321
315
|
// to retrieve the children this bracket's own body produced, and
|
|
322
316
|
// builds the tagged CSGNode exactly like Evaluator::buildTreeNode's
|
|
@@ -956,10 +950,9 @@ struct CompiledChunk {
|
|
|
956
950
|
// rotate_extrude()/projection()/offset()/roof()) share Transform/
|
|
957
951
|
// Color's exact push-time-computed-params shape, just via a different
|
|
958
952
|
// native compute function each (Op::PushBuiltinWrap's own runtime
|
|
959
|
-
// handler switches on `kind` to pick it)
|
|
960
|
-
//
|
|
961
|
-
//
|
|
962
|
-
// observable warn() ordering).
|
|
953
|
+
// handler switches on `kind` to pick it). Roof's warnings ($fs/$fa
|
|
954
|
+
// clamping, unknown method) therefore come before its children's
|
|
955
|
+
// output, as in OpenSCAD 2026.02.01.
|
|
963
956
|
struct BuiltinWrapSite {
|
|
964
957
|
enum class Kind {
|
|
965
958
|
Transform,
|
|
@@ -977,7 +970,7 @@ struct CompiledChunk {
|
|
|
977
970
|
RotateExtrude,
|
|
978
971
|
Projection,
|
|
979
972
|
Offset,
|
|
980
|
-
Roof,
|
|
973
|
+
Roof,
|
|
981
974
|
};
|
|
982
975
|
Kind kind;
|
|
983
976
|
std::string tagName; // "translate"/"rotate"/.../"color"/"highlight"/"background"/"show_only"/"hull"/...
|
|
@@ -30,15 +30,6 @@ struct PendingBuiltinWrap {
|
|
|
30
30
|
CSGParams params;
|
|
31
31
|
std::uint64_t randsBefore = 0;
|
|
32
32
|
int siteIdx = -1;
|
|
33
|
-
// Only populated for BuiltinWrapSite::Kind::Roof -- the already-
|
|
34
|
-
// resolved call arguments, retained across the whole bracket so
|
|
35
|
-
// Op::PopBuiltinWrap's handler can compute roof()'s own params AFTER
|
|
36
|
-
// children finish (computeRoofParams needs them; re-running
|
|
37
|
-
// resolveCallArgs at Pop time instead would re-evaluate every argument
|
|
38
|
-
// expression a second time -- double rands()/side effects). Every
|
|
39
|
-
// other kind computes its params at Push time and leaves this default-
|
|
40
|
-
// empty.
|
|
41
|
-
CallArgs deferredArgs;
|
|
42
33
|
|
|
43
34
|
// ev.measuring_ as it stood immediately BEFORE this bracket opened.
|
|
44
35
|
// Recorded for EVERY kind, not just Measure, so the exception teardown
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
#include <string>
|
|
4
4
|
|
|
5
5
|
namespace oscad {
|
|
6
|
+
class ASTNode;
|
|
6
7
|
class FunctionLiteral;
|
|
7
8
|
}
|
|
8
9
|
|
|
@@ -16,5 +17,8 @@ namespace oscadeval {
|
|
|
16
17
|
// precedence-minimal and which 94 places inside the parser depend on. See
|
|
17
18
|
// format_closure.cpp for where each rule came from.
|
|
18
19
|
std::string formatFunctionLiteral(const oscad::FunctionLiteral& fn);
|
|
20
|
+
// Any expression, spelled the same way: what assert() quotes as its
|
|
21
|
+
// condition ("Assertion '(a > 1)' failed").
|
|
22
|
+
std::string formatExpression(const oscad::ASTNode& expr);
|
|
19
23
|
|
|
20
24
|
} // namespace oscadeval
|
|
@@ -246,17 +246,11 @@ CSGParams resolveOffset(Evaluator& ev, const oscad::ModularCall& node, EvalConte
|
|
|
246
246
|
std::vector<ColoredBody> generateOffset(Evaluator& ev, const CSGParams& params,
|
|
247
247
|
const std::vector<std::unique_ptr<CSGNode>>& children, const oscad::ASTNode& node);
|
|
248
248
|
|
|
249
|
-
// roof() -- roof.cpp.
|
|
250
|
-
//
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
|
|
254
|
-
// this is the params-computation half taken from AFTER evalChildren (it
|
|
255
|
-
// calls ev.warn(), an observable side effect that must stay ordered after
|
|
256
|
-
// any child's own echo/warn output) -- takes already-resolved CallArgs,
|
|
257
|
-
// not a raw node+ctx, since Op::PushBuiltinWrap's own runtime handler
|
|
258
|
-
// calls this at POP time. See its own doc comment (roof.cpp).
|
|
259
|
-
CSGParams computeRoofParams(Evaluator& ev, const CallArgs& args, EvalContext& effCtx);
|
|
249
|
+
// roof() -- roof.cpp. method="voronoi" (the default) is the Voronoi-diagram
|
|
250
|
+
// roof, method="straight" the straight-skeleton one.
|
|
251
|
+
// computeRoofParams: the params half, from already-resolved arguments;
|
|
252
|
+
// it warns ($fs/$fa clamping, unknown method), before the children run.
|
|
253
|
+
CSGParams computeRoofParams(Evaluator& ev, const CallArgs& args, EvalContext& effCtx, const oscad::Position* where);
|
|
260
254
|
CSGParams resolveRoof(Evaluator& ev, const oscad::ModularCall& node, EvalContext& ctx);
|
|
261
255
|
std::vector<ColoredBody> generateRoof(Evaluator& ev, const CSGParams& params,
|
|
262
256
|
const std::vector<std::unique_ptr<CSGNode>>& children, const oscad::ASTNode& node);
|
|
@@ -27,9 +27,7 @@ namespace oscadeval {
|
|
|
27
27
|
// side effect of its own (no warn()/echo()/rands() call), so moving it
|
|
28
28
|
// before evalChildren (unlike this function's own former single-body
|
|
29
29
|
// shape, which computed params AFTER children like every other builtin
|
|
30
|
-
// still not covered by PushBuiltinWrap) is behaviorally unobservable
|
|
31
|
-
// see computeRoofParams's own doc comment (roof.cpp) for the one builtin
|
|
32
|
-
// in this group where that ISN'T true and a different split was needed.
|
|
30
|
+
// still not covered by PushBuiltinWrap) is behaviorally unobservable.
|
|
33
31
|
namespace {
|
|
34
32
|
|
|
35
33
|
// Picks the diagonal that splits one side quad: true for A0-B1, false for
|