├── .clang-format ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md ├── scripts │ ├── build-macos.sh │ ├── build-snap.sh │ ├── build-ubuntu.sh │ ├── build-windows.sh │ ├── install-macos.sh │ ├── install-snap.sh │ ├── install-ubuntu.sh │ ├── install-windows.sh │ └── sign-macos.sh └── workflows │ ├── cd.yml │ ├── python.yml │ ├── source-tarball.yml │ └── test.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── CMakeLists.txt ├── CONTRIBUTING.md ├── COPYING.txt ├── README.md ├── THIRD_PARTIES.txt ├── bench ├── CMakeLists.txt └── harness.cpp ├── cmake ├── AddVendoredSubdirectory.cmake ├── DisableWarnings.cmake ├── FindCairo.cmake ├── FindSpaceWare.cmake ├── FindVendoredPackage.cmake ├── GetGitCommitHash.cmake ├── MacOSXBundleInfo.plist.in ├── Platform │ └── Emscripten.cmake ├── Toolchain-emscripten.cmake ├── Toolchain-mingw32.cmake ├── Toolchain-mingw64.cmake ├── c_flag_overrides.cmake ├── cxx_flag_overrides.cmake └── libpng-macos-arm64.patch ├── cython ├── .gitignore ├── MANIFEST.in ├── README.md ├── platform │ ├── cygwinccompiler.diff │ ├── pyconfig.diff │ └── set_pycompiler.bat ├── pyproject.toml ├── python_solvespace │ ├── __init__.pxd │ ├── __init__.py │ ├── py.typed │ ├── slvs.pxd │ ├── slvs.pyi │ └── slvs.pyx ├── setup.cfg ├── setup.py └── test │ ├── __init__.py │ ├── __main__.py │ └── test_slvs.py ├── developer_docs ├── IdLists_Entities_and_Remap.txt └── Solver_Transforms.txt ├── exposed ├── CDemo.c ├── CMakeLists.txt ├── DOC.txt └── VbDemo.vb ├── extlib └── si │ ├── si.h │ ├── siSync.h │ ├── siSyncPriv.h │ ├── siapp.h │ ├── siapp.lib │ ├── spwdata.h │ ├── spwerror.h │ └── spwmacro.h ├── include └── slvs.h ├── pkg ├── flatpak │ ├── .gitignore │ ├── build.sh │ └── com.solvespace.SolveSpace.json └── snap │ ├── .gitignore │ ├── build.sh │ └── snap │ └── snapcraft.yaml ├── res ├── CMakeLists.txt ├── banner.txt ├── cocoa │ ├── AppIcon.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png │ ├── MainMenu.xib │ └── SaveFormatAccessory.xib ├── fonts │ ├── BitstreamVeraSans-Roman-builtin.ttf │ ├── private │ │ ├── 0-check-false.png │ │ ├── 1-check-true.png │ │ ├── 2-radio-false.png │ │ ├── 3-radio-true.png │ │ ├── 4-stipple-dot.png │ │ ├── 5-stipple-dash-long.png │ │ ├── 6-stipple-dash.png │ │ └── 7-stipple-zigzag.png │ ├── unicode.lff.gz │ └── unifont.hex.gz ├── freedesktop │ ├── com.solvespace.SolveSpace.metainfo.xml.in │ ├── solvespace-16x16.png │ ├── solvespace-24x24.png │ ├── solvespace-32x32.png │ ├── solvespace-48x48.png │ ├── solvespace-flatpak-mime.xml │ ├── solvespace-flatpak.desktop.in │ ├── solvespace-mime.xml │ ├── solvespace-scalable.svg │ ├── solvespace-snap.desktop │ └── solvespace.desktop.in ├── icons │ ├── graphics-window │ │ ├── angle.png │ │ ├── arc.png │ │ ├── assemble.png │ │ ├── bezier.png │ │ ├── circle.png │ │ ├── construction.png │ │ ├── equal.png │ │ ├── extrude.png │ │ ├── helix.png │ │ ├── horiz.png │ │ ├── image.png │ │ ├── in3d.png │ │ ├── lathe.png │ │ ├── length.png │ │ ├── line.png │ │ ├── ontoworkplane.png │ │ ├── other-supp.png │ │ ├── parallel.png │ │ ├── perpendicular.png │ │ ├── point.png │ │ ├── pointonx.png │ │ ├── rectangle.png │ │ ├── ref.png │ │ ├── revolve.png │ │ ├── same-orientation.png │ │ ├── sketch-in-3d.png │ │ ├── sketch-in-plane.png │ │ ├── step-rotate.png │ │ ├── step-translate.png │ │ ├── symmetric.png │ │ ├── tangent-arc.png │ │ ├── text.png │ │ ├── trim.png │ │ └── vert.png │ └── text-window │ │ ├── constraint.png │ │ ├── construction.png │ │ ├── edges.png │ │ ├── faces.png │ │ ├── mesh.png │ │ ├── normal.png │ │ ├── occluded-invisible.png │ │ ├── occluded-stippled.png │ │ ├── occluded-visible.png │ │ ├── outlines.png │ │ ├── point.png │ │ ├── shaded.png │ │ └── workplane.png ├── locales.txt ├── locales │ ├── cs_CZ.po │ ├── de_DE.po │ ├── en_US.po │ ├── es_AR.po │ ├── fr_FR.po │ ├── ja_JP.po │ ├── ru_RU.po │ ├── tr_TR.po │ ├── uk_UA.po │ └── zh_CN.po ├── messages.pot ├── shaders │ ├── edge.frag │ ├── edge.vert │ ├── imesh.frag │ ├── imesh.vert │ ├── imesh_point.frag │ ├── imesh_point.vert │ ├── imesh_tex.frag │ ├── imesh_tex.vert │ ├── imesh_texa.frag │ ├── mesh.frag │ ├── mesh.vert │ ├── mesh_fill.frag │ ├── mesh_fill.vert │ └── outline.vert ├── threejs │ ├── SolveSpaceControls.js │ ├── hammer-2.0.8.js.gz │ └── three-r111.min.js.gz └── win32 │ ├── icon.ico │ ├── manifest.xml │ └── versioninfo.rc.in ├── src ├── CMakeLists.txt ├── bsp.cpp ├── clipboard.cpp ├── config.h.in ├── confscreen.cpp ├── constraint.cpp ├── constrainteq.cpp ├── describescreen.cpp ├── draw.cpp ├── drawconstraint.cpp ├── drawentity.cpp ├── dsc.h ├── entity.cpp ├── export.cpp ├── exportstep.cpp ├── exportvector.cpp ├── expr.cpp ├── expr.h ├── file.cpp ├── generate.cpp ├── graphicswin.cpp ├── group.cpp ├── groupmesh.cpp ├── importdxf.cpp ├── importidf.cpp ├── importmesh.cpp ├── lib.cpp ├── mesh.cpp ├── modify.cpp ├── mouse.cpp ├── platform │ ├── entrycli.cpp │ ├── entrygui.cpp │ ├── gui.cpp │ ├── gui.h │ ├── guigtk.cpp │ ├── guihtml.cpp │ ├── guimac.mm │ ├── guinone.cpp │ ├── guiwin.cpp │ ├── html │ │ ├── emshell.html │ │ ├── filemanagerui.js │ │ ├── solvespaceui.css │ │ └── solvespaceui.js │ ├── platform.cpp │ └── platform.h ├── polygon.cpp ├── polygon.h ├── polyline.cpp ├── render │ ├── gl3shader.cpp │ ├── gl3shader.h │ ├── render.cpp │ ├── render.h │ ├── render2d.cpp │ ├── rendercairo.cpp │ ├── rendergl1.cpp │ └── rendergl3.cpp ├── request.cpp ├── resource.cpp ├── resource.h ├── sketch.h ├── solvespace.cpp ├── solvespace.h ├── srf │ ├── boolean.cpp │ ├── curve.cpp │ ├── merge.cpp │ ├── ratpoly.cpp │ ├── raycast.cpp │ ├── shell.cpp │ ├── surface.cpp │ ├── surface.h │ ├── surfinter.cpp │ └── triangulate.cpp ├── style.cpp ├── system.cpp ├── textscreens.cpp ├── textwin.cpp ├── toolbar.cpp ├── ttf.cpp ├── ttf.h ├── ui.h ├── undoredo.cpp ├── util.cpp └── view.cpp ├── test ├── CMakeLists.txt ├── Gentium-R.ttf ├── analysis │ └── contour_area │ │ ├── normal.png │ │ ├── normal.slvs │ │ └── test.cpp ├── commit.sh ├── constraint │ ├── angle │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_free_in_3d.png │ │ ├── reference_free_in_3d.slvs │ │ ├── reference_free_in_3d_v20.slvs │ │ ├── reference_free_in_3d_v22.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ ├── skew.png │ │ ├── skew.slvs │ │ ├── skew_v22.slvs │ │ └── test.cpp │ ├── arc_line_tangent │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── at_midpoint │ │ ├── line_plane_free_in_3d.png │ │ ├── line_plane_free_in_3d.slvs │ │ ├── line_plane_free_in_3d_v20.slvs │ │ ├── line_plane_free_in_3d_v22.slvs │ │ ├── line_plane_normal.png │ │ ├── line_plane_normal.slvs │ │ ├── line_plane_normal_v20.slvs │ │ ├── line_plane_normal_v22.slvs │ │ ├── line_pt_free_in_3d.png │ │ ├── line_pt_free_in_3d.slvs │ │ ├── line_pt_free_in_3d_v20.slvs │ │ ├── line_pt_free_in_3d_v22.slvs │ │ ├── line_pt_normal.png │ │ ├── line_pt_normal.slvs │ │ ├── line_pt_normal_v20.slvs │ │ ├── line_pt_normal_v22.slvs │ │ └── test.cpp │ ├── comment │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── cubic_line_tangent │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── curve_curve_tangent │ │ ├── arc_arc.png │ │ ├── arc_arc.slvs │ │ ├── arc_arc_v20.slvs │ │ ├── arc_arc_v22.slvs │ │ ├── arc_cubic.png │ │ ├── arc_cubic.slvs │ │ ├── arc_cubic_v20.slvs │ │ ├── arc_cubic_v22.slvs │ │ └── test.cpp │ ├── diameter │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── eq_len_pt_line_d │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── eq_pt_ln_distances │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── equal_angle │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_old_version.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── other.png │ │ ├── other.slvs │ │ ├── other_v20.slvs │ │ ├── other_v22.slvs │ │ └── test.cpp │ ├── equal_length_lines │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── equal_line_arc_len │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── pi.png │ │ ├── pi.slvs │ │ ├── tau.png │ │ ├── tau.slvs │ │ └── test.cpp │ ├── equal_radius │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── horizontal │ │ ├── line.png │ │ ├── line.slvs │ │ ├── line_v20.slvs │ │ ├── line_v22.slvs │ │ ├── pt_pt.png │ │ ├── pt_pt.slvs │ │ ├── pt_pt_v20.slvs │ │ ├── pt_pt_v22.slvs │ │ └── test.cpp │ ├── length_difference │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── length_ratio │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── parallel │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── perpendicular │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── points_coincident │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── proj_pt_distance │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── pt_face_distance │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── pt_in_plane │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── pt_line_distance │ │ ├── extended.png │ │ ├── extended.slvs │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── pt_on_circle │ │ ├── negative_dia.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── pt_on_face │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── pt_on_line │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── left_free_in_3d.png │ │ ├── left_free_in_3d.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── right_free_in_3d.png │ │ ├── right_free_in_3d.slvs │ │ └── test.cpp │ ├── pt_plane_distance │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── pt_pt_distance │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── reference.png │ │ ├── reference.slvs │ │ ├── reference_v20.slvs │ │ ├── reference_v22.slvs │ │ └── test.cpp │ ├── same_orientation │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── same_group.png │ │ ├── same_group.slvs │ │ └── test.cpp │ ├── symmetric │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── symmetric_horiz │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── symmetric_line │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── symmetric_vert │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ ├── vertical │ │ ├── line.png │ │ ├── line.slvs │ │ ├── line_v20.slvs │ │ ├── line_v22.slvs │ │ ├── pt_pt.png │ │ ├── pt_pt.slvs │ │ ├── pt_pt_v20.slvs │ │ ├── pt_pt_v22.slvs │ │ └── test.cpp │ └── where_dragged │ │ ├── free_in_3d.png │ │ ├── free_in_3d.slvs │ │ ├── free_in_3d_v20.slvs │ │ ├── free_in_3d_v22.slvs │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp ├── core │ ├── expr │ │ └── test.cpp │ ├── locale │ │ └── test.cpp │ └── path │ │ └── test.cpp ├── debugtool.cpp ├── group │ ├── link │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v20.slvs │ │ ├── normal_v22.slvs │ │ ├── rect_v20.slvs │ │ └── test.cpp │ ├── translate_asy │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp │ └── translate_nd │ │ ├── normal.png │ │ ├── normal.slvs │ │ ├── normal_v22.slvs │ │ └── test.cpp ├── harness.cpp ├── harness.h └── request │ ├── arc_of_circle │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── circle │ ├── free_in_3d.png │ ├── free_in_3d.slvs │ ├── free_in_3d_dof.png │ ├── free_in_3d_v20.slvs │ ├── free_in_3d_v22.slvs │ ├── normal.png │ ├── normal.slvs │ ├── normal_dof.png │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── cubic │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── cubic_periodic │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── datum_point │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── image │ ├── drawing.png │ ├── linked.png │ ├── linked.slvs │ ├── normal.png │ ├── normal.slvs │ └── test.cpp │ ├── line_segment │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ ├── ttf_text │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp │ └── workplane │ ├── normal.png │ ├── normal.slvs │ ├── normal_v20.slvs │ ├── normal_v22.slvs │ └── test.cpp └── wishlist.txt /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | # Things explicitly enumerated in CONTRIBUTING.md 3 | IndentWidth: 4 4 | UseTab: Never 5 | SpaceBeforeParens: Never 6 | BreakBeforeBraces: Attach 7 | ColumnLimit: 100 8 | # Docs say 100, but some places look more like 80. 9 | #ColumnLimit: 80 10 | 11 | # Based on minimizing diff when applying clang-format 12 | AccessModifierOffset: -4 13 | AlignConsecutiveAssignments: true 14 | AlignEscapedNewlines: DontAlign 15 | AllowShortBlocksOnASingleLine: false 16 | AllowShortCaseLabelsOnASingleLine: true 17 | AllowShortLoopsOnASingleLine: false 18 | AlwaysBreakTemplateDeclarations: Yes # MultiLine 19 | BreakConstructorInitializers: BeforeColon 20 | DerivePointerAlignment: true 21 | FixNamespaceComments: true 22 | IndentPPDirectives: AfterHash 23 | MaxEmptyLinesToKeep: 2 24 | NamespaceIndentation: Inner 25 | SpaceAfterTemplateKeyword: false 26 | 27 | # No way to remove all space around operators as seen in much of the code I looked at. 28 | #SpaceBeforeAssignmentOperators: false 29 | 30 | # Only seen some of the time (mostly just variables, not functions) 31 | # but clang-format only has a true/false 32 | #AlignConsecutiveDeclarations: true 33 | 34 | 35 | # Would be nice to turn on eventually, maybe? 36 | SortIncludes: false 37 | SortUsingDeclarations: false 38 | 39 | # Hard to tell what the desired config here was. 40 | # AllowShortFunctionsOnASingleLine: Inline 41 | AllowShortFunctionsOnASingleLine: None 42 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.cpp text 3 | *.h text 4 | *.txt text 5 | *.gz binary 6 | *.ico binary 7 | *.jpg binary 8 | *.lib binary 9 | *.png binary 10 | *.slvs binary 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### System information 2 | 3 | - **SolveSpace version:** 4 | - **Operating system:** 5 | 6 | ### Expected behavior 7 | 8 | 9 | 10 | ### Actual behavior 11 | 12 | 13 | 14 | ### Additional information 15 | 16 | 18 | -------------------------------------------------------------------------------- /.github/scripts/build-macos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | ENABLE_SANITIZERS="OFF" 4 | if [ "$1" = "release" ]; then 5 | BUILD_TYPE="RelWithDebInfo" 6 | ENABLE_LTO="ON" 7 | else 8 | BUILD_TYPE="Debug" 9 | ENABLE_LTO="OFF" 10 | fi 11 | 12 | # this is an option for our Github CI only, since it doesn't have a macos arm64 image yet 13 | CMAKE_GENERATOR="Unix Makefiles" 14 | CMAKE_PREFIX_PATH="" 15 | if [ "$2" = "arm64" ]; then 16 | OSX_ARCHITECTURE="arm64" 17 | CMAKE_PREFIX_PATH=$(find /tmp/libomp-arm64/libomp -depth 1) 18 | git apply cmake/libpng-macos-arm64.patch || echo "Could not apply patch, probably already patched..." 19 | mkdir build-arm64 || true 20 | cd build-arm64 21 | elif [ "$2" = "x86_64" ]; then 22 | OSX_ARCHITECTURE="x86_64" 23 | CMAKE_PREFIX_PATH=$(find /tmp/libomp-x86_64/libomp -depth 1) 24 | mkdir build || true 25 | cd build 26 | else 27 | mkdir build || true 28 | cd build 29 | fi 30 | 31 | if [ "$3" = "xcode" ]; then 32 | CMAKE_GENERATOR="Xcode" 33 | fi 34 | 35 | cmake \ 36 | -G "${CMAKE_GENERATOR}" \ 37 | -D CMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ 38 | -D CMAKE_OSX_ARCHITECTURES="${OSX_ARCHITECTURE}" \ 39 | -D CMAKE_BUILD_TYPE="${BUILD_TYPE}" \ 40 | -D ENABLE_OPENMP="ON" \ 41 | -D ENABLE_SANITIZERS="${ENABLE_SANITIZERS}" \ 42 | -D ENABLE_LTO="${ENABLE_LTO}" \ 43 | .. 44 | 45 | if [ "$3" = "xcode" ]; then 46 | open solvespace.xcodeproj 47 | else 48 | cmake --build . --config "${BUILD_TYPE}" -j$(sysctl -n hw.logicalcpu) 49 | if [ $(uname -m) = "$2" ]; then 50 | make -j$(sysctl -n hw.logicalcpu) test_solvespace 51 | fi 52 | fi 53 | -------------------------------------------------------------------------------- /.github/scripts/build-snap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | ./pkg/snap/build.sh --use-lxd 4 | -------------------------------------------------------------------------------- /.github/scripts/build-ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | mkdir build 4 | cd build 5 | cmake \ 6 | -DCMAKE_BUILD_TYPE="Debug" \ 7 | -DENABLE_OPENMP="ON" \ 8 | -DENABLE_SANITIZERS="ON" \ 9 | .. 10 | make -j$(nproc) VERBOSE=1 11 | make test_solvespace 12 | -------------------------------------------------------------------------------- /.github/scripts/build-windows.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | mkdir build 4 | cd build 5 | 6 | if [ "$1" = "release" ]; then 7 | if [ "$2" = "openmp" ]; then 8 | ENABLE_OPENMP="ON" 9 | else 10 | ENABLE_OPENMP="OFF" 11 | fi 12 | BUILD_TYPE=RelWithDebInfo 13 | cmake \ 14 | -G "Visual Studio 16 2019" \ 15 | -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ 16 | -DENABLE_OPENMP="${ENABLE_OPENMP}" \ 17 | -DENABLE_LTO=ON \ 18 | -DCMAKE_GENERATOR_PLATFORM="Win32" \ 19 | .. 20 | else 21 | BUILD_TYPE=Debug 22 | cmake \ 23 | -G "Visual Studio 16 2019" \ 24 | -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ 25 | -DENABLE_OPENMP="ON" \ 26 | -DCMAKE_GENERATOR_PLATFORM="Win32" \ 27 | .. 28 | fi 29 | 30 | cmake --build . --config "${BUILD_TYPE}" -- -maxcpucount 31 | 32 | bin/$BUILD_TYPE/solvespace-testsuite.exe 33 | 34 | if [ "$2" = "openmp" ]; then 35 | mv bin/$BUILD_TYPE/solvespace.exe bin/$BUILD_TYPE/solvespace-openmp.exe 36 | fi 37 | -------------------------------------------------------------------------------- /.github/scripts/install-macos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | if [ "$1" = "ci" ]; then 4 | armloc=$(brew fetch --bottle-tag=arm64_big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) 5 | x64loc=$(brew fetch --bottle-tag=big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) 6 | cp $armloc /tmp/libomp-arm64.tar.gz 7 | mkdir /tmp/libomp-arm64 || true 8 | tar -xzvf /tmp/libomp-arm64.tar.gz -C /tmp/libomp-arm64 9 | cp $x64loc /tmp/libomp-x86_64.tar.gz 10 | mkdir /tmp/libomp-x86_64 || true 11 | tar -xzvf /tmp/libomp-x86_64.tar.gz -C /tmp/libomp-x86_64 12 | else 13 | brew install libomp 14 | fi 15 | 16 | git submodule update --init extlib/cairo extlib/freetype extlib/libdxfrw extlib/libpng extlib/mimalloc extlib/pixman extlib/zlib extlib/eigen 17 | -------------------------------------------------------------------------------- /.github/scripts/install-snap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | sudo /snap/bin/lxd waitready 4 | sudo /snap/bin/lxd init --auto 5 | sudo chgrp travis /var/snap/lxd/common/lxd/unix.socket 6 | mkdir -p "$TRAVIS_BUILD_DIR/snaps-cache" 7 | -------------------------------------------------------------------------------- /.github/scripts/install-ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | sudo apt-get update -qq 4 | 5 | sudo apt-get install -q -y \ 6 | zlib1g-dev libpng-dev libcairo2-dev libfreetype6-dev libjson-c-dev \ 7 | libfontconfig1-dev libgtkmm-3.0-dev libpangomm-1.4-dev libgl-dev \ 8 | libgl-dev libglu-dev libspnav-dev 9 | 10 | git submodule update --init extlib/libdxfrw extlib/mimalloc extlib/eigen 11 | -------------------------------------------------------------------------------- /.github/scripts/install-windows.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | git submodule update --init 4 | -------------------------------------------------------------------------------- /.github/workflows/python.yml: -------------------------------------------------------------------------------- 1 | name: Python 2 | 3 | on: 4 | push: 5 | branches: [ python ] 6 | tags: [ py* ] 7 | 8 | jobs: 9 | python-build: 10 | strategy: 11 | matrix: 12 | pyver: 13 | - "3.6" 14 | - "3.7" 15 | - "3.8" 16 | - "3.9" 17 | - "3.10" 18 | - "3.11" 19 | os: 20 | - ubuntu-latest 21 | - macos-latest 22 | - windows-latest 23 | runs-on: ${{ matrix.os }} 24 | env: 25 | TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }} 26 | TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }} 27 | steps: 28 | - uses: actions/checkout@v2 29 | - run: git submodule update --init extlib/mimalloc extlib/eigen 30 | - uses: actions/setup-python@v2 31 | with: 32 | python-version: ${{ matrix.pyver }} 33 | - name: Build and test 34 | working-directory: cython 35 | run: | 36 | python -m pip install -U pip setuptools wheel build 37 | python -m pip install -e . 38 | python -m unittest 39 | - name: Pack 40 | working-directory: cython 41 | run: python -m build 42 | - if: matrix.os == 'ubuntu-latest' 43 | name: Upload artifact 44 | uses: actions/upload-artifact@v2 45 | with: 46 | name: ${{ matrix.os }}-py${{ matrix.pyver }} 47 | path: cython/dist/*.tar.gz 48 | - if: matrix.os != 'ubuntu-latest' 49 | name: Upload artifact 50 | uses: actions/upload-artifact@v2 51 | with: 52 | name: ${{ matrix.os }}-py${{ matrix.pyver }} 53 | path: cython/dist/*.whl 54 | - if: startsWith(github.ref, 'refs/tags/py') 55 | run: python -m pip install twine 56 | - if: startsWith(github.ref, 'refs/tags/py') && matrix.os == 'ubuntu-latest' 57 | name: release 58 | working-directory: cython 59 | run: python -m twine upload "dist/*.tar.gz" --skip-existing 60 | - if: startsWith(github.ref, 'refs/tags/py') && matrix.os != 'ubuntu-latest' 61 | name: release 62 | working-directory: cython 63 | run: python -m twine upload "dist/*.whl" --skip-existing 64 | -------------------------------------------------------------------------------- /.github/workflows/source-tarball.yml: -------------------------------------------------------------------------------- 1 | name: Source Tarball 2 | 3 | on: 4 | release: 5 | types: 6 | - created 7 | 8 | jobs: 9 | create_tarball: 10 | name: Create & Upload Tarball 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | submodules: true 16 | fetch-depth: 0 17 | - name: Pack Tarball 18 | id: pack_tarball 19 | run: | 20 | version="${GITHUB_REF#refs/tags/v}" 21 | dir_name="solvespace-${version}" 22 | archive_name="${dir_name}.tar.xz" 23 | archive_path="${HOME}/${archive_name}" 24 | commit_sha="$GITHUB_SHA" 25 | 26 | sed -e 's/^\(include(GetGitCommitHash)\)/#\1/' \ 27 | -e 's/^# \(set(GIT_COMMIT_HASH\).*/\1 '"$commit_sha"')/' \ 28 | -i CMakeLists.txt 29 | 30 | echo "::set-output name=archive_name::${archive_name}" 31 | echo "::set-output name=archive_path::${archive_path}" 32 | 33 | cd .. 34 | tar \ 35 | --exclude-vcs \ 36 | --transform "s:^solvespace:${dir_name}:" \ 37 | -cvaf \ 38 | ${archive_path} \ 39 | solvespace 40 | - name: Get Release Upload URL 41 | id: get_upload_url 42 | env: 43 | event: ${{ toJson(github.event) }} 44 | run: | 45 | upload_url=$(echo "$event" | jq -r ".release.upload_url") 46 | echo "::set-output name=upload_url::$upload_url" 47 | echo "Upload URL: $upload_url" 48 | - name: Upload Tarball 49 | uses: actions/upload-release-asset@v1 50 | env: 51 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 52 | with: 53 | upload_url: ${{ steps.get_upload_url.outputs.upload_url }} 54 | asset_path: ${{ steps.pack_tarball.outputs.archive_path }} 55 | asset_name: ${{ steps.pack_tarball.outputs.archive_name }} 56 | asset_content_type: binary/octet-stream 57 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | push: 8 | branches-ignore: 9 | - master 10 | tags-ignore: 11 | - v* 12 | 13 | jobs: 14 | test_ubuntu: 15 | runs-on: ubuntu-18.04 16 | name: Test Ubuntu 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Install Dependencies 20 | run: .github/scripts/install-ubuntu.sh 21 | - name: Build & Test 22 | run: .github/scripts/build-ubuntu.sh 23 | 24 | test_windows: 25 | runs-on: windows-2019 26 | name: Test Windows 27 | steps: 28 | - uses: actions/checkout@v2 29 | - name: Install Dependencies 30 | run: .github/scripts/install-windows.sh 31 | shell: bash 32 | - name: Build & Test 33 | run: .github/scripts/build-windows.sh 34 | shell: bash 35 | 36 | test_macos: 37 | runs-on: macos-10.15 38 | name: Test macOS 39 | steps: 40 | - uses: actions/checkout@v2 41 | - name: Install Dependencies 42 | run: .github/scripts/install-macos.sh ci 43 | - name: Build & Test 44 | run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64 45 | 46 | test_flatpak: 47 | name: Test Flatpak x86_64 48 | runs-on: ubuntu-latest 49 | container: 50 | image: bilelmoussaoui/flatpak-github-actions:freedesktop-21.08 51 | options: --privileged 52 | steps: 53 | - uses: actions/checkout@v3 54 | with: 55 | submodules: true 56 | fetch-depth: 0 57 | - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4 58 | with: 59 | bundle: "solvespace.flatpak" 60 | manifest-path: "pkg/flatpak/com.solvespace.SolveSpace.json" 61 | cache-key: flatpak-builder-${{ github.sha }} 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /CMakeCache.txt 2 | /build*/ 3 | /test/**/*.diff.* 4 | /test/**/*.curr.* 5 | *.trace 6 | /debian/tmp/ 7 | /debian/*.log 8 | /debian/*.substvars 9 | /debian/*.debhelper 10 | /debian/files 11 | /debian/solvespace/ 12 | /debian/libslvs1/ 13 | /debian/libslvs1-dev/ 14 | /obj-*/ 15 | /*.slvs 16 | .vscode/ 17 | .idea/ 18 | 19 | # Visual Studio 20 | out/ 21 | .vs/ 22 | CMakeSettings.json 23 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "extlib/zlib"] 2 | path = extlib/zlib 3 | url = https://github.com/madler/zlib 4 | ignore = dirty 5 | [submodule "extlib/libpng"] 6 | path = extlib/libpng 7 | url = https://github.com/glennrp/libpng 8 | [submodule "extlib/freetype"] 9 | path = extlib/freetype 10 | url = https://git.savannah.nongnu.org/r/freetype/freetype2.git/ 11 | [submodule "extlib/libdxfrw"] 12 | path = extlib/libdxfrw 13 | url = https://github.com/solvespace/libdxfrw.git 14 | [submodule "extlib/pixman"] 15 | path = extlib/pixman 16 | url = https://github.com/solvespace/pixman 17 | [submodule "extlib/cairo"] 18 | path = extlib/cairo 19 | url = https://github.com/solvespace/cairo 20 | [submodule "extlib/angle"] 21 | path = extlib/angle 22 | url = https://github.com/solvespace/angle 23 | [submodule "extlib/mimalloc"] 24 | path = extlib/mimalloc 25 | url = https://github.com/microsoft/mimalloc 26 | [submodule "extlib/eigen"] 27 | path = extlib/eigen 28 | url = https://gitlab.com/libeigen/eigen.git 29 | -------------------------------------------------------------------------------- /bench/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # benchmark runner 2 | 3 | foreach(pkg_config_lib CAIRO) 4 | include_directories(${${pkg_config_lib}_INCLUDE_DIRS}) 5 | link_directories(${${pkg_config_lib}_LIBRARY_DIRS}) 6 | endforeach() 7 | 8 | add_executable(solvespace-benchmark 9 | harness.cpp 10 | $) 11 | 12 | target_link_libraries(solvespace-benchmark 13 | solvespace-core 14 | solvespace-headless) 15 | 16 | add_dependencies(solvespace-benchmark 17 | resources) 18 | -------------------------------------------------------------------------------- /cmake/AddVendoredSubdirectory.cmake: -------------------------------------------------------------------------------- 1 | # Equivalent to add_subdirectory(... EXCLUDE_FROM_ALL), but also disables 2 | # all warnings. 3 | 4 | include(DisableWarnings) 5 | 6 | function(add_vendored_subdirectory PATH) 7 | disable_warnings() 8 | 9 | add_subdirectory(${PATH} EXCLUDE_FROM_ALL) 10 | endfunction() 11 | -------------------------------------------------------------------------------- /cmake/DisableWarnings.cmake: -------------------------------------------------------------------------------- 1 | # Disables all warnings on MSVC and GNU-compatible compilers. 2 | 3 | function(disable_warnings) 4 | if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang") 5 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w" PARENT_SCOPE) 6 | elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC") 7 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W0 /MP" PARENT_SCOPE) 8 | endif() 9 | 10 | if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") 11 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w" PARENT_SCOPE) 12 | elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 13 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0 /MP" PARENT_SCOPE) 14 | endif() 15 | endfunction() 16 | -------------------------------------------------------------------------------- /cmake/FindSpaceWare.cmake: -------------------------------------------------------------------------------- 1 | # Find the libspnav library and header. 2 | # 3 | # Sets the usual variables expected for find_package scripts: 4 | # 5 | # SPACEWARE_INCLUDE_DIR - header location 6 | # SPACEWARE_LIBRARIES - library to link against 7 | # SPACEWARE_FOUND - true if libspnav was found. 8 | 9 | if(UNIX) 10 | 11 | find_path(SPACEWARE_INCLUDE_DIR 12 | spnav.h) 13 | 14 | find_library(SPACEWARE_LIBRARY 15 | NAMES spnav libspnav) 16 | 17 | # Support the REQUIRED and QUIET arguments, and set SPACEWARE_FOUND if found. 18 | include(FindPackageHandleStandardArgs) 19 | find_package_handle_standard_args(SpaceWare DEFAULT_MSG 20 | SPACEWARE_LIBRARY SPACEWARE_INCLUDE_DIR) 21 | 22 | if(SPACEWARE_FOUND) 23 | set(SPACEWARE_LIBRARIES ${SPACEWARE_LIBRARY}) 24 | endif() 25 | 26 | mark_as_advanced(SPACEWARE_LIBRARY SPACEWARE_INCLUDE_DIR) 27 | 28 | endif() 29 | -------------------------------------------------------------------------------- /cmake/FindVendoredPackage.cmake: -------------------------------------------------------------------------------- 1 | # Find the given library in the system locations, or build in-tree if not found. 2 | # 3 | # Arguments: 4 | # PKG_NAME - name of the package as passed to find_package 5 | # PKG_PATH - name of the source tree relative to extlib/ 6 | # 7 | # The rest of the arguments are VARIABLE VALUE pairs. If the library is not found, 8 | # every VARIABLE will be set to VALUE and find_package will be rerun with the REQUIRED flag. 9 | # Regardless of where the library was found, only the specified VARIABLEs that start with 10 | # ${PKG_NAME} will be set in the parent scope. 11 | # 12 | # All warnings in the in-tree package are disabled. 13 | 14 | include(DisableWarnings) 15 | 16 | function(find_vendored_package PKG_NAME PKG_PATH) 17 | if(NOT FORCE_VENDORED_${PKG_NAME}) 18 | find_package(${PKG_NAME}) 19 | endif() 20 | 21 | set(cfg_name) 22 | foreach(item ${ARGN}) 23 | if(NOT cfg_name) 24 | set(cfg_name ${item}) 25 | else() 26 | set(${cfg_name} ${item} CACHE INTERNAL "") 27 | set(cfg_name) 28 | endif() 29 | endforeach() 30 | 31 | disable_warnings() 32 | 33 | string(TOUPPER ${PKG_NAME} VAR_NAME) 34 | if(NOT ${VAR_NAME}_FOUND) 35 | message(STATUS "Using in-tree ${PKG_PATH}") 36 | set(${VAR_NAME}_IN_TREE YES CACHE INTERNAL "") 37 | 38 | add_subdirectory(extlib/${PKG_PATH} EXCLUDE_FROM_ALL) 39 | find_package(${PKG_NAME} REQUIRED) 40 | elseif(${VAR_NAME}_IN_TREE) 41 | add_subdirectory(extlib/${PKG_PATH} EXCLUDE_FROM_ALL) 42 | endif() 43 | 44 | # Now put everything we just discovered into the cache. 45 | set(cfg_name) 46 | foreach(item ${ARGN} ${VAR_NAME}_FOUND) 47 | if(NOT cfg_name) 48 | set(cfg_name ${item}) 49 | else() 50 | if(cfg_name MATCHES "^${VAR_NAME}") 51 | set(${cfg_name} "${${cfg_name}}" CACHE INTERNAL "") 52 | endif() 53 | set(cfg_name) 54 | endif() 55 | endforeach() 56 | endfunction() 57 | -------------------------------------------------------------------------------- /cmake/GetGitCommitHash.cmake: -------------------------------------------------------------------------------- 1 | function(get_git_commit_hash) 2 | get_filename_component(GIT_DESCRIBE_CMAKE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) 3 | get_filename_component(GIT_ROOT ${GIT_DESCRIBE_CMAKE_DIR} PATH) 4 | set(GIT_DIR "${GIT_ROOT}/.git") 5 | 6 | # Add a CMake configure dependency to the currently checked out revision. 7 | set(GIT_DEPENDS ${GIT_DIR}/HEAD) 8 | file(READ ${GIT_DIR}/HEAD HEAD_REF) 9 | if(HEAD_REF MATCHES "ref: (.+)\n") 10 | set(HEAD_REF ${CMAKE_MATCH_1}) 11 | if(EXISTS "${GIT_DIR}/${HEAD_REF}") 12 | list(APPEND GIT_DEPENDS ${GIT_DIR}/${HEAD_REF}) 13 | file(READ ${GIT_DIR}/${HEAD_REF} HEAD_REF) 14 | elseif(EXISTS "${GIT_DIR}/packed-refs") 15 | list(APPEND GIT_DEPENDS ${GIT_DIR}/packed-refs) 16 | file(READ "${GIT_DIR}/packed-refs" PACKED_REFS) 17 | if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") 18 | set(HEAD_REF ${CMAKE_MATCH_1}) 19 | else() 20 | set(HEAD_REF "") 21 | endif() 22 | else() 23 | set(HEAD_REF "") 24 | endif() 25 | endif() 26 | set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${GIT_DEPENDS}) 27 | 28 | string(STRIP ${HEAD_REF} HEAD_REF) 29 | if(HEAD_REF STREQUAL "") 30 | message(WARNING "Cannot determine git HEAD") 31 | else() 32 | set(GIT_COMMIT_HASH ${HEAD_REF} PARENT_SCOPE) 33 | endif() 34 | endfunction() 35 | get_git_commit_hash() 36 | -------------------------------------------------------------------------------- /cmake/MacOSXBundleInfo.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | com.solvespace 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | SolveSpace 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | SolveSpace 15 | CFBundlePackageType 16 | APPL 17 | CFBundleVersion 18 | ${PROJECT_VERSION}~${solvespace_GIT_HASH} 19 | CFBundleShortVersionString 20 | ${PROJECT_VERSION} 21 | NSHumanReadableCopyright 22 | © 2008-2022 Jonathan Westhues and other authors 23 | NSPrincipalClass 24 | NSApplication 25 | NSMainNibFile 26 | MainMenu 27 | CFBundleIconFile 28 | AppIcon 29 | CFBundleDocumentTypes 30 | 31 | 32 | CFBundleTypeExtensions 33 | 34 | slvs 35 | 36 | CFBundleTypeIconFile 37 | AppIcon.icns 38 | CFBundleTypeName 39 | SolveSpace sketch 40 | CFBundleTypeOSTypes 41 | 42 | slvs 43 | 44 | CFBundleTypeRole 45 | Editor 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /cmake/Platform/Emscripten.cmake: -------------------------------------------------------------------------------- 1 | set(EMSCRIPTEN 1) 2 | 3 | set(CMAKE_C_OUTPUT_EXTENSION ".o") 4 | set(CMAKE_CXX_OUTPUT_EXTENSION ".o") 5 | set(CMAKE_EXECUTABLE_SUFFIX ".html") 6 | 7 | set(CMAKE_SIZEOF_VOID_P 4) 8 | 9 | set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) 10 | 11 | # FIXME(emscripten): Suppress non-c-typedef-for-linkage warnings in solvespace.h 12 | add_compile_options(-Wno-non-c-typedef-for-linkage) 13 | 14 | 15 | # Enable optimization. Workaround for "too many locals" error when runs on browser. 16 | if(CMAKE_BUILD_TYPE STREQUAL Release) 17 | add_compile_options(-O2) 18 | else() 19 | add_compile_options(-O1) 20 | endif() 21 | -------------------------------------------------------------------------------- /cmake/Toolchain-emscripten.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Emscripten) 2 | 3 | set(TRIPLE asmjs-unknown-emscripten) 4 | 5 | set(CMAKE_C_COMPILER emcc) 6 | set(CMAKE_CXX_COMPILER em++) 7 | 8 | set(M_LIBRARY m) 9 | -------------------------------------------------------------------------------- /cmake/Toolchain-mingw32.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Windows) 2 | 3 | set(TRIPLE i686-w64-mingw32) 4 | 5 | set(CMAKE_C_COMPILER ${TRIPLE}-gcc) 6 | set(CMAKE_CXX_COMPILER ${TRIPLE}-g++) 7 | set(CMAKE_RC_COMPILER ${TRIPLE}-windres) 8 | 9 | set(CMAKE_FIND_ROOT_PATH /usr/${TRIPLE}) 10 | 11 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 12 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 13 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 14 | 15 | set(ENV{PKG_CONFIG_LIBDIR} /usr/${TRIPLE}/lib/pkgconfig) 16 | -------------------------------------------------------------------------------- /cmake/Toolchain-mingw64.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Windows) 2 | 3 | set(TRIPLE x86_64-w64-mingw32) 4 | 5 | set(CMAKE_C_COMPILER ${TRIPLE}-gcc) 6 | set(CMAKE_CXX_COMPILER ${TRIPLE}-g++) 7 | set(CMAKE_RC_COMPILER ${TRIPLE}-windres) 8 | 9 | set(CMAKE_FIND_ROOT_PATH /usr/${TRIPLE}) 10 | 11 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 12 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 13 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 14 | 15 | set(ENV{PKG_CONFIG_LIBDIR} /usr/${TRIPLE}/lib/pkgconfig) 16 | -------------------------------------------------------------------------------- /cmake/c_flag_overrides.cmake: -------------------------------------------------------------------------------- 1 | if(MSVC) 2 | set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1") 3 | set(CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") 4 | set(CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") 5 | set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") 6 | endif() 7 | 8 | if(EMSCRIPTEN) 9 | set(CMAKE_C_FLAGS_DEBUG_INIT "-g4") 10 | endif() 11 | -------------------------------------------------------------------------------- /cmake/cxx_flag_overrides.cmake: -------------------------------------------------------------------------------- 1 | if(MSVC) 2 | set(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1") 3 | set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") 4 | set(CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") 5 | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") 6 | endif() 7 | 8 | if(EMSCRIPTEN) 9 | set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g4") 10 | endif() 11 | -------------------------------------------------------------------------------- /cython/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include pyproject.toml setup.cfg 2 | include README.md 3 | recursive-include . *.h *.c */Eigen/* 4 | -------------------------------------------------------------------------------- /cython/platform/cygwinccompiler.diff: -------------------------------------------------------------------------------- 1 | --- cygwinccompiler.py 2 | +++ cygwinccompiler.py 3 | @@ -84,7 +84,21 @@ def get_msvcr(): 4 | elif msc_ver == '1600': 5 | # VS2010 / MSVC 10.0 6 | return ['msvcr100'] 7 | + elif msc_ver == '1700': 8 | + # Visual Studio 2012 / Visual C++ 11.0 9 | + return ['msvcr110'] 10 | + elif msc_ver == '1800': 11 | + # Visual Studio 2013 / Visual C++ 12.0 12 | + return ['msvcr120'] 13 | + elif msc_ver == '1900': 14 | + # Visual Studio 2015 / Visual C++ 14.0 15 | + # "msvcr140.dll no longer exists" http://blogs.msdn.com/b/vcblog/archive/2014/06/03/visual-studio-14-ctp.aspx 16 | + return ['vcruntime140'] 17 | + elif 1910 <= int(msc_ver) <= 1916: 18 | + return ['vcruntime140'] 19 | + elif 1920 <= int(msc_ver) <= 1928: 20 | + return ['vcruntime140'] 21 | else: 22 | raise ValueError("Unknown MS Compiler version %s " % msc_ver) 23 | -------------------------------------------------------------------------------- /cython/platform/pyconfig.diff: -------------------------------------------------------------------------------- 1 | --- pyconfig.h 2016-01-27 10:54:56.000000000 +0300 2 | +++ pyconfig.h 2016-03-28 11:46:48.000000000 +0300 3 | @@ -100,6 +100,12 @@ 4 | 5 | /* Compiler specific defines */ 6 | 7 | +#ifdef __MINGW32__ 8 | +#ifdef _WIN64 9 | +#define MS_WIN64 10 | +#endif 11 | +#endif 12 | + 13 | /* ------------------------------------------------------------------------*/ 14 | /* Microsoft C defines _MSC_VER */ 15 | #ifdef _MSC_VER 16 | -------------------------------------------------------------------------------- /cython/platform/set_pycompiler.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | REM Usage: set_pycompiler C:\Python37 mingw32 4 | REM Where %PYTHON_DIR% is the directory of your Python installation. 5 | REM Compiler option can be "mingw32" or "msvc". 6 | REM In Pyslvs project. 7 | set HERE=%~dp0 8 | set PYTHON_DIR=%1 9 | set COMPILER=%2 10 | 11 | REM Create "distutils.cfg" 12 | set DISTUTILS=%PYTHON_DIR%\Lib\distutils\distutils.cfg 13 | if exist "%DISTUTILS%" del "%DISTUTILS%" /Q /S 14 | echo [build]>> "%DISTUTILS%" 15 | echo compiler=%COMPILER%>> "%DISTUTILS%" 16 | echo patched file "%DISTUTILS%" 17 | REM Apply the patch of "cygwinccompiler.py". 18 | REM Unix "patch" command of Msys. 19 | set patch="C:\Program Files\Git\usr\bin\patch.exe" 20 | %patch% -N "%PYTHON_DIR%\lib\distutils\cygwinccompiler.py" "%HERE%\cygwinccompiler.diff" 21 | %patch% -N "%PYTHON_DIR%\include\pyconfig.h" "%HERE%\pyconfig.diff" 22 | 23 | REM Copy "vcruntime140.dll" to "libs". 24 | copy "%PYTHON_DIR%\vcruntime140.dll" "%PYTHON_DIR%\libs" 25 | echo copied "vcruntime140.dll". 26 | -------------------------------------------------------------------------------- /cython/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["wheel", "setuptools"] 3 | build-backend = "setuptools.build_meta" 4 | -------------------------------------------------------------------------------- /cython/python_solvespace/__init__.pxd: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cython/python_solvespace/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """'python_solvespace' module is a wrapper of 4 | Python binding Solvespace solver libraries. 5 | """ 6 | 7 | __author__ = "Yuan Chang" 8 | __copyright__ = "Copyright (C) 2016-2019" 9 | __license__ = "GPLv3+" 10 | __email__ = "pyslvs@gmail.com" 11 | __version__ = "3.0.8" 12 | 13 | from .slvs import ( 14 | quaternion_u, 15 | quaternion_v, 16 | quaternion_n, 17 | make_quaternion, 18 | Constraint, 19 | ResultFlag, 20 | Params, 21 | Entity, 22 | SolverSystem, 23 | ) 24 | 25 | __all__ = [ 26 | 'quaternion_u', 27 | 'quaternion_v', 28 | 'quaternion_n', 29 | 'make_quaternion', 30 | 'Constraint', 31 | 'ResultFlag', 32 | 'Params', 33 | 'Entity', 34 | 'SolverSystem', 35 | ] 36 | -------------------------------------------------------------------------------- /cython/python_solvespace/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/cython/python_solvespace/py.typed -------------------------------------------------------------------------------- /cython/setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = python_solvespace 3 | version = attr: python_solvespace.__version__ 4 | description = Python library of Solvespace. 5 | long_description = file: README.md 6 | long_description_content_type = text/markdown 7 | keywords = cad,mechanical-engineering,2d,3d 8 | license = GPLv3+ 9 | author = Yuan Chang 10 | author_email = pyslvs@gmail.com 11 | url = https://github.com/KmolYuan/solvespace 12 | classifiers = 13 | Programming Language :: Python :: 3.6 14 | Programming Language :: Python :: 3.7 15 | Programming Language :: Python :: 3.8 16 | Programming Language :: Python :: 3.9 17 | Programming Language :: Python :: 3.10 18 | Programming Language :: Python :: 3.11 19 | Programming Language :: Cython 20 | Topic :: Scientific/Engineering 21 | License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) 22 | Operating System :: OS Independent 23 | Typing :: Typed 24 | 25 | [options] 26 | zip_safe = False 27 | packages = find: 28 | python_requires = >=3.6 29 | setup_requires = 30 | cython 31 | 32 | [options.package_data] 33 | * = *.pyi, *.pxd, *.pyx 34 | python_solvespace = py.typed 35 | 36 | [options.packages.find] 37 | exclude = 38 | test 39 | 40 | [mypy] 41 | pretty = True 42 | show_error_codes = True 43 | show_column_numbers = True 44 | ignore_missing_imports = True 45 | allow_redefinition = True 46 | warn_redundant_casts = True 47 | warn_unreachable = True 48 | strict_equality = True 49 | -------------------------------------------------------------------------------- /cython/test/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cython/test/__main__.py: -------------------------------------------------------------------------------- 1 | from unittest import defaultTestLoader, TextTestRunner 2 | 3 | if __name__ == '__main__': 4 | TextTestRunner().run(defaultTestLoader.discover('test')) 5 | -------------------------------------------------------------------------------- /exposed/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories( 2 | ${CMAKE_SOURCE_DIR}/include) 3 | 4 | add_executable(CDemo 5 | CDemo.c) 6 | 7 | target_link_libraries(CDemo 8 | slvs) 9 | 10 | if(EMSCRIPTEN) 11 | set_target_properties(CDemo PROPERTIES 12 | LINK_FLAGS "-s TOTAL_MEMORY=134217728") 13 | endif() 14 | -------------------------------------------------------------------------------- /extlib/si/siapp.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/extlib/si/siapp.lib -------------------------------------------------------------------------------- /extlib/si/spwmacro.h: -------------------------------------------------------------------------------- 1 | /*---------------------------------------------------------------------- 2 | * spwmacro.h -- cpp macros we ALWAYS use. 3 | * 4 | <<<<<<< spwmacro.h 5 | * $Id: spwmacro.h,v 1.3 2001/01/16 01:18:40 HJin Exp $ 6 | ======= 7 | * $Id: spwmacro.h,v 1.3 2001/01/16 01:18:40 HJin Exp $ 8 | >>>>>>> 1.1.1.1.4.1 9 | * 10 | * We always seem to use the same macros. 11 | * This is the place we define them. 12 | * 13 | *---------------------------------------------------------------------- 14 | */ 15 | 16 | #ifndef SPWMACRO_H 17 | #define SPWMACRO_H 18 | 19 | 20 | #define SPW_FALSE (0) 21 | #define SPW_TRUE (!SPW_FALSE) 22 | 23 | #define SPW_MAX(a,b) (((a)>(b))?(a):(b)) 24 | #define SPW_MIN(a,b) (((a)<(b))?(a):(b)) 25 | 26 | #define SPW_ABS(a) (((a)<0)?(-(a)):(a)) 27 | 28 | #define SPW_SIGN(a) ((a)>=0?1:-1) 29 | 30 | #define SPW_BIND(min,n,max) (SPW_MIN((max),SPW_MAX((min),(n)))) 31 | 32 | #define SPW_NUM_ELEMENTS_IN(a) (sizeof(a)/sizeof((a)[0])) 33 | 34 | #define SPW_PI 3.14159265358979324f 35 | 36 | #define SPW_DEG_TO_RAD(d) ((d)*SPW_PI/180.0f) 37 | #define SPW_RAD_TO_DEG(r) ((r)*180.0f/SPW_PI) 38 | 39 | #define SPW_LENGTH_OF(a) (sizeof(a)/sizeof((a)[0])) 40 | 41 | #define SPW_END_OF(a) (&(a)[SPW_LENGTH_OF(a)-1]) 42 | 43 | #define SPW_SQ(a) ((a)*(a)) 44 | 45 | #define SPW_ABSDIFF(a, b) (fabs((double) (a) - (b))) 46 | 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /pkg/flatpak/.gitignore: -------------------------------------------------------------------------------- 1 | /.flatpak-builder 2 | /build-dir 3 | /repo 4 | *.flatpak 5 | -------------------------------------------------------------------------------- /pkg/flatpak/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | cd $(dirname $0) 3 | flatpak-builder "$@" --force-clean --repo repo build-dir com.solvespace.SolveSpace.json 4 | flatpak build-bundle repo solvespace.flatpak com.solvespace.SolveSpace 5 | -------------------------------------------------------------------------------- /pkg/snap/.gitignore: -------------------------------------------------------------------------------- 1 | *.snap 2 | solvespace-snap-src 3 | squashfs-root 4 | -------------------------------------------------------------------------------- /pkg/snap/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | dir="$(dirname "$(readlink -f "$0")")" 4 | solvespace_snap_src="$dir/solvespace-snap-src" 5 | trap "rm -rf $solvespace_snap_src" EXIT 6 | 7 | cd "$dir" 8 | 9 | git_root="$(git rev-parse --show-toplevel)" 10 | rsync --filter=":- .gitignore" -r "$git_root"/ "$solvespace_snap_src" 11 | 12 | snapcraft "$@" 13 | -------------------------------------------------------------------------------- /res/banner.txt: -------------------------------------------------------------------------------- 1 | SolveSpace! 2 | -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_128x128.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_16x16.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_256x256.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_32x32.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_512x512.png -------------------------------------------------------------------------------- /res/cocoa/AppIcon.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/cocoa/AppIcon.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /res/fonts/BitstreamVeraSans-Roman-builtin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/BitstreamVeraSans-Roman-builtin.ttf -------------------------------------------------------------------------------- /res/fonts/private/0-check-false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/0-check-false.png -------------------------------------------------------------------------------- /res/fonts/private/1-check-true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/1-check-true.png -------------------------------------------------------------------------------- /res/fonts/private/2-radio-false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/2-radio-false.png -------------------------------------------------------------------------------- /res/fonts/private/3-radio-true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/3-radio-true.png -------------------------------------------------------------------------------- /res/fonts/private/4-stipple-dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/4-stipple-dot.png -------------------------------------------------------------------------------- /res/fonts/private/5-stipple-dash-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/5-stipple-dash-long.png -------------------------------------------------------------------------------- /res/fonts/private/6-stipple-dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/6-stipple-dash.png -------------------------------------------------------------------------------- /res/fonts/private/7-stipple-zigzag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/private/7-stipple-zigzag.png -------------------------------------------------------------------------------- /res/fonts/unicode.lff.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/unicode.lff.gz -------------------------------------------------------------------------------- /res/fonts/unifont.hex.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/fonts/unifont.hex.gz -------------------------------------------------------------------------------- /res/freedesktop/solvespace-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/freedesktop/solvespace-16x16.png -------------------------------------------------------------------------------- /res/freedesktop/solvespace-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/freedesktop/solvespace-24x24.png -------------------------------------------------------------------------------- /res/freedesktop/solvespace-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/freedesktop/solvespace-32x32.png -------------------------------------------------------------------------------- /res/freedesktop/solvespace-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/freedesktop/solvespace-48x48.png -------------------------------------------------------------------------------- /res/freedesktop/solvespace-flatpak-mime.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SolveSpace model 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /res/freedesktop/solvespace-flatpak.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=SolveSpace 4 | Comment=A parametric 2d/3d CAD 5 | Exec=${CMAKE_INSTALL_FULL_BINDIR}/solvespace %f 6 | MimeType=application/x-solvespace 7 | Icon=com.solvespace.SolveSpace 8 | Type=Application 9 | Categories=Graphics;3DGraphics;Engineering; 10 | Keywords=parametric;cad;2d;3d; 11 | -------------------------------------------------------------------------------- /res/freedesktop/solvespace-mime.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SolveSpace model 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /res/freedesktop/solvespace-scalable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /res/freedesktop/solvespace-snap.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=SolveSpace 4 | Comment=A parametric 2d/3d CAD 5 | Exec=solvespace %f 6 | MimeType=application/x-solvespace 7 | Icon=${SNAP}/meta/icons/hicolor/scalable/apps/snap.solvespace.svg 8 | Type=Application 9 | Categories=Graphics;3DGraphics;Engineering; 10 | Keywords=parametric;cad;2d;3d; 11 | -------------------------------------------------------------------------------- /res/freedesktop/solvespace.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=SolveSpace 4 | Comment=A parametric 2d/3d CAD 5 | Exec=${CMAKE_INSTALL_FULL_BINDIR}/solvespace %f 6 | MimeType=application/x-solvespace 7 | Icon=solvespace 8 | Type=Application 9 | Categories=Graphics;3DGraphics;Engineering; 10 | Keywords=parametric;cad;2d;3d; 11 | -------------------------------------------------------------------------------- /res/icons/graphics-window/angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/angle.png -------------------------------------------------------------------------------- /res/icons/graphics-window/arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/arc.png -------------------------------------------------------------------------------- /res/icons/graphics-window/assemble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/assemble.png -------------------------------------------------------------------------------- /res/icons/graphics-window/bezier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/bezier.png -------------------------------------------------------------------------------- /res/icons/graphics-window/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/circle.png -------------------------------------------------------------------------------- /res/icons/graphics-window/construction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/construction.png -------------------------------------------------------------------------------- /res/icons/graphics-window/equal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/equal.png -------------------------------------------------------------------------------- /res/icons/graphics-window/extrude.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/extrude.png -------------------------------------------------------------------------------- /res/icons/graphics-window/helix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/helix.png -------------------------------------------------------------------------------- /res/icons/graphics-window/horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/horiz.png -------------------------------------------------------------------------------- /res/icons/graphics-window/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/image.png -------------------------------------------------------------------------------- /res/icons/graphics-window/in3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/in3d.png -------------------------------------------------------------------------------- /res/icons/graphics-window/lathe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/lathe.png -------------------------------------------------------------------------------- /res/icons/graphics-window/length.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/length.png -------------------------------------------------------------------------------- /res/icons/graphics-window/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/line.png -------------------------------------------------------------------------------- /res/icons/graphics-window/ontoworkplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/ontoworkplane.png -------------------------------------------------------------------------------- /res/icons/graphics-window/other-supp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/other-supp.png -------------------------------------------------------------------------------- /res/icons/graphics-window/parallel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/parallel.png -------------------------------------------------------------------------------- /res/icons/graphics-window/perpendicular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/perpendicular.png -------------------------------------------------------------------------------- /res/icons/graphics-window/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/point.png -------------------------------------------------------------------------------- /res/icons/graphics-window/pointonx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/pointonx.png -------------------------------------------------------------------------------- /res/icons/graphics-window/rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/rectangle.png -------------------------------------------------------------------------------- /res/icons/graphics-window/ref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/ref.png -------------------------------------------------------------------------------- /res/icons/graphics-window/revolve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/revolve.png -------------------------------------------------------------------------------- /res/icons/graphics-window/same-orientation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/same-orientation.png -------------------------------------------------------------------------------- /res/icons/graphics-window/sketch-in-3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/sketch-in-3d.png -------------------------------------------------------------------------------- /res/icons/graphics-window/sketch-in-plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/sketch-in-plane.png -------------------------------------------------------------------------------- /res/icons/graphics-window/step-rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/step-rotate.png -------------------------------------------------------------------------------- /res/icons/graphics-window/step-translate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/step-translate.png -------------------------------------------------------------------------------- /res/icons/graphics-window/symmetric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/symmetric.png -------------------------------------------------------------------------------- /res/icons/graphics-window/tangent-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/tangent-arc.png -------------------------------------------------------------------------------- /res/icons/graphics-window/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/text.png -------------------------------------------------------------------------------- /res/icons/graphics-window/trim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/trim.png -------------------------------------------------------------------------------- /res/icons/graphics-window/vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/graphics-window/vert.png -------------------------------------------------------------------------------- /res/icons/text-window/constraint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/constraint.png -------------------------------------------------------------------------------- /res/icons/text-window/construction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/construction.png -------------------------------------------------------------------------------- /res/icons/text-window/edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/edges.png -------------------------------------------------------------------------------- /res/icons/text-window/faces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/faces.png -------------------------------------------------------------------------------- /res/icons/text-window/mesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/mesh.png -------------------------------------------------------------------------------- /res/icons/text-window/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/normal.png -------------------------------------------------------------------------------- /res/icons/text-window/occluded-invisible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/occluded-invisible.png -------------------------------------------------------------------------------- /res/icons/text-window/occluded-stippled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/occluded-stippled.png -------------------------------------------------------------------------------- /res/icons/text-window/occluded-visible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/occluded-visible.png -------------------------------------------------------------------------------- /res/icons/text-window/outlines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/outlines.png -------------------------------------------------------------------------------- /res/icons/text-window/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/point.png -------------------------------------------------------------------------------- /res/icons/text-window/shaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/shaded.png -------------------------------------------------------------------------------- /res/icons/text-window/workplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/icons/text-window/workplane.png -------------------------------------------------------------------------------- /res/locales.txt: -------------------------------------------------------------------------------- 1 | # This file lists the ISO locale codes (ISO 639-1/ISO 3166-1), Windows LCIDs, 2 | # and human-readable names for every culture supported by SolveSpace. 3 | cs-CZ,1029,Česky 4 | de-DE,0407,Deutsch 5 | en-US,0409,English (US) 6 | fr-FR,040C,Français 7 | es-AR,2C0A,español (AR) 8 | ru-RU,0419,Русский 9 | tr-TR,041F,Türkçe 10 | uk-UA,0422,Українська 11 | zh-CN,0804,简体中文 12 | ja-JP,0411,日本語 13 | -------------------------------------------------------------------------------- /res/shaders/edge.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Edge rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | const float feather = 0.5; 7 | 8 | uniform vec4 color; 9 | uniform float pixel; 10 | uniform float width; 11 | uniform float patternLen; 12 | uniform float patternScale; 13 | uniform sampler2D pattern; 14 | 15 | varying vec3 fragLoc; 16 | 17 | void main() { 18 | // lookup distance texture 19 | vec4 v = texture2D(pattern, vec2(fragLoc.z / patternScale, 0.0)); 20 | 21 | // decode distance value 22 | float val = dot(v, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0)); 23 | 24 | // calculate cap 25 | float dist = length(vec2(val * patternScale / (patternLen * width) + abs(fragLoc.x), fragLoc.y)); 26 | 27 | // perform antialiasing 28 | float k = smoothstep(1.0 - 2.0 * feather * pixel / (width + feather * pixel), 1.0, abs(dist)); 29 | 30 | // perform alpha-test 31 | if(k == 1.0) discard; 32 | 33 | // write resulting color 34 | gl_FragColor = vec4(color.rgb, color.a * (1.0 - k)); 35 | } 36 | -------------------------------------------------------------------------------- /res/shaders/edge.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Edge rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | const float feather = 0.5; 7 | 8 | attribute vec3 pos; 9 | attribute vec3 loc; 10 | attribute vec3 tgt; 11 | 12 | uniform mat4 modelview; 13 | uniform mat4 projection; 14 | uniform float width; 15 | uniform float pixel; 16 | 17 | varying vec3 fragLoc; 18 | 19 | void main() { 20 | // get camera direction from modelview matrix 21 | vec3 dir = vec3(modelview[0].z, modelview[1].z, modelview[2].z); 22 | 23 | // calculate line contour extension basis for constant width and caps 24 | vec3 norm = normalize(cross(tgt, dir)); 25 | norm = normalize(norm - dir * dot(dir, norm)); 26 | vec3 perp = normalize(cross(dir, norm)); 27 | 28 | // calculate line extension width considering antialiasing 29 | float ext = width + feather * pixel; 30 | 31 | // extend line contour 32 | vec3 vertex = pos; 33 | vertex += ext * loc.x * normalize(perp); 34 | vertex += ext * loc.y * normalize(norm); 35 | 36 | // write fragment location for calculating caps and antialiasing 37 | fragLoc = loc; 38 | 39 | // transform resulting vertex with modelview and projection matrices 40 | gl_Position = projection * modelview * vec4(vertex, 1.0); 41 | } 42 | -------------------------------------------------------------------------------- /res/shaders/imesh.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Indexed Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | uniform vec4 color; 7 | uniform sampler2D texture_; 8 | 9 | void main() { 10 | if(texture2D(texture_, gl_FragCoord.xy / 32.0).a < 0.5) discard; 11 | gl_FragColor = color; 12 | } 13 | -------------------------------------------------------------------------------- /res/shaders/imesh.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Indexed Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | attribute vec3 pos; 7 | 8 | uniform mat4 modelview; 9 | uniform mat4 projection; 10 | 11 | void main() { 12 | gl_Position = projection * modelview * vec4(pos, 1.0); 13 | } 14 | -------------------------------------------------------------------------------- /res/shaders/imesh_point.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Point rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | const float feather = 0.5; 7 | 8 | uniform vec4 color; 9 | uniform float pixel; 10 | uniform float width; 11 | 12 | void main() { 13 | // Rectangular points 14 | gl_FragColor = color; 15 | } 16 | -------------------------------------------------------------------------------- /res/shaders/imesh_point.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Point rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | const float feather = 0.5; 7 | 8 | attribute vec3 pos; 9 | attribute vec2 loc; 10 | 11 | uniform mat4 modelview; 12 | uniform mat4 projection; 13 | uniform float width; 14 | uniform float pixel; 15 | 16 | void main() { 17 | // get camera vectors from modelview matrix 18 | vec3 u = vec3(modelview[0].x, modelview[1].x, modelview[2].x); 19 | vec3 v = vec3(modelview[0].y, modelview[1].y, modelview[2].y); 20 | 21 | // calculate point contour extension basis for constant width and caps 22 | 23 | // calculate point extension width considering antialiasing 24 | float ext = width + feather * pixel; 25 | 26 | // extend point contour 27 | vec3 vertex = pos; 28 | vertex += ext * loc.x * normalize(u); 29 | vertex += ext * loc.y * normalize(v); 30 | 31 | // transform resulting vertex with modelview and projection matrices 32 | gl_Position = projection * modelview * vec4(vertex, 1.0); 33 | } 34 | -------------------------------------------------------------------------------- /res/shaders/imesh_tex.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Indexed Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | uniform vec4 color; 7 | uniform sampler2D texture_; 8 | 9 | varying vec2 fragTex; 10 | 11 | void main() { 12 | vec4 texColor = texture2D(texture_, fragTex); 13 | if(texColor.a == 0.0) discard; 14 | gl_FragColor = texColor * color; 15 | } 16 | -------------------------------------------------------------------------------- /res/shaders/imesh_tex.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Indexed Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | attribute vec3 pos; 7 | attribute vec2 tex; 8 | 9 | uniform mat4 modelview; 10 | uniform mat4 projection; 11 | 12 | varying vec2 fragTex; 13 | 14 | void main() { 15 | fragTex = tex; 16 | gl_Position = projection * modelview * vec4(pos, 1.0); 17 | } 18 | -------------------------------------------------------------------------------- /res/shaders/imesh_texa.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Indexed Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | uniform vec4 color; 7 | uniform sampler2D texture_; 8 | 9 | varying vec2 fragTex; 10 | 11 | void main() { 12 | gl_FragColor = vec4(color.rgb, color.a * texture2D(texture_, fragTex).TEX_ALPHA); 13 | } 14 | -------------------------------------------------------------------------------- /res/shaders/mesh.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | uniform vec3 lightDir0; 7 | uniform vec3 lightDir1; 8 | uniform float lightInt0; 9 | uniform float lightInt1; 10 | uniform float ambient; 11 | 12 | varying vec3 fragNormal; 13 | varying vec4 fragColor; 14 | 15 | void main() { 16 | vec3 result = fragColor.xyz * ambient; 17 | vec3 normal = normalize(fragNormal); 18 | 19 | float light0 = clamp(dot(lightDir0, normal), 0.0, 1.0) * lightInt0 * (1.0 - ambient); 20 | result += fragColor.rgb * light0; 21 | 22 | float light1 = clamp(dot(lightDir1, normal), 0.0, 1.0) * lightInt1 * (1.0 - ambient); 23 | result += fragColor.rgb * light1; 24 | 25 | gl_FragColor = vec4(result, fragColor.a); 26 | } 27 | -------------------------------------------------------------------------------- /res/shaders/mesh.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | attribute vec3 pos; 7 | attribute vec3 nor; 8 | attribute vec4 col; 9 | 10 | uniform mat4 modelview; 11 | uniform mat4 projection; 12 | 13 | varying vec3 fragNormal; 14 | varying vec4 fragColor; 15 | 16 | void main() { 17 | fragNormal = vec3(modelview * vec4(nor, 0.0)); 18 | fragColor = col; 19 | 20 | gl_Position = projection * modelview * vec4(pos, 1.0); 21 | } 22 | -------------------------------------------------------------------------------- /res/shaders/mesh_fill.frag: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | uniform vec4 color; 7 | uniform sampler2D texture_; 8 | 9 | void main() { 10 | if(texture2D(texture_, gl_FragCoord.xy / 32.0).TEX_ALPHA < 0.5) discard; 11 | gl_FragColor = color; 12 | } 13 | -------------------------------------------------------------------------------- /res/shaders/mesh_fill.vert: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Mesh rendering shader 3 | // 4 | // Copyright 2016 Aleksey Egorov 5 | //----------------------------------------------------------------------------- 6 | attribute vec3 pos; 7 | 8 | uniform mat4 modelview; 9 | uniform mat4 projection; 10 | 11 | void main() { 12 | gl_Position = projection * modelview * vec4(pos, 1.0); 13 | } 14 | -------------------------------------------------------------------------------- /res/threejs/hammer-2.0.8.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/threejs/hammer-2.0.8.js.gz -------------------------------------------------------------------------------- /res/threejs/three-r111.min.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/threejs/three-r111.min.js.gz -------------------------------------------------------------------------------- /res/win32/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/res/win32/icon.ico -------------------------------------------------------------------------------- /res/win32/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | Parametric 3d CAD tool. 10 | 11 | 12 | PerMonitorV2, PerMonitor 13 | true 14 | 15 | 16 | 17 | 18 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /res/win32/versioninfo.rc.in: -------------------------------------------------------------------------------- 1 | 1 VERSIONINFO 2 | FILEVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},0,0 3 | PRODUCTVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},0,0 4 | FILEFLAGSMASK 0 5 | FILEFLAGS 0 6 | FILEOS VOS_NT_WINDOWS32 7 | FILETYPE VFT_APP 8 | FILESUBTYPE 0 9 | BEGIN 10 | BLOCK "StringFileInfo" 11 | BEGIN 12 | BLOCK "04090000" 13 | BEGIN 14 | VALUE "CompanyName", "The SolveSpace authors" 15 | VALUE "ProductName", "SolveSpace" 16 | VALUE "ProductVersion", "${PROJECT_VERSION}~${solvespace_GIT_HASH}" 17 | VALUE "FileDescription", "SolveSpace, a parametric 2d/3d CAD" 18 | VALUE "FileVersion", "${PROJECT_VERSION}~${solvespace_GIT_HASH}" 19 | VALUE "OriginalFilename", "solvespace.exe" 20 | VALUE "InternalName", "solvespace" 21 | VALUE "LegalCopyright", "(c) 2008-2022 Jonathan Westhues and other authors" 22 | END 23 | END 24 | 25 | BLOCK "VarFileInfo" 26 | BEGIN 27 | VALUE "Translation", 0x409, 0 28 | END 29 | END 30 | -------------------------------------------------------------------------------- /src/config.h.in: -------------------------------------------------------------------------------- 1 | #ifndef SOLVESPACE_CONFIG_H 2 | #define SOLVESPACE_CONFIG_H 3 | 4 | #define PACKAGE_VERSION "@PROJECT_VERSION@~@solvespace_GIT_HASH@" 5 | #define GIT_HASH_URL "https://github.com/solvespace/solvespace/commit/@solvespace_GIT_HASH@" 6 | 7 | /* Non-OS X *nix only */ 8 | #define UNIX_DATADIR "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DATAROOTDIR@/solvespace" 9 | 10 | /* Do we have the si library on win32, or libspnav on *nix? */ 11 | #cmakedefine HAVE_SPACEWARE 12 | 13 | /* What OpenGL version do we use? */ 14 | #define HAVE_OPENGL @OPENGL@ 15 | 16 | /* If we use GTK, can we use the native file chooser? */ 17 | #cmakedefine HAVE_GTK_FILECHOOSERNATIVE 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/platform/entrygui.cpp: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Our main() function for the graphical interface. 3 | // 4 | // Copyright 2018 5 | //----------------------------------------------------------------------------- 6 | #include "solvespace.h" 7 | #if defined(WIN32) 8 | # include 9 | #endif 10 | 11 | using namespace SolveSpace; 12 | 13 | int main(int argc, char** argv) { 14 | std::vector args = Platform::InitGui(argc, argv); 15 | 16 | Platform::Open3DConnexion(); 17 | SS.Init(); 18 | 19 | if(args.size() >= 2) { 20 | if(args.size() > 2) { 21 | dbp("Only the first file passed on command line will be opened."); 22 | } 23 | 24 | SS.Load(Platform::Path::From(args.back())); 25 | } 26 | 27 | Platform::RunGui(); 28 | 29 | Platform::Close3DConnexion(); 30 | SS.Clear(); 31 | SK.Clear(); 32 | Platform::ClearGui(); 33 | 34 | return 0; 35 | } 36 | 37 | #if defined(WIN32) 38 | int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 39 | LPSTR lpCmdLine, INT nCmdShow) { 40 | return main(0, NULL); 41 | } 42 | #endif 43 | -------------------------------------------------------------------------------- /src/ttf.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Routines to read a TrueType font as vector outlines, and generate them 3 | // as entities, since they're always representable as either lines or 4 | // quadratic Bezier curves. 5 | // 6 | // Copyright 2016 whitequark, Peter Barfuss. 7 | //----------------------------------------------------------------------------- 8 | 9 | #ifndef SOLVESPACE_TTF_H 10 | #define SOLVESPACE_TTF_H 11 | 12 | class TtfFont { 13 | public: 14 | Platform::Path fontFile; // or resource path/name as res:// 15 | std::string name; 16 | FT_FaceRec_ *fontFace; 17 | double capHeight; 18 | 19 | void SetResourceID(const std::string &resource); 20 | bool IsResource() const; 21 | 22 | std::string FontFileBaseName() const; 23 | bool LoadFromFile(FT_LibraryRec_ *fontLibrary, bool keepOpen = false); 24 | bool LoadFromResource(FT_LibraryRec_ *fontLibrary, bool keepOpen = false); 25 | 26 | void PlotString(const std::string &str, 27 | SBezierList *sbl, Vector origin, Vector u, Vector v); 28 | double AspectRatio(const std::string &str); 29 | 30 | bool ExtractTTFData(bool keepOpen); 31 | }; 32 | 33 | class TtfFontList { 34 | public: 35 | FT_LibraryRec_ *fontLibrary; 36 | bool loaded; 37 | List l; 38 | 39 | TtfFontList(); 40 | ~TtfFontList(); 41 | 42 | void LoadAll(); 43 | TtfFont *LoadFont(const std::string &font); 44 | 45 | void PlotString(const std::string &font, const std::string &str, 46 | SBezierList *sbl, Vector origin, Vector u, Vector v); 47 | double AspectRatio(const std::string &font, const std::string &str); 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /test/Gentium-R.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/Gentium-R.ttf -------------------------------------------------------------------------------- /test/analysis/contour_area/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/analysis/contour_area/normal.png -------------------------------------------------------------------------------- /test/analysis/contour_area/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/analysis/contour_area/normal.slvs -------------------------------------------------------------------------------- /test/analysis/contour_area/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | SS.showContourAreas = true; 5 | CHECK_LOAD("normal.slvs"); 6 | CHECK_RENDER("normal.png"); 7 | } 8 | -------------------------------------------------------------------------------- /test/commit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | 3 | make -C build solvespace-testsuite 4 | ./build/test/solvespace-testsuite $* || true 5 | for e in slvs png; do 6 | for i in `find . -name *.out.$e`; do 7 | mv $i `dirname $i`/`basename $i .out.$e`.$e; 8 | done; 9 | done 10 | -------------------------------------------------------------------------------- /test/constraint/angle/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/angle/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/angle/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/angle/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/angle/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/normal.png -------------------------------------------------------------------------------- /test/constraint/angle/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/normal.slvs -------------------------------------------------------------------------------- /test/constraint/angle/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/angle/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference.png -------------------------------------------------------------------------------- /test/constraint/angle/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference_free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/angle/reference_free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference_free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference_free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/angle/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/angle/skew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/skew.png -------------------------------------------------------------------------------- /test/constraint/angle/skew.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/skew.slvs -------------------------------------------------------------------------------- /test/constraint/angle/skew_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/angle/skew_v22.slvs -------------------------------------------------------------------------------- /test/constraint/angle/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | 35 | TEST_CASE(reference_roundtrip) { 36 | CHECK_LOAD("reference.slvs"); 37 | CHECK_RENDER("reference.png"); 38 | CHECK_SAVE("reference.slvs"); 39 | } 40 | 41 | TEST_CASE(reference_migrate_from_v20) { 42 | CHECK_LOAD("reference_v20.slvs"); 43 | CHECK_SAVE("reference.slvs"); 44 | } 45 | 46 | TEST_CASE(reference_migrate_from_v22) { 47 | CHECK_LOAD("reference_v22.slvs"); 48 | CHECK_SAVE("reference.slvs"); 49 | } 50 | 51 | TEST_CASE(reference_free_in_3d_roundtrip) { 52 | CHECK_LOAD("reference_free_in_3d.slvs"); 53 | CHECK_RENDER("reference_free_in_3d.png"); 54 | CHECK_SAVE("reference_free_in_3d.slvs"); 55 | } 56 | 57 | TEST_CASE(reference_free_in_3d_migrate_from_v20) { 58 | CHECK_LOAD("reference_free_in_3d_v20.slvs"); 59 | CHECK_SAVE("reference_free_in_3d.slvs"); 60 | } 61 | 62 | TEST_CASE(reference_free_in_3d_migrate_from_v22) { 63 | CHECK_LOAD("reference_free_in_3d_v22.slvs"); 64 | CHECK_SAVE("reference_free_in_3d.slvs"); 65 | } 66 | 67 | TEST_CASE(skew_render) { 68 | CHECK_LOAD("skew.slvs"); 69 | CHECK_RENDER("skew.png"); 70 | } 71 | -------------------------------------------------------------------------------- /test/constraint/arc_line_tangent/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/arc_line_tangent/normal.png -------------------------------------------------------------------------------- /test/constraint/arc_line_tangent/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/arc_line_tangent/normal.slvs -------------------------------------------------------------------------------- /test/constraint/arc_line_tangent/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/arc_line_tangent/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/arc_line_tangent/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/arc_line_tangent/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/arc_line_tangent/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_normal.png -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_normal.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_plane_normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_plane_normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_normal.png -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_normal.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/line_pt_normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/at_midpoint/line_pt_normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/at_midpoint/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(line_pt_normal_roundtrip) { 4 | CHECK_LOAD("line_pt_normal.slvs"); 5 | CHECK_RENDER("line_pt_normal.png"); 6 | CHECK_SAVE("line_pt_normal.slvs"); 7 | } 8 | 9 | TEST_CASE(line_pt_normal_migrate_from_v20) { 10 | CHECK_LOAD("line_pt_normal_v20.slvs"); 11 | CHECK_SAVE("line_pt_normal.slvs"); 12 | } 13 | 14 | TEST_CASE(line_pt_normal_migrate_from_v22) { 15 | CHECK_LOAD("line_pt_normal_v22.slvs"); 16 | CHECK_SAVE("line_pt_normal.slvs"); 17 | } 18 | 19 | TEST_CASE(line_pt_free_in_3d_roundtrip) { 20 | CHECK_LOAD("line_pt_free_in_3d.slvs"); 21 | CHECK_RENDER("line_pt_free_in_3d.png"); 22 | CHECK_SAVE("line_pt_free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(line_pt_free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("line_pt_free_in_3d_v20.slvs"); 27 | CHECK_SAVE("line_pt_free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(line_pt_free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("line_pt_free_in_3d_v22.slvs"); 32 | CHECK_SAVE("line_pt_free_in_3d.slvs"); 33 | } 34 | 35 | TEST_CASE(line_plane_normal_roundtrip) { 36 | CHECK_LOAD("line_plane_normal.slvs"); 37 | CHECK_RENDER("line_plane_normal.png"); 38 | CHECK_SAVE("line_plane_normal.slvs"); 39 | } 40 | 41 | TEST_CASE(line_plane_normal_migrate_from_v20) { 42 | CHECK_LOAD("line_plane_normal_v20.slvs"); 43 | CHECK_SAVE("line_plane_normal.slvs"); 44 | } 45 | 46 | TEST_CASE(line_plane_normal_migrate_from_v22) { 47 | CHECK_LOAD("line_plane_normal_v22.slvs"); 48 | CHECK_SAVE("line_plane_normal.slvs"); 49 | } 50 | 51 | TEST_CASE(line_plane_free_in_3d_roundtrip) { 52 | CHECK_LOAD("line_plane_free_in_3d.slvs"); 53 | CHECK_RENDER("line_plane_free_in_3d.png"); 54 | CHECK_SAVE("line_plane_free_in_3d.slvs"); 55 | } 56 | 57 | TEST_CASE(line_plane_free_in_3d_migrate_from_v20) { 58 | CHECK_LOAD("line_plane_free_in_3d_v20.slvs"); 59 | CHECK_SAVE("line_plane_free_in_3d.slvs"); 60 | } 61 | 62 | TEST_CASE(line_plane_free_in_3d_migrate_from_v22) { 63 | CHECK_LOAD("line_plane_free_in_3d_v22.slvs"); 64 | CHECK_SAVE("line_plane_free_in_3d.slvs"); 65 | } 66 | -------------------------------------------------------------------------------- /test/constraint/comment/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/comment/normal.png -------------------------------------------------------------------------------- /test/constraint/comment/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/comment/normal.slvs -------------------------------------------------------------------------------- /test/constraint/comment/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/comment/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/comment/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/comment/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/comment/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/normal.png -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/normal.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/cubic_line_tangent/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/cubic_line_tangent/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_arc.png -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_arc.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_arc.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_arc_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_arc_v20.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_arc_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_arc_v22.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_cubic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_cubic.png -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_cubic.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_cubic.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_cubic_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_cubic_v20.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/arc_cubic_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/curve_curve_tangent/arc_cubic_v22.slvs -------------------------------------------------------------------------------- /test/constraint/curve_curve_tangent/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(arc_arc_roundtrip) { 4 | CHECK_LOAD("arc_arc.slvs"); 5 | CHECK_RENDER("arc_arc.png"); 6 | CHECK_SAVE("arc_arc.slvs"); 7 | } 8 | 9 | TEST_CASE(arc_arc_migrate_from_v20) { 10 | CHECK_LOAD("arc_arc_v20.slvs"); 11 | CHECK_SAVE("arc_arc.slvs"); 12 | } 13 | 14 | TEST_CASE(arc_arc_migrate_from_v22) { 15 | CHECK_LOAD("arc_arc_v22.slvs"); 16 | CHECK_SAVE("arc_arc.slvs"); 17 | } 18 | 19 | TEST_CASE(arc_cubic_roundtrip) { 20 | CHECK_LOAD("arc_cubic.slvs"); 21 | CHECK_RENDER("arc_cubic.png"); 22 | CHECK_SAVE("arc_cubic.slvs"); 23 | } 24 | 25 | TEST_CASE(arc_cubic_migrate_from_v20) { 26 | CHECK_LOAD("arc_cubic_v20.slvs"); 27 | CHECK_SAVE("arc_cubic.slvs"); 28 | } 29 | 30 | TEST_CASE(arc_cubic_migrate_from_v22) { 31 | CHECK_LOAD("arc_cubic_v22.slvs"); 32 | CHECK_SAVE("arc_cubic.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/diameter/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/normal.png -------------------------------------------------------------------------------- /test/constraint/diameter/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/normal.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/reference.png -------------------------------------------------------------------------------- /test/constraint/diameter/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/reference.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/diameter/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/diameter/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(reference_roundtrip) { 20 | CHECK_LOAD("reference.slvs"); 21 | CHECK_RENDER("reference.png"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | 25 | TEST_CASE(reference_migrate_from_v20) { 26 | CHECK_LOAD("reference_v20.slvs"); 27 | CHECK_SAVE("reference.slvs"); 28 | } 29 | 30 | TEST_CASE(reference_migrate_from_v22) { 31 | CHECK_LOAD("reference_v22.slvs"); 32 | CHECK_SAVE("reference.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/eq_len_pt_line_d/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_len_pt_line_d/normal.png -------------------------------------------------------------------------------- /test/constraint/eq_len_pt_line_d/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_len_pt_line_d/normal.slvs -------------------------------------------------------------------------------- /test/constraint/eq_len_pt_line_d/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_len_pt_line_d/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/eq_len_pt_line_d/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_len_pt_line_d/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/eq_len_pt_line_d/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/eq_pt_ln_distances/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_pt_ln_distances/normal.png -------------------------------------------------------------------------------- /test/constraint/eq_pt_ln_distances/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_pt_ln_distances/normal.slvs -------------------------------------------------------------------------------- /test/constraint/eq_pt_ln_distances/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_pt_ln_distances/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/eq_pt_ln_distances/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/eq_pt_ln_distances/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/eq_pt_ln_distances/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/equal_angle/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/normal.png -------------------------------------------------------------------------------- /test/constraint/equal_angle/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/normal.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/normal_old_version.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/normal_old_version.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/other.png -------------------------------------------------------------------------------- /test/constraint/equal_angle/other.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/other.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/other_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/other_v20.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/other_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_angle/other_v22.slvs -------------------------------------------------------------------------------- /test/constraint/equal_angle/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal_old_version.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal_old_version.slvs"); 17 | } 18 | 19 | TEST_CASE(other_roundtrip) { 20 | CHECK_LOAD("other.slvs"); 21 | CHECK_RENDER("other.png"); 22 | CHECK_SAVE("other.slvs"); 23 | } 24 | 25 | TEST_CASE(other_migrate_from_v20) { 26 | CHECK_LOAD("other_v20.slvs"); 27 | CHECK_SAVE("other.slvs"); 28 | } 29 | 30 | TEST_CASE(other_migrate_from_v22) { 31 | CHECK_LOAD("other_v22.slvs"); 32 | CHECK_SAVE("other.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/equal_length_lines/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_length_lines/normal.png -------------------------------------------------------------------------------- /test/constraint/equal_length_lines/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_length_lines/normal.slvs -------------------------------------------------------------------------------- /test/constraint/equal_length_lines/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_length_lines/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/equal_length_lines/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_length_lines/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/equal_length_lines/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/normal.png -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/normal.slvs -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/pi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/pi.png -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/pi.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/pi.slvs -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/tau.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/tau.png -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/tau.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_line_arc_len/tau.slvs -------------------------------------------------------------------------------- /test/constraint/equal_line_arc_len/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(pi) { 20 | CHECK_LOAD("pi.slvs"); 21 | CHECK_RENDER("pi.png"); 22 | } 23 | 24 | TEST_CASE(tau) { 25 | CHECK_LOAD("tau.slvs"); 26 | CHECK_RENDER("tau.png"); 27 | } 28 | -------------------------------------------------------------------------------- /test/constraint/equal_radius/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_radius/normal.png -------------------------------------------------------------------------------- /test/constraint/equal_radius/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_radius/normal.slvs -------------------------------------------------------------------------------- /test/constraint/equal_radius/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_radius/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/equal_radius/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/equal_radius/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/equal_radius/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/horizontal/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/line.png -------------------------------------------------------------------------------- /test/constraint/horizontal/line.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/line.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/line_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/line_v20.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/line_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/line_v22.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/pt_pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/pt_pt.png -------------------------------------------------------------------------------- /test/constraint/horizontal/pt_pt.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/pt_pt.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/pt_pt_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/pt_pt_v20.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/pt_pt_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/horizontal/pt_pt_v22.slvs -------------------------------------------------------------------------------- /test/constraint/horizontal/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(line_roundtrip) { 4 | CHECK_LOAD("line.slvs"); 5 | CHECK_RENDER("line.png"); 6 | CHECK_SAVE("line.slvs"); 7 | } 8 | 9 | TEST_CASE(line_migrate_from_v20) { 10 | CHECK_LOAD("line_v20.slvs"); 11 | CHECK_SAVE("line.slvs"); 12 | } 13 | 14 | TEST_CASE(line_migrate_from_v22) { 15 | CHECK_LOAD("line_v22.slvs"); 16 | CHECK_SAVE("line.slvs"); 17 | } 18 | 19 | TEST_CASE(pt_pt_roundtrip) { 20 | CHECK_LOAD("pt_pt.slvs"); 21 | CHECK_RENDER("pt_pt.png"); 22 | CHECK_SAVE("pt_pt.slvs"); 23 | } 24 | 25 | TEST_CASE(pt_pt_migrate_from_v20) { 26 | CHECK_LOAD("pt_pt_v20.slvs"); 27 | CHECK_SAVE("pt_pt.slvs"); 28 | } 29 | 30 | TEST_CASE(pt_pt_migrate_from_v22) { 31 | CHECK_LOAD("pt_pt_v22.slvs"); 32 | CHECK_SAVE("pt_pt.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/length_difference/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/normal.png -------------------------------------------------------------------------------- /test/constraint/length_difference/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/normal.slvs -------------------------------------------------------------------------------- /test/constraint/length_difference/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/length_difference/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/reference.png -------------------------------------------------------------------------------- /test/constraint/length_difference/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/reference.slvs -------------------------------------------------------------------------------- /test/constraint/length_difference/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_difference/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/length_difference/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v22) { 10 | CHECK_LOAD("normal_v22.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(reference_roundtrip) { 15 | CHECK_LOAD("reference.slvs"); 16 | CHECK_RENDER("reference.png"); 17 | CHECK_SAVE("reference.slvs"); 18 | } 19 | 20 | TEST_CASE(reference_migrate_from_v22) { 21 | CHECK_LOAD("reference_v22.slvs"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | -------------------------------------------------------------------------------- /test/constraint/length_ratio/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/normal.png -------------------------------------------------------------------------------- /test/constraint/length_ratio/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/normal.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/reference.png -------------------------------------------------------------------------------- /test/constraint/length_ratio/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/reference.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/length_ratio/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/length_ratio/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(reference_roundtrip) { 20 | CHECK_LOAD("reference.slvs"); 21 | CHECK_RENDER("reference.png"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | 25 | TEST_CASE(reference_migrate_from_v20) { 26 | CHECK_LOAD("reference_v20.slvs"); 27 | CHECK_SAVE("reference.slvs"); 28 | } 29 | 30 | TEST_CASE(reference_migrate_from_v22) { 31 | CHECK_LOAD("reference_v22.slvs"); 32 | CHECK_SAVE("reference.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/parallel/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/parallel/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/normal.png -------------------------------------------------------------------------------- /test/constraint/parallel/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/normal.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/parallel/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/parallel/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/perpendicular/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/perpendicular/normal.png -------------------------------------------------------------------------------- /test/constraint/perpendicular/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/perpendicular/normal.slvs -------------------------------------------------------------------------------- /test/constraint/perpendicular/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/perpendicular/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/perpendicular/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/perpendicular/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/perpendicular/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/points_coincident/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/points_coincident/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/normal.png -------------------------------------------------------------------------------- /test/constraint/points_coincident/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/normal.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/points_coincident/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/points_coincident/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/normal.png -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/normal.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/reference.png -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/reference.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/proj_pt_distance/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/proj_pt_distance/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(reference_roundtrip) { 20 | CHECK_LOAD("reference.slvs"); 21 | CHECK_RENDER("reference.png"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | 25 | TEST_CASE(reference_migrate_from_v20) { 26 | CHECK_LOAD("reference_v20.slvs"); 27 | CHECK_SAVE("reference.slvs"); 28 | } 29 | 30 | TEST_CASE(reference_migrate_from_v22) { 31 | CHECK_LOAD("reference_v22.slvs"); 32 | CHECK_SAVE("reference.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/reference.png -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/reference.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_face_distance/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_face_distance/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(reference_roundtrip) { 20 | CHECK_LOAD("reference.slvs"); 21 | CHECK_RENDER("reference.png"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | 25 | TEST_CASE(reference_migrate_from_v20) { 26 | CHECK_LOAD("reference_v20.slvs"); 27 | CHECK_SAVE("reference.slvs"); 28 | } 29 | 30 | TEST_CASE(reference_migrate_from_v22) { 31 | CHECK_LOAD("reference_v22.slvs"); 32 | CHECK_SAVE("reference.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/pt_in_plane/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_in_plane/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_in_plane/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_in_plane/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_in_plane/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_in_plane/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_in_plane/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_in_plane/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_in_plane/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/extended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/extended.png -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/extended.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/extended.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/reference.png -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/reference.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_line_distance/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_line_distance/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | 35 | TEST_CASE(reference_roundtrip) { 36 | CHECK_LOAD("reference.slvs"); 37 | CHECK_RENDER("reference.png"); 38 | CHECK_SAVE("reference.slvs"); 39 | } 40 | 41 | TEST_CASE(reference_migrate_from_v20) { 42 | CHECK_LOAD("reference_v20.slvs"); 43 | CHECK_SAVE("reference.slvs"); 44 | } 45 | 46 | TEST_CASE(reference_migrate_from_v22) { 47 | CHECK_LOAD("reference_v22.slvs"); 48 | CHECK_SAVE("reference.slvs"); 49 | } 50 | 51 | TEST_CASE(extended_render) { 52 | CHECK_LOAD("extended.slvs"); 53 | CHECK_RENDER("extended.png"); 54 | } 55 | -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/negative_dia.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_circle/negative_dia.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_circle/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_circle/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_circle/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_circle/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_circle/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(negative_dia) { 20 | CHECK_LOAD("negative_dia.slvs"); 21 | Entity *e = SK.GetEntity(hRequest { 4 }.entity(0)); 22 | CHECK_TRUE(e->CircleGetRadiusNum() > 0); 23 | } 24 | -------------------------------------------------------------------------------- /test/constraint/pt_on_face/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_face/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_on_face/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_face/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_face/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_face/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_face/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_face/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_face/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/pt_on_line/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/left_free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/left_free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/pt_on_line/left_free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/left_free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_on_line/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/right_free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/right_free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/pt_on_line/right_free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_on_line/right_free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/pt_on_line/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(left_free_in_3d_roundtrip) { 20 | CHECK_LOAD("left_free_in_3d.slvs"); 21 | CHECK_RENDER("left_free_in_3d.png"); 22 | CHECK_SAVE("left_free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(right_free_in_3d_roundtrip) { 26 | CHECK_LOAD("right_free_in_3d.slvs"); 27 | CHECK_RENDER("right_free_in_3d.png"); 28 | CHECK_SAVE("right_free_in_3d.slvs"); 29 | } 30 | 31 | TEST_CASE(free_in_3d_migrate_from_v20) { 32 | CHECK_LOAD("free_in_3d_v20.slvs"); 33 | CHECK_SAVE("left_free_in_3d.slvs"); 34 | } 35 | 36 | TEST_CASE(free_in_3d_migrate_from_v22) { 37 | CHECK_LOAD("free_in_3d_v22.slvs"); 38 | CHECK_SAVE("left_free_in_3d.slvs"); 39 | } 40 | -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/reference.png -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/reference.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_plane_distance/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_plane_distance/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(reference_roundtrip) { 20 | CHECK_LOAD("reference.slvs"); 21 | CHECK_RENDER("reference.png"); 22 | CHECK_SAVE("reference.slvs"); 23 | } 24 | 25 | TEST_CASE(reference_migrate_from_v20) { 26 | CHECK_LOAD("reference_v20.slvs"); 27 | CHECK_SAVE("reference.slvs"); 28 | } 29 | 30 | TEST_CASE(reference_migrate_from_v22) { 31 | CHECK_LOAD("reference_v22.slvs"); 32 | CHECK_SAVE("reference.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/normal.png -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/normal.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/reference.png -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/reference.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/reference.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/reference_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/reference_v20.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/reference_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/pt_pt_distance/reference_v22.slvs -------------------------------------------------------------------------------- /test/constraint/pt_pt_distance/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | 35 | TEST_CASE(reference_roundtrip) { 36 | CHECK_LOAD("reference.slvs"); 37 | CHECK_RENDER("reference.png"); 38 | CHECK_SAVE("reference.slvs"); 39 | } 40 | 41 | TEST_CASE(reference_migrate_from_v20) { 42 | CHECK_LOAD("reference_v20.slvs"); 43 | CHECK_SAVE("reference.slvs"); 44 | } 45 | 46 | TEST_CASE(reference_migrate_from_v22) { 47 | CHECK_LOAD("reference_v22.slvs"); 48 | CHECK_SAVE("reference.slvs"); 49 | } 50 | -------------------------------------------------------------------------------- /test/constraint/same_orientation/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/normal.png -------------------------------------------------------------------------------- /test/constraint/same_orientation/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/normal.slvs -------------------------------------------------------------------------------- /test/constraint/same_orientation/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/same_orientation/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/same_orientation/same_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/same_group.png -------------------------------------------------------------------------------- /test/constraint/same_orientation/same_group.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/same_orientation/same_group.slvs -------------------------------------------------------------------------------- /test/constraint/same_orientation/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(same_group_roundtrip) { 20 | CHECK_LOAD("same_group.slvs"); 21 | CHECK_RENDER("same_group.png"); 22 | CHECK_SAVE("same_group.slvs"); 23 | } 24 | -------------------------------------------------------------------------------- /test/constraint/symmetric/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/symmetric/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/normal.png -------------------------------------------------------------------------------- /test/constraint/symmetric/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/normal.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/symmetric_horiz/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_horiz/normal.png -------------------------------------------------------------------------------- /test/constraint/symmetric_horiz/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_horiz/normal.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_horiz/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_horiz/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_horiz/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_horiz/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_horiz/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/symmetric_line/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_line/normal.png -------------------------------------------------------------------------------- /test/constraint/symmetric_line/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_line/normal.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_line/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_line/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_line/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_line/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_line/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/symmetric_vert/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_vert/normal.png -------------------------------------------------------------------------------- /test/constraint/symmetric_vert/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_vert/normal.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_vert/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_vert/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_vert/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/symmetric_vert/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/symmetric_vert/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/constraint/vertical/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/line.png -------------------------------------------------------------------------------- /test/constraint/vertical/line.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/line.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/line_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/line_v20.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/line_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/line_v22.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/pt_pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/pt_pt.png -------------------------------------------------------------------------------- /test/constraint/vertical/pt_pt.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/pt_pt.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/pt_pt_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/pt_pt_v20.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/pt_pt_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/vertical/pt_pt_v22.slvs -------------------------------------------------------------------------------- /test/constraint/vertical/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(line_roundtrip) { 4 | CHECK_LOAD("line.slvs"); 5 | CHECK_RENDER("line.png"); 6 | CHECK_SAVE("line.slvs"); 7 | } 8 | 9 | TEST_CASE(line_migrate_from_v20) { 10 | CHECK_LOAD("line_v20.slvs"); 11 | CHECK_SAVE("line.slvs"); 12 | } 13 | 14 | TEST_CASE(line_migrate_from_v22) { 15 | CHECK_LOAD("line_v22.slvs"); 16 | CHECK_SAVE("line.slvs"); 17 | } 18 | 19 | TEST_CASE(pt_pt_roundtrip) { 20 | CHECK_LOAD("pt_pt.slvs"); 21 | CHECK_RENDER("pt_pt.png"); 22 | CHECK_SAVE("pt_pt.slvs"); 23 | } 24 | 25 | TEST_CASE(pt_pt_migrate_from_v20) { 26 | CHECK_LOAD("pt_pt_v20.slvs"); 27 | CHECK_SAVE("pt_pt.slvs"); 28 | } 29 | 30 | TEST_CASE(pt_pt_migrate_from_v22) { 31 | CHECK_LOAD("pt_pt_v22.slvs"); 32 | CHECK_SAVE("pt_pt.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/constraint/where_dragged/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/free_in_3d.png -------------------------------------------------------------------------------- /test/constraint/where_dragged/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/free_in_3d.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/normal.png -------------------------------------------------------------------------------- /test/constraint/where_dragged/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/normal.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/normal_v20.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/constraint/where_dragged/normal_v22.slvs -------------------------------------------------------------------------------- /test/constraint/where_dragged/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | -------------------------------------------------------------------------------- /test/core/locale/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(parseable) { 4 | for(auto locale : Locales()) { 5 | SetLocale(locale.Culture()); 6 | } 7 | CHECK_TRUE(true); // didn't crash 8 | } 9 | -------------------------------------------------------------------------------- /test/debugtool.cpp: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // Our entry point for exposing various internal mechanisms. 3 | // 4 | // Copyright 2017 whitequark 5 | //----------------------------------------------------------------------------- 6 | #include "solvespace.h" 7 | 8 | int main(int argc, char **argv) { 9 | std::vector args = Platform::InitCli(argc, argv); 10 | 11 | if(args.size() == 3 && args[1] == "expr") { 12 | std::string expr = args[2], err; 13 | Expr *e = Expr::Parse(expr.c_str(), &err); 14 | if(e == NULL) { 15 | fprintf(stderr, "cannot parse: %s\n", err.c_str()); 16 | } else { 17 | fprintf(stderr, "%g\n", e->Eval()); 18 | } 19 | FreeAllTemporary(); 20 | } else { 21 | fprintf(stderr, "Usage: %s \n", args[0].c_str()); 22 | //-----------------------------------------------------------------------------> 80 col */ 23 | fprintf(stderr, R"( 24 | Commands: 25 | expr [expr] 26 | Evaluate an expression. 27 | )"); 28 | } 29 | 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /test/group/link/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/link/normal.png -------------------------------------------------------------------------------- /test/group/link/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/link/normal.slvs -------------------------------------------------------------------------------- /test/group/link/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/link/normal_v20.slvs -------------------------------------------------------------------------------- /test/group/link/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/link/normal_v22.slvs -------------------------------------------------------------------------------- /test/group/link/rect_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/link/rect_v20.slvs -------------------------------------------------------------------------------- /test/group/link/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/group/translate_asy/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_asy/normal.png -------------------------------------------------------------------------------- /test/group/translate_asy/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_asy/normal.slvs -------------------------------------------------------------------------------- /test/group/translate_asy/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_asy/normal_v22.slvs -------------------------------------------------------------------------------- /test/group/translate_asy/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER_ISO("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v22) { 10 | CHECK_LOAD("normal_v22.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_inters) { 15 | CHECK_LOAD("normal.slvs"); 16 | 17 | Group *g = SK.GetGroup(SS.GW.activeGroup); 18 | g->GenerateDisplayItems(); 19 | SMesh *m = &g->displayMesh; 20 | 21 | SEdgeList el = {}; 22 | bool inters, leaks; 23 | SKdNode::From(m)->MakeCertainEdgesInto(&el, 24 | EdgeKind::SELF_INTER, /*coplanarIsInter=*/false, &inters, &leaks); 25 | el.Clear(); 26 | 27 | // The assembly is supposed to interfere. 28 | CHECK_TRUE(inters); 29 | } 30 | -------------------------------------------------------------------------------- /test/group/translate_nd/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_nd/normal.png -------------------------------------------------------------------------------- /test/group/translate_nd/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_nd/normal.slvs -------------------------------------------------------------------------------- /test/group/translate_nd/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/group/translate_nd/normal_v22.slvs -------------------------------------------------------------------------------- /test/group/translate_nd/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v22) { 10 | CHECK_LOAD("normal_v22.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | -------------------------------------------------------------------------------- /test/request/arc_of_circle/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/arc_of_circle/normal.png -------------------------------------------------------------------------------- /test/request/arc_of_circle/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/arc_of_circle/normal.slvs -------------------------------------------------------------------------------- /test/request/arc_of_circle/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/arc_of_circle/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/arc_of_circle/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/arc_of_circle/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/arc_of_circle/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/circle/free_in_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/free_in_3d.png -------------------------------------------------------------------------------- /test/request/circle/free_in_3d.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/free_in_3d.slvs -------------------------------------------------------------------------------- /test/request/circle/free_in_3d_dof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/free_in_3d_dof.png -------------------------------------------------------------------------------- /test/request/circle/free_in_3d_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/free_in_3d_v20.slvs -------------------------------------------------------------------------------- /test/request/circle/free_in_3d_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/free_in_3d_v22.slvs -------------------------------------------------------------------------------- /test/request/circle/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/normal.png -------------------------------------------------------------------------------- /test/request/circle/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/normal.slvs -------------------------------------------------------------------------------- /test/request/circle/normal_dof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/normal_dof.png -------------------------------------------------------------------------------- /test/request/circle/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/circle/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/circle/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/circle/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | 19 | TEST_CASE(free_in_3d_roundtrip) { 20 | CHECK_LOAD("free_in_3d.slvs"); 21 | CHECK_RENDER("free_in_3d.png"); 22 | CHECK_SAVE("free_in_3d.slvs"); 23 | } 24 | 25 | TEST_CASE(free_in_3d_migrate_from_v20) { 26 | CHECK_LOAD("free_in_3d_v20.slvs"); 27 | CHECK_SAVE("free_in_3d.slvs"); 28 | } 29 | 30 | TEST_CASE(free_in_3d_migrate_from_v22) { 31 | CHECK_LOAD("free_in_3d_v22.slvs"); 32 | CHECK_SAVE("free_in_3d.slvs"); 33 | } 34 | 35 | TEST_CASE(normal_dof) { 36 | CHECK_LOAD("normal.slvs"); 37 | SS.GenerateAll(SolveSpaceUI::Generate::ALL, /*andFindFree=*/true); 38 | CHECK_RENDER("normal_dof.png"); 39 | } 40 | 41 | TEST_CASE(free_in_3d_dof) { 42 | CHECK_LOAD("free_in_3d.slvs"); 43 | SS.GenerateAll(SolveSpaceUI::Generate::ALL, /*andFindFree=*/true); 44 | CHECK_RENDER_ISO("free_in_3d_dof.png"); 45 | } 46 | -------------------------------------------------------------------------------- /test/request/cubic/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic/normal.png -------------------------------------------------------------------------------- /test/request/cubic/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic/normal.slvs -------------------------------------------------------------------------------- /test/request/cubic/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/cubic/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/cubic/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/cubic_periodic/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic_periodic/normal.png -------------------------------------------------------------------------------- /test/request/cubic_periodic/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic_periodic/normal.slvs -------------------------------------------------------------------------------- /test/request/cubic_periodic/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic_periodic/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/cubic_periodic/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/cubic_periodic/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/cubic_periodic/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/datum_point/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/datum_point/normal.png -------------------------------------------------------------------------------- /test/request/datum_point/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/datum_point/normal.slvs -------------------------------------------------------------------------------- /test/request/datum_point/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/datum_point/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/datum_point/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/datum_point/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/datum_point/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/image/drawing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/image/drawing.png -------------------------------------------------------------------------------- /test/request/image/linked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/image/linked.png -------------------------------------------------------------------------------- /test/request/image/linked.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/image/linked.slvs -------------------------------------------------------------------------------- /test/request/image/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/image/normal.png -------------------------------------------------------------------------------- /test/request/image/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/image/normal.slvs -------------------------------------------------------------------------------- /test/request/image/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(linked_roundtrip) { 10 | CHECK_LOAD("linked.slvs"); 11 | CHECK_RENDER("linked.png"); 12 | CHECK_SAVE("linked.slvs"); 13 | } 14 | -------------------------------------------------------------------------------- /test/request/line_segment/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/line_segment/normal.png -------------------------------------------------------------------------------- /test/request/line_segment/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/line_segment/normal.slvs -------------------------------------------------------------------------------- /test/request/line_segment/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/line_segment/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/line_segment/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/line_segment/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/line_segment/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/ttf_text/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/ttf_text/normal.png -------------------------------------------------------------------------------- /test/request/ttf_text/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/ttf_text/normal.slvs -------------------------------------------------------------------------------- /test/request/ttf_text/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/ttf_text/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/ttf_text/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/ttf_text/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/ttf_text/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /test/request/workplane/normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/workplane/normal.png -------------------------------------------------------------------------------- /test/request/workplane/normal.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/workplane/normal.slvs -------------------------------------------------------------------------------- /test/request/workplane/normal_v20.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/workplane/normal_v20.slvs -------------------------------------------------------------------------------- /test/request/workplane/normal_v22.slvs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KmolYuan/solvespace/b22a5c5d6fd3816ca6f3f4b4e8dcb41222faa0c2/test/request/workplane/normal_v22.slvs -------------------------------------------------------------------------------- /test/request/workplane/test.cpp: -------------------------------------------------------------------------------- 1 | #include "harness.h" 2 | 3 | TEST_CASE(normal_roundtrip) { 4 | CHECK_LOAD("normal.slvs"); 5 | CHECK_RENDER("normal.png"); 6 | CHECK_SAVE("normal.slvs"); 7 | } 8 | 9 | TEST_CASE(normal_migrate_from_v20) { 10 | CHECK_LOAD("normal_v20.slvs"); 11 | CHECK_SAVE("normal.slvs"); 12 | } 13 | 14 | TEST_CASE(normal_migrate_from_v22) { 15 | CHECK_LOAD("normal_v22.slvs"); 16 | CHECK_SAVE("normal.slvs"); 17 | } 18 | -------------------------------------------------------------------------------- /wishlist.txt: -------------------------------------------------------------------------------- 1 | O(n*log(n)) assembly of edges into contours 2 | fix anti-aliased edge bug with filled contours 3 | crude DXF, HPGL import 4 | a request to import a plane thing 5 | make export assemble only contours in same group 6 | rotation of model view works about z of first point under cursor 7 | a way to kill a slow operation 8 | 9 | ----- 10 | rounding, as a special group 11 | associative entities from solid model, as a special group 12 | better level of detail 13 | some kind of import 14 | faster triangulation 15 | loop detection 16 | IGES export 17 | incremental regen of entities 18 | 19 | 20 | --------------------------------------------------------------------------------