From 0a3c63dcb14daadf1962dcd9b6ed06e34a0bc650 Mon Sep 17 00:00:00 2001 From: sunsets <845944018@qq.com> Date: Wed, 27 Dec 2023 18:02:35 +0800 Subject: [PATCH] PRUSA 2.7.0 --- .gitignore | 54 +- CMakeLists.txt | 27 +- CMakePresets.json | 46 + build_win.bat | 10 +- cmake/modules/AddCMakeProject.cmake | 79 + cmake/modules/Catch2/Catch.cmake | 175 - cmake/modules/Catch2/CatchAddTests.cmake | 106 - .../Catch2/ParseAndAddCatchTests.cmake | 225 - cmake/modules/UsewxWidgets.cmake | 75 + deps/+Blosc/Blosc.cmake | 21 + deps/+Boost/Boost.cmake | 25 + deps/{CGAL => +CGAL}/CGAL.cmake | 5 +- .../cgal/CGALConfigVersion.cmake | 0 deps/{CURL => +CURL}/CURL.cmake | 9 +- deps/+Catch2/Catch2.cmake | 6 + deps/{Cereal => +Cereal}/Cereal.cmake | 2 +- deps/{EXPAT => +EXPAT}/EXPAT.cmake | 14 +- deps/+GLEW/GLEW.cmake | 8 + deps/{GMP => +GMP}/GMP.cmake | 25 +- deps/{GMP => +GMP}/gmp/gmp.COPYING | 0 deps/{GMP => +GMP}/gmp/gmp.README | 0 deps/{GMP => +GMP}/gmp/include/gmp.h | 0 deps/+GMP/gmp/lib/win32/libgmp-10.dll | Bin 0 -> 498827 bytes deps/+GMP/gmp/lib/win32/libgmp-10.lib | Bin 0 -> 114286 bytes deps/+GMP/gmp/lib/win64/libgmp-10.dll | Bin 0 -> 543027 bytes deps/+GMP/gmp/lib/win64/libgmp-10.lib | Bin 0 -> 109180 bytes deps/+JPEG/JPEG.cmake | 9 + deps/+LibBGCode/LibBGCode.cmake | 34 + deps/+MPFR/MPFR.cmake | 44 + deps/{MPFR => +MPFR}/mpfr/include/mpf2mpfr.h | 0 deps/{MPFR => +MPFR}/mpfr/include/mpfr.h | 0 deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll | Bin 0 -> 431519 bytes deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib | Bin 0 -> 70696 bytes deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll | Bin 0 -> 436011 bytes deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib | Bin 0 -> 68992 bytes deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING | 0 deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING.LESSER | 0 deps/{MPFR => +MPFR}/mpfr/mpfr.README | 0 deps/{NLopt => +NLopt}/NLopt.cmake | 6 +- deps/{NanoSVG => +NanoSVG}/NanoSVG.cmake | 2 +- deps/{OCCT => +OCCT}/OCCT.cmake | 6 +- deps/{OCCT => +OCCT}/occt_toolkit.cmake | 0 deps/{OpenCSG => +OpenCSG}/CMakeLists.txt.in | 0 deps/+OpenCSG/OpenCSG.cmake | 8 + deps/{OpenEXR => +OpenEXR}/OpenEXR.cmake | 7 +- deps/{OpenEXR => +OpenEXR}/OpenEXR.patch | 0 deps/{OpenSSL => +OpenSSL}/OpenSSL.cmake | 4 +- deps/{OpenVDB => +OpenVDB}/OpenVDB.cmake | 18 +- deps/+PNG/CMakeLists.txt.patched | 989 + deps/{PNG => +PNG}/PNG.cmake | 20 +- deps/{PNG => +PNG}/PNG.patch | 0 deps/+Qhull/Qhull.cmake | 19 + deps/{TBB => +TBB}/TBB.cmake | 8 +- deps/+TIFF/TIFF.cmake | 15 + .../include/WebView2.h | 0 .../include/WebView2EnvironmentOptions.h | 0 .../lib/win32/WebView2Loader.dll | Bin .../lib/win32/WebView2Loader.dll.lib | Bin .../lib/win32/WebView2LoaderStatic.lib | Bin .../lib/win64/WebView2Loader.dll | Bin .../lib/win64/WebView2Loader.dll.lib | Bin .../lib/win64/WebView2LoaderStatic.lib | Bin .../0001-Respect-BUILD_SHARED_LIBS.patch | 0 deps/{ZLIB => +ZLIB}/ZLIB.cmake | 4 +- deps/+heatshrink/CMakeLists.txt | 93 + deps/+heatshrink/Config.cmake.in | 5 + deps/+heatshrink/heatshrink.cmake | 6 + .../0001-wxWidget-fix.patch | 0 .../{wxWidgets => +wxWidgets}/wxWidgets.cmake | 15 +- deps/Blosc/Blosc.cmake | 28 - deps/Blosc/blosc-mods.patch | 469 - deps/Boost/Boost.cmake | 168 - deps/Boost/Boost.patch | 23 - deps/Boost/user-config.jam | 1 - deps/CMakeLists.txt | 424 +- deps/CMakePresets.json | 57 + deps/GLEW/GLEW.cmake | 16 - deps/JPEG/JPEG.cmake | 8 - deps/MPFR/MPFR.cmake | 38 - deps/OpenCSG/OpenCSG.cmake | 17 - deps/Qhull/Qhull.cmake | 11 - deps/TIFF/TIFF.cmake | 13 - deps/autobuild.cmake | 63 + deps/deps-linux.cmake | 10 - deps/deps-macos.cmake | 96 - deps/deps-mingw.cmake | 8 - deps/deps-unix-common.cmake | 19 - deps/deps-windows.cmake | 68 - lib/Slic3r/Geometry.pm | 1 - resources/data/embossed_text.obj | 2555 ++ resources/data/hints.ini | 5 + .../PrusaSlicer-gcodeviewer-mac_128px.png | Bin 0 -> 12218 bytes resources/icons/PrusaSlicer-gcodeviewer.ico | Bin 0 -> 120297 bytes resources/icons/PrusaSlicer-gcodeviewer.svg | 73 + .../icons/PrusaSlicer-gcodeviewer_128px.png | Bin 0 -> 9332 bytes .../icons/PrusaSlicer-gcodeviewer_192px.png | Bin 0 -> 13981 bytes .../icons/PrusaSlicer-gcodeviewer_32px.png | Bin 0 -> 1795 bytes resources/icons/PrusaSlicer-mac_128px.png | Bin 0 -> 6890 bytes resources/icons/PrusaSlicer.icns | Bin 0 -> 299502 bytes resources/icons/PrusaSlicer.ico | Bin 0 -> 110206 bytes resources/icons/PrusaSlicer.png | Bin 0 -> 9554 bytes resources/icons/PrusaSlicer.svg | 5 + resources/icons/PrusaSlicer_128px.png | Bin 0 -> 8548 bytes resources/icons/PrusaSlicer_192px.png | Bin 0 -> 9259 bytes .../icons/PrusaSlicer_192px_grayscale.png | Bin 0 -> 9108 bytes .../icons/PrusaSlicer_192px_transparent.png | Bin 0 -> 9110 bytes resources/icons/PrusaSlicer_32px.png | Bin 0 -> 2895 bytes resources/icons/_thumbnail.png | Bin 1455 -> 0 bytes resources/icons/align_horizontal_center.svg | 7 + resources/icons/align_horizontal_left.svg | 7 + resources/icons/align_horizontal_right.svg | 7 + resources/icons/align_vertical_bottom.svg | 60 + resources/icons/align_vertical_center.svg | 60 + resources/icons/align_vertical_top.svg | 60 + resources/icons/burn.svg | 4 + resources/icons/convert_file.svg | 93 + resources/icons/custom-gcode_gcode.svg | 2 + resources/icons/custom-gcode_measure.svg | 1 + resources/icons/custom-gcode_object-info.svg | 1 + resources/icons/custom-gcode_single.svg | 1 + .../icons/custom-gcode_slicing-state.svg | 1 + .../custom-gcode_slicing-state_global.svg | 3 + resources/icons/custom-gcode_stats.svg | 1 + resources/icons/custom-gcode_vector-index.svg | 1 + resources/icons/custom-gcode_vector.svg | 1 + resources/icons/drop_down.svg | 3 + resources/icons/reflection_x.svg | 4 + resources/icons/reflection_y.svg | 4 + resources/icons/refresh.svg | 4 + resources/icons/scalar_param.svg | 21 + resources/icons/spin_dec.svg | 3 + resources/icons/spin_dec_act.svg | 3 + resources/icons/spin_inc.svg | 3 + resources/icons/spin_inc_act.svg | 3 + resources/icons/svg_modifier.svg | 4 + resources/icons/svg_negative.svg | 4 + resources/icons/svg_part.svg | 4 + resources/icons/toggle_off.svg | 5 + resources/icons/toggle_on.svg | 4 + resources/icons/vector_filament_param.svg | 28 + resources/icons/vector_param.svg | 28 + resources/localization/list.txt | 4 +- resources/shaders/110/mm_gouraud.vs | 4 +- resources/shaders/140/mm_gouraud.vs | 4 +- resources/shaders/ES/mm_gouraud.vs | 4 +- .../stl_thumb/STLThumbWinShellExtension.dll | Bin 0 -> 40416 bytes resources/stl_thumb/stl-thumb.exe | Bin 0 -> 9695200 bytes resources/web/guide/index.html | 32 + src/CMakeLists.txt | 4 +- src/QIDISlicer.cpp | 18 + src/QIDISlicer_app_msvc.cpp | 4 + src/clipper/clipper.cpp | 134 +- src/hints/HintsToPot.cpp | 3 +- src/libslic3r/AABBTreeLines.hpp | 26 +- src/libslic3r/AppConfig.cpp | 27 +- .../BeadingStrategyFactory.cpp | 43 +- .../WideningBeadingStrategy.cpp | 11 +- src/libslic3r/Arrange/ArrangeImpl.hpp | 2 +- .../Arrange/ArrangeSettingsDb_AppCfg.cpp | 53 +- .../Arrange/ArrangeSettingsDb_AppCfg.hpp | 1 + src/libslic3r/Arrange/ArrangeSettingsView.hpp | 113 + src/libslic3r/Arrange/Core/NFP/EdgeCache.cpp | 2 +- .../Core/NFP/Kernels/GravityKernel.hpp | 4 +- .../Arrange/Core/NFP/Kernels/KernelUtils.hpp | 1 + src/libslic3r/Arrange/Core/NFP/NFP.cpp | 2 +- src/libslic3r/Arrange/Tasks/FillBedTask.hpp | 1 + .../Arrange/Tasks/FillBedTaskImpl.hpp | 15 +- src/libslic3r/BoundingBox.hpp | 4 +- src/libslic3r/Brim.cpp | 18 +- src/libslic3r/CMakeLists.txt | 26 +- src/libslic3r/ClipperUtils.cpp | 25 +- src/libslic3r/ClipperUtils.hpp | 7 +- src/libslic3r/Color.cpp | 2 +- src/libslic3r/Config.cpp | 103 +- src/libslic3r/Config.hpp | 10 +- src/libslic3r/CustomGCode.cpp | 2 +- src/libslic3r/CutSurface.cpp | 32 +- src/libslic3r/CutUtils.cpp | 15 +- src/libslic3r/Emboss.cpp | 783 +- src/libslic3r/Emboss.hpp | 25 +- src/libslic3r/EmbossShape.hpp | 143 + src/libslic3r/ExPolygon.cpp | 17 + src/libslic3r/ExPolygon.hpp | 5 + src/libslic3r/ExPolygonSerialize.hpp | 28 + src/libslic3r/Extruder.cpp | 10 +- src/libslic3r/ExtrusionEntity.cpp | 52 +- src/libslic3r/ExtrusionEntity.hpp | 182 +- src/libslic3r/ExtrusionEntityCollection.cpp | 13 +- src/libslic3r/ExtrusionEntityCollection.hpp | 5 +- src/libslic3r/ExtrusionRole.hpp | 2 + src/libslic3r/ExtrusionSimulator.cpp | 4 +- src/libslic3r/Fill/Fill.cpp | 18 +- src/libslic3r/Format/3mf.cpp | 418 +- src/libslic3r/Format/AnycubicSLA.cpp | 56 +- src/libslic3r/Format/SVG.cpp | 97 + src/libslic3r/Format/SVG.hpp | 14 + src/libslic3r/Format/objparser.cpp | 45 +- src/libslic3r/GCode.cpp | 1877 +- src/libslic3r/GCode.hpp | 271 +- .../GCode/AvoidCrossingPerimeters.cpp | 6 +- .../GCode/AvoidCrossingPerimeters.hpp | 6 +- src/libslic3r/GCode/ConflictChecker.cpp | 109 +- src/libslic3r/GCode/ConflictChecker.hpp | 9 +- src/libslic3r/GCode/CoolingBuffer.cpp | 122 +- src/libslic3r/GCode/CoolingBuffer.hpp | 14 +- src/libslic3r/GCode/DataType.h | 144 - src/libslic3r/GCode/ExtrusionProcessor.cpp | 216 + src/libslic3r/GCode/ExtrusionProcessor.hpp | 314 +- src/libslic3r/GCode/GCodeProcessor.cpp | 502 +- src/libslic3r/GCode/GCodeProcessor.hpp | 30 +- src/libslic3r/{ => GCode}/GCodeWriter.cpp | 211 +- src/libslic3r/{ => GCode}/GCodeWriter.hpp | 69 +- src/libslic3r/GCode/LabelObjects.cpp | 191 + src/libslic3r/GCode/LabelObjects.hpp | 45 + src/libslic3r/GCode/PrintExtents.cpp | 6 +- src/libslic3r/GCode/SeamPlacer.cpp | 12 +- src/libslic3r/GCode/SeamPlacer.hpp | 2 +- src/libslic3r/GCode/SmoothPath.cpp | 269 + src/libslic3r/GCode/SmoothPath.hpp | 89 + src/libslic3r/GCode/SpiralVase.hpp | 3 + src/libslic3r/GCode/Thumbnails.cpp | 382 +- src/libslic3r/GCode/Thumbnails.hpp | 146 +- src/libslic3r/GCode/ToolOrdering.cpp | 16 + src/libslic3r/GCode/ToolOrdering.hpp | 1 + src/libslic3r/GCode/Wipe.cpp | 257 + src/libslic3r/GCode/Wipe.hpp | 73 + src/libslic3r/GCode/WipeTower.cpp | 23 +- src/libslic3r/GCode/WipeTower.hpp | 1 + src/libslic3r/GCode/WipeTowerIntegration.cpp | 257 + src/libslic3r/GCode/WipeTowerIntegration.hpp | 65 + src/libslic3r/GCodeReader.cpp | 42 +- src/libslic3r/GCodeReader.hpp | 7 +- src/libslic3r/Geometry.hpp | 7 + src/libslic3r/Geometry/ArcWelder.cpp | 933 + src/libslic3r/Geometry/ArcWelder.hpp | 505 + src/libslic3r/Geometry/Circle.cpp | 78 + src/libslic3r/Geometry/Circle.hpp | 51 +- src/libslic3r/IntersectionPoints.cpp | 191 +- src/libslic3r/IntersectionPoints.hpp | 17 +- src/libslic3r/Measure.cpp | 4 +- src/libslic3r/Model.cpp | 7 +- src/libslic3r/Model.hpp | 24 +- src/libslic3r/MultiPoint.cpp | 95 +- src/libslic3r/MultiPoint.hpp | 131 +- src/libslic3r/NSVGUtils.cpp | 566 +- src/libslic3r/NSVGUtils.hpp | 86 +- src/libslic3r/PerimeterGenerator.cpp | 65 +- src/libslic3r/PlaceholderParser.cpp | 3 +- src/libslic3r/Point.cpp | 10 +- src/libslic3r/Point.hpp | 39 +- src/libslic3r/Polygon.cpp | 31 + src/libslic3r/Polygon.hpp | 14 + src/libslic3r/Polyline.cpp | 27 + src/libslic3r/Polyline.hpp | 3 + src/libslic3r/Preset.cpp | 144 +- src/libslic3r/Preset.hpp | 58 +- src/libslic3r/PresetBundle.cpp | 50 +- src/libslic3r/PresetBundle.hpp | 3 + src/libslic3r/Print.cpp | 149 +- src/libslic3r/Print.hpp | 66 +- src/libslic3r/PrintBase.cpp | 6 +- src/libslic3r/PrintBase.hpp | 2 +- src/libslic3r/PrintConfig.cpp | 480 +- src/libslic3r/PrintConfig.hpp | 85 +- src/libslic3r/PrintObject.cpp | 69 +- src/libslic3r/ShortestPath.cpp | 36 +- src/libslic3r/ShortestPath.hpp | 13 +- src/libslic3r/StaticMap.hpp | 331 + src/libslic3r/Support/SupportCommon.cpp | 39 +- src/libslic3r/Support/SupportMaterial.cpp | 2 +- src/libslic3r/Support/TreeSupport.cpp | 5 +- src/libslic3r/SupportSpotsGenerator.cpp | 852 +- src/libslic3r/SupportSpotsGenerator.hpp | 110 +- src/libslic3r/Technologies.hpp | 6 +- src/libslic3r/TextConfiguration.hpp | 60 +- src/libslic3r/TriangleMesh.cpp | 2 +- src/libslic3r/TriangleMeshSlicer.cpp | 10 +- src/libslic3r/Triangulation.cpp | 2 +- src/libslic3r/Utils.hpp | 4 + src/libslic3r/utils.cpp | 11 + src/platform/osx/Info.plist.in | 17 + src/slic3r/CMakeLists.txt | 82 +- src/slic3r/GUI/3DScene.cpp | 29 +- src/slic3r/GUI/3DScene.hpp | 4 + src/slic3r/GUI/BackgroundSlicingProcess.cpp | 17 +- src/slic3r/GUI/BedShapeDialog.cpp | 10 +- src/slic3r/GUI/BitmapCache.cpp | 10 +- src/slic3r/GUI/BitmapComboBox.cpp | 8 +- src/slic3r/GUI/BitmapComboBox.hpp | 7 +- src/slic3r/GUI/ButtonsDescription.cpp | 2 +- src/slic3r/GUI/ConfigSnapshotDialog.cpp | 5 +- src/slic3r/GUI/ConfigWizard.cpp | 196 +- src/slic3r/GUI/ConfigWizard_private.hpp | 20 +- src/slic3r/GUI/EditGCodeDialog.cpp | 726 + src/slic3r/GUI/EditGCodeDialog.hpp | 234 + src/slic3r/GUI/ExtraRenderers.cpp | 29 +- src/slic3r/GUI/ExtruderSequenceDialog.cpp | 5 +- src/slic3r/GUI/ExtruderSequenceDialog.hpp | 6 +- src/slic3r/GUI/Field.cpp | 380 +- src/slic3r/GUI/Field.hpp | 90 +- src/slic3r/GUI/FirmwareDialog.cpp | 6 +- src/slic3r/GUI/GCodeViewer.cpp | 311 +- src/slic3r/GUI/GCodeViewer.hpp | 54 +- src/slic3r/GUI/GLCanvas3D.cpp | 205 +- src/slic3r/GUI/GLCanvas3D.hpp | 23 +- src/slic3r/GUI/GUI.cpp | 4 +- src/slic3r/GUI/GUI_App.cpp | 147 +- src/slic3r/GUI/GUI_App.hpp | 11 +- src/slic3r/GUI/GUI_Factories.cpp | 162 +- src/slic3r/GUI/GUI_Factories.hpp | 8 +- src/slic3r/GUI/GUI_ObjectList.cpp | 130 +- src/slic3r/GUI/GUI_ObjectList.hpp | 12 +- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 60 +- src/slic3r/GUI/GUI_ObjectManipulation.hpp | 13 +- src/slic3r/GUI/GUI_Utils.cpp | 7 +- src/slic3r/GUI/GUI_Utils.hpp | 24 +- src/slic3r/GUI/GalleryDialog.cpp | 12 +- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 64 +- src/slic3r/GUI/Gizmos/GLGizmoCut.hpp | 2 + src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp | 2425 +- src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp | 184 +- .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 13 +- .../GUI/Gizmos/GLGizmoMmuSegmentation.hpp | 12 +- src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp | 6 +- src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp | 2239 + src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp | 203 + src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp | 27 +- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 2 + src/slic3r/GUI/Gizmos/GLGizmosManager.hpp | 1 + src/slic3r/GUI/IconManager.cpp | 197 +- src/slic3r/GUI/IconManager.hpp | 5 +- src/slic3r/GUI/ImGuiWrapper.cpp | 49 +- src/slic3r/GUI/ImGuiWrapper.hpp | 9 + src/slic3r/GUI/Jobs/BoostThreadWorker.cpp | 7 +- .../GUI/Jobs/CreateFontNameImageJob.cpp | 2 +- .../GUI/Jobs/CreateFontStyleImagesJob.cpp | 3 +- src/slic3r/GUI/Jobs/EmbossJob.cpp | 1257 +- src/slic3r/GUI/Jobs/EmbossJob.hpp | 253 +- src/slic3r/GUI/Jobs/SLAImportJob.cpp | 2 +- src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp | 3 +- src/slic3r/GUI/KBShortcutsDialog.cpp | 3 +- src/slic3r/GUI/MainFrame.cpp | 240 +- src/slic3r/GUI/MainFrame.hpp | 1 - src/slic3r/GUI/MsgDialog.cpp | 79 +- src/slic3r/GUI/MsgDialog.hpp | 17 +- src/slic3r/GUI/NotificationManager.hpp | 7 +- src/slic3r/GUI/OG_CustomCtrl.cpp | 44 +- src/slic3r/GUI/OG_CustomCtrl.hpp | 4 +- src/slic3r/GUI/ObjectDataViewModel.cpp | 17 +- src/slic3r/GUI/ObjectDataViewModel.hpp | 5 + src/slic3r/GUI/OptionsGroup.cpp | 21 +- src/slic3r/GUI/OptionsGroup.hpp | 1 + src/slic3r/GUI/PhysicalPrinterDialog.cpp | 64 +- src/slic3r/GUI/PhysicalPrinterDialog.hpp | 7 +- src/slic3r/GUI/Plater.cpp | 635 +- src/slic3r/GUI/Plater.hpp | 15 +- src/slic3r/GUI/Preferences.cpp | 88 +- src/slic3r/GUI/PresetComboBoxes.cpp | 3 +- src/slic3r/GUI/PrintHostDialogs.cpp | 4 +- src/slic3r/GUI/RemovableDriveManager.cpp | 23 + src/slic3r/GUI/RemovableDriveManager.hpp | 4 + src/slic3r/GUI/Search.cpp | 13 +- src/slic3r/GUI/Search.hpp | 9 +- src/slic3r/GUI/Selection.cpp | 96 +- src/slic3r/GUI/Selection.hpp | 8 + src/slic3r/GUI/SurfaceDrag.cpp | 789 +- src/slic3r/GUI/SurfaceDrag.hpp | 75 +- src/slic3r/GUI/SysInfoDialog.cpp | 6 +- src/slic3r/GUI/Tab.cpp | 478 +- src/slic3r/GUI/Tab.hpp | 19 +- src/slic3r/GUI/TextLines.cpp | 29 +- src/slic3r/GUI/TextLines.hpp | 2 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 24 +- src/slic3r/GUI/UpdateDialogs.cpp | 12 + src/slic3r/GUI/UpdateDialogs.hpp | 8 +- src/slic3r/GUI/Widgets/BitmapToggleButton.cpp | 47 + src/slic3r/GUI/Widgets/BitmapToggleButton.hpp | 17 + src/slic3r/GUI/Widgets/Button.cpp | 81 +- src/slic3r/GUI/Widgets/Button.hpp | 10 +- src/slic3r/GUI/Widgets/CheckBox.cpp | 119 + src/slic3r/GUI/Widgets/CheckBox.hpp | 45 + src/slic3r/GUI/Widgets/ComboBox.cpp | 190 +- src/slic3r/GUI/Widgets/ComboBox.hpp | 26 +- src/slic3r/GUI/Widgets/DropDown.cpp | 237 +- src/slic3r/GUI/Widgets/DropDown.hpp | 30 +- src/slic3r/GUI/Widgets/Label.cpp | 179 +- src/slic3r/GUI/Widgets/Label.hpp | 12 +- src/slic3r/GUI/Widgets/SpinInput.cpp | 633 + src/slic3r/GUI/Widgets/SpinInput.hpp | 190 + src/slic3r/GUI/Widgets/StateColor.cpp | 106 +- src/slic3r/GUI/Widgets/StateColor.hpp | 9 - src/slic3r/GUI/Widgets/StateHandler.cpp | 17 +- src/slic3r/GUI/Widgets/StateHandler.hpp | 7 +- src/slic3r/GUI/Widgets/StaticBox.cpp | 117 +- src/slic3r/GUI/Widgets/StaticBox.hpp | 4 +- src/slic3r/GUI/Widgets/SwitchButton.cpp | 136 + src/slic3r/GUI/Widgets/SwitchButton.hpp | 42 + src/slic3r/GUI/Widgets/TextInput.cpp | 169 +- src/slic3r/GUI/Widgets/TextInput.hpp | 27 +- src/slic3r/GUI/Widgets/UIColors.hpp | 18 + src/slic3r/GUI/WifiConfigDialog.cpp | 304 + src/slic3r/GUI/WifiConfigDialog.hpp | 55 + src/slic3r/GUI/WipeTowerDialog.cpp | 67 +- src/slic3r/GUI/WipeTowerDialog.hpp | 13 +- src/slic3r/GUI/calib_dlg.hpp | 4 +- src/slic3r/GUI/wxExtensions.cpp | 105 +- src/slic3r/GUI/wxExtensions.hpp | 47 +- src/slic3r/Utils/Duet.cpp | 40 +- src/slic3r/Utils/Duet.hpp | 2 +- src/slic3r/Utils/EmbossStyleManager.cpp | 461 +- src/slic3r/Utils/EmbossStyleManager.hpp | 87 +- src/slic3r/Utils/EmbossStylesSerializable.cpp | 201 - src/slic3r/Utils/EmbossStylesSerializable.hpp | 58 - src/slic3r/Utils/FixModelByWin10.cpp | 4 +- src/slic3r/Utils/Http.cpp | 3 +- src/slic3r/Utils/PresetUpdater.cpp | 54 +- src/slic3r/Utils/PresetUpdater.hpp | 3 +- src/slic3r/Utils/RaycastManager.cpp | 21 +- src/slic3r/Utils/RaycastManager.hpp | 7 + src/slic3r/Utils/WifiScanner.cpp | 460 + src/slic3r/Utils/WifiScanner.hpp | 40 + src/slic3r/Utils/WifiScannerMac.h | 21 + src/slic3r/Utils/WifiScannerMac.mm | 94 + src/slic3r/Utils/WxFontUtils.cpp | 5 +- src/slic3r/Utils/WxFontUtils.hpp | 2 +- t/gcode.t | 17 +- t/geometry.t | 95 - t/layers.t | 1 + t/retraction.t | 4 +- tests/CMakeLists.txt | 15 +- tests/arrange/test_arrange.cpp | 8 +- tests/arrange/test_arrange_integration.cpp | 4 +- tests/catch2/LICENSE.txt | 23 - tests/catch2/VERSION.txt | 2 - tests/catch2/catch.hpp | 17937 -------- tests/catch2/catch_reporter_automake.hpp | 62 - tests/catch2/catch_reporter_tap.hpp | 253 - tests/catch2/catch_reporter_teamcity.hpp | 220 - tests/data/20mm_cube.obj | 20 + tests/data/2x20x10.obj | 20 + tests/data/A.obj | 1867 + tests/data/A_upsidedown.obj | 2504 ++ tests/data/U_overhang.obj | 76 + tests/data/V.obj | 68 + tests/data/V_standing.obj | 38 + tests/data/bridge.obj | 44 + tests/data/contour_neighbor.svg | 4 + tests/data/cube_with_concave_hole.obj | 72 + .../data/cube_with_concave_hole_enlarged.obj | 112 + ...be_with_concave_hole_enlarged_standing.obj | 112 + tests/data/cube_with_hole.obj | 48 + tests/data/extruder_idler.obj | 7164 +++ tests/data/extruder_idler_quads.obj | 7348 ++++ tests/data/frog_legs.obj | 36702 ++++++++++++++++ tests/data/ipadstand.obj | 86 + tests/data/overhang.obj | 179 + tests/data/prusaparts.cpp | 5981 +++ tests/data/prusaparts.hpp | 14 + tests/data/pyramid.obj | 11 + tests/data/simplification.obj | 46 + tests/data/sloping_hole.obj | 204 + tests/data/small_dorito.obj | 14 + tests/data/two_hollow_squares.obj | 144 + tests/fff_print/test_cooling.cpp | 16 +- tests/fff_print/test_data.cpp | 106 +- tests/fff_print/test_extrusion_entity.cpp | 44 +- tests/fff_print/test_gcode.cpp | 220 +- tests/fff_print/test_gcodewriter.cpp | 63 +- tests/libslic3r/CMakeLists.txt | 7 +- tests/libslic3r/test_arachne.cpp | 19 + tests/libslic3r/test_arc_welder.cpp | 511 + tests/libslic3r/test_cut_surface.cpp | 5 +- tests/libslic3r/test_emboss.cpp | 113 +- tests/libslic3r/test_expolygon.cpp | 96 + tests/libslic3r/test_geometry.cpp | 102 +- tests/libslic3r/test_polyline.cpp | 18 + tests/libslic3r/test_static_map.cpp | 98 + .../test_support_spots_generator.cpp | 163 + tests/slic3rutils/CMakeLists.txt | 2 +- tests/slic3rutils/slic3r_jobs_tests.cpp | 12 +- tests/thumbnails/CMakeLists.txt | 13 + .../thumbnails/test_thumbnails_ini_string.cpp | 235 + .../test_thumbnails_input_string.cpp | 152 + tests/thumbnails/thumbnails_tests_main.cpp | 1 + xs/CMakeLists.txt | 4 +- xs/src/perlglue.cpp | 2 +- xs/xsp/Geometry.xsp | 8 - xs/xsp/Polygon.xsp | 1 - 488 files changed, 92371 insertions(+), 29443 deletions(-) create mode 100644 CMakePresets.json create mode 100644 cmake/modules/AddCMakeProject.cmake delete mode 100644 cmake/modules/Catch2/Catch.cmake delete mode 100644 cmake/modules/Catch2/CatchAddTests.cmake delete mode 100644 cmake/modules/Catch2/ParseAndAddCatchTests.cmake create mode 100644 cmake/modules/UsewxWidgets.cmake create mode 100644 deps/+Blosc/Blosc.cmake create mode 100644 deps/+Boost/Boost.cmake rename deps/{CGAL => +CGAL}/CGAL.cmake (85%) rename deps/{CGAL => +CGAL}/cgal/CGALConfigVersion.cmake (100%) rename deps/{CURL => +CURL}/CURL.cmake (93%) create mode 100644 deps/+Catch2/Catch2.cmake rename deps/{Cereal => +Cereal}/Cereal.cmake (88%) rename deps/{EXPAT => +EXPAT}/EXPAT.cmake (56%) create mode 100644 deps/+GLEW/GLEW.cmake rename deps/{GMP => +GMP}/GMP.cmake (68%) rename deps/{GMP => +GMP}/gmp/gmp.COPYING (100%) rename deps/{GMP => +GMP}/gmp/gmp.README (100%) rename deps/{GMP => +GMP}/gmp/include/gmp.h (100%) create mode 100644 deps/+GMP/gmp/lib/win32/libgmp-10.dll create mode 100644 deps/+GMP/gmp/lib/win32/libgmp-10.lib create mode 100644 deps/+GMP/gmp/lib/win64/libgmp-10.dll create mode 100644 deps/+GMP/gmp/lib/win64/libgmp-10.lib create mode 100644 deps/+JPEG/JPEG.cmake create mode 100644 deps/+LibBGCode/LibBGCode.cmake create mode 100644 deps/+MPFR/MPFR.cmake rename deps/{MPFR => +MPFR}/mpfr/include/mpf2mpfr.h (100%) rename deps/{MPFR => +MPFR}/mpfr/include/mpfr.h (100%) create mode 100644 deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll create mode 100644 deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib create mode 100644 deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll create mode 100644 deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib rename deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING (100%) rename deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING.LESSER (100%) rename deps/{MPFR => +MPFR}/mpfr/mpfr.README (100%) rename deps/{NLopt => +NLopt}/NLopt.cmake (79%) rename deps/{NanoSVG => +NanoSVG}/NanoSVG.cmake (93%) rename deps/{OCCT => +OCCT}/OCCT.cmake (90%) rename deps/{OCCT => +OCCT}/occt_toolkit.cmake (100%) rename deps/{OpenCSG => +OpenCSG}/CMakeLists.txt.in (100%) create mode 100644 deps/+OpenCSG/OpenCSG.cmake rename deps/{OpenEXR => +OpenEXR}/OpenEXR.cmake (83%) rename deps/{OpenEXR => +OpenEXR}/OpenEXR.patch (100%) rename deps/{OpenSSL => +OpenSSL}/OpenSSL.cmake (90%) rename deps/{OpenVDB => +OpenVDB}/OpenVDB.cmake (62%) create mode 100644 deps/+PNG/CMakeLists.txt.patched rename deps/{PNG => +PNG}/PNG.cmake (54%) rename deps/{PNG => +PNG}/PNG.patch (100%) create mode 100644 deps/+Qhull/Qhull.cmake rename deps/{TBB => +TBB}/TBB.cmake (73%) create mode 100644 deps/+TIFF/TIFF.cmake rename deps/{WebView2 => +WebView2}/include/WebView2.h (100%) rename deps/{WebView2 => +WebView2}/include/WebView2EnvironmentOptions.h (100%) rename deps/{WebView2 => +WebView2}/lib/win32/WebView2Loader.dll (100%) rename deps/{WebView2 => +WebView2}/lib/win32/WebView2Loader.dll.lib (100%) rename deps/{WebView2 => +WebView2}/lib/win32/WebView2LoaderStatic.lib (100%) rename deps/{WebView2 => +WebView2}/lib/win64/WebView2Loader.dll (100%) rename deps/{WebView2 => +WebView2}/lib/win64/WebView2Loader.dll.lib (100%) rename deps/{WebView2 => +WebView2}/lib/win64/WebView2LoaderStatic.lib (100%) rename deps/{ZLIB => +ZLIB}/0001-Respect-BUILD_SHARED_LIBS.patch (100%) rename deps/{ZLIB => +ZLIB}/ZLIB.cmake (77%) create mode 100644 deps/+heatshrink/CMakeLists.txt create mode 100644 deps/+heatshrink/Config.cmake.in create mode 100644 deps/+heatshrink/heatshrink.cmake rename deps/{wxWidgets => +wxWidgets}/0001-wxWidget-fix.patch (100%) rename deps/{wxWidgets => +wxWidgets}/wxWidgets.cmake (86%) delete mode 100644 deps/Blosc/Blosc.cmake delete mode 100644 deps/Blosc/blosc-mods.patch delete mode 100644 deps/Boost/Boost.cmake delete mode 100644 deps/Boost/Boost.patch delete mode 100644 deps/Boost/user-config.jam create mode 100644 deps/CMakePresets.json delete mode 100644 deps/GLEW/GLEW.cmake delete mode 100644 deps/JPEG/JPEG.cmake delete mode 100644 deps/MPFR/MPFR.cmake delete mode 100644 deps/OpenCSG/OpenCSG.cmake delete mode 100644 deps/Qhull/Qhull.cmake delete mode 100644 deps/TIFF/TIFF.cmake create mode 100644 deps/autobuild.cmake delete mode 100644 deps/deps-linux.cmake delete mode 100644 deps/deps-macos.cmake delete mode 100644 deps/deps-mingw.cmake delete mode 100644 deps/deps-unix-common.cmake delete mode 100644 deps/deps-windows.cmake create mode 100644 resources/data/embossed_text.obj create mode 100644 resources/icons/PrusaSlicer-gcodeviewer-mac_128px.png create mode 100644 resources/icons/PrusaSlicer-gcodeviewer.ico create mode 100644 resources/icons/PrusaSlicer-gcodeviewer.svg create mode 100644 resources/icons/PrusaSlicer-gcodeviewer_128px.png create mode 100644 resources/icons/PrusaSlicer-gcodeviewer_192px.png create mode 100644 resources/icons/PrusaSlicer-gcodeviewer_32px.png create mode 100644 resources/icons/PrusaSlicer-mac_128px.png create mode 100644 resources/icons/PrusaSlicer.icns create mode 100644 resources/icons/PrusaSlicer.ico create mode 100644 resources/icons/PrusaSlicer.png create mode 100644 resources/icons/PrusaSlicer.svg create mode 100644 resources/icons/PrusaSlicer_128px.png create mode 100644 resources/icons/PrusaSlicer_192px.png create mode 100644 resources/icons/PrusaSlicer_192px_grayscale.png create mode 100644 resources/icons/PrusaSlicer_192px_transparent.png create mode 100644 resources/icons/PrusaSlicer_32px.png delete mode 100644 resources/icons/_thumbnail.png create mode 100644 resources/icons/align_horizontal_center.svg create mode 100644 resources/icons/align_horizontal_left.svg create mode 100644 resources/icons/align_horizontal_right.svg create mode 100644 resources/icons/align_vertical_bottom.svg create mode 100644 resources/icons/align_vertical_center.svg create mode 100644 resources/icons/align_vertical_top.svg create mode 100644 resources/icons/burn.svg create mode 100644 resources/icons/convert_file.svg create mode 100644 resources/icons/custom-gcode_gcode.svg create mode 100644 resources/icons/custom-gcode_measure.svg create mode 100644 resources/icons/custom-gcode_object-info.svg create mode 100644 resources/icons/custom-gcode_single.svg create mode 100644 resources/icons/custom-gcode_slicing-state.svg create mode 100644 resources/icons/custom-gcode_slicing-state_global.svg create mode 100644 resources/icons/custom-gcode_stats.svg create mode 100644 resources/icons/custom-gcode_vector-index.svg create mode 100644 resources/icons/custom-gcode_vector.svg create mode 100644 resources/icons/drop_down.svg create mode 100644 resources/icons/reflection_x.svg create mode 100644 resources/icons/reflection_y.svg create mode 100644 resources/icons/refresh.svg create mode 100644 resources/icons/scalar_param.svg create mode 100644 resources/icons/spin_dec.svg create mode 100644 resources/icons/spin_dec_act.svg create mode 100644 resources/icons/spin_inc.svg create mode 100644 resources/icons/spin_inc_act.svg create mode 100644 resources/icons/svg_modifier.svg create mode 100644 resources/icons/svg_negative.svg create mode 100644 resources/icons/svg_part.svg create mode 100644 resources/icons/toggle_off.svg create mode 100644 resources/icons/toggle_on.svg create mode 100644 resources/icons/vector_filament_param.svg create mode 100644 resources/icons/vector_param.svg create mode 100644 resources/stl_thumb/STLThumbWinShellExtension.dll create mode 100644 resources/stl_thumb/stl-thumb.exe create mode 100644 src/libslic3r/EmbossShape.hpp create mode 100644 src/libslic3r/ExPolygonSerialize.hpp create mode 100644 src/libslic3r/Format/SVG.cpp create mode 100644 src/libslic3r/Format/SVG.hpp delete mode 100644 src/libslic3r/GCode/DataType.h create mode 100644 src/libslic3r/GCode/ExtrusionProcessor.cpp rename src/libslic3r/{ => GCode}/GCodeWriter.cpp (81%) rename src/libslic3r/{ => GCode}/GCodeWriter.hpp (82%) create mode 100644 src/libslic3r/GCode/LabelObjects.cpp create mode 100644 src/libslic3r/GCode/LabelObjects.hpp create mode 100644 src/libslic3r/GCode/SmoothPath.cpp create mode 100644 src/libslic3r/GCode/SmoothPath.hpp create mode 100644 src/libslic3r/GCode/Wipe.cpp create mode 100644 src/libslic3r/GCode/Wipe.hpp create mode 100644 src/libslic3r/GCode/WipeTowerIntegration.cpp create mode 100644 src/libslic3r/GCode/WipeTowerIntegration.hpp create mode 100644 src/libslic3r/Geometry/ArcWelder.cpp create mode 100644 src/libslic3r/Geometry/ArcWelder.hpp create mode 100644 src/libslic3r/StaticMap.hpp create mode 100644 src/slic3r/GUI/EditGCodeDialog.cpp create mode 100644 src/slic3r/GUI/EditGCodeDialog.hpp create mode 100644 src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp create mode 100644 src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp create mode 100644 src/slic3r/GUI/Widgets/BitmapToggleButton.cpp create mode 100644 src/slic3r/GUI/Widgets/BitmapToggleButton.hpp create mode 100644 src/slic3r/GUI/Widgets/CheckBox.cpp create mode 100644 src/slic3r/GUI/Widgets/CheckBox.hpp create mode 100644 src/slic3r/GUI/Widgets/SpinInput.cpp create mode 100644 src/slic3r/GUI/Widgets/SpinInput.hpp create mode 100644 src/slic3r/GUI/Widgets/SwitchButton.cpp create mode 100644 src/slic3r/GUI/Widgets/SwitchButton.hpp create mode 100644 src/slic3r/GUI/Widgets/UIColors.hpp create mode 100644 src/slic3r/GUI/WifiConfigDialog.cpp create mode 100644 src/slic3r/GUI/WifiConfigDialog.hpp delete mode 100644 src/slic3r/Utils/EmbossStylesSerializable.cpp delete mode 100644 src/slic3r/Utils/EmbossStylesSerializable.hpp create mode 100644 src/slic3r/Utils/WifiScanner.cpp create mode 100644 src/slic3r/Utils/WifiScanner.hpp create mode 100644 src/slic3r/Utils/WifiScannerMac.h create mode 100644 src/slic3r/Utils/WifiScannerMac.mm delete mode 100644 t/geometry.t delete mode 100644 tests/catch2/LICENSE.txt delete mode 100644 tests/catch2/VERSION.txt delete mode 100644 tests/catch2/catch.hpp delete mode 100644 tests/catch2/catch_reporter_automake.hpp delete mode 100644 tests/catch2/catch_reporter_tap.hpp delete mode 100644 tests/catch2/catch_reporter_teamcity.hpp create mode 100644 tests/data/20mm_cube.obj create mode 100644 tests/data/2x20x10.obj create mode 100644 tests/data/A.obj create mode 100644 tests/data/A_upsidedown.obj create mode 100644 tests/data/U_overhang.obj create mode 100644 tests/data/V.obj create mode 100644 tests/data/V_standing.obj create mode 100644 tests/data/bridge.obj create mode 100644 tests/data/contour_neighbor.svg create mode 100644 tests/data/cube_with_concave_hole.obj create mode 100644 tests/data/cube_with_concave_hole_enlarged.obj create mode 100644 tests/data/cube_with_concave_hole_enlarged_standing.obj create mode 100644 tests/data/cube_with_hole.obj create mode 100644 tests/data/extruder_idler.obj create mode 100644 tests/data/extruder_idler_quads.obj create mode 100644 tests/data/frog_legs.obj create mode 100644 tests/data/ipadstand.obj create mode 100644 tests/data/overhang.obj create mode 100644 tests/data/prusaparts.cpp create mode 100644 tests/data/prusaparts.hpp create mode 100644 tests/data/pyramid.obj create mode 100644 tests/data/simplification.obj create mode 100644 tests/data/sloping_hole.obj create mode 100644 tests/data/small_dorito.obj create mode 100644 tests/data/two_hollow_squares.obj create mode 100644 tests/libslic3r/test_arc_welder.cpp create mode 100644 tests/libslic3r/test_static_map.cpp create mode 100644 tests/libslic3r/test_support_spots_generator.cpp create mode 100644 tests/thumbnails/CMakeLists.txt create mode 100644 tests/thumbnails/test_thumbnails_ini_string.cpp create mode 100644 tests/thumbnails/test_thumbnails_input_string.cpp create mode 100644 tests/thumbnails/thumbnails_tests_main.cpp diff --git a/.gitignore b/.gitignore index 259148f..d17030c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,24 @@ -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo +Build +Build.bat +/build/ +MYMETA.json +MYMETA.yml +_build +blib +xs/buildtmp *.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app +MANIFEST.bak +xs/MANIFEST.bak +xs/assertlib* +.init_bundle.ini +.vs/* +local-lib +/src/TAGS +/.vscode/ +build-linux/* +deps/build* +deps/build-linux/* +**/.DS_Store +**/.idea/ +.pkg_cache +CMakeUserPresets.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 94239ba..354e264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,7 @@ option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) option(SLIC3R_PERL_XS "Compile XS Perl module and enable Perl unit and integration tests" 0) option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0) option(SLIC3R_UBSAN "Enable UBSan on Clang and GCC" 0) -option(SLIC3R_ENABLE_FORMAT_STEP "Enable compilation of STEP file support" 1) +option(SLIC3R_ENABLE_FORMAT_STEP "Enable compilation of STEP file support" ON) # If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable. CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION "Allow perfoming desktop integration during runtime" 1 "NOT SLIC3R_FHS" 0) @@ -50,6 +50,14 @@ if (SLIC3R_STATIC) set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) endif () +# Dependency build management +option(${PROJECT_NAME}_BUILD_DEPS "Build dependencies before the project" OFF) +option(${PROJECT_NAME}_DEPS_OUTPUT_QUIET "Don't print build output for dependencies" OFF) +set(${PROJECT_NAME}_DEPS_PRESET "default" CACHE STRING "Preset of the dependencies when ${PROJECT_NAME}_BUILD_DEPS is ON") +set(${PROJECT_NAME}_DEPS_BUILD_DIR "" CACHE PATH "Binary dir of the dependencies build when ${PROJECT_NAME}_BUILD_DEPS is ON") +if (${PROJECT_NAME}_BUILD_DEPS) + include(deps/autobuild.cmake) +endif () if (APPLE) set(CMAKE_FIND_FRAMEWORK LAST) set(CMAKE_FIND_APPBUNDLE LAST) @@ -175,7 +183,7 @@ if(WIN32) else() message("WIN10SDK_PATH is invalid: ${WIN10SDK_PATH}") message("${WIN10SDK_PATH}/include/winrt/windows.graphics.printing3d.h was not found") - message("STL fixing by the Netfabb service will not be compiled") + message("STL fixing by WinSDK will not be compiled") unset(WIN10SDK_PATH) endif() else() @@ -183,16 +191,16 @@ if(WIN32) set(WIN10SDK_INCLUDE_PATH "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}") if (NOT EXISTS "${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h") message("${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h was not found") - message("STL fixing by the Netfabb service will not be compiled") + message("STL fixing by WinSDK will not be compiled") unset(WIN10SDK_INCLUDE_PATH) endif() endif() if(WIN10SDK_INCLUDE_PATH) - message("Building with Win10 Netfabb STL fixing service support") + message("Building with Win10 STL fixing service support") add_definitions(-DHAS_WIN10SDK) include_directories("${WIN10SDK_INCLUDE_PATH}") else() - message("Building without Win10 Netfabb STL fixing service support") + message("Building without Win10 STL fixing service support") endif() endif() @@ -582,17 +590,12 @@ function(qidislicer_copy_dlls target) # This has to be a separate target due to the windows command line lenght limits add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll ${_out_dir} + COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/+GMP/gmp/lib/win${_bits}/libgmp-10.dll ${_out_dir} COMMENT "Copy gmp runtime to build tree" VERBATIM) add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll ${_out_dir} - COMMENT "Copy mpfr runtime to build tree" - VERBATIM) - - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/WebView2Loader.dll ${_out_dir} + COMMAND ${CMAKE_COMMAND} -E copy ${TOP_LEVEL_PROJECT_DIR}/deps/+MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll ${_out_dir} COMMENT "Copy mpfr runtime to build tree" VERBATIM) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..766053c --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,46 @@ +{ + "version": 3, + "configurePresets": [ + { + "name": "default", + "displayName": "Default Config", + "description": "Building with statically linked dependencies", + "binaryDir": "${sourceDir}/build-default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "SLIC3R_STATIC": true, + "SLIC3R_GTK": "3", + "SLIC3R_ENC_CHECK": false, + "SLIC3R_PCH": true, + "CMAKE_INSTALL_PREFIX": "${sourceDir}/build-default/dist", + "PrusaSlicer_DEPS_PRESET": "default", + "PrusaSlicer_DEPS_OUTPUT_QUIET": false + } + }, + { + "name": "no-occt", + "displayName": "Without STEP", + "description": "Building with statically linked dependencies without STEP file support", + "inherits": "default", + "binaryDir": "${sourceDir}/build-no-occt", + "cacheVariables": { + "SLIC3R_ENABLE_FORMAT_STEP": false, + "QIDISlicer_DEPS_PRESET": "no-occt" + } + }, + { + "name": "shareddeps", + "displayName": "Shared dependencies", + "description": "Building with dynamically linked dependencies from the system", + "binaryDir": "${sourceDir}/shareddeps", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "SLIC3R_STATIC": false, + "SLIC3R_GTK": "3", + "SLIC3R_ENC_CHECK": false, + "SLIC3R_PCH": true, + "QIDISlicer_BUILD_DEPS": false + } + } + ] +} \ No newline at end of file diff --git a/build_win.bat b/build_win.bat index 0afdfb3..e5c188c 100644 --- a/build_win.bat +++ b/build_win.bat @@ -63,10 +63,14 @@ SET PS_DEPS_PATH_FILE_NAME=.DEPS_PATH.txt SET PS_DEPS_PATH_FILE=%~dp0deps\build\%PS_DEPS_PATH_FILE_NAME% SET PS_CONFIG_LIST="Debug;MinSizeRel;Release;RelWithDebInfo" -REM The officially supported toolchain version is 16 (Visual Studio 2019) -REM TODO: Update versions after Boost gets rolled to 1.78 or later +REM Update this script for new versions by setting PS_VERSION_SUPPORTED to a +REM new minimum version and setting PS_VERSION_EXCEEDED to the maximum supported +REM version plus one. +REM The officially supported toolchain versions are: +REM Minimum: 16 (Visual Studio 2019) +REM Maximum: 17 (Visual Studio 2022) SET PS_VERSION_SUPPORTED=16 -SET PS_VERSION_EXCEEDED=17 +SET PS_VERSION_EXCEEDED=18 SET VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe IF NOT EXIST "%VSWHERE%" SET VSWHERE=%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe FOR /F "tokens=4 USEBACKQ delims=." %%I IN (`"%VSWHERE%" -nologo -property productId`) DO SET PS_PRODUCT_DEFAULT=%%I diff --git a/cmake/modules/AddCMakeProject.cmake b/cmake/modules/AddCMakeProject.cmake new file mode 100644 index 0000000..c2cbad6 --- /dev/null +++ b/cmake/modules/AddCMakeProject.cmake @@ -0,0 +1,79 @@ +include(ExternalProject) +include(ProcessorCount) + +set(${PROJECT_NAME}_DEP_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/destdir/usr/local" CACHE PATH "Destination directory") +set(${PROJECT_NAME}_DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/downloads CACHE PATH "Path for downloaded source packages.") +option(${PROJECT_NAME}_DEP_BUILD_VERBOSE "Use verbose output for each dependency build" OFF) + +get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) + message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.") +endif () + +# The value of CMAKE_BUILD_TYPE will be used for building each dependency even if the +# generator is multi-config. Use this var to specify build type regardless of the generator. +function(add_cmake_project projectname) + cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN}) + + set(_pcount ${DEP_${projectname}_MAX_THREADS}) + + if (NOT _pcount) + set(_pcount ${DEP_MAX_THREADS}) + endif () + + if (NOT _pcount) + ProcessorCount(_pcount) + endif () + + if (_pcount EQUAL 0) + set(_pcount 1) + endif () + + set(_build_j "-j${_pcount}") + if (CMAKE_GENERATOR MATCHES "Visual Studio") + set(_build_j "-m:${_pcount}") + endif () + + string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type_upper) + set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) + if (_is_multi) + set(_configs_line "") + endif () + + set(_verbose_switch "") + if (${PROJECT_NAME}_DEP_BUILD_VERBOSE) + if (CMAKE_GENERATOR MATCHES "Ninja") + set(_verbose_switch "--verbose") + elseif (CMAKE_GENERATOR MATCHES "Visual Studio") + set(_verbose_switch "-v:d") + endif () + endif () + + ExternalProject_Add( + dep_${projectname} + EXCLUDE_FROM_ALL ON # Not built by default, dep_${projectname} needs to be added to ALL target + INSTALL_DIR ${${PROJECT_NAME}_DEP_INSTALL_PREFIX} + DOWNLOAD_DIR ${${PROJECT_NAME}_DEP_DOWNLOAD_DIR}/${projectname} + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/builds/${projectname} + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX:STRING=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} + -DCMAKE_MODULE_PATH:STRING=${CMAKE_MODULE_PATH} + -DCMAKE_PREFIX_PATH:STRING=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} + -DCMAKE_DEBUG_POSTFIX:STRING=${CMAKE_DEBUG_POSTFIX} + -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} + -DCMAKE_CXX_FLAGS_${_build_type_upper}:STRING=${CMAKE_CXX_FLAGS_${_build_type_upper}} + -DCMAKE_C_FLAGS_${_build_type_upper}:STRING=${CMAKE_C_FLAGS_${_build_type_upper}} + -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} + "${_configs_line}" + ${DEP_CMAKE_OPTS} + ${P_ARGS_CMAKE_ARGS} + ${P_ARGS_UNPARSED_ARGUMENTS} + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} -- ${_build_j} ${_verbose_switch} + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE} + ) + +endfunction(add_cmake_project) diff --git a/cmake/modules/Catch2/Catch.cmake b/cmake/modules/Catch2/Catch.cmake deleted file mode 100644 index 0ffe978..0000000 --- a/cmake/modules/Catch2/Catch.cmake +++ /dev/null @@ -1,175 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -Catch ------ - -This module defines a function to help use the Catch test framework. - -The :command:`catch_discover_tests` discovers tests by asking the compiled test -executable to enumerate its tests. This does not require CMake to be re-run -when tests change. However, it may not work in a cross-compiling environment, -and setting test properties is less convenient. - -This command is intended to replace use of :command:`add_test` to register -tests, and will create a separate CTest test for each Catch test case. Note -that this is in some cases less efficient, as common set-up and tear-down logic -cannot be shared by multiple test cases executing in the same instance. -However, it provides more fine-grained pass/fail information to CTest, which is -usually considered as more beneficial. By default, the CTest test name is the -same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``. - -.. command:: catch_discover_tests - - Automatically add tests with CTest by querying the compiled test executable - for available tests:: - - catch_discover_tests(target - [TEST_SPEC arg1...] - [EXTRA_ARGS arg1...] - [WORKING_DIRECTORY dir] - [TEST_PREFIX prefix] - [TEST_SUFFIX suffix] - [PROPERTIES name1 value1...] - [TEST_LIST var] - ) - - ``catch_discover_tests`` sets up a post-build command on the test executable - that generates the list of tests by parsing the output from running the test - with the ``--list-test-names-only`` argument. This ensures that the full - list of tests is obtained. Since test discovery occurs at build time, it is - not necessary to re-run CMake when the list of tests changes. - However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set - in order to function in a cross-compiling environment. - - Additionally, setting properties on tests is somewhat less convenient, since - the tests are not available at CMake time. Additional test properties may be - assigned to the set of tests as a whole using the ``PROPERTIES`` option. If - more fine-grained test control is needed, custom content may be provided - through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES` - directory property. The set of discovered tests is made accessible to such a - script via the ``_TESTS`` variable. - - The options are: - - ``target`` - Specifies the Catch executable, which must be a known CMake executable - target. CMake will substitute the location of the built executable when - running the test. - - ``TEST_SPEC arg1...`` - Specifies test cases, wildcarded test cases, tags and tag expressions to - pass to the Catch executable with the ``--list-test-names-only`` argument. - - ``EXTRA_ARGS arg1...`` - Any extra arguments to pass on the command line to each test case. - - ``WORKING_DIRECTORY dir`` - Specifies the directory in which to run the discovered test cases. If this - option is not provided, the current binary directory is used. - - ``TEST_PREFIX prefix`` - Specifies a ``prefix`` to be prepended to the name of each discovered test - case. This can be useful when the same test executable is being used in - multiple calls to ``catch_discover_tests()`` but with different - ``TEST_SPEC`` or ``EXTRA_ARGS``. - - ``TEST_SUFFIX suffix`` - Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of - every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may - be specified. - - ``PROPERTIES name1 value1...`` - Specifies additional properties to be set on all tests discovered by this - invocation of ``catch_discover_tests``. - - ``TEST_LIST var`` - Make the list of tests available in the variable ``var``, rather than the - default ``_TESTS``. This can be useful when the same test - executable is being used in multiple calls to ``catch_discover_tests()``. - Note that this variable is only available in CTest. - -#]=======================================================================] - -#------------------------------------------------------------------------------ -function(catch_discover_tests TARGET) - cmake_parse_arguments( - "" - "" - "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST" - "TEST_SPEC;EXTRA_ARGS;PROPERTIES" - ${ARGN} - ) - - if(NOT _WORKING_DIRECTORY) - set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endif() - if(NOT _TEST_LIST) - set(_TEST_LIST ${TARGET}_TESTS) - endif() - - ## Generate a unique name based on the extra arguments - string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}") - string(SUBSTRING ${args_hash} 0 7 args_hash) - - # Define rule to generate test list for aforementioned test executable - set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake") - set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake") - get_property(crosscompiling_emulator - TARGET ${TARGET} - PROPERTY CROSSCOMPILING_EMULATOR - ) - add_custom_command( - TARGET ${TARGET} POST_BUILD - BYPRODUCTS "${ctest_tests_file}" - COMMAND "${CMAKE_COMMAND}" - -D "TEST_TARGET=${TARGET}" - -D "TEST_EXECUTABLE=$" - -D "TEST_EXECUTOR=${crosscompiling_emulator}" - -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}" - -D "TEST_SPEC=${_TEST_SPEC}" - -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}" - -D "TEST_PROPERTIES=${_PROPERTIES}" - -D "TEST_PREFIX='${_TEST_PREFIX}'" - -D "TEST_SUFFIX='${_TEST_SUFFIX}'" - -D "TEST_LIST=${_TEST_LIST}" - -D "CTEST_FILE=${ctest_tests_file}" - -P "${_CATCH_DISCOVER_TESTS_SCRIPT}" - VERBATIM - ) - - file(WRITE "${ctest_include_file}" - "if(EXISTS \"${ctest_tests_file}\")\n" - " include(\"${ctest_tests_file}\")\n" - "else()\n" - " add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n" - "endif()\n" - ) - - if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0") - # Add discovered tests to directory TEST_INCLUDE_FILES - set_property(DIRECTORY - APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}" - ) - else() - # Add discovered tests as directory TEST_INCLUDE_FILE if possible - get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET) - if (NOT ${test_include_file_set}) - set_property(DIRECTORY - PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}" - ) - else() - message(FATAL_ERROR - "Cannot set more than one TEST_INCLUDE_FILE" - ) - endif() - endif() - -endfunction() - -############################################################################### - -set(_CATCH_DISCOVER_TESTS_SCRIPT - ${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake -) diff --git a/cmake/modules/Catch2/CatchAddTests.cmake b/cmake/modules/Catch2/CatchAddTests.cmake deleted file mode 100644 index ca5ebc1..0000000 --- a/cmake/modules/Catch2/CatchAddTests.cmake +++ /dev/null @@ -1,106 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -set(prefix "${TEST_PREFIX}") -set(suffix "${TEST_SUFFIX}") -set(spec ${TEST_SPEC}) -set(extra_args ${TEST_EXTRA_ARGS}) -set(properties ${TEST_PROPERTIES}) -set(script) -set(suite) -set(tests) - -function(add_command NAME) - set(_args "") - foreach(_arg ${ARGN}) - if(_arg MATCHES "[^-./:a-zA-Z0-9_]") - set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument - else() - set(_args "${_args} ${_arg}") - endif() - endforeach() - set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE) -endfunction() - -macro(_add_catch_test_labels LINE) - # convert to list of tags - string(REPLACE "][" "]\\;[" tags ${line}) - - add_command( - set_tests_properties "${prefix}${test}${suffix}" - PROPERTIES - LABELS "${tags}" - ) -endmacro() - -macro(_add_catch_test LINE) - set(test ${line}) - # use escape commas to handle properly test cases with commans inside the name - string(REPLACE "," "\\," test_name ${test}) - # ...and add to script - add_command( - add_test "${prefix}${test}${suffix}" - ${TEST_EXECUTOR} - "${TEST_EXECUTABLE}" - "${test_name}" - ${extra_args} - ) - - add_command( - set_tests_properties "${prefix}${test}${suffix}" - PROPERTIES - WORKING_DIRECTORY "${TEST_WORKING_DIR}" - ${properties} - ) - list(APPEND tests "${prefix}${test}${suffix}") -endmacro() - -# Run test executable to get list of available tests -if(NOT EXISTS "${TEST_EXECUTABLE}") - message(FATAL_ERROR - "Specified test executable '${TEST_EXECUTABLE}' does not exist" - ) -endif() -execute_process( - COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-tests - OUTPUT_VARIABLE output - RESULT_VARIABLE result -) -# Catch --list-test-names-only reports the number of tests, so 0 is... surprising -if(${result} EQUAL 0) - message(WARNING - "Test executable '${TEST_EXECUTABLE}' contains no tests!\n" - ) -elseif(${result} LESS 0) - message(FATAL_ERROR - "Error running test executable '${TEST_EXECUTABLE}':\n" - " Result: ${result}\n" - " Output: ${output}\n" - ) -endif() - -string(REPLACE "\n" ";" output "${output}") -set(test) -set(tags_regex "(\\[([^\\[]*)\\])+$") - -# Parse output -foreach(line ${output}) - # lines without leading whitespaces are catch output not tests - if(${line} MATCHES "^[ \t]+") - # strip leading spaces and tabs - string(REGEX REPLACE "^[ \t]+" "" line ${line}) - - if(${line} MATCHES "${tags_regex}") - _add_catch_test_labels(${line}) - else() - _add_catch_test(${line}) - endif() - endif() -endforeach() - -# Create a list of all discovered tests, which users may use to e.g. set -# properties on the tests -add_command(set ${TEST_LIST} ${tests}) - -# Write CTest script -file(WRITE "${CTEST_FILE}" "${script}") diff --git a/cmake/modules/Catch2/ParseAndAddCatchTests.cmake b/cmake/modules/Catch2/ParseAndAddCatchTests.cmake deleted file mode 100644 index 925d932..0000000 --- a/cmake/modules/Catch2/ParseAndAddCatchTests.cmake +++ /dev/null @@ -1,225 +0,0 @@ -#==================================================================================================# -# supported macros # -# - TEST_CASE, # -# - SCENARIO, # -# - TEST_CASE_METHOD, # -# - CATCH_TEST_CASE, # -# - CATCH_SCENARIO, # -# - CATCH_TEST_CASE_METHOD. # -# # -# Usage # -# 1. make sure this module is in the path or add this otherwise: # -# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") # -# 2. make sure that you've enabled testing option for the project by the call: # -# enable_testing() # -# 3. add the lines to the script for testing target (sample CMakeLists.txt): # -# project(testing_target) # -# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") # -# enable_testing() # -# # -# find_path(CATCH_INCLUDE_DIR "catch.hpp") # -# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) # -# # -# file(GLOB SOURCE_FILES "*.cpp") # -# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) # -# # -# include(ParseAndAddCatchTests) # -# ParseAndAddCatchTests(${PROJECT_NAME}) # -# # -# The following variables affect the behavior of the script: # -# # -# PARSE_CATCH_TESTS_VERBOSE (Default OFF) # -# -- enables debug messages # -# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) # -# -- excludes tests marked with [!hide], [.] or [.foo] tags # -# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) # -# -- adds fixture class name to the test name # -# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) # -# -- adds cmake target name to the test name # -# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) # -# -- causes CMake to rerun when file with tests changes so that new tests will be discovered # -# # -# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way # -# a test should be run. For instance to use test MPI, one can write # -# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) # -# just before calling this ParseAndAddCatchTests function # -# # -# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test # -# command. For example, to include successful tests in the output, one can write # -# set(AdditionalCatchParameters --success) # -# # -# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source # -# file in the target is set, and contains the list of the tests extracted from that target, or # -# from that file. This is useful, for example to add further labels or properties to the tests. # -# # -#==================================================================================================# - -if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8) - message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer") -endif() - -option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF) -option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF) -option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON) -option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON) -option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF) - -function(ParseAndAddCatchTests_PrintDebugMessage) - if(PARSE_CATCH_TESTS_VERBOSE) - message(STATUS "ParseAndAddCatchTests: ${ARGV}") - endif() -endfunction() - -# This removes the contents between -# - block comments (i.e. /* ... */) -# - full line comments (i.e. // ... ) -# contents have been read into '${CppCode}'. -# !keep partial line comments -function(ParseAndAddCatchTests_RemoveComments CppCode) - string(ASCII 2 CMakeBeginBlockComment) - string(ASCII 3 CMakeEndBlockComment) - string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}") - string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}") - string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}") - string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}") - - set(${CppCode} "${${CppCode}}" PARENT_SCOPE) -endfunction() - -# Worker function -function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget) - # If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file. - if(SourceFile MATCHES "\\\$") - ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.") - return() - endif() - # According to CMake docs EXISTS behavior is well-defined only for full paths. - get_filename_component(SourceFile ${SourceFile} ABSOLUTE) - if(NOT EXISTS ${SourceFile}) - message(WARNING "Cannot find source file: ${SourceFile}") - return() - endif() - ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}") - file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME) - - # Remove block and fullline comments - ParseAndAddCatchTests_RemoveComments(Contents) - - # Find definition of test names - string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}") - - if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests) - ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property") - set_property( - DIRECTORY - APPEND - PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile} - ) - endif() - - foreach(TestName ${Tests}) - # Strip newlines - string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}") - - # Get test type and fixture if applicable - string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}") - string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}") - string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}") - - # Get string parts of test definition - string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}") - - # Strip wrapping quotation marks - string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}") - string(REPLACE "\";\"" ";" TestStrings "${TestStrings}") - - # Validate that a test name and tags have been provided - list(LENGTH TestStrings TestStringsLength) - if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1) - message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}") - endif() - - # Assign name and tags - list(GET TestStrings 0 Name) - if("${TestType}" STREQUAL "SCENARIO") - set(Name "Scenario: ${Name}") - endif() - if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture) - set(CTestName "${TestFixture}:${Name}") - else() - set(CTestName "${Name}") - endif() - if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME) - set(CTestName "${TestTarget}:${CTestName}") - endif() - # add target to labels to enable running all tests added from this target - set(Labels ${TestTarget}) - if(TestStringsLength EQUAL 2) - list(GET TestStrings 1 Tags) - string(TOLOWER "${Tags}" Tags) - # remove target from labels if the test is hidden - if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*") - list(REMOVE_ITEM Labels ${TestTarget}) - endif() - string(REPLACE "]" ";" Tags "${Tags}") - string(REPLACE "[" "" Tags "${Tags}") - else() - # unset tags variable from previous loop - unset(Tags) - endif() - - list(APPEND Labels ${Tags}) - - set(HiddenTagFound OFF) - foreach(label ${Labels}) - string(REGEX MATCH "^!hide|^\\." result ${label}) - if(result) - set(HiddenTagFound ON) - break() - endif(result) - endforeach(label) - if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9") - ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label") - else() - ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"") - if(Labels) - ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}") - endif() - - # Escape commas in the test spec - string(REPLACE "," "\\," Name ${Name}) - - # Add the test and set its properties - add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} $ ${Name} ${AdditionalCatchParameters}) - # Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead - if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8") - ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property") - set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON) - else() - set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran" - LABELS "${Labels}") - endif() - set_property( - TARGET ${TestTarget} - APPEND - PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"") - set_property( - SOURCE ${SourceFile} - APPEND - PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"") - endif() - - - endforeach() -endfunction() - -# entry point -function(ParseAndAddCatchTests TestTarget) - ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}") - get_target_property(SourceFiles ${TestTarget} SOURCES) - ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}") - foreach(SourceFile ${SourceFiles}) - ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget}) - endforeach() - ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}") -endfunction() diff --git a/cmake/modules/UsewxWidgets.cmake b/cmake/modules/UsewxWidgets.cmake new file mode 100644 index 0000000..4f85484 --- /dev/null +++ b/cmake/modules/UsewxWidgets.cmake @@ -0,0 +1,75 @@ +# PrusaSlicer: this is a direct copy of the UsewxWidgets.cmake module +# within the original CMake 3.27 distribution + +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +UsewxWidgets +------------ + +Convenience include for using wxWidgets library. + +Determines if wxWidgets was FOUND and sets the appropriate libs, +incdirs, flags, etc. INCLUDE_DIRECTORIES and LINK_DIRECTORIES are +called. + +USAGE + +:: + + # Note that for MinGW users the order of libs is important! + find_package(wxWidgets REQUIRED net gl core base) + include(${wxWidgets_USE_FILE}) + # and for each of your dependent executable/library targets: + target_link_libraries( ${wxWidgets_LIBRARIES}) + + + +DEPRECATED + +:: + + LINK_LIBRARIES is not called in favor of adding dependencies per target. + + + +AUTHOR + +:: + + Jan Woetzel +#]=======================================================================] + +if (wxWidgets_FOUND) + if (wxWidgets_INCLUDE_DIRS) + if(wxWidgets_INCLUDE_DIRS_NO_SYSTEM) + include_directories(${wxWidgets_INCLUDE_DIRS}) + else() + include_directories(SYSTEM ${wxWidgets_INCLUDE_DIRS}) + endif() + endif() + + if (wxWidgets_LIBRARY_DIRS) + link_directories(${wxWidgets_LIBRARY_DIRS}) + endif() + + if (wxWidgets_DEFINITIONS) + set_property(DIRECTORY APPEND + PROPERTY COMPILE_DEFINITIONS ${wxWidgets_DEFINITIONS}) + endif() + + if (wxWidgets_DEFINITIONS_DEBUG) + set_property(DIRECTORY APPEND + PROPERTY COMPILE_DEFINITIONS_DEBUG ${wxWidgets_DEFINITIONS_DEBUG}) + endif() + + if (wxWidgets_CXX_FLAGS) + # Flags are expected to be a string here, not a list. + string(REPLACE ";" " " wxWidgets_CXX_FLAGS_str "${wxWidgets_CXX_FLAGS}") + string(APPEND CMAKE_CXX_FLAGS " ${wxWidgets_CXX_FLAGS_str}") + unset(wxWidgets_CXX_FLAGS_str) + endif() +else () + message("wxWidgets requested but not found.") +endif() diff --git a/deps/+Blosc/Blosc.cmake b/deps/+Blosc/Blosc.cmake new file mode 100644 index 0000000..5b1e429 --- /dev/null +++ b/deps/+Blosc/Blosc.cmake @@ -0,0 +1,21 @@ +if(BUILD_SHARED_LIBS) + set(_build_shared ON) + set(_build_static OFF) +else() + set(_build_shared OFF) + set(_build_static ON) +endif() + +add_cmake_project(Blosc + URL https://github.com/Blosc/c-blosc/archive/8724c06e3da90f10986a253814af18ca081d8de0.zip + URL_HASH SHA256=53986fd04210b3d94124b7967c857f9766353e576a69595a9393999e0712c035 + CMAKE_ARGS + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + -DBUILD_SHARED=${_build_shared} + -DBUILD_STATIC=${_build_static} + -DBUILD_TESTS=OFF + -DBUILD_BENCHMARKS=OFF + -DPREFER_EXTERNAL_ZLIB=ON +) + +set(DEP_Blosc_DEPENDS ZLIB) diff --git a/deps/+Boost/Boost.cmake b/deps/+Boost/Boost.cmake new file mode 100644 index 0000000..cb470e9 --- /dev/null +++ b/deps/+Boost/Boost.cmake @@ -0,0 +1,25 @@ + +set(_context_abi_line "") +set(_context_arch_line "") +if (APPLE AND CMAKE_OSX_ARCHITECTURES) + if (CMAKE_OSX_ARCHITECTURES MATCHES "x86") + set(_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=sysv") + elseif (CMAKE_OSX_ARCHITECTURES MATCHES "arm") + set (_context_abi_line "-DBOOST_CONTEXT_ABI:STRING=aapcs") + endif () + set(_context_arch_line "-DBOOST_CONTEXT_ARCHITECTURE:STRING=${CMAKE_OSX_ARCHITECTURES}") +endif () + +add_cmake_project(Boost + URL "https://github.com/boostorg/boost/releases/download/boost-1.83.0/boost-1.83.0.zip" + URL_HASH SHA256=9effa3d7f9d92b8e33e2b41d82f4358f97ff7c588d5918720339f2b254d914c6 + LIST_SEPARATOR | + CMAKE_ARGS + -DBOOST_EXCLUDE_LIBRARIES:STRING=contract|fiber|numpy|stacktrace|wave|test + -DBOOST_LOCALE_ENABLE_ICU:BOOL=OFF # do not link to libicu, breaks compatibility between distros + -DBUILD_TESTING:BOOL=OFF + "${_context_abi_line}" + "${_context_arch_line}" +) + +set(DEP_Boost_DEPENDS ZLIB) diff --git a/deps/CGAL/CGAL.cmake b/deps/+CGAL/CGAL.cmake similarity index 85% rename from deps/CGAL/CGAL.cmake rename to deps/+CGAL/CGAL.cmake index 5d23663..bb6e8fd 100644 --- a/deps/CGAL/CGAL.cmake +++ b/deps/+CGAL/CGAL.cmake @@ -1,11 +1,12 @@ -qidislicer_add_cmake_project( +add_cmake_project( CGAL # GIT_REPOSITORY https://github.com/CGAL/cgal.git # GIT_TAG bec70a6d52d8aacb0b3d82a7b4edc3caa899184b # releases/CGAL-5.0 # For whatever reason, this keeps downloading forever (repeats downloads if finished) URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0 - DEPENDS dep_Boost dep_GMP dep_MPFR ) include(GNUInstallDirs) + +set(DEP_CGAL_DEPENDS Boost GMP MPFR) diff --git a/deps/CGAL/cgal/CGALConfigVersion.cmake b/deps/+CGAL/cgal/CGALConfigVersion.cmake similarity index 100% rename from deps/CGAL/cgal/CGALConfigVersion.cmake rename to deps/+CGAL/cgal/CGALConfigVersion.cmake diff --git a/deps/CURL/CURL.cmake b/deps/+CURL/CURL.cmake similarity index 93% rename from deps/CURL/CURL.cmake rename to deps/+CURL/CURL.cmake index 8ee372e..bcfc1ba 100644 --- a/deps/CURL/CURL.cmake +++ b/deps/+CURL/CURL.cmake @@ -56,12 +56,11 @@ if (UNIX AND NOT APPLE) set (_patch_command echo set_target_properties(CURL::libcurl PROPERTIES INTERFACE_COMPILE_DEFINITIONS OPENSSL_CERT_OVERRIDE) >> CMake/curl-config.cmake.in) endif () -qidislicer_add_cmake_project(CURL +add_cmake_project(CURL # GIT_REPOSITORY https://github.com/curl/curl.git # GIT_TAG curl-7_75_0 URL https://github.com/curl/curl/archive/refs/tags/curl-7_75_0.zip URL_HASH SHA256=a63ae025bb0a14f119e73250f2c923f4bf89aa93b8d4fafa4a9f5353a96a765a - DEPENDS ${ZLIB_PKG} # PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df && # ${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/curl-mods.patch PATCH_COMMAND "${_patch_command}" @@ -71,10 +70,8 @@ qidislicer_add_cmake_project(CURL ${_curl_platform_flags} ) +set(DEP_CURL_DEPENDS ZLIB) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - add_dependencies(dep_CURL dep_OpenSSL) + list(APPEND DEP_CURL_DEPENDS OpenSSL) endif () -if (MSVC) - add_debug_dep(dep_CURL) -endif () diff --git a/deps/+Catch2/Catch2.cmake b/deps/+Catch2/Catch2.cmake new file mode 100644 index 0000000..b355f16 --- /dev/null +++ b/deps/+Catch2/Catch2.cmake @@ -0,0 +1,6 @@ +add_cmake_project(Catch2 + URL "https://github.com/catchorg/Catch2/archive/refs/tags/v2.13.10.zip" + URL_HASH SHA256=121e7488912c2ce887bfe4699ebfb983d0f2e0d68bcd60434cdfd6bb0cf78b43 + CMAKE_ARGS + -DCATCH_BUILD_TESTING:BOOL=OFF +) \ No newline at end of file diff --git a/deps/Cereal/Cereal.cmake b/deps/+Cereal/Cereal.cmake similarity index 88% rename from deps/Cereal/Cereal.cmake rename to deps/+Cereal/Cereal.cmake index de1c539..1ec9af0 100644 --- a/deps/Cereal/Cereal.cmake +++ b/deps/+Cereal/Cereal.cmake @@ -1,4 +1,4 @@ -qidislicer_add_cmake_project(Cereal +add_cmake_project(Cereal URL "https://github.com/USCiLab/cereal/archive/refs/tags/v1.3.0.zip" URL_HASH SHA256=71642cb54658e98c8f07a0f0d08bf9766f1c3771496936f6014169d3726d9657 CMAKE_ARGS diff --git a/deps/EXPAT/EXPAT.cmake b/deps/+EXPAT/EXPAT.cmake similarity index 56% rename from deps/EXPAT/EXPAT.cmake rename to deps/+EXPAT/EXPAT.cmake index 77cd317..5d35d2d 100644 --- a/deps/EXPAT/EXPAT.cmake +++ b/deps/+EXPAT/EXPAT.cmake @@ -1,10 +1,4 @@ -#qidislicer_add_cmake_project(EXPAT -# # GIT_REPOSITORY https://github.com/nigels-com/glew.git -# # GIT_TAG 3a8eff7 # 2.1.0 -# SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/expat -#) - -qidislicer_add_cmake_project(EXPAT +add_cmake_project(EXPAT URL https://github.com/libexpat/libexpat/archive/refs/tags/R_2_4_3.zip URL_HASH SHA256=8851e199d763dc785277d6d414ed3e70ff683915158b51b8d8781df0e3af950a SOURCE_SUBDIR expat @@ -14,8 +8,4 @@ qidislicer_add_cmake_project(EXPAT -DEXPAT_BUILD_TESTS:BOOL=OFF -DEXPAT_BUILD_DOCS=OFF -DEXPAT_BUILD_PKGCONFIG=OFF -) - -if (MSVC) - add_debug_dep(dep_EXPAT) -endif () +) \ No newline at end of file diff --git a/deps/+GLEW/GLEW.cmake b/deps/+GLEW/GLEW.cmake new file mode 100644 index 0000000..c2db911 --- /dev/null +++ b/deps/+GLEW/GLEW.cmake @@ -0,0 +1,8 @@ +add_cmake_project( + GLEW + URL https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip + URL_HASH SHA256=a9046a913774395a095edcc0b0ac2d81c3aacca61787b39839b941e9be14e0d4 + SOURCE_SUBDIR build/cmake + CMAKE_ARGS + -DBUILD_UTILS=OFF +) \ No newline at end of file diff --git a/deps/GMP/GMP.cmake b/deps/+GMP/GMP.cmake similarity index 68% rename from deps/GMP/GMP.cmake rename to deps/+GMP/GMP.cmake index 6b0f970..724db2e 100644 --- a/deps/GMP/GMP.cmake +++ b/deps/+GMP/GMP.cmake @@ -1,6 +1,6 @@ set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp) -set(_dstdir ${DESTDIR}/usr/local) +set(_dstdir ${${PROJECT_NAME}_DEP_INSTALL_PREFIX}) if (MSVC) set(_output ${_dstdir}/include/gmp.h @@ -17,13 +17,24 @@ if (MSVC) add_custom_target(dep_GMP SOURCES ${_output}) else () - set(_gmp_ccflags "-O2 -DNDEBUG -fPIC -DPIC -Wall -Wmissing-prototypes -Wpointer-arith -pedantic -fomit-frame-pointer -fno-common") + string(TOUPPER "${CMAKE_BUILD_TYPE}" _buildtype_upper) + set(_gmp_ccflags "${CMAKE_CXX_FLAGS_${_buildtype_upper}} -fPIC -DPIC -Wall -Wmissing-prototypes -Wpointer-arith -pedantic -fomit-frame-pointer -fno-common") set(_gmp_build_tgt "${CMAKE_SYSTEM_PROCESSOR}") + set(_cross_compile_arg "") if (APPLE) - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") + if (CMAKE_OSX_ARCHITECTURES) + set(_gmp_build_tgt ${CMAKE_OSX_ARCHITECTURES}) + set(_gmp_ccflags "${_gmp_ccflags} -arch ${CMAKE_OSX_ARCHITECTURES}") + endif () + if (${_gmp_build_tgt} MATCHES "arm") set(_gmp_build_tgt aarch64) endif() + + if (CMAKE_OSX_ARCHITECTURES) + set(_cross_compile_arg --host=${_gmp_build_tgt}-apple-darwin21) + endif () + set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}") set(_gmp_build_tgt "--build=${_gmp_build_tgt}-apple-darwin") elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") @@ -36,19 +47,19 @@ else () set(_gmp_build_tgt "") # let it guess endif() - set(_cross_compile_arg "") if (CMAKE_CROSSCOMPILING) # TOOLCHAIN_PREFIX should be defined in the toolchain file set(_cross_compile_arg --host=${TOOLCHAIN_PREFIX}) endif () ExternalProject_Add(dep_GMP + EXCLUDE_FROM_ALL ON URL https://gmplib.org/download/gmp/gmp-6.2.1.tar.bz2 URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP + DOWNLOAD_DIR ${${PROJECT_NAME}_DEP_DOWNLOAD_DIR}/GMP BUILD_IN_SOURCE ON - CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}/usr/local" ${_gmp_build_tgt} + CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${${PROJECT_NAME}_DEP_INSTALL_PREFIX}" ${_gmp_build_tgt} BUILD_COMMAND make -j INSTALL_COMMAND make install ) -endif () \ No newline at end of file +endif () diff --git a/deps/GMP/gmp/gmp.COPYING b/deps/+GMP/gmp/gmp.COPYING similarity index 100% rename from deps/GMP/gmp/gmp.COPYING rename to deps/+GMP/gmp/gmp.COPYING diff --git a/deps/GMP/gmp/gmp.README b/deps/+GMP/gmp/gmp.README similarity index 100% rename from deps/GMP/gmp/gmp.README rename to deps/+GMP/gmp/gmp.README diff --git a/deps/GMP/gmp/include/gmp.h b/deps/+GMP/gmp/include/gmp.h similarity index 100% rename from deps/GMP/gmp/include/gmp.h rename to deps/+GMP/gmp/include/gmp.h diff --git a/deps/+GMP/gmp/lib/win32/libgmp-10.dll b/deps/+GMP/gmp/lib/win32/libgmp-10.dll new file mode 100644 index 0000000000000000000000000000000000000000..387656ca84e3e892ebca78d5af7d5df71a2f6a5e GIT binary patch literal 498827 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 JC-NgH{~wFIrfvWL literal 0 HcmV?d00001 diff --git a/deps/+GMP/gmp/lib/win32/libgmp-10.lib b/deps/+GMP/gmp/lib/win32/libgmp-10.lib new file mode 100644 index 0000000000000000000000000000000000000000..53bb34cc961463ef2d356abd235ee6b95da1d3df GIT binary patch literal 114286 zcmeHw4Y;LK+5cJxlcu4;kkB+qLTKj9ham|`L*t`qNRsV*>@(+Z&faJCIcJPXNRlK; zk|aqbl~htmlGp3?dV9SkNhPTyNs?5WzV!dCkLP*r`(Eo=_A`5*_qzVq|39vu=j?mk zYyH;uv(|dF=1^Z367y?gJyV6O!W7cb%R`Tl3`l7+qQ?-OP!weeh~ zzOz!PyUteXdp9ff{W-v?z!MJl9Iuqc-Aeu7V2_*d1n!;haV4I>54Qo%SL#PS9&7Pj z@9^Ujm9ltHsr!!cxD!v{Crdr9!4tS2ak4lU&!-%II;51veM&uWsK*UT{cJbjQiq?< zQ0nJvJ)Xo9_{Fft&y{)*{w!|66Zj?KZ*du(z(cb@aJk(iXSk32Zjs<1##f%{TR!#M9tGhvzO= z+Tun$f!T4!q@}YbC$aKH?Y)9^GvxCRHV^g!Mn2)ufU2jcc>;2_i|i?i`G z_>;qHhLpB=5KrLXBRy`!6L{^O9+%+>EZfopaajf&qC6(?GOYg=`i5%qdjiJ6F8#R18F(}I1=%(I0H|E#~ogOoYEF|;t8zS z$KzT&fj8{vaS@)t%1u3xrz;H}bvO$A7T`V#IQl@3Yw!f#IM3rkJb`02_c#?#gNGg7 zv_ff%oACsW-QD9dJb^dQ@_?T=8$9N49O{e3op=Io+1CSUcnfem_$@BL6R7ogpe$+z z;5Rq{>9Dv1PoNL^VQ~$fK>u8i^YH`*l*c%p1`j$694c0rHKCH9_^89q*jAb5(;~Bu) zQJxl;;0c_G^jWOM)8G+@cO0#>1@hz_z*+M>F2@si=cXRWlXn_C=y3LtN?Y8FC-AO4 zJ>chEz&Y?|u?A0r#~t2{^jaX!?*`62*yBb#f%l+XEKrv30nXdT<2*bK);qj+NNJ0E z@C433(BpbMf%l=DEKo-811{LuqlKrzLk{m>sk8;s{(j&>q~8K*xDfcjY>%_>GyuQB zMJIYZfG6<56&^R?30%CJ$0c|I9|FGx^5R1V;5WDg{w!|66ZkOrEx`R@;L=$hYw
  • JX0$qwPvFKm9%tie@RY+h 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 W_Pmg<J24{eJ*41%d_u literal 0 HcmV?d00001 diff --git a/deps/+GMP/gmp/lib/win64/libgmp-10.dll b/deps/+GMP/gmp/lib/win64/libgmp-10.dll new file mode 100644 index 0000000000000000000000000000000000000000..f92b2892138b2e71ee8da3cdd5bd1a527cbfe786 GIT binary patch literal 543027 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‚NFs;qK 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%0DjfH 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

    Zk}PW9#_IW2H(LmYaq;bfLr#lK$u&ATc=ro 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll b/deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll new file mode 100644 index 0000000000000000000000000000000000000000..fea68a1c2e814168d049fc45ef438d959934aba1 GIT binary patch literal 436011 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
    qAKHr@(6HPqhhg=* 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 AmjD0& literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer.ico b/resources/icons/PrusaSlicer.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a335cb6aad5f4919f16e6539b940cf98fb943e7 GIT binary patch literal 110206 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 HX#4*Fa}5&Y literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer.png b/resources/icons/PrusaSlicer.png new file mode 100644 index 0000000000000000000000000000000000000000..dc51630fbb3263280a0fd4996770df06677dec9f GIT binary patch literal 9554 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
    NxjbrT3-Gg4OA89z+q|88W zmajB&yz;=b-6~ClP9@-Ra@;nKzLdPFA_ChD!zU;pTxaW4jbvqh>B^TIqH*MD8;adW z0GCNC?mb>}z`#B@N4r^?p^05{W=QS zS7I&TG>U>_L}p$2G@*tlCWuP~OS1u0JA5kP*R$!3nUKX~Uw0)zWX;t2zDt{X5e<(^&q7{Pk{bpQVlFxfFfz zmzN#Z`Xnzz<>vVm0jA8@(u^BlmpN0JfV_0{jB*vyD{EdQoEI_a#1)i980M-uWdl*^ z?vqnX^gmD;Z<={hURr3v>yA!>E3G6}Serx&PrRzV$fLei3zpXbLW7)E+G)64_GL zu>ziM4_E$pJu>``uXIn{9rLT_((3&Qjw`@E=N*L;Bil_X8GsNrq+XkKXd# z+4;U*>^9F_UX%U$KAYIHsMvFTEW8f5O#%%+43P7lx!~KBQMn+N1C%{_l7A^l0_OCK zl8x5UdA#Uqn#E{KyBchKgsYf=eM;{^)l`$<*?9TA^`{BY>42fQw{9lL&=H8@lP6C$ zy8CACCE{DHJU?raOdRV$arto&3 zNI_ag#%OlS_)(_Lk|eNu3Aw@RfoNCsI7Z&BV#X=OWu+&7QMTdsN**$JTn*BHI(+eg zNNjR;6 zuD`sNy5N_7hXJd`?d4&< zkJ?ns^hJt!wj$1Vq?eS>kTS45@+xj~J-&AL`K5^XnJGy@ zFjqBi#64rA*`TdX5$a_Ph;8wM8NcJzhI}tpvlC4)+#2v5H_v?L?3Xz*@$Cie&-ahR z3-hRqW^XhLI({)-2>HS?BGXiRi1N}`XRcOMU)`-A+)?{DHl+SxM6GEzs$7mLC=Ngg zEG3+>CqRdU7lc=hq*aMgq(sJr&MR2d9F>ny#r+7n*|DyVX^A>bcq9hvZo`&ip4Ti( z9@Uvr@mFGasdL7(x>HZPjL_43BSQ_edBLoP2}p0JHO_^Q71H#UhTXy$w7aPENpa*` zr4_C!o723JiP*Z^jBam+Vw-sPg(Sar(%5v7<<_cP4n?3)+#e~V(nZg`9urBox|`H- z9n~OP7-m2{CLA!!y|FSm#i~5>!SrkgyrijWGSO975l+fLLq&V>G`qp>l>43N*pe)% zb8%)3wS{~T`vzrq=V%ee*C&JuC?&H5x-@C&OizEG+7WeQfsl1*e-zzwsly9>ZaKGC zMOg081y8CpE6-Yf?HS0uK(y~jE4|OFDaMO5(TR6JL-Owa)wXk;Dbo+&Axo5oJg8ScdI(S z`1$$Um7#r~l7*Tg;7*27MXU;bBu}=$ejJfWS?R;6?c%M30AkE{$C*s)gzNluKkf>A z>pA%02;?Ej9!?{sszDv{kkpPWk^OX@Tr}o(x@yNL4!FzVzLDMgc-fs^MI*ZD3pRr3 zqkN-*8!}ZBz1@ODaPxr5!Uc7WlR>wD;WC5MRRK8JUR2k3Y+_A#&5;;}FjBC@X zF^9_D=A*T5Lm=;Z-DX#WNmECdm zF)-yIpAVxKs?wir^c5TQQ9V~j{Uv&yU#uEihT_Phs=NH-{&haVkkY#i*x*dXU`o;S zmMvoff@nxw%WsEr6^1jxUR_!z2yYI}Erwwk+dFE6~a5fRLx%4Vb4-{Mn@ zEtz~aXs13ka5Jf?N+v>IYA;J$5FS-PE~V!mlh3LW82hz(c`+iA!7rQP2A-4xPLtEP z7pbhzn(;xCI6X$up>!9$&OUjvqF8^a@9m8Q(b4pga}2~lVx-Q^%>0FevCEE?%ZpdG zFZD;Ml+d@tt73EZr3LHg^)V31hT2pudoF-5+J}%1vdVJCXhwIztr(0qGhLw_%fpya zjL*0wyvHEt9p}Qqru@i7_cTBMbQyp3bOB~)D$$A^&QSeHW9!j*jQ!J(9z_%lDWg}j%*XE0Ewn!2olXo@7_*4+8qm@uV+7`=j*Lpu zg4ut)a$#=Z&zVd78uVDUMLpf@oNk8S0h7VYL%pYOrIOz&CyRHGSa+_vJ?G#eTmkoo zGU$2wE}Vvmf1cXg;+Zle?vqBBnZ~fG*Vz*?5`-Ld&MWKacqC&R#oxG)KrS#ByAqf* z7zQ`VJE+4Tn25AGe={mZEyzXFezbhCbC_x!iooygT;D+_+$QCmb;k2WK4|=g_HYmyQ=Q9 zZHk;80bMBrva6Tt!l8a9q;(J`G01r_RXW95X7rZ6%tmEWwho~+WJV!hlYA_3Lq$M> ziudlv!9@r>DpJ#^nD*+mys{n@Dv9`Ia#jI&)buTzTLaoE>nf@X_k{=rCRxKIHDsSD zjmA)o1!EM)s^B)ZU{=LEFO3rElPrRJep&cxRG*MODlMdAg&!|yFsfdfYC&rx_?l-j z89(eqaEfQg)|0;9ti{ChuctzZAwRVbF&n;+ty+S%VDdNWWA=~>MNd@Z?*q zuY-2b)&gP3x7t+QshC0|J&F1|++O;8^9p#WXG6eqxqTK$)~WisRtV$s9W~R%)lS5Si6kCcU|4#K4{7ZDlosq1AJez#(0`6+FzHs46 z3287{^YCfdiz{Hct(qe4!Oa0}>2r`Qi&$a=*%G&>;S8SClcl_PPk&TWzE2XK2k!Jc zVI(T?zcuqL>R}k?=c+iS9eE^K4m>IyOJ_NmrYDAWau5n{+mDBHF<165v2fSz@w>W) zN4E<%;BWI&1dHK8P>yHZSTh<)qNO(9WFF1w+Ot2N#Y#4qRmI0B>Viid7o!qc#%ffD z-UorTcR&l1#WC?sD>wD)EGceYjbydIxg?-%O;4{G|LnzXaFDkCB_4ep8rfs|Lz3ZW z3=dJ0rh>&+^0&G6hfY}M!M!=xAGS6s2dCY^F*)?~3YlmB^< + + + + diff --git a/resources/icons/PrusaSlicer_128px.png b/resources/icons/PrusaSlicer_128px.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf2223002fc9b292f4e438c9b04337304f36770 GIT binary patch literal 8548 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 literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer_192px.png b/resources/icons/PrusaSlicer_192px.png new file mode 100644 index 0000000000000000000000000000000000000000..a667be3e71a11d775d7c5e938cecb2b374e73f8c GIT binary patch literal 9259 zcmbVy2{=@3-}o7mea#+a8T&HEzGaYo4TVSwGb4ntO!j4DUy_7Mb}g3dBKwHQlC@+f zDoVDH!Qg*9&+|Ut`~9!?{l545&UMYqeeUzSfBSadXX4E->eJJ3(EtEIZ)l)%3H&9T ze5feE?@QC}l;97wmw~M>0MN3Wd>}w(7AF8u0IrrcI2%(FRTS1k$`Orq!bk;pc!AIW zpr#Sv<%qh4!SOj^Zn}CRVe3t8Fg{l_5_UzwRNB-_8{^_?5affo9CXnV6?6-wf`)0R z^Qi@>f(Se?I7hw!4|h*r)c_>y54@`2_+%OZ@$nWEAD(Ra7MTWTj=45z@*C89BI&qN=>Ks;n&EUl$Cd=7V-ty`-b}7cKA( z33I{Wyi^ege}8`|e>o|v&rO7kii!$CS{5NI3kM}?zp26FnR2p(R4qxJOtOHH7{5CM)}2pK8q6OsM^M5F$O^SbTh{s(b1 z3W0IQcwjtnz96j3->_aTSRB^Z1^aJM|NZ#C5dc+dYWg>gf60r7$KND;ak_q>7=J0` zUqbs@26|x-moUEA+de3at{=#zz=!7`t=_K9Is_(V+| zQLdgRa)|xYDvXXJ4ugc9K)|IH;4*TSpy^~)RApo&q-9m5rT+vq#iCuE1OE-Eg7kj_ z1^ou?h;#g3fzc>cXRMEhBPg}2hvQ8Q!prj}jPGw`wWc{BZfySah9RJ0hv#hg| zEXq*I)h=@ULjPjPd?!fAEq&srzD`asG}zmFB_&WOi&;0*q_WYBvf5ZQOx$gg&|GyN3a&h#$i2)NX0(K%1;v_ZwX&%J?Z@E97 z{ZktI2RN7;PlkUdW$@Ndq|Z>6#&i+8|qxJ49Hr|4i2&WnteRCl=awT z?F$+8LrpSfvI}BH5cdM@# zxxBh#WVc;!8EtgmfnLiq#j6kb*hE%t=_julv(qEPZ%0{jzOxk^6@nsiOCiE)b6X(; zyA2_19nzKY)X|!!&FM^5j+GeRQT&Q{d6etBf6o;%FiedD;D>YdJK;#0pOos93{ZW% zw)cUcSd{GlJxN($V@0XiY@YDc5D_5rZZ472!riwkG}j#gv$*1P1)D7|=?c zMJA~?J(2iKoaUljB_olESaiGsDNZm+J_mF^pbt6si18X#)^vD(0ugT(VM?GR_(f$` zfA3}hF0gy?RGu1Mrv2I*&pku1Bk0ZV#x2FC38zCfp#x;)WKw!+dC!@VgcSldVmCsn z*iG<$0z{f)c)5bY=!=mIJ)CfhaJAD{yEjD~k_S8lK0!GQ#+>}rfgJKNflHN!rqz_1 z3|M|HhbtmGNA}E<6v4$6_PvL1_Lx~(ZOyix5hz;ce{mKw7g)?OH`UG)@YIlAyJ&^(> zVzfK|u)|m2Q7myW7j9>euqC!pK{#I>t#gMB$_EYLbPROw@8~1YNGk5WbAxQy&r|<| zNY;$peb;)ZSC?X5WduBh4D#!FdGrtF;-6_2qR$l;^s+ON-4tNIGk$kYRZ@$TYY(^W zE_#Fnc=Sv@WD48GnT~%ULy+BKLcSK0DJ9Ru6Bo0Ez*&pH3@QI%(i?0J3cPBA=u z+*NApS9?_5nY$;bj4j3O;(qevagNiNq>H`L<64bN`_5oXhW-tFjkBlu*_GRv1gYcq zR)6@CXI`+gRUv-Tptp;3EvfPiwXPnJ6%jz?Beeg<`FUX>^j>#l_hS3{?&4061uJ=M zN5pg2*Vm+EWo6&Jf1eIl$hpSQocfMdSQWUaJH2-~H7AG1&CPAREnLIO%1T~IX>@YZ z2!#@eW#oNcQNdX8DY1No7@`iyn`)2BXI&JLdYD*+>XvmK5&X5aB_=6}9(!qP@>n*y zx>{CNPEIKN%_A@BjV2v?$@>s#%3mDv@Smpgwdw?C`wg-=dq znD*SApFs);L~d{6K>QZ0thyJh-Yz~aU*U|2aO5N&hNk)CCj-C=FKETn;Kc|$CTb#r)*n87s=@TJ9}&AX zE?HUWfm5P7z{?H;X0WLtxTzWxgZQkIIS{Az1f-~IXO8w-W(|RMA5^kF9WQi^7B3o6x_|D z-vup@Wd))EE!U?#mEdrAfEtgmSx*0(Xj+xsY2OpHduB8c$Acu4$I%&Tn&bMr zk!QxmMMWtkh*Lp$*@f3c^;t+Iwak}nOG_)O&7U=c)s7t$nVFf7q#fVP+gte+GR72$ za>iV+v*R{3HDzUE+ss}MiCw8^%Te+D_AWz-IT&x$StltYk^|W|>t)(}Q7W>eM4Tsd z+hR8SIP~h(tB=$IWx=i#|$bf{307r z4;-`IW9ge;9xhZnA}+qPZ^{6#_O!xs+rwvv*O(NS%C`*R?|YrgLlrURFNB=CZVa~U&i3^o+WJAmib_fG^!JDeKv9e* z?p<6QZ!FaiMadI@cO5mU=ejMtq5JY8`wBp$EvQX-W?S!huGG400Tclw3$?O>WBs)- z^EK92u3R=ZCzM!~zFuowLHBX>@;fjyJ)o?x8K4N|OjHW1_|)f7Khsr>>6505?Cmwe zr@4~6e%4r9TNjjw*H8P!VQ$5iJJ`K8)Aabfzto_{ar5IYhI0Lvu%rZ=Q+Tqooo@~{urrP6 zr4_B2b#;p3;^G?zhlVRV9l92*@}`T4h*mH}?k(kp=S0(T^kyg!&;>7TnP_RZY1lnU zD`RDgcW9*uOItF&-%LW(b7zRL4xC-{b6xAZzMF43wm?rhS+g>n!#4>K6}?<*Vd%{- z56r6FCuC`8X&=kGGGDK_QYSdNuoLuH*&C*-t2-Tbu&TE6;c~T5#3KpZEqRf+F){_z z@Eul04U)9PmGY;}&C{uc4b?;P^!K_u2C~oFwgf4Fs!oMdcV4TB^Lv*3oRX-(?m;p` z?y#P~7Zlw2`P02=Gd7|?w6?D9lBK2mBOy5mLU+H*AQ;brM+meOndF4+yLz@A`t|np zf#GemXJV!d20NJB%&pSzax3|a7>e{{$fwap)OUnlehP8ufmGDb1|=FJT5w)Qk)cbB z=U$8&f-YH7^6N)wh0mm`_v0t*^!le!ryOU7VO5$}Q0-l99#e`LQuaoMhVe7Rj?T|s z=5}`H1D2E=7b!VuNovzd(NoYOOynHG7UAX2gOKeB`(c!`7 zUP$w17k5_BkK$^fyHUJV@TT)0l%l4fB+f*IF#I#)hdvwg7eHC#N54OD`2#ZCWq*yRioEJLd{Tk(TB){$H7tj@Puj=Ms%?t0+y30GC6TIfQyEc=S zmNtG@Lq~FXPk-TIezRyA4}rQCk}=_r?M^-?dF^!ySRY14B-@nX{5E`pywqQlWF5GT z7%R`xf-*O)H70^3KvwqW`xn~nu)re&;&&GWCmdj%&lz_yq`UR090Q7wmYzNlY0ob` zzenHUaJau?9Ws9|-uMhAbl-)2SxfNe1do`#z5R(|w}1b>WNz+oGgQxUc{;~`Hn7{M zc)*KDz2Q=MBY6z^GOjFxSnWBZ`g?7rZ@db%+ND9mKCl(r7gv06KL}q;XnoWd&*EAC zWN&L}(XVN>=~z_oLXO5YDXp|QWHJcxb#s`R7c6|*w{O1+-Q|rI+$FUWy(@1deSp?F z<_BufvP)>Qz zD}>6`^WK^^RwFJmH|@4bj1O4{^Z5wR#~hCLyBI6M?9XscRVOH@_romhWAmlowa288 z%!j6L!(R)x)36LM#`03J0#^hz4NQh^XM+K9$;QUTEPz|DD5q_4xNrH8h}<}EX*)if zl#_f)!c=sLK|@*%kY!?Pg13XYWB?4?GfJLW?qbhjmV;IZLH7f zAC&0kiLA1wVu3wvMmk3PW&F#ip7_+&sru33;fRjUDe$-QQJG8YAtZ6N^|qMBsNy_P zPIbg&+V^d%P@`@{Tdu=L>JCVj#x`LCut`yd51-WX;Afwhw020@_v{S^n-HHLSyLpC zLBlodyJcR{4IZ?09F}~wZj0&F)eh(60gRbN1;ra18;M{F6P1)qgTG~sTHFhsJ%lG0 zWAci+xikO@QLf1^n>b{BW~&)=fTvP*j%UAP2zW=)nqvdMzttm>TZx@h_wn&T8{fY; zo)bR#0l3@7tF3Q1sP}&G>DI$5jyRsXHTzMQ-=&0>#ZVAnl9p4Yjg4IQy5(%>RITDa zY*D(Cpvz$&?l5mBUsTN@b}NfL>^%dWD~e#a8UZR}(We33mtyoGCtQ$py;kh<_rrO{ z?dC%p_vpTxUfpr|5U-3={HI5UhBW=^FkLH77v0s4U5Z>5x4wsczA)eb`s7pUP$~ZF?GczwZF8@WN|OjaoJ^2c({Hmltgb8-{4FVwWu10N~hHNhmV4!l}Cop z2XBTDot!GTgMV4Yz)#nZF~kadAIW>Z4Kk1WaE)VjCj27l70NgwVO*x~lHe38)#czL zz9Lk@=Gq?B+^pGC*EmRnIQt|S2A`Ca^z=K#WPL9(U!{GuK1fkC*x@YU6582WSa*}Q zFW^X%Q`N|iYt}wItxS-sTJkZ)`<|Yv5aD;1ax|#i25drZpWjdl`51N{h-1h9;jUDR=BbdxbVsbw45G`r+6$keZP*MeBZcHAW}lIa!9> zC|KrMSy_jsrX=i)-U&u7F-9%)YGE~^W+x==j08C|vMzncse%dOtY^JlU0R9(*B~#| z3);d(svzG;ccIhyFgJ)@@pa*9$O`v%wP1%^*|x;q7LS)Lmo@h zL3KZx%dhnJuP$N5hXn0(YeAD$25dTUad9oQ-Yi<(gE}ndscP0tJCpB-57F6##TK4l zdkuZq7u~%WKc(P4$a~6O-&@(@+L`L~DC0%EYfT7XX>IMZ_w^y;)dx1H;G=oY>x^y# z%4s;`^p}Tcm1T!6F}$;6mdHTdNG>UnnN$1pny{WH=hCLNCdA)7<4Gnb+z_IP7u%ij=Org6udS`s$!33r3>Ouh zr&Q?kIqx0@bd%*VEN8qB@?+)TsPXw~^kZeEkOr9AicMf(7!n>xg9~0eq5y$7D!-)W zXinosP5W~-a=|@Y+(-dP>s-gD*vtp9sNVSMXHnX;L%@wPR_tC`SnRJMZN|@jP2azN zr!Ez#M20^K2)6L)DquHBEfYNJH`2x$-~y2DorQ0H-X1l(`L#Fw=WNUQFSVd1JGz%w zwcbnURgK9Jf}wMC>yVdii$9sxS`R!2loyjysP9NH|I~A%LR1(lUF8!J&`9*wNB%7ypqt+{oD2w#J$M z?%lhuXVw;TC_xL6ha!uj$(4JT`mC85!kyn)Yj!{hBTrf=7n`>R7LN|rUzC*4*ngso zB>W}~=hySLTlmpj-J}Ku?^usL0!w-wG{bI;g~op_R7q(D$I|4ts%61CwWXg}P|y^r zd=qgZIxeQ+tPr8x4NJx$WMolbTaBiEqJ$MjAQyD>a)Y->{yn4iPevp?eAtCH(d~G0yP4OmFjcwVX z5(tPDd{05%@tee7kl5({eXh~AI;ApDW~ki(;s7Atnk6=XCWsTI2{INKNC;FmQ?skf z^dd?OaV~QRyk`y;RKMCEoxQ{e)xEI3of@{b3PwjCBJvP6uDt#CE z?+;Vdrau01+&u@XBbLFz1nfT*&4`pJpgi@F@S$7 zA-BhxSqdv_ME=w~!wAXB4gXcOMLM15N@VycvUrEvYe3x?l)@G{NvlPTXPCcYVSGPn zbx%OkVt6V!@9RDO70R}hGU03LIwoP<_sw^iNcGFL@7@k<>E9u13>Q#FpuK4P1t6fq#T7Wco|2wc_sM8;c-wWX z&aW6oRY3{7(_;N7x1&fnLBmQ;QV&ts`BF}N#U|1WNn`5rT>9+!bdH`R*uN`y;8~>~}!UJ?3iF4@ff3wNwEh}76 z@?Y5Vf+mY$>Q<>a-bb`~GA36){&E;1VPu`-u6ut&$egE#yHM=;E7q#AM$3?$rscq3 zs9P9=@-@Fj#@M5-3R5wW^_#pluQs6}8Y4=2EWj#(-lADU_-VEe|K7dkiTmwDN=-!1pKGzdeE@ll2i$ZGE^p zge3OrsS1vj4aeJ>sXEdcCLE{{dSyFn46PxplF8Bu1Ad+U_-)ZHU-cB})p?iTjSvzg z3FDvk51wJ!)$ho`U zZPA5J_=OD1bvN`ex0J?_b`**hyHaaNx+AT>Jtj&DzG4Z}Hd&$>5TIc4OPWoNG*?i4 zv*xGFuSC16-f3wGlxX{ha0zc0hNNTx;=S6>syk+Gq#AJ+$z>R#4EecGKW))E8~5_NBM}c{~bAPhLu_2`m<{Ra?DH zsEKzxmuN!?5N^k*oO%9c>qu_9`AB+p5;2_6osUlb&KMN!N$H*6hZ!r!qSCpKj6sOwsQKl0NkmwqL1d*)822tv}r5T)Y0E zU{mz_#29T|tNDr&83g*ok_SNWx;Fuvw{=z@Wk~`qIV8EMG79Yp$h!^7v6$Y~mT~k1}K6$t%DP`%!b1 z;>OIy=JT`p*rg`olizu~WgW{Pj9z4k-Dqx-9 z_Hc?0FfcoJL`@vjxh8ra0(gmSxWN#djN9KRNculEK87S5d(rDHS!^c@a3arfBC|Qy z{5C&MK^q~QZw89EjDi%6^rVdR7~GtBjK(nWDfYRgzReF@y@%Hr(HMHC$uP}6Un&-4C7Szp4(n`Wntr)4?cO7 zL)Yz&BmlYmjXj^xv{mt$jHizuKEFkBm<51kE!;yTe&^nCn|rx1X6^$tEp?17e8}rL zbP$+J1Njp4gDOFJ-?7VbIj=!tehF1l$z1b9c^;i}3^bV|wyPou=Fa?X>DeHY@2`v} zzneb{pU`^KE)LGCQ%V6+-JP?t(Js(6O-cJ&%SFmtzX5G;vR!CB#IQ+ptW%AiBrzmu zXYkYp2_6}c@csrkSWx8pqtUE0Od^w~uGO_y=)Q60};$wuUz7jk%lhL2Q1=L5O~#!7N% zNl+I8zNTi^r2@O$GC4(ThZg6PFLXASKI`Y8=AE-No<5pG0|a?fB|=xEgKM zx<%0OuIu4(%)K|aK6{P*P0l1N=1+K+-=|@FxAk*2nKJGXaB12V+UnvQjdKD*Zu-$NfV`3Lty^u{jjwfg{xZma zr1rB8ArYjl2!6x>GLE1h2*eaV)P|&{MxJYG}fP>i8!P{$|xdb<*mWd$*HQz%1X${smaLvNoq>OySs$^CsKJCHCdH^ zBL#kg$NFRcpTu~anhTNajRjh}dt+S*(j*^O1pFUcs_7BEh-9!akWT(z?_>1zEXYI` zcQ3HuXJx1h$LQ-R$*L+TA?2iG{}9*IR1M?f=a2Ql5in>?1h9~lyE|SDCoij@tf(M^ zl##>ABNdde&PWx4vjWmtQC3ABhgVWnCMf^?Jer6LIP`W4Afq7b{5LmqvO9=Mtk=JCJ(LO$I65mR5)>7& zE=W8<2}tGaB7=061$|GM&WhyUS0 zYFON1WN0FAhb}?DBmTPW{vYh|zuNh)=Y!k`fa(9>C4cVjM|ANI!jcI(uE2KxJ6Dwc z?=rTx5NCc2{|8geuOKKo`MBs*W8iJX$G&E?d#)-?0xx6%|NiCTr_ z0%Xs=fq6sMLleg?9QW;i+NcPXi2ROMFwHrt}L=N-|uw3>PkaSJnJXr3IUhnrPRu zRwt0?g&}Kl6p=EhP-)w_j?5O%{*K}&^*-Nv1fmKv3&~I@Q~suWbZ4@#j9s(6Ci;MK z64o47!HQO+Z8sS)h!nCoX_MqqOGTv2wOrzR6YozC(Kj8jrIBQ<)c^65R*8~W#N1J) za8D2lY5yHP+D_eJzh=O<%(fgE&DmkkW>7(^eSDd_mNtO=3LZM%PCMmVp5c2^zk(); zDVQzzsQA&!6Qj!%(p2Vm%$}A~-(!PprYxs~EMnT>zQNJ6mSNNrEO*LupoLLa zNNACI{}_(a_`Zsz;irAQ#x&B9F@%Q>64hcn3omI=+fepj4q!}{wAbbyk8Ngs?zX#) zJwAW%Q>#NQUjGNhvgEvO)k<+3H`+w2mgZgThZs+`D*Hn62x{^wxcfYg)=9PYV(m4F zL1&g)YL%3s%`=HT<(;K0S2*R4R?)Qcjxh1XT@K(DiI0RuAnehRjreFKir>kc*fb6; z$cKWmIL@sI)~!F0AJpa~K-)7TYHh4w(|B}9vz=}V=agr}O8aaMEg&}`eLAXJ(230> zi}KFOU1^$jN9yWXwoxh*!~XLbm1ry453_;R5_#5W>h|!FT)1bwc_pE_xtY{5(KO++ z8-a4H;liZL;b{JiK0^TVv#8m1$C#V5h?(bq>ANM* zujYScVLjflle516dd|GmK;C}pGUd*`GVj= zt048~Pp@CAt0$$UU0LIlrDi%2r~TD@RrrHj9S=1E z+&?tBOI~P7`%%-DUr|xflqa1yexapOt%$XdAUvEqonO+a|eSG2FLg2WM@*TremyXLc7@-GDB$|yT_`|ySuv=J$dqE zsp3@gP=ao{2#0>rojWmES)8w4z1kdm^z=o=+50zTaq(^;dcGXxI;OpBL2NwG0e!fb zC5)@1NG~CH@$qc%!QSt>j|(Y+nmJFNXzWI`xw*3*@0ByVn^9IK%D}*2+vvvX`L=qL z3=d}r7iNW-Swk9(yKQKGTWW7_Z;gZ9RjJS`KG%3rwY=q~miW3QJS9v<%eK76;Q zw|7SU(-t#ovx9|ORySiEwa*kRG6^$9Lm)DfB~Ao?FU{WE8i;(I$Szi1QBho2SV&CK zIxBO_u2to$-4A$k5xPLf};?(A9D&93O=3>O9_HFiaCkHdn8xj0jS++maWm6 z2>p-{RbhjaIlc^Y{mXtVvjYWpOH1Qg7Mqjr7DVK%%qTwM3t(72`-GWu3EHH7(3n_!XBFA!ac=2}MrW1s|g?-u)6ihX&t=BSu&d&tY z2CqYJDZ@Vd!Y%nVLvQRXwH366{kA%DCgz1R=6*biyIyi;bxS3DQ%2tP^_Q>N7suX= zcbpn=h?Qkch0>z@=2Tb?Ky3A0`aNN2Xb2k}9o^j9zp=i39f4s3o>cR6JL%aoUB`$m z0;i-c+}(g9#0R#>*SfTsnxBNm!DYlEw}fTBH9W*65DQH zqxlx?Hfv7Th|c| zk4t}!zN@R)*|TR)KDvp#ezV`@b)IU>z%1_LLvMh$hK(gf%Xi8ML2*0rMqyEH`mR@n zoW8!w1abb_ZI{)#&Q>L0o+Da2s<~OMN;v{zXRYSEDgsrury|ntP~?ZspA7u@PA4GX z0T2Z~x7F_=Pi$S!%2MuS{1REr{3cdkgmccdeP&3U?M1ai%VC%*Dk|dfcy9S8SZAeN z)l1t7z&mcM2a!k5o=eQ)I4J}rKMTP&Q8?*L6nZ7;SX-?GYxLzRr>@QpoUydTG6uyb zzScOfu%@`15N6rLIkz-qIRgv+)gz_~Tr)E>(_n^$T_AM7Xmgh2$YI9fM4<*ve3|&z z7Ku8-DOp%ik(9zXK{PXFP~)CWjmI#`WBJTjmbukDcA-?%zRImzx9|j>p1YkoVl%r# z%jTV}PEEkO#b)lDPz4Bb3&5=9*|P+bz&M@3Rf(i$=ZUSQU3`;8wl8INh7%gJjakzg zH0_&PT5id^G7F}{a{FCUwi)#f9%wE-S-qAYuO>Xb6g8{6M{W{y@(zC>lJ((({WT$! z83vO$w3(pOHM4tN?#tkwg=V|T6ngxt2wisXi}A;P0LEXAMsiy@<)N&6^pI^~GInm5=XZ_n>`Y8df2@wLCVVF9?KzhV7E%dR?L1y={^91~QCwNsM;CRpBypBSUyI~B zl~EKL^#d3!a;f!qc}>mT#>Nr1-Qz~W142n*urN6QoN3y}eO*_-^5aMQ0b8y96X zq#m?b($w_Mc3CNkq#5b$jReX8=8oYj`r|%9>6xOL=V4m1GElvRMBtCh!iLvKQ|%O| zjg9qVEDV<4xe0U?y4)484Zf+<@#L~#bKPbp=d8*^7 zgl#i>;_N5jgG#woH7OpEcso%PssM!4HGb7}xAzF!@q>hYinJqrX4P49Tf+tWAis)r z_x7?Q^;L#~_d9q|<*nKV2DCgpJWsag@2lK?jXuq#BfIy@ew`&MZm#^{Igqb?9;tsp z$vIpZTV;tW7U$sLm|6)AUU*PG?Bj83s{{7S$$UN#-=dsiaU{L ze*gU^e8~PZs1={=EVkTB_bH>5g0T017)TQf%2`=XG} zq3vEucgJPQZ8Q&@#FH++aGrinKY@SE7-wqGf3sA=%9}nmOEXfO?C0n1MdwY9y?-kAr#<|xf*_oNxhWE?C8pWltrl&wGba!`8eSVP~ zYFbb{N5+(bO1iO;BfIy6{b}2hq*)=xjGoxx?>9qa;D$U7!bZku27Gq6~r#;DE2CII$ z?O|}0SKr(`)$L?VdPP2p!+sCNs8_={CpRIW@wcK-9<5YoJvgp{*^fWWKLPnF-d^Q84+hq z&kYDM2uxC|lPIsOH2Kg^ zY7X0v7EgMUtz+*Rew?b=p_lhLC`H|d5CAjS_RVE94l?IdAYMYDfQpDcrcz^j?v8Dh z4S?@wud(0&=@(hXh9^^u6<}S=0YVU{2gdydG%t;bOmgR=6hI9K+M?FXN;S$0bPsPd zATpmPcL|0u+GWk;YrI|F)tgxlJt-+U^3hcb%Kkz1lT}>A$K;k=+}GZ0zqPrcrc85y z48eF;*W|3DC$AnNN5L1_?$n4iVJ{`Vz!uGK66w=horVb%wR`{#+_kfR*umtSpVJ+d zcsLx+gu*F!f0@oKA~S1Vs&#}5FwoGBQ9-VJElLn{UL1d%rxtLkqDZxKH6iuWk{DVR6FLPs6*VHi08~lO&Nj5M$#Oe+ec5rjqg_xtsCO&=bD~(j z)Bf%j_9_EUK1wZIOX%3KW5opYE5i=h9@UfvNoLEQEkOh`GByT+(%sveDFg)+dB?48 zbB<8f66Me#L>n3-&@-AI{PLPWZ<%SXn~x8GL5Cp{(}0ks&H)PaFhf>|>ECO{Gzv0M zMD_(_&vfpmT~XBjN~)^=+|g+5LTNh20U^GLiHQ_m#nVKtxP!%m&UWY>Y|aPgs-m&- zoLysWP;cbzTVV_^F%F$B0y^fIu2g^~Y?O>7RjMUM^{CtJ-WawU){eo`G_UhDdtpN1 z+E^^MV3vgtwjCA`Qv-So5a3SRYu|yNKjUJw{jKzFb1JuI2oeAGV&rYmz5s9lVo)85 z0XqKrdbvZf8In=9&=a#Hri6_yj|cVMACt@rKdXtVJ95DTukyETvR3 zewIZDlMcH3!s6n~?;C(Cv(r1o)}mzm!J8(bb0>M9E$?105@!Iha^B~${^8>` zph@%uGRq2tk(>zTna?A6pK%p%)S~ugBI51l385V%iowpK`)??{tE- z;WqXZJg(uaM>pLYcHpmhg})0x{mL$Caug|MmCw6KGfl0{wM>*XW=)yi0y6;-kcUA+ zk#uObZp<^hd_59*mC>wWlEb$+vE0T z3L4ytM}+ACj|*Syp99yPOA|>1Lm5!QNZ3>k;$9#8j&7ZPYMWGBeTLb?Qq%OJ*(0y_ z&hPTY>8UAI_?f|6qpXXD2xX$v7Bt?Vx6P)O5aH%lvKoB7FGx z5j37oqZMa?gY^DRM0AEUYC`2(XJZGhfejvde>AvssTCVmtPN;Cd=QtA!1d=ShVn1L zRA^0-zFn>37`9KO<$MJ?p=;aQp>p!_Gd9OW9q5$y)6>}mBQ~+EN)b^lcP`;1DF*53 zl#{{O;p_g+QrFDN6iJ263NC%@x=7*?E-4F3%Z@v#TBps-uDM}`ez7}6HWIJBprqNN zzRCAP$NB5>bSJ=wVsQpgi4vD8I^KfEwBb<`KCZi)E0vC|_5+%;JWl?Suq%cTN0Ch~ zmlo~~$ons^@_nD5m-C5->0}WAuFWkjx@`P>FM09lg~k%wTly*M3!hn`!f!`I)dgWm znP99IvDJH#{PUeG7|wt!_x!v3Jg;5W_qnx)M}EiVb@q`yG41ECza}j zJfvNvbng~^rQp&A&-q6_FTRpNv5-bktqP^G%kovb4NzFrJil)u=#wcHTjXX}_ZenD zQMICC`-I9#ZuzVR3%A7W+qb~`5H*elN%hwE330)Hh11s2| zSIrdpF&OcJS;Ap5X>=dHsTrnZbN_5(BU(0>x@^t_;1rk;%U6VG2(o}lE5Al?8oQX; zRA9?>!mY|mNjW*W*h+=B#tz^=l>lSlvI3_j(QH5;_h9Tg|XT(4i1^n zHMffU_YXlE^z^=(H3oJxUZ>YE>Bpc#oBZ+o%8VBoz)L~JayZ`r>>D3G{Oqr`V?}$J zm%BsSE^FuMZ?Sjndl3h3pKc$pTxNP&U!VT#7g^NgrZ$*po;sh`vB@`eG2OQqPYbon zO zJr{Tn$VM1DJDwLWUVJBK3Z-;moV7mSVNm-cO9{&|{-olmKL)vn6-8LsPW5t!<8e@T zfI&3KTAa!HjrgiM&dm@xb8!TueS7fTsn5@8bG{Od(igs`mP1ez&x2E~b#c8@HLQ){ z26zbSqnNiCw&N}l3qlMsU15eS9yRW9Hl1!f8dLIyW}NaT>q*@s6p)in|M&8q2YR%= zv)r|GZX8Io#Qw)*HM@-(@cuz0PuVgoZ2GEDBRixcNEHFMkJWj$Nk159w4bG*-E`8JKG1cr2JiysKWyLCoyCUUQ+cm4 zR(u@_pMmYIL3_87?C<}SMjw&gGPM+KZ0QmEZ(RUO5|iCS}8)8cX{Rq zzY9c}R&q>C>o1rd#Bq3S>R4$)m%rRG>(kJ_F-kprr9m6HOv!6kcgyI_3256-dHG!V zDqS=3S|${D=i77$&H8)+X9*6X=80<-AgX?EVV(6GVH6-1merc5zfpy@<&On8FVH$^ zrM?>@MsQQeXuK`T znt8%=GkQb$yTYBUdmj>;wPy8FzJ56_O9__~8Ik17uvmD5F60eZ$JKjhaJfOuMVw;e zSDP8PI6RK4#>mJ}!nJM`kLhyLgExO+E2Xo37OR2;$Iv|A@19eVPcAo~d&oti5G-U5 uz*+D)8CIn<39X;{#F%G1Zg`qyA9a3~bTd6%K;!WLW-$6@=xSZ3%l`!x+YbN$ literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer_192px_transparent.png b/resources/icons/PrusaSlicer_192px_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..18dd9239811cfa21f7b9068d2f57216d93514935 GIT binary patch literal 9110 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°zYjC+>bOg8 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 JPDHLkV1fehz%l>; diff --git a/resources/icons/align_horizontal_center.svg b/resources/icons/align_horizontal_center.svg new file mode 100644 index 0000000..7234939 --- /dev/null +++ b/resources/icons/align_horizontal_center.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/icons/align_horizontal_left.svg b/resources/icons/align_horizontal_left.svg new file mode 100644 index 0000000..1b88ee7 --- /dev/null +++ b/resources/icons/align_horizontal_left.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/resources/icons/align_horizontal_right.svg b/resources/icons/align_horizontal_right.svg new file mode 100644 index 0000000..b4dffb0 --- /dev/null +++ b/resources/icons/align_horizontal_right.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/icons/align_vertical_bottom.svg b/resources/icons/align_vertical_bottom.svg new file mode 100644 index 0000000..5c0a94b --- /dev/null +++ b/resources/icons/align_vertical_bottom.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + diff --git a/resources/icons/align_vertical_center.svg b/resources/icons/align_vertical_center.svg new file mode 100644 index 0000000..e3655be --- /dev/null +++ b/resources/icons/align_vertical_center.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + diff --git a/resources/icons/align_vertical_top.svg b/resources/icons/align_vertical_top.svg new file mode 100644 index 0000000..a882176 --- /dev/null +++ b/resources/icons/align_vertical_top.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + diff --git a/resources/icons/burn.svg b/resources/icons/burn.svg new file mode 100644 index 0000000..e7b58cd --- /dev/null +++ b/resources/icons/burn.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/convert_file.svg b/resources/icons/convert_file.svg new file mode 100644 index 0000000..2de2b70 --- /dev/null +++ b/resources/icons/convert_file.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/custom-gcode_gcode.svg b/resources/icons/custom-gcode_gcode.svg new file mode 100644 index 0000000..38bcd21 --- /dev/null +++ b/resources/icons/custom-gcode_gcode.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/icons/custom-gcode_measure.svg b/resources/icons/custom-gcode_measure.svg new file mode 100644 index 0000000..3c13dd7 --- /dev/null +++ b/resources/icons/custom-gcode_measure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_object-info.svg b/resources/icons/custom-gcode_object-info.svg new file mode 100644 index 0000000..aa51310 --- /dev/null +++ b/resources/icons/custom-gcode_object-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_single.svg b/resources/icons/custom-gcode_single.svg new file mode 100644 index 0000000..d177860 --- /dev/null +++ b/resources/icons/custom-gcode_single.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_slicing-state.svg b/resources/icons/custom-gcode_slicing-state.svg new file mode 100644 index 0000000..4b4bef6 --- /dev/null +++ b/resources/icons/custom-gcode_slicing-state.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_slicing-state_global.svg b/resources/icons/custom-gcode_slicing-state_global.svg new file mode 100644 index 0000000..4f5131c --- /dev/null +++ b/resources/icons/custom-gcode_slicing-state_global.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/resources/icons/custom-gcode_stats.svg b/resources/icons/custom-gcode_stats.svg new file mode 100644 index 0000000..fde8fec --- /dev/null +++ b/resources/icons/custom-gcode_stats.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_vector-index.svg b/resources/icons/custom-gcode_vector-index.svg new file mode 100644 index 0000000..4307dd7 --- /dev/null +++ b/resources/icons/custom-gcode_vector-index.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/custom-gcode_vector.svg b/resources/icons/custom-gcode_vector.svg new file mode 100644 index 0000000..4ac1ab9 --- /dev/null +++ b/resources/icons/custom-gcode_vector.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/drop_down.svg b/resources/icons/drop_down.svg new file mode 100644 index 0000000..1276e34 --- /dev/null +++ b/resources/icons/drop_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/icons/reflection_x.svg b/resources/icons/reflection_x.svg new file mode 100644 index 0000000..7b9e18c --- /dev/null +++ b/resources/icons/reflection_x.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/reflection_y.svg b/resources/icons/reflection_y.svg new file mode 100644 index 0000000..97581af --- /dev/null +++ b/resources/icons/reflection_y.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/refresh.svg b/resources/icons/refresh.svg new file mode 100644 index 0000000..c9dedef --- /dev/null +++ b/resources/icons/refresh.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/scalar_param.svg b/resources/icons/scalar_param.svg new file mode 100644 index 0000000..f9386ab --- /dev/null +++ b/resources/icons/scalar_param.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/spin_dec.svg b/resources/icons/spin_dec.svg new file mode 100644 index 0000000..889ad9c --- /dev/null +++ b/resources/icons/spin_dec.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/icons/spin_dec_act.svg b/resources/icons/spin_dec_act.svg new file mode 100644 index 0000000..a9924d8 --- /dev/null +++ b/resources/icons/spin_dec_act.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/icons/spin_inc.svg b/resources/icons/spin_inc.svg new file mode 100644 index 0000000..cf6b3a6 --- /dev/null +++ b/resources/icons/spin_inc.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/icons/spin_inc_act.svg b/resources/icons/spin_inc_act.svg new file mode 100644 index 0000000..e052bb7 --- /dev/null +++ b/resources/icons/spin_inc_act.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/icons/svg_modifier.svg b/resources/icons/svg_modifier.svg new file mode 100644 index 0000000..97cf900 --- /dev/null +++ b/resources/icons/svg_modifier.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/svg_negative.svg b/resources/icons/svg_negative.svg new file mode 100644 index 0000000..5335a78 --- /dev/null +++ b/resources/icons/svg_negative.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/icons/svg_part.svg b/resources/icons/svg_part.svg new file mode 100644 index 0000000..5686024 --- /dev/null +++ b/resources/icons/svg_part.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/icons/toggle_off.svg b/resources/icons/toggle_off.svg new file mode 100644 index 0000000..4a7925a --- /dev/null +++ b/resources/icons/toggle_off.svg @@ -0,0 +1,5 @@ + + + rect x="1" y="1.00293" width="22" height="12" rx="6" fill="#BBG"/--> + + diff --git a/resources/icons/toggle_on.svg b/resources/icons/toggle_on.svg new file mode 100644 index 0000000..caae947 --- /dev/null +++ b/resources/icons/toggle_on.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/icons/vector_filament_param.svg b/resources/icons/vector_filament_param.svg new file mode 100644 index 0000000..a3404cf --- /dev/null +++ b/resources/icons/vector_filament_param.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/vector_param.svg b/resources/icons/vector_param.svg new file mode 100644 index 0000000..a5c8aff --- /dev/null +++ b/resources/icons/vector_param.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/localization/list.txt b/resources/localization/list.txt index de553f2..18ef74b 100644 --- a/resources/localization/list.txt +++ b/resources/localization/list.txt @@ -33,6 +33,7 @@ src/slic3r/GUI/DesktopIntegrationDialog.cpp src/slic3r/GUI/DoubleSlider.cpp src/slic3r/GUI/Downloader.cpp src/slic3r/GUI/DownloaderFileGet.cpp +src/slic3r/GUI/EditGCodeDialog.cpp src/slic3r/GUI/ExtraRenderers.cpp src/slic3r/GUI/ExtruderSequenceDialog.cpp src/slic3r/GUI/Field.cpp @@ -43,7 +44,6 @@ src/slic3r/GUI/GCodeViewer.cpp src/slic3r/GUI/Gizmos/GLGizmoCut.cpp src/slic3r/GUI/Gizmos/GLGizmoCut.hpp src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp -src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -61,6 +61,7 @@ src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp src/slic3r/GUI/Gizmos/GLGizmosManager.cpp src/slic3r/GUI/GLCanvas3D.cpp src/slic3r/GUI/GUI.cpp @@ -110,6 +111,7 @@ src/slic3r/GUI/Tab.cpp src/slic3r/GUI/Tab.hpp src/slic3r/GUI/UnsavedChangesDialog.cpp src/slic3r/GUI/UpdateDialogs.cpp +src/slic3r/GUI/WifiConfigDialog.cpp src/slic3r/GUI/WipeTowerDialog.cpp src/slic3r/GUI/wxExtensions.cpp src/slic3r/Utils/AppUpdater.cpp diff --git a/resources/shaders/110/mm_gouraud.vs b/resources/shaders/110/mm_gouraud.vs index 10c2523..86cd1c0 100644 --- a/resources/shaders/110/mm_gouraud.vs +++ b/resources/shaders/110/mm_gouraud.vs @@ -1,11 +1,9 @@ #version 110 -const vec3 ZERO = vec3(0.0, 0.0, 0.0); - uniform mat4 view_model_matrix; uniform mat4 projection_matrix; - uniform mat4 volume_world_matrix; + // Clipping plane, x = min z, y = max z. Used by the FFF and SLA previews to clip with a top / bottom plane. uniform vec2 z_range; // Clipping plane - general orientation. Used by the SLA gizmo. diff --git a/resources/shaders/140/mm_gouraud.vs b/resources/shaders/140/mm_gouraud.vs index 30223f4..f8b5152 100644 --- a/resources/shaders/140/mm_gouraud.vs +++ b/resources/shaders/140/mm_gouraud.vs @@ -1,11 +1,9 @@ #version 140 -const vec3 ZERO = vec3(0.0, 0.0, 0.0); - uniform mat4 view_model_matrix; uniform mat4 projection_matrix; - uniform mat4 volume_world_matrix; + // Clipping plane, x = min z, y = max z. Used by the FFF and SLA previews to clip with a top / bottom plane. uniform vec2 z_range; // Clipping plane - general orientation. Used by the SLA gizmo. diff --git a/resources/shaders/ES/mm_gouraud.vs b/resources/shaders/ES/mm_gouraud.vs index 8ad5fca..cd9f407 100644 --- a/resources/shaders/ES/mm_gouraud.vs +++ b/resources/shaders/ES/mm_gouraud.vs @@ -1,11 +1,9 @@ #version 100 -const vec3 ZERO = vec3(0.0, 0.0, 0.0); - uniform mat4 view_model_matrix; uniform mat4 projection_matrix; - uniform mat4 volume_world_matrix; + // Clipping plane, x = min z, y = max z. Used by the FFF and SLA previews to clip with a top / bottom plane. uniform vec2 z_range; // Clipping plane - general orientation. Used by the SLA gizmo. diff --git a/resources/stl_thumb/STLThumbWinShellExtension.dll b/resources/stl_thumb/STLThumbWinShellExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b19d1f123aed3d7dcf12a0fb5c049b7943df1c7 GIT binary patch literal 40416 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

    ^Do>YVa;`X1q$U?4o> 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

  • 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 z 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≠qG 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

    }>YG6=kri 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

    x)%E)DtH)Vw-0Cx!aQlK+;*i z`;_x?Ul)6a??uh@4)}BR&r0E#C0oC{S7!4S+QUH)>vy+5P}#P8bjcn)w|$1kSv5Id zF$)AR76an?M}q)*sL^4*^b7>$Whxn;`w&SPd_iQO*m08ey9fGYQi4~v>?7e((C$vy z1n1Ycez$du5g)U{&jnB2;$}0w1D-1TLBGxMVh5Zn6%TF!o??Wl*1AXW6!DBlf1JzR*D&V z!Ifm#r~ph$&;{QoP$6XT624EM_xL^m7a8{b*Y0ult%XuVORL3Epo`H`Evoh(gu>1B zAlydKSVlFX8iYCu@I_uAuZT$GukG`OM;qyl4B%=}{xVDa{ZPG3iNF_8Fd>kJ7;T8umygE#* zfs@^0%>~K(-(yZov;Tel(q8C)4=;?vr_uj@Gnq{i#ec;WXr~3A?)~p+L+t(UpX!ud z%QpVIex$`f{tEivWepVc@Si4u3?G^ZdhA+t~59^Bi~l zaVf35`vL5n24k!5*Ff`PF{(ms=I3#J=h#5HSS3N)=g8_E?BfR@#bO^*j(1sP7W+u? z;D!cIc)iqldc&oEZx>_C^bUBfwBwa}mqdH{D4tUPE-!Q^=PRz5lN_&mo&vmTR0Gdf zP=05;PQFGJM0lm}zUp0-1xE=E{W(3fes4HOMi|u&UpQs z-;UP{u5!n#g)@ZL0^qfg%GGzAbX#ux!#?T4k>q5DqhtJqWn`I60gpjD9!Z3Wc)S5mfyV{%LU+>N{PFk60x&W0Y6b9^&VEZHCW z14uIC{g!6$7>CEjAQT)f7H>c=*uN|m0+SY2JaU^H7G>7W6Njj`X-kAFxPek2w<{G9inVOf}XN{K%r)M7vBll^&lX2{0kp1R-( z@xO;0;p&ne@jo-Y1O5u^_#=@?{FOGt|Hha{?Kk2$Kej_M_#ys>mA9$q$A<1{VlTt^ z-}Vf=`1!F(6AjeOz;p*t*GTwDGCy|8zIMn>yIkQVb^NbJht@9~{~K(ADY5@%WgPf` zH~hSPzmeVnKaF<$mqejQJ>^m+yO?-!9I6^-w|V|H&of^t0+hD%|W(xlNAq|L^D8`_rA}A{NK_e+y^G zepSMLb)xcK{nTgYqI8WP$&`$rga5~}^I-2-WM+DB(=XOH8i2A6K!V_F+<2UsKksSB z;ar&41SPy^gKm|j!9{!&*6$~(kn_@luc{*aK$L-X3woLr$*Tc^<`#USV zT=3EV<{Yn1R-)`TIkV^_2?HjcW3}QZ|93;FoEL}rI z!XZQDy8m0R>`(IXJVyiMX0KZBbWHAozjkr6nce|^1$O*d{4*7g#_IM&->glvZ=1|F zYZ093s)uIK;NYoOY!PR-Z~60{)N{yq^52n- zb<52+lk1k||6YNKY*@RrVI9hb!KA6(Na&j$;T9ifFgwbj7_QfDnXeDXc-1Uck@mGZgRzg|BPg+IP% zrb-Pnpzk)spsOy1qR>1GaM+PR^*9(dl{&nvx-Qbw9-00)!WObhU7v^YFDAP z*1@SOf11V3%HQur{yZ^M;mUzOPal)WpGb`Pvj`Upe+GZ7`1786F4ja{_%o`c@A%Vt zhqUj#$)6$a{JHjqU;=)oy~zBz1Q!c`KL5Ak&tKGY@!a(;{8@2W-|=VUaB1S4`QynR z-Jb7mkFFk@h?^5$V7{D+3;3ejqqja%e7Q$G7k5VtzQDkRT_f$`OVo35@pb9(>y+&6ciSbY_%-I% zWc(syX!`4+^z8Rd+qmoBc1I`jt?N1F+qbw_^zZym#ka%$BA<&x!v^2%_Iu$$3Rtv( z5Ru%A_Ivlm$@t?5Pmzy)Lq3+HKX5vI1ryh=z40vb~c!{+-00??J1fkGruy@w{Hf!+wVP|!#FWc-}Zcp`E~#<7Cb%tuHxI3>bbb0*5I36-?q;0J3Osj zBFBHd$e)|Ga_7%M!9-kb{v`8fTU;#siN2%wbE}#l3MboPyavHo7AL7|63c( z9B%ZdU;nkjEG@nILtmIVvakQ_yUo(ltN+PPGe>;=PV#>1OK<59e9Aq2H63MLM1Kmj zC{EHYfh&advV+g2^|JH^m<))EpEXOUHW3DV==7loN_gEmnUGLaywdXCir4bn&C=}c zo%0#3|4Sf=CQZcUQ*9*GzpfWDXBA~4s&M=h#kUjkS5f{$?D=axH1ks?&TqEIO7DHM?Sx9kqL`jWNpgeQDDhSm;P^ zMFMj%$LACOI?Go18y$M(wo}_(@DO^;OzpOqSB%c9G%^K24 zzs#e)&b-&X{IuoQs6dnk-qye7UY}F@KaP1zUuWqN(&5)z%7{=87@t1v_ID}>#GYazj*ES0@Q5FGeVg;ye6WsKY2#-Z@pF6C zKE=RvTuk-N~V50p?FaI0=cFPYuQM*m&v*|OLloVCU&;CAlU=EX_ z-ltdp37gAIDd$_{aDwA|Xy!{vP9Rr%5*Oe)F>=%Yr>(LfZV> z|9fk*O#Yer2MAqXSOe%26-6a2tU|Y(Dye{8(MafDZ&E3y`ceH%KQb%&kyAq#sNKucA`6vzPMu-(>x|`(*Vm9rOS56dV2Y2?o(`=4b!Xt{+9OOI9iQ zCg@l7V4M6al>Ut?EK{5-;`ZBXKJztMXoYDzl>8FPZ~8EK{Y76Sf8U~@!t|%$@6#vS z__O!BRCEgd2srl^{3p;q|2MYxHvJ>BkQ+DHW@O#eB^woQUrc;LMNE8RRK#7xcN1+| zGS~s1w)#`+{~=DJHe`PDhRjrzpg*?ur)P>fW^oSRGzLRGg_h4-^Ewe`W5C3t_RG9Wd4RvFhPSEm` zp?J}Wl_K3ZXp`17i2;WocsAO;a%cFR9Ff}(7cCkkbgD%tO)FJU?i2HsxcEFHF4rjr zVj=?dwbSA&Y?^#F)|2A4P2Pf_cGTSl8iPb*xIyDfU75VApi6Yyg<7_@#znCTJo1ARO(iYO1c)srjG=v1 zn`y-i$ZVqgP**!$q75<1(0l}+Wr?kwQ6|mCTG#8rt$UybsWz}!>`RV1 z#FXPH1PcU{e7V);deIi-QcH-?-trD?x7`UcD_cXSV+qmeELtof>JWkT#!~ojs0t)g zlM`f1OR|W+-6(6i*zxYfsg1HFEZB*-fFl#rqnAt>^=(gjPNQwOrDPOQo9>rF(Ja3rJ@`Q{- zEiBJw$fso-WCOX>a8dkOIB^E8>_C+`d9BnBj^!gy!MJG1FMccciqX$QcU#|U$O{}c z*N1iW7@my$k&V23J>KQ@5KXVeO+_`{&hok+7mK`hjVXDZafgyuca=q6-vo*CO6S_e zJs0t<7kMrJXn>XjL`pe1h^rHyh67~TiR%ivf0ZsSGW-5=SouvLpMtS!#Wc)iy85)m zfr;|*-Ny3S3>S-hu6aSpXSsSV$`Enw^5tz#3Mx*(+>u2-{ipZ7e1hlqf_xs7$HZkL zpBmT~bG=Pn4-`4BKWoGzV{h*}aU=V)zkhA%&)9~z*gR{0Mpi`}NUMzE)M(;j7Sm*0 zAf_s1_SXDGiD~;=<#TaAqO3|x*zf;PmW$q#ExEuVwN98ly(eo&tuS=dOG0Bh<(;65 z*^_nCZA6_d#620AeztrK(_DHovVhc^#VDoRAAiaUuq_C- zZBgrG!{ue@NGbrcO0?LIPNYm6dXVbGNGezmo1kyD{kbv0Oomp3{@5G+*Einn;ZGwH z1zCSH3-VT6Ec&+fb4rlM-y)xj&NB@`;=BrYI2L`|_I$qeVh>aIUw=QR7ZmP?{dwY4 zSGZrW|El@iyS%OpB+9FE5zA{GE*5!Ben!dbt_CHqz+{WOYKv|1T6L~xd8O>X3aWZR zTwMp)#FeN|edk}q)_IrDL;EDkCwLRfXDluj`K)+a$tOq2P1GZNYV==6VR@oOpH`jY zSw5-t>FTMyAfS`?wF&4K)TjCk^yxKP#UIy^)!!)XA1)SoZT*yP{}w8J>O9RNue%Sh z$?Kl8y~~S-W7NGm`R;F=)eEvZHei#L^Y;oV{dFEOn&T_#ljHo28a!$ZT}}U`r}5I$ zyo#0gMU^{GrQvDRqZGMcK%9WSynzMOg9`+tDNo~~KPv$>*URVPNQ7h!Ph%83ODL4? zX?%ly4GsOWdKxT%a09yz_R*?g@Y+EbWW*OaWL`{9Xvn)8#fEaonTO$25a8t+X9qi%Nsm5Cw$ZyD}rYZC$zuSi= zD%idYSboL0SmgKE<4S(r>bbZYAz4Fy`{6?Xi~OEAi*FNS9`5op4Pp`jPCKJ71UOT7 zI*9kyFRD_=kDbHf3zT!H;u{&r@5z5>D!(;*B+Bo?>sfx)xLD-(RkM;`Agc85MFdL? z`OOH}mfw(%GnL;Cw7xOUem;5~%dZ6&i~L4B zs^m94qU5*nB#ZnWhi7Bazx~hX8~Jrj>I?am>rP50@~aq?wfr*Izf%em<@e=$+5h2U zk>5oR>-}F?$?r%+U=98I8lH|teixtKH}c!_)V`2ks3;5l>p9Xczean!gaY|-{!0v< zbZgy<_^U3`i^==Q5-;HZb{bv`^)+I^u8?AU{Qp{(;(oYj(dc|6Q;tm2gG!K}n6Jde zCt74V5Fh1OWO?=^7g=_rP()37_#$^>2{&NM2NfFee?Q$u>i8m^8FJ`k{Qu+>vh0)v zQyfOI3;qlpjU1|^AJ{lARAzWM_)%7XKNSd|Ou{Q$AZ0pyo@)3-HB_Q>d!~!i_fWAE zk{C@01ksxK_$76D=rp!ZQZ2gb^KfkTW z3d(yyTx;b1f_k_z(f*~@C-QkL^8;kw~s9a+Ny(r|%* z^zr)gdz65DQgE8Mq0|sirx*pt2LjT^>npMUmm#n8#_MT~7p^!VMIYA)-gq9cuir5X zey_TZ<<0(xBvR=cZuSwxr)UX#>Jvv{q9!cE4fEhn)AhkI6 z@|7!DYH#2I_mV)P+{>|dDZ$O3ZM+iO{?U+~5cdsZVRi6&5+QO=;9IGQs23AvII?RdUNU$iY9$JyVc|OVKPgt`D`WA+beM!<@ZD&g1K7k%aFCds zbHyoOFCUy}E@>fOSv&at^JMyK(@j4?ravj&^t;RSd!&)x{GPCgeBXdLc{3PzeB4W471_Rz zRPVRXP5%A|>YtM2fA%-Y-*4Y9`TLVo)PKl;X+_&!*u2 zyYcmF#`m2hKlBc2gWI%p06v6E{+@f$>j|`Yt*6^n+|MqkGw){h<^lkZT`k4Ob`k4M5ruHp=t~j%A z%kOLY4?Vk&>F;Cxx}uNiUvpO9@~5x$_x3)<=Z}3{{+d26|GCP(mG2IHT>g)JT>dG2 zT>f*D`j-D|CiiXmhxT##xA!rBe(dA&cQ`d${#TQC$NTEQdBgf`e21$1H}>e@$H7UX zKSA>7D##(MB$uyBJi18M4Uh3ee4Ghq4h|kZ*QYWH$hRvShg)r2c(ZZgl3avc{BZ87 zZ6BDyzstP-yf5jao6&{8RQ(q={KD<;75+oo;|l%s2O@$8-%^0Mm{!~4o4L8RdURp_ zM*QpAlBAofMS@6!XLN_)UjITZg8#Lvigckuo(bhqpshE{%kSm#s(QJ+qFyeq;8$K= zZ_5J%@?OPDmi#Lo3#*9HEpRV)AJf9iwMdy?1fKbsPX(v%Z1sP@ziawNkLhb#yp>?#y|7rhp=jYauL_D09g#M)t>Az@m$HRCB`v3N}J3XTu(jS|I|KqPuq<_m- z-1$HGy2SLSJ>)K5r}Fnn(%xMi@UZiL-1Tc=IFX+BUv{VeBM1Kf{GdDi`#H3CA8hL7 zrY}n!((jyvo*54GywK)O{|blluiD=oKd;YEzxn_H&@;wA0-Dv4B{r+N)e|)dA`KPe44L;{EF>-uFxKUe|B8`oC7~aeF@_ zMftjZyXDvA?fO1N{kr_!@=s2YUze9#{;gBwpRDlYmVbPT_o?dtNa>GT`H!b~e@%+| z7rNy~=xvKail8F2#t~A#J)ZFY@Bg1azZgDv|22xo8Q+hGs%UX6wwQ`xF>@0y`@mjd z{3Q}C7cFhas}6Awf}q%{1!=Go7B=u2dvNUH(OCA`BwqQ7d;;ELtQl{*QA!W4K3sFP zX|GrD8hxyxjo@&@_vinBw8-?*cgPeDHFo8x<)bmN^^RkB@1RhlDvjzvykt2g41y31 z*D_oy#!XvZg{aE7oaMNyM0u5XgXnd60j@>32F!XfcTtY*hOy?zCwxOU@b+=E6&lv8 z)~?tnO8<*kI9x2W6x*I5k@eeP+xJcdYX37@>MG`a{|!e93mnf+g`yZG}y0!+%F?nF-vBi3~9EJEKq7CY6eG3r{h|! zO=~aKa{hrOz%_)Eh`fYL8<8M@|C+WsR7U*N!mogb#b{CmD5w}aJSKkLR&lryHQ@M) z?U26=naYi$F69_Ov{!8(K+IbHA-+;U6@YG}v<$C^k3P}A2AaV77HX!p zmp6iA9Vi$RcGwOMAOkfy*#9UO$^A%~54O{KZ?OFz^l=~_qh~8E8v9-Q*qoU7c5B6X z$P|PTwlBh&8eBBsPQv&ENc+SGo)SM2)?b_a{3I1W%V>p~!OyxjEI5-aEp3LaXa}*t zIAIGH-C{(mkP6Ggr{mIEcQ*d|L^r-L;TAKi>#FgP%nEV4MI6=5+-_oSH*=$i+n?nt zZlh7e?Yc(f0#=*&Qr9f+TIdqpA`I>iV(!<)=t-o3FJUk{+)%@5uzTb1**{3L5R-)A zThnr!n@I0PTYp~U4xvZ^A>Vw;x4Nz#7hN24mUCg@=wf;o;fs>Xj$0|Y03Av$2Y;_@ zPMczcx zdBeu}qYL-A4*v^t@}7#JEG#ml{-+U@oA?RkODf3{v2o084Gr>%H+DfH^g@JSGT5}A zSjayj7G5DbaM%hz1}s8NNR9P|z}f0h8w!SOLhXDFV*|x#c?&j8jEQnER%Ov2Erj&C zpb~>%n?kWXe`!065)2c#gmW{+6Q_ft{2Fp;M1gVNzk)x!AEsmxK4zFpm4f61`!vWZ ztSE$~{b2SUU`G>Y!@N52wM?tM%5VF07!UD(P1h{hAIvz+Q)K^q`tjSJSUzqon)jbO$_vJo(RwRMH=F zwLSmn*TQoPYnZ_63+MB7ZehK;UrblM7HbO>J)pFV+FYp}tmV!eu6oF>&AL1*sW^Q4O(qUudHond+B&^VV2VKp^bkZ#v!&j8V{H>tkg2WQZ3Suvo zMpTKlKW!wi9|^D@dBDad2)sE5e<$F}R*;CiOjlVh>@u*5E2bOOZ@&m{_U%Sa-XC4_ zfOWe{#t;{-RbzN zE;=9DnGfu$NLH{zgVwcchw@LwkTy~K3CSAXA~B?m84_D+FeJtd#0#qn zkl24Q8!RkEnKAL!0K?yy^I41xh~W>0iWM_K9^(mq^_RfXmpTs>mU0!AKqO3I0w3KZ*zB`nqUyaK(>GyZ&_mt#SHC3eZ}21OBRu zjvb|cq_Rr?q)M><(N9DFwvh(Os((HML=>%1qwEOlpLN`TP3NfiaI}ps=e*4C$a$)3 z=W6AJ_w}wL6;*_q>PH#Gf*y{HONPq`l_>fd5l{*=M)RKOlp;#wsGQ>1^>VJfEMT1>UWJkjd{wRw+U?cD=gCCwE@ zP2|2k7@)w4Sb z!Y67T4en}ib>h#)c>YxX-j1){=8sr35OmmlsR1|lIe&ItBBO8#YUqVOj{a6N@zumn zQ5=3cTSFfJKOe;5r$^zZTj8hMz)uC8duiv-GOV1IzGi}d09GOpt@{bQsRjE71prV1 zo(rm;2V~*$b^?&@7nEG?0vKu!6wAJUL4kfg1{xCY5BwfyR9O1I-sVSja8Nv6%CVBY zxA}47AJ7bNDghu~`B8QEk$uaLM0~t-Q}6TRu9?~6!%<%-%xmgP9S!5-RHm#obR1OX zxHy%mQYuraRHo8UnFcza*RC=%+*yKtsk~aB06@f(^mqA3h@{f2Kt0_>;#fLV#u($cMci-}-_#u90$44XV zl%;>lk8=jw0C3Oo`fcfKXS)vVV(=t`c>SUaT+l$o^I*x74@irCVu&f;tKdXe>zjPOdN0>Vo*#8YA@5mxl~mJO+nKS zum)Z@UTc_V`LS{S>Sd?6r768TU%EPxwP-iz6?(xprO1B$o;%E@WaOjzZWFvdJdH2hyrr zYRH5dTWd^*im0tM(BTAgDa~{u1E!d}7qu1$Ws&)(WnJer{a2v|T>xx1|Di^!rBUcF zxUy(TT+CJ0nHxkj7g<474m!EC>wrKR)zUyAitbNNr9H{y=5A6$P+rGW- z@!GyaROjtge&&KL5A7?+wtb)d$!q&Q-GgQ$SoJ*V-!FsD*Y5DzzH?XqPvH}0oumPe zFirb%d4}zq_HvPT{VU2ApYJX4+P)uJGn1cXA&93gf|rkE(?x7{SMnzEx*GjYVt?`J zs?6Fu?d5=Xc?PnT=V6}h&27swZJ$04Y9yjJQGa;YZOMh1D8K7gX4<}AM1HrYY@Zze z>f?3sz?f0oU$7T~KRj5cnKEPC9Y2DlwOINJWpnfzl;cr$wD6~jzxgtKvr5x9E7pB8 z)deFpJTK*&!Eqx)NxoT)!eRm0&LVn_KQv6XjCmd8^?YXXI_G6tw&`8vI9E3IW$fbQ zBGXL^U(N47D0m_EepWUXELF?=!AY=gW<-{mz`9!c2*mO)uDsG`oXcB=(F`HNYk9L> z=*zUczq-&j<@(I%D}Bnjz3VedXr>#oa;zMWc}>HBy=X65buq;q-eqZyXx!oMLI z%43O(d^5%K;6FRJH4$}^P5Bp3NUd2MF&J^zF=|1!n%q^Eng zyr@fimu1Mm|GJbnAj9(9Igx!_Cg}_&7uP{`FDk@-l7jU>AEZB|~}4c4=>DZf5fM+|8b5 z*q{H^rMv@g$c(;+UHJD_hUG1Bu~(V;2X6K`)BfDe-^kRyl)CgEnbP;LoBrOInS9;) zqbV7d=O*7w{f&RQv^P`x{JcwfyJa~3INSx#>*r@CkG);&{eVo%bFrss`)lPGa8=U& z0F{>g0ovtu4Y=srHI(v4d*TsxUzgLzdt&J|v=^!@IKr1bsqH9m$A zyPxzueOCTWo}>8peRBSN`ieR=bQ93Gz{0;3HHyB2dy?|+-5Eb^GWq^3kLD62{&v;r zduJg~Y zh=*EX?!6E6g-f4N77-AAHWZwJyME=+!#N+LUt~U9U9bbh`d(=c5CEu zM14Brhcx*yLgF|XKQ0)I{h~LOd`5Jql+Vw*^@e=X<G`5?6Vh{|?Dvw%Yv)Z# z&vNOCjK#nE!LC)^_beC}Bqj~}o62}hHafBP}n zmVax~@=qCSFMrNwxwPGZsRF$^jy6AD&T42=T*(b50#XNALe5L zhd2|?GY^U%6}4EwLTj?AVDZV(dYSRdRcOD%9#CPYmsT{Dv{Vvxw>)B@m!6A1Ze_!} zjz7XXm6S+t#`eIMXRE1XwAl)qJ+Kfj?M<0(Z^-bly@3m-%uJcs?5{S4AM!`D*s7Ho z*q2+cPl~^gEMB+2b3SVUmn8McF$QwCH10x>bBQ((VI^6 zd-u1(bCcPVQ{wCi&L_4o$CJNR|B_9S?mE&1?;icpgXbrsfAgT-9%ey*vz`7k45Vh~ zFNRye7I%Loj{X$={Ym#(@YzWCeBe4dv&ryscNn8{earnZ7?*60h%G@w{1Wvhtsc)5i?# zZB4TB*Bp^8{bQ4s|J=a|<$ILpW>?wdd9Gbw%>4w^kR1MIWl2jBnWATx8sMWqLSv3i zpYJmC+5Fs}#tUu8Y9SH*aSfi7v}pJ%&Nho&#Lva$cJg*ORJRgyR#8cb{c)A0@O1pa z%VIW#+1}oM?|Arrb}~G?TAUy+kNx8_#1Pm1{CEmxHfKR{o)OywQHnL2?j{ z{le;KY=LjZ5%VdH;Xfk$G=>Uc_q%@B3=d<~5ZzYh6@_STN!apGCGNX%UxxcmI&A{k z+SPu0;^c)?)N(QTTucM;87I;Cgp__IG}lX^dz8?DUkLkf&T4VXQT$3yBXl5B3pOj3 zyE;S{BQNe6`4VlSi@xVvT{GQ928O z*7!YX_y1x3zPmv3chpone;3Yo9_|+!E?{~ZY5A*lg>m`3bI?K-AYux#}2Y)rB zrg77;zw$7ijP1jB1^>hRJ>)vc-)qja^LOhySNxvMUp;L){%*I+|1f`lQ2gC>vYo$^ z-T8Y9e`T=g_rJcVk=D6Z_53l@{`;297A9n6D{vv*^(Rd>$Ca4EnkG}s{2#sKlK-7oWxO^;{_$@4&-rjY6P6+A;{xAP7t^EDm@H6quwD{Mr&4qu@)TPD08E*9-jJ>zh;QuH$ z`Ty>NDJEVl$EQKM)o8r}MrM58BCS{0^MH+f6fM>&&_4`M1rPOj zNx}7nopghc1C0jN6u`GP$|y!ai>fL4?+ygV^$=@7RE(!09jD{dT@PWU|KRhJ(ZA+| zc>3ql@LJ9XBUHj;ZP|{JmPWKf9AKrtlb)PC(nkMc4B3f(Dkv^o!t@*Ql1jDS0{oQg zEhy0HC)rof{3jR$hKtP}v&2gR;^dK5g43K&wDM#4g~|AFJK`nva_tGrGrf3>wfuLw ziGO@hp#xqXM7+dWzPZ0x5gmg_9HzEcm9!KSYggZ3fQ1e^+-Wv+%S6fr2T4v-Si!)b zj5sL#aTG$9S48E_vX}Q)JMtbu@Q@@&MHuB3Tk#N3cxXY2l9p;Jvd}DY5g%eG?i*pl zgP15wrGnz|kTl*vix3gd!Pz~nq0qV!JvbNR^O}5~k}BpVf6F8noM|ZNv$w zD-fpI2x3>@y$t>|&_xWrh)z`Px)TI6p%@~f+BpA#53tq`e$aOz<5MX#9CeHA#2iGk z5YeKRmIl#Us7`r6T)mCl@|9YKqg`?MrPvW(5*@30x^LY>2%6QCO|zZn4Cogm-!J%d z%Mw^{vRi03o9C&LJZW0i5}%t75@mdjkC!Ex@{vzWQxpd~i;1*i-jrusygXy_bSRFx zbwjRg6t@$PJ*b4VGpJ}2*F4Meq_c~^yNL+W53dG8V_JclaOjrRqRCUA?mWfX_Dk3GwInn_(5gY{0A4k$r4WWQoe=j*tIIev& ztC$7S!CXMhPvVFh{4gV=h5`%m&OQ9Dsp}XN4~o}`S+nGldC(q#x%DFDJLoJOU)Q|| zz{VIgQiF*K4XrH0RZ3eAnuV0GhxtVCMERuyRa=e~)=*WBkdvnozFTgi;%8P{vx2HypVti9%adnjFm*0RzES*Gdqn&$yI(8cU~&29Ec z=rs$J?9gk*pdiluUuyp+p?}o2u=kJC?fNK8eN^(}!@F>7DPDk~=-!C`Ur(p+qFkgn zlEfi%pi^X?2G|kumv-d&%LPuQEP(6hhtuE_`Fp78LFycd7^^hdaTMjh=Oj&R&f^5S zPQGjGDp#}>!#|bZY%wH?b>+l?tki(jbse~%nnWMBlO9GI=pyz*v5@Q?Ait3R(xGu3aqkuiZqmF+UxuQpUI)irazzxve1tXlN&g zzn@0V5xf}Ovg6Weioet95Di0ebf$wy_MON99EGqyVk2vw>_Dkfmb2c0=8Nt#m4Z|8 zG3L4Qbvwj~=PQjK10lBqfI=KURe3>Ff?)jO8>&RcO0nY<*4GCaD$@6f zAsc#lI{Y~Vtl$(adBC^^3N&iFm^Dz@RkPDvHB;KvLB4hPzI>y5f0$Z72e}Fd9#AIZ z%_@k=s+k>D(YTK{N8HIQ*89s9a(v=A-fTVHBB{9k^73g)Qf7bo363o$%w*hO-V9_w z7khiWd13#A{_-L8_PsscEM8*oFVohy4^GNT-~3Bh60Z7IQ)!W6oWA`B9t!lKsms*2 zi%!o#-yS+61AQCxn*@D3amKG#-?SMS`KPB`}iOI5?q9M|Fk79BmeXtw<;k?|8!}S zyMOxBsY+%rit+yG4^#P_)jz#<`;7h5*Cw$fv-eLgW?uxDf}y~WlLn48h)t2L>}~(F zDaY=g7N9>j{S$TwrHewcD{sU2pInt-YY5}-C|s6kd7C(3s9lB$eP9g9$vq**0SD5C zI^c+Pi@}ST`BEo4#QVBV5($P^O5ThnzCKxrn`CIy$(R@kFN3Y;co3A!1g+fBBEwv~ zEK^P){85THI{7SeOz*ZV#s~q_d-pfNR&&b%G{0MPY%HbcmtH#8l~-QVd;}=Lushk=9J)xgYS;EAo72Sb{v)qE8^r z>>GLJ{%n_L(5{~;<2kwKWz=7Ob(2Mw?PA59?)~M!liXz4CO)0a@2vA7XEQ-r^p^uG z5@cE33-cit{_s7-DCtu3AzN^~p?CYs;@S58(yKgssxp%2F1)bTnBV#uUNRc%INlgp z?k>;m;bAIUD<|CY#jJCQpe*D$azdZT^Uj_Gc^-z|zPHC4Rae;M>FWQu#Lt^@`y_t; zRWy10{IToYiZ|7nw*YR8_m23@G8X1W%mB3NFU13|y- zEq;F3p$YNxXFwZ?P@e-aI?rEA{Jdv?-4{x8{&@~B95(cG{B7>~c{6Rw;MjMziOb=E z#_8ujb=hSaKff6(PU8B`-mteDzfI83JJ4J7wtlwFN>e{+wl8je^0hG(66p2$$#SWC zuJe;au4VmmoS!^+zS3KBesY3}6kwvzqi+5*&(O`7B}Uf<1ZiLfoM!j=$;N|}ZlYQ> zKe-cVv+8Ch{%p$mtW5mb{yBD?Ow*q|Kf=nSk57)!b<)9~9e=EwPR7K|@K=;h>i+CX zT_?fzP$vHDi*9^kIORNx;wDb7xwjw1p9gzN1A%qpKZI=ZeKH- z-u?$z36DLu_^6>p*Dx3+;x+9Ga^5P5DhUDI;iXSz1Zch;G%>zPWFOKMx3*-V#) zVj=BKHq#~i76q4~q_>y^eWt4#F^Ifj%@KF*@)0xt{jKh+#qKCB7kO>2A$YBob;;sbUjd28nX2^IB%$fgvIsZjum&YI?h)S)wgowbHn3&to-oGaJye+Uf ziEA#SwansXwdV3PtaPxCNg)zmnO7y2(#8@rLqd|WO-Z+idAg)1UX;%S-OWxovpTai zBTJ7qY%)oV;8fiUF^0`QRdSU>A&ToZA$nr*d951eppU8MpTXw1cwpOkhW2K(ex&$k zdw*-Q%rw7=*zUd*+wB04%=MQeuCd6rP4v4_$(Dx4Mr@bZiuD5_H`&I-$?$WK$Qqv? zG*FF2W2m$TFN64>-dJ=mpa{B{eSH3n%@d4jCr2@QKR%!Psoh`7$p8J`F2i*FUo0dA zZw>!f*H0(^_b4T9(oeFa#*#|-zqHjC>8=^iJ(C@B0uPes;$@k~`21w-dlKg}RghUi zQB}C6AD`dsw-!mt`20}BzxvSs6?S=&18SLXNg2=8PPKbV3APs9po6X51V`4Gi)-9<`srTbo^5~Nz) z3s$$`KMB3*ejL+aPk3o^|0gEaPBAQ~)jE%M@Rv3u+Fy;?D_7cPvc9C~xqe`(>Gq^4 z?-5tpcXU*_860 zFf$u@SD0ww{x%bPeZYo{?Dg}PE1A=rc!yXZb$re$2YbB~9~wbH9p~TH!uP>DtGzzq z2j%%@YOfzZB0OBN;&jF@6+nvT@yiqMCupFLqa44^@yn`0IlYWX zZ|$f33|sp{{8B#WVa&akDqWJFj%^opAI3xuwg@b47?Vd^xsj`D4r3nLLrr_rKq!+A zbsF}kQf^Ws>~wDpWB#Ly*Br(yNB5u%>@swySfc6FKc*g^CX8PePac%@dWK8B%*dXe zk7cKjh~fWYr4zb4M|(QHSYbfdM63S`uO`l()@Ex@Cj&^m zWlxL$Ww)o~c6#xD+xAN#OK1Og`NbAlBL1t7WvKf2_%A-%hP)j5M#O*Nu_#&UUhgcc zRn0_6cL#RjWZ4^D@5YV<8+;hHk5x+AYu|UaU1WGm?C&`Dk2HrCx4!-AKXBie>H79Y z`DKagdRza27AXSU=7_XITmo-|rD(3V9f3$A`?4J#`o_aXvgEw2Z@=ZAN-n5LeH8W| zj!PJQW1p^X_qslzs*A+b>)-bse?HG+x_;lc6>YGm2mDBUMrgJ}95{{NS=J}q#0DOz zNP3hni2v!ugnF>k9JDW^^$B-uujW8aQT`6Jk&11y^$G6sY@v89)J}d+jjxC}G+ObA z-F_y-^Wfw-#PhzoQ%$SL^|mwmbIUDXQMZ8eGo1!z#~ZT+B>1lil`ZF7A`+WZ-J`E@{kiQn6HeAFlU zxSTdz#7ER_-`mca>aLH=Xfr|bT#fH-Yr8Ghl->pLKRtb{LPeSC;}+W`=wlePZBl*o z>d#c{Vb{lm*sQZZ^A#4If~V3qZ5P+fiyw68vs_hT-kz485CAuO!ZvXT_6R{S)~L>` zeU_;ecKcKne#Y))VuT9Jymvp#;bm|^^Jb+BK6NzKR=`m7QU<6dA6NhjD-CudaQwh zJ&{IO_BPPFwHVBK5lRY(kL3r`uIs;cE3zmow9r&oAzqelt!00TgVrfo3eUdJd$0^j zmU8&#VSkG5*OWSjyH? z_D4anN<9lu;^J|5hCj3!8g}L?qa>PGzF_^v`J)T>y$=5om5>{BIh9}SQ2tq|%OBxV zzDA^jE+TUh4>U*9{(N+vkEF27FB5il9spke$M5+^q@<5 zTU?X0yh;1Jl;_63&-O_uub4y&!9mDkZ`EFikT%@nZ5AVt?~wagb!t}?$8C5OC(rX; z+V^CWTl@A+O3(BA$o9q4v+U0F=vm@IPu)@%dfroO4_xrI6C4F6yw-s~j`;uS%!Kw? z_33#R`a*7a*z1gh@~rZk6maI(lr;JEFO@%DAE!Lv(!SSJEX9RigI(J9u^a!lI5KJb z&fnX)eRa@pcn2x*IoL&hL)`Rvi-}3;`Kt>(2i}t&J(E=acz!oPUXFO$t2%)mE1m|s z$S>q(pRYVAp*$;|9(HM8`Jd8j-@`8a-px&4cC1ZG&*!SVczduL@RW}Hm;Aw5e}}m7 z=e$IFY329%%09)*FLZ~C{N78HpOxQxEBX@J2m6^$`=Wcfv~QUUJwIKXl;5R15ToNz z?ft<3^e<`AGu)Y;nYX*pb4PM}Ih*~=M1Nt5tNte9+bX}=F7&N;vrn&8Ch)6>j)ElL zM{FF7)^eX&yQ)a-H(C3c`Tpt@?;qVVdH!KrB!B;9iue2eHhKORPr#@v3H=*$ljr|n z^W^VuNRj{a&64MTG)4J&j_s?8^S`y|kT2#Q?GtzLT27lAj#qEct9j~G5^sE)pMNyG z@xq+Er?6L=I^UOFDL+-3uZ6cLq#wD&)m)lNjB}r8|5#MAEmDm`0{lUq6XA{3{*ZI= z=GyAfg??J)+_keTAcEp**X3Y4p?uy>h|eiT8hYzT@d4To8&w03{Z+-atNhkFb$<;; z2ZIu^1hF5&E--qc9Bg33LASNoTU+fHTS4!TpiSBUqz1*Lf}mCto9`rd*ACJ%j8tf- z16vUg<7ss^$|^=#6$S~ierlmC4_8%GQ1~XvjgDQ30YS)Lm4u#3@#-+09wr4_#cE>K z2z;=}q!499qo#$oqH7sWlYww>`Z0bG2dfN9d3!;s4{6(oN|1`ijg9!|rf6&=m`gtb z_yLYnBe1(~kvQd9go{xZL`W>e_DPF*nYtQ6G2g4T@IPpC+!}s^8T=TR5Y)nR`D{h( zo=`-Up=PzCa>JWHvOfTNiB`R7mEy|BH^AgjBUjYmmrf?^HBqEDw}{4)1vILx7)Pzv zkJG_}N}Q|Xr#IL}dTc)Zn2sL>IB5qY93Q~kG0|^u1#8Fq7y5ibw6TBTL_W`&fe;Xn z_oLNiicP4W$AOX$mO%rpCu^i;oBK)SWAYu8W4eT*6pTx`&=RR~+shIlQ6*!HMFzOJ1(e{C!mF^nGk zZ^nHyT0{iU3~Hze`C724Zd=|~nm=zVG|H#fz9VXn4*plo(Y|rf0msfc+V^Y`a*1)r zU^fU!mn;{O!@TRgdBd=YFaD8y?EB9;)Kbe^k21h4cs39c>8BI18&$=SC7m=F0SM5U zSC!(6c|9Au#*(aoY96ow&4f}d0yHy%B4hJOQOoE(0G3NvO$%%M18~y(5-J4!u5YdS zl>t3}I&FRL(^En82j~x)WuRj_Vhy)j>LHo}#CPo~`Bl3dd?2kj^;6xZAaN0=(c8;L zN%CKnuUX1x)^qv9DpGNd-+=4%3z)}-*j*!RwUvnrK9Oo#K)f%aittAbu4NWkIqR?9 zUsO?n+`g>q|Ke2pR`F@o5B{<}<{h@VX$&BP)4LLT}z4swxb&%dkR;=vmmbR7tLTqhX7@ZZg3Fai_J>&(zmO#456QR?ckx|HlMgO!PJF-Vc<>QK?*ov9-pnSX-hu#!)k%reUFXFoJOjf~l)vn5y zCK2f&SS7zAX3>aPc!fCer4k=_vjW8AGjybDdzkubu3%HY!<8`gV^OF$BP2~d zDUsnAB&9E3r!U{6kDjHVk6{xaa)`cXILEEpci%fv`QGJB%X^cVCp zlu2E{R^ZvLA#QlQXQelMUE(qQXpiZ)^_c!YE4S*9nueinjUw);kh6Lb>4r~0Ao7duqWto$Oxf-tc~R`sPh)a zfc>orR;YxHJ4wHIC9uBsGDgvhxIDWf2o*C&5sIWfZvn%aqwBYh4;VpGN?3n!S-Y&C zy*j*SeT5Nhqgrs~lOjfwlL7A%ISRymyu||z4^RkuulNI>L|pIR3|@#q{LbT9#a^{F!+7g5v&~&@6^Jhuw^SwXV|JA z1k_R@JryYU#QY~s7R&r zg#>H!pA-1eBC7vo;fH>{t{P1d+=@?;s0vbH8aW5}L$g;KyXA`jz2NyZ43P-dU}2fq zrG;QZzqVUo1Cr(VT^i5LM+1$~8`al#vP*q8B(3kUr}g^oi`wd|?eXO;LMKK+1#8_T zKwTe66$``*<2D*Why&nl$uI;frjog3{Hc@-3W8RXJ*ZudG3$^Smm=Wt@t-zOLF}%; zY78a0k@H&@%WH_C)Jt~6fNU7|xzw%dv@HfJR_1L^&vUxgQmLvNgX#mODj-lqT&)oQ z_z`T1va-*W!(7}T)m%PINQ*4uhvOpZp7ZRz$S0l5qr0v(@asMw-VF%%;C~g=68|Bl z&~*8e1_|^%ET3gTW-{X25Ii_%=FvcOx0pAM{O09IiroLl-n+oZRh0eXo6?r0v}CJ5 z!+n7OTdqNY29&bFENmf>R0)JjA&As)586Udk<>IVP19h}R#2!$UoMerkXtAhw@}&u z0s#eruSig#6BZ=g+HfiTf4|Sn*>leB*6+C9xd3s`voo-V zR9(gV*y*RP7I{a(A5nxD)!|YJtpa4@Tc@rT6LQqvQXW!e$cmKwI$LLMM`ql-iQ948 z%>hNogqPyR-ShFLMUlJWzQvKdgf7W6`4G&5ncuJS@O5!yORMjQA|}Df<4uyj^wq=; z_QBpClUi=J(;L3C9+X#$PAuGq${-{*9ey3Ncy@99TU(g77V7Pn7Uu7?m}$X!p~cbS zMP-G@D!jHzLwfJ{4m!B3a36%vSd7o2D1A$~15VPH74D6Q!w_*8BI0jo3Q&I_+BCUv zQI{Bn`St(ITQvJ{WHVkd#21h(zezBS2~I5B5?sFJqLL$!&=~rrLEw$ag^Np$aOg)g ztCPGQRL^Yyhl3dUenQ$n_Ou_+h2?NNjLQ!khZD}ryP!y7z_CZ&`GnruZr(@bW?TBH zxRsS|s?011R1V9*<9r0MA7biUv*a4Y^(T}kRf)bSA~#fUv=*x$KuxkO7|`rFh{3^gT6B=5^1%lgAN(Tm47b`1ki72{_sILQb z@{|YRC<-9hukv@dwN#`HvX+$NvY^BXT^{$9tOxNf{oJJrutpSj>E|T>CNQLyY5tPv z9l{-sHV0JoTOTB(wP1*8RFyp&?hlOOnm>Bn?WtmW&_x}(&-q>&&X;JajPiXBeDc%`{W?mQkb#~>5*Z63 zsoR;%>fPz+UAbpSj(H8JD?T%AX-8YS)laaTDU1egD({42@70T;{E9Cm8){<(TuO_L z%Jmv+Fm|Egq!|tOYVT3*_I4;g+iLSe6+65_jgvDct!vaAR>`k^p|yXJ<_;NY)TFBD zMja7kgbYFa(b6R`RYg-{g9O6{U(9Fnz zDL3ha&VxEvt1ix?B$oY07Q5CshQ3q?dZMfkG^3Nm^(8VSmH#n-18UB?L54tuw2WLm zTl_;PKLjzqH+72olakzfL0Io)M6Q+IA)i4HScOtrbzAYzD?0RG2_DwhB}S(smnMeLUV*&Li`5d!#@_4Qk7L-v627i zB6S6Fa^9dDgA^za_(1~z@T2%8oPU2Qza`3Snez87(A=}fFTj%2rXKCF4n;9{!#{we zu*ABl_b#RZKZI6>5v;aj*!77p9&fDj7rRB#Gi)ZqRwu%IVTA3=uy#8P3Dx!tyTJ-G6pTm2M#$dY1}kDEy$Gt8VHYRD5EN7| zGVC-f%oKps>S0D4ZAGj^nLgFVumcleKA+#GmN9HcN0<-yZ!m14BW%1+UBIySQL=71 zdsJ01>>pN`sT|qVQH*%PieRVs)qV`S+YVzZr!j0rB1~r6TQICC5e6E4>Rm|h-uZTz zZ=6s4AH&YF!gS^JY~^E&h*}XVeL;lX$*@E0Fnm+LW?0Y;BjNwUu*r59+41`f>qp7b za&hXO$)Gn}L1hej!4-5kgZ^X%0fn$n?ZvR$9AQD9n#!}z~wEsp# z{6f9t{RjEG z`3?f1QG8Cvrxu@u_^iO^ZhW4==M{Y3$7gGF;cobR6`y1AISrqA_$9o@wo^eUS#u2eD1>MaeQ9JCyvi1e7=OoUiiSju?dskP1X3| zN{&s7@wpzK+wpk>pJ(v-7e2!vznVTlpCrkz`3y^vUuQ8aNq&_x%u9Y9!iXgK6=YbF z{KAc0De?=a1bfS`*BId?zt%7!Nq+s2VM+1}ySh^3*J6ex$*)Tp<|V)8Fd|8Q&0<)R z{5q6jUh->aMkL8EKf{vb*N6QGOOjtb3`>$rX45U2BLiW&fFW%k}^BySBV&CaNPH1$6RU0Ad@PvW6rT+43!{S zeGI>yIG>Jk2zS^TKJ}U%v%i&*UU|V=l2`41xHmCfL#6vZA#;7=J%Oda)ft zoSwI1c1^^HY4d;`Gd>X`7UBv!<}HW$2J5H6j_I;uG=b=+QFwzp%>wqs~TeulLY)A_Tk7_lY)Wk(dbBA&7%rnw^Swj(}A6LhDG zb$P8F^KVB?(5J4jW1e!v)ce%gc1*h!V*VBVwrr|h^L9dW|lcP8R6|yEuu=EK=SX}`#^(}zn(?_6pVj#M1D}ofaC&kuKF8y8 z4n9}n^Ba6R@Oc5BxAB<>TQrEzQTUvK&kyiv!RHoyI1haVpZD>>j@(Uq{S@@rkQVOvrh^c+ugs z38}9GF=t+;XVEBM7Hhaz*zu0e7PNdGiP^t3{}<=4crEcw6@zH0M$@Q$o0_~NZ;9lu zG5!~9nG}x+cTD=3zu4M330D)BbHzo0@F>55N?AU#98qOlEK(P;Y6FG%p6DO#BZJ!h zX6t^+c5y+`^-0$vJnV9OZ8-{l3L7l(pyRm`b@L|(;yQd~RR0X(Yd<~}`sd;J+KEq< z{&@txcHvX4-nohck;jBYdQ|(#+>2SM7DYDj7VZTVq!q>Bh*x#U2{2Qbv{OBaJhD)O zUpOzg5-V?!JH@pbLrBNs$~#N3gj2e>d_x)b2w7rR!tSraw$6443S?Hg z!)AGb?AL5A$DYku*yvdv!n3HPz9+AAQOV(pW*-6XB@yD1K-fp5UF)l)^yD)pSUU<* z<4OI*6ZEe4AeRhW{{RryLlWBs=r0P9wfs_0{{6BSp&^%lVdhan}WF4gd0Dzqr35nu5 zl@?;0mUL7hP%WMu0eNPT-wK>BfgFCxYsKs+-TtJ)LM-gaq{1XHlqk#qpxd9)9yAQ> zSBh+wa`e@?I_{ z1}v}G(nsv)A~h+F0*p$*<|xsRo$O)sI^&P{$-wcazBh3EuS>8zIY9YO4O0K9gTx=v z=d3^7{vNEawLt+YXf5pVS%-DCH}P4Qhi9I8fLhFJ1+~pe$_@A^0{iT_Rv5$TX-vKT zg1p7QV0Asj3D(BE&(B+r3g%CW`_`kf`CpD>D{*<7dMO_(WbaTQ%y~TC?^Gy|e;p`} zvZaXlqqAsth@8gGkRHS_xULM_M(XjS46jjWfvLBR@b`6+XklTiiElH%wVk`LQ2!R| zVqu{KqBg8_;Sb+`s7UNXE2fUACNBh4!&JU;Kw6-3s?~`ru{jJmqL8{I*wTyOpBh7V zCzFGIW5Gn(h-%gRyf&VoI9+?;uo&6#Z7fFK_S8(Y(Bi%XDOk#(^x1e4sbIAY`c)Ow z2ldezZQ8a_D;nq&yt@%FI}nk~_4*I>0fcdiJWtY3S}*xUFG0*vK^34xOhYvsv4FxYV{#_YF|3jkf6hKI(7q;K-H(0$Zz2+mb5SsP^KL zj$+iQu9-l^N0wNyn$_6^p#Dw-uPX1wO$aLRjh!GnLRLNo*7(TqjQhz;kJ00tts*6 zZB0bd$3Hc7;P^@V3=)6f!11^4HgNoT1xfKyJ&qtA!s?D0h}68DyahlT8fY)lcN&(5 zzT!v-tL3G3p)QL=rziSS{)LC=@*!R{LaxLZoC5q%=%$_mjp%L?m>`q^gBDbV1q4|IQ+ zJtJnVXuznva)G2ieyQP?GVC&-enDcWOQ=E7G|&wUsbNShLck~3&Tb|nkXMv~4wlfH zFi@l3gn@$eCX8x9P=u|T_&x*^s0k&ij;>u;NEya|Bo<78Jt5L6zRg3?O|93ks(>Zb z7;$~dCT`?lISs4oC~sJVi91r_v`!(3n)5(!8>`TwoZ}=DdT++zaU=q%lZjqLit&%= zfM}Wdg^3~qKs4V70KxcDz%RA<666>36kiI^y@l^6T8m43M39?s=o^_v228gnZ8wj7hY=9-zym2uD@5g+b#P& zIlxaF(Z0=o-vm*FnO=2_p0oaTVT9LG+JgBz%#b=BUCgSrK-iS)#zTPf8xE~1{ z`qoBz@B`NCs-WuceScFNZQ}dDbz`|$)Xp*_?0`e0M0y$V<@}{4ok_Q3IbMBkWN?0SXBH^}?rl^AGDipNyPMF`w95!t7ujQw>+Ck=gu3b1we00C8mGH zEO#pjk~0LL5oOS$Br!TF`;1-j#`;oU@5R>eW^A3h^i4gye^big-AGXg^5kI;@?#JR z5--IAW0T_v12_ORg*uSD}z%WF`m$VPs*IfzmSFZ07S_3333EVk^OYD5{i zrIGrG|D;0?B_Smi`-1Bb8Esk4LJh0@<3o#kmNU|Xb|Q4WFn!+q>G5j`7Ry6c7H?Ye zzmgSV*T|D+MGB?yuVEwr??@QqvIbAek19NItsS=Y2Py;kfjM~Lp(>g`wW1i~H-vcc z#B(`_lf)ExG`Kuz1@qLhXIN#Zv08tv!dG?&q>OZ1NOxjLcWD|5JnEPBG}Zx*{HgVw z02KUFqkjpD2c##!KeRKz{!w|XsFEbtwK2ogr7|?8E?OkN!gX4VQa-`HXDKv&gM5jP zDb_43yb2EtNjQ&eITWzv&_T58gXpOM^H8s-$7f7LDPr>TPeRH}2PfgBG9*{+iy?)? z9+mk?BFQWynMW=yMVXje6#XF0vpt|>; zTEgrfp@gyAnIub0i1{U`6N*!oyOtETvIPsyppCXllL0(x$qRJ^K@vixX*zoUZH9py zfT3+}16iJW_%ICvlprnbL>qTOeWhyVF`Al?1#$1!j9@fPuLdE4do^i;R;@s`*@2ND&BNO>9Jr;YjBSfSNk-5wy9Td z=`lGF6J-rk5X0)*q%nHnuvm5j8yl0SPE1c{0GY}FN(G|vW-LOs z__+81PO2EjjP-aDDpFb21mX-O&oi+?AjBDmEMDU@jttb!ZXr|jqc&zvQxhI&ylqswS&-f0i zb1z*-n+a}Zu#YoV^f|*!Jt3_CFj+*mNLnmCu-pfp(=bFS(JSIRt4qB~yt7yDNHe~Y zsEX~W>+Ll4#`r{?@-%f8vreNSq%(A4am0Z)S^MRt7(Y1&P4(d!-%-798tZIT@8ulo zsDf#%X6?r+%t{4Xri;N)Vc9E8%Zk{tVzkWa4`-<`qIZ{a=_qN24^O?hhi+NFX<46X znLOQShKZ(5x2&+3b)NgIMl;AdL+GE7M@!;Ms9wcKPt`x)RM=rEY&R9k(^NQJw^Jus zQW$1k zCH?sDjw7NU>(tpVkCJ};L^S+np&#%1E2cW&rh3Cob$kv%KVG#UoqoI!F=WFwk#Ux+ z`+r_P9`@AcsULTJdZhK^k9X0Mw%f2=7oT7dc^bi&v3@+r6sAmJJ$OR?w(Y9xa7n{# z^y9UiN&4|5uM$)AW9!bk-cCbK%(P9Ond`?>OfgCN@deXZXRET-k5`zMCG?}!AI?%! z_2ZhIbj$ip%lb^q?Qxk4@&=B^*tU7k)qK7*M5>POn9uKDBk zk8hs(@pGX|)~82k{&@QK!>AwgO<~H2ZKEF-P0LX~UbZSpKOW{)Vv2sO-)>m+5 zB>nhD(^#jB&ssmuF)d5zN2@=arKak~o43tDKTeM&=|^Q6=&I8_e>~Jwn5}-CGTl=@ zUg}lj=;_CRYJ6&x^yAwTM?^mstH+-lCH=Usv|zK)k5}TzfZ@=OYw@O?w}15x#Qax3 zrs&7@4{e_M@gEOsQ8se^)vxCdqkepM8(mnEeyj=TV3+*OX8w5c$|U``y;q4T`mx%O z(`nT85a*9Om|~Ljc{_?l7oKS>cJ%a*l8N*s?)6> zw=)%Hs~_Ky6aP~Dt0#HYIC}cAKpnbjl=R~bpP?eSh^=+8emd^pr0+1#Hag;AuKR>X zGhTnhd6BVE(vN@plr7jS^y8TyZ5$T=>OSYE(~naS^I!d#q90$nck|SbkKQ-Z`f+Ff zFzUzWw)E7G(XDdSk27!-vEKM%)*sg!s$CL2ML&iOIi0!b$B!p!@{{!A_dRIHT0ib$ zT9(j{R)4r!ma_gh*N`+M|7!2uN&2zP;N+^)tsg&{pfSi+KR(0dx778=!@O!7l78g= z&?5G)y+4#|M|yu~7mrtHstjNUG%J;2O>?V1JZiOcEPi}<-MG=i5QBSpxKkX1~KW3!8}TNH0GVJn>MIEvt%Sg8uT z1d)5~woJ<3UxFMVvlUtG_gl%> zBRi>kkTEESe1V33&;VV_Gxsm`sXc2T>CL6x<=qk#)OG4(Z-GrDj5@>aI*;HYa%F(^ zqLoo;C3inJM=GLC$Dw&gJ9e~%5af`*tr~wLRCWrLokC@$ETId$Yz#Nf zB;cJ}C-BDN`x$tvb;Z~p-CSM+Opzm6#N_I0*Gb78@$Voirpj)RpY2jnJ1WBN1-;c> zpEK{o5&KZet59_-3RnNqV6;ibHlgqya1C+?v4MmvC0p=27!&WsX32#l3Eh~y-+GY! zjq4+qI?wafsS^i6FHI?LJ&>P2QExEBtIXtY+00<`cO7Wc{9RrRt^zzQBzH~YL1gJQ zjR)!nfAN@G@bg>a65Q@M8+|(9sMdQBW$&XY032JR-uNnK>O8I_QWZZFpj2bWD!2K- zoI?cJK7d`Z+=GMODZ-XYMq(3XD<4y%LG0xWAak*cDvpL4^>IK(Lm1J~UVRu4Dni$& z=YGk~)K|nyzhF?57omOiC>8sh7xB^DD8CXr1KGpdV5CU%^LlYe3OZ5eXkIQknp(oZ z0=svkc&L4aV=BSQ=vWj7(SWl~u!+1DA$7fMAqEqM2F`A2E=L0dPxY6xIi4#0NEBc; ze1oj8Vz<+j_ahctYfvZ#BVYAs(ROfSOj9nuT$In|cq^|q)C1&Bq!f^eaLaQ3G;a$1 zy^}kD(G$%Tc#+7nPv;#SKNpRcYMPfzrA;jry75(P`~lYs!U}Zu37rbH_az$txr_ke zieeC7jVw;Cc1nhv_!eNUQ)Zxp7 zhE9~y)%$w^1}Eq6p!Vl&-{2*T1*_RK5d@t`)n%oMzdCezApDdf z64I8pUh}m>B$%D4`a$`y6f`>YAMF$^A1Z+)@x#&Nz`6`qM_>^20faS;@8T~W|IrWr zf~>%qGTwYOABWSRu!hG1D4^di0EhkH=!Pz}_kQDi@oxh*+*A~)LH+10OGfA+NEs2q zhVt?{hjeIl(Lw2e`&*_kGhW4F_k0JhQ1nEb-cl2mnu!m0);1VY2t`vzKq1CH7--rLbYkRy0RTUy%D1XW-C z8PeH-OWCd#5qfGKSd|1dUdKQeGwLDTVd%n;EMxPsor4o2MVrv*VZP zmbpaiba@90uT6BJe(aRj4-?qJF^RZ7O)wwo2iKC|Ufh@q_LjaZMqiRH(+Oxb$Gi0B zNz>7vROm6?r}DywG@)5u<$%oRAdj({fPTj#G026pRN+#*t@LxLUrXPXtDFGO}_Sl?hU6Nb}K4g=Ql zVgc^;#ULl2;mR4N2E+HLX<*Vtk(b4I?ZybDRJ2B@WjMlkMW%`ZREN8jcu~Sk4#*z$ z!>yRs+@A4`#pN&8zn-TmSI$I<5AbrB2XGu;WJCV_kqvEma?h%mtw-g>f37Z;RQEI0 z{YZ?~b3ixcrYKeun&pc3B*0XC?c9_w8}Xt1gbL*9VwccSJ0X+%1I0-|#+fZBYAjW(ullZ=A@g{^Z zm>nho8>4nUmArWel9k`V09H^XS#M|7+nIF}D!{#v!u*;yy9fdr!?r+4@P*)re^A~G zOS!kP+}kushBt{Cc{7|q?VJmV+O5KyM6Ezq1glnTS&KIh@~P(giN+tuo41nq>*Y75 zJ&Pl4tYjL9pO%Eqt?E8WbqiD7qDj%b`KHC28^hQ?G1@-(!1f`NE~f@r)A%zAhc%5?>j!^17}ntp*h@H};W0>+<=5FcVUzSj zOLnXJD?Z*7p9aKZ=z$990eAyc?`?RO?`*MLS}Ob1j?G%*MS48com3uw7-c{lM*6_V zK`~)?=L~0}n4`ml3BYtI0>k4z4cz!8rpq=^Wk`VriVFgnDq#0iC*H_winO^Js>jPV z<7K?Gqg?luUq~!)M9mAYl{n9orjH54+^9w7QmSmRX-%!WHG9fDCZ_8I>o@ig5Bvk` z7O0nQ1td7Hm91>7XK3P$^IF&`tqf_l-Z&>~LBBH)aWOnlIUnlE7SZTDw_guZsfF?$ zxhXj4p1{{W{S|^*PZ^qyF0vIuv8@os#gPPqT~6;5qrqSX7-*$QFaP>S=w;me&0dxl z2T?d%Rjhnym1X1jkQ`((mkKp$jP%>`F56IS9Np=67&rpV+0+=u!5zi|FekS~7*=*WSf*cPX8Cf)2Dbe=)<|5|$553L+93Hcl;Fv1y92;zWKZ%iAT z=rO^kAqG7e!GI|DuZgUOF|mQ4JXKhTF>hI+lzdRroSndol(Tc`;#`l@2R9%NeiIyo zyGILEq&5SPwqwy_yo#@K8jFQt(S^L-PzycCucFO72^Zg+E0sBvh{-Hv#|ET(zj-~V zv+pO1_uFGB4L^ZQ%f7N-BTn!X@d{#a+IYzfQ$r?hiaIpDPUF;A55kN?8&9}wn<4)I zpM4i#A5=#V@aPa*{y%@kypHI>xVaQ)!MiPJb*K+_8wb#F;sF!~Q{Y=O59(l*+V2MK zX=(#fM6Mdc9=8sbcUqHcgjXZH2pS7oixX~hdzwbKh-W#8HVg62yjg+#sUYD}zOTm? zr#Vkp{Goo3B%?hOeBp03{?j!0_Mja$zSew;E(ZY^%t+T?Bx;zkVol^2pnEJodHRUy zNMDIQxsuSv1llcjGzT)nlK|ZtIR(Pkp`1Ke^ zdNx-T;Jllq8r!8Q{%c_wVI5ot7y>JX%F)rhC=vH7^d&M{3{QUdx%fR&XXFET(K_4% zPHtYns)a-Cn#f%A#rODOe+0?#><@fU&vcx7;^g^Hp4U8&vYI2U$cv8op6QqlbwL4R zSt6Q-^K^Jx2Pb;!qI=+)X~C?rr4pw`O3-NxLK*BH1P4rTsSd`FLLu-N8eUF||Mwht zX2Q>N2jk~f(CgsmA<5U(yJjn2|5^P-m9On?yyX5%$Sp`ZDg`{Kk22Ze-~}axmT|6h-yat$r|v zIkd19LCcDQER^CEIW4D8pHWTI-`E{rb-HM*jB%2g!+QDwZD^~|4v z(YdCHOCFe%g|3IvW1qkt2;&)vp>71xUk0BabNxXkJ?NK72u5FE(KQCIZx@PX53#2@ zG@&2))c&}D4M}8W0QV}3res^zvtnh>B7)9YgrWQcQXT~5Ag0rmS>vfKF@?PwpBnlm^F%%BcibnK1#bn5W@rB@D=ZV^b#nWD@ck_2Y?Iq~14oIAKx8mwS5F`z^guDhJ_FA6$`}U&e zJB8sWS=%98sO!2QKp;C`LzrK!ZxWW2nE*u5g4L{&MkN?EY5&7|lQYnqHpI*#-6Kx2Q>A?R{ct6y90`V8~{W<&)P zV77-q`v?A8-hc7qMDIi}kvZBIQe*ai`Gx0q5BGSBQXYr+Cme0Kyudeq>%<{yacl@= zTr-Dh42rj;K)rS0C-@>~=Hj5XIBY&V*j2?C$*!}$DFH!mmgP^nbY#n4Il|>Ht{GYS zpZfmDmVd;>BU}C_wIf^p5$BC;`JbFWvgJQ@(a4rRX@vRnhu_VTeu$nM{-yO5nEU%~>UwGxFlB+0MIEjQnwwUj#EwEz7EWZN$vB zY}DN9?`HkmW>x=S?aLOAkxp;jp99MtN&-j0yUhDPXN})T)0=Jiavz_?uT|{N(%+02 zzgDySf3FzM^0RGkw&`8?2>pcv(l7T3J{4_&nPIK~`S1p`m%rs|)17YMgpJa`h=eMa zNPvA&L&qD^7n%I`GCvMHW#tegCl*#qtXgorE(zvLDQubsx$ueevsR`{S)ap6!tlSZ ziA=-9aax|eq7;L7z1=K>h}#{%``~Enf=j$ledaUEAg#=apmy0%2*00Rc#;AWeyX`k zJ?4|s2AWTzy>*;y71LfT63dN0YuUuG0pOnN$uNlKL3Z%z^WvLrd5xWExARgMG`|ha zPbt!zH>yjmMhZ2@qtrY9WtD2(BSk#9PUgVVZ`L!~fG6hX+NY_Vmm940q#m=L1Q2DZ zu1lSL)p}Vm!m^a?McTmK2w1Q9Iq_v~fXIpl_y4-rC$$<$`~|s-PzvX(cz=bKtYr)b z`4d<#DXd2VgKsgus&D^V;~OHr02x^|$bZ^h!x02+EESxZIldczmD+3n*&`X>M0sBH z>Psz1a;r_U$f#CRcnZmHSMhuY4lk<*6VS*PZNF=I7u8prVEi2I=a7Wee{_Ifimj_R z!o(q@UVaPb$V#CpGXh6>D95^mRF}tMq&z96NL9b1i{V(cCKhPFU;Kq;$`UjqUo`8= z>rBUxj3U)#^0RHsM8Sdl*Abh<=wW^=a8)Bv{m|quV*X;)-fPvrU^O$D{OnnqOHBQO z@)7R(>)*6sNU#IvLsco6L#%w`wJzen{E?NpVYNf#Iq-u-6#NG7k9B=^Sr(9{n>k*) z*dSZ}nf;9%tK3=0U3c6Li_NB79BRRhyH{;F5z-8PGkdpugZ*O7ym8z*Eh`OuSn0*` zIM*t$6<2TY;_`S8!azQ6-oWNA?osEeFNZ$%y6gi~aSWwmyhxy1Weau5D&x7WXp@u}8d zp{clQm-p@J=DE7w8js+g0qXmaM}5;EfdNM;tJ3w|_fOPUlv#bEZ_rclkYZHnw&=zd z^GBF}s@d2Y5>~5rFcbg)9ED36S;3r9wjKAq{=(35CTYQ+?WU8K8?TeLyDko+o&vv1 zv8YAxmD*4;Ph>}x)oSbCYkZ{+{K1LrYD*{yCIPX6c>?&0YWVI8rJXhkyYxm+MDRl=Kt08h1n+jf%H%tu1Q!H-~bgp&#J|g?H<1to^~hNm7sZYc@<8N zS5qI*HAM*_&|`W)R-vj`9V@1os!)fsIwXPj#`C_n5P=G+FJbQscP+T5RKVB7?~yiM zo&4#BO%`Jw0#3@mKV}t#{L&sNM5vEaZ&t8Q0kYcW3=&zR`vu=>`K?%+C}>*|TNF|^ z9Kd@(@onWM3dLtCKb5T(36o{G>)W{$vsJskR~LVhQeW{bus*l} zCy9$S>sb7gHa+jGXAdN$x9|f7xOx64;Q-cCJFB5T@crG05V#bvixI1i-vep_OcEtM z;dr^`3$&m}wQmYb6mVw`w3M%I?JTf5t0b$nh zY3AR9&Cf?Z9-K?r1*QtCS8t##MJ^(b375N>iu~kA|BS5DW}g0$*6hlk0y{4odUk0Z zJiUw>KO2aiDdQ$txl>nc1!=U5Z_!rhv}Sx9A_DD~{2Cy22SfNy5!KzEry{18DdlEm0JdwvoYB&%6?wR^LC0XNH&Hdd)#fpsF7bC)^NF7_{4 zA{WT0cVGMl_Mk%ZoQYl91&l-u#O?4-X|}|?33KU8%NlG0jSgw7^*P%dvgMgT8D?OV zxKyaR&w12NlDWX2spc2)we0^Y0$OcD%WrjZyqf^UQ!fb&QL1MMeh5I)hGI3&0Hk}C zjngWS#eguenxtEJpFm;)0e+~F_GEB5sU}d(GCYGqLOS(!cmfQ0u}$<<73#cC$NO}zaZ**%5oNMK zGbcN2a?%yZ)_5->vBm0+DgCrOTxOv|+erULO97VYU*Qhq)anXImZ~4(wEpx(u)cxw zAA#!-2gtAQtET?|b;f2j;TjGOYWyzdpD=IRsK(?|ZZDCU>q32#4Ne6KN%%s2(@l#x zAr*}Ys>rXf%>^(TT$dZm4;?~_n+>GfLHGz*yAiLFdwY6oBpx+bnb_KhKa1mZF zdCU1=4{CDE2dj+#rW13)F3txrFN|^)#_5#W=~Iqg?D^qlicU-syUg5A&-q%)mFn0+ zTse9(sZy6e#&>I?4Oay6Fjbt4&X=7fTX7VOipx z{}I5k3||gYj8(Y^%95hib)fpzCkl&p5(OTiQ1sZ%IzJg8HN3ZK*0ipwKVI`~%c7_GKo;VcRqw zs*1FMN?d;T*XhqQI7A{rJgF7(irnO}y=a3d9D z36q`jLNZ4@QLi`KQc=^TUKXR{vBDicS@H0xeHz{%78z;` z%D4GH%kf+OTz2KZ`dCKkz1v&+dEQ{{J#u_Tc#$mJIsS!W+{u%ese|&DjH-6bWAd zD^<@Lcx~52629-?@T+X-J91M-?MZ_#J2RDkfN!GxSKxr9Z0OlIF1z%1WZB-9N!gXZ zaqEoId*f5R6*7C`*`Bt&-gpMn;-BEp zJ2DubPJV7VOuOC(8UNn&EG~C1FZJSu@XIEN8gU3{dn7r%wy%O0r)ENWukkhE5}h;+JqdsI zt6TAPQ1RHM_h-vOmc75p>_^nzA$Wv9Y1Bp4j=XF+UrAwN6Vu1% zGO@jh$$5U8Y+~Aw*UQ7CRX|F$H!(@6*u*s8`@+fRwP-g^;xGMcbXz(6|MGq%yl4P| zn3XF!zUVmP*54Tgtdb04JRGsL6Z&-6}MdSlz-6U+aA8Z#8WG z&D_IvGxu;|Yt}mFhA&b_tZw0kuV*CjO-y_f6Tghp++H@Pxd~S53|9Y^gf}wbjfqm@ zZA&=^2vmX#gQ@;H`1w=(b;PIDjgNKS1o@~7A7GLH{?i)95v4pXq-WWS=v ziO-%$-U)nqklHUNCD2)kGY?c7cY$IxBpzb0`oq__y~xR(`dkH|X}$k0J+mMz>Fk~X zcY;Gx&f~%X3B9wqM%Y}gKz=~Al}N@`F1kcoQB^l9h_CQGe=+%dg#;(*FT_ihIPCE! z=S^s=tP_ZEkaQ#;xaE_ly405X_1jJ%K={SxslFu4=+KSeFp7La1cGry43C%i_eX+R zjF{#7)C7$g4t+zDz{EVF0Xc|=b&LdRj;W0^ld$bantl(=@)MZ#qbWhPECp;<5MSZJ zU-_0lI30gwjn_WoXoW{|!RtoNV-{ZX4;LH;#p|6ThKSd~qa>q)Ifsr{k9$0t^-3}` z4-7%~HQ^ZZ$PDn;4Dy#!-_vjV_Xs!i0J(t8UyidI#>MwR?*|YcW_CO=8aS2yVdBbGWYze#qOdk6A-&&6zI5kv%@~Y7z0NBF z&LCd)3j+W)yRybQqlisWU)Gr09o}VQ-jy__x$=So%9zW<@KJW@xy6Uk#3wwr94igs=(f4 zEcM~s?4l#B%Hr3gtoPXZ!+pMyhdk_a^J|S>UoW?KRXWi+ZwojE(Aqxr!E(_fN?N0c ziH)CqW+xWZzbf20&$dz0z$F5P}IQ~Q7-)=m^$;4#30S{0lycskToI54Q^sfBaR8tpu|a9^Pt3Mm*e}5f5Jg zfvpD&c{mJQQ|zBX`M2K9zs5dHyf2_=u;D{l+peCzbpkuj9`^&-hpDz9c(p@y|2xlN zAFezj3;Xa6Nt}UwxLOhpkA1k*jnClojmsKjY-^Tp2U^+BH$MF1ChMgM%r|~HCyV(; zlO)byzR@ZPhkw42HD0$g=8V^}e>&%9b5G9#uTvy(26)vWr9^MwvWcj|^%_6IEmG9U6!zJH$IM5Qg-tv9=!NVxummFeM zHgx%(^?022)11fSjjr+dQdJh?@kvRX!FcSEgu_1`X$Lv{C7IcCTWHLN%bwfz6;FGv z{Pv;Sb9vY1Y|nl3y3w%bvXY1U=`$2_k%z@NGu8H2?R!!d@^BYPoPj(%L=p~ow1>>X}^#jjK>M zLj-FJKWSc(s5;(&BOy!K>=b+0y+7DvK9RM&yk$ww@^T)oA~P?^!rr_2+gZrVUrFK& z;WT786p1{Nz=!b2k)Zx(& zt?uzS@Ono4Dv@1U3db;VvR}{Wluc`i^^8~cNE&0^-s>56?~^>Fz=N5rXLN%pL8xuk zO9ew;&+z7_bn9bR3SJrUQ=0X$Iu}2!EYE_U?vTV8@Y8BZI6VB+Keev4Xn6-&z(jC8 zXXT53SQL%@R#LJ@bB0fR@dKSlJ*YoEYx`p#$WpY$)@s@No5t_yv_JMfJ`4L}2T7cP z{ZS+dHv{`)gPyB(3Xjr$?X!LF8Lmg(y90SNVSl`_i-@E_*Vi6NmW`R(AOGG{DzL>) z4)%w)yi4Qn{d9TG{@&}}{0P2GYd^qK(JbWMBa%1+dG}XII6U$$D|~K4YA}M`G1=P} z1=tjA<8$k=S>Urm5@&$Vy^?Tv@M-m-$@cpH!1l${dhVHveQ_Q4ecJmaF5gjxfXqnS7Z`ye2t4!?bnHD1%s&l#@||IcYpy;PC~UQbHm4Djlagu{*2dVO2UqoM7;soYNTa_u$u z{WqPWa7J$bP1gK5qb_Iuymuql;N?(0_!|#9DhvLcE{QYX&#)vMe*Ua?^Jl-=Z-dU3 z{YtQm9s3owzD%&n#XjrDVXwA*HVH>=WxSttkqm7*Dc#vE@fch;lExnbr}8EKHxYU{_Cve{juNA zS>FG3OXv7J=I|`W=i!n#gYj7*2}f&u%6>lB3$Fe7ooc5`G9RB2+A4mTJ(|7wSnKRk z{r_^!pSGHu+4y{2k7HZYWI8_mUy=%jZT{5fmS<-Fg6Dq7sx^_5vA6GJ?(J(+SDr1{ z*@O%*MrA)FwtJq;nS~$wQ2oHJPxeFlAGi0*oa|E%Zmow6QgRRJg4LuC`%Lwo-ahpt z@DKaKsHX1!{^(*!G9Dh=SDOtW6qhV?y% z{rgp7mErqb8^6NDnb^Nl>KNI-`)G`E;ip6Hb@J1j2WP=guSnty_^D444nIG&y7_5f z`}ZL|*U!cNt-}qWBA7x{y|~XdGyS??D@kW_a;EyVO$6!i*}v^>yawOza*M`HOL0i> zA*?su_(#`z(*%v#pzBQ=w@kt|)AgohDPRx%eXgwd>-yaJtNUdaf4wp;2?NO0xB6EDw=)XFdJ6Y?OllIR7pN;!vs{f?a;lan-{vYgpv`b~3SBa%bJ3F`c z(N;eo{@iX9=l#o9pTF7dU;fejoY&X8?{bdc^QLFPpK~N}2IF_0 zBpe?8%vygQdzOshT=eI>mqaI6`$Z4^?0xNm({s|Mbo)i8TIo29l~K~4 zJ5>u-x!7kN|8eQhtv(g39M-Y-di(2}B%PzlGGkADPdE8|0>1`%*z~8De-e{b>{Y{I z0@yyjCUOEi1Sinv(XVzohIsK-@kpPMeRw?=$z*q!y-w`qgdgMt z7F~?*VN9KIdOn^_y{i1%boJteT8cp|Yn|Xz=Y2w$Jhrm=kqF!7Q4pOedfPmk;&>(Z z(T$R~11WU}cYu%>Dh?q8oAvPyZYta-nLgnKHjWVK9G+mp<~?@9gwNb*NvQDST{m(*VAx#D3=#f0VjlrR^_< zFY17g-#6|dfJJ{XX><6Zjzs4O7Yyu+iXpcGZb5lRH=Qr46}@HqqSEen9@HPT)NSwh z&3YHOpc3yj)2K^2?`GQRf}LZ;+I*bhdjEH2&C6OJ+)m)6`!J3Dywk-w>)%Cxa_(WNwIK5f~Xg5MVuO<^qhq z9T;s&_NgBoFC(mBb?uzTSylWO_S^sYySe1cd9~}2VE&glAaRyU334vQc~(Ij%#2SSkmy3oJJicn8IGTWAO|ShnVm#-0mvTwhG(L(2ReXf zM|CRyL!wXH;@g>;kQ6mpM~&l08>>gYuB77-JnygD;F7ma^t|48N`hoac&t5nSn-Jd zQhXVk2_6}bhr9|wA(!!R#-fz*aQ+EH9S;X1=je=w@68(4{`c2^A^ZRN@8v8H&-h77 z|2H2q)c&81oFmZx<(-g&sWS0jM-M9xtZvGV2fXCHxsM@7d6+!@A;O^#D~WhyK%Auivc?hNkb*^zY*{hqZtI zdMOT|<8on!I?t>9!_&Wm>Hjo%Y;lf^_Q7rF%xr)|`UiR=ssro;@^-$&i-N-ov`JZun-^;zdSItA&Jk_z znK|qCI~!8k`}EAAw)Yz39ESF$)o1S=pE*CL(Psy~_R*%X)@L5J%2f^HIR_ms*{z_p zvyoNyl+3NKhew}fJbtGZXWqYQQ7x8$^(<<-?cP3hmSeSN6y%|p&1w0FVVF}J_2*xt_%rxZ_}jMQ4L&NY#P z;A=T3PcE>*UtV8R;@7v=;0Bu(xQR{;3mXjXI6e*z8*VCu(5IRc<~*C>@b6r8xIi{s^0MQiFQ&Xa zCFk+9YwCD9zH+GJX)1CKVLWB5AMP&6Szg|GafjtYS1tMo>W5p!`J(`O}xT%A;keJR0ly2$_ct4Cy2xlVMJE{`5*5hh83rc~b=1Ytda; z9F*5Mx?$cFsqz;v!P^Nm#9YmykwesIBot zjdzpQ|75=8(O+z!-CvR9_3%{R^|1#C=)+~-L@(I9#{0l{r15Y5B{Zy<9D+d#4*CN4 zdp+!db$aGFT>R12x;fbcL$Hr#46lAHn7jFm7u*a~!#P)&vK;rr<5^l5<)12Eb6Kr! z+fUzcSHa7=@dp=ns#{(mbMqQKpl=Tbq4*|EV({#bX@bDu*}`YYy#2PuES+np4j(hxS7-)hv0 zmv4}I!X&O%fKgNX*JJyV=&xu)zi)migVAu@V;XH*SlBAXEGcZ0=fc8v^Sgu3JSfVA zg)x4`C8+Wwe({rZb}0w}b!zynH z?nFaCC_b5`qH`GeFGiv(OovL>q8r)C(xD4hv;Derh@Uqe6TZ*o32A8pkKG^qka%G6 z8tZYxgvTkF;&JYiQm@7}EhGmv=L$(0JQ|Zd0n5AKZ0X~$ArP~ z*nM%XgC#v4H@(=OB0sKqU*xHOjPTfEFg%_gK|Gf8{>P;8a>=v8A2nlw$N5jz42DNZ z)5!71M^C28(`%NAJl$-^%O#6O4v#1Lv?1k`A7?#EPtxWqKVDxra(I07ZYmxN9uYi> z#%R104K`k`89_V_?MjuWufHwwv|xRWnvwk{q{4wDxdY0lGFYjFqUyZM0v*nM2 z>qiccL+7U2>m_%Hy}sG%+XW-YAKU#&&l{cmkvDB4`D3#kFYhfFIsUlmF!cE57u@Oa|f)cO9Zbs|qU+xgtVBZ$X+b5rfp-#xy0&tJ~^(a7<~UL_x<*z4D9 zC-Ss?jQk%`?;!qHK~yWcDJSa?kAj|}`{3r3JX4t*mPkCJ-?kIh!! z&K^NLUi?m~{8$AY41HTXCj4>!lf{GCr>|d@>tIRm|Cs-fF59VZFZrL%+h6$n{E@@s zjR#Zlcpmd5@W*DWZ_gS*JZ?H7Rlnrri+%}=$#_}y`uM@d%j^-vW4kj_<;Qy~MSg6y z{E;_rIL1rE+Xb?%qO>p&ZT3f-!~ST~sJ@m=E_oO_~Xz=Q~gJGUlHbd4Ysii-}=?JoNJ^5 zt#1xu$VQG2`#1)2THAzrPPe{!&Y`LDclM;s-oC%+lAQU&k~iBHmQlu(VGTSGZJJt! zZRBN5vjPrLL->ea8yQ3|l`qk&-p#WD>hZaH23^AyT>Rlu`qxVQm+j5p)f8pO5{))v z!#BQQ1v(l~KQno%u%&7()|F8(*0N=R`9!RRFIdg0u%*h{c)&PpOIRpN;$>I^UyAs$ zmMPN?J;tZL|Id$Qil%oKm|D4^0of6@tgs%5xxT)LPm0zGe{`*0M<>s-yzBUEney5p zDDQ>Wb$KDP)j(Q-O%5y%VE~DH*UfT0@=CF2S}pmsuJ;h^_R@HiHXD38C65)Y!qLL#Sk`3Y({Zf`a=#}&`~8xU3I3UEvSx!%_XVuZ3!g_N z#uFcZ3O)-)jepktj&F7(_@~(Cc7(h5=l?c+=EUcAlQkQB>LiaBK4(abCq4x!_`H7J zXz|Zl_Joa3!8qZcfG7W)mgnN1B_?Y&_*6+AFMMW7j3++OKS}au)%QjVpABw&iVt#6 zEZqEaAR`mw>)~|xG!k9WdH~+7zZRv%=c07@OsHpZ$q2nR{0MpKuan8C4*psGF@})6 z(B#5rzvsBhkichWlQkRuQRlKcFaCK}Vm$dLb$qS*?r8DPWi>8*>MnIJJh||R!$fi5 z^L3Lo8+`nd#|xkTkRiY&!Yyw5Cl#OHjT%1d=DP3+!O`M$jJfdn6jJ~PKDV2!+2B(r zdA#sBLt;Gff%TUpe@aFTpKGPt68fwA8TUe+8=t3LP!ll3dOd*-2e7;Wdc=69qB*p`uhFI$S zbk&^E8ef;0MjHP{!HomxuiIK(^5^SAz{j5!pZ|~{yvJ9n{(Ak?(Zc82(=`)V{;_2u zf4uqUp`W|t&*>&>Hu5JVdA#^%8;Qw~e?||V2j1m*M~U&(Hg`N1HoWoq^x7?)^V1)j ztl8ibl{{Yf94IlF;`1L+Ju3dyW8M5yjQLU8`Nh*PcpUc6XpOIZIFfDti8hG;C-I`2OMmV3QF^m~{X$g{Q!jj;l^73v8e*yT&#G?? zJ36u+mb!j%?8%x53_f)~6ZstUv=5t?xa9L>lQo5Z2EeELq;&W^Dlwk;r0TETzdc&` zTqR^BO%6UBuw#Nery!vaYOA zK0*ly$z4N%Q^PK7XEL+Q%Nd&eKFA(=ks1jxPPxqnUJvzSQ$V=)_fkF!ccuubQ%wpi z1j}kL7ec3ZvZ_|eVZ8}1Z^19ruY;q6;DfCF;1{AB-eXO*y3eXu2o}RnEW}wO2rWx6 zBi4{*B^FEZh^UJ;>jiAC%SW4VF53eA-nKRvkV4iYJ4gYri1A6HSkbkK#a6u@oeiFI zC==4+NsG!ht32`C*%T1&y@52LwaIvXLa~f0vc)sHN^LRvNJ1ZGgWr*}2f{B%{P;)Q za-R5o#z6&i(&P6xlVS+?P1x-5YZ(x~dg8}F>G3Nw1*FGsUz1`8_-(n_<9Ek52jagP z;>SPf@w>njkX{}hXHsN~--E393nvd>*E36R{o*H{{F5HfolODh`SFt;T}8Hdej()H zJ7oj$V~F_iPkQ`rHwC2U$HgW^w)j2Bioa<5c*XGp;mJv&eLjn)e)+m7AU&QtniN^% z$=bhYc)l}hAUwn5PyQKzKTQGY$M<5BB3nE$z9(+>`lcm15PkvT$3N-uD>DV8$8TSg zVhH$+-|X?5Ga!Ckw6K>^Jje6S3H*LfoW1PrV|5p0i{FE+{fjo9FEowy*4G*6oBd4z z>E+|3q2l>P)Hjcm4m7?CIKKHO{rLW|DIh(br z=V0$D#}(tAU>@@;#}@NM-&4Q){-#Bd2jX8^6L~prapdK~y!`uPc#Q;Cdo7MUaLA^% zJZw<^B_e(C*WLGlc;DYOD7}}foap^q&4|+rN1R~Wsh;_V&>ExnkJpT*J!9Mp+b;F& z)gJ)cKMA(Dd)AHZpMdQ6xKFUn1GXvWJr5DzkN=VrzB~49Nbo}n%?~8eyp)dK0GTux zZSkge!Q1uJFfF$i%G2E1s*j^i-2Y2X?od~*6Uqla$JPt&nCiRuV^Dq+O|>=tvd4Q+dJq3|PV|2Av(JZ> z-YodzOpWwV`6GPcnDEEBT{+?X!)r#IKWuroqDN>Qs=WLB-G1=KD9gL1+~nP_f3SX7 z`FYUsclmQU@xyr&J{@U#ZGL#><(&B8z)MF(|Jn4u`f5(}UOjL4>CHmEU8zUkP~}_g z{ z5!WAXe1G-#obX+IvTfgwiaqoPIURq<^QX7IL#tx=?6)lB#R(eep~{PjbH>CTy8LfB z@yEVr4=>(>j=$c{oakNLH@xF73;sArBRy39hzZi8pikWLruhiruU8) za^io8FDj=S1&C-yIcv-STXfrg^CL+v3wkk$+!(GADc=J#P%~-Re&{ z$%mD1kGTAG^TR2R=0xw`o*Qv`?eW&~Y)mF}UKAqEeJGF8Y$^?3;kLO_$*ry12Mx{9 zwUI8YhH*8sE3w9F)|h^dKxXU0TI7NGyQSV&>%G3`A>Z8epZh@0^dI)4F{Hm~ZO-(s ziH#xsPih@AIKQXopOaRNA^qoOI$j5$zt;E!#)AK6J&`m29P<|ES+GgQg8q#C8|m>s z?7}g`e;DM?rKg!S!m+^r5BKNHKNH82{-%d=rvK(0#!&wBX6oNd&;P$XZ!G!$-kkA& z>Etow|5*>_O#j@Ujv@avb>vL{|BNO5y~99%kIy%D`s)ul%ied5A^*&}CujWcKXnZ0|HJQcrho1f z?h79y|J9Rs=S=@gw~jXcmi*71_VXe`rG1#>{~vPa|GB4*q5V7z`fGjLQ2SsQ^w(Cu z&6)ovV$o>K#_z1(EHgjF~q+q_xa1*o5qs=Z^{|}`=1^|{Ljsu{*!JV zIs6yA%@t+G`<>Cxag`e0xM;&Wp6z_kv#g1)&Q{`x!}2zD{TOJz(IUx*_n3lQBNUF*Xk z7hKKmzyW)tV-D^vtHjdwTjLVNev&A4K3+3Nre>7WRNjwgH=f8{-h-zfPlaay&we~n z0pgm>+zK!Mp_Zwl>qUIE*r&d5DNt5J@Qz5ZSMtWU^eZ`ieL8A-k)6frC^JGn_tj8 zHr3`A&nAuvqs+G$Wkahl%4Gg_yic7Ie|$SP{@8XBuZJ8P{%B- z|2c3w)VHq|{vZ6^hCR{S-DnENGB~!ml5!-b4mpswMOKo@+u}Q540IaC=oI;}U^R&_ z;{akyh8=d)*v!&nkB1#W5C$do+fa%$MJOdY@$8D<)my>ApV&>~K0hH{|7JBlw$|RQ zT*gOT8IClDxD$D5VA!n2$IC0S8XtXVgM)u+4F5o6VLOxv^sVp!Pn3t$k2jJJB0UtN z2%=zXuIxd|3h+cxF-wxOW+O2*TPN+5q+k<>OCH%8DaO}gJi`w%xjE4W?6x-I*I+^w zJh4Q$)!u^>usJDUa}wX+1NTIt_@F~73&5*NEh^V<+>=e&Hp(w@azDg1f6GA~*u*tW zbOCOgj^!bLTmH{u2;2*Id^Sg*t?+4z^s@+_QyYH>A#Dip_nszVXvzzJir_BQ3Af>~ za%ZGaCI9mcU)-0!wavcyyI~O7=RKt3-)!)|;Io17ms8U%{7ZDw0q}R6V3&-4vJWF0 z{G)~1dKy{$zxAl#zaJhN|5Xb|0skfY9ZA8MhW`V?Y&>fj{C}2CnjU|gc!v|)l8`^` z9v+YBc)Kzi(GP7Ub{7LnD7|gGN4Qey8zh%bNO+Gv@V5oishx52ok! zSCZ$;*&zP#VWYw8a~~4KkHSME{^A0S_|n|uiyQAif5v#fu|bj!3GZ`PewemJhwf}Z&BWeea?E~<-B$d32>7%Q&sU>HNVwF&wsKY zn%61EIPzHbT7C=hTL`<4>mE;YAH&I}bX3Lrw(E8q;69JjB$7pjc|-QjDTJB(wgoBcu5}$H+v{_@+1Rp|kOFc94C`rubfnX4sLik+-_d>Dyj(-bk4Ru7%=k!4I&1$0S zp)cCht8O`M92$W6ee<|zV=RAp3@38Vn~0+#x6R+0@oRsv5m_qRk*y@V2vS1 zCz{<=);tH5lP37in|-sI{#o91YH(8*@}t6D^-A4)uu|X?vpnV~pu=4Ni|#3FstBqJ z-roY*;%igrP5_IZ$k{_F<`F2c z3Ijk`{{XPQhDPp>LJzaJI^LdC4`k-T_NUY$y$8m3SKqx(msG)$VCTr66EQ(qu$uH> zfkWU2RdZ22dTS~Z!s&;E?1nfy6aRoua8X%de*XQXh56B@@rBW5d|IY(-6?wZ_yw5V zZ0Z4NEfWrHkAU{l!T`%CH~?kzK8cbL^CI}kjyZ-gcj=fFu9#gJvs}kCq{jS6$INiW ze1&<=(lI@EI_o)-F~{nd-@9T88FPS+sdmML81rQvv$rcI$e54u2kq&-!&%RsjCoDR zw7OyrV$2gd<_K3z8DnnKF@3i?OXE1{y++5}brM%aD}wkPLOe){7U2n@A1%fc#74u5 z%PZ<%&s!9&LjV&-@eJWvfhVLu6eGL57|&`v!+6%<8O5`9artb?c)8Hk`dv{}Z5Xp` z(i~z=>0q5Vto2U|%#llxk_sp|$B6|IBpzLEJgoI;G*K3I(BjIlRCv&g_n}g-$l81~ z$fia;8e~U07av`>DDpBi5tLqezf#w4lq>v@u;H;Nf&%JAXHYeQLh3OSBn!@Mr8xZ= zdbYEy8EaUmV)3^who0^(YubV8x~%CGKb{ItSV(jF@PxrI8wSIy5OVe7S%jw#&tg3N zc!o>rd-6&bmDJIq!Yy-AJdvlQ0#D>CslqdaXEmNhc-G)qjAw2AKl2vNzC5A)o!-@6ZmG3zF)2XQ8wuVYK@)V$^7^Z{tu}w*I)spv~Zur_*lo2hjdT7wez3< zd=mP*5B*(6g;R!M0{)^dg*5@yiyu@3_*1cXVIi$d6nmz1178_*Nhk6a<}F%S_%gnz z&)0z=kiV8$z@_|S^wBmH`cOdX)*D55u}j%lsDJ(vvhG; z;X!2(ePF`V3&XtNuy|H8M)JLKUE-|fT0g%-jQGl%!{Ek+g&p|LbZE0q6m2?~UzsM_ zbcvtenFimHUUPd1#(wD{aC%coNVxQ1a49?U40}{l9~;vUbwU=9W-XD0bI|=&=vInM zNEtCAq6KRG8_s@A%qxCeSYuBt4y0_yD3MNER#=Qu*pM(w0}xf}y-6$=xb!|t<)0}0 zK`Go^aEToCpg2**!}8Ov<&eb1kmwa{87&h=WL=>|UFR&&bwzt8yXu#Op}amN>7x%AOSjaDV>&58QnPmL#yzdF>CbK4&vcY1BGuOZzu)IM?>jTeWRtM| z|NV9UJ~n6G_dVx1&+R`W*a5pMCSRL1-77o1UiMMp;Gg`*I69;%#M<3J!dKP41OdP%_-cx zlNIBQ&pef@n3W_xk-F&EhNo!leYSQ;PY_;Fm(6=HXW@`H5!a z%IG0r4`9zBV4{paA|#l58B*lnd0uEL%!=9kX0i3VL)Bn-^@fWO%*t5H|K+Ca<>_C< zfPb35Ri^$HqR#?s`ra0p^{&Y;^=Y|1HN#KNGI#0A8YEAT50J&&ObBViE6 zF!6sdlWtNjK$dtGfu0L6E%e5uRNr4w>LV2!`9)Kb#;+2~uRctX#7WGuU_N-3Z+Qmt zGkFGvr1<3r$$jP&P7J#|s}i1JJ|43K09RxKIKZ!b5LeR&y5lI-Z~PypajD;&@Sf$8 z0e;|8{%|gBQ!s=}M!00aB@%V)lH|uJ=48KLLg0G*Ne*Ucv-+zY0F}lc8~-Hw1iq}~ zKg%09HA8sQV|mjBVHSYOUh~LD!W$}AEIAXr>ET+1@&?_oEbey_EO^t45^>Xw5~4kw z(4M%N`L5*)Efe^%(&bAxN8-4xu^`6TiZC|Il9EtgkJO)T||wyz0) z7adZYH0JgdLn+ZCa;e{xzcXt4`r{@;xb%&*uNZ{1`t<3CxnEzOu1n{XF`vIZs=Z#Y z@eodB)u-eB@>TSygr&YweR}9`Uqzo9k{SB+r?*Dcr!zMi!ll)&Pw38CsZKC!e)=IL z{8P`z2L8dQoC8iLZ}XclryM{|^TlJF@27tPce2bIC|p!rmKr6Xk0&S$NHE;DW7sB+ z5Sj^r0gWtNn#6dFV>k>QtKo|E-{|?EPtG_H_M9*rOnRCLvVdZ9{a}-+xUIZJG7z+mL@wx#=(*anRT}frs5ntDFVk~^l3t!S&I8G;?LQcE9y!g}{ znVJgA%SbrRZ_%)L5RtIar*0;Za6c2ri6b#P6zAYouv$8#YJ42z$EYS5PUv>|8w0mG z;0Cm-Fq`6#H1iH7a9e|iBz~V(E}9EgKx|GccwqLBJw*p&coRGrAp8$d2t4hriTS(xXUtam~s?1D&6%hhh zOX4fUhei~z1$s{JbYJ2E$Sv_Xq&F{k2u5Pz>nSaZQqHMdH3}9;X?Ts{g=rt>UMx#W z1kcVmT7!R8x#qbCMTq@)Jt#u#$EQI+%@7p-bE$pc z+>ci#zT}H&*h1(K2#!FAIGyrT18wB88Kd;*S2A+8Pgje|Kq`Ijo{D)@hd@UP!1TV# zDY5eW1+hwZoiEN+GEQ8W%Qhr|@UgZ+a}VDjD@msy(SWN@e~bl4tR(?n%$)xnj%QLa zk>LiVO_B`SIEv#mawzJ^$B5I#tWIGCAe)oo2G^->TTJs&~nWg5KOQc=bLfz^T zG0+LvT8_pn1m1-3(wzKj1{oYlV|FBr+0If&DB3m~ALsnd=iAhs(P~NUrkZ_W;upj+ zS`z}$4*ukdv*WPgn>{ry&prhuzOtqiIm!qdzi7~2-&AZ|iM*oO3z+>@h>a7o7xaTl z0c^osiRi4vi82cj3`LuXT_jwoJYr(@4-Bk~1h+~EGl5t)Ui!GV>=6>3>R>V17X;RA zd|Mf9R#Vkp4S3LxS|lK&lmI_K(0_6^8eH-^4zHyZnp61_R1ie9zcLy?H>+P9MCK)} za$)vC8+Ig2P*3XvdOa9M*6!HV59APi&6w-jva!p!1wU2 zWlj&@I(;I(i7G1tpk3fLrD!`pp|!-22RtSTTNs(seLPiG0i7G~6aH z!(x%W{=XG3&2vF6wb&XG|6nARcGPv|R*dIk zgQu!UJNfO~v!zK4g44oy##vPP%&nV>ACDd<*e`Gm;P!)2hKStujBUxi#MNn+mzRD^ z^&l)S(RNu&G~B1;CCO;m+SM%t z75opl2|=}`=<2p$HRxtpv?b;T=pI0-S4b9agMMTm*Q%J8%Dtf}e`0T#zaV_6RHTMBT7d4cg9vI6iFA)AF@x>%uzhRx z=0m!!62(-K44T;mF3~PfK1Q5oW_1cL0G8%gJp!jw*w_h*$sCuc>ATx5P+rbi%8nwv zdrMzWOzYo-sq3QbnEE$snm$=J#{SS+iX~&uUk%ZkYsZ*>KsvUZ#$0ejx?V7&lmHIR z2B2-YKk#+>>w6=k_1EbC>p4WKX2rE!psQnd-@>WQ3Jgu~7E4RMnKHwNkq>iV{KN@f zjAR1l*@-v_*Lnn?uRgUhq&@-1GbA_7AD}qt4^*_q5MzZ=4fOD7I0m_}8FA6ls)CBv zs%=_>lj$xXLlaHL<@ls4QqC33<}r9wIdUnw&0KP2d9VyP>)Ud^ z{Rf}8jPDfAy2=|qPUzVQF&AsK-BP?;s{NbT5)8)XETy81ZV$k~EtX_y+?n&cp8b&aGkm}I_`Z7% zF4S2BhjtON?Ph+lA%$4DQ&+RFSGczxUYe>8$vs)%&RMN5F?@zSmnBA6~*wJDvM{E^A-&VT4ikC z0R-a!V#qXKBTI&R!@J*G)LJ6t>OhAtc{j6ELn}XVs2W0C!{3#-x}?J@1Iz-5?vj}< zHB~zH87W&nK=cU+AP4=gki}N$9hbeOikt!MDCE)b&0=2!P4bdLau@CYRa#c_ztoZh8*b=+y-*9-UKU zp+FE^p`Npt&ab(+Yh4bI4oOZVX>|bQOSIq*Sb7NBViAM`0o0q@-(N=*!3qHGk}g|5 zH=o=EB%hh|ff4}I1#4?w+(hLI@`tSja;5Z6W@{off|*k|51>rm;$d1r@2bs zEBZ@$$urV!-~oBn2~y-sN?sMWsk}NQi>_Ill~Yt+FqWwh2N4OLJDC$A6FK6!%RZ}B z(&c)y|2s-_38^VDuWwBB?S2H5X=a&Ww&rTFAoKMr7~rR9oWey>Fkq9IWkBNJq6TQc zDs7Q}537M5u)UyQ4B(el6rYFjSDQ42;~}@>A-4_T^Hvm}?@MB9ISQB~u9DA(P^{lu ziQWkx2k!uiHANQ&Fl=c5bmm>j~gvwFy=Na3$*9 z1P(JY;nyWe;=*5BQHR!_03gJ>iD4$qz?AV^C_k^u;y~!iKL1T)zvqP2gtcP|))=dIEs8p^7qUEy>GSbHEgAq|y|LBcr6l zr1=LcP5BC;#EH36_#M=24)~)=vtEr{J^Bnva|u|(IloDKP5C_Jh8=YEa`=@g-kQgh&jN{#3> zsF5^-8aB&YLs4t@K#BnvkWvpen{ywtq$KuWR|#uTkFUN&v2>gilv8*lGTI=9^-M;? zcrsTj?_+9TS3YWcw8oJK5Rvm`VO?N=BDjIXQcV^WU@?SgI_;jimor zE$zmePwD|7z#8-6bow|?TUA=o8l3KWUy=5O$WbogcwvgT5|fKa2Fj-*`~_Z2iMcNN z$x7+rwn^r}2MgeH`9A_9@kr^gix>d4Q};ylzwHVPn~ zWidM%bIi9t1wM^aVR@XqvzlcbSa*dR55L<%Gh_}E&Yv#9_bafo5P?gNuqDO~;6`6= zgjWWSbpq?$u)x}du;h4ww}J`_5usczc;G$CWU)DV0##+Go3|78AnXiy{Q~c4;I_TO z`}A@b-ZcUbuHY}FL08p7KB9|G;rqyB&Ur)t2LL62c1$5NJ^`#ztmBF`93o*nx;D6< zKifnY-(x;C!uVd)-zW6^dalrOn^*rNOOMPM_nCE9u1h+^ajlA>p188VTdRTHW}GSJ z`5zI-A=oAJ#{aoQpdL)9+d@gqqZQt~ahI9CzL3yK(Mga-1JZ`f4vIlFPF0gRsT$A{42Is_C=}jUa*Oc71HYmbNUAYXoTP5FNDeznW_gF zKZl_otWt7{_xcEVy*T8Ef?@h1SYVzwU6wv1tLLO$jGF8bRgK3&gc$Dyk)sA9S*XA2 zXD_sK{ma-4=%+>FSilGn| zKxifgky``kQA-@P8P-r41xyD6(Gz|SlL1Y@G>lW@H`|F(L(C9g^_b1p6&Z{EAk*btNFWQfBskh(-boa|(-rnso?s-qIHN)H(vG8s)1~S zj4Az+MK`Nrq{-*07@h!dCjp3~Te#Fl`>L<^l-G+x5rYqyGYq~LD)(Oz4TxwMEELrj#ghCOp z4}ht%hhEB`@ex$^gE{!hZFW@ID=xJv`}*5yD!T))D#7$`BrASTfuXHG9?Oj0a%DCaGqX!tANa z6o!dU!|w%7N;@&@QB`gBVUb!C$=I*z=?}APfh?;@-!}f;sQT8ieulmk;gR|Vx1t^_ ztc=940>xkG=NpjBjQlwiZRf8_U8SEHd8RUQV>5FgBY|P17*F%Ub$DnE-zi_5TKVEE zWWlIYjVIL5#;3@QZ5VI^+Cn6uNPCAog*zp2y5yz9F*$s(@G?F+P7ey2GvS^9IRO$C z$oSI5>YR4T@Lc?#E9VIUa5BCF^oSQa;7x#H9e!%(_ybIDEf2@>ya`);RDL2yNFWJ7 zbJCksz4mIp(uL&YF33qBcxKt;GHCU`FOm-RMku$s9Y5XQ?NGIB)Tu>YbNJ`%uEPPA zLyZo90G!mA(}OQ%c%j&pDgnsEcVK-pll^{Jl7H>uR%dTKVCk~eSq{E{$UTx<1C2&S zV>b_tcc#toCC-CX=Y?5WakYmgw;pd3WZ z;?Npai^+Z;lSn%k&Y(kelIYq)q+J#rB2E)tqCT0shn2CNAxy;{s2W?7pbAKsZr3{^vhso@C+5VGQ$Hzp+L@S*v8xL8_5oi~BOxbd z;9t{-Os{<@KgbN0i)xZ#T{y#d7}_ApOP+|+BU)eh;KkruQ5Wq>nBxRt7=Pfo6VL?z zF5>axy|6OhnZR|utAHiO&H!eKh_l}P%1iRE!y@vej&R9i{-n53?jp0aI2+2+7CXTJp4( z4tyj9ND^BqQxsLKbnfi7#)bH*En+7yjZY}jtJXkBj=d%*x9XQRB+?eXJzJXOHNZ@L z+`fI#7EZ_79`s5wN86bh&EStstLl?#e=eHS2@1@oO;%at=^&|@u^r)NR!dbSg6Mpj z*kJJ!6t}V9ch2E=m;PPvQBNh@fo~`s1M$!+=5&`bvFOHf>mq03N$3QS?jXEqJJ|(5 zz5IOmFWmJ)J{@tL_>%SL)EcNF9Nwr`j<2Yu2T3=ol8L~_Vt7iqnOLf}deY7hsE)Z| z7y7_ztX9X7n3_K6G3%0>c-Hm&C<7XS z1Qid_Nv+}Ck!xN%|2BK4wKk{13mP{ZkSv(R1h%cHL;HzfsVZGfaz^TXEeqs*u_|L79771(H`K`RW8VoU4Z8w9u!w;tZ z0=QQZ@gV)ea4`XEQsLR8&JNyseq!}J{7c})2^3PKw1;iC91%{w6 zC{(|KA7tVb9@ywj27UgLXcxRlAW~qu2SlR=1vmJl;U+~$k_?0xh~iaBtuW8NETHd)>PC)4Kc2;?IO^8DPocdaKqgNk-l5E_T=M zLOw>E0^zf98JIfH(e8skU@xaY;{U^Tyv^ejOzZ z8-IJ>tv%awtngs&#QtQnjl)J{P**#D;MF%8KC9*X@bR9R)FgAX8JkGUmK<>y26!|s z-2BO2hf%iLm$|#_?0hO_J$u-Q@VyK9=FKf;=g>O0_;I#1lrE633uHZnQ2Z8Z2~za5 zbBpQdnVn_D0fku#)1^$!DW6caR<${8Tec*Nk)7c+9WryIljH3AQ#;q{h>BCV0!`Rl zcqi2j$fF{voc_Xij8q?e9HzkL%T&5~^B;;tpI~OUt!C(THYC0yldW@$n+YB>D(-6B z{Nj2=;&dYM*&Qh)5=}J9$jBn*r?%EO9*CTz8MW@gmaH2Phq9moQXu;|`D)7lM$>{N z3PnQzK`af5#=qcom^0JS_*hyf)(y=2A1md?;vi`T4wJ}!opYDr{*hXTWJDe80m1M4 zSjR@`b?`U<7VHqn+$mp;i0(iDBj1oIJ(6BQ1=m&)E}nS8)^76#kQd?O0mOKR%FKE; zFFJ4@kAZ0l{J|O?T)dCZ3HqkS$}x9(b0GmPukJhh*|?ts|RXF zc&M!>s8wKMANYqj?~Xs5=Lh##4>fcUX`)h;gNrJ&`c*1ERtt0_&5+7wkP4QKdQgu4 zB_@kMV%MnwxS1uL!qRggmUC}Q)4%~Zn`$D^`h_bH1Du9lT}!|NoPr)%ccFkn+)Z9h zR9jIEIZR7ox>{9!@N2NDt%3TW9%0_34&@pco{zaL$jNMW6T<%8511n1{%X+NOn@ll zEs<&Ny$+ULyJ^O1&QjvZ^I!m4=CAC62kKD-WJZho9aHhM+nh35JPzl#XwFjeTS2=Y zuNN*=H>PvC@DC`m8=WLmr}FdAT>LIT7WgI`hN7ERMgfB1+6Zs%L`M(5stbj>(QC)> z($Afl_@7Z}2=~E^lezUz;uQAb0o^&`X8P>Z5QI>LTr3~Rt&F0QxG32ypxGL{FDVt7 zmRqL7jl56ya=P2^()zzrufN0z%10ox4d(KC22cKM#1yc%!GZ!-LEHEMD4!a4w`*{h z*mR|i#=cvCs5u`fFO`K^YgaGe<%3wPmBqn3kdKRlk~Z!ri-YG&@4z?7cd6)9u6co} z^7eMV<(6swU_nV6_h&xAF=~wpj%7L1wFB30s)|`h#jJOYKgsGPxUB&0HiCooWa{#e zj6iq5BGB796L^nvA`(mj1@$cU6#KfGx$uV>I7I@bR}XwgB1dgyh7g-gA0K3v2Npmx z?IWuw$Np3t^E=LR9rI^*o*^qt?z+7-5pe?8CscCo6e;#yEp~-htX+!P#aCbAA*o!f z%@d(N{VlS%<;|SXhJX4bl)uyBPx5PH{L%AC{-%r{3CHlGqIg=D+hTu zP2OR83BzBU?72#SoR^gB-?IQq^+^Ejg1?o;-}@y0IG|CG_w%0wefhgB&cB|+eqAv3 z){XP5kbH?FY(EunaS}YH2*>@(Oq?5T4XQu1Pmc?avQ2RJC`LfHp(+^UpFu}-(0$TQ zWVFQ3H>?llI^KGxfm@40m~XVPyX_0b@JrAxW{x`LDSi04EW83`07JriP3yb=MyIE4 z>Z=V<{_x`{!bu0F8tKEJ-Z$_h%X*R(E0FzoVSf1i|DXgnuCN4CiFlCQ1M)Yg5%juc z{48_%UMzDRekLBppVU`@*!Kg*w(2yU&V<5-*lD|{ZsytR1g^EqBq|(ocIT2sd!ph&zO^hVY7Q)+G|-7vHS#9gJT_N$nLy zL5GmgAj)JU@Z>YQT}+wb7uSzAs1LGi9FOK-6YLmN;N}G-;?;he{zvwpvMmQFmkC@9 z`AP}U&R#~G2KDB3e$J~UgmVwhkXi!xu8Rzn2wla4>29{e*b)|X+L^fkCANi_8Lhm4ow%JWN-1B+DZK1-RX(8QsRc8eTQ0F`A@fsCdz^?L zvz}FpK0EtFs%bYwQ80&H;X*$HUqQ%p45Si z3C8r9#WM2a&2_EJ!=y-%pCkxc)vA%P-sY+Z^CD~U?ES3 z?k|vY0T~l#$eWA2bY^MDt-udHNd(@@(tG4sLoTH&rdxr_xAVG1ii3b98jY1;t^i{} z5dAK=E;E7|t+YaoM;X3*Qe_9(Ji7pWVOn`t@#jq)FJS%CeZceSs94ap*(w$rOyN}ySmLI9;YP9Gg8DuYoM$&E@B`FMC@tUotTD22!lNT^9#GR9*n>cd3 zMQXgIw7iH-Np{GU3Ma}sK2sm)uxVq?9|tj}Eq^onq3y>G zUo7<7W8W_%hIz>~W5!<$!k+t$nLpAdPZ~RXQOG^Vn!iQ12oIZ2cI7{yD&1I!)@Rka zXEzUZSN)&78tZItjIjSobnn;5k!8rP^B+3);pi6gPnZXp87;uUb1=0$Faa+D=2IL; z#z7I|czDi}``<|MVu;@YP)s{u>VfevFdr}@4a1w)ArADTp zy~?56wRlsP=J><+x{}5fhfC@rQ>9Z?Yj$o_dyYUMr>4Yw@I|@w5C{rmXe0WI{DL5k z`$S+H&tQ2?I+-NSs5vXAF%MaIL=P>r9M#lg9@}jFj02w9$kNRH;>7tnWXmEPFd6az zahvG*&ob46Q&Z;!3fwcdG7c-%{3V>vLLr`@5j_wrLJ1yII%Pe?V)7qOl7LAvt?X=J#CnD32DD&kL-FDoZi)t|=9Y4u-St3q12I`KzNokU*s>1)|y}3flTI|L(w^2Kx`TO zx5ZK3TH!N`bSk)%-%8E=|DosN&gR%OV-lCE&QW4XN86hYMm*qgL7#c-N{*Q@lgfrA z`(Bn(9GIoz)QzJHB4$UNpvzn(d|hISY@O=UXN&vK$7VGM6y%pAzNEK|>UBh5XSj-)WYWvW%Rt4yNV*H=TC8puVc ze&JI`cpSduVHGSC5b`$D`^aH#LV+#}IiHYf^h;)IBDHa1;}kx047hs1eC2AL>JUQR zbrXlJ&+Y_z`@syo{mTj!W-|dnn384)Q+4P#(V&lS8wFchzZHQJu0k`>;6V$!TD_GUBbFN`=}m z0a#@Yr7?FL41vpTzYvh~@t8w2RKtTjNA*lpj0=W1z`fMZ| zJ<2>AI^MuMnP|f(78^%^poRzG02dU-)GFIQ`kpX*4mjzsqC8~@v8Fr0`$WfFjloC{ zz5#H(IY^M?QB2rPfmd=?QC-MEF}+%YqYGpI`}2t$u~{8e61tX zDxdkqUnntqh>t=3g+hiV8S?XU{Vv>r&-{-ZF!LWyTNOGGBNr)b!xf#vAUYb;*-GK! zdR6kN7rz>$=-F4;D0A$NTuO-@eH_D$aeB5y|5st*wI&X_`sN*bNGRF}GTS>?EeBM? zRy1e-g<7Z~$n*?t9eJ$dSE&I+8(T*Km89i^Kx)OQ$-Hy9x~~BuF-rcHrIKr?z2DHB zb?GW~lLhF{ay*nae_xA7tDR7ost~mb>Q{!>(7S+Su4*uEJ;zykc#uyuvzD4V5Lque zQztriE2ii1D!^A&fvGVpES!T~D=1K;+E|LOWt^e83S7htjUwYN(4lS zfWUeMwVrvC&q8bs<_pZ~qIyx;#NEV>b^Js~myH_GQb5eb>jLv1(2C51sM;qZ2A88A7& z-kMaOgUWy`O)o_+S5MyjpGb#c(L&q1?iR+Mi*yOr9X;Jh(yufZAHqh z&GL*=?Dng{6CJs6`=y_8IRws?{nUCt_7(vd3Hz5p48LlmLg~!N zQ~ZdUrQhaxgZNc#zW<;OWVpAnHf{8a@tOLEjCK+fUDq5vw^~};kHY04f+U6PB5B={ zE+~#6We?vYsRkX*D=(clb82o6yrHdJXWFz~sOGDQ>}y7DS$U@W$(3iO?#eUO5aJwUCMo)uh+3yj`@mE8Dtg-B~GXsX2$ai`L)Dn_(BNJETs#>fO(W)S~s- zTI{Vu-D2@gSPbjD^ukk%)}c|?m;>$_bA?@F4#*laVsA9kNY1{DEWPA zqLhVZiS{~$xuDCuaw(k|9bmAdvO|ruF-pk%z}8JoW)4X+>c(vp7@VCiUCZ~A-*wfV zRL5D!DSQB}$()&9*|qLgeq`_^!{WwE>o7l9s?8`s#H1OB?=AaeVfM7aV13078v^F? z2oG(8VUp;K)|n!;0k|?G=7Y)N z5;+c+oY1Aq%g?t{KPgqqlh5H!lJLU<9eYEN(o4G@gr?(i-$kUey@QoTWLbb3tItu1 z3o*z1T-Hw8G|NH($iWGpqZ&x!==Pp-{>BJ-Nvi6o%a`yb5qI)S>ej z3r#G=A23IN>JC1DWUc1pPU@Suqe4tIUj~*7F(H8j$ozp!vWSi|afcCuBbk(IKAIm# zGT?Y5#dUk)dfd+i*MJL=KLC-qCT6L_N4+tZPoh|+OSXBEiden{?$q-879V|%?+38h zdU(bj6#SJeJD_4|Cy4Jy|5x4(lCdA=*Fs(?3uyawGu`$BW+gyh`Luj4;ZZaK0aF8tS`RuQv*ZFnjrK~^NDP-1 z%|qxOp*I30s^KiUKhOMK?5D({h~Ch6n_R^{?tvgBNgr~Cq^ zUXu1ENp5UqGUZ0Do8?bwFObCXNfPeIH*mLCl6F3sg&%&-b$A@2%9j}OA}5~u^eLoI zaeb=RC!}_pK4Q=oYaQZTL=+>d1WWC!{&H z+LvMe0Hiq4$JSIP8B(ATI9rW?d_?c7ntWvlntarG($bn;X#7EFY@9Av%ul`z@_tEL zu>XY_VEZMXQ%g_?e38T(0;4yW1>j(62|jp(a%MJ7N7+F+!z|DzGl$vpjdG<>IE9U^ z{1%be3yjT~6Jzs!6%Z5i*00E!U=!JbiL>n&lP7k2A;w5yt{MYbNiw*xeOezEthHh{ zE!)a8OdVj<%LXYa=xubRT{gQnl2d7?s*^{Fze4Dk2<EKs`{YHT8E0W-|ARBWNNq z!7M;Tg8^VxPtu_MOfoP_Gd#CTD8G$waeA56DcqY#+%;Q}C=+lP`D$-E8;oDk|kuMHOHHnjA_Jp4)1(`|u`>M0M(LDPG$flW`3WKXoHxFrMbJ1X~d zGk%lMStJrDGPgV~bjoy9umFfPD4mjI(8+o0`OqNw0r(gR z=ctM2(qNVu1ES-RvwYFUz{~s=S4Cu*5W}Re`S_QDo=ksX>T4ZE&j@4#$W4l#BpK+* zHXpY`ZowGLw#5zw7*F537gyY0LoQRGxc5m7eJ<`B3hua8W{yOorlxI2-n&;s4OIl9 zvx-c~29Q4IVoUM1nH74QQ!i${3(par#iZVtTkq8aIG!vnX?99v;xp;aFPX>*}Y=v*o zHZ~kg@o=PZ?2;kH|G9a3@jqk~e~sTBA2y$i*=MZX*z-}eq6d(3*c4j!`7l4xY#C#I z+mJHOmlZlE0nuRJj`G>pnC`RwDI`^RCaqwr` z(lPLx>qpJ(;Jo>c;2^qEE^T(mEOQMKo;3#U@wVJxH&!!aSW+_Rb^6V*$8os7*tFwL z8ocPGnGQK}lU*NDWR!!ebZeIbWBe+7&DP+<448V@o&9C~(&Q^>+Uouh8Z*7O$dmh@kQ($K;(L98lLkOcBX!oIFR{`Ro>NS&&xToQ!gj@NJSm zDydE)>8#I4H*7SP=nWE)@NDG+6Emfb%TIbliY~6>=s-o&#jlx&z|moSh%%Je0A!J& zg}Z^vZthASv79;$s_)2lCpW@SXZ4m<+7SymgAq#;@mPEd*EBChQ?9xc_B{mu9Ocay z&kSn$)$v$yON~S{>%M@_C5geXlG{g z^p7%WXAbjZ2WdZqv>&3h{}koTmro1rKNZ?FNW*;bTTZ6i-30-lQEiSqhtuVH6N;Wu z$%937(~{ZpMXH!?JFtWOs#3RoM(qrwTvdW`VJ(osxG*5(=nONC^3tbLB)DUP-*Cr< zUtWgGm}skj9EMn%iy77kAJieb4mBm>S|z|kQSEH6*Hler%-qd_sP zCyMWFB10K56c7`}F8qiKRhVQndOZTA2srRRx2~6;?_Zg?3@_a>Eiu;H4@li~_LS^y=de00_;ZFNNu^v2GhB!R}1pQ8!6ym}1a^N}8cPr4s zIJ^(yh+C9#`v9;HA_4{hJvVA2LEKK-Jp^05B4oq}7+ber>k?$s#!5s2$L|b7mSd%3 zIp{{?=EsPgf-AhH4EV0E_@>56#Mj;$Be-Mm!)_`)HfF^2eNmUqK;p3BMHYX2Kzg#w z`!8xyxjFPCug_fN_-Rc3ak~GDmMg&m;y!Lf)t3_85{tH(2 zxeh(9`!DW>;Th%r3+WiW{y!Mf&cCW3nt*?p-gy5gHsQq~J?<0-OyJt#b6=)29PE_^ zEI4vbUiq$UYVi>cgnVUp+Dke9v(KEjE29{&&*r(SMgLKV@m~N8O-wtsG?FlPe^(V3 zrxwRf(10yqhC7SbiHIhOio;Pn>|W7CQB3h8;q1XkW;FKA(ZkzgQbPdUKzP`tEeERx z&~zq$AF6oaiPCgDm1g@+mtKn-lj3~Y zBa5w0HJLMxw>ni4a%#%VJ(r78^~8_R%haSRHuLXXatXM|Ay7 zbc^7M>iSe5<_BU$AfT*#5jhjW`6oM*UP=c6KQv=l-`#OwW#Sl)uu_d9MTxV$r3Cj| z9fz>6J;jqi$5L^(G>23N(8e09XP40^3Z+q$;xn09W_}Df$vs0lbq)!3$%n%4?1{E< z-0_(+XF-fIP-I6I0dzd#-aw$u#xa)=L5&@s1yb#!$qXFpDRj!Vj?kV)Yab5Ith-|z z@QCnv zaGof-Lo@eH%Bx+x3tgfWw}BUZJl2H_shNQ)6cLXN;|F};3Xk-s?LAsuFA~$(N2xUou2F@YuziXX7c6EAR9U~mg!m=&%NF4a&Xa1K#%(S8 zrAibbJYZOf`BGv%me@y1w zbCH+{Vm23>=Oq$VRu@5kZw5VnsN1%n=7t?4NN0NzB?tR&_}+nt_JMo&flj4MF&rpB zF*t?)+6}0@_u~{5T+B`ht2&#o)&cDDMY$B#{BtSZRSChEZHseIrhE~WY;gX?*`o=|r+l!& z%2ncO2^J=X#7%oniL1Cxgw?OaN#YSV0h*{S>q~Uhk4V*|YB#K9~WtEJ-|iTww*a6Jb3CCqjjF-&wR?|gWBX1gDy3yrf&Dm0mAf`^M*Aha$d=JRHy=kZ&Fo+713 z5|18NXi>iiZF5wiLi-|ah4vcl4#EIg8dG6P#RpTUKQ$>T?qn`cXoJi(RA^DaE?<;S zj$M4F3T+Y4Ph3D+hYBqwFI}Pa@CiXJ1dFLuBvWIpPn37%m?g`V##cIoM!(W1iAQ5f zW}gA=M>Zn{ckl1XtQ)|G%1i*jgHUSkAhn6ZQ`9b!#bJ$ZM1N;-6(qwYDlnj^hn~-v_87ecfE73&Ehsvx&Ub-^tRN{OD zi~bo2HQ#`BY^51(6k@7KqG`#I#+k^wi!Y z^n{ciNj!R7kri((BD?3iuE?%^&5G>2&j2OrNHJ`gQ7Xd7XBrMoQ4wG+Ph|DXHME&s z4)n_xiIQ*e)6r~WGs*E>#8xG)j9|ePB%W=&d$AIE?u|lZwGt_bM`TK9{~>+i*Us42 z6B>19sL%ue`fVlmUXnX!R*KwNpOPuKUaEw{VSoTPU(@vqsJB6S>F+%4HmmXd;JwFw8ftgKSzoos!pls zMLzR~>J$~YMJr8c9n3XUXcIws`65yC6HXh=HrA0GPiXZ@Tm!+Pw?^XH#?K#D8Xy0q z&{(fDO5)L&lGz2|;3JdR(5@=;WL68{LuDoa(0wblJCX6v9g?E<#($6}I^nNj!N8Sp zfL(*iOcE#WPIz_Z(28`KRU@CujK3hWR@4HSwIMM(Ua0hZbc4{-r1VJQ(c{YO58oD< zRiFyBjXV91m06zP=N{s{P^s98sBDl%#R?t`>ov4K<{Bz92XeMDyXVx=Y-51rcrptq zah(K<&KilejTL`X5;sv2o0UXKJQ7nP`;ye&r{ zvcK`(Tzg`lcZUe!0J&BbnIul$r`w|F%?GB7tQ7fFWc&q@#ZU`G)`P^%Zc=)t{X#_6 zru0bS(c_9Nw@5^GHL6gNo!@6g_G7`%kz$yzS1L{;Du-94s3>MGPh5+yFq%F$OV4h!Mx+Bp7w8h@X zi-Ib-?e_8{SA;5tN=^Wv3)lMgLNQZUnWDLr*A7S91vy>Af|3yqaO_aYN#f+~3kT1< z8%UR20rIKj_zRL7L@kh<53DnfoTv0$cD>Nksq{$V(c?<);4MUQD<->=d+cQ^xei|J ziBO&zIhN67$kX1% zaTe%6lR&LHJhNBLv=x3I!$_+_8Zlt99GI*`sU&WrDbo+tSQ0WQ)^!Cb^D=4DNewgCRp}aX*uc-k(N|m?! z6)0e6(96WhI|iGBu2Qi@t2-7+NRRZGup?LtqV(j$pSk1O4V%|*KZ zgzKX1@(s+j$xO);yn7cBk1UPY2LOh2|Ac(z(U~bK<};Tk-Dc(*YD!;%M%bB>6Hip> zjy$c^C(?D>Wn77?CRp_CB<`c9Ranax2yt;GP7;r}l(1$|Yf;Q+uAk}&s~68hg(U#c z%d;k@a2+b~OQ95*w?!m30SDy%(Tw8APB{4_Ka_Zk5(s3;~X`Ds+V z@waqgbu-scVI2ZpD__KmQp|&ODy*4keu)jG4Gw9F3rUXG6g!l-R)WQ)T>>2|F3&IE zic7c?UzG{`g+}RK16>7!t0qWNb0e=4%#6|097UTp7?f z{QIsEKDJ6Z2#G&X{h;zy5|6Lclf60pDae@3(N%_=ydc{GjHS<^RJs(${HV3zlWBY9o&{lm%-^n15AnN#b#fn(;l+3|42pcwaQ*Xp9vekr4NpySkcT zulUIi-wPQgsTKkWo{TauA7#wE3Q-HlAS5TCxoRQ6Zv^l}1+T1#)`UP1IKm@b!XeZQ zZIHytI}-hwS!bVgZ75Qv6oGAhs0`W=M`B((Q?=ptt3(^Bl|D&4`dn=|d!lH=7vFNV zA^yD8h9&QbHb^mqwkt7zMn3b{jFdJw%;jlA3A*rM+He9i&29`h=@`|9o1h4Z<3t~$_Mv>!9Oym?VTv6sZd-W5#WCL)*<09>2t51zAv*+~#`q!>INMSCA2QJjYM zrwj@81XIUcL!0U6&?wtXpZ>85riX(0aW=u2lwkTHm{J0SyFs#k7FDwLazrQ%N|q!Z zSt+5Mk6ItW(j4M(cJhQ0x2Dw-ij;=eq15e6-9M;2C6p~B;FVW}A_A6c))*U88kj#& zp-d@6iNEZXE|flPEq%Z~1h5cFHL<@BfpJ_WJAb}l->le6;$iO!WyZ!LlxN{HsZj2J z#tNnVZ9u^!21`erT1ERdAm*aM+2F1T7SZRU zf@p^#Dv66|{@jxwI|MqmXA>bJe%-beLq+vkQ3De5!z+{t=P2w}g)NB-dv;2M?@%el z3?7JkIkbZeb`2Gwl!h;≥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 aVAeynS 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 z%0AoYZt}SsmHXp9HyUc3!YV0yj?bO-xzozs?sJEV%f_Y}vX+L zAh&Ta1MzXWKSA!5E6`ncc^$SdI&40_OZg4(`!2t~@Ow20!yy#oXNIRbvrZbV+ASf- z@9}1dO;M9^Tzd_Nujx@$I8Kjgg(LOYrJxHJYN`vmZnI{3;bnU4TG(5U8HHJTBn#8^ z*bT=~4Wqfbdsp6yaNNmnh~IjC-{toZzn}8^6~Eu{V`*op{w*87aDbArI6NHR4Pm}7 zT~|cAWc0E@>GN_#BtI}MF?Ok`#n|X(*vEGS*$)!`%JTRji+9~<@Xq&>PP8)Lbfin(Wy zd+c%qD*}*+0Z7IG)W!hR6#=lKH!=3QIDkx5iYSjXf5Ak~R64udZ8 zU~vpUZw!FzIUE4%Jsbc88k?dBz^p)3pq(w~ZhY*5C6I3ZXG0qn;xsVr=G9l)agBW- zyg;#?jNvl16CzsmZ|r_Doq*1IGr#xq`xL)#@%tse>BKeg`v-pS=I8A-hpcyXq)o3y zu13bxs?NBIP(p8@iR9qQ`D`CNhl_$yDPwb#8swrR;!v>u4Y4Fz2VRn7v69>uhhn?s zicsK7@WXigmrFs=B?kA!i_oIsSP|OJ`Rh}QDCqLY2u126I5(EL&{h)J9xRWQTxcqZ z%mwGi!M?mCG8+uUB5A-)D6Q9rZjeDF;t_s2!R{bhNHf2;^ShegC;1KXla80a&Kh^* zuUjUuCzo8VK{y4P?aPbP>y};1U;m(gV%~3v?rPZ(f!t17m+cv=9+X68d;Yg7TXPzl z$l10tt*}2%%D~lXel^j-bzj~W&)j2$Q`k(JU7t=7CI|l2pVe%`9vA+HIaO<$2PLS% zAo@zKyE*HL#<5o$JY41G!j@+qGr#Y#G57;y@p$4K-iSvJ|7{!coyqdeL3x>MuCR0aNy3vg-J;ee4Yb; zp}=2wmzWyN1AO5eT!RNVwC4%!2F0{Je_~?naca%`Q@dePcW~gXO~yE0FF(;R_P|Lc zVv&D=nr%?Wr@%hIv zy%GBH6ZW+!Lz0Jvlz(DRrJOyb8R|aP9AaFd3uRd`sr|d^ELTYMtW9{SeJ+yPMKfe2 zRXJlRA!A89b!%=Pk_Wt4irSBLZ(;lC`Sp-@=`z)G)KK5r;Lg(|6roSXKlu(|p(WUK zx=Uca9PSQ#l3=3}JP0O<*y;Gv=xUDPDAM&dwZlT|^9yyPdcGqGOx8z+(LFQWKv`})?0@FLqgNh9L zgA)lf%kQ(2B2~s_=5sbMpF<;PZDi7%Ie{aqf`9m-q{i({VN#=KZSA_uv(?Mno(-Nl z2|oDA7iL(FwH7p_jELz5YjAzqYLTg<4J9cbUD1{d&Unbga5WKY3a@g>TYYjZh+u-o z)*f&WNjM)uz-nX_$#uJ8_})Ydo_6W39F^my8Ab)aa6d7^HiZOgdc${(e0B;_w>MzH zXVr3?avdx6Qd*Hm_b^N_liwOz<>yp=N~^oni(;~V?RuS+qvazh0un*B4CwrvlSyOg zgF~J@k##d#PXY_9D((j?*(K4YiGBE)#~uW`wz=1=Dt_otn&l*GV*d7jA^#EC=kNRS zXKTz!7>H#Fzq4w8%+F#Vmt}tcnHypK2$Ne`=I^_GL%_FNbivY*=*hTHddk1pbv5T$_5hbML~R**>Nw<*;RCL z^NYC##Iyug4CG;acROM`%C4$dQQG*gd=%Ty?mIE)TXLrow#QVg#GV-Ji@_GoSk)?n zNdp;y20JCI({oMN-^4x^9ZYF|v&S^7!Pb>`wTlRO(Bqa-WUik0%eZB%3Ax&{w zP<%Vy#h2Mn;r{$3Y66A^REIjVGlr-t7r53|kB8=vwkO}EqA-^aPCP;P$#LL|W=_ukaU2R%#n90nK?hMfPp}8l z{M?7zI|nu%2EhX2<$PR-=n0My_Sx~5vUyPJllBHB!6fr_d>zWM&iHsXdH-Hw{u>Ky z{^N>wZG3Z*w03(v+4$eQP+=J-cW?zn<7LIWuDO`p-6c<2;9c^;$6XxTPk^0Bzfj^8 zA7WLa;_q}qv}@>z-)u=fm)a6P3pfi4j&#iW(fZmn22i;@NiQtq5S1}8}uI~ z`CQWaSW7G>9B4##OB%zLv^sqyY4!TLRW#Osw@3(tP434@e1|Yrypk2yx)n>U8}|QA zGP$+(YOR+6iaBRPPEEiIlQFS2#+7yz(=Z2KbR@D-|Kel-Jqn% z0@%18*Q}!&R~xz&Kpz1V2;G7K6rzoBR#ne-0TlFaEdX2rc9G6^4*P74$`9g*R2D4H z+ob;;LRLYOADzs1C77;)5Podh|D zHr9edrYA-X33k3;I4uAc7xqWvnP^Lm%yg~I^Z_zWUY_UauT9R>z)YtglPj;~dDHq! zC6g;BiINpLNu z2nEc7B=}y!0DK<-M`H{EK6M}}ahT3m_@Wj9pAiCooBsI%-xXeg0O8rDZa-Rt4yWHIP+tSf^NKjF ziEF-bcMc3Ci}^l_&Mp6OkKmkyA;)$2>&M?53~#=Rzoqzl1AjgYkIu&5o%nkme;?uR zU<~Z=&1{t>rQJ!=(socopt!^qaJGmHtc}J0)KJ_}Iy) z=1+~Z?B)U#VVmxiHr+DgjOWRWw7nyN7ji*??VPFvE(q7SpOw2L6kgT4FnzNg-+s(yof=%WO2 zbg_v^Eei#H)3RO!pry_QPn1~Fe7DrQ_1ms;I*MbTnZ{E}Xa%sB+mpbvUf3aYfy)J$ zZNPLVfg_7lwWFjQ zr$BEoR%NWB{^3~;QmWp-!0Z8Vp#u$3J4$td4c%oeN0;cpXwEEX1ge%x%)3!nqRqCZ zZ4c)V-bc{r0Szn9>tSNOa3H%*8aAP zS0LEJ`_YZF(|Hh7WN?#o18>sJ)nDq}eTyaC74xM2S z+2iL=y*UOg3xPw%G-B8Us!Yk3nT1fmpyKT)d;E)QXeb8^$L*GX4w0Uw5^f{jIKdm zg7q-EK_{+;)`#f;#N`nvbalf8n$M3oT(+cf>;oeo=ns3GxR~Y(Ag;)Xo3C-8IqY@f zTC^;v3;Ue7R*eHE!hR>NUE^vHSK`F^r0ogTAuhnUm@M_13(+z_+w0BQOF62jYCw7; z)SH%r8_c4?2DDp@Knoi}xk$JYzft*(gjcbmXqX8oXBdjb2JtW_KL081>;YuIxf&+g z5-gNZi8=Z(vBg2~Kq{#SpprpU1_(SG9W>_4^J%;vNdfGC*lNw1NY%RW)>Gz@i(H>_9Bso^*=MRX~#Ps_GEK4wLD@ zkJJFonrA}M%lodHTNsMT?L>C4*ZMSF#oUj|&{r*sRy;$e2@oBq1YWZOpE3MBc~Bm? zml{$Q{XO|p7P+?(A*7KpNTa48l!y8ds?$(`hUyV&xk2^jK~?(5q62p6M&eJH2f204PmqzRNvoY|lVC`<{$)(f0ysxiVUim=CtramJ&PYV?} z(Nk<`jrKaxTWPdMqw!%csZ!eduqsB_??ytTVXx*aaR7J~fKQ_XZeF@Gzea|fyzN4! z?LvjQYVJBGxovN?iLTb@290iYqH8p|QKJ_-(Hy}6s5*ymyAxffxmz`NhZC(b4=>i} zPA9rWbGK`BmlJJ8(xK7aPV^$p-Ko(%PV`ER?$YR9CwjUf*sakkooK%;t&ct@y3&@` zhjF4UGgfN!Dks_^+^5llPP7adZ94_slvWGPG>5QY)hf;Hw$wUq4G(Ix+gQt}7NwOc zx4rJMr8U}1*s&PZ(iDmh(Prm`gE91OD?)T6JRQGmaALHbXqb`FHbzF;dJz)|{~5n# zC)5YW5nG7>o?(8wL`vnMLU^38CU{~@V8&%OBlX$*?lN&|;b)vu1t?|S-fYbp!g?67 zx~)$jdMrdnN5kEc*p6Rjy%kT>HigY=n|h{jC!$!ct%#&Y^#YBk?kvOL930RtNmM!} z=s18hWMcxjExI3zQK`+_@TmgHOGvR;BO_PZ$e52P?{86Fj7lTnpF34kTgU`PMZ7 z8f>mWG+2f{EOYH{R@hwrNN}d)YP7lh(cnz%zhbWG=9e~?HxewCTrD=2HySLC1g9{U z$NX#~_5rtHhPGB@pl!hF%nOK@$i*5-<1+sTSqrFkM4A9DVnd(K?J%}=Fst+#E1*a* z_HeaN8j@qtoxQ-#r&Jprt3%RXRt7~QCQK&$0=+elQjNIQw#=42a!y5|@ z20h4ClC?*1KsT{sRob4hZ?fQEd&XXdVlh7+rryD!SF5XJ_!I#ig zX4*3IqRqvQwZNi_W3HZP@ELTSnd?4tug%pJ2|g^y71&%|(cr@vUo+QTptXm{mNoO{ zPPjNjwVwx7_RKpkdN~x|bNOY_x!AwjMi*&E;(K+YdmRna`9<64{E+R&W%_LE(PxaF zEE;atkhmoazAVx-2;w6P|0gV%c7vinZQ*1=a9V_jMw-|I0gg=`JUMjXBhthU2nIFy zjWp2(qnG6aa`a9XxkZn$lcjy6<|UO#q?fXZmm)E09gjyHk7kWDkv`T}tWZfZJ(4YW zPy$qR+Cdf4>6~o(my^=T1EkYW+4RpI-Je`K|KzghT(|(wndKOpz{)*yXJdc@L-thd zUWS`i@lr88S_Nywg&0=_aruo<61l+#SU~T=-SLb(=-1G_Ga0(KL_>GX#+K-yp#{p>wM4F0O0op=M z@oTLm8Yt_USWf$xqdjEy3qz-QtaSx6C4-m@8MqHGXq zD#H`p6mJ=8qf4+umcsOFU^C0iHnrU_9-U2ecU3#bOC`^d%-)E+mv(!sHY# zlmJbO&&^WWGFF8_y3JK?e4G&p#m-HD+ATPNw{fWDk{stPvzYzd$fhM)26V*B6iKq> zEuy);B(q>8UW{1InCW$s)T+^}Sp^e-j<)Hid>fA>4N<*)c4$NcZ-nE$=p^6&6= zj`>Y)`M;hc|KEN+H~8m&I6{7|uSp*#zLZe_J>gOYwkQ^GvWe%wu+305VpiZ0EW#h0 zk<31Do(~qaJp2)~5s%gSU?|@dcG7Z#K6d1}Bv4Ug^O>sH1~MKFB8EknrCLJM^_0ub>=0MJ^~cE03lS;>X~E-Ke<-4D4bi=X7Mao1vsD0=F;R z%yJY3FwI+4Vs^h_a$f(}NGvW`MW;|fU=bmr)1A>a0i)k#kPa$WjIf7MzL+^_U>88a zvIbU3xn3Ka5(&j70~IV@V&DY?%n^NH4;C_nJ)PLNc*S?HfA`E4`$JybwTPUNFg+y- z*q$ZJ*`8s?Z|PEF9g^P0benLsCiH3o(`~{fn$V~TOt%ShHNmF|Ot%STOyH$Te+tx?|L>hayZ6y<}%k zM3Rd}ez)3q@K<6P+sX{u^$u&uBH zyC~piJ1|y^R@`T95?0(!)wq4AYT$anU^m=UwCX;T;jZ|+iYWHiRNxWfv!Egxz&?kd z2a|k}ivK}1P&3_PMFF1h`fRQ+%|=%lq2?H?IZ&vO2VrVbk=*3yXb@?a+bhn(7wQiq5(bLXq+ZTCl_M?G#N^t`1vC4xBDW0*8K5A z16$?7&s_7bYx2q!|B>^c%hTshs$48R8=jQrdT z235unHhrMOJMBz#cwhUO-n$)Org|oYOyHUAq>P_sN>~Ozvj0NP#bfgZ_np3N^vjst$1WVZWbs{Rnebb5NJjj=OWm07;;od)2`77xX5RdcrZEhmV3 z?;Znw7ay3Be@7E|aT@#@d$P5UT?pd2`^R7($7Po9y)^(n|N5c)>syg6epeF2USq-U zzJoLJZyJHWcHL0?TJOr%K3+eS{F^lf``GG$jQD+*z{}F$x9Zo~;&&K9?3F!!GWp&^ zXAfhNk-2y=Ui@`{?7VljC9?qtXv@I8$)yisb|3eTZGmnn3d^i`$WB;X{>%LlNjO8> zgJJ3$z#$CcP(rH?45=@l_1(T26Hcl1O&wi*Kf|GrVd}$FNuGIQS{nLpY#$YU&iVEX z^htdy{*#8juaB-i=X`&L`mnkLe%=XBmCDaYelaTgp60gc%<_}^-r%flYJC->tM8L6 z>f6ifg$Ve1q7yPm5Gsr>x(#?jGd?_bEEFH+y7 z9clC>mcG8Gw-$pZWw^$Gv&Y!3d>00ly=n|W2Hl9qb*611=eFmNf99?vg z*V+FYRR{-^PA|Mxzu9vRR*k zftjJ$)cIQc>)KbRtbw{-!x5HM)c3KrO_ROj1^qHP!~6plhh-4+o} zkdteitS3nWQ=AY2vJRqY&Ua=GEZocygk|6Yxq=OJ6qBZy2F*YJpt|3{ZSIW#)xQuw zjx2dKLN~)`C@{F0?|vt$hS>uI1b`ttP3>dbA>drF!CP=-D1%bGZv(-)P;A2))wrt$ znY`ws6StK&jHtN59hvaM5z;%)!O)N;z=kb=30dkkE)Udw=yv{Kfm}0(s&}`va2DTe zX=!l=2W;U0(@!cIK?Pg7hH{i52T4GIJQujP;T0iV9<$r{@$4n(u`m4^;wWZ%HQ%DeV^e>sDMz?~BQD@|%^r`!t*KQ1 zG27!`|B!_}-T+~#J)U)Z27CPM#ZlX1Gi?O4jJG{*53Ez|@uS~~J$gxyV~<;kl)3+f zK4g7tAK4Wcqdop#r5M$YFad2JV|O@4#T957U1Vqq4s!& z7Jr1rcS2QWOD!Iox~Zo8!3F$rhlA6)W{;2EH%|6=-Hkf3tYd?RPhqBQA2&JLvBx)V z)0u-I?c<;RG-`YNfHpD#_85gYQ|or+9*au*xYRA0VvlLt$3JWFue&ujYw_6B?`z7}T)=0$fY&v9-1FXX zvd4{nnuR@n55m&+@%WoF*yBB;@2{Rt8<_xm`~>1mwZ|9l5_`-eK~DSl!L8K1akfWK zn(^aS6E%M1R0rEf&*;aGkIoUJT62VBkLTZBBkK8HHA zeJs=BH@Y={fax{tkBUuwGbA|u%mw^6O~D{&U9-nu+&xbA_^XY$96!SNu^%i`dt7l- zCVPBr`1VoO1JjQmU!aXlfIXfItW)jr@H@mF>q(GfkEe^2$Jrj&>U_>P^jG&dOmzP{ zFahl~auSid2JL(ftH@xFzY9vyauyYPyxA?9VvlM2tM_T~scy}uYw_6B6E$Ts7w{Yx z@VaJ?g?EmVJzjTr7URbgAS|`VUFT#NKfbeUczcxn1?lbaP};}@*yBGS&QyDR;5M84l%c=+C(OVx%P7`6zG7(^@A=g~K%A-ec>PUckKIUe?eTZlO+fp& zR>zM{e{~Gw#~&UbM)lZ%j#YepQIb6l(_h^{i~gKN#cbZc)+w4|k7@g>lePFA!V2{I$AFrj2 zOhEhiHDH};j~o9??9oqxoc8f6BIR*zAJ?iqI`gYzu*Y}y6W!kvCZO%(jjfJRjWoY{ zkrti8qGFHVc8jLiW7_%Ei?#S4XE`;0MT^I#Zl@_vGerPz;sRdR?D1LZ)p)dzfBi5E zd)&6fvB!@VWU$90A0EDa9L63uu(XVK`}i}6Gu0k1y)z#e}9tW)jr_*SvUMiS)M<3%Fnakj^`+Fy0%bH>nLJ?QJA`#*vSs8zfjc649t zahUm>$9I>aC$p%ukH2+`rr2ZJ`J821dN%RSy$kpR7x21fk2@|LCwtuG z%`Ez>XG2(OkB488p?&=9_TlYunEvXqw2=w0#{q~l)gD(Y5PMvOB-b8aolnghXM0?$ z?V~fFGlun!duE7Hz56xC9_L<>WRJtl=j@|JpJ7q4$DQ4xDfXClK4+#DkGVC!+9Wl{ zrvBY0I7MB+Pio3KxZZJfY@F=z^&_%qAO8lHsXe}UVutqdpgV@Q$6?kVAE%8>fIXfB ztW)iAzlhjl4GD7E$74mxJP%*TD_H`(Q68HIk24Qpo+JS=q*ZfQVU3;|i*n0*j6HND zgt+NFWQtloTZ50!?0Hpr@t%7gWDhGgG84pxcN*9M8r<4~*b8&J6=RxFT2z40W*J$H+ zzFaMgpPfgEGA8KRc{BTF&F3Wpk`FD5j#Iyr>gTMZd>nK5`WIzc|6SKlO#NH^G&}mA zxi-i8rAZr^|Mz8C|Nj={SbvuCf9<;L=%0N}j`e3r|HW3W&UB)CcSDN)y);4cKQ3GT z|2#+fWyn9W{AXUB9sl3@S&sE*$^ZK-T_f@TvRwI}CH=?Um>vBmTRCOzf3np7vY%vE z|CC(yKU?~#esgr?*k~|rM!V?USz3x z>GvB-Z^Xy;3x^lwC*f*Uv|q!P|M?ippFGC$)5lo;rTfN6{}{`kJjU|V$5{TQ-;I&} zF_u4hjOC|~vHVNF9V7i?EPwJC%TFI;`Iqh;BmHA6fASd1Pak9Xm+%EBcIQX!|HfGU z3DvLJT6ASdpHMCjaL0tWPwj^UvC|H^D;7;}>d-LtKDFbDktyCjLm6e{ zneBZ&Z#<3VRt#X1?(6yE3Hu|GaFXup`TzQS@mM%QCp9Iy?wyCc`r>i2$Jf7~#d(h<(;R!e zKBCJdXi<~z)A_%JqqfJ#X(QU~$z0cX-KTRB1f6P+`_+p*7LcHry-(*@k@EVy9?6-V zG2Y+t<*B0kr@{nuf50ElOtMFrJW79`&Mi}<=xi1hd%VUinqrS>_Xpgn#XsHLsrgtf z9-I12P5Fc=0(h1ScwK8B*HEvZ!(%@0vC)6BXdm|iM_8NJ9KL0S_VJ#UQQPA_mKLY8 zJ6`tqG{l)|kGG#E_SgXJbM5i*GuHR^kt;o8w8x)pB1ZM>W{y=H`0XTnl*Od<_PC`M zy^BS~Y$mxyQ|vMA{_?G~`1x+lkDq4S$A=08r*mDvcWBBw*gk&e{Bg3!t<0(HJwLNZWX&LYK@z)S%sy+VrOtHu6jS}qf zmbqWFk5ez0B=-25$&OX*a8i;z4%0q1x1srh!uWR;rRP8v~H6r54BikDBra7x2g5a&TJL?D4U0kCQ!aeRdY@<9lmn+xBtAr5W1C zgMKh-d;EYlG6D7&g*a2~@vKwC9!p4&GoRBeQeL0!aUA-qM}8vqc=e~VtyO$_tfTuQ zoxghFzf$x(7M1pKsarI~9@F+$|E$Ho?$+F_#c}_mrhLr>e6|aCU9-nMPaP+F-1pTi z+Q-xW=h)+=`5D^B%`Y6aJ)TY*nE-qI1maA!#}`i&d+dPrx%T+MG1R>E*&exbY>eZ_ zM?VsyTJy1EkLOn=*`sVuOFw=*RExgEqGFGGyG2v%G3|MeGA(|iTk{7;NzJ(bakb#| zGZ*mRG-Vx}&-ukk<7AK5ZKn<1u|UqQeL0!aU9ymJw6oO{|-z*dyOxbC)wjL^Eto!K#G>LsMzDpZqXEb zOxr%*r^TnbHJ`4vn>EzXMF1i8J_p-vou_E#hKtU;)Q|+9dbLHDZ0q$P9q~BB4(u1>U zBJJHp+B|lLnB9^UDK2%S?}qff&2#T3lHf=mhxqnx2~Bczi};sCdQe-*oF)BUsFqYc zn*u?kpKxch-kGc~P8Omm_yE&qGQG^)`$i&pq%KmxTFYu9A%3S6)>+id7rlY_? zT_iwwWi2?E2(tGC*(vsgSRZ2j=EHv`f&vr#Et%{Kiil)$%!}H`_mXHxOMdk8sU=DB za`OLp%^L8*hupg(GY#GcR1@+NVc=`?Uy)<}En0Ge|NfP^C8d1-^+|p%58U&!nE0hM z`6G8E=D#YB{s?|4WB%`TCg!h==Fz>1Bi16e<U+Bpz zoIz}bL?}oJ=oD8j2&Ach#$Ac!aViO=hvUzzhZ6IT%%3}MP0U{#4Na~E0W;$j6+VDq zXvx34p-p;3CYTTf)9XQ4@;=V1hto~vf2(o?r=Qr-uJ)6n4)f<7qpV7#Cd zRcwrb)L1CWm7bq3$w<$VHxlT13jw9)p?y;6X?Q$?e2!YS*5&ie(v0-H_j&?7(_MPr z+&h(?#Y-pAY40i0x$3y$JykYMP zd&K8J&+eJ!bM(Ix5LiU#}$4 zGsUIn?|Y=u)ADFq`}uC@bFiPc9?MA2v_yJlBcSrxbO=3NkEEsNmxqr7JymdUdDylS zirpoRcW6bJUv&O#4bkomMS`87NJV!j@>D2N)fI|_YmgYNEGmlzrW-GEg`!p6p;(No zo2DIohXJ_Us!qgoGv=l%BqmmYJB!+wr#u#xgz&cVUE^3qPbgO9Hya)HDNDv;26+(E zQ`%L>^55Hee<#+wa>%DZsj3|~b+DFTdnj7b5sJik#SAd3<|7)GP`JCWtsA%ET)fdh z-asKgFcj=UCxV2|#pi}?kyxD+X_JzXHhz`a+;!Mwd~kW-s=^)T0|5d)uGmwBUZpn_ zyR(rI(TZ;KtusDd(~AC;cW!(nrk&Wa@U!=S$^5Kbk;>1X{3ruI=WUn7&nwH)^K-^d zaenSyx;FSZyDS@iZgl!Y@UxL~o(cMyw>*`fdt}njGmDb=dEKGu`T4gUenDdf{rtbilKFYh4>RyHyk!zUYXj-^bJh-Ve!en$t>|Y~_P+J06T#0`E;l6Dy9a&O zWPa}PgADwfm#m-5Gw`#2`#3+J-+yiJ^QF>k^mF;#iQs2obuvG@yHojjQzm|%S(v1s z_rsPUi6QO#4co=}`O2)d!O!x8vf<|?Cr<=FSACew&wBI?llAkx_}`1$)}e(rKWdVb!qb)26|zp*y- z^SlGH;pdgrnfQsGe+g$teP(Cu0Kg4*G#`1C7ANZ)&e^qZM} zT;}?hzBYXN^CP6cl0F^xmtfSx`QtLwE^94yc&TU1#pZG#6^bk>mXQ%+8aUzBz=3Qf zcP%*4)trXIjB_Oy0wN3KL&uohJr00MP#7-oC@BE`wd5c@+ z4ZDn07w zUOdtKee)@)@>N)lR{6KD45z=%Z~5&00B>oR501l}QHVwq?#PQ4$d@|*g!U*k|I8fo zPtGy_pEu79pIdXxe{qia%W}-WRgU>zo0=QF_YIey^M&1zYJC1RSfZ1!6`1L)=vW@y zFAsnDq39uA%zXA1dL|WmzUe8PQPEvEBiK178ep`y6x#ss7h(ebf*eDv3`O2FcL5mt z#1-v?gsIie@>p=C`OH3ZTTj}xt{fza5|Ic7fI*tDPewXzG|JmvBpSSCJg8#{wb4|nlzZ9=0_@DQ2TKsR@ zc|E~@N_zbNv%cW}Fy=(l=udd3^@RV^F-M*T|8e6#`b#pV^|RqCF^@FnW66(wD+H4_ z73)@ieix7(W>L0(Utg z;P6Y+&8O$;mwAK-0H1oDIp;^f%kp9m;T44Q zMZR9rXSt5*pkNj*q60)AM3gI;OU^&k%$e1z6Bm;PwkBAwDum2lUFCl~OV8Y$ptiYhqx*MrP*1cS&3Zk5DM%&3M5 zbp{{Y!8C^$5c!ANK)M{im|xtE;$&inJm(j8+He=2ai(@N2qwrApg@F$0)EPz)Pmwh z=79iOe!2}^slo5*Y!_x+3f8-2d(=rm1q8}?0p<%vCi}!|>7~Gry_Or%z zs=decQTzr}v6mF%DWd8j4$u?1oc=E_$fs{@&>CbU9j4rnO1NNo{XrH42x3ve*Z6I#Jk0b2(oi4b<} zSPqAESI>5ovE?MT`^>)<1qSl^pRnbi#*3`$kSkLi{~^L%R9qx9E-3c$**utcsaKH` z;j22hs9;-A-hj9hLB0S*_>UFH&M6?zxKP9`!DQevn~g-wI)vt>IJtp8u%r*krClZX zHH$x;1*U40X@5PB`&f_a-wIWxE65#6w&1C@pln(?OA8)}Il3cZFFUcr1o1qyA*z6m zumZ{V?ne1}{b5ETro&c}0CZCelu73KPe_wAanxUEfKRAgRP5(dWEmABX8#5j(MN!= z5W^>!BVjN{!pY3(@1w(a)L{?>_>YBFN#O;>j7#O{lbnOhKwlrqn}a{gi_=#`2;e?b zEYo)TpK_Z?=KcS&hIk`7zqrKG7f7TJf~Q@9zDhx9L2)&oKvlw^Pr@nmaRZ%8UmXhY z9}98+TnL32H-tWTDELdb8|eht{#S`MvoZ8N%qbYn5^QD2TEW)p>1q(RJKnaz?zQc( zuyIsge8#qUS;OOu${!dAL1btZq`zmayWYHUC6RGifeJvibZi9?c+&n0q04lj@DJL0 zVnd*9Jb+o9nfWqS^YG>k#n85y-){zp44O~g+CbU_mO`75vHahY$_J-9<-e9v-uBmU zJgR^^EssvtV^QT1w6-`iu%gt%c({J)$2tAGZ1ZzItA_HA?}uCoQ9+z*$}t^>DY;Jk zb%i2rJ%}!kgnRK=9$tZ8`^d-CTen#R+oKrs6p9ICU^pscx~6$0A5?= z6$zLf^i+BaJ=Olg88=b3tY_`<~!btEvR^=(} zs%PYBgD_;>(@9}*PbW62t_XN|WNzT!wRJxZb1721F4|F49 z?SND03sx5TDiEE>8CwYte91(wY_X-(Q6dzJHOixnA+vf4n07vxl15^JsSBh6A_`)6 zuEX@8-+XUNs@eLKJ*q?+;%?IpQ3T< zQSXNK*D8>AH5G^jnv+ieqyEL9huve8lZLN{6$J<(#GgvGarF7bh<0NZe`f=6pVcf- zqi$c^EHa8NA!7qGe&-!-d9dEqZ@NqMn`3n>QU^a#xQLsU=TTYwR2Fg27`CwNMe{&0 z%7QD>9$^%NXgc9mJO{RA?vQ!;@XutrglJ;Kh?K|K{gXDtN4F1#@hc}!9E@Q;YOQy? z)9=7Fr!7H&1`^pSOh)~DBD~m!TWq-9h9w`;14Jll^C29vVabPZr436yguON_`4INm zu;fG7&oFpb!e`9(;LxJ8oH@M^TDk>k2*L1+X!!k;+2JA|*zQwlO1m2HYxe$dR^GtB z*nACV-`HH3M`ILFpO62OJpReeHH6XMU zk)0^ggS^<3-iwFn*_`jeF3Hzr?zo6SXCr&LY-F$MK#Q^xnbD&3v1qIU9Ix)_Cn2UV(W*fJ^WaIKu*s?dJiU0rbgM#m7U2o+g1AT(ntsGZs-O#qi&XjX ztj4nhjamTkeAdqW*3J=6J4ae1pq>X)?b4s>#xI;_19Z=A!tBh z4ajOoDZFC#A}sbC4Pp?g&MQ*Y5Q?@j1Gv!0N3@N35Ngp-r-oG1!lH=HOVF9FYOsr< zN4+mCLXRCftQKkI&zlMydtnLnKz#1w1MjsC@kej~-h^HJ!}x!Y)t#ar@c+Sg(ksZT z=Vq@UE2fZES3!y{WH2iQdB>bIYrR&G+Gy1~BPvL3L=KO*IwI;~6{ImqK}205VbPOh z1=(X&RthqbexN@Idy#H2Cj*hqP+z2x9?%}%{ zr%WWx*Otys6ETr39!KaZ5)`yynj#_AFi|og0KZ{#AW$EQ$@B{*3Yb>|GUvf2?x%aQ z)pVxWbTXj}`SSL9GSvLAG*Wq?!m=e8*5}XLi|vtU1IAwBHqfrr2nLH}3}(*#j-mrk zht_`JU^X<;z`XwqmU583EJB&ak&K$X|t(9d70ktF9Jh%yo z&@nz?G19`ifv_B6r9F3ug`%)()s_Ib&Ati>_r(jJEQqj+gj^6-DA501J4%zLPJV2E zW*wI2H}@D8%{)c|t)(c|JKX26--EVMu*gd9r;HeRjvE!2%9W z(0;e$4|_${00`QS7)CYdBIUWJad~IlEcQdQ*p4Q=3q`P{1jB?G!EO|V$3iEDO=cvx z3Zsy2#Pu_f7_4xd=(+EK^z=*_1w91`^f>c3URqo|Ez=u{df4gqnY={wFDv%PIbjGnF&z^l!x_k*Af(SS5OKG34PyJn9gkTCv4g-V~Ysp9b%hOJV9uQc}V;+ z*@e8|PXV9c4z4l73z&oXWAH{-TlwaLqlU?XJ#PpLrK*miF+ch@Ds+^TIvIFbX^cZ-gMJ>^9(T0&D6!YM6b)=BTqGHC_#_XBb)sY4g z8%8c%5+MvjrQ^e~tLWnkix|XLTPRmrDBuXOk80cJWnFB)ZLS*01zjPJDEz>{ zLQ(qhqkreKGSELG6aD|rh5mgq(Ql!QK)>WlPrr7!;?@q+{K!n;R2& zrW~3jOT$#OKzZb;IgxI@dd(vCVnt=dBzVyu5*_U29Jqh%t#;pDb-c;lhVpqQtN<(2mS?24qF#>S2b~PSW zu3eTzlG8N&h}pI0?#yaj4-h*41jUa}A@vAk?MTxz_1bU;p9s_aFu&wOxX*?qAHv3l zB_G18Y*_M1lVS5nt6|eQ<)JH({d340pi0+6dIqJuvw%Clm`ys<6`%RV1vV`CkYA>- zkS_TUF0tv758(jA;1Bbeb{Y3O9yifpE-3ae!?S*^jR7)_6NQ(MYxAvlpKs^f=8Fp_ z!j;U5boyY1t8F-B!!iFzWPepuV?yt$5Y~1$}-0bJo`$>tE5kk`9yj*J`IfP@|K7>=>X~2(Uj; zZLUPSs{Mfg8yRU0;SMr%4&WYI=Dh>bSvG>FprAYJky ze=E~bGxM28&mj7B-zcX0v7X(oe%Mr1~ zd?GAG5pK6(ZE(SK8Dx` z2*K9BX;}}7Jx<~Z1ejf#8}twkyXQcck|6pe%z>~-4&i_ei{uav*|0!DcqPjrzlZS% z_t|if4I3L4xJU=?l3(B=JZQrL7vVgX1Eqvp+U3Wu*?#4$y#BqCr%chm=#d&^bdjz8 zU-#Bn^uOQ|MSZ;WKhU+d_5V+H%$!mGEA~=SMTyrn{jY%($3y>HaQVr4q5pqLtN&_w zvUeGM^U?y_FXx_7j_Tkt{Pg-E)B2{P^=K;Cn}_c}r`%a1q7Okpv>JsPO#7MOOIq)U z&8FtUJ(6Z4>*5nr7Z7j_VYP};v+Y4(u?@go*@gh_LUJJ7Er}yH7#+;#G#I}a06_)t zYh;1!IF)3eEUv7Rc@e<4#}0E52=spfhv*Jc;6JkFUyaF)fAwb!$G`W#{<-sS$NsVN z&z)bo`4OEz@=9A8igI89J@8_#Q)Zf!<(LnJGRRC)ji{#i??WhujG~iJV9`k#S&Bkh z6%LvAZ%E{368wZY8Ni21_fYIU8RnS%A5{3db!ce%Lk}dS$M-YY@hZm1Gzsn=Qe}0g zut1`nm4dlco2FBNAkeRNhWb8s5u{1N91MqBpj^991V-&N6}v(LN0XR%2HFWTwBsoa zzB%0Iyv=P>CMa#nHdKM2%o>Aj{b$Oi8uBi6Z-oEDZqi?5Ea;NXWtmr$w*rD(I&ryD-os>I$6RIROEH*}2-HbpB7Bmc2=&bGHrZ;e78ufImltyOtk z1oo^|dAu^0G>%dpe~Aqzj|c1_?s1dHVXv%pc^nJ&tW|mZR+`^Y%Hy_S<#D^c6ky!s z@z=F4k7lrEt;*y56USg5XGVv!kNw8mKEAc~<#8?8vsUFX>4Y)JV;lD?9Z2UkjT^Rh}@s^p$VD%=qO;``&y zsay@XNt@&P%+I!rZ;nHgI}ARj?U{nlDxjNy&%gE?4}5;TMYi}%OU0)q8K39I1)qOp zjn7Vdr0}Ov?qYJ~)wJ(;@aO4dd^jIqa0n;yoKKzfz?{xj(o93bOolt3QDQE&7X_fZ z%I;W0ZspPWL`T@%jGN-M>kS}2bNc){F;z z9Vzs+6LMUBMOJ8}tAeyey7iarg1Q2aBwrA;C^@uTTfkl~srtM3z zg1@!$+c;T%D^1VF$@0sYzUy&GI}mZ`Tm0K3`X0PzMEb5gXhiy6C>b?Ei8ea`}!imS21~88rI(tH)U0jIsPmT(X!0 z{@^RSKG8V^=FvN~q>o%4au$^>0^5^#{)2MNe@c$|_sB8-J$K}W|DUqX?=zF6RghNG zsz%DxzciQ*e{#+5H&;xi&5`ZoeQmUb{Y-Q6g?g6P%h)s(I`#R@&1uU|&$|2}IGmAG zKl`QTrSE22e|r3Xo^|sYX-Dt^3ge>~Aj!MW*2HG2Vw3ove3Rz|$6SGd2D}-`2JK3I6Dw z+j6u2ALf|uWGCCB_f%rXCGx8z3emve-F)5!3h`(xMy zq8)@Xp=-hG7D9V<<8Gg6GK+6+v(DcqSL$zfv0Rzmj>khdm6B(E)icZP7WdI|D(S58 zBmPv@0qV`^cj?xAIC35%im@w$tk}oQte78f1RyS=;ldJ0etizIl<*(~F1F^Vbz4(sS*vM@P@Ed1QdY zNYa`}&ozG?3q5v(s`PySLZK(mrDvm&>A8qAJP=5(@;Ts%4D{^G8-zwHpAD1fx%0b1 zj~`^IeD+;FqI_=Q4AUs+`Ny9!&~wd;W1uI@PqhIXmCxVng`OIarS#N3F(N%*86`a@ zJ(q!=SN<{vdgdk3v#HY4iigs3-Lets*`Nc}k48S3=y`rD_VX94AjIXf|93<_-FPTH z%O4++o_%f~9X*>pl|epBhtoHE9}X8-;pAl8Si`tFT3j6|!DSxU<25I`NhrDnF1pJ% z*Sx1B!r9u3E-{SEtBp3+q2t8Q0q@b^WpD>neZKfzYl$TO!&t4^Lgo* zeDoCly}C;yOHAIO=*Yp#Bo6y^yx*fOM@s(IKyLZ{Ip%LaBsch#rMczL760xW@vq4- z|Ee7G2RJJ{R9@9=qI|YT?hGz;Sn=80Y9knRU=)yiAQ*jP3_{GWEl|BbfaC9B;N4?= z#4zyA<d!TQgPmWfmidLs0@Gy&Qvk$$)Fd+$ zS%Q_-^JEGGgD}i~$?U}`r>boQ*zBUYwu2^c3ha7lvpfvFqP5O45Uc^Sm@+qK`CZ2f z>e*UL0;y=Q^BCGX%Y4QV{EQtOrQp|$3%)p_a;D~%oH8PEr<|E9au~lY23hn1KKcV^ zP%1s0#G8*(x3xlYA+x!BA(gC>4e@KX$M71Q^O>(+uLEtb6+Lbko@N5?5<7f5k8G+N zC^XL|MaV#voUWr{Vi-Gh#hJ77%zyJxN+gl=;W*3CvEhFZHBUq>`2S`b2mg7C)8OCw zb_)J`CPfUze`Dgm|M2*)d-GdG6Fff$XF(NtkxqptX3 zGC!`BEq*dz;o=8ZX(kPi+(q9ea(c&L9I5fb=S#`_B0d++5pHy6VAco2Fe|=ergfb7 z^`)WwdOkEPeuthmk^BntB5&Na#T9Gl7x{I_@c29~@=LE=oMIQs^58$=J^q<*ZkO3A zXFq^Q_l(1Yd!1^6<+x)O?xROGwcr{ymNfaw!FFWnpkCk-H|~3BTE_aZjjV9TvSj~Z z_cQ!6#f3OsEqQW33d`q&|Bq#M%EjM$zvqG@l5jzdWXVKA`u#K$jz6vIwXzYBZyFx? zwaEYd*8IHZ2Lo_koQN}f1D!k$%^W5{&(RC!y32t1-t6 zkKeW5nn-zuWr``GKUZUx9ylz&HW)2Fqp;T(6+63s68^cy6f1Va+3S*tvDZ=H|9~uQ zxa~FZKVx>Hx~1>$O$`27`SaUk;xa)W3d}19466^fOsK#4(olSk86KY(j!R_l82rsB zo#P2@U;ZtVDM|8vf7Y<_{@rNpKP&wUr{Ys%_8uOe z=Bh*nuU&axDpN}d@-8s<$zdO7IG$GCrAL2$@@^X#(*8Uz$8R!r*1qyN+SA5=PU^2U zE#aXCQ>q9L*982qa#$9p^oJ&FynN{kDfsiyiMdzK7Y(Z-H%$QkS=nFP^GW()IsWW7 zhII*@s?ce>P~$wm`Jd;~;kW1T_%#YQCuIE7mWq!^_}Q7m@~iPkCQk@H8>YqQ;NkJ< zJ3`PMll(B9#ES*EUKZdwMkNRA@+n{0cUfuv@E1x>mKbGkrCresC9XKy{g%z$1>A_K z`zP%k!T35T*W9S9!nvx-v%gHTgmta={gA11To}I3y!b;nUl{g!qg|fq!lcX!(2Gk zho?cf2$>4ZN#`Jge2Ix`Fi7gw6Jz`|T@bttdYwBzHp87CP0NT3zfOnhqe#cxD*h_X zR<9AK1n1m=`B<#i;JjR{!f(FemD5&yJqK4d;(o>}GW5?NLT}3VqqsF8}h@pblr)A~?gwlW$WbB7TZb4#;&Q|0-ky`@l+j zW2TbJx`o`8NE<|+cKrFxS6>x!NjnbEp}W!!ayz6K73nvJ?HW*UhNE}I4i3FjaUUUsn;X4-$@0xfzb~sBLBD@+*0|{RpZkW@ z?NosTHT}MqKOuAXQ>;ezPRNEDzHv{>Ufq$Urtw(P%DmWJ;5SQP z2YP5fVTB?E-pfx91J9ofZz0xzhQf>Q{{)KmoMM1)A+}kS=7?vt20ziRCVGC^xWFwI zzQpzf7a-!4F*l5TIGmaS>}BEjI0Es3*aEC z>1&^C0C`Urf z0xsEpppHlwWOtCyc7mLHiSA1h{Q+9i3&mFOXuf`LFW>MyJwa8PdoR+wCFaLH+Ew(4 znsIlPoQCmH6R~w`>Zt+jQ@Z9K`k`vFBT0XYCU`&4|8MZUR5lMq0m`S~=;Lw8M<2a$ z?u)+Xl%M@i?__9<+y4wNh9k3Gus-QmvGWuS_lkdGA4xv4jBkxn)5`S=%=mOG^q=D8iMZNmf%*40IP%aLCiV`)GO}nM+^p~#g^h!u*ro*d=+>>QEyF>I(&p}be1A00 zeEbqE2)*I$P~mi~@Efeq%L;$M3a?Hm-GiQ=v4o+b0F`Oq8t04V{6_YSaHGZoPMCK}BLn_W#)q;#!nm=9 z(KF;@=J=j=Ktf@^Bv&?7<$Rp;L zN7$?71T?s< zdNs7lQY(>K+^4{N7W9pM%B5a;#Jc67-;?)+1@w%tSD^^#8DWox1oVt>o`yQ*p~Zb| z0?cPY-?$3e2rl)>Bi1XAa5o=51wAcLgI9q&4I1K8pwpluKATTV`4omvAx?v`Ov6|0 zr{U}N)2Js6s+Em=@Ep=rI@K&Y^2B_)pq;S#aEWAW3+SU#A2s@@<|EoBk4RfcL-L5g zbA{_9SGXPzbB;`S@b(%VTIsL~L#*C8%}e+#_d2L!oCpGu+R(d~Y zKcLP}im$NG;jpv6#+yaSstmVM7Vl+@L=p(ItYIUesf4 zCHl2s4V{{2uVkkdtiv~1v+-y@emTLTeN(GComF|EF6NE}sH!c|qro2r-yt0k4Yd?* zF}#O;?rop@+UHDpM#K7yh+(6=eX3tW7C>sn!`vnF1Zn*mc;PGRU&iFkZlbp;#@>=a+tPA%f6 zpOsV5ZKs+e=6xXDrG3a0VEe|cn%2mEoaMv?{|?Zp@QLy`4~KWIvN?I&B% zw0O#K1y*@9&z0VPf(%B0pKJch)8JFh?g^Bl$M#D&Z!a_Wa21v2Yro@= zM&^aF=0n=iBe4^{Ax`}U*g-+Z<`_@nJtEFDJMbSK{t=xLfTdbaso z=y{I|XO8)dt9&-@_&oIO-U*}U(%U}|dUoQOs|k_MS)U6%_wtNZuJmxdMP|k0>&u+* zch+0n_2r~R<>kXHBb#%C_~0NnGs^nZU~121rKsy zg~`}Okd@pAh;fw1R%AAc$xOP!1DqgST~&d3O!hv-H`n0}2hmZu4-2)cDg=P6blbJs zdb?CxV^?Y`u~5r(S}xPtRoVbnX|c*$;l-MRr#x2SF}neR(qgWbr7^v-Ur6f&8a=gG zCWs#GF{MvZi}kEKcV)_oJ06{+xoH`>obLYq%9a67mwZb!4NiFFqCh)Zx(SB zkV(*JtR-H!y}YjqMJqj_SgZ#{&G(Ni$?JasZ?#dZeX0py6G9@~A-oKF%nJ!Ogm8Z{ zKV>0{@d;BDSivnZ4`Dr7q&NsHN*o)F2GP$`4UPswjuuD5?LY)XqKj$O8*GoNibt>> zx*}MK4B%E(WoZ{*&6Ow30(q!iw(o{2@uW3yU7!1UY3D*GHmZ~$4hwO;1Q3m_g`A(L+r4^!yCkgIxyo-os}K&ehGHpsM?Ec_Y&zN%ij8O3fh{yM*; z817~^xdI~`A{H?zXx_PBRGGTn+uy=GZdMw2K(qQ$v3cR|lC=|AvHS>UmaqXk#-77ci^tabU|-c$3^H({OI;ti5O^Chkdl1+p= z>c$6FJXdedK=Vjb0eo7q><5bv*dR-)rui2Zza2vki?TvP1v6Quhf3($c6c#`s`dhX zmMo5`YZlvPMa86$Q*3ZWxEZZ5@kMrv0BYd{eu{w>mNEF%+5cE7`MD7t$)z*E@n;46*o|LcKWo$yn2Z4 zru8wdP6x=Cwdb^nmp}C(8>(UJIs;qnIqI%7pA>;+nJPuO0IxUn>I5uO1E!)^_wc*d zM8@miJGuTtM_GS#yW#3TKec}LUpzF0xPPQ;uw6!jF5_x!phDB{G=U(l0*3>tF2H`O zdNgJY%Y&z4FV!jdI~Dt>PRTc${EUnYO1Fh2*>#Z)elN_Wkt!i)oT@zLI}eGyz-I;f z(C(olxf+Int^huT1qG2FKA@Z9FSGqVLIadw5waDTRvjO7BSMZw>D6?|V$k#rO7|Xk z#XCRfw+FrGvwO{9-%A3h=mh{YV9s43ICTQ3w$pit?gUC*4oY*7-F)~%2ZEWE(61MI zdr_jJwlva>-rpp4{kiu@c~BJs+)AWlY96Pu9>sAIID@8T6hWr%ubpD||D5XV|1oCk z2Zrm9ig$|3b7g`&wXG9*iqzSqkHk7fDAJXJ3+|RsxCf8r;osmFk9+jN5E?*+^35-= zA4bl-$O2M5Ak|}Dyf;zKa6qdNoh)Xp$Q<}1hpkDHzHVemD~j5dik7Jd#ilUbbt`6? z~RB<-jQ zjUfFkwj(oS=0nLuQz%@y9Bn?L$>Y@Vi%LiRrO3nj0`$9ek7xxX8`eFf!6I~*4BLZmT+88n??5WBv z9wNC5CE#@?$0JH51f9s^NQ{j#Q;9~9FABx@C2p+Chi&A?R8*}ZwwbRL3YPKaDD?Fgd_)1!0Zum5M(KYUc?Q`HwhICyfoY*$|QK^Pa zp1X!k%wgEHOc-`6LasxpYJgQYN{llwYDdW2`VYm!PQB| zGt{bs4ap|m$UJJ&-K<|rnPs;nnDn*G6Ajy}G-+BYveJo|8_>ytigW=A=KE4ix`=f@ zAdXT^+RDV5bXs{N9%_l(CLzH#{RFtne?UDaK@x3Ksw&s2+JIc8;3&NwJGt@SP?BLX zgH7p^l(=Dj3kHz9U)!;#)vCX0kD}48J=WZvojp=4run*z_UPY?%)P5v_`M?Bv8mc4 zl&cSaXtTo&h*}=L6u)>}!iQcw5EifInFJN+C2@tG(i*%|+4znQk&K}E9>6=jC*Je% zH;0Fnj`rf`1ay~f^dbem(j$+Udd~1FVQ9>!d}RgYPysy5CA>fi2dkKZd9_V2*8Dq= zlBqSi6E+Ocns#7{Y<`Ie*8w;}B^s*NP(VWs8j>vbWJ^>IG670J+P|=5!JLM+Ltc5b zmEd6pPa$BAF~Sm!lU)kV$4oc~p&`G97BjR$&P)Mi+Djv1?0B~4FwvNm=mCKDE$ztA ze>clT!Dy=N z%l1&hh%O{by|<`CbSONw+qZz^?WVw7b_xe`VN?!WrNDj*ByRZr1STzzxB+~TDJiAM zn6-&?7maKfB?!JO;}PNu)L z2MyV)+N#rTOU90SR(LT_Ng8-kNy931#Pqk75*Du+ox6qFE+~CJ=YY>rUW#j zP}XN;wikE;Y>g7L&Bbq8hkq#4Y8&UTpKXm*BjPYwWu(pSp`K8;9v`U{NL*D7fgDX! z5-6`gDrnB2eBs|;NDuKQP*Qf{YRG`T8FBQPNgWNJJ4+RBcbhGrANCZ5@KFyhkgJZ& z;kjMvZ02(*!@~Ta;v+#WA=mUP?R>Kdt09AY3nzF?4)X23;J!9F&<{udL_avySEjm}ri{Fcovm`;*0T9y$%H;5)aj=sOG z(wcI6s!5Gep}(oI>?vr8B(`$eHJAMd!p5@i;1}oZa*7I^&staDe3g_l2CEoG4X3nu z#2{}ACDOozgbQ?=O}}^UQor959Ib4OD}7vir5r+fEhMY%5?`PDq*d^l?U8du-tS2e z6pync2)+AE+4(6}TD@0+K93l__I!a-GuS*WZD=ZJj#%al@!>FK&gWCo@A<)sh~K6xVvkB@ zX^8lcewn^ox$I+5!O<%Cx)N%5l1q1cGofU-6Sl4Q=bvKeF`-g zz+gfpyfGh@t$amgI|!cEN z-Gef%fnNrcp0mI>v_@T~zrB90&P*sKKPX6Wk zEGm|c&TR6yW;uEHxz1!1FP)iGYy86*)|BAEjYheAm*?sBJX7i%U117Xr0O$0%LMG9 z1hk9r)n{an$9sZ8kv-;OHf{XYZ%4t4Ht+dH?Pv##P-UpC`49*-j03e5NJTa6549CY zT)pr^BbqZPUpVP`m;zrnQe}P0B-^Vz5ndv%LTVFck<=!JG6raU%2)l4|bw<|k}qkq8DXKaD%ESDw8We0Tn734BjE;P{?%*#dm8 z_>`mScvajemG_+`o5~^K-2e%h4_B&kA`m+GCO@=_N)c;or~`qmZIy%Cc~x$ zGV!G(lPb(d)|dAC_ z|BF|I|JuFMe@Xnm_6KkBdkO!yzHbTo`y&};I-Xb-;1xAN1@~Pab=3i>!kht*=8xU@ zzowyAjI}Gf2S?)_7LZ37H5Ql~9QW;UIJUeysev}Bn8}*L8Ov(4f^)Mw@?oyXR~-(O z@sMkuB5TmZt1SWt%n3ql@nc=CKq=d?N;D9Pu);x~J+g`{wttZO8ZhD`__!`qAZ=VY z81c`PY(V=YV(uOcg|Y|3oYrnunLDxlXIUWX45vTtevEW6cP1!fB$HzuSX-*vnThEp zeYoN&HiVGvBQjOmK6A&P^`-fKtGC-fMu|ATI2wkx#rehhMdtg9`7tesF169U-aenS zJ!$*gJ}<9YzKY+XpSG`YU7vLAW- zZ%fKZk1pQzS-jSxn9a&d4P||?Iwm!>S|5Hx(gC<5UPKr$QKUFymq&&Z4^UybdfOJ(SxSZ zn9`E$w6nOn7dLJ(O=sj=+rlTVUF8~qz7RynW7|V=g9Y>fkZeMx z-+V0o%NPD&%i`_C`mP#K?dJkr_Q+E+j)}+nbER1rdkKv1l4St%p))jm*3ozHr@;X!Wg zD6H8@{^0rLfYC9+=(?K?qXPNax&uZ9^3ja87knf<_u?`}v`{WR98S7gC8oEFuDWun zb$C5@Z~E*O`m`6oa{hg(F#5gSoL+uhVjlm#|CMEoBL9Bu zV=Lm{OOM|R|323f99aHcKd>DCy6P&~Z#5{i<@IktlJ1%;-0}J)_}BH+JpHQ{lm4~K z;-yZ%U;{7luW6B-&t|`?vl=zf+PpruldXtnug_&~C8M3P`GK`;y3D_O6qB<>Zj;qh zzgoSh{%!9@z4V}hx=}?v;iQ%EtapAWxn4uSj6js!<8FsZ65m;tZQuK{GLy_<+djj% zxbI9pI)VY5@ZUy_6|k*3f^CkG95DLi3>f``W3-go{YV8yk!_D3u3+0bX;l{J&xS(V zQQE`n(>Z$cG&dS$hgD2}nx_%$;0K?be2#c%7oVeiuFtKeYf{ooj)SiKgWLTx!KacE zN*VD?$9eVWXz^a9j^020d@K93WZP6)zHZ=1Ki?z%enj^@;_odb{anf4S6{Rwe;?{w ze!e6JR5Z7_}|m<->3xj`8r8GEG(8gUCwgZRNoljr=D9A=+#t-~2^zL5zB zw2n-^eJZY&Z+e`%y!iUB)&)=!+HcDH{G2PY8p}WccoD7@GZRvGd$@ma`c@L4kh}gGYg2DKAGL|Cs&8Z zEJoH3a)bx6lE!HIgqJN%Q;l_6Qwyo72?eN`1ds5vhUKVP6H_HfwUC-?fPY@fP~mhA z&{)u(Zx8RLBIPICjd&fe7V+loFD%VBh;^R3WjXr!3T(-~7^U^fBxF#aWpP_%EsSM9 zP9!aTwVd#nOT?xYJ?TTSar(XO#F1eSoU$j}xl!cY0k<$R(SczBs164|Ph6>-JBgZH zmz(fWlr003xtq-0;WC?gW0b@TE*hn0AonglkPB{KLU)JXM1dH%dmajZoJZdK@3Yq>vOP@QhhtFywJFyR08r$j`=0l`KuOK9~3EqrFhh zy!d<^63`Q#wz-tPG_zK=FGTpVelSBQ@;5vr{>Fh_Ig2so2j|1sE1he#vz7F<{a#N!@MIY zGj3u|kvka7*~qs@fyO(nLYUEqt$xOXJskk=XvrV^;-An5U%1Pxf(ZaHHGq|9Qv#$= z#zOc3yFUzWf*tc9G+e5jP^}A>NJo|)Dk5lvtZ02r?nHCZ&#NrxQ##?W`l#QU9y3P^ zLfpzer8A~_AgL;}AQ~ghxFu>qZwhf51XXX+3#Jft-uyuE(&`#2Wdxm*kfdh^z`nSx3w$$@oR0J(g8Wb@&Fm&>@-FFp-T{qCVS6!i9V^*EX?+f}7O13}}iPX%T+1 zhAZnY={loC4kF6J)LhjN}cP6*BK?=2nB}OThOn!^`!-IFF!th>zaI?UF5Cl}Ul4=o%GGlBwuVM1P3>x`^5~bGKUh5Posz-P2dm zKPhJsk_mMMq%aTCZ1h_?O0J9fEgk;)=(lwElk!89J+Wk^5C8pHZyXDpTcawaC!bBG zgGWvDH_OGJh<-Q5wloyvhuBIVj#7<2tU6Powkl=vNB;B&r&X;PrF3Q&4nO>s)2dD^ zWOy5?o`93HFh1AWB6jW%&J*e78Vx+1xhLl-JJNR70yd6qt=QwwmML6a7|m{8d);mWIhl z0i_SWy9UZqngYW^e-+Y!Q(V$-mZY@l$Zw{l-znI_Lq6I{CI7fwz4sIS6VboT zT*L=gvbWvbEe#{)B2IECIwRLs50PNL*Nirc9O*h~DTy}^Jt~ceR7@xTn$eWfJ<8H) z3&JkEY)<03B$i+Vq{dLhlDHl9O%-w3~!y|QdRtyYxbLd2LNvffn zM2#jFN66> zkPMlafO_j9aT3&Ls>kgui1!y7s%x(=l$Y5w|I|5mKky_SviJA){=r!Ga2S#vuGXCg zm3^F&Vm^(ba?Z~duq{zkuzTlQB|vMK%jm+>M(zUwGXMEq@I$mHFi-L%rvx!l@>_8PDG)hf{Dk;RMfL#kca?a6=mk zEv0RUG(tkFob3|8X%bMqqVaxz7wAY}3A6Cqe#1q5hn*IE+xKk4(?8?f@OT2l8ybse z!Tg*(1&~e0PC@yglKEn7PrB4f8L^x;<`E&y#3JRWg5&hBpN0)TeP%?&*)ba&v^lYH z-t$g_Ip8q2;TX(1FWrLu)HGG?AuxPvt;4j&aX~6I$N6uw=8#^hY!3OO$Z4lFP&6t> zjp7@3pE?SBqwZ^RpUSIE~+SSFt~>QX`#e1XqEvxVGCFwl**i<-C* zE6B6+s*(93=%ERNGUz*u^CJ$^b{GRwpc}K@UV?#UBf9&hJY}2vJcDOXI&?j~JfDH)B#~onpxMFhJ_AkZ?(+fs$3%aB{->{t3oV!cfOJaQL?I#1e znp1Z)zNPbA?Cdt5LtM?-yVd9M_R~7vev%Z9LKd8YIezU6vJNj4Wqs%^Vsaf4&Gr@< zeU6~F_aKdmV*U&Jti6*S%;Z}@kZ(E6(BMeE9da`q8184{)856vvfGCFU5tRb8ESTB zIOrO-o?9u+KGc)Z0x)x;L_ggm+NU5Y6m2>KkTz=8qb%TVIo-$cE_~|%8BRE}vXK6K z9f(Ez2Rx%}D~gm4{LL3jKB>>fz|nW`yF{mSN}3>@;xVW7Tu-141{=Sa1Zef8N1__l zm4#=nk};cZo<2mNqq2L~#YSfAo^+EyaQLI2r)FRL5eu#(xZWVsx9Z_zdy!*23|gg)Tjvs8CCc>unHkub8RfmD8zOFd&2GaI_6yxXt!k>ri&ub=%w~=dJ+F zbLhw=`?A#D1}Q%-NNgZ+fbu~z^Kq0*aBDBK`UK!Iv&7U+0Maa&O;NAOkXjd;qq4X% z_(=yp<>2K5y!j&dVH!bow%UcCVgymp#0=+y+x4F1BCG8anf&2bev>JKuXbr0msTgD zu~cCtsTegPe9&Z$n>K#46`fl!yas2@v8yW}LKR{MCKlIkaX{H)INJpa;VgS_G(M>P zr0{Y_aTtuZ8)=3i&2~uB42r+{1}Gk5C{ACfl^0vXU`qS)8)f?~yS};G?7oWm$-T~J zn$b})f3Q)@p3BTPh+-A+;c4|{;r#B!=BVydd-aU-#Bcj=uYTF{*H9gkrGz)X{K!zf zHE{+}UCLg)%<~@*d-W_kvtbkMX0QGyJi&z5?{M5+-TCPKu~*-2nr9{U>VuzQ(mffw zfxX+SFVX6X?GBQMoN z#Aiu+^?%N&l;$Pv)x1gc{@SaTom^SSzS*lA-%)9=wwv|65_|QZ{%{u*ooBD!{9+^X ze0%j;J1Wz@FZSx&JqUaMM!u>Ht0Bg05sA?A2KsLHXTYee!N2 zwCvRfJaZX)^`|>A29JEveQmFvWJXWPUj59uhT`J(>KQ`u4HpT;|99-wt6s5~y~_M; zmmc5BGgTX>gdbAPRImKugx`xlG(F3FHFlu=*eq`8p%U^VCF4p}V{3JKrHu>kS~S$-Grai&U`AXUBQ}w{M1ETz z5S1efd9zUg!QqFtWpU^RWRLs3RUU=2CL-TT8_n&)GdNrTuH!Z460${h^&H7+qSHmwBQ2U!1Y* zhxx_P({eZ;k(1$3)!GmE4E+n43+NELkyq;gBP0k0&H z->V)PU=}QV`USQznELDp&!tcbn6mu32fx3)D^#y9C-|x-Pz`7~dSKlcYuD<{+m`-A z_1s{=sYU=I;Ot4$$sXTwMk8f=)gFEaQg{+LkUEfhUG63T&xW@>MbY%NR&TYCUk;VC zZAO}&BR_K;10vI-ZLz;tn&ymZC@n!L+q@Jxq4^b7N=>PhL>S~M{bF50ovnxMa9**= zMJ;&c^4&P$2M<5El+urC)&qV@6d$pzkm;l~`y;+=&3-!04acd}D{H;knQP;QaDzDL zD{1**#h>|Bol~KC>#1%>WK^c@HJWGa(8*j5J}C%%ZSI?LU&?*M@+EA^f{Qu|<{O%j z(>T#1Q3OF3a^R%gX>%tdr$1{BxA(ZuoSZnYj{uwjIVvvLmM$Iiidq92^%$va zr(ryp^^QN%53q@noD&RcNTbR0Ony*FW18nH4a-=X@8)J2;$uY0BWylAKdAT^ahyj? zIw-}*hzEIuMv{P1e2n=09^t_@xBQ?YW9W}9R7cb#GT9!lVlPff6Gpvg3NgIt0weK= zb?R7MTzn;#9(tFFN-A97@uMEk=E!`L;@@HMcI6DE`0Qixk~*89WGYh_vpy;Ua(S2g zs^oB2p8IOtmvUdieLl^ZE@V!#$;}N9lj(|=E3m3#W5_u~f0rj{}IX=4TGPDNG$=j{M;RGhL z;KDYk%(J*<7Gl?#o+=yV-3BMyme)VSNA%9 ztB$qW&v%QZsy7@p^B_t~AjIK|7qSoRHVg!&bp2PIc*Q^U=fgBn#eUN|yxyP3GdA&B z;e0|uksH*VJ*+(Qi*vX;wQ?$Z^|xu5V`1vpZ5J?3J;}oJPZuF0(Cn}hp+1Q59=>?< zvDVAN6FserD%*M;lgEvngU!l?IaaaYf4XV^!BMySK3DAYw;tl!Kf7I^d|kP+>(?Q9 z%lRC#FweS4IcZ+@r^cL4jDD|*zg9!j4wGbEwakDnsXgJ-h>~VyE0@iv25-}>DBU+@ zs`Ha2&_xhz+YQrO#bV4_lp*R54(tg>K9^iMx<`QW5MADoht&lkuSPI{wvhYr}!SUEcC zXJQZ0i&DWSR-;qwc3+kII^8E=bc)suCT!lBb?#XOHV(BZNu%AEMz7OkKD&1rB(?*E zPEj3ZxZ=y+DGm;kkD3qQI0ve0R7xn0t(fhg_Rf>)8WRrC`#tMyL9$oa&F?n7Gt3t( zZg9e!p(#0yL!IW>Y8yzV%xC*%LbvPWPHDqR)KCeXv@bS<2?=;@hp@26h&u&$Cfpg9 z!@+I$jk?bq>l|w&oH@JiGJKoGAZpsC0%P;ri8=TSQ^7=0Q+$r%tZL5`pZliV*X_Ou z_ch7KlC(KqLzbj1$xy+FXX}Sld)Rz_(`nB7OF&x*95$en#AhWmW^DnUJ3KvuFRNQV z3Nk23hnb8e3{@#R*J#sp6f|W{@zOE_4NQna2?n|`n{c0jZp>D>Z$kN!o;~Tnk`eUK ztd}rlj%{>-4+@U8fo?S0gAxohJmN47G;HlY&*0gUg9a=aK@W8*N#kIfIr)@1W(omw zzFGRI(qSYW z;_3_8gK$235YA-}!YaCtJyZy%N_=gjkZg^*M>hb%HO~@@>xu+Fk{i{nhCn7_$W@Ak zWX8Cy^(ftBybB>A5IMJl`UmAhr0Q_O56(A$O#p1Rh1TK-E}3C%J$&dmbmV+-aBnq&j6^m zvV#{z022V143B+m1mMax_VcmVx9&a^)(Jqm!X}kr6{eZyjQS}Ic@m$iVnLo;`;}zO zlDHj4KS>aJyjKoAnEPZp;p=dpa^dTA-!}Jkxo_Bg-R?7Bx}WqkOC8PD@v_;9wNNr! zKX;9F_P_e~V#oLz=K7cp;-LiCQ)X)_v@9xd;Ch_y?$lzey%N3E5YybmBG7En}t>a?D{4QK6yy}(V_otP@J8xz9z4aefSl?g2o`jmSmi(lal#g4qrEn$m zd+!@o1n==Hg?H1+;N8N7Pb;MPkb*(WphYkkQk=wQMI{`i zrh!JO;sVM=z9xY#Lf4428L1woZ{tBK);NZxYx~zFG~3VEM<-=$;f5S|{qc5!IL1Us z7azsP+h<&(!zU1~+aTbhkkFWH@=zYX!D&7Ais~RM2CL7l6_QD>238H>%?0 zl@FhEV7g%i^tjsQ%KuJ}B7fZccY4f`m$S7wQKfh(_>*nfF`(^<>W`?lw*?-Q?mFwaEZ4!9y7&NQ9rn*wLxM#2p#s%PCmEWXL0q^^k7{0 zDZK@2spBKerI%sHJ)dQ;CnV!)t6n>^`4Cp67a3%$^c!7zUguZ3eo5VJnupp+Bfsi|egD->A zn%l8%$4?H<x<5>; zt1g5y+qIxMeb-$qy_YU{8qnxA(ax-0eeu3@xNJ`UH4-LIgV%rM<5%_nnprIOM>gLo z{^gFY)_;RpN8pB0=vUxxQXE29P~`5h^!MPP?^TC)Z8cUMH!g-Iq_v$a={@0XEa$^Q z!-_IRJOasv0mGcGaq*=uTi@UMZ$u6gL0P(oS{J>gQ@9zpmJNy%cwxG9n@Z%nW__;p zDE=PK-=q0^Bp@D%%l%LM(U=@K$;YpmHYiD}9wfo%s1!uDQ!%lszSbK}io^LJkMA2^P`C#Z(ZjYHg6?+%- zsrE1)Dep%VM=zmIrobT39J8RbXDt0=TI0vnA-r!1ox=Wu4=tfnYD%p^>p`ZXKG80c z_6}%iHK#T1=dICAl5UkqR077R;}0>C>`2fgOS++3r#;mgDgJmY~xpxrGu;&rI#`N#s!SItoDVVW5&(# z)80J3BHtxn>$a`&envYU)utyCE*UOOjXNX1`fb~{ISi~0>qz~k?tFVO!9OcOK0jfR zW|+mC{T`80VZ2sJe2jR5M|64)#m9)}TZBDssmK_5mO}g4>t{DicB2Nlnz)42h}UdX z&gD0X_6rnnLJOO5w?S^O-hD}&)=S2_OQuT`0hlgwT5~(s`HleXs%*){!{dY6l!>p3 zBxvFXk~eOHG$(4}hqaodzlko3GY8~x$#P3F8x$J zr(bETLjBq!E!#ubgFRuku2Ga}83YmxyKtdYy64>dK?NtTQ4AjG6>V&|(^?b$apzsE z(9;T-cMe9oQ`tiCb!Y&|d4HY@YB2_>Ikj$0;bw5#o|$jaiyk)2fL^T$3ai64GJzp> zMtf5v&(?DzdB!1+D!A1B$Ma@oWN+;&J;txRNA#Hf`9YBLUZ%$d>-LWxki*TX@-ZYG zk%G(MTn+$*eluQdmDCOs=}Rkbnt$x{6+6D*YEC$nROqG#;|Q)lGnWMQrL6~iQI?%N zTGvZMmmpJErhM0+iU&*%3MpGWKqK6`1e#qhZ!J(oTkZ|~88 z#AZ7fXL2P`Y12=Kyl7U=?kP!k%PC*4-Rg(Rc&HT#6#3giF7Fg<@^e93Y|Gc_IKCJ9 ztxQ8|wLR|aNri`*$rRfR81ZypQ>Z^nsFj{twUH<@2lo`eb#w50TfgD=Asol=7H0A0 z;P?EPzPv9Wsfsp*#Jz*xtF~0q?+2R=zdLapzf=~(Ig;EwaK(r$La+fDD^>I<&3>a zQ<1GLW=oL`?UL>$8w+e2N?Eqf@M|_M>&_?==q4sNnr41oo*h}#zT8c9_A)=B{o57x zc@l55FR>DAW(e(Px8;px?`DT1M;zotD#a5Gt8@Uv3{`(ZBX4)(hi`n?DQ0*3V}*~9 zo#PKFQj%fVeNFC@X-=GsWgV1o-;_Ca7bd3$s}z?QQr%g6WRbGHlf_3ZPC_?(K#wve zJf}u?+Gvk2llSNF@^&gRJdd5n(9r|K_kD+U9Yn7;>ekUL^^7t50HA?`96u!)hHA9* z;#Zxib+a|1-Nro!*S_<8UQQR3p_Nl{P4js>Y^;ar>xeMnuLPX8P;!pUxlbtLo3+e? zf)VpS)bcaO+HYqInBisyGjF+azFx~cp~{uBrPtlwGPT*~5;ncoz}b9UILT@m-{Y&H ztb{PB;=osAQ=_`-z->(-g7&FNdW zS8sTZ5f2I!k46@hC23hWj9~zhHpb_0#E3&3cBlh5kvf_DpnTyS1&9QPXe+;s{9)s6 zrCtJHr$MT`@evyJ3GOc24^R83ReA~GGE|H3=Agh7f#LWsd86=F~~# z7GH~`@nTR8n3yk;dvHp=#{7giKD|>aqCj9+_vMN@Ily?5$8Q>)4{*Q%_Bz0B95Ary zlwH{oe6*qJq)+N(5v2l^I&^$7*6F>h)y({nrkNB)N{U4+R#q%JjtDghKn*W?j&jl_ z3Jk-3mSh4Eu>%fT6lC2lpWh?Oedkb1yYY+iRc&|{#UupEPw~N5+P6+IO$y}lKacBF zAe8jDHU;MMa>94~JVt@i#%B(me*GQDXI!ETS7%IEM~EAhiqni5(+(%>_%m#Mtyu9| zyRl%^%q}95QO$?iALwbWnV-W?+E1x|f|q(LdYr}PgIohub~)u9YLWExt*LPJHCp)YpR2&C(8IZ#bxk4mSI(Fy2ZjY0$Cr+SIekpVO*j=J@?9S?8i#pV5 z*nDy7%q|e7yn4%L#~vv!fe&01DAq-OU{3{#b@5S^ggJxqg&%(3>6n+!rGAPFS3EJ& z>iWw>tNfJ5DM@(S4pA(&C}KMRN=^w?Wsf6R4@K|=_a)pn>AouWY1WZSZ#TzY?8A;w zC(IGcS&%@xPMI@L6EU42JcUvVM^lCFByTiHitO$KD&6TNC<&Er!$%!7OHMxd!Yd>5 z_(A@-7Gazs^gW#xIdv!|a2H-_Etz?oGuzx8=M2&0Aw z|MJL^z?Y#dYQK_0Q414Oi? zp)<&e)ofO$ER;jAN8T-du-kZ28q#*n+jh<^{v=RLk7C4%1+>sOcS@UTfA>$CuP;N9)=QnpyAj3$kQ#)s6n!~Pl~r6#S}yai;Riz&qjYi zF8)1o^IQDRqx@D&A0G05)Lm@yz(|b`kg!CJEq;d*)u=MGcv`~XZSnUQsMb{UyGDrV zNM9Gz*T}_RAN`gNe=_OCkrX7rk(8ZPABTqWciDiFKudQj(*2yQ$s5H zEgk7I(QoPSw?)6D!`~r4^ijHSyG{ziNJ+62R(Nr%W}F0q!=^uqm7oZ%mv@n8&XI$A z#GfygxC8m`{24ZV=kNR}zMRjWr(b%H`BQ2~`V$t%K-Fv`o+kaEQ8@!6J(|(2W)i#; z3u`ztiuO!}9fr>Zng-QPWAJHPaisS+&5AHVD(yQ=E`d$?F(R^dhFi~~2Yo>)i7CW6 zNqWM|baJ;SZm3%wC@P)wNtD&B9V-G86O_`apHj|F&*>+S$mYj~N=K2tj(qNK{eL3M z0Ijee^*?*>_5Y9itp3u2Hi@mu(7hBjx4#ahBVW?g;mkkke)D)Zi@-k795pF7Jnj%@ zLug?K!FUgfJWB4`-riBtj5#gZB_t5{x>>Y>(E)1Q=&JeHSwAyJ!3-JAh} z$m)*56I1qA~NhrQ?BJ#USzi?5>g}D@%e$$$AN;6B9!eJ2B*Ah5YfG-OKRDzdYcc@W*X; zF2x^Rhb_+^pE{CDPHEaX{85L&zTf=uh>Pw^{&>{63;E+M*Zwu}hn-)yt^x@SPvdNOi8T&jIk8!RS5IA($q_+**<|u6~6lUT4O`DN>^MKilM(m`tQC&4~`4QqUq_s z!j;trRY~?JQh8^|K^BT|+qH<*T?H35e^-aLjsg@Z$v}i^5RC$2v>u z7Jh`NNIE5##h0??l;HT6(mx6bTR#2ew~tB+y$hDAi(P0~C1ViW+FVnD8=bQ1gtdNz z3o-TMYKaq34jrzWEUhVB;K+`o_hsyZHV$v(t}eR^^_&^*I912aT<5IH!8Iel{d#4x0J>%x?)fyK35yMjbVU8?0OOM;lA35oOqG)e=R^2-AEZ z+zi6&g>dXtP?jT>xcK6u*bC)8Kw$WM5t++o(v>-i%G@PA=8z{emUFBI*~_YFtjnzG zXH$dU%*^6H+Z*rl8&!{r=GJ}&tJ=c$xQeDffbDTa5zD=|M<1JlW7DmmJ>F_~-fQjg zf+8|2ZjZ11Q$+u=nf+*wjkniHI1>7)$?Q6)fd)er9Mqs5lwF-S)>Ss2^vAxYM=u@L zAnnOZ*f%Cmc$fR>D+e76n}DbstA1yhIsZ%@Xh` z!WV}})zP2v;$=?K+4;a-YZAgLvujPAxf^dx7#$F6D#M$5&v&wb4{C$_I^5n5qC7Rq zJLB><%Rp~#$sfM$)m*22zoFHzxAY4-2g_uECihvGqJE>268<~}h37&S)JvNrGf!9} zQbes-OdrAC@4Q4f1cbFLZz&wVd4mvomdt7A)p2{X%~BsBxMnN?g_9rZTQd2>|9FY5 z96ucF{l?Y$8?>_Rcou&v>Q83stLi}sh7tE`ON387_eiTX(1p4b8bxruZSjU<^g$o^ z#xap;W7`N~;|eY+kh$DTg77n@s8v9xAn}7aTfXma1I$CV@YXgg{iZQA2lC?uB)3`HS%+tt5E~}1kgU>{*MK7$V z7@zJ}eU5*+8<1uMtgt>iep0++d?od{Dtj`a3Vwmrv{OtJ2LHp1?H{7T7dEs~Whu`+4eQt?k*!q3Z2TF@di|ZXI zWu~E|)H*eh*QHKKrf+fj%@rX^#x#FQ?Ss0rRg8J6t-OI##`vl9Bg=dS=?&irHTM!mZi{d?J80lxbpZF@?nvBDmt#RRZVwiW3D-y?=z>|bSaO^+pt!nwo}G0efrE%r6CZV7Er=B zuhn2mqoXDp?W!w_Q9FO@12z|~imYbDr^16RYlXdT8}S*>Fy<4udj;P|EsgJ|f44lo zFa5XTxG|0|?hAZhV}&kC->c?4UbT?EpZ?Te0N*cKp^M`C;5(P6@2bB9zK1W3@0Gik z$M^he{sQ#9$O>JQzGwbnd3>+>m%z7mX?)NBiM%zUrUbG;!a=m=*)tCQ)T0XkIXU@b*f+o72B{d`0UA z`v~ubUmjR^AN<9Eg?G!P4_$l^v61Tq_oKe2&e4naoPH1g)d8;W?16>%!QUKMc%PUf zm-n20r|yk@Ob?BhMWnb*mTg%QkyKGc;#3hLlCfSSyfn6Rlh5Tyc4Tfhu{P3GUUEZT z_7i^5p1rr=KRDVO_ZIw@-plZJ#{Ti%!vD&9xqZ)%_Q<`4f3$z^E%?7#DgKNHB^JJ! z64%DD;~IbZB9uZp)eCh=lDflNKIv2Dtk;!?rRBL=TY<6#DSaV!9pQOlNfp#n7RBOv z+rHxSurK+P_sa44z&_wpUO!zqiA1a(ZOZFKJB80Z$d^o3j^D{kb@8QZD~ij*mG@Wd zFMjLx8NcT(Wis45_#M8l^gCy%ccB--&-DKy^C4z~m6s__*>P$8{27=jZKOvyDraEa zNb|{?#LxnZucGJiCiMPi|H>bZtMN;fKk%Uym0uUvt7|0Q+MQ5WA(P;@w|KNfX}{QA z+x1AhNMcLGag#)eTfgy*w!W5z2lW1=xA%`#+&y8tnBvNOi5`jH)~;sL3coE4hyAuT z;ooZ;4zllqK+v~}SO)N0n4VlfSSr1#v6PU;QYcQ$jSgtr(Z)Sh8y+Imu_kIlRSTQ^ zqz-4+s6kWVSI_hS8aXEUQ4C?q%GSkc$S@t7rOh|FwVA=89L?H2CV*`-w-!mFt2EiW z_G%WmcBS`_6Y{kdxO`}w%ZMhpjELK@cXP)75BjU-n}c-3bN5r&ah!IU>VTx82_9Ec zq9()D9>t+Rj_r*QH44-z5(oTKBncqZ%^9izYx8)Y=f&N-fzR=$s@;@j$DnqTuAVcL zdltKI^5SlfE!IV@?k^b7&cE{gYc+ViV!Ed`uOla8*;i_>kUQ1koXy$`q6ch2tq>zQ zgE#@!+t*mrK#h@b!#lN8qkTK)5vi1}(<+`+?pEt@FGBc$C9&JFM#E*V(pfy67z2eR z?z7r$s8nybzt=_74G+EUu&Noqz_cxsJFId)(tJP7*CZ}Vh>%E%b`kNFv}}CTWcm*( zZS`uh@rua{EOZE)`%b7{%Wl3CPW(>z*?0ZCSaXH&K~La!M5q!nHaRwhx@R2>8RCAQ zdT|~oFqdpgtX#6oN6Ic>=K~f$PuqbQD%n4^j~yH;w~zJ<#`YNz4f!jq?Mr_D*zKPvO&g1J7S-+o?Z&0%T&32pi@p3- zFuPXQFW>FA>v@5p%hq&gzj$w0f=}&=BD9WJxl_0`xClsV0(Ta-4tEdk6kDput-IaW zy=7Mtv&E`kcf3)BU7|(R%;O0dg*lT{7o_aPRZjVi5XY9M*PO$ar;!tNY}6`MfGO1s zh+yfm(AvjTo@Z<--mh!KE}my>;%>c-H}bnc9?R*iRpNPOQZDfxSTVhWbLMbXT+%8ao@Po&9tMHft+= zD0@D&2?Ds2nLLSd*beEu}T#!#P8;XgB1t>KiCeS}c4tYms(0EuzEWa)sV8 zeTVwkyx*A41po@%&D;WkqTeU1pkc#cIAi=mF*L(J(xn(rJcq`8mty?jZ`A zuq4GJyxbve9qrbJDTQw=)R>W{Rq;ST=sD?d9in&21~m^n+RP1ohU2f}mea8&Cg21(T97CT+p! z)1>6t8KzG0b?RJ1PiT7~UJ`Yd*XwnJB5uA?Ot(D4f|d8<;^FickcW}1I6#rcuB>gF zi$2xCvIo>2I?eqOw5Xw4Ol+M%OCi>eylWVVEn@cx@m$fOPovT_&oo^ivI}b6**XM0NGalEyS;cor7WBXMvA-7Z zaP|#L@t5@BzTmqhy#&5zwa&-4wuJA=`-<;T2MpiSm%{gm=gh>RgtQTLKIgfsqpHxWG~f4gk-j&SqX zT?%O<hN&|(WByUSJGvWAQp#PM z>{b*~R8i{bUWU$f16;mv-8b#9?CF$}nt8p_*Ac9LvRq_!W%64sES!7x9pxj{8@ceC z2qjoE+Qe^I->o?%Ep7m08zET8mRa9xM%$F;OiLqDbLNF|z5|O zaJE`e%RQ6AmKer$9v+e2g<>#oc{*B4chOe(!eja$%vhs86YxXWbt1QjR<>%vH zyN~4OwJK<3@^ggabkF4H&uHfLxgG0~Q3=nEkU$Y$&DVPPT_NkEJaLhRf{DEtXJyj$ zDwD4MlT5m z-SdYxcrocxF)y=Xv>v$~5c}3&ojPCMZr<@XCT|DtTCu!+@Qh{U?fO^kUEZ#=G%J_4 zlgI8OdHeHMS1fNIQ_|Q2c}KM${neAiS@*QRI;F`Z>Ovfss2-;ER@h&?fJt&pYbR^n0Ob+#It$UqN#_yRy4b0?`m#Pqe%NIWP z6=R~cl#+4VuRf-iu`^3PnRp5d&pO>@X;^{L_EUmr`(3==Wr?*{pY|%+eo7y0zq2ik z$bR{aY8lynBJWzNoWT!{vf5O%ykTai@vY1=qGY~7Mmh6rKgulIel3vEakNngiopa^q zsLvi4`H9j}AwL76+ay~4{fqZ5KUZ3smCMh`U%2P;BYxeh{QUXz zE0&*+Dd|16|6bI@h4GsjbTKhQ9y$0{E<8S8amul7|KUXY?+puu2k?Rmc!|u~%~5n( zpHN}{JF_k_uW`|MN1(>7MmJuYD4nwF8UPI-VVY%LYrMDFwx@ zsB-o~X5-4bCb#>3aEwXCoj5LC4}aZ4=~4j#tm5CK0$kegN!swqS(DpQ`&p0A?3k)w z$Be~;jzj!xKW6^$H+VtsD;4zbudT5Aic+{g{nsQb&U5>(V@D2*{QcGRU+L>tEPuB= zX<7N(-LZH1`;Mhqx%^#v-94AT74=`wP(dq`zn^`^aN2MAlX!(kquIst#VJB_qtLBP z$Xeb0dyLzEIMM#QWN{%=A6A?OTwj`Xzw~It=omKupWvWcN}w(_P!;ks4h;2QohzNc zm~23P=Bz>4U@x>?V^Z|DHh=NQPa6}hWd7paPjFcpW)@(P`HN4qyDTj?fAKC$v-0_i zCkQ)VUZPFfXiLT2mS09bU-RTn+pL>J>z6Hkt?|Egp ze|7fxd+)D~u{101uXg>L@pB6e4&!CSX!|^0v7-L!-708h{nbg1(>?32Ui8=l(_f9% z8Oz^><1ByhD~hsIp0Aj{Y*p^Bu6R_rzj~X4`cMhf4KFWCkDpg*I~c($?H|mJA5`3* ztWDPKlVjP3YF^l#>e|E_o^i}-n*g7ke9qE-eDbJccFI3fd`{RW$=C6~=6UtCiRU-* za+8#c-o-N~KWvV_gvEn*0@;{NurI#%W2H&MJUnC^YyyVvpcY)gHFbRhPo}^V5d3u9vx6pF`oryhrM(wh!Wgq1vT3H zf|O?kHDwYv3LB#SXJ!To|kw z)x_IK}g4lSL}%G+Ct;h^`k#p?FC=hr?VBzK#% zR_^!Cw@!xix+DBV7v~q)WzLZ<%Bitub2k?5&OEN$jN45$LOfG>z_3m0Z@GgSG6yT_ z`L^F!El{B^0_32lz8kVhU$AkU6+4~FFv>s`dzh8u2NKk=>=mM3XgEt(i|xqdk9_Mx zI2v@_x$@c@b>s_tj*|>9VJthw*Q&AXF6CRhIWO<#LHTrss;wT`-MMC@I{fA%i0_~t zx#{xjzM^;Pn?r=QdXKq%(s>VibWjC!x zJ}E7HW-s--uRp%A=daarz(Pql#$t|XB=TvWHu<#f1|!J{*PmVH1dbo%Tf4(^w%AL9 z`GeniguOpF3nz7lp>zB-JrRwg7oNN8AANgWyU{sPlmil-$Z$6a`IIv5^v@KZZT^V{ z&ZhixmUj?I*p70(s2;`Kq~ONEdUNs#bL^$U@O3-o%d?8{xCAF{^7gLpn$cd><#FdW zS0N-Eps-geCy@vioi0~grucxJwK)rj;+#r`ui)R(d8}B;joW-nASbxWCm0v$p%p@i zncHVk4SV>5B7-B)0AU!#8OvVFFM$#kq;XYojB%13&zhp_Vakq#{z3-rljn3^ey}3+ zYC@+!K`Q7!1?{;~Urft!s$B7LR<&k?(L-u4RorCK&YOdXFGX=!4dF#D_{ zs`}F3RFZF+_?@gmkQkkq9m_s|U!cng*?&^s{0$}j21yT|ehmsIT*l?a>?Zu0XDf

    +qVuC0aGYT@z$7sJ*9 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

    M0em1UaG@u(|{8{AVCcGf^t8{ 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 fQff9cTIS!3he1b+8Zg3S z?aEI*Mz&p`&-h!w|EAyV0X}IW%fX(DVgsxI_x!xf9TK{c8c9{1B$0ofLD52jao5T- zLHf_a1mo^=On*f%%bsigXNPY8xu!o>jgb1>b9$|h$$zD=9@)Qv#EcH<&|4hLOtrDM zPbYw0#v3qR=7(h31!X8Zyj-6krH~+WFE!PVI#PRFlKY_%sa2 z_6Q{Ruoa2nMO#NQo%Q;7onH~i-e9a>x1PY=_z}%VCpP71UlcdfR_ESwE7Sci5qDWw zb$?iA0Cw_e%SNYJMBq0VRSt*^;yT$@@fC%dr~*edI#o5Md6V&(0m{B=VeSgG9{R8UzvJa1|?`ytU zT;E5mEvfIz=KnL+_a9&I`uK{-#B80*bBnea3ZT>igki_Eg{d zDalxUzV?51S>Lz%sDD6x-*?@(_WiN171#HBK2XxWA3OPiYv999Q2rf2Fv-zhqZR<=gkgbN>PL-S;~d z;@`q>Z(CxgH`Cf=yg2pI?xGWof??}Hhp-^%5M{U|Mz9{XV?B&u$9HgMdg=WrSm`y% z?3+4>#OW%S#ul^@wVV7-JmDXk-^c&K`F-()&Mz7dVGr-;DotKALi9sA=D17ZAGO?f z9e?8<(pQ=^>^l9kd%*wf9`Jv859zNRAKz-uAz?BD2^;&KpYPTzE@M>UZGOW~@NMdm zb=|i!cKI~MdzY3mpoVkFWM6kh%&xIuV0r12in;tiJ2@S2jc0Q&5*!y0@(co=wRoz5 z&RuFLLXk;UaI*(P9lw3U&(lBhbBVXj``c|C!5xQnj`aZ#2`k*CX2)sTh8dK4*Iw=C zDy>>u^)0R;XoKzvwX2LfWwm#yWZjD8wL&3ZAcBW(9;!y$7$p?u|0m{$CW-fvADWQg z3x2#gSus7&44cHi|7Ux}jN4A~V1XIu9QuMVqg~A4Zx8Yj-*&}LvwHY*k1NYf3R_& zSbu!tk-cKc(o*@Tp7nyTWN+j{4SOH?!Ldwx-(EQLGw?&n+`s>HulR8&7eGnv1`(+^ z_#eiPHCkW%yYw$_Oja23h#wLw_nx2Z6+ey({czyN&YAx(emsZvvX}jf*QbT{VqMJJ z9^NZ{96F~&K3vs5j2~Lw`1{BQ{cUx=v6yhY_Q!k0jH|iMt*Eg)T={}9Bd<^K$I>pC z8b1?`$x<)7C9c<`B3j)?Xxi9a=1a^1*)%LFIbqqY=wa$zR?*9)H-3eEyC-~4GkL!k z_?G1HwWK#MOApH{7^3`DiOtYxPWyH4#hm6T_ux7=GAm|RJr+BNiJsl3e?}_7(yxC` z>3=JcvGg6!DgBG{>1!rV&jnrDQI{U{9H&m|lCZ-TJxq!EZ3fhv8M5XBV}>;zGOEE2 zcPYjU95-h~YETZSn5qrY){MiNu}PUfw}FH?+Ob6FUWy;O2aHqSonh1nKmV8LIcWb~ z(8DEWT5Cf#XkZjX|KJb>QAC4YleS018n(Gi#<4b^<+f3ZT$9YiE5tf%cw?OwKH&$` z@nH$HRT$ds(n{9(_*#|Bu)wx>h^sB51+I>0Pz`_fik=?Tx;mnN5_<9-!T)>obgO+u zvSRHDnK4lqk|3Z8HGbq@y9A*_l4VVx%bnM&`6F9zmk(OcyZmdNlGV9+FZPNX39|vH zR4a`Z`9xS52x|L+)?1%@{*S(=B>(lL`9J=5&;Ld)$}TE@$JHg}zyI%^|Bez-*xLAY33vTjrK9PJf5k=%~iEMf`hn?3MpGVWl`9n&>L@M z?r*1gq7na9wVlLpZ5&h>UqV`4B(W*rNCF}Lv?|QbsQxm3S08PeNjEZjtf9rGxYZ27 z&jiGAA?~s`TAKUAk0M(KHqZ)J*|}F%B?c4Rz$m6%QrwYGu(1|iHHcR z#RTU0bM%FtKTfn}{oZhQ#5tZn_A&71?8*bwAI4SC9syI(9fWpchTdV)4MGof>kU1- z^}_o`LN^B&-Q2QbK8;PD3gBxLW@l7<2|oRTsv7+v6TT|O8s*b__a@@;{^uqwz5B_n z+@tvqP}!-HcW@CjU09Mk8&&RD?sl8nwSUZ~2+Q-3@B9?h?&bSslf9@w4Ek}bd><1G z|K~2>eT}~UHi#9}-yos;+cIB&_VGE$_Yn=A=;tQi4L4J7|MjmE$@hOR@`&SO`^=>0k9~Zh%IV=Cc~${k9_;aNY5<&-6`?w zQb&y@4-J?GTVritRc)Pxt4))S(cEft`YUd@`sUsk^L6QEchoioTB}q0bLVXLRZ2~3 z#N@krO(vtchYg`rhd)|NEmz;9r#C7z&HcGEea)F?2{oq}SG&~LoP7*67nkOaHiDXs zyV{P@Q9-40-JQc@#jBmqkyg*4CT&LA_ej!b)^1==Ltsx_VRps`K1YT9912j}KNg)7 zmtDdBI6QaN?@Faou6)Gp08lEo!m?DCwDAI8Fzd7^m>}F2624&eF%;}&UgetIM2EQ6 zx;)WmatnRkfxaHY&F!e+T?*7K#yL56cD`&QqN6BnXMpWen4R&R4V3K)$~JlwV*u4i z4+&7V5+mCl+Z}1zpUZIT7UIwuk5RK*{Cu?%O26*2{8`2t1DIxA0~z`oCx4@VtujfO zSpL2fRLXOgzd2`2Ab+2hIRSI_N&cR_|Ampi%A2U8*C8kq%HOTO+DrMXKYs%GJK<$7 zxcp&-?7jS*^I6LFB;0+0H=v4V27kGG+>GbQ5wJn|DvL@0!~BShBKdGvm#& z%a4~l)6!%xp|M)celmkc>XQir1lhgs;lDkbn_|QM+|vbPLh?Rwes91-;CbYC$iC(` z1rL6*3ypQF(oJ$IxM}7zb9C0d>;Azdiy?> zZ_00fy1~j@23MBj0XxlI{^t4SlpE$K7g z^K2`N(9(}t7nZ~Nfh^yf*-#48$Q|{R@5gGC3Jnz2e@qwgtz-z}iPSW6iT1JeVe67W zVI(AF-Kgu7-b=c_YFG^?j4~KxTrxr$(SaF=Irc#Bc@I? zoJgj&N8_wq{y2nlExKCK2Nt69#~~bT(YCwnv1jK;sq@Dn{OLxOlxq%SZa5#!29R(} zh*;i@Vf0~sxA4Qduyy&U8YrI$2j#ON_kM1FAedaU5QB2r?CS|!HgZ2mN zG-Eh#vPgeS&a%aW?>O93MpbZ7+~%@qnwJt@nww%yDc=9&m4XAkGJ-6dv#D1PA{uy#<0~VjRw}+=jBy=uWn8^BL2(kut8OnyClh-h{3I&h-4D8^>$w7 z4VrKQ6LaNo9hfKhZ18TfZ>CZGAhfevnN4u-(v*U65Vl)ev!*9DY8Qv#Ialvw)lvOG zbM49Q#b?`M!HIl5iTxHQAsZ*wmIZLZTYb{_tQOTgC~t%N6h%`$hF#nAeI)@;turg{ zmfYl5XX;8C46S2&ZBZ+iKU!S=Z>W&S|4qJcEj!%(6@CGL*S^g)ZcFiN+RXNBhC$8+u zNqmsdNahir%@yvlFCHAr<%+PGJcauHDv@GYX?^dee#?X{s)kJkUz2Vv z%30V;s*iJACak||_Zd>}ef`zD%l8RB>81p7sJ{|+a6a8G<#}dtiK^YCkY!1UCYHx) z_rovb%d^+{eUdaq{MCBxI1cVAzheUMxblr{zZ5s>A0$tGi({8p`F>3T^9hl_vYYxj zy&o8gAx-4}3i{%pPkQ=F(WLpsGvsiTtBmMv`yd(v_Ty z^DMiF%z<`sVq_&J)e*y@YTsa&JZoK&vn6sPthM)QP!SN$z{`$nvfxo-zUoMEc z47Xxp?b4(!ZfyVH78keu-L&`31^ikK8Q1nIkDM6))5UFXH~7C&!2j!s+V-yS-&%~{ zw=eUwK#ybMlC-xnf`Vy=*+cZ8F#T-Y{Q0k?Jb&sL zbc*NsZs?n-l0^M!gL}Ey9=*1@*B4%UH#e{-=gKzZ0eUwNVKBLCi(z8Z`0`VxIc7-8i>HuY%jpeUNM1fkf7pp{FMUrtqGQ-%f zFFN|cz$nk(HNJHZ`xW*z9(v9GVN|rAyHkU-;xUo!|JYM`IyswS5x+~58Qg1|G`?H{ zdu+71gv1)i+GI!lXZ(

    k51A~$YhF@|xA++BCgqq8a+k9C@jm8Z|WW1&x7BP+kA z1him|X}s61`bh?OM!JC%(F1-P$=kPhr?6Q@Uaz~M5Qzmh5I`KOp!OG0EZFdb2m1_HH zD)F@(r+7aab4yRrhmEPkS9H?$#(|cvq*{hjiF*_|kQf?hyN9^}QO9}PZC@Q|`I`HT zrT9`R@nxm>(m>0XQ!T@(#Qg(_;qt##`kB3{%L z<@1&0&8fr}h2Z9amM<2v%w-BXyI7xoUL-sTy4{?|4gc#xd&W?zyv4?o)s?sGua7m% zrmWP?o@p_gOPN+iWloEH=uD#(@`(Ynh_`B#1<@cVLH#)}724Wr(ex5OfDTG!^}2b6YlV=v{iE%|=u{vA#LR z-J{!q<%~!Z(K$m}>$j;$=A10#T@yYM=q>?u=?U>fzV(VILXa&PH*>Ic-sdXs=3(zU2z~9@eD5Yvc7E-(snxX^9-H9m zY6}OAlWsBKdVInffFcMY zQf}fb5h-o8|~NlQiV!2n9_i zpm-3Gd%H(*y-*w_BGv>H>dtVU;uCYJGp_bvefgZ;XkbCWg8ZM1fH7sNej_`(3sCo` z8P*;&{dp2T(=WoR3DGZC^bdUWiQKx-#9f%o2`?zS{FvNyz?m&Yz82(iQG%B$!KZwJ zxt3tQ63j2VyxJ1XwFL8XIZ&Mv8(jtAN_sM+{2Joj&I62;=tQwVilT=U{g977-Y_o| z=7kX{#~bE_o)jgxK?yea1aopT$?#O^;8P9m6r*O2J)fFmk-GMjvda&RO7R*c{VD4T z6t2#i_B7pd=tyLhXERr}>);9V5U9T}CPR!L9sxduH1l5i+HPxErOMD2a-d04IK zA*8QxELm%6hy>H}$CO$Bt@f1fzx#K>KPJ7=2`%gSZD8VOqcz2CiD8A?5 z+tz!te~4}EJp)23w)XxD0dHq2z*HVirZFv;R+4s?<(y_UFOzVDtav19lIdRM%*i+D zUI{hdHWF7uh>6mOj!p~`((o8pq#GMDZ96iFKc}y|9oTg5pi=a1zFR@IZD-@ATAo}@ zht6z=KbZtAyVogJC;Oy(clgIRkK#`z!9z?8&LmoSEa#CEbke=LuXAhfS^O{Kn4C=F zlJs>|yrg?|!zdY6E6BEWh77-aaX!NhTYKeaRG!R)Gj*27dAvdSrk5vqT<;%Sc@!7< z+RmeRz+(rG#)b6qP96vS*DfAaApp>&uN$_<>v|Mq)@}E1DgQR&-`4myD|z}l%RRGh zhmTvY0E-JMcQ<}DdnlRB3YD8ruf_Op*d6a5HoBvD7&kyww;Zi6MCmsw{ayI_je{;- zkBHz^Q1_<-eAIRnV(-W~N~h1&kd>VShUP`FvG%0`sr%Fo;A)!cmZ^&1yoZ*Vg_S!oadq^i3q(T94}8B0&!_clt$=InAw*tVU&y zBz=`R0`h7VPHer86>i=dc#EWdRjpcWB>Agqn=DS!4->8=NLeF*z9cUsZWh2qZNby0 zb`j|N=!JRu=wJuDn_KESH4d43-3W7B-f%ro#WPI<&o}=}+lcO{P~-3mi@tS)z3bLI zqI*P^(>@|sZ#58q*;FzeT8Q_i<<+ngD+%LOf-T@-|LPmbTJMCOzHYs~a^f%K7Hm-Z z({_nlT>n}J($aPA!+1!^h@b=r$Uu)cDod(wkp1{r3*JgFVQJtv^~q*%n3-_Ld(BMv zbzfvA+uAaZuC*G{YM?tK+%n}zjm;8EW+${-aq~WcH zwlH+>bJMQm`dJw;*%`}K=E%(D{WIXETm2G&TaKbS?(wWlX5RsFxfiGv&zj5 zK5MGk!Ds1U#i1a{d87*}$@eH}R7#tgzS?w)Ty^-l)xRsCr0JJ6|x65|;^hrn{B972|zc||4wU+;23d24aYuP=GeaAVKWM-&uQFAY%*;ZE zFbdaQ2I=KQpuc#i0&_Lhj=rfNTfx#jnA1q<{cFj>1#BnFW>r(y_5xr#*?I*owQ!VC zryFeXqYh*Tf00~UG8^1xafzTRy?+L4;oEyl*TNeA3ave5eq$b-bhKvkx{3y`2H$ z_26#grqe(e&Dr%l5>Yk!2CCNT1OD55kH%ArtV$zMvwek;s8t@|9(d`&vGiux)pc=4wuxfD{v_`alfQlBdW&XLD(5{EqVw)H zZ?R}5zp2kcbl%x+(LIIeyt~ce7G19B*XE+7XMs0-#L&F=;$l{2B{b|HUHtc39r6#YCy*}Or{{~{^&xR3g(0bfs52+LIaP_s~ zp)u(r50B^Jn+nla7ozh#Tx!wAg;y7%^E^D-qNj*SXB49IJpAi>l(*HuOY+eZ@KF2{ zAH_q3(J$g>^gcEepRFk(@fD31G`2OKf59u-{teyeHHJ-^s^LoMW%hT+F;h;X z&^@gy-Tq(3Uhoq|SP$xBiK36D!Df=>?k^nI$A|NQJ>Na@C4)t+$kI?i)HMON!rkX# zTY+tLU-hu-J*@~cyJAc09OF`>H>JRJJ^HA0gt;Uzi0r`yMQYId`$uTaQDl{jV(F= z`V6{c9_xi{AJofp=1w4vhz@ExuzkgiF zxYiiaG_bmMoxQKB{gA-c)_#~Er4jt`sYV4Sq#7p?%uO{;CO9$GsHwV>QjJpxPEIvW zC8$p|P9vC?YLxkMN~&=`g88Y&{RtMN8Z}XNYN}ClAPZBCGYA%?8V@9BNHyvN?!~Fb zDuUBejWY>OPc_8%DlneHDpg#8sFtar1m zNUk|fF`Mbp%C44KJmbh~q!@MmojbpdxQyW=@pgT>|0kf;>~w^yPUL3RDPRupnRj8c ze(}m#N+x)cjS%Rhh0HoVx%g{|q%a~O-CspeS>=N{{Z)o5>w|UGyt$uUE%R+%od>V+ z;1wz}rC4~~h|>!`lb%Pf`Wci>_3v6c%wyrbKAc*0eA9#)CJp?cE& z83%6J&qqDEofjJ)J48*oznuU+S}>>I z2A-L$57uem={|Cm@v+N;cY1IO=JeYrHsgb^d8$oTwVwycWQ|>!{yI^Z?q5&t1ZzB| z8wlLZpVOz!(0w)KcNZ-ZX_66x zNZYgQbDj+U)`NFOJ7w~ZO zKvn@oydB8KO|wPDH`>LQexrMvl|o5IIk$-E5^M0Ku|&p3r%PjG)|upH)=3pKXZocI zTGIEoq`$wc@2-Yry<6mKG0<=NB%5s)Q2Ih0?}3emnyPotyc!;7`V~VSJs>7n532{V z9ehh=U!j;xw$lK@>D1W`s*A}HW$G$De^7y5{;4OSisszbi3iEay*sB8q!Zm9`W$22 z4ObZB?ji7uTf}Ukq%3f{r5iR|!mK9-|9N2Dn)k-6?R^x~hUh$xNccRWKQId@L?8D& z3M6^0nekdP-QPuW7-vCt#=C_1*aIYY{bDH^Ml4OHA95W_4vwWZr&<=J`oF2-^XVc! z*)^$cNu80R1IyFvHu*@@XbrOA(uWA~BJ zesgPM&q&!<%iLoR6*@j?+Q)uecn@AabLkrq29p<#0qPrUb&LOeP;B%UP-xh^c%x8z z$fmL?yGFsB?63v>gUUN(IBzhu#a%;|;)!n*X-1!eNOOWE)y*St*-gJp4WC2U(}|iK zIk!|(KQ+`!Rg?y7Ru{&1;dd3a=&C$U)$xjN7k>#wdF_b$kv7#$g}`~rw6H6{3TGv| z_)kV$Hfw0Fd#@Bh)O(qW)*pVJXOMgESw!a>;Ea_tlgev-1AI`G`CY3+pIk0k2mSlO zlqW$oN!_c4v0$9|lkVR^AVMt2>Mfa_^2v8Hx5fCP#vQu4oF^so^&p3Q9B8Qw%CZw8 zyf&Ntep0yo*;~RY&@rX~e)tYkC1(*(z46B&&)s*jgbzN; z$9U)+S8JDj)?>`p3tM*fg@QZuN@=ilai2khf=s^!`EEGG#o*%T%AJL>6?L_nU+-yp zy3^E#s@8KOmOCe3ASj7?-Ndl(Bw)6e13P`V(BHnc%j){KZ;!Nn>{X%Lu)e0GHzlvw z=ufcBZCb;Oa7`R%Ki@+Hb!-h_&9&acuib10KSIY=zd_jH3G zz{$}^6i0@6%vDMaW`%A8<2zxl7jT20*K9X{*}sQp`FYJ&UQn^xfCj#p>!6WpwB4b3 zO(k$=emhLPT+0CJT0e!FBO(V&5OHBJ`?Qp_iDcxWgbqNROKU{RfND3(mbgkA9RRWodmjHLPje z38q@juq6jrq8$GFvWRbm0?aGUL2$0Jki)$w5Z#G6kKb$frTE$WBKNghGqUv-FAB{!_%HI z8LUwTFAoXo)Go8L4=+w|-k1azD?wRE(C!m_Dqr*DaKxAdCn>>30}QJW+1aNRC;0ta zO3VD$RV27LBuM!jenti4nRNS@1otYzfdU-EBr`H$ghKb^0?(wRnAAFYRbZgH6UrPb z&fwK!GI+BxI6(=b>W-ID$%{x@d5aIle!DH_V3`qmmU*`bcfZ%t6+we_1=-n2xRWo) zpWa+r^2y5Qvxt)tm?f8;y$xFO3AT($@IW6O_NxVbgD=M0i=o$!f&Mhm$&4+HusBHq z_ul_DZL-QHo>)8mFnLEBOij@Cm9dht)~Ip+Rt%oIFON%Qa|=r%znYH}gWZctBG-vS zt%9I3IHg2Yhvt%{D$Ql@goFB?o&9ku6VD7vQNvUN{x$C{DvIFTH}5Vg%4oeQuTWIU zko#~+d{uG$PGP*VBwkmH=Sv_dcdsakA1;npvvG?`;x`t@s~x&SOXAm9yjIp>0?l@H zt&@1cgdK!pg1r-N()aA_kqMaagWe)02+n==u3{#fP)vlhjk~@i{s6_3g_M>1O`r0Q zIz&}aVfC#`OG})ux5}SH#_C%qNkny*g{%BwFreztJ7K+rv$q)42!O9T_!M(T^zxPo zRUPJb%#E7nY5JH|qOm-4%j-!Q+}U+8Q2 zy^h}p`Q6R$34X^g#JYfAwBA5xHAjkiL#Am}owZpB%obrV9vsWXc009WCu<0ttMn zu;txtWg-St=9U|gd+!ApU_FW;RgGweyM$UD_Z14WGv@rn>lqpIBjG7NU``}Va5N2= z2MJG!WX3xl5szu%eKB~Zv6}0V5VmK``G_Z^*PM^^wKHSxM?7^6nD+(P&Sscb<9^TJ zgO{aZM!jgOV*E6|1uNm;9->8id z!b6q5a3adGYAs@PG^Ll-=nKNRj4K{lM&`?0rle2NEo#f>%VP-6ye4A3@l5_{Yv5$j zs@NrIjp|{H zKM@ITA;B8zu4e3ZRP%RVUrJAPpeH?yU%MwtB&Pe#lPlXYXr#S9kd|rty1NqU82N27 z@&;X!+!(WLfN9*a!`9np1WBwTl*j)5xIFvNEOaC31s`Je8Km<%l#WqJk%s)HTmkbL61pJ)ySy?;ZL+ z;-5S9Y=ujEPbe##xeBf|e=S0bQw3K8AU1MCIFz5=t4p{a{Yr%v5i7`a zKQhgerSb=4WLdH|C19MCJ7r*cts(uk6e;}*7>^PWbbCC`L~(1~aHjuMq5O)nD(#`5Ea0~INyM=p zl@=Q2kgqz&In-9(TJZUix{gE!QBq?waYOnqOrD5<+=<|n#+;K1RTl@dX6-;B&Y9W*K26C zh#Z_ogBrMjl@6UR#U1AO{#^Hn{`!siy{_ZsL#}vvk&gJQ3S4A0Pwl%yZZlChh7ZS5 z9mi5F#}v+VDMm^9Iya5Zp4v01S@3L-Rc{EI{~)znhLR~8@JgoGV9n>Rg3wFt=l+BH z2P0$=s)oGQ0=_+x7vzMdx>UOdmZEwJ!adve;7I0Q!EZ6~4YAx|2J8NEsnL2eMLIc( z)E&`$*`JsB>3Vxw%|;QtiudpuZk@+ejg zBrB(djozrHZ67kz8TQN+E2@(j=;on@2S}FE$Sk9@Vm!RGr*=KTInBcIL^Ux0&=YmU z2tZHmda?m*ho0j4)~P3}kuE*8>RUt7Ujr7m)8F}!v@@G|XypNF7@MIHdLT95JXC+g z78kbimPvtWmqdlks7$^rDpXY{lrIZ~3T3fUSy_x)D~nNEA5jE}oFWapXsq6fo;o7W zwSi^Q>gVx07p;G8Dp|HQR_2NBySp`_nEH{iTuQR)CwMEo`R`0~IDu{y+GBarBj!*c zo;lRVa;jH;d6{L#5vyG)B+M}TO7T}4i67K)nBL{3Loe$sg8)tyBNPFgmoB}Sk;qH8 zUJRUMJ(kP_1Se>abww=i7Rv={AX?V-r+G(mA+}n3u2TCMXP4uY_$W?j50K4 z5bo9-%JcGNGzLx1O3>UbeL?e>|AlXH;&JFJ#U(u_JL| z*DMbRs2`|N2d2G(mV;ALT+IC#4|t(QqKS6_@?w^FRyBgU>UKYoyE}m7VV<%RT_clSyhCM2?lytqJ-WJV}6q!%P zKlhtAu#`ssDU0~H(mqf6Uipy~It2cn1ryIAyfjIn;;xzAva~$#!^#7hzC5r2DTWM$ zlJfLP&FBB3@)$p$Q#iMu>PtbTSw|yo^VHxqd_Ji?kiL%EK87ZK4B>I^oYz^c%RsM1 zdSp5rOTxO4C-7CurD9~-l z{eA}8j(Ow?N@eF>mD>b_Nj;5U{ZrrFWBNC<2apdL1=OG9QI)8FNe%i<{?%#(;E(I| z>a{4_YMrNT4a@p81kGJ?hF^=db|-wu4<{9}>mxt1^m{%KtzwCye3l6gN+vrd{MJ5n zbsy!m z1|vLGIon%Yp=X*DA29unEW6w`0;weRcjf+Uf*t;;JmMw56a_rN-1JQ&bW&Ik7URx+ zmAW#@mqRmKeV7*FgSRjb%uUKY;Td2i=AR`G`+)zzea1iG`74}I@faIfAA@6TA1$d0 z2H9@=tsED0kYFqx%NEAOIezAV6>G$XX#Vg`@q7z-_eh}$Onnl}mro@P(}}sA#oYAc zGqDpibK%)ps=2eu;8p(I+3A%B&;%CfjEvl|M9hVsO$I8)A{-5F(YMT*yO!8mJ}!W{ zXR(i%*9GL7{8JzLZi{3Jueq}*xNK?sB#&bLH7 z#F5aryYeE_aTAP`8#JWwb*=t$>}VnypAJb#&;uHpQrJ4R_vS1Q?sv7`4hiP8>8ow! zd}Kzgyq4VaBT-*O%4ZFp;lk{VZTNaTJk5)sVW%-!i}L2VMo}8S+LTpc{MsGHuY)#< z(DbbaHwjKCIu{{n;dgGCTiH#K+a5_J9@Y6Dk8oU3s%2*?@ib$eox!}UQd?^oa?4ms z8T~5+Gxiw-LD@j!=~Uv*RN}m3deprcL^hg@kw+`P4hB}8(&Ncz2b0@2Gs1c{sl&(R zk(O!ex>d^1P5DneXwv>-?Y4~!xaiJXs@>n{sX(U3$!Dt5N^F3XO$=6X7PC_g`-n;1>aHx?;BMi&6?u&7@T2X z#)?xSgvm@ZOa*V6$wq@$GQqH|>fL%<{Zdm_BP>pD z9f&0ciBBvnmN<+fqw`gxgn2L8Phz(4YeUE@D!AK@oW0Dtao@c(he`0|d2mp;@=N?|_F9Qpl3Pl8&LYv&Mc zoIpn_B&0Nw%=WZyO<)QnmX^6?OHA|BO98ZC)1frdiFQR3(ni`E2XnT#=`YtTYTI^DjR+M_s59?NDZ*R2i0y8kGYG(-JM+4!f*#^! z*or4&;YQmqUpMe|qkHw&(AR!#PtKy5mKvfrfp8hq(3E0)@nq(h^X-DZWM-~{%qKJ_)E<&*RgkWs%fCnkp^+NYd-KmEy|v1%w+*xf14+eWzGm=b7$%gw{x@w?|4H62*VIg;w{_ zJ0yWh!fS*3{L`?&Dn{c5wZ9z_(SkkF8SD|23OQ}5*qWFI0*=afjG4?-+xJq5`(%WC zZ=mJARLe*z@w0)%2p+_fa-7B9vK?qFj-Q#uaj3i5n+1cp{g5|hq$yd@+H`E9+Fgk6 zh2&VAV1_o+vQcM_F-U0H?l#&u7?Xm_g5Yts#kns+fi(nSa3rkZr=x<~5oK?|uv87o z%BC&Ebda#a)zzyN=f2<#6EaC`APx?;Ahl=+tPMN=D3K)Fq)O|itn+T?qLixY+fwEp zFk45lqmRL%$|HNok%}(ZNtuzAN44=f7W{vM6GHJzQ3ySCumP?yTW()O}oW6V;A&&-jqEc!=u+AoCTAx zw7my?`&5y9PA}@w;XaesW4Q)77p=?MXgZjiAhlL=n&%L}DhqgsWQ>Z}u9x_b2dIZ)@g1|x$ zw5x54wkN*e<+Lt`_fr_ix95JLNcuPcRkoxGgYIk6q=vj8dhb@*gXHX%A5XN7=f~qM z#*YRSO4i{E!H)|>UEDJTVt37tH{avWU<T+@yfFOmjZs5J+87qae(wDNGtG=v z=Te>#`GztnR~5uOS>e9$ufB&iv9EB=A!&mk_$RcdH&#@xV%d|nE-2bXr)FWgtP9Un zxN1wowi=5KwoZ4Fn7`3`Nb&S2F&8#UrC6%IL9|_Tx|fwUq!Rv|o-CE0kaS=8Q*CJ` z;?LhcvrGP93Xb8=OacEx`11-QE6<;uON~Ey#aqIkcUfd!ehv>w_k}<1)8fKJ{P~{6 zOxV7<#`8zOFEoF~`+Hz=VQete*4*Y#ubmphjv5TZgrq&yg{_2DQokhpUJhdwZh`4Ew@+|MxKn@|fy_PzOo)Qs~7!3>EOSZvhg zx|b-OG>8Ua?yB&L;bLQ7Ew8lo-)(kyjViJRqqfLiH`@kr%rDr0zSXZb9uZJ6vXhl` zWQ19(M}{6T5c;X0UjtT-RSV;D)T1W5jiBv~CGC|%iAvwY0;A*OZoz%sT*ajvguM=$%kcBu*uiLiBg zd{*6BhFp?BY5d%YMG=Q-v=>Fhk{Q3k?`rG4w_1`FpWg~R>B^q*pW=FryX#NaYt-gL z$Xd+WL5^6uTrQOLno!4sM@ZMGM3A;AgoA|cyi+_ztE`3`^*!TbXEM+98$-Rewg(^y zLbt?K)?X%k>-C1JKKdGy2w@!hmX~`#6t-&jtNYzNpGA$BO$}K+hvn}=g74-#si?j^ zNm}rWYX@z@*f(apSSoqJUbgixvQp9pUDFm1rnU@h6Q7T8YN{7+sHrzoc~b5ekzD8A z{cg2SA?B5TwrB|ru9k@*xFC_t)2avPr5I+*Yp&w=XL{W9)wXhJmOfP=0k8M%Cp)9{ zU*Peu2_F_7xrmT;tv2Igk z)eG#x8?eSVoXY>6E{oS!QX7#_Qp-h#Jz6Xf>=`~adU<_YsDZZ z?9QGtz6M2cq?EKR;q6FPb6&<3{%c=LqB;n`r)8l)Crbu&ezw zu-~`BFooUWPMZWJUZ<${&g8d-qJom8i}iKhZ$oYg7f;cCrHhe{uQq7oCaQZg+sA~c zE_b|ijF|~2h}mykjKr7!#7D-(ERAzGm=zW<@{l$`X5`LAcyJ1hx{W7giT4% z$24(v#)CkGvpYz0mEQbv@Xp3t8AHU}d*Gr;+a^d+QysB;X;HI;RlM&YtPVbgZe$(M zA1$6xi-SJMSH8W9oLhhl?X?)Z*dENom$qv9vrhGA_4?O3V1jL$#T<(oAUc-2Qq@)O z9;e-yd{~_$L+AD2TXvp%`bIV8s1J4f2O}fy<)p-0#FqT&8MpSR0hQ%GDpYZ0-64O3 zMKJlJ4|yqQ@PZ~Mvd(<(M*mxoe@oYiLbW#gvJcRln`&hSbbGAfM6TPYwL<$Ko1ZO| ztGwz1b$-6`yfR2$J=8S2hw#<_%QcAdHH4Q~>9rPdN#mw+)#A`Bzmkf1BjJBh=%CwG z;Pz7a3JzK}V$anGzP(87AA=J2`R$&*R$pL^>8)k?HX!-mL8e9WZ|fa&-gIlWl7ozD zwXv;+Z*|T#%F+||nL(M@fuQXurRgkb0d?@+(>yVdl5WN#IM1E?714sTgcd36Kz8eK z^^Ps{?wzrfXK8Um4h(ck+1Y2S0HapnZB&O=FRc$7A=JAgs*z zoj?dOCdk|mAd2=(k+j|tYPBWHx<+S2swdmvJC^khs@^H{M*6@CSR^#+rP;#NLYtkv z`BZC-oMKetzLC%gGg28EivhF=oP*@F(fxL{mQF_Bf>Ig1lz+tyXrlHe9dX5V`Sw;& zRrVCwvvm?`w4^^-?@4z5;pwxGQNuz83i%rhX1itkh z*!E#WH}>ZBZH@Lf*5p*UuP#!zQ;M5K_)I5=TDjRbMqiY(fGlwpYOX zJ9PSM!5Wb5bbq*BW1%}W7Q+8+DjIgyJToGuy2*6$sl>Mw^(|D$EG|J|X%~@J8$^&2 z+j9pX=6&xTDO>rf+-nq>yBeG1)gW*yzzfJmox5lW>dDT^#@8Ltzk{yu>3Sd!zg?Yq z+j_olP^&>p;FbYLhWIj^yU~_|_p?>ypUT{lebdKHyLV%3<(yg=aNBb|JfXzz7OQt} zAA5=?J% zk>66Dllr*KeUUXIof^JG|Na$=IPU%W=uq9sbSP^el%$^|~s}NP9WO)|7^3%iL=O`95+nj5PWe^tC#_gK^d7m< zpB>9VPWXB}Un@T`Xr1EObc$z}T|QHhCn<>{-}923cE2`Kl?lQGO153M1f8W1x!?1o z{i2E7FH97?JoNsqda}%h)pll8GgDZtH05RK2bwtpKwcS*sqbiwSjVbqf~&(CI?(pM z+MgD}yja}c*V-yjQ|e>2?*mRKHZaN&R-F>0TOvp$^oh$@67_jJ@CIR*CuCsG$SJl?(BUtJQM?3Z_!os|xI4F9Yh5iT_ z%}3fhn0D~peeBH4_fS4Pa zDtq1E>>|Qr2DB=K(RC8g9&+kXnDy`Oqf?ZadJd7D3aJ1KgI-T+6uHWm9Zq%wqCe%? zW8kapn@y+k?w0BtN+O*B!4$&L*9ORrKwXsKNWipR@id6*2W{4Wp?G23CTD}8*qx*u zm^CT2w)R1#nuF3_RjUrmr#eI1?bhZ+TB*=TubhkCFF(M~Cwg$g$2n;XEc!sKE1tM${ah`&WuLa=aDqb0qM^yKz4ij}s%59VeVy z2`H54P~n8@?1A!_`w(tQsa3Vw6zEwT(I5zDc$;YWq{p_}zy?-X6_Mx=6iI4z?V$v9 zL%jbtNhD1p7LKWhNnCnHoVcq(2nO<$BsHsIbg4O17r3fua<5SCM_cYnY{N+sJ7P_B zNU)HTH3|{?6rub20}@g0`U#OYC?v6kLF_Bp#^Uu-`RM6^qDXq9bek*_N~81yN z5-y7yBQsu9zNu6ZbWJW%EGkMxq0XVQ+_@Ez{HaRB5ycM7s^BQuCI-QO)7k8+YH#6V zX}ts_M+nJ&hJ@-B81gBVtl!~N1gVv>VjB3f$65pL zB7tw<-EFiwR zR3H@%;weJhZHQ&$TrG3wnqX#zGqjJ!thrW^-77Ya>gc|MkQfxm!2~FfrrImbHThJ^N_@XIMy&)|)1Y?u=CR&DCgQu7h}E@q zs%*rkULm5WcX!eEyjqEe$OeU|0t?5fmC2*Ol>c*7nZWsUO*r6yd501g*j=ajw@yJ9 zcS2s4F3rQeB$q5SMHbm$`gX*^O}2u-Tdu|SwxPz}odeTn4jPxMJeOxiTwakoOn7`& z9?u5h`LD^I&4H9LJZ6bF;xTEMK3yRO+ej*}A3U;m3fbENGPoF;R-HoZt04<9BNf73 zy}M`c_1ql^k=qrLp@rkPJ8ATNn(;5Sp$j z(*Gie?lY6b6}bC~V(zxXT?F_*&)Uj}wHK7KR!G(fNrxfvv#b%-h3YS1Z9A;JK&-Vj zfg;ulS%;7v9FTcySX4ELg&+GLzkVIptPGN(H5A$!uXqduwyswQ&-L!!^%o`J4zCco zK_NW1a2(IeMi0^)K}0=pJ{@C5Nwm(F%=2=R{01TgDS#5~c(Q3n=F+`tT`a;YSvP%uw8eLUX!PQ1D=XV3YpYvLT;|@kqX*ocV1{thY89K7A4=-nEHNW>e~Y?Z)-}mUB=9$s8P}(s_Gl?#?!$8`{ zdz7h;@Xy#1{6NcPw(%#r)IOgAZEBjQ5kvZMJ06FTqZ?)sVi<($|o_&V6rKJmc(poB<3+6`z>_Exs@&nYA}} zicZiAN82YV$jd2{j1NjynGRz(=K1TsNGZrbGiIaA$H_>=AeoBvDuqxD0Uj^*HAf81@AN1TACh2xd+97V{YwI^$+R+2CY;4+| z%v=uG2v;oBH>cb2S^-(-W40<7=y+y^(J=_J{C*oe$tH``Xy4Q(ieIM>ryIvB`yNEz z2NJ)5QljjZo|M%B6k5NWwd-x&_kN?CMn4BM1>6ahs!J$s>85}?YYGMY^Gzz?fFbcx z6&3chnox8hc5`_f&0rvu>@T^1X}5;FLxC5eNkD2Eya9#&5e7^p7WG+-F;G z&<{gkUYYdRke0Z+hj_{E=9Zm!B4KjFEtjh5s}K$JQHn>lE-+whF@90fig4|AhFY zvTjgp+`T(+sDyuFr+6iD4jiF=v3r$4nt?d+RAwA* zM8f005DBb0_*J?=Zfugnl>X?MRf^_xuZqT-B6yRR4{!D{-CHGU3U^O54fLzfO{rcj zZAaHYrLQw4MP57O{AGi`jtN20mNzXDCk~?`ckQop!Qpw4EXeM}_)S!P^x}Pi$G>J@ z@Mlf5J~&a5B7ZO1Q}Fl7iofpl??6{(vnGhYp|oMeGSWZws%!Vi+cdzCen7LSvF6vA zBMl9Fwe*WAp(#DG4|+GRH_?+u(w_DV4`EreTK>MBUKJ9TOlEYzjjfd(qd8S{F7i&2 zIQSS&DDMtEHRvgxnY8@dfnshW-O8L^OG^rITS3$}l!>5bwpZcW5zVDTfHk1dAncpR~VgW!!(ruV^e~ zG_=%QZC>h2VU#haxp}AYxI-jRSQu>s`ggp@?DPX(j7??EL}gFRXG|q1)kJWTQF%mF zy*ucFiR!8l|3}TY3wwmY>QdIUD5gx{84_il*BYKgLwhqR7!a*D$Y{&mQ1X74ysa(# zC65|T&e@#2ZGQL@GCpk{os>N4e%l(fnU``s-C7y`l1K4U7XFfzUk1XFd)UjT!4et5 zUA!OZ`_6-b=NSW;3%6PgAPef z@zqO6<0?7rN7cYTYnPObC-;MZuSOt18R2iYTI^g>#cVEeiGF|hq!@`aibSc_ns~+1no>0O52&Pow`8D=Ouwd zOJWl~2i~LQ0d%jN1fGiJzE|j!#LiOxRCf9nb#}_QeU>^qFVM(mx6)Lof~xedTCX%4 z$usJsJv>RN>wwA3bg$iaarRe18}n2rd`P);I8RBddOdaM3F(l5%~MiOU3%)UgLL%S zPSVj=J5f@8GktP{_w+ofLd{BO?g|N zC#ZmdN?BnU{{NLf#$4lo6%f{oQxuS4Tay^BLPt;aLEq3Y8#h%*E1r59CO=6G(3sV! zByh*;Bx)irKM2e$^UJIdd*L0Tk}mTs)Cu+_hq$&T(-I)g{sCeMDFCp8e;TW--R~)$ z=B92~Gjd~ls|^rtGj$5J;7w?~b0+j`+;XGNW>E2bvygXn8~Q$E-~GlRt^OJQ(5v_}P=oA{THy=vk zp5qkeQdRlHm$5Kjw23Ys<#@Yj*Iy`3AFOd z2$7*#4+tB={%71Qzl}^H+_iUB zUBPZ0E3$M5hE!*af@|SAFsaT;XTqR=MSGYVv~LPl!0P78FO&Q>+CWT=s`AU6p{W{J z48C_BqzpRwsQ*ycnPVr7>fvb9)nLtiDzAT%VohBzW(low;kb*}F|muUEp{ZgM6!zx zRpe(qg7PAO-<}0F`e0|5s31>vX6dP03Z(}cl|3)U*r;V&Q8dz^JPq!p$*ES|P+%5Z z5F1{tgA43H5vzC2`+(EGR0*OYnU-EG*Wq5p2a2E%hmz^?+Q{(@__|v^@D(cMAPimT zu|p3@ROdBv)IY{8+gp#l8c4^`56JUxT}4UUkNw*j6zB{HKcCFoiM{aF*fYf5?qeHn zb%Onpe_H_T0u>V24qz|2wf=Hq*ZA1_TRVQs+k5@nTwvz{TMuj}uy48bhSP|>#K+d% z+I1*z7x*_bDc}f|1y{He2dQczO&1(oske4MU)Yo`OD`|iYX`5FG|^?GmrvJwC+~0J zy(+zYmfpK~U&(uQdimk7M4i-F{_W`<{?YCr-~C+52V&|(U!D8@L-dHeS{p7{`UUvw zOW{AYCwN#;jQ^dxgs&DoRY^{LRAVt2p`4*#CI1i)5XY5ss{VMOg1FoMt`6y`yuE6d zy=yszNxz-^G~7lc@%zlqc+K>%cPNoSxV2d>op5$Dd7E>+_bZL}hD~M@r0L&ad2{F) z=T9+Dy^&Y<%*!k(@BPDy-qyc~z*Cuk_C(A*=t0PxgAo!q{tN>=DBz3_{K5kt*ZYqa zuvS276dh-W+0p~EaO!OiWD2Iv-StYk(fb6RZK-mJqt)MOJB4QOvABmR&31QgliIAG zhc^>D4s?yXa)nCfcXi|7y(y=vx9f_`|6RVaZAo`O)B1egX!t6?w-MquQS?^6c2oQw zJ6}4iBu}@?zr6QuRU79>{<&c6?_z&ho!e?j z`X;!)34P~`Ea_S`QBBG8byvi$tRM?TSr6O6=@!UAjeE-*R7mUoLyy|-I{)OG0_8Nb z!+Lxv<_w&r#OfyLO?s5i;-SlH)PUN(-cutM%;eSzHxsswJ|G~)yX!|i*0^3#3fA!j zdn!K{!Mdvw@GjX3Cy+>cnu6i18 zV%6!RI!P7A^a9f7OVpf+SGdPshs+&FQySHsde-WsADAjy6k`!|Q8F{*-k+Y!dgoEf z+Ek1F6=si)8Zrsig+SXXeLuAgDW$ z$SOhvicuQ>W5t9e^VR55uFr0fKxpJlE$uMAUHZB{akBQY!8yJ0PRz6orP| zFldK}9EPko;0Q!Q;idvvn~W@$8*`@`SxK5!k8+9#QU4Di8%VZM8^VQz4{Do<)?5W2 z;7tOFK#825Xua|TBWZ(LvRmm%vf1>+dP~6F>LgeUU_)*;OKUp-r2gAl-J!pl&rn=M z=mQvS!NGr8UWk)r(y4Nyep8IxjYi<&~W5)0FV>LxbJRnc3HO!bj zjb-y1vaLLzNV)SE;%6wnb>eu0feOIVAS)VqiMgTl2#QQqfM|$>5>el#H9d9?E_ZsZ z_YDaUVlfT$Ev|2Hz|X!GkLSvY>=!`IP+V5wjtI!=l&}t3ibXr$ehl8}96e8r@^pRw zBGo-nf841BKZqLkt<-4sg{fD9Kq)j>K|9{<3q5vwwLFW zSI}}%@8LC^*?gpg81;+OsR6CEqchx-zeZIviT*5Jl=gjf?Pp2EylL$e1Z~=S(BfGI zL6;)yVo;=_ygZo&40Byp*DX*QcxHxk-g;iu5!J3Qe_(=S!sIBDa`1T$rH7!?S1484 z`R|aN5N95xk*fx-g#D(>vv# zn4U8x#=k50AM7LjpWX$0Yf3JV(;{_Z>pMuyT;mz7cCPy|&I*7WPoPutCU%I`P$BFUXRf_M=cxDv0@7>7v#Q5evXM9!3^z@09 zz3(qxfOr!rv2~*U1pLn{KB-!wzR(r!yI%WbD(yIL%zKTylly#7ZCPsy1 zM=lp8#r{qgB-t+B7>6Hu?-nWmB3BrXnO836knzfsb(vktqcfCD9gd2o?$CO4N((`5 zy7NoN-9b;%AKrjuf}@#g286)6H&Bu7O812-&y03qXVQu*3up7xEOf1@E$*WubS)n- z;STBQRq9LTJrH)|{}=Z_8{TYThyE1-sh0|2#`G{Du_>D{_Q04=331+Nk2+rIh3PPUjZsn-uX0X?&aJ8?x;w}pKYHMF%3SK89ala>L%Py-3 zGEvf{P3Z44f}uLX4QOPVaOt)`Z%sT3*M@i-L&aj5yPWYIq`;$=j>fd#b-$^hjY6zbH6eTjP-0`6Bt*H-lb38v< z(wjBIq05!EJDziOVG6FM>^OgvXzuRPQ|D{q)b2!#_ZGek4gRoAsR`j8@oNss9iSao)?)Vv-<1;m zdyl_H_}{$u_}9N4{I9k%HTH`BdZt(17xtc>jqjZwbAQ=0J=Wb1i7CD})!cW63F_AW zkGpq)kGv}H|C8M;n+28($g=TPMu;$rfWxH_F3K$Iz^v{-Km%#5ZM>~1Dn#TGt=6pB zXf8yz$hMSviB)lHRpO->timj;yFsl+M99y235sySV2NO1X>Ira{ygV==lh*WvKK(x z{`a++@9muDJm-0y^PJ~A=Q-!(ts7jZtFk^O;$KGO&#HqvW@vZ0=BD3&WN*?N=(B$5 zd1n&j-DMFx`~K2Be1G(Tx%s2>R+E8R9nq|(83`4a^qcF;&ynmFY{GybJ=?kA&AvSz zq!uT0yOBRF08;DR!94~z_Z^X6NJf)Dyrs}cPwd@eewKMd*<(kyY$_!3{j*3p04cy3 z_q9+7YAjp*`FHwh1EWcs-sRNDY~W(->=L+cDWe{JEkuj!6w=mHplU(%AHa$QxNsqTbyjS#i#V>raK#v3N_;}R1R+U}*Ujt| zJuYS9R&6=Z<3CH!ED&$@4-wJmz)gu4oT?{3Lf4(+(g_F6pp|> zPFb+Lx#KUqDk(;u9K=^2_E(zaak42x{Nt*8>DFdM&MS;Ipz>*4Dn%QUtL%FpNA5yo8bT-W*eF{rXc5jemt4ol&^13$gql52jOhJf)ZSEgJ z%BCW`A=TT(x^-3JWaldbO%~WD0VTXeHW3Z&Q{hoT zQTm+YilwC2?qXRxyxXEQm{FFMkIE_w&)!1}R+%mN?7y8-=lLnPA+cnJ0lGxt&m8>;)GugNJ8VfvPCShAVWSEAbR zY0Vr7Sqgn$x0&AhroIQLQ27VZi$zU+{d#dn^kQ*S-;*Fv{$li^;fk9S1}LmV4fVXoH3MhYLvFp^`tW{zKR>JYTfGApE(!qp?mw&duHJ#d z;)PkV(H54g8d*vv{JrH@aOc!_csjL7VmoGL051@}3fEV5ABn4EHSGq1c<8HCT1!nu zmmaH974A*oKD}mO(OlH)YfxV_lapxi))$6kBuY^{2uEE>Mh1AD1b2Avw@L#C*FdYE zc}&)Jz)@`2q-D?cF z(o-*L?_sz?eMkDr*>`wyZ{-){T4rV_-V6;%9t{Qo6IZX#kRlZLGpvn)u+KZ>uD%{f>T21^sy7hNpH>^fgV=fB1duAo@BR6gKLl^hVr& z%TSQX@HzFL9hwr9EtlhlGiQUJxQ*mQWbovUZrKk`By@d6Ju80fz?PxW$$*Y{P-r;SbNf00-g)_1p8eFXnxT_Y(w8-LCG9 z9&D0pnh^gI-CT<2G|#N{vuy@v>8YkziZ{M)BtPrk{BAiPbq+6H)rS9S+N>i2;#E~T z>-Kz_s+RZVb3mK|A_G!Rt$mwv9z|D4k_&V)?m+vS(b?xdj8<6PE2!l-5nae#5j~y{3)5MlI zcN`cFwBPIZ+i$;jsCb{dRP<=SXCVJW)_b?#GnD_KQKOCXyARJH_6h%cTVw@At#!Wj z!R)wj%fKWKZXDfsqKAt7D(p==4(kt)wksyLI=nXTV9G#ocA)*&I>$r@ow#e>Bb2re z`;RJ?bfQHk9}#K#V_e`z59Wfk(Jq2iYfk%@u)T|@bap>_;)O+^f~ ze`TonPZFH(U#SdZ1Nkp1!`M*qivvZaE>FfWI-9EK#eBtmweuBwK0mM!{P$Rvb_6ow za5jW8C46>DHz-~Cw@0s)j`h}O8%O193}rw+u+1tLksO`>DKA}dVhXa(=FdxHj&VPs6Xqc zK&e~(%MA#*+tKXxX^&9raXo*lAy{Pmg)2Kc#3!5BV$kq`gj)c@4i0NtE+6pQb)DIJ z#mVKBZrA&m{kgtnBcDmt%LRRP3dmn>apdlBYzfHM#YdSF@ZfU^Z+Gr;|;9vg|{kRqVDDHGv!-X#$Ln#Pz2>~^?k=K16 z>w=Q5=U(NWIsK03Q-~htDZkg3^wE``Ql>E&ORiX>k}e4)<$!aE66S^urj*+O)dB}5 z+7%}BIDZI*rQIwd#!U+eTS%B*HW8{@zOf=N($DJ=26h=`6s4b2 z*7rSC*YuGR>=ZvvK&u|4mG|1`6KE%v&+zvztLsG~_{tuj}cvj};=dlmk3WGG3N_eO2?UY_w{f6t$Sj4KNXbM?|c|<>x z`(`REl5+x=ez>DgM9_!Dk3+c=Z5sH?@~1^84bY|1)Q!d}Pt+Ap8kK@|g~=g+$A@o^ zHyu;|c+pf>wD}&O6#A$zNDs37k48Vq7hSABmi{OhKU(j6uvBph^q3)SaD&$JoltedMNs8X_kMeK z5ATZi*o)sl?M)Q5r}qEoT>LZEY+Bp~U?M)+pYli`WlTSfOHlzT0K4bSF||xgu9>owb23B-q261r+)*Nuc@ncPkk}?7F2@xZTQfjkCjc) z1UgMzt+ND1+>{L=()Xw-XF{W{#Jb_zXmz)JMV+UF>5}0lJ%&P=AJ~=B6z0% zfhQCFqqnG+SGP{Z{1h&Qr_ z_)(vdXkn0BLzEy5vWky!J{N4&v?Cc>Rcua>5S=hI$I_KyrAbaX1ts;~11$I?x01+h zZZ>%s$=#_(3ry&A4G)n4*dz)5C%T!6Wk|ZpI@yZo*iFU$oJ>lwAG;KWQ(AT;H(jec z=QtG*i*f-B-8*lLL^-kxjb5~ev}zlI$2yLW50#0&W8d)BQ!`0JeRm%~Lj9+O2_33I zdYa0FQm5VFkS%H`UVVuF1zPaYwBVy;1svt!Mt3^O>@27rOfpsVC`E>f{x18OdX2P> zg1^!5SnxW)R|bPDGSjw#3ld^%be9&XpaFcQ1iV|6&?cZ2;BVjrkWlfCgc4BwO?ccD zB=E@A&_|TD6|wITvSt+2V({W1BdZB=kx1%2V)mEg3ownrr;SesSlKXyaJ+P-LS zAd#H>R;`qo)B+%`rklfu|VBJkIO#4nh!bg;V`8UgVCT{co7jM&^VHpjJt^3gEI58 ztlCc_0g@5PX&MbYa;R6<3HWh+`2t0^n1%)OLkXAB#XN4 zdwKg@AFDJ%S*_1vsSZ6!g`ZuTmPab17Oh8|cr@eH;~6B#z2U=ZvT;{wFVE+tChuqt z`obOYjH_ikbS0ZK_1z=<#q+`cx9j!_ew%fchqe@l8`ljkD-IX9tZgi^K_1vZgbSM! z&R43uujw_u=+=0wI~tGK_(Gohz7p+CTSK-xW~LZ#+(%x&%#Fm$&-672Tnph!HRsB8c$=Wk=E`7c~ zn`tPWM6Xr*C)Rv_nCbf6eZTZq$?pq~FDCu4;xHRpgiRDm3c5+HE zSM9G^N5&QV+pJ@soCsR{!N1=v{*3(?c_a3$RL0+6~e&1jLSXfFtUk1nR8Q;U!b34ms!XWch?d@F*> zp7~R5s3H>;#>XDVO_K4*pBVU`98U(WixU3dvyAVru9<`Hjn68+iS~+Ws0^`IlzpSD zv5t)21t|_1IaZE)*^fx)HA?Le*6R%5_jn_~`ZwRJ8QVv$^}Slwd>O6}H&LV}5@Tla zcg@Lf1BzmG{tqYeCwjnz^DnQ?|H%dNNAnSr1*YD{kXKbVr#`wcaIMXntVRa;TbtrX zQpnVN(<-7QwT&O$-8A#+R!8pJGRz5W_%;rs!5ke56jb0!!CgFkV%QlWF@Aow$~$3h zc@O@qQeGGzW|$c~mA|8f)zM+V`rcXZgp;A0kZ(B@68@h?@Bf*!uuq-0*sjJk?taaF zGxW40xOfNzaTk5Td^h@X9&qWWx0owu3(Zat=g#k2dqe4eYSOx>; z2xpkA@FgTGw!f-8ZgKi0O13xYJ0$uvmYV+5nnjx{f8L9TIav4!RvqodoGGEB%~7om zQ5B(J$Qw^cfDcK{Kf`_#w*_Ek-}w%+z}NFL=*RmZ_GEGi}tG!2|DG>8ZhQD zdwFY$JNF**C|bL+usHi6cE!E=77s2blnbgKKeBILbEiIpP0`>%kCaSLw5#)r6t)q( zQ+x!~D2m_j;>XeRBg;D{aMt}`hu~Ob{u=goGhNlCa=N2|w90Gsk-qn$qm$Ipa9g!j zwYv17yL@}#Up$_#sjuYMjUc>AkC;@~_l^IwKz-kG$1|>P_YUg&i|uFl!jnJO>#n9v|68Zn)xIT#Icq2GIBS$L{6RaY ztgzvEI4V9vie2R{N5XAtGA@_qEU8oD*Flpj$HqaX<#F6<}?72AyyM@so8)_|h&vW{4r(B?dD3U{VB zzsuzQ!oeFeH0YJzv?-g}ZA{tNS!Czpob)pvo<7o!UcYk<6)&hpZSFsp+484zaRi;q zl#uN>g}Qc+`}Z%^#!aSNQ3mc0)`tDC&SOTB?bRdCk(~{EJo?s3cF~+mnDY559;!jorM>)@C!W;Z z=ST1m1zDV6qLw?n%!ETIu-}s!3*RbDG9If73(DVp{sTe}vv7W2e>EQ?0&dqhkIUV_EnErFNrx>TRxcko%=6-)expOqvyGdn4rK0F z<{@nUX9|q`S=8t>mHf=%$N2x%%YS$H_cJy5wD5=D8A(an{rv5ImaKZn?&UF|8-`!)hgx$b* zhj1#%?!GVDL;mX+|LiXR5$KZLeZOe;^>?qI7k*n|@W7TtFJ1dQAAgGu-`T7Y?6ru4 zILoWPtyy<|kPg^7pMMm7hJ-H;39Fe2Uu(;+eNOVL(OouB%aiKw=g;|G3vW-)6?kSp z?2i7jFXnz~A?5;r3Dt}dz*i_pdjDF279}>@@UySeFEC-v5PyGE$dytnS zu-WJ4-xIy|^gS;B4n~M`;m6p{gRD{SHVxKG6Jx9`V!ra??|UhUr2Lt9I-=TsP53|O)hCJX6^m;3_2tAnt7xdRpIp_hVEom)>Fp<~ zvhn)$QS5oqgt=F3z}8-ZE)!N~kz#eH<}O(CkPskJ#rB`!H+KuQ3a+}5{B~;ow=5_Fi!nxLC)9*XlVCCp7E|PKykeSsErDke`RVPsH2a~gxcHw$V%7yN-*AG* zF_Q5Lez@!}?L;dQJ)A@cbh2h&D`7@=Dcv=zJ4tCo)Lg*e(tr#@IQBVL;*S=ZACkpo zfv+$5l|~hz0-ENo5*>ETb?>}J&I&3zMW!(XN0mh^wHtn(yv0VYDf5?lZ)Bz@S6*ei zYCF?Vd;{|WYtJ6VQKE&NOS--SRghTW0eB>ykjuCH+VC0W!xjlOA~KvOV3QSMBG!A6PQsUcuH4v4Vr%t%2Sev<&M!zC=?JJ^uV^PY)ZRYJ@(r;$vT?CN_v6 ze?j@7N$hd7iEakZVv{kAufaQ?D-4Qj_FjD4<9=!z{(rll)ZmvA`$=8P15r%OkEGS4 zT-Z4_$J66a=rsed&ABw8llvqrtMAz7qS!)PZXW+cagBIP3D?JFzB+F*@aC!z0bu z+S=B{;$*sobWa>c>$lz#f?K3Xm>w9jYuErFgx88B(SAa9AK~0rTDkalK=@`5-M6W6x%@&HVQ{OX^3?RR}8p@NZu0N}#nXpioVEmCj7b=I!o z5G0-z?;Fkp(DauIwkzc7D2zl?9AXg#^8-D@?xn{PWdx1RcajF;5zz5n8Cms3W5YHC*^jcPYx z*S$LN0PcI}k_>ns`A}DnGrF#G=l?}LEBSm1E#_lI-^P|hsGu$BYx-(QJTPI~djDc` zI&-+x0r5i5n%djW8A?90$Z8)FZrCP~VuX>XwdAvV-C|D~x1A+U!Z59hr<-o6+qZI2 z*d9=MxH4ZH!hgt^G*m_5OWwcfu%cg#qEU4uO{PzHE3Uw6fuE_>6P-}zRbBwZMP$D6Kv=j-42rYl1dAz%fYmn6~ORDvNyKUwbb ziACQzZzoJeT1_f*v+zSLP5N(dRY};gW$|hsGDq_eKlHEA_s$%np_%)2Z>@uvfLlMKg+e*J3Sq`KCT9*txB1P~$Y40fhy1;0-?&n8`g@VcaIVk_!3b; z8_TG@x+S4|D9p?nyeL6(8%8(H!O$u|(* zqnR3c>ArHc9O|)V&IpF7ajuifRw285{Ykn%WnUx0%F2l-8xfNk^eDN;fvvs<)Z~y|r zYfIf$ILS1Ceo#socaCALuY52#){wG=KeYVh!;n+Lcd4Dh0IH?3_{n-$eTtx6YrFx0bT#6;s_jtfN4Tu;rLGX#qq?V5yHYB!L#dULDur5Q4OeS{G9r9;`A4bWfRfrA!istc{){WUp{1$2;sNI*n zi7R8z2}$hogJOBAE+_6kyw)g!WoOHyD90TH``$d(!~_H68} zm0UEL2YD=)w6X;TX9GyP0&>(q#&xr2JFzy_iJ?B3xIQ;nu9&X&94p60U-qF~lG557 z%C;+IZ>oV}&+|&_ENu&E{VkWYGKI?21%P%1;D7;)D`U^q(wYjDX^tz?Yq{de*mFW! zr+nesTQ8-gL2o*qrA_RLX6T9Ai5?b~)4G6yHZKfHtlIz?9vaZZ5?bHRj^K8zIj zY6?h7Tt_I-t`wL_7MR(M#Fawf6LI0`WZ`fEGW-5IOCgkfCYPkdO3&QPU@0uO9fzd z9aKLa!K!rS>b_$aZe{$2mvH*S`>`K+*u@#L$)U?ofghQreO2QS^?X@PGcjQ4RB zl@wrV{72;Lcyh1g|b6DBcE;xoV?k)F8iE02$9<-l+LImV-^0LeA z#+RO32_0dzb%Bi^n0Y|!_VVoBbDu{pT|U@t4UnKG<&_7O*Qgg`GV^x)M9JZm=!KRL zy)=KIy0gs^ax53&R=2qDmXZy98>yjQ0~t!{r_Ue#M*a@>q@8RlPafY31%^!p_epyf zMo|U#sqlz!GpPESG?7c8Pn84pVLu3f(0~s{FJrsnzipruu(tB?fhp7KWf zo^)*$ zG=zwD368El_T0VlhaSS1L5R(^EqV@ua;yZ!d??|ZS1?FRGxa@O@Am(J7ZI3)m!ix$ zSlVOmjesrJ&6rU`Rs>JMr9ZvL7d9FSi%c`ShQikR!n(X@qPTtHFw9kyZQty!!i$hm zW97BBlP+6OrCjgb9+R9fDMXn3h%#r`dvI6zt-g(bNzT1GU{VU0jO&VWwQIm6o2a%= zcdb97p6aV>ao_u{FEFD5vt^FTP}Tn&(B%$8CxS7D3N>r|J=0Kh#kL?7Aa} zh9=g;|J!cru<(7&=@K<{iX76-da=se_yi~diXZ5%T0hPvcEoFJeKR|8=wuyZNhiJO6><;(V(-jl}j@@(D zyXic+?^Pzl{nFC8@ehOT;P4%ApsXpaSJ!HHx6M}IL`T5uH7GKdPw)x*Zm}bnk6M{E zG#z2s?vT?0CY{L`UFo(;{B@`87aJz$Jw6dXv+knGnx8;*V}1Pn?l9L7bXgFM`1>Jy z$ba2J`At4DUI~rRy4)7_bCM9Ed=N}8`2M`f98(vKdVx;iyh(28g)d}TN>ZO2Jldo3 z0x#=20z5!T^2n8)|NP1TxCS0&g{~pv{^beZNB}@{R0rd`H^bE3e7c`lN`&k~pJe_Q z?l%AB3+Ja8)(?K+1K#3-G9r(fjDDr?3R)6c*hq zV+p;ExGz7?vteLmyb9ywUACp^sccGkD*J|EoygFzxm=TuPWLrZOHP>3!Q^xQe2yN& zLPg$0n|6HR0_Io4dw0`nQQF52$nY^^vMP|Jq3Hl`6Ge9BxVlF2>+0UmbXEC_3)b({ z-PdpGuzjiDXRGUXzykIA?)i!OU7UMn^}82osMJq3aaiplQ;f!BEuve()Dz8Y!@$eM z#mnmpXIz-NW*Pjty#A_=^7*pltfA$s-ACyz)1H)R~nGxp2DMqj;a z-C+MF!5kd9!CywX4E5`ThJpT@xnDOp;;rn>&Yt>bxj?OcKO?ur#U4EC$x$lB|-=iw1O(`WVYsh3-~;W`!kA#PcwV^@gZM2;Q()4bF_ zh72Q1R@tznUmhTU*=5jD6oxl%A`vfz*}7o^yKcDHvu0?s)o1vlLaQ)5GOf#Cv6G@T z@&iW=&(;loR8FXMBQHFRT~K+FyKFTF!>$?Fe3pG5(J%(OX@mmZ+H@H%G`my2sfxCD z5fs<0D(1V0mqS2D8ZBYJcT4r#Qy470tm%NE5n-jR+YdWUK~L>%Vz5i0W*4syUs8!EYwE{u#!ft9O&iOI*v$f$4}*=#Q#VV=(@ zVlM;jx-`%n5mHU5{w<_#N{x)$W%GnCt2SpTscF?n+AjSmT{7X~UuHs*&6_O4NUvS` zyScc`F{)HPTRw$SJSR4*6eMblizM1A(l3`QXVMhd8rMDk0UzMk-9xiK^fyv8V*5^kq#vq?C;cN#Gc$GK5dG$&6XC^rPwTP`n27; z4ENhpAkj)lG%{k1k3+BFU{7j!f|zPFh_1Y3=0tV*7IND^rGx>sKea)y zc6~+!9hI7P|M+~%G-dmPB6}d{SxxpSP9owY;|a(!tpYxDq@~qbvjA|p2Ux1)o&adc zt@jDXE3e0SJ?SoBSp_`XY#|WsjiDgd`oSP`#(Tx%#TcLYEqW$0l~0pmfeM}=MpPP0 zCo#p^%Y(4(y9beqw;@WZTz>+TJ&y|JhHX;KNppKs#oi{`A&S=~Sv(;Px@Wxf6h{&-S3nB zzwFu2|BWAbdiwvx)>dlt|6hg%^!wEREv8oXUjI{H_xJ`Ox)1u_hEjW}|9#r0tN*XG z>g-YfA7RN%U3vY_X{^sk|Eo_$0C%VV-(e}Hr4l3kzrtSao&JBJrA_L853p2G^g;jo zgmd)&1@r6wfw@XM>R`^?wzv9!(MIWiMCtdW|L>ev|1*AOjAVoT$>6z=&%p=bb7gu< zUWkt3FqWCkZE4PpkyW>ygoJ~@{e$($nnlxS$?gAdQY*n}kdq?;tHm7CxK-TOFBVHG zUckQE9mt;reEz5!pBsO*JA8iIzI%MsKbEY2|6EJ2t~>IresE;#hNc)LOt0Y}isAfk zv_Ni9W>aJSO5mN5LpR2uXFCV%+zZ9EmDI=}?sZZo_I~-ZwpJS%0#c84CUF=)gRm&RIl-|3$4>25Q1K==DyWCm+N(Dx{G1YrF z^JB6WwV@v88L)C_xII-EDK`L!l%A+@CIEYD}gC52Y9jt)DAxRY4;tYk*z}Xl0F9Mkao3Z@y*s=+EIfCGD6ysmlMLyFDY(; z6*TwuI#)2WH9u;k93>xY;V;^jE~ZA!`7@Edj-1OiXaA&Mo<@CM7}e*uDT(AWtIxO{ z#Qp5l2mRgUU2rJ=Lg*vf)C=(7!)iOE13DGiML&==zw;^KDDa%Rkeqwyp@hmNMd(6W z)j_qonKpB8RRz>^MHGE{4u)N(?{&~AC|JFT}PyNiFPj{y-v(4$ii%?fpxXOt28PJQ#BFImWZF) zO?@(R>+^>{Td+RwdYhj!g62dx_ z+w4N`tNz?lcx%Z4xkSowY-kx71xiB? z6+3v(eIpkh6;H$~Vu@ySuo$G7g}GVAxG?vCIr{~qBYW0JUd`fZchxtK!1Ubj)i=~+ z;8nFRgLxFQ|HAZ%@obn^gGCx(K1W8F#yHH+5pD1P8$i@OVHb|3gzd}@l5C_%{FC>T z%$83KnEmD9hS@X#oYB1*@YCdRHIp*st0`xeGR)5#+`SkA@e#4lw>b;@JUF6;;y&>z zu>*#lMQITpqDPl6b%Kv3!g-ZCL5j)RQU_-K6-a!YLi}e1^gC}hDY0=18$b}q0#bGG ziUf^z@sm-5BQ_gQPa*xNN??rW;{Ig4l~#83v{`2qubVs#P2 z0Z4)W@lV;$(LcnfF1^-sz#C+o|LhAdVsXZAO_t<5%zaHzFUFQG7UP*$dt6n{&d`-m zV+p_dG)ca6YenqK-<{K+WGnrNiCS=}Fx$f^rS0ib`BQ+I3hnVmfe-Ofgzy9yxQ{gI zqu;GV5jUf}lqL_!SwF8g?uQ2`S+vN^ubnT9_)uau{umoVG+pi&>}nVP?)6RY_3JU4 zGSQO>2|09i>wiNI>V27xg1*e1cezJmoNtw|pT4hK*iZdcw8p*|Xu0HPHWmJ8CqBWOCm6RHE7vN2g`wNBrK-f{ejw((9z7>!TVduWOOy5Kq@^z>} z#^q6dO)m7Ln&+(2b>KU6y&VN1O8A%Jn=%^z-Yk*<@8zPz%iWf@`NuQ0>&Thfg5(QA zhSa*cf8et)9M?-ej_Dc)jhQp+Xq0cItXwEdSND&htkY-y!SdNI5E@ldmetUMz22{i zN8(iDwMU|jtWjTYyi@Td%brV%D!Sh_iRhe$=$vLEr2rX3N*CVS>41pTQl`XC3X+J5 z2+KlQf;IpIl3GP{FQ}Vz-LOskzEhMr-Tm8J44R$%Yo%P`OVNc=j-&MBD8+Wow(3|T zFrM{&o9^zQ$_U98UXEO#da!g4_{Hg^vagFi?Mgm8K(DS$w@hme#&!zBevct0%a=%zb zK$Xw^v&C))_K`UqGTSxS3onrE8I;2-m-<3Pq?x-_LinPZ$PN&%jU!xTPqgUwbl9(!sDe1{%2!pr|6zEKZu6=A zim2Pd>s<8O9T+fS&|nUq(5)3DI3-~N)h4(~2~7&Czu00O&W3FgGfdb}qiq4Qb%6YY z*TwKUBTd5({w6`*5+IN1iWH7>O~Jd> z=tL1Bt!`J{d5AgQ+x!g+=f_W_vOvP@0Yj%v?>gN1k~i+4C+;qHI9ojH5oF=0-cjX% zCyQ+Es4q0#Jn05MRD){88BC2mzA`-&-~8P__5i7=p%6;Sy8b_kO5%f-1cd6=tF3wJ;S%G;5HIiJ^76R}OwWg9g^M{F(K#?k<8ENqn9p9PtQp*ov<8 z=M}7Gz2h*R$W@@QI^|v=>GGvx$M$W-?XPRtstNsya9aPJlMGPeq({@290c52J56Sj zr47xOrZmd4n^K!5d54Ojg(?qd8QnSyBbsbL*t$foZl&wd*Pg-%U7cG80KGHvQTWD| zUcEuV*wxZx^oBH%@JS5Wjx8*wrAJZ?!UP2T&J_l6SyNa_`0!(yo5O>j14(;IGY6ut z)|0C4tM1T4qmuF?$M@RC!jW3p*#O0IvS;!4i%uCO1j>YO6;=a&a(WHJBpDYHiU6O^ zS_5YoI4L=#$+|xW+f9)a0MFW^!J|%cy^kO0ud4>Pb_4>SC`D zs3kO0UW7v!c+91axa*3yZ~&Q#j7WiK@WDSah>b$KUQ-y!XH}*8w9Du_+fGN~Rg*ye z+)=ftkNxN8#IUWK%5vM$*mm?OgjCVpQ-Nke?<+mET{~GyAj1*L&gxrYsVF%v6t&PCz1ztG#u>3;#`=Pk^O@)l*Z|-*d z{e*${tGH~mZemmUK|ZZ5f}k~Zu0i%8zxv2;GxZ3Lo@>H;-QbfP5z1$#1iB7>w0A?oC^ zz5hIZ>)f5ckz81Ecpz(%U|0h+=ovF;jPc2t$g1JixH1fy6VNpmmD%5)sry0Ww}$DS z@vObP-sU{>J$ji(m-J5qK>tYWbO}zGVOy)<+Cde8>Y{;kTb3?_p_>9{eHJwbWJXW! zDZE0Y?I3NZrR^YXCu!@920m&(EHtQ!u2vn~Fg*-8+h$%Rst^0r@;eXqcPamfg-p9Q z`eX$a(4M0Xg#xwuQ(M!fczfQo_O|w3bx4%qB%dK$))4AKHUHpM_SsQcjqXFX8Z5+* zXDG2dQQ{#UKw7ZPB?of7sx|=BA}r#|e3^)XnTW$VglTgM7?hf?!M5hZq#b0CrP zXrGgr5EPV}Gue!Yv&#CnZ1g>le^j$rkD}uG|C*dn*e}O1MdWb29FQh}w0dlpyUj|f%{+dT+>+(qnGGsuVSUG^Ml*nv%XXS|9pZiPsaRACmK30hQPP9aMb;_2f%Jw5*f0t?p^3!2=Tp zLfDar4+9^=$`6&t!J@9}WPtjsR!IeRN*Q+P7$h`io3aUgG3!sEugdAr(mqRQum9%j z{&iu7Gg^2f(~`a5y2%9%%z%_BiN(?54)~MEP%!I;v^f>ms$zOAeefEN_-FT78`O9| zO2y;B=zWtC2mP_M>42HH1h+`1jL{nmk`3D;PfMfAA=pAED-5$}hbtGAZxB|QP?^Tn z<64U4u8|&y-a`m{Wl+OL88~7Rr?eer|cramVbS$2f}DCe?lJ$0eH$f z<%*=haWT$YJ(ccD_8+27=U~i?t?+0=2JiA%huu9TOr!O$J&K0l$9SS#BiDLY+Y7`R zs5MGzs8zGI_hs+2MR;WE){xm#EqGTV$*HhElAhoZ=KGj{MttLWJUkER%5y0^8>^xr z0&H*9M@ytGS+Y7EQaWAvXgT;;5cpa9xYbLeLPAbm=VhovOoG0O{P=Qjg}E}?A7B_I zUgH&~h>CLoPRrEa4`0b9I3QA2a{&7RQIsvfPu6`DHHx)h?zf7y;14%RyGgB5176zQ zM6huAm*Qeg{@3m<{}=-fpZ};ze%Tu()wg1A_;^e@)KN_r^2cKNQwhpAm5uf}>vj0Y zQm$yCEoh=qeTu^gW-$$?c|C;+OJhlnH>HXbn2ae410Y~y?VxiH|HK18jYVOnu>rPe zu0B!#tvaMWi$5JMj=G&61wuG7BO$-gF*$xgktEiau7j^$0wRfy_7?HNpzjifb@eE; zu)hpq>_tKPB@AvQ0lC76wj|&BBauyaZ~n1&0G}e?@5e+gjVHv)uBR|L>%a*CL_k=@pZtYS$05F7$khJ~yo>P1pBsT%cDSQ&Giqd!|pk zXjzUQzuH&z{F!eXB!SgVS!b+Hy<-pDP+D$Vb+16-Un-x+|pY2B1ZfH>y&2wR(hJuS+YcJEHHuSqR0x z(D&Ws5JmQezUlk+MBgt=?T)^;{*Ti)V6Z#-hIrnb`#F*)FOIxP3^V#hV7(KgGCph-62 zB3#PEEmK~m=959ftobB8!(Iq$%3E&3P{92T%WGbXi*yjb2+qZ|!)*-ISWn6W0bUK- zJQ2zsyl%JwuM@7siqekve=Ah%fsA`$XnE-hzVFJ!sn4`@4<9o*@SuH zc-cy_6WHJ(TVMWhq(Z!XGvN_cCEbli65-uP*f703AFK91%-AawQV8?>%>i=zNI~`0 z95zWIz^_feZMW$+JR&o}j`;E+3X<~<*ATG6P!MV;;7OB7i=@}+2HXol3x)v)iny0F zCJ`fny4{75;Nb>LkEFj_nUMZyr!;wDfz=vWvF?vQVD0`q=zE@-jLTKo3>}FOy|ZG9 zX18x_vDi8F0O}R=uQ0Owj`OwJa~egTKA|+Qb=^p?VP zf?ei56k1nM8{!Y&Q<8ftY`DP-J&e#^k@_e5Gp9jZ#s2J9e?dVAC$UxXsuj6dEbrv@ z{tpV!_Wlun(Nnz}=z;?6KMm)r{&cALvw`Byf&5eK)3kF-z0I$uB*DcA_p&c6shc@P zFZ%Z97Th0Uxib)gKmhg#q2{j(MI1E$Q}f2Id;=YBEX8}BI zp=k##4OJDDr+uibQ(b7rV-@9^;vVI*`lf7jHzPjpL0^X3)GPoVVJPe3{^|L&puyKTW*&tTpmgsw^m z$KB3lOmrWqLUFhQu6{T_qs55|IQ$4eP55>qRlQ&m$>5HDwOKOF6~0lu^v>H`>7VP| zc_&12MG0FXPq8KdK2OmmSSk1O0|Y!js?v%Kn+ z{-%*Xjq2E6&8UIo@t+9&g(Ys%B<@c@(CRl1q)9JvQ$gYoz#wt*{twzmdF6 zi(eIem+y#$jrk4&r*@?*J3^jDkV;9mS;gEF$>%JANO_<1M62vdsy%p->vR55W?J8Gkt zhQ}!wmvTog4vZ6TrYWmtzdMwQZ~q`Ze{f?pKce)ikh?dW1zEHC1ti;NdcB0LPZ6+r z>2)(_U)9p<@$-yczvYsk*T4T&px2s$fA8M#+1*`QKKZ z|47*q^XBiFQ+`h6A6K3K9G&1Q)S~VkG=bHI%m<>K%I#`AlBB(Ohx+w&|_V#A&wbW=A$rq3X3f$lgx( zp``Mcx~FmQmv1DSLs!ot)=p~RFg{G924>Oiqoi{yZo)vQ(FD)Un`9rs1?U_Ir_RGY zU&@geD}EH-yTQXMl0EINU1?p%r1c8Z?uFP(Q6Fa|(j6+ozP|)43ZJlx%?b-DNDeRS>lxk{t^cI!%J>D z8`=-A_zV|TeI^%kC0rjSQ9k|qefkgVMS2^5O(e#@`&-jWjK4aBY}zbU^Q+kS)9S!{ zhI`EuVh@9BtFSa?*6Lu6Y^zrd#^}V37;EWMxe_uW6@^SHAH*~GC<7at8g%n`GZa?B zP8HVWns)lKA+aLbd=|4PITjT0i=2tTA>`)nq z5NMcoAA6JUgydTAxddNWX53>>`pPHMU&gpqsLhxD2u>6c=w$jY9M8K2(qA_Z{DXD_ z|9$hM|LGeS!awV-2R+rc@dh8h{yVB0Oa58_l4{|qKr!P z8j~pd3EvyG&u-5@ROimX&Z6_+gH1c_ESz@7JDTWGCfxUBVK8tjKZlN`WJa?#jk|HV zKVI1S9c9Y`51!?7){$(zzrljW=ud1-QE`;lb?*9~h?^Qrg)#joJ=YX~X%Ose!59&2 z>Iv~eMzs{Ey_xl(4DXfe`|9_24JC`2wNFm2tuMJ(zuTMB)JE2P-yOT$R`6A~OCe^D zKg1y5p}LB-z2JD}p{Vm>bTaRLD`UbU9&co1j6hH7BF}`4IVQQE;@xz#U$!DdscT7U zMXN70ham$*lsqFpd!=7%Jnr6V4&3~xP9M<7GxeB?{BuVqi2?O`0pN7!}AX#PQqf#}qrMe^s{n9Me@eA5=yE0!mhaPn2vP9JG zbMu9=qQKM$J57PWs0=w&mxQ*m_LVU$Y2or8 z``8jQax;}QZ3Q(>m|L@7L-ZWC?;|ilR2`(&+W&(4HFSxX6gs(^u7P5WvRYYoSG(_I zb0Tj+-9SM(sV`lFdkupU+2tWf9DEAOo7GRw{fn%AifgsR!VGGox_^1JhnW^kFb**m z(z8*dxOKnMKS_AS1>mh<_D<#OE4+VsYJU8#G9zi<;Vplb@%z;?#c%HZ`$02LsO_Rf zOe;$ly1z30>ov1QewEM&6KDhkMY|-Sye}ISnNiU+F!XVscF|9o>p8y0?OXfl*DAYx zz~_sms&DtE!t!T{Ax>cV&lWE&y~2{8 z2urU!^eg*BzVNs|P0Uv?jFovZd^YMC_h@Pn-ZM$I9toe$*YS)B&v)`nfOH;*ylrMO zO}0r!zP*&^-ep0dTiutAMWvaK)S^G#i9T4Act;>i0RcA2nNaL;N1K)i&1lN{+Gys& zNA?c(j{=$!Y!trr{zYcugjoxJA!4V%23)}H3RkqU?K+ZEbLBqAw=Mj&x*Z1#m^Xyf zqKj(T7(+6I)MT{59_NOy)$As9=YWQ20%23KJ$wIrpS<`L0{`ymd%8ucZgm&Eq?*3h z?WeXM_UEXk@5+y=EA;f0kt6blnW6dUt4{rC)AsL}B7S?YIPtcbMm(wP$lodbe&UoB# z*it?hxtc)ao$CQDwF0p95}F2z_Fw5Rds}mJoK8fxrZueBp|uUSce=%tfmQmCWZ6Pi z6^ueGX1TU<%@sx(2DnG)ivgnN^t-GYQMmJWStv44oF2&E zKa`&~j&XpOI^v~Ff!?nv(ELhw?2RVsC1cv8E8=>oVww~|2|6{qi~h<|T4=I{S25G3 z+_{TQh&|ILjcLyT7h{?rI3Vl|(_T&)Vw#^Gr4Um<)qGQHi`nL$?~lPTmBswAxV2@o zpcuD)S;eiSKM?Kb+lz$mVjOoeLZN-k+xgqq9{3g6)6^Ct*1b)AsyC|DFJix@&3^5_ z%cv815i07iGTsjP|4V(|Joz{8CVz)?E^>~iMR#p(i|kHx_K%Va}Ln?q9Xsi|;f~GhRY@$Ef!; z)7+?6L$bN};ndlE`e%w?L|;0>;0=S$7WZf6wz?abJr%~e1eLFEvZxIU^i5J3{Pzg2 zFb}*n3&Ts$&n^E`&w8XzqE|ya&yQsKpS*St>D6ENR`(}6)t}V(7fSRmj(4-@f(f_u zue|~{wSm5G$8N}vMSe)Bc{|-nraHER&2|#+HQYYUvjSUGpr#+^o8PU`m`@A8uWtUm z;TOqk*5*dO@P$hAwlR0SFJhz-s?&dP@6)^M)FXP;vHS5n(rf-?TO^@zIW8az6eXKG zHVUAts0|oH^K@Un!K=*b;dXMottrQ%L?uR|Dt<6*wV5VKow^^xvee*PPO`x#i+~@?a@iH3ru!mN6)VHC`&F?vZ?i6VTD zi=znHLyeJp-&QDHObHG5&`aRJpYfW87?{@-IzarIz{sHFq7&Gg!3CAT&(Q1#tu3|yhMbRaum z6J*D``tl<~`JF@UPobJcOPENg*GBHt*yr$XW#AuB_KJUV_ouFEU-Rt0NWUSw_DK+a zvfkZwp4D|)U64DI*=Hj^q^CcjH7T9@A)GPBSvDl9ZJz$+(zYjn7aQktF7Kv&kAlUP zrqtOu0$#zSwO=@m9E_Q`^l=J`N@RXvqse z<0|qt8zOH{Msa1OH;D{A84ImNUB2ROTjIFe*iZ{J_3&u-(!TI6>)r+2pp5B`RNuC0 z|HlMu4l0c*kCb@a-hVs4#1k!|?$rOHbW`e&i6?rkChv(GtD(i;aG;$i;j`7d^Wern z{$>qYZbolwu7Lms(aD|p9Qbz>k2!lhPLCp44rxXaLrpe>bf<`&hw!?C_NVO`n3H9d zF3kr$7U7m3V|h}kDb+sNlzQ!S)2fe-3guO{IVmgGd+jOTT^Y-V^U{jlZYB6?DWz2s zUWp*{$cxukmMS4Nk^pxVn=zENgb8|gaDu5!aDRj;yb65F1il?>T^lbmB;yFLH7&<# zSB6V4zImyj>705scLKctv`AX(du3mvES`~l{*3as*#uJ@zx`}KN9}|8OoG3>Sew0a z(sTS{y4n&ZeL?iVDiBRy7&0-^(eUl~8XKx+a>4U6ng1uDl#u^}w3C2?SvT|Mr)ZUR zVqBK&s}F~)bMdwG8FwANJ;AO{Kz#y#l0n$Va2^!w6qT%v^W?{S88Gp6ql(w|1i!@o7UiuE=7l71ze{_Xj zgPJFsGhVHw7tcy(dxuDc+VfE5F^q3XV#H*hkuw%WJBJu)J-x&Cq59LSzeeph`F(RK z8ZU}5Rr$4#3GlB=q^SCC@RMI_^4s^nPUN=lUcM^)c;3lbtutD9yifYM@hC{gP|E%3 z1%8kacRS$Mqx2cm1G2PvfQSUuBSUKkOKVZ!7Nwz|PXA(&?pfiY)hK=#EN(fsHp?QiEONhLa*Bk}PI;sw%eg*FzBbEZ zvMhF6eHPn9k9`x?wB*4p9|=c?uN3s{n72Nk^tsO^&$-m+aP^{dD)N^;(MyxHbpOCh zEAKoy=x9?Z$k=fwPcNMZmapN79@gSGlV5wH_VWoF!$dL`Sc42oZ~*F zLhU=nsSgX^mq*{Fw;P353Q5bx4VLnngo)mPOilRrK1>Xyap0p9?z3o^Zyt_IW^$lu7rGJSd;XEt`{|(I;3`{wGVo$ZX*Ps3M<`wzRA1K1i)$WGrS_XSid4E=I`aZcukTu3bIrs4?S8!V^g@5yCMN~8 z^Q=2vP<2O(fBEyI9M0tp%Hb{^+`8p_MR<|m+CUW3$QnOwG6D6^dzLA!PRah+X zH^Crvc6Z9*u9-P)Rpg@ zd%kHpim#?3)k9{l$ilDMr%079Adp^F>5jID!Paz3U1&frlG2jZH?rc>&lSxfbDjI% zB|(Y4R2wP#&+o9$3=8YrSmiS!{L-jnOnMJ#4^h0o`aYapK;epYp&vMJ{zTasBP&je zAwLLYVcnxt-NLn7cRAhJyMpcrtC0UNT17yDwspK|^RGu%{AaUjV$rN4OCIMzFw*XC zj{&%Hx<`*aF`=xQZqd@40csYjzj%GU;U7hrg-u?;-cUmOM}$1hYk#9}E}@RYRuvRm zSU0ld3&KqM#-7={4dU9fA1#!LAT74o~o+9O^zo4?z>yj7kJRs-Tk+oH;_kS z5C(932O;?zlKJC7CiSIr8d>t{!%nIDS_byk?5`NXXFP9OQ=s9NuU}P3Ucrz)6Z-$7 z)&GB;C>lD+qtFOPMH(TKU_e{2ngDaNt- zn2DTTt7v>S0Hvs7NOF;qWR#>$roly9r&DX1zRJ_;WhIGk)=eJ(#R9P+G@|-u-20gI zi~W0o6FG{~f_$>xco!et{(>$(4-XNOOhCA-t65L5;gME)L4E2JpStwZt;OaRRz(Zz zaTAvaPbHw-9)T*TVNa_u4qw~St1G$Mw55pDl~O=Nzrl`DS^z`e9q32D^OAew@03-I zdN@*D*V}g7+LrqUK&b7YeBuyUMt@=BZLW=A?5?|SiItR72`SY9>~INMXA-u}VaL>H zo9?hp7g$XgiqV4o@I7qw#UVE;)siq-weicOWn;OoDNFqR$_9GNqx7N_U}cPke&3&H z#}!`HmCq4{e5z|(nhi_8A(2R|cyafwdwo3+Y2(pcAo|d)igks}rh@W@c2bDR*c2v*YJOuv)zlZ1Q>**I zOJsSAZB-7Fx$(E&l5L-et=MA8{h^Qeao(V{2r=mVU7!jtdW>D{7y6S=WRMZJ~6lBvlrdSGC z)Vak}TFxFKjCof-!*HAfhahe|Kc#ryYGZZ%rt0s4=x$x>A*B_z2>nu`AKl++b>`q% zT3=qm5P~CsZA>StE$-eb{bSZCM2&7CZ1ooPMXiaxNHP`i2O&gR1NV|T{V+BVE2?&B zIm6q?rZ=p)(r{4}mPaV&^oWKvqY!7Tn`Ee_cWI_dXtAvbRUKZZOX{y`E+41@()!w3 zF6&+cy!i_io`p;n`65SxgEl zX_n$TC{FFEmv4#r^AKNBBw$4GgW4p-#!a?YMOa-Ttn{((jz$@*G&j}Vo&U{X{aSMiFHh4;7)GOGKTXSyJomFKnO7j2Y z;zr`z$2|CGduvTWd&!H-gfYODIEV?unDN|Xz}DCWr*OD4I<++b4^w0#$;8b!|2Ic#N-v!SKeqAwss^@O# z@v{e>4SFCz6YKMXTNzH^(DP#nytr)UxTd9nmkl<_u%A4Mi`EU>TnD4lvl%+#)8mHW zBd)(_c#83VXv=!=&fpAOgh|Hsgf>9MJ?F=#jk-am{m>QJxUhLWZy1VP*h-#b1};3E zqbJiQCp%VW!qpTqB9rj7il@@YW-E?V{8zS~5FI?m-%eL9*f51K726A^VJP1)kiUn` zl<4FMdKuhGUwx17tGBxE;!Kk<(C8BrQgYxx{yT)Au&oa1CW80pNQriFY&d@x#(>2j z(Wh>0bsu8s{y_T|6e{pycgGnXmW8NeO86M{aSV$?dHVXyAQc;G|H4r5W{m?ID0!g$ za|8L$E6U(=L&eYg&}d2}Hrn=#I+g=26&HOJQ9tzim@I6HG+1HtI#s{t+Lr|yPf|`rhnd^(su}cP6Y9)$8|6k5s5)ujDSu2psn4bwsb`mmiBbL z_%f6(Escsnp)hUeW%?GR6~FMZfA^rs;aO2pw6Q#?Z>h}jw`m$-zx92;-ldxcc@`Ry zE|~Bg4c6!C*S~0MZK^2$Q+|6%BrloU_*qb%tG@!3cma4ZjtU5HGQ>2BTV{`BK+s8o5^S74-OrD*LnuH z1dvtrgVq_+|GWP_MTnZKL@o}B)Sj58Jv4>LGpJgRF0+Oj_e9>{^}~&B49CB4J-&RT zd-bUv60MB3B_+Z|)ohD=zIp?v!Asg3`W>vKHr6hPFlFPY@gEzQPjnILoGq7@VVT_M zHFuz;_uL^`)`Eif8kwUV@d^PlQ!TW935jF}_?@z``3N!|KEmbU162o`2cQN%R{>9L zOr*`&2=I+$xu{44Hxy}9NGU^y-bqV!%K9O`f?9j`oT%=Z9EdKr+0nq3(d=M`iPPRAdYH8uWpTrm2sjl zOKcwC_{#JT3*fJ3<)@@TLlov+qA|-RNn2I_@I=je_vCP8uj1on&~tuuuIBve$}E&y z_EC>Yaax0EcOw-6GpukH$5i2SX>JeW=N!3`of-Um+VuP+SnUfvJ=VV$dNRTDRyEAL zjZ_EP??Wi2_;Um8Pbdajk$B@%wZE*A2O$@6s7a1e z<(U79N3C8DUBi#Ix%5W9Q-wjs55UogprZJ#by@r7yY-i0kWrn+=YRU&+sv7^aJ-*~ zKVd3iJ``*7?t422w)OlJ&KzZ4Z^jSg=1ae5<&B@>K|FL)e@pTqe z{!dB@0b6oGuqi(;7~xhC0s;*Jas#W`Hutj^^s6vR^0Fa5qhXXd%jy-Av;P+0%izFy69pJ&dT zIdjgLGiPSb%3d^49~J!S+>eeE)w$osnew6Zg&&uY^LzQHo}yk0Zty4?@hgrR-{53BN@ z=0CgC-n*jq?i+gt^GO-EDRVEa{a(7uHtgxWRc^k`gKEmkpBu_At+CU+O%p$SW!E-H>bG36>Ebw|DuM{v-Sg@X(?h^qw9DtEUQq=P$=+?;;#oTlO*~^Vdj3w`dCLF%d|AgEGsXi z@*3S>7_Vp`VeJL^RZgz)n)S0#W!H_I?ENn$$Ph6oY?e`rA^gxQJjyTFfsv*0P(j|Q8Gv%Ou2Bnrw`FK&9;VUcOP8?S23{zi|aHri#$#UFL!<#yv zj$5z}T^gmcLkzb2XA8egzewAvOY14uj(&bI+O&niT2th}4I4q*)@X`J8a ztG~R^O+aH&d(uZjsa5VhFR?}vxxez93U8yMoGIQ2m*_xI$2!@|$S$*u(iR_@et*~` zmEJ9WoUr#Z%8#C@{K&H_fVw?Zew;`4-Q&k({amgZ%OTmhes-!sr0kHrA9_;&Y+4_) zYBcR`tj{BfET@^z*u<81UuyrfH?<}5H!k5UHMNN)esT(fv9e(`T4%@w)~*t)gXl6c z-RsQ)*>KZF?e<5nVO9$KyQH`N`rV+{&mR~IWdUqV{^qAv-9Zt7qW z7+UVCNEzIPJcmh=UAJ_GpA z3HX=^2g)_pIYqJKUC;lY+_#>f-fxy?lEw_HjqV>uuv!G77-MtpahWi8a z^V5%*vvU-WTTUa{9eJyCMs=lf(m&aj)}hzyTvA00mm7|;2`5>Fa0B%2iVX+q&{ z-+D@wH)cB)Qj)7Fdh-isvj|wshnoj)5lE=4Za~nLVh}zmq zJZULSF-oOd(ivN(l5Iv_Ra6}3^fwP9FKS-puD-?EcsYsx3;OiL+`YX%ZGFh-d#C6# zefsgY|2On$Ev%7rtQBE0AEb-~90uHm$I!+dbSh*E9)Xn%$+9DM+9X1YWJu z{K7hz^fagn2TV#tSm5A{Hbu(GJlEVC;DJ}pSJ&)KR_n{v50j-+*2!C?&`nn~AQ>hp z;;=nSikKF)&OMt>+Yf+C7tysxf|OKfQxI(C}T+U=^gyZjmVS72OD=Q1qCMcKMbO2cOfm%GTtr z3kcGMk1L}DD)LJZDfbTn0)>%PAu*L*G^V14El1SznG+dBF6w2yo1-#%ytELssgb$^ zaL^}2Y({I1$KG@x2d}{;>#^MTP@dIfrCmfppCR;8kR(04 z(L?!~@AwNlaXi-qihWy4*}+>H_l*$Zp>xbLSYlCiXdac@*jf?%_vDXnOg9jJ*W-4ep?Mx$`M33g$h( zWJ)x?YKJp%JeS>E%-kS)$?koBo%yDImOsRXj^Wa%@?DA2sB#&xw!p4fp8#I$ai_dc z%lS7Cu&4i8KS$YAE?fgkq$wtB#J{txuu3<$9U18r*uGM^vJtR3w5Jd#&!6ik*GhNyKu5~yv| z2Ldqxqc|Wtvn87}Hf(^J>~0g8jl&+{O~0nx~< zJ6nhg1!D#U=$C$SjAW9Vp8EuqZ|lnX8}HpWzM>kp4U?mbV-9+VC~YSvT{Shl=vW&? zdXm$DG$3T+Xq)XJlqYD0)UhRIpd zs)io++L%Pw*omAWvYuwQRRDBIjVP!7>9=Ci^{U^A=sUVi`~Ujy_Z;XjO9h7c1E zr9EWSKT+MyZ@ubwd-NS*^j(DrRyF9f=SnVX<((Qd@oc3A%HwWfZ~5^cxzomhM9-^?l4Jhrm#SE)y3-=*hS(x)<*3^{QWwS@ZDZeMDG!ZXvh3 zZ?zN@<7q{#w0ab(Q_6(CP?+%qk#;GQzU69F5xpw8+Yq#?r6-E7Q$|CjBayzX zvQ&2Uvajf;$g5iR8Rd#7n=mXlc*>yI@$O#!Troa46nq>Y8%IeoeI8S#Zz7|Qr&uK_ zTXPT>C}AclG{of_)nw@c;&@t#MM|}u(v*2M@9M+5mFY%HZ1Fx#l@tV0YI(ZjLyz5C zVhg==uadI{hG6uZqGg@>3TAs!Oqa4G>|?m35{`^g0oQ7M4tixYun$B}a@sS5uDnd< zI>Zi>Zycl9lllTtb6(nlz6 zXh;h0=MIo~j8wYG%($Zl)zV4|hXDlgfN;!gDjJGE>OM1#IOt zDXuEQ6C2@az4HYDWL+q5Bot`RP@vrk%Y2oAtZGQBtoI~5p%tiGxPNh)&mS~>K)K|K zc8P2$idd)IWlgQ{Ay!|Dcl-XaVm+u`Dt*vLW?J8g=Ud>p#%_5$;NZajVvTaj>CeMz zH~JYdy#<(fDi!}6zD=_ptp!ZnhAHzqyAN+Op2>K=+~m|KYtf{VS)YE;3osQ83!=qB zKYn0J2b$yjDakplkF+1gP_DLH+_y1x!xC+0=KJ^wbxg9zET^*e!Z+?Z&dX zn(0GUpm*l<=zMvb@X&}7=5#v7?Pg)%u<4$7ZHmBakGN(=w@;Q2D{fsuJfmve4~^cQ zWPssj+4Tz~UTWTcp-nVMKb4}cTjM$F(!uJpM|(2H8UI>XU8ii$Ft9Eii0l&07%Q85 zvy#G)ey!0LY}bggd^w03$(vcUEYhKd|Mz65utx)#t}g&XzqkXfot_D@18S5E60xhA zF=Y5%Hd$2S3CU(P;8vKp#z>7qi2A%fdwTAfmWExPw#HqJxa8$TvM`$ znm@L1wyI$wWORDw{kvOZ8T_7HVcn`kYHQEXAM8iJw|t|dhbyEykiOlJnd!kf6nUqO zMGHG@ixK@O8@lINDW&6juDh4e*xIVcq;$zFfyUWI<03az%6&-j6lJ6gtT%JSH~j+f z41d;7zbg8KMEImE>nFJFV1wK1zvx5i^_?Q=2go#_OmDVKg#&48>R@F5)c$G2pm+04 zWvq!CnW3F17A365FSqp|Gr_(Y`OMT`?S{r2j~qsfqsDbHJU{nH2vEIf+xoyS%8o`R z@=w5k!3wihL%7e?OAi%~Qh{sGsV3U#mO*FnWNWilb)sait=8;LFJ&Ue`M3UDMNQyC zCvUFSDHOf#kvV>7FZ;3F&zaeLm}$Im+swjl)aO-J$eyUr&uD2g)~9A_eU94W^|^k_ zo{~?;?{`t3Rx7GPKId0YC!eq$o}5nO)Qnb#7KbLG>VmQ*pRP7mR6pXQgis+ZkXGuE zJBf_NdVS5JFZbNbqQ>+24qI>;R_dI#oowR;9vUz@v){j)%;x6dyjc93Hm8;aiG?Gt zYoVn|R~X94u@E^6kDJcLr2IXNkNTA2>0qqwDqb_n&JEkgzzGQAWfGmZ|7YmLiy+ng z?%yMwNQq#1k|BcL+fV!l_Vb(~#7*#Wu{H)T*11)u)ZANE{RMsisJ+9BtK8e(!@OTh z!>PrC1<0>+^~Q$e#nsE^Gdlk>pHDTzTl}+B&;C&!W)icU8-tK^c6}i^Fh)K*r;q0u z(4Hp6D%nLr7mJpQ*%HOKu+ht(&Xu(ZVMXvML`j!21AmXzI9WtE5xoVY)^Mn zrS47+a6DHnm5w(wQtdmxqDtD)DgEK}Ub&(9SIcj(4$Qoq+F%~C_5%}y=}w>QR|8I5gVUsh{-9`?6`$aSdq3Wf3(ADcFQ zl6c^h|~J;<##1iE_h9al`2 zK=AG~uTZ&_yU3;oS_;%w3fS8ZkxFG7WfzsZQ7Y8ruIJ2bRhU}aOojb17cqEa#?N|h zYoQC8I1tcqz*F#uJCzZgl$X#l!@LI8>97hlOg@<1^G2bzx_AIBTF3I$@qb^qQLBR; zYH8y8f^72k3H2u_GevA^4W?)w@bk!ALmg^!H4Re=NmLgPC#{;A)$^=Z4S6Pc9zcQN zFh36NE<4OG6($}ikNVQT3{BRW>HC(1DU5jUd9erboBm27v|%H{_!o*#i2d@rRiG-S zKirL~YMEg8A<1Zqm+B;WaEfCUm~?z$O|(NcVl^g$DfVV-2HNx$!4I<26#-5WiPf+C zsHsU>5am~SaCl02j7R0BnA%IP=toTHZP;Yv_3o@+Wba{cvQ(Y}hr+%^^+oRkd{&ii z*SBmqA}6J^cKmsEKk_-H1O9#H>f&)qqh+jzVVa15;&wYN0+*=|THM;tl@4H?gWdTX z`gN{%UgCMHQvW!K{%+NT_No>}!Tc%BTZS|Cm<&5Ob=N83WIFfe+UP8{;`P=PeYO?; z44{;1)+^htW8?mKC)vKOC<6BY*?i5E7JGd*@DcMumW^a_SN!@!#wftKFW+~fKV|eR zJ6rawifR@AX!14@P_T`~_H~Caa-((aVm~hH@sK5IVZAZjdo1ct(v$bUZFL9#NR}ou zp;!d0evai=Ey1p^O>f6X#(nbnF>;VuNQ`)|C+IuHZCD`B;md&t>R@hdu%c0wOlhoM zp2SYh+h6gA9?{n`d4Gxfjp1UI$=|!_&j0;fDj4lBgx+=ZV520DLH{`KWAt9?pa}h+ zc0KdTo~iWDQ2vP;&g-D&P=2$;6FwW|kNbZ9ar*ejxqO2QyZXQ5ulRZ#dEo|dWsv)= zkyp9ZhRZfSW|CEKd$=!ggdFRrL?q=2a!b;1X|jAdAL#M2{Ww z-ZG^=A2M-Isn1_M*Y{X`KDH0e&Ft$_vX3@XVL>D24_Ii3O;g$!PR$;x)*YIH)IP62 z%y#stUj9X{BaM?kwYE|3;mzeTe1e?*Mx$U;fC!_y*rNIRYW#Z*mt;+~r=nNPLX5h5glf{$$l&tQL{HY_9{fmj z(6mhcV)uouQ|&hu5C6c|EgXi3t_eQ5+JB>Dv?&V4lAGxEhhiyDBYf*FWmo+BS}9ls zir#R%(l6dk9--9w5BJ|r!kZS}ZwkinPIKFKnSFQHklW5@Y}dIT2>$|dwTq+l&lm81 zvc{Z^74BuK$~?aljX5xgrmodfl!nZW@w~*GqRw?r$x%5jc8ogX+D853Sgeok zg;pzxVuj+#qWKHY5pmIO3g1Z2G@Zh>hsBp@gZ<=pFCR4wsj&WJC4YGSQ+ zjDj^l*ZcnXPy*;r1Q7_L79m!QIi~5K?Jx$yvJ%yHy)buhssATNiK7KGqu;Klg15+j zb`u(mN8O;Dg>j9)0UWJ6fOc_k64EJ8?n24s5fRb(1NaMh&coaHuTMssihO$rOOZg@ zQewNBSfl%zVrA`D7RgJFNvpHWdP=fQQdWg7%LGt=6e{*s3DzQ~8G^L?KGo1G9fmES zsF+u-_ur;LE~_#lzE@3yuh=m&zGyu!Xn&`jg>iawJv-kHrwOOkVmW`gwV@?yv0=R{ z4z%U49;<@_(fs-NJ^IpPH7&j?q-LqPRyO#9s)-L_g9r;gV~EofH^d!}ONp5bwx?Q* z%w;klvd*VH;m&^@2PU;NTt!h=@oeWQbJZ-Ws|y(k$6-CclH>L{_7HKcN>oeZ@P_EVfrI zGr6Tr7C~+ZCfKN^;#K-hs+XJfUnqyyUz~Y{O+jLeB7+wMuSC1oaO>ba3Nx=r?8wg8 zNMkYmykp^YK~j`uN{FP6`Q?*#$}vE1<^R>x;h0i};+=8z)gF4)3>#H>vqZ3g@mZ{$ z%!5e*bh3+0jWI7M*d7b&hBw7GsG8ZuCTXh16&vYZKSyi{5o$S;6Hk{_@8*J%$`rvzu16M=NV|~bYD%gy1l0R=cUDA6hOBYX#UhI#vCeIZUH<%q)AKB>+;u;$@n@%+#T2Zj&G>`HS$Vm?!+mv4A>`^9Kdk889p|z(b6+c0Cw;!?c*oxR4 zn=d*v<`SW{@6wua-6=V=+=-MpNw$`6X zpSd+Ul0Ngj!OZstGPiKr;H{iC$o~C5(T@JaLDT*!#zk!$E}a=2%-k}Nc@&^^04ak1 zQI4bMM8d86u6MVeMfaKc24;i(14Ef_T%Ox-IoF_a=KVls+hAtfK;}U*>a=FgH~ACy z++-f~XW3_*9cAA!>NX9V+2JNjL7+N)=*E=!6pP2-266EbC+1N0Zlm>w10d+1P)!^E zsgr_9gVT%`<6&z1r146WAB`6h8h{_~Jn*TwD-8oIn-GlPX>ye3zRQvP8i|(*Af5in znk0tJTq$*a%m9Fzr@DMfqVZ|E@4Xm8+EUpy7L#3EU*4E9CY2}UhX4nwEujSRiA!ax zBLp7Y2A?t#1>fZQ<)sFti3iUf9{x?i-+#f*@lOZe5qyj(^hiG~HY@+71_?R4xnE{N z`*~QHtHsVIP}BNsE-w?2&8->c(VFXDtG5+@ne%o!kYlR~X296R;hn2EMhF*+tsNYo ziDz7ciPmr}N?lkyi>bN<^Ufdr_9<20mfdro=<{PN_Jt_ZPzObJz^DwW(?LvIhWmS< zjR9xoSRMCb*?Y*&Ab7pI*m7^n9LxP~D6Q(Hojq;-q9h-;G`H|RkkZ?0c{@R0r0J*Ij7=lUo3=6`0k zS2Cu)RP{U71=>GzeW*F?>ewE$tRqY9+bgp#RP>Zp{U)+|&RtrTzr^mXW$Zq*cznn- zP|9>XnRHqV2{5~DYqOQ(7SM&1xO+`RVYPsNDjdeWPv2usf|H$LYJGF2bB^kp%XE?4 z30RkV)mQYPV+$YsO#Bv-CeWvDzG(2-?f%BR1t4R5uxpZRS$7%qyY^2{?kF58V{F>x;p~W=evLUw8aAic3`C?#quKmHtAl8^7^!PaZT&v1?2x^+ z4)w1l&D}$PrhAzehWd`8rhVUHt>drE)fIk7*<7D&vmM-V#o<08BvR~siZ3Z#U=7Z6 zpTv%OU3|#YU~BaTYP;5A;<&!Kl;zOksbvM7pn^W6g8tE0a;@pZ5VPJ?AqeRj&Lu68 zHv)MFDA((i>qVAp5><1wil;W!Hp)nrm^$&iz3>i$HJPf84}23O3xwo%bY_+3(fR#X z62P`c%3RFJ{(Y)sulzJ{pmzgN&@#oT^64&r9x;kjwx2M?D@0*`+7j3x&~+rUL;YQX z%29z_e!G{RT&31rzYihJYo&5i|KlV9wx*sp_sO41MLGzT5*BPou0P3l9*Xx@R>Rq^ z-7dUor;83C5O;FxTdQxUsH7l<{3F-D#d5Ei@JO70+sY%vJhqCd{oD0@$UkyzS+N<; z>nW>{vQ$1{YItqrwRO>kC8v$QgFCQH4oyJI)+LuL8g)YiYZtyDAXUNxG`eMcwT1_5 z8>{P?1gAyO_w& z_^M{ChS=5x3zTY2S64Z61qKzaKx^_#aT zyF$fJvs{>DOt~d&v%l5L<`ys-$8a6`Kn9Ks zW_ECjfi9fpqILI46K`f~ad9@E7nLsWzeGkW*KfU=*$DrW^Nd`#2bw72IcxIGQi?x^ z`4gbs67=~|g#=a=>ebL;iM!;FPwt5HkMp3xVY^DxWFg2iBeRZB+YsvA$Z5b>pI>c{ z{u}+ptO&_lAd`mZq)7v0k>eMee(pC*CXF3%vdQOkk3mCV>V%4ZZbpA}mF z31Mm4FyF3EzDuLhjSxM?>b9hIFF2}9YO?#|d<{}l!Zu5m)O1!R>5|$QRUOX`9f+d! z2<_(nULNpi2g~4p<7=P34uyw`?et(>C9qMz`nwIxKXPj(D2|U#k0EDFzoAe=wcR&9nGIcxMp_$V8r_e@R&& z4OPM2k_&~mC`YkLzYvJRGKR>GD~ogwz`mv{>?`;iBm96Hehc5=^g78yjFvZSz9+xH zRs%LWoRHrXT6u!J_h03T<0V50hgA&i8>W&POOsAqk&GaYGOU^{Vo}Q3LHKFEG?;MT zcmV$CP?s-`*fPLM9{!M!SG>a(0LnOWW#oPWhN4ob&d%g;UDEjP5|2 zx00xT;M=apP+ng^s5ke+la#V%RG)l<5&`~w$g9`~UTGk{&6>+%G}?RAe)Cl-*Y|Ev zs5iHRxIj=3d(>-rSU!6nvW@h#mq4dNf2j)*9)egJbX@gRMnZvFZJhX(Y><;@i3`pujTt@A-+8}!*n zWP`4k4Z0rHKiKMK#Ar*0S1Gj^WFG!#>@9qv6I zrdzejbZ4#C&i8>BCJgA|tt`aaTOjsv4Z$;4h}bLC|B8}r_P2Uj$F#%*Y0wF+_Q-GK z0am@Wq5*p34_@$Pn@VZTwI|(PUla8m?bM*NxPbg#JSAxsa3STKwL^5Ly9w?qB(rc7 zUpMuC4t&wAmD5z+y?@MDlii6hjWw5en6$AbO(|LAxE92)W<-zBuMYXQz?xq@EY_SQ z)|_>+#+gRTHv6k??se9Frc|a*m5KC|PV@V!fG#!lO8labVf%ie?^OCWgQ{M}KAOBS zCjc)RgV1qL=oU|?-r%;qg$8y1rL?g3Njodlxy0zn?I4!ms7F2Kaq0~T+FSnMw|p^{ zVDpGc5KEtF6cZVT%hwDI{WchdyofeIioSZG9}fh+`f|%&Pxho`r+aHlx;LAV>8Ry% z!bC#{!Z0b9pYUWkJyv{IZ`I2<18I$Y$T1|&t+74fT+rT{pZlvXKxil_b%jdGR2AnI zzG%~sHhzX;3SqcuXW!`jjeL_gaA_W(xVa3){}{1&isY(PxXc7j+twvR)oome#E@hR z^~nkWK9e5W<7MtxJh=j_z3i`qdqCJ zy4o(Q&!~=>=U91-uKiV4Kuxsf*T~=)y6->gjjHO~HUZ!mR=~AZk5bnvUssKAsOz6U zAG2$rXV+R23OO@tq1nKP@&=xRUgCj0qkmeK^GFCo=7&hx1Fe6X&`dw5mT#P(sPeUs z%JVoHEAHEx8gErf4~RblVhtA?%Tbn%N6X;TV%kq*`0@d1X})^$U0TsT#^{_5KYMOd zTJxD1za1V|6^ zxQZ$Ybie%^=`7?NwTFjcPQfm@a{o@uiRa*>b+vs=VZAAt}8jz9w}rMO+2tqY8^vh5f7wQ?YB| zr4n^lNkz2A8j*H*@w^x{@xb7H{6E0^wKw|-KaqsL-6bILTK;nPlJyfcnk(At6}3VX zcrAW#&|8U6){(%rUf3=(Y=fR>bX%UEh0j_iTjF`m+m9ovVP%8HIMo2_X~0tVg4z*@ zck#Qba0D-6tAyR5CjawvP+j z<8Km`@J}$tKQXfKMVO5uiwbHHoNBJ7IL= zB!(o*v@hOhd$|3}^&Ui8_8KKR$w+YKb z-JyA_D%Hyf{EAdf4J?jt5g*W}D(xyML0BsuowP7SV`~1B#=TF0EZE?`RycY8DLk_+ZZrJjVJ~rA%ekAqd^3Banw5#T` zt6K*BCWq#}iRzYt=5q$lZ`stG5x`3g>{1-6l-lzuQjz`<^lX9H~gsZ)vqduRlHZCSU^wXhJ`((rO^HKN6;sq!aD9psTz zxoADB36vEvUK*co-A6nqtsiysN=wlEZ5LQGSF!r|Ry?sD{`WFrM{=%zC0Owrhn1C~ ziujaUa~N;r=s$ud{#DW^rg&`XKa{^b>iy#o|5&I;-M2P0*L`a&`}l9bq|T>qwPqjS zhrQW;220FzT1s6%@p=9P&<}pbCLgZmam!JBba(!fw?9S^P8GZg<7z+qmiM!dVcsww zrsVpE$xCtSNO9y~V1FZ&;n!P2t_^PHo9v7BfHON{D+i4>0kWT`q4?>Dh9ySBkg;gR z_UgL)hd^t0VKT1ZCq+zTH>Z>KGk@^emVf>$$&XXEm9Jrn>XBb_WW-QM7Qe8)E@874 zbqSkDs7tI#AlAA?HjP%dC_hdv4xt<6k>%W0Fscmpn)?WVyb|2#R zz$5DZ-6nDMdC(HAa<9gz^e#k4*Cw0v7I~cjg&ihGZ!j;ikuTZ&8YQ?LpR`YX{*zL| ziTsbeilryb7QKgBVtoEx%sNIy-TDiQO32%w*L~#+YWZtMgn%_lJy1A3DmLUTRyCwh zY(B7&k6ZJf#;dM~=)BGN2TIqDhAH?6nI`g?a)oqr=|bI~(4kJ`@lUa8Cph=zOTE6erOQ_8PA^`B>ZK=R(rk3oru1Gr3iEByWvDim zP+d|&CAdK@CtAD?3S(O8ZPifae~wJHV0wIIo;1s?_|k25W_g(+nkR7pbUwqFtv zZ6&4W3}jBJBz9r(ZK0}HDVH$14VG)L?UcceQ(FczOv*xKdass&{*7QASn~t@&2Q4* z{>}Vl^_9Q5ewDeYUsb6dvWH(n8SKB6PXqnO@wf0di?%U_Jh#M<^F5h)8;GG|NyuNY+RTv~ZWHhcNx!aA`iE#5yrUjL?mHZ$-}sNw>Tk#;`R_lS{FUv&PnP80 zMLvd_Q7+^^f3o~>@2s#plnX8)f93knVB7q`j{T8;9r90j`45mjuqLO!`9b~dAL1|T zvHXQM;-Y)tYeYn5=3xXp-c`bDP3TJS7Pz~T1=)F+{pS$J)&Buj9vh0mnI?ytzMoEa+pCrL9q#yZ3tD#Fzea_*(-}-!-Yxn_@B$C1q8^L-M|cccn;GbTfZs!AnF&?k zcQzl9>nugzbls}~h8tfsAH!#t!6XiJJQ>#9o*Zo3G0^t6fz1D-c3YMHGnQnm-Sk{O z)OOY7Lmh8LH?<6|If>sb1MO!wvx~Q7AbU>BK)R)6u>TbM zoX!B=|3VL*eyLuL3omC}o@;;EtmneMIJ6+@}SZUbGfZZ*Qh?C;de0dFFPYHN8x5$j{NOJNYIGgx_kk?u)ky#io9F zB-Nid7!UdrYL@{aL&+&-(N zjk^#3t9@R_=TT{%b_cSVET5kct{;3SRAh`dNVAWlOu>pYc}dltLQ^V%5Xr(MyOfGI zb^V%h&*z8ju|{w1?hAc(xm?w91irSzefL0gLa}8QSH_*4`O8REXj%W|{1~*q1O2}s z|K&sdO1qqeHr|5ghBhh9$D3J#g`DNP_z2l5-rc?>E>|=)`ZR&K`PVD0qTTgdIx1{n z`S!g_t#Io)0i)KIgwZC6ta^YpX^%C6cfb3nhs@Xdk4kd~c%HI6qL0K3@PJ_gp%rdb zaRf{8P%HFY7JIjN_KtXH$piKd3k5UHdf=ogEoC1`>*FnIlN;IOw@Fntv`N*}w@I;$Ho0AoxJ^ou?v@|>24%i| z(AuaShMFuO{-$sRhYC(JAGpmsb|EB@*+Z&t?fH_srkPM&twEdZhbfy+G&}m!^L*ss zEao3&VBGV6G!6P`=z|;?VYlLr*}-q~mZhRTW@FwrU4c{Uv&}dEiu_Vacl4{Kso-?^ zt^HTzw`TgG=_)WaKlL@S-jAuB<$SKx#9d1D$SXy0n{O}WohmOsMI3GEo|+zX=Kjqk z9FyjUHEOdcOyx~$UAtZLBK$#bErOe%Z2@$L^>fB|+B6@w^S6e{)+KC{i$-?OwMnKj z-|VpB>5N`J_hB2oq;6pJax|s7H(umDX`7KE^c261<8mq;w}nLx+trCK`MLX$(fsyz zOwNbr#^E}ZuG=BSmqrzb>qL+zjXL({ZYGTG%JpD&_ zdI`@BydDULr{$I%Ny?9<^Zu%|iB;E0LQoc<+wQAy#Um|s} zh(~EqAMToI8A#v=;tZzeG_Nxid;BN(J^-h(lV+d%exl08%g95G);HcRQQR$no~ZGj zINEyJD9f-WeL_@b+4f#SL$J2@m)Au4-lUSy@R{4*fu*)LIwj{cZSN4>5#`(1)<{|0 z`%5`zXk+cthx5^gSMz*LHm?Bo{HHYXfpc+-{+h5FTN_JQ*@=CyzPm45pa;!ORZ9-C z63h8M74|ZmhhcT+k2T4(xNOt17|nh4k`l|&D*Xaeqq~3^LCCTV_2p93d@k_E0d$<` zEVWyH2?MQFy&cXIlbb@-WkVl%pYHr-BMr7}ese9V9OgF@ zn%_K(`OPDk+oXxKr3gtQIhQ#ZZ*PKMxa&>KY%b-eW;Wl!lbOw4OX=_9Q9gUgEd(}o zNzid7Z8GxnmbL!#n{5j07az1vTwD%MinCva<+Sd|Gc zzI#*VYU*7+NBQrDYX0Z)Hb*%ORG6b|!;@nivz_sbd~2oP7LM4%LZ+B7u_@g}7Jtgt zmmd1j#gJ4nLD|;h?*FPy1TxHmc}+gL+4*Lkwd#DD!m+f^Emh|?Oe$LFyTi}W45)im zs~AIIy)fi0lB(G^m7BiA06`Ow^T-aC|M_Q_a+vab%wzH4BMe~@aMSHQ6vh)x;;mn? z53@|ioNlvBN^oEOaODWl?tYzMmZ?kGN&%4eRx!(Tr~=_V%^%xZ1E?P^7M_G66whbZ z2r&dMwT*)9Mnjq(=27OE_*tV-n6?g+p83`~lH=(=KWj8fjbB2Iz5P3{G;8E@Y1ZhQ zm9ED^E$?+G+d*XWp2r5|8yjr<=3vLStTcKGiw_;hzl|~n`mf>drvA6{SB{?q0_S>o zZC+=c@cHMM3_RX@&?xVhTnXO7TbTbT+(fHn`evNr42^P#MoGX)>rls7%g`H6MqgTT zo!BM9FwV8m-H3w=Tg0@CcF3uv?>gSVbmjhYO73%oeaz2&Eu@ufCibXT2Chj)$@&^B zQ(ERJD^u6$-uyl3fVrDGc7e@7&7Qq`oCl%u8cn$wCm&4g(+{y3quMH}$p;VmqyQgRpl7Y#k zOUQ`t_6%~LIA#(7H znc#U#AAj8N3qs-gWYRDp#6qota?2|tsk~bOlu(r*p_=i${iuLOsX~(!)eOF98gT1CpOnv$GVPS3kaFoid$%zO`OyXZ>&3 zKv~nU?^twHiZ$ySoZaVJ}=wyv!nul>s2mX zBW_r6^`)5h>5h+-Jm9V1l)RVD5as`h(jhHc-&X61{l84DoIkqUQT(TM{NK)Ron%IT zevyb$!g`%-=B{39fD`y%Tewzxi$zFuu&4KNbvXL$>|nq=#|Qk0ymY@sPNf8J=_SR> z2Q%Mdj8a2%-5;`oIA7Sq&E0Kl{ebEdRzhaDD1`L)+Ek2sDB6)D<2Gl;Xd_0O0gOT1 zIJQm|dc$pY7}^WS;|W@^zScd&lrO{^F7S{a$g1MT;?JkduONpn^pOa!l60B7NVm2W zTK6Z4*78j$fPxtl#7)D1t_wX~zRrcWi_6v}vHL*Di!E9D!f>Hc zRhCkrPwICgOYKRB+H;dANV~(4rBuXdu?+n2&9P+P0k!sOQkOL{+QFR?Xt{Br2=I3r zy#8d}cZo-3*kc=rsojwhgGFh0<8cIplY9a(L=2dV2kPh+4bnC0Z-(+tvmj)Ao-#tk zCJd14WH&GH=N37#SCnP_`|%8-kM}IP@EU`7F;EwQ>ct)|`Oc6}Md)y5f1*n9gT=5} z+tVNFdlK~pW>@zgF8{+i@mt&sE)LI@QV@yn$=!ec#gJW0!52q-pjAr~WJG`0BQe-f z28`4dSSAbzvm4w@vtvC>s+;v{EbLO1x=V-B0^g2eixf8eYP28rJh0Rska^o;`8QWl zH+1NRhCbdE|1_XyIN`Ri+&-495_alFOAgKmab0V9H-dJImhKB{S+9tv5z8B%vSY@2 zFO}76{a`#9G)Q$cJw_$)Q)ToNdh73}Dx@IM^eJ(9ZcJ`O&H6&Z&c@ywF7AzJ=Eygw zxjaWy5ifk$@A9FV27%V9N88VOG+y={iw&CB|FKx-Wtu5hCN}*ZF{NDly+0&X4(+9_ zUVNIVy+r4=nagV;j!yQoPCz9wALCgX->+e;2>eK^fF2dvD~|Swqa1f(B8oPyhI8`i zFw8iUfp$w<5cz4}?iX!v4?o9Ko1ENa`xcss&+M}8q7g1?Z&BTjXEYkf#1ZC3J0x($K;Mll98w?C4@ib?19NpPYQz;S``RJ)iw9_kX|wCHfWEwcB`)4l1# zzS$7S6tgkb6;m&p@w170{9<=4>-a{buwkW3ESx&Q>FY1No+vY8lE3kk?43&J;y(Lp zeG@H{U{Xee)N%|N>>7V5784N*bQ3Yw5 z*?T_rr&LzjeWTV(Ii*x1f=lca?6s0KcRfxS~yN%O|};nrGVNejZ*UMMIffW_UwT4TK;UA)2N1 z@>Js#K5M>S)y&C#Z$QQDlMM3p5oR0Dl%&(>wtaGgEv9v9{4<5Vrb_xwi?9d*M2fzj zfxxToWcrrdeK=ZQxL71&9LyN|Lx6mc#;S(TNf?mW?e6$@&xg81T@rl1a9LSyuN2SK>I=A z$+|}_^qXDvsa40!xq2JY?f#2c`bSIp)>Q_Z-z`i%?vO|#MY?yh zr6T;GCU46A0sfY95~#S~lK`s&D6a z3|H2_KGc5;mD=LI^H#&TIpc60ef>2wB{0g8Kkk#6wbl9PbP|BTHAd9#sDHD%jsiPo zoEwGwF&jLJT-B8-YsCZpv5n64fQy%PR?l_rUrg6DHm05<)N?JUhbeW!or;5C6&2~_ z6TYiwQ{PchnV&)4=Q14)b-R*x(u2(;@5BG~Dad=w@RsDA}O!F*J2( zk&&ti^d$v?$qmL=U3G;8it4*7d`km;v%qIvDsUo*!eb`@UKyq06$zcO`H^``vQ25O ztZtW6sJ*7x@g|`!!lx>Lz$l%BxxIvsssa+>Grzpc=_HRBU$3xqD~G=WC@j^Tja3s+ zZ2M#cbY5eZ?lxu^^jETxfB{hHXVQMtz4N33@?j81FK1^Y8TGy6 zV7+x^PvcYF`xa7E;W<`bG;&>OTWAE-lg)>93@_(Z4K84Wom1S>|pNB|@@sl+Ogk@piS zdQVoon@JJhC?qXerNp0FBRy2LQ!jk%vgb;Fl|1h~diPcBHTacwUatzKfvmKZ2GJ8U ztubI~3YgO2J*%h3q-u!$_5@Q>nCkhc_JogNMnvxQJ6>4!%`8sRT~hunsVb%1d3-DU z3LcgEQ<@WuvEx@-8|v|zk7ZtGK{l^Hlt}YsLdRln7Ld4r#C`a$*qgNbNEEg*H%C{eguha&z}g+Tt;k!DyRTftJ5Q8SH`=dVGiJ50I`XAvpt+{J2GE}sK$H5fv}+sou2M>`7@9IS zYx4R9k^5EBcrzg>aGIfLx5=lPhG@|f{GgT%V|$)?b(pHq04sBPlcoN(Pne_rwd4h~ zjo<;S!vh%Oh`I5|3osX+RVer2_X)jsQaP!RJrDvZC2#zQl5y7~$92>ODLC?si}>pI zRm*zjN-0~e7pvp-+yA}|^lb7RNr3Lsw}&)+f6DDl+BxuyND;#)M8V;Od~ zK1iKGGA>_-DvaA~Cu1Bx+?#+i+o=OCjlToQ^)EMW*oeV4i*OAh3ySYe$?-8HjF8-Y z%jQ;rVpN|P?+m|K67}O9iV?(_9?yvF5P?;U1~ufn@DrX#0cwGVVnh&_y2Z7O)>ui5 zIivN#%JVz0!#4h_yh5qCeFlHbj~7MhH0;2k)h)Gz?|6^IMJJxM_h4;1N`(7&3k10>@ zG<(8v0KuM|jM+FDyK)@uR=qs7few|A$MLa+k10N;c~`t>>3&tdH{~|yikmb1zLE_t zd5Wi^jD4Q}c0&os>vTnlB*45+(*1@Bzq;pmwwC_Fe;NR*Qgv6)xxBfqsQ3?TbIIUf zKID6wS0Orqrw=!1MgR1XChWM*VKv}8iwTUWyPBR|MR&|wJXsT(spVuqZ4t?BR`u}?B?$Up| z&#@EwFMFEw+xmi9o$06+B6Da+kOxBn{c2RxXfm!hiZ=-fQ2a|otWmo$HEF)6`NHOo z<_j*osN*&0c6Y!_zdX3omgdp9BU%Q(WP_rX!Oxn<-!gcsxzR0y-!R8KO}f1NG~YEs zNb_A|lfjQ$#83-QjhtEr{h>XB{w#b7(D01{jzqbSpfQ~(4S$*Dvd`j2Ctr_j8Mvz9 zwJigeHT*-%z;z9;YZ+MD@cK00-jL??jcHyl9(cV1>0hq^dPUB+5;Bi_E0n_YPr`XQ zDOd1RD>9VLLV31OvVn1FLyJ&mg!1J=c`n$pLb*gJUjdd^lDSpr+Jx>rzP`%Xn=Ywd zZ4~NcswZ!``*m-)_>Il4Z+=7b8=EhV?3nC_Ee6ucg52n`Hn;{2ywF*7SY_r=`npz3 z8XxdmD{MN=A0WgR&Fc?rXdW1C9#{`uN&ct!-^l+a{-^n$<$pW>JNe(m|8D;G@V}Sr zePnlk(c;@sSTm0oT0@(GUhI((o3sh=)8%GBsAgVLx833G#X;U)U@9WNBx-Wx?=)?c zVxPMUNW$@qA{ zcA28I0+8C>O9%*zMP}B7aKn2?DNu&@I8ZY^qx{et+Lys6r?enQv=sg-jM8JB(y}}U zz(;K{Uph*k9b7m7m2=#bpH$u8jie93N%zrz_Isc3T*z;nX>^}n74@Hi`=%!HXC{O; z_UAhNtd4GpY)k31cm7wq*EA}--`>hxZkW$rF~O-W_z)}HUf1ei> z3adoe5TQ^X@r92UyXi(e<#b^z>a~B8Tz+cToBl{zq*= zPvn`BJ|x{wuC@U9<$t)5AZF9J38_HsiZdFjmL@D*p5ZQU)k|MktRG?w)zWYf0Z032 zZEhdBHs!l5z@>nj!`Wr~dpKQhy-ziV;A$^Cwt&>V;?$FsI;RNlEHz7NO`O`I)V+%T z7E(J&oxAk;#REL%3zS+@ATkLdSoUrJ_KpEA6TsX;XAIB_z&=Zli7+e`z}|KOfMM`U zg}~G@l#WP?H7Z6Hh}G0@G%eu zwvLa0Jtqd!l>oxFUx7s%U%Qny(FoYQ7;Iwzdro0#47SB%n;(PS6Ts#b+F~&Ef?(S} z274fY%`Y4igQ@QXtS$z7EP(A_*kQ2}Rt0srfF)wE8osCsb%iZ4m?pdcJ0J!-D1apj zH^*Qp4|ZS-rmMV#?SR5y45sNeust^hJ2`+IShzF>(<~fd2gP750qnVjGh(n#4|Z@2 zc0m9;sBmx$*6qQb7lU0Ezz!}v#G*)0q+SoUAO_Pu9#!Fah0QV8fCsCO!Bz&a1%=@l z>_!i^Fb2CJfYle?8H26$V28wDpABFO3$KpB)_Jf)W3X=outN$jiowP_*kLi)#sGF` zp(X~~;=vA&!R`rQhZX*t7{vkn!**2RkQl7VgFQb6J2`+IUHB7G zilL@i4|Z$}))K&;U$`R%>-1nRh`}xhV8<42iov=)SVIhUSpa)M;k_|fuLnCO23s1y z8VVQ1U;`d3g^i8uTL3$z&jOpCQubaCHr ztKBh}2O0XLybGp%?2q@+DrP_Y`ijk*m;41gAq(3BC)*sz20HfPSC2M@@xR*r+k0(E zQ!c}H>rl7S$8HCtkuS^u^S>fW<2dWn@pnilyB5Uu+huTYI8*lA>#UcbDDLZy`*S1n z7|Oz7{rR@Ed(r-W3MG?{LPGbidk%LV?ZZW`^9cfJa8Eo&mOCv=l2u}%taUg1S`{E# zni-oSC-jC(B$V`RpEOF+m{njj_#B;l!6C_X#uccigmd^b4#*bBH<02ltxBC>?aJoD zAv69k?TTx5+||d52qt(ABzqF@lv}lc-A;##yR6;2uN-3l=9sjNxUllA>=$S7>~H~*tjU8Y~}lf&iU)>e0?mVlV=GQQZ96iHNE zp$yvHhEP^$jc?j`@hiK$(^FpLwCjs;d2MZ0<2_ei$v>8VeWYQR8;y(XM^Y8(54WoH ziuCp{-w};lCclUAm)e!JJJM~6P7!65?t#$)NfaN=@C+$ypm&=j!KjVv9hq_d4W}~tSSRluf3MfCsyBsEL=@@l zXHG)KTK9P11C3BK!)uTC*1_1)u5W3X2#e&gnS*Yj>ru^mmC9?ao_v7_e)Q@*kOEQb zJEHOE&iJ9>+HUfrc6azuQ{soRxvyM1D}F2vau58t(dJ=;8a!QoFkaM@OHv$3iG_{& zlQsq^q1}BRN*QoRdkXeJ!WzbEaSj_{rdm?M=vNj02YoHY3)`-Xv`y{!kYNUgDfb`> zq+w#p^}z$J@RtvX$)C0P1TgWphlg@->kiV!+Mu zsXF3|U_Y6hviXwU@_6rY(_D|AX$jM1aAx(TQ;54nc(;XoyH6hF+q=oQ-KE28O4(9w zIrkzf8x&iEvq3r&YS|o>*Lm6soq!)tz5I(S%O4>CSp|mjn`c!%`!x`_)kkunDMoRO z(JqK681e?2uTwNcljT^|pe6BGQjM}e!)TfQWruu(s6rrzd3T>-X zwSU(i8XB@wh&2rBR4NwC$6N?yD=0M%(qz(vo_QaZX*_n99_PQTwG@9;tlR%|4{jgB z4v?3rvkf!J5H})t>fA|P^z72p8^>yQ*RlF&;$LZ@1loiY_!9EAf=gpP<;{{;{82nW zYkvONYlu7i(HZhL3da~)jJzE`>Xrq>X^kj*ER9C(KDf-=n?|vrNol=GlSm9Eh=z*S z^X|U?gf=)c{uZwqOSK|dy?}1&6qx7FIdA0`UtHjiAlzL|e53;QG4SW*et$w*73~u+ z72V2H71h8|)Z8faP&aJoIZimdj|k}^##O~7<$Ri)eIS6Z)-ykU-K*i#Iq<3QGmTLx zXSK><`wr$0^)R~et++6 zyQSX`KR$c?zVywWKNb4@&?$V})B1fot!}sUd&{ff)1~m~nb2=rQ;GLaX0v&9_BZ`` z#}4Uz)rq%fS6s(Nplluc(N=7)UiLy6TzUu@3^cXf?1y&Jq-Fl`HR$5pF&wZ{oJ$YY zeOvK~xH0jI{;Iotzh)>ev+Ze>_szR!EKgf^t-~jJ!?ZOlINJO><1kZwL7YB& z70egGBEVwwKdr4%S^X4u)8cN{-TZuBAvY;L!*N@A2)yT;-_{pQmM5~()iM$&AKyb{ zT8{vB>^yyg`#Ld@czq`@S$hKYjJ&L!!vA!7c#WrU;I4w`I8wtgNZaaeri<2SfuY=r z_4RJfUS+S1?(1k*DK+a_%3r&jF3FPXm@W^#m>fTTC5#HlZ=x*0GsG+pAV|Z&vUtu2 zzOjUVcJNtu6QY?t{w}vHhL1GCKWE_AQLG|)j<{_h`=si(NFgTI$K76D)(rU9b68fu z|IOXOpPMEAPsRA(u{-#el;cO8QqtF?d-P47<*CTkj`TUCzps1d^rNqwIsJX9>C$K5 zUvpf)kL*tUs7ItbKE8P;?d4MoOY*sJcknMN#~<_WCs#~Yzc~HqY59kPF|VO)zy>__ z!-kGO^p>9&Z_I4$Mi6se<>a64csOH&-mtuNw2mhbcvzjNT>9Y2wVCsR)kF}=uW9+alR^uLAfswq$UB~!S zmnpZ|C-;`Lnp_k%#+=hSC6QxT`#;LISCce~$0^5Cfyu(S1I&JB3b0!Z`&;LG5gVE< zHjSa6cFkgF!Yi97eyiMkO=|BJ|Fn&YEZeVGwT(*goKxK9&7M~Frh~U~U(U>YFkj`& zL%~$e)nPNJkiw{>4u#`9X3NZ>jcN zYd}LaljD`px3O%l6uu*R%J4zc>2o-AD=Isoc-vGqcTf~xVu8LI6C30;9KHxC^pr4E z2aqjYP~4x1uLV2kxg($45R6bu=p8f@7G*dd`=9$wc zW_cpTv=p*pk?0uXWf5)3cO2dm8v(AHH+= zpPW4v|4i_6rosQR8R)rY8vO5_fu5tMf!}{O@qcB_&g(m88vGw*2(dGMKH5B$KU3l5 zUyZ8C<-gR>r|0Hq|FQPSS`7ZyO__)BsU9ZmmIlvqqIKaJx?ByfGZ4V1(=$~|{k7>M z&S_RIml@UuXgN>kC)`{Hy9}f!fL+VSVR=khi-gwNqBbY%_)~5OUH@AYk*<@~TrLac zxm~4e(@uhG85XsTbA;z;Hs3Mom;|)pjkX_W6AU@&g?PrBQB@t9Lp**8{?x-WuTQey zPx)egWT_7I5iiWo+!EZpQJ!0ir6vn{bjtQJk=ho0t<>^jgj_OuEW}b#W z_?cz#W2K(l|B${6SMsM`{2A!@s%KH#*g(g$mU7haDf|;X&N(8;>PnlH_A2U zH5t#1K@bmRhP@^kL$*@Tc2hiU-qy~#4E&WIwXy4AbCs*#S>;7|dF7|QZymCqLj51D zJD@FUFk^Zd-(4P@ZP7HDavszL9z0r?0QpQ@$k$9|!`&zDLHaMd^?93nY8lAG>5?-&g z*6#yV(KjE8xmCAts2Swecz3B^OyzB@9{HMa(ns`@J3A~PQ;&s8xGygd6j2PhjI;Ks zA}46Jj;~3mN@0K-p&uyXRb&E(I-16>{ksGcuQk)1OH9kDx;pZu1;f>;;;%u&d2qvEqiW?U1p)lc^e35HKG`$Yp zgFD3+S;BOaVJd!m8?w?BO_+H}nE=;6mk*%Rux*OHCr2$gY_f0``;A2Cra#U+euk@Z zVkpbv6&hW~!&I@tu?cn){mshdZ8T@v&8NXAFQS#-N)7~!EB@yjB)bS_aCyC-6wTCn zgp=^)QQJLqeX98GWL;)D`F6}!Uo^kjqxt%t zXuclvH;S>5VQ@V0?tYI6{C%}M-#X#Q$Z+P#D6Yg9O>&$jNzeLw;#)2hTl|hey6_bn zdn&ur%Jz3<&o=OuH$FcfI!k(dEbxr<95M7P(sQ?U&@<9=UdOXY&m$I;IwL*b%RQU) z{GIXV=3Ucs#Iwnt6L&4IyXZ=vwf6OhMFh{NKfmVGyr)M`)L*6DZ_TZ;c}1H%vOjc; z?li0PPWnFbH>vAPS|{obf5h8EoWL--nza7&rstcB63r@v&X>pJ{9C8b|AV7vm;cP2 z#kG^=ns&f9R(Q)K)nP?oBMa&HU>PqG=Jbk`ozQb&CH}AP9A54v zuIS0``Z@9C1Yw3P;zvr(YNLA(PP6xGDoU+vFC~09;ibzC%J7xae+-Ez^KsxhE~Lxf z=&Cr+Dc3fh>$u0CRIm+C<8jvJwy`#6OJx&0@4>=2T#N|~gWQ|%(;hg#UdNuj!OVR% z)yK`bM&~UuY!MoNu2XS8(D3^n0_?Yea9ORLEHGayWSW<;F!AD_%f|yze0V%!xO{bG z`sBk2V*3&J_vPuOuoM1W4D>Yosq}yF!$#$gO~WC+YX_uen94Y`@Ymwd_qC$={Ye~3 zh(p_|7-1>PcyXSP@+L&%Wn9|d))6&~G#9S;*!1!AJtQZ~J-kW$!oPcb8vpL;$^XA+ zmVYF3$v@JCvYI_p@^5tSo9CMj_M~k70d>#HzS2o4s^~2m3Y&dbbJIAEKOWqVX_of#~e!BKP9j3XlSx44mpwB$2u9g!fn0R%eY_7B(%gQNBwMS~()sf5|YGJp6vI8}9QKRjoM;f0KMeczPaoiL} z>^8d_j%1-+UlWwncw6zYs4P7x4^ag!frj14{GllL6#~I1!xF@Tgr+%k_gN?dT6N}= zQb?$xuw$#283_ron@JwlHHz_Z_$rSh5LBM^!FIloMNJD0l1eHDf=L9^AlO97i$&66 zt9>$}=@`}9mbtaSJamvauow^O<#bs=1kJtizz|IrC1uAzz z#ELo}{wBNY8M1)20Vq(l6lh zmIcw4ZdUDkl&-S?K0rD8ZRZ83Uet!-0nzCJc6gcc)C#6)U_G}#a~i_SZHLRb0O@*y zeR#4>YuN&3eb~|<^-(HZ)w2EM6TVCIkE!^m3KrY1Dm?yMeeSMX{r6f0 z{1kT6L89#Esg(6<#F#O2$sSr+*-x=%n8%%vslss0Cj>nMFJ@>A$d*?E$8lh=Al z{v;llsRlD5L)@XJACXwF9g=HL;m=LV2c* zylLM}{}}v9H3`~<;!#e!JKFZ8Gfj?+8buUelbp=YHxRJo+claHODV2_^l3Kz7cIp? zPow%R-AVm+mmfQWKWOLpcZ(nGWxA|dQyzBO%r@(bvg5Ri>=4=*de{02@d_UPg#Klk z`+y>O+LnekXsqJii=>Gw-R<{W=UcFcj*1jKa7r2K_A0|CY-9=k0F(7gy$g z$fkr<^eoH&V<<4t|H0kOAC0d<{wHUXzgwziOz?h%8wf9-$plX6Od)x1K}ijf1;A# zca?~lf!~y^X|vz5m?rH-Hd5339Ca_=4 zrAlYxSoIXGnog+D-Y9O%^6Lxgtcr`p;%TQ_b!MeO3L#p^Q{$IPe-*cpwYm8!CL1|k z#YZOTxAz}|gIp1hR@#5kU0xmSnX1_Te?n9(D1gY|eNvTG4SiIzj3(Zyid;L6S{O$6 zefHpZ7JJ=z3Y9_L6s4|^KS&O}6Wv(~xJVMX$o%|lCCPSVfvHhYQ`0`v!=B0Xo@AKZ zW7s&6ia`qlMOcnri0^!>7$?B@i-Nl@tJhoRu1i0mGU~sEYD%M`!=e!gg-{te%(#d) z3gXT={ghKJSteAb9|>9ef%ww+&N|YP#vLEw98w=e2&qN9#F|>7+9bm%3fA{l!lG2h zUF&T$Pi%!#^~tsNq)j%VzCHe3)0f^U|3Zr;^i~Y2(m4~;a41&2dhu%497>nDH1KEV zksdc3Szl*^=Pd-=MEcb*<2fQY#fE87ME3v zE51suN0aLdi?!y7H2RRRJIE%Jm(rgusVlZhz~=;amhLGG%i0ZLQl7(TNeHCK zy2SVt4#x{EfdI;<2?rNDt6%Nz#-hiYF5ybM8Ve4wb~<@tsba!vI(*&J;9DA^KT;~v zh~|&buc$aKNaK$w^z~lmwZ5Fb2c8DLbq`Lh?+rvEOA($5eeTk!^wsPpedwhPZo^Cl zs-WSbDXf{tlY=~_QL$;|u`7HJg!=9&d>4fJ?kRjL_b`1+XNgbo<9)KkrTFpEtyIIT zAgty87FH1^Hf8Q5mf_xN_e(R|ZNoa`is)scE4OO3o*fyE9T_9dcB+Q^8Mk3Dc38eq zxb2FnVPU9CWkzg63kwhmwsikZcc+`G?yV~RWXgI&*uQe`q$T&rwAhpOla}t(>JMvL zp)XBj^BS0&g7d9b+huu42!PM(49!N$CJphnVq+N5z>ZpIDxstes>4Gkd-Sbc`RH8q zhhItkvTtlD4n_BdUtkqxa@OkH{{z^x0)!5;HcP-Cn;;2&V(265649~sz7MTSh3BGh zMK;}<1=w@=&^k$iKGoUNpZTQx6TH^}KdvYF?aBLA!I9rTSB1lhR)xE~RyK?Zp8WO% zewcT``)4>=2Oe~(=Jfa0)d!y1H)B66mZQIXqu6Nuotc<~%zOaIi7n>IhfybN{UAqTh>B_~Gd*<3WAF(p~{HNn<ek&-R56oefI1ehr;n&$E8Ay+QIwj%lc}^FQ~MC`~5&atv+tgPZnL*zOz|b$8|ci#P0Xc`q=O zChxy}Vv@Xn^nzW<`*vlSEbq_0ZKv|S-6uT@@_yK^1gent>qpDw{m}gt^4@XJ-=VyJ zxaZ}4tiJ(P?R(zGC&~MlKJs~n_WkpZO(XAbT)k6y|J)}%3-Z4Hwx^O3LmUb(#Y z_W)7*{_0Qu4&{Bzo|pIH*Gf3nz7PAiN%AfpwX61B_}6LVy^+XBdY$R)dBG<=3-bQ) z#1wg7cWb%4&+`D0ywBp8Ir#ARWzYZ8X`I}X{r9;SmE?Wgjg#d4*CTf&?gPcRl0s#@}s{zszuFUsp!}z1-B49DPlN z#P_vX`h7;vGnf9=Y4H2`PtDSpU*0Zaajb4==)V=T(w>8A0;1(2oUS(IN07HD1>2o>~2P zmick~`Lp836+f!bkNR>m^vv>uk?QW+4`rG4{RC)3`TYb(w9kqkn{Th+M{T)Te7gK# zK3gUyDU*}(mLI#5HUq1KcK0S~NX+6MJC9#;FC6Nda(x^&q2TE92^-C~%yb_AA2jnq zZqDNmxhp4Zc9p+XyJRf?oTrvwGbfgR14llH`rRx4OZ!Lp-?y{;U1EDe0$@7JR)#HH zgJlUNSnr(u|LlDUd{ou-{{(`LN=y`@aUV6-aV1pLs8lDK=%_)Xg2omxF2%S(s-SVh zP(n=zqp70B)+N?0zq-+?7}RQl2yt!d(x$c6Xw}|vRIn~YZRP*{o^#(enLt9YzyAK8 z^5Nyqd-t4k&pG$pbI)DgeQj>T{ZIa$z?#?9ZpB9N{X%<-aDvr8d%5OfHnEg*v=Vg4 zZZHUsJvz?%TVTDgOL|KBRG4U|_MNyvEFjaH!S5LyCi5M3cT0t7m*KGVGc5m(XTR<8 zuMW!J5-h*uTQC1GTcFi{&#Nl1qyJ^!w)|=3R|LyHV?gB(`Mi7ArQ>vKog9b5#)Mzm z_Z(jBRBcqT;q^K1{&m|UA>8B=C=3=8>f9_f;O{xy@I2@z($2d-^iOz*Df?D(v>xAc z_{N$L%)fr{-*c$_$GDLB`p-OA$oD-530&^Bgwe?AecyBVcmnuDODm!p;EC$j{ym55 zu&5DX8Zo!TL1dn_rohP*!L7$f9q@CJ3a%V>fYDGz89`Uy=~W> zX5TVUc^2!PwiEH&_m0O5%D$JOY3`vwVn((HRjI_M2;-$!Gqdr@GaYoso?7KAuJw1%3_8;lL z^9E+$`&m=TY~TA^>tBES{n+Yc~V*4MsASioH1Dg)0n`<}v)_=dLcO+Fi>eRmq@=~Xnf|492Dp#MI})@Ww?o@A|m z{q1`cJz~0jKgEg2A=vk<$A@Cyz3-#muE6A0U;Ez85>B)4+YTF)eXqer$AQ}Sr*uQ< z{(BaOJsaA-_du^QDF1EVgPuM`Q~P%8JI=9)&UtYoGJavaY@wA$1^VPcPSjy=SmO-l4(5(xnZ~zcA58y6NCUK@lG^=Q)g)A9PIJCC zklLSkm=(dMZGNe)j@5%z4!*@kMtDR7J~j8=yHHIhrjKDl^9cg@Vlv3hX67x#0=#Kq z4tSJ@$8aDDit^BoId{~J&oTECTL-%z*qTw6y4tdW@8W?FxmiSl;D$SU$W5_wGo9T0 z95$1j&aJ>uLBX963e|Q_5KIQ&7u-fPQX`f@K zkXyOy@%^;pq2a-NKW!3rstlpL#m5b@yw8VL-jRbX@6n;@^ADIu8I(SEdv8ekoVxb% z@Ua@07MkZ;zDIWwN6ct`1N$D`+}eJ>NB65=@GStRk#N4=`ULS@TpwNdsM>mjwvNfl z{}`@3jAoI1uI%t&EQZlK?@d;5`KF|yH@Q|%}aMY}Ke!hNCTa^^j)tx*Q@FY70E z(E?6H*!Je?W2PGvwC#%i0!s!1!KZg!3%;!1M7{FGMa0OIXtu&c-Q{PQwS#zYDwH;} zJnN)q+~vvv(Oai}itTPvXkI;Zh$5H}|TzH=apLN1}V#88f zscuk_{F;G$Hidd(*Aua}h%EE!&&7|4|!;zI+xZ6a9y8-XQwv zm;aMC4E=uV_tS+Ng#Ui^bHj$A-!K3BDSht0)}ZzN!a6##6=k(JBVSAYJlS zNLORoBM3s8Cg3kWpMvuk-R}Z)Hcps`jZ!f33026c#&5*C_%hw$3)mrG$6Ny6)_na2 zhM+tt3b)~sHWq1W?%+cU6EU9%jJ+*3@5rq^!n+m6Teb0ct5Psgj&nB4@lrY7QR&Xz zA`7<&GEa!&c2({cB?Y)Izi^zJ(weETQ-r<~?-+vKx+%qWnusI+x82S-&&-{VI z&ygcCb9bso?Xw?A`~CnGZeKvFwM+Kw-lvQq_Rj1VED**6CtL2hFAEHVRu14Gh{kP1f- zQ{%bQ+H<2j?Dvd_hhy5J`3K7H$xD6W;RLyy$kXF+Al<1Q(8$rXP{j*Vb0K#mYwt1Qctx{$nSt^S@w&6 z(6U_;cqp+D#Kcb}i%eZLl^-oANPe{H4?8SO;B)GDU=F{@X9`#*ZNo$U!_O!67k{>U zKbPSrPxRvl+6m0DSUXY^{uyf??8H>fb2_Tb=$k$2@!V6MGsE#9Iflm{NzE+7?h5_2 zEzZenMr-c{sb^lKKct4d_fg8i^oMY3?Ra;t6IU00_u^%u+9jCs3&mHz4Y${w+sx3a4iaBz#n(aBMN z@`aVegdWp&0E%(8@wVdEDgdtHkvrZQm$`!71v$vQyrI`AQ234&FhcY4OcvBc-zMh- zw#=)@HY-sD{wHDcraVbCWIRt-{T-!y|C)aNffMhb=4l^{y5(oA6jon;^jTey`>5A3 z5Ab7nf3^e+R`JI(C$tRA3*bJ67sV!*<|79p(^tH})0tlY8W#<;g%{`gYeVxz)tu^gbxzgH^#6hnDywX{%VL9cRH%=J)@>OAMOPA0>hY+WFILm}~ODp6* z!MH{-dXcCoQyq+n2dPWEavKyo88<}Fy&WG=ZKyB&8S%r*^+(nhHk}!Uk+V*oLFHk( z2Z*SYJyDf=!bnbq7eocLAs-KJ5kBx^f&FpnpT#65zY0j0gY}m&;HWP_jgoUwNL+>9 z76nX%LY$p>4#(dW(LQ`dl(9cW6RkE~Yqjc1bKS?Fn9QXU0hyZkS=x=D9c&FObNOxB z4$$#n3<;U6AA?2J%e$Pk(SLhWuw9iXVw@@>5B!Y-Pqd2Ub`&R(^U?1`{Hf4_ia$T0 zj?4V%+EkZ*o^s|p&WpwTozy8!sVB`BE`GcWW6EwrYbJmp^^=&~*m^a04LCVc07 z3d-|=7ovZM0o@{<5q>PNwFWb!RJ0qKE2M*sDXa}okW;A-=A%Iil?Ad*N66L4le`h9 z{?7K?^fjO|BJMokE4gTEqmiIG*5KzqDGIBmsRTifP6Oi+n5frzW%!%|fU^&cAT{?t z!Ah~ys+h4|MPO9Ergk|CeClL$z0Byw6MAnB6XXRtR|_IC5dmaLZB!)3*Qo~37go{w z$uEpzXXw&Q{<)UV2Af=n4mA!AsV;IDBd1`hh4)BnaW875;L>L4U_mwxa(kkN%uDFw zD9$2FK`>p4`dlaw5iyfeX_gzffI83xsnt-h`7R>}kXk62dA2ek9Um~GLAjB(*x+h zTSdwJnflLDP>lFb{-FPqbmpE^Z3_@wRij=Y^;k+hpHUh6v*cmQqz&XfIi%n1FvFE? z^f@AIkI-|4mB$$*kgm7GEJuHb`h)idvi!{en@QRO(s>u@Ri7ZoVFhjBxR)VH$BimV zRccpO110uDs}50*G{@AvbV^momw0w^7~G)`#9wU3Rz=ho((0)5+@CxyaimLA;uTaA z0YH$AF!?h9NmDe+s6`ngu6;qGY48K4V{8{-`ni|Dbh#L?j3WBt#)ZEa{sMC{V-^}e zaqlK>7f0NvJM<)daoMws_;~SmfqANyi?sn!)@7QS`v@gB`zHwdT2Y&- za>R<~DTV@(n6Gh9Cef=c(Fm0rQMU7P&J`w*t*nONR}cAtn@C3K`-ZNt~ge{SzT7ktND!dX`8=AILt0o3Eg6 zXnTs3_owGXxUXR28WYso^6b(kq$~j1*jM7KKao#)s}4z>4Tx!+9B|y;VX*X2FRPkD z`%Msq;ue!OzNZ;7+q<&l32wdgpYeoEfm=aZbDosvXJ3L(40u^p%mPRiP*dCcb1Inw z(_qfoD2I9cP3RC)SLWTQ9eD&0@^9s;*Yh|4H)H!0P7}%5MOi<@W&MnLsRoo%12p`X z4>edklv8cFV=jPd36YI@su%0(=-mh~pWzuEFu~oG0D+`TvSy7T|8+#dKa~Gxn9$?E z51HD#=qC^oBa;F(AWh`}nuz?DT1EwGmBXbI4Avnjx_*M2v-eb718{0U(nS7D6oTW` z3e3Blz5(qX$#+sIuA7gLRbzGBVoRlt#Q+dt^VvlV^yv(+IINN^A^S4mwx^)Tpc^0f zSYSgBv_D~1vsp+d?m1B)X(A^F{2BAU^42blXt*ZUHGR2QR~HOeo8?nK)|R3$lv8k^ zsxHtaH>AzqSZn_^(9B;fZ3#f2W4cP>X=(!#@Kr07JHN0F>Dc!8L7lmFd0}iibnasK z*gf0f>~%cZhSEYV!uF|hicj)r7e|5xOtN;ENtW?o!MTfLSuU*>pisLWtsPPoK3ZFX z))JOw!u=5&<`P>-Vlo}#ND@iPjuDTyKX-y2%QJ1WRjY0X?~I)DwA(^Qaf@zwhjOV% z@IBlXg$(cnWh^LMq(2~{{;0RnHIennWCkY)%o|WFh`K1)Ga(e3^|?y{)q&EG1%@=s zp$XkLXclZ!viL0s^UbFiXV(`lKo*kwk&)WYr@}QWATqULo~@(E?2QP^Dvk?_7!oL5 zFjt2ha5-5*gtN)|p7%Q;Z_c=fr00GK0Q*!v!)|v9ej`Rf1O;{%DNlD5cB|yK6!z$k z1%*a`Af(3+?x`n;nfURVHP%&xuHJcP{x$U0Mp3$vVpC3#S7T zfa21nfWx~Ad-caHg&}2iL19>bz`NrI9S%WQa>V=u+$GPEaSRw?JFY{Xw9zXdJS_c5 zG*#_gw!K=d$#Q;(Iqs%+fL$ae_H12Es}TN-^rQ#!3_S`icWYf+b3APgjCUORb!9$H3Me zWX@Ni89OEa{uO*xB4>Z~Oq&x2hkA!hq2Qnx_Sul9776C0#=HH}E|_Z=Z}aE$u0aPq z`%54qGU|wQqOU$&cu6c1$+jY0=}%w0ijsk#&@C+-&!DLTbXdS1oe-{AV++N9Kx^X< z&jMfKqWOvsFzAIiKxHrl#BqVRCMM-y*dgUVNc^2CSGj{fZpn_gcS6<&)MJQcjFt4-3H{Jy4t9B{!e7DFyT`3|XA4vW#H21o5u~pvJFD6gLeQ*JU z>$|$O05yleTMRhH)dbY#Fnf<_P?#6qnCE}g5?0ookSW4Bp(v}p$gOrv>pCAeseA^N zU#yk%dn8)v{2;${1bi<%YyBvECm>vIjLWlfEEA3*6n&mS(Dc+m=@6*0e`X}^P z?UD(%C#mf|KwP{7i1hF|od{BMm>}Cp17sROvZ)>aZ;FX&dw3WN7ba2oDuSZC7Mq43 z1e)~-$Y|Ocm8Vuqjw$?3EYD0?Xb0H~^^rT?%s;ygmB>%~oQ?^=y!_K}`;Xky@O$s) z#O1{J99uy2OSSqev|K|VZu>i;S;kGZw|H23gwljnE)dF&^3YFa*S?vEv zv8D9NX+W^5>Qelf0WPz_<;Dd6egmbWTSZP4_zRhh9rh}53!g>}jta6jG9!Cal)Z_4 zN>=tBf~PZ^TK3Q$`mz@%dlO3=S@$;+`pIjQyO?-FYOlalqZH8|$FOK+WN*gefc7rL zZC~v@jTrzso<1cjdodPxzEy{`!6+KzxW@R%2 z{2u7M+qhP>v0f5DJD~lu*U;2E%rDC4u*D*#Xm`9fD=_y$q?pYtW(s6UZM)l(3qsC3 z9!64gbR=a^p6%G0Pb#M3vz;cKX{@)CM_vP~EkrZ_sLA&q7h05vy|aFq~-(efcO z7cvF1q`~P;VHQ?JOQWnX=fhE~d1;RF)`s$uzp;fnx>mZnYnF^x(y-JtKf+S4X|~9V z1kah&6uq_zEBNjq*ji-Sl4rQDwDd~+J(YB zp^~52c`m1xDMq|WYPpT@O|1bR+n-B?eaP9g#(n#GG-z`w!smegz+SI?nl(l zjxy1%fpHv*#3W)~x*qz2P8|kRb#eByWvrx!tuSD|_{6>&O0}=A^aPnV% zog&`OlMG#V(q@1iW_s&Pf3U+5i=Ndc7Ci=KszvWGLoM1$Hm3vgcZjS(5*8RCYxh~! z>MU!T>e`;18)FCEHcGBl7VssGavm<@gs~XlTQ*lQg*bgb zQkA7~~go{M~)nb zZ)I-`x*-xq0YywvalAK0LJWO~%`9dL79|aYgSE)Ptd3VVin2iGgkZ&}n@uVAN3&IK z?VX9CbrDWAY8;OEw-|zzHq0-46f%}#*?2M1h6RO>A))i3&zh%A7@7RA3!g@T1fcx| zx4!TIOXEPK(AQr8g?};Xu1kNj-4~VMV=awK!Q5PQEv9Z3nR7Z5Cl$T)0Ev^1OhcD$ zPC8_q|58U$Cq4M(^vSLGtu?nLvv^CgM35SZKO&a32g+2-+P%hU^%Tw}cSuR?MO(8} zDau&|T1_%sMduH$0!ca(KF^ERj)ygzo9Klv78TF@jbLx?VlSIU zYzRR!0ueInaLMt5$0hIj<+9lYJy^=QO3Qg_iNob&DF+1*60U{pftqZC5Jij^yw`s% z{N3i_6*_o?%qZQJs+VK6#4CxpJz&iT7pn0%Hptl#9jk~9=FWW;EF?Me2kF_Sz#OYh zr7tbKQbpe#f%}#H$c+(>0_ld424#K=m-%yq1rVrpB*qv;F;v|57m2v5(cNif?(bmC z$Smtl$-U^S6FHN$tk;Pt;(mRBtw^?fh?4DABswBbl$w4;xxg>VZ5`An)D_BGb1l!lSb$0wrA-mr7=t7A}=KAiVn0p z+Na&go_4vhDS|9OFkv%h3c7X&)Az*6Pk%_Ny%nK@R{NpCAGBKu0);$|@5^f==dsmz?&{ZMMc&no#tUGjIGN6mq=3e-DUf-H8I z)Iq|~u8L9UVqD~4aBZ`%ELW-uZc(%mL=*cxM9^5xtQPGuFh^+HY8OgQYpbjkN6_(} zpyT@$)K2KBpnrKl^mr?R0Ih;2&b5LTdxF{xL2BR!E5;lbqtU_OW}ys%?v&hD+v+04 zJcF1b>+yn#I9P<#*A`YziWF>bm z$?c5iW`7}vkO%XP#X5zEc|=4-_#@w6UiK6DoYC$$5`TAR@~{}|=?D`$mtX((@<_?1J%FMe5l-1?SZy!P_pE2RoJ zHsYye!S6NM_uEjZ6Zt)4`{98oZ!wnhy~e38J!Sa5Gv=S=g|tpuLxj#6*c>ImLMqH& zXQ*%>hL$4+qx01OiSZeNdXx;lWa}&JWh8bn`@gqr?G0mn^G#Knrf6b;f3AHPybmZn zhZ?Dw0|O;n5tbQ2af*ugy_J3qyjC$TZ{Q6Ws*)WW=6g2&2U|E-iy8Psu|AunP3mb?(>mmxP^X0Y$eZ1tyqgVO z-d4m+W)3&34^-ZtaIR*E^5#)-r(NBTyrZwuj6U_dolMRTseaoK2ALbK9hkhbW8x;p zPeYV9LU}K=)!3(g3uWjeT|v;E_mb)JA<5f`u*%$tSBM5&zxN=l8mheLyF=zGTaA6> z9e0J6(5HS6k@@%`$=i(>$~=r$pavqZu(_C1MFXl|2qONGpZjH>3V$d5SDYk-DW~7X z`#D$ep{b46L zNAc1Gs`#tgeD1k#JKq~K9cc2Ykasd|sdS+1SJ7_lED<6A_N}~MB&i*lW_9vWJ0D>r zBq@xwD0Q-;vnQr?)G~yqBNU(;B-P`Toj0}dnA1TdA}Mex*|*bVJ1o!9)JRe-BEibk z-SOF@q7U|i+z&AG->i>p``yld z^|A8?(uXP<8m9gbzHMSIwUp!3ZQRsi7ZnV{Rm89qCMP92jfc%DqCmj0p=)htdEK@WHaU5jG#&3ClV{Vvd$3BUp3V(Q0&3 zjuW2Ecy6{JFfApHx0q2n$Y3SRT{pn5A{-8Yf-3-xf@vq%*Noo?6|Fs0r2g)BdN&^I ztDmE6Fkto5i8&a5!wKl;{90zJY>;)NMIDTOx}`79q@SlG$HvP+{e=7IXZGdaf_^5! zf#H4f3lMg%aK2M*+u@1*R7oT%gw|7p_uoSkr zm38A~$ewrtS0lf0HOb(8>`rsQUohG&dn~mj3hC0?E9=4-rRKC}=9N8$xxDODD0My1 ziPn{R+k45I?k|9o*glHQIUrA9m-}j0 zCz`q(Xmw){1cyr=ZWAad#mW{+Wy_eKEBNxlRuKAyI?sf zJ8q@s;v~=3;#zHa<1Mo8UkI8Rc6`@r2!V?ZzC?=tV}7n|b32OArq${H6UKn^swx zR0&uhN%N$ANE2ezA(<#&?hopmfdD3*8ISxzB7tHZi^;^~H~&;7TP$EJ(qxZ7dsG^1 zW~F6T_!@2bQah^G9S)A(R(}Mt;Hw>&=Bt@1Rvm6wHG+YZ_hhPDp6fz`dEjdTOCW~j za$y8^VYU()Hu9-4M@>^Gv?aDlBYl?L2>~5(2AglUdzQa9mg3Y%$d=@bYk~#T5EyAK zQnb+{@v;}@Pw#-$-yz+8um*7q-ZbG#UkGOTRi^e5Wd}|V^GnIuBA7E3Wo2o##VnE( z^=R+gnQC;}$)8|fQZ{u`#~<|tv~H^I=snuWZWn;DCi@l=7&f$rA9xY`)?=~pc?w+! zT2>_qfGKA;n65%59}xb$y>zT}^RD#N`cfxNrob{IX+W11^dffW6RJ-DAUCE4(He;b z*3nzxC1tq**OJ=zKR~(#_vYP;RcEo(LD2U%w?p4!r5c0!PA2FlLAlp59U`&W%M21k zMRvGYWbU>Gg8syb&~0BBGkY9E63*6CZ7l>-!?Py=-X-)s_m!rz6<{N|l)TvfSY0GL zi&)v%=ggyDsyGqr*7`kCECYUtz9n(dfJguz{Wr+7=wkn|k{nDV*n3{~f%1YHVbsW> z!LSrwGeY2MF1*O$6SomjAp7>1d3Uvhf$Y*<-)rL!xOv@FP!1)wP)}$(2ue^OnULeD zs>*R&&8n{{8~X-tpb7YPM6*S}2pQ-5-LMSCF{nBGp}OZRtM!)%`2b>LY)F7#(r=6g zk$%<_P!c}{47z#ogMN=z4@X{FxD$Hdose$KkNi3-8WF}Tc@};o=Bcy!sb~L$I`V}c zfaLoq0K$*3K!Rxwkt1pRN_-Y2(U|!jnjQ*05QQE%ZVmj2d_JX^D&RMKSOti3#l=DU zjBubObeXCN1SQH}XS@-dNx?z(`mDzQzM6o-gjhzE>9!?QP|e~+FyGB~BV_^D(Lb$a zGYbp>q!IfjZWwhbeW$+7X%^b4MqwU;lQc?~c!x#@NsCM~+Y2(HlrIX+fgtD!t4hG! zYUx>w9bINDh7+c_HVJ&7lKPfbB2cGVW!)NuS+&k_)(7T%2+2kk;`7W~hxiAdb%tsK zXP<1DyP0Hj>=l-(+FXEy8vca8Al}SPDFzK7`b_FGhavDI^c|{Rp988vD)|1nQ-DW_ z`Y^Jo2zgN!uF68qq3OC|yHlLC53%=*_6v948He#W>vf=ydLc2|r)wzyL*>&xMDxXF zB1=|*#drA}SimEIUWB+|oL5Tt0;aw;kzsvFiUtx%0yB@l3Rr1*6cq&6#;DmQRE%w7 zMNS)|ew0^W$>5>b^v+UVZM^@by@eqN*E0TjFl_|k7?SD(Amk!O|0U$bb;itXmXsa; z-0o2BGyZwNH~#6vUuBTLQynTk{%!;TRX0=+7@y6S`JVxgM?Sntbx}oK2F4>>+F}Pb z9$6r5b>QQX*M6NN_Tn3l?EJ7kf_IVeh};foJhIXjB9*1%k?{)=DIE0(OWGjgk@>a= zYoAb}_!HdrGakv@|Cd=;=aBI=AII{v2|M>;Ewlz^JZI|6h^jPu6u0{?MX3%bSLkH)a=>Hys`(qiEYF=CQ@0$&W^B z-$L7Y;|a*%Lmb8zUr|yZ?r+Yr0;lmqWuRBfx{yXzjo0)+9TQ`wKA%Dc*K~_6Q^8{d zsiA~%Gg;uM2LOx1!yh((=tkhG*tV`-ppA7W;swhDI!d(HorWO-0ERwjJS1NWK)o@WZ1RPx@9zPnft`( z-JH9%A~J3#VhdBiN(#id6R(M;C}`YSzCMtBl9j%KxSf_pm!wPM!%u*Ic~Lv)ku-8C zBNE{4urrZ=z>Uz=?Cq3~c1xp;Dfo~S1fXbdsy(Jt22ukt1n}JeW;LUJ^QgUWym3JN z8Mqi(=xr}xJVZQqzk%F;nwytpdo9q9#v5sKQbsxZ8wRI1lK7Be7mbQH5nBut?>1!3 z*gCa2LxDAj->?%FJ-vhssSy$%q>|v5wmssw1$a%pDgSsR<&D_?2s>U;k_VBziG15* zEBw9+KV|^%65n*P0>C%AXETp+4p?LWCEv%bR0+_}qgEmoQY@SXfBx;P6>1;YF(Sg& z8BfFVVzfaF8Uh>#+dTBOcKXNO_U+O?|68X2!mZyf|9cIY|6)06Sxtb>vq%oPsK_&U zi}Z_-#X9@q|L_d()As2fJ`??EXJqv&@0l6sAG#L!SMKS{|6i}`pP!|f z;Nf%n)Blzk_&IJZ@ITH#e{JyBXMlhCs^NY4$rBe1Zxoh(J~*J|d6_Nno4)fh3lIpc zX`FOF7HAgn$jrt`uPrZI5yFMBTM4Lfkp|6!>n}V|9*Zhmw>hM&XT}!nWhN{#Qze!v zYe^x{0FkB>^2~k@VhA2e^)!KSQ(22XKbq85p^#pru%-#&cp|$2zw?lfyb0Yb*_;v? zp{M$SR6Gwaa=?KioxO~l`%n0t+DxzOtmnvimtTPGnPCa7u(Xrvwf%yVRA~QIl4l2O z>$-Q^7skJsFZz`41n-UR4u7=?din2gE2wlMZs(!>t+dY~^Bd$NdvD}gT=G;QB(rVr znPLBDV<(WZo#CaNcN$|4mAJpK4%&#Xn9Kg3Rft74Q7MjrrYfs(U$eaI98}~vS!M<% zdZn_$=CXegwyf9Qex-G{N^enDy;x>j6>pr2whekWE|g?$i{8O$pzQ1}WB#26Gn$RQbc8!xF;3|q0yCU!ps4@g66X4h;6`PZ<&n6nEmURnS z7qYqm9>bG3o+Kt}AK7Ydgu*d=bL+sL@HnR(_AV!CK+p!|x&UM%k2Bj$pH3Us z`CmLVYu*E)@wT`Y>K^p-OjL_(CDW5y@u=b0`y0%g0!|1U zBfGO)18bB;kFvoTSaUxH_Tq)>WniCQHvj{xQlLQ^*u|--J_8$Vo<~cAipri$h2SVA zJSiqN^QW{F3zueM*=sYgk&qWAHks|4HFwM3U}A^)O$>#UjW&m+;tW>S?|I_uWnW*sGX(o8Z7l0+UK77?%_}L6)-|tV)Y>+Td0lw^dYRWv zi2;~bmI4jZyr!ql44Bt_=!P0;TuqbIw2r|Ldc92R*XN08VT-t$R>|8it%Llg)ihzW zxkAc=SxH9@qxy4!l;;}Nc|s=jWJaUv>wnhEp6==C&z`jZMK6G$7_F|naBm6W&FGU+ zk%35A9h@JYzES3Nip->wGJ|uxjQ(5c1Kd)-1k<;fsLS{|&Un0te`01I>=`3(=;~zt zS4M{zT0DC#?M#CE^m&hd=dVcb)_&;iwx0Ap!fvfh{OzAuKmK0ohu)2N?QwnN-Ju_P z@2w}j2l~<9>+31+zxv^Cef2k?A9`i;GUyMp5oUgsjv*bZapKX47@Yl}2T`j`_HaS(`5k4YbPT4j#yIPqZa7c>(T85=TIpRrdmZ$^ z2K;7;ugES$NE~X) zE`(~bVHvv0i}I^U3aXSTP0p&~wkj1`lqCzcI6T8$G`;Q$6-nQO{&StY-M8&*yi`}h zaJ#2S-+p!A>49TZL6O;iXKf$wv+f>+w_om8LDlYz&Y<`^?0gKjQJ(U5v+_qamA_d3 z{5>1#%U{Vr_;VSxP1LDRu}^K4vR=R7rkwuP>(ySUe;@qW>wri7%e*y^g#Nhx;UiNU zM;1;+r4Gw|3@eKE;D~K=H=Bz388#LA+L3=YovN#`sg31FR*2c*si?0_ITEpgLOwAS z7!_76Ind6_-2+scJj&a1bjK-V)&&1xOo?Uy3kh+{sLg@Y(%H&4tEGKv! zx9K`SyWYUktqP!rVw?leeZGj#;j*!u)B!?R)36yolMFDhLPw|&x7atm z&-0i$)t|=yykXg2`93}}QZ-n#JhV~j`^vA6*Kz&ux_v*qX1l!l_*_{)0n(U*mQlYE zm1EU(j|Q{`u$$GL?a=f< zr7lr<9IF!e0lueYG=ev_&TItF$n(BNa37y%GJ@+RgI3s&6}aYX<5w)YK;z;5S`nNH zHwHl2dBVPIoXB$;OCE*6^p4Cp!@fEJquxYZ1ouE$x1Lh;tWifTB(_A7C6v&-d@HWsNLJvoOHqOv4 zF`o5%N?M(Jy*^krTTkEZ+_14g$;q)y&bfK!gdg)Ps1=2QghBHX}rf2XU_t zqSPy8mIpD{2eGYJ%484XEFZ*&7gLszEahMiqQnQ$ArK-P)LgqIf#1bFGnv2LO<7(6FLHx`I@q2*~S*CdqGkp-Z zdo;>Dh?9H}7YT%Lx~B&*)(3Hy zh<;s&b`Rp09>o9nAZ`{26pQm1J&0?35a)U{rg#uP^g)al2$6QY2XTZCB1<6Tg#2wi zh@E{9FV;|&QRJidI#=2?d|}MCs9OX=r2T^j@um-Anm|a+J>o$;;e+^|K;*KN>ph5@ zeGsDrLRwUf2XUzn;+^T_RA?OMK}_;NJR%Un$KD>qem;n61VS{nsRyxz528{a#DAD; zU45*?dwq^R_VQ>f_aI*KL3}ffoJuKoc@X#cAYK&+X_Y_rAR2uTtsX>`2XT%M;!1%K zOFqgdg#7_l6O8H>EtB+4W)1h&i2hr(4{LTllr$C4=yvKuhzz6Zo`Q%ijt@j|B zd=M`Qgy{547b10mj;z>U;_D#z&XpZz%g3Ji{kUmFTY{b}WZnQ8JJSfK-w=AwFRUYd zpj2_L0e|oqC`SOrOgR(4d|>W6%aIy`<->Fy-;RBoufT%yt+<}X^){~ISQ6b0*HO6m z#fc_d58(P8u1|1{!ix0%xK6=!8LnU8`Yo=vaAjegepg&&xX!`Vi0eLFFX38=YYVIm z?1yU-u1j&myvbh^EKlItkZIT>PXRU$%b( z7f-R?2_#BzorMeM6U%}57@x?nG|G?!>f(sh3r-dXgOjUiF@1xRkEP<_TX8<|JV%X5 zJrG927d1espC%7tXP*Jy?$J2cgV4`MD~-!Mh@(7+H(9yXVNVnY__UDO&4YNt2eGe5 zW4H%#vkzjJK!}OH-RQ`Yy4)$^FJhk}$Wkx+2Tu0Gk}cSGdfC_!q$13hZ1MH=UiJ=7 zc2_ln}ApI!XHLW_u6fJ`ciQH>=O1Y*IIk9)!PcUJwY;-8mkFziw_82ytU&E`(P% zmq@ml;di`jw{A|9YzaIz_Oji&*+;Sw9)^s$#t|~**3Gzc+`4(r%}%SEfz-*s>H~Al zqjZuE3jii-#%|cP6Z1v`&z(zVgxB#dGu(KlW_FjCy@QwSigNB$SCnsl;z$}4C4K(b z?q|?RPgxI|cxC4GCU}p|c%wIe;?5TiaQwqb(+n==18Evkx5v0VC;k1?vjQOo7WE+f z{nM=iAzItWgYfrHmwKhVJJ-=n(%(Pr^Fvp6OI?U{_fIdM4K(ea4nffa>7VWdih1e> zPXCmBn!}G*Q%?W14*!m+r@r-f_T`!D5B0?fdQNGgDrMbPrZRCOZ=A}EG``2?bgbqH zsDZE5G}DRNH*xqP3a5>=*Ts!yVq%ybd7O4yX?|$|bY_h6o-yXitAJJJT@Fl8q@5^x z7UE;b>sw@ZPU>;yb1{<$cEcIwXY;H{u5UhiMR)%0dj}|6=q@?&4Sr?h?oHjHeT%*w zfKAM%=(WLmpOaa&jrE0pevt47BO)0L{qu0h#$ezdM?|w$_&nLd9G;pxs~r_K5*0ZT zX*N=C8-VLjAa4{46T8&sy7H#u0iiYV7K_~6mX&o zc%Hv__NP&EP7gjaW|y2nAObVsJa!bzB*?F%ZA9!608&n`;!lx8Smp=cm9wXd0W%(W zjQyBsj6K6kstBj5&*qSVX6>n)3d^=wZ?05%T?PYpZ-V{coYLY2>XL+9T1>q5mZ&3KzANE@RQ%%ZMR*$$5 z*W3A{O+oLBENu|-hb&I=lKAhwn%peOm&KY>J!lOsi&^@jq#+=@)nfSCJVr%cKp}BKg zk(KOVK1={kk?-*f3*dYa9`m>iNfS9QoQ3**ANwDz4Z%ZFuDH)(;ucefBbESCMf&6S zbwj%d#dT$rQb`0HAffM~IgT1%u{-e{blN3jZFrB@OH6h35f<;*6JaNIE95c5` z?M~7hPEADN2n;$*Q;u%Z!FX$4dEuCbaB>DhQIQj1We(Wc0`{W3&mg6`?=$GBVR(t5 zRhHDSVV+y}xuC|^Q{=#~9_&6hcwb;JgFehBhjH6~5o4~H&q@(e3)?BoqEFT|~ut~{+>pnX)@=T%5^AA?;wr_R_k zkuwGpMgCwgF<*9r#1r`!N(_rw5nV-26cq-mbUd=@J{qm7D-2v96f>Yq zn_}?M@L57gpP7e0W0SWZY=i&lfvm|-W%@cuK|bwcDFi<6^CL^46PWa1U8JxjDL^d^ zoa##C--!0;O4(BtR7-Ol2v4z=9HwRR1uj^SahMrW^TDwsAN0$~Z8Knn5S+7Ursffg z)oPiew@Y3k^RrewTUOj+F*VbmMwZ18l_Iqe>lH$H973%KI4u@av(RESSgdAZ?VACs z+hQ>_X9^ZwC<>}0N;AbyD=0#iArw&Bo z(X*l#u<%UH)yGimQaewRl!`^!y#kYe$LYSh9E}^li7z`6J3KBYr%_f-BL8nwe9-UX z#t(fHq4}APk4}?dY#Q<(k3t7#^2X}k?T4Kb3xu9|y;g=N^@STlhIyJelW1)J@Ub2S z`89X?F;XwGgQ3zo839ks4-QHh;pEFY{#?ZwAymy9_7?%IS*wh=Zds)2x|UtsZadmKQS*udC>22&l6pp zEvL$sBljpLs^wghp`1}^gh`=7}s0b7VOT}Spwx|MIl-#4J95W`HaEv>hX+d|s5v%J+K;3(uj$e4n`i*!ID()c_8sPXA8VjlOb-^5sE?L~y-C`CFfgUt z;h7uNK%j4|k#v4xt)wtVq?ADNkrwlLBL6&*01DCC!9%Q993GT_pr&z#UtbSlQk?9u zb2PVMHIfc6O7@D#9{z9~1onE!7T9B;PWHkq7VPCoYQLk0=RCoZ>`6Y-ZV(20M`U2{ zx{@G!1T`OA>}M~J?D^adg8{Q50P+#0{rw;eFw9*6kmu7tiU~410CH~{2)D(WDFKjr zfcyoUxpHu}+@ZLp<7&b64z5DX5=_F?gsTJBYFztZWM74=8CN^5Rk(HpjdEO0z>4^- z8+ArSwnMSBROxoywhy~Ne(qw4-xy-hxFt>GoX%jwzh0omGcTSsFE*?}$5IXTg>MrJ zHPM6ATyZ!{(cuqEW&23Bj!?Q0T1y#RV0MfgN4#3DSBhHy3!wr2^ph0Kd(L9~^E zI$u%~DjbVz@#3s$%=9PPUNy0B^bE7SK#hbB?yg3PM*VH|+y`iiKus zzH51k5jw812z@`Q;;rxdVv+Bk9IT2>54Ew#8IvRy`7wYs7U}w?2opnWTJ6*hViD3a zN7vW}`WBud7GdJVBD7`1A`GFLxCIAh%+5q=1u6Z4+#{{z^F;m?!W)$1>r^iN9`1a_ z64bmh-B)bt8WvK?LZF@b(uc5+xGjWz3iX($g`AwBkS)^+A*i{~Ur2H%8_-~QE++vZ z6l86poRBR??om!BpC|J7%}~y-#s`HVs2LF`=P?`5V2XsZ36N)zEvF4Bl_vK{>$IGW zGL&<8S~&zYw@&jZEqT0+GHB$~Zyi&VR&7gTPm`f%={dD;zyI1HL8*#a+L%CTZ`*!f z1`{Za!vdBTv86?AX>t$QR?)r_`M=6g+SIht2x>Ym^via!l;)W#or<|F08)_#LPuq; z2!QNE5b#28XY$Z8*jkI&qR>TiuW=LSg3ue%hIM&#?PXCI6^pVbr8{N)0_kk{JaMuHlEN=OBj7LY2qV5rX0-;Hp+D)Zu7EaU)|JsCHmu>c%r;;s#(Iyg__mP@!2`%Zu_inoaD{41&66DjFmz)P%Tu0 zSRUx%y@>obDrv+)jprT&_$H2t5^%?+=6qQMk;6_Mhelz%-T9b*hJ2!I9@U0<-71#5 zNS>fCMJheDti-GTQE9CJWTnYH zQfWzv{Id`U=nRTC7CnVW%{6h1i9U&N=FxMdnUoe@ilvH6-O59j%&!U{Wij(zz|`w5 z397|h-s@d0rJ<4?~heN`dQ7-x9skU3GAcV9M zZO1yt!xH2kX&s3s@(;|QgOmIv5YGI%+R;IBH5~oa<^^zO9O@Zd+zEadt{PlU?8($w zZzvGE&DQmZM9$qT*k`qg5h3uvD#SZjc#Vnswo*UBquhxzyj zJZ=g+#<_o?)ZTb}9U>2p$nJcckH-}O=o~y|y@WZ}oyTe4XL5H6O@%J6!nFX`eYp6Q zy+7e{WQ2S$x{+AC#8G*aaZc~BnUQ!CB(;q&q9rFroM4N~>vOQJEs*O^a8jM|#?hd6 zLU?)BF!$Ubr#$8_&+^U_g1?Y9Yt<{?$a5F8f)ILg`dbG>$gI*2Y#FBC}w+hxZ8`zdHFqe*x&`sYAH_ zuQ(>_dk&xQA*VY>aFTEtY_s9tLrxCEjj{YwBudF^QjHiMImA+%?`Ip1OmqVj13> z<%w8oEtZ<5nh#bNlG-RsjkRV@cBv&RVC*Cq6HB1rMV4BfrKYKx$yFrPd9dz!s5YB> zbi$y6_H-kB#f!K$f}e=tIulpD&u6gzqjAE7$qCCdQXWiNQaErvx1o`2zjvm!Y?{b9 zBn$|jcWJV!NaXKKV{F42r`Z3lI|l0uZ^vD7OBwpPaPNunj3(UA18^UphmU*o?i9Ff z33pKdZfOwibb*tP?j93>`?(*^3gvi?TAEi2wc%yt@mU?pW7^8RM1B{PUeZ=TCawZ; z>W*V+;HX$c1ZwHV=P-iRYLLp`?!(&u7lva_^YT-xYQW*B( zB(y~Kh}VNqa-LLjX8cOxS6X~JBH*t)(Zw$%{ufeNnepM6F+8;R^qj!IT=2#9WfT9* z%=n_{IPr@ueq8bQ6?}1F%gzA)%gn~$Kw5?;zu?D+AGP?^ivPzG$UnP5Q&0SZ*MhIE z+u}DU{^^1*t)-Os_uz4V<*Ng?_^pb+8j)Pd5?EKrWD{SGpzq7S)L)eR_p$)`OU17f ze9_;sD&Wr+<8kd|0<+tsk$!%<&rVY4lw6=~1xR*^cLjiU^#Q$qJSoY}&HMa7n0=sk zaC~(q#1mhw9RZnTM?j&$e2*}XjzCgZh*v<{Ji5Q_2#{xb5AZYl3wl>|{+3{#CD?8W zY6|C%dsx-~kl@*tAfK6g{RERoS&yw`vNrObU^46L5`hX1kDOdGiGUOs`;RqB+b#5W|TBf3D8`P?uxP_$hRXL z(5$jFBbKJ7nh%<9P5{mJ{Z#faX$}w2l&>9uW)*1~nl)(FSehYAQ&ZQQHIn89mL_q` zLtxs|=kbGcEGUD@U)^RiI7X9NwN$m*C3Sy)5 z8r6IvC(drsAI8XDBP;Zrc8Of8SVINWA>?7d0OKn{!?WF90vk}14@tL|0a^O25Rn~K z+A)iChG9#UH36zuvnG~og&T7qslFwh8NxmU0LMu!Nk?)1_eGthg;yt^ql`@oFH*#88VtBAFu$WI&F2-dJ~W0eQS23-^~1`D&3m zh%Ei6^n+dG3nk|v1@ek=mMs0~cp`t&AKTIiwp-*PMLtoGrI%WBDv;0W4_SJ^MHab2 zkzYTSC2vEuEhX~n_{CvYwXep+4kDDf#Uj@z@?=34w&wylHNmNjB4+5jb5B+})unso zS)1K)W=n5)tDB86%hgUlNQ;(!FhV7B)QDq#=~8pYEYhnMS%RIGVB8YaREIMl z_zVedZV3{{oZt~$W4kKpQu8dqZc8v~32N#Z&96xCxBIBP#4#a{AYTD-`_omdRETUW z!LTK$scXW?qe1WjOOQC`A+W0oOrGZNOxa*aP{JwL1v?84Q8jfNR24bg&JrY!nc@)~ zX$eYCN*6$aZe(H!wo9tc8alj`1fSoVu9@8>O766Pn!13~2zUnpQKKYo-US<0ljN)5FbK+QFB`rkc`@^+FrN?1U638Sy!&pj zcLcGi&R2CxFKUnN$^M-d62Y7or=SA=xZhD2^!9g#VHs<%zjG0Gakk-V=gH5w$3fL= zaDBrx3uzWMbat7q;iVhOewPZ(EBhVJuF2=d&Pj_1hU{*${p~mx_Au@Zu z>~ou^&X3{GxCYrcaCO%C)VVU$RQ6(HnJI0;!SSS>)#_6w^h_l}r=m|31T%X%{bd^lUm^LZXel4dGC!bfB!lk1RmeFT zrtFG#7C3bF7}^wsi&FS}F$)nwcu>puq0SPJfWwI=I^G_JBWOrO!WWG1G>k!9#vYjb z{rVB*Ihqc3eZBi5yl*$;0ReK_$VWM|t)6TH__h6)+0MbivpSPJ2cRBJqJj$Nj` ztlWpq1r}B827efQ9#Rs{t)D|R3KpuZnv142=-BWmY>EY^!{)L!!ALE0c9a}DgMfF3 zXflE|r#+jtB9UH`hNR}Fzkxoaz{aJd1u|REMyhyI#a~6Ktypjcs0c5#4oWX$L$Rld z)Zcxb1^t^BPkZ_~hb4iY)lWDYG?ajT?!)peE!gU3Z;Lt@{q+8t#bwgZUnM7_ej z`3ilLOy3oou*#fqr?!j<#@vJ`nDJrE|1qIH@%VW$hWX}P3yh%M>mN~_P_5legV%pe z_@YDAtmJ0K0q#xvYUE~L6mcJzoEcH~ru`p$!T-`>c);k0_7LGN88Zjto>a=aA3h83 z^u2-i<@%McDHX@eVtdqXoH`Z0yzis2gF1e%P}_g3k2cyvA;)2=Rf^^ zE$yL%V`cOta1ke46B&>{K^QY|d-C-E%M&uyUpl|&A6sGE6uXkaU9sFOD2z$UNhtJu zHFl+-N_*l&&XJr753Uqc3ZOG1g<=o^k_KjrYB3{q-GQ8uVr**8JpvQUPjG$>0bUR- zPP7I=)7_51JW()FAok-DvnV5GjF`0+vkkz&+(Iz%5@pDIemF4iW_F)45mwi`v%TGl z`3eS$B|MccWS$`Awiz*th*@dN>{ZMKf+=#&Cg$~c+_y|L*?L`qOz7rTaQj^k^C)0a zoiagPzyeS+6_VELc9_Hho4V*??FvdT?_=Z3Q`+osS(GV>{4^* z($Oh9yKOP#umrm-K}|Iu1lNoM!KGWN>}@1C!XxO+rN>EdAqjxPW=n99C8()ua}Sc> zk1Rprm`A{_%ok5jI&CS;qI>&#O`Y>PUiolhw;-1*5u z0E;rs!~5mHa{JUg{kPZzw_d^&Il>}CRqAW6LJUSMuqD3MZmg~_Gxk?C_I6Z2rbW7)oi4qj_!@zw12IBY~Y zH5jy!WrlKJ~l6noFPh-AfcPBzX&pAn$%cXWjA&n>WG34OQMS z>-PaH-(-~cuJ86!zlVq-h9qxv4CFmR=&V~_Ve=lW^bJ*BQQU74GiH?ck+J>Ad#os8 zNb(l%3wcixI_s8K*j$X&&H>8nec!5+j;)Aj;!Lf--RvM)SUeIj%aK@c+LE3FU}m^J zACuaRPDC7Wu{rJv+bbW1-U=VBaFz`!pTXT2pl?HT7ks*N1lv)mZG4YgeN<9ysek&q z5BlRux=8Suncp82XXf`LeIDfZufCE7!0%zsX?#I`i?8&g&cLtqH&JC8lY!fQwvPE} zQGA%4ltqHL=+tbrHk+h z|Fxh0wy*yk|DfwdTpKOoDk+>JqjlVhTdLr`wpBLNg`>AG!Xm2Wh_D<1HHVXoa@&y} zeNg*F+tbs*J#wjqADTa?GxulhGBP|THDY;b;W=4f@XyRs2?z2l2yRi1Q!6UREskR& z2Urc^z>@#U8@DKLJUU#Co$7p4js=kxd3-`1o)_TjJ`s#sqRvtnhn>~fHn-$E+&0H} z5^p^|i5vfkJlPyQB=SGUV}UnEbnxYOZ+wBw5Ka*^Kd_-Fir_*yc*7rWZ0U_(68SCf z0RDU%$_)U16=rG%O`nHbYmc%{e(JDg(EPxL9s}Sfb~pHM8aVu-80f!&jkp8kXVHh$ z50<|N2;V**@PnXVH8UIg3l7#p6b2w~dmi}z#lY(;uN?534IDmnKluN}z~ybh3ylNS zzYRqYzg&(JN(QsuKkq^b$okpi;n=fB|5q0b4*pG(Arz zS~7?5JOqgMa@GUxd-xn~im6P*+VfKIsEb*NoG0+^QeZmP60=A;DeElj*V|L1+@K}l>XB;?K2t4U&1W)i|hvnA1KNwg}7+jnuN zpU0ELW%9yYpBfQeG*}Wm3V^!kR1)KagsAgNY}!n|h05tqkUC4E)siqu;>Dd^yI4#T zWtmAp5X{d|5zWN+3#kKf(xI>fJ-dS`|Mb_|ovUB>t(H@kQby z;zw=yor=Gk;Nuz2quB%a&(ak7sfsA^3oO1-{3mxL|6*p>13z_O9KlN`i6ruW$~@iH zzdR}FS+@T*rEHA1qoU0AYD4a2+KivAt`TxP2sb&+zFsYf?1@f;X)F;+7je5%)gG|jK4A)e95hqxL`77X|@Y3oOmTE zwpbwr&E6eAb1zGi&&;#{&A>};b;JeDN=s8-qynFsVhKcPzDAmV{1*gAkR}$@LPP*+ z>H^+Jzy}Ekr$A)$2{`ctk||dSQIStGXW=!r@ES`~Q_Y7!*O2D-ZQ;^RYAv9qF5nab zjyT%U*zF+b!81-qY$O zb$f}eNVd_EC60L!tb3~Bn+oJs`YDiYwPd?2*>+1-Q_Tmrf2R_@YsnJF%nXqIiZMRO zN)HOM4VG+=CEH@jYO47lTe&UBzVVeRfjDNz0NFb&*%t9X`d%oNu*#CHvt%{Ze30FP zWa};2YLZ<6);%SZTe7W|Y@B33HpFfVW>{s(YU)NKdy?!vmMn2hO@Qp@9Ed;(5)VNM zQA^f2kTYhdRwXJh9?)*j= z&>3&^eSgGVuM6Uz-4DLqU&yHikm4$u&J*KCcC<=p6!`wdE?A~Ubnk?I(qdr-k^-m7 zZEq6fG}(o@N^_=Y+?m1f9p{eefGYDEHmkA7B8psOo`se%Na_1}4)l{}MJBucrBKlz z@*#p86ogp{lXy+ZMhOhs@`r1Z&Lpp+ZwFu#v*)Ml7$2eha?U7^#5{8L|L@=Pg&lPI z?JND>(O;4Iad5qNR~Q^CG{Sz;Tj}@Uu@O~jT#ej(y45=1&kVvpvo82yLHHZi1;1qw z{;YMuFLl>^*+|WP{lI(QLoK4+RMQY^_$x-m;2Q(k|MDHxFYD8200=+7$Y=No_Y^Wm z?PwQF4oh9(+Hj28h1qh9f+ob*=AI^sE}Sm|3JX9`iadI{I@|sbv-n<{TL2Vu)Ms?Z zfHR5D#cAS`aIzp3{4iYVBX2(_3YNBn^%>}Gt@8;8wCrYg@PRGyrt>DPd1%1y*^Qa( zYaDA(y1s_$+nwv}cfepm!WV_ z9+$RbWYF|RZD9WNbB!*46YaG9ddqtf14vJQcMX-^u0eYBL)G7YbpIZIgQ(v;33cEG z`UG3LKK`Gck6s5J4NF@GhUQHyJh1MaEVGxG}?=;u_%$J7?)?Kvmi44IF?-J%gV(W$GN}i7 zG1FA2?`M^{A3@tZceC8ZWgE9<&By`yLi6QSKzT_}B6w4uB*W&lQ-#YeknK(#3Tj@~ zmzvd%tWFW29sG5Iw@N&z0-u$h00k)F2t4WnNVfx$dP7921l6i|V?sxEH|l^dp{oWr zwm^yI_$x)OwiMpCg}6%^=vzRnOsruY8Cuc+8BP)9QZTWV$8=lofZ`tBA@Zpiw6Oh%nj z-{Y@LtM6azvab5xged9t{q8BkWv2Sxq*Ailp~G*vzIVDp>d#-_x7_Bh@4sFq08V|c zTqU>vS@nInRL%x%-z#1bIoZC;FHfuQ`y%VA?`?>ZUf-WhBFRaa>U*1$CF|c%-(zY; zE`NRBe~Z7qU%pfToccZ;pW6J7Yv130UDUN9+xH*4L{8TC#i@-%#IAUm|k(>-)){2kLvK066u%5*tSTiY#8u(tO4K8Psk^*#DT;WATwAEa6ThWgIc>h#z5iwphreH_+PQNd1qAC~&o z>)V|lQnu|NDV>!81K9r)L+Bme0P`Of<; z{)ra^X1d{Bru*cuhmB<`UTPF2kH_cKhV@((OthV&`|~#E4m^ftoFU|Pa8BT_z;DzT zepfngsn9k_g5O`{As3hlWF)8WtvvODDyW!YR*Z{58s6E@y((hZY;EO0kju&W+AN)_ z6}49ISxiQjoYR+cUaCp1hQqE}=HfQY6i;~g5uf7pqa=E`H9X&d@i-A=oK`_BPak3C z@$id*>w_o**2i#HA4D?`K0hFR9GFxvtB>l?zfB*k>_O^dDE4uiJ*H(H_Hl{{=%aGY zNK~k8cHgdj{G0W0ZRddOeq;O%2j?PWx;z06uMAbqTOKcJ7|fBoC^ zfpO$u+Y3_1@V)}Ip1Oj|x6eVoG2m!pAL{}KJ?2Gj@M_u*o0gdR0YXIjKRF>$c6 z%4?FCJV8Hl7+&Bx46hh%j2?n7f6{wL=*QvK>E(BUM5*`C->!=u&$}1^JshVnFnUV{ zM(=Q!-h{@EqZ_;8jn7la7=^TFiD5}AYR=>SMfugTrJg9@U%;SzYsdcpyW14MYQ69` zg^yDFNM`)F$9yrFj}bajLN(y~INXWKd-D!H=ECzXf)kYBzlunCl)Zpejhg4q0o*z- z3}BAm3oJI{2}Ch;y=zjNGcrJx<3sUMEbd?@@;)+Oi^8pB*e-dG&Uj$;sB<> zz*Lp<*7E;Ve%wIg+t*L6|7DIYos$>+>&^?Qf;j5|VUWBPjRVt&Qe#d(SN(?csTF3? z64(adq`^kb9dBtaYE%L~HhnZ_*aM6Mf!Ca6wQ?Tc`j@{`u>4i$Xo0r;tZ%>k>VW*Q zVEJeK_1l*JbX%a+f6oh?-E{R|GNAHjf5=x}q(0ehYn{-a9Z3UPywjoZIj2GSF}q?( zv0oEun`@~>909Zdh5zDB_HYPner>_MdG%B6RI2C+s+01OO;|&X#NXzJb_p46+rHa_ z*}q zOs+4iBOI7p#1yhsLKdb~Om%RQWe%+eKFGuTv4PCBQY0KB;Tp+9r)Z8_swPuJH6X~vR&C~ibe+K1 z*N`E20q)K5n7?K>Sxm}kTvjS%bK4lt(Mi#HxU8n+Rqmm}D=1Yc^`tZVj`gx3+qWCi zuid^sU9~p*o_o6EDc0A%KmAziPfQv0*A79=Q=j7@^dk?~!@j4?Rx?~b`>y;4>TNHW zP+$8VVF|~A_C4#VLD@IwZwG4McRruNzNcCJY*70?8rypYW#92npr<47@uC0A_C4z3 zwb}RGlZR^Gqdv@F-+%qb(CmBGtfAO&_Pv`WoMzuoEg6)3-~REy?faP( z8SML7tDg;O-#o8qQ1)H@G4yoSr~kL@d%x7$?E6_+!?t^p<=x}K#wYtFGuZbxD~D#^ zw_Pz5`(F4V>g{}(P+$8lvxL*^`?kjiW#7NUddxum_urOfuly~xA%bWZ6A(i+3 zfrFH95>{4*Am1f}E${WA>2ssOmNyAA-b0Y@rUTZhPd)k{BZ88!j)s~_FodT!gt21( z58rHf^?kZB4nA!hx-rICG(bL-ElM|Xi_(m248b-wkDfY4HXYeH0St9yl?Ac9`7=)A z!NCglALqlE31hb}QB;g=$1I`D6(J%=6G6a_;~y|c<4?8@Fp7p`&UjBfdW7u+Eyg`= z4!L+{zeA!!24#}dj!wZ|`ElX{!Fh>8*&#W+J&s*b98}tU@)7KlzvS=xVV^uU^o7h$ zEA8&}G5T>PW}hV498{Q)o6XaeoU@kt%%_QR#5rJyw~09qQ)O$}-@cCh{qd#{cUx&) z_&DbdfAc;$7uJ6GvAgentvmd$C5jGd-vNpm0E_}U>u-nunLsf=T;}ZXzwcSMBpx}H zzQZ5&pNFN#jfW#|W7v~^mBOne$3CDR7zrI>X+t|+vnnk-rKGM0hccqpN`9Sd-o>ZG zf+hg9Zb3sq7l#uJX)*Ybhav(t0Q#c;BJ&%3#fwHSmc$o!ifJoe{xAE>uf_|yT*l;i zBr>oCrzjK!(qmW9W5aF3^!X4o-axa*pj>Hp za^TG@j=Wlsmd?|&PD>l+7d~X4w@IplNRHz>rqGg9ij7hrK!8CD4Nz!+0x4!-a1#j9K!hq;FD1H&v9uCdkkq7_ z=`>oUC@Q*LylhomE3#M$NCLGDidw*xBDZi^c)}o*i=|w&|M%y6&hyMnE=^k6ivM3< z%{Q1>04T9v};>@ZuxvT5@cA#J3UE?ShV6mDcJWqQVX z6;!TQdbRchT(bf2NLP!dR&iXNbQD)PiucczMwM|duVUO(8j+7YX+-{=ha++hr(b9Q%f@@0qJy$8 z#T-j7xYX;F+V0sq(o$1&&SEr0c5@f@<0N6@OJ<1vL=0pjmEr5X1FsMsrD*SA@xHsp zESSS>yt3U!ldfIEehuiHtZ~AP`$*2PTA%M`jsaL#cyawcYsoUp>MMqS?&c%+sGUz> zfBk0662D-9%m$ui3SDa7?5T4|3<|##~EbHR9X-$4{-XJ*(yWei!i0jIU1P^A1)G|_kU5zF!X%bs65>0OhKmr7Ye~GcH7~F zLSWKH-*}CzF|-L*S2%p?GCue?a(no8R}nP_2i@Tne>&3eCm$|cBVkw*h6>WQC1uB) zn`&i?F1Tx-8-X@!73=81v)h03A>Ee;x2<;Y>w|ZI$ttGPGvCd#7rdo!-(cr9nknLe zT?Ka?0_(V2_>AMuC_y>4fJIWnZuxQPKPINedZwy^x?c_4w`#L4Ir#J13sfFPO18+| z=`F#E-adyKlM`T)_8!zgF4UV_H+L=%hx{$fEQLbleN3AqBabYp8M)P1#}$1!QfuYI zN$rcbIH^?!58pbFfrV>20Ts5>sDH~Oiqhn|q6)&%e-ZW>on0K(&+*_T?=#9pVR=sd zO;c9;XLIvs+ZpxA)c6WCdOWnPjsxEnn@E5m{K{Y+?J}cYQi+QMesVCmEJ`nRlV*DG z2aZ-5Axj89^mOBb^BG>Jgb#ln6G0N_70S zXD=~`@CWxXTJMSV?zTKQ`95Zx@|YxjQmAnOC_cE|3xzT)-$_!ub$w~@gIU9Jp5Ok} z`P-DSiz#T)eFj>ET<5RXdm$F23`fHT76$fZsJOLxfG;j4&<%XSyT2z?4c$cBa&+Ew zz&3NlTt2c?%8KqYXxhY8eff*|LEoq}#t)oP)B;IRlBm*WwL0K1rG}(<3|3RCpr4$r z;_W$2%1E9LDDC-g0d1@LG$XLTiZX?5==l3^)<)WH{OF!ez^KfLkbuJ%@29kou`2)Xqv$a_( z!hob%$Y~1J6uSa~WuciMK{b+ZRN+lcVgCeY+6}A0Z+)Y)T-3(}k)Ny^lKt8Gj$ZL% zt0O^COrb0e3Seb;OU(MO98<)8e?y0H_*{eS{qm9QeOUS`sd9$LnwQS7X94JXXIK zN@}|j8-od-<`6169E0hrOm=;;9%z;MBn_qq-`m$&_rl`D3!E&F-KGXb1a&63ohhU! zOUvgUG+Ng2$kMX#5>LyKp|EoAml=j0#8X;>(Tr_-Jl07y-#NQtoWA#>9Xz2xKe3XV zaiD%2hYJ~K{f#3*34h}=6Vx)cr21r~^Mu%fiG&sV(VEQ#3~23{`3phgVWjk~%wO}= zWBq|ysr9Mfpx4S8irjRdO*@RH`?R3c^sTa)EuhfbsAN-9>nXZZd8_Q~l?wp>4F1l- zQP%@&c5vgX18X7YKh!G-7OXr1Q_2Ay774+Zjo}`8yUS4$#5A6laCu73{}q z9o5~0fk3q$gwZK_P=KT=~&b&80`O24I5H* z4?B-cvo+Q5$}Q4{+wgFbbxPE3#ntz*=QZ8%aH=$wETTFe_rJ7F%sFNmTAIth`QHH~ zK@T;Ab#zCZG+vc zWx87dsijsVStOfo;GwI?@kU$}p5mr&>Mz>&0rkel;PxJQfkZbSy_jux@bH}$5E-W$ z`~2k%X_shB0zeDb2(vCQT!Qmo3CL*uzscXPG$ZpE8hJ6fU_6V`r!Jn zJlT~K9|-_|Q;K+s_#40QH3~q%WhHo*B3$=4Jb!V49co=1Qyqfa8aF_E@^595?{NLu z`p#Y(L>RlNho#a$+`Z5s?yfPN-9LDj?5}0ueMN9yx1pvp@novuDUFKr`q!Gyx=l#* zso(?}jP0BEDEWH#^ewvKA@~u)ON;BCL|OrrX0RBe(FO1tGrjzN8;<-B9;*+5x8Qdl zvoX`eA5@X6y&+u*>QnSmt;3bB>kV|+S!ctq+$Bg2zgk>(2Y_d-j0GRwEZDba7^F_z zzPRBJXsSDS?aR))=zh97SqM-kCfChUsll_&Qnjgq!9_^<`r`hhE-r)n+$PRIBi>2| z<`7FA%sEg6{yC(5iePMFjwS@!lq5Ze!G9{_X7wdoR4unA z(-V_j;TZp%igJ+~Cx2z|o+}~1CGi7cW8Ab{y&E{DuJxnM^~n@5bU&7ZBss>-*(F`7 z6HK39zSs1*g@+q3{@X{~@Uq5m0F$I`SPFm@0zgx;oZ^zi4$gJ?9*gq*+VauJ?5Mbb zv@p4n2VZ(Xb`6=&%!un6uG^en2b^=VX>TG?`)w6^ys==9wH+1T;4PLJAN-w-37zf} zRVkE0Eq&g_#aS+ZHT?dqF!NCGyKIKc?^Gy}f&A30V(+2D?^6FwaS7{tV^{tAR%};h zQtj$~nmaTu)wTbRryyt8uD$sH;8m&o#s#2KZT`{q@5v;DhGqq(BGex1kNhW!wa%Ox zOZ%+pwj_~v4o6KKKO`}DvUqf;?kkX4U+O`*VY%R}5VGvfz*kA@mBHG(x~&K`YJZ~v z$fd71pT2P+lpOkg006Ntn7)NJzFb3F{6dk)N^cg+u~p3jE0R8JVRl^FX-qn96*X;8k-1M4GEbhm zGq}O?Q7&PlV$-wVl#$I~MJ2Rf)3+l@%BfBqb$5{PGkYPJoKc0)@+`aRuSP?qtW|Qm z)uIiU;UINzx1G8X^)R%XvQW1WsnvhdZBeUVL?S(|cYubVf?5hGwk{D|tERB4L)TM}ZnWr`E?N~K z{d-k`REV2t4sjmvO9I1irXSd(=B2W=#YAdUF>>Fq5;VocmlCrfD7Au`SS4%XFqDNU zS()1TwKTmLH(defk!QaurgmLTan378Vu+Yfo|A8S-Iq@}@Y0 zPjBR*U!SQ;C+1kr~kr+x~@^`S*w;a)f0UGG)bG#g+2Nv zQki|^m$H%7`&y)6`N&UNWLKJ-bHzJ7_JUxJ3;T)>yE{f$QepJ77AJn$xo`>{Ip5e@ zH;cV)`YLsgN$yeR9-84MuG~E;+yk-|I8_hp1f*tFa=T_~R#kExs0eKDnMv!vch;&t z31nTup-wLnm8pgMfgMH<)T8SfQ8{as(fD0UXx&n2ghDaszH(O{)L;D5rG>-v7u7zm zR{OkK<=GS{lhC9A_wjN*xGuI=7fx+yJvIhEa;{GYKeZ3MF`eYu^62kNPXQ%r{|X=0 zcQGay;w!{xSF`7`Ah_exIrugPZM1vj8w?TSdIQfp`Xs)Nd)(iJnQaYzAKG&8FU*I( z{yN{V7bC;N|4|4h*}6V3d!B-4x5lOj6!>Y7UX z>Z;;Vlj^GGv3AikehX%`-(6Ibs=I>F8onLTKfa2*>1*1EM;F1K-zY3NBh~G4#E$Cj zypyt|x;~ir35xO@Yb!45BtW9G7cj3-?sbb+^3XqCtr+sER2*ZK=JczyOO{Gh^Qxp| z?Bh|Jc8{(Jm#m|v8V7LLOu}2esV7P9dOUkMA-E7n%`ckqRH=qa!m7-p$MNXp-~xCZ zm1sj{dchU7>FP$MW&Kv zYf*%5b>3uL;f{4Kgi5XzQ&3|xj{j2ZD0L@s9ZHZCQQb~T8Oy+;yvi?98lFeU*k1n z-3ZWFjR1`e*L;>o5XfKUS`60gQQOkm@kPrDhn)Mu4`3~W$NS>KUm1L8j;uSUAEq`| z?mzHRk`07%XcRnmI8Xc-Js#eExLsJX#Rt>3gyiP{WqgWwzqklQ^^N%mfrn#=)+gjH zx}bIL2jO!Fboj?JldafvQH6#fv~G2ZOkKnFa963HGA-#U#jFZ42SqWE9WfuJ!Q3ey zBvyx@432Z?2Os(aUm8@FgC7Rtz!YYK3{*=tX^r%a;-@+&Ov>o#My!l=xRV$?iO7#- zFZ!Vlrrl^HvZiE0^PLp9TmQvnD;Gte4pW8L;=)!5HYZ5%C54ZaQ6J1pq|9|#U|Hmh zInBYXbZ1AHAdHeqArinO_lVy!c)Xg5rB9xY+I3^H{mvNg8=T|bgHpbMjP)vU6AF9G zf$t3y&Vl#TZ*6|A+|L)IzIZvpLJE zy&*q}*7yoM`(#ZgPlgk7QaPNwgTYEg4&twa31Dy<~ZM6oZw?c zy!^eftBL|xt%6l1?imQjg=$<0vKSbGni(Q#hRLBkl*6H6?LY+zHIt;D87Mbz(+3Sn zqmwk~(8iEBmO_n3j&&7CrxLmP`cNg%2OYkC$g|g>%Zf=oDl26gPkrn8w^C~YztQAm zog%9zG*p48l47ww__xpddO^HbCPUtxG!<4QW2lB_t8l2d#B4Od34D@jL?eAhad5H+ zMkOUIc{ORS{g8g({Nmmz71XG54ztqRQ|n47nlxV8sSgNha>viqea2A_Sz3cm1V3VH zwi=-_2t_0n!H?>}H%?WKoUv4q+8Wx4?b``=Gl+MFP_H%oZq|hUL)V0BZ>64ovPN(i z02G#Hxfj2js|8mgl9^`2C|yV1E(0SSg11?KTuC>kYOPM+*yb*Bb;mPzJ6yK=5V{$@JMarGh<}VL>-z zwZVQg$i)Gz8Eh{&at326J?OGJ*%OrGkZO=xwFCoo@?%qFHzhaMR!rqE!1Cm{UTi3D zK-t-|m3FK$_z?aj2mbTG*JrYGJ;3Uv6R2_E>j`0p7C&wYyv#E@pW*5Ksp&eRcQ4@0 zP4#HJvZf~}1;S|>qpZ=8rAR)FkoSn(_w+noTJlQ*2T}~ZWisB|5ZyWq%czzaEV-pywZQSr;?>!^o8=hbJh3(K^WWPrDkGD$q zkp9T>z2r@1XuHeN_we)!j-&qv^R~zStEugS)mx=Q^yl-thetIu-9z##IR}MX#WN~? zv*qo7d^>Vf{?k{r=3}kptCr4_3^majux%bWRfy;xGX49uF?~BrzK4KM&7HTteeise z>mD;t^J2Z5Zed9jV?hN=p|U!6E_cxUm7hOiAG0O4k(z<{;19*AZFlO&W0ou)wQZz> zZ2SjMns5#i&pcdd@VrNrO_R+(?^8qNAD&-k?Q9*Y*4wCg&LF|Uo~8okXw*87LbTvC zIF~e|l}8BWBU!OzM+}y#F%iy(JNc2`aJYU_;fZO|vE@QBOW+`(|@SFT-(L%N*Z|P$YX#BJHBL3z!XtF3Npoddy#YiD$39IT!p}EKI)0S%`R4qq!kE9!ZwO!iK0l5y3f-VDqpSNI z@>A`1+Kr6C4{z}Oz-j%r@@<_lQvB@(rPy65Ikr!0D`fbW)#-Y<+k!=jD;r+*UCPp2#IWDN9U;}19?8t}nS z@iMaTs?Z4y9#2j+{1KP9L2i*1#cLDKFy{D7EO_7SSbbtuU+o)=>mppi<;9`b=7vVdLqPVqq zZZ6T9<$?4>`M)waUga;}eo}SoG4ZvDS1EU!_ zq^9NO=!Zq+k1b9-Rur4+96wve1O|)JC1ZOCTsrYb-ZueI1N^VX7EI6pzni9NVz~aV z=Eg-79`cjkp0WjcpuHK09DBUS%IjO>hh?g7BYp^Or`pBt>s*b$#(8XRYe3?T0UBoxNLt2;D9ifHcmcKP8@_V1zL%fYk*jGz z?XL{EUxWPt=8uQff6GqLe})yQTho7N!?NelwsSb!(e{kGl4_7piE2ERHn#bbxK*bb zM`B=~HVT4DT9rzAwWpFP+JxjNCL(Gp$>D_dR2iI#vvID8bW8|D)6+S%v!yQ=et_Ef z@C+s!*fj9TBKXU)}b4!GZ&EB`bqhSV5_mGg95M zm)aDxxyhf*9Q@46WS7>})GZG#IN1^|53a{sVq`1q2!WN0fvuH%*Rd2^wV2Bh{FFrc zw6(SXC?*k23#N^1p^sLtV5;HV;(+#o%_jH?coDzzNSuG!&d+n;*_J&qSlMX%mX)jDc^CpBb zhUlh#n#1Ol^xLT1B(kAqL#0g;?Xnz_lSk7m74zH}bBHR(kaCBYhlh7eKD>^kv>{6b zIkavC9;Osp(E#Ig_L&pUnEQ!^EM^E7u9Rv%ZczN!^W!05Qg%MFOazr{^!~)cd0dAC zY9xpL3z8?s=1DT~jEq*9^ zlyV;H(LFWkg3-_-tIOlx@LiX~{Z{c^vHkdZB~lG+7qhjimR(9~S>kK11-mB_XVBgq z&M#G(es%U>dpC0?er7qoX;!Hn11QH~rc$2qGw38iL8cU&05xx8v)q~m$CR|@r_z}? z{3m7FAi<0c=45AWse4)dQXD))ou_e_%-*Q-6s_9wN7S|BA=Nw4GAI(9l6lI@v)P~L zNs+O0vK*XC9UMDch`lLXrK;rsNh`u5x zQyENzJP=NW)~SxTPrutj;)Ko)DXR=VhjSyO0wOAS)(DQM;=7tuHPDoG3B%A63+`uO zt;8yUBQI9#A^&Q-9aeK%^Jn|vF*edWVst(q8II)dJa$$dDKS+B_o(`2Z+lKq7@2woj&!>OMRz_Q0wDtCYPyZ3uxQxT(RLsO?h9M>odM_3SMWJ&l=jU5Wmx53m9rce?x3WS7Vac#CjT-sLN1+f}y8 zZKb_Ykg^V-{|b6$nWyvgaS%Zx^Iy-{Sy2TNveC4#e&|gSDDzYMEU*2i^`1o)Z1nLf zL~!4=>B8DntTugWu{?V+{ee;)tm(bb5b&{YlegNVb;k@_?fdqqJFiUhp+lWl)GQ)f zRI{{dvu+y&BYFJ2mz7B$)skE#>z_-$K^2E7Uu5<2MKRX;TohYyh<4ys){@XSgZNAa z*F_y}SxshNX}Dg+O%Us)5Z!FpNdW6V)LbDK%CZKWw6nn#qv+SKZ?OeTHnVG+;LW6< z@C+(Hp;ZjapycuSfhjxdjSb7elw({wt5MkaF+|}4mhiZ~@W3IrsnV`ljG;om5tzM- z%f$eYT}>0Q!ts=M2Jcpbm^iq|FDHJPOT>!3yj6a#xZhdj&g19xncKmScsCbN?RANs zO&?NRbFE(`BomV;ogz_4QVJo9ZE4Nfkr}OI(v6o+6-%XpaNB5}DzH-_M-|gf8jk%x{I>QOP&94f4I}#F6FO{v4iU2xpU1it1$}cwp@_MU3Z!9g^NBKI%NF^K*mgJ^CL(?@7bc z`;igk`vqI$u2RnG@E zUm*YBs|M6VdxzRJD5SlsH|vI3lY<|9=5^UpTt=BA4|P&oEI` zt6OR3_7`TRIybIzQA5Xn8q%uiETS!ljQj{@xl4P5cFKgzvjcbR5;hwA=3UN;eD4gO z!>mHPmacbAI5TZ~zFy_w_I%Y@;v9)Y{V{WVR@qp=4!ef#pxSH)ChQa1z-nW7!wVXA z3^vztY?Pc?i=+5oL@%*w@1naFDUkZfcIdcXs6twGRc9L}lz4l6v{ z#r^rk#?L7cKUbECdD%v_08wdr@4^`dyCow~Uu4_0h^QA4)#1@raYy4j6-bOtZy>vH zdq&rU5{IrVLbsQp%Mo98{K`b}UMB?)*oK$m=%UK@KLQ1vJqb*AHABy2(Vh#8_j)rf zW()j&iGkmg_qetj92yk5$^UYQ*TjC@IfZQejf_O7d<>3fiPT{Mt=S=>#ZTPg?;19~ ziuf79`}{yhT+(w)ik143J@a@19_<$^3uq?z>F>8}c}p86fY&H^&QAmrfG2Ai{f3SK z@*Y6nhknN(;ak~&0z683Z!%Rh^!V2(;^B|{(rUU;Pb7RQPQ%Lgsm_g@;bt(Z&+vC& zCwZ}$dYupxukFIhg990;m2zYqjbW7menf{pg0Css(BN^wk<$;T3R7GC9}nr7<<90@ zQ=lVI@~kc^RIR@oTXJ(xc);a0f6KUcFZpE%pnl*t(M74=5d1wp{*Ea9Ncac9Lmrjz zSDW6WHZ{JYHvRr$)dvdu>X~Z1~HAKGmSFvWQdyJ~=dmV@i2$2F6ChH}k!o?+uv)gDV}9 z<$N+xPULbDt%wqQiIDY7mT$o6ifcBCBja#=tegLC&s!3QzRILxr7LC^S8c^UjLg2X zpoh1~)Si?1+MQ>(1&Z|LG8s$Hxyo9)%G6#=Wqb-oJcWXqrmTX+jD9=PSE@WAVl~cq zLnIn?kKL;eti&27U~pKxnxg{a>~DzthmSgcvk;XtQFXeeyiSicw&s|`ky4sUEW9^b zO1)L7&Z`POcehQ9e2fGiBXqh=NyjzHeR^!cp&1=VI-T&t$rmrk1Y&5w4m@rRWUAW! z!H>}s&!;DzZ$w8qdg4RUb2#*9E8ARcWt*$FC+u=|Q}1A7LfLwBD8ZOC%qo$Bd>*rc$luP%@vqWWKnp%$fi9jlZNanw+60+M`SX zD##pdkb;jLn?F=(xy>GBoY_270@}L_8`fIUbRNV;+sW_o{ZrwCS{tlJCg8Y8!n_D! z7DB7->$VN}l7rh3ooSL(urV!mQSFp7zHRvxQg0R@IoHccHU{I5b97@GehEjlVk^B1 zjd=BRGY>OCXp-TiO6El;=kPb`Ut5zQq+h_Z1258e#EzPRc@A%yvsK8@{5Z5UDmO~> zP1dX|P5v{Kq{<)$TL#QdNjTfc%;5EMtXt~Ffo{P0CHfX8`a0!7IcFo4=q6GYxy?JP4&(Nb5DOM(|w6&7bl+WOgu4{x`fa^sO-y9N$BH*KF{-cjF0ux zPzg7E^kZ0qIpMjhjLJ!QRQ_-;e{{yuJo@SZFn~VFKc+{2EsYDNpcRuOx4$O&=C9X; z{`E|1QhE0Dmy7(T7AKzSOgwB0zBfSp22cD%-I4HMD#5)8&jFR?qfov+OZm}`^7DCQ z<@?-(t;n}&Nczibpj!t-7o&^u`Y6M^{OJ+cesN9#CK^|KO`?{Qxkp}WZ!T5^k5Fk#+2yGP#AUIQ`E|sIbJ?!R%?oIh& z6!u{o-Z1h!=Vj*=NI0etV^lsFMiCUc%Z$^YbE)Lx_%rU?*Hni+00(~<`5W{|rfy^d z;L)KNnH?nZh#ITU-|qH+K8BH(uOY)TLxvGgrPPBMtrsyGi_8&^?4jIQ-0s>1wYx8r zNddsTdfp-*Y zby>MEV9DjcSBu@lZX!`|k#_Pi?*LN9_KsW3Nwau>8NpG%u*E&c3U1sy2+N+1?L0fSHl}+>|yluZDCiR+|*m8@71GGCG^EZ+d@4%g1!rP2z_v84cu|T9TT7v zesTQ64auN?Ja=z0g{L={pI<%O`geA$GLjmNAGG@MgN?KtH`g+TK z?g)L{=s>-l^>N|eJ60b;r(9DGDT_M$ zudcg>KGxa<3%V1T81MJsT)2;lMk{5*jVg-B^;uuFKG#>h7dNn;cy^hx3AXMY+uO_C zNevrtRDHne4xTxHxsb&7Gm|_Pwh1!uu|{-#=&p3)`$7!f%op?b|M~Kt$t(XO`3tJ^ z@|-SoG`>=+;U=3^!#&w7Cw|DcYnp<@Oo}d@lDN+4w{}Z-L>bjuvo%%xR6temE~VvE zaFVequvgGp^wFZXR{hXA(hqMqZ2e^C{i$D)e!L%CRFY~<(JZ1r6*O^tuF`9^C+r1n zE&Wo&x-ID|he-dH{O4oSB#9m7KT8h~xIy*V2YR$tRpZ0-tVT%Bvm9;R$Z%hYxu96ux<42 zw~guRMohmj_r7>rMZ!pSu-kY?SGAbITglxV_yZlxVz)rpJw7!Gu5u15T$|1y>U z-ARXkz)5dYsRe5lX#-lVtYV4vNb zUaNEDF>#EpTYUS<&;uwT?_Fz{N~hS5eb4fIb#OnqUy0FIMl~c46@au z>5=NOHMe@K4qjK0F-vl3*~G9uT8o69+e{syIrvRcd>?HsUd6f##wEA}X&0A=aH0ILqwM1YuB4dLMEtGUS+B5wcz@{}?y$De0BvvC zHsmuYFQI?H7HnDBxZpA`X&NzC)yF%BA*Sm2YD#@{K{gyj~z)q6L*q)8qtWHc#Bh; z-;<@)tk#rJ#S%6O+|_`=x+7)1-r}huIwd*2*Xs!zt9VMy)&n(>a-)QYfu=AGPGpc~ zgDVXZUAD};Ayd=`7x)y7(iK0_x;k-#TQf-oTH}F4Ne)alnp8T}LQym7MAvF5Y5$o5 z4--VHQZud&yO30z_7UeXSl%^C0m-(7u%jYw(pqBMer4jf9wAwna`6T#F2JZ#A|k)5 z$S`NM&&kOQ1%8tiCkzt5q(aYNmQM^AtF(cH{dd?ff9BH^U=le4we#p9sW>>vu+t;W zuwUEAq)2a`>YNMhUr#w@gGm-w-T-2^(D*27=VWo_iD)a`!Zor7Mi>c?Cjt88}GAjH-9wx!jc?%g}2C` zN|`S?zW(}#jk`zwdGns8zo?;?=bs<4NQn?>6bEyBR+yE(r2i4?uejwI%0KUAF+=)i zmZA=*zYe55>JaYi`s=@hNhTt6$za7ETai!NA|v@+?6Yo*e5x$ZQ1aQ|Vn!*S9*q{8 zLUy)%4vV|;;pJ1sIDfAD%(I_;Ei#hNb2cYnrZZ~$S!H>KlFxT7W=Q#%FI2ln{$I~v zmJ;u9`LNzkJ1&@!oy+s0;M;i{#&0pN{p#apO(jdaIb@-f3EcC7`94{-?K3!cj;+<7 z#>1`E-zS*HT75^Yc`vnh5t!RSF!2_;J_SLghf!%TKHy*+BN#NI3W9r|aWK?$qkYa= z5wJ5`Y?FV$I_kdUt1mL6d!7veRP?bvMu(GJ)_L#B1LC?RYnsD$jDg?Vf&b$LfInW~ z=NWjIv6D6ml;H@M;SkGks>`si=sD2j?=p~#k)>8`QTPvlu|=UeB6)vHlH01{aOL*i;5~vDi~8xaOt6${djNR9Q&+YW9AMu8mnt2 zwDhG^CmoF~%xu(SOeS1DYU>5i-JzQPZtZ@2cis#_36cw#} z9HPabS`HA`niciGp|3JHhw4cp;O|(3azt=F0k)VlT0Cm^$sTFLY7vXnKP#xHwNrlu z7;ABQD|zbF1zuO#>ynCY|Lo<7Irotx$>r=D^rRiRUeScFw{Lg%yRx?!r;TOdTQ z!GRhOrcEIt={Sfjl)S_;a=7cf^VvLfl4ZqgItt0RbQG)PU?R}Tk(hqHM4=J zpyl_D_PD3LTu)Gm2l3KIB7KLvb^32hNBmO%9p=B5Z_tYCpojrY*!=-Pu&YNc=#`>2 zeVygho+m-91w$K8k+(`u1Xm4++SDA~Uc^EGOt><*^eKA$Bvq7LPm?ITRv*Brw?MV- zvD@W*5SHY@7so7E5@QM!Av2AH3$;DFCOq7Tj{acto9a1$wpDdRv)mJJ)>~TUC9}i< z0Y|w3Use%HpveQZC;mi0-{WiGdI4<|&?W)pO+#pyjsbyE12V=pq~S2>yjMJ;BPs5R zg_2YSdXlQzr8?Vu+@t5313Lx0&gXvUiO}a(OJ2$Z&yopQXSN4_pI>L^BlEgt{`ui+ zZ2mNkWd6;EYb6G+l>}P&IX+w; zKAg9L%!xR-6Dc42x$=>#yWo=!*$J65eP-pz$s86I*_VVRB^%$%3@@Rgur|d;m+E3) zJpPwr2g(yb$w5_XJ1Rb9;I!w0 zeZ3ImH@pytFX-QdsE3wM|3gG&{k`4yp(+{cRLxPN7q^BicnpU!m(NpGZ&Yi8A>9ZK z)OV?yHA}OL_Vz02NHLWJQ2E``Q7~U^w@}0Dm#Mu+||)Tt?%Y=-c$nzU%$+J{7d}39J6_AR-o(1J=RSV zOwbvnL5l#UH2unj@j(q|@3M}kk5x7s!rZ|l&muY9UCSK32PYa>1zvJMn-PTg!~H-y zKl>#%DrC5!?`1u8H=j+XXRp~qeq|CJl#FNDYmpiTW#M90^r87=^V?lFR0sj9){9jt zO(xvd4Y_cql~OjyA^JD))yLGPTZEM8W16#<;PqU0%L)Rvj&VTe0!}l9u@$MrO{qkY z1k$eFe`1yMPLtD#n-mR*RqF9CTq7D-*VHxPy&o`_HDz|_vVQ!?G+OT^dk%MB_<;2T z+qj?E$p`vJx&Jw|$8u-H?Vl?xaA(NHVW1%64`bKv-}V58XO#x;=D0dJ=D2(p4;0{* zCR&->4tS-mb2AJ)?cLkT`C-HByKXsaOt>y`EH*qAgVol`M0ZJPVaef%m2N*}V&klm zQf^L0=ep0ntD!Ggf~|+C=uSDlS5l8CnID0celfP8?_fXItiY(S!vEIh(ZM@$0 z(%W8oi|z~a#a{TyZmx{zIO*a%E5TeDsF%Y>cv9nZBExmKAsgf`Bfqv8j3;R^&tjgX zJWF{_;;9XIMLdfJ6wS~+k}@@KZ@g8@X_f~}`xnTps$^7EW?-Rtg=QCZ|G6HG zc!Tf9g8*pli?|2P@R!L~pXGuN9X8UUw{}*&ke{@+4FQf6S*&EmdMnc#-Y1(C_mk$Y zJ-ci_XM77dnzIL3qu!eQmcizduc-wF)6LX`EsAgL?5OyX@z3xFwMM-VB@H=Aba9<+ zeN-L@froI{!D&>TY~v%*={(2s981k=#|nCy%aiM%SyiUn3Q)$Im0Ot6PO3T`f0`gUaj{UL2x6(UatN0{rkxp%AF_2UK)&F%Cj}*R4pbTqE+ws(+&N8{>9O!+uxs!9`p@;pb6K1B#!D17C)Rl{u7KjzSP^h zHCD>$ph{s*DZN+%x`7)&%@nKE!8;f@BqVI4_(B6d_2=;l?AWTQC}hhPpGERCh45G; zUt-R~916ZarNBv8HK^|cN)Pn$v(5EPo>_Sa50zR%KcniT=Wq? zbzCpN29#gm*>>sQ$eu$B!>F|qt@@0fzJlP?JEs*abr~K0t)?#u-jSEyDse9K-?A9hE;R75~Lf?^f6&;f&57nX3bc?f1ZVc)_Ot30W7zrQ4Y7ir=XH8*)<{ z^@zQ#nK^@!KVy1y{%e&Ax$gN!zQJme$W*fK&bwGs4EEfcOl9wj-_~#0mj~e(%dwr% zenl!uk&$xzf;Ap+&#G|t_q2H*oo^~85#To~Yf?ZO_0|-W`CPb3MF6Qj_!z?_;?m(! zgw-om!N1e`Qv?DVxPq$L?Oy>tZdcLu-d|+F=neRI6LW#Kp2-}EsBdE1iUW&O=bz;W8;hwQP(vaAGTBe5b=u@@tOb+xHf8xWnzNtKD~(}~rH;DD z7UIwz+%|74us9!K)Lx)^TIPpR)t3fsvU7>GYG`A}_&cMNpR>zL4ri>XD10 zXd`evn~!a3}DL-6v|8$NQ5;0gu}yg4rs>VHD@}LHrkC zp`%Pwe(gu4c8K~M{+qS>IqvET4nHS3z
    X{<#(Ib%o3pf_|wRv3d?TScFB80L5M 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Μ(@s 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 pYC@eDNKn2!u^Kb=yyi^zFHKSDd89fD4G(`* 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�Wr!y-)xjW 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%0D}ZTo0a?FK(x>ZVy8?g40lu$P-7_P+a_h&?v~ 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

    )Hg;rn3)L>FfjZqkFNW&#!~h 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

    3v{oF-{&nNgOlb;UTNcXH|`oZ1i@9lLUVP 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

  • +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

    YW|`5KNa)W(QCeE|7rfZ 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 B0}lWI literal 0 HcmV?d00001 diff --git a/resources/web/guide/index.html b/resources/web/guide/index.html index 5b55a55..cd97a3a 100644 --- a/resources/web/guide/index.html +++ b/resources/web/guide/index.html @@ -398,6 +398,22 @@ 2399.00 ± 147.00 12.90 ± 0.90 + + ASA-Aero + ≤30% + / + ++ + + + ++ + 70℃ + 55℃ + 8.25 ± 0.15 + 593.99 ± 24.34 + 11.52 ± 0.58 + 14.31 ± 1.66 + 457.94 ± 20.84 + 2.29 ± 0.13 + PA12-CF ≤15% @@ -430,6 +446,22 @@ 5969.35 ± 145.28 6.17 ± 0.2 + + PC/ABS-FR + ≤15% + / + +++ + + + +++ + 88℃ + 83℃ + 52.51 ± 0.28 + 2588.73 ± 64.81 + 5.55 ± 0.99 + 85.95 ± 0.83 + 2504.55 ± 22.88 + 8.39 ± 0.46 + PET-CF ≤15% diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 874209f..cdc625d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -60,8 +60,8 @@ if (SLIC3R_GUI) message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}") endif() - find_package(JPEG QUIET) - find_package(TIFF QUIET) + find_package(JPEG MODULE QUIET) + find_package(TIFF MODULE QUIET) # Tiff exported config is broken for static build find_package(NanoSVG REQUIRED) string(REGEX MATCH "wxpng" WX_PNG_BUILTIN ${wxWidgets_LIBRARIES}) diff --git a/src/QIDISlicer.cpp b/src/QIDISlicer.cpp index 5e1bc08..1c6c231 100644 --- a/src/QIDISlicer.cpp +++ b/src/QIDISlicer.cpp @@ -2,8 +2,12 @@ // Why? #define _WIN32_WINNT 0x0502 // The standard Windows includes. + #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN + #endif // WIN32_LEAN_AND_MEAN + #ifndef NOMINMAX #define NOMINMAX + #endif // NOMINMAX #include #include #ifdef SLIC3R_GUI @@ -272,6 +276,20 @@ int CLI::run(int argc, char **argv) } } + if (!start_gui) { + const auto* post_process = m_print_config.opt("post_process"); + if (post_process != nullptr && !post_process->values.empty()) { + boost::nowide::cout << "\nA post-processing script has been detected in the config data:\n\n"; + for (const auto& s : post_process->values) { + boost::nowide::cout << "> " << s << "\n"; + } + boost::nowide::cout << "\nContinue(Y/N) ? "; + char in; + boost::nowide::cin >> in; + if (in != 'Y' && in != 'y') + return 0; + } + } // Apply command line options to a more specific DynamicPrintConfig which provides normalize() // (command line options override --load files) m_print_config.apply(m_extra_config, true); diff --git a/src/QIDISlicer_app_msvc.cpp b/src/QIDISlicer_app_msvc.cpp index ba6beef..a142ddf 100644 --- a/src/QIDISlicer_app_msvc.cpp +++ b/src/QIDISlicer_app_msvc.cpp @@ -1,8 +1,12 @@ // Why? #define _WIN32_WINNT 0x0502 // The standard Windows includes. +#ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN +#endif // WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX +#endif // NOMINMAX #include #include #include diff --git a/src/clipper/clipper.cpp b/src/clipper/clipper.cpp index cd51ccc..0229f9a 100644 --- a/src/clipper/clipper.cpp +++ b/src/clipper/clipper.cpp @@ -84,15 +84,25 @@ inline IntPoint IntPoint2d(cInt x, cInt y) ); } -inline cInt Round(double val) +// Fast rounding upwards. +inline double FRound(double a) { - double v = val < 0 ? val - 0.5 : val + 0.5; + // Why does Java Math.round(0.49999999999999994) return 1? + // https://stackoverflow.com/questions/9902968/why-does-math-round0-49999999999999994-return-1 + return a == 0.49999999999999994 ? 0 : floor(a + 0.5); +} + +template +inline IType Round(double val) +{ + double v = FRound(val); #if defined(CLIPPERLIB_INT32) && ! defined(NDEBUG) - static constexpr const double hi = 65536 * 16383; + static_assert(sizeof(IType) == 4 || sizeof(IType) == 8, "IType must be int32 or int64"); + static constexpr const double hi = 65536. * 16383. * (sizeof(IType) == 4 ? 1 : 65536. * 65536.); if (v > hi || -v > hi) throw clipperException("Coordinate outside allowed range"); #endif - return static_cast(v); + return static_cast(v); } // Overriding the Eigen operators because we don't want to compare Z coordinate if IntPoint is 3 dimensional. @@ -340,7 +350,7 @@ inline cInt TopX(TEdge &edge, const cInt currentY) { return (currentY == edge.Top.y()) ? edge.Top.x() : - edge.Bot.x() + Round(edge.Dx *(currentY - edge.Bot.y())); + edge.Bot.x() + Round(edge.Dx *(currentY - edge.Bot.y())); } //------------------------------------------------------------------------------ @@ -350,65 +360,53 @@ void IntersectPoint(TEdge &Edge1, TEdge &Edge2, IntPoint &ip) ip.z() = 0; #endif - double b1, b2; if (Edge1.Dx == Edge2.Dx) { ip.y() = Edge1.Curr.y(); ip.x() = TopX(Edge1, ip.y()); return; } - else if (Edge1.Delta.x() == 0) + + int64_t y; + if (Edge1.Delta.x() == 0) { ip.x() = Edge1.Bot.x(); - if (IsHorizontal(Edge2)) - ip.y() = Edge2.Bot.y(); - else - { - b2 = Edge2.Bot.y() - (Edge2.Bot.x() / Edge2.Dx); - ip.y() = Round(ip.x() / Edge2.Dx + b2); - } + y = IsHorizontal(Edge2) ? + Edge2.Bot.y() : + Round(ip.x() / Edge2.Dx + Edge2.Bot.y() - (Edge2.Bot.x() / Edge2.Dx)); + } else if (Edge2.Delta.x() == 0) { ip.x() = Edge2.Bot.x(); - if (IsHorizontal(Edge1)) - ip.y() = Edge1.Bot.y(); - else - { - b1 = Edge1.Bot.y() - (Edge1.Bot.x() / Edge1.Dx); - ip.y() = Round(ip.x() / Edge1.Dx + b1); - } - } - else + y = IsHorizontal(Edge1) ? + Edge1.Bot.y() : + Round(ip.x() / Edge1.Dx + Edge1.Bot.y() - (Edge1.Bot.x() / Edge1.Dx)); + } + else { - b1 = double(Edge1.Bot.x()) - double(Edge1.Bot.y()) * Edge1.Dx; - b2 = double(Edge2.Bot.x()) - double(Edge2.Bot.y()) * Edge2.Dx; + double b1 = double(Edge1.Bot.x()) - double(Edge1.Bot.y()) * Edge1.Dx; + double b2 = double(Edge2.Bot.x()) - double(Edge2.Bot.y()) * Edge2.Dx; double q = (b2-b1) / (Edge1.Dx - Edge2.Dx); - ip.y() = Round(q); - ip.x() = (std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx)) ? - Round(Edge1.Dx * q + b1) : - Round(Edge2.Dx * q + b2); + y = Round(q); + ip.x() = (std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx)) ? + Round(Edge1.Dx * q + b1) : + Round(Edge2.Dx * q + b2); } - if (ip.y() < Edge1.Top.y() || ip.y() < Edge2.Top.y()) + ip.y() = cInt(y); + if (y < Edge1.Top.y() || y < Edge2.Top.y()) { - if (Edge1.Top.y() > Edge2.Top.y()) - ip.y() = Edge1.Top.y(); - else - ip.y() = Edge2.Top.y(); - if (std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx)) - ip.x() = TopX(Edge1, ip.y()); - else - ip.x() = TopX(Edge2, ip.y()); - } + ip.y() = (Edge1.Top.y() > Edge2.Top.y() ? Edge1 : Edge2).Top.y(); + y = ip.y(); + ip.x() = TopX(std::fabs(Edge1.Dx) < std::fabs(Edge2.Dx) ? Edge1 : Edge2, ip.y()); + } //finally, don't allow 'ip' to be BELOW curr.y() (ie bottom of scanbeam) ... - if (ip.y() > Edge1.Curr.y()) + if (y > Edge1.Curr.y()) { ip.y() = Edge1.Curr.y(); //use the more vertical edge to derive X ... - if (std::fabs(Edge1.Dx) > std::fabs(Edge2.Dx)) - ip.x() = TopX(Edge2, ip.y()); else - ip.x() = TopX(Edge1, ip.y()); + ip.x() = TopX(std::fabs(Edge1.Dx) > std::fabs(Edge2.Dx) ? Edge2 : Edge1, ip.y()); } } //------------------------------------------------------------------------------ @@ -3539,8 +3537,8 @@ void ClipperOffset::DoOffset(double delta) for (cInt j = 1; j <= steps; j++) { m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[0].x() + X * delta), - Round(m_srcPoly[0].y() + Y * delta))); + Round(m_srcPoly[0].x() + X * delta), + Round(m_srcPoly[0].y() + Y * delta))); double X2 = X; X = X * m_cos - m_sin * Y; Y = X2 * m_sin + Y * m_cos; @@ -3552,8 +3550,8 @@ void ClipperOffset::DoOffset(double delta) for (int j = 0; j < 4; ++j) { m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[0].x() + X * delta), - Round(m_srcPoly[0].y() + Y * delta))); + Round(m_srcPoly[0].x() + X * delta), + Round(m_srcPoly[0].y() + Y * delta))); if (X < 0) X = 1; else if (Y < 0) Y = 1; else X = -1; @@ -3606,9 +3604,9 @@ void ClipperOffset::DoOffset(double delta) if (node.m_endtype == etOpenButt) { int j = len - 1; - pt1 = IntPoint2d(Round(m_srcPoly[j].x() + m_normals[j].x() * delta), Round(m_srcPoly[j].y() + m_normals[j].y() * delta)); + pt1 = IntPoint2d(Round(m_srcPoly[j].x() + m_normals[j].x() * delta), Round(m_srcPoly[j].y() + m_normals[j].y() * delta)); m_destPoly.emplace_back(pt1); - pt1 = IntPoint2d(Round(m_srcPoly[j].x() - m_normals[j].x() * delta), Round(m_srcPoly[j].y() - m_normals[j].y() * delta)); + pt1 = IntPoint2d(Round(m_srcPoly[j].x() - m_normals[j].x() * delta), Round(m_srcPoly[j].y() - m_normals[j].y() * delta)); m_destPoly.emplace_back(pt1); } else @@ -3633,9 +3631,9 @@ void ClipperOffset::DoOffset(double delta) if (node.m_endtype == etOpenButt) { - pt1 = IntPoint2d(Round(m_srcPoly[0].x() - m_normals[0].x() * delta), Round(m_srcPoly[0].y() - m_normals[0].y() * delta)); + pt1 = IntPoint2d(Round(m_srcPoly[0].x() - m_normals[0].x() * delta), Round(m_srcPoly[0].y() - m_normals[0].y() * delta)); m_destPoly.emplace_back(pt1); - pt1 = IntPoint2d(Round(m_srcPoly[0].x() + m_normals[0].x() * delta), Round(m_srcPoly[0].y() + m_normals[0].y() * delta)); + pt1 = IntPoint2d(Round(m_srcPoly[0].x() + m_normals[0].x() * delta), Round(m_srcPoly[0].y() + m_normals[0].y() * delta)); m_destPoly.emplace_back(pt1); } else @@ -3663,8 +3661,8 @@ void ClipperOffset::OffsetPoint(int j, int& k, JoinType jointype) double cosA = (m_normals[k].x() * m_normals[j].x() + m_normals[j].y() * m_normals[k].y() ); if (cosA > 0) // angle => 0 degrees { - m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[k].x() * m_delta), - Round(m_srcPoly[j].y() + m_normals[k].y() * m_delta))); + m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[k].x() * m_delta), + Round(m_srcPoly[j].y() + m_normals[k].y() * m_delta))); return; } //else angle => 180 degrees @@ -3674,11 +3672,11 @@ void ClipperOffset::OffsetPoint(int j, int& k, JoinType jointype) if (m_sinA * m_delta < 0) { - m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[k].x() * m_delta), - Round(m_srcPoly[j].y() + m_normals[k].y() * m_delta))); + m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[k].x() * m_delta), + Round(m_srcPoly[j].y() + m_normals[k].y() * m_delta))); m_destPoly.emplace_back(m_srcPoly[j]); - m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[j].x() * m_delta), - Round(m_srcPoly[j].y() + m_normals[j].y() * m_delta))); + m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + m_normals[j].x() * m_delta), + Round(m_srcPoly[j].y() + m_normals[j].y() * m_delta))); } else switch (jointype) @@ -3702,19 +3700,19 @@ void ClipperOffset::DoSquare(int j, int k) double dx = std::tan(std::atan2(m_sinA, m_normals[k].x() * m_normals[j].x() + m_normals[k].y() * m_normals[j].y()) / 4); m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[j].x() + m_delta * (m_normals[k].x() - m_normals[k].y() * dx)), - Round(m_srcPoly[j].y() + m_delta * (m_normals[k].y() + m_normals[k].x() * dx)))); + Round(m_srcPoly[j].x() + m_delta * (m_normals[k].x() - m_normals[k].y() * dx)), + Round(m_srcPoly[j].y() + m_delta * (m_normals[k].y() + m_normals[k].x() * dx)))); m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[j].x() + m_delta * (m_normals[j].x() + m_normals[j].y() * dx)), - Round(m_srcPoly[j].y() + m_delta * (m_normals[j].y() - m_normals[j].x() * dx)))); + Round(m_srcPoly[j].x() + m_delta * (m_normals[j].x() + m_normals[j].y() * dx)), + Round(m_srcPoly[j].y() + m_delta * (m_normals[j].y() - m_normals[j].x() * dx)))); } //------------------------------------------------------------------------------ void ClipperOffset::DoMiter(int j, int k, double r) { double q = m_delta / r; - m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + (m_normals[k].x() + m_normals[j].x()) * q), - Round(m_srcPoly[j].y() + (m_normals[k].y() + m_normals[j].y()) * q))); + m_destPoly.emplace_back(IntPoint2d(Round(m_srcPoly[j].x() + (m_normals[k].x() + m_normals[j].x()) * q), + Round(m_srcPoly[j].y() + (m_normals[k].y() + m_normals[j].y()) * q))); } //------------------------------------------------------------------------------ @@ -3722,21 +3720,21 @@ void ClipperOffset::DoRound(int j, int k) { double a = std::atan2(m_sinA, m_normals[k].x() * m_normals[j].x() + m_normals[k].y() * m_normals[j].y()); - auto steps = std::max(Round(m_StepsPerRad * std::fabs(a)), 1); + auto steps = std::max(Round(m_StepsPerRad * std::fabs(a)), 1); double X = m_normals[k].x(), Y = m_normals[k].y(), X2; for (int i = 0; i < steps; ++i) { m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[j].x() + X * m_delta), - Round(m_srcPoly[j].y() + Y * m_delta))); + Round(m_srcPoly[j].x() + X * m_delta), + Round(m_srcPoly[j].y() + Y * m_delta))); X2 = X; X = X * m_cos - m_sin * Y; Y = X2 * m_sin + Y * m_cos; } m_destPoly.emplace_back(IntPoint2d( - Round(m_srcPoly[j].x() + m_normals[j].x() * m_delta), - Round(m_srcPoly[j].y() + m_normals[j].y() * m_delta))); + Round(m_srcPoly[j].x() + m_normals[j].x() * m_delta), + Round(m_srcPoly[j].y() + m_normals[j].y() * m_delta))); } //------------------------------------------------------------------------------ diff --git a/src/hints/HintsToPot.cpp b/src/hints/HintsToPot.cpp index 957c3ea..064e1bd 100644 --- a/src/hints/HintsToPot.cpp +++ b/src/hints/HintsToPot.cpp @@ -6,6 +6,7 @@ #include #include #include +#include bool write_to_pot(boost::filesystem::path path, const std::vector>& data) { @@ -60,7 +61,7 @@ int main(int argc, char* argv[]) } try { path_to_ini = boost::filesystem::canonical(boost::filesystem::path(argv[1])).parent_path() / "resources" / "data" / "hints.ini"; - path_to_pot = boost::filesystem::canonical(boost::filesystem::path(argv[2])).parent_path() / "localization" /"QIDISlicer.pot"; + path_to_pot = boost::filesystem::canonical(boost::filesystem::path(argv[2])).parent_path() / "localization" /"PrusaSlicer.pot"; } catch (std::exception&) { std::cout << "HINTS_TO_POT FAILED: BOOST CANNONICAL" << std::endl; return -1; diff --git a/src/libslic3r/AABBTreeLines.hpp b/src/libslic3r/AABBTreeLines.hpp index 990b319..9331481 100644 --- a/src/libslic3r/AABBTreeLines.hpp +++ b/src/libslic3r/AABBTreeLines.hpp @@ -117,7 +117,8 @@ inline std::tuple coordinate_aligned_ray_hit_count(size_t } template -inline std::vector> get_intersections_with_line(size_t node_idx, +inline void insert_intersections_with_line(std::vector> &result, + size_t node_idx, const TreeType &tree, const std::vector &lines, const LineType &line, @@ -128,11 +129,10 @@ inline std::vector> get_intersections_with_line(si if (node.is_leaf()) { VectorType intersection_pt; if (line_alg::intersection(line, lines[node.idx], &intersection_pt)) { - return {std::pair(intersection_pt, node.idx)}; - } else { - return {}; + result.emplace_back(intersection_pt, node.idx); + } + return; } - } else { size_t left_node_idx = node_idx * 2 + 1; size_t right_node_idx = left_node_idx + 1; const auto &node_left = tree.node(left_node_idx); @@ -140,22 +140,15 @@ inline std::vector> get_intersections_with_line(si assert(node_left.is_valid()); assert(node_right.is_valid()); - std::vector> result; if (node_left.bbox.intersects(line_bb)) { - std::vector> intersections = - get_intersections_with_line(left_node_idx, tree, lines, line, line_bb); - result.insert(result.end(), intersections.begin(), intersections.end()); + insert_intersections_with_line(result, left_node_idx, tree, lines, line, line_bb); } if (node_right.bbox.intersects(line_bb)) { - std::vector> intersections = - get_intersections_with_line(right_node_idx, tree, lines, line, line_bb); - result.insert(result.end(), intersections.begin(), intersections.end()); + insert_intersections_with_line(result, right_node_idx, tree, lines, line, line_bb); } - return result; - } } } // namespace detail @@ -273,7 +266,8 @@ inline std::vector> get_intersections_with_line(co auto line_bb = typename TreeType::BoundingBox(line.a, line.a); line_bb.extend(line.b); - auto intersections = detail::get_intersections_with_line(0, tree, lines, line, line_bb); + std::vector> intersections; // result + detail::insert_intersections_with_line(intersections, 0, tree, lines, line, line_bb); if (sorted) { using Floating = typename std::conditional::value, typename LineType::Scalar, double>::type; @@ -345,7 +339,7 @@ public: return dist; } - std::vector all_lines_in_radius(const Vec<2, Scalar> &point, Floating radius) + std::vector all_lines_in_radius(const Vec<2, Scalar> &point, Floating radius) const { return AABBTreeLines::all_lines_in_radius(this->lines, this->tree, point.template cast(), radius * radius); } diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 57219e8..a9f8bcb 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -90,11 +90,11 @@ void AppConfig::set_defaults() set("associate_3mf", "0"); if (get("associate_stl").empty()) set("associate_stl", "0"); - if (get("associate_step").empty()) - set("associate_step", "0"); if (get("tabs_as_menu").empty()) set("tabs_as_menu", "0"); + if (get("suppress_round_corners").empty()) + set("suppress_round_corners", "1"); #endif // _WIN32 // remove old 'use_legacy_opengl' parameter from this config, if present @@ -151,7 +151,7 @@ void AppConfig::set_defaults() set("default_action_on_new_project", "none"); // , "keep(transfer)", "discard" or "save" if (get("color_mapinulation_panel").empty()) - set("color_mapinulation_panel", "1"); + set("color_mapinulation_panel", "0"); if (get("order_volumes").empty()) set("order_volumes", "1"); @@ -166,6 +166,8 @@ void AppConfig::set_defaults() #ifdef _WIN32 if (get("associate_gcode").empty()) set("associate_gcode", "0"); + if (get("associate_bgcode").empty()) + set("associate_bgcode", "0"); #endif // _WIN32 } @@ -196,6 +198,8 @@ void AppConfig::set_defaults() if (get("allow_ip_resolve").empty()) set("allow_ip_resolve", "1"); + if (get("wifi_config_dialog_declined").empty()) + set("wifi_config_dialog_declined", "0"); #ifdef _WIN32 if (get("use_legacy_3DConnexion").empty()) set("use_legacy_3DConnexion", "0"); @@ -208,7 +212,6 @@ void AppConfig::set_defaults() //B45 if (get("machine_list_minification").empty()) set("machine_list_minification", "1"); - #endif // _WIN32 // Remove legacy window positions/sizes @@ -360,21 +363,11 @@ std::string AppConfig::load(const std::string &path) const auto model_name = kvp.first.substr(MODEL_PREFIX.size()); std::vector variants; //B9 - std::vector emails; - std::vector skypes; if (! unescape_strings_cstyle(kvp.second.data(), variants)) { continue; } for (const auto &variant : variants) { vendor[model_name].insert(variant); } //B19 - if (! unescape_strings_cstyle(kvp.second.data(), emails)) { continue; } - for (const auto &email : emails) { - vendor[model_name].insert(email); - } - if (! unescape_strings_cstyle(kvp.second.data(), skypes)) { continue; } - for (const auto &skype : skypes) { - vendor[model_name].insert(skype); - } } } else { // This must be a section name. Read the entries of a section. @@ -390,11 +383,17 @@ std::string AppConfig::load(const std::string &path) //B7 // if (ini_ver) { // m_orig_version = *ini_ver; + if (ini_ver) { + m_orig_version = *ini_ver; // // Make 1.40.0 alphas compare well // ini_ver->set_metadata(boost::none); // ini_ver->set_prerelease(boost::none); // m_legacy_datadir = ini_ver < Semver(1, 40, 0); // } + ini_ver->set_metadata(boost::none); + ini_ver->set_prerelease(boost::none); + m_legacy_datadir = ini_ver < Semver(1, 40, 0); + } // Legacy conversion if (m_mode == EAppMode::Editor) { diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index 37d3d4e..853facb 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -9,29 +9,31 @@ #include "RedistributeBeadingStrategy.hpp" #include "OuterWallInsetBeadingStrategy.hpp" -#include #include -namespace Slic3r::Arachne -{ +namespace Slic3r::Arachne { -BeadingStrategyPtr BeadingStrategyFactory::makeStrategy( - const coord_t preferred_bead_width_outer, - const coord_t preferred_bead_width_inner, - const coord_t preferred_transition_length, - const float transitioning_angle, - const bool print_thin_walls, - const coord_t min_bead_width, - const coord_t min_feature_size, - const double wall_split_middle_threshold, - const double wall_add_middle_threshold, - const coord_t max_bead_count, - const coord_t outer_wall_offset, - const int inward_distributed_center_wall_count, - const double minimum_variable_line_ratio -) +BeadingStrategyPtr BeadingStrategyFactory::makeStrategy(const coord_t preferred_bead_width_outer, + const coord_t preferred_bead_width_inner, + const coord_t preferred_transition_length, + const float transitioning_angle, + const bool print_thin_walls, + const coord_t min_bead_width, + const coord_t min_feature_size, + const double wall_split_middle_threshold, + const double wall_add_middle_threshold, + const coord_t max_bead_count, + const coord_t outer_wall_offset, + const int inward_distributed_center_wall_count, + const double minimum_variable_line_ratio) { - BeadingStrategyPtr ret = std::make_unique(preferred_bead_width_inner, preferred_transition_length, transitioning_angle, wall_split_middle_threshold, wall_add_middle_threshold, inward_distributed_center_wall_count); + // Handle a special case when there is just one external perimeter. + // Because big differences in bead width for inner and other perimeters cause issues with current beading strategies. + const coord_t optimal_width = max_bead_count <= 2 ? preferred_bead_width_outer : preferred_bead_width_inner; + BeadingStrategyPtr ret = std::make_unique(optimal_width, preferred_transition_length, transitioning_angle, + wall_split_middle_threshold, wall_add_middle_threshold, + inward_distributed_center_wall_count); + BOOST_LOG_TRIVIAL(trace) << "Applying the Redistribute meta-strategy with outer-wall width = " << preferred_bead_width_outer << ", inner-wall width = " << preferred_bead_width_inner << "."; ret = std::make_unique(preferred_bead_width_outer, minimum_variable_line_ratio, std::move(ret)); @@ -39,12 +41,13 @@ BeadingStrategyPtr BeadingStrategyFactory::makeStrategy( BOOST_LOG_TRIVIAL(trace) << "Applying the Widening Beading meta-strategy with minimum input width " << min_feature_size << " and minimum output width " << min_bead_width << "."; ret = std::make_unique(std::move(ret), min_feature_size, min_bead_width); } + if (outer_wall_offset > 0) { BOOST_LOG_TRIVIAL(trace) << "Applying the OuterWallOffset meta-strategy with offset = " << outer_wall_offset << "."; ret = std::make_unique(outer_wall_offset, std::move(ret)); } - //Apply the LimitedBeadingStrategy last, since that adds a 0-width marker wall which other beading strategies shouldn't touch. + // Apply the LimitedBeadingStrategy last, since that adds a 0-width marker wall which other beading strategies shouldn't touch. BOOST_LOG_TRIVIAL(trace) << "Applying the Limited Beading meta-strategy with maximum bead count = " << max_bead_count << "."; ret = std::make_unique(max_bead_count, std::move(ret)); return ret; diff --git a/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp index eefcab8..5345c49 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp @@ -24,17 +24,16 @@ WideningBeadingStrategy::Beading WideningBeadingStrategy::compute(coord_t thickn if (thickness < optimal_width) { Beading ret; ret.total_thickness = thickness; - if (thickness >= min_input_width) - { + if (thickness >= min_input_width) { ret.bead_widths.emplace_back(std::max(thickness, min_output_width)); ret.toolpath_locations.emplace_back(thickness / 2); - } else { + ret.left_over = 0; + } else ret.left_over = thickness; - } + return ret; - } else { + } else return parent->compute(thickness, bead_count); - } } coord_t WideningBeadingStrategy::getOptimalThickness(coord_t bead_count) const diff --git a/src/libslic3r/Arrange/ArrangeImpl.hpp b/src/libslic3r/Arrange/ArrangeImpl.hpp index b7e8af3..434bdd4 100644 --- a/src/libslic3r/Arrange/ArrangeImpl.hpp +++ b/src/libslic3r/Arrange/ArrangeImpl.hpp @@ -441,7 +441,7 @@ ArrItem AdvancedItemConverter::get_arritem(const Arrangeable &arrbl, auto simpl_tol = static_cast(this->simplification_tolerance()); - if (simpl_tol > 0) + if (simpl_tol > 0.) { outline = expolygons_simplify(outline, simpl_tol); if (!envelope.empty()) diff --git a/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.cpp b/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.cpp index 4e289a7..a0ecbf8 100644 --- a/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.cpp +++ b/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.cpp @@ -4,6 +4,11 @@ namespace Slic3r { ArrangeSettingsDb_AppCfg::ArrangeSettingsDb_AppCfg(AppConfig *appcfg) : m_appcfg{appcfg} +{ + sync(); +} + +void ArrangeSettingsDb_AppCfg::sync() { m_settings_fff.postfix = "_fff"; m_settings_fff_seq.postfix = "_fff_seq_print"; @@ -57,27 +62,41 @@ ArrangeSettingsDb_AppCfg::ArrangeSettingsDb_AppCfg(AppConfig *appcfg) : m_appcfg if (!dist_fff_str.empty()) m_settings_fff.vals.d_obj = string_to_float_decimal_point(dist_fff_str); + else + m_settings_fff.vals.d_obj = m_settings_fff.defaults.d_obj; if (!dist_bed_fff_str.empty()) m_settings_fff.vals.d_bed = string_to_float_decimal_point(dist_bed_fff_str); + else + m_settings_fff.vals.d_bed = m_settings_fff.defaults.d_bed; if (!dist_fff_seq_print_str.empty()) m_settings_fff_seq.vals.d_obj = string_to_float_decimal_point(dist_fff_seq_print_str); + else + m_settings_fff_seq.vals.d_obj = m_settings_fff_seq.defaults.d_obj; if (!dist_bed_fff_seq_print_str.empty()) m_settings_fff_seq.vals.d_bed = string_to_float_decimal_point(dist_bed_fff_seq_print_str); + else + m_settings_fff_seq.vals.d_bed = m_settings_fff_seq.defaults.d_bed; if (!dist_sla_str.empty()) m_settings_sla.vals.d_obj = string_to_float_decimal_point(dist_sla_str); + else + m_settings_sla.vals.d_obj = m_settings_sla.defaults.d_obj; if (!dist_bed_sla_str.empty()) m_settings_sla.vals.d_bed = string_to_float_decimal_point(dist_bed_sla_str); + else + m_settings_sla.vals.d_bed = m_settings_sla.defaults.d_bed; if (!en_rot_fff_str.empty()) m_settings_fff.vals.rotations = (en_rot_fff_str == "1" || en_rot_fff_str == "yes"); if (!en_rot_fff_seqp_str.empty()) m_settings_fff_seq.vals.rotations = (en_rot_fff_seqp_str == "1" || en_rot_fff_seqp_str == "yes"); + else + m_settings_fff_seq.vals.rotations = m_settings_fff_seq.defaults.rotations; if (!en_rot_sla_str.empty()) m_settings_sla.vals.rotations = (en_rot_sla_str == "1" || en_rot_sla_str == "yes"); @@ -90,38 +109,26 @@ ArrangeSettingsDb_AppCfg::ArrangeSettingsDb_AppCfg(AppConfig *appcfg) : m_appcfg // if (!alignment_fff_seqp_str.empty()) // m_arrange_settings_fff_seq_print.alignment = std::stoi(alignment_fff_seqp_str); + else + m_settings_sla.vals.rotations = m_settings_sla.defaults.rotations; // Override default alignment and save save/load it to a temporary slot "alignment_xl" - ArrangeSettingsView::XLPivots arr_alignment = ArrangeSettingsView::xlpFrontLeft; - if (!alignment_xl_str.empty()) { - int align_val = std::stoi(alignment_xl_str); - - if (align_val >= 0 && align_val < ArrangeSettingsView::xlpCount) - arr_alignment = - static_cast(align_val); - } + auto arr_alignment = ArrangeSettingsView::to_xl_pivots(alignment_xl_str) + .value_or(m_settings_fff.defaults.xl_align); m_settings_sla.vals.xl_align = arr_alignment ; m_settings_fff.vals.xl_align = arr_alignment ; m_settings_fff_seq.vals.xl_align = arr_alignment ; - ArrangeSettingsView::GeometryHandling geom_handl = arr2::ArrangeSettingsView::ghConvex; - if (!geom_handling_str.empty()) { - int gh = std::stoi(geom_handling_str); - if(gh >= 0 && gh < ArrangeSettingsView::GeometryHandling::ghCount) - geom_handl = static_cast(gh); - } + auto geom_handl = ArrangeSettingsView::to_geometry_handling(geom_handling_str) + .value_or(m_settings_fff.defaults.geom_handling); m_settings_sla.vals.geom_handling = geom_handl; m_settings_fff.vals.geom_handling = geom_handl; m_settings_fff_seq.vals.geom_handling = geom_handl; - ArrangeSettingsView::ArrangeStrategy arr_strategy = arr2::ArrangeSettingsView::asAuto; - if (!strategy_str.empty()) { - int strateg = std::stoi(strategy_str); - if(strateg >= 0 && strateg < ArrangeSettingsView::ArrangeStrategy::asCount) - arr_strategy = static_cast(strateg); - } + auto arr_strategy = ArrangeSettingsView::to_arrange_strategy(strategy_str) + .value_or(m_settings_fff.defaults.arr_strategy); m_settings_sla.vals.arr_strategy = arr_strategy; m_settings_fff.vals.arr_strategy = arr_strategy; @@ -174,7 +181,7 @@ arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_rotation_enabled(bool v) arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_xl_alignment(XLPivots v) { m_settings_fff.vals.xl_align = v; - m_appcfg->set("arrange", "alignment_xl", std::to_string(v)); + m_appcfg->set("arrange", "alignment_xl", std::string{get_label(v)}); return *this; } @@ -182,7 +189,7 @@ arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_xl_alignment(XLPivots v) arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_geometry_handling(GeometryHandling v) { m_settings_fff.vals.geom_handling = v; - m_appcfg->set("arrange", "geometry_handling", std::to_string(v)); + m_appcfg->set("arrange", "geometry_handling", std::string{get_label(v)}); return *this; } @@ -190,7 +197,7 @@ arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_geometry_handling(Geometr arr2::ArrangeSettingsDb& ArrangeSettingsDb_AppCfg::set_arrange_strategy(ArrangeStrategy v) { m_settings_fff.vals.arr_strategy = v; - m_appcfg->set("arrange", "arrange_strategy", std::to_string(v)); + m_appcfg->set("arrange", "arrange_strategy", std::string{get_label(v)}); return *this; } diff --git a/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.hpp b/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.hpp index c3b6e07..570510c 100644 --- a/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.hpp +++ b/src/libslic3r/Arrange/ArrangeSettingsDb_AppCfg.hpp @@ -52,6 +52,7 @@ private: public: explicit ArrangeSettingsDb_AppCfg(AppConfig *appcfg); + void sync(); float get_distance_from_objects() const override { return get_ref(this).d_obj; } float get_distance_from_bed() const override { return get_ref(this).d_bed; } bool is_rotation_enabled() const override { return get_ref(this).rotations; } diff --git a/src/libslic3r/Arrange/ArrangeSettingsView.hpp b/src/libslic3r/Arrange/ArrangeSettingsView.hpp index 53791b1..b5a9d47 100644 --- a/src/libslic3r/Arrange/ArrangeSettingsView.hpp +++ b/src/libslic3r/Arrange/ArrangeSettingsView.hpp @@ -2,8 +2,13 @@ #ifndef ARRANGESETTINGSVIEW_HPP #define ARRANGESETTINGSVIEW_HPP +#include +#include + +#include "libslic3r/StaticMap.hpp" namespace Slic3r { namespace arr2 { +using namespace std::string_view_literals; class ArrangeSettingsView { public: @@ -28,6 +33,114 @@ public: virtual XLPivots get_xl_alignment() const = 0; virtual GeometryHandling get_geometry_handling() const = 0; virtual ArrangeStrategy get_arrange_strategy() const = 0; + static constexpr std::string_view get_label(GeometryHandling v) + { + constexpr auto STR = std::array{ + "0"sv, // convex + "1"sv, // balanced + "2"sv, // advanced + "-1"sv, // undefined + }; + + return STR[v]; + } + + static constexpr std::string_view get_label(ArrangeStrategy v) + { + constexpr auto STR = std::array{ + "0"sv, // auto + "1"sv, // pulltocenter + "-1"sv, // undefined + }; + + return STR[v]; + } + + static constexpr std::string_view get_label(XLPivots v) + { + constexpr auto STR = std::array{ + "0"sv, // center + "1"sv, // rearleft + "2"sv, // frontleft + "3"sv, // frontright + "4"sv, // rearright + "5"sv, // random + "-1"sv, // undefined + }; + + return STR[v]; + } + +private: + + template + using EnumMap = StaticMap; + + template + static constexpr std::optional get_enumval(std::string_view str, + const EnumMap &emap) + { + std::optional ret; + + if (auto v = query(emap, str); v.has_value()) { + ret = *v; + } + + return ret; + } + +public: + + static constexpr std::optional to_geometry_handling(std::string_view str) + { + return get_enumval(str, GeometryHandlingLabels); + } + + static constexpr std::optional to_arrange_strategy(std::string_view str) + { + return get_enumval(str, ArrangeStrategyLabels); + } + + static constexpr std::optional to_xl_pivots(std::string_view str) + { + return get_enumval(str, XLPivotsLabels); + } + +private: + + static constexpr const auto GeometryHandlingLabels = make_staticmap({ + {"convex"sv, ghConvex}, + {"balanced"sv, ghBalanced}, + {"advanced"sv, ghAdvanced}, + + {"0"sv, ghConvex}, + {"1"sv, ghBalanced}, + {"2"sv, ghAdvanced}, + }); + + static constexpr const auto ArrangeStrategyLabels = make_staticmap({ + {"auto"sv, asAuto}, + {"pulltocenter"sv, asPullToCenter}, + + {"0"sv, asAuto}, + {"1"sv, asPullToCenter} + }); + + static constexpr const auto XLPivotsLabels = make_staticmap({ + {"center"sv, xlpCenter }, + {"rearleft"sv, xlpRearLeft }, + {"frontleft"sv, xlpFrontLeft }, + {"frontright"sv, xlpFrontRight }, + {"rearright"sv, xlpRearRight }, + {"random"sv, xlpRandom }, + + {"0"sv, xlpCenter }, + {"1"sv, xlpRearLeft }, + {"2"sv, xlpFrontLeft }, + {"3"sv, xlpFrontRight }, + {"4"sv, xlpRearRight }, + {"5"sv, xlpRandom } + }); }; class ArrangeSettingsDb: public ArrangeSettingsView diff --git a/src/libslic3r/Arrange/Core/NFP/EdgeCache.cpp b/src/libslic3r/Arrange/Core/NFP/EdgeCache.cpp index 4ccd1e6..4a0a78a 100644 --- a/src/libslic3r/Arrange/Core/NFP/EdgeCache.cpp +++ b/src/libslic3r/Arrange/Core/NFP/EdgeCache.cpp @@ -91,7 +91,7 @@ void fill_distances(const Polygon &poly, std::vector &distances) double dist = 0.; auto lrange = line_range(poly); - for (const Line &l : lrange) { + for (const Line l : lrange) { dist += l.length(); distances.emplace_back(dist); } diff --git a/src/libslic3r/Arrange/Core/NFP/Kernels/GravityKernel.hpp b/src/libslic3r/Arrange/Core/NFP/Kernels/GravityKernel.hpp index 6507d07..875b228 100644 --- a/src/libslic3r/Arrange/Core/NFP/Kernels/GravityKernel.hpp +++ b/src/libslic3r/Arrange/Core/NFP/Kernels/GravityKernel.hpp @@ -14,7 +14,9 @@ struct GravityKernel { std::optional item_sink; Vec2d active_sink; - GravityKernel(Vec2crd gravity_center) : sink{gravity_center} {} + GravityKernel(Vec2crd gravity_center) : + sink{gravity_center}, active_sink{unscaled(gravity_center)} {} + GravityKernel() = default; template diff --git a/src/libslic3r/Arrange/Core/NFP/Kernels/KernelUtils.hpp b/src/libslic3r/Arrange/Core/NFP/Kernels/KernelUtils.hpp index 4bc0a71..a06bc75 100644 --- a/src/libslic3r/Arrange/Core/NFP/Kernels/KernelUtils.hpp +++ b/src/libslic3r/Arrange/Core/NFP/Kernels/KernelUtils.hpp @@ -24,6 +24,7 @@ bool find_initial_position(Itm &itm, { if (all_items_range(packing_context).empty()) { auto rotations = allowed_rotations(itm); + set_rotation(itm, 0.); auto chull = envelope_convex_hull(itm); for (double rot : rotations) { diff --git a/src/libslic3r/Arrange/Core/NFP/NFP.cpp b/src/libslic3r/Arrange/Core/NFP/NFP.cpp index 7b0df60..e3f4205 100644 --- a/src/libslic3r/Arrange/Core/NFP/NFP.cpp +++ b/src/libslic3r/Arrange/Core/NFP/NFP.cpp @@ -129,7 +129,7 @@ Polygon ifp_convex_convex(const Polygon &fixed, const Polygon &movable) // the zero area polygon formed by the edge. The union of all these sub-nfps // will contain a hole that is the actual ifp. auto lrange = line_range(fixed); - for (const Line &l : lrange) { // Older mac compilers generate warnging if line_range is called in-place + for (const Line l : lrange) { // Older mac compilers generate warnging if line_range is called in-place Polygon fixed = {l.a, l.b}; subnfps.emplace_back(nfp_convex_convex_legacy(fixed, movable)); } diff --git a/src/libslic3r/Arrange/Tasks/FillBedTask.hpp b/src/libslic3r/Arrange/Tasks/FillBedTask.hpp index a6c2cf1..64e3437 100644 --- a/src/libslic3r/Arrange/Tasks/FillBedTask.hpp +++ b/src/libslic3r/Arrange/Tasks/FillBedTask.hpp @@ -17,6 +17,7 @@ struct FillBedTask: public ArrangeTaskBase std::vector selected, unselected; + std::vector selected_fillers; ArrangeSettings settings; ExtendedBed bed; size_t selected_existing_count = 0; diff --git a/src/libslic3r/Arrange/Tasks/FillBedTaskImpl.hpp b/src/libslic3r/Arrange/Tasks/FillBedTaskImpl.hpp index 96d26d9..2aeceb8 100644 --- a/src/libslic3r/Arrange/Tasks/FillBedTaskImpl.hpp +++ b/src/libslic3r/Arrange/Tasks/FillBedTaskImpl.hpp @@ -102,8 +102,6 @@ void extract(FillBedTask &task, }; // Set the lowest priority to the shrinked prototype (hole filler) item - set_priority(prototype_item_shrinked, - lowest_priority(range(task.selected)) - 1); scene.model().for_each_arrangeable(collect_task_items); @@ -119,7 +117,7 @@ void extract(FillBedTask &task, // Add as many filler items as there are needed items. Most of them will // be discarded anyways. - std::fill_n(std::back_inserter(task.selected), needed_items, + std::fill_n(std::back_inserter(task.selected_fillers), needed_items, prototype_item_shrinked); } @@ -172,7 +170,7 @@ std::unique_ptr FillBedTask::process_native( void on_packed(ArrItem &itm) override { // Stop at the first filler that is not on the physical bed - do_stop = get_bed_index(itm) > PhysicalBedId && get_priority(itm) < 0; + do_stop = get_bed_index(itm) > PhysicalBedId && get_priority(itm) == 0; } } subctl(ctl, *this); @@ -181,6 +179,12 @@ std::unique_ptr FillBedTask::process_native( arranger->arrange(selected, unselected, bed, subctl); + auto unsel_cpy = unselected; + for (const auto &itm : selected) { + unsel_cpy.emplace_back(itm); + } + + arranger->arrange(selected_fillers, unsel_cpy, bed, FillBedCtl{ctl, *this}); auto arranged_range = Range{selected.begin(), selected.begin() + selected_existing_count}; @@ -193,6 +197,9 @@ std::unique_ptr FillBedTask::process_native( if (get_bed_index(itm) == PhysicalBedId) result->add_new_item(itm); + for (auto &itm : selected_fillers) + if (get_bed_index(itm) == PhysicalBedId) + result->add_new_item(itm); return result; } diff --git a/src/libslic3r/BoundingBox.hpp b/src/libslic3r/BoundingBox.hpp index 9a4c68a..f8da75a 100644 --- a/src/libslic3r/BoundingBox.hpp +++ b/src/libslic3r/BoundingBox.hpp @@ -68,7 +68,9 @@ private: template> static void construct(BoundingBoxType &out, It from, It to) { - if (from != to) { + if (from == to) { + out.defined = false; + } else { auto it = from; out.min = it->template cast(); out.max = out.min; diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index bdc1a19..672bb80 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -490,8 +490,10 @@ static void make_inner_brim(const Print &print, loops = union_pt_chained_outside_in(loops); std::reverse(loops.begin(), loops.end()); - extrusion_entities_append_loops(brim.entities, std::move(loops), ExtrusionRole::Skirt, float(flow.mm3_per_mm()), - float(flow.width()), float(print.skirt_first_layer_height())); + extrusion_entities_append_loops(brim.entities, std::move(loops), + ExtrusionAttributes{ + ExtrusionRole::Skirt, + ExtrusionFlow{ float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height()) } }); } // Produce brim lines around those objects, that have the brim enabled. @@ -672,7 +674,9 @@ ExtrusionEntityCollection make_brim(const Print &print, PrintTryCancel try_cance if (i + 1 == j && first_path.size() > 3 && first_path.front().x() == first_path.back().x() && first_path.front().y() == first_path.back().y()) { auto *loop = new ExtrusionLoop(); brim.entities.emplace_back(loop); - loop->paths.emplace_back(ExtrusionRole::Skirt, float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height())); + loop->paths.emplace_back(ExtrusionAttributes{ + ExtrusionRole::Skirt, + ExtrusionFlow{ float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height()) } }); Points &points = loop->paths.front().polyline.points; points.reserve(first_path.size()); for (const ClipperLib_Z::IntPoint &pt : first_path) @@ -683,7 +687,9 @@ ExtrusionEntityCollection make_brim(const Print &print, PrintTryCancel try_cance ExtrusionEntityCollection this_loop_trimmed; this_loop_trimmed.entities.reserve(j - i); for (; i < j; ++ i) { - this_loop_trimmed.entities.emplace_back(new ExtrusionPath(ExtrusionRole::Skirt, float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height()))); + this_loop_trimmed.entities.emplace_back(new ExtrusionPath({ + ExtrusionRole::Skirt, + ExtrusionFlow{ float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height()) } })); const ClipperLib_Z::Path &path = *loops_trimmed_order[i].first; Points &points = dynamic_cast(this_loop_trimmed.entities.back())->polyline.points; points.reserve(path.size()); @@ -699,7 +705,9 @@ ExtrusionEntityCollection make_brim(const Print &print, PrintTryCancel try_cance } } } else { - extrusion_entities_append_loops_and_paths(brim.entities, std::move(all_loops), ExtrusionRole::Skirt, float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height())); + extrusion_entities_append_loops_and_paths(brim.entities, std::move(all_loops), + ExtrusionAttributes{ ExtrusionRole::Skirt, + ExtrusionFlow{ float(flow.mm3_per_mm()), float(flow.width()), float(print.skirt_first_layer_height()) } }); } make_inner_brim(print, top_level_objects_with_brim, bottom_layers_expolygons, brim); diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 6f8a759..6cc97cc 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -14,6 +14,10 @@ if (TARGET OpenVDB::openvdb) set(OpenVDBUtils_SOURCES OpenVDBUtils.cpp OpenVDBUtils.hpp OpenVDBUtilsLegacy.hpp) endif() +find_package(LibBGCode REQUIRED COMPONENTS Convert) +slic3r_remap_configs(LibBGCode::bgcode_core RelWithDebInfo Release) +slic3r_remap_configs(LibBGCode::bgcode_binarize RelWithDebInfo Release) +slic3r_remap_configs(LibBGCode::bgcode_convert RelWithDebInfo Release) set(SLIC3R_SOURCES pchheader.cpp pchheader.hpp @@ -57,9 +61,11 @@ set(SLIC3R_SOURCES ElephantFootCompensation.hpp Emboss.cpp Emboss.hpp + EmbossShape.hpp enum_bitmask.hpp ExPolygon.cpp ExPolygon.hpp + ExPolygonSerialize.hpp ExPolygonsIndex.cpp ExPolygonsIndex.hpp Extruder.cpp @@ -132,6 +138,8 @@ set(SLIC3R_SOURCES Format/AnycubicSLA.cpp Format/STEP.hpp Format/STEP.cpp + Format/SVG.hpp + Format/SVG.cpp Format/SLAArchiveFormatRegistry.hpp Format/SLAArchiveFormatRegistry.cpp GCode/ThumbnailData.cpp @@ -142,8 +150,14 @@ set(SLIC3R_SOURCES GCode/ConflictChecker.hpp GCode/CoolingBuffer.cpp GCode/CoolingBuffer.hpp + GCode/ExtrusionProcessor.cpp + GCode/ExtrusionProcessor.hpp GCode/FindReplace.cpp GCode/FindReplace.hpp + GCode/LabelObjects.cpp + GCode/LabelObjects.hpp + GCode/GCodeWriter.cpp + GCode/GCodeWriter.hpp GCode/PostProcessor.cpp GCode/PostProcessor.hpp GCode/PressureEqualizer.cpp @@ -156,10 +170,16 @@ set(SLIC3R_SOURCES GCode/SpiralVase.hpp GCode/SeamPlacer.cpp GCode/SeamPlacer.hpp + GCode/SmoothPath.cpp + GCode/SmoothPath.hpp GCode/ToolOrdering.cpp GCode/ToolOrdering.hpp + GCode/Wipe.cpp + GCode/Wipe.hpp GCode/WipeTower.cpp GCode/WipeTower.hpp + GCode/WipeTowerIntegration.cpp + GCode/WipeTowerIntegration.hpp GCode/GCodeProcessor.cpp GCode/GCodeProcessor.hpp GCode/AvoidCrossingPerimeters.cpp @@ -170,10 +190,10 @@ set(SLIC3R_SOURCES GCodeReader.hpp # GCodeSender.cpp # GCodeSender.hpp - GCodeWriter.cpp - GCodeWriter.hpp Geometry.cpp Geometry.hpp + Geometry/ArcWelder.cpp + Geometry/ArcWelder.hpp Geometry/Bicubic.hpp Geometry/Circle.cpp Geometry/Circle.hpp @@ -476,6 +496,7 @@ set(SLIC3R_SOURCES Arachne/SkeletalTrapezoidationJoint.hpp Arachne/WallToolPaths.hpp Arachne/WallToolPaths.cpp + StaticMap.hpp ) add_library(libslic3r STATIC ${SLIC3R_SOURCES}) @@ -561,6 +582,7 @@ target_link_libraries(libslic3r ZLIB::ZLIB JPEG::JPEG qoi + LibBGCode::bgcode_convert ) if (APPLE) diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index e942423..dfbb757 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -271,8 +271,8 @@ bool has_duplicate_points(const ClipperLib::PolyTree &polytree) // Offset CCW contours outside, CW contours (holes) inside. // Don't calculate union of the output paths. -template -static ClipperLib::Paths raw_offset(PathsProvider &&paths, float offset, ClipperLib::JoinType joinType, double miterLimit) +template +static ClipperLib::Paths raw_offset(PathsProvider &&paths, float offset, ClipperLib::JoinType joinType, double miterLimit, ClipperLib::EndType endType = ClipperLib::etClosedPolygon) { CLIPPER_UTILS_TIME_LIMIT_MILLIS(CLIPPER_UTILS_TIME_LIMIT_DEFAULT); @@ -364,11 +364,11 @@ inline ExPolygons ClipperPaths_to_Slic3rExPolygons(const ClipperLib::Paths &inpu return PolyTreeToExPolygons(clipper_union(input, do_union ? ClipperLib::pftNonZero : ClipperLib::pftEvenOdd)); } -template -static ClipperLib::Paths raw_offset_polyline(PathsProvider &&paths, float offset, ClipperLib::JoinType joinType, double miterLimit) +template +static ClipperLib::Paths raw_offset_polyline(PathsProvider &&paths, float offset, ClipperLib::JoinType joinType, double miterLimit, ClipperLib::EndType end_type = ClipperLib::etOpenButt) { assert(offset > 0); - return raw_offset(std::forward(paths), offset, joinType, miterLimit); + return raw_offset(std::forward(paths), offset, joinType, miterLimit, end_type); } template @@ -421,10 +421,17 @@ Slic3r::Polygons offset(const Slic3r::Polygons &polygons, const float delta, Cli Slic3r::ExPolygons offset_ex(const Slic3r::Polygons &polygons, const float delta, ClipperLib::JoinType joinType, double miterLimit) { return PolyTreeToExPolygons(offset_paths(ClipperUtils::PolygonsProvider(polygons), delta, joinType, miterLimit)); } -Slic3r::Polygons offset(const Slic3r::Polyline &polyline, const float delta, ClipperLib::JoinType joinType, double miterLimit) - { assert(delta > 0); return to_polygons(clipper_union(raw_offset_polyline(ClipperUtils::SinglePathProvider(polyline.points), delta, joinType, miterLimit))); } -Slic3r::Polygons offset(const Slic3r::Polylines &polylines, const float delta, ClipperLib::JoinType joinType, double miterLimit) - { assert(delta > 0); return to_polygons(clipper_union(raw_offset_polyline(ClipperUtils::PolylinesProvider(polylines), delta, joinType, miterLimit))); } +Slic3r::Polygons offset(const Slic3r::Polyline &polyline, const float delta, ClipperLib::JoinType joinType, double miterLimit, ClipperLib::EndType end_type) + { assert(delta > 0); return to_polygons(clipper_union(raw_offset_polyline(ClipperUtils::SinglePathProvider(polyline.points), delta, joinType, miterLimit, end_type))); } +Slic3r::Polygons offset(const Slic3r::Polylines &polylines, const float delta, ClipperLib::JoinType joinType, double miterLimit, ClipperLib::EndType end_type) + { assert(delta > 0); return to_polygons(clipper_union(raw_offset_polyline(ClipperUtils::PolylinesProvider(polylines), delta, joinType, miterLimit, end_type))); } + +Polygons contour_to_polygons(const Polygon &polygon, const float line_width, ClipperLib::JoinType join_type, double miter_limit){ + assert(line_width > 1.f); return to_polygons(clipper_union( + raw_offset(ClipperUtils::SinglePathProvider(polygon.points), line_width/2, join_type, miter_limit, ClipperLib::etClosedLine)));} +Polygons contour_to_polygons(const Polygons &polygons, const float line_width, ClipperLib::JoinType join_type, double miter_limit){ + assert(line_width > 1.f); return to_polygons(clipper_union( + raw_offset(ClipperUtils::PolygonsProvider(polygons), line_width/2, join_type, miter_limit, ClipperLib::etClosedLine)));} // returns number of expolygons collected (0 or 1). static int offset_expolygon_inner(const Slic3r::ExPolygon &expoly, const float delta, ClipperLib::JoinType joinType, double miterLimit, ClipperLib::Paths &out) diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index 7935034..7d036eb 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -30,6 +30,7 @@ static constexpr const float ClipperSafetyOffset = 10 static constexpr const Slic3r::ClipperLib::JoinType DefaultJoinType = Slic3r::ClipperLib::jtMiter; //FIXME evaluate the default miter limit. 3 seems to be extreme, Cura uses 1.2. +static constexpr const Slic3r::ClipperLib::EndType DefaultEndType = Slic3r::ClipperLib::etOpenButt; // Mitter Limit 3 is useful for perimeter generator, where sharp corners are extruded without needing a gap fill. // However such a high limit causes issues with large positive or negative offsets, where a sharp corner // is extended excessively. @@ -336,8 +337,8 @@ Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, Clipp // offset Polylines // Wherever applicable, please use the expand() / shrink() variants instead, they convey their purpose better. // Input polygons for negative offset shall be "normalized": There must be no overlap / intersections between the input polygons. -Slic3r::Polygons offset(const Slic3r::Polyline &polyline, const float delta, ClipperLib::JoinType joinType = DefaultLineJoinType, double miterLimit = DefaultLineMiterLimit); -Slic3r::Polygons offset(const Slic3r::Polylines &polylines, const float delta, ClipperLib::JoinType joinType = DefaultLineJoinType, double miterLimit = DefaultLineMiterLimit); +Slic3r::Polygons offset(const Slic3r::Polyline &polyline, const float delta, ClipperLib::JoinType joinType = DefaultLineJoinType, double miterLimit = DefaultLineMiterLimit, ClipperLib::EndType end_type = DefaultEndType); +Slic3r::Polygons offset(const Slic3r::Polylines &polylines, const float delta, ClipperLib::JoinType joinType = DefaultLineJoinType, double miterLimit = DefaultLineMiterLimit, ClipperLib::EndType end_type = DefaultEndType); Slic3r::Polygons offset(const Slic3r::Polygons &polygons, const float delta, ClipperLib::JoinType joinType = DefaultJoinType, double miterLimit = DefaultMiterLimit); Slic3r::Polygons offset(const Slic3r::ExPolygon &expolygon, const float delta, ClipperLib::JoinType joinType = DefaultJoinType, double miterLimit = DefaultMiterLimit); Slic3r::Polygons offset(const Slic3r::ExPolygons &expolygons, const float delta, ClipperLib::JoinType joinType = DefaultJoinType, double miterLimit = DefaultMiterLimit); @@ -349,6 +350,8 @@ Slic3r::ExPolygons offset_ex(const Slic3r::ExPolygons &expolygons, const float d Slic3r::ExPolygons offset_ex(const Slic3r::Surfaces &surfaces, const float delta, ClipperLib::JoinType joinType = DefaultJoinType, double miterLimit = DefaultMiterLimit); Slic3r::ExPolygons offset_ex(const Slic3r::SurfacesPtr &surfaces, const float delta, ClipperLib::JoinType joinType = DefaultJoinType, double miterLimit = DefaultMiterLimit); +Polygons contour_to_polygons(const Polygon &polygon, const float line_width, ClipperLib::JoinType join_type = DefaultJoinType, double miter_limit = DefaultMiterLimit); +Polygons contour_to_polygons(const Polygons &polygon, const float line_width, ClipperLib::JoinType join_type = DefaultJoinType, double miter_limit = DefaultMiterLimit); inline Slic3r::Polygons union_safety_offset (const Slic3r::Polygons &polygons) { return offset (polygons, ClipperSafetyOffset); } inline Slic3r::Polygons union_safety_offset (const Slic3r::ExPolygons &expolygons) { return offset (expolygons, ClipperSafetyOffset); } inline Slic3r::ExPolygons union_safety_offset_ex(const Slic3r::Polygons &polygons) { return offset_ex(polygons, ClipperSafetyOffset); } diff --git a/src/libslic3r/Color.cpp b/src/libslic3r/Color.cpp index 6d8daa0..954bef4 100644 --- a/src/libslic3r/Color.cpp +++ b/src/libslic3r/Color.cpp @@ -25,7 +25,7 @@ static void RGBtoHSV(float r, float g, float b, float& h, float& s, float& v) h = 60.0f * (std::fmod(((g - b) / delta), 6.0f)); else if (max_comp == g) h = 60.0f * (((b - r) / delta) + 2.0f); - else if (max_comp == b) + else // max_comp == b h = 60.0f * (((r - g) / delta) + 4.0f); s = (max_comp > 0.0f) ? delta / max_comp : 0.0f; diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index fa00924..99a1c9d 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -17,12 +17,14 @@ #include #include #include +#include #include #include #include #include #include +#include //FIXME for GCodeFlavor and gcfMarlin (for forward-compatibility conversion) // This is not nice, likely it would be better to pass the ConfigSubstitutionContext to handle_legacy(). #include "PrintConfig.hpp" @@ -311,12 +313,9 @@ void ConfigDef::finalize() if (def.type == coEnum) { assert(def.enum_def); assert(def.enum_def->is_valid_closed_enum()); - assert(def.gui_type != ConfigOptionDef::GUIType::i_enum_open && - def.gui_type != ConfigOptionDef::GUIType::f_enum_open && - def.gui_type != ConfigOptionDef::GUIType::select_open); + assert(! def.is_gui_type_enum_open()); def.enum_def->finalize_closed_enum(); - } else if (def.gui_type == ConfigOptionDef::GUIType::i_enum_open || def.gui_type == ConfigOptionDef::GUIType::f_enum_open || - def.gui_type == ConfigOptionDef::GUIType::select_open) { + } else if (def.is_gui_type_enum_open()) { assert(def.enum_def); assert(def.enum_def->is_valid_open_enum()); assert(def.gui_type != ConfigOptionDef::GUIType::i_enum_open || def.type == coInt || def.type == coInts); @@ -720,11 +719,37 @@ void ConfigBase::setenv_() const } } -ConfigSubstitutions ConfigBase::load(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule) +ConfigSubstitutions ConfigBase::load(const std::string& filename, ForwardCompatibilitySubstitutionRule compatibility_rule) { - return is_gcode_file(file) ? - this->load_from_gcode_file(file, compatibility_rule) : - this->load_from_ini(file, compatibility_rule); + enum class EFileType + { + Ini, + AsciiGCode, + BinaryGCode + }; + + EFileType file_type; + + if (is_gcode_file(filename)) { + FILE* file = boost::nowide::fopen(filename.c_str(), "rb"); + if (file == nullptr) + throw Slic3r::RuntimeError(format("Error opening file %1%", filename)); + + std::vector cs_buffer(65536); + using namespace bgcode::core; + file_type = (is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == EResult::Success) ? EFileType::BinaryGCode : EFileType::AsciiGCode; + fclose(file); + } + else + file_type = EFileType::Ini; + + switch (file_type) +{ + case EFileType::Ini: { return this->load_from_ini(filename, compatibility_rule); } + case EFileType::AsciiGCode: { return this->load_from_gcode_file(filename, compatibility_rule);} + case EFileType::BinaryGCode: { return this->load_from_binary_gcode_file(filename, compatibility_rule);} + default: { throw Slic3r::RuntimeError(format("Invalid file %1%", filename)); } + } } ConfigSubstitutions ConfigBase::load_from_ini(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule) @@ -858,6 +883,7 @@ size_t ConfigBase::load_from_gcode_string_legacy(ConfigBase& config, const char* end = start; } + config.handle_legacy_composite(); return num_key_value_pairs; } @@ -928,10 +954,10 @@ private: }; // Load the config keys from the tail of a G-code file. -ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule) +ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &filename, ForwardCompatibilitySubstitutionRule compatibility_rule) { // Read a 64k block from the end of the G-code. - boost::nowide::ifstream ifs(file, std::ifstream::binary); + boost::nowide::ifstream ifs(filename, std::ifstream::binary); // Look for Slic3r or QIDISlicer header. // Look for the header across the whole file as the G-code may have been extended at the start by a post-processing script or the user. bool has_delimiters = false; @@ -986,7 +1012,7 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo break; } if (! end_found) - throw Slic3r::RuntimeError(format("Configuration block closing tag \"; qidislicer_config = end\" not found when reading %1%", file)); + throw Slic3r::RuntimeError(format("Configuration block closing tag \"; qidislicer_config = end\" not found when reading %1%", filename)); std::string key, value; while (reader.getline(line)) { if (line == "; qidislicer_config = begin") { @@ -1009,7 +1035,8 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo } } if (! begin_found) - throw Slic3r::RuntimeError(format("Configuration block opening tag \"; qidislicer_config = begin\" not found when reading %1%", file)); + throw Slic3r::RuntimeError( + format("Configuration block opening tag \"; qidislicer_config = begin\" not found when reading %1%", filename)); } else { @@ -1026,7 +1053,55 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo } if (key_value_pairs < 80) - throw Slic3r::RuntimeError(format("Suspiciously low number of configuration values extracted from %1%: %2%", file, key_value_pairs)); + throw Slic3r::RuntimeError(format("Suspiciously low number of configuration values extracted from %1%: %2%", filename, key_value_pairs)); + + // Do legacy conversion on a completely loaded dictionary. + // Perform composite conversions, for example merging multiple keys into one key. + this->handle_legacy_composite(); + return std::move(substitutions_ctxt.substitutions); +} + +ConfigSubstitutions ConfigBase::load_from_binary_gcode_file(const std::string& filename, ForwardCompatibilitySubstitutionRule compatibility_rule) +{ + ConfigSubstitutionContext substitutions_ctxt(compatibility_rule); + + FilePtr file{ boost::nowide::fopen(filename.c_str(), "rb") }; + if (file.f == nullptr) + throw Slic3r::RuntimeError(format("Error opening file %1%", filename)); + + using namespace bgcode::core; + using namespace bgcode::binarize; + std::vector cs_buffer(65536); + EResult res = is_valid_binary_gcode(*file.f, true, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("File %1% does not contain a valid binary gcode\nError: %2%", filename, + std::string(translate_result(res)))); + + FileHeader file_header; + res = read_header(*file.f, file_header, nullptr); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error while reading file %1%: %2%", filename, std::string(translate_result(res)))); + + // searches for config block + BlockHeader block_header; + res = read_next_block_header(*file.f, file_header, block_header, EBlockType::SlicerMetadata, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error while reading file %1%: %2%", filename, std::string(translate_result(res)))); + if ((EBlockType)block_header.type != EBlockType::SlicerMetadata) + throw Slic3r::RuntimeError(format("Unable to find slicer metadata block in file %1%", filename)); + SlicerMetadataBlock slicer_metadata_block; + res = slicer_metadata_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error while reading file %1%: %2%", filename, std::string(translate_result(res)))); + + // extracts data from block + for (const auto& [key, value] : slicer_metadata_block.raw_data) { + this->set_deserialize(key, value, substitutions_ctxt); + } + + // Do legacy conversion on a completely loaded dictionary. + // Perform composite conversions, for example merging multiple keys into one key. + this->handle_legacy_composite(); return std::move(substitutions_ctxt.substitutions); } diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index ca0ef17..52b5438 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -1815,6 +1815,8 @@ public: // Close parameter, string value could be one of the list values. select_close, }; + static bool is_gui_type_enum_open(const GUIType gui_type) + { return gui_type == ConfigOptionDef::GUIType::i_enum_open || gui_type == ConfigOptionDef::GUIType::f_enum_open || gui_type == ConfigOptionDef::GUIType::select_open; } // Identifier of this option. It is stored here so that it is accessible through the by_serialization_key_ordinal map. t_config_option_key opt_key; @@ -1832,6 +1834,7 @@ public: // Create a default option to be inserted into a DynamicConfig. ConfigOption* create_default_option() const; + bool is_scalar() const { return (int(this->type) & int(coVectorType)) == 0; } template ConfigOption* load_option_from_archive(Archive &archive) const { if (this->nullable) { switch (this->type) { @@ -1902,6 +1905,7 @@ public: // Special values - "i_enum_open", "f_enum_open" to provide combo box for int or float selection, // "select_open" - to open a selection dialog (currently only a serial port selection). GUIType gui_type { GUIType::undefined }; + bool is_gui_type_enum_open() const { return is_gui_type_enum_open(this->gui_type); } // Usually empty. Otherwise "serialized" or "show_value" // The flags may be combined. // "serialized" - vector valued option is entered in a single edit field. Values are separated by a semicolon. @@ -1965,7 +1969,7 @@ public: void set_enum_values(GUIType gui_type, const std::initializer_list il) { this->enum_def_new(); - assert(gui_type == GUIType::i_enum_open || gui_type == GUIType::f_enum_open || gui_type == GUIType::select_open); + assert(is_gui_type_enum_open(gui_type)); this->gui_type = gui_type; enum_def->set_values(il); } @@ -2077,6 +2081,7 @@ public: out.push_back(kvp.first); return out; } + bool empty() const { return options.empty(); } // Iterate through all of the CLI options and write them to a stream. std::ostream& print_cli_help( @@ -2307,7 +2312,8 @@ public: // Loading a "will be one day a legacy format" of configuration stored into 3MF or AMF. // Accepts the same data as load_from_ini_string(), only with each configuration line possibly prefixed with a semicolon (G-code comment). ConfigSubstitutions load_from_ini_string_commented(std::string &&data, ForwardCompatibilitySubstitutionRule compatibility_rule); - ConfigSubstitutions load_from_gcode_file(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule); + ConfigSubstitutions load_from_gcode_file(const std::string &filename, ForwardCompatibilitySubstitutionRule compatibility_rule); + ConfigSubstitutions load_from_binary_gcode_file(const std::string& filename, ForwardCompatibilitySubstitutionRule compatibility_rule); ConfigSubstitutions load(const boost::property_tree::ptree &tree, ForwardCompatibilitySubstitutionRule compatibility_rule); void save(const std::string &file) const; diff --git a/src/libslic3r/CustomGCode.cpp b/src/libslic3r/CustomGCode.cpp index 2134377..5aebf8e 100644 --- a/src/libslic3r/CustomGCode.cpp +++ b/src/libslic3r/CustomGCode.cpp @@ -1,7 +1,7 @@ #include "CustomGCode.hpp" #include "Config.hpp" #include "GCode.hpp" -#include "GCodeWriter.hpp" +#include "GCode/GCodeWriter.hpp" namespace Slic3r { diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp index a8db9e4..0eddbcd 100644 --- a/src/libslic3r/CutSurface.cpp +++ b/src/libslic3r/CutSurface.cpp @@ -455,6 +455,7 @@ std::vector select_patches(const ProjectionDistances &best_distances, const SurfacePatches &patches, const ExPolygons &shapes, + const BoundingBox &shapes_bb, const ExPolygonsIndices &s2i, const VCutAOIs &cutAOIs, const CutMeshes &meshes, @@ -601,8 +602,7 @@ SurfaceCut Slic3r::cut_surface(const ExPolygons &shapes, // Use only outline points // for each point select best projection priv::ProjectionDistances best_projection = priv::choose_best_distance(distances, shapes, start, s2i, patches); - std::vector use_patch = priv::select_patches(best_projection, patches, - shapes, s2i,model_cuts, cgal_models, projection); + std::vector use_patch = priv::select_patches(best_projection, patches, shapes, shapes_bb, s2i, model_cuts, cgal_models, projection); SurfaceCut result = merge_patches(patches, use_patch); //*/ @@ -1913,6 +1913,26 @@ uint32_t priv::find_closest_point_index(const Point &p, const std::vector &mask) { SearchData sd = create_search_data(shapes, mask); + if (sd.tree.nodes().size() == 0){ + // no lines in expolygon, check whether exist point to start + double closest_square_distance = INFINITY; + uint32_t closest_id = -1; + for (uint32_t i = 0; i < mask.size(); i++) + if (mask[i]){ + ExPolygonsIndex ei = s2i.cvt(i); + const Point& s_p = ei.is_contour()? + shapes[ei.expolygons_index].contour[ei.point_index]: + shapes[ei.expolygons_index].holes[ei.hole_index()][ei.point_index]; + double square_distance = (p - s_p).cast().squaredNorm(); + if (closest_id >= mask.size() || + closest_square_distance > square_distance) { + closest_id = i; + closest_square_distance = square_distance; + } + } + assert(closest_id < mask.size()); + return closest_id; + } size_t line_idx = std::numeric_limits::max(); Vec2d hit_point; Vec2d p_d = p.cast(); @@ -2218,6 +2238,10 @@ priv::ProjectionDistances priv::choose_best_distance( // Select point from shapes(text contour) which is closest to center (all in 2d) uint32_t unfinished_index = find_closest_point_index(start, shapes, s2i, mask_distances); + assert(unfinished_index < s2i.get_count()); + if (unfinished_index >= s2i.get_count()) + // no point to select + return result; #ifdef DEBUG_OUTPUT_DIR Connections connections; @@ -3196,13 +3220,15 @@ std::vector priv::select_patches(const ProjectionDistances &best_distances const SurfacePatches &patches, const ExPolygons &shapes, + const BoundingBox &shapes_bb, const ExPolygonsIndices &s2i, const VCutAOIs &cutAOIs, const CutMeshes &meshes, const Project &projection) { // extension to cover numerical mistake made by back projection patch from 3d to 2d - const float extend_delta = 5.f / Emboss::SHAPE_SCALE; // [Font points scaled by Emboss::SHAPE_SCALE] + Point s = shapes_bb.size(); + const float extend_delta = (s.x() + s.y())/ float(2 * 100); // vector of patches for shape std::vector> used_shapes_patches(shapes.size()); diff --git a/src/libslic3r/CutUtils.cpp b/src/libslic3r/CutUtils.cpp index 0144f8a..c4721e5 100644 --- a/src/libslic3r/CutUtils.cpp +++ b/src/libslic3r/CutUtils.cpp @@ -391,6 +391,8 @@ static void distribute_modifiers_from_object(ModelObject* from_obj, const int in for (ModelVolume* vol : from_obj->volumes) if (!vol->is_model_part()) { + if (vol->cut_info.is_connector && !vol->cut_info.is_processed) + continue; auto bb = vol->mesh().transformed_bounding_box(inst_matrix * vol->get_matrix()); // Don't add modifiers which are not intersecting with solid parts if (obj1_bb.intersects(bb)) @@ -421,6 +423,7 @@ static void merge_solid_parts_inside_object(ModelObjectPtrs& objects) if (mv->is_model_part() && !mv->is_cut_connector()) mo->delete_volume(i); } + mo->sort_volumes(true); } } } @@ -460,6 +463,10 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe // Just add Upper and Lower objects to cut_object_ptrs post_process(upper, lower, cut_object_ptrs); + merge_solid_parts_inside_object(cut_object_ptrs); + + // replace initial objects in model with cut object + finalize(cut_object_ptrs); } else if (volumes.size() > cut_parts_cnt) { // Means that object is cut with connectors @@ -487,16 +494,16 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe post_process(upper, lower, cut_object_ptrs); // Add Dowel-connectors as separate objects to cut_object_ptrs - if (cut_connectors_obj.size() >= 3) - for (size_t id = 2; id < cut_connectors_obj.size(); id++) - cut_object_ptrs.push_back(cut_connectors_obj[id]); - } // Now merge all model parts together: merge_solid_parts_inside_object(cut_object_ptrs); finalize(cut_object_ptrs); + if (cut_connectors_obj.size() >= 3) + for (size_t id = 2; id < cut_connectors_obj.size(); id++) + m_model.add_object(*cut_connectors_obj[id]); + } return m_model.objects; } diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index 0e2e677..42de50e 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -1,5 +1,7 @@ +#include #include "Emboss.hpp" #include +#include #include #include #include @@ -23,18 +25,56 @@ // to get approx center of normal text line const double ASCENT_CENTER = 1/3.; // 0.5 is above small letter +// every glyph's shape point is divided by SHAPE_SCALE - increase precission of fixed point value +// stored in fonts (to be able represents curve by sequence of lines) +static constexpr double SHAPE_SCALE = 0.001; // SCALING_FACTOR promile is fine enough +static unsigned MAX_HEAL_ITERATION_OF_TEXT = 10; + using namespace Slic3r; using namespace Emboss; using fontinfo_opt = std::optional; -// for try approach to heal shape by Clipper::Closing -//#define HEAL_WITH_CLOSING +// NOTE: approach to heal shape by Clipper::Closing is not working // functionality to remove all spikes from shape +// Potentionaly useable for eliminate spike in layer //#define REMOVE_SPIKES +// function to remove useless islands and holes +// #define REMOVE_SMALL_ISLANDS +#ifdef REMOVE_SMALL_ISLANDS +namespace { void remove_small_islands(ExPolygons &shape, double minimal_area);} +#endif //REMOVE_SMALL_ISLANDS + +//#define VISUALIZE_HEAL +#ifdef VISUALIZE_HEAL +namespace { +// for debug purpose only +// NOTE: check scale when store svg !! +#include "libslic3r/SVG.hpp" // for visualize_heal +static std::string visualize_heal_svg_filepath = "C:/data/temp/heal.svg"; +void visualize_heal(const std::string &svg_filepath, const ExPolygons &expolygons) +{ + Points pts = to_points(expolygons); + BoundingBox bb(pts); + // double svg_scale = SHAPE_SCALE / unscale(1.); + // bb.scale(svg_scale); + SVG svg(svg_filepath, bb); + svg.draw(expolygons); + + Points duplicits = collect_duplicates(pts); + int black_size = std::max(bb.size().x(), bb.size().y()) / 20; + svg.draw(duplicits, "black", black_size); + + Slic3r::IntersectionsLines intersections_f = get_intersections(expolygons); + Points intersections = get_unique_intersections(intersections_f); + svg.draw(intersections, "red", black_size * 1.2); +} +} // namespace +#endif // VISUALIZE_HEAL + // do not expose out of this file stbtt_ data types -namespace priv{ +namespace{ using Polygon = Slic3r::Polygon; bool is_valid(const FontFile &font, unsigned int index); fontinfo_opt load_font_info(const unsigned char *data, unsigned int index = 0); @@ -44,8 +84,6 @@ std::optional get_glyph(const stbtt_fontinfo &font_info, int unicode_lett const Glyph* get_glyph(int unicode, const FontFile &font, const FontProp &font_prop, Glyphs &cache, fontinfo_opt &font_info_opt); -EmbossStyle create_style(std::wstring name, std::wstring path); - // scale and convert float to int coordinate Point to_point(const stbtt__point &point); @@ -53,27 +91,12 @@ Point to_point(const stbtt__point &point); void remove_bad(Polygons &polygons); void remove_bad(ExPolygons &expolygons); -// helpr for heal shape -// Return true when erase otherwise false -bool remove_same_neighbor(Polygon &points); -bool remove_same_neighbor(Polygons &polygons); -bool remove_same_neighbor(ExPolygons &expolygons); - // Try to remove self intersection by subtracting rect 2x2 px -bool remove_self_intersections(ExPolygons &shape, unsigned max_iteration = 10); ExPolygon create_bounding_rect(const ExPolygons &shape); -void remove_small_islands(ExPolygons &shape, double minimal_area); - -// NOTE: expolygons can't contain same_neighbor -Points collect_close_points(const ExPolygons &expolygons, double distance = .6); - // Heal duplicates points and self intersections bool heal_dupl_inter(ExPolygons &shape, unsigned max_iteration); -// for debug purpose -void visualize_heal(const std::string& svg_filepath, const ExPolygons &expolygons); - const Points pts_2x2({Point(0, 0), Point(1, 0), Point(1, 1), Point(0, 1)}); const Points pts_3x3({Point(-1, -1), Point(1, -1), Point(1, 1), Point(-1, 1)}); @@ -90,17 +113,17 @@ struct SpikeDesc /// /// Size of spike width after cut of the tip, has to be grater than 2.5 /// When spike has same or more pixels with width less than 1 pixel - SpikeDesc(double bevel_size, double pixel_spike_length = 6) - { + SpikeDesc(double bevel_size, double pixel_spike_length = 6): // create min angle given by spike_length // Use it as minimal height of 1 pixel base spike - double angle = 2. * atan2(pixel_spike_length, .5); // [rad] - cos_angle = std::fabs(cos(angle)); + cos_angle(std::fabs(std::cos( + /*angle*/ 2. * std::atan2(pixel_spike_length, .5) + ))), // When remove spike this angle is set. // Value must be grater than min_angle - half_bevel = bevel_size / 2; - } + half_bevel(bevel_size / 2) + {} }; // return TRUE when remove point. It could create polygon with 2 points. @@ -116,9 +139,9 @@ void remove_spikes(Polygons &polygons, const SpikeDesc &spike_desc); void remove_spikes(ExPolygons &expolygons, const SpikeDesc &spike_desc); #endif -}; - -bool priv::remove_when_spike(Polygon &polygon, size_t index, const SpikeDesc &spike_desc) { +// spike ... very sharp corner - when not removed cause iteration of heal process +// index ... index of duplicit point in polygon +bool remove_when_spike(Slic3r::Polygon &polygon, size_t index, const SpikeDesc &spike_desc) { std::optional add; bool do_erase = false; @@ -202,9 +225,10 @@ bool priv::remove_when_spike(Polygon &polygon, size_t index, const SpikeDesc &sp return false; } -void priv::remove_spikes_in_duplicates(ExPolygons &expolygons, const Points &duplicates) { - - auto check = [](Polygon &polygon, const Point &d) -> bool { +void remove_spikes_in_duplicates(ExPolygons &expolygons, const Points &duplicates) { + if (duplicates.empty()) + return; + auto check = [](Slic3r::Polygon &polygon, const Point &d) -> bool { double spike_bevel = 1 / SHAPE_SCALE; double spike_length = 5.; const static SpikeDesc sd(spike_bevel, spike_length); @@ -234,14 +258,14 @@ void priv::remove_spikes_in_duplicates(ExPolygons &expolygons, const Points &dup remove_bad(expolygons); } -bool priv::is_valid(const FontFile &font, unsigned int index) { +bool is_valid(const FontFile &font, unsigned int index) { if (font.data == nullptr) return false; if (font.data->empty()) return false; if (index >= font.infos.size()) return false; return true; } -fontinfo_opt priv::load_font_info( +fontinfo_opt load_font_info( const unsigned char *data, unsigned int index) { int font_offset = stbtt_GetFontOffsetForIndex(data, index); @@ -259,14 +283,14 @@ fontinfo_opt priv::load_font_info( return font_info; } -void priv::remove_bad(Polygons &polygons) { +void remove_bad(Polygons &polygons) { polygons.erase( std::remove_if(polygons.begin(), polygons.end(), [](const Polygon &p) { return p.size() < 3; }), polygons.end()); } -void priv::remove_bad(ExPolygons &expolygons) { +void remove_bad(ExPolygons &expolygons) { expolygons.erase( std::remove_if(expolygons.begin(), expolygons.end(), [](const ExPolygon &p) { return p.contour.size() < 3; }), @@ -275,104 +299,7 @@ void priv::remove_bad(ExPolygons &expolygons) { for (ExPolygon &expolygon : expolygons) remove_bad(expolygon.holes); } - -bool priv::remove_same_neighbor(Slic3r::Polygon &polygon) -{ - Points &points = polygon.points; - if (points.empty()) return false; - auto last = std::unique(points.begin(), points.end()); - - // remove first and last neighbor duplication - if (const Point& last_point = *(last - 1); - last_point == points.front()) { - --last; - } - - // no duplicits - if (last == points.end()) return false; - - points.erase(last, points.end()); - return true; -} - -bool priv::remove_same_neighbor(Polygons &polygons) { - if (polygons.empty()) return false; - bool exist = false; - for (Polygon& polygon : polygons) - exist |= remove_same_neighbor(polygon); - // remove empty polygons - polygons.erase( - std::remove_if(polygons.begin(), polygons.end(), - [](const Polygon &p) { return p.points.size() <= 2; }), - polygons.end()); - return exist; -} - -bool priv::remove_same_neighbor(ExPolygons &expolygons) { - if(expolygons.empty()) return false; - bool remove_from_holes = false; - bool remove_from_contour = false; - for (ExPolygon &expoly : expolygons) { - remove_from_contour |= remove_same_neighbor(expoly.contour); - remove_from_holes |= remove_same_neighbor(expoly.holes); - } - // Removing of expolygons without contour - if (remove_from_contour) - expolygons.erase( - std::remove_if(expolygons.begin(), expolygons.end(), - [](const ExPolygon &p) { return p.contour.points.size() <=2; }), - expolygons.end()); - return remove_from_holes || remove_from_contour; -} - -Points priv::collect_close_points(const ExPolygons &expolygons, double distance) { - if (expolygons.empty()) return {}; - if (distance < 0.) return {}; - - // IMPROVE: use int(insted of double) lines and tree - const ExPolygonsIndices ids(expolygons); - const std::vector lines = Slic3r::to_linesf(expolygons, ids.get_count()); - AABBTreeIndirect::Tree<2, double> tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); - // Result close points - Points res; - size_t point_index = 0; - auto collect_close = [&res, &point_index, &lines, &tree, &distance, &ids, &expolygons](const Points &pts) { - for (const Point &p : pts) { - Vec2d p_d = p.cast(); - std::vector close_lines = AABBTreeLines::all_lines_in_radius(lines, tree, p_d, distance); - for (size_t index : close_lines) { - // skip point neighbour lines indices - if (index == point_index) continue; - if (&p != &pts.front()) { - if (index == point_index - 1) continue; - } else if (index == (pts.size()-1)) continue; - - // do not doubled side point of segment - const ExPolygonsIndex id = ids.cvt(index); - const ExPolygon &expoly = expolygons[id.expolygons_index]; - const Polygon &poly = id.is_contour() ? expoly.contour : expoly.holes[id.hole_index()]; - const Points &poly_pts = poly.points; - const Point &line_a = poly_pts[id.point_index]; - const Point &line_b = (!ids.is_last_point(id)) ? poly_pts[id.point_index + 1] : poly_pts.front(); - assert(line_a == lines[index].a.cast()); - assert(line_b == lines[index].b.cast()); - if (p == line_a || p == line_b) continue; - res.push_back(p); - } - ++point_index; - } - }; - for (const ExPolygon &expoly : expolygons) { - collect_close(expoly.contour.points); - for (const Polygon &hole : expoly.holes) - collect_close(hole.points); - } - if (res.empty()) return {}; - std::sort(res.begin(), res.end()); - // only unique points - res.erase(std::unique(res.begin(), res.end()), res.end()); - return res; -} +} // end namespace bool Emboss::divide_segments_for_close_point(ExPolygons &expolygons, double distance) { @@ -380,7 +307,7 @@ bool Emboss::divide_segments_for_close_point(ExPolygons &expolygons, double dist if (distance < 0.) return false; // ExPolygons can't contain same neigbours - priv::remove_same_neighbor(expolygons); + remove_same_neighbor(expolygons); // IMPROVE: use int(insted of double) lines and tree const ExPolygonsIndices ids(expolygons); @@ -477,213 +404,241 @@ bool Emboss::divide_segments_for_close_point(ExPolygons &expolygons, double dist return true; } -bool priv::remove_self_intersections(ExPolygons &shape, unsigned max_iteration) { - if (shape.empty()) - return true; - - Pointfs intersections_f = intersection_points(shape); - if (intersections_f.empty()) - return true; - - // create loop permanent memory - Polygons holes; - Points intersections; - - while (--max_iteration) { - // convert intersections into Points - assert(intersections.empty()); - intersections.reserve(intersections_f.size()); - std::transform(intersections_f.begin(), intersections_f.end(), std::back_inserter(intersections), - [](const Vec2d &p) { return Point(std::floor(p.x()), std::floor(p.y())); }); - - // intersections should be unique poits - std::sort(intersections.begin(), intersections.end()); - auto it = std::unique(intersections.begin(), intersections.end()); - intersections.erase(it, intersections.end()); - - assert(holes.empty()); - holes.reserve(intersections.size()); - - // Fix self intersection in result by subtracting hole 2x2 - for (const Point &p : intersections) { - Polygon hole(priv::pts_2x2); - hole.translate(p); - holes.push_back(hole); - } - // Union of overlapped holes is not neccessary - // Clipper calculate winding number separately for each input parameter - // if (holes.size() > 1) holes = Slic3r::union_(holes); - shape = Slic3r::diff_ex(shape, holes, ApplySafetyOffset::Yes); - - // TODO: find where diff ex could create same neighbor - priv::remove_same_neighbor(shape); - - // find new intersections made by diff_ex - intersections_f = intersection_points(shape); - if (intersections_f.empty()) - return true; - else { - // clear permanent vectors - holes.clear(); - intersections.clear(); - } - } - assert(max_iteration == 0); - assert(!intersections_f.empty()); - return false; -} - -ExPolygons Emboss::heal_shape(const Polygons &shape) +HealedExPolygons Emboss::heal_polygons(const Polygons &shape, bool is_non_zero, unsigned int max_iteration) { + const double clean_distance = 1.415; // little grater than sqrt(2) + ClipperLib::PolyFillType fill_type = is_non_zero ? + ClipperLib::pftNonZero : ClipperLib::pftEvenOdd; + // When edit this code check that font 'ALIENATE.TTF' and glyph 'i' still work // fix of self intersections // http://www.angusj.com/delphi/clipper/documentation/Docs/Units/ClipperLib/Functions/SimplifyPolygon.htm - ClipperLib::Paths paths = ClipperLib::SimplifyPolygons(ClipperUtils::PolygonsProvider(shape), ClipperLib::pftNonZero); - const double clean_distance = 1.415; // little grater than sqrt(2) + ClipperLib::Paths paths = ClipperLib::SimplifyPolygons(ClipperUtils::PolygonsProvider(shape), fill_type); ClipperLib::CleanPolygons(paths, clean_distance); Polygons polygons = to_polygons(paths); - polygons.erase(std::remove_if(polygons.begin(), polygons.end(), [](const Polygon &p) { return p.size() < 3; }), polygons.end()); - + polygons.erase(std::remove_if(polygons.begin(), polygons.end(), + [](const Polygon &p) { return p.size() < 3; }), polygons.end()); + + if (polygons.empty()) + return {{}, false}; + // Do not remove all duplicates but do it better way // Overlap all duplicit points by rectangle 3x3 Points duplicits = collect_duplicates(to_points(polygons)); if (!duplicits.empty()) { polygons.reserve(polygons.size() + duplicits.size()); for (const Point &p : duplicits) { - Polygon rect_3x3(priv::pts_3x3); + Polygon rect_3x3(pts_3x3); rect_3x3.translate(p); polygons.push_back(rect_3x3); } } - - // TrueTypeFonts use non zero winding number - // https://docs.microsoft.com/en-us/typography/opentype/spec/ttch01 - // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM01/Chap1.html - ExPolygons res = Slic3r::union_ex(polygons, ClipperLib::pftNonZero); - heal_shape(res); - return res; + ExPolygons res = Slic3r::union_ex(polygons, fill_type); + bool is_healed = heal_expolygons(res, max_iteration); + return {res, is_healed}; } -#include "libslic3r/SVG.hpp" -void priv::visualize_heal(const std::string &svg_filepath, const ExPolygons &expolygons) { - Points pts = to_points(expolygons); - BoundingBox bb(pts); - //double svg_scale = SHAPE_SCALE / unscale(1.); - // bb.scale(svg_scale); - SVG svg(svg_filepath, bb); - svg.draw(expolygons); - - Points duplicits = collect_duplicates(pts); - svg.draw(duplicits, "black", 7 / SHAPE_SCALE); - Pointfs intersections_f = intersection_points(expolygons); - Points intersections; - intersections.reserve(intersections_f.size()); - std::transform(intersections_f.begin(), intersections_f.end(), std::back_inserter(intersections), - [](const Vec2d &p) { return p.cast(); }); - svg.draw(intersections, "red", 8 / SHAPE_SCALE); -} - -bool Emboss::heal_shape(ExPolygons &shape, unsigned max_iteration) +bool Emboss::heal_expolygons(ExPolygons &shape, unsigned max_iteration) { - return priv::heal_dupl_inter(shape, max_iteration); + return ::heal_dupl_inter(shape, max_iteration); } -#ifndef HEAL_WITH_CLOSING -bool priv::heal_dupl_inter(ExPolygons &shape, unsigned max_iteration) +namespace { + +Points get_unique_intersections(const Slic3r::IntersectionsLines &intersections) +{ + Points result; + if (intersections.empty()) + return result; + + // convert intersections into Points + result.reserve(intersections.size()); + std::transform(intersections.begin(), intersections.end(), std::back_inserter(result), + [](const Slic3r::IntersectionLines &i) { return Point( + std::floor(i.intersection.x()), + std::floor(i.intersection.y())); + }); + // intersections should be unique poits + std::sort(result.begin(), result.end()); + auto it = std::unique(result.begin(), result.end()); + result.erase(it, result.end()); + return result; +} + +Polygons get_holes_with_points(const Polygons &holes, const Points &points) +{ + Polygons result; + for (const Slic3r::Polygon &hole : holes) + for (const Point &p : points) + for (const Point &h : hole) + if (p == h) { + result.push_back(hole); + break; + } + return result; +} + +/// +/// Fill holes which create duplicits or intersections +/// When healing hole creates trouble in shape again try to heal by an union instead of diff_ex +/// +/// Holes which was substracted from shape previous +/// Current duplicates in shape +/// Current intersections in shape +/// Partialy healed shape[could be modified] +/// True when modify shape otherwise False +bool fill_trouble_holes(const Polygons &holes, const Points &duplicates, const Points &intersections, ExPolygons &shape) +{ + if (holes.empty()) + return false; + if (duplicates.empty() && intersections.empty()) + return false; + + Polygons fill = get_holes_with_points(holes, duplicates); + append(fill, get_holes_with_points(holes, intersections)); + if (fill.empty()) + return false; + + shape = union_ex(shape, fill); + return true; +} + +// extend functionality from Points.cpp --> collect_duplicates +// with address of duplicated points +struct Duplicate { + Point point; + std::vector indices; +}; +using Duplicates = std::vector; +Duplicates collect_duplicit_indices(const ExPolygons &expoly) +{ + Points pts = to_points(expoly); + + // initialize original index locations + std::vector idx(pts.size()); + std::iota(idx.begin(), idx.end(), 0); + std::sort(idx.begin(), idx.end(), + [&pts](uint32_t i1, uint32_t i2) { return pts[i1] < pts[i2]; }); + + Duplicates result; + const Point *prev = &pts[idx.front()]; + for (size_t i = 1; i < idx.size(); ++i) { + uint32_t index = idx[i]; + const Point *act = &pts[index]; + if (*prev == *act) { + // duplicit point + if (!result.empty() && result.back().point == *act) { + // more than 2 points with same coordinate + result.back().indices.push_back(index); + } else { + uint32_t prev_index = idx[i-1]; + result.push_back({*act, {prev_index, index}}); + } + continue; + } + prev = act; + } + return result; +} + +Points get_points(const Duplicates& duplicate_indices) +{ + Points result; + if (duplicate_indices.empty()) + return result; + + // convert intersections into Points + result.reserve(duplicate_indices.size()); + std::transform(duplicate_indices.begin(), duplicate_indices.end(), std::back_inserter(result), + [](const Duplicate &d) { return d.point; }); + return result; +} + +bool heal_dupl_inter(ExPolygons &shape, unsigned max_iteration) { if (shape.empty()) return true; + remove_same_neighbor(shape); // create loop permanent memory Polygons holes; - Points intersections; - while (--max_iteration) { - priv::remove_same_neighbor(shape); - Pointfs intersections_f = intersection_points(shape); - - // convert intersections into Points - assert(intersections.empty()); - intersections.reserve(intersections_f.size()); - std::transform(intersections_f.begin(), intersections_f.end(), std::back_inserter(intersections), - [](const Vec2d &p) { return Point(std::floor(p.x()), std::floor(p.y())); }); - - // intersections should be unique poits - std::sort(intersections.begin(), intersections.end()); - auto it = std::unique(intersections.begin(), intersections.end()); - intersections.erase(it, intersections.end()); - - Points duplicates = collect_duplicates(to_points(shape)); - // duplicates are already uniqua and sorted - + while (--max_iteration) { + Duplicates duplicate_indices = collect_duplicit_indices(shape); + //Points duplicates = collect_duplicates(to_points(shape)); + IntersectionsLines intersections = get_intersections(shape); + // Check whether shape is already healed - if (intersections.empty() && duplicates.empty()) + if (intersections.empty() && duplicate_indices.empty()) return true; - assert(holes.empty()); - holes.reserve(intersections.size() + duplicates.size()); + Points duplicate_points = get_points(duplicate_indices); + Points intersection_points = get_unique_intersections(intersections); - remove_spikes_in_duplicates(shape, duplicates); + if (fill_trouble_holes(holes, duplicate_points, intersection_points, shape)) { + holes.clear(); + continue; + } + + holes.clear(); + holes.reserve(intersections.size() + duplicate_points.size()); + + remove_spikes_in_duplicates(shape, duplicate_points); // Fix self intersection in result by subtracting hole 2x2 - for (const Point &p : intersections) { - Polygon hole(priv::pts_2x2); + for (const Point &p : intersection_points) { + Polygon hole(pts_2x2); hole.translate(p); holes.push_back(hole); } // Fix duplicit points by hole 3x3 around duplicit point - for (const Point &p : duplicates) { - Polygon hole(priv::pts_3x3); + for (const Point &p : duplicate_points) { + Polygon hole(pts_3x3); hole.translate(p); holes.push_back(hole); } - shape = Slic3r::diff_ex(shape, holes, ApplySafetyOffset::Yes); - - // prepare for next loop - holes.clear(); - intersections.clear(); + shape = Slic3r::diff_ex(shape, holes, ApplySafetyOffset::No); + // ApplySafetyOffset::Yes is incompatible with function fill_trouble_holes } - //priv::visualize_heal("C:/data/temp/heal.svg", shape); - assert(false); - shape = {priv::create_bounding_rect(shape)}; - return false; -} -#else -bool priv::heal_dupl_inter(ExPolygons &shape, unsigned max_iteration) -{ - priv::remove_same_neighbor(shape); + // Create partialy healed output + Duplicates duplicates = collect_duplicit_indices(shape); + IntersectionsLines intersections = get_intersections(shape); + if (duplicates.empty() && intersections.empty()){ + // healed in the last loop + return true; + } + + #ifdef VISUALIZE_HEAL + visualize_heal(visualize_heal_svg_filepath, shape); + #endif // VISUALIZE_HEAL - const float delta = 2.f; - const ClipperLib::JoinType joinType = ClipperLib::JoinType::jtRound; + assert(false); // Can not heal this shape + // investigate how to heal better way - // remove double points - while (max_iteration) { - --max_iteration; - - // if(!priv::remove_self_intersections(shape, max_iteration)) break; - shape = Slic3r::union_ex(shape); - shape = Slic3r::closing_ex(shape, delta, joinType); - - // double minimal_area = 1000; - // priv::remove_small_islands(shape, minimal_area); - - // check that duplicates and intersections do NOT exists - Points duplicits = collect_duplicates(to_points(shape)); - Pointfs intersections_f = intersection_points(shape); - if (duplicits.empty() && intersections_f.empty()) - return true; + ExPolygonsIndices ei(shape); + std::vector is_healed(shape.size(), {true}); + for (const Duplicate &duplicate : duplicates){ + for (uint32_t i : duplicate.indices) + is_healed[ei.cvt(i).expolygons_index] = false; + } + for (const IntersectionLines &intersection : intersections) { + is_healed[ei.cvt(intersection.line_index1).expolygons_index] = false; + is_healed[ei.cvt(intersection.line_index2).expolygons_index] = false; } - // priv::visualize_heal("C:/data/temp/heal.svg", shape); - assert(false); - shape = {priv::create_bounding_rect(shape)}; + for (size_t shape_index = 0; shape_index < shape.size(); shape_index++) { + if (!is_healed[shape_index]) { + // exchange non healed expoly with bb rect + ExPolygon &expoly = shape[shape_index]; + expoly = create_bounding_rect({expoly}); + } + } return false; } -#endif // !HEAL_WITH_CLOSING -ExPolygon priv::create_bounding_rect(const ExPolygons &shape) { +ExPolygon create_bounding_rect(const ExPolygons &shape) { BoundingBox bb = get_extents(shape); Point size = bb.size(); if (size.x() < 10) @@ -707,7 +662,8 @@ ExPolygon priv::create_bounding_rect(const ExPolygons &shape) { return ExPolygon(rect, hole); } -void priv::remove_small_islands(ExPolygons &expolygons, double minimal_area) { +#ifdef REMOVE_SMALL_ISLANDS +void remove_small_islands(ExPolygons &expolygons, double minimal_area) { if (expolygons.empty()) return; @@ -724,8 +680,9 @@ void priv::remove_small_islands(ExPolygons &expolygons, double minimal_area) { holes.erase(it, holes.end()); } } +#endif // REMOVE_SMALL_ISLANDS -std::optional priv::get_glyph(const stbtt_fontinfo &font_info, int unicode_letter, float flatness) +std::optional get_glyph(const stbtt_fontinfo &font_info, int unicode_letter, float flatness) { int glyph_index = stbtt_FindGlyphIndex(&font_info, unicode_letter); if (glyph_index == 0) { @@ -783,12 +740,18 @@ std::optional priv::get_glyph(const stbtt_fontinfo &font_info, int unicod std::reverse(pts.begin(), pts.end()); glyph_polygons.emplace_back(pts); } - if (!glyph_polygons.empty()) - glyph.shape = Emboss::heal_shape(glyph_polygons); + if (!glyph_polygons.empty()) { + unsigned max_iteration = 10; + // TrueTypeFonts use non zero winding number + // https://docs.microsoft.com/en-us/typography/opentype/spec/ttch01 + // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM01/Chap1.html + bool is_non_zero = true; + glyph.shape = Emboss::heal_polygons(glyph_polygons, is_non_zero, max_iteration); + } return glyph; } -const Glyph* priv::get_glyph( +const Glyph* get_glyph( int unicode, const FontFile & font, const FontProp & font_prop, @@ -805,7 +768,7 @@ const Glyph* priv::get_glyph( if (!font_info_opt.has_value()) { - font_info_opt = priv::load_font_info(font.data->data(), font_index); + font_info_opt = load_font_info(font.data->data(), font_index); // can load font info? if (!font_info_opt.has_value()) return nullptr; } @@ -815,27 +778,24 @@ const Glyph* priv::get_glyph( // Fix for very small flatness because it create huge amount of points from curve if (flatness < RESOLUTION) flatness = RESOLUTION; - std::optional glyph_opt = - priv::get_glyph(*font_info_opt, unicode, flatness); + std::optional glyph_opt = get_glyph(*font_info_opt, unicode, flatness); // IMPROVE: multiple loadig glyph without data // has definition inside of font? if (!glyph_opt.has_value()) return nullptr; + Glyph &glyph = *glyph_opt; if (font_prop.char_gap.has_value()) - glyph_opt->advance_width += *font_prop.char_gap; + glyph.advance_width += *font_prop.char_gap; // scale glyph size - glyph_opt->advance_width = - static_cast(glyph_opt->advance_width / SHAPE_SCALE); - glyph_opt->left_side_bearing = - static_cast(glyph_opt->left_side_bearing / SHAPE_SCALE); + glyph.advance_width = static_cast(glyph.advance_width / SHAPE_SCALE); + glyph.left_side_bearing = static_cast(glyph.left_side_bearing / SHAPE_SCALE); - if (!glyph_opt->shape.empty()) { + if (!glyph.shape.empty()) { if (font_prop.boldness.has_value()) { - float delta = *font_prop.boldness / SHAPE_SCALE / - font_prop.size_in_mm; - glyph_opt->shape = Slic3r::union_ex(offset_ex(glyph_opt->shape, delta)); + float delta = static_cast(*font_prop.boldness / SHAPE_SCALE / font_prop.size_in_mm); + glyph.shape = Slic3r::union_ex(offset_ex(glyph.shape, delta)); } if (font_prop.skew.has_value()) { double ratio = *font_prop.skew; @@ -843,34 +803,38 @@ const Glyph* priv::get_glyph( for (Slic3r::Point &p : polygon.points) p.x() += static_cast(std::round(p.y() * ratio)); }; - for (ExPolygon &expolygon : glyph_opt->shape) { + for (ExPolygon &expolygon : glyph.shape) { skew(expolygon.contour); for (Polygon &hole : expolygon.holes) skew(hole); } } } - auto it = cache.insert({unicode, std::move(*glyph_opt)}); - assert(it.second); - return &it.first->second; + auto [it, success] = cache.try_emplace(unicode, std::move(glyph)); + assert(success); + return &it->second; } -EmbossStyle priv::create_style(std::wstring name, std::wstring path) { - return { boost::nowide::narrow(name.c_str()), - boost::nowide::narrow(path.c_str()), - EmbossStyle::Type::file_path, FontProp() }; -} - -Point priv::to_point(const stbtt__point &point) { +Point to_point(const stbtt__point &point) { return Point(static_cast(std::round(point.x / SHAPE_SCALE)), static_cast(std::round(point.y / SHAPE_SCALE))); } +} // namespace + #ifdef _WIN32 #include #include #include #include +namespace { +EmbossStyle create_style(const std::wstring& name, const std::wstring& path) { + return { boost::nowide::narrow(name.c_str()), + boost::nowide::narrow(path.c_str()), + EmbossStyle::Type::file_path, FontProp() }; +} +} // namespace + // Get system font file path std::optional Emboss::get_font_path(const std::wstring &font_face_name) { @@ -994,7 +958,7 @@ EmbossStyles Emboss::get_font_list_by_register() { if (pos >= font_name_w.size()) continue; // remove TrueType text from name font_name_w = std::wstring(font_name_w, 0, pos); - font_list.emplace_back(priv::create_style(font_name_w, path_w)); + font_list.emplace_back(create_style(font_name_w, path_w)); } while (result != ERROR_NO_MORE_ITEMS); delete[] font_name; delete[] fileTTF_name; @@ -1029,7 +993,7 @@ EmbossStyles Emboss::get_font_list_by_enumeration() { EmbossStyles font_list; for (const std::wstring &font_name : font_names) { - font_list.emplace_back(priv::create_style(font_name, L"")); + font_list.emplace_back(create_style(font_name, L"")); } return font_list; } @@ -1051,7 +1015,7 @@ EmbossStyles Emboss::get_font_list_by_folder() { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue; std::wstring file_name(fd.cFileName); // TODO: find font name instead of filename - result.emplace_back(priv::create_style(file_name, search_dir + file_name)); + result.emplace_back(create_style(file_name, search_dir + file_name)); } while (::FindNextFile(hFind, &fd)); ::FindClose(hFind); } @@ -1085,7 +1049,7 @@ std::unique_ptr Emboss::create_font_file( std::vector infos; infos.reserve(c_size); for (unsigned int i = 0; i < c_size; ++i) { - auto font_info = priv::load_font_info(data->data(), i); + auto font_info = load_font_info(data->data(), i); if (!font_info.has_value()) return nullptr; const stbtt_fontinfo *info = &(*font_info); @@ -1205,16 +1169,16 @@ std::optional Emboss::letter2glyph(const FontFile &font, int letter, float flatness) { - if (!priv::is_valid(font, font_index)) return {}; - auto font_info_opt = priv::load_font_info(font.data->data(), font_index); + if (!is_valid(font, font_index)) return {}; + auto font_info_opt = load_font_info(font.data->data(), font_index); if (!font_info_opt.has_value()) return {}; - return priv::get_glyph(*font_info_opt, letter, flatness); + return get_glyph(*font_info_opt, letter, flatness); } const FontFile::Info &Emboss::get_font_info(const FontFile &font, const FontProp &prop) { unsigned int font_index = prop.collection_number.value_or(0); - assert(priv::is_valid(font, font_index)); + assert(is_valid(font, font_index)); return font.infos[font_index]; } @@ -1245,7 +1209,7 @@ ExPolygons letter2shapes( if (letter == '\t') { // '\t' = 4*space => same as imgui const int count_spaces = 4; - const Glyph *space = priv::get_glyph(int(' '), font, font_prop, cache, font_info_cache); + const Glyph *space = get_glyph(int(' '), font, font_prop, cache, font_info_cache); if (space == nullptr) return {}; cursor.x() += count_spaces * space->advance_width; @@ -1258,7 +1222,7 @@ ExPolygons letter2shapes( auto it = cache.find(unicode); // Create glyph from font file and cache it - const Glyph *glyph_ptr = (it != cache.end()) ? &it->second : priv::get_glyph(unicode, font, font_prop, cache, font_info_cache); + const Glyph *glyph_ptr = (it != cache.end()) ? &it->second : get_glyph(unicode, font, font_prop, cache, font_info_cache); if (glyph_ptr == nullptr) return {}; @@ -1277,20 +1241,62 @@ ExPolygons letter2shapes( const int CANCEL_CHECK = 10; } // namespace -ExPolygons Emboss::text2shapes(FontFileWithCache &font_with_cache, const char *text, const FontProp &font_prop, const std::function& was_canceled) +namespace { +HealedExPolygons union_with_delta(const ExPolygonsWithIds &shapes, float delta, unsigned max_heal_iteration) +{ + // unify to one expolygons + ExPolygons expolygons; + for (const ExPolygonsWithId &shape : shapes) { + if (shape.expoly.empty()) + continue; + expolygons_append(expolygons, offset_ex(shape.expoly, delta)); + } + ExPolygons result = union_ex(expolygons); + result = offset_ex(result, -delta); + bool is_healed = heal_expolygons(result, max_heal_iteration); + return {result, is_healed}; +} +} // namespace + +ExPolygons Slic3r::union_with_delta(EmbossShape &shape, float delta, unsigned max_heal_iteration) +{ + if (!shape.final_shape.expolygons.empty()) + return shape.final_shape; + + shape.final_shape = ::union_with_delta(shape.shapes_with_ids, delta, max_heal_iteration); + for (const ExPolygonsWithId &e : shape.shapes_with_ids) + if (!e.is_healed) + shape.final_shape.is_healed = false; + return shape.final_shape.expolygons; +} + +void Slic3r::translate(ExPolygonsWithIds &expolygons_with_ids, const Point &p) +{ + for (ExPolygonsWithId &expolygons_with_id : expolygons_with_ids) + translate(expolygons_with_id.expoly, p); +} + +BoundingBox Slic3r::get_extents(const ExPolygonsWithIds &expolygons_with_ids) +{ + BoundingBox bb; + for (const ExPolygonsWithId &expolygons_with_id : expolygons_with_ids) + bb.merge(get_extents(expolygons_with_id.expoly)); + return bb; +} + +void Slic3r::center(ExPolygonsWithIds &e) +{ + BoundingBox bb = get_extents(e); + translate(e, -bb.center()); +} + +HealedExPolygons Emboss::text2shapes(FontFileWithCache &font_with_cache, const char *text, const FontProp &font_prop, const std::function& was_canceled) { std::wstring text_w = boost::nowide::widen(text); - std::vector vshapes = text2vshapes(font_with_cache, text_w, font_prop, was_canceled); - // unify to one expolygon - ExPolygons result; - for (ExPolygons &shapes : vshapes) { - if (shapes.empty()) - continue; - expolygons_append(result, std::move(shapes)); - } - result = Slic3r::union_ex(result); - heal_shape(result); - return result; + ExPolygonsWithIds vshapes = text2vshapes(font_with_cache, text_w, font_prop, was_canceled); + + float delta = static_cast(1. / SHAPE_SCALE); + return ::union_with_delta(vshapes, delta, MAX_HEAL_ITERATION_OF_TEXT); } namespace { @@ -1302,21 +1308,21 @@ namespace { /// To detect end of lines - to be able horizontal center the line /// Containe Horizontal and vertical alignment /// Needed for scale and font size -void align_shape(std::vector &shapes, const std::wstring &text, const FontProp &prop, const FontFile &font); +void align_shape(ExPolygonsWithIds &shapes, const std::wstring &text, const FontProp &prop, const FontFile &font); } -std::vector Emboss::text2vshapes(FontFileWithCache &font_with_cache, const std::wstring& text, const FontProp &font_prop, const std::function& was_canceled){ +ExPolygonsWithIds Emboss::text2vshapes(FontFileWithCache &font_with_cache, const std::wstring& text, const FontProp &font_prop, const std::function& was_canceled){ assert(font_with_cache.has_value()); const FontFile &font = *font_with_cache.font_file; unsigned int font_index = font_prop.collection_number.value_or(0); - if (!priv::is_valid(font, font_index)) + if (!is_valid(font, font_index)) return {}; unsigned counter = 0; Point cursor(0, 0); fontinfo_opt font_info_cache; - std::vector result; + ExPolygonsWithIds result; result.reserve(text.size()); for (wchar_t letter : text) { if (++counter == CANCEL_CHECK) { @@ -1324,7 +1330,8 @@ std::vector Emboss::text2vshapes(FontFileWithCache &font_with_cache, if (was_canceled()) return {}; } - result.emplace_back(letter2shapes(letter, cursor, font_with_cache, font_prop, font_info_cache)); + unsigned id = static_cast(letter); + result.push_back({id, letter2shapes(letter, cursor, font_with_cache, font_prop, font_info_cache)}); } align_shape(result, text, font_prop, font); @@ -1365,8 +1372,14 @@ unsigned Emboss::get_count_lines(const std::string &text) return get_count_lines(ws); } -void Emboss::apply_transformation(const FontProp &font_prop, Transform3d &transformation){ - apply_transformation(font_prop.angle, font_prop.distance, transformation); +unsigned Emboss::get_count_lines(const ExPolygonsWithIds &shapes) { + if (shapes.empty()) + return 0; // no glyphs + unsigned result = 1; // one line is minimum + for (const ExPolygonsWithId &shape_id : shapes) + if (shape_id.id == ENTER_UNICODE) + ++result; + return result; } void Emboss::apply_transformation(const std::optional& angle, const std::optional& distance, Transform3d &transformation) { @@ -1383,7 +1396,7 @@ void Emboss::apply_transformation(const std::optional& angle, const std:: bool Emboss::is_italic(const FontFile &font, unsigned int font_index) { if (font_index >= font.infos.size()) return false; - fontinfo_opt font_info_opt = priv::load_font_info(font.data->data(), font_index); + fontinfo_opt font_info_opt = load_font_info(font.data->data(), font_index); if (!font_info_opt.has_value()) return false; stbtt_fontinfo *info = &(*font_info_opt); @@ -1423,14 +1436,14 @@ std::string Emboss::create_range_text(const std::string &text, unsigned int font_index, bool *exist_unknown) { - if (!priv::is_valid(font, font_index)) return {}; + if (!is_valid(font, font_index)) return {}; std::wstring ws = boost::nowide::widen(text); // need remove symbols not contained in font std::sort(ws.begin(), ws.end()); - auto font_info_opt = priv::load_font_info(font.data->data(), 0); + auto font_info_opt = load_font_info(font.data->data(), 0); if (!font_info_opt.has_value()) return {}; const stbtt_fontinfo *font_info = &(*font_info_opt); @@ -1459,7 +1472,7 @@ std::string Emboss::create_range_text(const std::string &text, return boost::nowide::narrow(ws); } -double Emboss::get_shape_scale(const FontProp &fp, const FontFile &ff) +double Emboss::get_text_shape_scale(const FontProp &fp, const FontFile &ff) { const FontFile::Info &info = get_font_info(ff, fp); double scale = fp.size_in_mm / (double) info.unit_per_em; @@ -1467,7 +1480,7 @@ double Emboss::get_shape_scale(const FontProp &fp, const FontFile &ff) return scale * SHAPE_SCALE; } -namespace priv { +namespace { void add_quad(uint32_t i1, uint32_t i2, @@ -1608,7 +1621,7 @@ indexed_triangle_set polygons2model_duplicit( } return result; } -} // namespace priv +} // namespace indexed_triangle_set Emboss::polygons2model(const ExPolygons &shape2d, const IProjection &projection) @@ -1616,16 +1629,13 @@ indexed_triangle_set Emboss::polygons2model(const ExPolygons &shape2d, Points points = to_points(shape2d); Points duplicits = collect_duplicates(points); return (duplicits.empty()) ? - priv::polygons2model_unique(shape2d, projection, points) : - priv::polygons2model_duplicit(shape2d, projection, points, duplicits); + polygons2model_unique(shape2d, projection, points) : + polygons2model_duplicit(shape2d, projection, points, duplicits); } std::pair Emboss::ProjectZ::create_front_back(const Point &p) const { - Vec3d front( - p.x() * SHAPE_SCALE, - p.y() * SHAPE_SCALE, - 0.); + Vec3d front(p.x(), p.y(), 0.); return std::make_pair(front, project(front)); } @@ -1637,8 +1647,7 @@ Vec3d Emboss::ProjectZ::project(const Vec3d &point) const } std::optional Emboss::ProjectZ::unproject(const Vec3d &p, double *depth) const { - if (depth != nullptr) *depth /= SHAPE_SCALE; - return Vec2d(p.x() / SHAPE_SCALE, p.y() / SHAPE_SCALE); + return Vec2d(p.x(), p.y()); } @@ -1668,23 +1677,21 @@ std::optional Emboss::calc_up(const Transform3d &tr, double up_limit) Vec3d normal = tr_linear.col(2); // scaled matrix has base with different size normal.normalize(); - Vec3d suggested = suggest_up(normal); + Vec3d suggested = suggest_up(normal, up_limit); assert(is_approx(suggested.squaredNorm(), 1.)); Vec3d up = tr_linear.col(1); // tr * UnitY() - up.normalize(); - - double dot = suggested.dot(up); - if (dot >= 1. || dot <= -1.) - return {}; // zero angle - + up.normalize(); Matrix3d m; m.row(0) = up; m.row(1) = suggested; m.row(2) = normal; double det = m.determinant(); - - return -atan2(det, dot); + double dot = suggested.dot(up); + double res = -atan2(det, dot); + if (is_approx(res, 0.)) + return {}; + return res; } Transform3d Emboss::create_transformation_onto_surface(const Vec3d &position, @@ -1965,7 +1972,7 @@ int32_t get_align_x_offset(FontProp::HorizontalAlign align, const BoundingBox &s return 0; } -void align_shape(std::vector &shapes, const std::wstring &text, const FontProp &prop, const FontFile &font) +void align_shape(ExPolygonsWithIds &shapes, const std::wstring &text, const FontProp &prop, const FontFile &font) { // Shapes have to match letters in text assert(shapes.size() == text.length()); @@ -1974,22 +1981,22 @@ void align_shape(std::vector &shapes, const std::wstring &text, cons int y_offset = get_align_y_offset(prop.align.second, count_lines, font, prop); // Speed up for left aligned text - //if (prop.align.first == FontProp::HorizontalAlign::left){ - // // already horizontaly aligned - // for (ExPolygons shape : shapes) - // for (ExPolygon &s : shape) - // s.translate(Point(0, y_offset)); - // return; - //} + if (prop.align.first == FontProp::HorizontalAlign::left){ + // already horizontaly aligned + for (ExPolygonsWithId& shape : shapes) + for (ExPolygon &s : shape.expoly) + s.translate(Point(0, y_offset)); + return; + } BoundingBox shape_bb; - for (const ExPolygons& shape: shapes) - shape_bb.merge(get_extents(shape)); + for (const ExPolygonsWithId& shape: shapes) + shape_bb.merge(get_extents(shape.expoly)); auto get_line_bb = [&](size_t j) { BoundingBox line_bb; for (; j < text.length() && text[j] != '\n'; ++j) - line_bb.merge(get_extents(shapes[j])); + line_bb.merge(get_extents(shapes[j].expoly)); return line_bb; }; @@ -2003,7 +2010,7 @@ void align_shape(std::vector &shapes, const std::wstring &text, cons offset.x() = get_align_x_offset(prop.align.first, shape_bb, get_line_bb(i + 1)); continue; } - ExPolygons &shape = shapes[i]; + ExPolygons &shape = shapes[i].expoly; for (ExPolygon &s : shape) s.translate(offset); } @@ -2012,13 +2019,13 @@ void align_shape(std::vector &shapes, const std::wstring &text, cons double Emboss::get_align_y_offset_in_mm(FontProp::VerticalAlign align, unsigned count_lines, const FontFile &ff, const FontProp &fp){ float offset_in_font_point = get_align_y_offset(align, count_lines, ff, fp); - double scale = get_shape_scale(fp, ff); + double scale = get_text_shape_scale(fp, ff); return scale * offset_in_font_point; } #ifdef REMOVE_SPIKES #include -void priv::remove_spikes(Polygon &polygon, const SpikeDesc &spike_desc) +void remove_spikes(Polygon &polygon, const SpikeDesc &spike_desc) { enum class Type { add, // Move with point B on A-side and add new point on C-side @@ -2155,14 +2162,14 @@ void priv::remove_spikes(Polygon &polygon, const SpikeDesc &spike_desc) } } -void priv::remove_spikes(Polygons &polygons, const SpikeDesc &spike_desc) +void remove_spikes(Polygons &polygons, const SpikeDesc &spike_desc) { for (Polygon &polygon : polygons) remove_spikes(polygon, spike_desc); remove_bad(polygons); } -void priv::remove_spikes(ExPolygons &expolygons, const SpikeDesc &spike_desc) +void remove_spikes(ExPolygons &expolygons, const SpikeDesc &spike_desc) { for (ExPolygon &expolygon : expolygons) { remove_spikes(expolygon.contour, spike_desc); @@ -2171,4 +2178,4 @@ void priv::remove_spikes(ExPolygons &expolygons, const SpikeDesc &spike_desc) remove_bad(expolygons); } -#endif // REMOVE_SPIKES \ No newline at end of file +#endif // REMOVE_SPIKES diff --git a/src/libslic3r/Emboss.hpp b/src/libslic3r/Emboss.hpp index b6cdcab..9214860 100644 --- a/src/libslic3r/Emboss.hpp +++ b/src/libslic3r/Emboss.hpp @@ -8,6 +8,7 @@ #include // indexed_triangle_set #include "Polygon.hpp" #include "ExPolygon.hpp" +#include "EmbossShape.hpp" // ExPolygonsWithIds #include "BoundingBox.hpp" #include "TextConfiguration.hpp" @@ -21,7 +22,8 @@ namespace Emboss { // every glyph's shape point is divided by SHAPE_SCALE - increase precission of fixed point value // stored in fonts (to be able represents curve by sequence of lines) - static constexpr double SHAPE_SCALE = 0.001; // SCALING_FACTOR promile is fine enough + static const float UNION_DELTA = 50.0f; // [approx in nano meters depends on volume scale] + static const unsigned UNION_MAX_ITERATIN = 10; // [count] /// /// Collect fonts registred inside OS @@ -152,12 +154,14 @@ namespace Emboss /// User defined property of the font /// Way to interupt processing /// Inner polygon cw(outer ccw) - ExPolygons text2shapes (FontFileWithCache &font, const char *text, const FontProp &font_prop, const std::function &was_canceled = []() {return false;}); - std::vector text2vshapes(FontFileWithCache &font, const std::wstring& text, const FontProp &font_prop, const std::function& was_canceled = []() {return false;}); + HealedExPolygons text2shapes (FontFileWithCache &font, const char *text, const FontProp &font_prop, const std::function &was_canceled = []() {return false;}); + ExPolygonsWithIds text2vshapes(FontFileWithCache &font, const std::wstring& text, const FontProp &font_prop, const std::function& was_canceled = []() {return false;}); + const unsigned ENTER_UNICODE = static_cast('\n'); /// Sum of character '\n' unsigned get_count_lines(const std::wstring &ws); unsigned get_count_lines(const std::string &text); + unsigned get_count_lines(const ExPolygonsWithIds &shape); /// /// Fix duplicit points and self intersections in polygons. @@ -165,7 +169,7 @@ namespace Emboss /// /// Define wanted precision of shape after heal /// Healed shapes - ExPolygons heal_shape(const Polygons &shape); + HealedExPolygons heal_polygons(const Polygons &shape, bool is_non_zero = true, unsigned max_iteration = 10); /// /// NOTE: call Slic3r::union_ex before this call @@ -179,7 +183,7 @@ namespace Emboss /// Heal could create another issue, /// After healing it is checked again until shape is good or maximal count of iteration /// True when shapes is good otherwise False - bool heal_shape(ExPolygons &shape, unsigned max_iteration = 10); + bool heal_expolygons(ExPolygons &shape, unsigned max_iteration = 10); /// /// Divide line segments in place near to point @@ -198,7 +202,6 @@ namespace Emboss /// Z-move as surface distance(FontProp::distance) /// Z-rotation as angle to Y axis(FontProp::angle) /// In / Out transformation to modify by property - void apply_transformation(const FontProp &font_prop, Transform3d &transformation); void apply_transformation(const std::optional &angle, const std::optional &distance, Transform3d &transformation); /// @@ -226,7 +229,7 @@ namespace Emboss /// Property of font /// Font data /// Conversion to mm - double get_shape_scale(const FontProp &fp, const FontFile &ff); + double get_text_shape_scale(const FontProp &fp, const FontFile &ff); /// /// getter of font info by collection defined in prop @@ -334,7 +337,7 @@ namespace Emboss class ProjectZ : public IProjection { public: - ProjectZ(double depth) : m_depth(depth) {} + explicit ProjectZ(double depth) : m_depth(depth) {} // Inherited via IProject std::pair create_front_back(const Point &p) const override; Vec3d project(const Vec3d &point) const override; @@ -458,5 +461,11 @@ namespace Emboss std::vector calculate_angles(int32_t distance, const PolygonPoints& polygon_points, const Polygon &polygon); } // namespace Emboss +void translate(ExPolygonsWithIds &e, const Point &p); +BoundingBox get_extents(const ExPolygonsWithIds &e); +void center(ExPolygonsWithIds &e); +// delta .. safe offset before union (use as boolean close) +// NOTE: remove unprintable spaces between neighbor curves (made by linearization of curve) +ExPolygons union_with_delta(EmbossShape &shape, float delta, unsigned max_heal_iteration); } // namespace Slic3r #endif // slic3r_Emboss_hpp_ diff --git a/src/libslic3r/EmbossShape.hpp b/src/libslic3r/EmbossShape.hpp new file mode 100644 index 0000000..9094d2a --- /dev/null +++ b/src/libslic3r/EmbossShape.hpp @@ -0,0 +1,143 @@ +#ifndef slic3r_EmbossShape_hpp_ +#define slic3r_EmbossShape_hpp_ + +#include +#include +#include // unique_ptr +#include +#include +#include +#include +#include +#include "Point.hpp" // Transform3d +#include "ExPolygon.hpp" +#include "ExPolygonSerialize.hpp" +#include "nanosvg/nanosvg.h" // NSVGimage + +namespace Slic3r { + +struct EmbossProjection{ + // Emboss depth, Size in local Z direction + double depth = 1.; // [in loacal mm] + // NOTE: User should see and modify mainly world size not local + + // Flag that result volume use surface cutted from source objects + bool use_surface = false; + + bool operator==(const EmbossProjection &other) const { + return depth == other.depth && use_surface == other.use_surface; + } + + // undo / redo stack recovery + template void serialize(Archive &ar) { ar(depth, use_surface); } +}; + +// Extend expolygons with information whether it was successfull healed +struct HealedExPolygons{ + ExPolygons expolygons; + bool is_healed; + operator ExPolygons&() { return expolygons; } +}; + +// Help structure to identify expolygons grups +// e.g. emboss -> per glyph -> identify character +struct ExPolygonsWithId +{ + // Identificator for shape + // In text it separate letters and the name is unicode value of letter + // Is svg it is id of path + unsigned id; + + // shape defined by integer point contain only lines + // Curves are converted to sequence of lines + ExPolygons expoly; + + // flag whether expolygons are fully healed(without duplication) + bool is_healed = true; +}; +using ExPolygonsWithIds = std::vector; + +/// +/// Contain plane shape information to be able emboss it and edit it +/// +struct EmbossShape +{ + // shapes to to emboss separately over surface + ExPolygonsWithIds shapes_with_ids; + + // Only cache for final shape + // It is calculated from ExPolygonsWithIds + // Flag is_healed --> whether union of shapes is healed + // Healed mean without selfintersection and point duplication + HealedExPolygons final_shape; + + // scale of shape, multiplier to get 3d point in mm from integer shape + double scale = SCALING_FACTOR; + + // Define how to emboss shape + EmbossProjection projection; + + // !!! Volume stored in .3mf has transformed vertices. + // (baked transformation into vertices position) + // Only place for fill this is when load from .3mf + // This is correction for volume transformation + // Stored_Transform3d * fix_3mf_tr = Transform3d_before_store_to_3mf + std::optional fix_3mf_tr; + + struct SvgFile { + // File(.svg) path on local computer + // When empty can't reload from disk + std::string path; + + // File path into .3mf(.zip) + // When empty svg is not stored into .3mf file yet. + // and will create dialog to delete private data on save. + std::string path_in_3mf; + + // Loaded svg file data. + // !!! It is not serialized on undo/redo stack + std::shared_ptr image = nullptr; + + // Loaded string data from file + std::shared_ptr file_data = nullptr; + + template void save(Archive &ar) const { + // Note: image is only cache it is not neccessary to store + + // Store file data as plain string + assert(file_data != nullptr); + ar(path, path_in_3mf, (file_data != nullptr) ? *file_data : std::string("")); + } + template void load(Archive &ar) { + // for restore shared pointer on file data + std::string file_data_str; + ar(path, path_in_3mf, file_data_str); + if (!file_data_str.empty()) + file_data = std::make_unique(file_data_str); + } + }; + // When embossing shape is made by svg file this is source data + std::optional svg_file; + + // undo / redo stack recovery + template void save(Archive &ar) const + { + // final_shape is not neccessary to store - it is only cache + ar(shapes_with_ids, final_shape, scale, projection, svg_file); + cereal::save(ar, fix_3mf_tr); + } + template void load(Archive &ar) + { + ar(shapes_with_ids, final_shape, scale, projection, svg_file); + cereal::load(ar, fix_3mf_tr); + } +}; +} // namespace Slic3r + +// Serialization through the Cereal library +namespace cereal { +template void serialize(Archive &ar, Slic3r::ExPolygonsWithId &o) { ar(o.id, o.expoly, o.is_healed); } +template void serialize(Archive &ar, Slic3r::HealedExPolygons &o) { ar(o.expolygons, o.is_healed); } +}; // namespace cereal + +#endif // slic3r_EmbossShape_hpp_ diff --git a/src/libslic3r/ExPolygon.cpp b/src/libslic3r/ExPolygon.cpp index 19489bd..e4c17dd 100644 --- a/src/libslic3r/ExPolygon.cpp +++ b/src/libslic3r/ExPolygon.cpp @@ -457,6 +457,23 @@ bool has_duplicate_points(const ExPolygons &expolys) #endif } +bool remove_same_neighbor(ExPolygons &expolygons) +{ + if (expolygons.empty()) + return false; + bool remove_from_holes = false; + bool remove_from_contour = false; + for (ExPolygon &expoly : expolygons) { + remove_from_contour |= remove_same_neighbor(expoly.contour); + remove_from_holes |= remove_same_neighbor(expoly.holes); + } + // Removing of expolygons without contour + if (remove_from_contour) + expolygons.erase(std::remove_if(expolygons.begin(), expolygons.end(), + [](const ExPolygon &p) { return p.contour.points.size() <= 2; }), + expolygons.end()); + return remove_from_holes || remove_from_contour; +} bool remove_sticks(ExPolygon &poly) { return remove_sticks(poly.contour) || remove_sticks(poly.holes); diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp index 83b2648..04e6bc1 100644 --- a/src/libslic3r/ExPolygon.hpp +++ b/src/libslic3r/ExPolygon.hpp @@ -372,6 +372,10 @@ inline Points to_points(const ExPolygon &expoly) return out; } +inline void translate(ExPolygons &expolys, const Point &p) { + for (ExPolygon &expoly : expolys) + expoly.translate(p); +} inline void polygons_append(Polygons &dst, const ExPolygon &src) { dst.reserve(dst.size() + src.holes.size() + 1); @@ -461,6 +465,7 @@ std::vector get_extents_vector(const ExPolygons &polygons); bool has_duplicate_points(const ExPolygon &expoly); bool has_duplicate_points(const ExPolygons &expolys); +bool remove_same_neighbor(ExPolygons &expolys); bool remove_sticks(ExPolygon &poly); void keep_largest_contour_only(ExPolygons &polygons); diff --git a/src/libslic3r/ExPolygonSerialize.hpp b/src/libslic3r/ExPolygonSerialize.hpp new file mode 100644 index 0000000..712d470 --- /dev/null +++ b/src/libslic3r/ExPolygonSerialize.hpp @@ -0,0 +1,28 @@ +#ifndef slic3r_ExPolygonSerialize_hpp_ +#define slic3r_ExPolygonSerialize_hpp_ + +#include "ExPolygon.hpp" +#include "Point.hpp" // Cereal serialization of Point +#include +#include + +/// +/// External Cereal serialization of ExPolygons +/// + +// Serialization through the Cereal library +#include +namespace cereal { + +template +void serialize(Archive &archive, Slic3r::Polygon &polygon) { + archive(polygon.points); +} + +template +void serialize(Archive &archive, Slic3r::ExPolygon &expoly) { + archive(expoly.contour, expoly.holes); +} + +} // namespace Slic3r +#endif // slic3r_ExPolygonSerialize_hpp_ diff --git a/src/libslic3r/Extruder.cpp b/src/libslic3r/Extruder.cpp index b1a089d..460be0e 100644 --- a/src/libslic3r/Extruder.cpp +++ b/src/libslic3r/Extruder.cpp @@ -1,5 +1,5 @@ #include "Extruder.hpp" -#include "GCodeWriter.hpp" +#include "GCode/GCodeWriter.hpp" #include "PrintConfig.hpp" namespace Slic3r { @@ -16,6 +16,7 @@ Extruder::Extruder(unsigned int id, GCodeConfig *config) : std::pair Extruder::extrude(double dE) { + assert(! std::isnan(dE)); // in case of relative E distances we always reset to 0 before any output if (m_config->use_relative_e_distances) m_E = 0.; @@ -37,7 +38,8 @@ std::pair Extruder::extrude(double dE) value supplied will overwrite the previous one if any. */ std::pair Extruder::retract(double retract_length, double restart_extra) { - assert(restart_extra >= 0); + assert(! std::isnan(retract_length)); + assert(! std::isnan(restart_extra) && restart_extra >= 0); // in case of relative E distances we always reset to 0 before any output if (m_config->use_relative_e_distances) m_E = 0.; @@ -130,10 +132,6 @@ double Extruder::retract_length() const return m_config->retract_length.get_at(m_id); } -double Extruder::retract_lift() const -{ - return m_config->retract_lift.get_at(m_id); -} int Extruder::retract_speed() const { diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index 8a1a88b..5e69e12 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -2,6 +2,7 @@ #include "ExtrusionEntityCollection.hpp" #include "ExPolygon.hpp" #include "ClipperUtils.hpp" +#include "Exception.hpp" #include "Extruder.hpp" #include "Flow.hpp" #include @@ -38,12 +39,12 @@ double ExtrusionPath::length() const void ExtrusionPath::_inflate_collection(const Polylines &polylines, ExtrusionEntityCollection* collection) const { for (const Polyline &polyline : polylines) - collection->entities.emplace_back(new ExtrusionPath(polyline, *this)); + collection->entities.emplace_back(new ExtrusionPath(polyline, this->attributes())); } void ExtrusionPath::polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const { - polygons_append(out, offset(this->polyline, float(scale_(this->width/2)) + scaled_epsilon)); + polygons_append(out, offset(this->polyline, float(scale_(m_attributes.width/2)) + scaled_epsilon)); } void ExtrusionPath::polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const @@ -51,8 +52,8 @@ void ExtrusionPath::polygons_covered_by_spacing(Polygons &out, const float scale // Instantiating the Flow class to get the line spacing. // Don't know the nozzle diameter, setting to zero. It shall not matter it shall be optimized out by the compiler. bool bridge = this->role().is_bridge(); - assert(! bridge || this->width == this->height); - auto flow = bridge ? Flow::bridging_flow(this->width, 0.f) : Flow(this->width, this->height, 0.f); + assert(! bridge || m_attributes.width == m_attributes.height); + auto flow = bridge ? Flow::bridging_flow(m_attributes.width, 0.f) : Flow(m_attributes.width, m_attributes.height, 0.f); polygons_append(out, offset(this->polyline, 0.5f * float(flow.scaled_spacing()) + scaled_epsilon)); } @@ -87,7 +88,7 @@ double ExtrusionMultiPath::min_mm3_per_mm() const { double min_mm3_per_mm = std::numeric_limits::max(); for (const ExtrusionPath &path : this->paths) - min_mm3_per_mm = std::min(min_mm3_per_mm, path.mm3_per_mm); + min_mm3_per_mm = std::min(min_mm3_per_mm, path.min_mm3_per_mm()); return min_mm3_per_mm; } @@ -112,21 +113,34 @@ Polyline ExtrusionMultiPath::as_polyline() const return out; } -bool ExtrusionLoop::make_clockwise() +double ExtrusionLoop::area() const { - bool was_ccw = this->polygon().is_counter_clockwise(); - if (was_ccw) this->reverse(); - return was_ccw; -} - -bool ExtrusionLoop::make_counter_clockwise() -{ - bool was_cw = this->polygon().is_clockwise(); - if (was_cw) this->reverse(); - return was_cw; + double a = 0; + for (const ExtrusionPath &path : this->paths) { + assert(path.size() >= 2); + if (path.size() >= 2) { + // Assumming that the last point of one path segment is repeated at the start of the following path segment. + auto it = path.polyline.points.begin(); + Point prev = *it ++; + for (; it != path.polyline.points.end(); ++ it) { + a += cross2(prev.cast(), it->cast()); + prev = *it; + } + } + } + return a * 0.5; } void ExtrusionLoop::reverse() +{ +#if 0 + this->reverse_loop(); +#else + throw Slic3r::LogicError("ExtrusionLoop::reverse() must NOT be called"); +#endif +} + +void ExtrusionLoop::reverse_loop() { for (ExtrusionPath &path : this->paths) path.reverse(); @@ -248,8 +262,8 @@ void ExtrusionLoop::split_at(const Point &point, bool prefer_non_overhang, const // now split path_idx in two parts const ExtrusionPath &path = this->paths[path_idx]; - ExtrusionPath p1(path.role(), path.mm3_per_mm, path.width, path.height); - ExtrusionPath p2(path.role(), path.mm3_per_mm, path.width, path.height); + ExtrusionPath p1(path.attributes()); + ExtrusionPath p2(path.attributes()); path.polyline.split_at(p, &p1.polyline, &p2.polyline); if (this->paths.size() == 1) { @@ -316,7 +330,7 @@ double ExtrusionLoop::min_mm3_per_mm() const { double min_mm3_per_mm = std::numeric_limits::max(); for (const ExtrusionPath &path : this->paths) - min_mm3_per_mm = std::min(min_mm3_per_mm, path.mm3_per_mm); + min_mm3_per_mm = std::min(min_mm3_per_mm, path.min_mm3_per_mm()); return min_mm3_per_mm; } diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 277ac78..085cd81 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -3,10 +3,12 @@ #include "libslic3r.h" #include "ExtrusionRole.hpp" +#include "Flow.hpp" #include "Polygon.hpp" #include "Polyline.hpp" #include +#include #include #include @@ -55,28 +57,89 @@ public: virtual double total_volume() const = 0; }; -typedef std::vector ExtrusionEntitiesPtr; +using ExtrusionEntitiesPtr = std::vector; +class ExtrusionEntityReference final +{ +public: + ExtrusionEntityReference() = delete; + ExtrusionEntityReference(const ExtrusionEntity &extrusion_entity, bool flipped) : + m_extrusion_entity(&extrusion_entity), m_flipped(flipped) {} + ExtrusionEntityReference operator=(const ExtrusionEntityReference &rhs) + { m_extrusion_entity = rhs.m_extrusion_entity; m_flipped = rhs.m_flipped; return *this; } + + const ExtrusionEntity& extrusion_entity() const { return *m_extrusion_entity; } + template + const Type* cast() const { return dynamic_cast(m_extrusion_entity); } + bool flipped() const { return m_flipped; } + +private: + const ExtrusionEntity *m_extrusion_entity; + bool m_flipped; +}; + +using ExtrusionEntityReferences = std::vector; + +struct ExtrusionFlow +{ + ExtrusionFlow() = default; + ExtrusionFlow(double mm3_per_mm, float width, float height) : + mm3_per_mm{ mm3_per_mm }, width{ width }, height{ height } {} + ExtrusionFlow(const Flow &flow) : + mm3_per_mm(flow.mm3_per_mm()), width(flow.width()), height(flow.height()) {} + + // Volumetric velocity. mm^3 of plastic per mm of linear head motion. Used by the G-code generator. + double mm3_per_mm{ -1. }; + // Width of the extrusion, used for visualization purposes. + float width{ -1.f }; + // Height of the extrusion, used for visualization purposes. + float height{ -1.f }; +}; + +inline bool operator==(const ExtrusionFlow &lhs, const ExtrusionFlow &rhs) +{ + return lhs.mm3_per_mm == rhs.mm3_per_mm && lhs.width == rhs.width && lhs.height == rhs.height; +} + +struct OverhangAttributes { + float start_distance_from_prev_layer; + float end_distance_from_prev_layer; + float proximity_to_curled_lines; //value between 0 and 1 +}; + +struct ExtrusionAttributes : ExtrusionFlow +{ + ExtrusionAttributes() = default; + ExtrusionAttributes(ExtrusionRole role) : role{ role } {} + ExtrusionAttributes(ExtrusionRole role, const Flow &flow) : role{ role }, ExtrusionFlow{ flow } {} + ExtrusionAttributes(ExtrusionRole role, const ExtrusionFlow &flow) : role{ role }, ExtrusionFlow{ flow } {} + + // What is the role / purpose of this extrusion? + ExtrusionRole role{ ExtrusionRole::None }; + // Volumetric velocity. mm^3 of plastic per mm of linear head motion. Used by the G-code generator. + std::optional overhang_attributes; +}; + // Width of the extrusion, used for visualization purposes. +inline bool operator==(const ExtrusionAttributes &lhs, const ExtrusionAttributes &rhs) +{ + return static_cast(lhs) == static_cast(rhs) && + lhs.role == rhs.role; +} + // Height of the extrusion, used for visualization purposes. class ExtrusionPath : public ExtrusionEntity { public: Polyline polyline; - // Volumetric velocity. mm^3 of plastic per mm of linear head motion. Used by the G-code generator. - double mm3_per_mm; - // Width of the extrusion, used for visualization purposes. - float width; - // Height of the extrusion, used for visualization purposes. - float height; - ExtrusionPath(ExtrusionRole role) : mm3_per_mm(-1), width(-1), height(-1), m_role(role) {} - ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height), m_role(role) {} - ExtrusionPath(const ExtrusionPath& rhs) : polyline(rhs.polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} - ExtrusionPath(ExtrusionPath&& rhs) : polyline(std::move(rhs.polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} - ExtrusionPath(const Polyline &polyline, const ExtrusionPath &rhs) : polyline(polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} - ExtrusionPath(Polyline &&polyline, const ExtrusionPath &rhs) : polyline(std::move(polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), m_role(rhs.m_role) {} + ExtrusionPath(ExtrusionRole role) : m_attributes{ role } {} + ExtrusionPath(const ExtrusionAttributes &attributes) : m_attributes(attributes) {} + ExtrusionPath(const ExtrusionPath &rhs) : polyline(rhs.polyline), m_attributes(rhs.m_attributes) {} + ExtrusionPath(ExtrusionPath &&rhs) : polyline(std::move(rhs.polyline)), m_attributes(rhs.m_attributes) {} + ExtrusionPath(const Polyline &polyline, const ExtrusionAttributes &attribs) : polyline(polyline), m_attributes(attribs) {} + ExtrusionPath(Polyline &&polyline, const ExtrusionAttributes &attribs) : polyline(std::move(polyline)), m_attributes(attribs) {} - ExtrusionPath& operator=(const ExtrusionPath& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = rhs.polyline; return *this; } - ExtrusionPath& operator=(ExtrusionPath&& rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = std::move(rhs.polyline); return *this; } + ExtrusionPath& operator=(const ExtrusionPath &rhs) { this->polyline = rhs.polyline; m_attributes = rhs.m_attributes; return *this; } + ExtrusionPath& operator=(ExtrusionPath &&rhs) { this->polyline = std::move(rhs.polyline); m_attributes = rhs.m_attributes; return *this; } ExtrusionEntity* clone() const override { return new ExtrusionPath(*this); } // Create a new object, initialize it with this object using the move semantics. @@ -97,7 +160,14 @@ public: void clip_end(double distance); void simplify(double tolerance); double length() const override; - ExtrusionRole role() const override { return m_role; } + const ExtrusionAttributes& attributes() const { return m_attributes; } + ExtrusionRole role() const override { return m_attributes.role; } + float width() const { return m_attributes.width; } + float height() const { return m_attributes.height; } + double mm3_per_mm() const { return m_attributes.mm3_per_mm; } + // Minimum volumetric velocity of this extrusion entity. Used by the constant nozzle pressure algorithm. + double min_mm3_per_mm() const override { return m_attributes.mm3_per_mm; } + std::optional& overhang_attributes_mutable() { return m_attributes.overhang_attributes; } // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion width. // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps. void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const override; @@ -110,22 +180,23 @@ public: Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const { Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; } // Minimum volumetric velocity of this extrusion entity. Used by the constant nozzle pressure algorithm. - double min_mm3_per_mm() const override { return this->mm3_per_mm; } Polyline as_polyline() const override { return this->polyline; } void collect_polylines(Polylines &dst) const override { if (! this->polyline.empty()) dst.emplace_back(this->polyline); } void collect_points(Points &dst) const override { append(dst, this->polyline.points); } - double total_volume() const override { return mm3_per_mm * unscale(length()); } + double total_volume() const override { return m_attributes.mm3_per_mm * unscale(length()); } private: void _inflate_collection(const Polylines &polylines, ExtrusionEntityCollection* collection) const; - ExtrusionRole m_role; + ExtrusionAttributes m_attributes; }; class ExtrusionPathOriented : public ExtrusionPath { public: - ExtrusionPathOriented(ExtrusionRole role, double mm3_per_mm, float width, float height) : ExtrusionPath(role, mm3_per_mm, width, height) {} + ExtrusionPathOriented(const ExtrusionAttributes &attribs) : ExtrusionPath(attribs) {} + ExtrusionPathOriented(const Polyline &polyline, const ExtrusionAttributes &attribs) : ExtrusionPath(polyline, attribs) {} + ExtrusionPathOriented(Polyline &&polyline, const ExtrusionAttributes &attribs) : ExtrusionPath(std::move(polyline), attribs) {} ExtrusionEntity* clone() const override { return new ExtrusionPathOriented(*this); } // Create a new object, initialize it with this object using the move semantics. ExtrusionEntity* clone_move() override { return new ExtrusionPathOriented(std::move(*this)); } @@ -192,7 +263,8 @@ class ExtrusionLoop : public ExtrusionEntity public: ExtrusionPaths paths; - ExtrusionLoop(ExtrusionLoopRole role = elrDefault) : m_loop_role(role) {} + ExtrusionLoop() = default; + ExtrusionLoop(ExtrusionLoopRole role) : m_loop_role(role) {} ExtrusionLoop(const ExtrusionPaths &paths, ExtrusionLoopRole role = elrDefault) : paths(paths), m_loop_role(role) {} ExtrusionLoop(ExtrusionPaths &&paths, ExtrusionLoopRole role = elrDefault) : paths(std::move(paths)), m_loop_role(role) {} ExtrusionLoop(const ExtrusionPath &path, ExtrusionLoopRole role = elrDefault) : m_loop_role(role) @@ -204,9 +276,11 @@ public: ExtrusionEntity* clone() const override{ return new ExtrusionLoop (*this); } // Create a new object, initialize it with this object using the move semantics. ExtrusionEntity* clone_move() override { return new ExtrusionLoop(std::move(*this)); } - bool make_clockwise(); - bool make_counter_clockwise(); + double area() const; + bool is_counter_clockwise() const { return this->area() > 0; } + bool is_clockwise() const { return this->area() < 0; } void reverse() override; + void reverse_loop(); const Point& first_point() const override { return this->paths.front().polyline.points.front(); } const Point& last_point() const override { assert(this->first_point() == this->paths.back().polyline.points.back()); return this->first_point(); } const Point& middle_point() const override { auto& path = this->paths[this->paths.size() / 2]; return path.polyline.points[path.polyline.size() / 2]; } @@ -259,59 +333,51 @@ public: #endif /* NDEBUG */ private: - ExtrusionLoopRole m_loop_role; + ExtrusionLoopRole m_loop_role{ elrDefault }; }; -inline void extrusion_paths_append(ExtrusionPaths &dst, Polylines &polylines, ExtrusionRole role, double mm3_per_mm, float width, float height) +inline void extrusion_paths_append(ExtrusionPaths &dst, Polylines &polylines, const ExtrusionAttributes &attributes) { dst.reserve(dst.size() + polylines.size()); for (Polyline &polyline : polylines) - if (polyline.is_valid()) { - dst.push_back(ExtrusionPath(role, mm3_per_mm, width, height)); - dst.back().polyline = polyline; - } + if (polyline.is_valid()) + dst.emplace_back(polyline, attributes); } -inline void extrusion_paths_append(ExtrusionPaths &dst, Polylines &&polylines, ExtrusionRole role, double mm3_per_mm, float width, float height) +inline void extrusion_paths_append(ExtrusionPaths &dst, Polylines &&polylines, const ExtrusionAttributes &attributes) { dst.reserve(dst.size() + polylines.size()); for (Polyline &polyline : polylines) - if (polyline.is_valid()) { - dst.push_back(ExtrusionPath(role, mm3_per_mm, width, height)); - dst.back().polyline = std::move(polyline); - } + if (polyline.is_valid()) + dst.emplace_back(std::move(polyline), attributes); polylines.clear(); } -inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, const Polylines &polylines, ExtrusionRole role, double mm3_per_mm, float width, float height, bool can_reverse = true) +inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, const Polylines &polylines, const ExtrusionAttributes &attributes, bool can_reverse = true) { dst.reserve(dst.size() + polylines.size()); for (const Polyline &polyline : polylines) - if (polyline.is_valid()) { - ExtrusionPath* extrusion_path = can_reverse ? new ExtrusionPath(role, mm3_per_mm, width, height) : new ExtrusionPathOriented(role, mm3_per_mm, width, height); - dst.push_back(extrusion_path); - extrusion_path->polyline = polyline; - } + if (polyline.is_valid()) + dst.emplace_back(can_reverse ? new ExtrusionPath(polyline, attributes) : new ExtrusionPathOriented(polyline, attributes)); } -inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, ExtrusionRole role, double mm3_per_mm, float width, float height, bool can_reverse = true) +inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, const ExtrusionAttributes &attributes, bool can_reverse = true) { dst.reserve(dst.size() + polylines.size()); for (Polyline &polyline : polylines) - if (polyline.is_valid()) { - ExtrusionPath *extrusion_path = can_reverse ? new ExtrusionPath(role, mm3_per_mm, width, height) : new ExtrusionPathOriented(role, mm3_per_mm, width, height); - dst.push_back(extrusion_path); - extrusion_path->polyline = std::move(polyline); - } + if (polyline.is_valid()) + dst.emplace_back(can_reverse ? + new ExtrusionPath(std::move(polyline), attributes) : + new ExtrusionPathOriented(std::move(polyline), attributes)); polylines.clear(); } -inline void extrusion_entities_append_loops(ExtrusionEntitiesPtr &dst, Polygons &&loops, ExtrusionRole role, double mm3_per_mm, float width, float height) +inline void extrusion_entities_append_loops(ExtrusionEntitiesPtr &dst, Polygons &&loops, const ExtrusionAttributes &attributes) { dst.reserve(dst.size() + loops.size()); for (Polygon &poly : loops) { if (poly.is_valid()) { - ExtrusionPath path(role, mm3_per_mm, width, height); + ExtrusionPath path(attributes); path.polyline.points = std::move(poly.points); path.polyline.points.push_back(path.polyline.points.front()); dst.emplace_back(new ExtrusionLoop(std::move(path))); @@ -320,22 +386,14 @@ inline void extrusion_entities_append_loops(ExtrusionEntitiesPtr &dst, Polygons loops.clear(); } -inline void extrusion_entities_append_loops_and_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, ExtrusionRole role, double mm3_per_mm, float width, float height) +inline void extrusion_entities_append_loops_and_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, const ExtrusionAttributes &attributes) { dst.reserve(dst.size() + polylines.size()); - for (Polyline &polyline : polylines) { - if (polyline.is_valid()) { - if (polyline.is_closed()) { - ExtrusionPath extrusion_path(role, mm3_per_mm, width, height); - extrusion_path.polyline = std::move(polyline); - dst.emplace_back(new ExtrusionLoop(std::move(extrusion_path))); - } else { - ExtrusionPath *extrusion_path = new ExtrusionPath(role, mm3_per_mm, width, height); - extrusion_path->polyline = std::move(polyline); - dst.emplace_back(extrusion_path); - } - } - } + for (Polyline &polyline : polylines) + if (polyline.is_valid()) + dst.emplace_back(polyline.is_closed() ? + static_cast(new ExtrusionLoop(ExtrusionPath{ std::move(polyline), attributes })) : + static_cast(new ExtrusionPath(std::move(polyline), attributes))); polylines.clear(); } diff --git a/src/libslic3r/ExtrusionEntityCollection.cpp b/src/libslic3r/ExtrusionEntityCollection.cpp index 5516786..67d84fb 100644 --- a/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/src/libslic3r/ExtrusionEntityCollection.cpp @@ -6,6 +6,7 @@ namespace Slic3r { +#if 0 void filter_by_extrusion_role_in_place(ExtrusionEntitiesPtr &extrusion_entities, ExtrusionRole role) { if (role != ExtrusionRole::Mixed) { @@ -17,6 +18,7 @@ void filter_by_extrusion_role_in_place(ExtrusionEntitiesPtr &extrusion_entities, last); } } +#endif ExtrusionEntityCollection::ExtrusionEntityCollection(const ExtrusionPaths &paths) : no_sort(false) @@ -83,17 +85,6 @@ void ExtrusionEntityCollection::remove(size_t i) this->entities.erase(this->entities.begin() + i); } -ExtrusionEntityCollection ExtrusionEntityCollection::chained_path_from(const ExtrusionEntitiesPtr& extrusion_entities, const Point &start_near, ExtrusionRole role) -{ - // Return a filtered copy of the collection. - ExtrusionEntityCollection out; - out.entities = filter_by_extrusion_role(extrusion_entities, role); - // Clone the extrusion entities. - for (auto &ptr : out.entities) - ptr = ptr->clone(); - chain_and_reorder_extrusion_entities(out.entities, &start_near); - return out; -} void ExtrusionEntityCollection::polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const { diff --git a/src/libslic3r/ExtrusionEntityCollection.hpp b/src/libslic3r/ExtrusionEntityCollection.hpp index 676bdd8..3d6ffba 100644 --- a/src/libslic3r/ExtrusionEntityCollection.hpp +++ b/src/libslic3r/ExtrusionEntityCollection.hpp @@ -7,6 +7,7 @@ namespace Slic3r { +#if 0 // Remove those items from extrusion_entities, that do not match role. // Do nothing if role is mixed. // Removed elements are NOT being deleted. @@ -21,6 +22,7 @@ inline ExtrusionEntitiesPtr filter_by_extrusion_role(const ExtrusionEntitiesPtr filter_by_extrusion_role_in_place(out, role); return out; } +#endif class ExtrusionEntityCollection : public ExtrusionEntity { @@ -96,9 +98,6 @@ public: } void replace(size_t i, const ExtrusionEntity &entity); void remove(size_t i); - static ExtrusionEntityCollection chained_path_from(const ExtrusionEntitiesPtr &extrusion_entities, const Point &start_near, ExtrusionRole role = ExtrusionRole::Mixed); - ExtrusionEntityCollection chained_path_from(const Point &start_near, ExtrusionRole role = ExtrusionRole::Mixed) const - { return this->no_sort ? *this : chained_path_from(this->entities, start_near, role); } void reverse() override; const Point& first_point() const override { return this->entities.front()->first_point(); } const Point& last_point() const override { return this->entities.back()->last_point(); } diff --git a/src/libslic3r/ExtrusionRole.hpp b/src/libslic3r/ExtrusionRole.hpp index 986c139..af1d79b 100644 --- a/src/libslic3r/ExtrusionRole.hpp +++ b/src/libslic3r/ExtrusionRole.hpp @@ -82,6 +82,7 @@ struct ExtrusionRole : public ExtrusionRoleModifiers bool is_external_perimeter() const { return this->is_perimeter() && this->is_external(); } bool is_infill() const { return this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Infill); } bool is_solid_infill() const { return this->is_infill() && this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Solid); } + bool is_sparse_infill() const { return this->is_infill() && ! this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Solid); } bool is_external() const { return this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::External); } bool is_bridge() const { return this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Bridge); } @@ -89,6 +90,7 @@ struct ExtrusionRole : public ExtrusionRoleModifiers bool is_support_base() const { return this->is_support() && ! this->is_external(); } bool is_support_interface() const { return this->is_support() && this->is_external(); } bool is_mixed() const { return this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Mixed); } + bool is_skirt() const { return this->ExtrusionRoleModifiers::has(ExtrusionRoleModifier::Skirt); } }; // Special flags describing loop diff --git a/src/libslic3r/ExtrusionSimulator.cpp b/src/libslic3r/ExtrusionSimulator.cpp index 6b1f76a..a08b4d8 100644 --- a/src/libslic3r/ExtrusionSimulator.cpp +++ b/src/libslic3r/ExtrusionSimulator.cpp @@ -957,9 +957,9 @@ void ExtrusionSimulator::extrude_to_accumulator(const ExtrusionPath &path, const polyline.reserve(path.polyline.points.size()); float scalex = float(viewport.size().x()) / float(bbox.size().x()); float scaley = float(viewport.size().y()) / float(bbox.size().y()); - float w = scale_(path.width) * scalex; + float w = scale_(path.width()) * scalex; //float h = scale_(path.height) * scalex; - w = scale_(path.mm3_per_mm / path.height) * scalex; + w = scale_(path.mm3_per_mm() / path.height()) * scalex; // printf("scalex: %f, scaley: %f\n", scalex, scaley); // printf("bbox: %d,%d %d,%d\n", bbox.min.x(), bbox.min.y, bbox.max.x(), bbox.max.y); for (Points::const_iterator it = path.polyline.points.begin(); it != path.polyline.points.end(); ++ it) { diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index bec8eef..55518cf 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -578,9 +578,8 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: flow_width = new_flow.width(); } // Save into layer. - ExtrusionEntityCollection* eec = nullptr; + ExtrusionEntityCollection *eec = new ExtrusionEntityCollection(); auto fill_begin = uint32_t(layerm.fills().size()); - layerm.m_fills.entities.push_back(eec = new ExtrusionEntityCollection()); // Only concentric fills are not sorted. eec->no_sort = f->no_sort(); if (params.use_arachne) { @@ -597,12 +596,18 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: } } + if (!eec->empty()) + layerm.m_fills.entities.push_back(eec); + else + delete eec; thick_polylines.clear(); } else { extrusion_entities_append_paths( eec->entities, std::move(polylines), - surface_fill.params.extrusion_role, - flow_mm3_per_mm, float(flow_width), surface_fill.params.flow.height()); + ExtrusionAttributes{ surface_fill.params.extrusion_role, + ExtrusionFlow{ flow_mm3_per_mm, float(flow_width), surface_fill.params.flow.height() } + }); + layerm.m_fills.entities.push_back(eec); } insert_fills_into_islands(*this, uint32_t(surface_fill.region_id), fill_begin, uint32_t(layerm.fills().size())); } @@ -947,8 +952,9 @@ void Layer::make_ironing() eec->no_sort = true; extrusion_entities_append_paths( eec->entities, std::move(polylines), - ExtrusionRole::Ironing, - flow_mm3_per_mm, extrusion_width, float(extrusion_height)); + ExtrusionAttributes{ ExtrusionRole::Ironing, + ExtrusionFlow{ flow_mm3_per_mm, extrusion_width, float(extrusion_height) } + }); insert_fills_into_islands(*this, ironing_params.region_id, fill_begin, uint32_t(ironing_params.layerm->fills().size())); } } diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index d29bcbe..6600573 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -36,6 +36,10 @@ namespace pt = boost::property_tree; #include "miniz_extension.hpp" #include "TextConfiguration.hpp" +#include "EmbossShape.hpp" +#include "ExPolygonSerialize.hpp" + +#include "NSVGUtils.hpp" #include @@ -157,12 +161,11 @@ static constexpr const char *FONT_DESCRIPTOR_TYPE_ATTR = "font_descriptor_type"; static constexpr const char *CHAR_GAP_ATTR = "char_gap"; static constexpr const char *LINE_GAP_ATTR = "line_gap"; static constexpr const char *LINE_HEIGHT_ATTR = "line_height"; -static constexpr const char *DEPTH_ATTR = "depth"; -static constexpr const char *USE_SURFACE_ATTR = "use_surface"; static constexpr const char *BOLDNESS_ATTR = "boldness"; static constexpr const char *SKEW_ATTR = "skew"; -static constexpr const char *DISTANCE_ATTR = "distance"; -static constexpr const char *ANGLE_ATTR = "angle"; +static constexpr const char *PER_GLYPH_ATTR = "per_glyph"; +static constexpr const char *HORIZONTAL_ALIGN_ATTR = "horizontal"; +static constexpr const char *VERTICAL_ALIGN_ATTR = "vertical"; static constexpr const char *COLLECTION_NUMBER_ATTR = "collection"; static constexpr const char *FONT_FAMILY_ATTR = "family"; @@ -170,6 +173,15 @@ static constexpr const char *FONT_FACE_NAME_ATTR = "face_name"; static constexpr const char *FONT_STYLE_ATTR = "style"; static constexpr const char *FONT_WEIGHT_ATTR = "weight"; +static constexpr const char *SHAPE_TAG = "slic3rpe:shape"; +static constexpr const char *SHAPE_SCALE_ATTR = "scale"; +static constexpr const char *UNHEALED_ATTR = "unhealed"; +static constexpr const char *SVG_FILE_PATH_ATTR = "filepath"; +static constexpr const char *SVG_FILE_PATH_IN_3MF_ATTR = "filepath3mf"; + +// EmbossProjection +static constexpr const char *DEPTH_ATTR = "depth"; +static constexpr const char *USE_SURFACE_ATTR = "use_surface"; const unsigned int VALID_OBJECT_TYPES_COUNT = 1; const char* VALID_OBJECT_TYPES[] = { @@ -416,6 +428,7 @@ namespace Slic3r { MetadataList metadata; RepairedMeshErrors mesh_stats; std::optional text_configuration; + std::optional shape_configuration; VolumeMetadata(unsigned int first_triangle_id, unsigned int last_triangle_id) : first_triangle_id(first_triangle_id) , last_triangle_id(last_triangle_id) @@ -454,6 +467,7 @@ namespace Slic3r { typedef std::map> IdToSlaSupportPointsMap; typedef std::map> IdToSlaDrainHolesMap; + using PathToEmbossShapeFileMap = std::map>; // Version of the 3mf file unsigned int m_version; bool m_check_version; @@ -483,6 +497,7 @@ namespace Slic3r { IdToLayerConfigRangesMap m_layer_config_ranges; IdToSlaSupportPointsMap m_sla_support_points; IdToSlaDrainHolesMap m_sla_drain_holes; + PathToEmbossShapeFileMap m_path_to_emboss_shape_files; std::string m_curr_metadata_name; std::string m_curr_characters; std::string m_name; @@ -509,6 +524,7 @@ namespace Slic3r { } bool _load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions); + bool _is_svg_shape_file(const std::string &filename) const; bool _extract_model_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); void _extract_cut_information_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, ConfigSubstitutionContext& config_substitutions); void _extract_layer_heights_profile_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat); @@ -520,6 +536,7 @@ namespace Slic3r { void _extract_print_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, DynamicPrintConfig& config, ConfigSubstitutionContext& subs_context, const std::string& archive_filename); bool _extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model); + void _extract_embossed_svg_shape_file(const std::string &filename, mz_zip_archive &archive, const mz_zip_archive_file_stat &stat); // handlers to parse the .model file void _handle_start_model_xml_element(const char* name, const char** attributes); @@ -570,6 +587,7 @@ namespace Slic3r { bool _handle_end_metadata(); bool _handle_start_text_configuration(const char** attributes, unsigned int num_attributes); + bool _handle_start_shape_configuration(const char **attributes, unsigned int num_attributes); bool _create_object_instance(int object_id, const Transform3d& transform, const bool printable, unsigned int recur_counter); @@ -747,6 +765,9 @@ namespace Slic3r { return false; } } + else if (_is_svg_shape_file(name)) { + _extract_embossed_svg_shape_file(name, archive, stat); + } } } @@ -921,6 +942,9 @@ namespace Slic3r { return true; } + bool _3MF_Importer::_is_svg_shape_file(const std::string &name) const { + return boost::starts_with(name, MODEL_FOLDER) && boost::ends_with(name, ".svg"); + } bool _3MF_Importer::_extract_model_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) { if (stat.m_uncomp_size == 0) { @@ -1353,6 +1377,31 @@ namespace Slic3r { } } + void _3MF_Importer::_extract_embossed_svg_shape_file(const std::string &filename, mz_zip_archive &archive, const mz_zip_archive_file_stat &stat){ + assert(m_path_to_emboss_shape_files.find(filename) == m_path_to_emboss_shape_files.end()); + auto file = std::make_unique(stat.m_uncomp_size, '\0'); + mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void *) file->data(), stat.m_uncomp_size, 0); + if (res == 0) { + add_error("Error while reading svg shape for emboss"); + return; + } + + // store for case svg is loaded before volume + m_path_to_emboss_shape_files[filename] = std::move(file); + + // find embossed volume, for case svg is loaded after volume + for (const ModelObject* object : m_model->objects) + for (ModelVolume *volume : object->volumes) { + std::optional &es = volume->emboss_shape; + if (!es.has_value()) + continue; + std::optional &svg = es->svg_file; + if (!svg.has_value()) + continue; + if (filename.compare(svg->path_in_3mf) == 0) + svg->file_data = m_path_to_emboss_shape_files[filename]; + } + } bool _3MF_Importer::_extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model) { if (stat.m_uncomp_size == 0) { @@ -1552,6 +1601,8 @@ namespace Slic3r { res = _handle_start_config_volume_mesh(attributes, num_attributes); else if (::strcmp(METADATA_TAG, name) == 0) res = _handle_start_config_metadata(attributes, num_attributes); + else if (::strcmp(SHAPE_TAG, name) == 0) + res = _handle_start_shape_configuration(attributes, num_attributes); else if (::strcmp(TEXT_TAG, name) == 0) res = _handle_start_text_configuration(attributes, num_attributes); @@ -1905,7 +1956,14 @@ namespace Slic3r { public: TextConfigurationSerialization() = delete; - static const boost::bimap type_to_name; + using TypeToName = boost::bimap; + static const TypeToName type_to_name; + + using HorizontalAlignToName = boost::bimap; + static const HorizontalAlignToName horizontal_align_to_name; + + using VerticalAlignToName = boost::bimap; + static const VerticalAlignToName vertical_align_to_name; static EmbossStyle::Type get_type(std::string_view type) { const auto& to_type = TextConfigurationSerialization::type_to_name.right; @@ -1924,8 +1982,8 @@ namespace Slic3r { } static void to_xml(std::stringstream &stream, const TextConfiguration &tc); - static void create_fix_and_store(std::stringstream &stream, TextConfiguration tc, const ModelVolume& volume); static std::optional read(const char **attributes, unsigned int num_attributes); + static EmbossShape read_old(const char **attributes, unsigned int num_attributes); }; bool _3MF_Importer::_handle_start_text_configuration(const char **attributes, unsigned int num_attributes) @@ -1941,7 +1999,54 @@ namespace Slic3r { } ObjectMetadata::VolumeMetadata& volume = object->second.volumes.back(); volume.text_configuration = TextConfigurationSerialization::read(attributes, num_attributes); - return volume.text_configuration.has_value(); + if (!volume.text_configuration.has_value()) + return false; + + // Is 3mf version with shapes? + if (volume.shape_configuration.has_value()) + return true; + + // Back compatibility for 3mf version without shapes + volume.shape_configuration = TextConfigurationSerialization::read_old(attributes, num_attributes); + return true; + } + + // Definition of read/write method for EmbossShape + static void to_xml(std::stringstream &stream, const EmbossShape &es, const ModelVolume &volume, mz_zip_archive &archive); + static std::optional read_emboss_shape(const char **attributes, unsigned int num_attributes); + + bool _3MF_Importer::_handle_start_shape_configuration(const char **attributes, unsigned int num_attributes) + { + IdToMetadataMap::iterator object = m_objects_metadata.find(m_curr_config.object_id); + if (object == m_objects_metadata.end()) { + add_error("Can not assign volume mesh to a valid object"); + return false; + } + auto &volumes = object->second.volumes; + if (volumes.empty()) { + add_error("Can not assign mesh to a valid volume"); + return false; + } + ObjectMetadata::VolumeMetadata &volume = volumes.back(); + volume.shape_configuration = read_emboss_shape(attributes, num_attributes); + if (!volume.shape_configuration.has_value()) + return false; + + // Fill svg file content into shape_configuration + std::optional &svg = volume.shape_configuration->svg_file; + if (!svg.has_value()) + return true; // do not contain svg file + + const std::string &path = svg->path_in_3mf; + if (path.empty()) + return true; // do not contain svg file + + auto it = m_path_to_emboss_shape_files.find(path); + if (it == m_path_to_emboss_shape_files.end()) + return true; // svg file is not loaded yet + + svg->file_data = it->second; + return true; } bool _3MF_Importer::_create_object_instance(int object_id, const Transform3d& transform, const bool printable, unsigned int recur_counter) @@ -2224,8 +2329,9 @@ namespace Slic3r { volume->supported_facets.shrink_to_fit(); volume->seam_facets.shrink_to_fit(); volume->mmu_segmentation_facets.shrink_to_fit(); - auto &tc = volume_data.text_configuration; - if (tc.has_value()) { + if (auto &es = volume_data.shape_configuration; es.has_value()) + volume->emboss_shape = std::move(es); + if (auto &tc = volume_data.text_configuration; tc.has_value()) volume->text_configuration = std::move(tc); //// Transformation before store to 3mf @@ -2239,7 +2345,6 @@ namespace Slic3r { //volume->text_configuration->fix_3mf_tr = // pre_trmat.inverse() * // volume->get_transformation().get_matrix(); - } // apply the remaining volume's metadata for (const Metadata& metadata : volume_data.metadata) { @@ -2371,6 +2476,7 @@ namespace Slic3r { bool save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, bool fullpath_sources, const ThumbnailData* thumbnail_data, bool zip64); static void add_transformation(std::stringstream &stream, const Transform3d &tr); private: + void _publish(Model &model); bool _save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data); bool _add_content_types_file_to_archive(mz_zip_archive& archive); bool _add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data); @@ -3315,10 +3421,13 @@ namespace Slic3r { stream << " <" << METADATA_TAG << " " << TYPE_ATTR << "=\"" << VOLUME_TYPE << "\" " << KEY_ATTR << "=\"" << key << "\" " << VALUE_ATTR << "=\"" << volume->config.opt_serialize(key) << "\"/>\n"; } + if (const std::optional &es = volume->emboss_shape; + es.has_value()) + to_xml(stream, *es, *volume, archive); // stores volume's text data - const auto &tc = volume->text_configuration; - if (tc.has_value()) - TextConfigurationSerialization::create_fix_and_store(stream, *tc, *volume); + if (const std::optional &tc = volume->text_configuration; + tc.has_value()) + TextConfigurationSerialization::to_xml(stream, *tc); // stores mesh's statistics const RepairedMeshErrors& stats = volume->mesh().stats().repaired_errors; @@ -3489,27 +3598,71 @@ bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config, return res; } +namespace{ + +// Conversion with bidirectional map +// F .. first, S .. second +template +F bimap_cvt(const boost::bimap &bmap, S s, const F & def_value) { + const auto &map = bmap.right; + auto found_item = map.find(s); + + // only for back and forward compatibility + assert(found_item != map.end()); + if (found_item == map.end()) + return def_value; + + return found_item->second; +} + +template +S bimap_cvt(const boost::bimap &bmap, F f, const S &def_value) +{ + const auto &map = bmap.left; + auto found_item = map.find(f); + + // only for back and forward compatibility + assert(found_item != map.end()); + if (found_item == map.end()) + return def_value; + + return found_item->second; +} + +} // namespace /// /// TextConfiguration serialization /// -using TypeToName = boost::bimap; -const TypeToName TextConfigurationSerialization::type_to_name = +const TextConfigurationSerialization::TypeToName TextConfigurationSerialization::type_to_name = boost::assign::list_of (EmbossStyle::Type::file_path, "file_name") (EmbossStyle::Type::wx_win_font_descr, "wxFontDescriptor_Windows") (EmbossStyle::Type::wx_lin_font_descr, "wxFontDescriptor_Linux") (EmbossStyle::Type::wx_mac_font_descr, "wxFontDescriptor_MacOsX"); +const TextConfigurationSerialization::HorizontalAlignToName TextConfigurationSerialization::horizontal_align_to_name = + boost::assign::list_of + (FontProp::HorizontalAlign::left, "left") + (FontProp::HorizontalAlign::center, "center") + (FontProp::HorizontalAlign::right, "right"); + +const TextConfigurationSerialization::VerticalAlignToName TextConfigurationSerialization::vertical_align_to_name = + boost::assign::list_of + (FontProp::VerticalAlign::top, "top") + (FontProp::VerticalAlign::center, "middle") + (FontProp::VerticalAlign::bottom, "bottom"); void TextConfigurationSerialization::to_xml(std::stringstream &stream, const TextConfiguration &tc) { stream << " <" << TEXT_TAG << " "; stream << TEXT_DATA_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(tc.text) << "\" "; // font item - const EmbossStyle &fi = tc.style; - stream << STYLE_NAME_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(fi.name) << "\" "; - stream << FONT_DESCRIPTOR_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(fi.path) << "\" "; - stream << FONT_DESCRIPTOR_TYPE_ATTR << "=\"" << TextConfigurationSerialization::get_name(fi.type) << "\" "; + const EmbossStyle &style = tc.style; + stream << STYLE_NAME_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(style.name) << "\" "; + stream << FONT_DESCRIPTOR_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(style.path) << "\" "; + constexpr std::string_view dafault_type{"undefined"}; + std::string_view style_type = bimap_cvt(type_to_name, style.type, dafault_type); + stream << FONT_DESCRIPTOR_TYPE_ATTR << "=\"" << style_type << "\" "; // font property const FontProp &fp = tc.style.prop; @@ -3519,17 +3672,14 @@ void TextConfigurationSerialization::to_xml(std::stringstream &stream, const Tex stream << LINE_GAP_ATTR << "=\"" << *fp.line_gap << "\" "; stream << LINE_HEIGHT_ATTR << "=\"" << fp.size_in_mm << "\" "; - stream << DEPTH_ATTR << "=\"" << fp.emboss << "\" "; - if (fp.use_surface) - stream << USE_SURFACE_ATTR << "=\"" << 1 << "\" "; if (fp.boldness.has_value()) stream << BOLDNESS_ATTR << "=\"" << *fp.boldness << "\" "; if (fp.skew.has_value()) stream << SKEW_ATTR << "=\"" << *fp.skew << "\" "; - if (fp.distance.has_value()) - stream << DISTANCE_ATTR << "=\"" << *fp.distance << "\" "; - if (fp.angle.has_value()) - stream << ANGLE_ATTR << "=\"" << *fp.angle << "\" "; + if (fp.per_glyph) + stream << PER_GLYPH_ATTR << "=\"" << 1 << "\" "; + stream << HORIZONTAL_ALIGN_ATTR << "=\"" << bimap_cvt(horizontal_align_to_name, fp.align.first, dafault_type) << "\" "; + stream << VERTICAL_ALIGN_ATTR << "=\"" << bimap_cvt(vertical_align_to_name, fp.align.second, dafault_type) << "\" "; if (fp.collection_number.has_value()) stream << COLLECTION_NUMBER_ATTR << "=\"" << *fp.collection_number << "\" "; // font descriptor @@ -3542,50 +3692,44 @@ void TextConfigurationSerialization::to_xml(std::stringstream &stream, const Tex if (fp.weight.has_value()) stream << FONT_WEIGHT_ATTR << "=\"" << *fp.weight << "\" "; - // FIX of baked transformation - assert(tc.fix_3mf_tr.has_value()); - stream << TRANSFORM_ATTR << "=\""; - _3MF_Exporter::add_transformation(stream, *tc.fix_3mf_tr); - stream << "\" "; - stream << "/>\n"; // end TEXT_TAG } +namespace { -void TextConfigurationSerialization::create_fix_and_store( - std::stringstream &stream, TextConfiguration tc, const ModelVolume &volume) -{ - const auto& vertices = volume.mesh().its.vertices; - assert(!vertices.empty()); - if (vertices.empty()) { - to_xml(stream, tc); - return; +FontProp::HorizontalAlign read_horizontal_align(const char **attributes, unsigned int num_attributes, const TextConfigurationSerialization::HorizontalAlignToName& horizontal_align_to_name){ + std::string horizontal_align_str = get_attribute_value_string(attributes, num_attributes, HORIZONTAL_ALIGN_ATTR); + // FIX of baked transformation + if (horizontal_align_str.empty()) + return FontProp::HorizontalAlign::center; + + if (horizontal_align_str.length() == 1) { + int horizontal_align_int = 0; + if(boost::spirit::qi::parse(horizontal_align_str.c_str(), horizontal_align_str.c_str() + 1, boost::spirit::qi::int_, horizontal_align_int)) + return static_cast(horizontal_align_int); +} + + return bimap_cvt(horizontal_align_to_name, std::string_view(horizontal_align_str), FontProp::HorizontalAlign::center); } // IMPROVE: check if volume was modified (translated, rotated OR scaled) +FontProp::VerticalAlign read_vertical_align(const char **attributes, unsigned int num_attributes, const TextConfigurationSerialization::VerticalAlignToName& vertical_align_to_name){ + std::string vertical_align_str = get_attribute_value_string(attributes, num_attributes, VERTICAL_ALIGN_ATTR); // when no change do not calculate transformation only store original fix matrix // Create transformation used after load actual stored volume - const Transform3d &actual_trmat = volume.get_transformation().get_matrix(); - Vec3d min = actual_trmat * vertices.front().cast(); - Vec3d max = min; - for (const Vec3f &v : vertices) { - Vec3d vd = actual_trmat * v.cast(); - for (size_t i = 0; i < 3; ++i) { - if (min[i] > vd[i]) min[i] = vd[i]; - if (max[i] < vd[i]) max[i] = vd[i]; - } - } - Vec3d center = (max + min) / 2; - Transform3d post_trmat = Transform3d::Identity(); - post_trmat.translate(center); + if (vertical_align_str.empty()) + return FontProp::VerticalAlign::center; - Transform3d fix_trmat = actual_trmat.inverse() * post_trmat; - if (!tc.fix_3mf_tr.has_value()) { - tc.fix_3mf_tr = fix_trmat; - } else if (!fix_trmat.isApprox(Transform3d::Identity(), 1e-5)) { - tc.fix_3mf_tr = *tc.fix_3mf_tr * fix_trmat; + // Back compatibility + // PS 2.6.1 store indices(0|1|2) instead of text for align + if (vertical_align_str.length() == 1) { + int vertical_align_int = 0; + if(boost::spirit::qi::parse(vertical_align_str.c_str(), vertical_align_str.c_str() + 1, boost::spirit::qi::int_, vertical_align_int)) + return static_cast(vertical_align_int); + } + + return bimap_cvt(vertical_align_to_name, std::string_view(vertical_align_str), FontProp::VerticalAlign::center); } - to_xml(stream, tc); } std::optional TextConfigurationSerialization::read(const char **attributes, unsigned int num_attributes) @@ -3601,19 +3745,16 @@ std::optional TextConfigurationSerialization::read(const char float skew = get_attribute_value_float(attributes, num_attributes, SKEW_ATTR); if (std::fabs(skew) > std::numeric_limits::epsilon()) fp.skew = skew; - float distance = get_attribute_value_float(attributes, num_attributes, DISTANCE_ATTR); - if (std::fabs(distance) > std::numeric_limits::epsilon()) - fp.distance = distance; - int use_surface = get_attribute_value_int(attributes, num_attributes, USE_SURFACE_ATTR); - if (use_surface == 1) fp.use_surface = true; - float angle = get_attribute_value_float(attributes, num_attributes, ANGLE_ATTR); - if (std::fabs(angle) > std::numeric_limits::epsilon()) - fp.angle = angle; + int per_glyph = get_attribute_value_int(attributes, num_attributes, PER_GLYPH_ATTR); + if (per_glyph == 1) fp.per_glyph = true; + + fp.align = FontProp::Align( + read_horizontal_align(attributes, num_attributes, horizontal_align_to_name), + read_vertical_align(attributes, num_attributes, vertical_align_to_name)); int collection_number = get_attribute_value_int(attributes, num_attributes, COLLECTION_NUMBER_ATTR); if (collection_number > 0) fp.collection_number = static_cast(collection_number); fp.size_in_mm = get_attribute_value_float(attributes, num_attributes, LINE_HEIGHT_ATTR); - fp.emboss = get_attribute_value_float(attributes, num_attributes, DEPTH_ATTR); std::string family = get_attribute_value_string(attributes, num_attributes, FONT_FAMILY_ATTR); if (!family.empty()) fp.family = family; @@ -3627,10 +3768,133 @@ std::optional TextConfigurationSerialization::read(const char std::string style_name = get_attribute_value_string(attributes, num_attributes, STYLE_NAME_ATTR); std::string font_descriptor = get_attribute_value_string(attributes, num_attributes, FONT_DESCRIPTOR_ATTR); std::string type_str = get_attribute_value_string(attributes, num_attributes, FONT_DESCRIPTOR_TYPE_ATTR); - EmbossStyle::Type type = TextConfigurationSerialization::get_type(type_str); - EmbossStyle fi{ style_name, std::move(font_descriptor), type, std::move(fp) }; + EmbossStyle::Type type = bimap_cvt(type_to_name, std::string_view{type_str}, EmbossStyle::Type::undefined); std::string text = get_attribute_value_string(attributes, num_attributes, TEXT_DATA_ATTR); + EmbossStyle es{style_name, std::move(font_descriptor), type, std::move(fp)}; + return TextConfiguration{std::move(es), std::move(text)}; +} + +EmbossShape TextConfigurationSerialization::read_old(const char **attributes, unsigned int num_attributes) +{ + EmbossShape es; + std::string fix_tr_mat_str = get_attribute_value_string(attributes, num_attributes, TRANSFORM_ATTR); + if (!fix_tr_mat_str.empty()) + es.fix_3mf_tr = get_transform_from_3mf_specs_string(fix_tr_mat_str); + + + if (get_attribute_value_int(attributes, num_attributes, USE_SURFACE_ATTR) == 1) + es.projection.use_surface = true; + + es.projection.depth = get_attribute_value_float(attributes, num_attributes, DEPTH_ATTR); + + int use_surface = get_attribute_value_int(attributes, num_attributes, USE_SURFACE_ATTR); + if (use_surface == 1) + es.projection.use_surface = true; + + return es; +} + +namespace { +Transform3d create_fix(const std::optional &prev, const ModelVolume &volume) +{ + // IMPROVE: check if volume was modified (translated, rotated OR scaled) + // when no change do not calculate transformation only store original fix matrix + + // Create transformation used after load actual stored volume + const Transform3d &actual_trmat = volume.get_matrix(); + + const auto &vertices = volume.mesh().its.vertices; + Vec3d min = actual_trmat * vertices.front().cast(); + Vec3d max = min; + for (const Vec3f &v : vertices) { + Vec3d vd = actual_trmat * v.cast(); + for (size_t i = 0; i < 3; ++i) { + if (min[i] > vd[i]) + min[i] = vd[i]; + if (max[i] < vd[i]) + max[i] = vd[i]; + } + } + Vec3d center = (max + min) / 2; + Transform3d post_trmat = Transform3d::Identity(); + post_trmat.translate(center); + + Transform3d fix_trmat = actual_trmat.inverse() * post_trmat; + if (!prev.has_value()) + return fix_trmat; + + // check whether fix somehow differ previous + if (fix_trmat.isApprox(Transform3d::Identity(), 1e-5)) + return *prev; + + return *prev * fix_trmat; +} + +bool to_xml(std::stringstream &stream, const EmbossShape::SvgFile &svg, const ModelVolume &volume, mz_zip_archive &archive){ + if (svg.path_in_3mf.empty()) + return true; // EmbossedText OR unwanted store .svg file into .3mf (protection of copyRight) + + if (!svg.path.empty()) + stream << SVG_FILE_PATH_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(svg.path) << "\" "; + stream << SVG_FILE_PATH_IN_3MF_ATTR << "=\"" << xml_escape_double_quotes_attribute_value(svg.path_in_3mf) << "\" "; + + std::shared_ptr file_data = svg.file_data; + assert(file_data != nullptr); + if (file_data == nullptr && !svg.path.empty()) + file_data = read_from_disk(svg.path); + if (file_data == nullptr) { + BOOST_LOG_TRIVIAL(warning) << "Can't write svg file no filedata"; + return false; + } + const std::string &file_data_str = *file_data; + + return mz_zip_writer_add_mem(&archive, svg.path_in_3mf.c_str(), + (const void *) file_data_str.c_str(), file_data_str.size(), MZ_DEFAULT_COMPRESSION); +} + +} // namespace + +void to_xml(std::stringstream &stream, const EmbossShape &es, const ModelVolume &volume, mz_zip_archive &archive) +{ + stream << " <" << SHAPE_TAG << " "; + if (es.svg_file.has_value()) + if(!to_xml(stream, *es.svg_file, volume, archive)) + BOOST_LOG_TRIVIAL(warning) << "Can't write svg file defiden embossed shape into 3mf"; + + stream << SHAPE_SCALE_ATTR << "=\"" << es.scale << "\" "; + + if (!es.final_shape.is_healed) + stream << UNHEALED_ATTR << "=\"" << 1 << "\" "; + + // projection + const EmbossProjection &p = es.projection; + stream << DEPTH_ATTR << "=\"" << p.depth << "\" "; + if (p.use_surface) + stream << USE_SURFACE_ATTR << "=\"" << 1 << "\" "; + + // FIX of baked transformation + Transform3d fix = create_fix(es.fix_3mf_tr, volume); + stream << TRANSFORM_ATTR << "=\""; + _3MF_Exporter::add_transformation(stream, fix); + stream << "\" "; + + stream << "/>\n"; // end SHAPE_TAG +} + +std::optional read_emboss_shape(const char **attributes, unsigned int num_attributes) { + double scale = get_attribute_value_float(attributes, num_attributes, SHAPE_SCALE_ATTR); + int unhealed = get_attribute_value_int(attributes, num_attributes, UNHEALED_ATTR); + bool is_healed = unhealed != 1; + + EmbossProjection projection; + projection.depth = get_attribute_value_float(attributes, num_attributes, DEPTH_ATTR); + if (is_approx(projection.depth, 0.)) + projection.depth = 10.; + + int use_surface = get_attribute_value_int(attributes, num_attributes, USE_SURFACE_ATTR); + if (use_surface == 1) + projection.use_surface = true; std::optional fix_tr_mat; std::string fix_tr_mat_str = get_attribute_value_string(attributes, num_attributes, TRANSFORM_ATTR); @@ -3638,7 +3902,19 @@ std::optional TextConfigurationSerialization::read(const char fix_tr_mat = get_transform_from_3mf_specs_string(fix_tr_mat_str); } - return TextConfiguration{std::move(fi), std::move(text), std::move(fix_tr_mat)}; + std::string file_path = get_attribute_value_string(attributes, num_attributes, SVG_FILE_PATH_ATTR); + std::string file_path_3mf = get_attribute_value_string(attributes, num_attributes, SVG_FILE_PATH_IN_3MF_ATTR); + + // MayBe: store also shapes to not store svg + // But be carefull curve will be lost -> scale will not change sampling + // shapes could be loaded from SVG + ExPolygonsWithIds shapes; + // final shape could be calculated from shapes + HealedExPolygons final_shape; + final_shape.is_healed = is_healed; + + EmbossShape::SvgFile svg{file_path, file_path_3mf}; + return EmbossShape{std::move(shapes), std::move(final_shape), scale, std::move(projection), std::move(fix_tr_mat), std::move(svg)}; } diff --git a/src/libslic3r/Format/AnycubicSLA.cpp b/src/libslic3r/Format/AnycubicSLA.cpp index 6eeb6b3..fc3792e 100644 --- a/src/libslic3r/Format/AnycubicSLA.cpp +++ b/src/libslic3r/Format/AnycubicSLA.cpp @@ -104,21 +104,21 @@ typedef struct anycubicsla_format_header { char tag[12]; std::uint32_t payload_size; - std::float_t pixel_size_um; - std::float_t layer_height_mm; - std::float_t exposure_time_s; - std::float_t delay_before_exposure_s; - std::float_t bottom_exposure_time_s; - std::float_t bottom_layer_count; - std::float_t lift_distance_mm; - std::float_t lift_speed_mms; - std::float_t retract_speed_mms; - std::float_t volume_ml; + float pixel_size_um; + float layer_height_mm; + float exposure_time_s; + float delay_before_exposure_s; + float bottom_exposure_time_s; + float bottom_layer_count; + float lift_distance_mm; + float lift_speed_mms; + float retract_speed_mms; + float volume_ml; std::uint32_t antialiasing; std::uint32_t res_x; std::uint32_t res_y; - std::float_t weight_g; - std::float_t price; + float weight_g; + float price; std::uint32_t price_currency; std::uint32_t per_layer_override; // ? unknown meaning ? std::uint32_t print_time_s; @@ -149,19 +149,19 @@ typedef struct anycubicsla_format_layer { std::uint32_t image_offset; std::uint32_t image_size; - std::float_t lift_distance_mm; - std::float_t lift_speed_mms; - std::float_t exposure_time_s; - std::float_t layer_height_mm; - std::float_t layer44; // unkown - usually 0 - std::float_t layer48; // unkown - usually 0 + float lift_distance_mm; + float lift_speed_mms; + float exposure_time_s; + float layer_height_mm; + float layer44; // unkown - usually 0 + float layer48; // unkown - usually 0 } anycubicsla_format_layer; typedef struct anycubicsla_format_misc { - std::float_t bottom_layer_height_mm; - std::float_t bottom_lift_distance_mm; - std::float_t bottom_lift_speed_mms; + float bottom_layer_height_mm; + float bottom_lift_distance_mm; + float bottom_lift_speed_mms; } anycubicsla_format_misc; @@ -192,9 +192,9 @@ private: namespace { -std::float_t get_cfg_value_f(const DynamicConfig &cfg, +float get_cfg_value_f(const DynamicConfig &cfg, const std::string &key, - const std::float_t &def = 0.f) + const float &def = 0.f) { if (cfg.has(key)) { if (auto opt = cfg.option(key)) @@ -276,10 +276,10 @@ void fill_header(anycubicsla_format_header &h, { CNumericLocalesSetter locales_setter; - std::float_t bottle_weight_g; - std::float_t bottle_volume_ml; - std::float_t bottle_cost; - std::float_t material_density; + float bottle_weight_g; + float bottle_volume_ml; + float bottle_cost; + float material_density; auto &cfg = print.full_print_config(); auto mat_opt = cfg.option("material_notes"); std::string mnotes = mat_opt? cfg.option("material_notes")->serialize() : ""; @@ -416,7 +416,7 @@ static void anycubicsla_write_int32(std::ofstream &out, std::uint32_t val) out.write((const char *) &i3, 1); out.write((const char *) &i4, 1); } -static void anycubicsla_write_float(std::ofstream &out, std::float_t val) +static void anycubicsla_write_float(std::ofstream &out, float val) { std::uint32_t *f = (std::uint32_t *) &val; anycubicsla_write_int32(out, *f); diff --git a/src/libslic3r/Format/SVG.cpp b/src/libslic3r/Format/SVG.cpp new file mode 100644 index 0000000..40bf8d0 --- /dev/null +++ b/src/libslic3r/Format/SVG.cpp @@ -0,0 +1,97 @@ +#include "../libslic3r.h" +#include "../Model.hpp" +#include "../TriangleMesh.hpp" +#include "../NSVGUtils.hpp" +#include "../Emboss.hpp" + +#include + +namespace { +std::string get_file_name(const std::string &file_path) +{ + if (file_path.empty()) + return file_path; + + size_t pos_last_delimiter = file_path.find_last_of("/\\"); + if (pos_last_delimiter == std::string::npos) { + // should not happend that in path is not delimiter + assert(false); + pos_last_delimiter = 0; + } + + size_t pos_point = file_path.find_last_of('.'); + if (pos_point == std::string::npos || pos_point < pos_last_delimiter // last point is inside of directory path + ) { + // there is no extension + assert(false); + pos_point = file_path.size(); + } + + size_t offset = pos_last_delimiter + 1; // result should not contain last delimiter ( +1 ) + size_t count = pos_point - pos_last_delimiter - 1; // result should not contain extension point ( -1 ) + return file_path.substr(offset, count); +} +} + +namespace Slic3r { + +bool load_svg(const std::string &input_file, Model &output_model) +{ + EmbossShape::SvgFile svg_file{input_file}; + const NSVGimage* image = init_image(svg_file); + if (image == nullptr) { + BOOST_LOG_TRIVIAL(error) << "SVG file(\"" << input_file << "\") couldn't be parsed by nano svg."; + return false; + } + + double tesselation_tolerance = 1e10; + NSVGLineParams params(tesselation_tolerance); + ExPolygonsWithIds shapes = create_shape_with_ids(*image, params); + if (shapes.empty()) { + BOOST_LOG_TRIVIAL(error) << "SVG file(\"" << input_file << "\") do not contain embossedabled shape."; + return false; // No shapes in svg + } + + double depth_in_mm = 10.; // in mm + bool use_surface = false; + EmbossProjection emboss_projection{depth_in_mm, use_surface}; + + EmbossShape emboss_shape; + emboss_shape.shapes_with_ids = std::move(shapes); + emboss_shape.projection = std::move(emboss_projection); + emboss_shape.svg_file = std::move(svg_file); + + // unify to one expolygons + // EmbossJob.cpp --> ExPolygons create_shape(DataBase &input, Fnc was_canceled) { + ExPolygons union_shape = union_with_delta(emboss_shape, Emboss::UNION_DELTA, Emboss::UNION_MAX_ITERATIN); + + // create projection + double scale = emboss_shape.scale; + double depth = emboss_shape.projection.depth / scale; + auto projectZ = std::make_unique(depth); + Transform3d tr{Eigen::Scaling(scale)}; + Emboss::ProjectTransform project(std::move(projectZ), tr); + + // convert 2d shape to 3d triangles + indexed_triangle_set its = Emboss::polygons2model(union_shape, project); + TriangleMesh triangl_mesh(std::move(its)); + + // add mesh to model + ModelObject *object = output_model.add_object(); + assert(object != nullptr); + if (object == nullptr) + return false; + object->name = get_file_name(input_file); + ModelVolume* volume = object->add_volume(std::move(triangl_mesh)); + assert(volume != nullptr); + if (volume == nullptr) { + output_model.delete_object(object); + return false; + } + volume->name = object->name; // copy + volume->emboss_shape = std::move(emboss_shape); + object->invalidate_bounding_box(); + return true; +} + +}; // namespace Slic3r diff --git a/src/libslic3r/Format/SVG.hpp b/src/libslic3r/Format/SVG.hpp new file mode 100644 index 0000000..ee05089 --- /dev/null +++ b/src/libslic3r/Format/SVG.hpp @@ -0,0 +1,14 @@ +#ifndef slic3r_Format_SVG_hpp_ +#define slic3r_Format_SVG_hpp_ + +#include + +namespace Slic3r { + +class Model; +// Load an SVG file as embossed shape into a provided model. +bool load_svg(const std::string &input_file, Model &output_model); + +}; // namespace Slic3r + +#endif /* slic3r_Format_SVG_hpp_ */ diff --git a/src/libslic3r/Format/objparser.cpp b/src/libslic3r/Format/objparser.cpp index fdd7448..e7d02a0 100644 --- a/src/libslic3r/Format/objparser.cpp +++ b/src/libslic3r/Format/objparser.cpp @@ -7,9 +7,20 @@ #include "objparser.hpp" #include "libslic3r/LocalesUtils.hpp" +#include "fast_float/fast_float.h" namespace ObjParser { +static double strtod_clocale(const char* str, char const** str_end) +{ + double val = 0.; + auto [pend, ec] = fast_float::from_chars(str, *str_end, val); + if (pend != str && ec != std::errc::result_out_of_range) + *str_end = pend; // success + else + *str_end = str; + return val; +} static bool obj_parseline(const char *line, ObjData &data) { #define EATWS() while (*line == ' ' || *line == '\t') ++ line @@ -41,15 +52,15 @@ static bool obj_parseline(const char *line, ObjData &data) if (c2 != ' ' && c2 != '\t') return false; EATWS(); - char *endptr = 0; - double u = strtod(line, &endptr); + const char *endptr = 0; + double u = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t')) return false; line = endptr; EATWS(); double v = 0; if (*line != 0) { - v = strtod(line, &endptr); + v = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; @@ -57,7 +68,7 @@ static bool obj_parseline(const char *line, ObjData &data) } double w = 0; if (*line != 0) { - w = strtod(line, &endptr); + w = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; @@ -78,18 +89,18 @@ static bool obj_parseline(const char *line, ObjData &data) if (c2 != ' ' && c2 != '\t') return false; EATWS(); - char *endptr = 0; - double x = strtod(line, &endptr); + const char *endptr = 0; + double x = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t')) return false; line = endptr; EATWS(); - double y = strtod(line, &endptr); + double y = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t')) return false; line = endptr; EATWS(); - double z = strtod(line, &endptr); + double z = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; @@ -108,20 +119,20 @@ static bool obj_parseline(const char *line, ObjData &data) if (c2 != ' ' && c2 != '\t') return false; EATWS(); - char *endptr = 0; - double u = strtod(line, &endptr); + const char *endptr = 0; + double u = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; EATWS(); - double v = strtod(line, &endptr); + double v = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; EATWS(); double w = 0; if (*line != 0) { - w = strtod(line, &endptr); + w = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; @@ -140,25 +151,25 @@ static bool obj_parseline(const char *line, ObjData &data) if (c2 != ' ' && c2 != '\t') return false; EATWS(); - char *endptr = 0; - double x = strtod(line, &endptr); + const char *endptr = 0; + double x = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t')) return false; line = endptr; EATWS(); - double y = strtod(line, &endptr); + double y = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t')) return false; line = endptr; EATWS(); - double z = strtod(line, &endptr); + double z = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; EATWS(); double w = 1.0; if (*line != 0) { - w = strtod(line, &endptr); + w = strtod_clocale(line, &endptr); if (endptr == 0 || (*endptr != ' ' && *endptr != '\t' && *endptr != 0)) return false; line = endptr; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 5cc3b96..c45c1e3 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1,4 +1,5 @@ #include "Config.hpp" +#include "Geometry/Circle.hpp" #include "libslic3r.h" #include "GCode/ExtrusionProcessor.hpp" #include "I18N.hpp" @@ -6,9 +7,11 @@ #include "Exception.hpp" #include "ExtrusionEntity.hpp" #include "Geometry/ConvexHull.hpp" +#include "GCode/LabelObjects.hpp" #include "GCode/PrintExtents.hpp" #include "GCode/Thumbnails.hpp" #include "GCode/WipeTower.hpp" +#include "GCode/WipeTowerIntegration.hpp" #include "Point.hpp" #include "Polygon.hpp" #include "PrintConfig.hpp" @@ -19,12 +22,13 @@ #include "ClipperUtils.hpp" #include "libslic3r.h" #include "LocalesUtils.hpp" -#include "libslic3r/format.hpp" +#include "format.hpp" #include #include #include #include +#include #include #include @@ -106,7 +110,7 @@ namespace Slic3r { return ok; } - std::string OozePrevention::pre_toolchange(GCode& gcodegen) + std::string OozePrevention::pre_toolchange(GCodeGenerator &gcodegen) { std::string gcode; @@ -132,314 +136,27 @@ namespace Slic3r { return gcode; } - std::string OozePrevention::post_toolchange(GCode& gcodegen) + std::string OozePrevention::post_toolchange(GCodeGenerator &gcodegen) { return (gcodegen.config().standby_temperature_delta.value != 0) ? gcodegen.writer().set_temperature(this->_get_temp(gcodegen), true, gcodegen.writer().extruder()->id()) : std::string(); } - int OozePrevention::_get_temp(const GCode& gcodegen) const + int OozePrevention::_get_temp(const GCodeGenerator &gcodegen) const { - return (gcodegen.layer() == nullptr || gcodegen.layer()->id() == 0) + return (gcodegen.layer() == nullptr || gcodegen.layer()->id() == 0 + || gcodegen.config().temperature.get_at(gcodegen.writer().extruder()->id()) == 0) ? gcodegen.config().first_layer_temperature.get_at(gcodegen.writer().extruder()->id()) : gcodegen.config().temperature.get_at(gcodegen.writer().extruder()->id()); } - std::string Wipe::wipe(GCode& gcodegen, bool toolchange) - { - std::string gcode; - const Extruder &extruder = *gcodegen.writer().extruder(); - - // Remaining quantized retraction length. - if (double retract_length = extruder.retract_to_go(toolchange ? extruder.retract_length_toolchange() : extruder.retract_length()); - retract_length > 0 && this->path.size() >= 2) { - // Reduce feedrate a bit; travel speed is often too high to move on existing material. - // Too fast = ripping of existing material; too slow = short wipe path, thus more blob. - const double wipe_speed = gcodegen.writer().config.travel_speed.value * 0.8; - // Reduce retraction length a bit to avoid effective retraction speed to be greater than the configured one - // due to rounding (TODO: test and/or better math for this). - const double xy_to_e = 0.95 * extruder.retract_speed() / wipe_speed; - // Start with the current position, which may be different from the wipe path start in case of loop clipping. - Vec2d prev = gcodegen.point_to_gcode_quantized(gcodegen.last_pos()); - auto it = this->path.points.begin(); - Vec2d p = gcodegen.point_to_gcode_quantized(*(++ it)); - if (p != prev) { - gcode += ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start) + "\n"; - auto end = this->path.points.end(); - bool done = false; - for (; it != end && ! done; ++ it) { - p = gcodegen.point_to_gcode_quantized(*it); - double segment_length = (p - prev).norm(); - double dE = GCodeFormatter::quantize_e(xy_to_e * segment_length); - if (dE > retract_length - EPSILON) { - if (dE > retract_length + EPSILON) - // Shorten the segment. - p = prev + (p - prev) * (retract_length / dE); - dE = retract_length; - done = true; - } - //FIXME one shall not generate the unnecessary G1 Fxxx commands, here wipe_speed is a constant inside this cycle. - // Is it here for the cooling markers? Or should it be outside of the cycle? - gcode += gcodegen.writer().set_speed(wipe_speed * 60, {}, gcodegen.enable_cooling_markers() ? ";_WIPE" : ""); - gcode += gcodegen.writer().extrude_to_xy(p, -dE, "wipe and retract"); - prev = p; - retract_length -= dE; - } - // add tag for processor - gcode += ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_End) + "\n"; - gcodegen.set_last_pos(gcodegen.gcode_to_point(prev)); - } - } - - // Prevent wiping again on the same path. - this->reset_path(); - return gcode; - } - - static inline Point wipe_tower_point_to_object_point(GCode& gcodegen, const Vec2f& wipe_tower_pt) - { - return Point(scale_(wipe_tower_pt.x() - gcodegen.origin()(0)), scale_(wipe_tower_pt.y() - gcodegen.origin()(1))); - } - - std::string WipeTowerIntegration::append_tcr(GCode& gcodegen, const WipeTower::ToolChangeResult& tcr, int new_extruder_id, double z) const - { - if (new_extruder_id != -1 && new_extruder_id != tcr.new_tool) - throw Slic3r::InvalidArgument("Error: WipeTowerIntegration::append_tcr was asked to do a toolchange it didn't expect."); - - std::string gcode; - - // Toolchangeresult.gcode assumes the wipe tower corner is at the origin (except for priming lines) - // We want to rotate and shift all extrusions (gcode postprocessing) and starting and ending position - float alpha = m_wipe_tower_rotation / 180.f * float(M_PI); - - auto transform_wt_pt = [&alpha, this](const Vec2f& pt) -> Vec2f { - Vec2f out = Eigen::Rotation2Df(alpha) * pt; - out += m_wipe_tower_pos; - return out; - }; - - Vec2f start_pos = tcr.start_pos; - Vec2f end_pos = tcr.end_pos; - if (! tcr.priming) { - start_pos = transform_wt_pt(start_pos); - end_pos = transform_wt_pt(end_pos); - } - - Vec2f wipe_tower_offset = tcr.priming ? Vec2f::Zero() : m_wipe_tower_pos; - float wipe_tower_rotation = tcr.priming ? 0.f : alpha; - - std::string tcr_rotated_gcode = post_process_wipe_tower_moves(tcr, wipe_tower_offset, wipe_tower_rotation); - - gcode += gcodegen.writer().unlift(); // Make sure there is no z-hop (in most cases, there isn't). - - double current_z = gcodegen.writer().get_position().z(); - if (z == -1.) // in case no specific z was provided, print at current_z pos - z = current_z; - - const bool needs_toolchange = gcodegen.writer().need_toolchange(new_extruder_id); - const bool will_go_down = ! is_approx(z, current_z); - const bool is_ramming = (gcodegen.config().single_extruder_multi_material) - || (! gcodegen.config().single_extruder_multi_material && gcodegen.config().filament_multitool_ramming.get_at(tcr.initial_tool)); - const bool should_travel_to_tower = ! tcr.priming - && (tcr.force_travel // wipe tower says so - || ! needs_toolchange // this is just finishing the tower with no toolchange - || is_ramming); - if (should_travel_to_tower) { - // FIXME: It would be better if the wipe tower set the force_travel flag for all toolchanges, - // then we could simplify the condition and make it more readable. - gcode += gcodegen.retract(); - gcodegen.m_avoid_crossing_perimeters.use_external_mp_once(); - gcode += gcodegen.travel_to( - wipe_tower_point_to_object_point(gcodegen, start_pos), - ExtrusionRole::Mixed, - "Travel to a Wipe Tower"); - gcode += gcodegen.unretract(); - } else { - // When this is multiextruder printer without any ramming, we can just change - // the tool without travelling to the tower. - } - - if (will_go_down) { - gcode += gcodegen.writer().retract(); - gcode += gcodegen.writer().travel_to_z(z, "Travel down to the last wipe tower layer."); - gcode += gcodegen.writer().unretract(); - } - - std::string toolchange_gcode_str; - std::string deretraction_str; - if (tcr.priming || (new_extruder_id >= 0 && needs_toolchange)) { - if (is_ramming) - gcodegen.m_wipe.reset_path(); // We don't want wiping on the ramming lines. - toolchange_gcode_str = gcodegen.set_extruder(new_extruder_id, tcr.print_z); // TODO: toolchange_z vs print_z - if (gcodegen.config().wipe_tower) - deretraction_str = gcodegen.unretract(); - } - - - - // Insert the toolchange and deretraction gcode into the generated gcode. - DynamicConfig config; - config.set_key_value("toolchange_gcode", new ConfigOptionString(toolchange_gcode_str)); - config.set_key_value("deretraction_from_wipe_tower_generator", new ConfigOptionString(deretraction_str)); - std::string tcr_gcode, tcr_escaped_gcode = gcodegen.placeholder_parser_process("tcr_rotated_gcode", tcr_rotated_gcode, new_extruder_id, &config); - unescape_string_cstyle(tcr_escaped_gcode, tcr_gcode); - gcode += tcr_gcode; - check_add_eol(toolchange_gcode_str); - - // A phony move to the end position at the wipe tower. - gcodegen.writer().travel_to_xy(end_pos.cast()); - gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, end_pos)); - if (!is_approx(z, current_z)) { - gcode += gcodegen.writer().retract(); - gcode += gcodegen.writer().travel_to_z(current_z, "Travel back up to the topmost object layer."); - gcode += gcodegen.writer().unretract(); - } - - else { - // Prepare a future wipe. - gcodegen.m_wipe.reset_path(); - for (const Vec2f& wipe_pt : tcr.wipe_path) - gcodegen.m_wipe.path.points.emplace_back(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt))); - } - - // Let the planner know we are traveling between objects. - gcodegen.m_avoid_crossing_perimeters.use_external_mp_once(); - return gcode; - } - - // This function postprocesses gcode_original, rotates and moves all G1 extrusions and returns resulting gcode - // Starting position has to be supplied explicitely (otherwise it would fail in case first G1 command only contained one coordinate) - std::string WipeTowerIntegration::post_process_wipe_tower_moves(const WipeTower::ToolChangeResult& tcr, const Vec2f& translation, float angle) const - { - Vec2f extruder_offset = m_extruder_offsets[tcr.initial_tool].cast(); - - std::istringstream gcode_str(tcr.gcode); - std::string gcode_out; - std::string line; - Vec2f pos = tcr.start_pos; - Vec2f transformed_pos = Eigen::Rotation2Df(angle) * pos + translation; - Vec2f old_pos(-1000.1f, -1000.1f); - - while (gcode_str) { - std::getline(gcode_str, line); // we read the gcode line by line - - // All G1 commands should be translated and rotated. X and Y coords are - // only pushed to the output when they differ from last time. - // WT generator can override this by appending the never_skip_tag - if (boost::starts_with(line, "G1 ")) { - bool never_skip = false; - auto it = line.find(WipeTower::never_skip_tag()); - if (it != std::string::npos) { - // remove the tag and remember we saw it - never_skip = true; - line.erase(it, it + WipeTower::never_skip_tag().size()); - } - std::ostringstream line_out; - std::istringstream line_str(line); - line_str >> std::noskipws; // don't skip whitespace - char ch = 0; - line_str >> ch >> ch; // read the "G1" - while (line_str >> ch) { - if (ch == 'X' || ch == 'Y') - line_str >> (ch == 'X' ? pos.x() : pos.y()); - else - line_out << ch; - } - - transformed_pos = Eigen::Rotation2Df(angle) * pos + translation; - - if (transformed_pos != old_pos || never_skip) { - line = line_out.str(); - boost::trim_left(line); // Remove leading spaces - std::ostringstream oss; - oss << std::fixed << std::setprecision(3) << "G1"; - if (transformed_pos.x() != old_pos.x() || never_skip) - oss << " X" << transformed_pos.x() - extruder_offset.x(); - if (transformed_pos.y() != old_pos.y() || never_skip) - oss << " Y" << transformed_pos.y() - extruder_offset.y(); - if (! line.empty()) - oss << " "; - line = oss.str() + line; - old_pos = transformed_pos; - } - } - - gcode_out += line + "\n"; - - // If this was a toolchange command, we should change current extruder offset - if (line == "[toolchange_gcode]") { - extruder_offset = m_extruder_offsets[tcr.new_tool].cast(); - - // If the extruder offset changed, add an extra move so everything is continuous - if (extruder_offset != m_extruder_offsets[tcr.initial_tool].cast()) { - std::ostringstream oss; - oss << std::fixed << std::setprecision(3) - << "G1 X" << transformed_pos.x() - extruder_offset.x() - << " Y" << transformed_pos.y() - extruder_offset.y() - << "\n"; - gcode_out += oss.str(); - } - } - } - return gcode_out; - } - - - std::string WipeTowerIntegration::prime(GCode& gcodegen) - { - std::string gcode; - for (const WipeTower::ToolChangeResult& tcr : m_priming) { - if (! tcr.extrusions.empty()) - gcode += append_tcr(gcodegen, tcr, tcr.new_tool); - } - return gcode; - } - - std::string WipeTowerIntegration::tool_change(GCode& gcodegen, int extruder_id, bool finish_layer) - { - std::string gcode; - assert(m_layer_idx >= 0); - if (gcodegen.writer().need_toolchange(extruder_id) || finish_layer) { - if (m_layer_idx < (int)m_tool_changes.size()) { - if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) - throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); - - // Calculate where the wipe tower layer will be printed. -1 means that print z will not change, - // resulting in a wipe tower with sparse layers. - double wipe_tower_z = -1; - bool ignore_sparse = false; - if (gcodegen.config().wipe_tower_no_sparse_layers.value) { - wipe_tower_z = m_last_wipe_tower_print_z; - ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool && m_layer_idx != 0); - if (m_tool_change_idx == 0 && !ignore_sparse) - wipe_tower_z = m_last_wipe_tower_print_z + m_tool_changes[m_layer_idx].front().layer_height; - } - - if (!ignore_sparse) { - gcode += append_tcr(gcodegen, m_tool_changes[m_layer_idx][m_tool_change_idx++], extruder_id, wipe_tower_z); - m_last_wipe_tower_print_z = wipe_tower_z; - } - } - } - return gcode; - } - - // Print is finished. Now it remains to unload the filament safely with ramming over the wipe tower. - std::string WipeTowerIntegration::finalize(GCode& gcodegen) - { - std::string gcode; - if (std::abs(gcodegen.writer().get_position().z() - m_final_purge.print_z) > EPSILON) - gcode += gcodegen.change_layer(m_final_purge.print_z); - gcode += append_tcr(gcodegen, m_final_purge, -1); - return gcode; - } const std::vector ColorPrintColors::Colors = { "#C0392B", "#E67E22", "#F1C40F", "#27AE60", "#1ABC9C", "#2980B9", "#9B59B6" }; #define EXTRUDER_CONFIG(OPT) m_config.OPT.get_at(m_writer.extruder()->id()) -void GCode::PlaceholderParserIntegration::reset() +void GCodeGenerator::PlaceholderParserIntegration::reset() { this->failed_templates.clear(); this->output_config.clear(); @@ -459,7 +176,7 @@ void GCode::PlaceholderParserIntegration::reset() this->e_restart_extra.clear(); } -void GCode::PlaceholderParserIntegration::init(const GCodeWriter &writer) +void GCodeGenerator::PlaceholderParserIntegration::init(const GCodeWriter &writer) { this->reset(); const std::vector &extruders = writer.extruders(); @@ -495,11 +212,10 @@ void GCode::PlaceholderParserIntegration::init(const GCodeWriter &writer) this->parser.set("zhop", this->opt_zhop); } -void GCode::PlaceholderParserIntegration::update_from_gcodewriter(const GCodeWriter &writer) +void GCodeGenerator::PlaceholderParserIntegration::update_from_gcodewriter(const GCodeWriter &writer) { memcpy(this->position.data(), writer.get_position().data(), sizeof(double) * 3); this->opt_position->values = this->position; - this->opt_zhop->value = writer.get_zhop(); if (this->num_extruders > 0) { const std::vector &extruders = writer.extruders(); @@ -534,7 +250,7 @@ void GCode::PlaceholderParserIntegration::update_from_gcodewriter(const GCodeWri } // Throw if any of the output vector variables were resized by the script. -void GCode::PlaceholderParserIntegration::validate_output_vector_variables() +void GCodeGenerator::PlaceholderParserIntegration::validate_output_vector_variables() { if (this->opt_position->values.size() != 3) throw Slic3r::RuntimeError("\"position\" output variable must not be resized by the script."); @@ -550,9 +266,9 @@ void GCode::PlaceholderParserIntegration::validate_output_vector_variables() // Collect pairs of object_layer + support_layer sorted by print_z. // object_layer & support_layer are considered to be on the same print_z, if they are not further than EPSILON. -GCode::ObjectsLayerToPrint GCode::collect_layers_to_print(const PrintObject& object) +GCodeGenerator::ObjectsLayerToPrint GCodeGenerator::collect_layers_to_print(const PrintObject& object) { - GCode::ObjectsLayerToPrint layers_to_print; + GCodeGenerator::ObjectsLayerToPrint layers_to_print; layers_to_print.reserve(object.layers().size() + object.support_layers().size()); /* @@ -651,7 +367,7 @@ GCode::ObjectsLayerToPrint GCode::collect_layers_to_print(const PrintObject& obj // Prepare for non-sequential printing of multiple objects: Support resp. object layers with nearly identical print_z // will be printed for all objects at once. // Return a list of items. -std::vector> GCode::collect_layers_to_print(const Print& print) +std::vector> GCodeGenerator::collect_layers_to_print(const Print& print) { struct OrderingItem { coordf_t print_z; @@ -805,7 +521,7 @@ namespace DoExport { } } // namespace DoExport -void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* result, ThumbnailsGeneratorCallback thumbnail_cb) +void GCodeGenerator::do_export(Print* print, const char* path, GCodeProcessorResult* result, ThumbnailsGeneratorCallback thumbnail_cb) { CNumericLocalesSetter locales_setter; @@ -843,6 +559,7 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu m_processor.initialize(path_tmp); m_processor.set_print(print); + m_processor.get_binary_data() = bgcode::binarize::BinaryData(); GCodeOutputStream file(boost::nowide::fopen(path_tmp.c_str(), "wb"), m_processor); if (! file.is_open()) throw Slic3r::RuntimeError(std::string("G-code export to ") + path + " failed.\nCannot open the file for writing.\n"); @@ -981,19 +698,22 @@ namespace DoExport { const FullPrintConfig &config, const std::vector &extruders, unsigned int initial_extruder_id, - PrintStatistics &print_statistics) + int total_toolchanges, + PrintStatistics &print_statistics, + bool export_binary_data, + bgcode::binarize::BinaryData &binary_data) { std::string filament_stats_string_out; print_statistics.clear(); - print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges); + print_statistics.total_toolchanges = total_toolchanges; print_statistics.initial_extruder_id = initial_extruder_id; std::vector filament_types; if (! extruders.empty()) { - std::pair out_filament_used_mm ("; filament used [mm] = ", 0); - std::pair out_filament_used_cm3("; filament used [cm3] = ", 0); - std::pair out_filament_used_g ("; filament used [g] = ", 0); - std::pair out_filament_cost ("; filament cost = ", 0); + std::pair out_filament_used_mm(PrintStatistics::FilamentUsedMmMask + " ", 0); + std::pair out_filament_used_cm3(PrintStatistics::FilamentUsedCm3Mask + " ", 0); + std::pair out_filament_used_g(PrintStatistics::FilamentUsedGMask + " ", 0); + std::pair out_filament_cost(PrintStatistics::FilamentCostMask + " ", 0); for (const Extruder &extruder : extruders) { print_statistics.printing_extruders.emplace_back(extruder.id()); filament_types.emplace_back(config.filament_type.get_at(extruder.id())); @@ -1016,13 +736,17 @@ namespace DoExport { dst.first += buf; ++ dst.second; }; + if (!export_binary_data) { append(out_filament_used_mm, "%.2lf", used_filament); append(out_filament_used_cm3, "%.2lf", extruded_volume * 0.001); + } if (filament_weight > 0.) { print_statistics.total_weight = print_statistics.total_weight + filament_weight; + if (!export_binary_data) append(out_filament_used_g, "%.2lf", filament_weight); if (filament_cost > 0.) { print_statistics.total_cost = print_statistics.total_cost + filament_cost; + if (!export_binary_data) append(out_filament_cost, "%.2lf", filament_cost); } } @@ -1031,12 +755,14 @@ namespace DoExport { print_statistics.total_wipe_tower_filament += has_wipe_tower ? used_filament - extruder.used_filament() : 0.; print_statistics.total_wipe_tower_cost += has_wipe_tower ? (extruded_volume - extruder.extruded_volume())* extruder.filament_density() * 0.001 * extruder.filament_cost() * 0.001 : 0.; } + if (!export_binary_data) { filament_stats_string_out += out_filament_used_mm.first; filament_stats_string_out += "\n" + out_filament_used_cm3.first; if (out_filament_used_g.second) filament_stats_string_out += "\n" + out_filament_used_g.first; if (out_filament_cost.second) filament_stats_string_out += "\n" + out_filament_cost.first; + } print_statistics.initial_filament_type = config.filament_type.get_at(initial_extruder_id); std::sort(filament_types.begin(), filament_types.end()); print_statistics.printing_filament_types = filament_types.front(); @@ -1086,8 +812,129 @@ std::vector sort_object_instances_by_model_order(const Pri return instances; } -void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGeneratorCallback thumbnail_cb) +static inline bool arc_welder_enabled(const PrintConfig& print_config) { + return + // Enabled + print_config.arc_fitting != ArcFittingType::Disabled && + // Not a spiral vase print + !print_config.spiral_vase && + // Presure equalizer not used + print_config.max_volumetric_extrusion_rate_slope_negative == 0. && + print_config.max_volumetric_extrusion_rate_slope_positive == 0.; +} + +static inline GCode::SmoothPathCache::InterpolationParameters interpolation_parameters(const PrintConfig& print_config) +{ + return { + scaled(print_config.gcode_resolution.value), + arc_welder_enabled(print_config) ? Geometry::ArcWelder::default_arc_length_percent_tolerance : 0 + }; +} + +static inline GCode::SmoothPathCache smooth_path_interpolate_global(const Print& print) +{ + const GCode::SmoothPathCache::InterpolationParameters interpolation_params = interpolation_parameters(print.config()); + GCode::SmoothPathCache out; + out.interpolate_add(print.skirt(), interpolation_params); + out.interpolate_add(print.brim(), interpolation_params); + return out; +} + +void GCodeGenerator::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGeneratorCallback thumbnail_cb) +{ + const bool export_to_binary_gcode = print.full_print_config().option("gcode_binary")->value; + // if exporting gcode in binary format: + // we generate here the data to be passed to the post-processor, who is responsible to export them to file + // 1) generate the thumbnails + // 2) collect the config data + if (export_to_binary_gcode) { + bgcode::binarize::BinaryData& binary_data = m_processor.get_binary_data(); + + // Unit tests or command line slicing may not define "thumbnails" or "thumbnails_format". + // If "thumbnails_format" is not defined, export to PNG. + auto [thumbnails, errors] = GCodeThumbnails::make_and_check_thumbnail_list(print.full_print_config()); + + if (errors != enum_bitmask()) { + std::string error_str = format("Invalid thumbnails value:"); + error_str += GCodeThumbnails::get_error_string(errors); + throw Slic3r::ExportError(error_str); + } + + if (!thumbnails.empty()) + GCodeThumbnails::generate_binary_thumbnails( + thumbnail_cb, binary_data.thumbnails, thumbnails, + [&print]() { print.throw_if_canceled(); }); + + // file data + binary_data.file_metadata.raw_data.emplace_back("Producer", std::string(SLIC3R_APP_NAME) + " " + std::string(SLIC3R_VERSION)); + + // config data + encode_full_config(print, binary_data.slicer_metadata.raw_data); + + // printer data + binary_data.printer_metadata.raw_data.emplace_back("printer_model", print.config().printer_model.value); // duplicated into config data + std::string filament_types_str; + for (size_t i = 0; i < print.config().filament_type.values.size(); ++i) { + filament_types_str += print.config().filament_type.values[i]; + if (i < print.config().filament_type.values.size() - 1) + filament_types_str += ";"; + } + binary_data.printer_metadata.raw_data.emplace_back("filament_type", filament_types_str); // duplicated into config data + char buf[1024]; + std::string nozzle_diameters_str; + for (size_t i = 0; i < print.config().nozzle_diameter.values.size(); ++i) { + sprintf(buf, i < print.config().nozzle_diameter.values.size() - 1 ? "%.2g," : "%.2g", print.config().nozzle_diameter.values[i]); + nozzle_diameters_str += buf; + } + binary_data.printer_metadata.raw_data.emplace_back("nozzle_diameter", nozzle_diameters_str); // duplicated into config data + std::string bed_temperatures_str; + for (size_t i = 0; i < print.config().bed_temperature.values.size(); ++i) { + sprintf(buf, i < print.config().bed_temperature.values.size() - 1 ? "%d," : "%d", print.config().bed_temperature.values[i]); + bed_temperatures_str += buf; + } + binary_data.printer_metadata.raw_data.emplace_back("bed_temperature", bed_temperatures_str); // duplicated into config data + + const DynamicPrintConfig& cfg = print.full_print_config(); + if (auto opt = cfg.option("brim_width"); opt != nullptr) { + sprintf(buf, "%.2g", dynamic_cast(opt)->value); + binary_data.printer_metadata.raw_data.emplace_back("brim_width", buf); // duplicated into config data + } + if (auto opt = cfg.option("fill_density"); opt != nullptr) { + sprintf(buf, "%.2g%%", dynamic_cast(opt)->value); + binary_data.printer_metadata.raw_data.emplace_back("fill_density", buf); // duplicated into config data + } + if (auto opt = cfg.option("layer_height"); opt != nullptr) { + sprintf(buf, "%.2g", dynamic_cast(opt)->value); + binary_data.printer_metadata.raw_data.emplace_back("layer_height", buf); // duplicated into config data + } + if (auto opt = cfg.option("temperature"); opt != nullptr) { + auto values = dynamic_cast(opt)->values; + std::string temperatures_str; + for (size_t i = 0; i < values.size(); ++i) { + sprintf(buf, i < values.size() - 1 ? "%d," : "%d", values[i]); + temperatures_str += buf; + } + binary_data.printer_metadata.raw_data.emplace_back("temperature", temperatures_str); // duplicated into config data + } + if (auto opt = cfg.option("ironing"); opt != nullptr) + binary_data.printer_metadata.raw_data.emplace_back("ironing", dynamic_cast(opt)->value ? "1" : "0"); // duplicated into config data + if (auto opt = cfg.option("support_material"); opt != nullptr) + binary_data.printer_metadata.raw_data.emplace_back("support_material", dynamic_cast(opt)->value ? "1" : "0"); // duplicated into config data + if (auto opt = cfg.option("extruder_colour"); opt != nullptr) { + auto values = dynamic_cast(opt)->values; + std::string extruder_colours_str; + if (values.size() == 1 && values.front().empty()) + extruder_colours_str = "\"\""; + else { + for (size_t i = 0; i < values.size(); ++i) { + sprintf(buf, i < values.size() - 1 ? "%s;" : "%s", values[i].c_str()); + extruder_colours_str += buf; + } + } + binary_data.printer_metadata.raw_data.emplace_back("extruder_colour", extruder_colours_str); // duplicated into config data + } + } // modifies m_silent_time_estimator_enabled DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled); @@ -1141,19 +988,23 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->m_avoid_crossing_curled_overhangs.init_bed_shape(get_bed_shape(print.config())); } + if (!export_to_binary_gcode) // Write information on the generator. file.write_format("; %s\n\n", Slic3r::header_slic3r_generated().c_str()); - // Unit tests or command line slicing may not define "thumbnails" or "thumbnails_format". - // If "thumbnails_format" is not defined, export to PNG. - if (const auto [thumbnails, thumbnails_format] = std::make_pair( - print.full_print_config().option("thumbnails"), - print.full_print_config().option>("thumbnails_format")); - thumbnails) - GCodeThumbnails::export_thumbnails_to_file( - thumbnail_cb, thumbnails->values, thumbnails_format ? thumbnails_format->value : GCodeThumbnailsFormat::PNG, - [&file](const char* sz) { file.write(sz); }, - [&print]() { print.throw_if_canceled(); }); + if (! export_to_binary_gcode) { + // if exporting gcode in ascii format, generate the thumbnails here + auto [thumbnails, errors] = GCodeThumbnails::make_and_check_thumbnail_list(print.full_print_config()); + if (errors != enum_bitmask()) { + std::string error_str = format("Invalid thumbnails value:"); + error_str += GCodeThumbnails::get_error_string(errors); + throw Slic3r::ExportError(error_str); + } + if (!thumbnails.empty()) + GCodeThumbnails::export_thumbnails_to_file(thumbnail_cb, thumbnails, + [&file](const char* sz) { file.write(sz); }, + [&print]() { print.throw_if_canceled(); }); + } // Write notes (content of the Print Settings tab -> Notes) { @@ -1175,6 +1026,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato const double layer_height = first_object->config().layer_height.value; assert(! print.config().first_layer_height.percent); const double first_layer_height = print.config().first_layer_height.value; + if (!export_to_binary_gcode) { for (size_t region_id = 0; region_id < print.num_print_regions(); ++ region_id) { const PrintRegion ®ion = print.get_print_region(region_id); file.write_format("; external perimeters extrusion width = %.2fmm\n", region.flow(*first_object, frExternalPerimeter, layer_height).width()); @@ -1189,10 +1041,10 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write_format("\n"); } print.throw_if_canceled(); - //B17 - // // adds tags for time estimators - // if (print.config().remaining_times.value) - // file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::First_Line_M73_Placeholder).c_str()); + } + // adds tags for time estimators + if (print.config().remaining_times.value) + file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::First_Line_M73_Placeholder).c_str()); // Starting now, the G-code find / replace post-processor will be enabled. file.find_replace_enable(); @@ -1267,6 +1119,9 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // Emit machine envelope limits for the Marlin firmware. this->print_machine_envelope(file, print); + // Label all objects so printer knows about them since the start. + m_label_objects.init(print); + file.write(m_label_objects.all_objects_header()); // Update output variables after the extruders were initialized. m_placeholder_parser_integration.init(m_writer); // Let the start-up script prime the 1st printing tool. @@ -1280,9 +1135,13 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // For the start / end G-code to do the priming and final filament pull in case there is no wipe tower provided. this->placeholder_parser().set("has_wipe_tower", has_wipe_tower); this->placeholder_parser().set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); - this->placeholder_parser().set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). + this->placeholder_parser().set("total_toolchanges", tool_ordering.toolchanges_count()); { BoundingBoxf bbox(print.config().bed_shape.values); + assert(bbox.defined); + if (! bbox.defined) + // This should not happen, but let's make the compiler happy. + bbox.min = bbox.max = Vec2d::Zero(); this->placeholder_parser().set("print_bed_min", new ConfigOptionFloats({ bbox.min.x(), bbox.min.y() })); this->placeholder_parser().set("print_bed_max", new ConfigOptionFloats({ bbox.max.x(), bbox.max.y() })); this->placeholder_parser().set("print_bed_size", new ConfigOptionFloats({ bbox.size().x(), bbox.size().y() })); @@ -1356,6 +1215,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write(this->set_extruder(initial_extruder_id, 0.)); } + GCode::SmoothPathCache smooth_path_cache_global = smooth_path_interpolate_global(print); // Do all objects for each layer. if (print.config().complete_objects.value) { size_t finished_objects = 0; @@ -1379,7 +1239,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // This happens before Z goes down to layer 0 again, so that no collision happens hopefully. m_enable_cooling_markers = false; // we're not filtering these moves through CoolingBuffer m_avoid_crossing_perimeters.use_external_mp_once(); - file.write(this->retract()); + file.write(this->retract_and_wipe()); file.write(this->travel_to(Point(0, 0), ExtrusionRole::None, "move to origin position for next object")); m_enable_cooling_markers = true; // Disable motion planner when traveling to first object point. @@ -1400,7 +1260,9 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // Process all layers of a single object instance (sequential mode) with a parallel pipeline: // Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser // and export G-code into file. - this->process_layers(print, tool_ordering, collect_layers_to_print(object), *print_object_instance_sequential_active - object.instances().data(), file); + this->process_layers(print, tool_ordering, collect_layers_to_print(object), + *print_object_instance_sequential_active - object.instances().data(), + smooth_path_cache_global, file); ++ finished_objects; // Flag indicating whether the nozzle temperature changes from 1st to 2nd layer were performed. // Reset it when starting another object from 1st layer. @@ -1413,7 +1275,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato std::vector> layers_to_print = collect_layers_to_print(print); // QIDI Multi-Material wipe tower. if (has_wipe_tower && ! layers_to_print.empty()) { - m_wipe_tower.reset(new WipeTowerIntegration(print.config(), *print.wipe_tower_data().priming.get(), print.wipe_tower_data().tool_changes, *print.wipe_tower_data().final_purge.get())); + m_wipe_tower = std::make_unique(print.config(), *print.wipe_tower_data().priming.get(), print.wipe_tower_data().tool_changes, *print.wipe_tower_data().final_purge.get()); file.write(m_writer.travel_to_z(first_layer_height + m_config.z_offset.value, "Move to the first layer height")); if (print.config().single_extruder_multi_material_priming) { file.write(m_wipe_tower->prime(*this)); @@ -1428,7 +1290,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato bool overlap = bbox_prime.overlap(bbox_print); if (print.config().gcode_flavor == gcfMarlinLegacy || print.config().gcode_flavor == gcfMarlinFirmware) { - file.write(this->retract()); + file.write(this->retract_and_wipe()); file.write("M300 S800 P500\n"); // Beep for 500ms, tone 800Hz. if (overlap) { // Wait for the user to remove the priming extrusions. @@ -1456,21 +1318,22 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // Process all layers of all objects (non-sequential mode) with a parallel pipeline: // Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser // and export G-code into file. - this->process_layers(print, tool_ordering, print_object_instances_ordering, layers_to_print, file); + this->process_layers(print, tool_ordering, print_object_instances_ordering, layers_to_print, + smooth_path_cache_global, file); if (m_wipe_tower) // Purge the extruder, pull out the active filament. file.write(m_wipe_tower->finalize(*this)); } // Write end commands to file. - file.write(this->retract()); + file.write(this->retract_and_wipe()); - //B38 - { - std::string gcode; - m_writer.add_object_change_labels(gcode); - file.write(gcode); - } + ////B38 + //{ + // std::string gcode; + // m_writer.add_object_change_labels(gcode); + // file.write(gcode); + //} file.write(m_writer.set_fan(0)); @@ -1513,66 +1376,120 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato print.throw_if_canceled(); // Get filament stats. - file.write(DoExport::update_print_stats_and_format_filament_stats( + const std::string filament_stats_string_out = DoExport::update_print_stats_and_format_filament_stats( // Const inputs has_wipe_tower, print.wipe_tower_data(), this->config(), m_writer.extruders(), initial_extruder_id, + tool_ordering.toolchanges_count(), // Modifies - print.m_print_statistics)); + print.m_print_statistics, + export_to_binary_gcode, + m_processor.get_binary_data() + ); + + if (!export_to_binary_gcode) + file.write(filament_stats_string_out); + if (export_to_binary_gcode) { + bgcode::binarize::BinaryData& binary_data = m_processor.get_binary_data(); + if (print.m_print_statistics.total_toolchanges > 0) + binary_data.print_metadata.raw_data.emplace_back("total toolchanges", std::to_string(print.m_print_statistics.total_toolchanges)); + char buf[1024]; + sprintf(buf, "%.2lf", m_max_layer_z); + binary_data.printer_metadata.raw_data.emplace_back("max_layer_z", buf); + } + else { + // if exporting gcode in ascii format, statistics export is done here file.write("\n"); - file.write_format("; total filament used [g] = %.2lf\n", print.m_print_statistics.total_weight); - file.write_format("; total filament cost = %.2lf\n", print.m_print_statistics.total_cost); + file.write_format(PrintStatistics::TotalFilamentUsedGValueMask.c_str(), print.m_print_statistics.total_weight); + file.write_format(PrintStatistics::TotalFilamentCostValueMask.c_str(), print.m_print_statistics.total_cost); if (print.m_print_statistics.total_toolchanges > 0) file.write_format("; total toolchanges = %i\n", print.m_print_statistics.total_toolchanges); file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str()); // Append full config, delimited by two 'phony' configuration keys qidislicer_config = begin and qidislicer_config = end. // The delimiters are structured as configuration key / value pairs to be parsable by older versions of QIDISlicer G-code viewer. - { + { file.write("\n; qidislicer_config = begin\n"); std::string full_config; append_full_config(print, full_config); if (!full_config.empty()) file.write(full_config); file.write("; qidislicer_config = end\n"); + } } print.throw_if_canceled(); } +// Fill in cache of smooth paths for perimeters, fills and supports of the given object layers. +// Based on params, the paths are either decimated to sparser polylines, or interpolated with circular arches. +void GCodeGenerator::smooth_path_interpolate( + const ObjectLayerToPrint &object_layer_to_print, + const GCode::SmoothPathCache::InterpolationParameters ¶ms, + GCode::SmoothPathCache &out) +{ + if (const Layer *layer = object_layer_to_print.object_layer; layer) { + for (const LayerRegion *layerm : layer->regions()) { + out.interpolate_add(layerm->perimeters(), params); + out.interpolate_add(layerm->fills(), params); + } + } + if (const SupportLayer *layer = object_layer_to_print.support_layer; layer) + out.interpolate_add(layer->support_fills, params); +} // Process all layers of all objects (non-sequential mode) with a parallel pipeline: // Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser // and export G-code into file. -void GCode::process_layers( +void GCodeGenerator::process_layers( const Print &print, const ToolOrdering &tool_ordering, const std::vector &print_object_instances_ordering, const std::vector> &layers_to_print, + const GCode::SmoothPathCache &smooth_path_cache_global, GCodeOutputStream &output_stream) { - // The pipeline is variable: The vase mode filter is optional. size_t layer_to_print_idx = 0; - const auto generator = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, - [this, &print, &tool_ordering, &print_object_instances_ordering, &layers_to_print, &layer_to_print_idx](tbb::flow_control& fc) -> LayerResult { + const GCode::SmoothPathCache::InterpolationParameters interpolation_params = interpolation_parameters(print.config()); + const auto smooth_path_interpolator = tbb::make_filter>(slic3r_tbb_filtermode::serial_in_order, + [this, &print, &layers_to_print, &layer_to_print_idx, &interpolation_params](tbb::flow_control &fc) -> std::pair { if (layer_to_print_idx >= layers_to_print.size()) { - if ((!m_pressure_equalizer && layer_to_print_idx == layers_to_print.size()) || (m_pressure_equalizer && layer_to_print_idx == (layers_to_print.size() + 1))) { + if (layer_to_print_idx == layers_to_print.size() + (m_pressure_equalizer ? 1 : 0)) { fc.stop(); return {}; } else { // Pressure equalizer need insert empty input. Because it returns one layer back. // Insert NOP (no operation) layer; - ++layer_to_print_idx; - return LayerResult::make_nop_layer_result(); + return { layer_to_print_idx ++, {} }; } } else { - const std::pair &layer = layers_to_print[layer_to_print_idx++]; + print.throw_if_canceled(); + size_t idx = layer_to_print_idx ++; + GCode::SmoothPathCache smooth_path_cache; + for (const ObjectLayerToPrint &l : layers_to_print[idx].second) + GCodeGenerator::smooth_path_interpolate(l, interpolation_params, smooth_path_cache); + return { idx, std::move(smooth_path_cache) }; + } + }); + const auto generator = tbb::make_filter, LayerResult>(slic3r_tbb_filtermode::serial_in_order, + [this, &print, &tool_ordering, &print_object_instances_ordering, &layers_to_print, &smooth_path_cache_global]( + std::pair in) -> LayerResult { + size_t layer_to_print_idx = in.first; + if (layer_to_print_idx == layers_to_print.size()) { + // Pressure equalizer need insert empty input. Because it returns one layer back. + // Insert NOP (no operation) layer; + return LayerResult::make_nop_layer_result(); + } else { + const std::pair &layer = layers_to_print[layer_to_print_idx]; const LayerTools& layer_tools = tool_ordering.tools_for_layer(layer.first); if (m_wipe_tower && layer_tools.has_wipe_tower) m_wipe_tower->next_layer(); print.throw_if_canceled(); - return this->process_layer(print, layer.second, layer_tools, &layer == &layers_to_print.back(), &print_object_instances_ordering, size_t(-1)); + return this->process_layer(print, layer.second, layer_tools, + GCode::SmoothPathCaches{ smooth_path_cache_global, in.second }, + &layer == &layers_to_print.back(), &print_object_instances_ordering, size_t(-1)); } }); + // The pipeline is variable: The vase mode filter is optional. const auto spiral_vase = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, [spiral_vase = this->m_spiral_vase.get()](LayerResult in) -> LayerResult { if (in.nop_layer_result) @@ -1600,61 +1517,73 @@ void GCode::process_layers( [&output_stream](std::string s) { output_stream.write(s); } ); + tbb::filter pipeline_to_layerresult = smooth_path_interpolator & generator; + if (m_spiral_vase) + pipeline_to_layerresult = pipeline_to_layerresult & spiral_vase; + if (m_pressure_equalizer) + pipeline_to_layerresult = pipeline_to_layerresult & pressure_equalizer; + + tbb::filter pipeline_to_string = cooling; + if (m_find_replace) + pipeline_to_string = pipeline_to_string & find_replace; // It registers a handler that sets locales to "C" before any TBB thread starts participating in tbb::parallel_pipeline. // Handler is unregistered when the destructor is called. TBBLocalesSetter locales_setter; // The pipeline elements are joined using const references, thus no copying is performed. output_stream.find_replace_supress(); - if (m_spiral_vase && m_find_replace && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_vase & pressure_equalizer & cooling & find_replace & output); - else if (m_spiral_vase && m_find_replace) - tbb::parallel_pipeline(12, generator & spiral_vase & cooling & find_replace & output); - else if (m_spiral_vase && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_vase & pressure_equalizer & cooling & output); - else if (m_find_replace && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & find_replace & output); - else if (m_spiral_vase) - tbb::parallel_pipeline(12, generator & spiral_vase & cooling & output); - else if (m_find_replace) - tbb::parallel_pipeline(12, generator & cooling & find_replace & output); - else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & output); - else - tbb::parallel_pipeline(12, generator & cooling & output); + tbb::parallel_pipeline(12, pipeline_to_layerresult & pipeline_to_string & output); output_stream.find_replace_enable(); } // Process all layers of a single object instance (sequential mode) with a parallel pipeline: // Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser // and export G-code into file. -void GCode::process_layers( +void GCodeGenerator::process_layers( const Print &print, const ToolOrdering &tool_ordering, ObjectsLayerToPrint layers_to_print, const size_t single_object_idx, + const GCode::SmoothPathCache &smooth_path_cache_global, GCodeOutputStream &output_stream) { - // The pipeline is variable: The vase mode filter is optional. size_t layer_to_print_idx = 0; - const auto generator = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, - [this, &print, &tool_ordering, &layers_to_print, &layer_to_print_idx, single_object_idx](tbb::flow_control& fc) -> LayerResult { + const GCode::SmoothPathCache::InterpolationParameters interpolation_params = interpolation_parameters(print.config()); + const auto smooth_path_interpolator = tbb::make_filter> (slic3r_tbb_filtermode::serial_in_order, + [this, &print, &layers_to_print, &layer_to_print_idx, interpolation_params](tbb::flow_control &fc) -> std::pair { if (layer_to_print_idx >= layers_to_print.size()) { - if ((!m_pressure_equalizer && layer_to_print_idx == layers_to_print.size()) || (m_pressure_equalizer && layer_to_print_idx == (layers_to_print.size() + 1))) { + if (layer_to_print_idx == layers_to_print.size() + (m_pressure_equalizer ? 1 : 0)) { fc.stop(); return {}; } else { // Pressure equalizer need insert empty input. Because it returns one layer back. // Insert NOP (no operation) layer; - ++layer_to_print_idx; - return LayerResult::make_nop_layer_result(); + return { layer_to_print_idx ++, {} }; } } else { - ObjectLayerToPrint &layer = layers_to_print[layer_to_print_idx ++]; print.throw_if_canceled(); - return this->process_layer(print, { std::move(layer) }, tool_ordering.tools_for_layer(layer.print_z()), &layer == &layers_to_print.back(), nullptr, single_object_idx); + size_t idx = layer_to_print_idx ++; + GCode::SmoothPathCache smooth_path_cache; + GCodeGenerator::smooth_path_interpolate(layers_to_print[idx], interpolation_params, smooth_path_cache); + return { idx, std::move(smooth_path_cache) }; } }); + const auto generator = tbb::make_filter, LayerResult>(slic3r_tbb_filtermode::serial_in_order, + [this, &print, &tool_ordering, &layers_to_print, &smooth_path_cache_global, single_object_idx](std::pair in) -> LayerResult { + size_t layer_to_print_idx = in.first; + if (layer_to_print_idx == layers_to_print.size()) { + // Pressure equalizer need insert empty input. Because it returns one layer back. + // Insert NOP (no operation) layer; + return LayerResult::make_nop_layer_result(); + } else { + ObjectLayerToPrint &layer = layers_to_print[layer_to_print_idx]; + print.throw_if_canceled(); + return this->process_layer(print, { std::move(layer) }, tool_ordering.tools_for_layer(layer.print_z()), + GCode::SmoothPathCaches{ smooth_path_cache_global, in.second }, + &layer == &layers_to_print.back(), nullptr, single_object_idx); + } + }); + // The pipeline is variable: The vase mode filter is optional. const auto spiral_vase = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, [spiral_vase = this->m_spiral_vase.get()](LayerResult in)->LayerResult { if (in.nop_layer_result) @@ -1680,37 +1609,56 @@ void GCode::process_layers( [&output_stream](std::string s) { output_stream.write(s); } ); + tbb::filter pipeline_to_layerresult = smooth_path_interpolator & generator; + if (m_spiral_vase) + pipeline_to_layerresult = pipeline_to_layerresult & spiral_vase; + if (m_pressure_equalizer) + pipeline_to_layerresult = pipeline_to_layerresult & pressure_equalizer; + + tbb::filter pipeline_to_string = cooling; + if (m_find_replace) + pipeline_to_string = pipeline_to_string & find_replace; // It registers a handler that sets locales to "C" before any TBB thread starts participating in tbb::parallel_pipeline. // Handler is unregistered when the destructor is called. TBBLocalesSetter locales_setter; // The pipeline elements are joined using const references, thus no copying is performed. output_stream.find_replace_supress(); - if (m_spiral_vase && m_find_replace && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_vase & pressure_equalizer & cooling & find_replace & output); - else if (m_spiral_vase && m_find_replace) - tbb::parallel_pipeline(12, generator & spiral_vase & cooling & find_replace & output); - else if (m_spiral_vase && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_vase & pressure_equalizer & cooling & output); - else if (m_find_replace && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & find_replace & output); - else if (m_spiral_vase) - tbb::parallel_pipeline(12, generator & spiral_vase & cooling & output); - else if (m_find_replace) - tbb::parallel_pipeline(12, generator & cooling & find_replace & output); - else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & output); - else - tbb::parallel_pipeline(12, generator & cooling & output); + tbb::parallel_pipeline(12, pipeline_to_layerresult & pipeline_to_string & output); output_stream.find_replace_enable(); } -std::string GCode::placeholder_parser_process( +std::string GCodeGenerator::placeholder_parser_process( const std::string &name, const std::string &templ, unsigned int current_extruder_id, const DynamicConfig *config_override) { +#ifndef NDEBUG // CHECK_CUSTOM_GCODE_PLACEHOLDERS + if (config_override) { + const auto& custom_gcode_placeholders = custom_gcode_specific_placeholders(); + + // 1-st check: custom G-code "name" have to be present in s_CustomGcodeSpecificOptions; + //if (custom_gcode_placeholders.count(name) > 0) { + // const auto& placeholders = custom_gcode_placeholders.at(name); + if (auto it = custom_gcode_placeholders.find(name); it != custom_gcode_placeholders.end()) { + const auto& placeholders = it->second; + + for (const std::string& key : config_override->keys()) { + // 2-nd check: "key" have to be present in s_CustomGcodeSpecificOptions for "name" custom G-code ; + if (std::find(placeholders.begin(), placeholders.end(), key) == placeholders.end()) + throw Slic3r::PlaceholderParserError(format("\"%s\" placeholder for \"%s\" custom G-code \n" + "needs to be added to s_CustomGcodeSpecificOptions", key.c_str(), name.c_str())); + // 3-rd check: "key" have to be present in CustomGcodeSpecificConfigDef for "key" placeholder; + if (!custom_gcode_specific_config_def.has(key)) + throw Slic3r::PlaceholderParserError(format("Definition of \"%s\" placeholder \n" + "needs to be added to CustomGcodeSpecificConfigDef", key.c_str())); + } + } + else + throw Slic3r::PlaceholderParserError(format("\"%s\" custom G-code needs to be added to s_CustomGcodeSpecificOptions", name.c_str())); + } +#endif PlaceholderParserIntegration &ppi = m_placeholder_parser_integration; try { ppi.update_from_gcodewriter(m_writer); @@ -1819,7 +1767,7 @@ static bool custom_gcode_sets_temperature(const std::string &gcode, const int mc // Print the machine envelope G-code for the Marlin firmware based on the "machine_max_xxx" parameters. // Do not process this piece of G-code by the time estimator, it already knows the values through another sources. -void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print) +void GCodeGenerator::print_machine_envelope(GCodeOutputStream &file, Print &print) { const GCodeFlavor flavor = print.config().gcode_flavor.value; if ( (flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware || flavor == gcfRepRapFirmware) @@ -1880,7 +1828,7 @@ void GCode::print_machine_envelope(GCodeOutputStream &file, Print &print) // Only do that if the start G-code does not already contain any M-code controlling an extruder temperature. // M140 - Set Extruder Temperature // M190 - Set Extruder Temperature and Wait -void GCode::_print_first_layer_bed_temperature(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait) +void GCodeGenerator::_print_first_layer_bed_temperature(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait) { bool autoemit = print.config().autoemit_temperature_commands; // Initial bed temperature based on the first extruder. @@ -1902,7 +1850,7 @@ void GCode::_print_first_layer_bed_temperature(GCodeOutputStream &file, Print &p // M104 - Set Extruder Temperature // M109 - Set Extruder Temperature and Wait // RepRapFirmware: G10 Sxx -void GCode::_print_first_layer_extruder_temperatures(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait) +void GCodeGenerator::_print_first_layer_extruder_temperatures(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait) { bool autoemit = print.config().autoemit_temperature_commands; // Is the bed temperature set by the provided custom G-code? @@ -1940,7 +1888,7 @@ void GCode::_print_first_layer_extruder_temperatures(GCodeOutputStream &file, Pr } } -std::vector GCode::sort_print_object_instances( +std::vector GCodeGenerator::sort_print_object_instances( const std::vector &object_layers, // Ordering must be defined for normal (non-sequential print). const std::vector *ordering, @@ -1981,7 +1929,7 @@ namespace ProcessLayer { static std::string emit_custom_gcode_per_print_z( - GCode &gcodegen, + GCodeGenerator &gcodegen, const CustomGCode::Item *custom_gcode, unsigned int current_extruder_id, // ID of the first extruder printing this layer. @@ -2129,16 +2077,31 @@ namespace Skirt { } // namespace Skirt +bool GCodeGenerator::line_distancer_is_required(const std::vector& extruder_ids) { + for (const unsigned id : extruder_ids) { + const double travel_slope{this->m_config.travel_slope.get_at(id)}; + if ( + this->m_config.travel_lift_before_obstacle.get_at(id) + && this->m_config.travel_max_lift.get_at(id) > 0 + && travel_slope > 0 + && travel_slope < 90 + ) { + return true; + } + } + return false; +} // In sequential mode, process_layer is called once per each object and its copy, // therefore layers will contain a single entry and single_object_instance_idx will point to the copy of the object. // In non-sequential mode, process_layer is called per each print_z height with all object and support layers accumulated. // For multi-material prints, this routine minimizes extruder switches by gathering extruder specific extrusion paths // and performing the extruder specific extrusions together. -LayerResult GCode::process_layer( +LayerResult GCodeGenerator::process_layer( const Print &print, // Set of object & print layers of the same PrintObject and with the same print_z. const ObjectsLayerToPrint &layers, const LayerTools &layer_tools, + const GCode::SmoothPathCaches &smooth_path_caches, const bool last_layer, // Pairs of PrintObject index and its instance index. const std::vector *ordering, @@ -2214,6 +2177,7 @@ LayerResult GCode::process_layer( + float_to_string_decimal_point(height) + "\n"; // update caches + const coordf_t previous_layer_z{m_last_layer_z}; m_last_layer_z = static_cast(print_z); m_max_layer_z = std::max(m_max_layer_z, m_last_layer_z); m_last_height = height; @@ -2228,8 +2192,11 @@ LayerResult GCode::process_layer( print.config().before_layer_gcode.value, m_writer.extruder()->id(), &config) + "\n"; } - gcode += this->change_layer(print_z); // this will increase m_layer_index + gcode += this->change_layer(previous_layer_z, print_z); // this will increase m_layer_index m_layer = &layer; + if (this->line_distancer_is_required(layer_tools.extruders) && this->m_layer != nullptr && this->m_layer->lower_layer != nullptr) { + this->m_previous_layer_distancer = GCode::Impl::get_expolygons_distancer(m_layer->lower_layer->lslices); + } m_object_layer_over_raft = false; if (! print.config().layer_gcode.value.empty()) { DynamicConfig config; @@ -2287,9 +2254,6 @@ LayerResult GCode::process_layer( } } - for (const ObjectLayerToPrint &layer_to_print : layers) { - m_extrusion_quality_estimator.prepare_for_new_layer(layer_to_print.object_layer); - } // Extrude the skirt, brim, support, perimeters, infill ordered by the extruders. for (unsigned int extruder_id : layer_tools.extruders) @@ -2310,13 +2274,11 @@ LayerResult GCode::process_layer( double mm3_per_mm = layer_skirt_flow.mm3_per_mm(); for (size_t i = loops.first; i < loops.second; ++i) { // Adjust flow according to this layer's layer height. - ExtrusionLoop loop = *dynamic_cast(print.skirt().entities[i]); - for (ExtrusionPath &path : loop.paths) { - path.height = layer_skirt_flow.height(); - path.mm3_per_mm = mm3_per_mm; - } //FIXME using the support_material_speed of the 1st object printed. - gcode += this->extrude_loop(loop, "skirt"sv, m_config.support_material_speed.value); + gcode += this->extrude_skirt(dynamic_cast(*print.skirt().entities[i]), + // Override of skirt extrusion parameters. extrude_skirt() will fill in the extrusion width. + ExtrusionFlow{ mm3_per_mm, 0., layer_skirt_flow.height() }, + smooth_path_caches.global(), "skirt"sv, m_config.support_material_speed.value); } m_avoid_crossing_perimeters.use_external_mp(false); // Allow a straight travel move to the first object point if this is the first layer (but don't in next layers). @@ -2328,9 +2290,8 @@ LayerResult GCode::process_layer( if (! m_brim_done) { this->set_origin(0., 0.); m_avoid_crossing_perimeters.use_external_mp(); - for (const ExtrusionEntity *ee : print.brim().entities) { - gcode += this->extrude_entity(*ee, "brim"sv, m_config.support_material_speed.value); - } + for (const ExtrusionEntity *ee : print.brim().entities) + gcode += this->extrude_entity({ *ee, false }, smooth_path_caches.global(), "brim"sv, m_config.support_material_speed.value); m_brim_done = true; m_avoid_crossing_perimeters.use_external_mp(false); // Allow a straight travel move to the first object point. @@ -2347,7 +2308,7 @@ LayerResult GCode::process_layer( for (const InstanceToPrint &instance : instances_to_print) this->process_layer_single_object( gcode, extruder_id, instance, - layers[instance.object_layer_to_print_id], layer_tools, + layers[instance.object_layer_to_print_id], layer_tools, smooth_path_caches.layer_local(), is_anything_overridden, true /* print_wipe_extrusions */); if (gcode_size_old < gcode.size()) gcode+="; PURGING FINISHED\n"; @@ -2356,7 +2317,7 @@ LayerResult GCode::process_layer( for (const InstanceToPrint &instance : instances_to_print) this->process_layer_single_object( gcode, extruder_id, instance, - layers[instance.object_layer_to_print_id], layer_tools, + layers[instance.object_layer_to_print_id], layer_tools, smooth_path_caches.layer_local(), is_anything_overridden, false /* print_wipe_extrusions */); } @@ -2374,7 +2335,7 @@ static inline bool comment_is_perimeter(const std::string_view comment) { return comment.data() == comment_perimeter.data() && comment.size() == comment_perimeter.size(); } -void GCode::process_layer_single_object( +void GCodeGenerator::process_layer_single_object( // output std::string &gcode, // Index of the extruder currently active. @@ -2385,15 +2346,17 @@ void GCode::process_layer_single_object( const ObjectLayerToPrint &layer_to_print, // Container for extruder overrides (when wiping into object or infill). const LayerTools &layer_tools, + // Optional smooth path interpolating extrusion polylines. + const GCode::SmoothPathCache &smooth_path_cache, // Is any extrusion possibly marked as wiping extrusion? const bool is_anything_overridden, // Round 1 (wiping into object or infill) or round 2 (normal extrusions). const bool print_wipe_extrusions) { bool first = true; - int object_id = 0; + int object_id = 0; // Delay layer initialization as many layers may not print with all extruders. - auto init_layer_delayed = [this, &print_instance, &layer_to_print, &first, &object_id, &gcode]() { + auto init_layer_delayed = [this, &print_instance, &layer_to_print, &first,&object_id, & gcode]() { if (first) { first = false; const PrintObject &print_object = print_instance.print_object; @@ -2409,7 +2372,7 @@ void GCode::process_layer_single_object( m_avoid_crossing_perimeters.use_external_mp_once(); m_last_obj_copy = this_object_copy; this->set_origin(unscale(offset)); - if (this->config().gcode_label_objects) { + if ((this->config().gcode_label_objects) != LabelObjectsStyle::Disabled ) { for (const PrintObject *po : print_object.print()->objects()) if (po == &print_object) break; @@ -2435,7 +2398,6 @@ void GCode::process_layer_single_object( const PrintObject &print_object = print_instance.print_object; const Print &print = *print_object.print(); - m_extrusion_quality_estimator.set_current_object(&print_object); if (! print_wipe_extrusions && layer_to_print.support_layer != nullptr) if (const SupportLayer &support_layer = *layer_to_print.support_layer; ! support_layer.support_fills.entities.empty()) { @@ -2469,9 +2431,16 @@ void GCode::process_layer_single_object( init_layer_delayed(); m_layer = layer_to_print.support_layer; m_object_layer_over_raft = false; - gcode += this->extrude_support( - // support_extrusion_role is ExtrusionRole::SupportMaterial, ExtrusionRole::SupportMaterialInterface or ExtrusionRole::Mixed for all extrusion paths. - support_layer.support_fills.chained_path_from(m_last_pos, extrude_support ? (extrude_interface ? ExtrusionRole::Mixed : ExtrusionRole::SupportMaterial) : ExtrusionRole::SupportMaterialInterface)); + ExtrusionEntitiesPtr entities_cache; + const ExtrusionEntitiesPtr &entities = extrude_support && extrude_interface ? support_layer.support_fills.entities : entities_cache; + if (! extrude_support || ! extrude_interface) { + auto role = extrude_support ? ExtrusionRole::SupportMaterial : ExtrusionRole::SupportMaterialInterface; + entities_cache.reserve(support_layer.support_fills.entities.size()); + for (ExtrusionEntity *ee : support_layer.support_fills.entities) + if (ee->role() == role) + entities_cache.emplace_back(ee); + } + gcode += this->extrude_support(chain_extrusion_references(entities), smooth_path_cache); } } @@ -2529,16 +2498,13 @@ void GCode::process_layer_single_object( if (! temp_fill_extrusions.empty()) { init_layer_delayed(); m_config.apply(region.config()); - //FIXME The source extrusions may be reversed, thus modifying the extrusions! Is it a problem? How about the initial G-code preview? - // Will parallel access of initial G-code preview to these extrusions while reordering them at backend cause issues? - chain_and_reorder_extrusion_entities(temp_fill_extrusions, &m_last_pos); const auto extrusion_name = ironing ? "ironing"sv : "infill"sv; - for (const ExtrusionEntity *fill : temp_fill_extrusions) - if (auto *eec = dynamic_cast(fill); eec) { - for (const ExtrusionEntity *ee : eec->chained_path_from(m_last_pos).entities) - gcode += this->extrude_entity(*ee, extrusion_name); + for (const ExtrusionEntityReference &fill : chain_extrusion_references(temp_fill_extrusions, &m_last_pos)) + if (auto *eec = dynamic_cast(&fill.extrusion_entity()); eec) { + for (const ExtrusionEntityReference &ee : chain_extrusion_references(*eec, &m_last_pos, fill.flipped())) + gcode += this->extrude_entity(ee, smooth_path_cache, extrusion_name); } else - gcode += this->extrude_entity(*fill, extrusion_name); + gcode += this->extrude_entity(fill, smooth_path_cache, extrusion_name); } }; @@ -2552,6 +2518,8 @@ void GCode::process_layer_single_object( const PrintRegion ®ion = print.get_print_region(layerm.region().print_region_id()); bool first = true; for (uint32_t perimeter_id : island.perimeters) { + // Extrusions inside islands are expected to be ordered already. + // Don't reorder them. assert(dynamic_cast(layerm.perimeters().entities[perimeter_id])); if (const auto *eec = static_cast(layerm.perimeters().entities[perimeter_id]); shall_print_this_extrusion_collection(eec, region)) { @@ -2563,7 +2531,8 @@ void GCode::process_layer_single_object( m_config.apply(region.config()); } for (const ExtrusionEntity *ee : *eec) - gcode += this->extrude_entity(*ee, comment_perimeter, -1.); + // Don't reorder, don't flip. + gcode += this->extrude_entity({ *ee, false }, smooth_path_cache, comment_perimeter, -1.); } } }; @@ -2601,7 +2570,7 @@ void GCode::process_layer_single_object( } } - if (!first && this->config().gcode_label_objects) { + if (!first && ((this->config().gcode_label_objects) != LabelObjectsStyle::Disabled)) { //B38 //B41 if (this->config().gcode_flavor == gcfKlipper) { if (!m_writer.is_object_start_str_empty()) { @@ -2623,14 +2592,23 @@ void GCode::process_layer_single_object( } -void GCode::apply_print_config(const PrintConfig &print_config) +void GCodeGenerator::apply_print_config(const PrintConfig &print_config) { m_writer.apply_print_config(print_config); m_config.apply(print_config); m_scaled_resolution = scaled(print_config.gcode_resolution.value); } -void GCode::append_full_config(const Print &print, std::string &str) +void GCodeGenerator::append_full_config(const Print &print, std::string &str) +{ + std::vector> config; + encode_full_config(print, config); + for (const auto& [key, value] : config) { + str += "; " + key + " = " + value + "\n"; + } +} + +void GCodeGenerator::encode_full_config(const Print& print, std::vector>& config) { const DynamicPrintConfig &cfg = print.full_print_config(); // Sorted list of config keys, which shall not be stored into the G-code. Initializer list. @@ -2646,37 +2624,31 @@ void GCode::append_full_config(const Print &print, std::string &str) auto is_banned = [](const std::string &key) { return std::binary_search(banned_keys.begin(), banned_keys.end(), key); }; - for (const std::string &key : cfg.keys()) + config.reserve(config.size() + cfg.keys().size()); + for (const std::string& key : cfg.keys()) { if (! is_banned(key) && ! cfg.option(key)->is_nil()) - str += "; " + key + " = " + cfg.opt_serialize(key) + "\n"; + config.emplace_back(key, cfg.opt_serialize(key)); + } + config.shrink_to_fit(); } -void GCode::set_extruders(const std::vector &extruder_ids) +void GCodeGenerator::set_extruders(const std::vector &extruder_ids) { m_writer.set_extruders(extruder_ids); - // enable wipe path generation if any extruder has wipe enabled - m_wipe.enable = false; - for (auto id : extruder_ids) - if (m_config.wipe.get_at(id)) { - m_wipe.enable = true; - break; - } + m_wipe.init(this->config(), extruder_ids); } -void GCode::set_origin(const Vec2d &pointf) +void GCodeGenerator::set_origin(const Vec2d &pointf) { // if origin increases (goes towards right), last_pos decreases because it goes towards left - const Point translate( - scale_(m_origin(0) - pointf(0)), - scale_(m_origin(1) - pointf(1)) - ); - m_last_pos += translate; - m_wipe.path.translate(translate); + const auto offset = Point::new_scale(m_origin - pointf); + m_last_pos += offset; + m_wipe.offset_path(offset); m_origin = pointf; } -std::string GCode::preamble() +std::string GCodeGenerator::preamble() { std::string gcode = m_writer.preamble(); @@ -2689,226 +2661,319 @@ std::string GCode::preamble() return gcode; } -// called by GCode::process_layer() -std::string GCode::change_layer(coordf_t print_z) +namespace GCode::Impl { +Polygon generate_regular_polygon( + const Point& centroid, + const Point& start_point, + const unsigned points_count +) { + Points points; + points.reserve(points_count); + const double part_angle{2*M_PI / points_count}; + for (unsigned i = 0; i < points_count; ++i) { + const double current_angle{i * part_angle}; + points.emplace_back(scaled(std::cos(current_angle)), scaled(std::sin(current_angle))); + } + + Polygon regular_polygon{points}; + const Vec2d current_vector{unscaled(regular_polygon.points.front())}; + const Vec2d expected_vector{unscaled(start_point) - unscaled(centroid)}; + + const double current_scale = current_vector.norm(); + const double expected_scale = expected_vector.norm(); + regular_polygon.scale(expected_scale / current_scale); + + regular_polygon.rotate(angle(current_vector, expected_vector)); + + regular_polygon.translate(centroid); + + return regular_polygon; +} +Bed::Bed(const std::vector& shape, const double padding): + inner_offset(get_inner_offset(shape, padding)), + centroid(unscaled(inner_offset.centroid())) +{} + +bool Bed::contains_within_padding(const Vec2d& point) const { + return inner_offset.contains(scaled(point)); +} +Polygon Bed::get_inner_offset(const std::vector& shape, const double padding) { + Points shape_scaled; + shape_scaled.reserve(shape.size()); + using std::begin, std::end, std::back_inserter, std::transform; + transform(begin(shape), end(shape), back_inserter(shape_scaled), [](const Vec2d& point){ + return scaled(point); + }); + return shrink({Polygon{shape_scaled}}, scaled(padding)).front(); +} + } + +std::optional GCodeGenerator::get_helical_layer_change_gcode( + const coordf_t previous_layer_z, + const coordf_t print_z, + const std::string& comment +) { + + if (!this->last_pos_defined()) { + return std::nullopt; + } + //B38 + //m_writer.add_object_change_labels(gcode); + const double circle_radius{2}; + const unsigned n_gon_points_count{16}; + + const Point n_gon_start_point{this->last_pos()}; + + static GCode::Impl::Bed bed{ + this->m_config.bed_shape.values, + circle_radius + }; + if (!bed.contains_within_padding(this->point_to_gcode(n_gon_start_point))) { + return std::nullopt; + } + + const Point n_gon_centeroid{ + n_gon_start_point + + scaled(Vec2d{ + (bed.centroid - unscaled(n_gon_start_point)).normalized() + * circle_radius + }) + }; + + const Polygon n_gon{GCode::Impl::generate_regular_polygon( + n_gon_centeroid, + n_gon_start_point, + n_gon_points_count + )}; + + const double n_gon_circumference = unscaled(n_gon.length()); + + const double z_change{print_z - previous_layer_z}; + Points3 helix{GCode::Impl::generate_elevated_travel( + n_gon.points, + {}, + previous_layer_z, + [&](const double distance){ + return distance / n_gon_circumference * z_change; + } + )}; + helix.emplace_back(to_3d(this->last_pos(), scaled(print_z))); + + return this->generate_travel_gcode(helix, comment); +} + +// called by GCodeGenerator::process_layer() +std::string GCodeGenerator::change_layer(coordf_t previous_layer_z, coordf_t print_z) { std::string gcode; if (m_layer_count > 0) // Increment a progress bar indicator. gcode += m_writer.update_progress(++ m_layer_index, m_layer_count); - coordf_t z = print_z + m_config.z_offset.value; // in unscaled coordinates - if (EXTRUDER_CONFIG(retract_layer_change) && m_writer.will_move_z(z)) { - gcode += this->retract(); - } - //B38 - m_writer.add_object_change_labels(gcode); + if (EXTRUDER_CONFIG(retract_layer_change)) + gcode += this->retract_and_wipe(); + const std::string comment{"move to next layer (" + std::to_string(m_layer_index) + ")"}; - { - std::ostringstream comment; - comment << "move to next layer (" << m_layer_index << ")"; - gcode += m_writer.travel_to_z(z, comment.str()); - } + bool helical_layer_change{ + (!this->m_spiral_vase || !this->m_spiral_vase->is_enabled()) + && print_z > previous_layer_z + && EXTRUDER_CONFIG(travel_ramping_lift) + && EXTRUDER_CONFIG(travel_slope) > 0 && EXTRUDER_CONFIG(travel_slope) < 90 + }; + const std::optional helix_gcode{ + helical_layer_change ? + this->get_helical_layer_change_gcode( + m_config.z_offset.value + previous_layer_z, + m_config.z_offset.value + print_z, + comment + ) : + std::nullopt + }; + gcode += ( + helix_gcode ? + *helix_gcode : + m_writer.travel_to_z(m_config.z_offset.value + print_z, comment) + ); // forget last wiping path as wiping after raising Z is pointless m_wipe.reset_path(); - return gcode; } -std::string GCode::extrude_loop(ExtrusionLoop loop, const std::string_view description, double speed) +#ifndef NDEBUG +static inline bool validate_smooth_path(const GCode::SmoothPath &smooth_path, bool loop) +{ + for (auto it = std::next(smooth_path.begin()); it != smooth_path.end(); ++ it) { + assert(it->path.size() >= 2); + assert(std::prev(it)->path.back().point == it->path.front().point); + } + assert(! loop || smooth_path.front().path.front().point == smooth_path.back().path.back().point); + return true; +} +#endif //NDEBUG +static constexpr const double min_gcode_segment_length = 0.002; +std::string GCodeGenerator::extrude_loop(const ExtrusionLoop &loop_src, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed) { - // get a copy; don't modify the orientation of the original loop object otherwise - // next copies (if any) would not detect the correct orientation - - // extrude all loops ccw - bool was_clockwise = loop.make_counter_clockwise(); - - // find the point of the loop that is closest to the current extruder position - // or randomize if requested - Point last_pos = this->last_pos(); + // Extrude all loops CCW. + bool is_hole = loop_src.is_clockwise(); + Point seam_point = this->last_pos(); if (! m_config.spiral_vase && comment_is_perimeter(description)) { assert(m_layer != nullptr); - m_seam_placer.place_seam(m_layer, loop, m_config.external_perimeters_first, this->last_pos()); - } else + seam_point = m_seam_placer.place_seam(m_layer, loop_src, m_config.external_perimeters_first, this->last_pos()); + } // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, // thus empty path segments will not be produced by G-code export. - loop.split_at(last_pos, false, scaled(0.0015)); + GCode::SmoothPath smooth_path = smooth_path_cache.resolve_or_fit_split_with_seam( + loop_src, is_hole, m_scaled_resolution, seam_point, scaled(0.0015)); - for (auto it = std::next(loop.paths.begin()); it != loop.paths.end(); ++it) { - assert(it->polyline.points.size() >= 2); - assert(std::prev(it)->polyline.last_point() == it->polyline.first_point()); - } - assert(loop.paths.front().first_point() == loop.paths.back().last_point()); - - // clip the path to avoid the extruder to get exactly on the first point of the loop; + // Clip the path to avoid the extruder to get exactly on the first point of the loop; // if polyline was shorter than the clipping distance we'd get a null polyline, so - // we discard it in that case - double clip_length = m_enable_loop_clipping ? - scale_(EXTRUDER_CONFIG(nozzle_diameter)) * LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER : - 0; + // we discard it in that case. + if (m_enable_loop_clipping) + clip_end(smooth_path, scaled(EXTRUDER_CONFIG(nozzle_diameter)) * LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER, scaled(min_gcode_segment_length)); - // get paths - ExtrusionPaths paths; - loop.clip_end(clip_length, &paths); - if (paths.empty()) return ""; + if (smooth_path.empty()) + return {}; + assert(validate_smooth_path(smooth_path, ! m_enable_loop_clipping)); - // apply the small perimeter speed - if (paths.front().role().is_perimeter() && loop.length() <= SMALL_PERIMETER_LENGTH && speed == -1) + // Apply the small perimeter speed. + if (loop_src.paths.front().role().is_perimeter() && loop_src.length() <= SMALL_PERIMETER_LENGTH && speed == -1) speed = m_config.small_perimeter_speed.get_abs_value(m_config.perimeter_speed); - // extrude along the path + // Extrude along the smooth path. std::string gcode; - for (ExtrusionPath &path : paths) { - path.simplify(m_scaled_resolution); - gcode += this->_extrude(path, description, speed); - } + for (const GCode::SmoothPathElement &el : smooth_path) + gcode += this->_extrude(el.path_attributes, el.path, description, speed); // reset acceleration - gcode += m_writer.set_print_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5)); + gcode += m_writer.set_print_acceleration(fast_round_up(m_config.default_acceleration.value)); - if (m_wipe.enable) { - m_wipe.path = paths.front().polyline; + if (m_wipe.enabled()) { - for (auto it = std::next(paths.begin()); it != paths.end(); ++it) { - if (it->role().is_bridge()) - break; // Don't perform a wipe on bridges. + // Wipe will hide the seam. + m_wipe.set_path(std::move(smooth_path), false); + } else if (loop_src.paths.back().role().is_external_perimeter() && m_layer != nullptr && m_config.perimeters.value > 1) { - assert(it->polyline.points.size() >= 2); - assert(m_wipe.path.points.back() == it->polyline.first_point()); - if (m_wipe.path.points.back() != it->polyline.first_point()) - break; // ExtrusionLoop is interrupted in some place. + // Only wipe inside if the wipe along the perimeter is disabled. + // Make a little move inwards before leaving loop. + if (std::optional pt = wipe_hide_seam(smooth_path, is_hole, scale_(EXTRUDER_CONFIG(nozzle_diameter))); pt) { - m_wipe.path.points.insert(m_wipe.path.points.end(), it->polyline.points.begin() + 1, it->polyline.points.end()); + // Generate the seam hiding travel move. + gcode += m_writer.travel_to_xy(this->point_to_gcode(*pt), "move inwards before travel"); + this->set_last_pos(*pt); } } - // make a little move inwards before leaving loop - if (paths.back().role().is_external_perimeter() && m_layer != NULL && m_config.perimeters.value > 1 && paths.front().size() >= 2 && paths.back().polyline.points.size() >= 3) { - // detect angle between last and first segment - // the side depends on the original winding order of the polygon (left for contours, right for holes) - //FIXME improve the algorithm in case the loop is tiny. - //FIXME improve the algorithm in case the loop is split into segments with a low number of points (see the Point b query). - // Angle from the 2nd point to the last point. - double angle_inside = angle(paths.front().polyline.points[1] - paths.front().first_point(), - *(paths.back().polyline.points.end()-3) - paths.front().first_point()); - assert(angle_inside >= -M_PI && angle_inside <= M_PI); - // 3rd of this angle will be taken, thus make the angle monotonic before interpolation. - if (was_clockwise) { - if (angle_inside > 0) - angle_inside -= 2.0 * M_PI; - } else { - if (angle_inside < 0) - angle_inside += 2.0 * M_PI; - } - - // create the destination point along the first segment and rotate it - // we make sure we don't exceed the segment length because we don't know - // the rotation of the second segment so we might cross the object boundary - Vec2d p1 = paths.front().polyline.points.front().cast(); - Vec2d p2 = paths.front().polyline.points[1].cast(); - Vec2d v = p2 - p1; - double nd = scale_(EXTRUDER_CONFIG(nozzle_diameter)); - double l2 = v.squaredNorm(); - // Shift by no more than a nozzle diameter. - //FIXME Hiding the seams will not work nicely for very densely discretized contours! - Point pt = ((nd * nd >= l2) ? p2 : (p1 + v * (nd / sqrt(l2)))).cast(); - // Rotate pt inside around the seam point. - pt.rotate(angle_inside / 3., paths.front().polyline.points.front()); - // generate the travel move - gcode += m_writer.travel_to_xy(this->point_to_gcode(pt), "move inwards before travel"); - } - return gcode; } - -std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, const std::string_view description, double speed) +std::string GCodeGenerator::extrude_skirt( + const ExtrusionLoop &loop_src, const ExtrusionFlow &extrusion_flow_override, + const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed) { + assert(loop_src.is_counter_clockwise()); + GCode::SmoothPath smooth_path = smooth_path_cache.resolve_or_fit_split_with_seam( + loop_src, false, m_scaled_resolution, this->last_pos(), scaled(0.0015)); + // Clip the path to avoid the extruder to get exactly on the first point of the loop; + // if polyline was shorter than the clipping distance we'd get a null polyline, so + // we discard it in that case. + if (m_enable_loop_clipping) + clip_end(smooth_path, scale_(EXTRUDER_CONFIG(nozzle_diameter)) * LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER, scaled(min_gcode_segment_length)); + if (smooth_path.empty()) + return {}; + assert(validate_smooth_path(smooth_path, ! m_enable_loop_clipping)); + + // Extrude along the smooth path. + std::string gcode; + for (GCode::SmoothPathElement &el : smooth_path) { + // Override extrusion parameters. + el.path_attributes.mm3_per_mm = extrusion_flow_override.mm3_per_mm; + el.path_attributes.height = extrusion_flow_override.height; + gcode += this->_extrude(el.path_attributes, el.path, description, speed); + } + // reset acceleration + gcode += m_writer.set_print_acceleration(fast_round_up(m_config.default_acceleration.value)); + if (m_wipe.enabled()) + // Wipe will hide the seam. + m_wipe.set_path(std::move(smooth_path), false); + + return gcode; +} + +std::string GCodeGenerator::extrude_multi_path(const ExtrusionMultiPath &multipath, bool reverse, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed) +{ +#ifndef NDEBUG for (auto it = std::next(multipath.paths.begin()); it != multipath.paths.end(); ++it) { assert(it->polyline.points.size() >= 2); assert(std::prev(it)->polyline.last_point() == it->polyline.first_point()); } +#endif // NDEBUG + GCode::SmoothPath smooth_path = smooth_path_cache.resolve_or_fit(multipath, reverse, m_scaled_resolution); // extrude along the path + std::string gcode; - for (ExtrusionPath path : multipath.paths) { - path.simplify(m_scaled_resolution); - gcode += this->_extrude(path, description, speed); - } - if (m_wipe.enable) { - m_wipe.path = std::move(multipath.paths.back().polyline); - m_wipe.path.reverse(); - - for (auto it = std::next(multipath.paths.rbegin()); it != multipath.paths.rend(); ++it) { - if (it->role().is_bridge()) - break; // Do not perform a wipe on bridges. - - assert(it->polyline.points.size() >= 2); - assert(m_wipe.path.points.back() == it->polyline.last_point()); - if (m_wipe.path.points.back() != it->polyline.last_point()) - break; // ExtrusionMultiPath is interrupted in some place. - - m_wipe.path.points.insert(m_wipe.path.points.end(), it->polyline.points.rbegin() + 1, it->polyline.points.rend()); - } - } + for (GCode::SmoothPathElement &el : smooth_path) + gcode += this->_extrude(el.path_attributes, el.path, description, speed); + m_wipe.set_path(std::move(smooth_path), true); // reset acceleration gcode += m_writer.set_print_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); return gcode; } -std::string GCode::extrude_entity(const ExtrusionEntity &entity, const std::string_view description, double speed) +std::string GCodeGenerator::extrude_entity(const ExtrusionEntityReference &entity, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed) { - if (const ExtrusionPath* path = dynamic_cast(&entity)) - return this->extrude_path(*path, description, speed); - else if (const ExtrusionMultiPath* multipath = dynamic_cast(&entity)) - return this->extrude_multi_path(*multipath, description, speed); - else if (const ExtrusionLoop* loop = dynamic_cast(&entity)) - return this->extrude_loop(*loop, description, speed); + if (const ExtrusionPath *path = dynamic_cast(&entity.extrusion_entity())) + return this->extrude_path(*path, entity.flipped(), smooth_path_cache, description, speed); + else if (const ExtrusionMultiPath *multipath = dynamic_cast(&entity.extrusion_entity())) + return this->extrude_multi_path(*multipath, entity.flipped(), smooth_path_cache, description, speed); + else if (const ExtrusionLoop *loop = dynamic_cast(&entity.extrusion_entity())) + return this->extrude_loop(*loop, smooth_path_cache, description, speed); else throw Slic3r::InvalidArgument("Invalid argument supplied to extrude()"); - return ""; + return {}; } -std::string GCode::extrude_path(ExtrusionPath path, std::string_view description, double speed) +std::string GCodeGenerator::extrude_path(const ExtrusionPath &path, bool reverse, const GCode::SmoothPathCache &smooth_path_cache, std::string_view description, double speed) { - path.simplify(m_scaled_resolution); - std::string gcode = this->_extrude(path, description, speed); - if (m_wipe.enable) { - m_wipe.path = std::move(path.polyline); - m_wipe.path.reverse(); - } + Geometry::ArcWelder::Path smooth_path = smooth_path_cache.resolve_or_fit(path, reverse, m_scaled_resolution); + std::string gcode = this->_extrude(path.attributes(), smooth_path, description, speed); + Geometry::ArcWelder::reverse(smooth_path); + m_wipe.set_path(std::move(smooth_path)); // reset acceleration gcode += m_writer.set_print_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); return gcode; } -std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fills) +std::string GCodeGenerator::extrude_support(const ExtrusionEntityReferences &support_fills, const GCode::SmoothPathCache &smooth_path_cache) { static constexpr const auto support_label = "support material"sv; static constexpr const auto support_interface_label = "support material interface"sv; std::string gcode; - if (! support_fills.entities.empty()) { + if (! support_fills.empty()) { const double support_speed = m_config.support_material_speed.value; const double support_interface_speed = m_config.support_material_interface_speed.get_abs_value(support_speed); - for (const ExtrusionEntity *ee : support_fills.entities) { - ExtrusionRole role = ee->role(); + for (const ExtrusionEntityReference &eref : support_fills) { + ExtrusionRole role = eref.extrusion_entity().role(); assert(role == ExtrusionRole::SupportMaterial || role == ExtrusionRole::SupportMaterialInterface); const auto label = (role == ExtrusionRole::SupportMaterial) ? support_label : support_interface_label; const double speed = (role == ExtrusionRole::SupportMaterial) ? support_speed : support_interface_speed; - const ExtrusionPath *path = dynamic_cast(ee); + const ExtrusionPath *path = dynamic_cast(&eref.extrusion_entity()); if (path) - gcode += this->extrude_path(*path, label, speed); - else { - const ExtrusionMultiPath *multipath = dynamic_cast(ee); - if (multipath) - gcode += this->extrude_multi_path(*multipath, label, speed); + gcode += this->extrude_path(*path, eref.flipped(), smooth_path_cache, label, speed); + else if (const ExtrusionMultiPath *multipath = dynamic_cast(&eref.extrusion_entity()); multipath) + gcode += this->extrude_multi_path(*multipath, eref.flipped(), smooth_path_cache, label, speed); else { - const ExtrusionEntityCollection *eec = dynamic_cast(ee); + const ExtrusionEntityCollection *eec = dynamic_cast(&eref.extrusion_entity()); assert(eec); - if (eec) - gcode += this->extrude_support(*eec); + if (eec) { + //FIXME maybe order the support here? + ExtrusionEntityReferences refs; + refs.reserve(eec->entities.size()); + std::transform(eec->entities.begin(), eec->entities.end(), std::back_inserter(refs), + [flipped = eref.flipped()](const ExtrusionEntity *ee) { return ExtrusionEntityReference{ *ee, flipped }; }); + gcode += this->extrude_support(refs, smooth_path_cache); } } } @@ -2916,17 +2981,17 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill return gcode; } -bool GCode::GCodeOutputStream::is_error() const +bool GCodeGenerator::GCodeOutputStream::is_error() const { return ::ferror(this->f); } -void GCode::GCodeOutputStream::flush() +void GCodeGenerator::GCodeOutputStream::flush() { ::fflush(this->f); } -void GCode::GCodeOutputStream::close() +void GCodeGenerator::GCodeOutputStream::close() { if (this->f) { ::fclose(this->f); @@ -2934,7 +2999,7 @@ void GCode::GCodeOutputStream::close() } } -void GCode::GCodeOutputStream::write(const char *what) +void GCodeGenerator::GCodeOutputStream::write(const char *what) { if (what != nullptr) { //FIXME don't allocate a string, maybe process a batch of lines? @@ -2945,13 +3010,13 @@ void GCode::GCodeOutputStream::write(const char *what) } } -void GCode::GCodeOutputStream::writeln(const std::string &what) +void GCodeGenerator::GCodeOutputStream::writeln(const std::string &what) { if (! what.empty()) this->write(what.back() == '\n' ? what : what + '\n'); } -void GCode::GCodeOutputStream::write_format(const char* format, ...) +void GCodeGenerator::GCodeOutputStream::write_format(const char* format, ...) { va_list args; va_start(args, format); @@ -2983,22 +3048,31 @@ void GCode::GCodeOutputStream::write_format(const char* format, ...) va_end(args); } -std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view description, double speed) +std::string GCodeGenerator::_extrude( + const ExtrusionAttributes &path_attr, + const Geometry::ArcWelder::Path &path, + const std::string_view description, + double speed) { std::string gcode; - const std::string_view description_bridge = path.role().is_bridge() ? " (bridge)"sv : ""sv; + const std::string_view description_bridge = path_attr.role.is_bridge() ? " (bridge)"sv : ""sv; // go to first point of extrusion path - if (!m_last_pos_defined || m_last_pos != path.first_point()) { + if (!m_last_pos_defined) { + const double z = this->m_last_layer_z + this->m_config.z_offset.value; + const std::string comment{"move to print after unknown position"}; + gcode += this->retract_and_wipe(); + gcode += this->m_writer.travel_to_xy(this->point_to_gcode(path.front().point), comment); + gcode += this->m_writer.get_travel_to_z_gcode(z, comment); + } else if ( m_last_pos != path.front().point) { std::string comment = "move to first "; comment += description; comment += description_bridge; comment += " point"; - gcode += this->travel_to(path.first_point(), path.role(), comment); + gcode += this->travel_to(path.front().point, path_attr.role, comment); } //B38 - m_writer.add_object_change_labels(gcode); // compensate retraction gcode += this->unretract(); @@ -3010,17 +3084,17 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de acceleration = m_config.first_layer_acceleration.value; } else if (this->object_layer_over_raft() && m_config.first_layer_acceleration_over_raft.value > 0) { acceleration = m_config.first_layer_acceleration_over_raft.value; - } else if (m_config.bridge_acceleration.value > 0 && path.role().is_bridge()) { + } else if (m_config.bridge_acceleration.value > 0 && path_attr.role.is_bridge()) { acceleration = m_config.bridge_acceleration.value; - } else if (m_config.top_solid_infill_acceleration > 0 && path.role() == ExtrusionRole::TopSolidInfill) { + } else if (m_config.top_solid_infill_acceleration > 0 && path_attr.role == ExtrusionRole::TopSolidInfill) { acceleration = m_config.top_solid_infill_acceleration.value; - } else if (m_config.solid_infill_acceleration > 0 && path.role().is_solid_infill()) { + } else if (m_config.solid_infill_acceleration > 0 && path_attr.role.is_solid_infill()) { acceleration = m_config.solid_infill_acceleration.value; - } else if (m_config.infill_acceleration.value > 0 && path.role().is_infill()) { + } else if (m_config.infill_acceleration.value > 0 && path_attr.role.is_infill()) { acceleration = m_config.infill_acceleration.value; - } else if (m_config.external_perimeter_acceleration > 0 && path.role().is_external_perimeter()) { + } else if (m_config.external_perimeter_acceleration > 0 && path_attr.role.is_external_perimeter()) { acceleration = m_config.external_perimeter_acceleration.value; - } else if (m_config.perimeter_acceleration.value > 0 && path.role().is_perimeter()) { + } else if (m_config.perimeter_acceleration.value > 0 && path_attr.role.is_perimeter()) { acceleration = m_config.perimeter_acceleration.value; } else { acceleration = m_config.default_acceleration.value; @@ -3029,41 +3103,41 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de } // calculate extrusion length per distance unit - double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm; + double e_per_mm = m_writer.extruder()->e_per_mm3() * path_attr.mm3_per_mm; if (m_writer.extrusion_axis().empty()) // gcfNoExtrusion e_per_mm = 0; // set speed if (speed == -1) { - if (path.role() == ExtrusionRole::Perimeter) { + if (path_attr.role == ExtrusionRole::Perimeter) { speed = m_config.get_abs_value("perimeter_speed"); - } else if (path.role() == ExtrusionRole::ExternalPerimeter) { + } else if (path_attr.role == ExtrusionRole::ExternalPerimeter) { speed = m_config.get_abs_value("external_perimeter_speed"); - } else if (path.role().is_bridge()) { - assert(path.role().is_perimeter() || path.role() == ExtrusionRole::BridgeInfill); + } else if (path_attr.role.is_bridge()) { + assert(path_attr.role.is_perimeter() || path_attr.role == ExtrusionRole::BridgeInfill); speed = m_config.get_abs_value("bridge_speed"); - } else if (path.role() == ExtrusionRole::InternalInfill) { + } else if (path_attr.role == ExtrusionRole::InternalInfill) { speed = m_config.get_abs_value("infill_speed"); - } else if (path.role() == ExtrusionRole::SolidInfill) { + } else if (path_attr.role == ExtrusionRole::SolidInfill) { speed = m_config.get_abs_value("solid_infill_speed"); - } else if (path.role() == ExtrusionRole::TopSolidInfill) { + } else if (path_attr.role == ExtrusionRole::TopSolidInfill) { speed = m_config.get_abs_value("top_solid_infill_speed"); - } else if (path.role() == ExtrusionRole::Ironing) { + } else if (path_attr.role == ExtrusionRole::Ironing) { speed = m_config.get_abs_value("ironing_speed"); - } else if (path.role() == ExtrusionRole::GapFill) { + } else if (path_attr.role == ExtrusionRole::GapFill) { speed = m_config.get_abs_value("gap_fill_speed"); } else { throw Slic3r::InvalidArgument("Invalid speed"); } } if (m_volumetric_speed != 0. && speed == 0) - speed = m_volumetric_speed / path.mm3_per_mm; + speed = m_volumetric_speed / path_attr.mm3_per_mm; //B37 if (this->on_first_layer()) - speed = path.role() == ExtrusionRole::InternalInfill ? + speed = path_attr.role == ExtrusionRole::InternalInfill ? m_config.get_abs_value("first_layer_infill_speed") : - path.role() == ExtrusionRole::SolidInfill ? + path_attr.role == ExtrusionRole::SolidInfill ? m_config.get_abs_value("first_layer_infill_speed") : m_config.get_abs_value("first_layer_speed", speed); else if (this->object_layer_over_raft()) @@ -3072,54 +3146,37 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de // cap speed with max_volumetric_speed anyway (even if user is not using autospeed) speed = std::min( speed, - m_config.max_volumetric_speed.value / path.mm3_per_mm + m_config.max_volumetric_speed.value / path_attr.mm3_per_mm ); } if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) { // cap speed with max_volumetric_speed anyway (even if user is not using autospeed) speed = std::min( speed, - EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm + EXTRUDER_CONFIG(filament_max_volumetric_speed) / path_attr.mm3_per_mm ); } - bool variable_speed_or_fan_speed = false; - std::vector new_points{}; - if ((this->m_config.enable_dynamic_overhang_speeds || this->config().enable_dynamic_fan_speeds.get_at(m_writer.extruder()->id())) && - !this->on_first_layer() && path.role().is_perimeter()) { - std::vector> overhangs_with_speeds = {{100, ConfigOptionFloatOrPercent{speed, false}}}; - if (this->m_config.enable_dynamic_overhang_speeds) { - overhangs_with_speeds = {{0, m_config.overhang_speed_0}, - {25, m_config.overhang_speed_1}, - {50, m_config.overhang_speed_2}, - {75, m_config.overhang_speed_3}, - {100, ConfigOptionFloatOrPercent{speed, false}}}; - } - - std::vector> overhang_w_fan_speeds = {{100, ConfigOptionInts{0}}}; - if (this->m_config.enable_dynamic_fan_speeds.get_at(m_writer.extruder()->id())) { - overhang_w_fan_speeds = {{0, m_config.overhang_fan_speed_0}, - {25, m_config.overhang_fan_speed_1}, - {50, m_config.overhang_fan_speed_2}, - {75, m_config.overhang_fan_speed_3}, - {100, ConfigOptionInts{0}}}; - } + std::pair dynamic_speed_and_fan_speed{-1, -1}; + if (path_attr.overhang_attributes.has_value()) { double external_perim_reference_speed = m_config.get_abs_value("external_perimeter_speed"); if (external_perim_reference_speed == 0) - external_perim_reference_speed = m_volumetric_speed / path.mm3_per_mm; + external_perim_reference_speed = m_volumetric_speed / path_attr.mm3_per_mm; if (m_config.max_volumetric_speed.value > 0) - external_perim_reference_speed = std::min(external_perim_reference_speed, m_config.max_volumetric_speed.value / path.mm3_per_mm); + external_perim_reference_speed = std::min(external_perim_reference_speed, + m_config.max_volumetric_speed.value / path_attr.mm3_per_mm); if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) { external_perim_reference_speed = std::min(external_perim_reference_speed, - EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm); + EXTRUDER_CONFIG(filament_max_volumetric_speed) / path_attr.mm3_per_mm); } - new_points = m_extrusion_quality_estimator.estimate_speed_from_extrusion_quality(path, overhangs_with_speeds, overhang_w_fan_speeds, - m_writer.extruder()->id(), external_perim_reference_speed, - speed); - variable_speed_or_fan_speed = std::any_of(new_points.begin(), new_points.end(), - [speed](const ProcessedPoint &p) { return p.speed != speed || p.fan_speed != 0; }); + dynamic_speed_and_fan_speed = ExtrusionProcessor::calculate_overhang_speed(path_attr, this->m_config, m_writer.extruder()->id(), + external_perim_reference_speed, speed); + } + + if (dynamic_speed_and_fan_speed.first > -1) { + speed = dynamic_speed_and_fan_speed.first; } double F = speed * 60; // convert mm/sec to mm/min @@ -3127,7 +3184,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de // extrude arc or line if (m_enable_extrusion_role_markers) { - if (GCodeExtrusionRole role = extrusion_role_to_gcode_extrusion_role(path.role()); role != m_last_extrusion_role) + if (GCodeExtrusionRole role = extrusion_role_to_gcode_extrusion_role(path_attr.role); role != m_last_extrusion_role) { m_last_extrusion_role = role; if (m_enable_extrusion_role_markers) @@ -3145,29 +3202,29 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de bool last_was_wipe_tower = (m_last_processor_extrusion_role == GCodeExtrusionRole::WipeTower); assert(is_decimal_separator_point()); - if (GCodeExtrusionRole role = extrusion_role_to_gcode_extrusion_role(path.role()); role != m_last_processor_extrusion_role) { + if (GCodeExtrusionRole role = extrusion_role_to_gcode_extrusion_role(path_attr.role); role != m_last_processor_extrusion_role) { m_last_processor_extrusion_role = role; char buf[64]; sprintf(buf, ";%s%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role).c_str(), gcode_extrusion_role_to_string(m_last_processor_extrusion_role).c_str()); gcode += buf; } - if (last_was_wipe_tower || m_last_width != path.width) { - m_last_width = path.width; + if (last_was_wipe_tower || m_last_width != path_attr.width) { + m_last_width = path_attr.width; gcode += std::string(";") + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Width) + float_to_string_decimal_point(m_last_width) + "\n"; } #if ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || (m_last_mm3_per_mm != path.mm3_per_mm)) { - m_last_mm3_per_mm = path.mm3_per_mm; + if (last_was_wipe_tower || (m_last_mm3_per_mm != path_attr.mm3_per_mm)) { + m_last_mm3_per_mm = path_attr.mm3_per_mm; gcode += std::string(";") + GCodeProcessor::Mm3_Per_Mm_Tag + float_to_string_decimal_point(m_last_mm3_per_mm) + "\n"; } #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || std::abs(m_last_height - path.height) > EPSILON) { - m_last_height = path.height; + if (last_was_wipe_tower || std::abs(m_last_height - path_attr.height) > EPSILON) { + m_last_height = path_attr.height; gcode += std::string(";") + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Height) + float_to_string_decimal_point(m_last_height) + "\n"; @@ -3175,158 +3232,312 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de std::string cooling_marker_setspeed_comments; if (m_enable_cooling_markers) { - if (path.role().is_bridge()) + if (path_attr.role.is_bridge()) gcode += ";_BRIDGE_FAN_START\n"; else cooling_marker_setspeed_comments = ";_EXTRUDE_SET_SPEED"; - if (path.role() == ExtrusionRole::ExternalPerimeter) + if (path_attr.role == ExtrusionRole::ExternalPerimeter) cooling_marker_setspeed_comments += ";_EXTERNAL_PERIMETER"; } - if (!variable_speed_or_fan_speed) { // F is mm per minute. gcode += m_writer.set_speed(F, "", cooling_marker_setspeed_comments); + if (dynamic_speed_and_fan_speed.second >= 0) + gcode += ";_SET_FAN_SPEED" + std::to_string(int(dynamic_speed_and_fan_speed.second)) + "\n"; double path_length = 0.; std::string comment; if (m_config.gcode_comments) { comment = description; comment += description_bridge; } - Vec2d prev = this->point_to_gcode_quantized(path.polyline.points.front()); - auto it = path.polyline.points.begin(); - auto end = path.polyline.points.end(); + Vec2d prev_exact = this->point_to_gcode(path.front().point); + Vec2d prev = GCodeFormatter::quantize(prev_exact); + auto it = path.begin(); + auto end = path.end(); for (++ it; it != end; ++ it) { - Vec2d p = this->point_to_gcode_quantized(*it); - const double line_length = (p - prev).norm(); + Vec2d p_exact = this->point_to_gcode(it->point); + Vec2d p = GCodeFormatter::quantize(p_exact); + assert(p != prev); + if (p != prev) { + // Center of the radius to be emitted into the G-code: Either by radius or by center offset. + double radius = 0; + Vec2d ij; + if (it->radius != 0) { + // Extrude an arc. + assert(m_config.arc_fitting == ArcFittingType::EmitCenter); + radius = unscaled(it->radius); + { + // Calculate quantized IJ circle center offset. + ij = GCodeFormatter::quantize(Vec2d( + Geometry::ArcWelder::arc_center(prev_exact.cast(), p_exact.cast(), double(radius), it->ccw()) + - prev)); + if (ij == Vec2d::Zero()) + // Don't extrude a degenerated circle. + radius = 0; + } + } + if (radius == 0) { + // Extrude line segment. + if (const double line_length = (p - prev).norm(); line_length > 0) { path_length += line_length; gcode += m_writer.extrude_to_xy(p, e_per_mm * line_length, comment); - prev = p; } } else { - std::string marked_comment; - if (m_config.gcode_comments) { - marked_comment = description; - marked_comment += description_bridge; + double angle = Geometry::ArcWelder::arc_angle(prev.cast(), p.cast(), double(radius)); + assert(angle > 0); + const double line_length = angle * std::abs(radius); + path_length += line_length; + const double dE = e_per_mm * line_length; + assert(dE > 0); + gcode += m_writer.extrude_to_xy_G2G3IJ(p, ij, it->ccw(), dE, comment); } - double last_set_speed = new_points[0].speed * 60.0; - double last_set_fan_speed = new_points[0].fan_speed; - gcode += m_writer.set_speed(last_set_speed, "", cooling_marker_setspeed_comments); - gcode += "\n;_SET_FAN_SPEED" + std::to_string(int(last_set_fan_speed)) + "\n"; - Vec2d prev = this->point_to_gcode_quantized(new_points[0].p); - for (size_t i = 1; i < new_points.size(); i++) { - const ProcessedPoint &processed_point = new_points[i]; - Vec2d p = this->point_to_gcode_quantized(processed_point.p); - const double line_length = (p - prev).norm(); - gcode += m_writer.extrude_to_xy(p, e_per_mm * line_length, marked_comment); prev = p; - double new_speed = processed_point.speed * 60.0; - if (last_set_speed != new_speed) { - gcode += m_writer.set_speed(new_speed, "", cooling_marker_setspeed_comments); - last_set_speed = new_speed; - } - if (last_set_fan_speed != processed_point.fan_speed) { - last_set_fan_speed = processed_point.fan_speed; - gcode += "\n;_SET_FAN_SPEED" + std::to_string(int(last_set_fan_speed)) + "\n"; + prev_exact = p_exact; } } - gcode += "\n;_RESET_FAN_SPEED\n"; - } if (m_enable_cooling_markers) - gcode += path.role().is_bridge() ? ";_BRIDGE_FAN_END\n" : ";_EXTRUDE_END\n"; + gcode += path_attr.role.is_bridge() ? ";_BRIDGE_FAN_END\n" : ";_EXTRUDE_END\n"; - this->set_last_pos(path.last_point()); + if (dynamic_speed_and_fan_speed.second >= 0) + gcode += ";_RESET_FAN_SPEED\n"; + + this->set_last_pos(path.back().point); return gcode; } -// This method accepts &point in print coordinates. -std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string comment) -{ - /* Define the travel move as a line between current position and the taget point. - This is expressed in print coordinates, so it will need to be translated by - this->origin in order to get G-code coordinates. */ - Polyline travel { this->last_pos(), point }; +Points3 generate_flat_travel(tcb::span xy_path, const float elevation) { + Points3 result; + result.reserve(xy_path.size() - 1); + for (const Point& point : xy_path.subspan(1)) { + result.emplace_back(point.x(), point.y(), scaled(elevation)); + } + return result; +} +Vec2d place_at_segment(const Vec2d& current_point, const Vec2d& previous_point, const double distance) { + Vec2d direction = (current_point - previous_point).normalized(); + return previous_point + direction * distance; +} - if (this->config().avoid_crossing_curled_overhangs) { - if (m_config.avoid_crossing_perimeters) { - BOOST_LOG_TRIVIAL(warning) - << "Option >avoid crossing curled overhangs< is not compatible with avoid crossing perimeters and it will be ignored!"; +namespace GCode::Impl { +std::vector slice_xy_path(tcb::span xy_path, tcb::span sorted_distances) { + assert(xy_path.size() >= 2); + std::vector result; + result.reserve(xy_path.size() + sorted_distances.size()); + double total_distance{0}; + result.emplace_back(DistancedPoint{xy_path.front(), 0}); + Point previous_point = result.front().point; + std::size_t offset{0}; + for (const Point& point : xy_path.subspan(1)) { + Vec2d unscaled_point{unscaled(point)}; + Vec2d unscaled_previous_point{unscaled(previous_point)}; + const double current_segment_length = (unscaled_point - unscaled_previous_point).norm(); + for (const double distance_to_add : sorted_distances.subspan(offset)) { + if (distance_to_add <= total_distance + current_segment_length) { + Point to_place = scaled(place_at_segment( + unscaled_point, + unscaled_previous_point, + distance_to_add - total_distance + )); + if (to_place != previous_point && to_place != point) { + result.emplace_back(DistancedPoint{to_place, distance_to_add}); + } + ++offset; } else { - Point scaled_origin = Point(scaled(this->origin())); - travel = m_avoid_crossing_curled_overhangs.find_path(this->last_pos() + scaled_origin, point + scaled_origin); - travel.translate(-scaled_origin); + break; + } + } + total_distance += current_segment_length; + result.emplace_back(DistancedPoint{point, total_distance}); + previous_point = point; + } + return result; +} + +struct ElevatedTravelParams { + double lift_height{}; + double slope_end{}; +}; + +struct ElevatedTravelFormula { + double operator()(double distance_from_start) const { + if (distance_from_start < this->params.slope_end) { + const double lift_percent = distance_from_start / this->params.slope_end; + return lift_percent * this->params.lift_height; + } else { + return this->params.lift_height; } } - // check whether a straight travel move would need retraction - bool needs_retraction = this->needs_retraction(travel, role); - // check whether wipe could be disabled without causing visible stringing - bool could_be_wipe_disabled = false; - // Save state of use_external_mp_once for the case that will be needed to call twice m_avoid_crossing_perimeters.travel_to. - const bool used_external_mp_once = m_avoid_crossing_perimeters.used_external_mp_once(); + ElevatedTravelParams params{}; +}; - // if a retraction would be needed, try to use avoid_crossing_perimeters to plan a - // multi-hop travel path inside the configuration space - if (needs_retraction - && m_config.avoid_crossing_perimeters - && ! m_avoid_crossing_perimeters.disabled_once()) { - travel = m_avoid_crossing_perimeters.travel_to(*this, point, &could_be_wipe_disabled); - // check again whether the new travel path still needs a retraction - needs_retraction = this->needs_retraction(travel, role); - //if (needs_retraction && m_layer_index > 1) exit(0); +Points3 generate_elevated_travel( + const tcb::span xy_path, + const std::vector& ensure_points_at_distances, + const double initial_elevation, + const std::function& elevation +) { + Points3 result{}; + + std::vector extended_xy_path = slice_xy_path(xy_path, ensure_points_at_distances); + result.reserve(extended_xy_path.size()); + + for (const DistancedPoint& point : extended_xy_path) { + result.emplace_back(point.point.x(), point.point.y(), scaled(initial_elevation + elevation(point.distance_from_start))); } - // Re-allow avoid_crossing_perimeters for the next travel moves - m_avoid_crossing_perimeters.reset_once_modifiers(); + return result; +} +AABBTreeLines::LinesDistancer get_expolygons_distancer(const ExPolygons& polygons) { + std::vector lines; + for (const ExPolygon& polygon : polygons) { + for (const Line& line : polygon.lines()) { + lines.emplace_back(unscaled(line.a), unscaled(line.b)); + } + } + return AABBTreeLines::LinesDistancer{std::move(lines)}; + } + +std::optional get_first_crossed_line_distance( + tcb::span xy_path, + const AABBTreeLines::LinesDistancer& distancer +) { + assert(!xy_path.empty()); + if (xy_path.empty()) { + return {}; + } + double traversed_distance = 0; + for (const Line& line : xy_path) { + const Linef unscaled_line = {unscaled(line.a), unscaled(line.b)}; + auto intersections = distancer.intersections_with_line(unscaled_line); + if (!intersections.empty()) { + const Vec2d intersection = intersections.front().first; + const double distance = traversed_distance + (unscaled_line.a - intersection).norm(); + if (distance > EPSILON) { + return distance; + } else if (intersections.size() >= 2) { // Edge case + const Vec2d second_intersection = intersections[1].first; + return traversed_distance + (unscaled_line.a - second_intersection).norm(); + } + } + traversed_distance += (unscaled_line.a - unscaled_line.b).norm(); + } + + return {}; +} +std::optional get_obstacle_adjusted_slope_end( + const Lines& xy_path, + const std::optional>& previous_layer_distancer +) { + if (!previous_layer_distancer) { + return std::nullopt; + } + std::optional first_obstacle_distance = get_first_crossed_line_distance( + xy_path, *previous_layer_distancer + ); + if (!first_obstacle_distance) { + return std::nullopt; + } + return *first_obstacle_distance; +} + +ElevatedTravelParams get_elevated_traval_params( + const Lines& xy_path, + const FullPrintConfig& config, + const unsigned extruder_id, + const std::optional>& previous_layer_distancer +) { + ElevatedTravelParams elevation_params{}; + if (!config.travel_ramping_lift.get_at(extruder_id)) { + elevation_params.slope_end = 0; + elevation_params.lift_height = config.retract_lift.get_at(extruder_id); + return elevation_params; + } + elevation_params.lift_height = config.travel_max_lift.get_at(extruder_id); + const double slope_deg = config.travel_slope.get_at(extruder_id); + if (slope_deg >= 90 || slope_deg <= 0) { + elevation_params.slope_end = 0; + } else { + const double slope_rad = slope_deg * (M_PI / 180); // rad + elevation_params.slope_end = elevation_params.lift_height / std::tan(slope_rad); + } + std::optional obstacle_adjusted_slope_end{get_obstacle_adjusted_slope_end( + xy_path, + previous_layer_distancer + )}; + if (obstacle_adjusted_slope_end && obstacle_adjusted_slope_end < elevation_params.slope_end) { + elevation_params.slope_end = *obstacle_adjusted_slope_end; + } + + return elevation_params; +} +Points3 generate_travel_to_extrusion( + const Polyline& xy_path, + const FullPrintConfig& config, + const unsigned extruder_id, + const double initial_elevation, + const std::optional>& previous_layer_distancer +) { + const double upper_limit = config.retract_lift_below.get_at(extruder_id); + const double lower_limit = config.retract_lift_above.get_at(extruder_id); + if ( + (lower_limit > 0 && initial_elevation < lower_limit) + || (upper_limit > 0 && initial_elevation > upper_limit) + ) { + return generate_flat_travel(xy_path.points, initial_elevation); + } + ElevatedTravelParams elevation_params{get_elevated_traval_params( + xy_path.lines(), + config, + extruder_id, + previous_layer_distancer + )}; + + const std::vector ensure_points_at_distances{elevation_params.slope_end}; + + Points3 result{generate_elevated_travel( + xy_path.points, + ensure_points_at_distances, + initial_elevation, + ElevatedTravelFormula{elevation_params} + )}; + result.emplace_back(xy_path.back().x(), xy_path.back().y(), scaled(initial_elevation)); + return result; +} +} + +std::string GCodeGenerator::generate_travel_gcode( + const Points3& travel, + const std::string& comment +) { + std::string gcode; + const unsigned acceleration =(unsigned)(m_config.travel_acceleration.value + 0.5); + + if (travel.empty()) { + return ""; + } // generate G-code for the travel move - std::string gcode; - if (needs_retraction) { - if (m_config.avoid_crossing_perimeters && could_be_wipe_disabled) - m_wipe.reset_path(); - - Point last_post_before_retract = this->last_pos(); - gcode += this->retract(); - // When "Wipe while retracting" is enabled, then extruder moves to another position, and travel from this position can cross perimeters. - // Because of it, it is necessary to call avoid crossing perimeters again with new starting point after calling retraction() - // FIXME Lukas H.: Try to predict if this second calling of avoid crossing perimeters will be needed or not. It could save computations. - if (last_post_before_retract != this->last_pos() && m_config.avoid_crossing_perimeters) { - // If in the previous call of m_avoid_crossing_perimeters.travel_to was use_external_mp_once set to true restore this value for next call. - if (used_external_mp_once) - m_avoid_crossing_perimeters.use_external_mp_once(); - travel = m_avoid_crossing_perimeters.travel_to(*this, point); - // If state of use_external_mp_once was changed reset it to right value. - if (used_external_mp_once) - m_avoid_crossing_perimeters.reset_once_modifiers(); - } - } else - // Reset the wipe path when traveling, so one would not wipe along an old path. - m_wipe.reset_path(); - - //B38 - m_writer.add_object_change_labels(gcode); - - // use G1 because we rely on paths being straight (G0 may make round paths) - if (travel.size() >= 2) { - gcode += m_writer.set_travel_acceleration((unsigned int)(m_config.travel_acceleration.value + 0.5)); + gcode += this->m_writer.set_travel_acceleration(acceleration); - for (size_t i = 1; i < travel.size(); ++ i) - gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment); + for (const Vec3crd& point : travel) { + gcode += this->m_writer.travel_to_xyz(to_3d(this->point_to_gcode(point.head<2>()), unscaled(point.z())), comment); + this->set_last_pos(point.head<2>()); + } if (! GCodeWriter::supports_separate_travel_acceleration(config().gcode_flavor)) { // In case that this flavor does not support separate print and travel acceleration, // reset acceleration to default. - gcode += m_writer.set_travel_acceleration((unsigned int)(m_config.travel_acceleration.value + 0.5)); + gcode += this->m_writer.set_travel_acceleration(acceleration); } - this->set_last_pos(travel.points.back()); - } return gcode; } -bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role) +bool GCodeGenerator::needs_retraction(const Polyline &travel, ExtrusionRole role) { if (! m_writer.extruder() || travel.length() < scale_(EXTRUDER_CONFIG(retract_before_travel))) { // skip retraction if the move is shorter than the configured threshold @@ -3365,7 +3576,105 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role) return true; } -std::string GCode::retract(bool toolchange) +Polyline GCodeGenerator::generate_travel_xy_path( + const Point& start_point, + const Point& end_point, + const bool needs_retraction, + bool& could_be_wipe_disabled +) { + + const Point scaled_origin{scaled(this->origin())}; + const bool avoid_crossing_perimeters = ( + this->m_config.avoid_crossing_perimeters + && !this->m_avoid_crossing_perimeters.disabled_once() + ); + + Polyline xy_path{start_point, end_point}; + if (m_config.avoid_crossing_curled_overhangs) { + if (avoid_crossing_perimeters) { + BOOST_LOG_TRIVIAL(warning) + << "Option >avoid crossing curled overhangs< is not compatible with avoid crossing perimeters and it will be ignored!"; + } else { + xy_path = this->m_avoid_crossing_curled_overhangs.find_path( + start_point + scaled_origin, + end_point + scaled_origin + ); + xy_path.translate(-scaled_origin); + } + } + + + // if a retraction would be needed, try to use avoid_crossing_perimeters to plan a + // multi-hop travel path inside the configuration space + if ( + needs_retraction + && avoid_crossing_perimeters + ) { + xy_path = this->m_avoid_crossing_perimeters.travel_to(*this, end_point, &could_be_wipe_disabled); + } + + return xy_path; +} + +// This method accepts &point in print coordinates. +std::string GCodeGenerator::travel_to(const Point &point, ExtrusionRole role, std::string comment) +{ + + const Point start_point = this->last_pos(); + + using namespace GCode::Impl; + + // check whether a straight travel move would need retraction + + bool could_be_wipe_disabled {false}; + bool needs_retraction = this->needs_retraction(Polyline{start_point, point}, role); + + Polyline xy_path{generate_travel_xy_path( + start_point, point, needs_retraction, could_be_wipe_disabled + )}; + + needs_retraction = this->needs_retraction(xy_path, role); + + std::string wipe_retract_gcode{}; + if (needs_retraction) { + if (could_be_wipe_disabled) { + m_wipe.reset_path(); + } + + Point position_before_wipe{this->last_pos()}; + wipe_retract_gcode = this->retract_and_wipe(); + + if (this->last_pos() != position_before_wipe) { + xy_path = generate_travel_xy_path( + this->last_pos(), point, needs_retraction, could_be_wipe_disabled + ); + } + } else { + m_wipe.reset_path(); + } + + this->m_avoid_crossing_perimeters.reset_once_modifiers(); + + const unsigned extruder_id = this->m_writer.extruder()->id(); + const double retract_length = this->m_config.retract_length.get_at(extruder_id); + bool can_be_flat{!needs_retraction || retract_length == 0}; + const double initial_elevation = this->m_last_layer_z + this->m_config.z_offset.value; + const Points3 travel = ( + can_be_flat ? + generate_flat_travel(xy_path.points, initial_elevation) : + GCode::Impl::generate_travel_to_extrusion( + xy_path, + this->m_config, + extruder_id, + initial_elevation, + this->m_previous_layer_distancer + ) + ); + + return wipe_retract_gcode + generate_travel_gcode(travel, comment); +} + +std::string GCodeGenerator::retract_and_wipe(bool toolchange) { std::string gcode; @@ -3385,13 +3694,11 @@ std::string GCode::retract(bool toolchange) gcode += toolchange ? m_writer.retract_for_toolchange() : m_writer.retract(); gcode += m_writer.reset_e(); - if (m_writer.extruder()->retract_length() > 0 || m_config.use_firmware_retraction) - gcode += m_writer.lift(); return gcode; } -std::string GCode::set_extruder(unsigned int extruder_id, double print_z) +std::string GCodeGenerator::set_extruder(unsigned int extruder_id, double print_z) { if (!m_writer.need_toolchange(extruder_id)) return ""; @@ -3418,7 +3725,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z) } // prepend retraction on the current extruder - std::string gcode = this->retract(true); + std::string gcode = this->retract_and_wipe(true); // Always reset the extrusion path, even if the tool change retract is set to zero. m_wipe.reset_path(); @@ -3428,7 +3735,12 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z) unsigned int old_extruder_id = m_writer.extruder()->id(); const std::string &end_filament_gcode = m_config.end_filament_gcode.get_at(old_extruder_id); if (! end_filament_gcode.empty()) { - gcode += placeholder_parser_process("end_filament_gcode", end_filament_gcode, old_extruder_id); + DynamicConfig config; + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + config.set_key_value("layer_z", new ConfigOptionFloat(m_writer.get_position().z() - m_config.z_offset.value)); + config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + config.set_key_value("filament_extruder_id", new ConfigOptionInt(int(old_extruder_id))); + gcode += placeholder_parser_process("end_filament_gcode", end_filament_gcode, old_extruder_id, &config); check_add_eol(gcode); } } @@ -3488,11 +3800,11 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z) // Set the new extruder to the operating temperature. if (m_ooze_prevention.enable) gcode += m_ooze_prevention.post_toolchange(*this); - + this->m_last_pos_defined = false; return gcode; } //B41 -std::string GCode::set_object_range(Print &print) +std::string GCodeGenerator::set_object_range(Print &print) { std::string gcode; std::string object_name; @@ -3570,20 +3882,7 @@ std::string GCode::set_object_range(Print &print) } // convert a model-space scaled point into G-code coordinates -Vec2d GCode::point_to_gcode(const Point &point) const -{ - Vec2d extruder_offset = EXTRUDER_CONFIG(extruder_offset); - return unscaled(point) + m_origin - extruder_offset; -} - -Vec2d GCode::point_to_gcode_quantized(const Point &point) const -{ - Vec2d p = this->point_to_gcode(point); - return { GCodeFormatter::quantize_xyzf(p.x()), GCodeFormatter::quantize_xyzf(p.y()) }; -} - -// convert a model-space scaled point into G-code coordinates -Point GCode::gcode_to_point(const Vec2d &point) const +Point GCodeGenerator::gcode_to_point(const Vec2d &point) const { Vec2d pt = point - m_origin; if (const Extruder *extruder = m_writer.extruder(); extruder) diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 0f224ae..4e0d8a9 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -5,33 +5,39 @@ #include "JumpPointSearch.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" -#include "GCodeWriter.hpp" #include "Layer.hpp" #include "Point.hpp" #include "PlaceholderParser.hpp" #include "PrintConfig.hpp" +#include "Geometry/ArcWelder.hpp" #include "GCode/AvoidCrossingPerimeters.hpp" #include "GCode/CoolingBuffer.hpp" #include "GCode/FindReplace.hpp" +#include "GCode/GCodeWriter.hpp" +#include "GCode/LabelObjects.hpp" +#include "GCode/PressureEqualizer.hpp" #include "GCode/RetractWhenCrossingPerimeters.hpp" +#include "GCode/SmoothPath.hpp" #include "GCode/SpiralVase.hpp" #include "GCode/ToolOrdering.hpp" -#include "GCode/WipeTower.hpp" +#include "GCode/Wipe.hpp" +#include "GCode/WipeTowerIntegration.hpp" #include "GCode/SeamPlacer.hpp" #include "GCode/GCodeProcessor.hpp" #include "EdgeGrid.hpp" #include "GCode/ThumbnailData.hpp" +#include "tcbspan/span.hpp" #include #include #include -#include "GCode/PressureEqualizer.hpp" +//#include "GCode/PressureEqualizer.hpp" namespace Slic3r { // Forward declarations. -class GCode; +class GCodeGenerator; namespace { struct Item; } struct PrintInstance; @@ -41,71 +47,11 @@ public: bool enable; OozePrevention() : enable(false) {} - std::string pre_toolchange(GCode &gcodegen); - std::string post_toolchange(GCode &gcodegen); - -private: - int _get_temp(const GCode &gcodegen) const; -}; - -class Wipe { -public: - bool enable; - Polyline path; - - Wipe() : enable(false) {} - bool has_path() const { return ! this->path.empty(); } - void reset_path() { this->path.clear(); } - std::string wipe(GCode &gcodegen, bool toolchange); -}; - -class WipeTowerIntegration { -public: - WipeTowerIntegration( - const PrintConfig &print_config, - const std::vector &priming, - const std::vector> &tool_changes, - const WipeTower::ToolChangeResult &final_purge) : - m_left(/*float(print_config.wipe_tower_x.value)*/ 0.f), - m_right(float(/*print_config.wipe_tower_x.value +*/ print_config.wipe_tower_width.value)), - m_wipe_tower_pos(float(print_config.wipe_tower_x.value), float(print_config.wipe_tower_y.value)), - m_wipe_tower_rotation(float(print_config.wipe_tower_rotation_angle)), - m_extruder_offsets(print_config.extruder_offset.values), - m_priming(priming), - m_tool_changes(tool_changes), - m_final_purge(final_purge), - m_layer_idx(-1), - m_tool_change_idx(0) - {} - - std::string prime(GCode &gcodegen); - void next_layer() { ++ m_layer_idx; m_tool_change_idx = 0; } - std::string tool_change(GCode &gcodegen, int extruder_id, bool finish_layer); - std::string finalize(GCode &gcodegen); - std::vector used_filament_length() const; + std::string pre_toolchange(GCodeGenerator &gcodegen); + std::string post_toolchange(GCodeGenerator &gcodegen); private: - WipeTowerIntegration& operator=(const WipeTowerIntegration&); - std::string append_tcr(GCode &gcodegen, const WipeTower::ToolChangeResult &tcr, int new_extruder_id, double z = -1.) const; - - // Postprocesses gcode: rotates and moves G1 extrusions and returns result - std::string post_process_wipe_tower_moves(const WipeTower::ToolChangeResult& tcr, const Vec2f& translation, float angle) const; - - // Left / right edges of the wipe tower, for the planning of wipe moves. - const float m_left; - const float m_right; - const Vec2f m_wipe_tower_pos; - const float m_wipe_tower_rotation; - const std::vector m_extruder_offsets; - - // Reference to cached values at the Printer class. - const std::vector &m_priming; - const std::vector> &m_tool_changes; - const WipeTower::ToolChangeResult &m_final_purge; - // Current layer index. - int m_layer_idx; - int m_tool_change_idx; - double m_last_wipe_tower_print_z = 0.f; + int _get_temp(const GCodeGenerator &gcodegen) const; }; class ColorPrintColors @@ -129,9 +75,115 @@ struct LayerResult { static LayerResult make_nop_layer_result() { return {"", std::numeric_limits::max(), false, false, true}; } }; -class GCode { +namespace GCode::Impl { +struct DistancedPoint { + Point point; + double distance_from_start; +}; + +/** + * @brief Takes a path described as a list of points and adds points to it. + * + * @param xy_path A list of points describing a path in xy. + * @param sorted_distances A sorted list of distances along the path. + * @return Sliced path. + * + * The algorithm travels along the path segments and adds points to + * the segments in such a way that the points have specified distances + * from the xy_path start. **Any distances over the xy_path end will + * be simply ignored.** + * + * Example usage - simplified for clarity: + * @code + * std::vector distances{0.5, 1.5}; + * std::vector xy_path{{0, 0}, {1, 0}}; + * // produces + * {{0, 0}, {0, 0.5}, {1, 0}} + * // notice that 1.5 is omitted + * @endcode + */ +std::vector slice_xy_path(tcb::span xy_path, tcb::span sorted_distances); + +/** + * @brief Take xy_path and genrate a travel acording to elevation. + * + * @param xy_path A list of points describing a path in xy. + * @param ensure_points_at_distances See slice_xy_path sorted_distances. + * @param elevation A function taking current distance in mm as input and returning elevation in mm as output. + * + * **Be aweare** that the elevation function operates in mm, while xy_path and returned travel are in + * scaled coordinates. + */ +Points3 generate_elevated_travel( + const tcb::span xy_path, + const std::vector& ensure_points_at_distances, + const double initial_elevation, + const std::function& elevation +); + +/** + * @brief Takes a list o polygons and builds a AABBTree over all unscaled lines. + * + * @param polygons A list of polygons. + * @return AABB Tree over all lines of the polygons. + * + * Unscales the lines in the process! + */ +AABBTreeLines::LinesDistancer get_expolygons_distancer(const ExPolygons& polygons); + +/** + * @brief Given a AABB tree over lines find intersection with xy_path closest to the xy_path start. + * + * @param xy_path A path in 2D. + * @param distancer AABB Tree over lines. + * @return Distance to the first intersection if there is one. + * + * **Ignores intersection with xy_path starting point.** + */ +std::optional get_first_crossed_line_distance( + tcb::span xy_path, + const AABBTreeLines::LinesDistancer& distancer +); + + +/** + * Generates a regular polygon - all angles are the same (e.g. typical hexagon). + * + * @param centroid Central point. + * @param start_point The polygon point are ordered. This is the first point. + * @param points_count Amount of nodes of the polygon (e.g. 6 for haxagon). + * + * Distance between centroid and start point sets the scale of the polygon. + */ +Polygon generate_regular_polygon( + const Point& centroid, + const Point& start_point, + const unsigned points_count +); + +class Bed { + private: + Polygon inner_offset; + static Polygon get_inner_offset(const std::vector& shape, const double padding); + + public: + /** + * Bed shape with inner padding. + */ + Bed(const std::vector& shape, const double padding); + + Vec2d centroid; + + /** + * Returns true if the point is within the bed shape including inner padding. + */ + bool contains_within_padding(const Vec2d& point) const; +}; +} + +class GCodeGenerator { public: - GCode() : + GCodeGenerator() : m_origin(Vec2d::Zero()), m_enable_loop_clipping(true), m_enable_cooling_markers(false), @@ -153,7 +205,7 @@ public: m_silent_time_estimator_enabled(false), m_last_obj_copy(nullptr, Point(std::numeric_limits::max(), std::numeric_limits::max())) {} - ~GCode() = default; + ~GCodeGenerator() = default; // throws std::runtime_exception on error, // throws CanceledException through print->throw_if_canceled(). @@ -165,9 +217,19 @@ public: void set_origin(const coordf_t x, const coordf_t y) { this->set_origin(Vec2d(x, y)); } const Point& last_pos() const { return m_last_pos; } // Convert coordinates of the active object to G-code coordinates, possibly adjusted for extruder offset. - Vec2d point_to_gcode(const Point &point) const; + template + Vec2d point_to_gcode(const Eigen::MatrixBase &point) const { + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "GCodeGenerator::point_to_gcode(): first parameter is not a 2D vector"); + return Vec2d(unscaled(point.x()), unscaled(point.y())) + m_origin + - m_config.extruder_offset.get_at(m_writer.extruder()->id()); + } // Convert coordinates of the active object to G-code coordinates, possibly adjusted for extruder offset and quantized to G-code resolution. - Vec2d point_to_gcode_quantized(const Point &point) const; + template + Vec2d point_to_gcode_quantized(const Eigen::MatrixBase &point) const { + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "GCodeGenerator::point_to_gcode_quantized(): first parameter is not a 2D vector"); + Vec2d p = this->point_to_gcode(point); + return { GCodeFormatter::quantize_xyzf(p.x()), GCodeFormatter::quantize_xyzf(p.y()) }; + } Point gcode_to_point(const Vec2d &point) const; const FullPrintConfig &config() const { return m_config; } const Layer* layer() const { return m_layer; } @@ -187,6 +249,8 @@ public: // append full config to the given string static void append_full_config(const Print& print, std::string& str); + // translate full config into a list of items + static void encode_full_config(const Print& print, std::vector>& config); // Object and support extrusions of the same PrintObject at the same print_z. // public, so that it could be accessed by free helper functions from GCode.cpp @@ -250,6 +314,7 @@ private: // Set of object & print layers of the same PrintObject and with the same print_z. const ObjectsLayerToPrint &layers, const LayerTools &layer_tools, + const GCode::SmoothPathCaches &smooth_path_caches, const bool last_layer, // Pairs of PrintObject index and its instance index. const std::vector *ordering, @@ -264,6 +329,7 @@ private: const ToolOrdering &tool_ordering, const std::vector &print_object_instances_ordering, const std::vector> &layers_to_print, + const GCode::SmoothPathCache &smooth_path_cache_global, GCodeOutputStream &output_stream); // Process all layers of a single object instance (sequential mode) with a parallel pipeline: // Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser @@ -273,17 +339,26 @@ private: const ToolOrdering &tool_ordering, ObjectsLayerToPrint layers_to_print, const size_t single_object_idx, + const GCode::SmoothPathCache &smooth_path_cache_global, GCodeOutputStream &output_stream); void set_last_pos(const Point &pos) { m_last_pos = pos; m_last_pos_defined = true; } bool last_pos_defined() const { return m_last_pos_defined; } void set_extruders(const std::vector &extruder_ids); std::string preamble(); - std::string change_layer(coordf_t print_z); - std::string extrude_entity(const ExtrusionEntity &entity, const std::string_view description, double speed = -1.); - std::string extrude_loop(ExtrusionLoop loop, const std::string_view description, double speed = -1.); - std::string extrude_multi_path(ExtrusionMultiPath multipath, const std::string_view description, double speed = -1.); - std::string extrude_path(ExtrusionPath path, const std::string_view description, double speed = -1.); + std::optional get_helical_layer_change_gcode( + const coordf_t previous_layer_z, + const coordf_t print_z, + const std::string& comment + ); + std::string change_layer(coordf_t previous_layer_z, coordf_t print_z); + std::string extrude_entity(const ExtrusionEntityReference &entity, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); + std::string extrude_loop(const ExtrusionLoop &loop, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); + std::string extrude_skirt(const ExtrusionLoop &loop_src, const ExtrusionFlow &extrusion_flow_override, + const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed); + + std::string extrude_multi_path(const ExtrusionMultiPath &multipath, bool reverse, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); + std::string extrude_path(const ExtrusionPath &path, bool reverse, const GCode::SmoothPathCache &smooth_path_cache, const std::string_view description, double speed = -1.); struct InstanceToPrint { @@ -317,18 +392,27 @@ private: const ObjectLayerToPrint &layer_to_print, // Container for extruder overrides (when wiping into object or infill). const LayerTools &layer_tools, + // Optional smooth path interpolating extrusion polylines. + const GCode::SmoothPathCache &smooth_path_cache, // Is any extrusion possibly marked as wiping extrusion? const bool is_anything_overridden, // Round 1 (wiping into object or infill) or round 2 (normal extrusions). const bool print_wipe_extrusions); - std::string extrude_support(const ExtrusionEntityCollection &support_fills); + std::string extrude_support(const ExtrusionEntityReferences &support_fills, const GCode::SmoothPathCache &smooth_path_cache); + std::string generate_travel_gcode( + const Points3& travel, + const std::string& comment + ); + Polyline generate_travel_xy_path( + const Point& start, + const Point& end, + const bool needs_retraction, + bool& could_be_wipe_disabled + ); std::string travel_to(const Point &point, ExtrusionRole role, std::string comment); bool needs_retraction(const Polyline &travel, ExtrusionRole role = ExtrusionRole::None); - std::string retract(bool toolchange = false); - std::string unretract() { return m_writer.unlift() + m_writer.unretract(); } - std::string set_extruder(unsigned int extruder_id, double print_z); //B41 std::string set_object_range(Print &print); @@ -338,11 +422,13 @@ private: int unique_id; }; std::unordered_map m_label_data; - + std::string retract_and_wipe(bool toolchange = false); + std::string unretract() { return m_writer.unretract(); } + std::string set_extruder(unsigned int extruder_id, double print_z); + bool line_distancer_is_required(const std::vector& extruder_ids); // Cache for custom seam enforcers/blockers for each layer. SeamPlacer m_seam_placer; - ExtrusionQualityEstimator m_extrusion_quality_estimator; /* Origin of print coordinates expressed in unscaled G-code coordinates. This affects the input arguments supplied to the extrude*() and travel_to() @@ -367,8 +453,8 @@ private: // Input/output from/to custom G-code block, for returning position, retraction etc. DynamicConfig output_config; ConfigOptionFloats *opt_position { nullptr }; - ConfigOptionFloat *opt_zhop { nullptr }; ConfigOptionFloats *opt_e_position { nullptr }; + ConfigOptionFloat *opt_zhop { nullptr }; ConfigOptionFloats *opt_e_retracted { nullptr }; ConfigOptionFloats *opt_e_restart_extra { nullptr }; ConfigOptionFloats *opt_extruded_volume { nullptr }; @@ -384,7 +470,8 @@ private: } m_placeholder_parser_integration; OozePrevention m_ooze_prevention; - Wipe m_wipe; + GCode::Wipe m_wipe; + GCode::LabelObjects m_label_objects; AvoidCrossingPerimeters m_avoid_crossing_perimeters; JPSPathFinder m_avoid_crossing_curled_overhangs; RetractWhenCrossingPerimeters m_retract_when_crossing_perimeters; @@ -407,6 +494,7 @@ private: // In non-sequential mode, all its copies will be printed. const Layer* m_layer; // m_layer is an object layer and it is being printed over raft surface. + std::optional> m_previous_layer_distancer; bool m_object_layer_over_raft; double m_volumetric_speed; // Support for the extrusion role markers. Which marker is active? @@ -427,7 +515,7 @@ private: std::unique_ptr m_spiral_vase; std::unique_ptr m_find_replace; std::unique_ptr m_pressure_equalizer; - std::unique_ptr m_wipe_tower; + std::unique_ptr m_wipe_tower; // Heights (print_z) at which the skirt has already been extruded. std::vector m_skirt_done; @@ -443,7 +531,8 @@ private: // Processor GCodeProcessor m_processor; - std::string _extrude(const ExtrusionPath &path, const std::string_view description, double speed = -1); + std::string _extrude( + const ExtrusionAttributes &attribs, const Geometry::ArcWelder::Path &path, const std::string_view description, double speed = -1); void print_machine_envelope(GCodeOutputStream &file, Print &print); void _print_first_layer_bed_temperature(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait); void _print_first_layer_extruder_temperatures(GCodeOutputStream &file, Print &print, const std::string &gcode, unsigned int first_printing_extruder_id, bool wait); @@ -453,8 +542,12 @@ private: // To control print speed of 1st object layer over raft interface. bool object_layer_over_raft() const { return m_object_layer_over_raft; } - friend class Wipe; - friend class WipeTowerIntegration; + // Fill in cache of smooth paths for perimeters, fills and supports of the given object layers. + // Based on params, the paths are either decimated to sparser polylines, or interpolated with circular arches. + static void smooth_path_interpolate(const ObjectLayerToPrint &layers, const GCode::SmoothPathCache::InterpolationParameters ¶ms, GCode::SmoothPathCache &out); + + friend class GCode::Wipe; + friend class GCode::WipeTowerIntegration; friend class PressureEqualizer; }; diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index c866e13..72e717c 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -730,7 +730,7 @@ static bool any_expolygon_contains(const ExPolygons &ex_polygons, const std::vec return false; } -static bool need_wipe(const GCode &gcodegen, +static bool need_wipe(const GCodeGenerator &gcodegen, const ExPolygons &lslices_offset, const std::vector &lslices_offset_bboxes, const EdgeGrid::Grid &grid_lslices_offset, @@ -738,7 +738,7 @@ static bool need_wipe(const GCode &gcodegen, const Polyline &result_travel, const size_t intersection_count) { - bool z_lift_enabled = gcodegen.config().retract_lift.get_at(gcodegen.writer().extruder()->id()) > 0.; + bool z_lift_enabled = gcodegen.config().travel_max_lift.get_at(gcodegen.writer().extruder()->id()) > 0.; bool wipe_needed = false; // If the original unmodified path doesn't have any intersection with boundary, then it is entirely inside the object otherwise is entirely @@ -1167,7 +1167,7 @@ static void init_boundary(AvoidCrossingPerimeters::Boundary *boundary, Polygons } // Plan travel, which avoids perimeter crossings by following the boundaries of the layer. -Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point &point, bool *could_be_wipe_disabled) +Polyline AvoidCrossingPerimeters::travel_to(const GCodeGenerator &gcodegen, const Point &point, bool *could_be_wipe_disabled) { // If use_external, then perform the path planning in the world coordinate system (correcting for the gcodegen offset). // Otherwise perform the path planning in the coordinate system of the active object. diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp index eb81c79..5e6d83f 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp @@ -8,7 +8,7 @@ namespace Slic3r { // Forward declarations. -class GCode; +class GCodeGenerator; class Layer; class Point; @@ -25,13 +25,13 @@ public: void init_layer(const Layer &layer); - Polyline travel_to(const GCode& gcodegen, const Point& point) + Polyline travel_to(const GCodeGenerator &gcodegen, const Point& point) { bool could_be_wipe_disabled; return this->travel_to(gcodegen, point, &could_be_wipe_disabled); } - Polyline travel_to(const GCode& gcodegen, const Point& point, bool* could_be_wipe_disabled); + Polyline travel_to(const GCodeGenerator &gcodegen, const Point& point, bool* could_be_wipe_disabled); struct Boundary { // Collection of boundaries used for detection of crossing perimeters for travels diff --git a/src/libslic3r/GCode/ConflictChecker.cpp b/src/libslic3r/GCode/ConflictChecker.cpp index 09ef1c8..5c2cdd6 100644 --- a/src/libslic3r/GCode/ConflictChecker.cpp +++ b/src/libslic3r/GCode/ConflictChecker.cpp @@ -89,6 +89,86 @@ inline Grids line_rasterization(const Line &line, int64_t xdist = RasteXDistance } } // namespace RasterizationImpl +static std::vector getFakeExtrusionPathsFromWipeTower(const WipeTowerData& wtd) +{ + float h = wtd.height; + float lh = wtd.first_layer_height; + int d = scale_(wtd.depth); + int w = scale_(wtd.width); + int bd = scale_(wtd.brim_width); + Point minCorner = { -wtd.brim_width, -wtd.brim_width }; + Point maxCorner = { minCorner.x() + w + bd, minCorner.y() + d + bd }; + float width = wtd.width; + float depth = wtd.depth; + float height = wtd.height; + float cone_angle = wtd.cone_angle; + const auto& z_and_depth_pairs = wtd.z_and_depth_pairs; + + const auto [cone_base_R, cone_scale_x] = WipeTower::get_wipe_tower_cone_base(width, height, depth, cone_angle); + + std::vector paths; + for (float hh = 0.f; hh < h; hh += lh) { + + if (hh != 0.f) { + // The wipe tower may be getting smaller. Find the depth for this layer. + size_t i = 0; + for (i=0; i= z_and_depth_pairs[i].first && hh < z_and_depth_pairs[i+1].first) + break; + d = scale_(z_and_depth_pairs[i].second); + minCorner = {0.f, -d/2 + scale_(z_and_depth_pairs.front().second/2.f)}; + maxCorner = { minCorner.x() + w, minCorner.y() + d }; + } + + + ExtrusionPath path({ minCorner, {maxCorner.x(), minCorner.y()}, maxCorner, {minCorner.x(), maxCorner.y()}, minCorner }, + ExtrusionAttributes{ ExtrusionRole::WipeTower, ExtrusionFlow{ 0.0, 0.0, lh } }); + paths.push_back({ path }); + + // We added the border, now add several parallel lines so we can detect an object that is fully inside the tower. + // For now, simply use fixed spacing of 3mm. + for (coord_t y=minCorner.y()+scale_(3.); y 0.) { + path.polyline.clear(); + double r = cone_base_R * (1 - hh/height); + for (double alpha=0; alpha<2.01*M_PI; alpha+=2*M_PI/20.) + path.polyline.points.emplace_back(Point::new_scale(width/2. + r * std::cos(alpha)/cone_scale_x, depth/2. + r * std::sin(alpha))); + paths.back().emplace_back(path); + if (hh == 0.f) { // Cone brim. + for (float bw=wtd.brim_width; bw>0.f; bw-=3.f) { + path.polyline.clear(); + for (double alpha=0; alpha<2.01*M_PI; alpha+=2*M_PI/20.) // see load_wipe_tower_preview, where the same is a bit clearer + path.polyline.points.emplace_back(Point::new_scale( + width/2. + cone_base_R * std::cos(alpha)/cone_scale_x * (1. + cone_scale_x*bw/cone_base_R), + depth/2. + cone_base_R * std::sin(alpha) * (1. + bw/cone_base_R)) + ); + paths.back().emplace_back(path); + } + } + } + + // Only the first layer has brim. + if (hh == 0.f) { + minCorner = minCorner + Point(bd, bd); + maxCorner = maxCorner - Point(bd, bd); + } + } + + // Rotate and translate the tower into the final position. + for (ExtrusionPaths& ps : paths) { + for (ExtrusionPath& p : ps) { + p.polyline.rotate(Geometry::deg2rad(wtd.rotation_angle)); + p.polyline.translate(scale_(wtd.position.x()), scale_(wtd.position.y())); + } + } + + return paths; +} void LinesBucketQueue::emplace_back_bucket(std::vector &&paths, const void *objPtr, Points offsets) { if (_objsPtrToId.find(objPtr) == _objsPtrToId.end()) { @@ -165,14 +245,14 @@ ExtrusionPaths getExtrusionPathsFromLayer(LayerRegionPtrs layerRegionPtrs) return paths; } -ExtrusionPaths getExtrusionPathsFromSupportLayer(SupportLayer *supportLayer) +ExtrusionPaths getExtrusionPathsFromSupportLayer(const SupportLayer *supportLayer) { ExtrusionPaths paths; getExtrusionPathsFromEntity(&supportLayer->support_fills, paths); return paths; } -std::pair, std::vector> getAllLayersExtrusionPathsFromObject(PrintObject *obj) +std::pair, std::vector> getAllLayersExtrusionPathsFromObject(const PrintObject *obj) { std::vector objPaths, supportPaths; @@ -203,17 +283,22 @@ ConflictComputeOpt ConflictChecker::find_inter_of_lines(const LineWithIDs &lines return {}; } -ConflictResultOpt ConflictChecker::find_inter_of_lines_in_diff_objs(PrintObjectPtrs objs, - std::optional wtdptr) // find the first intersection point of lines in different objects +ConflictResultOpt ConflictChecker::find_inter_of_lines_in_diff_objs(SpanOfConstPtrs objs, + const WipeTowerData& wipe_tower_data) // find the first intersection point of lines in different objects { if (objs.empty() || (objs.size() == 1 && objs.front()->instances().size() == 1)) { return {}; } + // The code ported from BS uses void* to identify objects... + // Let's use the address of this variable to represent the wipe tower. + int wtptr = 0; LinesBucketQueue conflictQueue; - if (wtdptr.has_value()) { // wipe tower at 0 by default - std::vector wtpaths = (*wtdptr)->getFakeExtrusionPathsFromWipeTower(); - conflictQueue.emplace_back_bucket(std::move(wtpaths), *wtdptr, Points{Point((*wtdptr)->plate_origin)}); + if (! wipe_tower_data.z_and_depth_pairs.empty()) { + // The wipe tower is being generated. + const Vec2d plate_origin = Vec2d::Zero(); + std::vector wtpaths = getFakeExtrusionPathsFromWipeTower(wipe_tower_data); + conflictQueue.emplace_back_bucket(std::move(wtpaths), &wtptr, Points{Point(plate_origin)}); } - for (PrintObject *obj : objs) { + for (const PrintObject *obj : objs) { std::pair, std::vector> layers = getAllLayersExtrusionPathsFromObject(obj); Points instances_shifts; @@ -256,14 +341,12 @@ ConflictResultOpt ConflictChecker::find_inter_of_lines_in_diff_objs(PrintObjectP const void *ptr1 = conflictQueue.idToObjsPtr(conflict[0].first._obj1); const void *ptr2 = conflictQueue.idToObjsPtr(conflict[0].first._obj2); double conflictHeight = conflict[0].second; - if (wtdptr.has_value()) { - const FakeWipeTower* wtdp = *wtdptr; - if (ptr1 == wtdp || ptr2 == wtdp) { - if (ptr2 == wtdp) { std::swap(ptr1, ptr2); } + if (ptr1 == &wtptr || ptr2 == &wtptr) { + assert(! wipe_tower_data.z_and_depth_pairs.empty()); + if (ptr2 == &wtptr) { std::swap(ptr1, ptr2); } const PrintObject *obj2 = reinterpret_cast(ptr2); return std::make_optional("WipeTower", obj2->model_object()->name, conflictHeight, nullptr, ptr2); } - } const PrintObject *obj1 = reinterpret_cast(ptr1); const PrintObject *obj2 = reinterpret_cast(ptr2); return std::make_optional(obj1->model_object()->name, obj2->model_object()->name, conflictHeight, ptr1, ptr2); diff --git a/src/libslic3r/GCode/ConflictChecker.hpp b/src/libslic3r/GCode/ConflictChecker.hpp index 344018f..f5fe422 100644 --- a/src/libslic3r/GCode/ConflictChecker.hpp +++ b/src/libslic3r/GCode/ConflictChecker.hpp @@ -1,10 +1,7 @@ #ifndef slic3r_ConflictChecker_hpp_ #define slic3r_ConflictChecker_hpp_ -#include "../Utils.hpp" -#include "../Model.hpp" -#include "../Print.hpp" -#include "../Layer.hpp" +#include "libslic3r/Print.hpp" #include #include @@ -43,7 +40,7 @@ public: void raise() { if (valid()) { - if (_piles[_curPileIdx].empty() == false) { _curHeight += _piles[_curPileIdx].front().height; } + if (_piles[_curPileIdx].empty() == false) { _curHeight += _piles[_curPileIdx].front().height(); } _curPileIdx++; } } @@ -119,7 +116,7 @@ using ConflictObjName = std::optional>; struct ConflictChecker { - static ConflictResultOpt find_inter_of_lines_in_diff_objs(PrintObjectPtrs objs, std::optional wtdptr); + static ConflictResultOpt find_inter_of_lines_in_diff_objs(SpanOfConstPtrs objs, const WipeTowerData& wtd); static ConflictComputeOpt find_inter_of_lines(const LineWithIDs &lines); static ConflictComputeOpt line_intersect(const LineWithID &l1, const LineWithID &l2); }; diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index 83135e4..167dad0 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -19,7 +19,7 @@ namespace Slic3r { -CoolingBuffer::CoolingBuffer(GCode &gcodegen) : m_config(gcodegen.config()), m_toolchange_prefix(gcodegen.writer().toolchange_prefix()), m_current_extruder(0) +CoolingBuffer::CoolingBuffer(GCodeGenerator &gcodegen) : m_config(gcodegen.config()), m_toolchange_prefix(gcodegen.writer().toolchange_prefix()), m_current_extruder(0) { this->reset(gcodegen.writer().get_position()); @@ -33,39 +33,45 @@ CoolingBuffer::CoolingBuffer(GCode &gcodegen) : m_config(gcodegen.config()), m_t void CoolingBuffer::reset(const Vec3d &position) { - m_current_pos.assign(5, 0.f); - m_current_pos[0] = float(position.x()); - m_current_pos[1] = float(position.y()); - m_current_pos[2] = float(position.z()); - m_current_pos[4] = float(m_config.travel_speed.value); - m_fan_speed = -1; -//Y12 - m_fan_speed = -1; + assert(m_current_pos.size() == 5); + m_current_pos[AxisIdx::X] = float(position.x()); + m_current_pos[AxisIdx::Y] = float(position.y()); + m_current_pos[AxisIdx::Z] = float(position.z()); + m_current_pos[AxisIdx::E] = 0.f; + m_current_pos[AxisIdx::F] = float(m_config.travel_speed.value); m_fan_speed = -1; } struct CoolingLine { - enum Type { + enum Type : uint32_t { TYPE_SET_TOOL = 1 << 0, TYPE_EXTRUDE_END = 1 << 1, TYPE_BRIDGE_FAN_START = 1 << 2, TYPE_BRIDGE_FAN_END = 1 << 3, TYPE_G0 = 1 << 4, TYPE_G1 = 1 << 5, - TYPE_ADJUSTABLE = 1 << 6, - TYPE_EXTERNAL_PERIMETER = 1 << 7, + // G2 or G3: Arc interpolation + TYPE_G2G3 = 1 << 6, + TYPE_ADJUSTABLE = 1 << 7, + TYPE_EXTERNAL_PERIMETER = 1 << 8, + // Arc interpolation, counter-clockwise. + TYPE_G2G3_CCW = 1 << 9, + // Arc interpolation, arc defined by IJ (offset of arc center from its start position). + TYPE_G2G3_IJ = 1 << 10, + // Arc interpolation, arc defined by R (arc radius, positive - smaller, negative - larger). + TYPE_G2G3_R = 1 << 11, // The line sets a feedrate. - TYPE_HAS_F = 1 << 8, - TYPE_WIPE = 1 << 9, - TYPE_G4 = 1 << 10, - TYPE_G92 = 1 << 11, + TYPE_HAS_F = 1 << 12, + TYPE_WIPE = 1 << 13, + TYPE_G4 = 1 << 14, + TYPE_G92 = 1 << 15, // Would be TYPE_ADJUSTABLE, but the block of G-code lines has zero extrusion length, thus the block // cannot have its speed adjusted. This should not happen (sic!). - TYPE_ADJUSTABLE_EMPTY = 1 << 12, + TYPE_ADJUSTABLE_EMPTY = 1 << 16, // Custom fan speed (introduced for overhang fan speed) - TYPE_SET_FAN_SPEED = 1 << 13, - TYPE_RESET_FAN_SPEED = 1 << 14, + TYPE_SET_FAN_SPEED = 1 << 17, + TYPE_RESET_FAN_SPEED = 1 << 18, }; CoolingLine(unsigned int type, size_t line_start, size_t line_end) : @@ -327,7 +333,7 @@ std::string CoolingBuffer::process_layer(std::string &&gcode, size_t layer_id, b // Parse the layer G-code for the moves, which could be adjusted. // Return the list of parsed lines, bucketed by an extruder. -std::vector CoolingBuffer::parse_layer_gcode(const std::string &gcode, std::vector ¤t_pos) const +std::vector CoolingBuffer::parse_layer_gcode(const std::string &gcode, std::array ¤t_pos) const { std::vector per_extruder_adjustments(m_extruder_ids.size()); std::vector map_extruder_to_per_extruder_adjustment(m_num_extruders, 0); @@ -350,7 +356,7 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: // for a sequence of extrusion moves. size_t active_speed_modifier = size_t(-1); - std::vector new_pos; + std::array new_pos; for (; *line_start != 0; line_start = line_end) { while (*line_end != '\n' && *line_end != 0) @@ -365,12 +371,20 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: line.type = CoolingLine::TYPE_G0; else if (boost::starts_with(sline, "G1 ")) line.type = CoolingLine::TYPE_G1; + else if (boost::starts_with(sline, "G2 ")) + // Arc, clockwise. + line.type = CoolingLine::TYPE_G2G3; + else if (boost::starts_with(sline, "G3 ")) + // Arc, counter-clockwise. + line.type = CoolingLine::TYPE_G2G3 | CoolingLine::TYPE_G2G3_CCW; else if (boost::starts_with(sline, "G92 ")) line.type = CoolingLine::TYPE_G92; if (line.type) { - // G0, G1 or G92 + // G0, G1, G2, G3 or G92 + // Initialize current_pos from new_pos, set IJKR to zero. + std::fill(std::copy(std::begin(current_pos), std::end(current_pos), std::begin(new_pos)), + std::end(new_pos), 0.f); // Parse the G-code line. - new_pos = current_pos; for (auto c = sline.begin() + 3;;) { // Skip whitespaces. for (; c != sline.end() && (*c == ' ' || *c == '\t'); ++ c); @@ -379,21 +393,31 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: // Parse the axis. size_t axis = (*c >= 'X' && *c <= 'Z') ? (*c - 'X') : - (*c == extrusion_axis) ? 3 : (*c == 'F') ? 4 : size_t(-1); + (*c == extrusion_axis) ? AxisIdx::E : (*c == 'F') ? AxisIdx::F : + (*c >= 'I' && *c <= 'K') ? int(AxisIdx::I) + (*c - 'I') : + (*c == 'R') ? AxisIdx::R : size_t(-1); if (axis != size_t(-1)) { //auto [pend, ec] = fast_float::from_chars(&*(++ c), sline.data() + sline.size(), new_pos[axis]); - if (axis == 4) { + if (axis == AxisIdx::F) { // Convert mm/min to mm/sec. - new_pos[4] /= 60.f; + new_pos[AxisIdx::F] /= 60.f; if ((line.type & CoolingLine::TYPE_G92) == 0) // This is G0 or G1 line and it sets the feedrate. This mark is used for reducing the duplicate F calls. line.type |= CoolingLine::TYPE_HAS_F; - } + } else if (axis >= AxisIdx::I && axis <= AxisIdx::J) + line.type |= CoolingLine::TYPE_G2G3_IJ; + else if (axis == AxisIdx::R) + line.type |= CoolingLine::TYPE_G2G3_R; } // Skip this word. for (; c != sline.end() && *c != ' ' && *c != '\t'; ++ c); } + // If G2 or G3, then either center of the arc or radius has to be defined. + assert(! (line.type & CoolingLine::TYPE_G2G3) || + (line.type & (CoolingLine::TYPE_G2G3_IJ | CoolingLine::TYPE_G2G3_R))); + // Arc is defined either by IJ or by R, not by both. + assert(! ((line.type & CoolingLine::TYPE_G2G3_IJ) && (line.type & CoolingLine::TYPE_G2G3_R))); bool external_perimeter = boost::contains(sline, ";_EXTERNAL_PERIMETER"); bool wipe = boost::contains(sline, ";_WIPE"); if (external_perimeter) @@ -405,23 +429,41 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: active_speed_modifier = adjustment->lines.size(); } if ((line.type & CoolingLine::TYPE_G92) == 0) { - // G0 or G1. Calculate the duration. + // G0, G1, G2, G3. Calculate the duration. + assert((line.type & CoolingLine::TYPE_G0) != 0 + (line.type & CoolingLine::TYPE_G1) != 0 + (line.type & CoolingLine::TYPE_G2G3) != 0 == 1); if (m_config.use_relative_e_distances.value) // Reset extruder accumulator. - current_pos[3] = 0.f; + current_pos[AxisIdx::E] = 0.f; float dif[4]; for (size_t i = 0; i < 4; ++ i) dif[i] = new_pos[i] - current_pos[i]; - float dxy2 = dif[0] * dif[0] + dif[1] * dif[1]; - float dxyz2 = dxy2 + dif[2] * dif[2]; + float dxy2; + if (line.type & CoolingLine::TYPE_G2G3) { + // Measure arc length. + if (line.type & CoolingLine::TYPE_G2G3_IJ) { + dxy2 = sqr(Geometry::ArcWelder::arc_length( + Vec2d(current_pos[AxisIdx::X], current_pos[AxisIdx::Y]), + Vec2d(new_pos[AxisIdx::X], new_pos[AxisIdx::Y]), + Vec2d(current_pos[AxisIdx::X] + new_pos[AxisIdx::I], current_pos[AxisIdx::Y] + new_pos[AxisIdx::J]), + line.type & CoolingLine::TYPE_G2G3_CCW)); + } else if (line.type & CoolingLine::TYPE_G2G3_R) { + dxy2 = sqr(Geometry::ArcWelder::arc_length( + Vec2d(current_pos[AxisIdx::X], current_pos[AxisIdx::Y]), + Vec2d(new_pos[AxisIdx::X], new_pos[AxisIdx::Y]), + double(new_pos[AxisIdx::R]))); + } else + dxy2 = 0; + } else + dxy2 = sqr(dif[AxisIdx::X]) + sqr(dif[AxisIdx::Y]); + float dxyz2 = dxy2 + sqr(dif[AxisIdx::Z]); if (dxyz2 > 0.f) { // Movement in xyz, calculate time from the xyz Euclidian distance. line.length = sqrt(dxyz2); - } else if (std::abs(dif[3]) > 0.f) { + } else if (std::abs(dif[AxisIdx::E]) > 0.f) { // Movement in the extruder axis. - line.length = std::abs(dif[3]); + line.length = std::abs(dif[AxisIdx::E]); } - line.feedrate = new_pos[4]; + line.feedrate = new_pos[AxisIdx::F]; assert((line.type & CoolingLine::TYPE_ADJUSTABLE) == 0 || line.feedrate > 0.f); if (line.length > 0) { assert(line.feedrate > 0); @@ -433,7 +475,7 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: assert(adjustment->min_print_speed >= 0); line.time_max = (adjustment->min_print_speed == 0.f) ? FLT_MAX : std::max(line.time, line.length / adjustment->min_print_speed); } - if (active_speed_modifier < adjustment->lines.size() && (line.type & CoolingLine::TYPE_G1)) { + if (active_speed_modifier < adjustment->lines.size() && (line.type & (CoolingLine::TYPE_G1 | CoolingLine::TYPE_G2G3))) { // Inside the ";_EXTRUDE_SET_SPEED" blocks, there must not be a G1 Fxx entry. assert((line.type & CoolingLine::TYPE_HAS_F) == 0); CoolingLine &sm = adjustment->lines[active_speed_modifier]; @@ -450,7 +492,7 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: line.type = 0; } } - current_pos = std::move(new_pos); + std::copy(std::begin(new_pos), std::begin(new_pos) + 5, std::begin(current_pos)); } else if (boost::starts_with(sline, ";_EXTRUDE_END")) { // Closing a block of non-zero length extrusion moves. line.type = CoolingLine::TYPE_EXTRUDE_END; @@ -508,16 +550,18 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: } else line.time = 0; line.time_max = line.time; - } else if (boost::contains(sline, ";_SET_FAN_SPEED")) { + } + + if (boost::contains(sline, ";_SET_FAN_SPEED")) { auto speed_start = sline.find_last_of('D'); int speed = 0; for (char num : sline.substr(speed_start + 1)) { speed = speed * 10 + (num - '0'); } - line.type = CoolingLine::TYPE_SET_FAN_SPEED; + line.type |= CoolingLine::TYPE_SET_FAN_SPEED; line.fan_speed = speed; } else if (boost::contains(sline, ";_RESET_FAN_SPEED")) { - line.type = CoolingLine::TYPE_RESET_FAN_SPEED; + line.type |= CoolingLine::TYPE_RESET_FAN_SPEED; } if (line.type != 0) diff --git a/src/libslic3r/GCode/CoolingBuffer.hpp b/src/libslic3r/GCode/CoolingBuffer.hpp index 85b3ed3..cd985d5 100644 --- a/src/libslic3r/GCode/CoolingBuffer.hpp +++ b/src/libslic3r/GCode/CoolingBuffer.hpp @@ -7,7 +7,7 @@ namespace Slic3r { -class GCode; +class GCodeGenerator; class Layer; struct PerExtruderAdjustments; @@ -22,7 +22,7 @@ struct PerExtruderAdjustments; // class CoolingBuffer { public: - CoolingBuffer(GCode &gcodegen); + CoolingBuffer(GCodeGenerator &gcodegen); void reset(const Vec3d &position); void set_current_extruder(unsigned int extruder_id) { m_current_extruder = extruder_id; } std::string process_layer(std::string &&gcode, size_t layer_id, bool flush); @@ -31,7 +31,7 @@ public: private: CoolingBuffer& operator=(const CoolingBuffer&) = delete; - std::vector parse_layer_gcode(const std::string &gcode, std::vector ¤t_pos) const; + std::vector parse_layer_gcode(const std::string &gcode, std::array ¤t_pos) const; float calculate_layer_slowdown(std::vector &per_extruder_adjustments); // Apply slow down over G-code lines stored in per_extruder_adjustments, enable fan if needed. // Returns the adjusted G-code. @@ -40,9 +40,11 @@ private: // G-code snippet cached for the support layers preceding an object layer. std::string m_gcode; // Internal data. - // X,Y,Z,E,F std::vector m_axis; - std::vector m_current_pos; + enum AxisIdx : int { + X = 0, Y, Z, E, F, I, J, K, R, Count + }; + std::array m_current_pos; // Current known fan speed or -1 if not known yet. int m_fan_speed; //Y12 @@ -54,7 +56,7 @@ private: // Highest of m_extruder_ids plus 1. unsigned int m_num_extruders { 0 }; const std::string m_toolchange_prefix; - // Referencs GCode::m_config, which is FullPrintConfig. While the PrintObjectConfig slice of FullPrintConfig is being modified, + // Referencs GCodeGenerator::m_config, which is FullPrintConfig. While the PrintObjectConfig slice of FullPrintConfig is being modified, // the PrintConfig slice of FullPrintConfig is constant, thus no thread synchronization is required. const PrintConfig &m_config; unsigned int m_current_extruder; diff --git a/src/libslic3r/GCode/DataType.h b/src/libslic3r/GCode/DataType.h deleted file mode 100644 index 1c8a443..0000000 --- a/src/libslic3r/GCode/DataType.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef _DATA_TYPE_H_ -#define _DATA_TYPE_H_ - -//#include "framework.h" -#include - -#ifndef null -#define null 0 -#endif -#ifndef NULL -#define NULL 0 -#endif - - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef U8 -typedef unsigned char U8; -#endif - -#ifndef S8 -typedef signed char S8; -#endif - -#ifndef U16 -typedef unsigned short U16; -#endif - -#ifndef S16 -typedef signed short S16; -#endif - -#ifndef U32 -typedef unsigned int U32; -#endif - -#ifndef S32 -typedef signed int S32; -#endif - -#ifndef S64 -typedef signed long long S64; -#endif - -#ifndef U64 -typedef unsigned long long U64; -#endif - -#ifndef FP32 -typedef float FP32; -#endif - -#ifndef FP64 -typedef double FP64; -#endif - -#ifndef Pixel_t -typedef unsigned short Pixel_t; -#endif - -#ifndef UINT32 -typedef unsigned int UINT32; -#endif - - -#ifndef INT -typedef int INT; -#endif - -// #ifndef INT32 -// typedef int INT32; -// #endif - -typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ -typedef signed char INT8S; /* Signed 8 bit quantity */ -typedef unsigned short INT16U; /* Unsigned 16 bit quantity */ -typedef signed short INT16S; /* Signed 16 bit quantity */ -typedef unsigned int INT32U; /* Unsigned 32 bit quantity */ -typedef signed int INT32S; /* Signed 32 bit quantity */ -typedef unsigned long long INT64U; -typedef signed long long INT64S; - -typedef float FP32; /* Single precision floating point */ -typedef double FP64; /* Double precision floating point */ - - -typedef struct -{ - U16 star; - U16 end; -}PosLaction; -typedef struct -{ - int a0; - int a1; - int a2; - int a3; - int a4; - int a5; - int a6; - int a7; - int a8; - int a9; - int a10; - int a11; - int a12; - int a13; - int a14; - int a15; -}bytes_64Bytes; -typedef struct -{ - bytes_64Bytes a0; - bytes_64Bytes a1; - bytes_64Bytes a2; - bytes_64Bytes a3; -}bytes_256Bytes; -typedef struct -{ - bytes_64Bytes a0; - bytes_64Bytes a1; - bytes_64Bytes a2; - bytes_64Bytes a3; - bytes_64Bytes a4; - bytes_64Bytes a5; - bytes_64Bytes a6; - bytes_64Bytes a7; - bytes_64Bytes a8; - bytes_64Bytes a9; - bytes_64Bytes a10; - bytes_64Bytes a11; - bytes_64Bytes a12; - bytes_64Bytes a13; - bytes_64Bytes a14; - bytes_64Bytes a15; -}bytes_1024Bytes; -#endif - - - diff --git a/src/libslic3r/GCode/ExtrusionProcessor.cpp b/src/libslic3r/GCode/ExtrusionProcessor.cpp new file mode 100644 index 0000000..8ebc5d3 --- /dev/null +++ b/src/libslic3r/GCode/ExtrusionProcessor.cpp @@ -0,0 +1,216 @@ +#include "ExtrusionProcessor.hpp" +#include + +namespace Slic3r { namespace ExtrusionProcessor { + +ExtrusionPaths calculate_and_split_overhanging_extrusions(const ExtrusionPath &path, + const AABBTreeLines::LinesDistancer &unscaled_prev_layer, + const AABBTreeLines::LinesDistancer &prev_layer_curled_lines) +{ + std::vector extended_points = estimate_points_properties(path.polyline.points, + unscaled_prev_layer, path.width()); + std::vector> calculated_distances(extended_points.size()); + + for (size_t i = 0; i < extended_points.size(); i++) { + const ExtendedPoint &curr = extended_points[i]; + const ExtendedPoint &next = extended_points[i + 1 < extended_points.size() ? i + 1 : i]; + + // The following code artifically increases the distance to provide slowdown for extrusions that are over curled lines + float proximity_to_curled_lines = 0.0; + const double dist_limit = 10.0 * path.width(); + { + Vec2d middle = 0.5 * (curr.position + next.position); + auto line_indices = prev_layer_curled_lines.all_lines_in_radius(Point::new_scale(middle), scale_(dist_limit)); + if (!line_indices.empty()) { + double len = (next.position - curr.position).norm(); + // For long lines, there is a problem with the additional slowdown. If by accident, there is small curled line near the middle + // of this long line + // The whole segment gets slower unnecesarily. For these long lines, we do additional check whether it is worth slowing down. + // NOTE that this is still quite rough approximation, e.g. we are still checking lines only near the middle point + // TODO maybe split the lines into smaller segments before running this alg? but can be demanding, and GCode will be huge + if (len > 8) { + Vec2d dir = Vec2d(next.position - curr.position) / len; + Vec2d right = Vec2d(-dir.y(), dir.x()); + + Polygon box_of_influence = { + scaled(Vec2d(curr.position + right * dist_limit)), + scaled(Vec2d(next.position + right * dist_limit)), + scaled(Vec2d(next.position - right * dist_limit)), + scaled(Vec2d(curr.position - right * dist_limit)), + }; + + double projected_lengths_sum = 0; + for (size_t idx : line_indices) { + const CurledLine &line = prev_layer_curled_lines.get_line(idx); + Lines inside = intersection_ln({{line.a, line.b}}, {box_of_influence}); + if (inside.empty()) + continue; + double projected_length = abs(dir.dot(unscaled(Vec2d((inside.back().b - inside.back().a).cast())))); + projected_lengths_sum += projected_length; + } + if (projected_lengths_sum < 0.4 * len) { + line_indices.clear(); + } + } + + for (size_t idx : line_indices) { + const CurledLine &line = prev_layer_curled_lines.get_line(idx); + float distance_from_curled = unscaled(line_alg::distance_to(line, Point::new_scale(middle))); + float proximity = (1.0 - (distance_from_curled / dist_limit)) * (1.0 - (distance_from_curled / dist_limit)) * + (line.curled_height / (path.height() * 10.0f)); // max_curled_height_factor from SupportSpotGenerator + proximity_to_curled_lines = std::max(proximity_to_curled_lines, proximity); + } + } + } + calculated_distances[i].first = std::max(curr.distance, next.distance); + calculated_distances[i].second = proximity_to_curled_lines; + } + + ExtrusionPaths result; + ExtrusionAttributes new_attrs = path.attributes(); + new_attrs.overhang_attributes = std::optional( + {calculated_distances[0].first, calculated_distances[0].first, calculated_distances[0].second}); + result.emplace_back(new_attrs); + result.back().polyline.append(Point::new_scale(extended_points[0].position)); + size_t sequence_start_index = 0; + for (size_t i = 1; i < extended_points.size(); i++) { + result.back().polyline.append(Point::new_scale(extended_points[i].position)); + result.back().overhang_attributes_mutable()->end_distance_from_prev_layer = extended_points[i].distance; + + if (std::abs(calculated_distances[sequence_start_index].first - calculated_distances[i].first) < 0.001 * path.attributes().width && + std::abs(calculated_distances[sequence_start_index].second - calculated_distances[i].second) < 0.001) { + // do not start new path, the attributes are similar enough + // NOTE: a larger tolerance may be applied here. However, it makes the gcode preview much less smooth + // (But it has very likely zero impact on the print quality.) + } else if (i + 1 < extended_points.size()) { // do not start new path if this is last point! + // start new path, parameters differ + new_attrs.overhang_attributes->start_distance_from_prev_layer = calculated_distances[i].first; + new_attrs.overhang_attributes->end_distance_from_prev_layer = calculated_distances[i].first; + new_attrs.overhang_attributes->proximity_to_curled_lines = calculated_distances[i].second; + sequence_start_index = i; + result.emplace_back(new_attrs); + result.back().polyline.append(Point::new_scale(extended_points[i].position)); + } + } + + return result; +}; + +ExtrusionEntityCollection calculate_and_split_overhanging_extrusions(const ExtrusionEntityCollection *ecc, + const AABBTreeLines::LinesDistancer &unscaled_prev_layer, + const AABBTreeLines::LinesDistancer &prev_layer_curled_lines) +{ + ExtrusionEntityCollection result{}; + result.no_sort = ecc->no_sort; + for (const auto *e : ecc->entities) { + if (auto *col = dynamic_cast(e)) { + result.append(calculate_and_split_overhanging_extrusions(col, unscaled_prev_layer, prev_layer_curled_lines)); + } else if (auto *loop = dynamic_cast(e)) { + ExtrusionLoop new_loop = *loop; + new_loop.paths.clear(); + for (const ExtrusionPath &p : loop->paths) { + auto paths = calculate_and_split_overhanging_extrusions(p, unscaled_prev_layer, prev_layer_curled_lines); + new_loop.paths.insert(new_loop.paths.end(), paths.begin(), paths.end()); + } + result.append(new_loop); + } else if (auto *mp = dynamic_cast(e)) { + ExtrusionMultiPath new_mp = *mp; + new_mp.paths.clear(); + for (const ExtrusionPath &p : mp->paths) { + auto paths = calculate_and_split_overhanging_extrusions(p, unscaled_prev_layer, prev_layer_curled_lines); + new_mp.paths.insert(new_mp.paths.end(), paths.begin(), paths.end()); + } + result.append(new_mp); + } else if (auto *op = dynamic_cast(e)) { + auto paths = calculate_and_split_overhanging_extrusions(*op, unscaled_prev_layer, prev_layer_curled_lines); + for (const ExtrusionPath &p : paths) { + result.append(ExtrusionPathOriented(p.polyline, p.attributes())); + } + } else if (auto *p = dynamic_cast(e)) { + auto paths = calculate_and_split_overhanging_extrusions(*p, unscaled_prev_layer, prev_layer_curled_lines); + result.append(paths); + } else { + throw Slic3r::InvalidArgument("Unknown extrusion entity type"); + } + } + return result; +}; + + +std::pair calculate_overhang_speed(const ExtrusionAttributes &attributes, + const FullPrintConfig &config, + size_t extruder_id, + float external_perim_reference_speed, + float default_speed) +{ + assert(attributes.overhang_attributes.has_value()); + std::vector> overhangs_with_speeds = { + {100, ConfigOptionFloatOrPercent{default_speed, false}}}; + if (config.enable_dynamic_overhang_speeds) { + overhangs_with_speeds = {{0, config.overhang_speed_0}, + {25, config.overhang_speed_1}, + {50, config.overhang_speed_2}, + {75, config.overhang_speed_3}, + {100, ConfigOptionFloatOrPercent{default_speed, false}}}; + } + + std::vector> overhang_with_fan_speeds = {{100, ConfigOptionInts{0}}}; + if (config.enable_dynamic_fan_speeds.get_at(extruder_id)) { + overhang_with_fan_speeds = {{0, config.overhang_fan_speed_0}, + {25, config.overhang_fan_speed_1}, + {50, config.overhang_fan_speed_2}, + {75, config.overhang_fan_speed_3}, + {100, ConfigOptionInts{0}}}; + } + + float speed_base = external_perim_reference_speed > 0 ? external_perim_reference_speed : default_speed; + std::map speed_sections; + for (size_t i = 0; i < overhangs_with_speeds.size(); i++) { + float distance = attributes.width * (1.0 - (overhangs_with_speeds[i].first / 100.0)); + float speed = overhangs_with_speeds[i].second.percent ? (speed_base * overhangs_with_speeds[i].second.value / 100.0) : + overhangs_with_speeds[i].second.value; + if (speed < EPSILON) + speed = speed_base; + speed_sections[distance] = speed; + } + + std::map fan_speed_sections; + for (size_t i = 0; i < overhang_with_fan_speeds.size(); i++) { + float distance = attributes.width * (1.0 - (overhang_with_fan_speeds[i].first / 100.0)); + float fan_speed = overhang_with_fan_speeds[i].second.get_at(extruder_id); + fan_speed_sections[distance] = fan_speed; + } + + auto interpolate_speed = [](const std::map &values, float distance) { + auto upper_dist = values.lower_bound(distance); + if (upper_dist == values.end()) { + return values.rbegin()->second; + } + if (upper_dist == values.begin()) { + return upper_dist->second; + } + + auto lower_dist = std::prev(upper_dist); + float t = (distance - lower_dist->first) / (upper_dist->first - lower_dist->first); + return (1.0f - t) * lower_dist->second + t * upper_dist->second; + }; + + float extrusion_speed = std::min(interpolate_speed(speed_sections, attributes.overhang_attributes->start_distance_from_prev_layer), + interpolate_speed(speed_sections, attributes.overhang_attributes->end_distance_from_prev_layer)); + float curled_base_speed = interpolate_speed(speed_sections, + attributes.width * attributes.overhang_attributes->proximity_to_curled_lines); + float final_speed = std::min(curled_base_speed, extrusion_speed); + float fan_speed = std::min(interpolate_speed(fan_speed_sections, attributes.overhang_attributes->start_distance_from_prev_layer), + interpolate_speed(fan_speed_sections, attributes.overhang_attributes->end_distance_from_prev_layer)); + + if (!config.enable_dynamic_overhang_speeds) { + final_speed = -1; + } + if (!config.enable_dynamic_fan_speeds.get_at(extruder_id)) { + fan_speed = -1; + } + + return {final_speed, fan_speed}; +} + +}} // namespace Slic3r::ExtrusionProcessor \ No newline at end of file diff --git a/src/libslic3r/GCode/ExtrusionProcessor.hpp b/src/libslic3r/GCode/ExtrusionProcessor.hpp index 5314e9a..0a33316 100644 --- a/src/libslic3r/GCode/ExtrusionProcessor.hpp +++ b/src/libslic3r/GCode/ExtrusionProcessor.hpp @@ -14,19 +14,23 @@ #include "../Flow.hpp" #include "../Config.hpp" #include "../Line.hpp" +#include "../Exception.hpp" +#include "../PrintConfig.hpp" #include +#include #include #include #include #include #include +#include #include #include #include #include -namespace Slic3r { +namespace Slic3r { namespace ExtrusionProcessor { struct ExtendedPoint { @@ -41,6 +45,33 @@ std::vector estimate_points_properties(const POINTS float flow_width, float max_line_length = -1.0f) { + bool looped = input_points.front() == input_points.back(); + std::function get_prev_index = [](size_t idx, size_t count) { + if (idx > 0) { + return idx - 1; + } else + return idx; + }; + if (looped) { + get_prev_index = [](size_t idx, size_t count) { + if (idx == 0) + idx = count; + return --idx; + }; + }; + std::function get_next_index = [](size_t idx, size_t size) { + if (idx + 1 < size) { + return idx + 1; + } else + return idx; + }; + if (looped) { + get_next_index = [](size_t idx, size_t count) { + if (++idx == count) + idx = 0; + return idx; + }; + }; using P = typename POINTS::value_type; using AABBScalar = typename AABBTreeLines::LinesDistancer::Scalar; @@ -54,19 +85,22 @@ std::vector estimate_points_properties(const POINTS { ExtendedPoint start_point{maybe_unscale(input_points.front())}; - auto [distance, nearest_line, x] = unscaled_prev_layer.template distance_from_lines_extra(start_point.position.cast()); + auto [distance, nearest_line, + x] = unscaled_prev_layer.template distance_from_lines_extra(start_point.position.cast()); start_point.distance = distance + boundary_offset; points.push_back(start_point); } for (size_t i = 1; i < input_points.size(); i++) { ExtendedPoint next_point{maybe_unscale(input_points[i])}; - auto [distance, nearest_line, x] = unscaled_prev_layer.template distance_from_lines_extra(next_point.position.cast()); + auto [distance, nearest_line, + x] = unscaled_prev_layer.template distance_from_lines_extra(next_point.position.cast()); next_point.distance = distance + boundary_offset; if (ADD_INTERSECTIONS && ((points.back().distance > boundary_offset + EPSILON) != (next_point.distance > boundary_offset + EPSILON))) { const ExtendedPoint &prev_point = points.back(); - auto intersections = unscaled_prev_layer.template intersections_with_line(L{prev_point.position.cast(), next_point.position.cast()}); + auto intersections = unscaled_prev_layer.template intersections_with_line( + L{prev_point.position.cast(), next_point.position.cast()}); for (const auto &intersection : intersections) { ExtendedPoint p{}; p.position = intersection.first.template cast(); @@ -85,18 +119,19 @@ std::vector estimate_points_properties(const POINTS const ExtendedPoint &curr = points[point_idx]; const ExtendedPoint &next = points[point_idx + 1]; - if ((curr.distance > 0 && curr.distance < boundary_offset + 2.0f) || - (next.distance > 0 && next.distance < boundary_offset + 2.0f)) { + if ((curr.distance > -boundary_offset && curr.distance < boundary_offset + 2.0f) || + (next.distance > -boundary_offset && next.distance < boundary_offset + 2.0f)) { double line_len = (next.position - curr.position).norm(); if (line_len > 4.0f) { - double a0 = std::clamp((curr.distance + 2 * boundary_offset) / line_len, 0.0, 1.0); - double a1 = std::clamp(1.0f - (next.distance + 2 * boundary_offset) / line_len, 0.0, 1.0); + double a0 = std::clamp((curr.distance + 3 * boundary_offset) / line_len, 0.0, 1.0); + double a1 = std::clamp(1.0f - (next.distance + 3 * boundary_offset) / line_len, 0.0, 1.0); double t0 = std::min(a0, a1); double t1 = std::max(a0, a1); if (t0 < 1.0) { auto p0 = curr.position + t0 * (next.position - curr.position); - auto [p0_dist, p0_near_l, p0_x] = unscaled_prev_layer.template distance_from_lines_extra(p0.cast()); + auto [p0_dist, p0_near_l, + p0_x] = unscaled_prev_layer.template distance_from_lines_extra(p0.cast()); ExtendedPoint new_p{}; new_p.position = p0; new_p.distance = float(p0_dist + boundary_offset); @@ -104,7 +139,8 @@ std::vector estimate_points_properties(const POINTS } if (t1 > 0.0) { auto p1 = curr.position + t1 * (next.position - curr.position); - auto [p1_dist, p1_near_l, p1_x] = unscaled_prev_layer.template distance_from_lines_extra(p1.cast()); + auto [p1_dist, p1_near_l, + p1_x] = unscaled_prev_layer.template distance_from_lines_extra(p1.cast()); ExtendedPoint new_p{}; new_p.position = p1; new_p.distance = float(p1_dist + boundary_offset); @@ -114,7 +150,7 @@ std::vector estimate_points_properties(const POINTS } new_points.push_back(next); } - points = new_points; + points = std::move(new_points); } if (max_line_length > 0) { @@ -140,216 +176,92 @@ std::vector estimate_points_properties(const POINTS } new_points.push_back(points.back()); } - points = new_points; + points = std::move(new_points); } - std::vector angles_for_curvature(points.size()); + float accumulated_distance = 0; std::vector distances_for_curvature(points.size()); for (size_t point_idx = 0; point_idx < points.size(); ++point_idx) { - ExtendedPoint &a = points[point_idx]; - size_t prev = prev_idx_modulo(point_idx, points.size()); - size_t next = next_idx_modulo(point_idx, points.size()); + const ExtendedPoint &a = points[point_idx]; + const ExtendedPoint &b = points[get_prev_index(point_idx, points.size())]; - int iter_limit = points.size(); - while ((a.position - points[prev].position).squaredNorm() < 1 && iter_limit > 0) { - prev = prev_idx_modulo(prev, points.size()); - iter_limit--; - } - - while ((a.position - points[next].position).squaredNorm() < 1 && iter_limit > 0) { - next = next_idx_modulo(next, points.size()); - iter_limit--; - } - - distances_for_curvature[point_idx] = (points[prev].position - a.position).norm(); - float alfa = angle(a.position - points[prev].position, points[next].position - a.position); - angles_for_curvature[point_idx] = alfa; + distances_for_curvature[point_idx] = (b.position - a.position).norm(); + accumulated_distance += distances_for_curvature[point_idx]; } - if (std::accumulate(distances_for_curvature.begin(), distances_for_curvature.end(), 0) > EPSILON) + if (accumulated_distance > EPSILON) for (float window_size : {3.0f, 9.0f, 16.0f}) { - size_t tail_point = 0; - float tail_window_acc = 0; - float tail_angle_acc = 0; + for (int point_idx = 0; point_idx < int(points.size()); ++point_idx) { + ExtendedPoint ¤t = points[point_idx]; - size_t head_point = 0; - float head_window_acc = 0; - float head_angle_acc = 0; + Vec2d back_position = current.position; +{ + size_t back_point_index = point_idx; + float dist_backwards = 0; + while (dist_backwards < window_size * 0.5 && back_point_index != get_prev_index(back_point_index, points.size())) { + float line_dist = distances_for_curvature[get_prev_index(back_point_index, points.size())]; + if (dist_backwards + line_dist > window_size * 0.5) { + back_position = points[back_point_index].position + + (window_size * 0.5 - dist_backwards) * + (points[get_prev_index(back_point_index, points.size())].position - + points[back_point_index].position) + .normalized(); + dist_backwards += window_size * 0.5 - dist_backwards + EPSILON; + } else { + dist_backwards += line_dist; + back_point_index = get_prev_index(back_point_index, points.size()); + } - for (size_t point_idx = 0; point_idx < points.size(); ++point_idx) { - if (point_idx == 0) { - while (tail_window_acc < window_size * 0.5) { - tail_window_acc += distances_for_curvature[tail_point]; - tail_angle_acc += angles_for_curvature[tail_point]; - tail_point = prev_idx_modulo(tail_point, points.size()); + } + + } + + Vec2d front_position = current.position; + { + size_t front_point_index = point_idx; + float dist_forwards = 0; + while (dist_forwards < window_size * 0.5 && front_point_index != get_next_index(front_point_index, points.size())) { + float line_dist = distances_for_curvature[front_point_index]; + if (dist_forwards + line_dist > window_size * 0.5) { + front_position = points[front_point_index].position + + (window_size * 0.5 - dist_forwards) * + (points[get_next_index(front_point_index, points.size())].position - + points[front_point_index].position) + .normalized(); + dist_forwards += window_size * 0.5 - dist_forwards + EPSILON; + } else { + dist_forwards += line_dist; + front_point_index = get_next_index(front_point_index, points.size()); + } + } + } + + float new_curvature = angle(current.position - back_position, front_position - current.position) / window_size; + if (abs(current.curvature) < abs(new_curvature)) { + current.curvature = new_curvature; } } - while (tail_window_acc - distances_for_curvature[next_idx_modulo(tail_point, points.size())] > window_size * 0.5) { - tail_point = next_idx_modulo(tail_point, points.size()); - tail_window_acc -= distances_for_curvature[tail_point]; - tail_angle_acc -= angles_for_curvature[tail_point]; - } - - while (head_window_acc < window_size * 0.5) { - head_point = next_idx_modulo(head_point, points.size()); - head_window_acc += distances_for_curvature[head_point]; - head_angle_acc += angles_for_curvature[head_point]; - } - - float curvature = (tail_angle_acc + head_angle_acc) / window_size; - if (std::abs(curvature) > std::abs(points[point_idx].curvature)) { - points[point_idx].curvature = curvature; - } - - tail_window_acc += distances_for_curvature[point_idx]; - tail_angle_acc += angles_for_curvature[point_idx]; - head_window_acc -= distances_for_curvature[point_idx]; - head_angle_acc -= angles_for_curvature[point_idx]; } - } return points; -} - -struct ProcessedPoint -{ - Point p; - float speed = 1.0f; - int fan_speed = 0; -}; - -class ExtrusionQualityEstimator -{ - std::unordered_map> prev_layer_boundaries; - std::unordered_map> next_layer_boundaries; - std::unordered_map> prev_curled_extrusions; - std::unordered_map> next_curled_extrusions; - const PrintObject *current_object; - -public: - void set_current_object(const PrintObject *object) { current_object = object; } - - void prepare_for_new_layer(const Layer *layer) - { - if (layer == nullptr) - return; - const PrintObject *object = layer->object(); - prev_layer_boundaries[object] = next_layer_boundaries[object]; - next_layer_boundaries[object] = AABBTreeLines::LinesDistancer{to_unscaled_linesf(layer->lslices)}; - prev_curled_extrusions[object] = next_curled_extrusions[object]; - next_curled_extrusions[object] = AABBTreeLines::LinesDistancer{layer->curled_lines}; - } - - std::vector estimate_speed_from_extrusion_quality( - const ExtrusionPath &path, - const std::vector> overhangs_w_speeds, - const std::vector> overhangs_w_fan_speeds, - size_t extruder_id, - float ext_perimeter_speed, - float original_speed) - { - float speed_base = ext_perimeter_speed > 0 ? ext_perimeter_speed : original_speed; - std::map speed_sections; - for (size_t i = 0; i < overhangs_w_speeds.size(); i++) { - float distance = path.width * (1.0 - (overhangs_w_speeds[i].first / 100.0)); - float speed = overhangs_w_speeds[i].second.percent ? (speed_base * overhangs_w_speeds[i].second.value / 100.0) : - overhangs_w_speeds[i].second.value; - if (speed < EPSILON) speed = speed_base; - speed_sections[distance] = speed; - } - - std::map fan_speed_sections; - for (size_t i = 0; i < overhangs_w_fan_speeds.size(); i++) { - float distance = path.width * (1.0 - (overhangs_w_fan_speeds[i].first / 100.0)); - float fan_speed = overhangs_w_fan_speeds[i].second.get_at(extruder_id); - fan_speed_sections[distance] = fan_speed; - } - - std::vector extended_points = - estimate_points_properties(path.polyline.points, prev_layer_boundaries[current_object], path.width); - - std::vector processed_points; - processed_points.reserve(extended_points.size()); - for (size_t i = 0; i < extended_points.size(); i++) { - const ExtendedPoint &curr = extended_points[i]; - const ExtendedPoint &next = extended_points[i + 1 < extended_points.size() ? i + 1 : i]; - - // The following code artifically increases the distance to provide slowdown for extrusions that are over curled lines - float artificial_distance_to_curled_lines = 0.0; - const double dist_limit = 10.0 * path.width; - { - Vec2d middle = 0.5 * (curr.position + next.position); - auto line_indices = prev_curled_extrusions[current_object].all_lines_in_radius(Point::new_scale(middle), scale_(dist_limit)); - if (!line_indices.empty()) { - double len = (next.position - curr.position).norm(); - // For long lines, there is a problem with the additional slowdown. If by accident, there is small curled line near the middle of this long line - // The whole segment gets slower unnecesarily. For these long lines, we do additional check whether it is worth slowing down. - // NOTE that this is still quite rough approximation, e.g. we are still checking lines only near the middle point - // TODO maybe split the lines into smaller segments before running this alg? but can be demanding, and GCode will be huge - if (len > 8) { - Vec2d dir = Vec2d(next.position - curr.position) / len; - Vec2d right = Vec2d(-dir.y(), dir.x()); - - Polygon box_of_influence = { - scaled(Vec2d(curr.position + right * dist_limit)), - scaled(Vec2d(next.position + right * dist_limit)), - scaled(Vec2d(next.position - right * dist_limit)), - scaled(Vec2d(curr.position - right * dist_limit)), - }; - - double projected_lengths_sum = 0; - for (size_t idx : line_indices) { - const CurledLine &line = prev_curled_extrusions[current_object].get_line(idx); - Lines inside = intersection_ln({{line.a, line.b}}, {box_of_influence}); - if (inside.empty()) - continue; - double projected_length = abs(dir.dot(unscaled(Vec2d((inside.back().b - inside.back().a).cast())))); - projected_lengths_sum += projected_length; - } - if (projected_lengths_sum < 0.4 * len) { - line_indices.clear(); - } - } - - for (size_t idx : line_indices) { - const CurledLine &line = prev_curled_extrusions[current_object].get_line(idx); - float distance_from_curled = unscaled(line_alg::distance_to(line, Point::new_scale(middle))); - float dist = path.width * (1.0 - (distance_from_curled / dist_limit)) * - (1.0 - (distance_from_curled / dist_limit)) * - (line.curled_height / (path.height * 10.0f)); // max_curled_height_factor from SupportSpotGenerator - artificial_distance_to_curled_lines = std::max(artificial_distance_to_curled_lines, dist); - } - } - } - - auto interpolate_speed = [](const std::map &values, float distance) { - auto upper_dist = values.lower_bound(distance); - if (upper_dist == values.end()) { - return values.rbegin()->second; - } - if (upper_dist == values.begin()) { - return upper_dist->second; } - auto lower_dist = std::prev(upper_dist); - float t = (distance - lower_dist->first) / (upper_dist->first - lower_dist->first); - return (1.0f - t) * lower_dist->second + t * upper_dist->second; - }; +ExtrusionPaths calculate_and_split_overhanging_extrusions(const ExtrusionPath &path, + const AABBTreeLines::LinesDistancer &unscaled_prev_layer, + const AABBTreeLines::LinesDistancer &prev_layer_curled_lines); - float extrusion_speed = std::min(interpolate_speed(speed_sections, curr.distance), - interpolate_speed(speed_sections, next.distance)); - float curled_base_speed = interpolate_speed(speed_sections, artificial_distance_to_curled_lines); - float final_speed = std::min(curled_base_speed, extrusion_speed); - float fan_speed = std::min(interpolate_speed(fan_speed_sections, curr.distance), - interpolate_speed(fan_speed_sections, next.distance)); +ExtrusionEntityCollection calculate_and_split_overhanging_extrusions( + const ExtrusionEntityCollection *ecc, + const AABBTreeLines::LinesDistancer &unscaled_prev_layer, + const AABBTreeLines::LinesDistancer &prev_layer_curled_lines); - processed_points.push_back({scaled(curr.position), final_speed, int(fan_speed)}); - } - return processed_points; - } -}; +std::pair calculate_overhang_speed(const ExtrusionAttributes &attributes, + const FullPrintConfig &config, + size_t extruder_id, + float external_perim_reference_speed, + float default_speed); -} // namespace Slic3r +}} // namespace Slic3r::ExtrusionProcessor #endif // slic3r_ExtrusionProcessor_hpp_ diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index b7aa9cd..55018ca 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -4,8 +4,9 @@ #include "libslic3r/LocalesUtils.hpp" #include "libslic3r/format.hpp" #include "libslic3r/I18N.hpp" -#include "libslic3r/GCodeWriter.hpp" +#include "libslic3r/GCode/GCodeWriter.hpp" #include "libslic3r/I18N.hpp" +#include "libslic3r/Geometry/ArcWelder.hpp" #include "GCodeProcessor.hpp" #include @@ -43,7 +44,6 @@ static const Slic3r::Vec3f DEFAULT_EXTRUDER_OFFSET = Slic3r::Vec3f::Zero(); // taken from QIDITechnology.ini - [printer:Original QIDI i3 MK2.5 MMU2] static const std::vector DEFAULT_EXTRUDER_COLORS = { "#FF8000", "#DB5182", "#3EC0FF", "#FF4F4F", "#FBEB7D" }; -static const std::string INTERNAL_G2G3_TAG = "!#!#! internal only - from G2/G3 expansion !#!#!"; namespace Slic3r { @@ -65,6 +65,18 @@ const std::vector GCodeProcessor::Reserved_Tags = { const float GCodeProcessor::Wipe_Width = 0.05f; const float GCodeProcessor::Wipe_Height = 0.05f; +bgcode::binarize::BinarizerConfig GCodeProcessor::s_binarizer_config{ + { + bgcode::core::ECompressionType::None, // file metadata + bgcode::core::ECompressionType::None, // printer metadata + bgcode::core::ECompressionType::Deflate, // print metadata + bgcode::core::ECompressionType::Deflate, // slicer metadata + bgcode::core::ECompressionType::Heatshrink_12_4, // gcode + }, + bgcode::core::EGCodeEncodingType::MeatPackComments, + bgcode::core::EMetadataEncodingType::INI, + bgcode::core::EChecksumType::CRC32 +}; #if ENABLE_GCODE_VIEWER_DATA_CHECKING const std::string GCodeProcessor::Mm3_Per_Mm_Tag = "MM3_PER_MM:"; #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING @@ -328,7 +340,7 @@ void GCodeProcessor::TimeMachine::calculate_time(size_t keep_last_n_blocks, floa } } layers_time[block.layer_id - 1] += block_time; - g1_times_cache.push_back({ block.g1_line_id, time }); + g1_times_cache.push_back({ block.g1_line_id, block.remaining_internal_g1_lines, time }); // update times for remaining time to printer stop placeholders auto it_stop_time = std::lower_bound(stop_times.begin(), stop_times.end(), block.g1_line_id, [](const StopTime& t, unsigned int value) { return t.g1_line_id < value; }); @@ -441,6 +453,7 @@ void GCodeProcessorResult::reset() { moves = std::vector(); bed_shape = Pointfs(); max_print_height = 0.0f; + z_offset = 0.0f; settings_ids.reset(); extruders_count = 0; backtrace_enabled = false; @@ -456,10 +469,12 @@ void GCodeProcessorResult::reset() { #else void GCodeProcessorResult::reset() { + is_binary_file = false; moves.clear(); lines_ends.clear(); bed_shape = Pointfs(); max_print_height = 0.0f; + z_offset = 0.0f; settings_ids.reset(); extruders_count = 0; backtrace_enabled = false; @@ -553,6 +568,8 @@ GCodeProcessor::GCodeProcessor() void GCodeProcessor::apply_config(const PrintConfig& config) { m_parser.apply_config(config); + m_binarizer.set_enabled(config.gcode_binary); + m_result.is_binary_file = config.gcode_binary; m_producer = EProducer::QIDISlicer; m_flavor = config.gcode_flavor; @@ -575,8 +592,12 @@ void GCodeProcessor::apply_config(const PrintConfig& config) for (size_t i = 0; i < extruders_count; ++ i) { m_extruder_offsets[i] = to_3d(config.extruder_offset.get_at(i).cast().eval(), 0.f); m_extruder_colors[i] = static_cast(i); - m_extruder_temps_config[i] = static_cast(config.temperature.get_at(i)); m_extruder_temps_first_layer_config[i] = static_cast(config.first_layer_temperature.get_at(i)); + m_extruder_temps_config[i] = static_cast(config.temperature.get_at(i)); + if (m_extruder_temps_config[i] == 0) { + // This means the value should be ignored and first layer temp should be used. + m_extruder_temps_config[i] = m_extruder_temps_first_layer_config[i]; + } m_result.filament_diameters[i] = static_cast(config.filament_diameter.get_at(i)); m_result.filament_densities[i] = static_cast(config.filament_density.get_at(i)); m_result.filament_cost[i] = static_cast(config.filament_cost.get_at(i)); @@ -1023,6 +1044,23 @@ static inline const char* remove_eols(const char *begin, const char *end) { // Load a G-code into a stand-alone G-code viewer. // throws CanceledException through print->throw_if_canceled() (sent by the caller as callback). void GCodeProcessor::process_file(const std::string& filename, std::function cancel_callback) +{ + FILE* file = boost::nowide::fopen(filename.c_str(), "rb"); + if (file == nullptr) + throw Slic3r::RuntimeError(format("Error opening file %1%", filename)); + + using namespace bgcode::core; + std::vector cs_buffer(65536); + const bool is_binary = is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == EResult::Success; + fclose(file); + + if (is_binary) + process_binary_file(filename, cancel_callback); + else + process_ascii_file(filename, cancel_callback); +} + +void GCodeProcessor::process_ascii_file(const std::string& filename, std::function cancel_callback) { CNumericLocalesSetter locales_setter; @@ -1073,6 +1111,7 @@ void GCodeProcessor::process_file(const std::string& filename, std::functionfinalize(false); } +static void update_lines_ends_and_out_file_pos(const std::string& out_string, std::vector& lines_ends, size_t* out_file_pos) +{ + for (size_t i = 0; i < out_string.size(); ++i) { + if (out_string[i] == '\n') + lines_ends.emplace_back((out_file_pos != nullptr) ? *out_file_pos + i + 1 : i + 1); + } + if (out_file_pos != nullptr) + *out_file_pos += out_string.size(); +} + +void GCodeProcessor::process_binary_file(const std::string& filename, std::function cancel_callback) +{ +#if ENABLE_GCODE_VIEWER_STATISTICS + m_start_time = std::chrono::high_resolution_clock::now(); +#endif // ENABLE_GCODE_VIEWER_STATISTICS + + FilePtr file{ boost::nowide::fopen(filename.c_str(), "rb") }; + if (file.f == nullptr) + throw Slic3r::RuntimeError(format("Error opening file %1%", filename)); + + fseek(file.f, 0, SEEK_END); + const long file_size = ftell(file.f); + rewind(file.f); + + // read file header + using namespace bgcode::core; + using namespace bgcode::binarize; + FileHeader file_header; + EResult res = read_header(*file.f, file_header, nullptr); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("File %1% does not contain a valid binary gcode\nError: %2%", filename, + std::string(translate_result(res)))); + + // read file metadata block, if present + BlockHeader block_header; + std::vector cs_buffer(65536); + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + if ((EBlockType)block_header.type != EBlockType::FileMetadata && + (EBlockType)block_header.type != EBlockType::PrinterMetadata) + throw Slic3r::RuntimeError(format("Unable to find file metadata block in file %1%", filename)); + if ((EBlockType)block_header.type == EBlockType::FileMetadata) { + FileMetadataBlock file_metadata_block; + res = file_metadata_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + auto producer_it = std::find_if(file_metadata_block.raw_data.begin(), file_metadata_block.raw_data.end(), + [](const std::pair& item) { return item.first == "Producer"; }); + if (producer_it != file_metadata_block.raw_data.end() && boost::starts_with(producer_it->second, std::string(SLIC3R_APP_NAME))) + m_producer = EProducer::QIDISlicer; + else + m_producer = EProducer::Unknown; + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + } + else { + m_producer = EProducer::Unknown; + } + + // read printer metadata block + if ((EBlockType)block_header.type != EBlockType::PrinterMetadata) + throw Slic3r::RuntimeError(format("Unable to find printer metadata block in file %1%", filename)); + PrinterMetadataBlock printer_metadata_block; + res = printer_metadata_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + + // read thumbnail blocks + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + + while ((EBlockType)block_header.type == EBlockType::Thumbnail) { + ThumbnailBlock thumbnail_block; + res = thumbnail_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + } + + // read print metadata block + if ((EBlockType)block_header.type != EBlockType::PrintMetadata) + throw Slic3r::RuntimeError(format("Unable to find print metadata block in file %1%", filename)); + PrintMetadataBlock print_metadata_block; + res = print_metadata_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + + // read slicer metadata block + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + if ((EBlockType)block_header.type != EBlockType::SlicerMetadata) + throw Slic3r::RuntimeError(format("Unable to find slicer metadata block in file %1%", filename)); + SlicerMetadataBlock slicer_metadata_block; + res = slicer_metadata_block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + DynamicPrintConfig config; + config.apply(FullPrintConfig::defaults()); + std::string str; + for (const auto& [key, value] : slicer_metadata_block.raw_data) { + str += key + " = " + value + "\n"; + } + // Silently substitute unknown values by new ones for loading configurations from PrusaSlicer's own G-code. + // Showing substitution log or errors may make sense, but we are not really reading many values from the G-code config, + // thus a probability of incorrect substitution is low and the G-code viewer is a consumer-only anyways. + config.load_from_ini_string(str, ForwardCompatibilitySubstitutionRule::EnableSilent); + apply_config(config); + + m_result.filename = filename; + m_result.is_binary_file = true; + m_result.id = ++s_result_id; + initialize_result_moves(); + + // read gcodes block + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + if ((EBlockType)block_header.type != EBlockType::GCode) + throw Slic3r::RuntimeError(format("Unable to find gcode block in file %1%", filename)); + while ((EBlockType)block_header.type == EBlockType::GCode) { + GCodeBlock block; + res = block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + + std::vector& lines_ends = m_result.lines_ends.emplace_back(std::vector()); + update_lines_ends_and_out_file_pos(block.raw_data, lines_ends, nullptr); + + m_parser.parse_buffer(block.raw_data, [this](GCodeReader& reader, const GCodeReader::GCodeLine& line) { + this->process_gcode_line(line, true); + }); + + if (ftell(file.f) == file_size) + break; + + res = read_next_block_header(*file.f, file_header, block_header, cs_buffer.data(), cs_buffer.size()); + if (res != EResult::Success) + throw Slic3r::RuntimeError(format("Error reading file %1%: %2%", filename, std::string(translate_result(res)))); + } + + // Don't post-process the G-code to update time stamps. + this->finalize(false); +} void GCodeProcessor::initialize(const std::string& filename) { assert(is_decimal_separator_point()); @@ -1113,6 +1301,7 @@ void GCodeProcessor::process_buffer(const std::string &buffer) void GCodeProcessor::finalize(bool perform_post_process) { + m_result.z_offset = m_z_offset; // update width/height of wipe moves for (GCodeProcessorResult::MoveVertex& move : m_result.moves) { if (move.type == EMoveType::Wipe) { @@ -1132,7 +1321,7 @@ void GCodeProcessor::finalize(bool perform_post_process) m_used_filaments.process_caches(this); - update_estimated_times_stats(); + update_estimated_statistics(); #if ENABLE_GCODE_VIEWER_DATA_CHECKING std::cout << "\n"; @@ -2363,13 +2552,11 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) if (line.has_e()) g1_axes[E] = (double)line.e(); std::optional g1_feedrate = std::nullopt; if (line.has_f()) g1_feedrate = (double)line.f(); - std::optional g1_cmt = std::nullopt; - if (!line.comment().empty()) g1_cmt = line.comment(); - - process_G1(g1_axes, g1_feedrate, g1_cmt); + process_G1(g1_axes, g1_feedrate); } -void GCodeProcessor::process_G1(const std::array, 4>& axes, std::optional feedrate, std::optional cmt) +void GCodeProcessor::process_G1(const std::array, 4>& axes, const std::optional& feedrate, + G1DiscretizationOrigin origin, const std::optional& remaining_internal_g1_lines) { const float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); const float filament_radius = 0.5f * filament_diameter; @@ -2449,10 +2636,17 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING if (m_forced_height > 0.0f) + // use height coming from the gcode tags m_height = m_forced_height; - else if (m_layer_id == 0) + else if (m_layer_id == 0) { // first layer + if (m_end_position[Z] > 0.0f) + // use the current (clamped) z, if greater than zero + m_height = std::min(m_end_position[Z], 2.0f); + else + // use the first layer height m_height = m_first_layer_height + m_z_offset; - else if (!cmt.has_value() || *cmt != INTERNAL_G2G3_TAG) { + } + else if (origin == G1DiscretizationOrigin::G1) { if (m_end_position[Z] > m_extruded_last_z + EPSILON && delta_pos[Z] == 0.0) m_height = m_end_position[Z] - m_extruded_last_z; } @@ -2460,10 +2654,7 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes if (m_height == 0.0f) m_height = DEFAULT_TOOLPATH_HEIGHT; - if (m_end_position[Z] == 0.0f || (m_extrusion_role == GCodeExtrusionRole::Custom && m_layer_id == 0)) - m_end_position[Z] = m_height; - - if (!cmt.has_value() || *cmt != INTERNAL_G2G3_TAG) + if (origin == G1DiscretizationOrigin::G1) m_extruded_last_z = m_end_position[Z]; m_options_z_corrector.update(m_height); @@ -2472,6 +2663,7 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING if (m_forced_width > 0.0f) + // use width coming from the gcode tags m_width = m_forced_width; else if (m_extrusion_role == GCodeExtrusionRole::ExternalPerimeter) // cross section: rectangle @@ -2525,6 +2717,7 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes block.role = m_extrusion_role; block.distance = distance; block.g1_line_id = m_g1_line_id; + block.remaining_internal_g1_lines = remaining_internal_g1_lines.has_value() ? *remaining_internal_g1_lines : 0; block.layer_id = std::max(1, m_layer_id); // calculates block cruise feedrate @@ -2693,18 +2886,60 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes } // store move - store_move_vertex(type, cmt.has_value() && *cmt == INTERNAL_G2G3_TAG); + store_move_vertex(type, origin == G1DiscretizationOrigin::G2G3); } void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise) { - if (!line.has('I') || !line.has('J')) + enum class EFitting { None, IJ, R }; + std::string_view axis_pos_I; + std::string_view axis_pos_J; + EFitting fitting = EFitting::None; + if (line.has('R')) { + fitting = EFitting::R; + } else { + axis_pos_I = line.axis_pos('I'); + axis_pos_J = line.axis_pos('J'); + if (! axis_pos_I.empty() || ! axis_pos_J.empty()) + fitting = EFitting::IJ; + } + + if (fitting == EFitting::None) return; + const float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); + const float filament_radius = 0.5f * filament_diameter; + const float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); + + AxisCoords end_position = m_start_position; + for (unsigned char a = X; a <= E; ++a) { + end_position[a] = extract_absolute_position_on_axis((Axis)a, line, double(area_filament_cross_section)); + } // relative center Vec3f rel_center = Vec3f::Zero(); - if (!line.has_value('I', rel_center.x()) || !line.has_value('J', rel_center.y())) +#ifndef NDEBUG + double radius = 0.0; +#endif // NDEBUG + if (fitting == EFitting::R) { + float r; + if (!line.has_value('R', r) || r == 0.0f) + return; +#ifndef NDEBUG + radius = (double)std::abs(r); +#endif // NDEBUG + const Vec2f start_pos((float)m_start_position[X], (float)m_start_position[Y]); + const Vec2f end_pos((float)end_position[X], (float)end_position[Y]); + const Vec2f c = Geometry::ArcWelder::arc_center(start_pos, end_pos, r, !clockwise); + rel_center.x() = c.x() - m_start_position[X]; + rel_center.y() = c.y() - m_start_position[Y]; + } + else { + assert(fitting == EFitting::IJ); + if (! axis_pos_I.empty() && ! line.has_value(axis_pos_I, rel_center.x())) + return; + if (! axis_pos_J.empty() && ! line.has_value(axis_pos_J, rel_center.y())) return; + } // scale center, if needed if (m_units == EUnits::Inches) @@ -2740,14 +2975,6 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc // arc center arc.center = arc.start + rel_center.cast(); - const float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); - const float filament_radius = 0.5f * filament_diameter; - const float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); - - AxisCoords end_position = m_start_position; - for (unsigned char a = X; a <= E; ++a) { - end_position[a] = extract_absolute_position_on_axis((Axis)a, line, double(area_filament_cross_section)); - } // arc end endpoint arc.end = Vec3d(end_position[X], end_position[Y], end_position[Z]); @@ -2757,6 +2984,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc // what to do ??? } + assert(fitting != EFitting::R || std::abs(radius - arc.start_radius()) < EPSILON); // updates feedrate from line std::optional feedrate; if (line.has_f()) @@ -2807,18 +3035,17 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc return ret; }; - auto internal_only_g1_line = [this](const AxisCoords& target, bool has_z, const std::optional& feedrate, const std::optional& extrusion) { + auto internal_only_g1_line = [this](const AxisCoords& target, bool has_z, const std::optional& feedrate, + const std::optional& extrusion, const std::optional& remaining_internal_g1_lines = std::nullopt) { std::array, 4> g1_axes = { target[X], target[Y], std::nullopt, std::nullopt }; std::optional g1_feedrate = std::nullopt; if (has_z) g1_axes[Z] = target[Z]; - if (feedrate.has_value()) - g1_feedrate = (double)*feedrate; if (extrusion.has_value()) g1_axes[E] = target[E]; - std::optional g1_cmt = INTERNAL_G2G3_TAG; - - process_G1(g1_axes, g1_feedrate, g1_cmt); + if (feedrate.has_value()) + g1_feedrate = (double)*feedrate; + process_G1(g1_axes, g1_feedrate, G1DiscretizationOrigin::G2G3, remaining_internal_g1_lines); }; // calculate arc segments @@ -2827,8 +3054,13 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc // https://github.com/qidi3d/QIDI-Firmware/blob/MK3/Firmware/motion_control.cpp // segments count +#if 0 static const double MM_PER_ARC_SEGMENT = 1.0; const size_t segments = std::max(std::floor(travel_length / MM_PER_ARC_SEGMENT), 1); +#else + static const double gcode_arc_tolerance = 0.0125; + const size_t segments = Geometry::ArcWelder::arc_discretization_steps(arc.start_radius(), std::abs(arc.angle), gcode_arc_tolerance); +#endif const double inv_segment = 1.0 / double(segments); const double theta_per_segment = arc.angle * inv_segment; @@ -2876,7 +3108,8 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line, bool cloc arc_target[E] += extruder_per_segment; m_start_position = m_end_position; // this is required because we are skipping the call to process_gcode_line() - internal_only_g1_line(adjust_target(arc_target, prev_target), z_per_segment != 0.0, (i == 1) ? feedrate : std::nullopt, extrusion); + internal_only_g1_line(adjust_target(arc_target, prev_target), z_per_segment != 0.0, (i == 1) ? feedrate : std::nullopt, + extrusion, segments - i); prev_target = arc_target; } @@ -3435,8 +3668,67 @@ void GCodeProcessor::post_process() // temporary file to contain modified gcode std::string out_path = m_result.filename + ".postprocess"; FilePtr out{ boost::nowide::fopen(out_path.c_str(), "wb") }; - if (out.f == nullptr) { + if (out.f == nullptr) throw Slic3r::RuntimeError(std::string("GCode processor post process export failed.\nCannot open file for writing.\n")); + std::vector filament_mm(m_result.extruders_count, 0.0); + std::vector filament_cm3(m_result.extruders_count, 0.0); + std::vector filament_g(m_result.extruders_count, 0.0); + std::vector filament_cost(m_result.extruders_count, 0.0); + + double filament_total_g = 0.0; + double filament_total_cost = 0.0; + + for (const auto& [id, volume] : m_result.print_statistics.volumes_per_extruder) { + filament_mm[id] = volume / (static_cast(M_PI) * sqr(0.5 * m_result.filament_diameters[id])); + filament_cm3[id] = volume * 0.001; + filament_g[id] = filament_cm3[id] * double(m_result.filament_densities[id]); + filament_cost[id] = filament_g[id] * double(m_result.filament_cost[id]) * 0.001; + filament_total_g += filament_g[id]; + filament_total_cost += filament_cost[id]; + } + + if (m_binarizer.is_enabled()) { + // update print metadata + auto stringify = [](const std::vector& values) { + std::string ret; + char buf[1024]; + for (size_t i = 0; i < values.size(); ++i) { + sprintf(buf, i < values.size() - 1 ? "%.2lf, " : "%.2lf", values[i]); + ret += buf; + } + return ret; + }; + + // update binary data + bgcode::binarize::BinaryData& binary_data = m_binarizer.get_binary_data(); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedMm, stringify(filament_mm)); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedCm3, stringify(filament_cm3)); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedG, stringify(filament_g)); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentCost, stringify(filament_cost)); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::TotalFilamentUsedG, stringify({ filament_total_g })); + binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::TotalFilamentCost, stringify({ filament_total_cost })); + + binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedMm, stringify(filament_mm)); // duplicated into print metadata + binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedG, stringify(filament_g)); // duplicated into print metadata + binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentCost, stringify(filament_cost)); // duplicated into print metadata + binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedCm3, stringify(filament_cm3)); // duplicated into print metadata + + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = m_time_processor.machines[i]; + PrintEstimatedStatistics::ETimeMode mode = static_cast(i); + if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { + char buf[128]; + sprintf(buf, "(%s mode)", (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent"); + binary_data.print_metadata.raw_data.emplace_back("estimated printing time " + std::string(buf), get_time_dhms(machine.time)); + binary_data.print_metadata.raw_data.emplace_back("estimated first layer printing time " + std::string(buf), get_time_dhms(machine.layers_time.empty() ? 0.f : machine.layers_time.front())); + + binary_data.printer_metadata.raw_data.emplace_back("estimated printing time " + std::string(buf), get_time_dhms(machine.time)); + } + } + + const bgcode::core::EResult res = m_binarizer.initialize(*out.f, s_binarizer_config); + if (res != bgcode::core::EResult::Success) + throw Slic3r::RuntimeError(format("Unable to initialize the gcode binarizer.\nError: %1%", bgcode::core::translate_result(res))); } auto time_in_minutes = [](float time_in_seconds) { @@ -3552,32 +3844,55 @@ void GCodeProcessor::post_process() // used to update m_result.moves[].gcode_id std::vector> m_gcode_lines_map; - size_t m_curr_g1_id{ 0 }; + size_t m_times_cache_id{ 0 }; size_t m_out_file_pos{ 0 }; + bgcode::binarize::Binarizer& m_binarizer; public: - ExportLines(EWriteType type, TimeMachine& machine) + ExportLines(bgcode::binarize::Binarizer& binarizer, EWriteType type, TimeMachine& machine) #ifndef NDEBUG - : m_statistics(*this), m_write_type(type), m_machine(machine) {} + : m_statistics(*this), m_binarizer(binarizer), m_write_type(type), m_machine(machine) {} #else - : m_write_type(type), m_machine(machine) {} + : m_binarizer(binarizer), m_write_type(type), m_machine(machine) {} #endif // NDEBUG - void update(size_t lines_counter, size_t g1_lines_counter) { + // return: number of internal G1 lines (from G2/G3 splitting) processed + unsigned int update(const std::string& line, size_t lines_counter, size_t g1_lines_counter) { + unsigned int ret = 0; m_gcode_lines_map.push_back({ lines_counter, 0 }); - if (g1_lines_counter == 0) - return; + if (GCodeReader::GCodeLine::cmd_is(line, "G0") || + GCodeReader::GCodeLine::cmd_is(line, "G1") || + GCodeReader::GCodeLine::cmd_is(line, "G2") || + GCodeReader::GCodeLine::cmd_is(line, "G3") || + GCodeReader::GCodeLine::cmd_is(line, "G28")) + ++g1_lines_counter; + else + return ret; - auto init_it = m_machine.g1_times_cache.begin() + m_curr_g1_id; + auto init_it = m_machine.g1_times_cache.begin() + m_times_cache_id; auto it = init_it; - while (it != m_machine.g1_times_cache.end() && it->id < g1_lines_counter + 1) { + while (it != m_machine.g1_times_cache.end() && it->id < g1_lines_counter) { ++it; - ++m_curr_g1_id; + ++m_times_cache_id; } - if ((it != m_machine.g1_times_cache.end() && it != init_it) || m_curr_g1_id == 0) + if (it->id > g1_lines_counter) + return ret; + + // search for internal G1 lines + if (GCodeReader::GCodeLine::cmd_is(line, "G2") || GCodeReader::GCodeLine::cmd_is(line, "G3")) { + while (it != m_machine.g1_times_cache.end() && it->remaining_internal_g1_lines > 0) { + ++it; + ++m_times_cache_id; + ++g1_lines_counter; + ++ret; + } + } + + if (it != m_machine.g1_times_cache.end() && it->id == g1_lines_counter) m_time = it->elapsed_time; + return ret; } // add the given gcode line to the cache @@ -3673,7 +3988,14 @@ void GCodeProcessor::post_process() } } + if (m_binarizer.is_enabled()) { + if (m_binarizer.append_gcode(out_string) != bgcode::core::EResult::Success) + throw Slic3r::RuntimeError("Error while sending gcode to the binarizer."); + } + else { write_to_file(out, out_string, result, out_path); + update_lines_ends_and_out_file_pos(out_string, result.lines_ends.front(), &m_out_file_pos); + } } // flush the current content of the cache to file @@ -3689,7 +4011,14 @@ void GCodeProcessor::post_process() m_statistics.remove_all_lines(); #endif // NDEBUG + if (m_binarizer.is_enabled()) { + if (m_binarizer.append_gcode(out_string) != bgcode::core::EResult::Success) + throw Slic3r::RuntimeError("Error while sending gcode to the binarizer."); + } + else { write_to_file(out, out_string, result, out_path); + update_lines_ends_and_out_file_pos(out_string, result.lines_ends.front(), &m_out_file_pos); + } } void synchronize_moves(GCodeProcessorResult& result) const { @@ -3708,22 +4037,19 @@ void GCodeProcessor::post_process() private: void write_to_file(FilePtr& out, const std::string& out_string, GCodeProcessorResult& result, const std::string& out_path) { if (!out_string.empty()) { + if (!m_binarizer.is_enabled()) { fwrite((const void*)out_string.c_str(), 1, out_string.length(), out.f); if (ferror(out.f)) { out.close(); boost::nowide::remove(out_path.c_str()); - throw Slic3r::RuntimeError(std::string("GCode processor post process export failed.\nIs the disk full?\n")); + throw Slic3r::RuntimeError("GCode processor post process export failed.\nIs the disk full?"); } - for (size_t i = 0; i < out_string.size(); ++i) { - if (out_string[i] == '\n') - result.lines_ends.emplace_back(m_out_file_pos + i + 1); } - m_out_file_pos += out_string.size(); } } }; - ExportLines export_lines(m_result.backtrace_enabled ? ExportLines::EWriteType::ByTime : ExportLines::EWriteType::BySize, m_time_processor.machines[0]); + ExportLines export_lines(m_binarizer, m_result.backtrace_enabled ? ExportLines::EWriteType::ByTime : ExportLines::EWriteType::BySize, m_time_processor.machines[0]); // replace placeholder lines with the proper final value // gcode_line is in/out parameter, to reduce expensive memory allocation @@ -3786,22 +4112,6 @@ void GCodeProcessor::post_process() return processed; }; - std::vector filament_mm(m_result.extruders_count, 0.0); - std::vector filament_cm3(m_result.extruders_count, 0.0); - std::vector filament_g(m_result.extruders_count, 0.0); - std::vector filament_cost(m_result.extruders_count, 0.0); - - double filament_total_g = 0.0; - double filament_total_cost = 0.0; - - for (const auto& [id, volume] : m_result.print_statistics.volumes_per_extruder) { - filament_mm[id] = volume / (static_cast(M_PI) * sqr(0.5 * m_result.filament_diameters[id])); - filament_cm3[id] = volume * 0.001; - filament_g[id] = filament_cm3[id] * double(m_result.filament_densities[id]); - filament_cost[id] = filament_g[id] * double(m_result.filament_cost[id]) * 0.001; - filament_total_g += filament_g[id]; - filament_total_cost += filament_cost[id]; - } auto process_used_filament = [&](std::string& gcode_line) { // Prefilter for parsing speed. @@ -3823,12 +4133,12 @@ void GCodeProcessor::post_process() }; bool ret = false; - ret |= process_tag(gcode_line, "; filament used [mm] =", filament_mm); - ret |= process_tag(gcode_line, "; filament used [g] =", filament_g); - ret |= process_tag(gcode_line, "; total filament used [g] =", { filament_total_g }); - ret |= process_tag(gcode_line, "; filament used [cm3] =", filament_cm3); - ret |= process_tag(gcode_line, "; filament cost =", filament_cost); - ret |= process_tag(gcode_line, "; total filament cost =", { filament_total_cost }); + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedMmMask, filament_mm); + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedGMask, filament_g); + ret |= process_tag(gcode_line, PrintStatistics::TotalFilamentUsedGMask, { filament_total_g }); + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedCm3Mask, filament_cm3); + ret |= process_tag(gcode_line, PrintStatistics::FilamentCostMask, filament_cost); + ret |= process_tag(gcode_line, PrintStatistics::TotalFilamentCostMask, { filament_total_cost }); return ret; }; @@ -3920,7 +4230,7 @@ void GCodeProcessor::post_process() } }; - // add lines XXX to exported gcode + // add lines M104 to exported gcode auto process_line_T = [this, &export_lines](const std::string& gcode_line, const size_t g1_lines_counter, const ExportLines::Backtrace& backtrace) { const std::string cmd = GCodeReader::GCodeLine::extract_cmd(gcode_line); if (cmd.size() >= 2) { @@ -3967,6 +4277,7 @@ void GCodeProcessor::post_process() }; m_result.lines_ends.clear(); + m_result.lines_ends.emplace_back(std::vector()); unsigned int line_id = 0; // Backtrace data for Tx gcode lines @@ -3997,9 +4308,9 @@ void GCodeProcessor::post_process() gcode_line.insert(gcode_line.end(), it, it_end); if (eol) { ++line_id; - export_lines.update(line_id, g1_lines_counter); gcode_line += "\n"; + const unsigned int internal_g1_lines_counter = export_lines.update(gcode_line, line_id, g1_lines_counter); // replace placeholder lines bool processed = process_placeholders(gcode_line); if (processed) @@ -4007,11 +4318,24 @@ void GCodeProcessor::post_process() if (!processed) processed = process_used_filament(gcode_line); if (!processed && !is_temporary_decoration(gcode_line)) { - if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G1")) + if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G0") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G1")) { + export_lines.append_line(gcode_line); // add lines M73 where needed process_line_G1(g1_lines_counter++); + gcode_line.clear(); + } + else if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G2") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G3")) { + export_lines.append_line(gcode_line); + // add lines M73 where needed + process_line_G1(g1_lines_counter + internal_g1_lines_counter); + g1_lines_counter += (1 + internal_g1_lines_counter); + gcode_line.clear(); + } + else if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G28")) { + ++g1_lines_counter; + } else if (m_result.backtrace_enabled && GCodeReader::GCodeLine::cmd_starts_with(gcode_line, "T")) { - // add lines XXX where needed + // add lines M104 where needed process_line_T(gcode_line, g1_lines_counter, backtrace_T); max_backtrace_time = std::max(max_backtrace_time, backtrace_T.time); } @@ -4036,13 +4360,29 @@ void GCodeProcessor::post_process() export_lines.flush(out, m_result, out_path); + if (m_binarizer.is_enabled()) { + if (m_binarizer.finalize() != bgcode::core::EResult::Success) + throw Slic3r::RuntimeError("Error while finalizing the gcode binarizer."); + } out.close(); in.close(); + const std::string result_filename = m_result.filename; + if (m_binarizer.is_enabled()) { + // The list of lines in the binary gcode is different from the original one. + // This requires to re-process the binarized file to be able to synchronize with it all the data needed by the preview, + // as gcode window, tool position and moves slider which relies on indexing the gcode lines. + reset(); + // the following call modifies m_result.filename + process_binary_file(out_path); + // restore the proper filename + m_result.filename = result_filename; + } + else export_lines.synchronize_moves(m_result); - if (rename_file(out_path, m_result.filename)) - throw Slic3r::RuntimeError(std::string("Failed to rename the output G-code file from ") + out_path + " to " + m_result.filename + '\n' + + if (rename_file(out_path, result_filename)) + throw Slic3r::RuntimeError(std::string("Failed to rename the output G-code file from ") + out_path + " to " + result_filename + '\n' + "Is " + out_path + " locked?" + '\n'); } @@ -4243,7 +4583,7 @@ void GCodeProcessor::simulate_st_synchronize(float additional_time) } } -void GCodeProcessor::update_estimated_times_stats() +void GCodeProcessor::update_estimated_statistics() { auto update_mode = [this](PrintEstimatedStatistics::ETimeMode mode) { PrintEstimatedStatistics::Mode& data = m_result.print_statistics.modes[static_cast(mode)]; diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 61100ed..a0ed388 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -7,6 +7,7 @@ #include "libslic3r/PrintConfig.hpp" #include "libslic3r/CustomGCode.hpp" +#include #include #include #include @@ -56,9 +57,13 @@ namespace Slic3r { time = 0.0f; travel_time = 0.0f; custom_gcode_times.clear(); + custom_gcode_times.shrink_to_fit(); moves_times.clear(); + moves_times.shrink_to_fit(); roles_times.clear(); + roles_times.shrink_to_fit(); layers_times.clear(); + layers_times.shrink_to_fit(); } }; @@ -76,6 +81,7 @@ namespace Slic3r { m.reset(); } volumes_per_color_change.clear(); + volumes_per_color_change.shrink_to_fit(); volumes_per_extruder.clear(); used_filaments_per_role.clear(); cost_per_extruder.clear(); @@ -135,12 +141,16 @@ namespace Slic3r { }; std::string filename; + bool is_binary_file; unsigned int id; std::vector moves; // Positions of ends of lines of the final G-code this->filename after TimeProcessor::post_process() finalizes the G-code. - std::vector lines_ends; + // Binarized gcodes usually have several gcode blocks. Each block has its own list on ends of lines. + // Ascii gcodes have only one list on ends of lines + std::vector> lines_ends; Pointfs bed_shape; float max_print_height; + float z_offset; SettingsIds settings_ids; size_t extruders_count; bool backtrace_enabled; @@ -261,6 +271,7 @@ namespace Slic3r { EMoveType move_type{ EMoveType::Noop }; GCodeExtrusionRole role{ GCodeExtrusionRole::None }; unsigned int g1_line_id{ 0 }; + unsigned int remaining_internal_g1_lines; unsigned int layer_id{ 0 }; float distance{ 0.0f }; // mm float acceleration{ 0.0f }; // mm/s^2 @@ -301,6 +312,7 @@ namespace Slic3r { struct G1LinesCacheItem { unsigned int id; + unsigned int remaining_internal_g1_lines; float elapsed_time; }; @@ -523,8 +535,11 @@ namespace Slic3r { }; #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + static bgcode::binarize::BinarizerConfig& get_binarizer_config() { return s_binarizer_config; } private: GCodeReader m_parser; + bgcode::binarize::Binarizer m_binarizer; + static bgcode::binarize::BinarizerConfig s_binarizer_config; EUnits m_units; EPositioningType m_global_positioning_type; @@ -622,6 +637,8 @@ namespace Slic3r { void apply_config(const PrintConfig& config); void set_print(Print* print) { m_print = print; } + bgcode::binarize::BinaryData& get_binary_data() { return m_binarizer.get_binary_data(); } + const bgcode::binarize::BinaryData& get_binary_data() const { return m_binarizer.get_binary_data(); } void enable_stealth_time_estimator(bool enabled); bool is_stealth_time_estimator_enabled() const { @@ -664,6 +681,8 @@ namespace Slic3r { void apply_config_kissslicer(const std::string& filename); void process_gcode_line(const GCodeReader::GCodeLine& line, bool producers_enabled); + void process_ascii_file(const std::string& filename, std::function cancel_callback = nullptr); + void process_binary_file(const std::string& filename, std::function cancel_callback = nullptr); // Process tags embedded into comments void process_tags(const std::string_view comment, bool producers_enabled); bool process_producers_tags(const std::string_view comment); @@ -680,8 +699,13 @@ namespace Slic3r { // Move void process_G0(const GCodeReader::GCodeLine& line); void process_G1(const GCodeReader::GCodeLine& line); + enum class G1DiscretizationOrigin { + G1, + G2G3, + }; void process_G1(const std::array, 4>& axes = { std::nullopt, std::nullopt, std::nullopt, std::nullopt }, - std::optional feedrate = std::nullopt, std::optional cmt = std::nullopt); + const std::optional& feedrate = std::nullopt, G1DiscretizationOrigin origin = G1DiscretizationOrigin::G1, + const std::optional& remaining_internal_g1_lines = std::nullopt); // Arc Move void process_G2_G3(const GCodeReader::GCodeLine& line, bool clockwise); @@ -815,7 +839,7 @@ namespace Slic3r { // Simulates firmware st_synchronize() call void simulate_st_synchronize(float additional_time = 0.0f); - void update_estimated_times_stats(); + void update_estimated_statistics(); double extract_absolute_position_on_axis(Axis axis, const GCodeReader::GCodeLine& line, double area_filament_cross_section); }; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCode/GCodeWriter.cpp similarity index 81% rename from src/libslic3r/GCodeWriter.cpp rename to src/libslic3r/GCode/GCodeWriter.cpp index 9635f3b..18f81a2 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCode/GCodeWriter.cpp @@ -1,10 +1,12 @@ #include "GCodeWriter.hpp" -#include "CustomGCode.hpp" +#include "../CustomGCode.hpp" #include #include #include #include #include +#include +#include #ifdef __APPLE__ #include @@ -13,6 +15,7 @@ #define FLAVOR_IS(val) this->config.gcode_flavor == val #define FLAVOR_IS_NOT(val) this->config.gcode_flavor != val +using namespace std::string_view_literals; namespace Slic3r { // static @@ -90,17 +93,17 @@ std::string GCodeWriter::set_temperature(unsigned int temperature, bool wait, in if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish))) return {}; - std::string code, comment; + std::string_view code, comment; if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRapFirmware)) { - code = "M109"; - comment = "set temperature and wait for it to be reached"; + code = "M109"sv; + comment = "set temperature and wait for it to be reached"sv; } else { if (FLAVOR_IS(gcfRepRapFirmware)) { // M104 is deprecated on RepRapFirmware - code = "G10"; + code = "G10"sv; } else { - code = "M104"; + code = "M104"sv; } - comment = "set temperature"; + comment = "set temperature"sv; } std::ostringstream gcode; @@ -130,22 +133,22 @@ std::string GCodeWriter::set_temperature(unsigned int temperature, bool wait, in std::string GCodeWriter::set_bed_temperature(unsigned int temperature, bool wait) { if (temperature == m_last_bed_temperature && (! wait || m_last_bed_temperature_reached)) - return std::string(); + return {}; m_last_bed_temperature = temperature; m_last_bed_temperature_reached = wait; - std::string code, comment; + std::string_view code, comment; if (wait && FLAVOR_IS_NOT(gcfTeacup)) { if (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish)) { - code = "M109"; + code = "M109"sv; } else { - code = "M190"; + code = "M190"sv; } - comment = "set bed temperature and wait for it to be reached"; + comment = "set bed temperature and wait for it to be reached"sv; } else { - code = "M140"; - comment = "set bed temperature"; + code = "M140"sv; + comment = "set bed temperature"sv; } std::ostringstream gcode; @@ -233,7 +236,7 @@ std::string GCodeWriter::set_acceleration_internal(Acceleration type, unsigned i auto& last_value = separate_travel ? m_last_travel_acceleration : m_last_acceleration ; if (acceleration == 0 || acceleration == last_value) - return std::string(); + return {}; last_value = acceleration; @@ -301,7 +304,7 @@ std::string GCodeWriter::toolchange(unsigned int extruder_id) return gcode.str(); } -std::string GCodeWriter::set_speed(double F, const std::string &comment, const std::string &cooling_marker) const +std::string GCodeWriter::set_speed(double F, const std::string_view comment, const std::string_view cooling_marker) const { assert(F > 0.); assert(F < 100000.); @@ -313,74 +316,62 @@ std::string GCodeWriter::set_speed(double F, const std::string &comment, const s return w.string(); } -std::string GCodeWriter::travel_to_xy(const Vec2d &point, const std::string &comment) +std::string GCodeWriter::travel_to_xy(const Vec2d &point, const std::string_view comment) { - m_pos.x() = point.x(); - m_pos.y() = point.y(); + m_pos.head<2>() = point.head<2>(); GCodeG1Formatter w; w.emit_xy(point); //B36 auto speed = m_is_first_layer ? this->config.get_abs_value("first_layer_travel_speed") : this->config.travel_speed.value; - w.emit_f(speed * 60.0); - w.emit_comment(this->config.gcode_comments, comment); - return w.string(); -} - -std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &comment) -{ - // FIXME: This function was not being used when travel_speed_z was separated (bd6badf). - // Calculation of feedrate was not updated accordingly. If you want to use - // this function, fix it first. - std::terminate(); - - /* If target Z is lower than current Z but higher than nominal Z we - don't perform the Z move but we only move in the XY plane and - adjust the nominal Z by reducing the lift amount that will be - used for unlift. */ - if (!this->will_move_z(point.z())) { - double nominal_z = m_pos.z() - m_lifted; - m_lifted -= (point.z() - nominal_z); - // In case that retract_lift == layer_height we could end up with almost zero in_m_lifted - // and a retract could be skipped (https://github.com/qidi3d/QIDISlicer/issues/2154 - if (std::abs(m_lifted) < EPSILON) - m_lifted = 0.; - return this->travel_to_xy(to_2d(point)); - } - - /* In all the other cases, we perform an actual XYZ move and cancel - the lift. */ - m_lifted = 0; - m_pos = point; - - GCodeG1Formatter w; - w.emit_xyz(point); w.emit_f(this->config.travel_speed.value * 60.0); w.emit_comment(this->config.gcode_comments, comment); return w.string(); } -std::string GCodeWriter::travel_to_z(double z, const std::string &comment) +std::string GCodeWriter::travel_to_xy_G2G3IJ(const Vec2d &point, const Vec2d &ij, const bool ccw, const std::string_view comment) { - /* If target Z is lower than current Z but higher than nominal Z - we don't perform the move but we only adjust the nominal Z by - reducing the lift amount that will be used for unlift. */ - if (!this->will_move_z(z)) { - double nominal_z = m_pos.z() - m_lifted; - m_lifted -= (z - nominal_z); - if (std::abs(m_lifted) < EPSILON) - m_lifted = 0.; - return {}; + assert(std::abs(point.x()) < 1200.); + assert(std::abs(point.y()) < 1200.); + assert(std::abs(ij.x()) < 1200.); + assert(std::abs(ij.y()) < 1200.); + assert(std::abs(ij.x()) >= 0.001 || std::abs(ij.y()) >= 0.001); + + m_pos.head<2>() = point.head<2>(); + + GCodeG2G3Formatter w(ccw); + w.emit_xy(point); + w.emit_ij(ij); + w.emit_comment(this->config.gcode_comments, comment); + return w.string(); } - /* In all the other cases, we perform an actual Z move and cancel - the lift. */ - m_lifted = 0; - return this->_travel_to_z(z, comment); +std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string_view comment) +{ + if (std::abs(point.x() - m_pos.x()) < EPSILON && std::abs(point.y() - m_pos.y()) < EPSILON) { + return this->travel_to_z(point.z(), comment); + } else if (std::abs(point.z() - m_pos.z()) < EPSILON) { + return this->travel_to_xy(point.head<2>(), comment); + } else { + m_pos = point; + + GCodeG1Formatter w; + w.emit_xyz(point); + Vec2f speed {this->config.travel_speed_z.value, this->config.travel_speed.value}; + w.emit_f(speed.norm() * 60.0); + w.emit_comment(this->config.gcode_comments, comment); + return w.string(); } -std::string GCodeWriter::_travel_to_z(double z, const std::string &comment) + } + +std::string GCodeWriter::travel_to_z(double z, const std::string_view comment) +{ + return std::abs(m_pos.z() - z) < EPSILON ? "" : this->get_travel_to_z_gcode(z, comment); +} + +std::string GCodeWriter::get_travel_to_z_gcode(double z, const std::string_view comment) { m_pos.z() = z; @@ -395,22 +386,12 @@ std::string GCodeWriter::_travel_to_z(double z, const std::string &comment) return w.string(); } -bool GCodeWriter::will_move_z(double z) const +std::string GCodeWriter::extrude_to_xy(const Vec2d &point, double dE, const std::string_view comment) { - /* If target Z is lower than current Z but higher than nominal Z - we don't perform an actual Z move. */ - if (m_lifted > 0) { - double nominal_z = m_pos.z() - m_lifted; - if (z >= nominal_z && z <= m_pos.z()) - return false; - } - return true; -} + assert(dE != 0); + assert(std::abs(dE) < 1000.0); -std::string GCodeWriter::extrude_to_xy(const Vec2d &point, double dE, const std::string &comment) -{ - m_pos.x() = point.x(); - m_pos.y() = point.y(); + m_pos.head<2>() = point.head<2>(); GCodeG1Formatter w; w.emit_xy(point); @@ -419,8 +400,28 @@ std::string GCodeWriter::extrude_to_xy(const Vec2d &point, double dE, const std: return w.string(); } +std::string GCodeWriter::extrude_to_xy_G2G3IJ(const Vec2d &point, const Vec2d &ij, const bool ccw, double dE, const std::string_view comment) +{ + assert(std::abs(dE) < 1000.0); + assert(dE != 0); + assert(std::abs(point.x()) < 1200.); + assert(std::abs(point.y()) < 1200.); + assert(std::abs(ij.x()) < 1200.); + assert(std::abs(ij.y()) < 1200.); + assert(std::abs(ij.x()) >= 0.001 || std::abs(ij.y()) >= 0.001); + + m_pos.head<2>() = point.head<2>(); + + GCodeG2G3Formatter w(ccw); + w.emit_xy(point); + w.emit_ij(ij); + w.emit_e(m_extrusion_axis, m_extruder->extrude(dE).second); + w.emit_comment(this->config.gcode_comments, comment); + return w.string(); +} + #if 0 -std::string GCodeWriter::extrude_to_xyz(const Vec3d &point, double dE, const std::string &comment) +std::string GCodeWriter::extrude_to_xyz(const Vec3d &point, double dE, const std::string_view comment) { m_pos = point; m_lifted = 0; @@ -440,7 +441,7 @@ std::string GCodeWriter::retract(bool before_wipe) assert(factor >= 0. && factor <= 1. + EPSILON); return this->_retract( factor * m_extruder->retract_length(), - factor * m_extruder->retract_restart_extra(), + m_extruder->retract_restart_extra(), "retract" ); } @@ -451,13 +452,15 @@ std::string GCodeWriter::retract_for_toolchange(bool before_wipe) assert(factor >= 0. && factor <= 1. + EPSILON); return this->_retract( factor * m_extruder->retract_length_toolchange(), - factor * m_extruder->retract_restart_extra_toolchange(), + m_extruder->retract_restart_extra_toolchange(), "retract for toolchange" ); } -std::string GCodeWriter::_retract(double length, double restart_extra, const std::string &comment) +std::string GCodeWriter::_retract(double length, double restart_extra, const std::string_view comment) { + assert(std::abs(length) < 1000.0); + assert(std::abs(restart_extra) < 1000.0); /* If firmware retraction is enabled, we use a fake value of 1 since we ignore the actual configured retract_length which might be 0, in which case the retraction logic gets skipped. */ @@ -515,47 +518,9 @@ std::string GCodeWriter::unretract() return gcode; } -/* If this method is called more than once before calling unlift(), - it will not perform subsequent lifts, even if Z was raised manually - (i.e. with travel_to_z()) and thus _lifted was reduced. */ -std::string GCodeWriter::lift() -{ - // check whether the above/below conditions are met - double target_lift = 0; - { - double above = this->config.retract_lift_above.get_at(m_extruder->id()); - double below = this->config.retract_lift_below.get_at(m_extruder->id()); - if (m_pos.z() >= above && (below == 0 || m_pos.z() <= below)) - target_lift = this->config.retract_lift.get_at(m_extruder->id()); - } - if (m_lifted == 0 && target_lift > 0) { - m_lifted = target_lift; - return this->_travel_to_z(m_pos.z() + target_lift, "lift Z"); - } - return {}; -} - -std::string GCodeWriter::unlift() -{ - std::string gcode; - if (m_lifted > 0) { - gcode += this->_travel_to_z(m_pos.z() - m_lifted, "restore layer Z"); - m_lifted = 0; - } - return gcode; -} void GCodeWriter::update_position(const Vec3d &new_pos) { - assert(this->m_lifted >= 0); - const double nominal_z = m_pos.z() - m_lifted; - m_lifted = new_pos.z() - nominal_z; - if (m_lifted < - EPSILON) - throw Slic3r::RuntimeError("Custom G-code reports negative Z-hop. Final Z position is below the print_z height."); - // In case that retract_lift == layer_height we could end up with almost zero in_m_lifted - // and a retract could be skipped (https://github.com/qidi3d/QIDISlicer/issues/2154 - if (m_lifted < EPSILON) - m_lifted = 0.; m_pos = new_pos; } diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCode/GCodeWriter.hpp similarity index 82% rename from src/libslic3r/GCodeWriter.hpp rename to src/libslic3r/GCode/GCodeWriter.hpp index 4420007..e846d0b 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCode/GCodeWriter.hpp @@ -1,13 +1,14 @@ #ifndef slic3r_GCodeWriter_hpp_ #define slic3r_GCodeWriter_hpp_ -#include "libslic3r.h" +#include "../libslic3r.h" +#include "../Extruder.hpp" +#include "../Point.hpp" +#include "../PrintConfig.hpp" +#include "CoolingBuffer.hpp" #include +#include #include -#include "Extruder.hpp" -#include "Point.hpp" -#include "PrintConfig.hpp" -#include "GCode/CoolingBuffer.hpp" namespace Slic3r { @@ -64,25 +65,25 @@ public: // printed with the same extruder. std::string toolchange_prefix() const; std::string toolchange(unsigned int extruder_id); - std::string set_speed(double F, const std::string &comment = std::string(), const std::string &cooling_marker = std::string()) const; - std::string travel_to_xy(const Vec2d &point, const std::string &comment = std::string()); - std::string travel_to_xyz(const Vec3d &point, const std::string &comment = std::string()); - std::string travel_to_z(double z, const std::string &comment = std::string()); - bool will_move_z(double z) const; - std::string extrude_to_xy(const Vec2d &point, double dE, const std::string &comment = std::string()); -// std::string extrude_to_xyz(const Vec3d &point, double dE, const std::string &comment = std::string()); + std::string set_speed(double F, const std::string_view comment = {}, const std::string_view cooling_marker = {}) const; + std::string travel_to_xy(const Vec2d &point, const std::string_view comment = {}); + std::string travel_to_xy_G2G3IJ(const Vec2d &point, const Vec2d &ij, const bool ccw, const std::string_view comment = {}); + std::string travel_to_xyz(const Vec3d &point, const std::string_view comment = {}); + std::string get_travel_to_z_gcode(double z, const std::string_view comment); + std::string travel_to_z(double z, const std::string_view comment = {}); + std::string extrude_to_xy(const Vec2d &point, double dE, const std::string_view comment = {}); + std::string extrude_to_xy_G2G3IJ(const Vec2d &point, const Vec2d &ij, const bool ccw, double dE, const std::string_view comment); +// std::string extrude_to_xyz(const Vec3d &point, double dE, const std::string_view comment = {}); std::string retract(bool before_wipe = false); std::string retract_for_toolchange(bool before_wipe = false); std::string unretract(); - std::string lift(); - std::string unlift(); // Current position of the printer, in G-code coordinates. // Z coordinate of current position contains zhop. If zhop is applied (this->zhop() > 0), // then the print_z = this->get_position().z() - this->zhop(). Vec3d get_position() const { return m_pos; } - // Current Z hop value. - double get_zhop() const { return m_lifted; } + // Zhop value is obsolete. This is for backwards compability. + double get_zhop() const { return 0; } // Update position of the print head based on the final position returned by a custom G-code block. // The new position Z coordinate contains the Z-hop. // GCodeWriter expects the custom script to NOT change print_z, only Z-hop, thus the print_z is maintained @@ -144,8 +145,7 @@ private: Print }; - std::string _travel_to_z(double z, const std::string &comment); - std::string _retract(double length, double restart_extra, const std::string &comment); + std::string _retract(double length, double restart_extra, const std::string_view comment); std::string set_acceleration_internal(Acceleration type, unsigned int acceleration); }; @@ -183,6 +183,10 @@ public: static double quantize(double v, size_t ndigits) { return std::round(v * pow_10[ndigits]) * pow_10_inv[ndigits]; } static double quantize_xyzf(double v) { return quantize(v, XYZF_EXPORT_DIGITS); } static double quantize_e(double v) { return quantize(v, E_EXPORT_DIGITS); } + static Vec2d quantize(const Vec2d &pt) + { return { quantize(pt.x(), XYZF_EXPORT_DIGITS), quantize(pt.y(), XYZF_EXPORT_DIGITS) }; } + static Vec3d quantize(const Vec3d &pt) + { return { quantize(pt.x(), XYZF_EXPORT_DIGITS), quantize(pt.y(), XYZF_EXPORT_DIGITS), quantize(pt.z(), XYZF_EXPORT_DIGITS) }; } void emit_axis(const char axis, const double v, size_t digits); @@ -201,7 +205,14 @@ public: this->emit_axis('Z', z, XYZF_EXPORT_DIGITS); } - void emit_e(const std::string &axis, double v) { + void emit_ij(const Vec2d &point) { + if (point.x() != 0) + this->emit_axis('I', point.x(), XYZF_EXPORT_DIGITS); + if (point.y() != 0) + this->emit_axis('J', point.y(), XYZF_EXPORT_DIGITS); + } + + void emit_e(const std::string_view axis, double v) { if (! axis.empty()) { // not gcfNoExtrusion this->emit_axis(axis[0], v, E_EXPORT_DIGITS); @@ -212,12 +223,12 @@ public: this->emit_axis('F', speed, XYZF_EXPORT_DIGITS); } - void emit_string(const std::string &s) { - strncpy(ptr_err.ptr, s.c_str(), s.size()); + void emit_string(const std::string_view s) { + strncpy(ptr_err.ptr, s.data(), s.size()); ptr_err.ptr += s.size(); } - void emit_comment(bool allow_comments, const std::string &comment) { + void emit_comment(bool allow_comments, const std::string_view comment) { if (allow_comments && ! comment.empty()) { *ptr_err.ptr ++ = ' '; *ptr_err.ptr ++ = ';'; *ptr_err.ptr ++ = ' '; this->emit_string(comment); @@ -241,14 +252,24 @@ public: GCodeG1Formatter() { this->buf[0] = 'G'; this->buf[1] = '1'; - this->buf_end = buf + buflen; - this->ptr_err.ptr = this->buf + 2; + this->ptr_err.ptr += 2; } GCodeG1Formatter(const GCodeG1Formatter&) = delete; GCodeG1Formatter& operator=(const GCodeG1Formatter&) = delete; }; +class GCodeG2G3Formatter : public GCodeFormatter { +public: + GCodeG2G3Formatter(bool ccw) { + this->buf[0] = 'G'; + this->buf[1] = ccw ? '3' : '2'; + this->ptr_err.ptr += 2; + } + + GCodeG2G3Formatter(const GCodeG2G3Formatter&) = delete; + GCodeG2G3Formatter& operator=(const GCodeG2G3Formatter&) = delete; +}; } /* namespace Slic3r */ #endif /* slic3r_GCodeWriter_hpp_ */ diff --git a/src/libslic3r/GCode/LabelObjects.cpp b/src/libslic3r/GCode/LabelObjects.cpp new file mode 100644 index 0000000..1e5953e --- /dev/null +++ b/src/libslic3r/GCode/LabelObjects.cpp @@ -0,0 +1,191 @@ +#include "LabelObjects.hpp" + +#include "ClipperUtils.hpp" +#include "Model.hpp" +#include "Print.hpp" +#include "TriangleMeshSlicer.hpp" + + +namespace Slic3r::GCode { + + +namespace { + +Polygon instance_outline(const PrintInstance* pi) +{ + ExPolygons outline; + const ModelObject* mo = pi->model_instance->get_object(); + const ModelInstance* mi = pi->model_instance; + for (const ModelVolume *v : mo->volumes) { + Polygons vol_outline; + vol_outline = project_mesh(v->mesh().its, + mi->get_matrix() * v->get_matrix(), + [] {}); + switch (v->type()) { + case ModelVolumeType::MODEL_PART: outline = union_ex(outline, vol_outline); break; + case ModelVolumeType::NEGATIVE_VOLUME: outline = diff_ex(outline, vol_outline); break; + default:; + } + } + + // The projection may contain multiple polygons, which is not supported by Klipper. + // When that happens, calculate and use a 2d convex hull instead. + if (outline.size() == 1u) + return outline.front().contour; + else + return pi->model_instance->get_object()->convex_hull_2d(pi->model_instance->get_matrix()); +} + +}; // anonymous namespace + + +void LabelObjects::init(const Print& print) +{ + m_label_objects_style = print.config().gcode_label_objects; + m_flavor = print.config().gcode_flavor; + + if (m_label_objects_style == LabelObjectsStyle::Disabled) + return; + + std::map> model_object_to_print_instances; + + // Iterate over all PrintObjects and their PrintInstances, collect PrintInstances which + // belong to the same ModelObject. + for (const PrintObject* po : print.objects()) + for (const PrintInstance& pi : po->instances()) + model_object_to_print_instances[pi.model_instance->get_object()].emplace_back(&pi); + + // Now go through the map, assign a unique_id to each of the PrintInstances and get the indices of the + // respective ModelObject and ModelInstance so we can use them in the tags. This will maintain + // indices even in case that some instances are rotated (those end up in different PrintObjects) + // or when some are out of bed (these ModelInstances have no corresponding PrintInstances). + int unique_id = 0; + for (const auto& [model_object, print_instances] : model_object_to_print_instances) { + const ModelObjectPtrs& model_objects = model_object->get_model()->objects; + int object_id = int(std::find(model_objects.begin(), model_objects.end(), model_object) - model_objects.begin()); + for (const PrintInstance* const pi : print_instances) { + bool object_has_more_instances = print_instances.size() > 1u; + int instance_id = int(std::find(model_object->instances.begin(), model_object->instances.end(), pi->model_instance) - model_object->instances.begin()); + + // Now compose the name of the object and define whether indexing is 0 or 1-based. + std::string name = model_object->name; + if (m_label_objects_style == LabelObjectsStyle::Octoprint) { + // use zero-based indexing for objects and instances, as we always have done + name += " id:" + std::to_string(object_id) + " copy " + std::to_string(instance_id); + } + else if (m_label_objects_style == LabelObjectsStyle::Firmware) { + // use one-based indexing for objects and instances so indices match what we see in QIDISlicer. + ++object_id; + ++instance_id; + + if (object_has_more_instances) + name += " (Instance " + std::to_string(instance_id) + ")"; + if (m_flavor == gcfKlipper) { + const std::string banned = "-. \r\n\v\t\f"; + std::replace_if(name.begin(), name.end(), [&banned](char c) { return banned.find(c) != std::string::npos; }, '_'); + } + } + + m_label_data.emplace(pi, LabelData{name, unique_id}); + ++unique_id; + } + } +} + + + +std::string LabelObjects::all_objects_header() const +{ + if (m_label_objects_style == LabelObjectsStyle::Disabled) + return std::string(); + + std::string out; + + // Let's sort the values according to unique_id so they are in the same order in which they were added. + std::vector> label_data_sorted; + for (const auto& pi_and_label : m_label_data) + label_data_sorted.emplace_back(pi_and_label); + std::sort(label_data_sorted.begin(), label_data_sorted.end(), [](const auto& ld1, const auto& ld2) { return ld1.second.unique_id < ld2.second.unique_id; }); + + out += "\n"; + for (const auto& [print_instance, label] : label_data_sorted) { + if (m_label_objects_style == LabelObjectsStyle::Firmware && m_flavor == gcfKlipper) { + char buffer[64]; + out += "EXCLUDE_OBJECT_DEFINE NAME=" + label.name; + Polygon outline = instance_outline(print_instance); + assert(! outline.empty()); + outline.douglas_peucker(50000.f); + Point center = outline.centroid(); + std::snprintf(buffer, sizeof(buffer) - 1, " CENTER=%.3f,%.3f", unscale(center[0]), unscale(center[1])); + out += buffer + std::string(" POLYGON=["); + for (const Point& point : outline) { + std::snprintf(buffer, sizeof(buffer) - 1, "[%.3f,%.3f],", unscale(point[0]), unscale(point[1])); + out += buffer; + } + out.pop_back(); + out += "]\n"; + } else { + out += start_object(*print_instance, IncludeName::Yes); + out += stop_object(*print_instance); + } + } + out += "\n"; + return out; +} + + + +std::string LabelObjects::start_object(const PrintInstance& print_instance, IncludeName include_name) const +{ + if (m_label_objects_style == LabelObjectsStyle::Disabled) + return std::string(); + + const LabelData& label = m_label_data.at(&print_instance); + + std::string out; + if (m_label_objects_style == LabelObjectsStyle::Octoprint) + out += std::string("; printing object ") + label.name + "\n"; + else if (m_label_objects_style == LabelObjectsStyle::Firmware) { + if (m_flavor == GCodeFlavor::gcfMarlinFirmware || m_flavor == GCodeFlavor::gcfMarlinLegacy || m_flavor == GCodeFlavor::gcfRepRapFirmware) { + out += std::string("M486 S") + std::to_string(label.unique_id); + if (include_name == IncludeName::Yes) { + out += (m_flavor == GCodeFlavor::gcfRepRapFirmware ? " A" : "\nM486 A"); + out += (m_flavor == GCodeFlavor::gcfRepRapFirmware ? (std::string("\"") + label.name + "\"") : label.name); + } + out += "\n"; + } else if (m_flavor == gcfKlipper) + out += "EXCLUDE_OBJECT_START NAME=" + label.name + "\n"; + else { + // Not supported by / implemented for the other firmware flavors. + } + } + return out; +} + + + +std::string LabelObjects::stop_object(const PrintInstance& print_instance) const +{ + if (m_label_objects_style == LabelObjectsStyle::Disabled) + return std::string(); + + const LabelData& label = m_label_data.at(&print_instance); + + std::string out; + if (m_label_objects_style == LabelObjectsStyle::Octoprint) + out += std::string("; stop printing object ") + label.name + "\n"; + else if (m_label_objects_style == LabelObjectsStyle::Firmware) { + if (m_flavor == GCodeFlavor::gcfMarlinFirmware || m_flavor == GCodeFlavor::gcfMarlinLegacy || m_flavor == GCodeFlavor::gcfRepRapFirmware) + out += std::string("M486 S-1\n"); + else if (m_flavor ==gcfKlipper) + out += "EXCLUDE_OBJECT_END NAME=" + label.name + "\n"; + else { + // Not supported by / implemented for the other firmware flavors. + } + } + return out; +} + + + +} // namespace Slic3r::GCode diff --git a/src/libslic3r/GCode/LabelObjects.hpp b/src/libslic3r/GCode/LabelObjects.hpp new file mode 100644 index 0000000..e6cf9b3 --- /dev/null +++ b/src/libslic3r/GCode/LabelObjects.hpp @@ -0,0 +1,45 @@ +#ifndef slic3r_GCode_LabelObjects_hpp_ +#define slic3r_GCode_LabelObjects_hpp_ + +#include +#include + +namespace Slic3r { + +enum GCodeFlavor : unsigned char; +enum class LabelObjectsStyle; +struct PrintInstance; +class Print; + + +namespace GCode { + + +class LabelObjects { +public: + enum class IncludeName { + No, + Yes + }; + void init(const Print& print); + std::string all_objects_header() const; + std::string start_object(const PrintInstance& print_instance, IncludeName include_name) const; + std::string stop_object(const PrintInstance& print_instance) const; + +private: + struct LabelData { + std::string name; + int unique_id; + }; + + LabelObjectsStyle m_label_objects_style; + GCodeFlavor m_flavor; + std::unordered_map m_label_data; + +}; + + +} // namespace GCode +} // namespace Slic3r + +#endif // slic3r_GCode_LabelObjects_hpp_ diff --git a/src/libslic3r/GCode/PrintExtents.cpp b/src/libslic3r/GCode/PrintExtents.cpp index 9a01dc8..9bcaa27 100644 --- a/src/libslic3r/GCode/PrintExtents.cpp +++ b/src/libslic3r/GCode/PrintExtents.cpp @@ -30,7 +30,7 @@ static inline BoundingBox extrusion_polyline_extents(const Polyline &polyline, c static inline BoundingBoxf extrusionentity_extents(const ExtrusionPath &extrusion_path) { - BoundingBox bbox = extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width))); + BoundingBox bbox = extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width()))); BoundingBoxf bboxf; if (! empty(bbox)) { bboxf.min = unscale(bbox.min); @@ -44,7 +44,7 @@ static inline BoundingBoxf extrusionentity_extents(const ExtrusionLoop &extrusio { BoundingBox bbox; for (const ExtrusionPath &extrusion_path : extrusion_loop.paths) - bbox.merge(extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width)))); + bbox.merge(extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width())))); BoundingBoxf bboxf; if (! empty(bbox)) { bboxf.min = unscale(bbox.min); @@ -58,7 +58,7 @@ static inline BoundingBoxf extrusionentity_extents(const ExtrusionMultiPath &ext { BoundingBox bbox; for (const ExtrusionPath &extrusion_path : extrusion_multi_path.paths) - bbox.merge(extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width)))); + bbox.merge(extrusion_polyline_extents(extrusion_path.polyline, coord_t(scale_(0.5 * extrusion_path.width())))); BoundingBoxf bboxf; if (! empty(bbox)) { bboxf.min = unscale(bbox.min); diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index c4e4296..b6c3d4b 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1484,7 +1484,7 @@ void SeamPlacer::init(const Print &print, std::function throw_if_can } } -void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, +Point SeamPlacer::place_seam(const Layer *layer, const ExtrusionLoop &loop, bool external_first, const Point &last_pos) const { using namespace SeamPlacerImpl; const PrintObject *po = layer->object(); @@ -1587,7 +1587,7 @@ void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool extern //lastly, for internal perimeters, do the staggering if requested if (po->config().staggered_inner_seams && loop.length() > 0.0) { //fix depth, it is sometimes strongly underestimated - depth = std::max(loop.paths[projected_point.path_idx].width, depth); + depth = std::max(loop.paths[projected_point.path_idx].width(), depth); while (depth > 0.0f) { auto next_point = get_next_loop_point(projected_point); @@ -1605,13 +1605,7 @@ void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool extern } } - // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, - // thus empty path segments will not be produced by G-code export. - if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { - // The point is not in the original loop. - // Insert it. - loop.split_at(seam_point, true); - } + return seam_point; } diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 671f6bc..5603e99 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -141,7 +141,7 @@ public: void init(const Print &print, std::function throw_if_canceled_func); - void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; + Point place_seam(const Layer *layer, const ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; private: void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); diff --git a/src/libslic3r/GCode/SmoothPath.cpp b/src/libslic3r/GCode/SmoothPath.cpp new file mode 100644 index 0000000..f27f1f2 --- /dev/null +++ b/src/libslic3r/GCode/SmoothPath.cpp @@ -0,0 +1,269 @@ +#include "SmoothPath.hpp" + +#include "../ExtrusionEntity.hpp" +#include "../ExtrusionEntityCollection.hpp" + +namespace Slic3r::GCode { + +// Length of a smooth path. +double length(const SmoothPath &path) +{ + double l = 0; + for (const SmoothPathElement &el : path) + l += Geometry::ArcWelder::path_length(el.path); + return l; +} + +// Returns true if the smooth path is longer than a threshold. +bool longer_than(const SmoothPath &path, double length) +{ + for (const SmoothPathElement &el : path) { + for (auto it = std::next(el.path.begin()); it != el.path.end(); ++ it) { + length -= Geometry::ArcWelder::segment_length(*std::prev(it), *it); + if (length < 0) + return true; + } + } + return length < 0; +} + +std::optional sample_path_point_at_distance_from_start(const SmoothPath &path, double distance) +{ + if (distance >= 0) { + for (const SmoothPathElement &el : path) { + auto it = el.path.begin(); + auto end = el.path.end(); + Point prev_point = it->point; + for (++ it; it != end; ++ it) { + Point point = it->point; + if (it->linear()) { + // Linear segment + Vec2d v = (point - prev_point).cast(); + double lsqr = v.squaredNorm(); + if (lsqr > sqr(distance)) + return std::make_optional(prev_point + (v * (distance / sqrt(lsqr))).cast()); + distance -= sqrt(lsqr); + } else { + // Circular segment + float angle = Geometry::ArcWelder::arc_angle(prev_point.cast(), point.cast(), it->radius); + double len = std::abs(it->radius) * angle; + if (len > distance) { + // Rotate the segment end point in reverse towards the start point. + return std::make_optional(prev_point.rotated(- angle * (distance / len), + Geometry::ArcWelder::arc_center(prev_point.cast(), point.cast(), it->radius, it->ccw()).cast())); + } + distance -= len; + } + if (distance < 0) + return std::make_optional(point); + prev_point = point; + } + } + } + // Failed. + return {}; +} + +std::optional sample_path_point_at_distance_from_end(const SmoothPath &path, double distance) +{ + if (distance >= 0) { + for (const SmoothPathElement& el : path) { + auto it = el.path.begin(); + auto end = el.path.end(); + Point prev_point = it->point; + for (++it; it != end; ++it) { + Point point = it->point; + if (it->linear()) { + // Linear segment + Vec2d v = (point - prev_point).cast(); + double lsqr = v.squaredNorm(); + if (lsqr > sqr(distance)) + return std::make_optional(prev_point + (v * (distance / sqrt(lsqr))).cast()); + distance -= sqrt(lsqr); + } + else { + // Circular segment + float angle = Geometry::ArcWelder::arc_angle(prev_point.cast(), point.cast(), it->radius); + double len = std::abs(it->radius) * angle; + if (len > distance) { + // Rotate the segment end point in reverse towards the start point. + return std::make_optional(prev_point.rotated(-angle * (distance / len), + Geometry::ArcWelder::arc_center(prev_point.cast(), point.cast(), it->radius, it->ccw()).cast())); + } + distance -= len; + } + if (distance < 0) + return std::make_optional(point); + prev_point = point; + } + } + } + // Failed. + return {}; +} + +// Clip length of a smooth path, for seam hiding. +// When clipping the end of a path, don't create segments shorter than min_point_distance_threshold, +// rather discard such a degenerate segment. +double clip_end(SmoothPath &path, double distance, double min_point_distance_threshold) +{ + while (! path.empty() && distance > 0) { + Geometry::ArcWelder::Path &p = path.back().path; + distance = clip_end(p, distance); + if (p.empty()) { + path.pop_back(); + } else { + // Trailing path was trimmed and it is valid. + Geometry::ArcWelder::Path &last_path = path.back().path; + assert(last_path.size() > 1); + assert(distance == 0); + // Distance to go is zero. + // Remove the last segment if its length is shorter than min_point_distance_threshold. + const Geometry::ArcWelder::Segment &prev_segment = last_path[last_path.size() - 2]; + const Geometry::ArcWelder::Segment &last_segment = last_path.back(); + if (Geometry::ArcWelder::segment_length(prev_segment, last_segment) < min_point_distance_threshold) { + last_path.pop_back(); + if (last_path.size() < 2) + path.pop_back(); + } + return 0; + } + } + // Return distance to go after the whole smooth path was trimmed to zero. + return distance; +} + +void SmoothPathCache::interpolate_add(const ExtrusionPath &path, const InterpolationParameters ¶ms) +{ + double tolerance = params.tolerance; + if (path.role().is_sparse_infill()) + // Use 3x lower resolution than the object fine detail for sparse infill. + tolerance *= 3.; + else if (path.role().is_support()) + // Use 4x lower resolution than the object fine detail for support. + tolerance *= 4.; + else if (path.role().is_skirt()) + // Brim is currently marked as skirt. + // Use 4x lower resolution than the object fine detail for skirt & brim. + tolerance *= 4.; + m_cache[&path.polyline] = Slic3r::Geometry::ArcWelder::fit_path(path.polyline.points, tolerance, params.fit_circle_tolerance); +} + +void SmoothPathCache::interpolate_add(const ExtrusionMultiPath &multi_path, const InterpolationParameters ¶ms) +{ + for (const ExtrusionPath &path : multi_path.paths) + this->interpolate_add(path, params); +} + +void SmoothPathCache::interpolate_add(const ExtrusionLoop &loop, const InterpolationParameters ¶ms) +{ + for (const ExtrusionPath &path : loop.paths) + this->interpolate_add(path, params); +} + +void SmoothPathCache::interpolate_add(const ExtrusionEntityCollection &eec, const InterpolationParameters ¶ms) +{ + for (const ExtrusionEntity *ee : eec) { + if (ee->is_collection()) + this->interpolate_add(*static_cast(ee), params); + else if (const ExtrusionPath *path = dynamic_cast(ee); path) + this->interpolate_add(*path, params); + else if (const ExtrusionMultiPath *multi_path = dynamic_cast(ee); multi_path) + this->interpolate_add(*multi_path, params); + else if (const ExtrusionLoop *loop = dynamic_cast(ee); loop) + this->interpolate_add(*loop, params); + else + assert(false); + } +} + +const Geometry::ArcWelder::Path* SmoothPathCache::resolve(const Polyline *pl) const +{ + auto it = m_cache.find(pl); + return it == m_cache.end() ? nullptr : &it->second; +} + +const Geometry::ArcWelder::Path* SmoothPathCache::resolve(const ExtrusionPath &path) const +{ + return this->resolve(&path.polyline); +} + +Geometry::ArcWelder::Path SmoothPathCache::resolve_or_fit(const ExtrusionPath &path, bool reverse, double tolerance) const +{ + Geometry::ArcWelder::Path out; + if (const Geometry::ArcWelder::Path *cached = this->resolve(path); cached) + out = *cached; + else + out = Geometry::ArcWelder::fit_polyline(path.polyline.points, tolerance); + if (reverse) + Geometry::ArcWelder::reverse(out); + return out; +} + +SmoothPath SmoothPathCache::resolve_or_fit(const ExtrusionPaths &paths, bool reverse, double resolution) const +{ + SmoothPath out; + out.reserve(paths.size()); + if (reverse) { + for (auto it = paths.crbegin(); it != paths.crend(); ++ it) + out.push_back({ it->attributes(), this->resolve_or_fit(*it, true, resolution) }); + } else { + for (auto it = paths.cbegin(); it != paths.cend(); ++ it) + out.push_back({ it->attributes(), this->resolve_or_fit(*it, false, resolution) }); + } + return out; +} + +SmoothPath SmoothPathCache::resolve_or_fit(const ExtrusionMultiPath &multipath, bool reverse, double resolution) const +{ + return this->resolve_or_fit(multipath.paths, reverse, resolution); +} + +SmoothPath SmoothPathCache::resolve_or_fit_split_with_seam( + const ExtrusionLoop &loop, const bool reverse, const double resolution, + const Point &seam_point, const double seam_point_merge_distance_threshold) const +{ + SmoothPath out = this->resolve_or_fit(loop.paths, reverse, resolution); + assert(! out.empty()); + if (! out.empty()) { + // Find a closest point on a vector of smooth paths. + Geometry::ArcWelder::PathSegmentProjection proj; + int proj_path = -1; + for (const SmoothPathElement &el : out) + if (Geometry::ArcWelder::PathSegmentProjection this_proj = Geometry::ArcWelder::point_to_path_projection(el.path, seam_point, proj.distance2); + this_proj.valid()) { + // Found a better (closer) projection. + assert(this_proj.distance2 < proj.distance2); + assert(this_proj.segment_id >= 0 && this_proj.segment_id < el.path.size()); + proj = this_proj; + proj_path = &el - out.data(); + if (proj.distance2 == 0) + // There will be no better split point found than one with zero distance. + break; + } + assert(proj_path >= 0); + // Split the path at the closest point. + Geometry::ArcWelder::Path &path = out[proj_path].path; + std::pair split = Geometry::ArcWelder::split_at( + path, proj, seam_point_merge_distance_threshold); + if (split.second.empty()) { + std::rotate(out.begin(), out.begin() + proj_path + 1, out.end()); + assert(out.back().path == split.first); + } else { + ExtrusionAttributes attr = out[proj_path].path_attributes; + std::rotate(out.begin(), out.begin() + proj_path, out.end()); + out.front().path = std::move(split.second); + if (! split.first.empty()) { + if (out.back().path_attributes == attr) { + // Merge with the last segment. + out.back().path.insert(out.back().path.end(), std::next(split.first.begin()), split.first.end()); + } else + out.push_back({ attr, std::move(split.first) }); + } + } + } + + return out; +} + +} // namespace Slic3r::GCode diff --git a/src/libslic3r/GCode/SmoothPath.hpp b/src/libslic3r/GCode/SmoothPath.hpp new file mode 100644 index 0000000..83afd60 --- /dev/null +++ b/src/libslic3r/GCode/SmoothPath.hpp @@ -0,0 +1,89 @@ +#ifndef slic3r_GCode_SmoothPath_hpp_ +#define slic3r_GCode_SmoothPath_hpp_ + +#include + +#include "../ExtrusionEntity.hpp" +#include "../Geometry/ArcWelder.hpp" + +namespace Slic3r { + +class ExtrusionEntityCollection; + +namespace GCode { + +struct SmoothPathElement +{ + ExtrusionAttributes path_attributes; + Geometry::ArcWelder::Path path; +}; + +using SmoothPath = std::vector; + +// Length of a smooth path. +double length(const SmoothPath &path); +// Returns true if the smooth path is longer than a threshold. +bool longer_than(const SmoothPath &path, const double length); + +std::optional sample_path_point_at_distance_from_start(const SmoothPath &path, double distance); +std::optional sample_path_point_at_distance_from_end(const SmoothPath &path, double distance); + +// Clip end of a smooth path, for seam hiding. +// When clipping the end of a path, don't create segments shorter than min_point_distance_threshold, +// rather discard such a degenerate segment. +double clip_end(SmoothPath &path, double distance, double min_point_distance_threshold); + +class SmoothPathCache +{ +public: + struct InterpolationParameters { + double tolerance; + double fit_circle_tolerance; + }; + + void interpolate_add(const ExtrusionPath &ee, const InterpolationParameters ¶ms); + void interpolate_add(const ExtrusionMultiPath &ee, const InterpolationParameters ¶ms); + void interpolate_add(const ExtrusionLoop &ee, const InterpolationParameters ¶ms); + void interpolate_add(const ExtrusionEntityCollection &eec, const InterpolationParameters ¶ms); + + const Geometry::ArcWelder::Path* resolve(const Polyline *pl) const; + const Geometry::ArcWelder::Path* resolve(const ExtrusionPath &path) const; + + // Look-up a smooth representation of path in the cache. If it does not exist, produce a simplified polyline. + Geometry::ArcWelder::Path resolve_or_fit(const ExtrusionPath &path, bool reverse, double resolution) const; + + // Look-up a smooth representation of path in the cache. If it does not exist, produce a simplified polyline. + SmoothPath resolve_or_fit(const ExtrusionPaths &paths, bool reverse, double resolution) const; + SmoothPath resolve_or_fit(const ExtrusionMultiPath &path, bool reverse, double resolution) const; + + // Look-up a smooth representation of path in the cache. If it does not exist, produce a simplified polyline. + SmoothPath resolve_or_fit_split_with_seam( + const ExtrusionLoop &path, const bool reverse, const double resolution, + const Point &seam_point, const double seam_point_merge_distance_threshold) const; + +private: + ankerl::unordered_dense::map m_cache; +}; + +// Encapsulates references to global and layer local caches of smooth extrusion paths. +class SmoothPathCaches final +{ +public: + SmoothPathCaches() = delete; + SmoothPathCaches(const SmoothPathCache &global, const SmoothPathCache &layer_local) : + m_global(&global), m_layer_local(&layer_local) {} + SmoothPathCaches operator=(const SmoothPathCaches &rhs) + { m_global = rhs.m_global; m_layer_local = rhs.m_layer_local; return *this; } + + const SmoothPathCache& global() const { return *m_global; } + const SmoothPathCache& layer_local() const { return *m_layer_local; } + +private: + const SmoothPathCache *m_global; + const SmoothPathCache *m_layer_local; +}; + +} // namespace GCode +} // namespace Slic3r + +#endif // slic3r_GCode_SmoothPath_hpp_ diff --git a/src/libslic3r/GCode/SpiralVase.hpp b/src/libslic3r/GCode/SpiralVase.hpp index fb461c2..f8bfa8c 100644 --- a/src/libslic3r/GCode/SpiralVase.hpp +++ b/src/libslic3r/GCode/SpiralVase.hpp @@ -19,6 +19,9 @@ public: m_enabled = en; } + bool is_enabled() const { + return m_enabled; + } std::string process_layer(const std::string &gcode); private: diff --git a/src/libslic3r/GCode/Thumbnails.cpp b/src/libslic3r/GCode/Thumbnails.cpp index 48ecf52..ad0c1a3 100644 --- a/src/libslic3r/GCode/Thumbnails.cpp +++ b/src/libslic3r/GCode/Thumbnails.cpp @@ -1,12 +1,12 @@ #include "Thumbnails.hpp" #include "../miniz_extension.hpp" +#include "../format.hpp" #include #include #include -#include -#include -// #include "colpic3.h" +#include +#include namespace Slic3r::GCodeThumbnails { using namespace std::literals; @@ -30,76 +30,14 @@ struct CompressedQOI : CompressedImageBuffer }; -std::unique_ptr compress_thumbnail_png( - const ThumbnailData& data){ - auto out = std::make_unique(); - out->data = tdefl_write_image_to_png_file_in_memory_ex((const - void*)data.pixels.data(), data.width, data.height, 4, &out->size, - MZ_DEFAULT_LEVEL, 1); - return out; -} -//B3 -std::string compress_qidi_thumbnail_png(const ThumbnailData &data) +std::unique_ptr compress_thumbnail_png(const ThumbnailData &data) { auto out = std::make_unique(); - //BOOST_LOG_TRIVIAL(error) << data.width; - int width = int(data.width); - int height = int(data.height); - - if (data.width * data.height > 500 * 500) { - width = 500; - height = 500; - } - U16 color16[500*500]; - //U16 *color16 = new U16[data.width * data.height]; - //for (int i = 0; i < 200*200; i++) color16[i] = 522240; - unsigned char outputdata[500 * 500 * 10]; - //unsigned char *outputdata = new unsigned char[data.width * data.height * 10]; - - std::vector rgba_pixels(data.pixels.size() * 4); - size_t row_size = width * 4; - for (size_t y = 0; y > 3; - gggg = int(pixels[4 * (rr + cc) + 1]) >> 2; - bbbb = int(pixels[4 * (rr + cc) + 2]) >> 3; - aaaa = int(pixels[4 * (rr + cc) + 3]); - if (aaaa == 0) { - rrrr = 239 >> 3; - gggg = 243 >> 2; - bbbb = 247 >> 3; - } - rgb = (rrrr << 11) | (gggg << 5) | bbbb; - color16[time--] = rgb; - } - } - - int res = ColPic_EncodeStr(color16, width, height, outputdata, - height * width * 10, - 1024); - std::string temp; - - //for (unsigned char i : outputdata) { temp += i; } - for (unsigned int i = 0; i < sizeof(outputdata); ++i) { - temp +=outputdata[i]; - // unsigned char strr = outputdata[i]; - // temp += strr; - } - //out->data = tdefl_write_image_to_png_file_in_memory_ex((const void*)data.pixels.data(), data.width, data.height, 4, &out->size, MZ_DEFAULT_LEVEL, 1); - return temp; + out->data = tdefl_write_image_to_png_file_in_memory_ex((const void*)data.pixels.data(), data.width, data.height, 4, &out->size, MZ_DEFAULT_LEVEL, 1); + return out; } + std::unique_ptr compress_thumbnail_jpg(const ThumbnailData& data) { // Take vector of RGBA pixels and flip the image vertically @@ -169,14 +107,6 @@ std::unique_ptr compress_thumbnail_qoi(const ThumbnailDat return out; } -//B3 -std::string compress_qidi_thumbnail(const ThumbnailData& data, - GCodeThumbnailsFormat format) -{ - return compress_qidi_thumbnail_png(data); -} - -//B3 std::unique_ptr compress_thumbnail(const ThumbnailData &data, GCodeThumbnailsFormat format) { switch (format) { @@ -189,249 +119,85 @@ std::unique_ptr compress_thumbnail(const ThumbnailData &d return compress_thumbnail_qoi(data); } } -static void colmemmove(U8 *dec, U8 *src, int lenth) + + +std::pair make_and_check_thumbnail_list(const std::string& thumbnails_string, const std::string_view def_ext /*= "PNG"sv*/) { - if (src < dec) { - dec += lenth - 1; - src += lenth - 1; - while (lenth > 0) { - *(dec--) = *(src--); - lenth--; - } - } else { - while (lenth > 0) { - *(dec++) = *(src++); - lenth--; - } - } -} -static void colmemcpy(U8 *dec, U8 *src, int lenth) -{ - while (lenth > 0) { - *(dec++) = *(src++); - lenth--; - } -} -static void colmemset(U8 *dec, U8 val, int lenth) -{ - while (lenth > 0) { - *(dec++) = val; - lenth--; - } -} -static void ADList0(U16 val, U16HEAD *listu16, int *listqty, int maxqty) -{ - U8 A0; - U8 A1; - U8 A2; - int qty = *listqty; - if (qty >= maxqty) return; - for (int i = 0; i < qty; i++) { - if (listu16[i].colo16 == val) { - listu16[i].qty++; - return; - } - } - A0 = (U8) (val >> 11); - A1 = (U8) ((val << 5) >> 10); - A2 = (U8) ((val << 11) >> 11); - U16HEAD *a = &listu16[qty]; - a->colo16 = val; - a->A0 = A0; - a->A1 = A1; - a->A2 = A2; - a->qty = 1; - *listqty = qty + 1; -} -static int Byte8bitEncode(U16 *fromcolor16, - U16 *listu16, - int listqty, - int dotsqty, - U8 * outputdata, - int decMaxBytesize) -{ - U8 tid, sid; - int dots = 0; - int srcindex = 0; - int decindex = 0; - int lastid = 0; - int temp = 0; - while (dotsqty > 0) { - dots = 1; - for (int i = 0; i < (dotsqty - 1); i++) { - if (fromcolor16[srcindex + i] != fromcolor16[srcindex + i + 1]) - break; - dots++; - if (dots == 255) break; - } - temp = 0; - for (int i = 0; i < listqty; i++) { - if (listu16[i] == fromcolor16[srcindex]) { - temp = i; - break; + if (thumbnails_string.empty()) + return {}; + + std::istringstream is(thumbnails_string); + std::string point_str; + + ThumbnailErrors errors; + + // generate thumbnails data to process it + + GCodeThumbnailDefinitionsList thumbnails_list; + while (std::getline(is, point_str, ',')) { + Vec2d point(Vec2d::Zero()); + GCodeThumbnailsFormat format; + std::istringstream iss(point_str); + std::string coord_str; + if (std::getline(iss, coord_str, 'x') && !coord_str.empty()) { + std::istringstream(coord_str) >> point(0); + if (std::getline(iss, coord_str, '/') && !coord_str.empty()) { + std::istringstream(coord_str) >> point(1); + + if (0 < point(0) && point(0) < 1000 && 0 < point(1) && point(1) < 1000) { + std::string ext_str; + std::getline(iss, ext_str, '/'); + + if (ext_str.empty()) + ext_str = def_ext.empty() ? "PNG"sv : def_ext; + + // check validity of extention + boost::to_upper(ext_str); + if (!ConfigOptionEnum::from_string(ext_str, format)) { + format = GCodeThumbnailsFormat::PNG; + errors = enum_bitmask(errors | ThumbnailError::InvalidExt); + } + + thumbnails_list.emplace_back(std::make_pair(format, point)); + } + else + errors = enum_bitmask(errors | ThumbnailError::OutOfRange); + continue; } } - tid = (U8) (temp % 32); - sid = (U8) (temp / 32); - if (lastid != sid) { - if (decindex >= decMaxBytesize) goto IL_END; - outputdata[decindex] = 7; - outputdata[decindex] <<= 5; - outputdata[decindex] += sid; - decindex++; - lastid = sid; - } - if (dots <= 6) { - if (decindex >= decMaxBytesize) goto IL_END; - outputdata[decindex] = (U8) dots; - outputdata[decindex] <<= 5; - outputdata[decindex] += tid; - decindex++; - } else { - if (decindex >= decMaxBytesize) goto IL_END; - outputdata[decindex] = 0; - outputdata[decindex] += tid; - decindex++; - if (decindex >= decMaxBytesize) goto IL_END; - outputdata[decindex] = (U8) dots; - decindex++; - } - srcindex += dots; - dotsqty -= dots; + errors = enum_bitmask(errors | ThumbnailError::InvalidVal); } -IL_END: - return decindex; + + return std::make_pair(std::move(thumbnails_list), errors); } -static int ColPicEncode(U16 *fromcolor16, - int picw, - int pich, - U8 * outputdata, - int outputmaxtsize, - int colorsmax) + +std::pair make_and_check_thumbnail_list(const ConfigBase& config) { - U16HEAD l0; - int cha0, cha1, cha2, fid, minval; - ColPicHead3 *Head0 = null; - U16HEAD Listu16[1024]; - int ListQty = 0; - int enqty = 0; - int dotsqty = picw * pich; - if (colorsmax > 1024) colorsmax = 1024; - for (int i = 0; i < dotsqty; i++) { - int ch = (int) fromcolor16[i]; - ADList0(ch, Listu16, &ListQty, 1024); - } + // ??? Unit tests or command line slicing may not define "thumbnails" or "thumbnails_format". + // ??? If "thumbnails_format" is not defined, export to PNG. + // generate thumbnails data to process it - for (int index = 1; index < ListQty; index++) { - l0 = Listu16[index]; - for (int i = 0; i < index; i++) { - if (l0.qty >= Listu16[i].qty) { - colmemmove((U8 *) &Listu16[i + 1], (U8 *) &Listu16[i], - (index - i) * sizeof(U16HEAD)); - colmemcpy((U8 *) &Listu16[i], (U8 *) &l0, sizeof(U16HEAD)); - break; - } - } - } - while (ListQty > colorsmax) { - l0 = Listu16[ListQty - 1]; - minval = 255; - fid = -1; - for (int i = 0; i < colorsmax; i++) { - cha0 = Listu16[i].A0 - l0.A0; - if (cha0 < 0) cha0 = 0 - cha0; - cha1 = Listu16[i].A1 - l0.A1; - if (cha1 < 0) cha1 = 0 - cha1; - cha2 = Listu16[i].A2 - l0.A2; - if (cha2 < 0) cha2 = 0 - cha2; - int chall = cha0 + cha1 + cha2; - if (chall < minval) { - minval = chall; - fid = i; - } - } - for (int i = 0; i < dotsqty; i++) { - if (fromcolor16[i] == l0.colo16) - fromcolor16[i] = Listu16[fid].colo16; - } - ListQty = ListQty - 1; - } - Head0 = ((ColPicHead3 *) outputdata); - colmemset(outputdata, 0, sizeof(ColPicHead3)); - Head0->encodever = 3; - Head0->oncelistqty = 0; - Head0->mark = 0x05DDC33C; - Head0->ListDataSize = ListQty * 2; - for (int i = 0; i < ListQty; i++) { - U16 *l0 = (U16 *) &outputdata[sizeof(ColPicHead3)]; - l0[i] = Listu16[i].colo16; - } - enqty = - Byte8bitEncode(fromcolor16, (U16 *) &outputdata[sizeof(ColPicHead3)], - Head0->ListDataSize >> 1, dotsqty, - &outputdata[sizeof(ColPicHead3) + Head0->ListDataSize], - outputmaxtsize - sizeof(ColPicHead3) - - Head0->ListDataSize); - Head0->ColorDataSize = enqty; - Head0->PicW = picw; - Head0->PicH = pich; - return sizeof(ColPicHead3) + Head0->ListDataSize + Head0->ColorDataSize; + if (const auto thumbnails_value = config.option("thumbnails")) + return make_and_check_thumbnail_list(thumbnails_value->value); + + return {}; } -int ColPic_EncodeStr(U16 *fromcolor16, - int picw, - int pich, - U8 * outputdata, - int outputmaxtsize, - int colorsmax) + +std::string get_error_string(const ThumbnailErrors& errors) { - int qty = 0; - int temp = 0; - int strindex = 0; - int hexindex = 0; - U8 TempBytes[4]; - qty = ColPicEncode(fromcolor16, picw, pich, outputdata, outputmaxtsize, - colorsmax); - if (qty == 0) return 0; - temp = 3 - (qty % 3); - while (temp > 0) { - outputdata[qty] = 0; - qty++; - temp--; - } - if ((qty * 4 / 3) >= outputmaxtsize) return 0; - hexindex = qty; - strindex = (qty * 4 / 3); - while (hexindex > 0) { - hexindex -= 3; - strindex -= 4; + std::string error_str; - TempBytes[0] = (U8) (outputdata[hexindex] >> 2); - TempBytes[1] = (U8) (outputdata[hexindex] & 3); - TempBytes[1] <<= 4; - TempBytes[1] += ((U8) (outputdata[hexindex + 1] >> 4)); - TempBytes[2] = (U8) (outputdata[hexindex + 1] & 15); - TempBytes[2] <<= 2; - TempBytes[2] += ((U8) (outputdata[hexindex + 2] >> 6)); - TempBytes[3] = (U8) (outputdata[hexindex + 2] & 63); + if (errors.has(ThumbnailError::InvalidVal)) + error_str += "\n - " + format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); + if (errors.has(ThumbnailError::OutOfRange)) + error_str += "\n - Input value is out of range"; + if (errors.has(ThumbnailError::InvalidExt)) + error_str += "\n - Some extension in the input is invalid"; - TempBytes[0] += 48; - if (TempBytes[0] == (U8) '\\') TempBytes[0] = 126; - TempBytes[0 + 1] += 48; - if (TempBytes[0 + 1] == (U8) '\\') TempBytes[0 + 1] = 126; - TempBytes[0 + 2] += 48; - if (TempBytes[0 + 2] == (U8) '\\') TempBytes[0 + 2] = 126; - TempBytes[0 + 3] += 48; - if (TempBytes[0 + 3] == (U8) '\\') TempBytes[0 + 3] = 126; - - outputdata[strindex] = TempBytes[0]; - outputdata[strindex + 1] = TempBytes[1]; - outputdata[strindex + 2] = TempBytes[2]; - outputdata[strindex + 3] = TempBytes[3]; - } - qty = qty * 4 / 3; - outputdata[qty] = 0; - return qty; + return error_str; } + + } // namespace Slic3r::GCodeThumbnails diff --git a/src/libslic3r/GCode/Thumbnails.hpp b/src/libslic3r/GCode/Thumbnails.hpp index e1e5ad3..d6e619d 100644 --- a/src/libslic3r/GCode/Thumbnails.hpp +++ b/src/libslic3r/GCode/Thumbnails.hpp @@ -9,33 +9,18 @@ #include #include +#include #include -#include "DataType.h" +#include "../libslic3r/enum_bitmask.hpp" + +namespace Slic3r { + enum class ThumbnailError : int { InvalidVal, OutOfRange, InvalidExt }; + using ThumbnailErrors = enum_bitmask; + ENABLE_ENUM_BITMASK_OPERATORS(ThumbnailError); +} + -typedef struct -{ - U16 colo16; - U8 A0; - U8 A1; - U8 A2; - U8 res0; - U16 res1; - U32 qty; -}U16HEAD; -typedef struct -{ - U8 encodever; - U8 res0; - U16 oncelistqty; - U32 PicW; - U32 PicH; - U32 mark; - U32 ListDataSize; - U32 ColorDataSize; - U32 res1; - U32 res2; -}ColPicHead3; namespace Slic3r::GCodeThumbnails { @@ -48,81 +33,43 @@ struct CompressedImageBuffer }; std::unique_ptr compress_thumbnail(const ThumbnailData &data, GCodeThumbnailsFormat format); -//B3 -std::string compress_qidi_thumbnail( - const ThumbnailData &data, GCodeThumbnailsFormat format); -int ColPic_EncodeStr(U16* fromcolor16, int picw, int pich, U8* outputdata, int outputmaxtsize, int colorsmax); + +typedef std::vector> GCodeThumbnailDefinitionsList; + +using namespace std::literals; +std::pair make_and_check_thumbnail_list(const std::string& thumbnails_string, const std::string_view def_ext = "PNG"sv); +std::pair make_and_check_thumbnail_list(const ConfigBase &config); + +std::string get_error_string(const ThumbnailErrors& errors); + + template -inline void export_thumbnails_to_file(ThumbnailsGeneratorCallback &thumbnail_cb, const std::vector &sizes, GCodeThumbnailsFormat format, WriteToOutput output, ThrowIfCanceledCallback throw_if_canceled) +inline void export_thumbnails_to_file(ThumbnailsGeneratorCallback &thumbnail_cb, const std::vector>& thumbnails_list, WriteToOutput output, ThrowIfCanceledCallback throw_if_canceled) { // Write thumbnails using base64 encoding if (thumbnail_cb != nullptr) { + for (const auto& [format, size] : thumbnails_list) { static constexpr const size_t max_row_length = 78; - // ThumbnailsList thumbnails = thumbnail_cb(ThumbnailsParams{ sizes, true, true, true, true }); - //B3 - ThumbnailsList thumbnails = thumbnail_cb(ThumbnailsParams{ sizes, true, false, false, true }); - int count = 0; + ThumbnailsList thumbnails = thumbnail_cb(ThumbnailsParams{ {size}, true, true, true, true }); for (const ThumbnailData& data : thumbnails) if (data.is_valid()) { - //B3 - switch (format) { - case GCodeThumbnailsFormat::QIDI: - { - auto compressed = compress_qidi_thumbnail(data, - format); - if (count == 0) { - output( - (boost::format("\n\n;gimage:%s\n\n") % compressed) - .str() - .c_str()); - count++; - break; - } else { - output( - (boost::format("\n\n;simage:%s\n\n") % compressed) - .str() - .c_str()); - count++; - break; - } - } - case GCodeThumbnailsFormat::JPG: - default: { auto compressed = compress_thumbnail(data, format); if (compressed->data && compressed->size) { std::string encoded; - encoded.resize( - boost::beast::detail::base64::encoded_size( - compressed->size)); - encoded.resize(boost::beast::detail::base64::encode( - (void *) encoded.data(), - (const void *) compressed->data, - compressed->size)); - output((boost::format("\n;\n; %s begin %dx%d %d\n") % - compressed->tag() % data.width % data.height % - encoded.size()) - .str() - .c_str()); + encoded.resize(boost::beast::detail::base64::encoded_size(compressed->size)); + encoded.resize(boost::beast::detail::base64::encode((void*)encoded.data(), (const void*)compressed->data, compressed->size)); + + output((boost::format("\n;\n; %s begin %dx%d %d\n") % compressed->tag() % data.width % data.height % encoded.size()).str().c_str()); while (encoded.size() > max_row_length) { - output((boost::format("; %s\n") % - encoded.substr(0, max_row_length)) - .str() - .c_str()); + output((boost::format("; %s\n") % encoded.substr(0, max_row_length)).str().c_str()); encoded = encoded.substr(max_row_length); } if (encoded.size() > 0) - output((boost::format("; %s\n") % encoded) - .str() - .c_str()); + output((boost::format("; %s\n") % encoded).str().c_str()); - output((boost::format("; %s end\n;\n") % - compressed->tag()) - .str() - .c_str()); - } - } + output((boost::format("; %s end\n;\n") % compressed->tag()).str().c_str()); } @@ -130,6 +77,41 @@ inline void export_thumbnails_to_file(ThumbnailsGeneratorCallback &thumbnail_cb, } } } +} + +template +inline void generate_binary_thumbnails(ThumbnailsGeneratorCallback& thumbnail_cb, std::vector& out_thumbnails, + const std::vector> &thumbnails_list, ThrowIfCanceledCallback throw_if_canceled) +{ + using namespace bgcode::core; + using namespace bgcode::binarize; + out_thumbnails.clear(); + assert(thumbnail_cb != nullptr); + if (thumbnail_cb != nullptr) { + for (const auto& [format, size] : thumbnails_list) { + ThumbnailsList thumbnails = thumbnail_cb(ThumbnailsParams{ {size}, true, true, true, true }); + for (const ThumbnailData &data : thumbnails) + if (data.is_valid()) { + auto compressed = compress_thumbnail(data, format); + if (compressed->data != nullptr && compressed->size > 0) { + ThumbnailBlock& block = out_thumbnails.emplace_back(ThumbnailBlock()); + block.params.width = (uint16_t)data.width; + block.params.height = (uint16_t)data.height; + switch (format) { + case GCodeThumbnailsFormat::PNG: { block.params.format = (uint16_t)EThumbnailFormat::PNG; break; } + case GCodeThumbnailsFormat::JPG: { block.params.format = (uint16_t)EThumbnailFormat::JPG; break; } + case GCodeThumbnailsFormat::QOI: { block.params.format = (uint16_t)EThumbnailFormat::QOI; break; } + } + block.data.resize(compressed->size); + memcpy(block.data.data(), compressed->data, compressed->size); + } + } + } + } +} + + + } // namespace Slic3r::GCodeThumbnails diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index caf461b..f13e8bf 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -474,6 +474,8 @@ void ToolOrdering::fill_wipe_tower_partitions(const PrintConfig &config, coordf_ bool ToolOrdering::insert_wipe_tower_extruder() { + if (!m_print_config_ptr->wipe_tower) + return false; // In case that wipe_tower_extruder is set to non-zero, we must make sure that the extruder will be in the list. bool changed = false; if (m_print_config_ptr->wipe_tower_extruder != 0) { @@ -831,4 +833,18 @@ void WipingExtrusions::ensure_perimeters_infills_order(const Print& print, const } } +int ToolOrdering::toolchanges_count() const +{ + std::vector tools_in_order; + for (const LayerTools& lt : m_layer_tools) + tools_in_order.insert(tools_in_order.end(), lt.extruders.begin(), lt.extruders.end()); + assert(std::find(tools_in_order.begin(), tools_in_order.end(), (unsigned int)(-1)) == tools_in_order.end()); + for (size_t i=1; i 1 && tools_in_order.back() == tools_in_order[tools_in_order.size()-2]) + tools_in_order.pop_back(); + return std::max(0, int(tools_in_order.size())-1); // 5 tools = 4 toolchanges +} } // namespace Slic3r diff --git a/src/libslic3r/GCode/ToolOrdering.hpp b/src/libslic3r/GCode/ToolOrdering.hpp index f4685eb..4cc62b6 100644 --- a/src/libslic3r/GCode/ToolOrdering.hpp +++ b/src/libslic3r/GCode/ToolOrdering.hpp @@ -161,6 +161,7 @@ public: bool empty() const { return m_layer_tools.empty(); } std::vector& layer_tools() { return m_layer_tools; } bool has_wipe_tower() const { return ! m_layer_tools.empty() && m_first_printing_extruder != (unsigned int)-1 && m_layer_tools.front().wipe_tower_partitions > 0; } + int toolchanges_count() const; private: void initialize_layers(std::vector &zs); diff --git a/src/libslic3r/GCode/Wipe.cpp b/src/libslic3r/GCode/Wipe.cpp new file mode 100644 index 0000000..fd7cacd --- /dev/null +++ b/src/libslic3r/GCode/Wipe.cpp @@ -0,0 +1,257 @@ +#include "Wipe.hpp" +#include "../GCode.hpp" + +#include + +#include + +using namespace std::string_view_literals; + +namespace Slic3r::GCode { + +void Wipe::init(const PrintConfig &config, const std::vector &extruders) +{ + this->reset_path(); + + // Calculate maximum wipe length to accumulate by the wipe cache. + // Paths longer than wipe_xy should never be needed for the wipe move. + double wipe_xy = 0; + const bool multimaterial = extruders.size() > 1; + for (auto id : extruders) + if (config.wipe.get_at(id)) { + // Wipe length to extrusion ratio. + const double xy_to_e = this->calc_xy_to_e_ratio(config, id); + wipe_xy = std::max(wipe_xy, xy_to_e * config.retract_length.get_at(id)); + if (multimaterial) + wipe_xy = std::max(wipe_xy, xy_to_e * config.retract_length_toolchange.get_at(id)); + } + + if (wipe_xy == 0) + this->disable(); + else + this->enable(wipe_xy); +} + +void Wipe::set_path(SmoothPath &&path, bool reversed) +{ + this->reset_path(); + + if (this->enabled() && ! path.empty()) { + if (reversed) { + m_path = std::move(path.back().path); + Geometry::ArcWelder::reverse(m_path); + int64_t len = Geometry::ArcWelder::estimate_path_length(m_path); + for (auto it = std::next(path.rbegin()); len < m_wipe_len_max && it != path.rend(); ++ it) { + if (it->path_attributes.role.is_bridge()) + break; // Do not perform a wipe on bridges. + assert(it->path.size() >= 2); + assert(m_path.back().point == it->path.back().point); + if (m_path.back().point != it->path.back().point) + // ExtrusionMultiPath is interrupted in some place. This should not really happen. + break; + len += Geometry::ArcWelder::estimate_path_length(it->path); + m_path.insert(m_path.end(), it->path.rbegin() + 1, it->path.rend()); + } + } else { + m_path = std::move(path.front().path); + int64_t len = Geometry::ArcWelder::estimate_path_length(m_path); + for (auto it = std::next(path.begin()); len < m_wipe_len_max && it != path.end(); ++ it) { + if (it->path_attributes.role.is_bridge()) + break; // Do not perform a wipe on bridges. + assert(it->path.size() >= 2); + assert(m_path.back().point == it->path.front().point); + if (m_path.back().point != it->path.front().point) + // ExtrusionMultiPath is interrupted in some place. This should not really happen. + break; + len += Geometry::ArcWelder::estimate_path_length(it->path); + m_path.insert(m_path.end(), it->path.begin() + 1, it->path.end()); + } + } + } + + assert(m_path.empty() || m_path.size() > 1); +} + +std::string Wipe::wipe(GCodeGenerator &gcodegen, bool toolchange) +{ + std::string gcode; + const Extruder &extruder = *gcodegen.writer().extruder(); + static constexpr const std::string_view wipe_retract_comment = "wipe and retract"sv; + + // Remaining quantized retraction length. + if (double retract_length = extruder.retract_to_go(toolchange ? extruder.retract_length_toolchange() : extruder.retract_length()); + retract_length > 0 && this->has_path()) { + // Delayed emitting of a wipe start tag. + bool wiped = false; + const double wipe_speed = this->calc_wipe_speed(gcodegen.writer().config); + auto start_wipe = [&wiped, &gcode, &gcodegen, wipe_speed](){ + if (! wiped) { + wiped = true; + gcode += ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start) + "\n"; + gcode += gcodegen.writer().set_speed(wipe_speed * 60, {}, gcodegen.enable_cooling_markers() ? ";_WIPE"sv : ""sv); + } + }; + const double xy_to_e = this->calc_xy_to_e_ratio(gcodegen.writer().config, extruder.id()); + auto wipe_linear = [&gcode, &gcodegen, &retract_length, xy_to_e](const Vec2d &prev_quantized, Vec2d &p) { + Vec2d p_quantized = GCodeFormatter::quantize(p); + if (p_quantized == prev_quantized) { + p = p_quantized; + return false; + } + double segment_length = (p_quantized - prev_quantized).norm(); + // Quantize E axis as it is to be extruded as a whole segment. + double dE = GCodeFormatter::quantize_e(xy_to_e * segment_length); + bool done = false; + if (dE > retract_length - EPSILON) { + if (dE > retract_length + EPSILON) + // Shorten the segment. + p = GCodeFormatter::quantize(Vec2d(prev_quantized + (p - prev_quantized) * (retract_length / dE))); + else + p = p_quantized; + dE = retract_length; + done = true; + } else + p = p_quantized; + gcode += gcodegen.writer().extrude_to_xy(p, -dE, wipe_retract_comment); + retract_length -= dE; + return done; + }; + auto wipe_arc = [&gcode, &gcodegen, &retract_length, xy_to_e, &wipe_linear]( + const Vec2d &prev_quantized, Vec2d &p, double radius_in, const bool ccw) { + Vec2d p_quantized = GCodeFormatter::quantize(p); + if (p_quantized == prev_quantized) { + p = p_quantized; + return false; + } + // Use the exact radius for calculating the IJ values, no quantization. + double radius = radius_in; + if (radius == 0) + // Degenerated arc after quantization. Process it as if it was a line segment. + return wipe_linear(prev_quantized, p); + Vec2d center = Geometry::ArcWelder::arc_center(prev_quantized.cast(), p_quantized.cast(), double(radius), ccw); + float angle = Geometry::ArcWelder::arc_angle(prev_quantized.cast(), p_quantized.cast(), double(radius)); + assert(angle > 0); + double segment_length = angle * std::abs(radius); + double dE = GCodeFormatter::quantize_e(xy_to_e * segment_length); + bool done = false; + if (dE > retract_length - EPSILON) { + if (dE > retract_length + EPSILON) { + // Shorten the segment. Recalculate the arc from the unquantized end coordinate. + center = Geometry::ArcWelder::arc_center(prev_quantized.cast(), p.cast(), double(radius), ccw); + angle = Geometry::ArcWelder::arc_angle(prev_quantized.cast(), p.cast(), double(radius)); + segment_length = angle * std::abs(radius); + dE = xy_to_e * segment_length; + p = GCodeFormatter::quantize( + Vec2d(center + Eigen::Rotation2D((ccw ? angle : -angle) * (retract_length / dE)) * (prev_quantized - center))); + } else + p = p_quantized; + dE = retract_length; + done = true; + } else + p = p_quantized; + assert(dE > 0); + { + // Calculate quantized IJ circle center offset. + Vec2d ij = GCodeFormatter::quantize(Vec2d(center - prev_quantized)); + if (ij == Vec2d::Zero()) + // Degenerated arc after quantization. Process it as if it was a line segment. + return wipe_linear(prev_quantized, p); + // The arc is valid. + gcode += gcodegen.writer().extrude_to_xy_G2G3IJ( + p, ij, ccw, -dE, wipe_retract_comment); + } + retract_length -= dE; + return done; + }; + // Start with the current position, which may be different from the wipe path start in case of loop clipping. + Vec2d prev = gcodegen.point_to_gcode_quantized(gcodegen.last_pos()); + auto it = this->path().begin(); + Vec2d p = gcodegen.point_to_gcode(it->point + m_offset); + ++ it; + bool done = false; + if (p != prev) { + start_wipe(); + done = wipe_linear(prev, p); + } + if (! done) { + prev = p; + auto end = this->path().end(); + for (; it != end && ! done; ++ it) { + p = gcodegen.point_to_gcode(it->point + m_offset); + if (p != prev) { + start_wipe(); + if (it->linear() ? + wipe_linear(prev, p) : + wipe_arc(prev, p, unscaled(it->radius), it->ccw())) + break; + prev = p; + } + } + } + if (wiped) { + // add tag for processor + assert(p == GCodeFormatter::quantize(p)); + gcode += ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_End) + "\n"; + gcodegen.set_last_pos(gcodegen.gcode_to_point(p)); + } + } + + // Prevent wiping again on the same path. + this->reset_path(); + return gcode; +} + +// Make a little move inwards before leaving loop after path was extruded, +// thus the current extruder position is at the end of a path and the path +// may not be closed in case the loop was clipped to hide a seam. +std::optional wipe_hide_seam(const SmoothPath &path, bool is_hole, double wipe_length) +{ + assert(! path.empty()); + assert(path.front().path.size() >= 2); + assert(path.back().path.size() >= 2); + + // Heuristics for estimating whether there is a chance that the wipe move will fit inside a small perimeter + // or that the wipe move direction could be calculated with reasonable accuracy. + if (longer_than(path, 2.5 * wipe_length)) { + // The print head will be moved away from path end inside the island. + Point p_current = path.back().path.back().point; + Point p_next = path.front().path.front().point; + Point p_prev; + { + // Is the seam hiding gap large enough already? + double l = wipe_length - (p_next - p_current).cast().norm(); + if (l > 0) { + // Not yet. + std::optional n = sample_path_point_at_distance_from_start(path, l); + assert(n); + if (! n) + // Wipe move cannot be calculated, the loop is not long enough. This should not happen due to the longer_than() test above. + return {}; + } + if (std::optional p = sample_path_point_at_distance_from_end(path, wipe_length); p) + p_prev = *p; + else + // Wipe move cannot be calculated, the loop is not long enough. This should not happen due to the longer_than() test above. + return {}; + } + // Detect angle between last and first segment. + // The side depends on the original winding order of the polygon (left for contours, right for holes). + double angle_inside = angle(p_next - p_current, p_prev - p_current); + assert(angle_inside >= -M_PI && angle_inside <= M_PI); + // 3rd of this angle will be taken, thus make the angle monotonic before interpolation. + if (is_hole) { + if (angle_inside > 0) + angle_inside -= 2.0 * M_PI; + } else { + if (angle_inside < 0) + angle_inside += 2.0 * M_PI; + } + // Rotate the forward segment inside by 1/3 of the wedge angle. + auto v_rotated = Eigen::Rotation2D(angle_inside) * (p_next - p_current).cast().normalized(); + return std::make_optional(p_current + (v_rotated * wipe_length).cast()); + } + + return {}; +} + +} // namespace Slic3r::GCode diff --git a/src/libslic3r/GCode/Wipe.hpp b/src/libslic3r/GCode/Wipe.hpp new file mode 100644 index 0000000..f02a77f --- /dev/null +++ b/src/libslic3r/GCode/Wipe.hpp @@ -0,0 +1,73 @@ +#ifndef slic3r_GCode_Wipe_hpp_ +#define slic3r_GCode_Wipe_hpp_ + +#include "SmoothPath.hpp" + +#include "../Geometry/ArcWelder.hpp" +#include "../Point.hpp" +#include "../PrintConfig.hpp" + +#include +#include + +namespace Slic3r { + +class GCodeGenerator; + +namespace GCode { + +class Wipe { +public: + using Path = Slic3r::Geometry::ArcWelder::Path; + + Wipe() = default; + + void init(const PrintConfig &config, const std::vector &extruders); + void enable(double wipe_len_max) { m_enabled = true; m_wipe_len_max = wipe_len_max; } + void disable() { m_enabled = false; } + bool enabled() const { return m_enabled; } + + const Path& path() const { return m_path; } + bool has_path() const { assert(m_path.empty() || m_path.size() > 1); return ! m_path.empty(); } + void reset_path() { m_path.clear(); m_offset = Point::Zero(); } + void set_path(const Path &path) { + assert(path.empty() || path.size() > 1); + this->reset_path(); + if (this->enabled() && path.size() > 1) + m_path = path; + } + void set_path(Path &&path) { + assert(path.empty() || path.size() > 1); + this->reset_path(); + if (this->enabled() && path.size() > 1) + m_path = std::move(path); + } + void set_path(SmoothPath &&path, bool reversed); + void offset_path(const Point &v) { m_offset += v; } + + std::string wipe(GCodeGenerator &gcodegen, bool toolchange); + + // Reduce feedrate a bit; travel speed is often too high to move on existing material. + // Too fast = ripping of existing material; too slow = short wipe path, thus more blob. + static double calc_wipe_speed(const GCodeConfig &config) { return config.travel_speed.value * 0.8; } + // Reduce retraction length a bit to avoid effective retraction speed to be greater than the configured one + // due to rounding (TODO: test and/or better math for this). + static double calc_xy_to_e_ratio(const GCodeConfig &config, unsigned int extruder_id) + { return 0.95 * floor(config.retract_speed.get_at(extruder_id) + 0.5) / calc_wipe_speed(config); } + +private: + bool m_enabled{ false }; + // Maximum length of a path to accumulate. Only wipes shorter than this threshold will be requested. + double m_wipe_len_max{ 0. }; + Path m_path; + // Offset from m_path to the current PrintObject active. + Point m_offset{ Point::Zero() }; +}; + +// Make a little move inwards before leaving loop. +std::optional wipe_hide_seam(const SmoothPath &path, bool is_hole, double wipe_length); + +} // namespace GCode +} // namespace Slic3r + +#endif // slic3r_GCode_Wipe_hpp_ diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index c64556b..dcad30b 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -530,6 +530,7 @@ WipeTower::WipeTower(const PrintConfig& config, const PrintRegionConfig& default m_no_sparse_layers(config.wipe_tower_no_sparse_layers), m_gcode_flavor(config.gcode_flavor), m_travel_speed(config.travel_speed), + m_travel_speed_z(config.travel_speed_z), m_infill_speed(default_region_config.infill_speed), m_perimeter_speed(default_region_config.perimeter_speed), m_current_tool(initial_tool), @@ -786,12 +787,13 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool) .set_initial_tool(m_current_tool) .set_y_shift(m_y_shift + (tool!=(unsigned int)(-1) && (m_current_shape == SHAPE_REVERSED) ? m_layer_info->depth - m_layer_info->toolchanges_depth(): 0.f)) .append(";--------------------\n" - "; CP TOOLCHANGE START\n") - .comment_with_value(" toolchange #", m_num_tool_changes + 1); // the number is zero-based + "; CP TOOLCHANGE START\n"); - if (tool != (unsigned)(-1)) + if (tool != (unsigned)(-1)) { + writer.comment_with_value(" toolchange #", m_num_tool_changes + 1); // the number is zero-based writer.append(std::string("; material : " + (m_current_tool < m_filpar.size() ? m_filpar[m_current_tool].material : "(NONE)") + " -> " + m_filpar[tool].material + "\n").c_str()) .append(";--------------------\n"); + } writer.speed_override_backup(); writer.speed_override(100); @@ -1001,7 +1003,7 @@ void WipeTower::toolchange_Change( // This is where we want to place the custom gcodes. We will use placeholders for this. // These will be substituted by the actual gcodes when the gcode is generated. //writer.append("[end_filament_gcode]\n"); - writer.append("[toolchange_gcode]\n"); + writer.append("[toolchange_gcode_from_wipe_tower_generator]\n"); // Travel to where we assume we are. Custom toolchange or some special T code handling (parking extruder etc) // gcode could have left the extruder somewhere, we cannot just start extruding. We should also inform the @@ -1010,7 +1012,8 @@ void WipeTower::toolchange_Change( writer.feedrate(m_travel_speed * 60.f) // see https://github.com/qidi3d/QIDISlicer/issues/5483 .append(std::string("G1 X") + Slic3r::float_to_string_decimal_point(current_pos.x()) + " Y" + Slic3r::float_to_string_decimal_point(current_pos.y()) - + never_skip_tag() + "\n"); + + never_skip_tag() + "\n" + ); writer.append("[deretraction_from_wipe_tower_generator]"); // The toolchange Tn command will be inserted later, only in case that the user does @@ -1479,6 +1482,10 @@ void WipeTower::save_on_last_wipe() // Which toolchange will finish_layer extrusions be subtracted from? int idx = first_toolchange_to_nonsoluble(m_layer_info->tool_changes); + if (idx == -1) { + // In this case, finish_layer will be called at the very beginning. + finish_layer().total_extrusion_length_in_plane(); + } for (int i=0; itool_changes.size()); ++i) { auto& toolchange = m_layer_info->tool_changes[i]; tool_change(toolchange.new_tool); @@ -1490,9 +1497,9 @@ void WipeTower::save_on_last_wipe() m_perimeter_width, m_layer_info->height) - toolchange.first_wipe_line - length_to_save; length_to_wipe = std::max(length_to_wipe,0.f); - float depth_to_wipe = m_perimeter_width * (std::floor(length_to_wipe/width) + ( length_to_wipe > 0.f ? 1.f : 0.f ) ) * m_extra_spacing; + float depth_to_wipe = m_perimeter_width * (std::floor(length_to_wipe/width) + ( length_to_wipe > 0.f ? 1.f : 0.f ) ); - toolchange.required_depth = toolchange.ramming_depth + depth_to_wipe; + toolchange.required_depth = (toolchange.ramming_depth + depth_to_wipe) * m_extra_spacing; } } } @@ -1558,9 +1565,9 @@ void WipeTower::generate(std::vector> & m_old_temperature = -1; // reset last temperature written in the gcode - std::vector layer_result; for (const WipeTower::WipeTowerInfo& layer : m_plan) { + std::vector layer_result; set_layer(layer.z, layer.height, 0, false/*layer.z == m_plan.front().z*/, layer.z == m_plan.back().z); m_internal_rotation += 180.f; diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 1e23698..d28ee38 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -275,6 +275,7 @@ private: size_t m_max_color_changes = 0; // Maximum number of color changes per layer. int m_old_temperature = -1; // To keep track of what was the last temp that we set (so we don't issue the command when not neccessary) float m_travel_speed = 0.f; + float m_travel_speed_z = 0.f; float m_infill_speed = 0.f; float m_perimeter_speed = 0.f; float m_first_layer_speed = 0.f; diff --git a/src/libslic3r/GCode/WipeTowerIntegration.cpp b/src/libslic3r/GCode/WipeTowerIntegration.cpp new file mode 100644 index 0000000..4b51d27 --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerIntegration.cpp @@ -0,0 +1,257 @@ +#include "WipeTowerIntegration.hpp" + +#include "../GCode.hpp" +#include "../libslic3r.h" + +#include "boost/algorithm/string/replace.hpp" + +namespace Slic3r::GCode { + +static inline Point wipe_tower_point_to_object_point(GCodeGenerator &gcodegen, const Vec2f& wipe_tower_pt) +{ + return Point(scale_(wipe_tower_pt.x() - gcodegen.origin()(0)), scale_(wipe_tower_pt.y() - gcodegen.origin()(1))); +} + +std::string WipeTowerIntegration::append_tcr(GCodeGenerator &gcodegen, const WipeTower::ToolChangeResult& tcr, int new_extruder_id, double z) const +{ + if (new_extruder_id != -1 && new_extruder_id != tcr.new_tool) + throw Slic3r::InvalidArgument("Error: WipeTowerIntegration::append_tcr was asked to do a toolchange it didn't expect."); + + std::string gcode; + + // Toolchangeresult.gcode assumes the wipe tower corner is at the origin (except for priming lines) + // We want to rotate and shift all extrusions (gcode postprocessing) and starting and ending position + float alpha = m_wipe_tower_rotation / 180.f * float(M_PI); + + auto transform_wt_pt = [&alpha, this](const Vec2f& pt) -> Vec2f { + Vec2f out = Eigen::Rotation2Df(alpha) * pt; + out += m_wipe_tower_pos; + return out; + }; + + Vec2f start_pos = tcr.start_pos; + Vec2f end_pos = tcr.end_pos; + if (! tcr.priming) { + start_pos = transform_wt_pt(start_pos); + end_pos = transform_wt_pt(end_pos); + } + + Vec2f wipe_tower_offset = tcr.priming ? Vec2f::Zero() : m_wipe_tower_pos; + float wipe_tower_rotation = tcr.priming ? 0.f : alpha; + + std::string tcr_rotated_gcode = post_process_wipe_tower_moves(tcr, wipe_tower_offset, wipe_tower_rotation); + + double current_z = gcodegen.writer().get_position().z(); + gcode += gcodegen.writer().travel_to_z(current_z); + + if (z == -1.) // in case no specific z was provided, print at current_z pos + z = current_z; + + const bool needs_toolchange = gcodegen.writer().need_toolchange(new_extruder_id); + const bool will_go_down = ! is_approx(z, current_z); + const bool is_ramming = (gcodegen.config().single_extruder_multi_material) + || (! gcodegen.config().single_extruder_multi_material && gcodegen.config().filament_multitool_ramming.get_at(tcr.initial_tool)); + const bool should_travel_to_tower = ! tcr.priming + && (tcr.force_travel // wipe tower says so + || ! needs_toolchange // this is just finishing the tower with no toolchange + || is_ramming + || will_go_down); // don't dig into the print + if (should_travel_to_tower) { + gcode += gcodegen.retract_and_wipe(); + gcodegen.m_avoid_crossing_perimeters.use_external_mp_once(); + gcode += gcodegen.travel_to( + wipe_tower_point_to_object_point(gcodegen, start_pos), + ExtrusionRole::Mixed, + "Travel to a Wipe Tower"); + gcode += gcodegen.unretract(); + } else { + // When this is multiextruder printer without any ramming, we can just change + // the tool without travelling to the tower. + } + + if (will_go_down) { + gcode += gcodegen.writer().retract(); + gcode += gcodegen.writer().travel_to_z(z, "Travel down to the last wipe tower layer."); + gcode += gcodegen.writer().unretract(); + } + + std::string toolchange_gcode_str; + std::string deretraction_str; + if (tcr.priming || (new_extruder_id >= 0 && needs_toolchange)) { + if (is_ramming) + gcodegen.m_wipe.reset_path(); // We don't want wiping on the ramming lines. + toolchange_gcode_str = gcodegen.set_extruder(new_extruder_id, tcr.print_z); // TODO: toolchange_z vs print_z + if (gcodegen.config().wipe_tower) + deretraction_str += gcodegen.writer().get_travel_to_z_gcode(z, "restore layer Z"); + deretraction_str += gcodegen.unretract(); + + } + assert(toolchange_gcode_str.empty() || toolchange_gcode_str.back() == '\n'); + assert(deretraction_str.empty() || deretraction_str.back() == '\n'); + + // Insert the toolchange and deretraction gcode into the generated gcode. + boost::replace_first(tcr_rotated_gcode, "[toolchange_gcode_from_wipe_tower_generator]", toolchange_gcode_str); + boost::replace_first(tcr_rotated_gcode, "[deretraction_from_wipe_tower_generator]", deretraction_str); + std::string tcr_gcode; + unescape_string_cstyle(tcr_rotated_gcode, tcr_gcode); + gcode += tcr_gcode; + + // A phony move to the end position at the wipe tower. + gcodegen.writer().travel_to_xy(end_pos.cast()); + gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, end_pos)); + if (!is_approx(z, current_z)) { + gcode += gcodegen.writer().retract(); + gcode += gcodegen.writer().travel_to_z(current_z, "Travel back up to the topmost object layer."); + gcode += gcodegen.writer().unretract(); + } + + else { + // Prepare a future wipe. + // Convert to a smooth path. + Geometry::ArcWelder::Path path; + path.reserve(tcr.wipe_path.size()); + std::transform(tcr.wipe_path.begin(), tcr.wipe_path.end(), std::back_inserter(path), + [&gcodegen, &transform_wt_pt](const Vec2f &wipe_pt) { + return Geometry::ArcWelder::Segment{ wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt)) }; + }); + // Pass to the wipe cache. + gcodegen.m_wipe.set_path(std::move(path)); + } + + // Let the planner know we are traveling between objects. + gcodegen.m_avoid_crossing_perimeters.use_external_mp_once(); + return gcode; +} + +// This function postprocesses gcode_original, rotates and moves all G1 extrusions and returns resulting gcode +// Starting position has to be supplied explicitely (otherwise it would fail in case first G1 command only contained one coordinate) +std::string WipeTowerIntegration::post_process_wipe_tower_moves(const WipeTower::ToolChangeResult& tcr, const Vec2f& translation, float angle) const +{ + Vec2f extruder_offset = m_extruder_offsets[tcr.initial_tool].cast(); + + std::istringstream gcode_str(tcr.gcode); + std::string gcode_out; + std::string line; + Vec2f pos = tcr.start_pos; + Vec2f transformed_pos = Eigen::Rotation2Df(angle) * pos + translation; + Vec2f old_pos(-1000.1f, -1000.1f); + + while (gcode_str) { + std::getline(gcode_str, line); // we read the gcode line by line + + // All G1 commands should be translated and rotated. X and Y coords are + // only pushed to the output when they differ from last time. + // WT generator can override this by appending the never_skip_tag + if (boost::starts_with(line, "G1 ")) { + bool never_skip = false; + auto it = line.find(WipeTower::never_skip_tag()); + if (it != std::string::npos) { + // remove the tag and remember we saw it + never_skip = true; + line.erase(it, it + WipeTower::never_skip_tag().size()); + } + std::ostringstream line_out; + std::istringstream line_str(line); + line_str >> std::noskipws; // don't skip whitespace + char ch = 0; + line_str >> ch >> ch; // read the "G1" + while (line_str >> ch) { + if (ch == 'X' || ch == 'Y') + line_str >> (ch == 'X' ? pos.x() : pos.y()); + else + line_out << ch; + } + + line = line_out.str(); + boost::trim(line); // Remove leading and trailing spaces. + + transformed_pos = Eigen::Rotation2Df(angle) * pos + translation; + + if (transformed_pos != old_pos || never_skip || ! line.empty()) { + std::ostringstream oss; + oss << std::fixed << std::setprecision(3) << "G1"; + if (transformed_pos.x() != old_pos.x() || never_skip) + oss << " X" << transformed_pos.x() - extruder_offset.x(); + if (transformed_pos.y() != old_pos.y() || never_skip) + oss << " Y" << transformed_pos.y() - extruder_offset.y(); + if (! line.empty()) + oss << " "; + line = oss.str() + line; + old_pos = transformed_pos; + } + } + + gcode_out += line + "\n"; + + // If this was a toolchange command, we should change current extruder offset + if (line == "[toolchange_gcode_from_wipe_tower_generator]") { + extruder_offset = m_extruder_offsets[tcr.new_tool].cast(); + + // If the extruder offset changed, add an extra move so everything is continuous + if (extruder_offset != m_extruder_offsets[tcr.initial_tool].cast()) { + std::ostringstream oss; + oss << std::fixed << std::setprecision(3) + << "G1 X" << transformed_pos.x() - extruder_offset.x() + << " Y" << transformed_pos.y() - extruder_offset.y() + << "\n"; + gcode_out += oss.str(); + } + } + } + return gcode_out; +} + + +std::string WipeTowerIntegration::prime(GCodeGenerator &gcodegen) +{ + std::string gcode; + for (const WipeTower::ToolChangeResult& tcr : m_priming) { + if (! tcr.extrusions.empty()) + gcode += append_tcr(gcodegen, tcr, tcr.new_tool); + } + return gcode; +} + +std::string WipeTowerIntegration::tool_change(GCodeGenerator &gcodegen, int extruder_id, bool finish_layer) +{ + std::string gcode; + assert(m_layer_idx >= 0); + if (gcodegen.writer().need_toolchange(extruder_id) || finish_layer) { + if (m_layer_idx < (int)m_tool_changes.size()) { + if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) + throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); + + // Calculate where the wipe tower layer will be printed. -1 means that print z will not change, + // resulting in a wipe tower with sparse layers. + double wipe_tower_z = -1; + bool ignore_sparse = false; + if (gcodegen.config().wipe_tower_no_sparse_layers.value) { + wipe_tower_z = m_last_wipe_tower_print_z; + ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool && m_layer_idx != 0); + if (m_tool_change_idx == 0 && !ignore_sparse) + wipe_tower_z = m_last_wipe_tower_print_z + m_tool_changes[m_layer_idx].front().layer_height; + } + + if (!ignore_sparse) { + gcode += append_tcr(gcodegen, m_tool_changes[m_layer_idx][m_tool_change_idx++], extruder_id, wipe_tower_z); + m_last_wipe_tower_print_z = wipe_tower_z; + } + } + } + return gcode; +} + +// Print is finished. Now it remains to unload the filament safely with ramming over the wipe tower. +std::string WipeTowerIntegration::finalize(GCodeGenerator &gcodegen) +{ + std::string gcode; + if (std::abs(gcodegen.writer().get_position().z() - m_final_purge.print_z) > EPSILON) + gcode += gcodegen.generate_travel_gcode( + {{gcodegen.last_pos().x(), gcodegen.last_pos().y(), scaled(m_final_purge.print_z)}}, + "move to safe place for purging" + ); + gcode += append_tcr(gcodegen, m_final_purge, -1); + return gcode; +} + +} // namespace Slic3r::GCode diff --git a/src/libslic3r/GCode/WipeTowerIntegration.hpp b/src/libslic3r/GCode/WipeTowerIntegration.hpp new file mode 100644 index 0000000..52b2762 --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerIntegration.hpp @@ -0,0 +1,65 @@ +#ifndef slic3r_GCode_WipeTowerIntegration_hpp_ +#define slic3r_GCode_WipeTowerIntegration_hpp_ + +#include "WipeTower.hpp" +#include "../PrintConfig.hpp" + +namespace Slic3r { + +class GCodeGenerator; + +namespace GCode { + +class WipeTowerIntegration { +public: + WipeTowerIntegration( + const PrintConfig &print_config, + const std::vector &priming, + const std::vector> &tool_changes, + const WipeTower::ToolChangeResult &final_purge) : + m_left(/*float(print_config.wipe_tower_x.value)*/ 0.f), + m_right(float(/*print_config.wipe_tower_x.value +*/ print_config.wipe_tower_width.value)), + m_wipe_tower_pos(float(print_config.wipe_tower_x.value), float(print_config.wipe_tower_y.value)), + m_wipe_tower_rotation(float(print_config.wipe_tower_rotation_angle)), + m_extruder_offsets(print_config.extruder_offset.values), + m_priming(priming), + m_tool_changes(tool_changes), + m_final_purge(final_purge), + m_layer_idx(-1), + m_tool_change_idx(0) + {} + + std::string prime(GCodeGenerator &gcodegen); + void next_layer() { ++ m_layer_idx; m_tool_change_idx = 0; } + std::string tool_change(GCodeGenerator &gcodegen, int extruder_id, bool finish_layer); + std::string finalize(GCodeGenerator &gcodegen); + std::vector used_filament_length() const; + +private: + WipeTowerIntegration& operator=(const WipeTowerIntegration&); + std::string append_tcr(GCodeGenerator &gcodegen, const WipeTower::ToolChangeResult &tcr, int new_extruder_id, double z = -1.) const; + + // Postprocesses gcode: rotates and moves G1 extrusions and returns result + std::string post_process_wipe_tower_moves(const WipeTower::ToolChangeResult& tcr, const Vec2f& translation, float angle) const; + + // Left / right edges of the wipe tower, for the planning of wipe moves. + const float m_left; + const float m_right; + const Vec2f m_wipe_tower_pos; + const float m_wipe_tower_rotation; + const std::vector m_extruder_offsets; + + // Reference to cached values at the Printer class. + const std::vector &m_priming; + const std::vector> &m_tool_changes; + const WipeTower::ToolChangeResult &m_final_purge; + // Current layer index. + int m_layer_idx; + int m_tool_change_idx; + double m_last_wipe_tower_print_z = 0.f; +}; + +} // namespace GCode +} // namespace Slic3r + +#endif // slic3r_GCode_WipeTowerIntegration_hpp_ diff --git a/src/libslic3r/GCodeReader.cpp b/src/libslic3r/GCodeReader.cpp index cb03667..5215f41 100644 --- a/src/libslic3r/GCodeReader.cpp +++ b/src/libslic3r/GCodeReader.cpp @@ -195,10 +195,11 @@ bool GCodeReader::parse_file(const std::string &file, callback_t callback) return this->parse_file_internal(file, callback, [](size_t){}); } -bool GCodeReader::parse_file(const std::string &file, callback_t callback, std::vector &lines_ends) +bool GCodeReader::parse_file(const std::string& file, callback_t callback, std::vector>& lines_ends) { lines_ends.clear(); - return this->parse_file_internal(file, callback, [&lines_ends](size_t file_pos){ lines_ends.emplace_back(file_pos); }); + lines_ends.push_back(std::vector()); + return this->parse_file_internal(file, callback, [&lines_ends](size_t file_pos) { lines_ends.front().emplace_back(file_pos); }); } bool GCodeReader::parse_file_raw(const std::string &filename, raw_line_callback_t line_callback) @@ -232,33 +233,41 @@ const char* GCodeReader::axis_pos(const char *raw_str, char axis) bool GCodeReader::GCodeLine::has(char axis) const { - const char *c = axis_pos(m_raw.c_str(), axis); - return c != nullptr; + return GCodeReader::axis_pos(this->raw().c_str(), axis); } -bool GCodeReader::GCodeLine::has_value(char axis, float &value) const +std::string_view GCodeReader::GCodeLine::axis_pos(char axis) const { - assert(is_decimal_separator_point()); - const char *c = axis_pos(m_raw.c_str(), axis); - if (c == nullptr) - return false; + const std::string &s = this->raw(); + const char *c = GCodeReader::axis_pos(this->raw().c_str(), axis); + return c ? std::string_view{ c, s.size() - (c - s.data()) } : std::string_view(); +} + +bool GCodeReader::GCodeLine::has_value(std::string_view axis_pos, float &value) +{ + if (const char *c = axis_pos.data(); c) { // Try to parse the numeric value. double v = 0.; - const char* end = m_raw.c_str() + m_raw.size(); + const char *end = axis_pos.data() + axis_pos.size(); auto [pend, ec] = fast_float::from_chars(++c, end, v); if (pend != c && is_end_of_word(*pend)) { // The axis value has been parsed correctly. value = float(v); return true; } + } return false; } -bool GCodeReader::GCodeLine::has_value(char axis, int &value) const +bool GCodeReader::GCodeLine::has_value(char axis, float &value) const { - const char *c = axis_pos(m_raw.c_str(), axis); - if (c == nullptr) - return false; + assert(is_decimal_separator_point()); + return this->has_value(this->axis_pos(axis), value); +} + +bool GCodeReader::GCodeLine::has_value(std::string_view axis_pos, int &value) +{ + if (const char *c = axis_pos.data(); c) { // Try to parse the numeric value. char *pend = nullptr; long v = strtol(++ c, &pend, 10); @@ -267,9 +276,14 @@ bool GCodeReader::GCodeLine::has_value(char axis, int &value) const value = int(v); return true; } + } return false; } +bool GCodeReader::GCodeLine::has_value(char axis, int &value) const +{ + return this->has_value(this->axis_pos(axis), value); +} void GCodeReader::GCodeLine::set(const GCodeReader &reader, const Axis axis, const float new_value, const int decimal_digits) { std::ostringstream ss; diff --git a/src/libslic3r/GCodeReader.hpp b/src/libslic3r/GCodeReader.hpp index 58f55fd..feb8723 100644 --- a/src/libslic3r/GCodeReader.hpp +++ b/src/libslic3r/GCodeReader.hpp @@ -26,11 +26,16 @@ public: const std::string_view comment() const { size_t pos = m_raw.find(';'); return (pos == std::string::npos) ? std::string_view() : std::string_view(m_raw).substr(pos + 1); } + // Return position in this->raw() string starting with the "axis" character. + std::string_view axis_pos(char axis) const; bool has(Axis axis) const { return (m_mask & (1 << int(axis))) != 0; } float value(Axis axis) const { return m_axis[axis]; } bool has(char axis) const; bool has_value(char axis, float &value) const; bool has_value(char axis, int &value) const; + // Parse value of an axis from raw string starting at axis_pos. + static bool has_value(std::string_view axis_pos, float &value); + static bool has_value(std::string_view axis_pos, int &value); float new_X(const GCodeReader &reader) const { return this->has(X) ? this->x() : reader.x(); } float new_Y(const GCodeReader &reader) const { return this->has(Y) ? this->y() : reader.y(); } float new_Z(const GCodeReader &reader) const { return this->has(Z) ? this->z() : reader.z(); } @@ -131,7 +136,7 @@ public: bool parse_file(const std::string &file, callback_t callback); // Collect positions of line ends in the binary G-code to be used by the G-code viewer when memory mapping and displaying section of G-code // as an overlay in the 3D scene. - bool parse_file(const std::string &file, callback_t callback, std::vector &lines_ends); + bool parse_file(const std::string& file, callback_t callback, std::vector>& lines_ends); // Just read the G-code file line by line, calls callback (const char *begin, const char *end). Returns false if reading the file failed. bool parse_file_raw(const std::string &file, raw_line_callback_t callback); diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 9d04bb7..8e29b0a 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -301,6 +301,13 @@ template T angle_to_0_2PI(T angle) return angle; } +template void to_range_pi_pi(T &angle){ + if (angle > T(PI) || angle <= -T(PI)) { + int count = static_cast(std::round(angle / (2 * PI))); + angle -= static_cast(count * 2 * PI); + assert(angle <= T(PI) && angle > -T(PI)); + } +} void simplify_polygons(const Polygons &polygons, double tolerance, Polygons* retval); diff --git a/src/libslic3r/Geometry/ArcWelder.cpp b/src/libslic3r/Geometry/ArcWelder.cpp new file mode 100644 index 0000000..4b02a31 --- /dev/null +++ b/src/libslic3r/Geometry/ArcWelder.cpp @@ -0,0 +1,933 @@ +// The following code for merging circles into arches originates from https://github.com/FormerLurker/ArcWelderLib + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Arc Welder: Anti-Stutter Library +// +// Compresses many G0/G1 commands into G2/G3(arc) commands where possible, ensuring the tool paths stay within the specified resolution. +// This reduces file size and the number of gcodes per second. +// +// Uses the 'Gcode Processor Library' for gcode parsing, position processing, logging, and other various functionality. +// +// Copyright(C) 2021 - Brad Hochgesang +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// This program is free software : you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the +// GNU Affero General Public License for more details. +// +// +// You can contact the author at the following email address: +// FormerLurker@pm.me +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "ArcWelder.hpp" +#include "Circle.hpp" + +#include "../MultiPoint.hpp" +#include "../Polygon.hpp" + +#include +#include +#include +#include + +namespace Slic3r { namespace Geometry { namespace ArcWelder { + +Points arc_discretize(const Point &p1, const Point &p2, const double radius, const bool ccw, const double deviation) +{ + Vec2d center = arc_center(p1.cast(), p2.cast(), radius, ccw); + double angle = arc_angle(p1.cast(), p2.cast(), radius); + assert(angle > 0); + + double r = std::abs(radius); + size_t num_steps = arc_discretization_steps(r, angle, deviation); + double angle_step = angle / num_steps; + + Points out; + out.reserve(num_steps + 1); + out.emplace_back(p1); + if (! ccw) + angle_step *= -1.; + for (size_t i = 1; i < num_steps; ++ i) + out.emplace_back(p1.rotated(angle_step * i, center.cast())); + out.emplace_back(p2); + return out; +} + +struct Circle +{ + Point center; + double radius; +}; + +// Interpolate three points with a circle. +// Returns false if the three points are collinear or if the radius is bigger than maximum allowed radius. +static std::optional try_create_circle(const Point &p1, const Point &p2, const Point &p3, const double max_radius) +{ + if (auto center = Slic3r::Geometry::try_circle_center(p1.cast(), p2.cast(), p3.cast(), SCALED_EPSILON); center) { + Point c = center->cast(); + if (double r = sqrt(double((c - p1).cast().squaredNorm())); r <= max_radius) + return std::make_optional({ c, float(r) }); + } + return {}; +} + +// Returns a closest point on the segment. +// Returns false if the closest point is not inside the segment, but at its boundary. +static bool foot_pt_on_segment(const Point &p1, const Point &p2, const Point &pt, Point &out) +{ + Vec2i64 v21 = (p2 - p1).cast(); + int64_t l2 = v21.squaredNorm(); + if (l2 > int64_t(SCALED_EPSILON)) { + if (int64_t t = (pt - p1).cast().dot(v21); + t >= int64_t(SCALED_EPSILON) && t < l2 - int64_t(SCALED_EPSILON)) { + out = p1 + ((double(t) / double(l2)) * v21.cast()).cast(); + return true; + } + } + // The segment is short or the closest point is an end point. + return false; +} + +static inline bool circle_approximation_sufficient(const Circle &circle, const Points::const_iterator begin, const Points::const_iterator end, const double tolerance) +{ + // The circle was calculated from the 1st and last point of the point sequence, thus the fitting of those points does not need to be evaluated. + assert(std::abs((*begin - circle.center).cast().norm() - circle.radius) < SCALED_EPSILON); + assert(std::abs((*std::prev(end) - circle.center).cast().norm() - circle.radius) < SCALED_EPSILON); + assert(end - begin >= 3); + + // Test the 1st point. + if (double distance_from_center = (*begin - circle.center).cast().norm(); + std::abs(distance_from_center - circle.radius) > tolerance) + return false; + + for (auto it = std::next(begin); it != end; ++ it) { + if (double distance_from_center = (*it - circle.center).cast().norm(); + std::abs(distance_from_center - circle.radius) > tolerance) + return false; + Point closest_point; + if (foot_pt_on_segment(*std::prev(it), *it, circle.center, closest_point)) { + if (double distance_from_center = (closest_point - circle.center).cast().norm(); + std::abs(distance_from_center - circle.radius) > tolerance) + return false; + } + } + return true; +} + +static inline bool get_deviation_sum_squared(const Circle &circle, const Points::const_iterator begin, const Points::const_iterator end, const double tolerance, double &total_deviation) +{ + // The circle was calculated from the 1st and last point of the point sequence, thus the fitting of those points does not need to be evaluated. + assert(std::abs((*begin - circle.center).cast().norm() - circle.radius) < SCALED_EPSILON); + assert(std::abs((*std::prev(end) - circle.center).cast().norm() - circle.radius) < SCALED_EPSILON); + assert(end - begin >= 3); + + total_deviation = 0; + + const double tolerance2 = sqr(tolerance); + for (auto it = std::next(begin); std::next(it) != end; ++ it) + if (double deviation2 = sqr((*it - circle.center).cast().norm() - circle.radius); deviation2 > tolerance2) + return false; + else + total_deviation += deviation2; + + for (auto it = begin; std::next(it) != end; ++ it) { + Point closest_point; + if (foot_pt_on_segment(*it, *std::next(it), circle.center, closest_point)) { + if (double deviation2 = sqr((closest_point - circle.center).cast().norm() - circle.radius); deviation2 > tolerance2) + return false; + else + total_deviation += deviation2; + } + } + + return true; +} + +double arc_fit_variance(const Point &start_pos, const Point &end_pos, const float radius, bool is_ccw, + const Points::const_iterator begin, const Points::const_iterator end) +{ + const Vec2d center = arc_center(start_pos.cast(), end_pos.cast(), double(radius), is_ccw); + const double r = std::abs(radius); + + // The circle was calculated from the 1st and last point of the point sequence, thus the fitting of those points does not need to be evaluated. + assert(std::abs((begin->cast() - center).norm() - r) < SCALED_EPSILON); + assert(std::abs((std::prev(end)->cast() - center).norm() - r) < SCALED_EPSILON); + assert(end - begin >= 3); + + double total_deviation = 0; + size_t cnt = 0; + for (auto it = begin; std::next(it) != end; ++ it) { + if (it != begin) { + total_deviation += sqr((it->cast() - center).norm() - r); + ++ cnt; + } + Point closest_point; + if (foot_pt_on_segment(*it, *std::next(it), center.cast(), closest_point)) { + total_deviation += sqr((closest_point.cast() - center).cast().norm() - r); + ++ cnt; + } + } + + return total_deviation / double(cnt); +} + +double arc_fit_max_deviation(const Point &start_pos, const Point &end_pos, const float radius, bool is_ccw, + const Points::const_iterator begin, const Points::const_iterator end) +{ + const Vec2d center = arc_center(start_pos.cast(), end_pos.cast(), double(radius), is_ccw); + const double r = std::abs(radius); + + // The circle was calculated from the 1st and last point of the point sequence, thus the fitting of those points does not need to be evaluated. + assert(std::abs((begin->cast() - center).norm() - r) < SCALED_EPSILON); + assert(std::abs((std::prev(end)->cast() - center).norm() - r) < SCALED_EPSILON); + assert(end - begin >= 3); + + double max_deviation = 0; + double max_signed_deviation = 0; + for (auto it = begin; std::next(it) != end; ++ it) { + if (it != begin) { + double signed_deviation = (it->cast() - center).norm() - r; + double deviation = std::abs(signed_deviation); + if (deviation > max_deviation) { + max_deviation = deviation; + max_signed_deviation = signed_deviation; + } + } + Point closest_point; + if (foot_pt_on_segment(*it, *std::next(it), center.cast(), closest_point)) { + double signed_deviation = (closest_point.cast() - center).cast().norm() - r; + double deviation = std::abs(signed_deviation); + if (deviation > max_deviation) { + max_deviation = deviation; + max_signed_deviation = signed_deviation; + } + } + } + return max_signed_deviation; +} + +static inline int sign(const int64_t i) +{ + return i > 0 ? 1 : i < 0 ? -1 : 0; +} + +static std::optional try_create_circle(const Points::const_iterator begin, const Points::const_iterator end, const double max_radius, const double tolerance) +{ + std::optional out; + size_t size = end - begin; + if (size == 3) { + // Fit the circle throuh the three input points. + out = try_create_circle(*begin, *std::next(begin), *std::prev(end), max_radius); + if (out) { + // Fit the center point and the two center points of the two edges with non-linear least squares. + std::array fpts; + Vec2d center_point = out->center.cast(); + Vec2d first_point = begin->cast(); + Vec2d mid_point = std::next(begin)->cast(); + Vec2d last_point = std::prev(end)->cast(); + fpts[0] = 0.5 * (first_point + mid_point); + fpts[1] = mid_point; + fpts[2] = 0.5 * (mid_point + last_point); + const double radius = (first_point - center_point).norm(); + if (std::abs((fpts[0] - center_point).norm() - radius) < 2. * tolerance && + std::abs((fpts[2] - center_point).norm() - radius) < 2. * tolerance) { + if (std::optional opt_center = ArcWelder::arc_fit_center_gauss_newton_ls(first_point, last_point, + center_point, fpts.begin(), fpts.end(), 3); + opt_center) { + out->center = opt_center->cast(); + out->radius = (out->radius > 0 ? 1.f : -1.f) * (*opt_center - first_point).norm(); + } + if (! circle_approximation_sufficient(*out, begin, end, tolerance)) + out.reset(); + } else + out.reset(); + } + } else { + std::optional circle; + { + // Try to fit a circle to first, middle and last point. + auto mid = begin + (end - begin) / 2; + circle = try_create_circle(*begin, *mid, *std::prev(end), max_radius); + if (// Use twice the tolerance for fitting the initial circle. + // Early exit if such approximation is grossly inaccurate, thus the tolerance could not be achieved. + circle && ! circle_approximation_sufficient(*circle, begin, end, tolerance * 2)) + circle.reset(); + } + if (! circle) { + // Find an intersection point of the polyline to be fitted with the bisector of the arc chord. + // At such a point the distance of a polyline to an arc wrt. the circle center (or circle radius) will have a largest gradient + // of all points on the polyline to be fitted. + Vec2i64 first_point = begin->cast(); + Vec2i64 last_point = std::prev(end)->cast(); + Vec2i64 v = last_point - first_point; + Vec2d vd = v.cast(); + double ld = v.squaredNorm(); + if (ld > sqr(scaled(0.0015))) { + Vec2i64 c = (first_point.cast() + last_point.cast()) / 2; + Vec2i64 prev_point = first_point; + int prev_side = sign(v.dot(prev_point - c)); + assert(prev_side != 0); + Point point_on_bisector; + #ifndef NDEBUG + point_on_bisector = { std::numeric_limits::max(), std::numeric_limits::max() }; + #endif // NDEBUG + for (auto it = std::next(begin); it != end; ++ it) { + Vec2i64 this_point = it->cast(); + int64_t d = v.dot(this_point - c); + int this_side = sign(d); + int sideness = this_side * prev_side; + if (sideness < 0) { + // Calculate the intersection point. + Vec2d p = c.cast() + vd * double(d) / ld; + point_on_bisector = p.cast(); + break; + } + if (sideness == 0) { + // this_point is on the bisector. + assert(prev_side != 0); + assert(this_side == 0); + point_on_bisector = this_point.cast(); + break; + } + prev_point = this_point; + prev_side = this_side; + } + // point_on_bisector must be set + assert(point_on_bisector.x() != std::numeric_limits::max() && point_on_bisector.y() != std::numeric_limits::max()); + circle = try_create_circle(*begin, point_on_bisector, *std::prev(end), max_radius); + if (// Use twice the tolerance for fitting the initial circle. + // Early exit if such approximation is grossly inaccurate, thus the tolerance could not be achieved. + circle && ! circle_approximation_sufficient(*circle, begin, end, tolerance * 2)) + circle.reset(); + } + } + if (circle) { + // Fit the arc between the end points by least squares. + // Optimize over all points along the path and the centers of the segments. + boost::container::small_vector fpts; + Vec2d first_point = begin->cast(); + Vec2d last_point = std::prev(end)->cast(); + Vec2d prev_point = first_point; + for (auto it = std::next(begin); it != std::prev(end); ++ it) { + Vec2d this_point = it->cast(); + fpts.emplace_back(0.5 * (prev_point + this_point)); + fpts.emplace_back(this_point); + prev_point = this_point; + } + fpts.emplace_back(0.5 * (prev_point + last_point)); + std::optional opt_center = ArcWelder::arc_fit_center_gauss_newton_ls(first_point, last_point, + circle->center.cast(), fpts.begin(), fpts.end(), 5); + if (opt_center) { + // Fitted radius must not be excessively large. If so, it is better to fit with a line segment. + if (const double r2 = (*opt_center - first_point).squaredNorm(); r2 < max_radius * max_radius) { + circle->center = opt_center->cast(); + circle->radius = (circle->radius > 0 ? 1.f : -1.f) * sqrt(r2); + if (circle_approximation_sufficient(*circle, begin, end, tolerance)) { + out = circle; + } else { + //FIXME One may consider adjusting the arc to fit the worst offender as a last effort, + // however Vojtech is not sure whether it is worth it. + } + } + } + } +/* + // From the original arc welder. + // Such a loop makes the time complexity of the arc fitting an ugly O(n^3). + else { + // Find the circle with the least deviation, if one exists. + double least_deviation = std::numeric_limits::max(); + double current_deviation; + for (auto it = std::next(begin); std::next(it) != end; ++ it) + if (std::optional circle = try_create_circle(*begin, *it, *std::prev(end), max_radius); + circle && get_deviation_sum_squared(*circle, begin, end, tolerance, current_deviation)) { + if (current_deviation < least_deviation) { + out = circle; + least_deviation = current_deviation; + } + } + } +*/ + } + return out; +} + +// ported from ArcWelderLib/ArcWelder/segmented/shape.h class "arc" +class Arc { +public: + Point start_point; + Point end_point; + Point center; + double radius; + Orientation direction { Orientation::Unknown }; +}; + +// Return orientation of a polyline with regard to the center. +// Successive points are expected to take less than a PI angle step. +Orientation arc_orientation( + const Point ¢er, + const Points::const_iterator begin, + const Points::const_iterator end) +{ + assert(end - begin >= 3); + // Assumption: Two successive points of a single segment span an angle smaller than PI. + Vec2i64 vstart = (*begin - center).cast(); + Vec2i64 vprev = vstart; + int arc_dir = 0; + for (auto it = std::next(begin); it != end; ++ it) { + Vec2i64 v = (*it - center).cast(); + int dir = sign(cross2(vprev, v)); + if (dir == 0) { + // Ignore radial segments. + } else if (arc_dir * dir < 0) { + // The path turns back and overextrudes. Such path is likely invalid, but the arc interpolation should + // rather maintain such an invalid path instead of covering it up. + // Don't replace such a path with an arc. + return {}; + } else { + // Success, either establishing the direction for the first time, or moving in the same direction as the last time. + arc_dir = dir; + vprev = v; + } + } + return arc_dir == 0 ? + // All points are radial wrt. the center, this is unexpected. + Orientation::Unknown : + // Arc is valid, either CCW or CW. + arc_dir > 0 ? Orientation::CCW : Orientation::CW; +} + +static inline std::optional try_create_arc_impl( + const Circle &circle, + const Points::const_iterator begin, + const Points::const_iterator end, + const double tolerance, + const double path_tolerance_percent) +{ + assert(end - begin >= 3); + // Assumption: Two successive points of a single segment span an angle smaller than PI. + Orientation orientation = arc_orientation(circle.center, begin, end); + if (orientation == Orientation::Unknown) + return {}; + + Vec2i64 vstart = (*begin - circle.center).cast(); + Vec2i64 vend = (*std::prev(end) - circle.center).cast(); + double angle = atan2(double(cross2(vstart, vend)), double(vstart.dot(vend))); + if (orientation == Orientation::CW) + angle *= -1.; + if (angle < 0) + angle += 2. * M_PI; + assert(angle >= 0. && angle < 2. * M_PI + EPSILON); + + // Check the length against the original length. + // This can trigger simply due to the differing path lengths + // but also could indicate that the vector calculation above + // got wrong direction + const double arc_length = circle.radius * angle; + const double approximate_length = length(begin, end); + assert(approximate_length > 0); + const double arc_length_difference_relative = (arc_length - approximate_length) / approximate_length; + + if (std::fabs(arc_length_difference_relative) >= path_tolerance_percent) { + return {}; + } else { + assert(circle_approximation_sufficient(circle, begin, end, tolerance + SCALED_EPSILON)); + return std::make_optional(Arc{ + *begin, + *std::prev(end), + circle.center, + angle > M_PI ? - circle.radius : circle.radius, + orientation + }); + } +} + +static inline std::optional try_create_arc( + const Points::const_iterator begin, + const Points::const_iterator end, + double max_radius = default_scaled_max_radius, + double tolerance = default_scaled_resolution, + double path_tolerance_percent = default_arc_length_percent_tolerance) +{ + std::optional circle = try_create_circle(begin, end, max_radius, tolerance); + if (! circle) + return {}; + return try_create_arc_impl(*circle, begin, end, tolerance, path_tolerance_percent); +} + +float arc_angle(const Vec2f &start_pos, const Vec2f &end_pos, Vec2f ¢er_pos, bool is_ccw) +{ + if ((end_pos - start_pos).squaredNorm() < sqr(1e-6)) { + // If start equals end, full circle is considered. + return float(2. * M_PI); + } else { + Vec2f v1 = start_pos - center_pos; + Vec2f v2 = end_pos - center_pos; + if (! is_ccw) + std::swap(v1, v2); + float radian = atan2(cross2(v1, v2), v1.dot(v2)); + return radian < 0 ? float(2. * M_PI) + radian : radian; + } +} + +float arc_length(const Vec2f &start_pos, const Vec2f &end_pos, Vec2f ¢er_pos, bool is_ccw) +{ + return (center_pos - start_pos).norm() * arc_angle(start_pos, end_pos, center_pos, is_ccw); +} + +// Reduces polyline in the (begin, end, begin, tolerance, [](const Segment &s) { return s.point; }); +} + +Path fit_path(const Points &src_in, double tolerance, double fit_circle_percent_tolerance) +{ + assert(tolerance >= 0); + assert(fit_circle_percent_tolerance >= 0); + double tolerance2 = Slic3r::sqr(tolerance); + + Path out; + out.reserve(src_in.size()); + if (tolerance <= 0 || src_in.size() <= 2) { + // No simplification, just convert. + std::transform(src_in.begin(), src_in.end(), std::back_inserter(out), [](const Point &p) -> Segment { return { p }; }); + } else if (double tolerance_fine = std::max(0.03 * tolerance, scaled(0.000060)); + fit_circle_percent_tolerance <= 0 || tolerance_fine > 0.5 * tolerance) { + // Convert and simplify to a polyline. + std::transform(src_in.begin(), src_in.end(), std::back_inserter(out), [](const Point &p) -> Segment { return { p }; }); + out.erase(douglas_peucker_in_place(out.begin(), out.end(), tolerance), out.end()); + } else { + // Simplify the polyline first using a fine threshold. + Points src = douglas_peucker(src_in, tolerance_fine); + // Perform simplification & fitting. + // Index of the start of a last polyline, which has not yet been decimated. + int begin_pl_idx = 0; + out.push_back({ src.front(), 0.f }); + for (auto it = std::next(src.begin()); it != src.end();) { + // Minimum 2 additional points required for circle fitting. + auto begin = std::prev(it); + auto end = std::next(it); + assert(end <= src.end()); + std::optional arc; + while (end != src.end()) { + auto next_end = std::next(end); + if (std::optional this_arc = try_create_arc( + begin, next_end, + ArcWelder::default_scaled_max_radius, + tolerance, fit_circle_percent_tolerance); + this_arc) { + // Could extend the arc by one point. + assert(this_arc->direction != Orientation::Unknown); + arc = this_arc; + end = next_end; + if (end == src.end()) + // No way to extend the arc. + goto fit_end; + // Now try to expand the arc by adding points one by one. That should be cheaper than a full arc fit test. + while (std::next(end) != src.end()) { + assert(end == next_end); + { + Vec2i64 v1 = arc->start_point.cast() - arc->center.cast(); + Vec2i64 v2 = arc->end_point.cast() - arc->center.cast(); + do { + if (std::abs((arc->center.cast() - next_end->cast()).norm() - arc->radius) >= tolerance || + inside_arc_wedge_vectors(v1, v2, + arc->radius > 0, arc->direction == Orientation::CCW, + next_end->cast() - arc->center.cast())) + // Cannot extend the current arc with this new point. + break; + } while (++ next_end != src.end()); + } + if (next_end == end) + // No additional point could be added to a current arc. + break; + // Try to fit a new arc to the extended set of points. + // last_tested_failed set to invalid value, no test failed yet. + auto last_tested_failed = src.begin(); + for (;;) { + this_arc = try_create_arc( + begin, next_end, + ArcWelder::default_scaled_max_radius, + tolerance, fit_circle_percent_tolerance); + if (this_arc) { + arc = this_arc; + end = next_end; + if (last_tested_failed == src.begin()) { + // First run of the loop, the arc was extended fully. + if (end == src.end()) + goto fit_end; + // Otherwise try to extend the arc with another sample. + break; + } + } else + last_tested_failed = next_end; + // Take half of the interval up to the failed point. + next_end = end + (last_tested_failed - end) / 2; + if (next_end == end) + // Backed to the last successfull sample. + goto fit_end; + // Otherwise try to extend the arc up to next_end in another iteration. + } + } + } else { + // The last arc was the best we could get. + break; + } + } + fit_end: +#if 1 + if (arc) { + // Check whether the arc end points are not too close with the risk of quantizing the arc ends to the same point on G-code export. + if ((arc->end_point - arc->start_point).cast().squaredNorm() < 2. * sqr(scaled(0.0011))) { + // Arc is too short. Skip it, decimate a polyline instead. + arc.reset(); + } else { + // Test whether the arc is so flat, that it could be replaced with a straight segment. + Line line(arc->start_point, arc->end_point); + bool arc_valid = false; + for (auto it2 = std::next(begin); it2 != std::prev(end); ++ it2) + if (line_alg::distance_to_squared(line, *it2) > tolerance2) { + // Polyline could not be fitted by a line segment, thus the arc is considered valid. + arc_valid = true; + break; + } + if (! arc_valid) + // Arc should be fitted by a line segment. Skip it, decimate a polyline instead. + arc.reset(); + } + } +#endif + if (arc) { + // printf("Arc radius: %lf, length: %lf\n", unscaled(arc->radius), arc_length(arc->start_point.cast(), arc->end_point.cast(), arc->radius)); + // If there is a trailing polyline, decimate it first before saving a new arc. + if (out.size() - begin_pl_idx > 2) { + // Decimating linear segmens only. + assert(std::all_of(out.begin() + begin_pl_idx + 1, out.end(), [](const Segment &seg) { return seg.linear(); })); + out.erase(douglas_peucker_in_place(out.begin() + begin_pl_idx, out.end(), tolerance), out.end()); + assert(out.back().linear()); + } +#ifndef NDEBUG + // Check for a very short linear segment, that connects two arches. Such segment should not be created. + if (out.size() - begin_pl_idx > 1) { + const Point& p1 = out[begin_pl_idx].point; + const Point& p2 = out.back().point; + assert((p2 - p1).cast().squaredNorm() > sqr(scaled(0.0011))); + } +#endif + // Save the index of an end of the new circle segment, which may become the first point of a possible future polyline. + begin_pl_idx = int(out.size()); + // This will be the next point to try to add. + it = end; + // Add the new arc. + assert(*begin == arc->start_point); + assert(*std::prev(it) == arc->end_point); + assert(out.back().point == arc->start_point); + out.push_back({ arc->end_point, float(arc->radius), arc->direction }); +#if 0 + // Verify that all the source points are at tolerance distance from the interpolated path. + { + const Segment &seg_start = *std::prev(std::prev(out.end())); + const Segment &seg_end = out.back(); + const Vec2d center = arc_center(seg_start.point.cast(), seg_end.point.cast(), double(seg_end.radius), seg_end.ccw()); + assert(seg_start.point == *begin); + assert(seg_end.point == *std::prev(end)); + assert(arc_orientation(center.cast(), begin, end) == arc->direction); + for (auto it = std::next(begin); it != end; ++ it) { + Point ptstart = *std::prev(it); + Point ptend = *it; + Point closest_point; + if (foot_pt_on_segment(ptstart, ptend, center.cast(), closest_point)) { + double distance_from_center = (closest_point.cast() - center).norm(); + assert(std::abs(distance_from_center - std::abs(seg_end.radius)) < tolerance + SCALED_EPSILON); + } + Vec2d v = (ptend - ptstart).cast(); + double len = v.norm(); + auto num_segments = std::min(10, ceil(2. * len / fit_circle_percent_tolerance)); + for (size_t i = 0; i < num_segments; ++ i) { + Point p = ptstart + (v * (double(i) / double(num_segments))).cast(); + assert(i == 0 || inside_arc_wedge(seg_start.point.cast(), seg_end.point.cast(), center, seg_end.radius > 0, seg_end.ccw(), p.cast())); + double d2 = sqr((p.cast() - center).norm() - std::abs(seg_end.radius)); + assert(d2 < sqr(tolerance + SCALED_EPSILON)); + } + } + } +#endif + } else { + // Arc is not valid, append a linear segment. + out.push_back({ *it ++ }); + } + } + if (out.size() - begin_pl_idx > 2) + // Do the final polyline decimation. + out.erase(douglas_peucker_in_place(out.begin() + begin_pl_idx, out.end(), tolerance), out.end()); + } + +#if 0 + // Verify that all the source points are at tolerance distance from the interpolated path. + for (auto it = std::next(src_in.begin()); it != src_in.end(); ++ it) { + Point start = *std::prev(it); + Point end = *it; + Vec2d v = (end - start).cast(); + double len = v.norm(); + auto num_segments = std::min(10, ceil(2. * len / fit_circle_percent_tolerance)); + for (size_t i = 0; i <= num_segments; ++ i) { + Point p = start + (v * (double(i) / double(num_segments))).cast(); + PathSegmentProjection proj = point_to_path_projection(out, p); + assert(proj.valid()); + assert(proj.distance2 < sqr(tolerance + SCALED_EPSILON)); + } + } +#endif + + return out; +} + +void reverse(Path &path) +{ + if (path.size() > 1) { + auto prev = path.begin(); + for (auto it = std::next(prev); it != path.end(); ++ it) { + prev->radius = it->radius; + prev->orientation = it->orientation == Orientation::CCW ? Orientation::CW : Orientation::CCW; + prev = it; + } + path.back().radius = 0; + std::reverse(path.begin(), path.end()); + } +} + +double clip_start(Path &path, const double len) +{ + reverse(path); + double remaining = clip_end(path, len); + reverse(path); + // Return remaining distance to go. + return remaining; +} + +double clip_end(Path &path, double distance) +{ + while (distance > 0) { + const Segment last = path.back(); + path.pop_back(); + if (path.empty()) + break; + if (last.linear()) { + // Linear segment + Vec2d v = (path.back().point - last.point).cast(); + double lsqr = v.squaredNorm(); + if (lsqr > sqr(distance)) { + path.push_back({ last.point + (v * (distance / sqrt(lsqr))).cast() }); + // Length to go is zero. + return 0; + } + distance -= sqrt(lsqr); + } else { + // Circular segment + double angle = arc_angle(path.back().point.cast(), last.point.cast(), last.radius); + double len = std::abs(last.radius) * angle; + if (len > distance) { + // Rotate the segment end point in reverse towards the start point. + if (last.ccw()) + angle *= -1.; + path.push_back({ + last.point.rotated(angle * (distance / len), + arc_center(path.back().point.cast(), last.point.cast(), double(last.radius), last.ccw()).cast()), + last.radius, last.orientation }); + // Length to go is zero. + return 0; + } + distance -= len; + } + } + + // Return remaining distance to go. + assert(distance >= 0); + return distance; +} + +PathSegmentProjection point_to_path_projection(const Path &path, const Point &point, double search_radius2) +{ + assert(path.size() != 1); + // initialized to "invalid" state. + PathSegmentProjection out; + out.distance2 = search_radius2; + if (path.size() < 2 || path.front().point == point) { + // First point is the closest point. + if (path.empty()) { + // No closest point available. + } else if (const Point p0 = path.front().point; p0 == point) { + out.segment_id = 0; + out.point = p0; + out.distance2 = 0; + } else if (double d2 = (p0 - point).cast().squaredNorm(); d2 < out.distance2) { + out.segment_id = 0; + out.point = p0; + out.distance2 = d2; + } + } else { + assert(path.size() >= 2); + // min_point_it will contain an end point of a segment with a closest projection found + // or path.cbegin() if no such closest projection closer than search_radius2 was found. + auto min_point_it = path.cbegin(); + Point prev = path.front().point; + for (auto it = std::next(path.cbegin()); it != path.cend(); ++ it) { + if (it->linear()) { + // Linear segment + Point proj; + // distance_to_squared() will possibly return the start or end point of a line segment. + if (double d2 = line_alg::distance_to_squared(Line(prev, it->point), point, &proj); d2 < out.distance2) { + out.point = proj; + out.distance2 = d2; + min_point_it = it; + } + } else { + // Circular arc + Vec2i64 center = arc_center(prev.cast(), it->point.cast(), double(it->radius), it->ccw()).cast(); + // Test whether point is inside the wedge. + Vec2i64 v1 = prev.cast() - center; + Vec2i64 v2 = it->point.cast() - center; + Vec2i64 vp = point.cast() - center; + if (inside_arc_wedge_vectors(v1, v2, it->radius > 0, it->ccw(), vp)) { + // Distance of the radii. + const auto r = double(std::abs(it->radius)); + const auto rtest = sqrt(double(vp.squaredNorm())); + if (double d2 = sqr(rtest - r); d2 < out.distance2) { + if (rtest > SCALED_EPSILON) + // Project vp to the arc. + out.point = center.cast() + (vp.cast() * (r / rtest)).cast(); + else + // Test point is very close to the center of the radius. Any point of the arc is the closest. + // Pick the start. + out.point = prev; + out.distance2 = d2; + out.center = center.cast(); + min_point_it = it; + } + } else { + // Distance to the start point. + if (double d2 = double((v1 - vp).squaredNorm()); d2 < out.distance2) { + out.point = prev; + out.distance2 = d2; + min_point_it = it; + } + } + } + prev = it->point; + } + if (! path.back().linear()) { + // Calculate distance to the end point. + if (double d2 = (path.back().point - point).cast().squaredNorm(); d2 < out.distance2) { + out.point = path.back().point; + out.distance2 = d2; + min_point_it = std::prev(path.end()); + } + } + // If a new closes point was found, it is closer than search_radius2. + assert((min_point_it == path.cbegin()) == (out.distance2 == search_radius2)); + // Output is not valid yet. + assert(! out.valid()); + if (min_point_it != path.cbegin()) { + // Make it valid by setting the segment. + out.segment_id = std::prev(min_point_it) - path.begin(); + assert(out.valid()); + } + } + + assert(! out.valid() || (out.segment_id >= 0 && out.segment_id < path.size())); + return out; +} + +std::pair split_at(const Path &path, const PathSegmentProjection &proj, const double min_segment_length) +{ + assert(proj.valid()); + assert(! proj.valid() || (proj.segment_id >= 0 && proj.segment_id < path.size())); + assert(path.size() > 1); + std::pair out; + if (! proj.valid() || proj.segment_id + 1 == path.size() || (proj.segment_id + 2 == path.size() && proj.point == path.back().point)) + out.first = path; + else if (proj.segment_id == 0 && proj.point == path.front().point) + out.second = path; + else { + // Path will likely be split to two pieces. + assert(proj.valid() && proj.segment_id >= 0 && proj.segment_id + 1 < path.size()); + const Segment &start = path[proj.segment_id]; + const Segment &end = path[proj.segment_id + 1]; + bool split_segment = true; + int split_segment_id = proj.segment_id; + if (int64_t d2 = (proj.point - start.point).cast().squaredNorm(); d2 < sqr(min_segment_length)) { + split_segment = false; + int64_t d22 = (proj.point - end.point).cast().squaredNorm(); + if (d22 < d2) + // Split at the end of the segment. + ++ split_segment_id; + } else if (int64_t d2 = (proj.point - end.point).cast().squaredNorm(); d2 < sqr(min_segment_length)) { + ++ split_segment_id; + split_segment = false; + } + if (split_segment) { + out.first.assign(path.begin(), path.begin() + split_segment_id + 2); + out.second.assign(path.begin() + split_segment_id, path.end()); + assert(out.first[out.first.size() - 2] == start); + assert(out.first.back() == end); + assert(out.second.front() == start); + assert(out.second[1] == end); + assert(out.first.size() + out.second.size() == path.size() + 2); + assert(out.first.back().radius == out.second[1].radius); + out.first.back().point = proj.point; + out.second.front().point = proj.point; + if (end.radius < 0) { + // A large arc (> PI) was split. + // At least one of the two arches that were created by splitting the original arch will become smaller. + // Make the radii of those arches that became < PI positive. + // In case of a projection onto an arc, proj.center should be filled in and valid. + auto vstart = (start.point - proj.center).cast(); + auto vend = (end.point - proj.center).cast(); + auto vproj = (proj.point - proj.center).cast(); + if ((cross2(vstart, vproj) > 0) == end.ccw()) + // Make the radius of a minor arc positive. + out.first.back().radius *= -1.f; + if ((cross2(vproj, vend) > 0) == end.ccw()) + // Make the radius of a minor arc positive. + out.second[1].radius *= -1.f; + assert(out.first.size() > 1); + assert(out.second.size() > 1); + out.second.front().radius = 0; + } + } else { + assert(split_segment_id >= 0 && split_segment_id < path.size()); + if (split_segment_id + 1 == int(path.size())) + out.first = path; + else if (split_segment_id == 0) + out.second = path; + else { + // Split at the start of proj.segment_id. + out.first.assign(path.begin(), path.begin() + split_segment_id + 1); + out.second.assign(path.begin() + split_segment_id, path.end()); + assert(out.first.size() + out.second.size() == path.size() + 1); + assert(out.first.back() == (split_segment_id == proj.segment_id ? start : end)); + assert(out.second.front() == (split_segment_id == proj.segment_id ? start : end)); + assert(out.first.size() > 1); + assert(out.second.size() > 1); + out.second.front().radius = 0; + } + } + } + + return out; +} + +std::pair split_at(const Path &path, const Point &point, const double min_segment_length) +{ + return split_at(path, point_to_path_projection(path, point), min_segment_length); +} + +} } } // namespace Slic3r::Geometry::ArcWelder diff --git a/src/libslic3r/Geometry/ArcWelder.hpp b/src/libslic3r/Geometry/ArcWelder.hpp new file mode 100644 index 0000000..dceec56 --- /dev/null +++ b/src/libslic3r/Geometry/ArcWelder.hpp @@ -0,0 +1,505 @@ +#ifndef slic3r_Geometry_ArcWelder_hpp_ +#define slic3r_Geometry_ArcWelder_hpp_ + +#include + +#include "../Point.hpp" + +namespace Slic3r { namespace Geometry { namespace ArcWelder { + +// Calculate center point (center of a circle) of an arc given two points and a radius. +// positive radius: take shorter arc +// negative radius: take longer arc +// radius must NOT be zero! +template +inline Eigen::Matrix arc_center( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const Float radius, + const bool is_ccw) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_center(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_center(): second parameter is not a 2D vector"); + static_assert(std::is_same::value, "arc_center(): Both vectors must be of the same type."); + static_assert(std::is_same::value, "arc_center(): Radius must be of the same type as the vectors."); + assert(radius != 0); + using Vector = Eigen::Matrix; + auto v = end_pos - start_pos; + Float q2 = v.squaredNorm(); + assert(q2 > 0); + Float t2 = sqr(radius) / q2 - Float(.25f); + // If the start_pos and end_pos are nearly antipodal, t2 may become slightly negative. + // In that case return a centroid of start_point & end_point. + Float t = t2 > 0 ? sqrt(t2) : Float(0); + auto mid = Float(0.5) * (start_pos + end_pos); + Vector vp{ -v.y() * t, v.x() * t }; + return (radius > Float(0)) == is_ccw ? (mid + vp).eval() : (mid - vp).eval(); +} + +// Calculate middle sample point (point on an arc) of an arc given two points and a radius. +// positive radius: take shorter arc +// negative radius: take longer arc +// radius must NOT be zero! +// Taking a sample at the middle of a convex arc (less than PI) is likely much more +// useful than taking a sample at the middle of a concave arc (more than PI). +template +inline Eigen::Matrix arc_middle_point( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const Float radius, + const bool is_ccw) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_center(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_center(): second parameter is not a 2D vector"); + static_assert(std::is_same::value, "arc_center(): Both vectors must be of the same type."); + static_assert(std::is_same::value, "arc_center(): Radius must be of the same type as the vectors."); + assert(radius != 0); + using Vector = Eigen::Matrix; + auto v = end_pos - start_pos; + Float q2 = v.squaredNorm(); + assert(q2 > 0); + Float t2 = sqr(radius) / q2 - Float(.25f); + // If the start_pos and end_pos are nearly antipodal, t2 may become slightly negative. + // In that case return a centroid of start_point & end_point. + Float t = (t2 > 0 ? sqrt(t2) : Float(0)) - radius / sqrt(q2); + auto mid = Float(0.5) * (start_pos + end_pos); + Vector vp{ -v.y() * t, v.x() * t }; + return (radius > Float(0)) == is_ccw ? (mid + vp).eval() : (mid - vp).eval(); +} + +// Calculate angle of an arc given two points and a radius. +// Returned angle is in the range <0, 2 PI) +// positive radius: take shorter arc +// negative radius: take longer arc +// radius must NOT be zero! +template +inline typename Derived::Scalar arc_angle( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const typename Derived::Scalar radius) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_angle(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_angle(): second parameter is not a 2D vector"); + static_assert(std::is_same::value, "arc_angle(): Both vectors must be of the same type."); + assert(radius != 0); + using Float = typename Derived::Scalar; + Float a = Float(0.5) * (end_pos - start_pos).norm() / radius; + return radius > Float(0) ? + // acute angle: + (a > Float( 1.) ? Float(M_PI) : Float(2.) * std::asin(a)) : + // obtuse angle: + (a < Float(-1.) ? Float(M_PI) : Float(2. * M_PI) + Float(2.) * std::asin(a)); +} + +// Calculate positive length of an arc given two points and a radius. +// positive radius: take shorter arc +// negative radius: take longer arc +// radius must NOT be zero! +template +inline typename Derived::Scalar arc_length( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const typename Derived::Scalar radius) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_length(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_length(): second parameter is not a 2D vector"); + static_assert(std::is_same::value, "arc_length(): Both vectors must be of the same type."); + assert(radius != 0); + return arc_angle(start_pos, end_pos, radius) * std::abs(radius); +} + +// Calculate positive length of an arc given two points, center and orientation. +template +inline typename Derived::Scalar arc_length( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const Eigen::MatrixBase ¢er_pos, + const bool ccw) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_length(): first parameter is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_length(): second parameter is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "arc_length(): third parameter is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value, "arc_length(): All third points must be of the same type."); + using Float = typename Derived::Scalar; + auto vstart = start_pos - center_pos; + auto vend = end_pos - center_pos; + Float radius = vstart.norm(); + Float angle = atan2(double(cross2(vstart, vend)), double(vstart.dot(vend))); + if (! ccw) + angle *= Float(-1.); + if (angle < 0) + angle += Float(2. * M_PI); + assert(angle >= Float(0.) && angle < Float(2. * M_PI + EPSILON)); + return angle * radius; +} + +// Be careful! This version has a strong bias towards small circles with small radii +// for small angle (nearly straight) arches! +// One should rather use arc_fit_center_gauss_newton_ls(), which solves a non-linear least squares problem. +// +// Calculate center point (center of a circle) of an arc given two fixed points to interpolate +// and an additional list of points to fit by least squares. +// The circle fitting problem is non-linear, it was linearized by taking difference of squares of radii as a residual. +// Therefore the center point is required as a point to linearize at. +// Start & end point must be different and the interpolated points must not be collinear with input points. +template +inline typename Eigen::Matrix arc_fit_center_algebraic_ls( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const Eigen::MatrixBase ¢er_pos, + const Iterator it_begin, + const Iterator it_end) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_fit_center_algebraic_ls(): start_pos is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_fit_center_algebraic_ls(): end_pos is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "arc_fit_center_algebraic_ls(): third parameter is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value, "arc_fit_center_algebraic_ls(): All third points must be of the same type."); + using Float = typename Derived::Scalar; + using Vector = Eigen::Matrix; + // Prepare a vector space to transform the fitting into: + // center_pos, dir_x, dir_y + Vector v = end_pos - start_pos; + Vector c = Float(.5) * (start_pos + end_pos); + Float lv = v.norm(); + assert(lv > 0); + Vector dir_y = v / lv; + Vector dir_x = perp(dir_y); + // Center of the new system: + // Center X at the projection of center_pos + Float offset_x = dir_x.dot(center_pos); + // Center is supposed to lie on bisector of the arc end points. + // Center Y at the mid point of v. + Float offset_y = dir_y.dot(c); + assert(std::abs(dir_y.dot(center_pos) - offset_y) < SCALED_EPSILON); + assert((dir_x * offset_x + dir_y * offset_y - center_pos).norm() < SCALED_EPSILON); + // Solve the least squares fitting in a transformed space. + Float a = Float(0.5) * lv; + Float b = c.dot(dir_x) - offset_x; + Float ab2 = sqr(a) + sqr(b); + Float num = Float(0); + Float denom = Float(0); + const Float w = it_end - it_begin; + for (Iterator it = it_begin; it != it_end; ++ it) { + Vector p = *it; + Float x_i = dir_x.dot(p) - offset_x; + Float y_i = dir_y.dot(p) - offset_y; + Float x_i2 = sqr(x_i); + Float y_i2 = sqr(y_i); + num += (x_i - b) * (x_i2 + y_i2 - ab2); + denom += b * (b - Float(2) * x_i) + sqr(x_i) + Float(0.25) * w; + } + assert(denom != 0); + Float c_x = Float(0.5) * num / denom; + // Transform the center back. + Vector out = dir_x * (c_x + offset_x) + dir_y * offset_y; + return out; +} + +// Calculate center point (center of a circle) of an arc given two fixed points to interpolate +// and an additional list of points to fit by non-linear least squares. +// The non-linear least squares problem is solved by a Gauss-Newton iterative method. +// Start & end point must be different and the interpolated points must not be collinear with input points. +// Center position is used to calculate the initial solution of the Gauss-Newton method. +// +// In case the input points are collinear or close to collinear (such as a small angle arc), +// the solution may not converge and an error is indicated. +template +inline std::optional> arc_fit_center_gauss_newton_ls( + const Eigen::MatrixBase &start_pos, + const Eigen::MatrixBase &end_pos, + const Eigen::MatrixBase ¢er_pos, + const Iterator it_begin, + const Iterator it_end, + const size_t num_iterations) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "arc_fit_center_gauss_newton_ls(): start_pos is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "arc_fit_center_gauss_newton_ls(): end_pos is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "arc_fit_center_gauss_newton_ls(): third parameter is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value, "arc_fit_center_gauss_newton_ls(): All third points must be of the same type."); + using Float = typename Derived::Scalar; + using Vector = Eigen::Matrix; + // Prepare a vector space to transform the fitting into: + // center_pos, dir_x, dir_y + Vector v = end_pos - start_pos; + Vector c = Float(.5) * (start_pos + end_pos); + Float lv = v.norm(); + assert(lv > 0); + Vector dir_y = v / lv; + Vector dir_x = perp(dir_y); + // Center is supposed to lie on bisector of the arc end points. + // Center Y at the mid point of v. + Float offset_y = dir_y.dot(c); + // Initial value of the parameter to be optimized iteratively. + Float c_x = dir_x.dot(center_pos); + // Solve the least squares fitting in a transformed space. + Float a = Float(0.5) * lv; + Float a2 = sqr(a); + Float b = c.dot(dir_x); + for (size_t iter = 0; iter < num_iterations; ++ iter) { + Float num = Float(0); + Float denom = Float(0); + Float u = b - c_x; + // Current estimate of the circle radius. + Float r = sqrt(a2 + sqr(u)); + assert(r > 0); + for (Iterator it = it_begin; it != it_end; ++ it) { + Vector p = *it; + Float x_i = dir_x.dot(p); + Float y_i = dir_y.dot(p) - offset_y; + Float v = x_i - c_x; + Float y_i2 = sqr(y_i); + // Distance of i'th sample from the current circle center. + Float r_i = sqrt(sqr(v) + y_i2); + if (r_i >= EPSILON) { + // Square of residual is differentiable at the current c_x and current sample. + // Jacobian: diff(residual, c_x) + Float j_i = u / r - v / r_i; + num += j_i * (r_i - r); + denom += sqr(j_i); + } else { + // Sample point is on current center of the circle, + // therefore the gradient is not defined. + } + } + if (denom == 0) + // Fitting diverged, the input points are likely nearly collinear with the arch end points. + return std::optional(); + c_x -= num / denom; + } + // Transform the center back. + return std::optional(dir_x * c_x + dir_y * offset_y); +} + +// Test whether a point is inside a wedge of an arc. +template +inline bool inside_arc_wedge_vectors( + const Eigen::MatrixBase &start_vec, + const Eigen::MatrixBase &end_vec, + const bool shorter_arc, + const bool ccw, + const Eigen::MatrixBase &query_vec) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "inside_arc_wedge_vectors(): start_vec is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "inside_arc_wedge_vectors(): end_vec is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "inside_arc_wedge_vectors(): query_vec is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value, "inside_arc_wedge_vectors(): All vectors must be of the same type."); + return shorter_arc ? + // Smaller (convex) wedge. + (ccw ? + cross2(start_vec, query_vec) > 0 && cross2(query_vec, end_vec) > 0 : + cross2(start_vec, query_vec) < 0 && cross2(query_vec, end_vec) < 0) : + // Larger (concave) wedge. + (ccw ? + cross2(end_vec, query_vec) < 0 || cross2(query_vec, start_vec) < 0 : + cross2(end_vec, query_vec) > 0 || cross2(query_vec, start_vec) > 0); +} + +template +inline bool inside_arc_wedge( + const Eigen::MatrixBase &start_pt, + const Eigen::MatrixBase &end_pt, + const Eigen::MatrixBase ¢er_pt, + const bool shorter_arc, + const bool ccw, + const Eigen::MatrixBase &query_pt) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "inside_arc_wedge(): start_pt is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "inside_arc_wedge(): end_pt is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "inside_arc_wedge(): center_pt is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived4::SizeAtCompileTime) == 2, "inside_arc_wedge(): query_pt is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value && + std::is_same::value, "inside_arc_wedge(): All vectors must be of the same type."); + return inside_arc_wedge_vectors(start_pt - center_pt, end_pt - center_pt, shorter_arc, ccw, query_pt - center_pt); +} + +template +inline bool inside_arc_wedge( + const Eigen::MatrixBase &start_pt, + const Eigen::MatrixBase &end_pt, + const Float radius, + const bool ccw, + const Eigen::MatrixBase &query_pt) +{ + static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "inside_arc_wedge(): start_pt is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "inside_arc_wedge(): end_pt is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "inside_arc_wedge(): query_pt is not a 2D vector"); + static_assert(std::is_same::value && + std::is_same::value && + std::is_same::value, "inside_arc_wedge(): All vectors + radius must be of the same type."); + return inside_arc_wedge(start_pt, end_pt, + arc_center(start_pt, end_pt, radius, ccw), + radius > 0, ccw, query_pt); +} + +// Return number of linear segments necessary to interpolate arc of a given positive radius and positive angle to satisfy +// maximum deviation of an interpolating polyline from an analytic arc. +template +size_t arc_discretization_steps(const FloatType radius, const FloatType angle, const FloatType deviation) +{ + assert(radius > 0); + assert(angle > 0); + assert(angle <= FloatType(2. * M_PI)); + assert(deviation > 0); + + FloatType d = radius - deviation; + return d < EPSILON ? + // Radius smaller than deviation. + ( // Acute angle: a single segment interpolates the arc with sufficient accuracy. + angle < M_PI || + // Obtuse angle: Test whether the furthest point (center) of an arc is closer than deviation to the center of a line segment. + radius * (FloatType(1.) + cos(M_PI - FloatType(.5) * angle)) < deviation ? + // Single segment is sufficient + 1 : + // Two segments are necessary, the middle point is at the center of the arc. + 2) : + size_t(ceil(angle / (2. * acos(d / radius)))); +} + +// Discretize arc given the radius, orientation and maximum deviation from the arc. +// Returned polygon starts with p1, ends with p2 and it is discretized to guarantee the maximum deviation. +Points arc_discretize(const Point &p1, const Point &p2, const double radius, const bool ccw, const double deviation); + +// Variance of the arc fit of points (600.); +// 0.05mm +static constexpr const double default_scaled_resolution = scaled(0.05); +// 5 percent +static constexpr const double default_arc_length_percent_tolerance = 0.05; + +enum class Orientation : unsigned char { + Unknown, + CCW, + CW, +}; + +// Returns orientation of a polyline with regard to the center. +// Successive points are expected to take less than a PI angle step. +// Returns Orientation::Unknown if the orientation with regard to the center +// is not monotonous. +Orientation arc_orientation( + const Point ¢er, + const Points::const_iterator begin, + const Points::const_iterator end); + +// Single segment of a smooth path. +struct Segment +{ + // End point of a linear or circular segment. + // Start point is provided by the preceding segment. + Point point; + // Radius of a circular segment. Positive - take the shorter arc. Negative - take the longer arc. Zero - linear segment. + float radius{ 0.f }; + // CCW or CW. Ignored for zero radius (linear segment). + Orientation orientation{ Orientation::CCW }; + + bool linear() const { return radius == 0; } + bool ccw() const { return orientation == Orientation::CCW; } + bool cw() const { return orientation == Orientation::CW; } +}; + +inline bool operator==(const Segment &lhs, const Segment &rhs) { + return lhs.point == rhs.point && lhs.radius == rhs.radius && lhs.orientation == rhs.orientation; +} + +using Segments = std::vector; +using Path = Segments; + +// Interpolate polyline path with a sequence of linear / circular segments given the interpolation tolerance. +// Only convert to polyline if zero tolerance. +// Convert to polyline and decimate polyline if zero fit_circle_percent_tolerance. +// Path fitting is inspired with the arc fitting algorithm in +// Arc Welder: Anti-Stutter Library by Brad Hochgesang FormerLurker@pm.me +// https://github.com/FormerLurker/ArcWelderLib +Path fit_path(const Points &points, double tolerance, double fit_circle_percent_tolerance); + +// Decimate polyline into a smooth path structure using Douglas-Peucker polyline decimation algorithm. +inline Path fit_polyline(const Points &points, double tolerance) { return fit_path(points, tolerance, 0.); } + +template +inline FloatType segment_length(const Segment &start, const Segment &end) +{ + return end.linear() ? + (end.point - start.point).cast().norm() : + arc_length(start.point.cast(), end.point.cast(), FloatType(end.radius)); +} + +template +inline FloatType path_length(const Path &path) +{ + FloatType len = 0; + for (size_t i = 1; i < path.size(); ++ i) + len += segment_length(path[i - 1], path[i]); + return len; +} + +// Estimate minimum path length of a segment cheaply without having to calculate center of an arc and it arc length. +// Used for caching a smooth path chunk that is certainly longer than a threshold. +inline int64_t estimate_min_segment_length(const Segment &start, const Segment &end) +{ + if (end.linear() || end.radius > 0) { + // Linear segment or convex wedge, take the larger X or Y component. + Point v = (end.point - start.point).cwiseAbs(); + return std::max(v.x(), v.y()); + } else { + // Arc with angle > PI. + // Returns estimate of PI * r + return - int64_t(3) * int64_t(end.radius); + } +} + +// Estimate minimum path length cheaply without having to calculate center of an arc and it arc length. +// Used for caching a smooth path chunk that is certainly longer than a threshold. +inline int64_t estimate_path_length(const Path &path) +{ + int64_t len = 0; + for (size_t i = 1; i < path.size(); ++ i) + len += Geometry::ArcWelder::estimate_min_segment_length(path[i - 1], path[i]); + return len; +} + +void reverse(Path &path); + +// Clip start / end of a smooth path by len. +// If path is shorter than len, remaining path length to trim will be returned. +double clip_start(Path &path, const double len); +double clip_end(Path &path, const double len); + +struct PathSegmentProjection +{ + // Start segment of a projection on the path. + size_t segment_id { std::numeric_limits::max() }; + // Projection of the point on the segment. + Point point { 0, 0 }; + // If the point lies on an arc, the arc center is cached here. + Point center { 0, 0 }; + // Square of a distance of the projection. + double distance2 { std::numeric_limits::max() }; + + bool valid() const { return this->segment_id != std::numeric_limits::max(); } +}; +// Returns closest segment and a parameter along the closest segment of a path to a point. +PathSegmentProjection point_to_path_projection(const Path &path, const Point &point, double search_radius2 = std::numeric_limits::max()); +// Split a path into two paths at a segment point. Snap to an existing point if the projection of "point is closer than min_segment_length. +std::pair split_at(const Path &path, const PathSegmentProjection &proj, const double min_segment_length); +// Split a path into two paths at a point closest to "point". Snap to an existing point if the projection of "point is closer than min_segment_length. +std::pair split_at(const Path &path, const Point &point, const double min_segment_length); + +} } } // namespace Slic3r::Geometry::ArcWelder + +#endif // slic3r_Geometry_ArcWelder_hpp_ diff --git a/src/libslic3r/Geometry/Circle.cpp b/src/libslic3r/Geometry/Circle.cpp index 6796671..b44aca1 100644 --- a/src/libslic3r/Geometry/Circle.cpp +++ b/src/libslic3r/Geometry/Circle.cpp @@ -137,4 +137,82 @@ Circled circle_ransac(const Vec2ds& input, size_t iterations, double* min_error) return circle_best; } +template +Circled circle_linear_least_squares_by_solver(const Vec2ds &input, Solver solver) +{ + Circled out; + if (input.size() < 3) { + out = Circled::make_invalid(); + } else { + Eigen::Matrix A(input.size(), 3); + Eigen::VectorXd b(input.size()); + for (size_t r = 0; r < input.size(); ++ r) { + const Vec2d &p = input[r]; + A.row(r) = Vec3d(2. * p.x(), 2. * p.y(), - 1.); + b(r) = p.squaredNorm(); + } + auto result = solver(A, b); + out.center = result.template head<2>(); + double r2 = out.center.squaredNorm() - result(2); + if (r2 <= EPSILON) + out.make_invalid(); + else + out.radius = sqrt(r2); + } + + return out; +} + +Circled circle_linear_least_squares_svd(const Vec2ds &input) +{ + return circle_linear_least_squares_by_solver(input, + [](const Eigen::Matrix &A, const Eigen::VectorXd &b) + { return A.bdcSvd(Eigen::ComputeThinU | Eigen::ComputeThinV).solve(b).eval(); }); +} + +Circled circle_linear_least_squares_qr(const Vec2ds &input) +{ + return circle_linear_least_squares_by_solver(input, + [](const Eigen::Matrix &A, const Eigen::VectorXd &b) + { return A.colPivHouseholderQr().solve(b).eval(); }); +} + +Circled circle_linear_least_squares_normal(const Vec2ds &input) +{ + Circled out; + if (input.size() < 3) { + out = Circled::make_invalid(); + } else { + Eigen::Matrix A = Eigen::Matrix::Zero(); + Eigen::Matrix b = Eigen::Matrix::Zero(); + for (size_t i = 0; i < input.size(); ++ i) { + const Vec2d &p = input[i]; + // Calculate right hand side of a normal equation. + b += p.squaredNorm() * Vec3d(2. * p.x(), 2. * p.y(), -1.); + // Calculate normal matrix (correlation matrix). + // Diagonal: + A(0, 0) += 4. * p.x() * p.x(); + A(1, 1) += 4. * p.y() * p.y(); + A(2, 2) += 1.; + // Off diagonal elements: + const double a = 4. * p.x() * p.y(); + A(0, 1) += a; + A(1, 0) += a; + const double b = -2. * p.x(); + A(0, 2) += b; + A(2, 0) += b; + const double c = -2. * p.y(); + A(1, 2) += c; + A(2, 1) += c; + } + auto result = A.ldlt().solve(b).eval(); + out.center = result.head<2>(); + double r2 = out.center.squaredNorm() - result(2); + if (r2 <= EPSILON) + out.make_invalid(); + else + out.radius = sqrt(r2); + } + return out; +} } } // namespace Slic3r::Geometry diff --git a/src/libslic3r/Geometry/Circle.hpp b/src/libslic3r/Geometry/Circle.hpp index 653102e..855dbbe 100644 --- a/src/libslic3r/Geometry/Circle.hpp +++ b/src/libslic3r/Geometry/Circle.hpp @@ -9,10 +9,17 @@ namespace Slic3r { namespace Geometry { // https://en.wikipedia.org/wiki/Circumscribed_circle // Circumcenter coordinates, Cartesian coordinates -template -Vector circle_center(const Vector &a, const Vector &bsrc, const Vector &csrc, typename Vector::Scalar epsilon) +// In case the three points are collinear, returns their centroid. +template +Eigen::Matrix circle_center(const Derived &a, const Derived2 &bsrc, const Derived3 &csrc, typename Derived::Scalar epsilon) { - using Scalar = typename Vector::Scalar; + static_assert(Derived ::IsVectorAtCompileTime && int(Derived ::SizeAtCompileTime) == 2, "circle_center(): 1st point is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "circle_center(): 2nd point is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "circle_center(): 3rd point is not a 2D vector"); + static_assert(std::is_same::value && std::is_same::value, + "circle_center(): All three points must be of the same type."); + using Scalar = typename Derived::Scalar; + using Vector = Eigen::Matrix; Vector b = bsrc - a; Vector c = csrc - a; Scalar lb = b.squaredNorm(); @@ -30,6 +37,31 @@ Vector circle_center(const Vector &a, const Vector &bsrc, const Vector &csrc, ty } } +// https://en.wikipedia.org/wiki/Circumscribed_circle +// Circumcenter coordinates, Cartesian coordinates +// Returns no value if the three points are collinear. +template +std::optional> try_circle_center(const Derived &a, const Derived2 &bsrc, const Derived3 &csrc, typename Derived::Scalar epsilon) +{ + static_assert(Derived ::IsVectorAtCompileTime && int(Derived ::SizeAtCompileTime) == 2, "try_circle_center(): 1st point is not a 2D vector"); + static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "try_circle_center(): 2nd point is not a 2D vector"); + static_assert(Derived3::IsVectorAtCompileTime && int(Derived3::SizeAtCompileTime) == 2, "try_circle_center(): 3rd point is not a 2D vector"); + static_assert(std::is_same::value && std::is_same::value, + "try_circle_center(): All three points must be of the same type."); + using Scalar = typename Derived::Scalar; + using Vector = Eigen::Matrix; + Vector b = bsrc - a; + Vector c = csrc - a; + Scalar lb = b.squaredNorm(); + Scalar lc = c.squaredNorm(); + if (Scalar d = b.x() * c.y() - b.y() * c.x(); std::abs(d) < epsilon) { + // The three points are collinear. + return {}; + } else { + Vector v = lc * b - lb * c; + return std::make_optional(a + Vector(- v.y(), v.x()) / (2 * d)); + } +} // 2D circle defined by its center and squared radius template struct CircleSq { @@ -65,7 +97,7 @@ struct Circle { Vector center; Scalar radius; - Circle() {} + Circle() = default; Circle(const Vector ¢er, const Scalar radius) : center(center), radius(radius) {} Circle(const Vector &a, const Vector &b) : center(Scalar(0.5) * (a + b)) { radius = (a - center).norm(); } Circle(const Vector &a, const Vector &b, const Vector &c, const Scalar epsilon) { *this = CircleSq(a, b, c, epsilon); } @@ -104,6 +136,17 @@ Circled circle_taubin_newton(const Vec2ds& input, size_t cycles = 20); // Find circle using RANSAC randomized algorithm. Circled circle_ransac(const Vec2ds& input, size_t iterations = 20, double* min_error = nullptr); +// Linear Least squares fitting. +// Be careful! The linear least squares fitting is strongly biased towards small circles, +// thus the method is only recommended for circles or arches with large arc angle. +// Also it is strongly recommended to center the input at an expected circle (or arc) center +// to minimize the small circle bias! + // Linear Least squares fitting with SVD. Most accurate, but slowest. + Circled circle_linear_least_squares_svd(const Vec2ds &input); + // Linear Least squares fitting with QR decomposition. Medium accuracy, medium speed. + Circled circle_linear_least_squares_qr(const Vec2ds &input); + // Linear Least squares fitting solving normal equations. Low accuracy, high speed. + Circled circle_linear_least_squares_normal(const Vec2ds &input); // Randomized algorithm by Emo Welzl, working with squared radii for efficiency. The returned circle radius is inflated by epsilon. template CircleSq smallest_enclosing_circle2_welzl(const Points &points, const typename Vector::Scalar epsilon) diff --git a/src/libslic3r/IntersectionPoints.cpp b/src/libslic3r/IntersectionPoints.cpp index 78d1923..307d51b 100644 --- a/src/libslic3r/IntersectionPoints.cpp +++ b/src/libslic3r/IntersectionPoints.cpp @@ -1,171 +1,50 @@ #include "IntersectionPoints.hpp" -//#define USE_CGAL_SWEEP_LINE -#ifdef USE_CGAL_SWEEP_LINE +#include -#include -#include -#include -#include -#include +//NOTE: using CGAL SweepLines is slower !!! (example in git history) -using NT = CGAL::Quotient; -using Kernel = CGAL::Cartesian; -using P2 = Kernel::Point_2; -using Traits_2 = CGAL::Arr_segment_traits_2; -using Segment = Traits_2::Curve_2; -using Segments = std::vector; - -namespace priv { - -P2 convert(const Slic3r::Point &p) { return P2(p.x(), p.y()); } -Slic3r::Vec2d convert(const P2 &p) +namespace { +using namespace Slic3r; +IntersectionsLines compute_intersections(const Lines &lines) { - return Slic3r::Vec2d(CGAL::to_double(p.x()), CGAL::to_double(p.y())); -} + if (lines.size() < 3) + return {}; -Slic3r::Pointfs compute_intersections(const Segments &segments) -{ - std::vector intersections; - // Compute all intersection points. - CGAL::compute_intersection_points(segments.begin(), segments.end(), - std::back_inserter(intersections)); - if (intersections.empty()) return {}; - Slic3r::Pointfs pts; - pts.reserve(intersections.size()); - for (const P2 &p : intersections) pts.push_back(convert(p)); - return pts; -} - -void add_polygon(const Slic3r::Polygon &polygon, Segments &segments) -{ - if (polygon.points.size() < 2) return; - P2 prev_point = priv::convert(polygon.last_point()); - for (const Slic3r::Point &p : polygon.points) { - P2 act_point = priv::convert(p); - if (prev_point == act_point) continue; - segments.emplace_back(prev_point, act_point); - prev_point = act_point; - } -} -Slic3r::Pointfs Slic3r::intersection_points(const Lines &lines) -{ - return priv::compute_intersections2(lines); - Segments segments; - segments.reserve(lines.size()); - for (Line l : lines) - segments.emplace_back(priv::convert(l.a), priv::convert(l.b)); - return priv::compute_intersections(segments); -} - -Slic3r::Pointfs Slic3r::intersection_points(const Polygon &polygon) -{ - Segments segments; - segments.reserve(polygon.points.size()); - priv::add_polygon(polygon, segments); - return priv::compute_intersections(segments); -} - -Slic3r::Pointfs Slic3r::intersection_points(const Polygons &polygons) -{ - Segments segments; - segments.reserve(count_points(polygons)); - for (const Polygon &polygon : polygons) - priv::add_polygon(polygon, segments); - return priv::compute_intersections(segments); -} - -Slic3r::Pointfs Slic3r::intersection_points(const ExPolygon &expolygon) -{ - Segments segments; - segments.reserve(count_points(expolygon)); - priv::add_polygon(expolygon.contour, segments); - for (const Polygon &hole : expolygon.holes) - priv::add_polygon(hole, segments); - return priv::compute_intersections(segments); -} - -Slic3r::Pointfs Slic3r::intersection_points(const ExPolygons &expolygons) -{ - Segments segments; - segments.reserve(count_points(expolygons)); - for (const ExPolygon &expolygon : expolygons) { - priv::add_polygon(expolygon.contour, segments); - for (const Polygon &hole : expolygon.holes) - priv::add_polygon(hole, segments); - } - return priv::compute_intersections(segments); -} - - -} // namespace priv - -#else // USE_CGAL_SWEEP_LINE - -// use bounding boxes -#include - -namespace priv { -//FIXME O(n^2) complexity! -Slic3r::Pointfs compute_intersections(const Slic3r::Lines &lines) -{ - using namespace Slic3r; - // IMPROVE0: BoundingBoxes of Polygons - // IMPROVE1: Polygon's neighbor lines can't intersect - // e.g. use indices to Point to find same points - // IMPROVE2: Use BentleyOttmann algorithm - // https://doc.cgal.org/latest/Surface_sweep_2/index.html -- CGAL implementation is significantly slower - // https://stackoverflow.com/questions/4407493/is-there-a-robust-c-implementation-of-the-bentley-ottmann-algorithm - Pointfs pts; - Point i; - for (size_t li = 0; li < lines.size(); ++li) { + auto tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); + IntersectionsLines result; + for (uint32_t li = 0; li < lines.size()-1; ++li) { const Line &l = lines[li]; - const Point &a = l.a; - const Point &b = l.b; - Point min(std::min(a.x(), b.x()), std::min(a.y(), b.y())); - Point max(std::max(a.x(), b.x()), std::max(a.y(), b.y())); - BoundingBox bb(min, max); - for (size_t li_ = li + 1; li_ < lines.size(); ++li_) { - const Line &l_ = lines[li_]; - const Point &a_ = l_.a; - const Point &b_ = l_.b; - if (a == b_ || b == a_ || a == a_ || b == b_) continue; - Point min_(std::min(a_.x(), b_.x()), std::min(a_.y(), b_.y())); - Point max_(std::max(a_.x(), b_.x()), std::max(a_.y(), b_.y())); - BoundingBox bb_(min_, max_); - // intersect of BB compare min max - if (bb.overlap(bb_) && - l.intersection(l_, &i)) - pts.push_back(i.cast()); - } - } - return pts; -} -} // namespace priv + auto intersections = AABBTreeLines::get_intersections_with_line(lines, tree, l); + for (const auto &[p, node_index] : intersections) { + if (node_index - 1 <= li) + continue; + if (const Line &l_ = lines[node_index]; + l_.a == l.a || + l_.a == l.b || + l_.b == l.a || + l_.b == l.b ) + // it is duplicit point not intersection + continue; -Slic3r::Pointfs Slic3r::intersection_points(const Lines &lines) -{ - return priv::compute_intersections(lines); + // NOTE: fix AABBTree to compute intersection with double preccission!! + Vec2d intersection_point = p.cast(); + + result.push_back(IntersectionLines{li, static_cast(node_index), intersection_point}); } -Slic3r::Pointfs Slic3r::intersection_points(const Polygon &polygon) -{ - return priv::compute_intersections(to_lines(polygon)); } -Slic3r::Pointfs Slic3r::intersection_points(const Polygons &polygons) -{ - return priv::compute_intersections(to_lines(polygons)); + return result; +} +} // namespace + +namespace Slic3r { +IntersectionsLines get_intersections(const Lines &lines) { return compute_intersections(lines); } +IntersectionsLines get_intersections(const Polygon &polygon) { return compute_intersections(to_lines(polygon)); } +IntersectionsLines get_intersections(const Polygons &polygons) { return compute_intersections(to_lines(polygons)); } +IntersectionsLines get_intersections(const ExPolygon &expolygon) { return compute_intersections(to_lines(expolygon)); } +IntersectionsLines get_intersections(const ExPolygons &expolygons) { return compute_intersections(to_lines(expolygons)); } } -Slic3r::Pointfs Slic3r::intersection_points(const ExPolygon &expolygon) -{ - return priv::compute_intersections(to_lines(expolygon)); -} -Slic3r::Pointfs Slic3r::intersection_points(const ExPolygons &expolygons) -{ - return priv::compute_intersections(to_lines(expolygons)); -} - -#endif // USE_CGAL_SWEEP_LINE diff --git a/src/libslic3r/IntersectionPoints.hpp b/src/libslic3r/IntersectionPoints.hpp index 7603765..ae0299a 100644 --- a/src/libslic3r/IntersectionPoints.hpp +++ b/src/libslic3r/IntersectionPoints.hpp @@ -5,13 +5,18 @@ namespace Slic3r { +struct IntersectionLines { + uint32_t line_index1; + uint32_t line_index2; + Vec2d intersection; +}; +using IntersectionsLines = std::vector; // collect all intersecting points -//FIXME O(n^2) complexity! -Pointfs intersection_points(const Lines &lines); -Pointfs intersection_points(const Polygon &polygon); -Pointfs intersection_points(const Polygons &polygons); -Pointfs intersection_points(const ExPolygon &expolygon); -Pointfs intersection_points(const ExPolygons &expolygons); +IntersectionsLines get_intersections(const Lines &lines); +IntersectionsLines get_intersections(const Polygon &polygon); +IntersectionsLines get_intersections(const Polygons &polygons); +IntersectionsLines get_intersections(const ExPolygon &expolygon); +IntersectionsLines get_intersections(const ExPolygons &expolygons); } // namespace Slic3r #endif // slic3r_IntersectionPoints_hpp_ \ No newline at end of file diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index 9602b14..cda424e 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -185,7 +185,7 @@ void MeasuringImpl::update_planes() int neighbor_idx = face_neighbors[facets[face_id]][edge_id]; if (neighbor_idx == -1) goto PLANE_FAILURE; - if (visited[face_id][edge_id] || (int)face_to_plane[neighbor_idx] == plane_id) { + if (visited[face_id][edge_id] || face_to_plane[neighbor_idx] == plane_id) { visited[face_id][edge_id] = true; continue; } @@ -219,7 +219,7 @@ void MeasuringImpl::update_planes() // Remember all halfedges we saw to break out of such infinite loops. boost::container::small_vector he_seen; - while ( (int)face_to_plane[sm.face(he)] == plane_id && he != he_orig) { + while ( face_to_plane[sm.face(he)] == plane_id && he != he_orig) { he_seen.emplace_back(he); he = sm.next_around_target(he); if (he.is_invalid() || std::find(he_seen.begin(), he_seen.end(), he) != he_seen.end()) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 2f03341..a9af66e 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -14,6 +14,7 @@ #include "Format/STL.hpp" #include "Format/3mf.hpp" #include "Format/STEP.hpp" +#include "Format/SVG.hpp" #include @@ -27,7 +28,7 @@ #include "SVG.hpp" #include -#include "GCodeWriter.hpp" +#include "GCode/GCodeWriter.hpp" namespace Slic3r { @@ -124,8 +125,10 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c else if (boost::algorithm::iends_with(input_file, ".3mf") || boost::algorithm::iends_with(input_file, ".zip")) //FIXME options & LoadAttribute::CheckVersion ? result = load_3mf(input_file.c_str(), *config, *config_substitutions, &model, false); + else if (boost::algorithm::iends_with(input_file, ".svg")) + result = load_svg(input_file, model); else - throw Slic3r::RuntimeError("Unknown file format. Input file must have .stl, .obj, .amf(.xml), .qidi or .step/.stp extension."); + throw Slic3r::RuntimeError("Unknown file format. Input file must have .stl, .obj, .step/.stp, .svg, .amf(.xml) or extension .3mf(.zip)."); if (! result) throw Slic3r::RuntimeError("Loading of a model file failed."); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 2df612f..4b6b2a7 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -14,6 +14,7 @@ #include "CustomGCode.hpp" #include "enum_bitmask.hpp" #include "TextConfiguration.hpp" +#include "EmbossShape.hpp" #include #include @@ -281,25 +282,26 @@ struct CutConnector float height; float radius_tolerance;// [0.f : 1.f] float height_tolerance;// [0.f : 1.f] + float z_angle {0.f}; CutConnectorAttributes attribs; CutConnector() - : pos(Vec3d::Zero()), rotation_m(Transform3d::Identity()), radius(5.f), height(10.f), radius_tolerance(0.f), height_tolerance(0.1f) + : pos(Vec3d::Zero()), rotation_m(Transform3d::Identity()), radius(5.f), height(10.f), radius_tolerance(0.f), height_tolerance(0.1f), z_angle(0.f) {} - CutConnector(Vec3d p, Transform3d rot, float r, float h, float rt, float ht, CutConnectorAttributes attributes) - : pos(p), rotation_m(rot), radius(r), height(h), radius_tolerance(rt), height_tolerance(ht), attribs(attributes) + CutConnector(Vec3d p, Transform3d rot, float r, float h, float rt, float ht, float za, CutConnectorAttributes attributes) + : pos(p), rotation_m(rot), radius(r), height(h), radius_tolerance(rt), height_tolerance(ht), z_angle(za), attribs(attributes) {} CutConnector(const CutConnector& rhs) : - CutConnector(rhs.pos, rhs.rotation_m, rhs.radius, rhs.height, rhs.radius_tolerance, rhs.height_tolerance, rhs.attribs) {} + CutConnector(rhs.pos, rhs.rotation_m, rhs.radius, rhs.height, rhs.radius_tolerance, rhs.height_tolerance, rhs.z_angle, rhs.attribs) {} bool operator==(const CutConnector& other) const; bool operator!=(const CutConnector& other) const { return !(other == (*this)); } template inline void serialize(Archive& ar) { - ar(pos, rotation_m, radius, height, radius_tolerance, height_tolerance, attribs); + ar(pos, rotation_m, radius, height, radius_tolerance, height_tolerance, z_angle, attribs); } }; @@ -816,6 +818,9 @@ public: // Contain information how to re-create volume std::optional text_configuration; + // Is set only when volume is Embossed Shape + // Contain 2d information about embossed shape to be editabled + std::optional emboss_shape; // A parent object owning this modifier volume. ModelObject* get_object() const { return this->object; } ModelVolumeType type() const { return m_type; } @@ -827,6 +832,7 @@ public: bool is_support_blocker() const { return m_type == ModelVolumeType::SUPPORT_BLOCKER; } bool is_support_modifier() const { return m_type == ModelVolumeType::SUPPORT_BLOCKER || m_type == ModelVolumeType::SUPPORT_ENFORCER; } bool is_text() const { return text_configuration.has_value(); } + bool is_svg() const { return emboss_shape.has_value() && !text_configuration.has_value(); } bool is_the_only_one_part() const; // behave like an object t_model_material_id material_id() const { return m_material_id; } void reset_extra_facets(); @@ -985,8 +991,7 @@ private: name(other.name), source(other.source), m_mesh(other.m_mesh), m_convex_hull(other.m_convex_hull), config(other.config), m_type(other.m_type), object(object), m_transformation(other.m_transformation), supported_facets(other.supported_facets), seam_facets(other.seam_facets), mmu_segmentation_facets(other.mmu_segmentation_facets), - cut_info(other.cut_info), - text_configuration(other.text_configuration) + cut_info(other.cut_info), text_configuration(other.text_configuration), emboss_shape(other.emboss_shape) { assert(this->id().valid()); assert(this->config.id().valid()); @@ -1007,8 +1012,7 @@ private: // Providing a new mesh, therefore this volume will get a new unique ID assigned. ModelVolume(ModelObject *object, const ModelVolume &other, TriangleMesh &&mesh) : name(other.name), source(other.source), config(other.config), object(object), m_mesh(new TriangleMesh(std::move(mesh))), m_type(other.m_type), m_transformation(other.m_transformation), - cut_info(other.cut_info), - text_configuration(other.text_configuration) + cut_info(other.cut_info), text_configuration(other.text_configuration), emboss_shape(other.emboss_shape) { assert(this->id().valid()); assert(this->config.id().valid()); @@ -1056,6 +1060,7 @@ private: cereal::load_by_value(ar, mmu_segmentation_facets); cereal::load_by_value(ar, config); cereal::load(ar, text_configuration); + cereal::load(ar, emboss_shape); assert(m_mesh); if (has_convex_hull) { cereal::load_optional(ar, m_convex_hull); @@ -1073,6 +1078,7 @@ private: cereal::save_by_value(ar, mmu_segmentation_facets); cereal::save_by_value(ar, config); cereal::save(ar, text_configuration); + cereal::save(ar, emboss_shape); if (has_convex_hull) cereal::save_optional(ar, m_convex_hull); } diff --git a/src/libslic3r/MultiPoint.cpp b/src/libslic3r/MultiPoint.cpp index fb4727a..b01ef13 100644 --- a/src/libslic3r/MultiPoint.cpp +++ b/src/libslic3r/MultiPoint.cpp @@ -103,99 +103,6 @@ bool MultiPoint::remove_duplicate_points() return false; } -Points MultiPoint::douglas_peucker(const Points &pts, const double tolerance) -{ - Points result_pts; - auto tolerance_sq = int64_t(sqr(tolerance)); - if (! pts.empty()) { - const Point *anchor = &pts.front(); - size_t anchor_idx = 0; - const Point *floater = &pts.back(); - size_t floater_idx = pts.size() - 1; - result_pts.reserve(pts.size()); - result_pts.emplace_back(*anchor); - if (anchor_idx != floater_idx) { - assert(pts.size() > 1); - std::vector dpStack; - dpStack.reserve(pts.size()); - dpStack.emplace_back(floater_idx); - for (;;) { - int64_t max_dist_sq = 0; - size_t furthest_idx = anchor_idx; - // find point furthest from line seg created by (anchor, floater) and note it - { - const Point a = *anchor; - const Point f = *floater; - const Vec2i64 v = (f - a).cast(); - if (const int64_t l2 = v.squaredNorm(); l2 == 0) { - for (size_t i = anchor_idx + 1; i < floater_idx; ++ i) - if (int64_t dist_sq = (pts[i] - a).cast().squaredNorm(); dist_sq > max_dist_sq) { - max_dist_sq = dist_sq; - furthest_idx = i; - } - } else { - const double dl2 = double(l2); - const Vec2d dv = v.cast(); - for (size_t i = anchor_idx + 1; i < floater_idx; ++ i) { - const Point p = pts[i]; - const Vec2i64 va = (p - a).template cast(); - const int64_t t = va.dot(v); - int64_t dist_sq; - if (t <= 0) { - dist_sq = va.squaredNorm(); - } else if (t >= l2) { - dist_sq = (p - f).cast().squaredNorm(); - } else { - const Vec2i64 w = ((double(t) / dl2) * dv).cast(); - dist_sq = (w - va).squaredNorm(); - } - if (dist_sq > max_dist_sq) { - max_dist_sq = dist_sq; - furthest_idx = i; - } - } - } - } - // remove point if less than tolerance - if (max_dist_sq <= tolerance_sq) { - result_pts.emplace_back(*floater); - anchor_idx = floater_idx; - anchor = floater; - assert(dpStack.back() == floater_idx); - dpStack.pop_back(); - if (dpStack.empty()) - break; - floater_idx = dpStack.back(); - } else { - floater_idx = furthest_idx; - dpStack.emplace_back(floater_idx); - } - floater = &pts[floater_idx]; - } - } - assert(result_pts.front() == pts.front()); - assert(result_pts.back() == pts.back()); - -#if 0 - { - static int iRun = 0; - BoundingBox bbox(pts); - BoundingBox bbox2(result_pts); - bbox.merge(bbox2); - SVG svg(debug_out_path("douglas_peucker_%d.svg", iRun ++).c_str(), bbox); - if (pts.front() == pts.back()) - svg.draw(Polygon(pts), "black"); - else - svg.draw(Polyline(pts), "black"); - if (result_pts.front() == result_pts.back()) - svg.draw(Polygon(result_pts), "green", scale_(0.1)); - else - svg.draw(Polyline(result_pts), "green", scale_(0.1)); - } -#endif - } - return result_pts; -} // Visivalingam simplification algorithm https://github.com/slic3r/Slic3r/pull/3825 // thanks to @fuchstraumer @@ -219,7 +126,7 @@ struct vis_node{ // other node if it's area is less than the other node's area bool operator<(const vis_node& other) { return (this->area < other.area); } }; -Points MultiPoint::visivalingam(const Points& pts, const double& tolerance) +Points MultiPoint::visivalingam(const Points &pts, const double tolerance) { // Make sure there's enough points in "pts" to bother with simplification. assert(pts.size() >= 2); diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index 637b059..edad80e 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -12,6 +12,122 @@ namespace Slic3r { class BoundingBox; class BoundingBox3; +// Reduces polyline in the +inline OutputIterator douglas_peucker(InputIterator begin, InputIterator end, OutputIterator out, const double tolerance, PointGetter point_getter) +{ + using InputIteratorCategory = typename std::iterator_traits::iterator_category; + static_assert(std::is_base_of_v); + using Vector = Eigen::Matrix; + if (begin != end) { + // Supporting in-place reduction and the data type may be generic, thus we are always making a copy of the point value before there is a chance + // to override input by moving the data to the output. + auto a = point_getter(*begin); + *out ++ = std::move(*begin); + if (auto next = std::next(begin); next == end) { + // Single point input only. + } else if (std::next(next) == end) { + // Two points input. + *out ++ = std::move(*next); + } else { + const auto tolerance_sq = SquareLengthType(sqr(tolerance)); + InputIterator anchor = begin; + InputIterator floater = std::prev(end); + std::vector dpStack; + if constexpr (std::is_base_of_v) + dpStack.reserve(end - begin); + dpStack.emplace_back(floater); + auto f = point_getter(*floater); + for (;;) { + assert(anchor != floater); + bool take_floater = false; + InputIterator furthest = anchor; + if (std::next(anchor) == floater) { + // Two point segment. Accept the floater. + take_floater = true; + } else { + SquareLengthType max_dist_sq = 0; + // Find point furthest from line seg created by (anchor, floater) and note it. + const Vector v = (f - a).template cast(); + if (const SquareLengthType l2 = v.squaredNorm(); l2 == 0) { + // Zero length segment, find the furthest point between anchor and floater. + for (auto it = std::next(anchor); it != floater; ++ it) + if (SquareLengthType dist_sq = (point_getter(*it) - a).template cast().squaredNorm(); + dist_sq > max_dist_sq) { + max_dist_sq = dist_sq; + furthest = it; + } + } else { + // Find Find the furthest point from the line . + const double dl2 = double(l2); + const Vec2d dv = v.template cast(); + for (auto it = std::next(anchor); it != floater; ++ it) { + const auto p = point_getter(*it); + const Vector va = (p - a).template cast(); + const SquareLengthType t = va.dot(v); + SquareLengthType dist_sq; + if (t <= 0) { + dist_sq = va.squaredNorm(); + } else if (t >= l2) { + dist_sq = (p - f).template cast().squaredNorm(); + } else if (double dt = double(t) / dl2; dt <= 0) { + dist_sq = va.squaredNorm(); + } else if (dt >= 1.) { + dist_sq = (p - f).template cast().squaredNorm(); + } else { + const Vector w = (dt * dv).cast(); + dist_sq = (w - va).squaredNorm(); + } + if (dist_sq > max_dist_sq) { + max_dist_sq = dist_sq; + furthest = it; + } + } + } + // remove point if less than tolerance + take_floater = max_dist_sq <= tolerance_sq; + } + if (take_floater) { + // The points between anchor and floater are close to the line. + // Drop the points between them. + a = f; + *out ++ = std::move(*floater); + anchor = floater; + assert(dpStack.back() == floater); + dpStack.pop_back(); + if (dpStack.empty()) + break; + floater = dpStack.back(); + f = point_getter(*floater); + } else { + // The furthest point is too far from the segment . + // Divide recursively. + floater = furthest; + f = point_getter(*floater); + dpStack.emplace_back(floater); + } + } + } + } + return out; +} + +// Reduces polyline in the +inline OutputIterator douglas_peucker(Points::const_iterator begin, Points::const_iterator end, OutputIterator out, const double tolerance) +{ + return douglas_peucker(begin, end, out, tolerance, [](const Point &p) { return p; }); +} + +inline Points douglas_peucker(const Points &src, const double tolerance) +{ + Points out; + out.reserve(src.size()); + douglas_peucker(src.begin(), src.end(), std::back_inserter(out), tolerance); + return out; +} class MultiPoint { public: @@ -81,8 +197,8 @@ public: } } - static Points douglas_peucker(const Points &points, const double tolerance); - static Points visivalingam(const Points& pts, const double& tolerance); + static Points douglas_peucker(const Points &src, const double tolerance) { return Slic3r::douglas_peucker(src, tolerance); } + static Points visivalingam(const Points &src, const double tolerance); inline auto begin() { return points.begin(); } inline auto begin() const { return points.begin(); } @@ -119,16 +235,19 @@ extern BoundingBox get_extents(const MultiPoint &mp); extern BoundingBox get_extents_rotated(const Points &points, double angle); extern BoundingBox get_extents_rotated(const MultiPoint &mp, double angle); -inline double length(const Points &pts) { +inline double length(const Points::const_iterator begin, const Points::const_iterator end) { double total = 0; - if (! pts.empty()) { - auto it = pts.begin(); - for (auto it_prev = it ++; it != pts.end(); ++ it, ++ it_prev) + if (begin != end) { + auto it = begin; + for (auto it_prev = it ++; it != end; ++ it, ++ it_prev) total += (*it - *it_prev).cast().norm(); } return total; } +inline double length(const Points &pts) { + return length(pts.begin(), pts.end()); +} inline double area(const Points &polygon) { double area = 0.; for (size_t i = 0, j = polygon.size() - 1; i < polygon.size(); j = i ++) diff --git a/src/libslic3r/NSVGUtils.cpp b/src/libslic3r/NSVGUtils.cpp index 2844fc5..e9576f6 100644 --- a/src/libslic3r/NSVGUtils.cpp +++ b/src/libslic3r/NSVGUtils.cpp @@ -1,85 +1,539 @@ #include "NSVGUtils.hpp" +#include +#include // to_chars + +#include +#include #include "ClipperUtils.hpp" +#include "Emboss.hpp" // heal for shape -using namespace Slic3r; +namespace { +using namespace Slic3r; // Polygon +// see function nsvg__lineTo(NSVGparser* p, float x, float y) +bool is_line(const float *p, float precision = 1e-4f); +// convert curve in path to lines +struct LinesPath{ + Polygons polygons; + Polylines polylines; }; +LinesPath linearize_path(NSVGpath *first_path, const NSVGLineParams ¶m); +HealedExPolygons fill_to_expolygons(const LinesPath &lines_path, const NSVGshape &shape, const NSVGLineParams ¶m); +HealedExPolygons stroke_to_expolygons(const LinesPath &lines_path, const NSVGshape &shape, const NSVGLineParams ¶m); +} // namespace -// inspired by nanosvgrast.h function nsvgRasterize -> nsvg__flattenShape -> nsvg__flattenCubicBez -// https://github.com/memononen/nanosvg/blob/f0a3e1034dd22e2e87e5db22401e44998383124e/src/nanosvgrast.h#L335 -void NSVGUtils::flatten_cubic_bez(Polygon &polygon, - float tessTol, - Vec2f p1, - Vec2f p2, - Vec2f p3, - Vec2f p4, - int level) +namespace Slic3r { + +ExPolygonsWithIds create_shape_with_ids(const NSVGimage &image, const NSVGLineParams ¶m) { - Vec2f p12 = (p1 + p2) * 0.5f; - Vec2f p23 = (p2 + p3) * 0.5f; - Vec2f p34 = (p3 + p4) * 0.5f; - Vec2f p123 = (p12 + p23) * 0.5f; + ExPolygonsWithIds result; + size_t shape_id = 0; + for (NSVGshape *shape_ptr = image.shapes; shape_ptr != NULL; shape_ptr = shape_ptr->next, ++shape_id) { + const NSVGshape &shape = *shape_ptr; + if (!(shape.flags & NSVG_FLAGS_VISIBLE)) + continue; - Vec2f pd = p4 - p1; - Vec2f pd2 = p2 - p4; - float d2 = std::abs(pd2.x() * pd.y() - pd2.y() * pd.x()); - Vec2f pd3 = p3 - p4; - float d3 = std::abs(pd3.x() * pd.y() - pd3.y() * pd.x()); + bool is_fill_used = shape.fill.type != NSVG_PAINT_NONE; + bool is_stroke_used = + shape.stroke.type != NSVG_PAINT_NONE && + shape.strokeWidth > 1e-5f; + + if (!is_fill_used && !is_stroke_used) + continue; + + const LinesPath lines_path = linearize_path(shape.paths, param); + + if (is_fill_used) { + unsigned unique_id = static_cast(2 * shape_id); + HealedExPolygons expoly = fill_to_expolygons(lines_path, shape, param); + result.push_back({unique_id, expoly.expolygons, expoly.is_healed}); + } + if (is_stroke_used) { + unsigned unique_id = static_cast(2 * shape_id + 1); + HealedExPolygons expoly = stroke_to_expolygons(lines_path, shape, param); + result.push_back({unique_id, expoly.expolygons, expoly.is_healed}); + } + } + + // SVG is used as centered + // Do not disturb user by settings of pivot position + center(result); + return result; +} + +Polygons to_polygons(const NSVGimage &image, const NSVGLineParams ¶m) +{ + Polygons result; + for (NSVGshape *shape = image.shapes; shape != NULL; shape = shape->next) { + if (!(shape->flags & NSVG_FLAGS_VISIBLE)) + continue; + if (shape->fill.type == NSVG_PAINT_NONE) + continue; + const LinesPath lines_path = linearize_path(shape->paths, param); + polygons_append(result, lines_path.polygons); + // close polyline to create polygon + polygons_append(result, to_polygons(lines_path.polylines)); + } + return result; +} + +void bounds(const NSVGimage &image, Vec2f& min, Vec2f &max) +{ + for (const NSVGshape *shape = image.shapes; shape != NULL; shape = shape->next) + for (const NSVGpath *path = shape->paths; path != NULL; path = path->next) { + if (min.x() > path->bounds[0]) + min.x() = path->bounds[0]; + if (min.y() > path->bounds[1]) + min.y() = path->bounds[1]; + if (max.x() < path->bounds[2]) + max.x() = path->bounds[2]; + if (max.y() < path->bounds[3]) + max.y() = path->bounds[3]; + } +} + +NSVGimage_ptr nsvgParseFromFile(const std::string &filename, const char *units, float dpi) +{ + NSVGimage *image = ::nsvgParseFromFile(filename.c_str(), units, dpi); + return {image, &nsvgDelete}; +} + +std::unique_ptr read_from_disk(const std::string &path) +{ + boost::nowide::ifstream fs{path}; + if (!fs.is_open()) + return nullptr; + std::stringstream ss; + ss << fs.rdbuf(); + return std::make_unique(ss.str()); +} + +NSVGimage_ptr nsvgParse(const std::string& file_data, const char *units, float dpi){ + // NOTE: nsvg parser consume data from input(char *) + size_t size = file_data.size(); + // file data could be big, so it is allocated on heap + std::unique_ptr data_copy(new char[size+1]); + memcpy(data_copy.get(), file_data.c_str(), size); + data_copy[size] = '\0'; // data for nsvg must be null terminated + NSVGimage *image = ::nsvgParse(data_copy.get(), units, dpi); + return {image, &nsvgDelete}; +} + +NSVGimage *init_image(EmbossShape::SvgFile &svg_file){ + // is already initialized? + if (svg_file.image.get() != nullptr) + return svg_file.image.get(); + + if (svg_file.file_data == nullptr) { + // chech if path is known + if (svg_file.path.empty()) + return nullptr; + svg_file.file_data = read_from_disk(svg_file.path); + if (svg_file.file_data == nullptr) + return nullptr; + } + + // init svg image + svg_file.image = nsvgParse(*svg_file.file_data); + if (svg_file.image.get() == NULL) + return nullptr; + + return svg_file.image.get(); +} + +size_t get_shapes_count(const NSVGimage &image) +{ + size_t count = 0; + for (NSVGshape * s = image.shapes; s != NULL; s = s->next) + ++count; + return count; +} + +//void save(const NSVGimage &image, std::ostream &data) +//{ +// data << ""; +// +// // tl .. top left +// Vec2f tl(std::numeric_limits::max(), std::numeric_limits::max()); +// // br .. bottom right +// Vec2f br(std::numeric_limits::min(), std::numeric_limits::min()); +// bounds(image, tl, br); +// +// tl.x() = std::floor(tl.x()); +// tl.y() = std::floor(tl.y()); +// +// br.x() = std::ceil(br.x()); +// br.y() = std::ceil(br.y()); +// Vec2f s = br - tl; +// Point size = s.cast(); +// +// data << "\n"; +// data << "\n"; +// +// std::array buffer; +// auto write_point = [&tl, &buffer](std::string &d, const float *p) { +// float x = p[0] - tl.x(); +// float y = p[1] - tl.y(); +// auto to_string = [&buffer](float f) -> std::string { +// auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() + buffer.size(), f); +// if (ec != std::errc{}) +// return "0"; +// return std::string(buffer.data(), ptr); +// }; +// d += to_string(x) + "," + to_string(y) + " "; +// }; +// +// for (const NSVGshape *shape = image.shapes; shape != NULL; shape = shape->next) { +// enum struct Type { move, line, curve, close }; // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d +// Type type = Type::move; +// std::string d = "M "; // move on start point +// for (const NSVGpath *path = shape->paths; path != NULL; path = path->next) { +// if (path->npts <= 1) +// continue; +// +// if (type == Type::close) { +// type = Type::move; +// // NOTE: After close must be a space +// d += " M "; // move on start point +// } +// write_point(d, path->pts); +// size_t path_size = static_cast(path->npts - 1); +// +// if (path->closed) { +// // Do not use last point in path it is duplicit +// if (path->npts <= 4) +// continue; +// path_size = static_cast(path->npts - 4); +// } +// +// for (size_t i = 0; i < path_size; i += 3) { +// const float *p = &path->pts[i * 2]; +// if (!::is_line(p)) { +// if (type != Type::curve) { +// type = Type::curve; +// d += "C "; // start sequence of triplets defining curves +// } +// write_point(d, &p[2]); +// write_point(d, &p[4]); +// } else { +// +// if (type != Type::line) { +// type = Type::line; +// d += "L "; // start sequence of line points +// } +// } +// write_point(d, &p[6]); +// } +// if (path->closed) { +// type = Type::close; +// d += "Z"; // start sequence of line points +// } +// } +// if (type != Type::close) { +// //type = Type::close; +// d += "Z"; // closed path +// } +// data << "\n"; +// } +// data << "\n"; +//} +// +//bool save(const NSVGimage &image, const std::string &svg_file_path) +//{ +// std::ofstream file{svg_file_path}; +// if (!file.is_open()) +// return false; +// save(image, file); +// return true; +//} +} // namespace Slic3r + +namespace { +using namespace Slic3r; // Polygon + Vec2f + +Point::coord_type to_coor(float val, double scale) { return static_cast(std::round(val * scale)); } + +bool need_flattening(float tessTol, const Vec2f &p1, const Vec2f &p2, const Vec2f &p3, const Vec2f &p4) { + // f .. first + // s .. second + auto det = [](const Vec2f &f, const Vec2f &s) { + return std::fabs(f.x() * s.y() - f.y() * s.x()); + }; + + Vec2f pd = (p4 - p1); + Vec2f pd2 = (p2 - p4); + float d2 = det(pd2, pd); + Vec2f pd3 = (p3 - p4); + float d3 = det(pd3, pd); float d23 = d2 + d3; - if ((d23 * d23) < tessTol * (pd.x() * pd.x() + pd.y() * pd.y())) { - polygon.points.emplace_back(p4.x(), p4.y()); + return (d23 * d23) >= tessTol * pd.squaredNorm(); +} + +// see function nsvg__lineTo(NSVGparser* p, float x, float y) +bool is_line(const float *p, float precision){ + //Vec2f p1(p[0], p[1]); + //Vec2f p2(p[2], p[3]); + //Vec2f p3(p[4], p[5]); + //Vec2f p4(p[6], p[7]); + float dx_3 = (p[6] - p[0]) / 3.f; + float dy_3 = (p[7] - p[1]) / 3.f; + + return + is_approx(p[2], p[0] + dx_3, precision) && + is_approx(p[4], p[6] - dx_3, precision) && + is_approx(p[3], p[1] + dy_3, precision) && + is_approx(p[5], p[7] - dy_3, precision); +} + +/// +/// Convert cubic curve to lines +/// Inspired by nanosvgrast.h function nsvgRasterize -> nsvg__flattenShape -> nsvg__flattenCubicBez +/// https://github.com/memononen/nanosvg/blob/f0a3e1034dd22e2e87e5db22401e44998383124e/src/nanosvgrast.h#L335 +/// +/// Result points +/// Tesselation tolerance +/// Curve point +/// Curve point +/// Curve point +/// Curve point +/// Actual depth of recursion +void flatten_cubic_bez(Points &points, float tessTol, const Vec2f& p1, const Vec2f& p2, const Vec2f& p3, const Vec2f& p4, int level) +{ + if (!need_flattening(tessTol, p1, p2, p3, p4)) { + Point::coord_type x = static_cast(std::round(p4.x())); + Point::coord_type y = static_cast(std::round(p4.y())); + points.emplace_back(x, y); return; } --level; - if (level == 0) return; + if (level == 0) + return; + + Vec2f p12 = (p1 + p2) * 0.5f; + Vec2f p23 = (p2 + p3) * 0.5f; + Vec2f p34 = (p3 + p4) * 0.5f; + Vec2f p123 = (p12 + p23) * 0.5f; Vec2f p234 = (p23 + p34) * 0.5f; Vec2f p1234 = (p123 + p234) * 0.5f; - flatten_cubic_bez(polygon, tessTol, p1, p12, p123, p1234, level); - flatten_cubic_bez(polygon, tessTol, p1234, p234, p34, p4, level); + flatten_cubic_bez(points, tessTol, p1, p12, p123, p1234, level); + flatten_cubic_bez(points, tessTol, p1234, p234, p34, p4, level); } -Polygons NSVGUtils::to_polygons(NSVGimage *image, float tessTol, int max_level) +LinesPath linearize_path(NSVGpath *first_path, const NSVGLineParams ¶m) { - Polygons polygons; - for (NSVGshape *shape = image->shapes; shape != NULL; - shape = shape->next) { - if (!(shape->flags & NSVG_FLAGS_VISIBLE)) continue; - Slic3r::Polygon polygon; - if (shape->fill.type != NSVG_PAINT_NONE) { - for (NSVGpath *path = shape->paths; path != NULL; - path = path->next) { + LinesPath result; + Polygons &polygons = result.polygons; + Polylines &polylines = result.polylines; + + // multiple use of allocated memmory for points between paths + Points points; + for (NSVGpath *path = first_path; path != NULL; path = path->next) { // Flatten path - polygon.points.emplace_back(path->pts[0], path->pts[1]); - size_t path_size = (path->npts > 1) ? - static_cast(path->npts - 1) : 0; + Point::coord_type x = to_coor(path->pts[0], param.scale); + Point::coord_type y = to_coor(path->pts[1], param.scale); + points.emplace_back(x, y); + size_t path_size = (path->npts > 1) ? static_cast(path->npts - 1) : 0; for (size_t i = 0; i < path_size; i += 3) { - float *p = &path->pts[i * 2]; - Vec2f p1(p[0], p[1]), p2(p[2], p[3]), p3(p[4], p[5]), - p4(p[6], p[7]); - flatten_cubic_bez(polygon, tessTol, p1, p2, p3, p4, - max_level); + const float *p = &path->pts[i * 2]; + if (is_line(p)) { + // point p4 + Point::coord_type xx = to_coor(p[6], param.scale); + Point::coord_type yy = to_coor(p[7], param.scale); + points.emplace_back(xx, yy); + continue; + } + Vec2f p1(p[0], p[1]); + Vec2f p2(p[2], p[3]); + Vec2f p3(p[4], p[5]); + Vec2f p4(p[6], p[7]); + flatten_cubic_bez(points, param.tesselation_tolerance, + p1 * param.scale, p2 * param.scale, p3 * param.scale, p4 * param.scale, + param.max_level); + } + assert(!points.empty()); + if (points.empty()) + continue; + + if (param.is_y_negative) + for (Point &p : points) + p.y() = -p.y(); + + if (path->closed) { + polygons.emplace_back(points); + } else { + polylines.emplace_back(points); + } + // prepare for new path - recycle alocated memory + points.clear(); + } + remove_same_neighbor(polygons); + remove_same_neighbor(polylines); + return result; +} + +HealedExPolygons fill_to_expolygons(const LinesPath &lines_path, const NSVGshape &shape, const NSVGLineParams ¶m) +{ + Polygons fill = lines_path.polygons; // copy + + // close polyline to create polygon + polygons_append(fill, to_polygons(lines_path.polylines)); + if (fill.empty()) + return {}; + + // if (shape->fillRule == NSVGfillRule::NSVG_FILLRULE_NONZERO) + bool is_non_zero = true; + if (shape.fillRule == NSVGfillRule::NSVG_FILLRULE_EVENODD) + is_non_zero = false; + + return Emboss::heal_polygons(fill, is_non_zero, param.max_heal_iteration); +} + +struct DashesParam{ + // first dash length + float dash_length = 1.f; // scaled + + // is current dash .. true + // is current space .. false + bool is_line = true; + + // current index to array + unsigned char dash_index = 0; + static constexpr size_t max_dash_array_size = 8; // limitation of nanosvg strokeDashArray + std::array dash_array; // scaled + unsigned char dash_count = 0; // count of values in array + + explicit DashesParam(const NSVGshape &shape, double scale) : + dash_count(shape.strokeDashCount) + { + assert(dash_count > 0); + assert(dash_count <= max_dash_array_size); // limitation of nanosvg strokeDashArray + for (size_t i = 0; i < dash_count; ++i) + dash_array[i] = static_cast(shape.strokeDashArray[i] * scale); + + // Figure out dash offset. + float all_dash_length = 0; + for (unsigned char j = 0; j < dash_count; ++j) + all_dash_length += dash_array[j]; + + if (dash_count%2 == 1) // (shape.strokeDashCount & 1) + all_dash_length *= 2.0f; + + // Find location inside pattern + float dash_offset = fmodf(static_cast(shape.strokeDashOffset * scale), all_dash_length); + if (dash_offset < 0.0f) + dash_offset += all_dash_length; + + while (dash_offset > dash_array[dash_index]) { + dash_offset -= dash_array[dash_index]; + dash_index = (dash_index + 1) % shape.strokeDashCount; + is_line = !is_line; + } + + dash_length = dash_array[dash_index] - dash_offset; } - if (path->closed && !polygon.empty()) { - polygons.push_back(polygon); - polygon = Slic3r::Polygon(); +}; + +Polylines to_dashes(const Polyline &polyline, const DashesParam& param) +{ + Polylines dashes; + Polyline dash; // cache for one dash in dashed line + Point prev_point; + + bool is_line = param.is_line; + unsigned char dash_index = param.dash_index; + float dash_length = param.dash_length; // current rest of dash distance + for (const Point &point : polyline.points) { + if (&point == &polyline.points.front()) { + // is first point + prev_point = point; // copy + continue; } + Point diff = point - prev_point; + float line_segment_length = diff.cast().norm(); + while (dash_length < line_segment_length) { + // Calculate intermediate point + float d = dash_length / line_segment_length; + Point move_point = diff * d; + Point intermediate = prev_point + move_point; + + // add Dash in stroke + if (is_line) { + if (dash.empty()) { + dashes.emplace_back(Points{prev_point, intermediate}); + } else { + dash.append(prev_point); + dash.append(intermediate); + dashes.push_back(dash); + dash.clear(); } } - if (!polygon.empty()) - polygons.push_back(polygon); + diff -= move_point; + line_segment_length -= dash_length; + prev_point = intermediate; + + // Advance dash pattern + is_line = !is_line; + dash_index = (dash_index + 1) % param.dash_count; + dash_length = param.dash_array[dash_index]; } - return polygons; + if (is_line) + dash.append(prev_point); + dash_length -= line_segment_length; + prev_point = point; // copy } -ExPolygons NSVGUtils::to_ExPolygons(NSVGimage *image, - float tessTol, - int max_level) + // add last dash + if (is_line){ + assert(!dash.empty()); + dash.append(prev_point); // prev_point == polyline.points.back() + dashes.push_back(dash); + } + return dashes; +} + +HealedExPolygons stroke_to_expolygons(const LinesPath &lines_path, const NSVGshape &shape, const NSVGLineParams ¶m) { - Polygons polygons = to_polygons(image, tessTol, max_level); + // convert stroke to polygon + ClipperLib::JoinType join_type = ClipperLib::JoinType::jtSquare; + switch (static_cast(shape.strokeLineJoin)) { + case NSVGlineJoin::NSVG_JOIN_BEVEL: join_type = ClipperLib::JoinType::jtSquare; break; + case NSVGlineJoin::NSVG_JOIN_MITER: join_type = ClipperLib::JoinType::jtMiter; break; + case NSVGlineJoin::NSVG_JOIN_ROUND: join_type = ClipperLib::JoinType::jtRound; break; + } - // Fix Y axis - for (Polygon &polygon : polygons) - for (Point &p : polygon.points) p.y() *= -1; + double mitter = shape.miterLimit * param.scale; + if (join_type == ClipperLib::JoinType::jtRound) { + // mitter is used as ArcTolerance + // http://www.angusj.com/delphi/clipper/documentation/Docs/Units/ClipperLib/Classes/ClipperOffset/Properties/ArcTolerance.htm + mitter = std::pow(param.tesselation_tolerance, 1/3.); + } + float stroke_width = static_cast(shape.strokeWidth * param.scale); - return Slic3r::union_ex(polygons); -} \ No newline at end of file + ClipperLib::EndType end_type = ClipperLib::EndType::etOpenButt; + switch (static_cast(shape.strokeLineCap)) { + case NSVGlineCap::NSVG_CAP_BUTT: end_type = ClipperLib::EndType::etOpenButt; break; + case NSVGlineCap::NSVG_CAP_ROUND: end_type = ClipperLib::EndType::etOpenRound; break; + case NSVGlineCap::NSVG_CAP_SQUARE: end_type = ClipperLib::EndType::etOpenSquare; break; + } + + Polygons result; + if (shape.strokeDashCount > 0) { + DashesParam params(shape, param.scale); + Polylines dashes; + for (const Polyline &polyline : lines_path.polylines) + polylines_append(dashes, to_dashes(polyline, params)); + for (const Polygon &polygon : lines_path.polygons) + polylines_append(dashes, to_dashes(to_polyline(polygon), params)); + result = offset(dashes, stroke_width / 2, join_type, mitter, end_type); + } else { + result = contour_to_polygons(lines_path.polygons, stroke_width, join_type, mitter); + polygons_append(result, offset(lines_path.polylines, stroke_width / 2, join_type, mitter, end_type)); + } + + bool is_non_zero = true; + return Emboss::heal_polygons(result, is_non_zero, param.max_heal_iteration); +} +} // namespace \ No newline at end of file diff --git a/src/libslic3r/NSVGUtils.hpp b/src/libslic3r/NSVGUtils.hpp index d82901f..2a97b8e 100644 --- a/src/libslic3r/NSVGUtils.hpp +++ b/src/libslic3r/NSVGUtils.hpp @@ -1,34 +1,80 @@ #ifndef slic3r_NSVGUtils_hpp_ #define slic3r_NSVGUtils_hpp_ +#include +#include +#include #include "Polygon.hpp" #include "ExPolygon.hpp" +#include "EmbossShape.hpp" // ExPolygonsWithIds #include "nanosvg/nanosvg.h" // load SVG file namespace Slic3r { -// Helper function to work with nano svg -class NSVGUtils +/// +/// Paramreters for conversion curve from SVG to lines in Polygon +/// +struct NSVGLineParams { -public: - NSVGUtils() = delete; + // Smaller will divide curve to more lines + // NOTE: Value is in image scale + double tesselation_tolerance = 10.f; - // inspired by nanosvgrast.h function nsvgRasterize->nsvg__flattenShape - static void flatten_cubic_bez(Polygon &polygon, - float tessTol, - Vec2f p1, - Vec2f p2, - Vec2f p3, - Vec2f p4, - int level); - // convert svg image to ExPolygons - static ExPolygons to_ExPolygons(NSVGimage *image, - float tessTol = 10., - int max_level = 10); - // convert svg paths to Polygons - static Polygons to_polygons(NSVGimage *image, - float tessTol = 10., - int max_level = 10); + // Maximal depth of recursion for conversion curve to lines + int max_level = 10; + + // Multiplicator of point coors + // NOTE: Every point coor from image(float) is multiplied by scale and rounded to integer --> Slic3r::Point + double scale = 1. / SCALING_FACTOR; + + // Flag wether y is negative, when true than y coor is multiplied by -1 + bool is_y_negative = true; + + // Is used only with rounded Stroke + double arc_tolerance = 1.; + + // Maximal count of heal iteration + unsigned max_heal_iteration = 10; + + explicit NSVGLineParams(double tesselation_tolerance): + tesselation_tolerance(tesselation_tolerance), + arc_tolerance(std::pow(tesselation_tolerance, 1/3.)) + {} }; +/// +/// Convert .svg opened by nanoSvg to shapes stored in expolygons with ids +/// +/// Parsed svg file by NanoSvg +/// Smaller will divide curve to more lines +/// NOTE: Value is in image scale +/// Maximal depth for conversion curve to lines +/// Multiplicator of point coors +/// NOTE: Every point coor from image(float) is multiplied by scale and rounded to integer +/// Shapes from svg image - fill + stroke +ExPolygonsWithIds create_shape_with_ids(const NSVGimage &image, const NSVGLineParams ¶m); + +// help functions - prepare to be tested +/// Flag is y negative, when true than y coor is multiplied by -1 +Polygons to_polygons(const NSVGimage &image, const NSVGLineParams ¶m); + +void bounds(const NSVGimage &image, Vec2f &min, Vec2f &max); + +// read text data from file +std::unique_ptr read_from_disk(const std::string &path); + +using NSVGimage_ptr = std::unique_ptr; +NSVGimage_ptr nsvgParseFromFile(const std::string &svg_file_path, const char *units = "mm", float dpi = 96.0f); +NSVGimage_ptr nsvgParse(const std::string& file_data, const char *units = "mm", float dpi = 96.0f); +NSVGimage *init_image(EmbossShape::SvgFile &svg_file); + +/// +/// Iterate over shapes and calculate count +/// +/// Contain pointer to first shape +/// Count of shapes +size_t get_shapes_count(const NSVGimage &image); + +//void save(const NSVGimage &image, std::ostream &data); +//bool save(const NSVGimage &image, const std::string &svg_file_path); } // namespace Slic3r #endif // slic3r_NSVGUtils_hpp_ diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 255fe34..1f81dcc 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -119,20 +119,18 @@ ExtrusionMultiPath PerimeterGenerator::thick_polyline_to_multi_path(const ThickP const double w = fmax(line.a_width, line.b_width); const Flow new_flow = (role.is_bridge() && flow.bridge()) ? flow : flow.with_width(unscale(w) + flow.height() * float(1. - 0.25 * PI)); - if (path.polyline.points.empty()) { - path.polyline.append(line.a); - path.polyline.append(line.b); + if (path.empty()) { // Convert from spacing to extrusion width based on the extrusion model // of a square extrusion ended with semi circles. + path = { ExtrusionAttributes{ path.role(), new_flow } }; + path.polyline.append(line.a); + path.polyline.append(line.b); #ifdef SLIC3R_DEBUG printf(" filling %f gap\n", flow.width); #endif - path.mm3_per_mm = new_flow.mm3_per_mm(); - path.width = new_flow.width(); - path.height = new_flow.height(); } else { - assert(path.width >= EPSILON); - thickness_delta = scaled(fabs(path.width - new_flow.width())); + assert(path.width() >= EPSILON); + thickness_delta = scaled(fabs(path.width() - new_flow.width())); if (thickness_delta <= merge_tolerance) { // the width difference between this line and the current flow // (of the previous line) width is within the accepted tolerance @@ -325,10 +323,12 @@ static ExtrusionEntityCollection traverse_loops_classic(const PerimeterGenerator extrusion_paths_append( paths, intersection_pl({ polygon }, lower_slices_polygons_clipped), + ExtrusionAttributes{ role_normal, - is_external ? params.ext_mm3_per_mm : params.mm3_per_mm, + ExtrusionFlow{ is_external ? params.ext_mm3_per_mm : params.mm3_per_mm, is_external ? params.ext_perimeter_flow.width() : params.perimeter_flow.width(), - float(params.layer_height)); + float(params.layer_height) + } }); // get overhang paths by checking what parts of this loop fall // outside the grown lower slices (thus where the distance between @@ -336,21 +336,24 @@ static ExtrusionEntityCollection traverse_loops_classic(const PerimeterGenerator extrusion_paths_append( paths, diff_pl({ polygon }, lower_slices_polygons_clipped), + ExtrusionAttributes{ role_overhang, - params.mm3_per_mm_overhang, - params.overhang_flow.width(), - params.overhang_flow.height()); + ExtrusionFlow{ params.mm3_per_mm_overhang, params.overhang_flow.width(), params.overhang_flow.height() } + }); // Reapply the nearest point search for starting point. // We allow polyline reversal because Clipper may have randomly reversed polylines during clipping. chain_and_reorder_extrusion_paths(paths, &paths.front().first_point()); } else { - ExtrusionPath path(role_normal); - path.polyline = polygon.split_at_first_point(); - path.mm3_per_mm = is_external ? params.ext_mm3_per_mm : params.mm3_per_mm; - path.width = is_external ? params.ext_perimeter_flow.width() : params.perimeter_flow.width(); - path.height = float(params.layer_height); - paths.push_back(path); + paths.emplace_back(polygon.split_at_first_point(), + ExtrusionAttributes{ + role_normal, + ExtrusionFlow{ + is_external ? params.ext_mm3_per_mm : params.mm3_per_mm, + is_external ? params.ext_perimeter_flow.width() : params.perimeter_flow.width(), + float(params.layer_height) + } + }); } coll.append(ExtrusionLoop(std::move(paths), loop_role)); @@ -383,11 +386,13 @@ static ExtrusionEntityCollection traverse_loops_classic(const PerimeterGenerator ExtrusionLoop *eloop = static_cast(coll.entities[idx.first]); coll.entities[idx.first] = nullptr; if (loop.is_contour) { - eloop->make_counter_clockwise(); + if (eloop->is_clockwise()) + eloop->reverse_loop(); out.append(std::move(children.entities)); out.entities.emplace_back(eloop); } else { - eloop->make_clockwise(); + if (eloop->is_counter_clockwise()) + eloop->reverse_loop(); out.entities.emplace_back(eloop); out.append(std::move(children.entities)); } @@ -603,10 +608,8 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator::P if (extrusion->is_closed) { ExtrusionLoop extrusion_loop(std::move(paths)); // Restore the orientation of the extrusion loop. - if (pg_extrusion.is_contour) - extrusion_loop.make_counter_clockwise(); - else - extrusion_loop.make_clockwise(); + if (pg_extrusion.is_contour == extrusion_loop.is_clockwise()) + extrusion_loop.reverse_loop(); for (auto it = std::next(extrusion_loop.paths.begin()); it != extrusion_loop.paths.end(); ++it) { assert(it->polyline.points.size() >= 2); @@ -960,11 +963,9 @@ std::tuple, Polygons> generate_extra_perimeters_over if (perimeter_polygon.empty()) { // fill possible gaps of single extrusion width Polygons shrinked = intersection(offset(prev, -0.3 * overhang_flow.scaled_spacing()), expanded_overhang_to_cover); - if (!shrinked.empty()) { + if (!shrinked.empty()) extrusion_paths_append(overhang_region, reconnect_polylines(perimeter, overhang_flow.scaled_spacing()), - ExtrusionRole::OverhangPerimeter, overhang_flow.mm3_per_mm(), overhang_flow.width(), - overhang_flow.height()); - } + ExtrusionAttributes{ ExtrusionRole::OverhangPerimeter, overhang_flow }); Polylines fills; ExPolygons gap = shrinked.empty() ? offset_ex(prev, overhang_flow.scaled_spacing() * 0.5) : to_expolygons(shrinked); @@ -975,14 +976,12 @@ std::tuple, Polygons> generate_extra_perimeters_over if (!fills.empty()) { fills = intersection_pl(fills, shrinked_overhang_to_cover); extrusion_paths_append(overhang_region, reconnect_polylines(fills, overhang_flow.scaled_spacing()), - ExtrusionRole::OverhangPerimeter, overhang_flow.mm3_per_mm(), overhang_flow.width(), - overhang_flow.height()); + ExtrusionAttributes{ ExtrusionRole::OverhangPerimeter, overhang_flow }); } break; } else { extrusion_paths_append(overhang_region, reconnect_polylines(perimeter, overhang_flow.scaled_spacing()), - ExtrusionRole::OverhangPerimeter, overhang_flow.mm3_per_mm(), overhang_flow.width(), - overhang_flow.height()); + ExtrusionAttributes{ExtrusionRole::OverhangPerimeter, overhang_flow }); } if (intersection(perimeter_polygon, real_overhang).empty()) { continuation_loops--; } diff --git a/src/libslic3r/PlaceholderParser.cpp b/src/libslic3r/PlaceholderParser.cpp index 4012642..6e81aa2 100644 --- a/src/libslic3r/PlaceholderParser.cpp +++ b/src/libslic3r/PlaceholderParser.cpp @@ -1643,6 +1643,7 @@ namespace client // Check whether the table X values are sorted. double x = expr_x.as_d(); + assert(! std::isnan(x)); bool evaluated = false; for (size_t i = 1; i < table.table.size(); ++i) { double x0 = table.table[i - 1].x; @@ -2098,7 +2099,7 @@ namespace client multiplicative_expression.name("multiplicative_expression"); assignment_statement = - variable_reference(_r1)[_a = _1] >> '=' > + (variable_reference(_r1)[_a = _1] >> '=') > ( // Consumes also '(' conditional_expression ')', that means enclosing an expression into braces makes it a single value vector initializer. initializer_list(_r1)[px::bind(&MyContext::vector_variable_assign_initializer_list, _r1, _a, _1)] // Process it before conditional_expression, as conditional_expression requires a vector reference to be augmented with an index. diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index 457bb44..eae6b50 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -47,14 +47,12 @@ Pointf3s transform(const Pointf3s& points, const Transform3d& t) void Point::rotate(double angle, const Point ¢er) { - double cur_x = (double)(*this)(0); - double cur_y = (double)(*this)(1); + Vec2d cur = this->cast(); double s = ::sin(angle); double c = ::cos(angle); - double dx = cur_x - (double)center(0); - double dy = cur_y - (double)center(1); - (*this)(0) = (coord_t)round( (double)center(0) + c * dx - s * dy ); - (*this)(1) = (coord_t)round( (double)center(1) + c * dy + s * dx ); + auto d = cur - center.cast(); + this->x() = fast_round_up(center.x() + c * d.x() - s * d.y()); + this->y() = fast_round_up(center.y() + s * d.x() + c * d.y()); } bool has_duplicate_points(Points &&pts) diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 542c9a9..3ffa3dd 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -152,6 +152,20 @@ Pointf3s transform(const Pointf3s& points, const Transform3d& t); /// Is positive determinant inline bool has_reflection(const Transform3d &transform) { return transform.matrix().determinant() < 0; } +/// +/// Getter on base of transformation matrix +/// +/// column index +/// source transformation +/// Base of transformation matrix +inline const Vec3d get_base(unsigned index, const Transform3d &transform) { return transform.linear().col(index); } +inline const Vec3d get_x_base(const Transform3d &transform) { return get_base(0, transform); } +inline const Vec3d get_y_base(const Transform3d &transform) { return get_base(1, transform); } +inline const Vec3d get_z_base(const Transform3d &transform) { return get_base(2, transform); } +inline const Vec3d get_base(unsigned index, const Transform3d::LinearPart &transform) { return transform.col(index); } +inline const Vec3d get_x_base(const Transform3d::LinearPart &transform) { return get_base(0, transform); } +inline const Vec3d get_y_base(const Transform3d::LinearPart &transform) { return get_base(1, transform); } +inline const Vec3d get_z_base(const Transform3d::LinearPart &transform) { return get_base(2, transform); } template using Vec = Eigen::Matrix; class Point : public Vec2crd @@ -166,11 +180,12 @@ public: Point(const Point &rhs) { *this = rhs; } explicit Point(const Vec2d& rhs) : Vec2crd(coord_t(std::round(rhs.x())), coord_t(std::round(rhs.y()))) {} // This constructor allows you to construct Point from Eigen expressions + // This constructor has to be implicit (non-explicit) to allow implicit conversion from Eigen expressions. template Point(const Eigen::MatrixBase &other) : Vec2crd(other) {} static Point new_scale(coordf_t x, coordf_t y) { return Point(coord_t(scale_(x)), coord_t(scale_(y))); } - static Point new_scale(const Vec2d &v) { return Point(coord_t(scale_(v.x())), coord_t(scale_(v.y()))); } - static Point new_scale(const Vec2f &v) { return Point(coord_t(scale_(v.x())), coord_t(scale_(v.y()))); } + template + static Point new_scale(const Eigen::MatrixBase &v) { return Point(coord_t(scale_(v.x())), coord_t(scale_(v.y()))); } // This method allows you to assign Eigen expressions to MyVectorType template @@ -547,6 +562,26 @@ inline coord_t align_to_grid(coord_t coord, coord_t spacing, coord_t base) inline Point align_to_grid(Point coord, Point spacing, Point base) { return Point(align_to_grid(coord.x(), spacing.x(), base.x()), align_to_grid(coord.y(), spacing.y(), base.y())); } +// MinMaxLimits +template struct MinMax { T min; T max;}; +template +static bool apply(std::optional &val, const MinMax &limit) { + if (!val.has_value()) return false; + return apply(*val, limit); +} +template +static bool apply(T &val, const MinMax &limit) +{ + if (val > limit.max) { + val = limit.max; + return true; + } + if (val < limit.min) { + val = limit.min; + return true; + } + return false; +} } // namespace Slic3r // start Boost diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 88ac1b0..30e9640 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -437,6 +437,37 @@ bool has_duplicate_points(const Polygons &polys) #endif } +bool remove_same_neighbor(Polygon &polygon) +{ + Points &points = polygon.points; + if (points.empty()) + return false; + auto last = std::unique(points.begin(), points.end()); + + // remove first and last neighbor duplication + if (const Point &last_point = *(last - 1); last_point == points.front()) { + --last; + } + + // no duplicits + if (last == points.end()) + return false; + + points.erase(last, points.end()); + return true; +} + +bool remove_same_neighbor(Polygons &polygons) +{ + if (polygons.empty()) + return false; + bool exist = false; + for (Polygon &polygon : polygons) + exist |= remove_same_neighbor(polygon); + // remove empty polygons + polygons.erase(std::remove_if(polygons.begin(), polygons.end(), [](const Polygon &p) { return p.points.size() <= 2; }), polygons.end()); + return exist; +} static inline bool is_stick(const Point &p1, const Point &p2, const Point &p3) { Point v1 = p2 - p1; diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index e890a21..1fd74b0 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -109,6 +109,9 @@ inline bool has_duplicate_points(Polygon &&poly) { return has_duplicate_poi inline bool has_duplicate_points(const Polygon &poly) { return has_duplicate_points(poly.points); } bool has_duplicate_points(const Polygons &polys); +// Return True when erase some otherwise False. +bool remove_same_neighbor(Polygon &polygon); +bool remove_same_neighbor(Polygons &polygons); inline double total_length(const Polygons &polylines) { double total = 0; for (Polygons::const_iterator it = polylines.begin(); it != polylines.end(); ++it) @@ -243,6 +246,17 @@ inline Polylines to_polylines(Polygons &&polys) return polylines; } +// close polyline to polygon (connect first and last point in polyline) +inline Polygons to_polygons(const Polylines &polylines) +{ + Polygons out; + out.reserve(polylines.size()); + for (const Polyline &polyline : polylines) { + if (polyline.size()) + out.emplace_back(polyline.points); + } + return out; +} inline Polygons to_polygons(const VecOfPoints &paths) { Polygons out; diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index 5261a8c..1c8b4ad 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -146,8 +146,10 @@ void Polyline::split_at(const Point &point, Polyline* p1, Polyline* p2) const } if (this->points.front() == point) { + //FIXME why is p1 NOT empty as in the case above? *p1 = { point }; *p2 = *this; + return; } auto min_dist2 = std::numeric_limits::max(); @@ -200,6 +202,31 @@ BoundingBox get_extents(const Polylines &polylines) return bb; } +// Return True when erase some otherwise False. +bool remove_same_neighbor(Polyline &polyline) { + Points &points = polyline.points; + if (points.empty()) + return false; + auto last = std::unique(points.begin(), points.end()); + + // no duplicits + if (last == points.end()) + return false; + + points.erase(last, points.end()); + return true; +} + +bool remove_same_neighbor(Polylines &polylines){ + if (polylines.empty()) + return false; + bool exist = false; + for (Polyline &polyline : polylines) + exist |= remove_same_neighbor(polyline); + // remove empty polylines + polylines.erase(std::remove_if(polylines.begin(), polylines.end(), [](const Polyline &p) { return p.points.size() <= 1; }), polylines.end()); + return exist; +} const Point& leftmost_point(const Polylines &polylines) { if (polylines.empty()) diff --git a/src/libslic3r/Polyline.hpp b/src/libslic3r/Polyline.hpp index 0e6dcff..5c9a25f 100644 --- a/src/libslic3r/Polyline.hpp +++ b/src/libslic3r/Polyline.hpp @@ -89,6 +89,9 @@ inline bool operator!=(const Polyline &lhs, const Polyline &rhs) { return lhs.po extern BoundingBox get_extents(const Polyline &polyline); extern BoundingBox get_extents(const Polylines &polylines); +// Return True when erase some otherwise False. +bool remove_same_neighbor(Polyline &polyline); +bool remove_same_neighbor(Polylines &polylines); inline double total_length(const Polylines &polylines) { double total = 0; for (const Polyline &pl : polylines) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 915cfc4..7ea6353 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -36,6 +36,9 @@ #include "libslic3r.h" #include "Utils.hpp" #include "PlaceholderParser.hpp" +#include "GCode/Thumbnails.hpp" + +#include "PresetBundle.hpp" using boost::property_tree::ptree; @@ -186,29 +189,6 @@ VendorProfile VendorProfile::from_ini(const ptree &tree, const boost::filesystem } else { BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: Malformed variants field: `%2%`") % id % variants_field; } - //B19 - section.second.get("email", ""); - const auto emails_field = section.second.get("email", ""); - std::vector emails; - if (Slic3r::unescape_strings_cstyle(emails_field, emails)) { - for (const std::string &email_name : emails) { - if (model.email(email_name) == nullptr) - model.emails.emplace_back(VendorProfile::PrinterEmail(email_name)); - } - } else { - BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: Malformed variants field: `%2%`") % id % emails_field; - } - section.second.get("skype", ""); - const auto skypes_field = section.second.get("skype", ""); - std::vector skypes; - if (Slic3r::unescape_strings_cstyle(skypes_field, skypes)) { - for (const std::string &skype_name : skypes) { - if (model.skype(skype_name) == nullptr) - model.skypes.emplace_back(VendorProfile::PrinterSkype(skype_name)); - } - } else { - BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: Malformed skypes field: `%2%`") % id % skypes_field; - } auto default_materials_field = section.second.get("default_materials", ""); if (default_materials_field.empty()) default_materials_field = section.second.get("default_filaments", ""); @@ -474,13 +454,15 @@ static std::vector s_Preset_print_options { "support_tree_angle", "support_tree_angle_slow", "support_tree_branch_diameter", "support_tree_branch_diameter_angle", "support_tree_branch_diameter_double_wall", "support_tree_top_rate", "support_tree_branch_distance", "support_tree_tip_diameter", "dont_support_bridges", "thick_bridges", "notes", "complete_objects", "extruder_clearance_radius", - "extruder_clearance_height", "gcode_comments", "gcode_label_objects", "output_filename_format", "post_process", "gcode_substitutions", "perimeter_extruder", + "extruder_clearance_height", "gcode_comments", "gcode_label_objects", "output_filename_format", "post_process", "gcode_substitutions", "gcode_binary","perimeter_extruder", "infill_extruder", "solid_infill_extruder", "support_material_extruder", "support_material_interface_extruder", "ooze_prevention", "standby_temperature_delta", "interface_shells", "extrusion_width", "first_layer_extrusion_width", "perimeter_extrusion_width", "external_perimeter_extrusion_width", "infill_extrusion_width", "solid_infill_extrusion_width", "top_infill_extrusion_width", "support_material_extrusion_width", "infill_overlap", "infill_anchor", "infill_anchor_max", "bridge_flow_ratio", + "elefant_foot_compensation", "xy_size_compensation", "resolution", "gcode_resolution", "arc_fitting", + "wipe_tower", "wipe_tower_x", "wipe_tower_y", //w12 - "elefant_foot_compensation", "xy_size_compensation", "xy_contour_compensation", "xy_hole_compensation", "threads", "resolution", "gcode_resolution", "wipe_tower", "wipe_tower_x", "wipe_tower_y", + "elefant_foot_compensation", "xy_size_compensation", "xy_contour_compensation", "xy_hole_compensation", "resolution", "gcode_resolution", "wipe_tower", "wipe_tower_x", "wipe_tower_y", "wipe_tower_width", "wipe_tower_cone_angle", "wipe_tower_rotation_angle", "wipe_tower_brim_width", "wipe_tower_bridging", "single_extruder_multi_material_priming", "mmu_segmented_region_max_width", "mmu_segmented_region_interlocking_depth", "wipe_tower_extruder", "wipe_tower_no_sparse_layers", "wipe_tower_extra_spacing", "compatible_printers", "compatible_printers_condition", "inherits", "perimeter_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle", @@ -505,7 +487,8 @@ static std::vector s_Preset_filament_options { "overhang_fan_speed_0", "overhang_fan_speed_1", "overhang_fan_speed_2", "overhang_fan_speed_3", // Retract overrides "filament_retract_length", "filament_retract_lift", "filament_retract_lift_above", "filament_retract_lift_below", "filament_retract_speed", "filament_deretract_speed", "filament_retract_restart_extra", "filament_retract_before_travel", - "filament_retract_layer_change", "filament_wipe", "filament_retract_before_wipe", "filament_retract_length_toolchange", "filament_retract_restart_extra_toolchange", + "filament_retract_layer_change", "filament_wipe", "filament_retract_before_wipe", "filament_retract_length_toolchange", "filament_retract_restart_extra_toolchange", "filament_travel_ramping_lift", + "filament_travel_slope", "filament_travel_max_lift", "filament_travel_lift_before_obstacle", // Profile compatibility "filament_vendor", "compatible_prints", "compatible_prints_condition", "compatible_printers", "compatible_printers_condition", "inherits", //B15 @@ -545,8 +528,6 @@ static std::vector s_Preset_printer_options { "default_print_profile", "inherits", "remaining_times", "silent_mode", "machine_limits_usage", "thumbnails", "thumbnails_format", -//Y18 - "bed_exclude_area", //Y16 "chamber_temperature", "auxiliary_fan", "chamber_fan" }; @@ -805,7 +786,7 @@ static bool profile_print_params_same(const DynamicPrintConfig &cfg_old, const D // when comparing profiles for equality. Ignore them. for (const char *key : { "compatible_prints", "compatible_prints_condition", "compatible_printers", "compatible_printers_condition", "inherits", - "print_settings_id", "filament_settings_id", "sla_print_settings_id", "sla_material_settings_id", "printer_settings_id", + "print_settings_id", "filament_settings_id", "sla_print_settings_id", "sla_material_settings_id", "printer_settings_id", "filament_vendor", "printer_model", "printer_variant", "default_print_profile", "default_filament_profile", "default_sla_print_profile", "default_sla_material_profile", //FIXME remove the print host keys? "print_host", "printhost_apikey", "printhost_cafile" }) @@ -818,7 +799,7 @@ static bool profile_print_params_same(const DynamicPrintConfig &cfg_old, const D // and select it, losing previous modifications. // Only a single profile could be edited at at the same time, which introduces complexity when loading // filament profiles for multi-extruder printers. -std::pair PresetCollection::load_external_preset( +ExternalPreset PresetCollection::load_external_preset( // Path to the profile source file (a G-code, an AMF or 3MF file, a config file) const std::string &path, // Name of the profile, derived from the source file name. @@ -841,7 +822,7 @@ std::pair PresetCollection::load_external_preset( const Preset &edited = this->get_edited_preset(); if ((edited.name == original_name || edited.name == inherits) && profile_print_params_same(edited.config, cfg)) // Just point to that already selected and edited profile. - return std::make_pair(&(*this->find_preset_internal(edited.name)), false); + return ExternalPreset(&(*this->find_preset_internal(edited.name)), false); } // Is there a preset already loaded with the name stored inside the config? std::deque::iterator it = this->find_preset_internal(original_name); @@ -851,11 +832,11 @@ std::pair PresetCollection::load_external_preset( it = this->find_preset_renamed(original_name); found = it != m_presets.end(); } - if (found && profile_print_params_same(it->config, cfg)) { - // The preset exists and it matches the values stored inside config. + if (found && profile_print_params_same(it->config, cfg) && it->is_visible) { + // The preset exists and is visible and it matches the values stored inside config. if (select == LoadAndSelect::Always) this->select_preset(it - m_presets.begin()); - return std::make_pair(&(*it), false); + return ExternalPreset(&(*it), false); } if (! found && select != LoadAndSelect::Never && ! inherits.empty()) { // Try to use a system profile as a base to select the system profile @@ -867,19 +848,25 @@ std::pair PresetCollection::load_external_preset( // The system preset exists and it matches the values stored inside config. if (select == LoadAndSelect::Always) this->select_preset(it - m_presets.begin()); - return std::make_pair(&(*it), false); + return ExternalPreset(&(*it), false); } } if (found) { if (select != LoadAndSelect::Never) { + const size_t idx = it - m_presets.begin(); + // The newly selected preset can be activated AND have to be make as visible. + bool is_installed = !m_presets[idx].is_visible; // Select the existing preset and override it with new values, so that // the differences will be shown in the preset editor against the referenced profile. - this->select_preset(it - m_presets.begin()); + this->select_preset(idx); + + // update dirty state only if it's needed + if (!profile_print_params_same(it->config, cfg)) { // The source config may contain keys from many possible preset types. Just copy those that relate to this preset. // Following keys are not used neither by the UI nor by the slicing core, therefore they are not important - // Erase them from config appl to avoid redundant "dirty" parameter in loaded preset. - for (const char* key : { "print_settings_id", "filament_settings_id", "sla_print_settings_id", "sla_material_settings_id", "printer_settings_id", + // Erase them from config apply to avoid redundant "dirty" parameter in loaded preset. + for (const char* key : { "print_settings_id", "filament_settings_id", "sla_print_settings_id", "sla_material_settings_id", "printer_settings_id", "filament_vendor", "printer_model", "printer_variant", "default_print_profile", "default_filament_profile", "default_sla_print_profile", "default_sla_material_profile" }) keys.erase(std::remove(keys.begin(), keys.end(), key), keys.end()); @@ -888,7 +875,8 @@ std::pair PresetCollection::load_external_preset( // Don't save the newly loaded project as a "saved into project" state. //update_saved_preset_from_current_preset(); assert(this->get_edited_preset().is_dirty); - return std::make_pair(&(*it), this->get_edited_preset().is_dirty); + } + return ExternalPreset(&(*it), this->get_edited_preset().is_dirty, is_installed); } if (inherits.empty()) { // Update the "inherits" field. @@ -919,7 +907,7 @@ std::pair PresetCollection::load_external_preset( // The preset exists and it matches the values stored inside config. if (select == LoadAndSelect::Always) this->select_preset(it - m_presets.begin()); - return std::make_pair(&(*it), false); + return ExternalPreset(&(*it), false); } // Form another profile name. } @@ -929,7 +917,7 @@ std::pair PresetCollection::load_external_preset( if (this->m_idx_selected != size_t(-1) && &this->get_selected_preset() == &preset) this->get_edited_preset().is_external = true; - return std::make_pair(&preset, false); + return ExternalPreset(&preset, false); } Preset& PresetCollection::load_preset(const std::string &path, const std::string &name, DynamicPrintConfig &&config, bool select) @@ -1350,9 +1338,6 @@ static const std::set independent_from_extruder_number_options = { "filament_ramming_parameters", "gcode_substitutions", "post_process", - "thumbnails", -//Y18 - "bed_exclude_area", }; bool PresetCollection::is_independent_from_extruder_number_option(const std::string& opt_key) @@ -1376,6 +1361,15 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi } else if (opt_key == "default_filament_profile") { // Ignore this field, it is not presented to the user, therefore showing a "modified" flag for this parameter does not help. // Also the length of this field may differ, which may lead to a crash if the block below is used. + } else if (opt_key == "thumbnails") { + // "thumbnails" can not contain extensions in old config but they are valid and use PNG extension by default + // So, check if "thumbnails" is really changed + // We will compare full thumbnails instead of exactly config values + auto [thumbnails, er] = GCodeThumbnails::make_and_check_thumbnail_list(config_this); + auto [thumbnails_new, er_new] = GCodeThumbnails::make_and_check_thumbnail_list(config_other); + if (thumbnails != thumbnails_new || er != er_new) + // if those strings are actually the same, erase them from the list of dirty oprions + diff.emplace_back(opt_key); } else { switch (other_opt->type()) { case coInts: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; @@ -1387,6 +1381,12 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi case coFloatsOrPercents: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; default: diff.emplace_back(opt_key); break; } + // "nozzle_diameter" is a vector option which contain info about diameter for each nozzle + // But in the same time size of this vector indicates about count of extruders, + // So, we need to add it to the diff if its size is changed. + if (opt_key == "nozzle_diameter" && + static_cast(this_opt)->size() != static_cast(other_opt)->size()) + diff.emplace_back(opt_key); } } } @@ -1399,7 +1399,14 @@ bool PresetCollection::is_dirty(const Preset *edited, const Preset *reference) { if (edited != nullptr && reference != nullptr) { // Only compares options existing in both configs. - if (! reference->config.equals(edited->config)) + bool is_dirty = !reference->config.equals(edited->config); + if (is_dirty && edited->type != Preset::TYPE_FILAMENT) { + // for non-filaments preset check deep difference for compared configs + // there can be cases (as for thumbnails), when configs can logically equal + // even when their values are not equal. + is_dirty = !deep_diff(edited->config, reference->config).empty(); + } + if (is_dirty) return true; // The "compatible_printers" option key is handled differently from the others: // It is not mandatory. If the key is missing, it means it is compatible with any printer. @@ -1810,7 +1817,8 @@ std::string PhysicalPrinter::get_preset_name(std::string name) // *** PhysicalPrinterCollection *** // ----------------------------------- -PhysicalPrinterCollection::PhysicalPrinterCollection( const std::vector& keys) +PhysicalPrinterCollection::PhysicalPrinterCollection( const std::vector& keys, PresetBundle* preset_bundle) + :m_preset_bundle_owner(preset_bundle) { // Default config for a physical printer containing all key/value pairs of PhysicalPrinter::printer_options(). for (const std::string &key : keys) { @@ -1821,6 +1829,27 @@ PhysicalPrinterCollection::PhysicalPrinterCollection( const std::vector& preset_names, const PrinterPresetCollection& printer_presets) +{ + std::set new_names; + + bool was_renamed{ false }; + for (const std::string& preset_name : preset_names) { + const Preset* preset = printer_presets.find_preset(preset_name); + if (preset) + new_names.emplace(preset_name); + else { + if (const std::string* new_name = printer_presets.get_preset_name_renamed(preset_name)) { + BOOST_LOG_TRIVIAL(warning) << "Printer preset present " << preset_name << "was renamed to: " << *new_name << std::endl; + new_names.emplace(*new_name); + was_renamed = true; + } + } + } + + if (was_renamed) + preset_names = new_names; +} // Load all printers found in dir_path. // Throws an exception on error. void PhysicalPrinterCollection::load_printers( @@ -1839,10 +1868,13 @@ void PhysicalPrinterCollection::load_printers( std::string name = dir_entry.path().filename().string(); // Remove the .ini suffix. name.erase(name.size() - 4); - if (this->find_printer(name, false)) { + if (PhysicalPrinter* found_printer = this->find_printer(name, false)) { // This happens when there's is a preset (most likely legacy one) with the same name as a system preset // that's already been loaded from a bundle. BOOST_LOG_TRIVIAL(warning) << "Printer already present, not loading: " << name; + // But some of used printer_preset might have been renamed. + // Check it and replace with new name(s) if it's needed + update_preset_names_if_were_renamed(found_printer->preset_names, m_preset_bundle_owner->printers); continue; } try { @@ -1856,6 +1888,9 @@ void PhysicalPrinterCollection::load_printers( substitutions.push_back({ name, Preset::TYPE_PHYSICAL_PRINTER, PresetConfigSubstitutions::Source::UserFile, printer.file, std::move(config_substitutions) }); printer.update_from_config(config); printer.loaded = true; + // Some of used printer_preset might have been renamed. + // Check it and replace with new name(s) if it's needed + update_preset_names_if_were_renamed(printer.preset_names, m_preset_bundle_owner->printers); } catch (const std::ifstream::failure& err) { throw Slic3r::RuntimeError(std::string("The selected preset cannot be loaded: ") + printer.file + "\n\tReason: " + err.what()); @@ -1887,6 +1922,9 @@ void PhysicalPrinterCollection::load_printer(const std::string& path, const std: it->file = path; it->config = std::move(config); it->loaded = true; + // Some of used printer_preset might have been renamed. + // Check it and replace with new name(s) if it's needed + update_preset_names_if_were_renamed(it->preset_names, m_preset_bundle_owner->printers); if (select) this->select_printer(*it); @@ -2142,6 +2180,9 @@ void PhysicalPrinterCollection::select_printer(const std::string& full_name) m_selected_preset = *it->preset_names.begin(); else m_selected_preset = it->get_preset_name(full_name); + // Check if selected preset wasn't renamed and replace it with new name + if (const std::string* new_name = m_preset_bundle_owner->printers.get_preset_name_renamed(m_selected_preset)) + m_selected_preset = *new_name; } void PhysicalPrinterCollection::select_printer(const std::string& printer_name, const std::string& preset_name) @@ -2361,6 +2402,15 @@ namespace PresetUtils { } return true; } + bool compare_vendor_profile_printers(const VendorProfile& vp_old, const VendorProfile& vp_new, std::vector& new_printers) + { + for (const VendorProfile::PrinterModel& model : vp_new.models) + { + if (std::find_if(vp_old.models.begin(), vp_old.models.end(), [model](const VendorProfile::PrinterModel& pm) { return pm.id == model.id; }) == vp_old.models.end()) + new_printers.push_back(model.name); + } + return new_printers.empty(); + } } // namespace PresetUtils } // namespace Slic3r diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index bcde1cf..83e4189 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -41,19 +41,6 @@ public: PrinterVariant(const std::string &name) : name(name) {} std::string name; }; - //B19 - struct PrinterEmail - { - PrinterEmail() {} - PrinterEmail(const std::string &name) : name(name) {} - std::string name; - }; - struct PrinterSkype - { - PrinterSkype() {} - PrinterSkype(const std::string &name) : name(name) {} - std::string name; - }; struct PrinterModel { PrinterModel() {} @@ -62,9 +49,6 @@ public: PrinterTechnology technology; std::string family; std::vector variants; - //B19 - std::vector emails; - std::vector skypes; std::vector default_materials; // Vendor & Printer Model specific print bed model & texture. std::string bed_model; @@ -77,23 +61,7 @@ public: return &v; return nullptr; } - //B19 - PrinterEmail* email(const std::string &name) { - for (auto &v : this->emails) - if (v.name == name) - return &v; - return nullptr; - } - PrinterSkype* skype(const std::string &name) { - for (auto &v : this->skypes) - if (v.name == name) - return &v; - return nullptr; - } - //B19 const PrinterVariant* variant(const std::string &name) const { return const_cast(this)->variant(name); } - const PrinterEmail* email(const std::string &name) const { return const_cast(this)->email(name); } - const PrinterSkype* skype(const std::string &name) const { return const_cast(this)->skype(name); } }; std::vector models; @@ -109,10 +77,7 @@ public: // If `load_all` is false, only the header with basic info (name, version, URLs) is loaded. static VendorProfile from_ini(const boost::filesystem::path &path, bool load_all=true); static VendorProfile from_ini(const boost::property_tree::ptree &tree, const boost::filesystem::path &path, bool load_all=true); - //B19 size_t num_variants() const { size_t n = 0; for (auto &model : models) n += model.variants.size(); return n; } - size_t num_emails() const { size_t n = 0; for (auto &model : models) n += model.emails.size(); return n; } - size_t num_skypes() const { size_t n = 0; for (auto &model : models) n += model.skypes.size(); return n; } std::vector families() const; bool operator< (const VendorProfile &rhs) const { return this->id < rhs.id; } @@ -308,6 +273,20 @@ struct PresetConfigSubstitutions { ConfigSubstitutions substitutions; }; +// This struct is used to get an information about loaded external preset +struct ExternalPreset +{ + Preset* preset { nullptr }; + bool is_modified { false }; + bool is_installed { false }; + + ExternalPreset(Preset* preset, bool modified, bool installed = false) + : preset(preset) + , is_modified(modified) + , is_installed(installed) {} + + virtual ~ExternalPreset() = default; +}; // Substitutions having been performed during parsing a set of configuration files, for example when starting up // QIDISlicer and reading the user Print / Filament / Printer profiles. using PresetsConfigSubstitutions = std::vector; @@ -359,7 +338,7 @@ public: // Select a profile only if it was modified. OnlyIfModified, }; - std::pair load_external_preset( + ExternalPreset load_external_preset( // Path to the profile source file (a G-code, an AMF or 3MF file, a config file) const std::string &path, // Name of the profile, derived from the source file name. @@ -640,10 +619,7 @@ public: PresetCollection(type, keys, defaults, default_name) {} const Preset& default_preset_for(const DynamicPrintConfig &config) const override; - //B19 const Preset* find_system_preset_by_model_and_variant(const std::string &model_id, const std::string &variant) const; - const Preset* find_system_preset_by_model_and_email(const std::string &model_id, const std::string &email) const; - const Preset* find_system_preset_by_model_and_skype(const std::string &model_id, const std::string &skype) const; bool only_default_printers() const; private: @@ -660,6 +636,7 @@ namespace PresetUtils { std::string system_printer_bed_model(const Preset& preset); std::string system_printer_bed_texture(const Preset& preset); bool vendor_profile_has_all_resources(const VendorProfile& vp); + bool compare_vendor_profile_printers(const VendorProfile& vp_old, const VendorProfile& vp_new, std::vector& new_printers); } // namespace PresetUtils @@ -741,7 +718,7 @@ protected: class PhysicalPrinterCollection { public: - PhysicalPrinterCollection(const std::vector& keys); + PhysicalPrinterCollection(const std::vector& keys, PresetBundle* preset_bundle); typedef std::deque::iterator Iterator; typedef std::deque::const_iterator ConstIterator; @@ -862,6 +839,7 @@ private: // Path to the directory to store the config files into. std::string m_dir_path; + const PresetBundle* m_preset_bundle_owner{ nullptr }; }; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index a69dd42..185fc86 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -22,6 +22,7 @@ #include #include +#include // Store the print/filament/printer presets into a "presets" subdirectory of the Slic3rPE config dir. // This breaks compatibility with the upstream Slic3r if the --datadir is used to switch between the two versions. @@ -43,7 +44,7 @@ PresetBundle::PresetBundle() : sla_materials(Preset::TYPE_SLA_MATERIAL, Preset::sla_material_options(), static_cast(SLAFullPrintConfig::defaults())), sla_prints(Preset::TYPE_SLA_PRINT, Preset::sla_print_options(), static_cast(SLAFullPrintConfig::defaults())), printers(Preset::TYPE_PRINTER, Preset::printer_options(), static_cast(FullPrintConfig::defaults()), "- default FFF -"), - physical_printers(PhysicalPrinter::printer_options()) + physical_printers(PhysicalPrinter::printer_options(), this) { // The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes, // therefore they need to be handled differently. As they have no counterpart in StaticPrintConfig, they are not being @@ -401,6 +402,11 @@ void PresetBundle::update_system_maps() this->sla_materials.update_map_system_profile_renamed(); this->printers .update_map_system_profile_renamed(); + update_alias_maps(); +} + +void PresetBundle::update_alias_maps() +{ this->prints .update_map_alias_to_profile_name(); this->sla_prints .update_map_alias_to_profile_name(); this->filaments .update_map_alias_to_profile_name(); @@ -650,10 +656,11 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p auto printer_technology = printers.get_selected_preset().printer_technology(); if (printer_technology == ptFFF && ! preferred_selection.filament.empty()) { const std::string& preferred_preset_name = get_preset_name_by_alias(Preset::Type::TYPE_FILAMENT, preferred_selection.filament, 0); - if (auto it = filaments.find_preset_internal(preferred_preset_name); - it != filaments.end() && it->is_visible && it->is_compatible) { + ExtruderFilaments& extruder_frst = this->extruders_filaments.front(); + if (auto it = extruder_frst.find_filament_internal(preferred_preset_name); + it != extruder_frst.end() && it->preset->is_visible && it->is_compatible) { + if (extruder_frst.select_filament(preferred_preset_name)) filaments.select_preset_by_name_strict(preferred_preset_name); - this->extruders_filaments.front().select_filament(filaments.get_selected_preset_name()); } } else if (printer_technology == ptSLA && ! preferred_selection.sla_material.empty()) { const std::string& preferred_preset_name = get_preset_name_by_alias(Preset::Type::TYPE_SLA_MATERIAL, preferred_selection.sla_material); @@ -878,9 +885,16 @@ DynamicPrintConfig PresetBundle::full_sla_config() const ConfigSubstitutions PresetBundle::load_config_file(const std::string &path, ForwardCompatibilitySubstitutionRule compatibility_rule) { if (is_gcode_file(path)) { + FILE* file = boost::nowide::fopen(path.c_str(), "rb"); + if (file == nullptr) + throw Slic3r::RuntimeError(format("Error opening file %1%", path)); + std::vector cs_buffer(65536); + const bool is_binary = bgcode::core::is_valid_binary_gcode(*file, true, cs_buffer.data(), cs_buffer.size()) == bgcode::core::EResult::Success; + fclose(file); DynamicPrintConfig config; config.apply(FullPrintConfig::defaults()); - ConfigSubstitutions config_substitutions = config.load_from_gcode_file(path, compatibility_rule); + ConfigSubstitutions config_substitutions = is_binary ? config.load_from_binary_gcode_file(path, compatibility_rule) : + config.load_from_gcode_file(path, compatibility_rule); Preset::normalize(config); load_config_file_config(path, true, std::move(config)); return config_substitutions; @@ -937,6 +951,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool { PrinterTechnology printer_technology = Preset::printer_technology(config); + tmp_installed_presets.clear(); // The "compatible_printers" field should not have been exported into a config.ini or a G-code anyway, // but some of the alpha versions of Slic3r did. { @@ -985,19 +1000,23 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // 2) If the loading succeeded, split and load the config into print / filament / printer settings. // First load the print and printer presets. + std::set& tmp_installed_presets_ref = tmp_installed_presets; auto load_preset = [&config, &inherits, &inherits_values, &compatible_printers_condition, &compatible_printers_condition_values, &compatible_prints_condition, &compatible_prints_condition_values, - is_external, &name, &name_or_path] + is_external, &name, &name_or_path, &tmp_installed_presets_ref] (PresetCollection &presets, size_t idx, const std::string &key) { // Split the "compatible_printers_condition" and "inherits" values one by one from a single vector to the print & printer profiles. inherits = inherits_values[idx]; compatible_printers_condition = compatible_printers_condition_values[idx]; if (idx > 0 && idx - 1 < compatible_prints_condition_values.size()) compatible_prints_condition = compatible_prints_condition_values[idx - 1]; - if (is_external) - presets.load_external_preset(name_or_path, name, config.opt_string(key, true), config); + if (is_external) { + ExternalPreset ext_preset = presets.load_external_preset(name_or_path, name, config.opt_string(key, true), config); + if (ext_preset.is_installed) + tmp_installed_presets_ref.emplace(ext_preset.preset->name); + } else presets.load_preset(presets.path_from_name(name), name, config).save(); }; @@ -1019,8 +1038,12 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool compatible_printers_condition = compatible_printers_condition_values[1]; compatible_prints_condition = compatible_prints_condition_values.front(); Preset *loaded = nullptr; - if (is_external) - loaded = this->filaments.load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config).first; + if (is_external) { + ExternalPreset ext_preset = this->filaments.load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config); + loaded = ext_preset.preset; + if (ext_preset.is_installed) + tmp_installed_presets.emplace(ext_preset.preset->name); + } else { // called from Config Wizard. loaded= &this->filaments.load_preset(this->filaments.path_from_name(name), name, config); @@ -1054,13 +1077,15 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool cfg.opt_string("compatible_prints_condition", true) = compatible_prints_condition_values[i]; cfg.opt_string("inherits", true) = inherits_values[i + 1]; // Load all filament presets, but only select the first one in the preset dialog. - auto [loaded, modified] = this->filaments.load_external_preset(name_or_path, name, + auto [loaded, modified, installed] = this->filaments.load_external_preset(name_or_path, name, (i < int(old_filament_profile_names->values.size())) ? old_filament_profile_names->values[i] : "", std::move(cfg), any_modified ? PresetCollection::LoadAndSelect::Never : PresetCollection::LoadAndSelect::OnlyIfModified); any_modified |= modified; extr_names[i] = loaded->name; + if (installed) + tmp_installed_presets.emplace(loaded->name); } // Check if some preset was selected after loading from config file. @@ -1100,6 +1125,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool else this->physical_printers.unselect_printer(); } + update_alias_maps(); } // Load the active configuration of a config bundle from a boost property_tree. This is a private method called from load_config_file. @@ -1178,6 +1204,7 @@ ConfigSubstitutions PresetBundle::load_config_file_config_bundle( this->extruders_filaments[i].select_filament(load_one(this->filaments, tmp_bundle.filaments, tmp_bundle.extruders_filaments[i].get_selected_preset_name(), false)); this->update_compatible(PresetSelectCompatibleType::Never); + update_alias_maps(); sort_remove_duplicates(config_substitutions); return config_substitutions; @@ -1667,6 +1694,7 @@ std::pair PresetBundle::load_configbundle( this->update_compatible(PresetSelectCompatibleType::Never); } + update_alias_maps(); return std::make_pair(std::move(substitutions), presets_loaded + ph_printers_loaded); } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 4387b54..fc38ecf 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -78,6 +78,7 @@ public: }; ObsoletePresets obsolete_presets; + std::set tmp_installed_presets; bool has_defauls_only() const { return prints.has_defaults_only() && filaments.has_defaults_only() && printers.has_defaults_only(); } @@ -174,6 +175,8 @@ private: std::vector merge_presets(PresetBundle &&other); // Update renamed_from and alias maps of system profiles. void update_system_maps(); + // Update alias maps + void update_alias_maps(); // Set the is_visible flag for filaments and sla materials, // apply defaults based on enabled printers when no filaments/materials are installed. diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 211a6d0..9502adf 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -60,8 +60,6 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "autoemit_temperature_commands", "avoid_crossing_perimeters", "avoid_crossing_perimeters_max_detour", - //Y18 - "bed_exclude_area", "bed_shape", "bed_temperature", "before_layer_gcode", @@ -123,7 +121,13 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "perimeter_acceleration", "post_process", "gcode_substitutions", + "gcode_binary", "printer_notes", + "travel_ramping_lift", + "travel_initial_part_length", + "travel_slope", + "travel_max_lift", + "travel_lift_before_obstacle", "retract_before_travel", "retract_before_wipe", "retract_layer_change", @@ -420,13 +424,16 @@ bool Print::sequential_print_horizontal_clearance_valid(const Print& print, Poly // appropriate object distance. Even if I set this to jtMiter the warning still shows up. Geometry::Transformation trafo = model_instance0->get_transformation(); trafo.set_offset({ 0.0, 0.0, model_instance0->get_offset().z() }); - it_convex_hull = map_model_object_to_convex_hull.emplace_hint(it_convex_hull, model_object_id, - offset(print_object->model_object()->convex_hull_2d(trafo.get_matrix()), + Polygon ch2d = print_object->model_object()->convex_hull_2d(trafo.get_matrix()); + Polygons offs_ch2d = offset(ch2d, // Shrink the extruder_clearance_radius a tiny bit, so that if the object arrangement algorithm placed the objects // exactly by satisfying the extruder_clearance_radius, this test will not trigger collision. - float(scale_(0.5 * print.config().extruder_clearance_radius.value - BuildVolume::BedEpsilon)), - jtRound, scale_(0.1)).front()); + float(scale_(0.5 * print.config().extruder_clearance_radius.value - BuildVolume::BedEpsilon)), jtRound, scale_(0.1)); + // for invalid geometries the vector returned by offset() may be empty + if (!offs_ch2d.empty()) + it_convex_hull = map_model_object_to_convex_hull.emplace_hint(it_convex_hull, model_object_id, offs_ch2d.front()); } + if (it_convex_hull != map_model_object_to_convex_hull.end()) { // Make a copy, so it may be rotated for instances. Polygon convex_hull0 = it_convex_hull->second; const double z_diff = Geometry::rotation_diff_z(model_instance0->get_matrix(), print_object->instances().front().model_instance->get_matrix()); @@ -452,6 +459,7 @@ bool Print::sequential_print_horizontal_clearance_valid(const Print& print, Poly convex_hulls_other.emplace_back(std::move(convex_hull)); } } + } if (!intersecting_idxs.empty()) { // use collected indices (inside convex_hulls_other) to update output @@ -942,8 +950,10 @@ void Print::process() tbb::parallel_for(tbb::blocked_range(0, m_objects.size(), 1), [this](const tbb::blocked_range &range) { for (size_t idx = range.begin(); idx < range.end(); ++idx) { - m_objects[idx]->generate_support_material(); - m_objects[idx]->estimate_curled_extrusions(); + PrintObject &obj = *m_objects[idx]; + obj.generate_support_material(); + obj.estimate_curled_extrusions(); + obj.calculate_overhanging_perimeters(); } }, tbb::simple_partitioner()); @@ -996,12 +1006,13 @@ void Print::process() this->set_done(psSkirtBrim); } - std::optional wipe_tower_opt = {}; if (this->has_wipe_tower()) { - m_fake_wipe_tower.set_pos_and_rotation({ m_config.wipe_tower_x, m_config.wipe_tower_y }, m_config.wipe_tower_rotation_angle); - wipe_tower_opt = std::make_optional(&m_fake_wipe_tower); + // These values have to be updated here, not during wipe tower generation. + // When the wipe tower is moved/rotated, it is not regenerated. + m_wipe_tower_data.position = { m_config.wipe_tower_x, m_config.wipe_tower_y }; + m_wipe_tower_data.rotation_angle = m_config.wipe_tower_rotation_angle; } - auto conflictRes = ConflictChecker::find_inter_of_lines_in_diff_objs(m_objects, wipe_tower_opt); + auto conflictRes = ConflictChecker::find_inter_of_lines_in_diff_objs(objects(), m_wipe_tower_data); m_conflict_result = conflictRes; if (conflictRes.has_value()) @@ -1030,7 +1041,7 @@ std::string Print::export_gcode(const std::string& path_template, GCodeProcessor this->set_status(90, message); // Create GCode on heap, it has quite a lot of data. - std::unique_ptr gcode(new GCode); + std::unique_ptr gcode(new GCodeGenerator); gcode->do_export(this, path.c_str(), result, thumbnail_cb); if (m_conflict_result.has_value()) @@ -1146,13 +1157,15 @@ void Print::_make_skirt() } // Extrude the skirt loop. ExtrusionLoop eloop(elrSkirt); - eloop.paths.emplace_back(ExtrusionPath( - ExtrusionPath( + eloop.paths.emplace_back( + ExtrusionAttributes{ ExtrusionRole::Skirt, - (float)mm3_per_mm, // this will be overridden at G-code export time + ExtrusionFlow{ + float(mm3_per_mm), // this will be overridden at G-code export time flow.width(), - (float)first_layer_height // this will be overridden at G-code export time - ))); + float(first_layer_height) // this will be overridden at G-code export time + } + }); eloop.paths.back().polyline = loop.split_at_first_point(); m_skirt.append(eloop); if (m_config.min_skirt_length.value > 0) { @@ -1559,9 +1572,9 @@ void Print::_make_wipe_tower() m_wipe_tower_data.used_filament = wipe_tower.get_used_filament(); m_wipe_tower_data.number_of_toolchanges = wipe_tower.get_number_of_toolchanges(); - const Vec3d origin = Vec3d::Zero(); - m_fake_wipe_tower.set_fake_extrusion_data(wipe_tower.position(), wipe_tower.width(), wipe_tower.get_wipe_tower_height(), config().first_layer_height, m_wipe_tower_data.depth, - m_wipe_tower_data.z_and_depth_pairs, m_wipe_tower_data.brim_width, config().wipe_tower_rotation_angle, config().wipe_tower_cone_angle, {scale_(origin.x()), scale_(origin.y())}); + m_wipe_tower_data.width = wipe_tower.width(); + m_wipe_tower_data.first_layer_height = config().first_layer_height; + m_wipe_tower_data.cone_angle = config().wipe_tower_cone_angle; } @@ -1578,6 +1591,25 @@ std::string Print::output_filename(const std::string &filename_base) const return this->PrintBase::output_filename(m_config.output_filename_format.value, ".gcode", filename_base, &config); } +const std::string PrintStatistics::FilamentUsedG = "filament used [g]"; +const std::string PrintStatistics::FilamentUsedGMask = "; filament used [g] ="; + +const std::string PrintStatistics::TotalFilamentUsedG = "total filament used [g]"; +const std::string PrintStatistics::TotalFilamentUsedGMask = "; total filament used [g] ="; +const std::string PrintStatistics::TotalFilamentUsedGValueMask = "; total filament used [g] = %.2lf\n"; + +const std::string PrintStatistics::FilamentUsedCm3 = "filament used [cm3]"; +const std::string PrintStatistics::FilamentUsedCm3Mask = "; filament used [cm3] ="; + +const std::string PrintStatistics::FilamentUsedMm = "filament used [mm]"; +const std::string PrintStatistics::FilamentUsedMmMask = "; filament used [mm] ="; + +const std::string PrintStatistics::FilamentCost = "filament cost"; +const std::string PrintStatistics::FilamentCostMask = "; filament cost ="; + +const std::string PrintStatistics::TotalFilamentCost = "total filament cost"; +const std::string PrintStatistics::TotalFilamentCostMask = "; total filament cost ="; +const std::string PrintStatistics::TotalFilamentCostValueMask = "; total filament cost = %.2lf\n"; DynamicConfig PrintStatistics::config() const { DynamicConfig config; @@ -1631,80 +1663,5 @@ std::string PrintStatistics::finalize_output_path(const std::string &path_in) co return final_path; } - std::vector FakeWipeTower::getFakeExtrusionPathsFromWipeTower() const - { - float h = height; - float lh = layer_height; - int d = scale_(depth); - int w = scale_(width); - int bd = scale_(brim_width); - Point minCorner = { -bd, -bd }; - Point maxCorner = { minCorner.x() + w + bd, minCorner.y() + d + bd }; - - const auto [cone_base_R, cone_scale_x] = WipeTower::get_wipe_tower_cone_base(width, height, depth, cone_angle); - - std::vector paths; - for (float hh = 0.f; hh < h; hh += lh) { - - if (hh != 0.f) { - // The wipe tower may be getting smaller. Find the depth for this layer. - size_t i = 0; - for (i=0; i= z_and_depth_pairs[i].first && hh < z_and_depth_pairs[i+1].first) - break; - d = scale_(z_and_depth_pairs[i].second); - minCorner = {0.f, -d/2 + scale_(z_and_depth_pairs.front().second/2.f)}; - maxCorner = { minCorner.x() + w, minCorner.y() + d }; - } - - - ExtrusionPath path(ExtrusionRole::WipeTower, 0.0, 0.0, lh); - path.polyline = { minCorner, {maxCorner.x(), minCorner.y()}, maxCorner, {minCorner.x(), maxCorner.y()}, minCorner }; - paths.push_back({ path }); - - // We added the border, now add several parallel lines so we can detect an object that is fully inside the tower. - // For now, simply use fixed spacing of 3mm. - for (coord_t y=minCorner.y()+scale_(3.); y 0.) { - path.polyline.clear(); - double r = cone_base_R * (1 - hh/height); - for (double alpha=0; alpha<2.01*M_PI; alpha+=2*M_PI/20.) - path.polyline.points.emplace_back(Point::new_scale(width/2. + r * std::cos(alpha)/cone_scale_x, depth/2. + r * std::sin(alpha))); - paths.back().emplace_back(path); - if (hh == 0.f) { // Cone brim. - for (float bw=brim_width; bw>0.f; bw-=3.f) { - path.polyline.clear(); - for (double alpha=0; alpha<2.01*M_PI; alpha+=2*M_PI/20.) // see load_wipe_tower_preview, where the same is a bit clearer - path.polyline.points.emplace_back(Point::new_scale( - width/2. + cone_base_R * std::cos(alpha)/cone_scale_x * (1. + cone_scale_x*bw/cone_base_R), - depth/2. + cone_base_R * std::sin(alpha) * (1. + bw/cone_base_R)) - ); - paths.back().emplace_back(path); - } - } - } - - // Only the first layer has brim. - if (hh == 0.f) { - minCorner = minCorner + Point(bd, bd); - maxCorner = maxCorner - Point(bd, bd); - } - } - - // Rotate and translate the tower into the final position. - for (ExtrusionPaths& ps : paths) { - for (ExtrusionPath& p : ps) { - p.polyline.rotate(Geometry::deg2rad(rotation_angle)); - p.polyline.translate(scale_(pos.x()), scale_(pos.y())); - } - } - - return paths; - } } // namespace Slic3r diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index f071f28..739932e 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -29,7 +29,7 @@ namespace Slic3r { -class GCode; +class GCodeGenerator; class Layer; class ModelObject; class Print; @@ -67,7 +67,7 @@ enum PrintStep : unsigned int { enum PrintObjectStep : unsigned int { posSlice, posPerimeters, posPrepareInfill, - posInfill, posIroning, posSupportSpotsSearch, posSupportMaterial, posEstimateCurledExtrusions, posCount, + posInfill, posIroning, posSupportSpotsSearch, posSupportMaterial, posEstimateCurledExtrusions, posCalculateOverhangingPerimeters, posCount, }; // A PrintRegion object represents a group of volumes to print @@ -376,6 +376,7 @@ private: void generate_support_spots(); void generate_support_material(); void estimate_curled_extrusions(); + void calculate_overhanging_perimeters(); void slice_volumes(); // Has any support (not counting the raft). @@ -420,38 +421,7 @@ private: FillLightning::GeneratorPtr m_lightning_generator; }; -struct FakeWipeTower -{ - // generate fake extrusion - Vec2f pos; - float width; - float height; - float layer_height; - float depth; - std::vector> z_and_depth_pairs; - float brim_width; - float rotation_angle; - float cone_angle; - Vec2d plate_origin; - void set_fake_extrusion_data(const Vec2f& p, float w, float h, float lh, float d, const std::vector>& zad, float bd, float ra, float ca, const Vec2d& o) - { - pos = p; - width = w; - height = h; - layer_height = lh; - depth = d; - z_and_depth_pairs = zad; - brim_width = bd; - rotation_angle = ra; - cone_angle = ca; - plate_origin = o; - } - - void set_pos_and_rotation(const Vec2f& p, float rotation) { pos = p; rotation_angle = rotation; } - - std::vector getFakeExtrusionPathsFromWipeTower() const; -}; struct WipeTowerData { @@ -472,6 +442,12 @@ struct WipeTowerData float brim_width; float height; + // Data needed to generate fake extrusions for conflict checking. + float width; + float first_layer_height; + float cone_angle; + Vec2d position; + float rotation_angle; void clear() { priming.reset(nullptr); tool_changes.clear(); @@ -479,7 +455,14 @@ struct WipeTowerData used_filament.clear(); number_of_toolchanges = -1; depth = 0.f; + z_and_depth_pairs.clear(); brim_width = 0.f; + height = 0.f; + width = 0.f; + first_layer_height = 0.f; + cone_angle = 0.f; + position = Vec2d::Zero(); + rotation_angle = 0.f; } private: @@ -530,6 +513,20 @@ struct PrintStatistics filament_stats.clear(); printing_extruders.clear(); } + static const std::string FilamentUsedG; + static const std::string FilamentUsedGMask; + static const std::string TotalFilamentUsedG; + static const std::string TotalFilamentUsedGMask; + static const std::string TotalFilamentUsedGValueMask; + static const std::string FilamentUsedCm3; + static const std::string FilamentUsedCm3Mask; + static const std::string FilamentUsedMm; + static const std::string FilamentUsedMmMask; + static const std::string FilamentCost; + static const std::string FilamentCostMask; + static const std::string TotalFilamentCost; + static const std::string TotalFilamentCostMask; + static const std::string TotalFilamentCostValueMask; }; using PrintObjectPtrs = std::vector; @@ -699,14 +696,13 @@ private: Polygons m_sequential_print_clearance_contours; // To allow GCode to set the Print's GCodeExport step status. - friend class GCode; + friend class GCodeGenerator; // To allow GCodeProcessor to emit warnings. friend class GCodeProcessor; // Allow PrintObject to access m_mutex and m_cancel_callback. friend class PrintObject; ConflictResultOpt m_conflict_result; - FakeWipeTower m_fake_wipe_tower; }; } /* slic3r_Print_hpp_ */ diff --git a/src/libslic3r/PrintBase.cpp b/src/libslic3r/PrintBase.cpp index 01c0ecf..dc3078e 100644 --- a/src/libslic3r/PrintBase.cpp +++ b/src/libslic3r/PrintBase.cpp @@ -17,7 +17,7 @@ void PrintTryCancel::operator()() const size_t PrintStateBase::g_last_timestamp = 0; // Update "scale", "input_filename", "input_filename_base" placeholders from the current m_objects. -void PrintBase::update_object_placeholders(DynamicConfig &config, const std::string &default_ext) const +void PrintBase::update_object_placeholders(DynamicConfig &config, const std::string & /* default_output_ext */) const { // get the first input file name std::string input_file; @@ -50,7 +50,7 @@ void PrintBase::update_object_placeholders(DynamicConfig &config, const std::str // get basename with and without suffix const std::string input_filename = boost::filesystem::path(input_file).filename().string(); const std::string input_filename_base = input_filename.substr(0, input_filename.find_last_of(".")); - config.set_key_value("input_filename", new ConfigOptionString(input_filename_base + default_ext)); +// config.set_key_value("input_filename", new ConfigOptionString(input_filename_base + default_output_ext)); config.set_key_value("input_filename_base", new ConfigOptionString(input_filename_base)); } } @@ -66,7 +66,7 @@ std::string PrintBase::output_filename(const std::string &format, const std::str PlaceholderParser::update_timestamp(cfg); this->update_object_placeholders(cfg, default_ext); if (! filename_base.empty()) { - cfg.set_key_value("input_filename", new ConfigOptionString(filename_base + default_ext)); +// cfg.set_key_value("input_filename", new ConfigOptionString(filename_base + default_ext)); cfg.set_key_value("input_filename_base", new ConfigOptionString(filename_base)); } try { diff --git a/src/libslic3r/PrintBase.hpp b/src/libslic3r/PrintBase.hpp index 9c95255..600a6cb 100644 --- a/src/libslic3r/PrintBase.hpp +++ b/src/libslic3r/PrintBase.hpp @@ -548,7 +548,7 @@ protected: // To be called by this->output_filename() with the format string pulled from the configuration layer. std::string output_filename(const std::string &format, const std::string &default_ext, const std::string &filename_base, const DynamicConfig *config_override = nullptr) const; // Update "scale", "input_filename", "input_filename_base" placeholders from the current printable ModelObjects. - void update_object_placeholders(DynamicConfig &config, const std::string &default_ext) const; + void update_object_placeholders(DynamicConfig &config, const std::string &default_output_ext) const; Model m_model; DynamicPrintConfig m_full_print_config; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 29e86f4..6447e47 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1,8 +1,10 @@ #include "PrintConfig.hpp" #include "Config.hpp" #include "I18N.hpp" +#include "format.hpp" #include "SLA/SupportTree.hpp" +#include "GCode/Thumbnails.hpp" #include #include @@ -34,6 +36,11 @@ static t_config_enum_names enum_names_from_keys_map(const t_config_enum_values & template<> const t_config_enum_values& ConfigOptionEnum::get_enum_values() { return s_keys_map_##NAME; } \ template<> const t_config_enum_names& ConfigOptionEnum::get_enum_names() { return s_keys_names_##NAME; } +static const t_config_enum_values s_keys_map_ArcFittingType { + { "disabled", int(ArcFittingType::Disabled) }, + { "emit_center", int(ArcFittingType::EmitCenter) } +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(ArcFittingType) static t_config_enum_values s_keys_map_PrinterTechnology { { "FFF", ptFFF }, { "SLA", ptSLA } @@ -199,8 +206,13 @@ static const t_config_enum_values s_keys_map_DraftShield = { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(DraftShield) +static const t_config_enum_values s_keys_map_LabelObjectsStyle = { + { "disabled", int(LabelObjectsStyle::Disabled) }, + { "octoprint", int(LabelObjectsStyle::Octoprint) }, + { "firmware", int(LabelObjectsStyle::Firmware) } +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(LabelObjectsStyle) static const t_config_enum_values s_keys_map_GCodeThumbnailsFormat = { - { "QIDI", int(GCodeThumbnailsFormat::QIDI) }, { "PNG", int(GCodeThumbnailsFormat::PNG) }, { "JPG", int(GCodeThumbnailsFormat::JPG) }, { "QOI", int(GCodeThumbnailsFormat::QOI) } @@ -259,15 +271,6 @@ void PrintConfigDef::init_common_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionPoints{ Vec2d(0, 0), Vec2d(200, 0), Vec2d(200, 200), Vec2d(0, 200) }); - //Y18 - def = this->add("bed_exclude_area", coPoints); - def->label = L("Bed exclude area"); - def->tooltip = L("Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament during filament change. " - "The area is expressed as polygon by points in following format: \"XxY, XxY, ...\""); - def->mode = comExpert; - def->gui_type = ConfigOptionDef::GUIType::one_string; - def->set_default_value(new ConfigOptionPoints{ Vec2d(0, 0) }); - def = this->add("bed_custom_texture", coString); def->label = L("Bed custom texture"); def->mode = comAdvanced; @@ -288,20 +291,20 @@ void PrintConfigDef::init_common_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.)); - def = this->add("thumbnails", coPoints); + def = this->add("thumbnails", coString); def->label = L("G-code thumbnails"); - def->tooltip = L("Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ...\""); + def->tooltip = L("Picture sizes to be stored into a .gcode / .bgcode and .sl1 / .sl1s files, in the following format: \"XxY/EXT, XxY/EXT, ...\"\n" + "Currently supported extensions are PNG, QOI and JPG."); def->mode = comExpert; def->gui_type = ConfigOptionDef::GUIType::one_string; - def->set_default_value(new ConfigOptionPoints()); + def->set_default_value(new ConfigOptionString()); def = this->add("thumbnails_format", coEnum); def->label = L("Format of G-code thumbnails"); def->tooltip = L("Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low memory firmware"); def->mode = comExpert; - //B3 - def->set_enum({ "QIDI","PNG", "JPG", "QOI" }); - def->set_default_value(new ConfigOptionEnum(GCodeThumbnailsFormat::QIDI)); + def->set_enum({"PNG", "JPG", "QOI" }); + def->set_default_value(new ConfigOptionEnum(GCodeThumbnailsFormat::PNG)); def = this->add("layer_height", coFloat); def->label = L("Layer height"); @@ -408,6 +411,16 @@ void PrintConfigDef::init_fff_params() { ConfigOptionDef* def; + def = this->add("arc_fitting", coEnum); + def->label = L("Arc fitting"); + def->tooltip = L("Enable to get a G-code file which has G2 and G3 moves. " + "G-code resolution will be used as the fitting tolerance."); + def->set_enum({ + { "disabled", "Disabled" }, + { "emit_center", "Enabled: G2/3 I J" } + }); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionEnum(ArcFittingType::Disabled)); // Maximum extruder temperature, bumped to 1500 to support printing of glass. const int max_temp = 1500; def = this->add("avoid_crossing_curled_overhangs", coBool); @@ -1512,13 +1525,20 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionEnum(gcfRepRapSprinter)); - def = this->add("gcode_label_objects", coBool); + def = this->add("gcode_label_objects", coEnum); def->label = L("Label objects"); - def->tooltip = L("Enable this to add comments into the G-Code labeling print moves with what object they belong to," - " which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with " - "Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill."); + def->tooltip = L("Selects whether labels should be exported at object boundaries and in what format.\n" + "OctoPrint = comments to be consumed by OctoPrint CancelObject plugin.\n" + "Firmware = firmware specific G-code (it will be chosen based on firmware flavor and it can end up to be empty).\n\n" + "This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill."); + + def->set_enum({ + { "disabled", L("Disabled") }, + { "octoprint", L("OctoPrint comments") }, + { "firmware", L("Firmware-specific") } + }); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(0)); + def->set_default_value(new ConfigOptionEnum(LabelObjectsStyle::Disabled)); def = this->add("gcode_substitutions", coStrings); def->label = L("G-code substitutions"); @@ -1526,6 +1546,11 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionStrings()); + def = this->add("gcode_binary", coBool); + def->label = L("Export as binary G-code"); + def->tooltip = L("Export G-code in binary format."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBool(0)); def = this->add("high_current_on_filament_swap", coBool); def->label = L("High extruder current on filament swap"); def->tooltip = L("It may be beneficial to increase the extruder motor current during the filament exchange" @@ -2121,7 +2146,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Output filename format"); def->tooltip = L("You can use all configuration options as variables inside this template. " "For example: [layer_height], [fill_density] etc. You can also use [timestamp], " - "[year], [month], [day], [hour], [minute], [second], [version], [input_filename], " + "[year], [month], [day], [hour], [minute], [second], [version], " "[input_filename_base], [default_output_extension]."); def->full_width = true; def->mode = comExpert; @@ -2359,7 +2384,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBools { false }); def = this->add("retract_length", coFloats); - def->label = L("Length"); + def->label = L("Retraction length"); def->full_label = L("Retraction Length"); def->tooltip = L("When retraction is triggered, filament is pulled back by the specified amount " "(the length is measured on raw filament, before it enters the extruder)."); @@ -2376,12 +2401,46 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionFloats { 10. }); - def = this->add("retract_lift", coFloats); - def->label = L("Lift Z"); - def->tooltip = L("If you set this to a positive value, Z is quickly raised every time a retraction " - "is triggered. When using multiple extruders, only the setting for the first extruder " - "will be considered."); + def = this->add("travel_slope", coFloats); + def->label = L("Ramping slope angle"); + def->tooltip = L("Slope of the ramp in the initial phase of the travel."); + def->sidetext = L("°"); + def->min = 0; + def->max = 90; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats{0.0}); + + def = this->add("travel_ramping_lift", coBools); + def->label = L("Use ramping lift"); + def->tooltip = L("Generates a ramping lift instead of lifting the extruder directly upwards. " + "The travel is split into two phases: the ramp and the standard horizontal travel. " + "This option helps reduce stringing."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBools{ false }); + + def = this->add("travel_max_lift", coFloats); + def->label = L("Maximum ramping lift"); + def->tooltip = L("Maximum lift height of the ramping lift. It may not be reached if the next position " + "is close to the old one."); def->sidetext = L("mm"); + def->min = 0; + def->max_literal = 1000; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats{0.0}); + + def = this->add("travel_lift_before_obstacle", coBools); + def->label = L("Steeper ramp before obstacles"); + def->tooltip = L("If enabled, PrusaSlicer detects obstacles along the travel path and makes the slope steeper " + "in case an obstacle might be hit during the initial phase of the travel."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBools{false}); + def = this->add("retract_lift", coFloats); + def->label = L("Lift height"); + def->tooltip = L("Lift height applied before travel."); + def->sidetext = L("mm"); + def->min = 0; + def->max_literal = 1000; + def->mode = comSimple; def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_above", coFloats); @@ -2404,7 +2463,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_restart_extra", coFloats); - def->label = L("Extra length on restart"); + def->label = L("Deretraction extra length"); def->tooltip = L("When the retraction is compensated after the travel move, the extruder will push " "this additional amount of filament. This setting is rarely needed."); def->sidetext = L("mm"); @@ -2529,7 +2588,7 @@ void PrintConfigDef::init_fff_params() def = this->add("small_perimeter_speed", coFloatOrPercent); def->label = L("Small perimeters"); def->category = L("Speed"); - def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= 4mm " + def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= 6.5mm " "(usually holes). If expressed as percentage (for example: 80%) it will be calculated " "on the perimeters speed setting above. Set to zero for auto."); def->sidetext = L("mm/s or %"); @@ -3144,17 +3203,6 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); - def = this->add("threads", coInt); - def->label = L("Threads"); - def->tooltip = L("Threads are used to parallelize long-running tasks. Optimal threads number " - "is slightly above the number of available cores/processors."); - def->readonly = true; - def->min = 1; - { - int threads = (unsigned int)boost::thread::hardware_concurrency(); - def->set_default_value(new ConfigOptionInt(threads > 0 ? threads : 2)); - def->cli = ConfigOptionDef::nocli; - } def = this->add("toolchange_gcode", coString); def->label = L("Tool change G-code"); @@ -3235,8 +3283,8 @@ void PrintConfigDef::init_fff_params() def = this->add("use_firmware_retraction", coBool); def->label = L("Use firmware retraction"); - def->tooltip = L("This experimental setting uses G10 and G11 commands to have the firmware " - "handle the retraction. This is only supported in recent Marlin."); + def->tooltip = L("This setting uses G10 and G11 commands to have the firmware " + "handle the retraction. Note that this has to be supported by firmware."); def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); @@ -3525,14 +3573,15 @@ void PrintConfigDef::init_fff_params() for (const char *opt_key : { // floats "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", + "travel_max_lift", "deretract_speed", "retract_restart_extra", "retract_before_travel", "retract_length_toolchange", "retract_restart_extra_toolchange", //B34 "filament_diameter", "extrusion_multiplier", // bools - "retract_layer_change", "wipe", + "retract_layer_change", "wipe", "travel_lift_before_obstacle", "travel_ramping_lift", // percents - "retract_before_wipe"}) { + "retract_before_wipe", "travel_slope"}) { auto it_opt = options.find(opt_key); assert(it_opt != options.end()); def = this->add_nullable(std::string("filament_") + opt_key, it_opt->second.type); @@ -3567,6 +3616,7 @@ void PrintConfigDef::init_extruder_option_keys() "nozzle_diameter", "min_layer_height", "max_layer_height", "extruder_offset", "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", "deretract_speed", "retract_before_wipe", "retract_restart_extra", "retract_before_travel", "wipe", + "travel_slope", "travel_max_lift", "travel_ramping_lift", "travel_lift_before_obstacle", "retract_layer_change", "retract_length_toolchange", "retract_restart_extra_toolchange", "extruder_colour", //B34 "filament_diameter", @@ -3590,6 +3640,10 @@ void PrintConfigDef::init_extruder_option_keys() "retract_restart_extra", "retract_restart_extra_toolchange", "retract_speed", + "travel_lift_before_obstacle", + "travel_max_lift", + "travel_ramping_lift", + "travel_slope", "wipe" }; assert(std::is_sorted(m_extruder_retract_keys.begin(), m_extruder_retract_keys.end())); @@ -4457,6 +4511,10 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va } else if (opt_key == "draft_shield" && (value == "1" || value == "0")) { // draft_shield used to be a bool, it was turned into an enum in QIDISlicer 2.4.0. value = value == "1" ? "enabled" : "disabled"; + } else if (opt_key == "gcode_label_objects" && (value == "1" || value == "0")) { + // gcode_label_objects used to be a bool (the behavior was nothing or "octoprint"), it is + // and enum since PrusaSlicer 2.6.2. + value = value == "1" ? "octoprint" : "disabled"; } else if (opt_key == "octoprint_host") { opt_key = "print_host"; } else if (opt_key == "octoprint_cafile") { @@ -4496,6 +4554,35 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va // Don't convert single options here, implement such conversion in PrintConfigDef::handle_legacy() instead. void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) { + if (config.has("thumbnails")) { + std::string extention; + if (config.has("thumbnails_format")) { + if (const ConfigOptionDef* opt = config.def()->get("thumbnails_format")) { + auto label = opt->enum_def->enum_to_label(config.option("thumbnails_format")->getInt()); + if (label.has_value()) + extention = *label; + } + } + + std::string thumbnails_str = config.opt_string("thumbnails"); + auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(thumbnails_str, extention); + + if (errors != enum_bitmask()) { + std::string error_str = "\n" + format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); + error_str += GCodeThumbnails::get_error_string(errors); + throw BadOptionValueException(error_str); + } + + if (!thumbnails_list.empty()) { + const auto& extentions = ConfigOptionEnum::get_enum_names(); + thumbnails_str.clear(); + for (const auto& [ext, size] : thumbnails_list) + thumbnails_str += format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); + thumbnails_str.resize(thumbnails_str.length() - 2); + + config.set_key_value("thumbnails", new ConfigOptionString(thumbnails_str)); + } + } } const PrintConfigDef print_config_def; @@ -5138,6 +5225,309 @@ void DynamicPrintAndCLIConfig::handle_legacy(t_config_option_key &opt_key, std:: } } +// SlicingStatesConfigDefs + +ReadOnlySlicingStatesConfigDef::ReadOnlySlicingStatesConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("zhop", coFloat); + def->label = L("Current z-hop"); + def->tooltip = L("Contains z-hop present at the beginning of the custom G-code block."); +} + +ReadWriteSlicingStatesConfigDef::ReadWriteSlicingStatesConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("position", coFloats); + def->label = L("Position"); + def->tooltip = L("Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, " + "it should write to this variable so PrusaSlicer knows where it travels from when it gets control back."); + + def = this->add("e_retracted", coFloats); + def->label = L("Retraction"); + def->tooltip = L("Retraction state at the beginning of the custom G-code block. If the custom G-code moves the extruder axis, " + "it should write to this variable so PrusaSlicer deretracts correctly when it gets control back."); + + def = this->add("e_restart_extra", coFloats); + def->label = L("Extra deretraction"); + def->tooltip = L("Currently planned extra extruder priming after deretraction."); + + def = this->add("e_position", coFloats); + def->label = L("Absolute E position"); + def->tooltip = L("Current position of the extruder axis. Only used with absolute extruder addressing."); +} + +OtherSlicingStatesConfigDef::OtherSlicingStatesConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("current_extruder", coInt); + def->label = L("Current extruder"); + def->tooltip = L("Zero-based index of currently used extruder."); + + def = this->add("current_object_idx", coInt); + def->label = L("Current object index"); + def->tooltip = L("Specific for sequential printing. Zero-based index of currently printed object."); + + def = this->add("has_single_extruder_multi_material_priming", coBool); + def->label = L("Has single extruder MM priming"); + def->tooltip = L("Are the extra multi-material priming regions used in this print?"); + + def = this->add("has_wipe_tower", coBool); + def->label = L("Has wipe tower"); + def->tooltip = L("Whether or not wipe tower is being generated in the print."); + + def = this->add("initial_extruder", coInt); + def->label = L("Initial extruder"); + def->tooltip = L("Zero-based index of the first extruder used in the print. Same as initial_tool."); + + def = this->add("initial_filament_type", coString); + // TRN: Meaning 'filament type of the initial filament' + def->label = L("Initial filament type"); + def->tooltip = L("String containing filament type of the first used extruder."); + + def = this->add("initial_tool", coInt); + def->label = L("Initial tool"); + def->tooltip = L("Zero-based index of the first extruder used in the print. Same as initial_extruder."); + + def = this->add("is_extruder_used", coBools); + def->label = L("Is extruder used?"); + def->tooltip = L("Vector of booleans stating whether a given extruder is used in the print."); +} + +PrintStatisticsConfigDef::PrintStatisticsConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("extruded_volume", coFloats); + def->label = L("Volume per extruder"); + def->tooltip = L("Total filament volume extruded per extruder during the entire print."); + + def = this->add("normal_print_time", coString); + def->label = L("Print time (normal mode)"); + def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as print_time."); + + def = this->add("num_printing_extruders", coInt); + def->label = L("Number of printing extruders"); + def->tooltip = L("Number of extruders used during the print."); + + def = this->add("print_time", coString); + def->label = L("Print time (normal mode)"); + def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as normal_print_time."); + + def = this->add("printing_filament_types", coString); + def->label = L("Used filament types"); + def->tooltip = L("Comma-separated list of all filament types used during the print."); + + def = this->add("silent_print_time", coString); + def->label = L("Print time (silent mode)"); + def->tooltip = L("Estimated print time when printed in silent mode."); + + def = this->add("total_cost", coFloat); + def->label = L("Total cost"); + def->tooltip = L("Total cost of all material used in the print. Calculated from cost in Filament Settings."); + + def = this->add("total_weight", coFloat); + def->label = L("Total weight"); + def->tooltip = L("Total weight of the print. Calculated from density in Filament Settings."); + + def = this->add("total_wipe_tower_cost", coFloat); + def->label = L("Total wipe tower cost"); + def->tooltip = L("Total cost of the material wasted on the wipe tower. Calculated from cost in Filament Settings."); + + def = this->add("total_wipe_tower_filament", coFloat); + def->label = L("Wipe tower volume"); + def->tooltip = L("Total filament volume extruded on the wipe tower."); + + def = this->add("used_filament", coFloat); + def->label = L("Used filament"); + def->tooltip = L("Total length of filament used in the print."); + + def = this->add("total_toolchanges", coInt); + def->label = L("Total number of toolchanges"); + def->tooltip = L("Number of toolchanges during the print."); + + def = this->add("extruded_volume_total", coFloat); + def->label = L("Total volume"); + def->tooltip = L("Total volume of filament used during the entire print."); + + def = this->add("extruded_weight", coFloats); + def->label = L("Weight per extruder"); + def->tooltip = L("Weight per extruder extruded during the entire print. Calculated from density in Filament Settings."); + + def = this->add("extruded_weight_total", coFloat); + def->label = L("Total weight"); + def->tooltip = L("Total weight of the print. Calculated from density in Filament Settings."); + + def = this->add("total_layer_count", coInt); + def->label = L("Total layer count"); + def->tooltip = L("Number of layers in the entire print."); +} + +ObjectsInfoConfigDef::ObjectsInfoConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("num_objects", coInt); + def->label = L("Number of objects"); + def->tooltip = L("Total number of objects in the print."); + + def = this->add("num_instances", coInt); + def->label = L("Number of instances"); + def->tooltip = L("Total number of object instances in the print, summed over all objects."); + + def = this->add("scale", coStrings); + def->label = L("Scale per object"); + def->tooltip = L("Contains a string with the information about what scaling was applied to the individual objects. " + "Indexing of the objects is zero-based (first object has index 0).\n" + "Example: 'x:100% y:50% z:100%'."); + + def = this->add("input_filename_base", coString); + def->label = L("Input filename without extension"); + def->tooltip = L("Source filename of the first object, without extension."); +} + +DimensionsConfigDef::DimensionsConfigDef() +{ + ConfigOptionDef* def; + + const std::string point_tooltip = L("The vector has two elements: x and y coordinate of the point. Values in mm."); + const std::string bb_size_tooltip = L("The vector has two elements: x and y dimension of the bounding box. Values in mm."); + + def = this->add("first_layer_print_convex_hull", coPoints); + def->label = L("First layer convex hull"); + def->tooltip = L("Vector of points of the first layer convex hull. Each element has the following format: " + "'[x, y]' (x and y are floating-point numbers in mm)."); + + def = this->add("first_layer_print_min", coFloats); + def->label = L("Bottom-left corner of first layer bounding box"); + def->tooltip = point_tooltip; + + def = this->add("first_layer_print_max", coFloats); + def->label = L("Top-right corner of first layer bounding box"); + def->tooltip = point_tooltip; + + def = this->add("first_layer_print_size", coFloats); + def->label = L("Size of the first layer bounding box"); + def->tooltip = bb_size_tooltip; + + def = this->add("print_bed_min", coFloats); + def->label = L("Bottom-left corner of print bed bounding box"); + def->tooltip = point_tooltip; + + def = this->add("print_bed_max", coFloats); + def->label = L("Top-right corner of print bed bounding box"); + def->tooltip = point_tooltip; + + def = this->add("print_bed_size", coFloats); + def->label = L("Size of the print bed bounding box"); + def->tooltip = bb_size_tooltip; +} + +TimestampsConfigDef::TimestampsConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("timestamp", coString); + def->label = L("Timestamp"); + def->tooltip = L("String containing current time in yyyyMMdd-hhmmss format."); + + def = this->add("year", coInt); + def->label = L("Year"); + + def = this->add("month", coInt); + def->label = L("Month"); + + def = this->add("day", coInt); + def->label = L("Day"); + + def = this->add("hour", coInt); + def->label = L("Hour"); + + def = this->add("minute", coInt); + def->label = L("Minute"); + + def = this->add("second", coInt); + def->label = L("Second"); +} + +OtherPresetsConfigDef::OtherPresetsConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("num_extruders", coInt); + def->label = L("Number of extruders"); + def->tooltip = L("Total number of extruders, regardless of whether they are used in the current print."); + + def = this->add("print_preset", coString); + def->label = L("Print preset name"); + def->tooltip = L("Name of the print preset used for slicing."); + + def = this->add("filament_preset", coStrings); + def->label = L("Filament preset name"); + def->tooltip = L("Names of the filament presets used for slicing. The variable is a vector " + "containing one name for each extruder."); + + def = this->add("printer_preset", coString); + def->label = L("Printer preset name"); + def->tooltip = L("Name of the printer preset used for slicing."); + + def = this->add("physical_printer_preset", coString); + def->label = L("Physical printer name"); + def->tooltip = L("Name of the physical printer used for slicing."); +} + + +static std::map s_CustomGcodeSpecificPlaceholders{ + {"start_filament_gcode", {"layer_num", "layer_z", "max_layer_z", "filament_extruder_id"}}, + {"end_filament_gcode", {"layer_num", "layer_z", "max_layer_z", "filament_extruder_id"}}, + {"end_gcode", {"layer_num", "layer_z", "max_layer_z", "filament_extruder_id"}}, + {"before_layer_gcode", {"layer_num", "layer_z", "max_layer_z"}}, + {"layer_gcode", {"layer_num", "layer_z", "max_layer_z"}}, + {"toolchange_gcode", {"layer_num", "layer_z", "max_layer_z", "previous_extruder", "next_extruder", "toolchange_z"}}, +}; + +const std::map& custom_gcode_specific_placeholders() +{ + return s_CustomGcodeSpecificPlaceholders; +} + +CustomGcodeSpecificConfigDef::CustomGcodeSpecificConfigDef() +{ + ConfigOptionDef* def; + + def = this->add("layer_num", coInt); + def->label = L("Layer number"); + def->tooltip = L("Zero-based index of the current layer (i.e. first layer is number 0)."); + + def = this->add("layer_z", coFloat); + def->label = L("Layer Z"); + def->tooltip = L("Height of the current layer above the print bed, measured to the top of the layer."); + + def = this->add("max_layer_z", coFloat); + def->label = L("Maximal layer Z"); + def->tooltip = L("Height of the last layer above the print bed."); + + def = this->add("filament_extruder_id", coInt); + def->label = L("Current extruder index"); + def->tooltip = L("Zero-based index of currently used extruder (i.e. first extruder has index 0)."); + + def = this->add("previous_extruder", coInt); + def->label = L("Previous extruder"); + def->tooltip = L("Index of the extruder that is being unloaded. The index is zero based (first extruder has index 0)."); + + def = this->add("next_extruder", coInt); + def->label = L("Next extruder"); + def->tooltip = L("Index of the extruder that is being loaded. The index is zero based (first extruder has index 0)."); + + def = this->add("toolchange_z", coFloat); + def->label = L("Toolchange Z"); + def->tooltip = L("Height above the print bed when the toolchange takes place. Usually the same as layer_z, but can be different."); +} + +const CustomGcodeSpecificConfigDef custom_gcode_specific_config_def; uint64_t ModelConfig::s_last_timestamp = 1; static Points to_points(const std::vector &dpts) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 589193b..c24be44 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -30,6 +30,10 @@ namespace Slic3r { +enum class ArcFittingType { + Disabled, + EmitCenter +}; enum GCodeFlavor : unsigned char { gcfRepRapSprinter, gcfRepRapFirmware, gcfRepetier, gcfTeacup, gcfMakerWare, gcfMarlinLegacy, gcfMarlinFirmware, gcfKlipper, gcfSailfish, gcfMach3, gcfMachinekit, gcfSmoothie, gcfNoExtrusion, @@ -124,6 +128,9 @@ enum DraftShield { dsDisabled, dsLimited, dsEnabled }; +enum class LabelObjectsStyle { + Disabled, Octoprint, Firmware +}; enum class PerimeterGeneratorType { // Classic perimeter generator using Clipper offsets with constant extrusion width. @@ -132,15 +139,15 @@ enum class PerimeterGeneratorType // "A framework for adaptive width control of dense contour-parallel toolpaths in fused deposition modeling" ported from Cura. Arachne }; -//B3 enum class GCodeThumbnailsFormat { - QIDI, PNG, JPG, QOI + PNG, JPG, QOI }; #define CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(NAME) \ template<> const t_config_enum_names& ConfigOptionEnum::get_enum_names(); \ template<> const t_config_enum_values& ConfigOptionEnum::get_enum_values(); +CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(ArcFittingType) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(PrinterTechnology) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(GCodeFlavor) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(MachineLimitsUsage) @@ -159,6 +166,7 @@ CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLAPillarConnectionMode) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLASupportTreeType) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(BrimType) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(DraftShield) +CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(LabelObjectsStyle) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(GCodeThumbnailsFormat) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(ForwardCompatibilitySubstitutionRule) CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(PerimeterGeneratorType) @@ -676,6 +684,7 @@ PRINT_CONFIG_CLASS_DEFINE( PRINT_CONFIG_CLASS_DEFINE( GCodeConfig, + ((ConfigOptionEnum, arc_fitting)) ((ConfigOptionBool, autoemit_temperature_commands)) ((ConfigOptionString, before_layer_gcode)) ((ConfigOptionString, between_objects_gcode)) @@ -708,18 +717,23 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloats, filament_multitool_ramming_flow)) ((ConfigOptionBool, gcode_comments)) ((ConfigOptionEnum, gcode_flavor)) - ((ConfigOptionBool, gcode_label_objects)) + ((ConfigOptionEnum, gcode_label_objects)) // Triples of strings: "search pattern", "replace with pattern", "attribs" // where "attribs" are one of: // r - regular expression // i - case insensitive // w - whole word ((ConfigOptionStrings, gcode_substitutions)) + ((ConfigOptionBool, gcode_binary)) ((ConfigOptionString, layer_gcode)) ((ConfigOptionFloat, max_print_speed)) ((ConfigOptionFloat, max_volumetric_speed)) ((ConfigOptionFloat, max_volumetric_extrusion_rate_slope_positive)) ((ConfigOptionFloat, max_volumetric_extrusion_rate_slope_negative)) + ((ConfigOptionBools, travel_ramping_lift)) + ((ConfigOptionFloats, travel_max_lift)) + ((ConfigOptionFloats, travel_slope)) + ((ConfigOptionBools, travel_lift_before_obstacle)) ((ConfigOptionPercents, retract_before_wipe)) ((ConfigOptionFloats, retract_length)) ((ConfigOptionFloats, retract_length_toolchange)) @@ -774,8 +788,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionBool, avoid_crossing_perimeters)) ((ConfigOptionFloatOrPercent, avoid_crossing_perimeters_max_detour)) ((ConfigOptionPoints, bed_shape)) - //Y18 - ((ConfigOptionPoints, bed_exclude_area)) ((ConfigOptionInts, bed_temperature)) //Y16 ((ConfigOptionBool, chamber_temperature)) @@ -856,7 +868,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInt, standby_temperature_delta)) ((ConfigOptionInts, temperature)) ((ConfigOptionInt, threads)) - ((ConfigOptionPoints, thumbnails)) + ((ConfigOptionString, thumbnails)) ((ConfigOptionEnum, thumbnails_format)) ((ConfigOptionFloat, top_solid_infill_acceleration)) ((ConfigOptionFloat, travel_acceleration)) @@ -1193,6 +1205,67 @@ public: CLIMiscConfigDef(); }; +typedef std::string t_custom_gcode_key; +// This map containes list of specific placeholders for each custom G-code, if any exist +const std::map& custom_gcode_specific_placeholders(); + +// Next classes define placeholders used by GUI::EditGCodeDialog. + +class ReadOnlySlicingStatesConfigDef : public ConfigDef +{ +public: + ReadOnlySlicingStatesConfigDef(); +}; + +class ReadWriteSlicingStatesConfigDef : public ConfigDef +{ +public: + ReadWriteSlicingStatesConfigDef(); +}; + +class OtherSlicingStatesConfigDef : public ConfigDef +{ +public: + OtherSlicingStatesConfigDef(); +}; + +class PrintStatisticsConfigDef : public ConfigDef +{ +public: + PrintStatisticsConfigDef(); +}; + +class ObjectsInfoConfigDef : public ConfigDef +{ +public: + ObjectsInfoConfigDef(); +}; + +class DimensionsConfigDef : public ConfigDef +{ +public: + DimensionsConfigDef(); +}; + +class TimestampsConfigDef : public ConfigDef +{ +public: + TimestampsConfigDef(); +}; + +class OtherPresetsConfigDef : public ConfigDef +{ +public: + OtherPresetsConfigDef(); +}; + +// This classes defines all custom G-code specific placeholders. +class CustomGcodeSpecificConfigDef : public ConfigDef +{ +public: + CustomGcodeSpecificConfigDef(); +}; +extern const CustomGcodeSpecificConfigDef custom_gcode_specific_config_def; // This class defines the command line options representing actions. extern const CLIActionsConfigDef cli_actions_config_def; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 8694d2e..8732483 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -3,7 +3,9 @@ #include "ExPolygon.hpp" #include "Exception.hpp" #include "Flow.hpp" +#include "GCode/ExtrusionProcessor.hpp" #include "KDTreeIndirect.hpp" +#include "Line.hpp" #include "Point.hpp" #include "Polygon.hpp" #include "Polyline.hpp" @@ -533,6 +535,64 @@ void PrintObject::estimate_curled_extrusions() } } +void PrintObject::calculate_overhanging_perimeters() +{ + if (this->set_started(posCalculateOverhangingPerimeters)) { + BOOST_LOG_TRIVIAL(debug) << "Calculating overhanging perimeters - start"; + m_print->set_status(89, _u8L("Calculating overhanging perimeters")); + std::vector extruders; + std::unordered_set regions_with_dynamic_speeds; + for (const PrintRegion *pr : this->print()->m_print_regions) { + if (pr->config().enable_dynamic_overhang_speeds.getBool()) { + regions_with_dynamic_speeds.insert(pr); + } + extruders.clear(); + pr->collect_object_printing_extruders(*this->print(), extruders); + auto cfg = this->print()->config(); + if (std::any_of(extruders.begin(), extruders.end(), + [&cfg](unsigned int extruder_id) { return cfg.enable_dynamic_fan_speeds.get_at(extruder_id); })) { + regions_with_dynamic_speeds.insert(pr); + } + } + + if (!regions_with_dynamic_speeds.empty()) { + std::unordered_map> curled_lines; + std::unordered_map> unscaled_polygons_lines; + for (const Layer *l : this->layers()) { + curled_lines[l->id()] = AABBTreeLines::LinesDistancer{l->curled_lines}; + unscaled_polygons_lines[l->id()] = AABBTreeLines::LinesDistancer{to_unscaled_linesf(l->lslices)}; + } + curled_lines[size_t(-1)] = {}; + unscaled_polygons_lines[size_t(-1)] = {}; + + tbb::parallel_for(tbb::blocked_range(0, m_layers.size()), [this, &curled_lines, &unscaled_polygons_lines, + ®ions_with_dynamic_speeds]( + const tbb::blocked_range &range) { + PRINT_OBJECT_TIME_LIMIT_MILLIS(PRINT_OBJECT_TIME_LIMIT_DEFAULT); + for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { + auto l = m_layers[layer_idx]; + if (l->id() == 0) { // first layer, do not split + continue; + } + for (LayerRegion *layer_region : l->regions()) { + if (regions_with_dynamic_speeds.find(layer_region->m_region) == regions_with_dynamic_speeds.end()) { + continue; + } + size_t prev_layer_id = l->lower_layer ? l->lower_layer->id() : size_t(-1); + layer_region->m_perimeters = + ExtrusionProcessor::calculate_and_split_overhanging_extrusions(&layer_region->m_perimeters, + unscaled_polygons_lines[prev_layer_id], + curled_lines[l->id()]); + } + } + }); + + m_print->throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) << "Calculating overhanging perimeters - end"; + } + this->set_done(posCalculateOverhangingPerimeters); + } +} std::pair PrintObject::prepare_adaptive_infill_data( const std::vector> &surfaces_w_bottom_z) const { @@ -644,7 +704,8 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "first_layer_extrusion_width" || opt_key == "perimeter_extrusion_width" || opt_key == "infill_overlap" - || opt_key == "external_perimeters_first") { + || opt_key == "external_perimeters_first" + || opt_key == "arc_fitting") { steps.emplace_back(posPerimeters); } else if ( opt_key == "gap_fill_enabled" @@ -848,7 +909,7 @@ bool PrintObject::invalidate_step(PrintObjectStep step) // propagate to dependent steps if (step == posPerimeters) { - invalidated |= this->invalidate_steps({ posPrepareInfill, posInfill, posIroning, posSupportSpotsSearch, posEstimateCurledExtrusions }); + invalidated |= this->invalidate_steps({ posPrepareInfill, posInfill, posIroning, posSupportSpotsSearch, posEstimateCurledExtrusions, posCalculateOverhangingPerimeters }); invalidated |= m_print->invalidate_steps({ psSkirtBrim }); } else if (step == posPrepareInfill) { invalidated |= this->invalidate_steps({ posInfill, posIroning, posSupportSpotsSearch}); @@ -857,7 +918,7 @@ bool PrintObject::invalidate_step(PrintObjectStep step) invalidated |= m_print->invalidate_steps({ psSkirtBrim }); } else if (step == posSlice) { invalidated |= this->invalidate_steps({posPerimeters, posPrepareInfill, posInfill, posIroning, posSupportSpotsSearch, - posSupportMaterial, posEstimateCurledExtrusions}); + posSupportMaterial, posEstimateCurledExtrusions, posCalculateOverhangingPerimeters}); invalidated |= m_print->invalidate_steps({ psSkirtBrim }); m_slicing_params.valid = false; } else if (step == posSupportMaterial) { @@ -1554,7 +1615,7 @@ void PrintObject::discover_vertical_shells() to_polygons(m_layers[idx_layer + 1]->lslices) : Polygons{}; object_volume = intersection(shrinked_bottom_slice, shrinked_upper_slice); - internal_volume = closing(polygonsInternal, SCALED_EPSILON); + internal_volume = closing(polygonsInternal, float(SCALED_EPSILON)); } // The regularization operation may cause scattered tiny drops on the smooth parts of the model, filter them out diff --git a/src/libslic3r/ShortestPath.cpp b/src/libslic3r/ShortestPath.cpp index da1a44e..5f56f19 100644 --- a/src/libslic3r/ShortestPath.cpp +++ b/src/libslic3r/ShortestPath.cpp @@ -1006,16 +1006,20 @@ std::vector> chain_segments_greedy2(SegmentEndPointFunc return chain_segments_greedy_constrained_reversals2_(end_point_func, could_reverse_func, num_segments, start_near); } -std::vector> chain_extrusion_entities(std::vector &entities, const Point *start_near) +std::vector> chain_extrusion_entities(const std::vector &entities, const Point *start_near, const bool reversed) { - auto segment_end_point = [&entities](size_t idx, bool first_point) -> const Point& { return first_point ? entities[idx]->first_point() : entities[idx]->last_point(); }; + auto segment_end_point = [&entities, reversed](size_t idx, bool first_point) -> const Point& { return first_point == reversed ? entities[idx]->last_point() : entities[idx]->first_point(); }; auto could_reverse = [&entities](size_t idx) { const ExtrusionEntity *ee = entities[idx]; return ee->is_loop() || ee->can_reverse(); }; - std::vector> out = chain_segments_greedy_constrained_reversals(segment_end_point, could_reverse, entities.size(), start_near); + std::vector> out = chain_segments_greedy_constrained_reversals( + segment_end_point, could_reverse, entities.size(), start_near); for (std::pair &segment : out) { ExtrusionEntity *ee = entities[segment.first]; if (ee->is_loop()) // Ignore reversals for loops, as the start point equals the end point. segment.second = false; + else if (reversed) + // Input was already reversed. + segment.second = ! segment.second; // Is can_reverse() respected by the reversals? assert(ee->can_reverse() || ! segment.second); } @@ -1041,6 +1045,32 @@ void chain_and_reorder_extrusion_entities(std::vector &entitie reorder_extrusion_entities(entities, chain_extrusion_entities(entities, start_near)); } +ExtrusionEntityReferences chain_extrusion_references(const std::vector &entities, const Point *start_near, const bool reversed) +{ + const std::vector> chain = chain_extrusion_entities(entities, start_near, reversed); + ExtrusionEntityReferences out; + out.reserve(chain.size()); + for (const std::pair &idx : chain) { + assert(entities[idx.first] != nullptr); + out.push_back({ *entities[idx.first], idx.second }); + } + return out; +} + +ExtrusionEntityReferences chain_extrusion_references(const ExtrusionEntityCollection &eec, const Point *start_near, const bool reversed) +{ + if (eec.no_sort) { + ExtrusionEntityReferences out; + out.reserve(eec.entities.size()); + for (const ExtrusionEntity *ee : eec.entities) { + assert(ee != nullptr); + // Never reverse a loop. + out.push_back({ *ee, ! ee->is_loop() && reversed }); + } + return out; + } else + return chain_extrusion_references(eec.entities, start_near, reversed); +} std::vector> chain_extrusion_paths(std::vector &extrusion_paths, const Point *start_near) { auto segment_end_point = [&extrusion_paths](size_t idx, bool first_point) -> const Point& { return first_point ? extrusion_paths[idx].first_point() : extrusion_paths[idx].last_point(); }; diff --git a/src/libslic3r/ShortestPath.hpp b/src/libslic3r/ShortestPath.hpp index 1781c51..f009433 100644 --- a/src/libslic3r/ShortestPath.hpp +++ b/src/libslic3r/ShortestPath.hpp @@ -18,13 +18,24 @@ namespace Slic3r { class ExPolygon; using ExPolygons = std::vector; +// Used by chain_expolygons() std::vector chain_points(const Points &points, Point *start_near = nullptr); +// Used to give layer islands a print order. std::vector chain_expolygons(const ExPolygons &expolygons, Point *start_near = nullptr); -std::vector> chain_extrusion_entities(std::vector &entities, const Point *start_near = nullptr); +// Chain extrusion entities by a shortest distance. Returns the ordered extrusions together with a "reverse" flag. +// Set input "reversed" to true if the vector of "entities" is to be considered to be reversed once already. +std::vector> chain_extrusion_entities(const std::vector &entities, const Point *start_near = nullptr, const bool reversed = false); +// Reorder & reverse extrusion entities in place based on the "chain" ordering. void reorder_extrusion_entities(std::vector &entities, const std::vector> &chain); +// Reorder & reverse extrusion entities in place. void chain_and_reorder_extrusion_entities(std::vector &entities, const Point *start_near = nullptr); +// Chain extrusion entities by a shortest distance. Returns the ordered extrusions together with a "reverse" flag. +// Set input "reversed" to true if the vector of "entities" is to be considered to be reversed. +ExtrusionEntityReferences chain_extrusion_references(const std::vector &entities, const Point *start_near = nullptr, const bool reversed = false); +// The same as above, respect eec.no_sort flag. +ExtrusionEntityReferences chain_extrusion_references(const ExtrusionEntityCollection &eec, const Point *start_near = nullptr, const bool reversed = false); std::vector> chain_extrusion_paths(std::vector &extrusion_paths, const Point *start_near = nullptr); void reorder_extrusion_paths(std::vector &extrusion_paths, std::vector> &chain); void chain_and_reorder_extrusion_paths(std::vector &extrusion_paths, const Point *start_near = nullptr); diff --git a/src/libslic3r/StaticMap.hpp b/src/libslic3r/StaticMap.hpp new file mode 100644 index 0000000..b834027 --- /dev/null +++ b/src/libslic3r/StaticMap.hpp @@ -0,0 +1,331 @@ +#ifndef QIDISLICER_STATICMAP_HPP +#define QIDISLICER_STATICMAP_HPP + +#include +#include +#include +#include +#include + + +namespace Slic3r { + +// This module provides std::map and std::set like structures with fixed number +// of elements and usable at compile or in time constexpr contexts without +// any memory allocations. + +// C++20 emulation utilities to get the missing constexpr functionality in C++17 +namespace static_set_detail { + +// Simple bubble sort but constexpr +template> +constexpr void sort_array(std::array &arr, Cmp cmp = {}) +{ + // A bubble sort will do the job, C++20 will have constexpr std::sort + for (size_t i = 0; i < N - 1; ++i) + { + for (size_t j = 0; j < N - i - 1; ++j) + { + if (!cmp(arr[j], arr[j + 1])) { + T temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + } +} + +// Simple emulation of lower_bound with constexpr +template> +constexpr auto array_lower_bound(It from, It to, const V &val, Cmp cmp) +{ + auto N = std::distance(from, to); + std::size_t middle = N / 2; + + if (N == 0) { + return from; // Key not found, return the beginning of the array + } else if (cmp(val, *(from + middle))) { + return array_lower_bound(from, from + middle, val, cmp); + } else if (cmp(*(from + middle), val)) { + return array_lower_bound(from + middle + 1, to, val, cmp); + } else { + return from + middle; // Key found, return an iterator to it + } + + return to; +} + +template> +constexpr auto array_lower_bound(const std::array &arr, + const T &val, + Cmp cmp = {}) +{ + return array_lower_bound(arr.begin(), arr.end(), val, cmp); +} + +template +constexpr std::array, N> +to_array_impl(T (&a)[N], std::index_sequence) +{ + return {{a[I]...}}; +} + +template +constexpr std::array, N> to_array(T (&a)[N]) +{ + return to_array_impl(a, std::make_index_sequence{}); +} + +// Emulating constexpr std::pair +template +struct StaticMapElement { + using KeyType = K; + + constexpr StaticMapElement(const K &k, const V &v): first{k}, second{v} {} + + K first; + V second; +}; + +} // namespace static_set_detail +} // namespace Slic3r + +namespace Slic3r { + +// std::set like set structure +template> +class StaticSet { + std::array m_vals; // building on top of std::array + Cmp m_cmp; + +public: + using value_type = T; + + constexpr StaticSet(const std::array &arr, Cmp cmp = {}) + : m_vals{arr}, m_cmp{cmp} + { + // TODO: C++20 can use std::sort(vals.begin(), vals.end()) + static_set_detail::sort_array(m_vals, m_cmp); + } + + template + constexpr StaticSet(Ts &&...args): m_vals{std::forward(args)...} + { + static_set_detail::sort_array(m_vals, m_cmp); + } + + template + constexpr StaticSet(Cmp cmp, Ts &&...args) + : m_vals{std::forward(args)...}, m_cmp{cmp} + { + static_set_detail::sort_array(m_vals, m_cmp); + } + + constexpr auto find(const T &val) const + { + // TODO: C++20 can use std::lower_bound + auto it = static_set_detail::array_lower_bound(m_vals, val, m_cmp); + if (it != m_vals.end() && ! m_cmp(*it, val) && !m_cmp(val, *it) ) + return it; + + return m_vals.cend(); + } + + constexpr bool empty() const { return m_vals.empty(); } + constexpr size_t size() const { return m_vals.size(); } + + // Can be iterated over + constexpr auto begin() const { return m_vals.begin(); } + constexpr auto end() const { return m_vals.end(); } +}; + +// These are "deduction guides", a C++17 feature. +// Reason is to be able to deduce template arguments from constructor arguments +// e.g.: StaticSet{1, 2, 3} is deduced as StaticSet>, no +// need to state the template types explicitly. +template +StaticSet(T, Vals...) -> + StaticSet && ...), T>, + 1 + sizeof...(Vals)>; + +// Same as above, only with the first argument being a comparison functor +template +StaticSet(Cmp, T, Vals...) -> + StaticSet && ...), T>, + 1 + sizeof...(Vals), + std::enable_if_t, Cmp>>; + +// Specialization for the empty set case. +template +class StaticSet { +public: + constexpr StaticSet() = default; + constexpr auto find(const T &val) const { return nullptr; } + constexpr bool empty() const { return true; } + constexpr size_t size() const { return 0; } + constexpr auto begin() const { return nullptr; } + constexpr auto end() const { return nullptr; } +}; + +// Constructor with no arguments need to be deduced as the specialization for +// empty sets (see above) +StaticSet() -> StaticSet; + + + +// StaticMap definition: + +template +using SMapEl = static_set_detail::StaticMapElement; + +template +struct DefaultCmp { + constexpr bool operator() (const SMapEl &el1, const SMapEl &el2) const + { + return std::less{}(el1.first, el2.first); + } +}; + +// Overriding the default comparison for C style strings, as std::less +// doesn't do the lexicographic comparisons, only the pointer values would be +// compared. Fortunately we can wrap the C style strings with string_views and +// do the comparison with those. +template +struct DefaultCmp { + constexpr bool operator() (const SMapEl &el1, + const SMapEl &el2) const + { + return std::string_view{el1.first} < std::string_view{el2.first}; + } +}; + +template> +class StaticMap { + std::array, N> m_vals; + Cmp m_cmp; + +public: + using value_type = SMapEl; + + constexpr StaticMap(const std::array, N> &arr, Cmp cmp = {}) + : m_vals{arr}, m_cmp{cmp} + { + static_set_detail::sort_array(m_vals, cmp); + } + + constexpr auto find(const K &key) const + { + auto ret = m_vals.end(); + + SMapEl vkey{key, V{}}; + + auto it = static_set_detail::array_lower_bound( + std::begin(m_vals), std::end(m_vals), vkey, m_cmp + ); + + if (it != std::end(m_vals) && ! m_cmp(*it, vkey) && !m_cmp(vkey, *it)) + ret = it; + + return ret; + } + + constexpr const V& at(const K& key) const + { + if (auto it = find(key); it != end()) + return it->second; + + throw std::out_of_range{"No such element"}; + } + + constexpr bool empty() const { return m_vals.empty(); } + constexpr size_t size() const { return m_vals.size(); } + + constexpr auto begin() const { return m_vals.begin(); } + constexpr auto end() const { return m_vals.end(); } +}; + +template +class StaticMap { +public: + constexpr StaticMap() = default; + constexpr auto find(const K &key) const { return nullptr; } + constexpr bool empty() const { return true; } + constexpr size_t size() const { return 0; } + [[noreturn]] constexpr const V& at(const K &) const { throw std::out_of_range{"Map is empty"}; } + constexpr auto begin() const { return nullptr; } + constexpr auto end() const { return nullptr; } +}; + +// Deducing template arguments from the StaticMap constructors is not easy, +// so there is a helper "make" function to be used instead: +// e.g.: auto map = make_staticmap({ {"one", 1}, {"two", 2}}) +// will work, and only the key and value type needs to be specified. No need +// to state the number of elements, that is deduced automatically. +template +constexpr auto make_staticmap(const SMapEl (&arr) [N]) +{ + return StaticMap{static_set_detail ::to_array(arr), DefaultCmp{}}; +} + +template +constexpr auto make_staticmap(const SMapEl (&arr) [N], Cmp cmp) +{ + return StaticMap{static_set_detail ::to_array(arr), cmp}; +} + +// Override for empty maps +template> +constexpr auto make_staticmap() +{ + return StaticMap{}; +} + +// Override which uses a c++ array as the initializer +template> +constexpr auto make_staticmap(const std::array, N> &arr, Cmp cmp = {}) +{ + return StaticMap{arr, cmp}; +} + +// Helper function to get a specific element from a set, returning a std::optional +// which is more convinient than working with iterators +template +constexpr std::enable_if_t, std::optional> +query(const StaticSet &sset, const T &val) +{ + std::optional ret; + if (auto it = sset.find(val); it != sset.end()) + ret = *it; + + return ret; +} + +template +constexpr std::enable_if_t, std::optional> +query(const StaticMap &sset, const KeyT &val) +{ + std::optional ret; + + if (auto it = sset.find(val); it != sset.end()) + ret = it->second; + + return ret; +} + +template +constexpr std::enable_if_t, bool> +contains(const StaticSet &sset, const T &val) +{ + return sset.find(val) != sset.end(); +} + +template +constexpr std::enable_if_t, bool> +contains(const StaticMap &smap, const KeyT &key) +{ + return smap.find(key) != smap.end(); +} + +} // namespace Slic3r + +#endif // STATICMAP_HPP diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index dce57a7..4fb4ce9 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -485,8 +485,7 @@ static inline void fill_expolygon_generate_paths( extrusion_entities_append_paths( dst, std::move(polylines), - role, - flow.mm3_per_mm(), flow.width(), flow.height()); + { role, flow }); } static inline void fill_expolygons_generate_paths( @@ -644,7 +643,7 @@ static inline void tree_supports_generate_paths( ExPolygons level2 = offset2_ex({ expoly }, -1.5 * flow.scaled_width(), 0.5 * flow.scaled_width()); if (level2.size() == 1) { Polylines polylines; - extrusion_entities_append_paths(eec->entities, draw_perimeters(expoly, clip_length), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(), + extrusion_entities_append_paths(eec->entities, draw_perimeters(expoly, clip_length), { ExtrusionRole::SupportMaterial, flow }, // Disable reversal of the path, always start with the anchor, always print CCW. false); expoly = level2.front(); @@ -750,7 +749,7 @@ static inline void tree_supports_generate_paths( } ExtrusionEntitiesPtr &out = eec ? eec->entities : dst; - extrusion_entities_append_paths(out, std::move(polylines), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(), + extrusion_entities_append_paths(out, std::move(polylines), { ExtrusionRole::SupportMaterial, flow }, // Disable reversal of the path, always start with the anchor, always print CCW. false); if (eec) { @@ -794,7 +793,7 @@ static inline void fill_expolygons_with_sheath_generate_paths( eec->no_sort = true; } ExtrusionEntitiesPtr &out = no_sort ? eec->entities : dst; - extrusion_entities_append_paths(out, draw_perimeters(expoly, clip_length), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height()); + extrusion_entities_append_paths(out, draw_perimeters(expoly, clip_length), { ExtrusionRole::SupportMaterial, flow }); // Fill in the rest. fill_expolygons_generate_paths(out, offset_ex(expoly, float(-0.4 * spacing)), filler, fill_params, density, role, flow); if (no_sort && ! eec->empty()) @@ -1106,7 +1105,7 @@ void LoopInterfaceProcessor::generate(SupportGeneratorLayerExtruded &top_contact extrusion_entities_append_paths( top_contact_layer.extrusions, std::move(loop_lines), - ExtrusionRole::SupportMaterialInterface, flow.mm3_per_mm(), flow.width(), flow.height()); + { ExtrusionRole::SupportMaterialInterface, flow }); } #ifdef SLIC3R_DEBUG @@ -1148,24 +1147,20 @@ static void modulate_extrusion_by_overlapping_layers( ExtrusionPath *extrusion_path_template = dynamic_cast(extrusions_in_out.front()); assert(extrusion_path_template != nullptr); ExtrusionRole extrusion_role = extrusion_path_template->role(); - float extrusion_width = extrusion_path_template->width; + float extrusion_width = extrusion_path_template->width(); struct ExtrusionPathFragment { - ExtrusionPathFragment() : mm3_per_mm(-1), width(-1), height(-1) {}; - ExtrusionPathFragment(double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height) {}; + ExtrusionFlow flow; Polylines polylines; - double mm3_per_mm; - float width; - float height; }; // Split the extrusions by the overlapping layers, reduce their extrusion rate. // The last path_fragment is from this_layer. std::vector path_fragments( n_overlapping_layers + 1, - ExtrusionPathFragment(extrusion_path_template->mm3_per_mm, extrusion_path_template->width, extrusion_path_template->height)); + ExtrusionPathFragment{ extrusion_path_template->attributes() }); // Don't use it, it will be released. extrusion_path_template = nullptr; @@ -1242,8 +1237,8 @@ static void modulate_extrusion_by_overlapping_layers( path_fragments.back().polylines = diff_pl(path_fragments.back().polylines, polygons_trimming); // Adjust the extrusion parameters for a reduced layer height and a non-bridging flow (nozzle_dmr = -1, does not matter). assert(this_layer.print_z > overlapping_layer.print_z); - frag.height = float(this_layer.print_z - overlapping_layer.print_z); - frag.mm3_per_mm = Flow(frag.width, frag.height, -1.f).mm3_per_mm(); + frag.flow.height = float(this_layer.print_z - overlapping_layer.print_z); + frag.flow.mm3_per_mm = Flow(frag.flow.width, frag.flow.height, -1.f).mm3_per_mm(); #ifdef SLIC3R_DEBUG svg.draw(frag.polylines, dbg_index_to_color(i_overlapping_layer), scale_(0.1)); #endif /* SLIC3R_DEBUG */ @@ -1326,15 +1321,14 @@ static void modulate_extrusion_by_overlapping_layers( ExtrusionPath *path = multipath.paths.empty() ? nullptr : &multipath.paths.back(); if (path != nullptr) { // Verify whether the path is compatible with the current fragment. - assert(this_layer.layer_type == SupporLayerType::BottomContact || path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm); - if (path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm) { + assert(this_layer.layer_type == SupporLayerType::BottomContact || path->height() != frag.flow.height || path->mm3_per_mm() != frag.flow.mm3_per_mm); + if (path->height() != frag.flow.height || path->mm3_per_mm() != frag.flow.mm3_per_mm) path = nullptr; - } // Merging with the previous path. This can only happen if the current layer was reduced by a base layer, which was split into a base and interface layer. } if (path == nullptr) { // Allocate a new path. - multipath.paths.push_back(ExtrusionPath(extrusion_role, frag.mm3_per_mm, frag.width, frag.height)); + multipath.paths.emplace_back(ExtrusionAttributes{ extrusion_role, frag.flow }); path = &multipath.paths.back(); } // The Clipper library may flip the order of the clipped polylines arbitrarily. @@ -1369,8 +1363,8 @@ static void modulate_extrusion_by_overlapping_layers( } // If there are any non-consumed fragments, add them separately. //FIXME this shall not happen, if the Clipper works as expected and all paths split to fragments could be re-connected. - for (auto it_fragment = path_fragments.begin(); it_fragment != path_fragments.end(); ++ it_fragment) - extrusion_entities_append_paths(extrusions_in_out, std::move(it_fragment->polylines), extrusion_role, it_fragment->mm3_per_mm, it_fragment->width, it_fragment->height); + for (ExtrusionPathFragment &fragment : path_fragments) + extrusion_entities_append_paths(extrusions_in_out, std::move(fragment.polylines), { extrusion_role, fragment.flow }); } // Support layer that is covered by some form of dense interface. @@ -1732,7 +1726,8 @@ void generate_support_toolpaths( // Filler and its parameters filler, float(density), // Extrusion parameters - ExtrusionRole::SupportMaterialInterface, interface_flow); + interface_as_base ? ExtrusionRole::SupportMaterial : ExtrusionRole::SupportMaterialInterface, + interface_flow); } }; const bool top_interfaces = config.support_material_interface_layers.value != 0; diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index a21a48b..d91d492 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1023,7 +1023,7 @@ namespace SupportMaterialInternal { assert(expansion_scaled >= 0.f); for (const ExtrusionPath &ep : loop.paths) if (ep.role() == ExtrusionRole::OverhangPerimeter && ! ep.polyline.empty()) { - float exp = 0.5f * (float)scale_(ep.width) + expansion_scaled; + float exp = 0.5f * (float)scale_(ep.width()) + expansion_scaled; if (ep.is_closed()) { if (ep.size() >= 3) { // This is a complete loop. diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 7451ba0..3743221 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1,4 +1,3 @@ - #include "TreeSupport.hpp" #include "TreeSupportCommon.hpp" #include "SupportCommon.hpp" @@ -70,7 +69,7 @@ static inline void validate_range(const MultiPoint &mp) validate_range(mp.points); } -static inline void validate_range(const Polygons &polygons) +[[maybe_unused]] static inline void validate_range(const Polygons &polygons) { for (const Polygon &p : polygons) validate_range(p); @@ -94,6 +93,7 @@ static inline void validate_range(const LineInformations &lines) validate_range(l); } +/* static inline void check_self_intersections(const Polygons &polygons, const std::string_view message) { #ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 @@ -101,6 +101,7 @@ static inline void check_self_intersections(const Polygons &polygons, const std: ::MessageBoxA(nullptr, (std::string("TreeSupport infill self intersections: ") + std::string(message)).c_str(), "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); #endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 } +*/ static inline void check_self_intersections(const ExPolygon &expoly, const std::string_view message) { #ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 diff --git a/src/libslic3r/SupportSpotsGenerator.cpp b/src/libslic3r/SupportSpotsGenerator.cpp index e1ae58f..2eee1f1 100644 --- a/src/libslic3r/SupportSpotsGenerator.cpp +++ b/src/libslic3r/SupportSpotsGenerator.cpp @@ -48,45 +48,29 @@ #ifdef DEBUG_FILES #include #include "libslic3r/Color.hpp" +constexpr bool debug_files = true; +#else +constexpr bool debug_files = false; #endif -namespace Slic3r { -class ExtrusionLine -{ -public: - ExtrusionLine() : a(Vec2f::Zero()), b(Vec2f::Zero()), len(0.0), origin_entity(nullptr) {} - ExtrusionLine(const Vec2f &a, const Vec2f &b, float len, const ExtrusionEntity *origin_entity) +namespace Slic3r::SupportSpotsGenerator { + +ExtrusionLine::ExtrusionLine() : a(Vec2f::Zero()), b(Vec2f::Zero()), len(0.0), origin_entity(nullptr) {} +ExtrusionLine::ExtrusionLine(const Vec2f &a, const Vec2f &b, float len, const ExtrusionEntity *origin_entity) : a(a), b(b), len(len), origin_entity(origin_entity) {} - ExtrusionLine(const Vec2f &a, const Vec2f &b) +ExtrusionLine::ExtrusionLine(const Vec2f &a, const Vec2f &b) : a(a), b(b), len((a-b).norm()), origin_entity(nullptr) {} - bool is_external_perimeter() const +bool ExtrusionLine::is_external_perimeter() const { assert(origin_entity != nullptr); return origin_entity->role().is_external_perimeter(); } - Vec2f a; - Vec2f b; - float len; - const ExtrusionEntity *origin_entity; - - std::optional support_point_generated = {}; - float form_quality = 1.0f; - float curled_up_height = 0.0f; - - static const constexpr int Dim = 2; - using Scalar = Vec2f::Scalar; -}; - -auto get_a(ExtrusionLine &&l) { return l.a; } -auto get_b(ExtrusionLine &&l) { return l.b; } - -namespace SupportSpotsGenerator { using LD = AABBTreeLines::LinesDistancer; @@ -146,14 +130,7 @@ public: } }; -struct SliceConnection -{ - float area{}; - Vec3f centroid_accumulator = Vec3f::Zero(); - Vec2f second_moment_of_area_accumulator = Vec2f::Zero(); - float second_moment_of_area_covariance_accumulator{}; - - void add(const SliceConnection &other) +void SliceConnection::add(const SliceConnection &other) { this->area += other.area; this->centroid_accumulator += other.centroid_accumulator; @@ -161,7 +138,7 @@ struct SliceConnection this->second_moment_of_area_covariance_accumulator += other.second_moment_of_area_covariance_accumulator; } - void print_info(const std::string &tag) +void SliceConnection::print_info(const std::string &tag) const { Vec3f centroid = centroid_accumulator / area; Vec2f variance = (second_moment_of_area_accumulator / area - centroid.head<2>().cwiseProduct(centroid.head<2>())); @@ -172,7 +149,25 @@ struct SliceConnection std::cout << "variance: " << variance.x() << " " << variance.y() << std::endl; std::cout << "covariance: " << covariance << std::endl; } -}; +Integrals::Integrals (const Polygons& polygons) { + for (const Polygon &polygon : polygons) { + Vec2f p0 = unscaled(polygon.first_point()).cast(); + for (size_t i = 2; i < polygon.points.size(); i++) { + Vec2f p1 = unscaled(polygon.points[i - 1]).cast(); + Vec2f p2 = unscaled(polygon.points[i]).cast(); + + float sign = cross2(p1 - p0, p2 - p1) > 0 ? 1.0f : -1.0f; + + auto [area, first_moment_of_area, second_moment_area, + second_moment_of_area_covariance] = compute_moments_of_area_of_triangle(p0, p1, p2); + + this->area += sign * area; + this->x_i += sign * first_moment_of_area; + this->x_i_squared += sign * second_moment_area; + this->xy += sign * second_moment_of_area_covariance; + } + } +} SliceConnection estimate_slice_connection(size_t slice_idx, const Layer *layer) { @@ -195,22 +190,11 @@ SliceConnection estimate_slice_connection(size_t slice_idx, const Layer *layer) Polygons overlap = intersection(ClipperUtils::clip_clipper_polygons_with_subject_bbox(slice_polys, below_bb), ClipperUtils::clip_clipper_polygons_with_subject_bbox(below_polys, slice_bb)); - for (const Polygon &poly : overlap) { - Vec2f p0 = unscaled(poly.first_point()).cast(); - for (size_t i = 2; i < poly.points.size(); i++) { - Vec2f p1 = unscaled(poly.points[i - 1]).cast(); - Vec2f p2 = unscaled(poly.points[i]).cast(); - - float sign = cross2(p1 - p0, p2 - p1) > 0 ? 1.0f : -1.0f; - - auto [area, first_moment_of_area, second_moment_area, - second_moment_of_area_covariance] = compute_moments_of_area_of_triangle(p0, p1, p2); - connection.area += sign * area; - connection.centroid_accumulator += sign * Vec3f(first_moment_of_area.x(), first_moment_of_area.y(), layer->print_z * area); - connection.second_moment_of_area_accumulator += sign * second_moment_area; - connection.second_moment_of_area_covariance_accumulator += sign * second_moment_of_area_covariance; - } - } + const Integrals integrals{overlap}; + connection.area += integrals.area; + connection.centroid_accumulator += Vec3f(integrals.x_i.x(), integrals.x_i.y(), layer->print_z * integrals.area); + connection.second_moment_of_area_accumulator += integrals.x_i_squared; + connection.second_moment_of_area_covariance_accumulator += integrals.xy; return connection; }; @@ -253,28 +237,6 @@ float get_flow_width(const LayerRegion *region, ExtrusionRole role) return region->flow(FlowRole::frPerimeter).width(); } -std::vector to_short_lines(const ExtrusionEntity *e, float length_limit) -{ - assert(!e->is_collection()); - Polyline pl = e->as_polyline(); - std::vector lines; - lines.reserve(pl.points.size() * 1.5f); - for (int point_idx = 0; point_idx < int(pl.points.size()) - 1; ++point_idx) { - Vec2f start = unscaled(pl.points[point_idx]).cast(); - Vec2f next = unscaled(pl.points[point_idx + 1]).cast(); - Vec2f v = next - start; // vector from next to current - float dist_to_next = v.norm(); - v.normalize(); - int lines_count = int(std::ceil(dist_to_next / length_limit)); - float step_size = dist_to_next / lines_count; - for (int i = 0; i < lines_count; ++i) { - Vec2f a(start + v * (i * step_size)); - Vec2f b(start + v * ((i + 1) * step_size)); - lines.emplace_back(a, b, (a-b).norm(), e); - } - } - return lines; -} float estimate_curled_up_height( float distance, float curvature, float layer_height, float flow_width, float prev_line_curled_height, Params params) @@ -328,9 +290,9 @@ std::vector check_extrusion_entity_stability(const ExtrusionEntit return {}; } const float flow_width = get_flow_width(layer_region, entity->role()); - std::vector annotated_points = estimate_points_properties(entity->as_polyline().points, - prev_layer_boundary, flow_width, - params.bridge_distance); + std::vector annotated_points = + ExtrusionProcessor::estimate_points_properties(entity->as_polyline().points, prev_layer_boundary, + flow_width, params.bridge_distance); std::vector lines_out; lines_out.reserve(annotated_points.size()); @@ -339,8 +301,8 @@ std::vector check_extrusion_entity_stability(const ExtrusionEntit std::optional bridging_dir{}; for (size_t i = 0; i < annotated_points.size(); ++i) { - ExtendedPoint &curr_point = annotated_points[i]; - const ExtendedPoint &prev_point = i > 0 ? annotated_points[i - 1] : annotated_points[i]; + ExtrusionProcessor::ExtendedPoint &curr_point = annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &prev_point = i > 0 ? annotated_points[i - 1] : annotated_points[i]; SupportPointCause potential_cause = std::abs(curr_point.curvature) > 0.1 ? SupportPointCause::FloatingBridgeAnchor : SupportPointCause::LongBridge; @@ -382,17 +344,17 @@ std::vector check_extrusion_entity_stability(const ExtrusionEntit const float flow_width = get_flow_width(layer_region, entity->role()); // Compute only unsigned distance - prev_layer_lines can contain unconnected paths, thus the sign of the distance is unreliable - std::vector annotated_points = estimate_points_properties(entity->as_polyline().points, - prev_layer_lines, flow_width, - params.bridge_distance); + std::vector annotated_points = + ExtrusionProcessor::estimate_points_properties(entity->as_polyline().points, prev_layer_lines, + flow_width, params.bridge_distance); std::vector lines_out; lines_out.reserve(annotated_points.size()); float bridged_distance = annotated_points.front().position != annotated_points.back().position ? (params.bridge_distance + 1.0f) : 0.0f; for (size_t i = 0; i < annotated_points.size(); ++i) { - ExtendedPoint &curr_point = annotated_points[i]; - const ExtendedPoint &prev_point = i > 0 ? annotated_points[i - 1] : annotated_points[i]; + ExtrusionProcessor::ExtendedPoint &curr_point = annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &prev_point = i > 0 ? annotated_points[i - 1] : annotated_points[i]; float line_len = (prev_point.position - curr_point.position).norm(); ExtrusionLine line_out{prev_point.position.cast(), curr_point.position.cast(), line_len, entity}; @@ -445,20 +407,92 @@ std::vector check_extrusion_entity_stability(const ExtrusionEntit } } -class ObjectPart -{ -public: - float volume{}; - Vec3f volume_centroid_accumulator = Vec3f::Zero(); - float sticking_area{}; - Vec3f sticking_centroid_accumulator = Vec3f::Zero(); - Vec2f sticking_second_moment_of_area_accumulator = Vec2f::Zero(); - float sticking_second_moment_of_area_covariance_accumulator{}; - bool connected_to_bed = false; +/** + * Calculates the second moment of area over an arbitrary polygon. + * + * Important note: The calculated moment is for an axis with origin at + * the polygon centroid! + * + * @param integrals Integrals over the polygon area. + * @param axis_direction Direction of the rotation axis going through centroid. + */ +float compute_second_moment( + const Integrals& integrals, + const Vec2f& axis_direction +) { + // Second moment of area for any axis intersecting coordinate system origin + // can be evaluated using the second moments of area calculated for the coordinate + // system axis and the moment product (int xy). + // The equation is derived appling known formulas for the moment of inertia + // to a plannar problem. One can reason about second moment + // of area by by setting density to 1 in the moment of inertia formulas. + const auto area = integrals.area; + const auto I_xx = integrals.x_i_squared.y(); + const auto I_yy = integrals.x_i_squared.x(); + const auto I_xy = -integrals.xy; - ObjectPart() = default; + const Vec2f centroid = integrals.x_i / area; - void add(const ObjectPart &other) + Matrix2f moment_tensor{}; + moment_tensor << + I_xx, I_xy, + I_xy, I_yy; + + const float moment_at_0_0 = axis_direction.transpose() * moment_tensor * axis_direction; + + // Apply parallel axis theorem to move the moment to centroid + using line_alg::distance_to_infinite_squared; + + const Linef axis_at_0_0 = {{0, 0}, axis_direction.cast()}; + + const double distance = distance_to_infinite_squared(axis_at_0_0, centroid.cast()); + return moment_at_0_0 - area * distance; +} + +ObjectPart::ObjectPart( + const std::vector& extrusion_collections, + const bool connected_to_bed, + const coordf_t print_head_z, + const coordf_t layer_height, + const std::optional& brim +) { + if (connected_to_bed) { + this->connected_to_bed = true; + } + + const auto bottom_z = print_head_z - layer_height; + const auto center_z = print_head_z - layer_height / 2; + + for (const ExtrusionEntityCollection* collection : extrusion_collections) { + if (collection->empty()) { + continue; + } + + const Polygons polygons{collection->polygons_covered_by_width()}; + + const Integrals integrals{polygons}; + const float volume = integrals.area * layer_height; + this->volume += volume; + this->volume_centroid_accumulator += to_3d(integrals.x_i, center_z * integrals.area) / integrals.area * volume; + + if (this->connected_to_bed) { + this->sticking_area += integrals.area; + this->sticking_centroid_accumulator += to_3d(integrals.x_i, bottom_z * integrals.area); + this->sticking_second_moment_of_area_accumulator += integrals.x_i_squared; + this->sticking_second_moment_of_area_covariance_accumulator += integrals.xy; + } + } + + if (brim) { + Integrals integrals{*brim}; + this->sticking_area += integrals.area; + this->sticking_centroid_accumulator += to_3d(integrals.x_i, bottom_z * integrals.area); + this->sticking_second_moment_of_area_accumulator += integrals.x_i_squared; + this->sticking_second_moment_of_area_covariance_accumulator += integrals.xy; + } +} + +void ObjectPart::add(const ObjectPart &other) { this->connected_to_bed = this->connected_to_bed || other.connected_to_bed; this->volume_centroid_accumulator += other.volume_centroid_accumulator; @@ -469,7 +503,7 @@ public: this->sticking_second_moment_of_area_covariance_accumulator += other.sticking_second_moment_of_area_covariance_accumulator; } - void add_support_point(const Vec3f &position, float sticking_area) +void ObjectPart::add_support_point(const Vec3f &position, float sticking_area) { this->sticking_area += sticking_area; this->sticking_centroid_accumulator += sticking_area * position; @@ -477,43 +511,21 @@ public: this->sticking_second_moment_of_area_covariance_accumulator += sticking_area * position.x() * position.y(); } - float compute_directional_xy_variance(const Vec2f &line_dir, - const Vec3f ¢roid_accumulator, - const Vec2f &second_moment_of_area_accumulator, - const float &second_moment_of_area_covariance_accumulator, - const float &area) const - { - assert(area > 0); - Vec3f centroid = centroid_accumulator / area; - Vec2f variance = (second_moment_of_area_accumulator / area - centroid.head<2>().cwiseProduct(centroid.head<2>())); - float covariance = second_moment_of_area_covariance_accumulator / area - centroid.x() * centroid.y(); - // Var(aX+bY)=a^2*Var(X)+b^2*Var(Y)+2*a*b*Cov(X,Y) - float directional_xy_variance = line_dir.x() * line_dir.x() * variance.x() + line_dir.y() * line_dir.y() * variance.y() + - 2.0f * line_dir.x() * line_dir.y() * covariance; -#ifdef DETAILED_DEBUG_LOGS - BOOST_LOG_TRIVIAL(debug) << "centroid: " << centroid.x() << " " << centroid.y() << " " << centroid.z(); - BOOST_LOG_TRIVIAL(debug) << "variance: " << variance.x() << " " << variance.y(); - BOOST_LOG_TRIVIAL(debug) << "covariance: " << covariance; - BOOST_LOG_TRIVIAL(debug) << "directional_xy_variance: " << directional_xy_variance; -#endif - return directional_xy_variance; - } - float compute_elastic_section_modulus(const Vec2f &line_dir, +float ObjectPart::compute_elastic_section_modulus( + const Vec2f &line_dir, const Vec3f &extreme_point, - const Vec3f ¢roid_accumulator, - const Vec2f &second_moment_of_area_accumulator, - const float &second_moment_of_area_covariance_accumulator, - const float &area) const - { - float directional_xy_variance = compute_directional_xy_variance(line_dir, centroid_accumulator, second_moment_of_area_accumulator, - second_moment_of_area_covariance_accumulator, area); - if (directional_xy_variance < EPSILON) { return 0.0f; } - Vec3f centroid = centroid_accumulator / area; + const Integrals& integrals +) const { + float second_moment_of_area = compute_second_moment(integrals, Vec2f{-line_dir.y(), line_dir.x()}); + + if (second_moment_of_area < EPSILON) { return 0.0f; } + + Vec2f centroid = integrals.x_i / integrals.area; float extreme_fiber_dist = line_alg::distance_to(Linef(centroid.head<2>().cast(), (centroid.head<2>() + Vec2f(line_dir.y(), -line_dir.x())).cast()), extreme_point.head<2>().cast()); - float elastic_section_modulus = area * directional_xy_variance / extreme_fiber_dist; + float elastic_section_modulus = second_moment_of_area / extreme_fiber_dist; #ifdef DETAILED_DEBUG_LOGS BOOST_LOG_TRIVIAL(debug) << "extreme_fiber_dist: " << extreme_fiber_dist; @@ -523,12 +535,18 @@ public: return elastic_section_modulus; } - std::tuple is_stable_while_extruding(const SliceConnection &connection, +std::tuple ObjectPart::is_stable_while_extruding(const SliceConnection &connection, const ExtrusionLine &extruded_line, const Vec3f &extreme_point, float layer_z, const Params ¶ms) const { + // Note that exteme point is calculated for the current layer, while it should + // be computed for the first layer. The shape of the first layer however changes a lot, + // during support points additions (for organic supports it is not even clear how) + // and during merging. Using the current layer is heuristics and also small optimization, + // as the AABB tree for it is calculated anyways. This heuristic should usually be + // on the safe side. Vec2f line_dir = (extruded_line.b - extruded_line.a).normalized(); const Vec3f &mass_centroid = this->volume_centroid_accumulator / this->volume; float mass = this->volume * params.filament_density; @@ -543,19 +561,17 @@ public: { if (this->sticking_area < EPSILON) return {1.0f, SupportPointCause::UnstableFloatingPart}; + Integrals integrals; + integrals.area = this->sticking_area; + integrals.x_i = this->sticking_centroid_accumulator.head<2>(); + integrals.x_i_squared = this->sticking_second_moment_of_area_accumulator; + integrals.xy = this->sticking_second_moment_of_area_covariance_accumulator; Vec3f bed_centroid = this->sticking_centroid_accumulator / this->sticking_area; - float bed_yield_torque = -compute_elastic_section_modulus(line_dir, extreme_point, this->sticking_centroid_accumulator, - this->sticking_second_moment_of_area_accumulator, - this->sticking_second_moment_of_area_covariance_accumulator, - this->sticking_area) * - params.get_bed_adhesion_yield_strength(); + float bed_yield_torque = -compute_elastic_section_modulus(line_dir, extreme_point, integrals) * params.get_bed_adhesion_yield_strength(); Vec2f bed_weight_arm = (mass_centroid.head<2>() - bed_centroid.head<2>()); float bed_weight_arm_len = bed_weight_arm.norm(); - float bed_weight_dir_xy_variance = compute_directional_xy_variance(bed_weight_arm, this->sticking_centroid_accumulator, - this->sticking_second_moment_of_area_accumulator, - this->sticking_second_moment_of_area_covariance_accumulator, - this->sticking_area); + float bed_weight_dir_xy_variance = compute_second_moment(integrals, {-bed_weight_arm.y(), bed_weight_arm.x()}) / this->sticking_area; float bed_weight_sign = bed_weight_arm_len < 2.0f * sqrt(bed_weight_dir_xy_variance) ? -1.0f : 1.0f; float bed_weight_torque = bed_weight_sign * bed_weight_arm_len * weight; @@ -595,11 +611,13 @@ public: Vec3f conn_centroid = connection.centroid_accumulator / connection.area; if (layer_z - conn_centroid.z() < 3.0f) { return {-1.0f, SupportPointCause::WeakObjectPart}; } - float conn_yield_torque = compute_elastic_section_modulus(line_dir, extreme_point, connection.centroid_accumulator, - connection.second_moment_of_area_accumulator, - connection.second_moment_of_area_covariance_accumulator, - connection.area) * - params.material_yield_strength; + Integrals integrals; + integrals.area = connection.area; + integrals.x_i = connection.centroid_accumulator.head<2>(); + integrals.x_i_squared = connection.second_moment_of_area_accumulator; + integrals.xy = connection.second_moment_of_area_covariance_accumulator; + + float conn_yield_torque = compute_elastic_section_modulus(line_dir, extreme_point, integrals) * params.material_yield_strength; float conn_weight_arm = (conn_centroid.head<2>() - mass_centroid.head<2>()).norm(); if (layer_z - conn_centroid.z() < 30.0) { @@ -631,92 +649,59 @@ public: return {conn_total_torque / conn_conflict_torque_arm, SupportPointCause::WeakObjectPart}; } } -}; -// return new object part and actual area covered by extrusions -std::tuple build_object_part_from_slice(const size_t &slice_idx, const Layer *layer, const Params& params) -{ - ObjectPart new_object_part; - float area_covered_by_extrusions = 0; - const LayerSlice& slice = layer->lslices_ex.at(slice_idx); - - auto add_extrusions_to_object = [&new_object_part, &area_covered_by_extrusions, ¶ms](const ExtrusionEntity *e, - const LayerRegion *region) { - float flow_width = get_flow_width(region, e->role()); - const Layer *l = region->layer(); - float slice_z = l->slice_z; - float height = l->height; - std::vector lines = to_short_lines(e, 5.0); - for (const ExtrusionLine &line : lines) { - float volume = line.len * height * flow_width * PI / 4.0f; - area_covered_by_extrusions += line.len * flow_width; - new_object_part.volume += volume; - new_object_part.volume_centroid_accumulator += to_3d(Vec2f((line.a + line.b) / 2.0f), slice_z) * volume; - - if (int(l->id()) == params.raft_layers_count) { // layer attached on bed/raft - new_object_part.connected_to_bed = true; - float sticking_area = line.len * flow_width; - new_object_part.sticking_area += sticking_area; - Vec2f middle = Vec2f((line.a + line.b) / 2.0f); - new_object_part.sticking_centroid_accumulator += sticking_area * to_3d(middle, slice_z); - // Bottom infill lines can be quite long, and algined, so the middle approximaton used above does not work - Vec2f dir = (line.b - line.a).normalized(); - float segment_length = flow_width; // segments of size flow_width - for (float segment_middle_dist = std::min(line.len, segment_length * 0.5f); segment_middle_dist < line.len; - segment_middle_dist += segment_length) { - Vec2f segment_middle = line.a + segment_middle_dist * dir; - new_object_part.sticking_second_moment_of_area_accumulator += segment_length * flow_width * - segment_middle.cwiseProduct(segment_middle); - new_object_part.sticking_second_moment_of_area_covariance_accumulator += segment_length * flow_width * - segment_middle.x() * segment_middle.y(); - } - } - } - }; +std::vector gather_extrusions(const LayerSlice& slice, const Layer* layer) { + // TODO reserve might be good, benchmark + std::vector result; for (const auto &island : slice.islands) { const LayerRegion *perimeter_region = layer->get_region(island.perimeters.region()); for (size_t perimeter_idx : island.perimeters) { - for (const ExtrusionEntity *perimeter : - static_cast(perimeter_region->perimeters().entities[perimeter_idx])->entities) { - add_extrusions_to_object(perimeter, perimeter_region); - } + auto collection = static_cast( + perimeter_region->perimeters().entities[perimeter_idx] + ); + result.push_back(collection); } for (const LayerExtrusionRange &fill_range : island.fills) { const LayerRegion *fill_region = layer->get_region(fill_range.region()); for (size_t fill_idx : fill_range) { - for (const ExtrusionEntity *fill : - static_cast(fill_region->fills().entities[fill_idx])->entities) { - add_extrusions_to_object(fill, fill_region); + auto collection = static_cast( + fill_region->fills().entities[fill_idx] + ); + result.push_back(collection); } } + const ExtrusionEntityCollection& collection = perimeter_region->thin_fills(); + result.push_back(&collection); } - for (size_t thin_fill_idx : island.thin_fills) { - add_extrusions_to_object(perimeter_region->thin_fills().entities[thin_fill_idx], perimeter_region); + return result; } +bool has_brim(const Layer* layer, const Params& params){ + return + int(layer->id()) == params.raft_layers_count + && params.raft_layers_count == 0 + && params.brim_type != BrimType::btNoBrim + && params.brim_width > 0.0; } - // BRIM HANDLING - if (int(layer->id()) == params.raft_layers_count && params.raft_layers_count == 0 && params.brim_type != BrimType::btNoBrim && - params.brim_width > 0.0) { - // TODO: The algorithm here should take into account that multiple slices may have coliding Brim areas and the final brim area is - // smaller, +Polygons get_brim(const ExPolygon& slice_polygon, const BrimType brim_type, const float brim_width) { + // TODO: The algorithm here should take into account that multiple slices may + // have coliding Brim areas and the final brim area is smaller, // thus has lower adhesion. For now this effect will be neglected. - ExPolygon slice_poly = layer->lslices[slice_idx]; ExPolygons brim; - if (params.brim_type == BrimType::btOuterAndInner || params.brim_type == BrimType::btOuterOnly) { - Polygon brim_hole = slice_poly.contour; + if (brim_type == BrimType::btOuterAndInner || brim_type == BrimType::btOuterOnly) { + Polygon brim_hole = slice_polygon.contour; brim_hole.reverse(); - Polygons c = expand(slice_poly.contour, scale_(params.brim_width)); // For very small polygons, the expand may result in empty vector, even thought the input is correct. + Polygons c = expand(slice_polygon.contour, scale_(brim_width)); // For very small polygons, the expand may result in empty vector, even thought the input is correct. if (!c.empty()) { brim.push_back(ExPolygon{c.front(), brim_hole}); } } - if (params.brim_type == BrimType::btOuterAndInner || params.brim_type == BrimType::btInnerOnly) { - Polygons brim_contours = slice_poly.holes; + if (brim_type == BrimType::btOuterAndInner || brim_type == BrimType::btInnerOnly) { + Polygons brim_contours = slice_polygon.holes; polygons_reverse(brim_contours); for (const Polygon &brim_contour : brim_contours) { - Polygons brim_holes = shrink({brim_contour}, scale_(params.brim_width)); + Polygons brim_holes = shrink({brim_contour}, scale_(brim_width)); polygons_reverse(brim_holes); ExPolygon inner_brim{brim_contour}; inner_brim.holes = brim_holes; @@ -724,26 +709,7 @@ std::tuple build_object_part_from_slice(const size_t &slice_i } } - for (const Polygon &poly : to_polygons(brim)) { - Vec2f p0 = unscaled(poly.first_point()).cast(); - for (size_t i = 2; i < poly.points.size(); i++) { - Vec2f p1 = unscaled(poly.points[i - 1]).cast(); - Vec2f p2 = unscaled(poly.points[i]).cast(); - - float sign = cross2(p1 - p0, p2 - p1) > 0 ? 1.0f : -1.0f; - - auto [area, first_moment_of_area, second_moment_area, - second_moment_of_area_covariance] = compute_moments_of_area_of_triangle(p0, p1, p2); - new_object_part.sticking_area += sign * area; - new_object_part.sticking_centroid_accumulator += sign * Vec3f(first_moment_of_area.x(), first_moment_of_area.y(), - layer->print_z * area); - new_object_part.sticking_second_moment_of_area_accumulator += sign * second_moment_area; - new_object_part.sticking_second_moment_of_area_covariance_accumulator += sign * second_moment_of_area_covariance; - } - } - } - - return {new_object_part, area_covered_by_extrusions}; + return to_polygons(brim); } class ActiveObjectParts @@ -785,105 +751,54 @@ public: } }; -std::tuple check_stability(const PrintObject *po, - const PrecomputedSliceConnections &precomputed_slices_connections, - const PrintTryCancel &cancel_func, - const Params ¶ms) +// Function that is used when new support point is generated. It will update the ObjectPart stability, weakest conneciton info, +// and the support presence grid and add the point to the issues. +void reckon_new_support_point(ObjectPart &part, + SliceConnection &weakest_conn, + SupportPoints &supp_points, + SupportGridFilter &supports_presence_grid, + const SupportPoint& support_point, + bool is_global = false) { - SupportPoints supp_points{}; - SupportGridFilter supports_presence_grid(po, params.min_distance_between_support_points); - ActiveObjectParts active_object_parts{}; - PartialObjects partial_objects{}; - LD prev_layer_ext_perim_lines; - - std::unordered_map prev_slice_idx_to_object_part_mapping; - std::unordered_map next_slice_idx_to_object_part_mapping; - std::unordered_map prev_slice_idx_to_weakest_connection; - std::unordered_map next_slice_idx_to_weakest_connection; - - auto remember_partial_object = [&active_object_parts, &partial_objects](size_t object_part_id) { - auto object_part = active_object_parts.access(object_part_id); - if (object_part.volume > EPSILON) { - partial_objects.emplace_back(object_part.volume_centroid_accumulator / object_part.volume, object_part.volume, - object_part.connected_to_bed); + // if position is taken and point is for global stability (force > 0) or we are too close to the bed, do not add + // This allows local support points (e.g. bridging) to be generated densely + if ((supports_presence_grid.position_taken(support_point.position) && is_global)) { + return; } - }; - for (size_t layer_idx = 0; layer_idx < po->layer_count(); ++layer_idx) { - cancel_func(); - const Layer *layer = po->get_layer(layer_idx); - float bottom_z = layer->bottom_z(); - auto create_support_point_position = [bottom_z](const Vec2f &layer_pos) { return Vec3f{layer_pos.x(), layer_pos.y(), bottom_z}; }; - - for (size_t slice_idx = 0; slice_idx < layer->lslices_ex.size(); ++slice_idx) { - const LayerSlice &slice = layer->lslices_ex.at(slice_idx); - auto [new_part, covered_area] = build_object_part_from_slice(slice_idx, layer, params); - const SliceConnection &connection_to_below = precomputed_slices_connections[layer_idx][slice_idx]; - -#ifdef DETAILED_DEBUG_LOGS - std::cout << "SLICE IDX: " << slice_idx << std::endl; - for (const auto &link : slice.overlaps_below) { - std::cout << "connected to slice below: " << link.slice_idx << " by area : " << link.area << std::endl; + float area = support_point.spot_radius * support_point.spot_radius * float(PI); + // add the stability effect of the point only if the spot is not taken, so that the densely created local support points do + // not add unrealistic amount of stability to the object (due to overlaping of local support points) + if (!(supports_presence_grid.position_taken(support_point.position))) { + part.add_support_point(support_point.position, area); } - connection_to_below.print_info("CONNECTION TO BELOW"); -#endif - if (connection_to_below.area < EPSILON) { // new object part emerging - size_t part_id = active_object_parts.insert(new_part); - next_slice_idx_to_object_part_mapping.emplace(slice_idx, part_id); - next_slice_idx_to_weakest_connection.emplace(slice_idx, connection_to_below); - } else { - size_t final_part_id{}; - SliceConnection transfered_weakest_connection{}; - // MERGE parts - { - std::unordered_set parts_ids; - for (const auto &link : slice.overlaps_below) { - size_t part_id = active_object_parts.get_flat_id(prev_slice_idx_to_object_part_mapping.at(link.slice_idx)); - parts_ids.insert(part_id); - transfered_weakest_connection.add(prev_slice_idx_to_weakest_connection.at(link.slice_idx)); - } + supp_points.push_back(support_point); + supports_presence_grid.take_position(support_point.position); - final_part_id = *parts_ids.begin(); - for (size_t part_id : parts_ids) { - if (final_part_id != part_id) { - remember_partial_object(part_id); - active_object_parts.merge(part_id, final_part_id); - } + // The support point also increases the stability of the weakest connection of the object, which should be reflected + if (weakest_conn.area > EPSILON) { // Do not add it to the weakest connection if it is not valid - does not exist + weakest_conn.area += area; + weakest_conn.centroid_accumulator += support_point.position * area; + weakest_conn.second_moment_of_area_accumulator += area * + support_point.position.head<2>().cwiseProduct(support_point.position.head<2>()); + weakest_conn.second_moment_of_area_covariance_accumulator += area * support_point.position.x() * support_point.position.y(); } } - auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) { - if (conn.area < EPSILON) { // connection is empty, does not exists. Return max strength so that it is not picked as the - // weakest connection. - return INFINITY; - } - Vec3f centroid = conn.centroid_accumulator / conn.area; - Vec2f variance = (conn.second_moment_of_area_accumulator / conn.area - - centroid.head<2>().cwiseProduct(centroid.head<2>())); - float xy_variance = variance.x() + variance.y(); - float arm_len_estimate = std::max(1.0f, bottom_z - (conn.centroid_accumulator.z() / conn.area)); - return conn.area * sqrt(xy_variance) / arm_len_estimate; +struct LocalSupports { + std::vector> unstable_lines_per_slice; + std::vector> ext_perim_lines_per_slice; }; -#ifdef DETAILED_DEBUG_LOGS - connection_to_below.print_info("new_weakest_connection"); - transfered_weakest_connection.print_info("transfered_weakest_connection"); -#endif +struct EnitityToCheck +{ + const ExtrusionEntity *e; + const LayerRegion *region; + size_t slice_idx; +}; - if (estimate_conn_strength(transfered_weakest_connection) > estimate_conn_strength(connection_to_below)) { - transfered_weakest_connection = connection_to_below; - } - next_slice_idx_to_weakest_connection.emplace(slice_idx, transfered_weakest_connection); - next_slice_idx_to_object_part_mapping.emplace(slice_idx, final_part_id); - ObjectPart &part = active_object_parts.access(final_part_id); - part.add(new_part); - } - } - - prev_slice_idx_to_object_part_mapping = next_slice_idx_to_object_part_mapping; - next_slice_idx_to_object_part_mapping.clear(); - prev_slice_idx_to_weakest_connection = next_slice_idx_to_weakest_connection; - next_slice_idx_to_weakest_connection.clear(); +// TODO DRY: Very similar to gather extrusions. +std::vector gather_entities_to_check(const Layer* layer) { auto get_flat_entities = [](const ExtrusionEntity *e) { std::vector entities; @@ -902,12 +817,6 @@ std::tuple check_stability(const PrintObject return entities; }; - struct EnitityToCheck - { - const ExtrusionEntity *e; - const LayerRegion *region; - size_t slice_idx; - }; std::vector entities_to_check; for (size_t slice_idx = 0; slice_idx < layer->lslices_ex.size(); ++slice_idx) { const LayerSlice &slice = layer->lslices_ex.at(slice_idx); @@ -931,23 +840,43 @@ std::tuple check_stability(const PrintObject } } } + return entities_to_check; +} - AABBTreeLines::LinesDistancer prev_layer_boundary = layer->lower_layer != nullptr ? - AABBTreeLines::LinesDistancer{ - to_unscaled_linesf(layer->lower_layer->lslices)} : - AABBTreeLines::LinesDistancer{}; +LocalSupports compute_local_supports( + const std::vector& entities_to_check, + const std::optional& previous_layer_boundary, + const LD& prev_layer_ext_perim_lines, + size_t slices_count, + const Params& params +) { + std::vector> unstable_lines_per_slice(slices_count); + std::vector> ext_perim_lines_per_slice(slices_count); - std::vector> unstable_lines_per_slice(layer->lslices_ex.size()); - std::vector> ext_perim_lines_per_slice(layer->lslices_ex.size()); + AABBTreeLines::LinesDistancer prev_layer_boundary_distancer = + (previous_layer_boundary ? AABBTreeLines::LinesDistancer{*previous_layer_boundary} : AABBTreeLines::LinesDistancer{}); + if constexpr (debug_files) { + for (const auto &e_to_check : entities_to_check) { + for (const auto &line : check_extrusion_entity_stability(e_to_check.e, e_to_check.region, prev_layer_ext_perim_lines, + prev_layer_boundary_distancer, params)) { + if (line.support_point_generated.has_value()) { + unstable_lines_per_slice[e_to_check.slice_idx].push_back(line); + } + if (line.is_external_perimeter()) { + ext_perim_lines_per_slice[e_to_check.slice_idx].push_back(line); + } + } + } + } else { tbb::parallel_for(tbb::blocked_range(0, entities_to_check.size()), - [&entities_to_check, &prev_layer_ext_perim_lines, &prev_layer_boundary, &unstable_lines_per_slice, + [&entities_to_check, &prev_layer_ext_perim_lines, &prev_layer_boundary_distancer, &unstable_lines_per_slice, &ext_perim_lines_per_slice, ¶ms](tbb::blocked_range r) { for (size_t entity_idx = r.begin(); entity_idx < r.end(); ++entity_idx) { const auto &e_to_check = entities_to_check[entity_idx]; for (const auto &line : check_extrusion_entity_stability(e_to_check.e, e_to_check.region, prev_layer_ext_perim_lines, - prev_layer_boundary, params)) { + prev_layer_boundary_distancer, params)) { if (line.support_point_generated.has_value()) { unstable_lines_per_slice[e_to_check.slice_idx].push_back(line); } @@ -957,81 +886,207 @@ std::tuple check_stability(const PrintObject } } }); + } + return {unstable_lines_per_slice, ext_perim_lines_per_slice}; +} + +struct SliceMappings +{ + std::unordered_map index_to_object_part_mapping; + std::unordered_map index_to_weakest_connection; +}; + +std::optional to_partial_object(const ObjectPart& part) { + if (part.volume > EPSILON) { + return PartialObject{part.volume_centroid_accumulator / part.volume, part.volume, + part.connected_to_bed}; + } + return {}; +} + +SliceMappings update_active_object_parts(const Layer *layer, + const Params ¶ms, + const std::vector &precomputed_slice_connections, + const SliceMappings &previous_slice_mappings, + ActiveObjectParts &active_object_parts, + PartialObjects &partial_objects) +{ + SliceMappings new_slice_mappings; + for (size_t slice_idx = 0; slice_idx < layer->lslices_ex.size(); ++slice_idx) { + const LayerSlice &slice = layer->lslices_ex.at(slice_idx); + const std::vector extrusion_collections{gather_extrusions(slice, layer)}; + const bool connected_to_bed = int(layer->id()) == params.raft_layers_count; + + const std::optional brim{ + has_brim(layer, params) ? + std::optional{get_brim(layer->lslices[slice_idx], params.brim_type, params.brim_width)} : + std::nullopt + }; + ObjectPart new_part{ + extrusion_collections, + connected_to_bed, + layer->print_z, + layer->height, + brim + }; + + const SliceConnection &connection_to_below = precomputed_slice_connections[slice_idx]; + +#ifdef DETAILED_DEBUG_LOGS + std::cout << "SLICE IDX: " << slice_idx << std::endl; + for (const auto &link : slice.overlaps_below) { + std::cout << "connected to slice below: " << link.slice_idx << " by area : " << link.area << std::endl; + } + connection_to_below.print_info("CONNECTION TO BELOW"); +#endif + + if (connection_to_below.area < EPSILON) { // new object part emerging + size_t part_id = active_object_parts.insert(new_part); + new_slice_mappings.index_to_object_part_mapping.emplace(slice_idx, part_id); + new_slice_mappings.index_to_weakest_connection.emplace(slice_idx, connection_to_below); + } else { + size_t final_part_id{}; + SliceConnection transfered_weakest_connection{}; + // MERGE parts + { + std::unordered_set parts_ids; + for (const auto &link : slice.overlaps_below) { + size_t part_id = active_object_parts.get_flat_id(previous_slice_mappings.index_to_object_part_mapping.at(link.slice_idx)); + parts_ids.insert(part_id); + transfered_weakest_connection.add(previous_slice_mappings.index_to_weakest_connection.at(link.slice_idx)); + } + + final_part_id = *parts_ids.begin(); + for (size_t part_id : parts_ids) { + if (final_part_id != part_id) { + auto object_part = active_object_parts.access(part_id); + if (auto object = to_partial_object(object_part)) { + partial_objects.push_back(std::move(*object)); + } + active_object_parts.merge(part_id, final_part_id); + } + } + } + const float bottom_z = layer->bottom_z(); + auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) { + if (conn.area < EPSILON) { // connection is empty, does not exists. Return max strength so that it is not picked as the + // weakest connection. + return INFINITY; + } + Vec3f centroid = conn.centroid_accumulator / conn.area; + Vec2f variance = (conn.second_moment_of_area_accumulator / conn.area - + centroid.head<2>().cwiseProduct(centroid.head<2>())); + float xy_variance = variance.x() + variance.y(); + float arm_len_estimate = std::max(1.0f, bottom_z - (conn.centroid_accumulator.z() / conn.area)); + return conn.area * sqrt(xy_variance) / arm_len_estimate; + }; + +#ifdef DETAILED_DEBUG_LOGS + connection_to_below.print_info("new_weakest_connection"); + transfered_weakest_connection.print_info("transfered_weakest_connection"); +#endif + + if (estimate_conn_strength(transfered_weakest_connection) > estimate_conn_strength(connection_to_below)) { + transfered_weakest_connection = connection_to_below; + } + new_slice_mappings.index_to_weakest_connection.emplace(slice_idx, transfered_weakest_connection); + new_slice_mappings.index_to_object_part_mapping.emplace(slice_idx, final_part_id); + ObjectPart &part = active_object_parts.access(final_part_id); + part.add(new_part); + } + } + return new_slice_mappings; + } + +void reckon_global_supports(const tbb::concurrent_vector &external_perimeter_lines, + const coordf_t layer_bottom_z, + const Params ¶ms, + ObjectPart &part, + SliceConnection &weakest_connection, + SupportPoints &supp_points, + SupportGridFilter &supports_presence_grid) +{ + LD current_slice_lines_distancer({external_perimeter_lines.begin(), external_perimeter_lines.end()}); + float unchecked_dist = params.min_distance_between_support_points + 1.0f; + + for (const ExtrusionLine &line : external_perimeter_lines) { + if ((unchecked_dist + line.len < params.min_distance_between_support_points && + line.curled_up_height < params.curling_tolerance_limit) || + line.len < EPSILON) { + unchecked_dist += line.len; + } else { + unchecked_dist = line.len; + Vec2f pivot_site_search_point = Vec2f(line.b + (line.b - line.a).normalized() * 300.0f); + auto [dist, nidx, nearest_point] = current_slice_lines_distancer.distance_from_lines_extra(pivot_site_search_point); + Vec3f position = to_3d(nearest_point, layer_bottom_z); + auto [force, cause] = part.is_stable_while_extruding(weakest_connection, line, position, layer_bottom_z, params); + if (force > 0) { + SupportPoint support_point{cause, position, params.support_points_interface_radius}; + reckon_new_support_point(part, weakest_connection, supp_points, supports_presence_grid, support_point, true); + } + } + } + } +std::tuple check_stability(const PrintObject *po, + const PrecomputedSliceConnections &precomputed_slices_connections, + const PrintTryCancel &cancel_func, + const Params ¶ms) +{ + SupportPoints supp_points{}; + SupportGridFilter supports_presence_grid(po, params.min_distance_between_support_points); + ActiveObjectParts active_object_parts{}; + PartialObjects partial_objects{}; + LD prev_layer_ext_perim_lines; + + SliceMappings slice_mappings; + + + for (size_t layer_idx = 0; layer_idx < po->layer_count(); ++layer_idx) { + cancel_func(); + const Layer *layer = po->get_layer(layer_idx); + float bottom_z = layer->bottom_z(); + + slice_mappings = update_active_object_parts(layer, params, precomputed_slices_connections[layer_idx], slice_mappings, active_object_parts, partial_objects); + + std::optional prev_layer_boundary = layer->lower_layer != nullptr ? + std::optional{to_unscaled_linesf(layer->lower_layer->lslices)} : + std::nullopt; + + LocalSupports local_supports{ + compute_local_supports(gather_entities_to_check(layer), prev_layer_boundary, prev_layer_ext_perim_lines, layer->lslices_ex.size(), params)}; std::vector current_layer_ext_perims_lines{}; current_layer_ext_perims_lines.reserve(prev_layer_ext_perim_lines.get_lines().size()); // All object parts updated, and for each slice we have coresponding weakest connection. // We can now check each slice and its corresponding weakest connection and object part for stability. for (size_t slice_idx = 0; slice_idx < layer->lslices_ex.size(); ++slice_idx) { - ObjectPart &part = active_object_parts.access(prev_slice_idx_to_object_part_mapping[slice_idx]); - SliceConnection &weakest_conn = prev_slice_idx_to_weakest_connection[slice_idx]; + ObjectPart &part = active_object_parts.access(slice_mappings.index_to_object_part_mapping[slice_idx]); + SliceConnection &weakest_conn = slice_mappings.index_to_weakest_connection[slice_idx]; -#ifdef DETAILED_DEBUG_LOGS - weakest_conn.print_info("weakest connection info: "); -#endif - // Function that is used when new support point is generated. It will update the ObjectPart stability, weakest conneciton info, - // and the support presence grid and add the point to the issues. - auto reckon_new_support_point = [&part, &weakest_conn, &supp_points, &supports_presence_grid, ¶ms, - &layer_idx](SupportPointCause cause, const Vec3f &support_point, float force, - const Vec2f &dir) { - // if position is taken and point is for global stability (force > 0) or we are too close to the bed, do not add - // This allows local support points (e.g. bridging) to be generated densely - if ((supports_presence_grid.position_taken(support_point) && force > 0) || layer_idx <= 1) { - return; - } - - float area = params.support_points_interface_radius * params.support_points_interface_radius * float(PI); - // add the stability effect of the point only if the spot is not taken, so that the densely created local support points do - // not add unrealistic amount of stability to the object (due to overlaping of local support points) - if (!(supports_presence_grid.position_taken(support_point))) { - part.add_support_point(support_point, area); - } - - float radius = params.support_points_interface_radius; - supp_points.emplace_back(cause, support_point, force, radius, dir); - supports_presence_grid.take_position(support_point); - - // The support point also increases the stability of the weakest connection of the object, which should be reflected - if (weakest_conn.area > EPSILON) { // Do not add it to the weakest connection if it is not valid - does not exist - weakest_conn.area += area; - weakest_conn.centroid_accumulator += support_point * area; - weakest_conn.second_moment_of_area_accumulator += area * support_point.head<2>().cwiseProduct(support_point.head<2>()); - weakest_conn.second_moment_of_area_covariance_accumulator += area * support_point.x() * support_point.y(); - } - }; - - for (const auto &l : unstable_lines_per_slice[slice_idx]) { - assert(l.support_point_generated.has_value()); - reckon_new_support_point(*l.support_point_generated, create_support_point_position(l.b), float(-EPSILON), Vec2f::Zero()); - } - - LD current_slice_lines_distancer({ext_perim_lines_per_slice[slice_idx].begin(), ext_perim_lines_per_slice[slice_idx].end()}); - float unchecked_dist = params.min_distance_between_support_points + 1.0f; - - for (const ExtrusionLine &line : current_slice_lines_distancer.get_lines()) { - if ((unchecked_dist + line.len < params.min_distance_between_support_points && line.curled_up_height < params.curling_tolerance_limit) || - line.len < EPSILON) { - unchecked_dist += line.len; - } else { - unchecked_dist = line.len; - Vec2f pivot_site_search_point = Vec2f(line.b + (line.b - line.a).normalized() * 300.0f); - auto [dist, nidx, - nearest_point] = current_slice_lines_distancer.distance_from_lines_extra(pivot_site_search_point); - Vec3f support_point = create_support_point_position(nearest_point); - auto [force, cause] = part.is_stable_while_extruding(weakest_conn, line, support_point, bottom_z, params); - if (force > 0) { - reckon_new_support_point(cause, support_point, force, (line.b - line.a).normalized()); - } + if (layer_idx > 1) { + for (const auto &l : local_supports.unstable_lines_per_slice[slice_idx]) { + assert(l.support_point_generated.has_value()); + SupportPoint support_point{*l.support_point_generated, to_3d(l.b, bottom_z), + params.support_points_interface_radius}; + reckon_new_support_point(part, weakest_conn, supp_points, supports_presence_grid, support_point); } } - current_layer_ext_perims_lines.insert(current_layer_ext_perims_lines.end(), current_slice_lines_distancer.get_lines().begin(), - current_slice_lines_distancer.get_lines().end()); + + const tbb::concurrent_vector &external_perimeter_lines = local_supports.ext_perim_lines_per_slice[slice_idx]; + if (layer_idx > 1) { + reckon_global_supports(external_perimeter_lines, bottom_z, params, part, weakest_conn, supp_points, supports_presence_grid); + } + + current_layer_ext_perims_lines.insert(current_layer_ext_perims_lines.end(), external_perimeter_lines.begin(), external_perimeter_lines.end()); } // slice iterations prev_layer_ext_perim_lines = LD(current_layer_ext_perims_lines); } // layer iterations - for (const auto& active_obj_pair : prev_slice_idx_to_object_part_mapping) { - remember_partial_object(active_obj_pair.second); + for (const auto& active_obj_pair : slice_mappings.index_to_object_part_mapping) { + auto object_part = active_object_parts.access(active_obj_pair.second); + if (auto object = to_partial_object(object_part)) { + partial_objects.push_back(std::move(*object)); + } } return {supp_points, partial_objects}; @@ -1107,11 +1162,12 @@ void estimate_supports_malformations(SupportLayerPtrs &layers, float flow_width, Polygon pol(pl.points); pol.make_counter_clockwise(); - auto annotated_points = estimate_points_properties(pol.points, prev_layer_lines, flow_width); + auto annotated_points = ExtrusionProcessor::estimate_points_properties(pol.points, prev_layer_lines, + flow_width); for (size_t i = 0; i < annotated_points.size(); ++i) { - const ExtendedPoint &a = i > 0 ? annotated_points[i - 1] : annotated_points[i]; - const ExtendedPoint &b = annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &a = i > 0 ? annotated_points[i - 1] : annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &b = annotated_points[i]; ExtrusionLine line_out{a.position.cast(), b.position.cast(), float((a.position - b.position).norm()), extrusion}; @@ -1182,11 +1238,13 @@ void estimate_malformations(LayerPtrs &layers, const Params ¶ms) Points extrusion_pts; extrusion->collect_points(extrusion_pts); float flow_width = get_flow_width(layer_region, extrusion->role()); - auto annotated_points = estimate_points_properties(extrusion_pts, prev_layer_lines, flow_width, + auto annotated_points = ExtrusionProcessor::estimate_points_properties(extrusion_pts, + prev_layer_lines, + flow_width, params.bridge_distance); for (size_t i = 0; i < annotated_points.size(); ++i) { - const ExtendedPoint &a = i > 0 ? annotated_points[i - 1] : annotated_points[i]; - const ExtendedPoint &b = annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &a = i > 0 ? annotated_points[i - 1] : annotated_points[i]; + const ExtrusionProcessor::ExtendedPoint &b = annotated_points[i]; ExtrusionLine line_out{a.position.cast(), b.position.cast(), float((a.position - b.position).norm()), extrusion}; @@ -1196,7 +1254,8 @@ void estimate_malformations(LayerPtrs &layers, const Params ¶ms) prev_layer_lines.get_line(bottom_line_idx); // correctify the distance sign using slice polygons - float sign = (prev_layer_boundary.distance_from_lines(middle.cast()) + 0.5f * flow_width) < 0.0f ? -1.0f : 1.0f; + float sign = (prev_layer_boundary.distance_from_lines(middle.cast()) + 0.5f * flow_width) < 0.0f ? -1.0f : + 1.0f; line_out.curled_up_height = estimate_curled_up_height(middle_distance * sign, 0.5 * (a.curvature + b.curvature), l->height, flow_width, bottom_line.curled_up_height, params); @@ -1320,4 +1379,3 @@ std::vector> gather_issues(const SupportPoint } } // namespace SupportSpotsGenerator -} // namespace Slic3r diff --git a/src/libslic3r/SupportSpotsGenerator.hpp b/src/libslic3r/SupportSpotsGenerator.hpp index a946159..4f7369e 100644 --- a/src/libslic3r/SupportSpotsGenerator.hpp +++ b/src/libslic3r/SupportSpotsGenerator.hpp @@ -100,8 +100,8 @@ enum class SupportPointCause { // Note that the force is only the difference - the amount needed to stabilize the object again. struct SupportPoint { - SupportPoint(SupportPointCause cause, const Vec3f &position, float force, float spot_radius, const Vec2f &direction) - : cause(cause), position(position), force(force), spot_radius(spot_radius), direction(direction) + SupportPoint(SupportPointCause cause, const Vec3f &position, float spot_radius) + : cause(cause), position(position), spot_radius(spot_radius) {} bool is_local_extrusion_support() const @@ -113,17 +113,9 @@ struct SupportPoint SupportPointCause cause; // reason why this support point was generated. Used for the user alerts // position is in unscaled coords. The z coordinate is aligned with the layers bottom_z coordiantes Vec3f position; - // force that destabilizes the object to the point of falling/breaking. g*mm/s^2 units - // It is valid only for global_object_support. For local extrusion support points, the force is -EPSILON - // values gathered from large XL model: Min : 0 | Max : 18713800 | Average : 1361186 | Median : 329103 - // For reference 18713800 is weight of 1.8 Kg object, 329103 is weight of 0.03 Kg - // The final sliced object weight was approx 0.5 Kg - float force; // Expected spot size. The support point strength is calculated from the area defined by this value. // Currently equal to the support_points_interface_radius parameter above float spot_radius; - // direction of the fall of the object (z part is neglected) - Vec2f direction; }; using SupportPoints = std::vector; @@ -143,6 +135,104 @@ struct PartialObject bool connected_to_bed; }; +/** + * Unsacled values of integrals over a polygonal domain. + */ +class Integrals{ + public: + /** + * Construct integral x_i int x_i^2 (i=1,2), xy and integral 1 (area). + * + * @param polygons List of polygons specifing the domain. + */ + explicit Integrals(const Polygons& polygons); + + // TODO refactor and delete the default constructor + Integrals() = default; + + float area{}; + Vec2f x_i{Vec2f::Zero()}; + Vec2f x_i_squared{Vec2f::Zero()}; + float xy{}; +}; + +float compute_second_moment( + const Integrals& integrals, + const Vec2f& axis_direction +); + +class ExtrusionLine +{ +public: + ExtrusionLine(); + ExtrusionLine(const Vec2f &a, const Vec2f &b, float len, const ExtrusionEntity *origin_entity); + ExtrusionLine(const Vec2f &a, const Vec2f &b); + + bool is_external_perimeter() const; + + Vec2f a; + Vec2f b; + float len; + const ExtrusionEntity *origin_entity; + + std::optional support_point_generated = {}; + float form_quality = 1.0f; + float curled_up_height = 0.0f; + + static const constexpr int Dim = 2; + using Scalar = Vec2f::Scalar; +}; + +struct SliceConnection +{ + float area{}; + Vec3f centroid_accumulator = Vec3f::Zero(); + Vec2f second_moment_of_area_accumulator = Vec2f::Zero(); + float second_moment_of_area_covariance_accumulator{}; + + void add(const SliceConnection &other); + + void print_info(const std::string &tag) const; +}; + +Polygons get_brim(const ExPolygon& slice_polygon, const BrimType brim_type, const float brim_width); + +class ObjectPart +{ +public: + float volume{}; + Vec3f volume_centroid_accumulator = Vec3f::Zero(); + float sticking_area{}; + Vec3f sticking_centroid_accumulator = Vec3f::Zero(); + Vec2f sticking_second_moment_of_area_accumulator = Vec2f::Zero(); + float sticking_second_moment_of_area_covariance_accumulator{}; + bool connected_to_bed = false; + + ObjectPart( + const std::vector& extrusion_collections, + const bool connected_to_bed, + const coordf_t print_head_z, + const coordf_t layer_height, + const std::optional& brim + ); + + void add(const ObjectPart &other); + + void add_support_point(const Vec3f &position, float sticking_area); + + + float compute_elastic_section_modulus( + const Vec2f &line_dir, + const Vec3f &extreme_point, + const Integrals& integrals + ) const; + + std::tuple is_stable_while_extruding(const SliceConnection &connection, + const ExtrusionLine &extruded_line, + const Vec3f &extreme_point, + float layer_z, + const Params ¶ms) const; +}; using PartialObjects = std::vector; // Both support points and partial objects are sorted from the lowest z to the highest diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 09d39c4..ec7cae8 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -52,4 +52,8 @@ // Enable OpenGL debug messages using debug context #define ENABLE_OPENGL_DEBUG_OPTION (1 && ENABLE_GL_CORE_PROFILE) -#endif // _qidislicer_technologies_h_ +// Enable imgui dialog which allows to set the parameters used to export binarized gcode +#define ENABLE_BINARIZED_GCODE_DEBUG_WINDOW 0 + + +#endif // _prusaslicer_technologies_h_ diff --git a/src/libslic3r/TextConfiguration.hpp b/src/libslic3r/TextConfiguration.hpp index 1eaae55..8414dae 100644 --- a/src/libslic3r/TextConfiguration.hpp +++ b/src/libslic3r/TextConfiguration.hpp @@ -26,14 +26,6 @@ struct FontProp // When not set value is zero and is not stored std::optional line_gap; // [in font point] - // Z depth of text - float emboss; // [in mm] - - // Flag that text should use surface cutted from object - // FontProp::distance should without value - // FontProp::emboss should be positive number - // Note: default value is false - bool use_surface; // positive value mean wider character shape // negative value mean tiner character shape @@ -45,16 +37,6 @@ struct FontProp // When not set value is zero and is not stored std::optional skew; // [ration x:y] - // distance from surface point - // used for move over model surface - // When not set value is zero and is not stored - std::optional distance; // [in mm] - - // Angle of rotation around emboss direction (Z axis) - // It is calculate on the fly from volume world transformation - // only StyleManager keep actual value for comparision with style - // When not set value is zero and is not stored - std::optional angle; // [in radians] form -Pi to Pi // Parameter for True Type Font collections // Select index of font in collection @@ -92,54 +74,38 @@ struct FontProp /// /// Y size of text [in mm] /// Z size of text [in mm] - FontProp(float line_height = 10.f, float depth = 2.f) : emboss(depth), size_in_mm(line_height), use_surface(false), per_glyph(false) + FontProp(float line_height = 10.f) : size_in_mm(line_height), per_glyph(false) {} bool operator==(const FontProp& other) const { return char_gap == other.char_gap && line_gap == other.line_gap && - use_surface == other.use_surface && per_glyph == other.per_glyph && align == other.align && - is_approx(emboss, other.emboss) && is_approx(size_in_mm, other.size_in_mm) && is_approx(boldness, other.boldness) && - is_approx(skew, other.skew) && - is_approx(distance, other.distance) && - is_approx(angle, other.angle); + is_approx(skew, other.skew); } // undo / redo stack recovery template void save(Archive &ar) const { - ar(emboss, use_surface, size_in_mm, per_glyph, align.first, align.second); + ar(size_in_mm, per_glyph, align.first, align.second); cereal::save(ar, char_gap); cereal::save(ar, line_gap); cereal::save(ar, boldness); cereal::save(ar, skew); - cereal::save(ar, distance); - cereal::save(ar, angle); cereal::save(ar, collection_number); - cereal::save(ar, family); - cereal::save(ar, face_name); - cereal::save(ar, style); - cereal::save(ar, weight); } template void load(Archive &ar) { - ar(emboss, use_surface, size_in_mm, per_glyph, align.first, align.second); + ar(size_in_mm, per_glyph, align.first, align.second); cereal::load(ar, char_gap); cereal::load(ar, line_gap); cereal::load(ar, boldness); cereal::load(ar, skew); - cereal::load(ar, distance); - cereal::load(ar, angle); cereal::load(ar, collection_number); - cereal::load(ar, family); - cereal::load(ar, face_name); - cereal::load(ar, style); - cereal::load(ar, weight); } }; @@ -193,9 +159,7 @@ struct EmbossStyle } // undo / redo stack recovery - template void serialize(Archive &ar){ - ar(name, path, type, prop); - } + template void serialize(Archive &ar){ ar(name, path, type, prop); } }; // Emboss style name inside vector is unique @@ -216,21 +180,9 @@ struct TextConfiguration // Embossed text value std::string text = "None"; - // !!! Volume stored in .3mf has transformed vertices. - // (baked transformation into vertices position) - // Only place for fill this is when load from .3mf - // This is correct volume transformation - std::optional fix_3mf_tr; // undo / redo stack recovery - template void save(Archive &ar) const{ - ar(text, style); - cereal::save(ar, fix_3mf_tr); - } - template void load(Archive &ar){ - ar(text, style); - cereal::load(ar, fix_3mf_tr); - } + template void serialize(Archive &ar) { ar(style, text); } }; } // namespace Slic3r diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 236fa22..329c199 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -385,7 +385,7 @@ bool TriangleMesh::has_zero_volume() const const Vec3d sz = size(); const double volume_val = sz.x() * sz.y() * sz.z(); - return is_approx(volume_val, 0.0); + return is_approx(volume_val, 0., 0.1); } std::vector TriangleMesh::split() const diff --git a/src/libslic3r/TriangleMeshSlicer.cpp b/src/libslic3r/TriangleMeshSlicer.cpp index da696e1..79b2f31 100644 --- a/src/libslic3r/TriangleMeshSlicer.cpp +++ b/src/libslic3r/TriangleMeshSlicer.cpp @@ -1939,7 +1939,7 @@ std::vector slice_mesh_ex( &expolygons); #if 0 -//#ifndef _NDEBUG +//#ifndef NDEBUG // Test whether the expolygons in a single layer overlap. for (size_t i = 0; i < expolygons.size(); ++ i) for (size_t j = i + 1; j < expolygons.size(); ++ j) { @@ -1948,7 +1948,7 @@ std::vector slice_mesh_ex( } #endif #if 0 -//#ifndef _NDEBUG +//#ifndef NDEBUG for (const ExPolygon &ex : expolygons) { assert(! has_duplicate_points(ex.contour)); for (const Polygon &hole : ex.holes) @@ -1956,7 +1956,7 @@ std::vector slice_mesh_ex( assert(! has_duplicate_points(ex)); } assert(!has_duplicate_points(expolygons)); -#endif // _NDEBUG +#endif // NDEBUG //FIXME simplify if (this_mode == MeshSlicingParams::SlicingMode::PositiveLargestContour) keep_largest_contour_only(expolygons); @@ -1968,7 +1968,7 @@ std::vector slice_mesh_ex( expolygons = std::move(simplified); } #if 0 -//#ifndef _NDEBUG +//#ifndef NDEBUG for (const ExPolygon &ex : expolygons) { assert(! has_duplicate_points(ex.contour)); for (const Polygon &hole : ex.holes) @@ -1976,7 +1976,7 @@ std::vector slice_mesh_ex( assert(! has_duplicate_points(ex)); } assert(! has_duplicate_points(expolygons)); -#endif // _NDEBUG +#endif // NDEBUG } }); // BOOST_LOG_TRIVIAL(debug) << "slice_mesh make_expolygons in parallel - end"; diff --git a/src/libslic3r/Triangulation.cpp b/src/libslic3r/Triangulation.cpp index f5978d3..81d8761 100644 --- a/src/libslic3r/Triangulation.cpp +++ b/src/libslic3r/Triangulation.cpp @@ -61,7 +61,7 @@ inline bool has_self_intersection( lines.reserve(constrained_half_edges.size()); for (const auto &he : constrained_half_edges) lines.emplace_back(points[he.first], points[he.second]); - return !intersection_points(lines).empty(); + return !get_intersections(lines).empty(); } } // namespace priv diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 2f5258f..48f9b29 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -53,6 +53,10 @@ const std::string& sys_shapes_dir(); // Return a full path to the custom shapes gallery directory. std::string custom_shapes_dir(); +// Set a path with shapes gallery files. +void set_custom_gcodes_dir(const std::string &path); +// Return a full path to the system shapes gallery directory. +const std::string& custom_gcodes_dir(); // Set a path with preset files. void set_data_dir(const std::string &path); // Return a full path to the GUI resource files. diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index e3ee0bf..2add2c9 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -193,6 +193,17 @@ const std::string& sys_shapes_dir() return g_sys_shapes_dir; } +static std::string g_custom_gcodes_dir; + +void set_custom_gcodes_dir(const std::string &dir) +{ + g_custom_gcodes_dir = dir; +} + +const std::string& custom_gcodes_dir() +{ + return g_custom_gcodes_dir; +} // Translate function callback, to call wxWidgets translate function to convert non-localized UTF8 string to a localized one. Slic3r::I18N::translate_fn_type Slic3r::I18N::translate_fn = nullptr; diff --git a/src/platform/osx/Info.plist.in b/src/platform/osx/Info.plist.in index c99cd9e..dfb7eef 100644 --- a/src/platform/osx/Info.plist.in +++ b/src/platform/osx/Info.plist.in @@ -109,6 +109,23 @@ LSHandlerRank Alternate + + CFBundleTypeExtensions + + bgcode + BGCODE + + CFBundleTypeIconFile + bgcode.icns + CFBundleTypeName + BGCODE + CFBundleTypeRole + Viewer + LISsAppleDefaultForType + + LSHandlerRank + Alternate + CFBundleURLTypes diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 0a6c7d1..7d8571d 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -18,33 +18,6 @@ set(SLIC3R_GUI_SOURCES GUI/BackgroundSlicingProcess.hpp GUI/BitmapCache.cpp GUI/BitmapCache.hpp - GUI/Widgets/StateColor.cpp - GUI/Widgets/StateColor.hpp - GUI/Widgets/WebView.cpp - GUI/Widgets/WebView.hpp - GUI/Widgets/Label.cpp - GUI/Widgets/Label.hpp - GUI/Widgets/StateHandler.cpp - GUI/Widgets/StateHandler.hpp - GUI/Widgets/StaticBox.cpp - GUI/Widgets/StaticBox.hpp - GUI/Widgets/Button.cpp - GUI/Widgets/Button.hpp - GUI/Widgets/CheckBoxInWT.cpp - GUI/Widgets/CheckBoxInWT.hpp - GUI/Widgets/ComboBox.cpp - GUI/Widgets/ComboBox.hpp - GUI/Widgets/TextInput.cpp - GUI/Widgets/TextInput.hpp - GUI/Widgets/TextCtrl.h - GUI/Widgets/RoundedRectangle.cpp - GUI/Widgets/RoundedRectangle.hpp - GUI/Widgets/RadioBox.cpp - GUI/Widgets/RadioBox.hpp - GUI/Widgets/DropDown.cpp - GUI/Widgets/DropDown.hpp - GUI/Widgets/PopupWindow.cpp - GUI/Widgets/PopupWindow.hpp GUI/ConfigSnapshotDialog.cpp GUI/ConfigSnapshotDialog.hpp GUI/calib_dlg.cpp @@ -96,6 +69,8 @@ set(SLIC3R_GUI_SOURCES GUI/Gizmos/GLGizmoSeam.hpp GUI/Gizmos/GLGizmoSimplify.cpp GUI/Gizmos/GLGizmoSimplify.hpp + GUI/Gizmos/GLGizmoSVG.cpp + GUI/Gizmos/GLGizmoSVG.hpp GUI/Gizmos/GLGizmoMmuSegmentation.cpp GUI/Gizmos/GLGizmoMmuSegmentation.hpp GUI/Gizmos/GLGizmoMeasure.cpp @@ -138,6 +113,8 @@ set(SLIC3R_GUI_SOURCES GUI/PresetComboBoxes.cpp GUI/BitmapComboBox.hpp GUI/BitmapComboBox.cpp + GUI/EditGCodeDialog.hpp + GUI/EditGCodeDialog.cpp GUI/SavePresetDialog.hpp GUI/SavePresetDialog.cpp GUI/PhysicalPrinterDialog.hpp @@ -223,6 +200,8 @@ set(SLIC3R_GUI_SOURCES GUI/FirmwareDialog.hpp GUI/PrintHostDialogs.cpp GUI/PrintHostDialogs.hpp + GUI/WifiConfigDialog.cpp + GUI/WifiConfigDialog.hpp GUI/Jobs/Job.hpp GUI/Jobs/Worker.hpp GUI/Jobs/BoostThreadWorker.hpp @@ -274,6 +253,38 @@ set(SLIC3R_GUI_SOURCES GUI/DesktopIntegrationDialog.hpp GUI/HintNotification.cpp GUI/HintNotification.hpp + GUI/Widgets/BitmapToggleButton.cpp + GUI/Widgets/BitmapToggleButton.hpp + GUI/Widgets/Button.cpp + GUI/Widgets/Button.hpp + GUI/Widgets/CheckBox.cpp + GUI/Widgets/CheckBox.hpp + GUI/Widgets/ComboBox.cpp + GUI/Widgets/ComboBox.hpp + GUI/Widgets/DropDown.cpp + GUI/Widgets/DropDown.hpp + GUI/Widgets/StateColor.cpp + GUI/Widgets/StateColor.hpp + GUI/Widgets/WebView.cpp + GUI/Widgets/WebView.hpp + GUI/Widgets/Label.cpp + GUI/Widgets/Label.hpp + GUI/Widgets/StateHandler.cpp + GUI/Widgets/StateHandler.hpp + GUI/Widgets/StaticBox.cpp + GUI/Widgets/StaticBox.hpp + GUI/Widgets/SpinInput.cpp + GUI/Widgets/SpinInput.hpp + GUI/Widgets/SwitchButton.cpp + GUI/Widgets/SwitchButton.hpp + GUI/Widgets/TextInput.cpp + GUI/Widgets/TextInput.hpp + GUI/Widgets/TextCtrl.h + GUI/Widgets/RoundedRectangle.cpp + GUI/Widgets/RoundedRectangle.hpp + GUI/Widgets/PopupWindow.cpp + GUI/Widgets/PopupWindow.hpp + GUI/Widgets/UIColors.hpp GUI/FileArchiveDialog.cpp GUI/FileArchiveDialog.hpp GUI/Downloader.cpp @@ -294,8 +305,6 @@ set(SLIC3R_GUI_SOURCES Utils/Duet.hpp Utils/EmbossStyleManager.cpp Utils/EmbossStyleManager.hpp - Utils/EmbossStylesSerializable.cpp - Utils/EmbossStylesSerializable.hpp Utils/FlashAir.cpp Utils/FlashAir.hpp Utils/FontConfigHelp.cpp @@ -328,6 +337,8 @@ set(SLIC3R_GUI_SOURCES Utils/WinRegistry.hpp Utils/WxFontUtils.cpp Utils/WxFontUtils.hpp + Utils/WifiScanner.hpp + Utils/WifiScanner.cpp ) find_package(NanoSVG REQUIRED) @@ -337,6 +348,8 @@ if (APPLE) Utils/RetinaHelperImpl.mm Utils/MacDarkMode.mm Utils/MacUtils.mm + Utils/WifiScannerMac.h + Utils/WifiScannerMac.mm GUI/RemovableDriveManagerMM.mm GUI/RemovableDriveManagerMM.h GUI/Mouse3DHandlerMac.mm @@ -344,12 +357,13 @@ if (APPLE) GUI/InstanceCheckMac.h ) FIND_LIBRARY(DISKARBITRATION_LIBRARY DiskArbitration) + FIND_LIBRARY(COREWLAN_LIBRARY CoreWLAN) endif () add_library(libslic3r_gui STATIC ${SLIC3R_GUI_SOURCES}) if (WIN32) - target_include_directories(libslic3r_gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/WebView2/include) + target_include_directories(libslic3r_gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/+WebView2/include) endif() foreach(_source IN ITEMS ${SLIC3R_GUI_SOURCES}) @@ -367,14 +381,14 @@ if (MSVC) elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES}) elseif (APPLE) - target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY}) + target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY} ${COREWLAN_LIBRARY}) endif() -if (SLIC3R_STATIC) +#if (SLIC3R_STATIC) # FIXME: This was previously exported by wx-config but the wxWidgets # cmake build forgets this and the build fails in debug mode (or on raspberry release) - target_compile_definitions(libslic3r_gui PUBLIC -DwxDEBUG_LEVEL=0) -endif() +# target_compile_definitions(libslic3r_gui PUBLIC -DwxDEBUG_LEVEL=0) +#endif() if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r_gui pchheader.hpp FORCEINCLUDE) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 55b1188..b5d5009 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -212,6 +212,10 @@ const std::array GLVolume::MODEL_COLOR = { { { 0.5f, 1.0f, 0.5f, 1.0f }, { 0.5f, 0.5f, 1.0f, 1.0f } } }; +const ColorRGBA GLVolume::NEGATIVE_VOLUME_COLOR = { 0.2f, 0.2f, 0.2f, 0.5f }; +const ColorRGBA GLVolume::PARAMETER_MODIFIER_COLOR = { 1.0, 1.0f, 0.2f, 0.5f }; +const ColorRGBA GLVolume::SUPPORT_BLOCKER_COLOR = { 1.0f, 0.2f, 0.2f, 0.5f }; +const ColorRGBA GLVolume::SUPPORT_ENFORCER_COLOR = { 0.2f, 0.2f, 1.0f, 0.5f }; GLVolume::GLVolume(float r, float g, float b, float a) : m_sla_shift_z(0.0) @@ -242,7 +246,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) void GLVolume::set_render_color(bool force_transparent) { - bool outside = is_outside || is_below_printbed(); + bool outside = is_outside || (!is_modifier && is_below_printbed()); if (force_native_color || force_neutral_color) { if (outside && shader_outside_printer_detection_enabled) @@ -282,16 +286,13 @@ ColorRGBA color_from_model_volume(const ModelVolume& model_volume) { ColorRGBA color; if (model_volume.is_negative_volume()) - color = { 0.2f, 0.2f, 0.2f, 1.0f }; + color = GLVolume::NEGATIVE_VOLUME_COLOR; else if (model_volume.is_modifier()) - color = { 1.0, 1.0f, 0.2f, 1.0f }; + color = GLVolume::PARAMETER_MODIFIER_COLOR; else if (model_volume.is_support_blocker()) - color = { 1.0f, 0.2f, 0.2f, 1.0f }; + color = GLVolume::SUPPORT_BLOCKER_COLOR; else if (model_volume.is_support_enforcer()) - color = { 0.2f, 0.2f, 1.0f, 1.0f }; - - if (!model_volume.is_model_part()) - color.a(0.5f); + color = GLVolume::SUPPORT_ENFORCER_COLOR; return color; } @@ -1446,8 +1447,8 @@ void _3DScene::extrusionentity_to_verts(const ExtrusionPath& extrusion_path, flo polyline.remove_duplicate_points(); polyline.translate(copy); const Lines lines = polyline.lines(); - std::vector widths(lines.size(), extrusion_path.width); - std::vector heights(lines.size(), extrusion_path.height); + std::vector widths(lines.size(), extrusion_path.width()); + std::vector heights(lines.size(), extrusion_path.height()); thick_lines_to_verts(lines, widths, heights, false, print_z, geometry); } @@ -1463,8 +1464,8 @@ void _3DScene::extrusionentity_to_verts(const ExtrusionLoop& extrusion_loop, flo polyline.translate(copy); const Lines lines_this = polyline.lines(); append(lines, lines_this); - widths.insert(widths.end(), lines_this.size(), extrusion_path.width); - heights.insert(heights.end(), lines_this.size(), extrusion_path.height); + widths.insert(widths.end(), lines_this.size(), extrusion_path.width()); + heights.insert(heights.end(), lines_this.size(), extrusion_path.height()); } thick_lines_to_verts(lines, widths, heights, true, print_z, geometry); } @@ -1481,8 +1482,8 @@ void _3DScene::extrusionentity_to_verts(const ExtrusionMultiPath& extrusion_mult polyline.translate(copy); const Lines lines_this = polyline.lines(); append(lines, lines_this); - widths.insert(widths.end(), lines_this.size(), extrusion_path.width); - heights.insert(heights.end(), lines_this.size(), extrusion_path.height); + widths.insert(widths.end(), lines_this.size(), extrusion_path.width()); + heights.insert(heights.end(), lines_this.size(), extrusion_path.height()); } thick_lines_to_verts(lines, widths, heights, false, print_z, geometry); } diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index e4efd37..5268adc 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -59,6 +59,10 @@ public: static const ColorRGBA SLA_PAD_COLOR; static const ColorRGBA NEUTRAL_COLOR; static const std::array MODEL_COLOR; + static const ColorRGBA NEGATIVE_VOLUME_COLOR; + static const ColorRGBA PARAMETER_MODIFIER_COLOR; + static const ColorRGBA SUPPORT_BLOCKER_COLOR; + static const ColorRGBA SUPPORT_ENFORCER_COLOR; enum EHoverState : unsigned char { diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 13554dc..7b10099 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -3,6 +3,7 @@ #include "GUI.hpp" #include "MainFrame.hpp" #include "format.hpp" +#include "libslic3r/GCode/Thumbnails.hpp" #include #include @@ -175,9 +176,21 @@ void BackgroundSlicingProcess::process_sla() const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path); - ThumbnailsList thumbnails = this->render_thumbnails( - ThumbnailsParams{current_print()->full_print_config().option("thumbnails")->values, true, true, true, true}); + auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(current_print()->full_print_config()); + if (errors != enum_bitmask()) { + std::string error_str = format("Invalid thumbnails value:"); + error_str += GCodeThumbnails::get_error_string(errors); + throw Slic3r::ExportError(error_str); + } + + Vec2ds sizes; + if (!thumbnails_list.empty()) { + sizes.reserve(thumbnails_list.size()); + for (const auto& [format, size] : thumbnails_list) + sizes.emplace_back(size); + } + ThumbnailsList thumbnails = this->render_thumbnails(ThumbnailsParams{sizes, true, true, true, true }); m_sla_print->export_print(export_path, thumbnails); m_print->set_status(100, GUI::format(_L("Masked SLA file exported to %1%"), export_path)); diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp index 759b176..a342ce4 100644 --- a/src/slic3r/GUI/BedShapeDialog.cpp +++ b/src/slic3r/GUI/BedShapeDialog.cpp @@ -140,7 +140,10 @@ void BedShapeDialog::build_dialog(const ConfigOptionPoints& default_pt, const Co auto main_sizer = new wxBoxSizer(wxVERTICAL); main_sizer->Add(m_panel, 1, wxEXPAND); - main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10); + wxStdDialogButtonSizer* buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); + main_sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10); wxGetApp().UpdateDlgDarkUI(this, true); @@ -204,6 +207,7 @@ void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const Conf line.full_width = 1; line.widget = [this](wxWindow* parent) { wxButton* shape_btn = new wxButton(parent, wxID_ANY, _L("Load shape from STL...")); + wxGetApp().SetWindowVariantForButton(shape_btn); wxSizer* shape_sizer = new wxBoxSizer(wxHORIZONTAL); shape_sizer->Add(shape_btn, 1, wxEXPAND); @@ -284,6 +288,7 @@ wxPanel* BedShapePanel::init_texture_panel() line.full_width = 1; line.widget = [this](wxWindow* parent) { wxButton* load_btn = new wxButton(parent, wxID_ANY, _L("Load...")); + wxGetApp().SetWindowVariantForButton(load_btn); wxSizer* load_sizer = new wxBoxSizer(wxHORIZONTAL); load_sizer->Add(load_btn, 1, wxEXPAND); @@ -293,6 +298,7 @@ wxPanel* BedShapePanel::init_texture_panel() filename_sizer->Add(filename_lbl, 1, wxEXPAND); wxButton* remove_btn = new wxButton(parent, wxID_ANY, _L("Remove")); + wxGetApp().SetWindowVariantForButton(remove_btn); wxSizer* remove_sizer = new wxBoxSizer(wxHORIZONTAL); remove_sizer->Add(remove_btn, 1, wxEXPAND); @@ -355,6 +361,7 @@ wxPanel* BedShapePanel::init_model_panel() line.full_width = 1; line.widget = [this](wxWindow* parent) { wxButton* load_btn = new wxButton(parent, wxID_ANY, _L("Load...")); + wxGetApp().SetWindowVariantForButton(load_btn); wxSizer* load_sizer = new wxBoxSizer(wxHORIZONTAL); load_sizer->Add(load_btn, 1, wxEXPAND); @@ -363,6 +370,7 @@ wxPanel* BedShapePanel::init_model_panel() filename_sizer->Add(filename_lbl, 1, wxEXPAND); wxButton* remove_btn = new wxButton(parent, wxID_ANY, _L("Remove")); + wxGetApp().SetWindowVariantForButton(remove_btn); wxSizer* remove_sizer = new wxBoxSizer(wxHORIZONTAL); remove_sizer->Add(remove_btn, 1, wxEXPAND); diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 4a90575..f2a06e6 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -405,9 +405,11 @@ wxBitmapBundle* BitmapCache::from_svg(const std::string& bitmap_name, unsigned t // map of color replaces std::map replaces; if (dark_mode) - replaces["\"#808080\""] = "\"#FFFFFF\""; + replaces["#808080"] = "#FFFFFF"; if (!new_color.empty()) - replaces["\"#ED6B21\""] = "\"" + new_color + "\""; + replaces["#ED6B21"] = new_color; + + replaces["#ButtonBG"] = dark_mode ? "#4E4E4E" : "#828282"; std::string str; nsvgGetDataFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), str, replaces); @@ -461,9 +463,9 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ // map of color replaces std::map replaces; if (dark_mode) - replaces["\"#808080\""] = "\"#FFFFFF\""; + replaces["#808080"] = "#FFFFFF"; if (!new_color.empty()) - replaces["\"#ED6B21\""] = "\"" + new_color + "\""; + replaces["#ED6B21"] = new_color; NSVGimage *image = nsvgParseFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), "px", 96.0f, replaces); if (image == nullptr) diff --git a/src/slic3r/GUI/BitmapComboBox.cpp b/src/slic3r/GUI/BitmapComboBox.cpp index 55a77cf..f1bb67e 100644 --- a/src/slic3r/GUI/BitmapComboBox.cpp +++ b/src/slic3r/GUI/BitmapComboBox.cpp @@ -62,10 +62,11 @@ BitmapComboBox::BitmapComboBox(wxWindow* parent, int n/* = 0*/, const wxString choices[]/* = NULL*/, long style/* = 0*/) : - wxBitmapComboBox(parent, id, value, pos, size, n, choices, style) +// wxBitmapComboBox(parent, id, value, pos, size, n, choices, style) + ::ComboBox(parent, id, value, pos, size, n, choices, style | DD_NO_CHECK_ICON) { SetFont(Slic3r::GUI::wxGetApp().normal_font()); -#ifdef _WIN32 +#if 0 //#ifdef _WIN32 // Workaround for ignoring CBN_EDITCHANGE events, which are processed after the content of the combo box changes, so that // the index of the item inside CBN_EDITCHANGE may no more be valid. EnableTextChangedEvents(false); @@ -75,11 +76,12 @@ BitmapComboBox::BitmapComboBox(wxWindow* parent, #endif /* _WIN32 */ } +#if 0 BitmapComboBox::~BitmapComboBox() { } -#ifdef _WIN32 +//#ifdef _WIN32 int BitmapComboBox::Append(const wxString& item) { diff --git a/src/slic3r/GUI/BitmapComboBox.hpp b/src/slic3r/GUI/BitmapComboBox.hpp index 545213f..23da5d7 100644 --- a/src/slic3r/GUI/BitmapComboBox.hpp +++ b/src/slic3r/GUI/BitmapComboBox.hpp @@ -4,6 +4,7 @@ #include #include +#include "Widgets/ComboBox.hpp" #include "GUI_Utils.hpp" // --------------------------------- @@ -13,7 +14,8 @@ namespace Slic3r { namespace GUI { // BitmapComboBox used to presets list on Sidebar and Tabs -class BitmapComboBox : public wxBitmapComboBox +//class BitmapComboBox : public wxBitmapComboBox +class BitmapComboBox : public ::ComboBox { public: BitmapComboBox(wxWindow* parent, @@ -24,6 +26,7 @@ BitmapComboBox(wxWindow* parent, int n = 0, const wxString choices[] = NULL, long style = 0); +#if 0 ~BitmapComboBox(); #ifdef _WIN32 @@ -36,7 +39,7 @@ BitmapComboBox(wxWindow* parent, protected: -#ifdef _WIN32 +//#ifdef _WIN32 bool MSWOnDraw(WXDRAWITEMSTRUCT* item) override; void DrawBackground_(wxDC& dc, const wxRect& rect, int WXUNUSED(item), int flags) const; public: diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp index e6fd519..d830a4a 100644 --- a/src/slic3r/GUI/ButtonsDescription.cpp +++ b/src/slic3r/GUI/ButtonsDescription.cpp @@ -74,7 +74,7 @@ wxBitmapBundle * ModePaletteComboBox::get_bmp(const std::vector &pa // Create the bitmap with color bars. std::vector bmps; for (const auto& color : palette) { - bmps.emplace_back(get_bmp_bundle("mode", icon_height, color)); + bmps.emplace_back(get_bmp_bundle("mode", icon_height, icon_height, color)); bmps.emplace_back(get_empty_bmp_bundle(wxOSX ? 5 : 6, icon_height)); } bmp_bndl = bitmap_cache().insert_bndl(bitmap_key, bmps); diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp index 1e5c468..e7de751 100644 --- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp +++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp @@ -137,7 +137,7 @@ ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db // text html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); { - wxFont font = get_default_font(this); + wxFont font = this->GetFont();// get_default_font(this); #ifdef __WXMSW__ const int fs = font.GetPointSize(); const int fs1 = static_cast(0.8f*fs); @@ -156,7 +156,8 @@ ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db } wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxCLOSE); - wxGetApp().UpdateDarkUI(static_cast(this->FindWindowById(wxID_CLOSE, this))); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); + wxGetApp().UpdateDarkUI(buttons->GetCancelButton()); this->SetEscapeId(wxID_CLOSE); this->Bind(wxEVT_BUTTON, &ConfigSnapshotDialog::onCloseDialog, this, wxID_CLOSE); vsizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3); diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 951d5c7..137a40f 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -415,6 +415,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt title_sizer->Add(sel_all, 0, wxRIGHT, BTN_SPACING); title_sizer->Add(sel_none); + wxGetApp().SetWindowVariantForButton(sel_all_std); + wxGetApp().SetWindowVariantForButton(sel_all); + wxGetApp().SetWindowVariantForButton(sel_none); wxGetApp().UpdateDarkUI(sel_all_std); wxGetApp().UpdateDarkUI(sel_all); wxGetApp().UpdateDarkUI(sel_none); @@ -742,6 +745,8 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin wxGetApp().UpdateDarkUI(sel_all); wxGetApp().UpdateDarkUI(sel_none); + wxGetApp().SetWindowVariantForButton(sel_all); + wxGetApp().SetWindowVariantForButton(sel_none); grid->Add(new wxBoxSizer(wxHORIZONTAL)); grid->Add(new wxBoxSizer(wxHORIZONTAL)); grid->Add(new wxBoxSizer(wxHORIZONTAL)); @@ -780,6 +785,14 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin reload_presets(); set_compatible_printers_html_window(std::vector(), false); } +void PageMaterials::check_and_update_presets(bool force_reload_presets /*= false*/) +{ + if (presets_loaded) + return; + wizard_p()->update_materials(materials->technology); +// if (force_reload_presets) + reload_presets(); +} void PageMaterials::on_paint() { } @@ -845,10 +858,8 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector" "" "" - "" "%s

    %s" "
    " - "
    " "" "" , bgr_clr_str @@ -870,7 +881,6 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector" "" "" - "" "%s

    %s" "" "" @@ -891,7 +901,6 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector" "
    " "
    " - "
    " "" "" ); @@ -899,7 +908,7 @@ void PageMaterials::set_compatible_printers_html_window(const std::vectorSetFonts(font.GetFaceName(), font.GetFaceName(), size); @@ -1293,10 +1302,7 @@ void PageMaterials::clear() void PageMaterials::on_activate() { - if (! presets_loaded) { - wizard_p()->update_materials(materials->technology); - reload_presets(); - } + check_and_update_presets(true); first_paint = true; } @@ -1329,8 +1335,7 @@ PageUpdate::PageUpdate(ConfigWizard *parent) , preset_update(true) { const AppConfig *app_config = wxGetApp().app_config; - auto boldfont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - boldfont.SetWeight(wxFONTWEIGHT_BOLD); + auto boldfont = wxGetApp().bold_font(); auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _L("Check for application updates")); box_slic3r->SetValue(app_config->get("notify_release") != "none"); @@ -1409,6 +1414,7 @@ Worker::Worker(wxWindow* parent) this->Add(m_input_path, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5); auto* button_path = new wxButton(m_parent, wxID_ANY, _L("Browse")); + wxGetApp().SetWindowVariantForButton(button_path); this->Add(button_path, 0, wxEXPAND | wxTOP | wxLEFT, 5); button_path->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event) { boost::filesystem::path chosen_dest(boost::nowide::narrow(m_input_path->GetValue())); @@ -1481,9 +1487,11 @@ PageDownloader::PageDownloader(ConfigWizard* parent) const auto bgr_clr_str = wxGetApp().get_html_bg_color(parent); const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue())); - const wxString link = format_wxstr("
    %1%", "qidi3d.com"); + const wxString link = format_wxstr("%1%", "printables.com"); - const wxString main_text = format_wxstr(_L("You can get more information about the printer and %2% from the %1%." + // TRN ConfigWizard : Downloader : %1% = "printables.com", %2% = "PrusaSlicer" + const wxString main_text = format_wxstr(_L("If enabled, you will be able to open models from the %1% " + "online database with a single click (using a %2% logo button)." ), link, SLIC3R_APP_NAME); const wxFont& font = this->GetFont(); @@ -1643,7 +1651,6 @@ PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent) append(cb_3mf); append(cb_stl); - append(cb_step); // append(cb_gcode); } #endif // _WIN32 @@ -1967,7 +1974,7 @@ void PageDiameters::apply_custom_config(DynamicPrintConfig &config) set_extrusion_width("solid_infill_extrusion_width", 0.45); } -class SpinCtrlDouble: public wxSpinCtrlDouble +class SpinCtrlDouble: public ::SpinInputDouble { public: SpinCtrlDouble(wxWindow* parent) @@ -1977,10 +1984,7 @@ public: #else long style = wxSP_ARROW_KEYS; #endif - Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, style); -#ifdef _WIN32 - wxGetApp().UpdateDarkUI(this->GetText()); -#endif + Create(parent, "", wxEmptyString, wxDefaultPosition, wxSize(6* wxGetApp().em_unit(), -1), style); this->Refresh(); } ~SpinCtrlDouble() {} @@ -2506,7 +2510,7 @@ void ConfigWizard::priv::load_vendors() } } appconfig_new.set_section(section_name, section_new); - }; + } } void ConfigWizard::priv::add_page(ConfigWizardPage *page) @@ -2588,142 +2592,57 @@ void ConfigWizard::priv::set_run_reason(RunReason run_reason) void ConfigWizard::priv::update_materials(Technology technology) { + auto add_material = [](Materials& materials, PresetAliases& aliases, const Preset& preset, const Preset* printer = nullptr) { + if (!materials.containts(&preset)) { + materials.push(&preset); + if (!preset.alias.empty()) + aliases[preset.alias].emplace(&preset); + } + if (printer) { + materials.add_printer(printer); + materials.compatibility_counter[preset.alias].insert(printer); + } + }; if ((any_fff_selected || custom_printer_in_bundle || custom_printer_selected) && (technology & T_FFF)) { filaments.clear(); aliases_fff.clear(); - // Iterate filaments in all bundles - for (const auto &pair : bundles) { - for (const auto &filament : pair.second.preset_bundle->filaments) { - // Check if filament is already added - if (filaments.containts(&filament)) - continue; + for (const auto &[name, bundle] : bundles) { + for (const auto &filament : bundle.preset_bundle->filaments) { // Iterate printers in all bundles - for (const auto &printer : pair.second.preset_bundle->printers) { + for (const auto &printer : bundle.preset_bundle->printers) { if (!printer.is_visible || printer.printer_technology() != ptFFF) continue; // Filter out inapplicable printers - if (is_compatible_with_printer(PresetWithVendorProfile(filament, filament.vendor), PresetWithVendorProfile(printer, printer.vendor))) { - if (!filaments.containts(&filament)) { - filaments.push(&filament); - if (!filament.alias.empty()) - aliases_fff[filament.alias].insert(filament.name); - } - filaments.add_printer(&printer); - } + if (is_compatible_with_printer(PresetWithVendorProfile(filament, filament.vendor), PresetWithVendorProfile(printer, printer.vendor))) + add_material(filaments, aliases_fff, filament, &printer); } // template filament bundle has no printers - filament would be never added - if(pair.second.vendor_profile&& pair.second.vendor_profile->templates_profile && pair.second.preset_bundle->printers.begin() == pair.second.preset_bundle->printers.end()) - { - if (!filaments.containts(&filament)) { - filaments.push(&filament); - if (!filament.alias.empty()) - aliases_fff[filament.alias].insert(filament.name); - } + if(bundle.vendor_profile && bundle.vendor_profile->templates_profile && bundle.preset_bundle->printers.begin() == bundle.preset_bundle->printers.end()) + add_material(filaments, aliases_fff, filament); } } } - // count compatible printers - for (const auto& preset : filaments.presets) { - // skip template filaments - if (preset->vendor && preset->vendor->templates_profile) - continue; - - const auto filter = [preset](const std::pair element) { - return preset->alias == element.first; - }; - if (std::find_if(filaments.compatibility_counter.begin(), filaments.compatibility_counter.end(), filter) != filaments.compatibility_counter.end()) { - continue; - } - // find all aliases (except templates) - std::vector idx_with_same_alias; - for (size_t i = 0; i < filaments.presets.size(); ++i) { - if (preset->alias == filaments.presets[i]->alias && ((filaments.presets[i]->vendor && !filaments.presets[i]->vendor->templates_profile) || !filaments.presets[i]->vendor)) - idx_with_same_alias.push_back(i); - } - // check compatibility with each printer - size_t counter = 0; - for (const auto& printer : filaments.printers) { - if (!(*printer).is_visible || (*printer).printer_technology() != ptFFF) - continue; - bool compatible = false; - // Test other materials with same alias - for (size_t i = 0; i < idx_with_same_alias.size() && !compatible; ++i) { - const Preset& prst = *(filaments.presets[idx_with_same_alias[i]]); - const Preset& prntr = *printer; - if (is_compatible_with_printer(PresetWithVendorProfile(prst, prst.vendor), PresetWithVendorProfile(prntr, prntr.vendor))) { - compatible = true; - break; - } - } - if (compatible) - counter++; - } - filaments.compatibility_counter.emplace_back(preset->alias, counter); - } - } if (any_sla_selected && (technology & T_SLA)) { sla_materials.clear(); aliases_sla.clear(); // Iterate SLA materials in all bundles - for (const auto &pair : bundles) { - for (const auto &material : pair.second.preset_bundle->sla_materials) { - // Check if material is already added - if (sla_materials.containts(&material)) - continue; + for (const auto& [name, bundle] : bundles) { + for (const auto &material : bundle.preset_bundle->sla_materials) { // Iterate printers in all bundles // For now, we only allow the profiles to be compatible with another profiles inside the same bundle. - for (const auto& printer : pair.second.preset_bundle->printers) { + for (const auto& printer : bundle.preset_bundle->printers) { if(!printer.is_visible || printer.printer_technology() != ptSLA) continue; // Filter out inapplicable printers - if (is_compatible_with_printer(PresetWithVendorProfile(material, nullptr), PresetWithVendorProfile(printer, nullptr))) { + if (is_compatible_with_printer(PresetWithVendorProfile(material, nullptr), PresetWithVendorProfile(printer, nullptr))) // Check if material is already added - if(!sla_materials.containts(&material)) { - sla_materials.push(&material); - if (!material.alias.empty()) - aliases_sla[material.alias].insert(material.name); - } - sla_materials.add_printer(&printer); + add_material(sla_materials, aliases_sla, material, &printer); } } } } - // count compatible printers - for (const auto& preset : sla_materials.presets) { - - const auto filter = [preset](const std::pair element) { - return preset->alias == element.first; - }; - if (std::find_if(sla_materials.compatibility_counter.begin(), sla_materials.compatibility_counter.end(), filter) != sla_materials.compatibility_counter.end()) { - continue; - } - std::vector idx_with_same_alias; - for (size_t i = 0; i < sla_materials.presets.size(); ++i) { - if(preset->alias == sla_materials.presets[i]->alias) - idx_with_same_alias.push_back(i); - } - size_t counter = 0; - for (const auto& printer : sla_materials.printers) { - if (!(*printer).is_visible || (*printer).printer_technology() != ptSLA) - continue; - bool compatible = false; - // Test otrher materials with same alias - for (size_t i = 0; i < idx_with_same_alias.size() && !compatible; ++i) { - const Preset& prst = *(sla_materials.presets[idx_with_same_alias[i]]); - const Preset& prntr = *printer; - if (is_compatible_with_printer(PresetWithVendorProfile(prst, prst.vendor), PresetWithVendorProfile(prntr, prntr.vendor))) { - compatible = true; - break; - } - } - if (compatible) - counter++; - } - sla_materials.compatibility_counter.emplace_back(preset->alias, counter); - } - } } void ConfigWizard::priv::on_custom_setup(const bool custom_wanted) @@ -2856,21 +2775,14 @@ bool ConfigWizard::priv::on_bnt_finish() index->go_to(page_downloader); return false; } - /* When Filaments or Sla Materials pages are activated, - * materials for this pages are automaticaly updated and presets are reloaded. - * - * But, if _Finish_ button was clicked without activation of those pages - * (for example, just some printers were added/deleted), + /* If some printers were added/deleted, but related MaterialPage wasn't activated, * than last changes wouldn't be updated for filaments/materials. - * SO, do that before close of Wizard + * SO, do that before check_and_install_missing_materials() */ - update_materials(T_ANY); - if (any_fff_selected) - page_filaments->reload_presets(); - if (any_sla_selected) - page_sla_materials->reload_presets(); + page_filaments->check_and_update_presets(); + page_sla_materials->check_and_update_presets(); - // theres no need to check that filament is selected if we have only custom printer + // there's no need to check that filament is selected if we have only custom printer if (custom_printer_selected && !any_fff_selected && !any_sla_selected) return true; // check, that there is selected at least one filament/material return check_and_install_missing_materials(T_ANY); @@ -3360,8 +3272,8 @@ void ConfigWizard::priv::update_presets_in_config(const std::string& section, co // add or delete presets had a same alias auto it = aliases.find(alias_key); if (it != aliases.end()) - for (const std::string& name : it->second) - update(section, name); + for (const Preset* preset : it->second) + update(section, preset->name); } bool ConfigWizard::priv::check_fff_selected() diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index 51700f9..ce141e8 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -27,6 +27,7 @@ #include "SavePresetDialog.hpp" #include "wxExtensions.hpp" +#include "Widgets/SpinInput.hpp" namespace fs = boost::filesystem; @@ -291,6 +292,7 @@ struct PageMaterials: ConfigWizardPage PageMaterials(ConfigWizard *parent, Materials *materials, wxString title, wxString shortname, wxString list1name); + void check_and_update_presets(bool force_reload_presets = false); void reload_presets(); void update_lists(int sel_type, int sel_vendor, int last_selected_printer = -1); void on_material_highlighted(int sel_material); @@ -316,8 +318,8 @@ struct Materials Technology technology; // use vector for the presets to purpose of save of presets sorting in the bundle std::vector presets; - // String is alias of material, size_t number of compatible counters - std::vector> compatibility_counter; + // String is alias of material, set is set of compatible printers + std::map> compatibility_counter; std::set types; std::set printers; @@ -351,7 +353,7 @@ struct Materials size_t get_printer_counter(const Preset* preset) { for (auto it : compatibility_counter) { if (it.first == preset->alias) - return it.second; + return it.second.size(); } return 0; } @@ -506,8 +508,8 @@ struct PageDiameters: ConfigWizardPage struct PageTemperatures: ConfigWizardPage { - wxSpinCtrlDouble *spin_extr; - wxSpinCtrlDouble *spin_bed; + ::SpinInputDouble *spin_extr; + ::SpinInputDouble *spin_bed; PageTemperatures(ConfigWizard *parent); virtual void apply_custom_config(DynamicPrintConfig &config); @@ -576,7 +578,7 @@ wxDEFINE_EVENT(EVT_INDEX_PAGE, wxCommandEvent); // ConfigWizard private data -typedef std::map> PresetAliases; +typedef std::map> PresetAliases; struct ConfigWizard::priv { @@ -589,14 +591,14 @@ struct ConfigWizard::priv // PrinterPickers state. Materials filaments; // Holds available filament presets and their types & vendors Materials sla_materials; // Ditto for SLA materials - PresetAliases aliases_fff; // Map of aliase to preset names - PresetAliases aliases_sla; // Map of aliase to preset names + PresetAliases aliases_fff; // Map of alias to material presets + PresetAliases aliases_sla; // Map of alias to material presets std::unique_ptr custom_config; // Backing for custom printer definition bool any_fff_selected; // Used to decide whether to display Filaments page bool any_sla_selected; // Used to decide whether to display SLA Materials page bool custom_printer_selected { false }; // New custom printer is requested bool custom_printer_in_bundle { false }; // Older custom printer already exists when wizard starts - // Set to true if there are none FFF printers on the main FFF page. If true, only SLA printers are shown (not even custum printers) + // Set to true if there are none FFF printers on the main FFF page. If true, only SLA printers are shown (not even custom printers) bool only_sla_mode { false }; bool template_profile_selected { false }; // This bool has one purpose - to tell that template profile should be installed if its not (because it cannot be added to appconfig) diff --git a/src/slic3r/GUI/EditGCodeDialog.cpp b/src/slic3r/GUI/EditGCodeDialog.cpp new file mode 100644 index 0000000..7b166d6 --- /dev/null +++ b/src/slic3r/GUI/EditGCodeDialog.cpp @@ -0,0 +1,726 @@ +#include "EditGCodeDialog.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "GUI.hpp" +#include "GUI_App.hpp" +#include "MainFrame.hpp" +#include "format.hpp" +#include "Tab.hpp" +#include "wxExtensions.hpp" +#include "BitmapCache.hpp" +#include "ExtraRenderers.hpp" +#include "MsgDialog.hpp" +#include "Plater.hpp" + +#include "libslic3r/PlaceholderParser.hpp" +#include "libslic3r/Preset.hpp" +#include "libslic3r/Print.hpp" + +namespace Slic3r { +namespace GUI { + +//------------------------------------------ +// EditGCodeDialog +//------------------------------------------ + +EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const std::string& value) : + // TRN: This is title of a dialog. The argument is the name of the currently edited custom G-code. + DPIDialog(parent, wxID_ANY, format_wxstr(_L("Edit Custom G-code (%1%)"), key), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) +{ + SetFont(wxGetApp().normal_font()); + wxGetApp().UpdateDarkUI(this); + + int border = 10; + int em = em_unit(); + + // append info line with link on printables.com + wxHtmlWindow* html_window = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(60 * em, 5 * em), wxHW_SCROLLBAR_NEVER); + + html_window->Bind(wxEVT_HTML_LINK_CLICKED, [](wxHtmlLinkEvent& event) { + wxGetApp().open_browser_with_warning_dialog(event.GetLinkInfo().GetHref()); + event.Skip(false); + }); + + const auto text_clr = wxGetApp().get_label_clr_default(); + const auto bgr_clr_str = wxGetApp().get_html_bg_color(parent); + const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue())); + + //TRN this word-combination is a part of phraze "For more information about placeholders and its use visit our help page" + const wxString link = format_wxstr("%2%", "help.prusa3d.com/article/macros_1775", _L("help page")); + + // TRN ConfigWizard : Downloader : %1% = "help page" + const wxString main_text = format_wxstr(_L("For more information about placeholders and its use visit our %1%."), link); + + const wxFont& font = this->GetFont(); + const int fs = font.GetPointSize(); + int size[] = { fs,fs,fs,fs,fs,fs,fs }; + html_window->SetFonts(font.GetFaceName(), font.GetFaceName(), size); + + html_window->SetPage(format_wxstr( + "" + "%3%" + "" + , bgr_clr_str + , text_clr_str + , main_text + )); + + + wxStaticText* label_top = new wxStaticText(this, wxID_ANY, _L("Built-in placeholders (Double click item to add to G-code)") + ":"); + + auto* grid_sizer = new wxFlexGridSizer(1, 3, 5, 15); + grid_sizer->SetFlexibleDirection(wxBOTH); + + m_params_list = new ParamsViewCtrl(this, wxSize(em * 45, em * 70)); + m_params_list->SetFont(wxGetApp().code_font()); + wxGetApp().UpdateDarkUI(m_params_list); + + m_add_btn = new ScalableButton(this, wxID_ANY, "add_copies"); + m_add_btn->SetToolTip(_L("Add selected placeholder to G-code")); + + m_gcode_editor = new wxTextCtrl(this, wxID_ANY, value, wxDefaultPosition, wxSize(em * 75, em * 70), wxTE_MULTILINE +#ifdef _WIN32 + | wxBORDER_SIMPLE +#endif + ); + m_gcode_editor->SetFont(wxGetApp().code_font()); + m_gcode_editor->SetInsertionPointEnd(); + wxGetApp().UpdateDarkUI(m_gcode_editor); + + grid_sizer->Add(m_params_list, 1, wxEXPAND); + grid_sizer->Add(m_add_btn, 0, wxALIGN_CENTER_VERTICAL); + grid_sizer->Add(m_gcode_editor, 2, wxEXPAND); + + grid_sizer->AddGrowableRow(0, 1); + grid_sizer->AddGrowableCol(0, 1); + grid_sizer->AddGrowableCol(2, 1); + + m_param_label = new wxStaticText(this, wxID_ANY, _L("Select placeholder")); + m_param_label->SetFont(wxGetApp().bold_font()); + + m_param_description = new wxStaticText(this, wxID_ANY, wxEmptyString); + + wxStdDialogButtonSizer* btns = this->CreateStdDialogButtonSizer(wxOK | wxCANCEL); + wxGetApp().UpdateDarkUI(this->FindWindowById(wxID_OK, this)); + wxGetApp().UpdateDarkUI(this->FindWindowById(wxID_CANCEL, this)); + + wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL); + + topSizer->Add(html_window , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border); + topSizer->Add(label_top , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border); + topSizer->Add(grid_sizer , 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border); + topSizer->Add(m_param_label , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border); + topSizer->Add(m_param_description , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border); + topSizer->Add(btns , 0, wxEXPAND | wxALL, border); + + SetSizer(topSizer); + topSizer->SetSizeHints(this); + + this->Fit(); + this->Layout(); + + this->CenterOnScreen(); + + init_params_list(key); + bind_list_and_button(); +} + +EditGCodeDialog::~EditGCodeDialog() +{ + // To avoid redundant process of wxEVT_DATAVIEW_SELECTION_CHANGED after dialog distroing (on Linux) + // unbind this event from params_list + m_params_list->Unbind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this); +} + +std::string EditGCodeDialog::get_edited_gcode() const +{ + return into_u8(m_gcode_editor->GetValue()); +} + +static ParamType get_type(const std::string& opt_key, const ConfigOptionDef& opt_def) +{ + return opt_def.is_scalar() ? ParamType::Scalar : ParamType::Vector; +} + +void EditGCodeDialog::init_params_list(const std::string& custom_gcode_name) +{ + const auto& custom_gcode_placeholders = custom_gcode_specific_placeholders(); + const auto& specific_params = custom_gcode_placeholders.count(custom_gcode_name) > 0 ? + custom_gcode_placeholders.at(custom_gcode_name) : t_config_option_keys({}); + + // Add slicing states placeholders + + wxDataViewItem slicing_state = m_params_list->AppendGroup(_L("[Global] Slicing state"), "custom-gcode_slicing-state_global"); + if (!cgp_ro_slicing_states_config_def.empty()) { + wxDataViewItem read_only = m_params_list->AppendSubGroup(slicing_state, _L("Read only"), "lock_closed"); + for (const auto& [opt_key, def]: cgp_ro_slicing_states_config_def.options) + m_params_list->AppendParam(read_only, get_type(opt_key, def), opt_key); + } + + if (!cgp_rw_slicing_states_config_def.empty()) { + wxDataViewItem read_write = m_params_list->AppendSubGroup(slicing_state, _L("Read write"), "lock_open"); + for (const auto& [opt_key, def] : cgp_rw_slicing_states_config_def.options) + m_params_list->AppendParam(read_write, get_type(opt_key, def), opt_key); + } + + // add other universal params, which are related to slicing state + + if (!cgp_other_slicing_states_config_def.empty()) { + slicing_state = m_params_list->AppendGroup(_L("Slicing state"), "custom-gcode_slicing-state"); + for (const auto& [opt_key, def] : cgp_other_slicing_states_config_def.options) + m_params_list->AppendParam(slicing_state, get_type(opt_key, def), opt_key); + } + + // Add universal placeholders + + { + // Add print statistics subgroup + + if (!cgp_print_statistics_config_def.empty()) { + wxDataViewItem statistics = m_params_list->AppendGroup(_L("Print statistics"), "custom-gcode_stats"); + for (const auto& [opt_key, def] : cgp_print_statistics_config_def.options) + m_params_list->AppendParam(statistics, get_type(opt_key, def), opt_key); + } + + // Add objects info subgroup + + if (!cgp_objects_info_config_def.empty()) { + wxDataViewItem objects_info = m_params_list->AppendGroup(_L("Objects info"), "custom-gcode_object-info"); + for (const auto& [opt_key, def] : cgp_objects_info_config_def.options) + m_params_list->AppendParam(objects_info, get_type(opt_key, def), opt_key); + } + + // Add dimensions subgroup + + if (!cgp_dimensions_config_def.empty()) { + wxDataViewItem dimensions = m_params_list->AppendGroup(_L("Dimensions"), "custom-gcode_measure"); + for (const auto& [opt_key, def] : cgp_dimensions_config_def.options) + m_params_list->AppendParam(dimensions, get_type(opt_key, def), opt_key); + } + + // Add timestamp subgroup + + if (!cgp_timestamps_config_def.empty()) { + wxDataViewItem dimensions = m_params_list->AppendGroup(_L("Timestamps"), "time"); + for (const auto& [opt_key, def] : cgp_timestamps_config_def.options) + m_params_list->AppendParam(dimensions, get_type(opt_key, def), opt_key); + } + } + + // Add specific placeholders + + if (!specific_params.empty()) { + // TRN: The argument is the name of currently edited custom gcode. The string starts a section of placeholders only available in this gcode. + wxDataViewItem group = m_params_list->AppendGroup(format_wxstr(_L("Specific for %1%"), custom_gcode_name), "custom-gcode_gcode"); + for (const auto& opt_key : specific_params) + if (custom_gcode_specific_config_def.has(opt_key)) { + auto def = custom_gcode_specific_config_def.get(opt_key); + m_params_list->AppendParam(group, get_type(opt_key, *def), opt_key); + } + m_params_list->Expand(group); + } + + // Add placeholders from presets + + wxDataViewItem presets = add_presets_placeholders(); + // add other params which are related to presets + if (!cgp_other_presets_config_def.empty()) + for (const auto& [opt_key, def] : cgp_other_presets_config_def.options) + m_params_list->AppendParam(presets, get_type(opt_key, def), opt_key); +} + +wxDataViewItem EditGCodeDialog::add_presets_placeholders() +{ + auto get_set_from_vec = [](const std::vector&vec) { + return std::set(vec.begin(), vec.end()); + }; + + const bool is_fff = wxGetApp().plater()->printer_technology() == ptFFF; + const std::set print_options = get_set_from_vec(is_fff ? Preset::print_options() : Preset::sla_print_options()); + const std::set material_options = get_set_from_vec(is_fff ? Preset::filament_options() : Preset::sla_material_options()); + const std::set printer_options = get_set_from_vec(is_fff ? Preset::printer_options() : Preset::sla_printer_options()); + + const auto&full_config = wxGetApp().preset_bundle->full_config(); + + wxDataViewItem group = m_params_list->AppendGroup(_L("Presets"), "cog"); + + wxDataViewItem print = m_params_list->AppendSubGroup(group, _L("Print settings"), "cog"); + for (const auto&opt : print_options) + if (const ConfigOption *optptr = full_config.optptr(opt)) + m_params_list->AppendParam(print, optptr->is_scalar() ? ParamType::Scalar : ParamType::Vector, opt); + + wxDataViewItem material = m_params_list->AppendSubGroup(group, _(is_fff ? L("Filament settings") : L("SLA Materials settings")), is_fff ? "spool" : "resin"); + for (const auto&opt : material_options) + if (const ConfigOption *optptr = full_config.optptr(opt)) + m_params_list->AppendParam(material, optptr->is_scalar() ? ParamType::Scalar : ParamType::FilamentVector, opt); + + wxDataViewItem printer = m_params_list->AppendSubGroup(group, _L("Printer settings"), is_fff ? "printer" : "sla_printer"); + for (const auto&opt : printer_options) + if (const ConfigOption *optptr = full_config.optptr(opt)) + m_params_list->AppendParam(printer, optptr->is_scalar() ? ParamType::Scalar : ParamType::Vector, opt); + + return group; +} + +void EditGCodeDialog::add_selected_value_to_gcode() +{ + const wxString val = m_params_list->GetSelectedValue(); + if (val.IsEmpty()) + return; + + m_gcode_editor->WriteText(m_gcode_editor->GetInsertionPoint() == m_gcode_editor->GetLastPosition() ? "\n" + val : val); + + if (val.Last() == ']') { + const long new_pos = m_gcode_editor->GetInsertionPoint(); + if (val[val.Len() - 2] == '[') + m_gcode_editor->SetInsertionPoint(new_pos - 1); // set cursor into brackets + else + m_gcode_editor->SetSelection(new_pos - 17, new_pos - 1); // select "current_extruder" + } + + m_gcode_editor->SetFocus(); +} + +void EditGCodeDialog::selection_changed(wxDataViewEvent& evt) +{ + wxString label; + wxString description; + + const std::string opt_key = m_params_list->GetSelectedParamKey(); + if (!opt_key.empty()) { + const ConfigOptionDef* def { nullptr }; + + const auto& full_config = wxGetApp().preset_bundle->full_config(); + if (const ConfigDef* config_def = full_config.def(); config_def && config_def->has(opt_key)) { + def = config_def->get(opt_key); + } + else { + for (const ConfigDef* config: std::initializer_list { + &custom_gcode_specific_config_def, + &cgp_ro_slicing_states_config_def, + &cgp_rw_slicing_states_config_def, + &cgp_other_slicing_states_config_def, + &cgp_print_statistics_config_def, + &cgp_objects_info_config_def, + &cgp_dimensions_config_def, + &cgp_timestamps_config_def, + &cgp_other_presets_config_def + }) { + if (config->has(opt_key)) { + def = config->get(opt_key); + break; + } + } + } + + if (def) { + const ConfigOptionType scalar_type = def->is_scalar() ? def->type : static_cast(def->type - coVectorType); + wxString type_str = scalar_type == coNone ? "none" : + scalar_type == coFloat ? "float" : + scalar_type == coInt ? "integer" : + scalar_type == coString ? "string" : + scalar_type == coPercent ? "percent" : + scalar_type == coFloatOrPercent ? "float or percent" : + scalar_type == coPoint ? "point" : + scalar_type == coBool ? "bool" : + scalar_type == coEnum ? "enum" : "undef"; + if (!def->is_scalar()) + type_str += "[]"; + + label = (!def || (def->full_label.empty() && def->label.empty()) ) ? format_wxstr("%1%\n(%2%)", opt_key, type_str) : + (!def->full_label.empty() && !def->label.empty() ) ? + format_wxstr("%1% > %2%\n(%3%)", _(def->full_label), _(def->label), type_str) : + format_wxstr("%1%\n(%2%)", def->label.empty() ? _(def->full_label) : _(def->label), type_str); + + if (def) + description = get_wraped_wxString(_(def->tooltip), 120); + } + else + label = "Undef optptr"; + } + + m_param_label->SetLabel(label); + m_param_description->SetLabel(description); + + Layout(); +} + +void EditGCodeDialog::bind_list_and_button() +{ + m_params_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this); + + m_params_list->Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& ) { + add_selected_value_to_gcode(); + }); + + m_add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { + add_selected_value_to_gcode(); + }); +} + +void EditGCodeDialog::on_dpi_changed(const wxRect&suggested_rect) +{ + const int& em = em_unit(); + + msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL }); + + const wxSize& size = wxSize(45 * em, 35 * em); + SetMinSize(size); + + Fit(); + Refresh(); +} + +void EditGCodeDialog::on_sys_color_changed() +{ + m_add_btn->sys_color_changed(); +} + + + +const std::map ParamsInfo { +// Type BitmapName + { ParamType::Scalar, "custom-gcode_single" }, + { ParamType::Vector, "custom-gcode_vector" }, + { ParamType::FilamentVector,"custom-gcode_vector-index" }, +}; + +static void make_bold(wxString& str) +{ +#if defined(SUPPORTS_MARKUP) && !defined(__APPLE__) + str = format_wxstr("%1%", str); +#endif +} + +// ---------------------------------------------------------------------------- +// ParamsModelNode: a node inside ParamsModel +// ---------------------------------------------------------------------------- + +ParamsNode::ParamsNode(const wxString& group_name, const std::string& icon_name) +: icon_name(icon_name) +, text(group_name) +{ + make_bold(text); +} + +ParamsNode::ParamsNode( ParamsNode * parent, + const wxString& sub_group_name, + const std::string& icon_name) + : m_parent(parent) + , icon_name(icon_name) + , text(sub_group_name) +{ + make_bold(text); +} + +ParamsNode::ParamsNode( ParamsNode* parent, + ParamType param_type, + const std::string& param_key) + : m_parent(parent) + , m_param_type(param_type) + , m_container(false) + , param_key(param_key) +{ + text = from_u8(param_key); + if (param_type == ParamType::Vector) + text += "[]"; + else if (param_type == ParamType::FilamentVector) + text += "[current_extruder]"; + + icon_name = ParamsInfo.at(param_type); +} + + +// ---------------------------------------------------------------------------- +// ParamsModel +// ---------------------------------------------------------------------------- + +ParamsModel::ParamsModel() +{ +} + +wxDataViewItem ParamsModel::AppendGroup(const wxString& group_name, + const std::string& icon_name) +{ + m_group_nodes.emplace_back(std::make_unique(group_name, icon_name)); + + wxDataViewItem parent(nullptr); + wxDataViewItem child((void*)m_group_nodes.back().get()); + + ItemAdded(parent, child); + m_ctrl->Expand(parent); + return child; +} + +wxDataViewItem ParamsModel::AppendSubGroup(wxDataViewItem parent, + const wxString& sub_group_name, + const std::string& icon_name) +{ + ParamsNode* parent_node = static_cast(parent.GetID()); + if (!parent_node) + return wxDataViewItem(0); + + parent_node->Append(std::make_unique(parent_node, sub_group_name, icon_name)); + const wxDataViewItem sub_group_item((void*)parent_node->GetChildren().back().get()); + + ItemAdded(parent, sub_group_item); + return sub_group_item; +} + +wxDataViewItem ParamsModel::AppendParam(wxDataViewItem parent, + ParamType param_type, + const std::string& param_key) +{ + ParamsNode* parent_node = static_cast(parent.GetID()); + if (!parent_node) + return wxDataViewItem(0); + + parent_node->Append(std::make_unique(parent_node, param_type, param_key)); + + const wxDataViewItem child_item((void*)parent_node->GetChildren().back().get()); + + ItemAdded(parent, child_item); + return child_item; +} + +wxString ParamsModel::GetParamName(wxDataViewItem item) +{ + if (item.IsOk()) { + ParamsNode* node = static_cast(item.GetID()); + if (node->IsParamNode()) + return node->text; + } + return wxEmptyString; +} + +std::string ParamsModel::GetParamKey(wxDataViewItem item) +{ + if (item.IsOk()) { + ParamsNode* node = static_cast(item.GetID()); + return node->param_key; + } + return std::string(); +} + +wxDataViewItem ParamsModel::Delete(const wxDataViewItem& item) +{ + auto ret_item = wxDataViewItem(nullptr); + ParamsNode* node = static_cast(item.GetID()); + if (!node) // happens if item.IsOk()==false + return ret_item; + + // first remove the node from the parent's array of children; + // NOTE: m_group_nodes is only a vector of _pointers_ + // thus removing the node from it doesn't result in freeing it + ParamsNodePtrArray& children = node->GetChildren(); + // Delete all children + while (!children.empty()) + Delete(wxDataViewItem(children.back().get())); + + auto node_parent = node->GetParent(); + + ParamsNodePtrArray& parents_children = node_parent ? node_parent->GetChildren() : m_group_nodes; + auto it = find_if(parents_children.begin(), parents_children.end(), + [node](std::unique_ptr& child) { return child.get() == node; }); + assert(it != parents_children.end()); + it = parents_children.erase(it); + + if (it != parents_children.end()) + ret_item = wxDataViewItem(it->get()); + + wxDataViewItem parent(node_parent); + // set m_container to FALSE if parent has no child + if (node_parent) { +#ifndef __WXGTK__ + if (node_parent->GetChildren().empty()) + node_parent->SetContainer(false); +#endif //__WXGTK__ + ret_item = parent; + } + + // notify control + ItemDeleted(parent, item); + return ret_item; +} + +void ParamsModel::Clear() +{ + while (!m_group_nodes.empty()) + Delete(wxDataViewItem(m_group_nodes.back().get())); + +} + +void ParamsModel::GetValue(wxVariant& variant, const wxDataViewItem& item, unsigned int col) const +{ + assert(item.IsOk()); + + ParamsNode* node = static_cast(item.GetID()); + if (col == (unsigned int)0) +#ifdef __linux__ + variant << wxDataViewIconText(node->text, get_bmp_bundle(node->icon_name)->GetIconFor(m_ctrl->GetParent())); +#else + variant << DataViewBitmapText(node->text, get_bmp_bundle(node->icon_name)->GetBitmapFor(m_ctrl->GetParent())); +#endif //__linux__ + else + wxLogError("DiffModel::GetValue: wrong column %d", col); +} + +bool ParamsModel::SetValue(const wxVariant& variant, const wxDataViewItem& item, unsigned int col) +{ + assert(item.IsOk()); + + ParamsNode* node = static_cast(item.GetID()); + if (col == (unsigned int)0) { +#ifdef __linux__ + wxDataViewIconText data; + data << variant; + node->icon = data.GetIcon(); +#else + DataViewBitmapText data; + data << variant; + node->icon = data.GetBitmap(); +#endif + node->text = data.GetText(); + return true; + } + + wxLogError("DiffModel::SetValue: wrong column"); + return false; +} + +wxDataViewItem ParamsModel::GetParent(const wxDataViewItem&item) const +{ + // the invisible root node has no parent + if (!item.IsOk()) + return wxDataViewItem(nullptr); + + ParamsNode* node = static_cast(item.GetID()); + + if (node->IsGroupNode()) + return wxDataViewItem(nullptr); + + return wxDataViewItem((void*)node->GetParent()); +} + +bool ParamsModel::IsContainer(const wxDataViewItem& item) const +{ + // the invisble root node can have children + if (!item.IsOk()) + return true; + + ParamsNode* node = static_cast(item.GetID()); + return node->IsContainer(); +} + +unsigned int ParamsModel::GetChildren(const wxDataViewItem& parent, wxDataViewItemArray& array) const +{ + ParamsNode* parent_node = (ParamsNode*)parent.GetID(); + + if (parent_node == nullptr) { + for (const auto& group : m_group_nodes) + array.Add(wxDataViewItem((void*)group.get())); + } + else { + const ParamsNodePtrArray& children = parent_node->GetChildren(); + for (const std::unique_ptr& child : children) + array.Add(wxDataViewItem((void*)child.get())); + } + + return array.Count(); +} + + +// ---------------------------------------------------------------------------- +// ParamsViewCtrl +// ---------------------------------------------------------------------------- + +ParamsViewCtrl::ParamsViewCtrl(wxWindow *parent, wxSize size) + : wxDataViewCtrl(parent, wxID_ANY, wxDefaultPosition, size, wxDV_SINGLE | wxDV_NO_HEADER// | wxDV_ROW_LINES +#ifdef _WIN32 + | wxBORDER_SIMPLE +#endif + ), + m_em_unit(em_unit(parent)) +{ + wxGetApp().UpdateDVCDarkUI(this); + + model = new ParamsModel(); + this->AssociateModel(model); + model->SetAssociatedControl(this); + +#ifdef __linux__ + wxDataViewIconTextRenderer* rd = new wxDataViewIconTextRenderer(); +#ifdef SUPPORTS_MARKUP + rd->EnableMarkup(true); +#endif + wxDataViewColumn* column = new wxDataViewColumn("", rd, 0, 20 * m_em_unit, wxALIGN_TOP, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_CELL_INERT); +#else + wxDataViewColumn* column = new wxDataViewColumn("", new BitmapTextRenderer(true, wxDATAVIEW_CELL_INERT), 0, 20 * m_em_unit, wxALIGN_TOP, wxDATAVIEW_COL_RESIZABLE); +#endif //__linux__ + this->AppendColumn(column); + this->SetExpanderColumn(column); +} + +wxDataViewItem ParamsViewCtrl::AppendGroup(const wxString& group_name, const std::string& icon_name) +{ + return model->AppendGroup(group_name, icon_name); +} + +wxDataViewItem ParamsViewCtrl::AppendSubGroup( wxDataViewItem parent, + const wxString& sub_group_name, + const std::string& icon_name) +{ + return model->AppendSubGroup(parent, sub_group_name, icon_name); +} + +wxDataViewItem ParamsViewCtrl::AppendParam( wxDataViewItem parent, + ParamType param_type, + const std::string& param_key) +{ + return model->AppendParam(parent, param_type, param_key); +} + +wxString ParamsViewCtrl::GetValue(wxDataViewItem item) +{ + return model->GetParamName(item); +} + +wxString ParamsViewCtrl::GetSelectedValue() +{ + return model->GetParamName(this->GetSelection()); +} + +std::string ParamsViewCtrl::GetSelectedParamKey() +{ + return model->GetParamKey(this->GetSelection()); +} + +void ParamsViewCtrl::CheckAndDeleteIfEmpty(wxDataViewItem item) +{ + wxDataViewItemArray children; + model->GetChildren(item, children); + if (children.IsEmpty()) + model->Delete(item); +} + +void ParamsViewCtrl::Clear() +{ + model->Clear(); +} + +void ParamsViewCtrl::Rescale(int em/* = 0*/) +{ +// model->Rescale(); + Refresh(); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/EditGCodeDialog.hpp b/src/slic3r/GUI/EditGCodeDialog.hpp new file mode 100644 index 0000000..a0d1a8f --- /dev/null +++ b/src/slic3r/GUI/EditGCodeDialog.hpp @@ -0,0 +1,234 @@ +#ifndef slic3r_EditGCodeDialog_hpp_ +#define slic3r_EditGCodeDialog_hpp_ + +#include + +#include + +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" +#include "libslic3r/Preset.hpp" +#include "libslic3r/PrintConfig.hpp" + +class wxListBox; +class wxTextCtrl; +class ScalableButton; +class wxStaticText; + +namespace Slic3r { + +namespace GUI { + +class ParamsViewCtrl; + +//------------------------------------------ +// EditGCodeDialog +//------------------------------------------ + +class EditGCodeDialog : public DPIDialog +{ + ParamsViewCtrl* m_params_list {nullptr}; + ScalableButton* m_add_btn {nullptr}; + wxTextCtrl* m_gcode_editor {nullptr}; + wxStaticText* m_param_label {nullptr}; + wxStaticText* m_param_description {nullptr}; + + ReadOnlySlicingStatesConfigDef cgp_ro_slicing_states_config_def; + ReadWriteSlicingStatesConfigDef cgp_rw_slicing_states_config_def; + OtherSlicingStatesConfigDef cgp_other_slicing_states_config_def; + PrintStatisticsConfigDef cgp_print_statistics_config_def; + ObjectsInfoConfigDef cgp_objects_info_config_def; + DimensionsConfigDef cgp_dimensions_config_def; + TimestampsConfigDef cgp_timestamps_config_def; + OtherPresetsConfigDef cgp_other_presets_config_def; + +public: + EditGCodeDialog(wxWindow*parent, const std::string&key, const std::string&value); + ~EditGCodeDialog(); + + std::string get_edited_gcode() const; + + void init_params_list(const std::string& custom_gcode_name); + wxDataViewItem add_presets_placeholders(); + + void add_selected_value_to_gcode(); + void bind_list_and_button(); + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; + void on_sys_color_changed() override; + + void selection_changed(wxDataViewEvent& evt); +}; + + + + +// ---------------------------------------------------------------------------- +// ParamsModelNode: a node inside ParamsModel +// ---------------------------------------------------------------------------- + +class ParamsNode; +using ParamsNodePtrArray = std::vector>; + +enum class ParamType { + Undef, + Scalar, + Vector, + FilamentVector, +}; + +// On all of 3 different platforms Bitmap+Text icon column looks different +// because of Markup text is missed or not implemented. +// As a temporary workaround, we will use: +// MSW - DataViewBitmapText (our custom renderer wxBitmap + wxString, supported Markup text) +// OSX - -//-, but Markup text is not implemented right now +// GTK - wxDataViewIconText (wxWidgets for GTK renderer wxIcon + wxString, supported Markup text) +class ParamsNode +{ + ParamsNode* m_parent{ nullptr }; + ParamsNodePtrArray m_children; + + ParamType m_param_type{ ParamType::Undef }; + + // TODO/FIXME: + // the GTK version of wxDVC (in particular wxDataViewCtrlInternal::ItemAdded) + // needs to know in advance if a node is or _will be_ a container. + // Thus implementing: + // bool IsContainer() const + // { return m_children.size()>0; } + // doesn't work with wxGTK when DiffModel::AddToClassical is called + // AND the classical node was removed (a new node temporary without children + // would be added to the control) + bool m_container{ true }; + +public: + +#ifdef __linux__ + wxIcon icon; +#else + wxBitmap icon; +#endif //__linux__ + std::string icon_name; + std::string param_key; + wxString text; + + // Group params(root) node + ParamsNode(const wxString& group_name, const std::string& icon_name); + + // sub SlicingState node + ParamsNode(ParamsNode* parent, + const wxString& sub_group_name, + const std::string& icon_name); + + // parametre node + ParamsNode( ParamsNode* parent, + ParamType param_type, + const std::string& param_key); + + bool IsContainer() const { return m_container; } + bool IsGroupNode() const { return m_parent == nullptr; } + bool IsParamNode() const { return m_param_type != ParamType::Undef; } + void SetContainer(bool is_container) { m_container = is_container; } + + ParamsNode* GetParent() { return m_parent; } + ParamsNodePtrArray& GetChildren() { return m_children; } + + void Append(std::unique_ptr child) { m_children.emplace_back(std::move(child)); } +}; + + +// ---------------------------------------------------------------------------- +// ParamsModel +// ---------------------------------------------------------------------------- + +class ParamsModel : public wxDataViewModel +{ + ParamsNodePtrArray m_group_nodes; + wxDataViewCtrl* m_ctrl{ nullptr }; + +public: + + ParamsModel(); + ~ParamsModel() override = default; + + void SetAssociatedControl(wxDataViewCtrl* ctrl) { m_ctrl = ctrl; } + + wxDataViewItem AppendGroup(const wxString& group_name, + const std::string& icon_name); + + wxDataViewItem AppendSubGroup(wxDataViewItem parent, + const wxString& sub_group_name, + const std::string&icon_name); + + wxDataViewItem AppendParam( wxDataViewItem parent, + ParamType param_type, + const std::string& param_key); + + wxDataViewItem Delete(const wxDataViewItem& item); + + wxString GetParamName(wxDataViewItem item); + std::string GetParamKey(wxDataViewItem item); + + void Clear(); + + wxDataViewItem GetParent(const wxDataViewItem& item) const override; + unsigned int GetChildren(const wxDataViewItem& parent, wxDataViewItemArray& array) const override; + + void GetValue(wxVariant& variant, const wxDataViewItem& item, unsigned int col) const override; + bool SetValue(const wxVariant& variant, const wxDataViewItem& item, unsigned int col) override; + + bool IsContainer(const wxDataViewItem& item) const override; + // Is the container just a header or an item with all columns + // In our case it is an item with all columns + bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; } +}; + + +// ---------------------------------------------------------------------------- +// ParamsViewCtrl +// ---------------------------------------------------------------------------- + +class ParamsViewCtrl : public wxDataViewCtrl +{ + int m_em_unit; + +public: + ParamsViewCtrl(wxWindow* parent, wxSize size); + ~ParamsViewCtrl() override { + if (model) { + Clear(); + model->DecRef(); + } + } + + ParamsModel* model{ nullptr }; + + wxDataViewItem AppendGroup(const wxString& group_name, + const std::string& icon_name); + + wxDataViewItem AppendSubGroup(wxDataViewItem parent, + const wxString& sub_group_name, + const std::string&icon_name); + + wxDataViewItem AppendParam( wxDataViewItem parent, + ParamType param_type, + const std::string& param_key); + + wxString GetValue(wxDataViewItem item); + wxString GetSelectedValue(); + std::string GetSelectedParamKey(); + + void CheckAndDeleteIfEmpty(wxDataViewItem item); + + void Clear(); + void Rescale(int em = 0); + + void set_em_unit(int em) { m_em_unit = em; } +}; + + +} // namespace GUI +} // namespace Slic3r + +#endif diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index b6e12c3..ed7f6cc 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -1,6 +1,7 @@ #include "ExtraRenderers.hpp" #include "wxExtensions.hpp" #include "GUI.hpp" +#include "GUI_App.hpp" #include "I18N.hpp" #include "BitmapComboBox.hpp" #include "Plater.hpp" @@ -150,7 +151,14 @@ bool BitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state) // workaround for Windows DarkMode : Don't respect to the state & wxDATAVIEW_CELL_SELECTED to avoid update of the text color RenderText(m_value.GetText(), xoffset, rect, dc, state & wxDATAVIEW_CELL_SELECTED ? 0 :state); #else + { + wxDataViewCtrl* const view = GetView(); + if (GetAttr().HasFont()) + dc->SetFont(GetAttr().GetEffectiveFont(view->GetFont())); + else + dc->SetFont(view->GetFont()); RenderText(m_value.GetText(), xoffset, rect, dc, state); + } #endif return true; @@ -161,22 +169,22 @@ wxSize BitmapTextRenderer::GetSize() const if (!m_value.GetText().empty()) { wxSize size; -#if defined(SUPPORTS_MARKUP) && defined(wxHAS_GENERIC_DATAVIEWCTRL) - if (m_markupText) - { wxDataViewCtrl* const view = GetView(); wxClientDC dc(view); if (GetAttr().HasFont()) dc.SetFont(GetAttr().GetEffectiveFont(view->GetFont())); + else + dc.SetFont(view->GetFont()); +#if defined(SUPPORTS_MARKUP) && defined(wxHAS_GENERIC_DATAVIEWCTRL) + if (m_markupText) size = m_markupText->Measure(dc); + else +#endif // SUPPORTS_MARKUP && wxHAS_GENERIC_DATAVIEWCTRL + size = dc.GetTextExtent(m_value.GetText()); int lines = m_value.GetText().Freq('\n') + 1; size.SetHeight(size.GetHeight() * lines); - } - else -#endif // SUPPORTS_MARKUP && wxHAS_GENERIC_DATAVIEWCTRL - size = GetTextExtent(m_value.GetText()); if (m_value.GetBitmap().IsOk()) size.x += m_value.GetBitmap().GetWidth() + 4; @@ -319,6 +327,9 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR labelRect.GetTopLeft(), wxSize(labelRect.GetWidth(), -1), 0, nullptr , wxCB_READONLY); +#ifdef _WIN32 + Slic3r::GUI::wxGetApp().UpdateDarkUI(c_editor); +#endif int def_id = get_default_extruder_idx ? get_default_extruder_idx() : 0; c_editor->Append(_L("default"), def_id < 0 ? wxNullBitmap : *icons[def_id]); for (size_t i = 0; i < icons.size(); i++) @@ -345,7 +356,11 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR bool BitmapChoiceRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) { +#ifdef _WIN32 + Slic3r::GUI::BitmapComboBox* c = static_cast(ctrl); +#else wxBitmapComboBox* c = static_cast(ctrl); +#endif int selection = c->GetSelection(); if (selection < 0) return false; diff --git a/src/slic3r/GUI/ExtruderSequenceDialog.cpp b/src/slic3r/GUI/ExtruderSequenceDialog.cpp index e1c6a7c..a2c7129 100644 --- a/src/slic3r/GUI/ExtruderSequenceDialog.cpp +++ b/src/slic3r/GUI/ExtruderSequenceDialog.cpp @@ -18,6 +18,7 @@ #include "MainFrame.hpp" #include "BitmapComboBox.hpp" +#include "Widgets/CheckBox.hpp" namespace Slic3r { namespace GUI { @@ -161,7 +162,7 @@ ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequ intervals_box_sizer->Add(m_intervals_grid_sizer, 0, wxLEFT, em); option_sizer->Add(intervals_box_sizer, 0, wxEXPAND); - m_random_sequence = new wxCheckBox(this, wxID_ANY, _L("Random sequence")); + m_random_sequence = new ::CheckBox(this, _L("Random sequence")); m_random_sequence->SetValue(m_sequence.random_sequence); m_random_sequence->SetToolTip(_L("If enabled, random sequence of the selected extruders will be used.")); m_random_sequence->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& e) { @@ -169,7 +170,7 @@ ExtruderSequenceDialog::ExtruderSequenceDialog(const DoubleSlider::ExtrudersSequ m_color_repetition->Enable(m_sequence.random_sequence); }); - m_color_repetition = new wxCheckBox(this, wxID_ANY, _L("Allow next color repetition")); + m_color_repetition = new ::CheckBox(this, _L("Allow next color repetition")); m_color_repetition->SetValue(m_sequence.color_repetition); m_color_repetition->SetToolTip(_L("If enabled, a repetition of the next random color will be allowed.")); m_color_repetition->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& e) {m_sequence.color_repetition = e.IsChecked(); }); diff --git a/src/slic3r/GUI/ExtruderSequenceDialog.hpp b/src/slic3r/GUI/ExtruderSequenceDialog.hpp index da19f79..e47c438 100644 --- a/src/slic3r/GUI/ExtruderSequenceDialog.hpp +++ b/src/slic3r/GUI/ExtruderSequenceDialog.hpp @@ -6,7 +6,7 @@ class wxTextCtrl; class wxFlexGridSizer; -class wxCheckBox; +class CheckBox; namespace Slic3r { namespace GUI { @@ -23,8 +23,8 @@ class ExtruderSequenceDialog: public DPIDialog wxTextCtrl* m_interval_by_layers {nullptr}; wxTextCtrl* m_interval_by_mm {nullptr}; - wxCheckBox* m_random_sequence {nullptr}; - wxCheckBox* m_color_repetition{nullptr}; + CheckBox* m_random_sequence {nullptr}; + CheckBox* m_color_repetition{nullptr}; wxFlexGridSizer* m_intervals_grid_sizer {nullptr}; wxFlexGridSizer* m_extruders_grid_sizer {nullptr}; diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 19c1322..bbb1a13 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -8,6 +8,8 @@ #include "format.hpp" #include "libslic3r/PrintConfig.hpp" +#include "libslic3r/enum_bitmask.hpp" +#include "libslic3r/GCode/Thumbnails.hpp" #include #include @@ -20,13 +22,14 @@ #include "MsgDialog.hpp" #include "BitmapComboBox.hpp" +#include "Widgets/ComboBox.hpp" #ifdef __WXOSX__ #define wxOSX true #else #define wxOSX false #endif -namespace Slic3r { namespace GUI { +namespace Slic3r :: GUI { wxString double_to_string(double const value, const int max_precision /*= 4*/) { @@ -58,16 +61,22 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/) return s; } -wxString get_thumbnails_string(const std::vector& values) +ThumbnailErrors validate_thumbnails_string(wxString& str, const wxString& def_ext = "PNG") { - wxString ret_str; - for (size_t i = 0; i < values.size(); ++ i) { - const Vec2d& el = values[i]; - ret_str += wxString::Format((i == 0) ? "%ix%i" : ", %ix%i", int(el[0]), int(el[1])); - } - return ret_str; + std::string input_string = into_u8(str); + + str.Clear(); + + auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(input_string); + if (!thumbnails_list.empty()) { + const auto& extentions = ConfigOptionEnum::get_enum_names(); + for (const auto& [format, size] : thumbnails_list) + str += format_wxstr("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(format)]); + str.resize(str.Len() - 2); } + return errors; +} Field::~Field() { @@ -88,7 +97,6 @@ Field::~Field() void Field::PostInitialize() { - auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); switch (m_opt.type) { @@ -173,6 +181,11 @@ void Field::on_back_to_sys_value() m_back_to_sys_value(m_opt_id); } +void Field::on_edit_value() +{ + if (m_fn_edit_value) + m_fn_edit_value(m_opt_id); +} wxString Field::get_tooltip_text(const wxString& default_string) { if (m_opt.tooltip.empty()) @@ -355,66 +368,36 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true } } - m_value = into_u8(str); - break; } - - case coPoints: { - std::vector out_values; - str.Replace(" ", wxEmptyString, true); - if (!str.IsEmpty()) { - bool invalid_val = false; - bool out_of_range_val = false; - wxStringTokenizer thumbnails(str, ","); - while (thumbnails.HasMoreTokens()) { - wxString token = thumbnails.GetNextToken(); - double x, y; - wxStringTokenizer thumbnail(token, "x"); - if (thumbnail.HasMoreTokens()) { - wxString x_str = thumbnail.GetNextToken(); - if (x_str.ToDouble(&x) && thumbnail.HasMoreTokens()) { - wxString y_str = thumbnail.GetNextToken(); - if (y_str.ToDouble(&y) && !thumbnail.HasMoreTokens()) { - //Y18 - if (m_opt_id == "bed_exclude_area") { - if (0 <= x && x <= 1000 && 0 <= y && y <= 1000) { - out_values.push_back(Vec2d(x, y)); - continue; - } + if (m_opt.opt_key == "thumbnails") { + wxString str_out = str; + ThumbnailErrors errors = validate_thumbnails_string(str_out); + if (errors != enum_bitmask()) { + set_value(str_out, true); + wxString error_str; + if (errors.has(ThumbnailError::InvalidVal)) + error_str += format_wxstr(_L("Invalid input format. Expected vector of dimensions in the following format: \"%1%\""), "XxY/EXT, XxY/EXT, ..."); + if (errors.has(ThumbnailError::OutOfRange)) { + if (!error_str.empty()) + error_str += "\n\n"; + error_str += _L("Input value is out of range"); } - else{ - if (0 < x && x < 1000 && 0 < y && y < 1000) { - out_values.push_back(Vec2d(x, y)); - continue; - } - } - - out_of_range_val = true; - break; + if (errors.has(ThumbnailError::InvalidExt)) { + if (!error_str.empty()) + error_str += "\n\n"; + error_str += _L("Some extension in the input is invalid"); } + show_error(m_parent, error_str); } + else if (str_out != str) { + str = str_out; + set_value(str, true); } - invalid_val = true; - break; } - if (out_of_range_val) { - wxString text_value; - if (!m_value.empty()) - text_value = get_thumbnails_string(boost::any_cast>(m_value)); - set_value(text_value, true); - show_error(m_parent, _L("Input value is out of range")); - } - else if (invalid_val) { - wxString text_value; - if (!m_value.empty()) - text_value = get_thumbnails_string(boost::any_cast>(m_value)); - set_value(text_value, true); - show_error(m_parent, format_wxstr(_L("Invalid input format. Expected vector of dimensions in the following format: \"%1%\""),"XxY, XxY, ..." )); - } + m_value = into_u8(str); + break; } - m_value = out_values; - break; } default: break; @@ -494,18 +477,12 @@ void TextCtrl::BUILD() { text_value = vec->get_at(m_opt_idx); break; } - case coPoints: - text_value = get_thumbnails_string(m_opt.get_default_value()->values); - break; default: break; } long style = m_opt.multiline ? wxTE_MULTILINE : wxTE_PROCESS_ENTER; -#ifdef _WIN32 - style |= wxBORDER_SIMPLE; -#endif - auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, style); + auto temp = new text_ctrl(m_parent, text_value, "", "", wxDefaultPosition, size, style); if (parent_is_custom_ctrl && m_opt.height < 0) opt_height = (double)temp->GetSize().GetHeight()/m_em_unit; temp->SetFont(m_opt.is_code ? @@ -517,9 +494,6 @@ void TextCtrl::BUILD() { // Only disable background refresh for single line input fields, as they are completely painted over by the edit control. // This does not apply to the multi-line edit field, where the last line and a narrow frame around the text is not cleared. temp->SetBackgroundStyle(wxBG_STYLE_PAINT); -#ifdef __WXOSX__ - temp->OSXDisableAllSmartSubstitutions(); -#endif // __WXOSX__ temp->SetToolTip(get_tooltip_text(text_value)); @@ -576,7 +550,7 @@ bool TextCtrl::value_was_changed() return true; boost::any val = m_value; - wxString ret_str = static_cast(window)->GetValue(); + wxString ret_str = static_cast(window)->GetValue(); // update m_value! // ret_str might be changed inside get_value_by_opt_type get_value_by_opt_type(ret_str); @@ -607,11 +581,11 @@ bool TextCtrl::value_was_changed() void TextCtrl::propagate_value() { - wxString val = dynamic_cast(window)->GetValue(); + wxString val = dynamic_cast(window)->GetValue(); if (m_opt.nullable && val != na_value()) m_last_meaningful_value = val; - if (!is_defined_input_value(window, m_opt.type) ) + if (!is_defined_input_value(window, m_opt.type) ) // on_kill_focus() cause a call of OptionsGroup::reload_config(), // Thus, do it only when it's really needed (when undefined value was input) on_kill_focus(); @@ -625,14 +599,14 @@ void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) const bool m_is_na_val = boost::any_cast(value) == na_value(); if (!m_is_na_val) m_last_meaningful_value = value; - dynamic_cast(window)->SetValue(m_is_na_val ? na_value() : boost::any_cast(value)); + dynamic_cast(window)->SetValue(m_is_na_val ? na_value() : boost::any_cast(value)); } else - dynamic_cast(window)->SetValue(boost::any_cast(value)); + dynamic_cast(window)->SetValue(boost::any_cast(value)); m_disable_change_event = false; if (!change_event) { - wxString ret_str = static_cast(window)->GetValue(); + wxString ret_str = static_cast(window)->GetValue(); /* Update m_value to correct work of next value_was_changed(). * But after checking of entered value, don't fix the "incorrect" value and don't show a warning message, * just clear m_value in this case. @@ -643,19 +617,19 @@ void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) void TextCtrl::set_last_meaningful_value() { - dynamic_cast(window)->SetValue(boost::any_cast(m_last_meaningful_value)); + dynamic_cast(window)->SetValue(boost::any_cast(m_last_meaningful_value)); propagate_value(); } void TextCtrl::set_na_value() { - dynamic_cast(window)->SetValue(na_value()); + dynamic_cast(window)->SetValue(na_value()); propagate_value(); } boost::any& TextCtrl::get_value() { - wxString ret_str = static_cast(window)->GetValue(); + wxString ret_str = static_cast(window)->GetValue(); // update m_value get_value_by_opt_type(ret_str); @@ -673,8 +647,11 @@ void TextCtrl::msw_rescale() size.SetHeight(lround(opt_height*m_em_unit)); if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); - if (size != wxDefaultSize) - { + if (size != wxDefaultSize) { + if (::TextInput* text_input = dynamic_cast<::TextInput*>(window)) { + text_input->SetCtrlSize(size); + return; + } wxTextCtrl* field = dynamic_cast(window); if (parent_is_custom_ctrl) field->SetSize(size); @@ -684,8 +661,8 @@ void TextCtrl::msw_rescale() } -void TextCtrl::enable() { dynamic_cast(window)->Enable(); dynamic_cast(window)->SetEditable(true); } -void TextCtrl::disable() { dynamic_cast(window)->Disable(); dynamic_cast(window)->SetEditable(false); } +void TextCtrl::enable() { dynamic_cast(window)->Enable(); } +void TextCtrl::disable() { dynamic_cast(window)->Disable();} #ifdef __WXGTK__ void TextCtrl::change_field_value(wxEvent& event) @@ -696,10 +673,69 @@ void TextCtrl::change_field_value(wxEvent& event) }; #endif //__WXGTK__ +wxWindow* CheckBox::GetNewWin(wxWindow* parent, const wxString& label /*= wxEmptyString*/) +{ + if (wxGetApp().suppress_round_corners()) + return new ::CheckBox(parent, label); + + return new ::SwitchButton(parent, label); +} + +void CheckBox::SetValue(wxWindow* win, bool value) +{ + if (wxGetApp().suppress_round_corners()) { + if (::CheckBox* ch_b = dynamic_cast<::CheckBox*>(win)) + ch_b->SetValue(value); + } + else { + if (::SwitchButton* ch_b = dynamic_cast<::SwitchButton*>(win)) + ch_b->SetValue(value); + } +} + +bool CheckBox::GetValue(wxWindow* win) +{ + if (wxGetApp().suppress_round_corners()) + return dynamic_cast<::CheckBox*>(win)->GetValue(); + + return dynamic_cast<::SwitchButton*>(win)->GetValue(); +} + +void CheckBox::Rescale(wxWindow* win) +{ + if (wxGetApp().suppress_round_corners()) + dynamic_cast<::CheckBox*>(win)->Rescale(); + else + dynamic_cast<::SwitchButton*>(win)->Rescale(); +} + +void CheckBox::SysColorChanged(wxWindow* win) +{ + if (!wxGetApp().suppress_round_corners()) + dynamic_cast<::SwitchButton*>(win)->SysColorChange(); +} + +void CheckBox::SetValue(bool value) +{ + if (wxGetApp().suppress_round_corners()) + dynamic_cast<::CheckBox*>(window)->SetValue(value); + else + dynamic_cast<::SwitchButton*>(window)->SetValue(value); +} + +bool CheckBox::GetValue() +{ + if (wxGetApp().suppress_round_corners()) + return dynamic_cast<::CheckBox*>(window)->GetValue(); + + return dynamic_cast<::SwitchButton*>(window)->GetValue(); +} void CheckBox::BUILD() { auto size = wxSize(wxDefaultSize); - if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); - if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); + if (m_opt.height >= 0) + size.SetHeight(m_opt.height*m_em_unit); + if (m_opt.width >= 0) + size.SetWidth(m_opt.width*m_em_unit); bool check_value = m_opt.type == coBool ? m_opt.default_value->getBool() : m_opt.type == coBools ? @@ -709,21 +745,29 @@ void CheckBox::BUILD() { m_last_meaningful_value = static_cast(check_value); // Set Label as a string of at least one space simbol to correct system scaling of a CheckBox - auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(" "), wxDefaultPosition, size); - temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); - temp->SetValue(check_value); - if (m_opt.readonly) temp->Disable(); + window = GetNewWin(m_parent); + wxGetApp().UpdateDarkUI(window); + window->SetFont(wxGetApp().normal_font()); + if (!wxOSX) + window->SetBackgroundStyle(wxBG_STYLE_PAINT); + if (m_opt.readonly) + window->Disable(); - temp->Bind(wxEVT_CHECKBOX, ([this](wxCommandEvent e) { + SetValue(check_value); + + window->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent e) { m_is_na_val = false; on_change_field(); - }), temp->GetId()); + }); - temp->SetToolTip(get_tooltip_text(check_value ? "true" : "false")); + window->SetToolTip(get_tooltip_text(check_value ? "true" : "false")); +} - // recast as a wxWindow to fit the calling convention - window = dynamic_cast(temp); +void CheckBox::set_value(const bool value, bool change_event/* = false*/) +{ + m_disable_change_event = !change_event; + SetValue(value); + m_disable_change_event = false; } void CheckBox::set_value(const boost::any& value, bool change_event) @@ -733,10 +777,10 @@ void CheckBox::set_value(const boost::any& value, bool change_event) m_is_na_val = boost::any_cast(value) == ConfigOptionBoolsNullable::nil_value(); if (!m_is_na_val) m_last_meaningful_value = value; - dynamic_cast(window)->SetValue(m_is_na_val ? false : boost::any_cast(value) != 0); + SetValue(m_is_na_val ? false : boost::any_cast(value) != 0); } else - dynamic_cast(window)->SetValue(boost::any_cast(value)); + SetValue(boost::any_cast(value)); m_disable_change_event = false; } @@ -744,7 +788,7 @@ void CheckBox::set_last_meaningful_value() { if (m_opt.nullable) { m_is_na_val = false; - dynamic_cast(window)->SetValue(boost::any_cast(m_last_meaningful_value) != 0); + SetValue(boost::any_cast(m_last_meaningful_value) != 0); on_change_field(); } } @@ -753,15 +797,13 @@ void CheckBox::set_na_value() { if (m_opt.nullable) { m_is_na_val = true; - dynamic_cast(window)->SetValue(false); on_change_field(); } } boost::any& CheckBox::get_value() { -// boost::any m_value; - bool value = dynamic_cast(window)->GetValue(); + bool value = GetValue(); if (m_opt.type == coBool) m_value = static_cast(value); else @@ -775,6 +817,22 @@ void CheckBox::msw_rescale() window->SetInitialSize(window->GetBestSize()); } +void CheckBox::sys_color_changed() +{ + Field::sys_color_changed(); + if (auto switch_btn = dynamic_cast<::SwitchButton*>(window)) + switch_btn->SysColorChange(); +} + +void CheckBox::enable() +{ + window->Enable(); +} + +void CheckBox::disable() +{ + window->Disable(); +} void SpinCtrl::BUILD() { auto size = wxSize(def_width() * m_em_unit, wxDefaultCoord); @@ -806,23 +864,11 @@ void SpinCtrl::BUILD() { if (default_value != UNDEF_VALUE) text_value = wxString::Format(_T("%i"), default_value); - const int min_val = m_opt.min == -FLT_MAX -#ifdef __WXOSX__ - // We will forcibly set the input value for SpinControl, since the value - // inserted from the keyboard is not updated under OSX. - // So, we can't set min control value bigger then 0. - // Otherwise, it couldn't be possible to input from keyboard value - // less then min_val. - || m_opt.min > 0 -#endif - ? (int)0 : (int)m_opt.min; + const int min_val = m_opt.min == -FLT_MAX ? (int)0 : (int)m_opt.min; const int max_val = m_opt.max < FLT_MAX ? (int)m_opt.max : INT_MAX; - auto temp = new wxSpinCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, + auto temp = new ::SpinInput(m_parent, text_value, "", wxDefaultPosition, size, wxTE_PROCESS_ENTER | wxSP_ARROW_KEYS -#ifdef _WIN32 - | wxBORDER_SIMPLE -#endif , min_val, max_val, default_value); #ifdef __WXGTK3__ @@ -834,17 +880,11 @@ void SpinCtrl::BUILD() { if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); wxGetApp().UpdateDarkUI(temp); - if (m_opt.height < 0 && parent_is_custom_ctrl) + if (m_opt.height < 0 && parent_is_custom_ctrl) { opt_height = (double)temp->GetSize().GetHeight() / m_em_unit; + } -// XXX: On OS X the wxSpinCtrl widget is made up of two subwidgets, unfortunatelly -// the kill focus event is not propagated to the encompassing widget, -// so we need to bind it on the inner text widget instead. (Ugh.) -#ifdef __WXOSX__ - temp->GetText()->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) -#else temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) -#endif { e.Skip(); if (bEnterPressed) { @@ -863,29 +903,17 @@ void SpinCtrl::BUILD() { propagate_value(); bEnterPressed = true; }), temp->GetId()); + temp->SetToolTip(get_tooltip_text(text_value)); - temp->Bind(wxEVT_TEXT, ([this, temp](wxCommandEvent e) - { -// # On OSX / Cocoa, wxSpinCtrl::GetValue() doesn't return the new value -// # when it was changed from the text control, so the on_change callback -// # gets the old one, and on_kill_focus resets the control to the old value. -// # As a workaround, we get the new value from $event->GetString and store -// # here temporarily so that we can return it from get_value() + temp->Bind(wxEVT_TEXT, [this, temp](wxCommandEvent e) { long value; - const bool parsed = e.GetString().ToLong(&value); - if (!parsed || value < INT_MIN || value > INT_MAX) + if (!e.GetString().ToLong(&value)) + return; + if (value < INT_MIN || value > INT_MAX) tmp_value = UNDEF_VALUE; else { tmp_value = std::min(std::max((int)value, temp->GetMin()), temp->GetMax()); -#ifdef __WXOSX__ - // Forcibly set the input value for SpinControl, since the value - // inserted from the keyboard or clipboard is not updated under OSX - temp->SetValue(tmp_value); - // But in SetValue() is executed m_text_ctrl->SelectAll(), so - // discard this selection and set insertion point to the end of string - temp->GetText()->SetInsertionPointEnd(); -#else // update value for the control only if it was changed in respect to the Min/max values if (tmp_value != (int)value) { temp->SetValue(tmp_value); @@ -894,11 +922,8 @@ void SpinCtrl::BUILD() { int pos = std::to_string(tmp_value).length(); temp->SetSelection(pos, pos); } -#endif } - }), temp->GetId()); - - temp->SetToolTip(get_tooltip_text(text_value)); + }, temp->GetId()); // recast as a wxWindow to fit the calling convention window = dynamic_cast(temp); @@ -912,35 +937,35 @@ void SpinCtrl::set_value(const boost::any& value, bool change_event/* = false*/) if (m_opt.nullable) { const bool m_is_na_val = tmp_value == ConfigOptionIntsNullable::nil_value(); if (m_is_na_val) - dynamic_cast(window)->SetValue(na_value(true)); + dynamic_cast<::SpinInput*>(window)->SetValue(na_value(true)); else { m_last_meaningful_value = value; - dynamic_cast(window)->SetValue(tmp_value); + dynamic_cast<::SpinInput*>(window)->SetValue(tmp_value); } } else - dynamic_cast(window)->SetValue(tmp_value); + dynamic_cast<::SpinInput*>(window)->SetValue(tmp_value); m_disable_change_event = false; } void SpinCtrl::set_last_meaningful_value() { const int val = boost::any_cast(m_last_meaningful_value); - dynamic_cast(window)->SetValue(val); + dynamic_cast<::SpinInput*>(window)->SetValue(val); tmp_value = val; propagate_value(); } void SpinCtrl::set_na_value() { - dynamic_cast(window)->SetValue(na_value(true)); + dynamic_cast<::SpinInput*>(window)->SetValue(na_value(true)); m_value = ConfigOptionIntsNullable::nil_value(); propagate_value(); } boost::any& SpinCtrl::get_value() { - wxSpinCtrl* spin = static_cast(window); + ::SpinInput* spin = static_cast<::SpinInput*>(window); if (spin->GetTextValue() == na_value(true)) return m_value; @@ -960,14 +985,6 @@ void SpinCtrl::propagate_value() if (tmp_value == UNDEF_VALUE) { on_kill_focus(); } else { -#ifdef __WXOSX__ - // check input value for minimum - if (m_opt.min > 0 && tmp_value < m_opt.min) { - wxSpinCtrl* spin = static_cast(window); - spin->SetValue(m_opt.min); - spin->GetText()->SetInsertionPointEnd(); - } -#endif on_change_field(); } } @@ -976,13 +993,16 @@ void SpinCtrl::msw_rescale() { Field::msw_rescale(); - wxSpinCtrl* field = dynamic_cast(window); + auto field = dynamic_cast<::SpinInput*>(window); if (parent_is_custom_ctrl) field->SetSize(wxSize(def_width() * m_em_unit, lround(opt_height * m_em_unit))); else field->SetMinSize(wxSize(def_width() * m_em_unit, int(1.9f*field->GetFont().GetPixelSize().y))); } +#if 1 +using choice_ctrl = ::ComboBox; +#else #ifdef __WXOSX__ static_assert(wxMAJOR_VERSION >= 3, "Use of wxBitmapComboBox on Settings Tabs requires wxWidgets 3.0 and newer"); using choice_ctrl = wxBitmapComboBox; @@ -993,6 +1013,7 @@ using choice_ctrl = BitmapComboBox; using choice_ctrl = wxComboBox; #endif #endif // __WXOSX__ +#endif void Choice::BUILD() { wxSize size(def_width_wider() * m_em_unit, wxDefaultCoord); @@ -1003,10 +1024,10 @@ void Choice::BUILD() { if (m_opt.gui_type != ConfigOptionDef::GUIType::undefined && m_opt.gui_type != ConfigOptionDef::GUIType::select_close) { m_is_editable = true; - temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxTE_PROCESS_ENTER); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxTE_PROCESS_ENTER | DD_NO_CHECK_ICON); } else { -#ifdef __WXOSX__ +#if 0 //#ifdef __WXOSX__ /* wxBitmapComboBox with wxCB_READONLY style return NULL for GetTextCtrl(), * so ToolTip doesn't shown. * Next workaround helps to solve this problem @@ -1015,7 +1036,7 @@ void Choice::BUILD() { temp->SetTextCtrlStyle(wxTE_READONLY); temp->Create(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr); #else - temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY | DD_NO_CHECK_ICON); #endif //__WXOSX__ } @@ -1281,8 +1302,8 @@ void Choice::set_values(const std::vector& values) auto value = ww->GetValue(); ww->Clear(); ww->Append(""); - for (const auto &el : values) - ww->Append(wxString(el)); + for (const std::string& el : values) + ww->Append(from_u8(el)); ww->SetValue(value); m_disable_change_event = false; @@ -1517,21 +1538,19 @@ void PointCtrl::BUILD() wxString Y = val - int(val) == 0 ? wxString::Format(_T("%i"), int(val)) : wxNumberFormatter::ToString(val, 2, wxNumberFormatter::Style_None); long style = wxTE_PROCESS_ENTER; -#ifdef _WIN32 - style |= wxBORDER_SIMPLE; -#endif - x_textctrl = new wxTextCtrl(m_parent, wxID_ANY, X, wxDefaultPosition, field_size, style); - y_textctrl = new wxTextCtrl(m_parent, wxID_ANY, Y, wxDefaultPosition, field_size, style); + x_textctrl = new text_ctrl(m_parent, X, "", "", wxDefaultPosition, field_size, style); + y_textctrl = new text_ctrl(m_parent, Y, "", "", wxDefaultPosition, field_size, style); if (parent_is_custom_ctrl && m_opt.height < 0) opt_height = (double)x_textctrl->GetSize().GetHeight() / m_em_unit; x_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - x_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); + if (!wxOSX) x_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); y_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - y_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); + if (!wxOSX) y_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); - auto static_text_x = new wxStaticText(m_parent, wxID_ANY, "x : "); - auto static_text_y = new wxStaticText(m_parent, wxID_ANY, " y : "); + wxSize label_sz = wxSize(int(field_size.x / 2), field_size.y); + auto static_text_x = new wxStaticText(m_parent, wxID_ANY, "x : ", wxDefaultPosition, label_sz, wxALIGN_RIGHT); + auto static_text_y = new wxStaticText(m_parent, wxID_ANY, "y : ", wxDefaultPosition, label_sz, wxALIGN_RIGHT); static_text_x->SetFont(Slic3r::GUI::wxGetApp().normal_font()); static_text_x->SetBackgroundStyle(wxBG_STYLE_PAINT); static_text_y->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -1542,9 +1561,9 @@ void PointCtrl::BUILD() wxGetApp().UpdateDarkUI(static_text_x, false, true); wxGetApp().UpdateDarkUI(static_text_y, false, true); - temp->Add(static_text_x, 0, wxALIGN_CENTER_VERTICAL, 0); + temp->Add(static_text_x); temp->Add(x_textctrl); - temp->Add(static_text_y, 0, wxALIGN_CENTER_VERTICAL, 0); + temp->Add(static_text_y); temp->Add(y_textctrl); x_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_value(x_textctrl); }), x_textctrl->GetId()); @@ -1586,7 +1605,7 @@ void PointCtrl::sys_color_changed() #endif } -bool PointCtrl::value_was_changed(wxTextCtrl* win) +bool PointCtrl::value_was_changed(text_ctrl* win) { if (m_value.empty()) return true; @@ -1598,7 +1617,7 @@ bool PointCtrl::value_was_changed(wxTextCtrl* win) return boost::any_cast(m_value) != boost::any_cast(val); } -void PointCtrl::propagate_value(wxTextCtrl* win) +void PointCtrl::propagate_value(text_ctrl* win) { if (win->GetValue().empty()) on_kill_focus(); @@ -1717,7 +1736,7 @@ void SliderCtrl::BUILD() m_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font()); m_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT); - temp->Add(m_slider, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, 0); + temp->Add(m_slider, 1, wxEXPAND, 0); temp->Add(m_textctrl, 0, wxALIGN_CENTER_VERTICAL, 0); m_slider->Bind(wxEVT_SLIDER, ([this](wxCommandEvent e) { @@ -1760,5 +1779,4 @@ boost::any& SliderCtrl::get_value() } -} // GUI -} // Slic3r +} // Slic3r :: GUI diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 73af0ef..cb7d95f 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -21,6 +21,10 @@ #include "GUI.hpp" #include "wxExtensions.hpp" +#include "Widgets/CheckBox.hpp" +#include "Widgets/SwitchButton.hpp" +#include "Widgets/SpinInput.hpp" +#include "Widgets/TextInput.hpp" #ifdef __WXMSW__ #define wxMSW true @@ -37,7 +41,6 @@ using t_change = std::function; wxString double_to_string(double const value, const int max_precision = 4); -wxString get_thumbnails_string(const std::vector& values); class UndoValueUIManager { @@ -95,6 +98,29 @@ class UndoValueUIManager UndoValueUI m_undo_ui; + struct EditValueUI { + // Bitmap and Tooltip text for m_Edit_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one. + const ScalableBitmap* bitmap{ nullptr }; + wxString tooltip { wxEmptyString }; + + bool set_bitmap(const ScalableBitmap* bmp) { + if (bitmap != bmp) { + bitmap = bmp; + return true; + } + return false; + } + + bool set_tooltip(const wxString& tip) { + if (tooltip != tip) { + tooltip = tip; + return true; + } + return false; + } + }; + + EditValueUI m_edit_ui; public: UndoValueUIManager() {} ~UndoValueUIManager() {} @@ -105,6 +131,8 @@ public: bool set_undo_tooltip(const wxString* tip) { return m_undo_ui.set_undo_tooltip(tip); } bool set_undo_to_sys_tooltip(const wxString* tip) { return m_undo_ui.set_undo_to_sys_tooltip(tip); } + bool set_edit_bitmap(const ScalableBitmap* bmp) { return m_edit_ui.set_bitmap(bmp); } + bool set_edit_tooltip(const wxString& tip) { return m_edit_ui.set_tooltip(tip); } // ui items used for revert line value bool has_undo_ui() const { return m_undo_ui.undo_bitmap != nullptr; } const wxBitmapBundle& undo_bitmap() const { return m_undo_ui.undo_bitmap->bmp(); } @@ -112,8 +140,15 @@ public: const wxBitmapBundle& undo_to_sys_bitmap() const { return m_undo_ui.undo_to_sys_bitmap->bmp(); } const wxString* undo_to_sys_tooltip() const { return m_undo_ui.undo_to_sys_tooltip; } const wxColour* label_color() const { return m_undo_ui.label_color; } + // Extentions + + // Search blinker const bool blink() const { return m_undo_ui.blink; } bool* get_blink_ptr() { return &m_undo_ui.blink; } + // Edit field button + bool has_edit_ui() const { return !m_edit_ui.tooltip.IsEmpty(); } + const wxBitmapBundle* edit_bitmap() const { return &m_edit_ui.bitmap->bmp(); } + const wxString* edit_tooltip() const { return &m_edit_ui.tooltip; } }; @@ -147,6 +182,8 @@ public: void on_back_to_initial_value(); /// Call the attached m_back_to_sys_value method. void on_back_to_sys_value(); + /// Call the attached m_fn_edit_value method. + void on_edit_value(); public: /// parent wx item, opportunity to refactor (probably not necessary - data duplication) @@ -162,6 +199,8 @@ public: t_back_to_init m_back_to_initial_value{ nullptr }; t_back_to_init m_back_to_sys_value{ nullptr }; + /// Callback function to edit field value + t_back_to_init m_fn_edit_value{ nullptr }; // This is used to avoid recursive invocation of the field change/update by wxWidgets. bool m_disable_change_event {false}; bool m_is_modified_value {false}; @@ -250,6 +289,7 @@ inline bool is_window_field(const t_field& obj) { return !is_bad_field(obj) && o /// Covenience function to determine whether this field is a valid sizer field. inline bool is_sizer_field(const t_field& obj) { return !is_bad_field(obj) && obj->getSizer() != nullptr; } +using text_ctrl = ::TextInput; //wxTextCtrl class TextCtrl : public Field { using Field::Field; #ifdef __WXGTK__ @@ -270,7 +310,7 @@ public: void set_value(const std::string& value, bool change_event = false) { m_disable_change_event = !change_event; - dynamic_cast(window)->SetValue(wxString(value)); + dynamic_cast(window)->SetValue(wxString(value)); m_disable_change_event = false; } void set_value(const boost::any& value, bool change_event = false) override; @@ -294,24 +334,29 @@ public: CheckBox(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : Field(parent, opt, id) {} ~CheckBox() {} + static wxWindow* GetNewWin(wxWindow* parent, const wxString& label = wxEmptyString); + static void SetValue(wxWindow* win, bool value); + static bool GetValue(wxWindow* win); + static void Rescale(wxWindow* win); + static void SysColorChanged(wxWindow* win); wxWindow* window{ nullptr }; void BUILD() override; - void set_value(const bool value, bool change_event = false) { - m_disable_change_event = !change_event; - dynamic_cast(window)->SetValue(value); - m_disable_change_event = false; - } + void set_value(const bool value, bool change_event = false); void set_value(const boost::any& value, bool change_event = false) override; void set_last_meaningful_value() override; void set_na_value() override; boost::any& get_value() override; void msw_rescale() override; + void sys_color_changed() override; - void enable() override { dynamic_cast(window)->Enable(); } - void disable() override { dynamic_cast(window)->Disable(); } + void enable() override; + void disable() override; wxWindow* getWindow() override { return window; } +private: + void SetValue(bool value); + bool GetValue(); }; class SpinCtrl : public Field { @@ -333,7 +378,14 @@ public: /* void set_value(const std::string& value, bool change_event = false) { m_disable_change_event = !change_event; - dynamic_cast(window)->SetValue(value); + dynamic_cast<::SpinInput*>(window)->SetValue(value); + m_disable_change_event = false; + } + void set_value(const boost::any& value, bool change_event = false) override { + m_disable_change_event = !change_event; + tmp_value = boost::any_cast(value); + m_value = value; + dynamic_cast<::SpinInput*>(window)->SetValue(tmp_value); m_disable_change_event = false; } */ @@ -343,10 +395,16 @@ public: boost::any& get_value() override; +/* + boost::any& get_value() override { + int value = static_cast<::SpinInput*>(window)->GetValue(); + return m_value = value; + } +*/ void msw_rescale() override; - void enable() override { dynamic_cast(window)->Enable(); } - void disable() override { dynamic_cast(window)->Disable(); } + void enable() override { dynamic_cast<::SpinInput*>(window)->Enable(); } + void disable() override { dynamic_cast<::SpinInput*>(window)->Disable(); } wxWindow* getWindow() override { return window; } }; @@ -422,13 +480,13 @@ public: ~PointCtrl(); wxSizer* sizer{ nullptr }; - wxTextCtrl* x_textctrl{ nullptr }; - wxTextCtrl* y_textctrl{ nullptr }; + text_ctrl* x_textctrl{ nullptr }; + text_ctrl* y_textctrl{ nullptr }; void BUILD() override; - bool value_was_changed(wxTextCtrl* win); + bool value_was_changed(text_ctrl* win); // Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER - void propagate_value(wxTextCtrl* win); + void propagate_value(text_ctrl* win); void set_value(const Vec2d& value, bool change_event = false); void set_value(const boost::any& value, bool change_event = false) override; boost::any& get_value() override; diff --git a/src/slic3r/GUI/FirmwareDialog.cpp b/src/slic3r/GUI/FirmwareDialog.cpp index 129cd10..2674fe1 100644 --- a/src/slic3r/GUI/FirmwareDialog.cpp +++ b/src/slic3r/GUI/FirmwareDialog.cpp @@ -813,11 +813,13 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : p->hex_picker = new wxFilePickerCtrl(panel, wxID_ANY, wxEmptyString, /*wxFileSelectorPromptStr*/_L("Select a file"), "Hex files (*.hex)|*.hex|All files|*.*"); p->hex_picker->GetPickerCtrl()->SetLabelText(_(L("Browse"))); + GUI::wxGetApp().SetWindowVariantForButton(static_cast(p->hex_picker->GetPickerCtrl())); auto *label_port_picker = new wxStaticText(panel, wxID_ANY, _(L("Serial port:"))); p->port_picker = new wxComboBox(panel, wxID_ANY); p->txt_port_autodetect = new wxStaticText(panel, wxID_ANY, _(L("Autodetected"))); p->btn_rescan = new wxButton(panel, wxID_ANY, _(L("Rescan"))); + GUI::wxGetApp().SetWindowVariantForButton(p->btn_rescan); auto *port_sizer = new wxBoxSizer(wxHORIZONTAL); port_sizer->Add(p->port_picker, 1, wxEXPAND | wxRIGHT, SPACING); port_sizer->Add(p->btn_rescan, 0); @@ -841,7 +843,7 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : grid->Add(port_sizer, 0, wxEXPAND); grid->Add(label_progress, 0, wxALIGN_CENTER_VERTICAL); - grid->Add(p->progressbar, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); + grid->Add(p->progressbar, 1, wxEXPAND); grid->Add(label_status, 0, wxALIGN_CENTER_VERTICAL); grid->Add(p->txt_status, 0, wxEXPAND); @@ -860,7 +862,9 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) : vsizer->Add(p->spoiler, 1, wxEXPAND | wxBOTTOM, SPACING); p->btn_close = new wxButton(panel, wxID_CLOSE, _(L("Close"))); // Note: The label needs to be present, otherwise we get accelerator bugs on Mac + GUI::wxGetApp().SetWindowVariantForButton(p->btn_close); p->btn_flash = new wxButton(panel, wxID_ANY, p->btn_flash_label_ready); + GUI::wxGetApp().SetWindowVariantForButton(p->btn_flash); p->btn_flash->Disable(); auto *bsizer = new wxBoxSizer(wxHORIZONTAL); bsizer->Add(p->btn_close); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 297ecf5..f1ac89a 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -301,7 +301,7 @@ void GCodeViewer::SequentialView::Marker::init() void GCodeViewer::SequentialView::Marker::set_world_position(const Vec3f& position) { m_world_position = position; - m_world_transform = (Geometry::translation_transform((position + m_z_offset * Vec3f::UnitZ()).cast()) * + m_world_transform = (Geometry::translation_transform((position + m_model_z_offset * Vec3f::UnitZ()).cast()) * Geometry::translation_transform(m_model.get_bounding_box().size().z() * Vec3d::UnitZ()) * Geometry::rotation_transform({ M_PI, 0.0, 0.0 })).cast(); } @@ -395,39 +395,15 @@ void GCodeViewer::SequentialView::Marker::render(EViewType &view_type) ImGui::PopStyleVar(); } -void GCodeViewer::SequentialView::GCodeWindow::load_gcode(const std::string& filename, const std::vector& lines_ends) -{ - assert(! m_file.is_open()); - if (m_file.is_open()) - return; - - m_filename = filename; - m_lines_ends = lines_ends; - - m_selected_line_id = 0; - m_last_lines_size = 0; - - try +void GCodeViewer::SequentialView::GCodeWindow::load_gcode(const GCodeProcessorResult& gcode_result) { - m_file.open(boost::filesystem::path(m_filename)); - } - catch (...) - { - BOOST_LOG_TRIVIAL(error) << "Unable to map file " << m_filename << ". Cannot show G-code window."; - reset(); - } + m_filename = gcode_result.filename; + m_is_binary_file = gcode_result.is_binary_file; + m_lines_ends = gcode_result.lines_ends; } -void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, uint64_t curr_line_id) const +void GCodeViewer::SequentialView::GCodeWindow::add_gcode_line_to_lines_cache(const std::string& src) { - auto update_lines = [this](uint64_t start_id, uint64_t end_id) { - std::vector ret; - ret.reserve(end_id - start_id + 1); - for (uint64_t id = start_id; id <= end_id; ++id) { - // read line from file - const size_t start = id == 1 ? 0 : m_lines_ends[id - 2]; - const size_t len = m_lines_ends[id - 1] - start; - std::string gline(m_file.data() + start, len); std::string command; std::string parameters; @@ -435,7 +411,7 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u // extract comment std::vector tokens; - boost::split(tokens, gline, boost::is_any_of(";"), boost::token_compress_on); + boost::split(tokens, src, boost::is_any_of(";"), boost::token_compress_on); command = tokens.front(); if (tokens.size() > 1) comment = ";" + tokens.back(); @@ -450,9 +426,124 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u } } } - ret.push_back({ command, parameters, comment }); + m_lines_cache.push_back({ command, parameters, comment }); +} + +void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, size_t curr_line_id) +{ + auto update_lines_ascii = [this]() { + m_lines_cache.clear(); + m_lines_cache.reserve(m_cache_range.size()); + const std::vector& lines_ends = m_lines_ends.front(); + FILE* file = boost::nowide::fopen(m_filename.c_str(), "rb"); + if (file != nullptr) { + for (size_t id = *m_cache_range.min; id <= *m_cache_range.max; ++id) { + assert(id > 0); + // read line from file + const size_t begin = id == 1 ? 0 : lines_ends[id - 2]; + const size_t len = lines_ends[id - 1] - begin; + std::string gline(len, '\0'); + fseek(file, begin, SEEK_SET); + const size_t rsize = fread((void*)gline.data(), 1, len, file); + if (ferror(file) || rsize != len) { + m_lines_cache.clear(); + break; + } + + add_gcode_line_to_lines_cache(gline); + } + fclose(file); + } + }; + + auto update_lines_binary = [this]() { + m_lines_cache.clear(); + m_lines_cache.reserve(m_cache_range.size()); + + size_t cumulative_lines_count = 0; + std::vector cumulative_lines_counts; + cumulative_lines_counts.reserve(m_lines_ends.size()); + for (size_t i = 0; i < m_lines_ends.size(); ++i) { + cumulative_lines_count += m_lines_ends[i].size(); + cumulative_lines_counts.emplace_back(cumulative_lines_count); + } + + size_t first_block_id = 0; + for (size_t i = 0; i < cumulative_lines_counts.size(); ++i) { + if (*m_cache_range.min <= cumulative_lines_counts[i]) { + first_block_id = i; + break; + } + } + size_t last_block_id = 0; + for (size_t i = 0; i < cumulative_lines_counts.size(); ++i) { + if (*m_cache_range.max <= cumulative_lines_counts[i]) { + last_block_id = i; + break; + } + } + assert(last_block_id >= first_block_id); + + FilePtr file(boost::nowide::fopen(m_filename.c_str(), "rb")); + if (file.f != nullptr) { + fseek(file.f, 0, SEEK_END); + const long file_size = ftell(file.f); + rewind(file.f); + + // read file header + using namespace bgcode::core; + using namespace bgcode::binarize; + FileHeader file_header; + EResult res = read_header(*file.f, file_header, nullptr); + if (res == EResult::Success) { + // search first GCode block + BlockHeader block_header; + res = read_next_block_header(*file.f, file_header, block_header, EBlockType::GCode, nullptr, 0); + if (res == EResult::Success) { + for (size_t i = 0; i < first_block_id; ++i) { + skip_block(*file.f, file_header, block_header); + res = read_next_block_header(*file.f, file_header, block_header, nullptr, 0); + if (res != EResult::Success || block_header.type != (uint16_t)EBlockType::GCode) { + m_lines_cache.clear(); + return; + } + } + + for (size_t i = first_block_id; i <= last_block_id; ++i) { + GCodeBlock block; + res = block.read_data(*file.f, file_header, block_header); + if (res != EResult::Success) { + m_lines_cache.clear(); + return; + } + + const size_t ref_id = (i == 0) ? 0 : i - 1; + const size_t first_line_id = (i == 0) ? *m_cache_range.min : + (*m_cache_range.min > cumulative_lines_counts[ref_id]) ? *m_cache_range.min - cumulative_lines_counts[ref_id] : 1; + const size_t last_line_id = (*m_cache_range.max <= cumulative_lines_counts[i]) ? + (i == 0) ? *m_cache_range.max : *m_cache_range.max - cumulative_lines_counts[ref_id] : m_lines_ends[i].size(); + assert(last_line_id >= first_line_id); + + for (size_t j = first_line_id; j <= last_line_id; ++j) { + const size_t begin = (j == 1) ? 0 : m_lines_ends[i][j - 2]; + const size_t end = m_lines_ends[i][j - 1]; + std::string gline; + gline.insert(gline.end(), block.raw_data.begin() + begin, block.raw_data.begin() + end); + add_gcode_line_to_lines_cache(gline); + } + + if (ftell(file.f) == file_size) + break; + + res = read_next_block_header(*file.f, file_header, block_header, nullptr, 0); + if (res != EResult::Success || block_header.type != (uint16_t)EBlockType::GCode) { + m_lines_cache.clear(); + return; + } + } + } + } } - return ret; }; //B18 static const ImVec4 LINE_NUMBER_COLOR = ImGuiWrapper::COL_BLUE_LIGHT; @@ -471,37 +562,45 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u // number of visible lines const float text_height = ImGui::CalcTextSize("0").y; const ImGuiStyle& style = ImGui::GetStyle(); - const uint64_t lines_count = static_cast((wnd_height - 2.0f * style.WindowPadding.y + style.ItemSpacing.y) / (text_height + style.ItemSpacing.y)); + const size_t visible_lines_count = static_cast((wnd_height - 2.0f * style.WindowPadding.y + style.ItemSpacing.y) / (text_height + style.ItemSpacing.y)); - if (lines_count == 0) + if (visible_lines_count == 0) return; + if (m_lines_ends.empty() || m_lines_ends.front().empty()) + return; + + auto resize_range = [&](Range& range, size_t lines_count) { + const size_t half_lines_count = lines_count / 2; + range.min = (curr_line_id > half_lines_count) ? curr_line_id - half_lines_count : 1; + range.max = *range.min + lines_count - 1; + size_t lines_ends_count = 0; + for (const auto& le : m_lines_ends) { + lines_ends_count += le.size(); + } + if (*range.max >= lines_ends_count) { + range.max = lines_ends_count - 1; + range.min = *range.max - lines_count + 1; + } + }; // visible range - const uint64_t half_lines_count = lines_count / 2; - uint64_t start_id = (curr_line_id >= half_lines_count) ? curr_line_id - half_lines_count : 0; - uint64_t end_id = start_id + lines_count - 1; - if (end_id >= static_cast(m_lines_ends.size())) { - end_id = static_cast(m_lines_ends.size()) - 1; - start_id = end_id - lines_count + 1; + Range visible_range; + resize_range(visible_range, visible_lines_count); + + // update cache if needed + if (m_cache_range.empty() || !m_cache_range.contains(visible_range)) { + resize_range(m_cache_range, 4 * visible_range.size()); + if (m_is_binary_file) + update_lines_binary(); + else + update_lines_ascii(); } - // updates list of lines to show, if needed - if (m_selected_line_id != curr_line_id || m_last_lines_size != end_id - start_id + 1) { - try - { - *const_cast*>(&m_lines) = update_lines(start_id, end_id); - } - catch (...) - { - BOOST_LOG_TRIVIAL(error) << "Error while loading from file " << m_filename << ". Cannot show G-code window."; + if (m_lines_cache.empty()) return; - } - *const_cast(&m_selected_line_id) = curr_line_id; - *const_cast(&m_last_lines_size) = m_lines.size(); - } // line number's column width - const float id_width = ImGui::CalcTextSize(std::to_string(end_id).c_str()).x; + const float id_width = ImGui::CalcTextSize(std::to_string(*visible_range.max).c_str()).x; ImGuiWrapper& imgui = *wxGetApp().imgui(); @@ -521,14 +620,10 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u current_length += out_text.length(); ImGui::SameLine(0.0f, spacing); - ImGui::PushStyleColor(ImGuiCol_Text, color); - imgui.text(out_text); - ImGui::PopStyleColor(); + imgui.text_colored(color, out_text); if (reduced) { ImGui::SameLine(0.0f, 0.0f); - ImGui::PushStyleColor(ImGuiCol_Text, ELLIPSIS_COLOR); - imgui.text("..."); - ImGui::PopStyleColor(); + imgui.text_colored(ELLIPSIS_COLOR, "..."); } return reduced; @@ -537,16 +632,17 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u imgui.set_next_window_pos(0.0f, top, ImGuiCond_Always, 0.0f, 0.0f); imgui.set_next_window_size(0.0f, wnd_height, ImGuiCond_Always); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); - ImGui::SetNextWindowBgAlpha(0.8f); + ImGui::SetNextWindowBgAlpha(0.6f); imgui.begin(std::string("G-code"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove); // center the text in the window by pushing down the first line - const float f_lines_count = static_cast(lines_count); + const float f_lines_count = static_cast(visible_lines_count); ImGui::SetCursorPosY(0.5f * (wnd_height - f_lines_count * text_height - (f_lines_count - 1.0f) * style.ItemSpacing.y)); // render text lines - for (uint64_t id = start_id; id <= end_id; ++id) { - const Line& line = m_lines[id - start_id]; + size_t max_line_length = 0; + for (size_t id = *visible_range.min; id <= *visible_range.max; ++id) { + const Line& line = m_lines_cache[id - *m_cache_range.min]; // rect around the current selected line if (id == curr_line_id) { @@ -574,16 +670,16 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, u if (!stop_adding && !line.comment.empty()) // render comment stop_adding = add_item_to_line(line.comment, COMMENT_COLOR, line.command.empty() ? -1.0f : 0.0f, line_length); + max_line_length = std::max(max_line_length, line_length); } imgui.end(); ImGui::PopStyleVar(); -} - -void GCodeViewer::SequentialView::GCodeWindow::stop_mapping_file() -{ - if (m_file.is_open()) - m_file.close(); + // request an extra frame if window's width changed + if (m_max_line_length != max_line_length) { + m_max_line_length = max_line_length; + imgui.set_requires_extra_frame(); + } } //B43 void GCodeViewer::SequentialView::render(float legend_height, EViewType &view_type) @@ -768,12 +864,13 @@ void GCodeViewer::load(const GCodeProcessorResult& gcode_result, const Print& pr //B43 m_gcode_result = &gcode_result; - m_sequential_view.gcode_window.load_gcode(gcode_result.filename, gcode_result.lines_ends); + m_sequential_view.gcode_window.load_gcode(gcode_result); if (wxGetApp().is_gcode_viewer()) m_custom_gcode_per_print_z = gcode_result.custom_gcode_per_print_z; m_max_print_height = gcode_result.max_print_height; + m_z_offset = gcode_result.z_offset; load_toolpaths(gcode_result); load_wipetower_shell(print); @@ -933,6 +1030,7 @@ void GCodeViewer::reset() m_paths_bounding_box.reset(); m_max_bounding_box.reset(); m_max_print_height = 0.0f; + m_z_offset = 0.0f; m_tool_colors = std::vector(); m_extruders_count = 0; m_extruder_ids = std::vector(); @@ -975,6 +1073,7 @@ void GCodeViewer::render() if (m_sequential_view.current.last != m_sequential_view.endpoints.last) { m_sequential_view.marker.set_world_position(m_sequential_view.current_position); m_sequential_view.marker.set_world_offset(m_sequential_view.current_offset); + m_sequential_view.marker.set_z_offset(m_z_offset); //B43 m_sequential_view.render(legend_height, m_view_type); } @@ -2211,20 +2310,21 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result) if (move.type == EMoveType::Seam) ++seams_count; - size_t move_id = i - seams_count; + const size_t move_id = i - seams_count; if (move.type == EMoveType::Extrude) { - if (!move.internal_only) { - // layers zs + // layers zs/ranges const double* const last_z = m_layers.empty() ? nullptr : &m_layers.get_zs().back(); const double z = static_cast(move.position.z()); - if (last_z == nullptr || z < *last_z - EPSILON || *last_z + EPSILON < z) { + if (move.extrusion_role != GCodeExtrusionRole::Custom && + (last_z == nullptr || z < *last_z - EPSILON || *last_z + EPSILON < z)) { + // start a new layer const size_t start_it = (m_layers.empty() && first_travel_s_id != 0) ? first_travel_s_id : last_travel_s_id; m_layers.append(z, { start_it, move_id }); } - else + else if (!m_layers.empty() && !move.internal_only) + // update last layer m_layers.get_ranges().back().last = move_id; - } // extruder ids m_extruder_ids.emplace_back(move.extruder_id); // roles @@ -2287,9 +2387,18 @@ void GCodeViewer::load_shells(const Print& print) return; // adds objects' volumes - int object_id = 0; for (const PrintObject* obj : print.objects()) { const ModelObject* model_obj = obj->model_object(); + int object_id = -1; + const ModelObjectPtrs model_objects = wxGetApp().plater()->model().objects; + for (int i = 0; i < static_cast(model_objects.size()); ++i) { + if (model_obj->id() == model_objects[i]->id()) { + object_id = i; + break; + } + } + if (object_id == -1) + continue; std::vector instance_ids(model_obj->instances.size()); for (int i = 0; i < (int)model_obj->instances.size(); ++i) { @@ -2309,7 +2418,6 @@ void GCodeViewer::load_shells(const Print& print) } } - ++object_id; } wxGetApp().plater()->get_current_canvas3D()->check_volumes_outside_state(m_shells.volumes); @@ -2411,6 +2519,7 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool case EViewType::Temperature: { color = m_extrusions.ranges.temperature.get_color_at(path.temperature); break; } case EViewType::LayerTimeLinear: case EViewType::LayerTimeLogarithmic: { + if (!m_layers_times.empty() && m_layers.size() == m_layers_times.front().size()) { const Path::Sub_Path& sub_path = path.sub_paths.front(); double z = static_cast(sub_path.first.position.z()); const std::vector& zs = m_layers.get_zs(); @@ -2425,6 +2534,7 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool } } } + } break; } case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; } @@ -2489,8 +2599,11 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool const size_t min_s_id = m_layers.get_range_at(min_id).first; const size_t max_s_id = m_layers.get_range_at(max_id).last; - return (min_s_id <= path.sub_paths.front().first.s_id && path.sub_paths.front().first.s_id <= max_s_id) || - (min_s_id <= path.sub_paths.back().last.s_id && path.sub_paths.back().last.s_id <= max_s_id); + const bool top_layer_shown = max_id == m_layers.size() - 1; + + return (min_s_id <= path.sub_paths.front().first.s_id && path.sub_paths.front().first.s_id <= max_s_id) || // the leading vertex is contained + (min_s_id <= path.sub_paths.back().last.s_id && path.sub_paths.back().last.s_id <= max_s_id) || // the trailing vertex is contained + (top_layer_shown && max_s_id < path.sub_paths.front().first.s_id); // the leading vertex is above the top layer and the top layer is shown }; #if ENABLE_GCODE_VIEWER_STATISTICS @@ -2539,11 +2652,9 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool for (size_t i = 0; i < buffer.paths.size(); ++i) { const Path& path = buffer.paths[i]; if (path.type == EMoveType::Travel) { - if (path.sub_paths.front().first.s_id > m_layers_z_range[0]) { if (!is_travel_in_layers_range(i, m_layers_z_range[0], m_layers_z_range[1])) continue; } - } else if (!is_in_layers_range(path, m_layers_z_range[0], m_layers_z_range[1])) continue; @@ -3329,7 +3440,7 @@ void GCodeViewer::render_legend(float& legend_height) imgui.set_next_window_pos(0.0f, 0.0f, ImGuiCond_Always); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); - ImGui::SetNextWindowBgAlpha(0.8f); + ImGui::SetNextWindowBgAlpha(0.6f); const float max_height = 0.75f * static_cast(cnv_size.get_height()); const float child_height = 0.3333f * max_height; ImGui::SetNextWindowSizeConstraints({ 0.0f, 0.0f }, { -1.0f, max_height }); @@ -3697,17 +3808,25 @@ void GCodeViewer::render_legend(float& legend_height) ImGui::PushStyleColor(ImGuiCol_FrameBg, { 0.1f, 0.1f, 0.1f, 0.8f }); ImGui::PushStyleColor(ImGuiCol_FrameBgHovered, { 0.2f, 0.2f, 0.2f, 0.8f }); - imgui.combo(std::string(), { _u8L("Feature type"), - _u8L("Height (mm)"), - _u8L("Width (mm)"), - _u8L("Speed (mm/s)"), - _u8L("Fan speed (%)"), - _u8L("Temperature (°C)"), - _u8L("Volumetric flow rate (mm³/s)"), - _u8L("Layer time (linear)"), - _u8L("Layer time (logarithmic)"), - _u8L("Tool"), - _u8L("Color Print") }, view_type, ImGuiComboFlags_HeightLargest, 0.0f, -1.0f); + std::vector view_options; + std::vector view_options_id; + if (!m_layers_times.empty() && m_layers.size() == m_layers_times.front().size()) { + view_options = { _u8L("Feature type"), _u8L("Height (mm)"), _u8L("Width (mm)"), _u8L("Speed (mm/s)"), _u8L("Fan speed (%)"), + _u8L("Temperature (°C)"), _u8L("Volumetric flow rate (mm³/s)"), _u8L("Layer time (linear)"), _u8L("Layer time (logarithmic)"), + _u8L("Tool"), _u8L("Color Print") }; + view_options_id = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + } + else { + view_options = { _u8L("Feature type"), _u8L("Height (mm)"), _u8L("Width (mm)"), _u8L("Speed (mm/s)"), _u8L("Fan speed (%)"), + _u8L("Temperature (°C)"), _u8L("Volumetric flow rate (mm³/s)"), _u8L("Tool"), _u8L("Color Print") }; + view_options_id = { 0, 1, 2, 3, 4, 5, 6, 9, 10 }; + if (view_type == 7 || view_type == 8) + view_type = 0; + } + auto view_type_it = std::find(view_options_id.begin(), view_options_id.end(), view_type); + int view_type_id = (view_type_it == view_options_id.end()) ? 0 : std::distance(view_options_id.begin(), view_type_it); + if (imgui.combo(std::string(), view_options, view_type_id, ImGuiComboFlags_HeightLargest, 0.0f, -1.0f)) + view_type = view_options_id[view_type_id]; ImGui::PopStyleColor(2); if (old_view_type != view_type) { diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index ea2a43c..80c345a 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -654,11 +654,14 @@ public: GLModel m_model; Vec3f m_world_position; Transform3f m_world_transform; - // for seams, the position of the marker is on the last endpoint of the toolpath containing it - // the offset is used to show the correct value of tool position in the "ToolPosition" window - // see implementation of render() method + // For seams, the position of the marker is on the last endpoint of the toolpath containing it. + // This offset is used to show the correct value of tool position in the "ToolPosition" window. + // See implementation of render() method Vec3f m_world_offset; - float m_z_offset{ 0.5f }; + // z offset of the print + float m_z_offset{ 0.0f }; + // z offset of the model + float m_model_z_offset{ 0.5f }; bool m_visible{ true }; //B43 GCodeProcessorResult::MoveVertex m_curr_move; @@ -670,6 +673,7 @@ public: void set_world_position(const Vec3f& position); void set_world_offset(const Vec3f& offset) { m_world_offset = offset; } + void set_z_offset(float z_offset) { m_z_offset = z_offset; } bool is_visible() const { return m_visible; } void set_visible(bool visible) { m_visible = visible; } @@ -686,32 +690,42 @@ public: std::string parameters; std::string comment; }; + struct Range + { + std::optional min; + std::optional max; + bool empty() const { + return !min.has_value() || !max.has_value(); + } + bool contains(const Range& other) const { + return !this->empty() && !other.empty() && *this->min <= *other.min && *this->max >= other.max; + } + size_t size() const { + return empty() ? 0 : *this->max - *this->min + 1; + } + }; bool m_visible{ true }; - uint64_t m_selected_line_id{ 0 }; - size_t m_last_lines_size{ 0 }; std::string m_filename; - boost::iostreams::mapped_file_source m_file; + bool m_is_binary_file{ false }; // map for accessing data in file by line number - std::vector m_lines_ends; - // current visible lines - std::vector m_lines; + std::vector> m_lines_ends; + std::vector m_lines_cache; + Range m_cache_range; + size_t m_max_line_length{ 0 }; public: - GCodeWindow() = default; - ~GCodeWindow() { stop_mapping_file(); } - void load_gcode(const std::string& filename, const std::vector& lines_ends); + void load_gcode(const GCodeProcessorResult& gcode_result); void reset() { - stop_mapping_file(); m_lines_ends.clear(); - m_lines.clear(); + m_lines_cache.clear(); m_filename.clear(); } void toggle_visibility() { m_visible = !m_visible; } + void render(float top, float bottom, size_t curr_line_id); - void render(float top, float bottom, uint64_t curr_line_id) const; - - void stop_mapping_file(); + private: + void add_gcode_line_to_lines_cache(const std::string& src); }; struct Endpoints @@ -767,6 +781,7 @@ private: const GCodeProcessorResult *m_gcode_result; float m_max_print_height{ 0.0f }; + float m_z_offset{ 0.0f }; std::vector m_tool_colors; Layers m_layers; std::array m_layers_z_range; @@ -827,10 +842,13 @@ public: const BoundingBoxf3& get_max_bounding_box() const { BoundingBoxf3& max_bounding_box = const_cast(m_max_bounding_box); if (!max_bounding_box.defined) { + if (m_shells_bounding_box.defined) max_bounding_box = m_shells_bounding_box; + if (m_paths_bounding_box.defined) { max_bounding_box.merge(m_paths_bounding_box); max_bounding_box.merge(m_paths_bounding_box.max + m_sequential_view.marker.get_bounding_box().size().z() * Vec3d::UnitZ()); } + } return m_max_bounding_box; } const std::vector& get_layers_zs() const { return m_layers.get_zs(); } diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6ff0279..929b681 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -70,6 +70,7 @@ #include "DoubleSlider.hpp" #include +#include static constexpr const float TRACKBALLSIZE = 0.8f; @@ -348,7 +349,7 @@ std::string GLCanvas3D::LayersEditing::get_tooltip(const GLCanvas3D& canvas) con } } if (h > 0.0f) - ret = std::to_string(h); + ret = format("%.3f", h); } } return ret; @@ -983,7 +984,7 @@ void GLCanvas3D::SequentialPrintClearance::render() glsafe(::glEnable(GL_BLEND)); glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); - if (!m_evaluating) + if (!m_evaluating && !m_dragging) m_fill.render(); #if ENABLE_GL_CORE_PROFILE @@ -1031,6 +1032,7 @@ wxDEFINE_EVENT(EVT_GLCANVAS_INSTANCE_MOVED, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_INSTANCE_ROTATED, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_RESET_SKEW, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_INSTANCE_SCALED, SimpleEvent); +wxDEFINE_EVENT(EVT_GLCANVAS_INSTANCE_MIRRORED, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_FORCE_UPDATE, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_WIPETOWER_MOVED, Vec3dEvent); wxDEFINE_EVENT(EVT_GLCANVAS_WIPETOWER_ROTATED, Vec3dEvent); @@ -1533,6 +1535,8 @@ bool GLCanvas3D::check_volumes_outside_state(GLVolumeCollection& volumes, ModelI contained_min_one |= !volume->is_outside; } } + else if (volume->is_modifier) + volume->is_outside = false; } for (unsigned int vol_idx = 0; vol_idx < volumes.volumes.size(); ++vol_idx) { @@ -1665,7 +1669,12 @@ void GLCanvas3D::set_config(const DynamicPrintConfig* config) double objdst = min_object_distance(*config); double min_obj_dst = slot == ArrangeSettingsDb_AppCfg::slotFFFSeqPrint ? objdst : 0.; m_arrange_settings_db.set_distance_from_obj_range(slot, min_obj_dst, 100.); + if (std::abs(m_arrange_settings_db.get_defaults(slot).d_obj - objdst) > EPSILON) { m_arrange_settings_db.get_defaults(slot).d_obj = objdst; + // Defaults have changed, so let's sync with the app config and fill + // in the missing values with the new defaults. + m_arrange_settings_db.sync(); + } } } @@ -2013,6 +2022,10 @@ void GLCanvas3D::render() #endif // ENABLE_SLA_VIEW_DEBUG_WINDOW } +#if ENABLE_BINARIZED_GCODE_DEBUG_WINDOW + if (wxGetApp().plater()->is_view3D_shown() && current_printer_technology() != ptSLA && fff_print()->config().gcode_binary) + show_binary_gcode_debug_window(); +#endif // ENABLE_BINARIZED_GCODE_DEBUG_WINDOW std::string tooltip; // Negative coordinate means out of the window, likely because the window was deactivated. @@ -2371,6 +2384,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re volume->extruder_id = extruder_id; volume->is_modifier = !mvs->model_volume->is_model_part(); + volume->shader_outside_printer_detection_enabled = mvs->model_volume->is_model_part(); volume->set_color(color_from_model_volume(*mvs->model_volume)); // force update of render_color alpha channel volume->set_render_color(volume->color.is_transparent()); @@ -2649,7 +2663,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re for (GLVolume* volume : m_volumes.volumes) if (volume->object_idx() < (int)m_model->objects.size() && m_model->objects[volume->object_idx()]->instances[volume->instance_idx()]->is_printable()) { - if (volume->is_modifier && m_model->objects[volume->object_idx()]->volumes[volume->volume_idx()]->is_modifier()) + if (volume->is_active && volume->is_modifier && m_model->objects[volume->object_idx()]->volumes[volume->volume_idx()]->is_modifier()) volume->is_active = printer_technology != ptSLA; } @@ -3622,20 +3636,17 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) //#if defined(__WXMSW__) || defined(__linux__) // // On Windows and Linux needs focus in order to catch key events - // Set focus in order to remove it from object list if (m_canvas != nullptr) { + // Set focus in order to remove it from sidebar but not from TextControl (in ManipulationPanel f.e.) + if (!m_canvas->HasFocus()) { + wxTopLevelWindow* tlw = find_toplevel_parent(m_canvas); // Only set focus, if the top level window of this canvas is active - // and ObjectList has a focus - auto p = dynamic_cast(evt.GetEventObject()); - while (p->GetParent()) - p = p->GetParent(); -#ifdef __WIN32__ - wxWindow* const obj_list = wxGetApp().obj_list()->GetMainWindow(); -#else - wxWindow* const obj_list = wxGetApp().obj_list(); -#endif - if (obj_list == p->FindFocus()) + if (tlw->IsActive()) { + auto* text_ctrl = dynamic_cast(tlw->FindFocus()); + if (text_ctrl == nullptr) m_canvas->SetFocus(); + } + } m_mouse.position = pos.cast(); m_tooltip_enabled = false; // 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while @@ -3738,6 +3749,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (!evt.CmdDown()) m_mouse.drag.start_position_3D = m_mouse.scene_position; m_sequential_print_clearance_first_displacement = true; + m_sequential_print_clearance.start_dragging(); } } } @@ -3862,6 +3874,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else if (m_mouse.drag.move_volume_idx != -1 && m_mouse.dragging) { do_move(L("Move Object")); wxGetApp().obj_manipul()->set_dirty(); + m_sequential_print_clearance.stop_dragging(); // Let the plater know that the dragging finished, so a delayed refresh // of the scene with the background processing data should be performed. post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); @@ -3937,7 +3950,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) type == GLGizmosManager::EType::Move || type == GLGizmosManager::EType::Rotate || type == GLGizmosManager::EType::Scale || - type == GLGizmosManager::EType::Emboss) ) { + type == GLGizmosManager::EType::Emboss|| + type == GLGizmosManager::EType::Svg) ) { for (int hover_volume_id : m_hover_volume_idxs) { const GLVolume &hover_gl_volume = *m_volumes.volumes[hover_volume_id]; int object_idx = hover_gl_volume.object_idx(); @@ -3946,12 +3960,19 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) int hover_volume_idx = hover_gl_volume.volume_idx(); if (hover_volume_idx < 0 || static_cast(hover_volume_idx) >= hover_object->volumes.size()) continue; const ModelVolume* hover_volume = hover_object->volumes[hover_volume_idx]; - if (!hover_volume->text_configuration.has_value()) continue; + if (hover_volume->text_configuration.has_value()) { m_selection.add_volumes(Selection::EMode::Volume, {(unsigned) hover_volume_id}); if (type != GLGizmosManager::EType::Emboss) m_gizmos.open_gizmo(GLGizmosManager::EType::Emboss); wxGetApp().obj_list()->update_selections(); return; + } else if (hover_volume->emboss_shape.has_value()) { + m_selection.add_volumes(Selection::EMode::Volume, {(unsigned) hover_volume_id}); + if (type != GLGizmosManager::EType::Svg) + m_gizmos.open_gizmo(GLGizmosManager::EType::Svg); + wxGetApp().obj_list()->update_selections(); + return; + } } } @@ -4325,7 +4346,7 @@ void GLCanvas3D::do_mirror(const std::string& snapshot_type) for (int id : obj_idx_for_update_info_items) wxGetApp().obj_list()->update_info_items(static_cast(id)); - post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS)); + post_event(SimpleEvent(EVT_GLCANVAS_INSTANCE_MIRRORED)); m_dirty = true; } @@ -4890,9 +4911,8 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const camera.apply_projection(volumes_box, near_z, far_z); - GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); - if (shader == nullptr) - return; + const ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects; + std::vector extruders_colors = get_extruders_colors(); if (thumbnail_params.transparent_background) //Y18 @@ -4901,15 +4921,34 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); glsafe(::glEnable(GL_DEPTH_TEST)); - shader->start_using(); - shader->set_uniform("emission_factor", 0.0f); + glsafe(::glCullFace(GL_BACK)); const Transform3d& projection_matrix = camera.get_projection_matrix(); + const int extruders_count = wxGetApp().extruders_edited_cnt(); for (GLVolume* vol : visible_volumes) { - //B3 - //vol->model.set_color((vol->printable && !vol->is_outside) ? vol->color : ColorRGBA::GRAY()); - vol->model.set_color({ 0.2f, 0.6f, 1.0f, 1.0f }); + const int obj_idx = vol->object_idx(); + const int vol_idx = vol->volume_idx(); + const bool render_as_painted = (obj_idx >= 0 && vol_idx >= 0) ? + !model_objects[obj_idx]->volumes[vol_idx]->mmu_segmentation_facets.empty() : false; + GLShaderProgram* shader = wxGetApp().get_shader(render_as_painted ? "mm_gouraud" : "gouraud_light"); + if (shader == nullptr) + continue; + + shader->start_using(); + const std::array clp_data = { 0.0f, 0.0f, 1.0f, FLT_MAX }; + const std::array z_range = { -FLT_MAX, FLT_MAX }; + const bool is_left_handed = vol->is_left_handed(); + if (render_as_painted) { + shader->set_uniform("volume_world_matrix", vol->world_matrix()); + shader->set_uniform("volume_mirrored", is_left_handed); + shader->set_uniform("clipping_plane", clp_data); + shader->set_uniform("z_range", z_range); + } + else { + shader->set_uniform("emission_factor", 0.0f); + vol->model.set_color((vol->printable && !vol->is_outside) ? vol->color : ColorRGBA::GRAY()); + } // the volume may have been deactivated by an active gizmo const bool is_active = vol->is_active; vol->is_active = true; @@ -4918,12 +4957,27 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const shader->set_uniform("projection_matrix", projection_matrix); const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); shader->set_uniform("view_normal_matrix", view_normal_matrix); + if (is_left_handed) + glsafe(::glFrontFace(GL_CW)); + + if (render_as_painted) { + const ModelVolume& model_volume = *model_objects[obj_idx]->volumes[vol_idx]; + const size_t extruder_idx = get_extruder_color_idx(model_volume, extruders_count); + TriangleSelectorMmGui ts(model_volume.mesh(), extruders_colors, extruders_colors[extruder_idx]); + ts.deserialize(model_volume.mmu_segmentation_facets.get_data(), true); + ts.request_update_render_data(); + + ts.render(nullptr, model_matrix); + } + else vol->render(); - vol->is_active = is_active; - } + if (is_left_handed) + glsafe(::glFrontFace(GL_CCW)); shader->stop_using(); + vol->is_active = is_active; + } glsafe(::glDisable(GL_DEPTH_TEST)); if (thumbnail_params.show_bed) @@ -5525,7 +5579,7 @@ void GLCanvas3D::_resize(unsigned int w, unsigned int h) auto *imgui = wxGetApp().imgui(); imgui->set_display_size(static_cast(w), static_cast(h)); - const float font_size = 1.7f * wxGetApp().em_unit(); + const float font_size = 1.5f * wxGetApp().em_unit(); #if ENABLE_RETINA_GL imgui->set_scaling(font_size, 1.0f, m_retina_helper->get_scale_factor()); #else @@ -6252,7 +6306,7 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() #if ENABLE_RETINA_GL new_scale /= m_retina_helper->get_scale_factor(); #endif - if (fabs(new_scale - scale) > 0.01) // scale is changed by 1% and more + if (fabs(new_scale - scale) > 0.015) // scale is changed by 1.5% and more wxGetApp().set_auto_toolbar_icon_scale(new_scale); } @@ -7807,6 +7861,95 @@ void GLCanvas3D::GizmoHighlighter::blink() invalidate(); } +#if ENABLE_BINARIZED_GCODE_DEBUG_WINDOW +void GLCanvas3D::show_binary_gcode_debug_window() +{ + bgcode::binarize::BinarizerConfig& binarizer_config = GCodeProcessor::get_binarizer_config(); + + ImGuiWrapper& imgui = *wxGetApp().imgui(); + imgui.begin(std::string("Binary GCode"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); + + using namespace bgcode::core; + if (ImGui::BeginTable("BinaryGCodeConfig", 2)) { + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "File metadata compression"); + ImGui::TableSetColumnIndex(1); + std::vector options = { "None", "Deflate", "heatshrink 11,4", "heatshrink 12,4" }; + int option_id = (int)binarizer_config.compression.file_metadata; + if (imgui.combo(std::string("##file_metadata_compression"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.compression.file_metadata = (ECompressionType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "Printer metadata compression"); + ImGui::TableSetColumnIndex(1); + option_id = (int)binarizer_config.compression.printer_metadata; + if (imgui.combo(std::string("##printer_metadata_compression"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.compression.printer_metadata = (ECompressionType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "Print metadata compression"); + ImGui::TableSetColumnIndex(1); + option_id = (int)binarizer_config.compression.print_metadata; + if (imgui.combo(std::string("##print_metadata_compression"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.compression.print_metadata = (ECompressionType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "Slicer metadata compression"); + ImGui::TableSetColumnIndex(1); + option_id = (int)binarizer_config.compression.slicer_metadata; + if (imgui.combo(std::string("##slicer_metadata_compression"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.compression.slicer_metadata = (ECompressionType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "GCode compression"); + ImGui::TableSetColumnIndex(1); + option_id = (int)binarizer_config.compression.gcode; + if (imgui.combo(std::string("##gcode_compression"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.compression.gcode = (ECompressionType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "GCode encoding"); + ImGui::TableSetColumnIndex(1); + options = { "None", "MeatPack", "MeatPack Comments" }; + option_id = (int)binarizer_config.gcode_encoding; + if (imgui.combo(std::string("##gcode_encoding"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.gcode_encoding = (EGCodeEncodingType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "Metadata encoding"); + ImGui::TableSetColumnIndex(1); + options = { "INI" }; + option_id = (int)binarizer_config.metadata_encoding; + if (imgui.combo(std::string("##metadata_encoding"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.metadata_encoding = (EMetadataEncodingType)option_id; + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "Checksum type"); + ImGui::TableSetColumnIndex(1); + options = { "None", "CRC32" }; + option_id = (int)binarizer_config.checksum; + if (imgui.combo(std::string("##4"), options, option_id, ImGuiComboFlags_HeightLargest, 0.0f, 175.0f)) + binarizer_config.checksum = (EChecksumType)option_id; + + ImGui::EndTable(); + + ImGui::Separator(); + imgui.text("!!! WARNING !!!"); + imgui.text("Changing values does NOT invalidate the current slice"); + } + + imgui.end(); +} +#endif // ENABLE_BINARIZED_GCODE_DEBUG_WINDOW const ModelVolume *get_model_volume(const GLVolume &v, const Model &model) { const ModelVolume * ret = nullptr; @@ -7820,10 +7963,10 @@ const ModelVolume *get_model_volume(const GLVolume &v, const Model &model) return ret; } -const ModelVolume *get_model_volume(const ObjectID &volume_id, const ModelObjectPtrs &objects) +ModelVolume *get_model_volume(const ObjectID &volume_id, const ModelObjectPtrs &objects) { for (const ModelObject *obj : objects) - for (const ModelVolume *vol : obj->volumes) + for (ModelVolume *vol : obj->volumes) if (vol->id() == volume_id) return vol; return nullptr; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index f86dda3..88ee311 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -162,6 +162,7 @@ wxDECLARE_EVENT(EVT_GLCANVAS_WIPETOWER_MOVED, Vec3dEvent); wxDECLARE_EVENT(EVT_GLCANVAS_INSTANCE_ROTATED, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_RESET_SKEW, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_INSTANCE_SCALED, SimpleEvent); +wxDECLARE_EVENT(EVT_GLCANVAS_INSTANCE_MIRRORED, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_WIPETOWER_ROTATED, Vec3dEvent); wxDECLARE_EVENT(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, Event); //Y5 @@ -616,6 +617,7 @@ private: // list of transforms used to render the contours std::vector> m_instances; bool m_evaluating{ false }; + bool m_dragging{ false }; std::vector> m_hulls_2d_cache; @@ -625,6 +627,9 @@ private: void render(); bool empty() const { return m_contours.empty(); } + void start_dragging() { m_dragging = true; } + bool is_dragging() const { return m_dragging; } + void stop_dragging() { m_dragging = false; } friend class GLCanvas3D; }; @@ -963,11 +968,18 @@ public: void reset_sequential_print_clearance() { m_sequential_print_clearance.m_evaluating = false; + if (m_sequential_print_clearance.is_dragging()) + m_sequential_print_clearance_first_displacement = true; + else m_sequential_print_clearance.set_contours(ContoursList(), false); + set_as_dirty(); + request_extra_frame(); } void set_sequential_print_clearance_contours(const ContoursList& contours, bool generate_fill) { m_sequential_print_clearance.set_contours(contours, generate_fill); + set_as_dirty(); + request_extra_frame(); } bool is_sequential_print_clearance_empty() const { @@ -979,7 +991,11 @@ public: } void update_sequential_clearance(bool force_contours_generation); - void set_sequential_clearance_as_evaluating() { m_sequential_print_clearance.m_evaluating = true; } + void set_sequential_clearance_as_evaluating() { + m_sequential_print_clearance.m_evaluating = true; + set_as_dirty(); + request_extra_frame(); + } const Print* fff_print() const; const SLAPrint* sla_print() const; @@ -1100,10 +1116,13 @@ private: bool _deactivate_arrange_menu(); float get_overlay_window_width() { return LayersEditing::get_overlay_window_width(); } +#if ENABLE_BINARIZED_GCODE_DEBUG_WINDOW + void show_binary_gcode_debug_window(); +#endif // ENABLE_BINARIZED_GCODE_DEBUG_WINDOW }; const ModelVolume *get_model_volume(const GLVolume &v, const Model &model); -const ModelVolume *get_model_volume(const ObjectID &volume_id, const ModelObjectPtrs &objects); +ModelVolume *get_model_volume(const ObjectID &volume_id, const ModelObjectPtrs &objects); ModelVolume *get_model_volume(const GLVolume &v, const ModelObjectPtrs &objects); ModelVolume *get_model_volume(const GLVolume &v, const ModelObject &object); diff --git a/src/slic3r/GUI/GUI.cpp b/src/slic3r/GUI/GUI.cpp index a42d73d..f88b380 100644 --- a/src/slic3r/GUI/GUI.cpp +++ b/src/slic3r/GUI/GUI.cpp @@ -203,7 +203,7 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt } break; case coPoints:{ - if (opt_key == "bed_shape" || opt_key == "bed_exclude_area" || opt_key == "thumbnails") { + if (opt_key == "bed_shape") { config.option(opt_key)->values = boost::any_cast>(value); break; } @@ -338,7 +338,7 @@ void show_substitutions_info(const PresetsConfigSubstitutions& presets_config_su }; for (const PresetConfigSubstitutions& substitution : presets_config_substitutions) { - changes += "\n\n" + format_wxstr("%1% : %2%", preset_type_name(substitution.preset_type), bold_string(substitution.preset_name)); + changes += "\n\n" + format_wxstr("%1% : %2%", preset_type_name(substitution.preset_type), bold_string(from_u8(substitution.preset_name))); if (!substitution.preset_file.empty()) changes += format_wxstr(" (%1%)", substitution.preset_file); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index f015795..272015d 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -87,6 +87,8 @@ #include "DesktopIntegrationDialog.hpp" #include "SendSystemInfoDialog.hpp" #include "Downloader.hpp" +#include "PhysicalPrinterDialog.hpp" +#include "WifiConfigDialog.hpp" #include "BitmapCache.hpp" #include "Notebook.hpp" @@ -483,8 +485,8 @@ static const FileWildcards file_wildcards_by_type[FT_SIZE] = { /* FT_STEP */ { "STEP files"sv, { ".stp"sv, ".step"sv } }, /* FT_AMF */ { "AMF files"sv, { ".amf"sv, ".zip.amf"sv, ".xml"sv } }, /* FT_3MF */ { "3MF files"sv, { ".3mf"sv } }, - /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".gco"sv, ".g"sv, ".ngc"sv } }, - /* FT_MODEL */ { "Known files"sv, { ".stl"sv, ".obj"sv, ".3mf"sv, ".amf"sv, ".zip.amf"sv, ".xml"sv, ".step"sv, ".stp"sv } }, + /* FT_GCODE */ { "G-code files"sv, { ".gcode"sv, ".gco"sv, ".bgcode"sv, ".bgc"sv, ".g"sv, ".ngc"sv } }, + /* FT_MODEL */ { "Known files"sv, { ".stl"sv, ".obj"sv, ".3mf"sv, ".amf"sv, ".zip.amf"sv, ".xml"sv, ".step"sv, ".stp"sv, ".svg"sv } }, /* FT_PROJECT */ { "Project files"sv, { ".3mf"sv, ".amf"sv, ".zip.amf"sv } }, /* FT_FONTS */ { "Font files"sv, { ".ttc"sv, ".ttf"sv } }, /* FT_GALLERY */ { "Known files"sv, { ".stl"sv, ".obj"sv } }, @@ -786,15 +788,10 @@ void GUI_App::post_init() this->mainframe->load_config_file(this->init_params->load_configs.back()); // If loading a 3MF file, the config is loaded from the last one. if (!this->init_params->input_files.empty()) { -#if 1 // #ysFIXME_delete_after_test_of wxArrayString fns; for (const std::string& name : this->init_params->input_files) fns.Add(from_u8(name)); if (plater()->load_files(fns) && this->init_params->input_files.size() == 1) { -#else - const std::vector res = this->plater()->load_files(this->init_params->input_files, true, true); - if (!res.empty() && this->init_params->input_files.size() == 1) { -#endif // Update application titlebar when opening a project file const std::string& filename = this->init_params->input_files.front(); if (boost::algorithm::iends_with(filename, ".amf") || @@ -825,20 +822,21 @@ void GUI_App::post_init() // This is ugly but I honestly found no better way to do it. // Neither wxShowEvent nor wxWindowCreateEvent work reliably. if (this->preset_updater) { // G-Code Viewer does not initialize preset_updater. +#if 0 // This code was moved to EVT_CONFIG_UPDATER_SYNC_DONE bind - after preset_updater finishes synchronization. if (! this->check_updates(false)) // Configuration is not compatible and reconfigure was refused by the user. Application is closing. return; +#endif CallAfter([this] { // preset_updater->sync downloads profile updates on background so it must begin after config wizard finished. bool cw_showed = this->config_wizard_startup(); - this->preset_updater->sync(preset_bundle); - //B20 - /*if (! cw_showed) { + this->preset_updater->sync(preset_bundle, this); + if (! cw_showed) { // The CallAfter is needed as well, without it, GL extensions did not show. // Also, we only want to show this when the wizard does not, so the new user // sees something else than "we want something" on the first start. show_send_system_info_dialog_if_needed(); - }*/ + } // app version check is asynchronous and triggers blocking dialog window, better call it last this->app_version_check(false); }); @@ -1093,8 +1091,19 @@ bool GUI_App::OnInit() } } +static int get_app_font_pt_size(const AppConfig* app_config) +{ + if (!app_config->has("font_pt_size")) + return -1; + const int font_pt_size = atoi(app_config->get("font_pt_size").c_str()); + const int max_font_pt_size = wxGetApp().get_max_font_pt_size(); + + return (font_pt_size > max_font_pt_size) ? max_font_pt_size : font_pt_size; +} bool GUI_App::on_init_inner() { + // TODO: remove this when all asserts are gone. + wxDisableAsserts(); // Set initialization of image handlers before any UI actions - See GH issue #7469 wxInitAllImageHandlers(); @@ -1244,7 +1253,6 @@ bool GUI_App::on_init_inner() if (! older_data_dir_path.empty()) { preset_bundle->import_newer_configs(older_data_dir_path); - //app_config->save(); // It looks like redundant call of save. ysFIXME delete after testing } if (is_editor()) { @@ -1291,11 +1299,16 @@ bool GUI_App::on_init_inner() show_error(nullptr, evt.GetString()); }); + Bind(EVT_CONFIG_UPDATER_SYNC_DONE, [this](const wxCommandEvent& evt) { + this->check_updates(false); + }); } else { #ifdef __WXMSW__ if (app_config->get_bool("associate_gcode")) associate_gcode_files(); + if (app_config->get_bool("associate_bgcode")) + associate_bgcode_files(); #endif // __WXMSW__ } @@ -1328,7 +1341,7 @@ bool GUI_App::on_init_inner() if (!delayed_error_load_presets.empty()) show_error(nullptr, delayed_error_load_presets); - mainframe = new MainFrame(app_config->has("font_size") ? atoi(app_config->get("font_size").c_str()) : -1); + mainframe = new MainFrame(get_app_font_pt_size(app_config)); // hide settings tabs after first Layout if (is_editor()) mainframe->select_tab(size_t(0)); @@ -1631,6 +1644,7 @@ void GUI_App::UpdateDVCDarkUI(wxDataViewCtrl* dvc, bool highlited/* = false*/) #ifdef _WIN32 UpdateDarkUI(dvc, highlited ? dark_mode() : false); #ifdef _MSW_DARK_MODE + if (!dvc->HasFlag(wxDV_NO_HEADER)) dvc->RefreshHeaderDarkMode(&m_normal_font); #endif //_MSW_DARK_MODE if (dvc->HasFlag(wxDV_ROW_LINES)) @@ -1653,6 +1667,29 @@ void GUI_App::UpdateAllStaticTextDarkUI(wxWindow* parent) #endif } +void GUI_App::SetWindowVariantForButton(wxButton* btn) +{ +#ifdef __APPLE__ + // This is a limit imposed by OSX. The way the native button widget is drawn only allows it to be stretched horizontally, + // and the vertical size is fixed. (see https://stackoverflow.com/questions/29083891/wxpython-button-size-being-ignored-on-osx) + // But standard height is possible to change using SetWindowVariant method (see https://docs.wxwidgets.org/3.0/window_8h.html#a879bccd2c987fedf06030a8abcbba8ac) + if (m_normal_font.GetPointSize() > 15) { + btn->SetWindowVariant(wxWINDOW_VARIANT_LARGE); + btn->SetFont(m_normal_font); + } +#endif +} + +int GUI_App::get_max_font_pt_size() +{ + const unsigned disp_count = wxDisplay::GetCount(); + for (unsigned i = 0; i < disp_count; i++) { + const wxRect display_rect = wxDisplay(i).GetGeometry(); + if (display_rect.width >= 2560 && display_rect.height >= 1440) + return 20; + } + return 15; +} void GUI_App::init_fonts() { m_small_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); @@ -1759,9 +1796,26 @@ bool GUI_App::tabs_as_menu() const return app_config->get_bool("tabs_as_menu"); // || dark_mode(); } -wxSize GUI_App::get_min_size() const +bool GUI_App::suppress_round_corners() const { - return wxSize(76*m_em_unit, 49 * m_em_unit); + return true;// app_config->get("suppress_round_corners") == "1"; +} + +wxSize GUI_App::get_min_size(wxWindow* display_win) const +{ + wxSize min_size(76*m_em_unit, 49 * m_em_unit); + + const wxDisplay display = wxDisplay(display_win); + wxRect display_rect = display.GetGeometry(); + display_rect.width *= 0.75; + display_rect.height *= 0.75; + + if (min_size.x > display_rect.GetWidth()) + min_size.x = display_rect.GetWidth(); + if (min_size.y > display_rect.GetHeight()) + min_size.y = display_rect.GetHeight(); + + return min_size; } float GUI_App::toolbar_icon_scale(const bool is_limited/* = false*/) const @@ -1836,7 +1890,7 @@ void GUI_App::recreate_GUI(const wxString& msg_name) dlg.Update(10, _L("Recreating") + dots); MainFrame *old_main_frame = mainframe; - mainframe = new MainFrame(app_config->has("font_size") ? atoi(app_config->get("font_size").c_str()) : -1); + mainframe = new MainFrame(get_app_font_pt_size(app_config)); if (is_editor()) // hide settings tabs after first Layout mainframe->select_tab(size_t(0)); @@ -2026,7 +2080,7 @@ void GUI_App::load_gcode(wxWindow* parent, wxString& input_file) const { input_file.Clear(); wxFileDialog dialog(parent ? parent : GetTopWindow(), - _L("Choose one file (GCODE/.GCO/.G/.ngc/NGC):"), + _L("Choose one file (GCODE/GCO/G/BGCODE/BGC/NGC):"), app_config->get_last_dir(), "", file_wildcards(FT_GCODE), wxFD_OPEN | wxFD_FILE_MUST_EXIST); @@ -2127,6 +2181,9 @@ int GUI_App::GetSingleChoiceIndex(const wxString& message, #ifdef _WIN32 wxSingleChoiceDialog dialog(nullptr, message, caption, choices); wxGetApp().UpdateDlgDarkUI(&dialog); + auto children = dialog.GetChildren(); + for (auto child : children) + child->SetFont(normal_font()); dialog.SetSelection(initialSelection); return dialog.ShowModal() == wxID_OK ? dialog.GetSelection() : -1; @@ -2550,6 +2607,19 @@ void GUI_App::add_config_menu(wxMenuBar *menu) case ConfigMenuFlashFirmware: FirmwareDialog::run(mainframe); break; + case ConfigMenuWifiConfigFile: + { + open_wifi_config_dialog(true); + /* + std::string file_path; + WifiConfigDialog dialog(mainframe, file_path, removable_drive_manager()); + if (dialog.ShowModal() == wxID_OK) + { + plater_->get_notification_manager()->push_exporting_finished_notification(file_path, boost::filesystem::path(file_path).parent_path().string(), true); + } + */ + } + break; default: break; } @@ -2594,6 +2664,8 @@ void GUI_App::open_preferences(const std::string& highlight_option /*= std::stri else { if (app_config->get_bool("associate_gcode")) associate_gcode_files(); + if (app_config->get_bool("associate_bgcode")) + associate_bgcode_files(); } #endif // _WIN32 @@ -2949,7 +3021,8 @@ ObjectSettings* GUI_App::obj_settings() ObjectList* GUI_App::obj_list() { - return sidebar().obj_list(); + // If this method is called before plater_ has been initialized, return nullptr (to avoid a crash) + return plater_ ? sidebar().obj_list() : nullptr; } ObjectLayers* GUI_App::obj_layers() @@ -3387,6 +3460,12 @@ void GUI_App::associate_gcode_files() { associate_file_type(L".gcode", L"QIDISlicer.GCodeViewer.1", L"QIDISlicerGCodeViewer", true); } + +void GUI_App::associate_bgcode_files() +{ + associate_file_type(L".bgcode", L"QIDISlicer.GCodeViewer.1", L"QIDISlicerGCodeViewer", true); +} + #endif // __WXMSW__ void GUI_App::on_version_read(wxCommandEvent& evt) @@ -3503,5 +3582,37 @@ void GUI_App::start_download(std::string url) m_downloader->start_download(url); } +void GUI_App::open_wifi_config_dialog(bool forced, const wxString& drive_path/* = {}*/) +{ + if(m_wifi_config_dialog_shown) + return; + + bool dialog_was_declined = app_config->get_bool("wifi_config_dialog_declined"); + + if (!forced && dialog_was_declined) { + + // dialog was already declined this run, show only notification + notification_manager()->push_notification(NotificationType::WifiConfigFileDetected + , NotificationManager::NotificationLevel::ImportantNotificationLevel + // TRN Text of notification when Slicer starts and usb stick with printer settings ini file is present + , _u8L("Printer configuration file detected on removable media.") + // TRN Text of hypertext of notification when Slicer starts and usb stick with printer settings ini file is present + , _u8L("Write Wi-Fi credentials."), [drive_path](wxEvtHandler* evt_hndlr) { + wxGetApp().open_wifi_config_dialog(true, drive_path); + return true; }); + return; + } + + m_wifi_config_dialog_shown = true; + std::string file_path; + WifiConfigDialog dialog(mainframe, file_path, removable_drive_manager(), drive_path); + if (dialog.ShowModal() == wxID_OK) { + plater_->get_notification_manager()->push_exporting_finished_notification(file_path, boost::filesystem::path(file_path).parent_path().string(), true); + app_config->set("wifi_config_dialog_declined", "0"); + } else { + app_config->set("wifi_config_dialog_declined", "1"); + } + m_wifi_config_dialog_shown = false; +} } // GUI } //Slic3r diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 8ff20a7..2d23f98 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -96,6 +96,7 @@ enum ConfigMenuIDs { ConfigMenuLanguage, ConfigMenuFlashFirmware, ConfigMenuCnt, + ConfigMenuWifiConfigFile }; class Tab; @@ -212,6 +213,7 @@ public: void UpdateDVCDarkUI(wxDataViewCtrl* dvc, bool highlited = false); // update color mode for panel including all static texts controls void UpdateAllStaticTextDarkUI(wxWindow* parent); + void SetWindowVariantForButton(wxButton* btn); void init_fonts(); void update_fonts(const MainFrame *main_frame = nullptr); void set_label_clr_modified(const wxColour& clr); @@ -251,7 +253,9 @@ public: const wxFont& link_font() { return m_link_font; } int em_unit() const { return m_em_unit; } bool tabs_as_menu() const; - wxSize get_min_size() const; + bool suppress_round_corners() const; + wxSize get_min_size(wxWindow* display_win) const; + int get_max_font_pt_size(); float toolbar_icon_scale(const bool is_limited = false) const; void set_auto_toolbar_icon_scale(float scale) const; void check_printer_presets(); @@ -374,12 +378,15 @@ public: //Y void associate_step_files(); void associate_gcode_files(); + void associate_bgcode_files(); #endif // __WXMSW__ // URL download - QIDISlicer gets system call to open qidislicer:// URL which should contain address of download void start_download(std::string url); + void open_wifi_config_dialog(bool forced, const wxString& drive_path = {}); + bool get_wifi_config_dialog_shown() const { return m_wifi_config_dialog_shown; } private: bool on_init_inner(); void init_app_config(); @@ -403,6 +410,8 @@ private: bool m_datadir_redefined { false }; + bool m_wifi_config_dialog_shown { false }; + bool m_wifi_config_dialog_was_declined { false }; }; DECLARE_APP(GUI_App) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index fd3faac..fc22752 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -14,6 +14,7 @@ #include "Selection.hpp" #include "format.hpp" #include "Gizmos/GLGizmoEmboss.hpp" +#include "Gizmos/GLGizmoSVG.hpp" #include #include "slic3r/Utils/FixModelByWin10.hpp" @@ -170,6 +171,12 @@ static const constexpr std::array, 3> TEXT {L("Add negative text"), "add_text_negative" }, // ~ModelVolumeType::NEGATIVE_VOLUME {L("Add text modifier"), "add_text_modifier"}, // ~ModelVolumeType::PARAMETER_MODIFIER }}; +// Note: id accords to type of the sub-object (adding volume), so sequence of the menu items is important +static const constexpr std::array, 3> SVG_VOLUME_ICONS{{ + {L("Add SVG part"), "svg_part"}, // ~ModelVolumeType::MODEL_PART + {L("Add negative SVG"), "svg_negative"}, // ~ModelVolumeType::NEGATIVE_VOLUME + {L("Add SVG modifier"), "svg_modifier"}, // ~ModelVolumeType::PARAMETER_MODIFIER +}}; static Plater* plater() { @@ -441,7 +448,7 @@ std::vector MenuFactory::get_volume_bitmaps() { std::vector volume_bmps; volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size()); - for (auto item : ADD_VOLUME_MENU_ITEMS) + for (const auto& item : ADD_VOLUME_MENU_ITEMS) volume_bmps.push_back(get_bmp_bundle(item.second)); return volume_bmps; } @@ -450,7 +457,16 @@ std::vector MenuFactory::get_text_volume_bitmaps() { std::vector volume_bmps; volume_bmps.reserve(TEXT_VOLUME_ICONS.size()); - for (auto item : TEXT_VOLUME_ICONS) + for (const auto& item : TEXT_VOLUME_ICONS) + volume_bmps.push_back(get_bmp_bundle(item.second)); + return volume_bmps; +} + +std::vector MenuFactory::get_svg_volume_bitmaps() +{ + std::vector volume_bmps; + volume_bmps.reserve(SVG_VOLUME_ICONS.size()); + for (const auto &item : SVG_VOLUME_ICONS) volume_bmps.push_back(get_bmp_bundle(item.second)); return volume_bmps; } @@ -487,6 +503,7 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty } append_menu_item_add_text(sub_menu, type); + append_menu_item_add_svg(sub_menu, type); if (mode >= comAdvanced) { sub_menu->AppendSeparator(); @@ -497,15 +514,11 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty return sub_menu; } -void MenuFactory::append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item/* = true*/) -{ - auto add_text = [type](wxCommandEvent& evt) { - GLCanvas3D* canvas = plater()->canvas3D(); - GLGizmosManager& mng = canvas->get_gizmos_manager(); - GLGizmoBase* gizmo = mng.get_gizmo(GLGizmosManager::Emboss); - GLGizmoEmboss* emboss = dynamic_cast(gizmo); - assert(emboss != nullptr); - if (emboss == nullptr) return; +static void append_menu_itemm_add_(const wxString& name, GLGizmosManager::EType gizmo_type, wxMenu *menu, ModelVolumeType type, bool is_submenu_item) { + auto add_ = [type, gizmo_type](const wxCommandEvent & /*unnamed*/) { + const GLCanvas3D *canvas = plater()->canvas3D(); + const GLGizmosManager &mng = canvas->get_gizmos_manager(); + GLGizmoBase *gizmo_base = mng.get_gizmo(gizmo_type); ModelVolumeType volume_type = type; // no selected object means create new object @@ -513,26 +526,44 @@ void MenuFactory::append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, volume_type = ModelVolumeType::MODEL_PART; auto screen_position = canvas->get_popup_menu_position(); + if (gizmo_type == GLGizmosManager::Emboss) { + auto emboss = dynamic_cast(gizmo_base); + assert(emboss != nullptr); + if (emboss == nullptr) return; if (screen_position.has_value()) { emboss->create_volume(volume_type, *screen_position); } else { emboss->create_volume(volume_type); } + } else if (gizmo_type == GLGizmosManager::Svg) { + auto svg = dynamic_cast(gizmo_base); + assert(svg != nullptr); + if (svg == nullptr) return; + if (screen_position.has_value()) { + svg->create_volume(volume_type, *screen_position); + } else { + svg->create_volume(volume_type); + } + } }; - if ( type == ModelVolumeType::MODEL_PART - || type == ModelVolumeType::NEGATIVE_VOLUME - || type == ModelVolumeType::PARAMETER_MODIFIER - || type == ModelVolumeType::INVALID // cannot use gizmo without selected object + if (type == ModelVolumeType::MODEL_PART || type == ModelVolumeType::NEGATIVE_VOLUME || type == ModelVolumeType::PARAMETER_MODIFIER || + type == ModelVolumeType::INVALID // cannot use gizmo without selected object ) { - wxString item_name = is_submenu_item ? "" : _(ADD_VOLUME_MENU_ITEMS[int(type)].first) + ": "; - item_name += _L("Text"); + wxString item_name = wxString(is_submenu_item ? "" : _(ADD_VOLUME_MENU_ITEMS[int(type)].first) + ": ") + name; menu->AppendSeparator(); const std::string icon_name = is_submenu_item ? "" : ADD_VOLUME_MENU_ITEMS[int(type)].second; - append_menu_item(menu, wxID_ANY, item_name, "", add_text, icon_name, menu); + append_menu_item(menu, wxID_ANY, item_name, "", add_, icon_name, menu); } } +void MenuFactory::append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item/* = true*/){ + append_menu_itemm_add_(_L("Text"), GLGizmosManager::Emboss, menu, type, is_submenu_item); +} + +void MenuFactory::append_menu_item_add_svg(wxMenu *menu, ModelVolumeType type, bool is_submenu_item /* = true*/){ + append_menu_itemm_add_(_L("SVG"), GLGizmosManager::Svg, menu, type, is_submenu_item); +} void MenuFactory::append_menu_items_add_volume(MenuType menu_type) { wxMenu* menu = menu_type == mtObjectFFF ? &m_object_menu : menu_type == mtObjectSLA ? &m_sla_object_menu : nullptr; @@ -781,13 +812,13 @@ void MenuFactory::append_menu_items_osx(wxMenu* menu) menu->AppendSeparator(); } -wxMenuItem* MenuFactory::append_menu_item_fix_through_netfabb(wxMenu* menu) +wxMenuItem* MenuFactory::append_menu_item_fix_through_winsdk(wxMenu* menu) { if (!is_windows10()) return nullptr; - wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _L("Fix through the Netfabb"), "", - [](wxCommandEvent&) { obj_list()->fix_through_netfabb(); }, "", menu, - []() {return plater()->can_fix_through_netfabb(); }, m_parent); + wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _L("Fix by Windows repair algorithm"), "", + [](wxCommandEvent&) { obj_list()->fix_through_winsdk(); }, "", menu, + []() {return plater()->can_fix_through_winsdk(); }, m_parent); return menu_item; } @@ -985,15 +1016,18 @@ void MenuFactory::append_menu_item_edit_text(wxMenu *menu) wxString name = _L("Edit text"); auto can_edit_text = []() { - if (plater() != nullptr) { - const Selection& sel = plater()->get_selection(); - if (sel.volumes_count() == 1) { - const GLVolume* gl_vol = sel.get_first_volume(); - const ModelVolume* vol = plater()->model().objects[gl_vol->object_idx()]->volumes[gl_vol->volume_idx()]; - return vol->text_configuration.has_value(); - } - } + if (plater() == nullptr) + return false; + const Selection& selection = plater()->get_selection(); + if (selection.volumes_count() != 1) + return false; + const GLVolume* gl_volume = selection.get_first_volume(); + if (gl_volume == nullptr) + return false; + const ModelVolume *volume = get_model_volume(*gl_volume, selection.get_model()->objects); + if (volume == nullptr) return false; + return volume->is_text(); }; if (menu != &m_text_part_menu) { @@ -1005,7 +1039,7 @@ void MenuFactory::append_menu_item_edit_text(wxMenu *menu) } wxString description = _L("Ability to change text, font, size, ..."); - std::string icon = ""; + std::string icon = "cog"; auto open_emboss = [](const wxCommandEvent &) { GLGizmosManager &mng = plater()->canvas3D()->get_gizmos_manager(); if (mng.get_current_type() == GLGizmosManager::Emboss) @@ -1015,6 +1049,42 @@ void MenuFactory::append_menu_item_edit_text(wxMenu *menu) append_menu_item(menu, wxID_ANY, name, description, open_emboss, icon, nullptr, can_edit_text, m_parent); } +void MenuFactory::append_menu_item_edit_svg(wxMenu *menu) +{ + wxString name = _L("Edit SVG"); + auto can_edit_svg = []() { + if (plater() == nullptr) + return false; + const Selection& selection = plater()->get_selection(); + if (selection.volumes_count() != 1) + return false; + const GLVolume* gl_volume = selection.get_first_volume(); + if (gl_volume == nullptr) + return false; + const ModelVolume *volume = get_model_volume(*gl_volume, selection.get_model()->objects); + if (volume == nullptr) + return false; + return volume->is_svg(); + }; + + if (menu != &m_svg_part_menu) { + const int menu_item_id = menu->FindItem(name); + if (menu_item_id != wxNOT_FOUND) + menu->Destroy(menu_item_id); + if (!can_edit_svg()) + return; + } + + wxString description = _L("Change SVG source file, projection, size, ..."); + std::string icon = "cog"; + auto open_svg = [](const wxCommandEvent &) { + GLGizmosManager &mng = plater()->canvas3D()->get_gizmos_manager(); + if (mng.get_current_type() == GLGizmosManager::Svg) + mng.open_gizmo(GLGizmosManager::Svg); // close() and reopen - move to be visible + mng.open_gizmo(GLGizmosManager::Svg); + }; + append_menu_item(menu, wxID_ANY, name, description, open_svg, icon, nullptr, can_edit_svg, m_parent); +} MenuFactory::MenuFactory() { for (int i = 0; i < mtCount; i++) { @@ -1067,7 +1137,7 @@ void MenuFactory::create_common_object_menu(wxMenu* menu) // "Scale to print volume" makes a sense just for whole object append_menu_item_scale_selection_to_fit_print_volume(menu); - append_menu_item_fix_through_netfabb(menu); + append_menu_item_fix_through_winsdk(menu); append_menu_item_simplify(menu); append_menu_items_mirror(menu); @@ -1116,7 +1186,7 @@ void MenuFactory::create_part_menu() append_menu_item_reload_from_disk(menu); append_menu_item_replace_with_stl(menu); append_menu_item_export_stl(menu); - append_menu_item_fix_through_netfabb(menu); + append_menu_item_fix_through_winsdk(menu); append_menu_item_simplify(menu); append_menu_item(menu, wxID_ANY, _L("Split"), _L("Split the selected object into individual parts"), @@ -1130,9 +1200,21 @@ void MenuFactory::create_text_part_menu() { wxMenu* menu = &m_text_part_menu; - append_menu_item_delete(menu); append_menu_item_edit_text(menu); - append_menu_item_fix_through_netfabb(menu); + append_menu_item_delete(menu); + append_menu_item_fix_through_winsdk(menu); + append_menu_item_simplify(menu); + + append_immutable_part_menu_items(menu); +} + +void MenuFactory::create_svg_part_menu() +{ + wxMenu* menu = &m_svg_part_menu; + + append_menu_item_edit_svg(menu); + append_menu_item_delete(menu); + append_menu_item_fix_through_winsdk(menu); append_menu_item_simplify(menu); append_immutable_part_menu_items(menu); @@ -1155,6 +1237,7 @@ void MenuFactory::init(wxWindow* parent) create_common_object_menu(&m_sla_object_menu); create_part_menu(); create_text_part_menu(); + create_svg_part_menu(); create_instance_menu(); } @@ -1177,6 +1260,7 @@ wxMenu* MenuFactory::object_menu() update_menu_items_instance_manipulation(mtObjectFFF); append_menu_item_invalidate_cut_info(&m_object_menu); append_menu_item_edit_text(&m_object_menu); + append_menu_item_edit_svg(&m_object_menu); return &m_object_menu; } @@ -1188,6 +1272,7 @@ wxMenu* MenuFactory::sla_object_menu() update_menu_items_instance_manipulation(mtObjectSLA); append_menu_item_invalidate_cut_info(&m_sla_object_menu); append_menu_item_edit_text(&m_sla_object_menu); + append_menu_item_edit_svg(&m_object_menu); return &m_sla_object_menu; } @@ -1208,6 +1293,11 @@ wxMenu* MenuFactory::text_part_menu() return &m_text_part_menu; } +wxMenu *MenuFactory::svg_part_menu() +{ + append_mutable_part_menu_items(&m_svg_part_menu); + return &m_svg_part_menu; +} wxMenu* MenuFactory::instance_menu() { return &m_instance_menu; @@ -1236,7 +1326,7 @@ wxMenu* MenuFactory::multi_selection_menu() wxMenu* menu = new MenuWithSeparators(); - append_menu_item_fix_through_netfabb(menu); + append_menu_item_fix_through_winsdk(menu); append_menu_item_reload_from_disk(menu); append_menu_items_convert_unit(menu); if (obj_list()->can_merge_to_multipart_object()) diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index 515311d..a0c8997 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -35,6 +35,7 @@ class MenuFactory public: static std::vector get_volume_bitmaps(); static std::vector get_text_volume_bitmaps(); + static std::vector get_svg_volume_bitmaps(); MenuFactory(); ~MenuFactory() = default; @@ -52,6 +53,7 @@ public: wxMenu* sla_object_menu(); wxMenu* part_menu(); wxMenu* text_part_menu(); + wxMenu* svg_part_menu(); wxMenu* instance_menu(); wxMenu* layer_menu(); wxMenu* multi_selection_menu(); @@ -68,6 +70,7 @@ private: MenuWithSeparators m_object_menu; MenuWithSeparators m_part_menu; MenuWithSeparators m_text_part_menu; + MenuWithSeparators m_svg_part_menu; MenuWithSeparators m_sla_object_menu; MenuWithSeparators m_default_menu; MenuWithSeparators m_instance_menu; @@ -83,10 +86,12 @@ private: void append_mutable_part_menu_items(wxMenu* menu); void create_part_menu(); void create_text_part_menu(); + void create_svg_part_menu(); void create_instance_menu(); wxMenu* append_submenu_add_generic(wxMenu* menu, ModelVolumeType type); void append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item = true); + void append_menu_item_add_svg(wxMenu *menu, ModelVolumeType type, bool is_submenu_item = true); void append_menu_items_add_volume(MenuType type); wxMenuItem* append_menu_item_layers_editing(wxMenu* menu); wxMenuItem* append_menu_item_settings(wxMenu* menu); @@ -95,7 +100,7 @@ private: wxMenuItem* append_menu_item_printable(wxMenu* menu); void append_menu_item_invalidate_cut_info(wxMenu *menu); void append_menu_items_osx(wxMenu* menu); - wxMenuItem* append_menu_item_fix_through_netfabb(wxMenu* menu); + wxMenuItem* append_menu_item_fix_through_winsdk(wxMenu* menu); wxMenuItem* append_menu_item_simplify(wxMenu* menu); void append_menu_item_export_stl(wxMenu* menu); void append_menu_item_reload_from_disk(wxMenu* menu); @@ -108,6 +113,7 @@ private: // void append_menu_item_merge_to_single_object(wxMenu *menu); void append_menu_items_mirror(wxMenu *menu); void append_menu_item_edit_text(wxMenu *menu); + void append_menu_item_edit_svg(wxMenu *menu); void append_menu_items_instance_manipulation(wxMenu *menu); void update_menu_items_instance_manipulation(MenuType type); void append_menu_items_split(wxMenu *menu); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2be574f..a7994a1 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -477,7 +477,7 @@ MeshErrorsInfo ObjectList::get_mesh_errors_info(const int obj_idx, const int vol *sidebar_info = stats.manifold() ? auto_repaired_info : (remaining_info + (stats.repaired() ? ("\n" + auto_repaired_info) : "")); if (is_windows10() && !sidebar_info) - tooltip += "\n" + _L("Right button click the icon to fix STL through Netfabb"); + tooltip += "\n" + _L("Right button click the icon to fix STL by Windows repair algorithm"); return { tooltip, get_warning_icon_name(stats) }; } @@ -996,7 +996,7 @@ void ObjectList::list_manipulation(const wxPoint& mouse_pos, bool evt_context_me { if (is_windows10() && m_objects_model->HasWarningIcon(item) && mouse_pos.x > 2 * wxGetApp().em_unit() && mouse_pos.x < 4 * wxGetApp().em_unit()) - fix_through_netfabb(); + fix_through_winsdk(); else if (evt_context_menu) show_context_menu(evt_context_menu); // show context menu for "Name" column too } @@ -1034,7 +1034,11 @@ void ObjectList::show_context_menu(const bool evt_context_menu) get_selected_item_indexes(obj_idx, vol_idx, item); if (obj_idx < 0 || vol_idx < 0) return; - menu = object(obj_idx)->volumes[vol_idx]->text_configuration.has_value() ? plater->text_part_menu() : plater->part_menu(); + const ModelVolume *volume = object(obj_idx)->volumes[vol_idx]; + + menu = volume->is_text() ? plater->text_part_menu() : + volume->is_svg() ? plater->svg_part_menu() : + plater->part_menu(); } else menu = type & itInstance ? plater->instance_menu() : @@ -1512,12 +1516,7 @@ void ObjectList::load_subobject(ModelVolumeType type, bool from_galery/* = false take_snapshot((type == ModelVolumeType::MODEL_PART) ? _L("Load Part") : _L("Load Modifier")); std::vector volumes; - // ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common - /* - if (type == ModelVolumeType::MODEL_PART) - load_part(*(*m_objects)[obj_idx], volumes, type, from_galery); - else*/ - load_modifier(input_files, *(*m_objects)[obj_idx], volumes, type, from_galery); + load_from_files(input_files, *(*m_objects)[obj_idx], volumes, type, from_galery); if (volumes.empty()) return; @@ -1537,71 +1536,9 @@ void ObjectList::load_subobject(ModelVolumeType type, bool from_galery/* = false selection_changed(); } -/* -void ObjectList::load_part(ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery = false) + +void ObjectList::load_from_files(const wxArrayString& input_files, ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery) { - if (type != ModelVolumeType::MODEL_PART) - return; - - wxWindow* parent = wxGetApp().tab_panel()->GetPage(0); - - wxArrayString input_files; - - if (from_galery) { - GalleryDialog dlg(this); - if (dlg.ShowModal() == wxID_CLOSE) - return; - dlg.get_input_files(input_files); - if (input_files.IsEmpty()) - return; - } - else - wxGetApp().import_model(parent, input_files); - - wxProgressDialog dlg(_L("Loading") + dots, "", 100, wxGetApp().mainframe wxPD_AUTO_HIDE); - wxBusyCursor busy; - - for (size_t i = 0; i < input_files.size(); ++i) { - std::string input_file = input_files.Item(i).ToUTF8().data(); - - dlg.Update(static_cast(100.0f * static_cast(i) / static_cast(input_files.size())), - _L("Loading file") + ": " + from_path(boost::filesystem::path(input_file).filename())); - dlg.Fit(); - - Model model; - try { - model = Model::read_from_file(input_file); - } - catch (std::exception &e) { - auto msg = _L("Error!") + " " + input_file + " : " + e.what() + "."; - show_error(parent, msg); - exit(1); - } - - for (auto object : model.objects) { - Vec3d delta = Vec3d::Zero(); - if (model_object.origin_translation != Vec3d::Zero()) { - object->center_around_origin(); - delta = model_object.origin_translation - object->origin_translation; - } - for (auto volume : object->volumes) { - volume->translate(delta); - auto new_volume = model_object.add_volume(*volume, type); - new_volume->name = boost::filesystem::path(input_file).filename().string(); - // set a default extruder value, since user can't add it manually - new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); - - added_volumes.push_back(new_volume); - } - } - } -} -*/ -void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery) -{ - // ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common - //if (type == ModelVolumeType::MODEL_PART) - // return; wxWindow* parent = wxGetApp().tab_panel()->GetPage(0); @@ -1841,12 +1778,7 @@ void ObjectList::load_shape_object_from_gallery(const wxArrayString& input_files wxGetApp().mainframe->update_title(); } -void ObjectList::load_mesh_object( - const TriangleMesh & mesh, - const std::string & name, - bool center, - const TextConfiguration *text_config /* = nullptr*/, - const Transform3d * transformation /* = nullptr*/) +void ObjectList::load_mesh_object(const TriangleMesh &mesh, const std::string &name, bool center) { PlaterAfterLoadAutoArrange plater_after_load_auto_arrange; // Add mesh to model as a new object @@ -1856,7 +1788,6 @@ void ObjectList::load_mesh_object( check_model_ids_validity(model); #endif /* _DEBUG */ - std::vector object_idxs; ModelObject* new_object = model.add_object(); new_object->name = name; new_object->add_instance(); // each object should have at list one instance @@ -1864,31 +1795,22 @@ void ObjectList::load_mesh_object( ModelVolume* new_volume = new_object->add_volume(mesh); new_object->sort_volumes(wxGetApp().app_config->get_bool("order_volumes")); new_volume->name = name; - if (text_config) - new_volume->text_configuration = *text_config; // set a default extruder value, since user can't add it manually new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); new_object->invalidate_bounding_box(); - if (transformation) { - assert(!center); - Slic3r::Geometry::Transformation tr(*transformation); - new_object->instances[0]->set_transformation(tr); - } else { auto bb = mesh.bounding_box(); new_object->translate(-bb.center()); new_object->instances[0]->set_offset( center ? to_3d(wxGetApp().plater()->build_volume().bounding_volume2d().center(), -new_object->origin_translation.z()) : bb.center()); - } new_object->ensure_on_bed(); - object_idxs.push_back(model.objects.size() - 1); #ifdef _DEBUG check_model_ids_validity(model); #endif /* _DEBUG */ - paste_objects_into_list(object_idxs); + paste_objects_into_list({model.objects.size() - 1}); #ifdef _DEBUG check_model_ids_validity(model); @@ -2544,7 +2466,9 @@ bool ObjectList::has_selected_cut_object() const for (wxDataViewItem item : sels) { const int obj_idx = m_objects_model->GetObjectIdByItem(item); - if (obj_idx >= 0 && object(obj_idx)->is_cut()) + // ys_FIXME: The obj_idx= 0 && obj_idx < int(m_objects->size()) && object(obj_idx)->is_cut()) return true; } @@ -3061,6 +2985,7 @@ wxDataViewItemArray ObjectList::add_volumes_to_object_in_list(size_t obj_idx, st volume_idx, volume->type(), volume->is_text(), + volume->is_svg(), get_warning_icon_name(volume->mesh().stats()), extruder2str(volume->config.has("extruder") ? volume->config.extruder() : 0)); add_settings_item(vol_item, &volume->config.get()); @@ -4337,7 +4262,8 @@ void ObjectList::change_part_type() types.emplace_back(ModelVolumeType::PARAMETER_MODIFIER); } - if (!volume->text_configuration.has_value()) { + // is not embossed(SVG or Text) + if (!volume->emboss_shape.has_value()) { for (const wxString& name : { _L("Support Blocker"), _L("Support Enforcer") }) names.Add(name); for (const ModelVolumeType type_id : { ModelVolumeType::SUPPORT_BLOCKER, ModelVolumeType::SUPPORT_ENFORCER }) @@ -4629,7 +4555,7 @@ void ObjectList::rename_item() update_name_in_model(item); } -void ObjectList::fix_through_netfabb() +void ObjectList::fix_through_winsdk() { // Do not fix anything when a gizmo is open. There might be issues with updates // and what is worse, the snapshot time would refer to the internal stack. @@ -4649,21 +4575,21 @@ void ObjectList::fix_through_netfabb() // clear selections from the non-broken models if any exists // and than fill names of models to repairing if (vol_idxs.empty()) { -#if !FIX_THROUGH_NETFABB_ALWAYS +#if !FIX_THROUGH_WINSDK_ALWAYS for (int i = int(obj_idxs.size())-1; i >= 0; --i) if (object(obj_idxs[i])->get_repaired_errors_count() == 0) obj_idxs.erase(obj_idxs.begin()+i); -#endif // FIX_THROUGH_NETFABB_ALWAYS +#endif // FIX_THROUGH_WINSDK_ALWAYS for (int obj_idx : obj_idxs) model_names.push_back(object(obj_idx)->name); } else { ModelObject* obj = object(obj_idxs.front()); -#if !FIX_THROUGH_NETFABB_ALWAYS +#if !FIX_THROUGH_WINSDK_ALWAYS for (int i = int(vol_idxs.size()) - 1; i >= 0; --i) if (obj->get_repaired_errors_count(vol_idxs[i]) == 0) vol_idxs.erase(vol_idxs.begin() + i); -#endif // FIX_THROUGH_NETFABB_ALWAYS +#endif // FIX_THROUGH_WINSDK_ALWAYS for (int vol_idx : vol_idxs) model_names.push_back(obj->volumes[vol_idx]->name); } @@ -4707,19 +4633,19 @@ void ObjectList::fix_through_netfabb() return true; }; - Plater::TakeSnapshot snapshot(plater, _L("Fix through NetFabb")); + Plater::TakeSnapshot snapshot(plater, _L("Fix by Windows repair algorithm")); // Open a progress dialog. - wxProgressDialog progress_dlg(_L("Fixing through NetFabb"), "", 100, find_toplevel_parent(plater), + wxProgressDialog progress_dlg(_L("Fixing by Windows repair algorithm"), "", 100, find_toplevel_parent(plater), wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_CAN_ABORT); int model_idx{ 0 }; if (vol_idxs.empty()) { int vol_idx{ -1 }; for (int obj_idx : obj_idxs) { -#if !FIX_THROUGH_NETFABB_ALWAYS +#if !FIX_THROUGH_WINSDK_ALWAYS if (object(obj_idx)->get_repaired_errors_count(vol_idx) == 0) continue; -#endif // FIX_THROUGH_NETFABB_ALWAYS +#endif // FIX_THROUGH_WINSDK_ALWAYS if (!fix_and_update_progress(obj_idx, vol_idx, model_idx, progress_dlg, succes_models, failed_models)) break; model_idx++; @@ -4752,7 +4678,7 @@ void ObjectList::fix_through_netfabb() } if (msg.IsEmpty()) msg = _L("Repairing was canceled"); - plater->get_notification_manager()->push_notification(NotificationType::NetfabbFinished, NotificationManager::NotificationLevel::PrintInfoShortNotificationLevel, boost::nowide::narrow(msg)); + plater->get_notification_manager()->push_notification(NotificationType::RepairFinished, NotificationManager::NotificationLevel::PrintInfoShortNotificationLevel, boost::nowide::narrow(msg)); } void ObjectList::simplify() diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index d2965c7..e86d16f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -27,7 +27,6 @@ class ModelConfig; class ModelObject; class ModelVolume; class TriangleMesh; -struct TextConfiguration; enum class ModelVolumeType : int; // FIXME: broken build on mac os because of this is missing: @@ -38,7 +37,7 @@ typedef std::pair t_layer_height_range; typedef std::map t_layer_config_ranges; // Manifold mesh may contain self-intersections, so we want to always allow fixing the mesh. -#define FIX_THROUGH_NETFABB_ALWAYS 1 +#define FIX_THROUGH_WINSDK_ALWAYS 1 namespace GUI { @@ -251,15 +250,12 @@ public: bool is_instance_or_object_selected(); bool is_selected_object_cut(); void load_subobject(ModelVolumeType type, bool from_galery = false); - // ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common - //void load_part(ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery = false); - void load_modifier(const wxArrayString& input_files, ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery = false); + void load_from_files(const wxArrayString& input_files, ModelObject& model_object, std::vector& added_volumes, ModelVolumeType type, bool from_galery = false); void load_generic_subobject(const std::string& type_name, const ModelVolumeType type); void load_shape_object(const std::string &type_name); void load_shape_object_from_gallery(); void load_shape_object_from_gallery(const wxArrayString& input_files); - void load_mesh_object(const TriangleMesh &mesh, const std::string &name, bool center = true, - const TextConfiguration* text_config = nullptr, const Transform3d* transformation = nullptr); + void load_mesh_object(const TriangleMesh &mesh, const std::string &name, bool center = true); bool del_object(const int obj_idx); bool del_subobject_item(wxDataViewItem& item); void del_settings_from_config(const wxDataViewItem& parent_item); @@ -385,7 +381,7 @@ public: void instances_to_separated_objects(const int obj_idx); void split_instances(); void rename_item(); - void fix_through_netfabb(); + void fix_through_winsdk(); void simplify(); void update_item_error_icon(const int obj_idx, int vol_idx) const ; diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 8cd146d..20b36fc 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -21,6 +21,7 @@ #include #include "slic3r/Utils/FixModelByWin10.hpp" +#include "Widgets/CheckBox.hpp" // For special mirroring in manipulation gizmo #include "Gizmos/GLGizmosManager.hpp" #include "Gizmos/GLGizmoEmboss.hpp" @@ -73,7 +74,7 @@ static choice_ctrl* create_word_local_combo(wxWindow *parent) wxSize size(15 * wxGetApp().em_unit(), -1); choice_ctrl* temp = nullptr; -#ifdef __WXOSX__ +#if 0//def __WXOSX__ /* wxBitmapComboBox with wxCB_READONLY style return NULL for GetTextCtrl(), * so ToolTip doesn't shown. * Next workaround helps to solve this problem @@ -82,7 +83,7 @@ static choice_ctrl* create_word_local_combo(wxWindow *parent) temp->SetTextCtrlStyle(wxTE_READONLY); temp->Create(parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr); #else - temp = new choice_ctrl(parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY | wxBORDER_SIMPLE); + temp = new choice_ctrl(parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY | DD_NO_CHECK_ICON); #endif //__WXOSX__ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -133,7 +134,7 @@ void msw_rescale_word_local_combo(choice_ctrl* combo) static void set_font_and_background_style(wxWindow* win, const wxFont& font) { win->SetFont(font); - win->SetBackgroundStyle(wxBG_STYLE_PAINT); + if (!wxOSX) win->SetBackgroundStyle(wxBG_STYLE_PAINT); } static const wxString axes_color_text[] = { "#990000", "#009900", "#000099" }; @@ -158,19 +159,19 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : // Add "Name" label with warning icon auto sizer = new wxBoxSizer(wxHORIZONTAL); - m_fix_throught_netfab_bitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap); + m_fix_by_winsdk_bitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap); if (is_windows10()) - m_fix_throught_netfab_bitmap->Bind(wxEVT_CONTEXT_MENU, [this](wxCommandEvent& e) + m_fix_by_winsdk_bitmap->Bind(wxEVT_CONTEXT_MENU, [this](wxCommandEvent& e) { // if object/sub-object has no errors - if (m_fix_throught_netfab_bitmap->GetBitmap().GetRefData() == wxNullBitmap.GetRefData()) + if (m_fix_by_winsdk_bitmap->GetBitmap().GetRefData() == wxNullBitmap.GetRefData()) return; - wxGetApp().obj_list()->fix_through_netfabb(); + wxGetApp().obj_list()->fix_through_winsdk(); update_warning_icon_state(wxGetApp().obj_list()->get_mesh_errors_info()); }); - sizer->Add(m_fix_throught_netfab_bitmap); + sizer->Add(m_fix_by_winsdk_bitmap); auto name_label = new wxStaticText(m_parent, wxID_ANY, _L("Name")+":"); set_font_and_background_style(name_label, wxGetApp().normal_font()); @@ -491,16 +492,16 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : }); m_main_grid_sizer->Add(m_reset_skew_button); - m_check_inch = new wxCheckBox(parent, wxID_ANY, _L("Inches")); + m_check_inch = CheckBox::GetNewWin(parent, _L("Inches")); m_check_inch->SetFont(wxGetApp().normal_font()); - m_check_inch->SetValue(m_imperial_units); + CheckBox::SetValue(m_check_inch, m_imperial_units); m_check_inch->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { - wxGetApp().app_config->set("use_inches", m_check_inch->GetValue() ? "1" : "0"); + wxGetApp().app_config->set("use_inches", CheckBox::GetValue(m_check_inch) ? "1" : "0"); wxGetApp().sidebar().update_ui_from_settings(); }); - m_main_grid_sizer->Add(m_check_inch, 1, wxEXPAND); + m_main_grid_sizer->Add(m_check_inch); m_og->activate(); m_og->sizer->Clear(true); @@ -529,7 +530,7 @@ void ObjectManipulation::Show(const bool show) const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); bool show_world_local_combo = wxGetApp().get_mode() != comSimple && (selection.is_single_full_instance() || selection.is_single_volume_or_modifier()); if (selection.is_single_volume_or_modifier() && m_word_local_combo->GetCount() < 3) { -#ifdef __linux__ +#if 0//def __linux__ m_word_local_combo->Insert(coordinate_type_str(ECoordinatesType::Local), 2); #else m_word_local_combo->Insert(coordinate_type_str(ECoordinatesType::Local), wxNullBitmap, 2); @@ -611,7 +612,7 @@ void ObjectManipulation::update_ui_from_settings() update(3/*meSize*/, m_new_size); } } - m_check_inch->SetValue(m_imperial_units); + CheckBox::SetValue(m_check_inch, m_imperial_units); if (m_use_colors != wxGetApp().app_config->get_bool("color_mapinulation_panel")) { m_use_colors = wxGetApp().app_config->get_bool("color_mapinulation_panel"); @@ -891,9 +892,9 @@ void ObjectManipulation::update_warning_icon_state(const MeshErrorsInfo& warning !warning_icon_name.empty()) m_manifold_warning_bmp = ScalableBitmap(m_parent, warning_icon_name); const wxString& tooltip = warning.tooltip; - m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); - m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0,0) : m_manifold_warning_bmp.GetSize()); - m_fix_throught_netfab_bitmap->SetToolTip(tooltip); + m_fix_by_winsdk_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); + m_fix_by_winsdk_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0,0) : m_manifold_warning_bmp.GetSize()); + m_fix_by_winsdk_bitmap->SetToolTip(tooltip); } wxString ObjectManipulation::coordinate_type_str(ECoordinatesType type) @@ -1168,9 +1169,9 @@ void ObjectManipulation::msw_rescale() msw_rescale_word_local_combo(m_word_local_combo); m_word_local_combo_sizer->SetMinSize(wxSize(-1, m_word_local_combo->GetBestHeight(-1))); - const wxString& tooltip = m_fix_throught_netfab_bitmap->GetToolTipText(); - m_fix_throught_netfab_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); - m_fix_throught_netfab_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0, 0) : m_manifold_warning_bmp.GetSize()); + const wxString& tooltip = m_fix_by_winsdk_bitmap->GetToolTipText(); + m_fix_by_winsdk_bitmap->SetBitmap(tooltip.IsEmpty() ? wxNullBitmap : m_manifold_warning_bmp.bmp()); + m_fix_by_winsdk_bitmap->SetMinSize(tooltip.IsEmpty() ? wxSize(0, 0) : m_manifold_warning_bmp.GetSize()); // rescale label-heights // Text trick to grid sizer layout: @@ -1196,6 +1197,7 @@ void ObjectManipulation::sys_color_changed() wxGetApp().UpdateDarkUI(m_word_local_combo); wxGetApp().UpdateDarkUI(m_check_inch); #endif + CheckBox::SysColorChanged(m_check_inch); for (ManipulationEditor* editor : m_editors) editor->sys_color_changed(this); @@ -1224,19 +1226,12 @@ static const char axes[] = { 'x', 'y', 'z' }; ManipulationEditor::ManipulationEditor(ObjectManipulation* parent, const std::string& opt_key, int axis) : - wxTextCtrl(parent->parent(), wxID_ANY, wxEmptyString, wxDefaultPosition, - wxSize((wxOSX ? 5 : 6)*int(wxGetApp().em_unit()), wxDefaultCoord), wxTE_PROCESS_ENTER -#ifdef _WIN32 - | wxBORDER_SIMPLE -#endif - ), + ::TextInput(parent->parent(), "", "", "", wxDefaultPosition, + wxSize(int(5.8 * wxGetApp().em_unit()), wxDefaultCoord), wxTE_PROCESS_ENTER), m_opt_key(opt_key), m_axis(axis) { set_font_and_background_style(this, wxGetApp().normal_font()); -#ifdef __WXOSX__ - this->OSXDisableAllSmartSubstitutions(); -#endif // __WXOSX__ if (parent->use_colors()) { this->SetBackgroundColour(wxColour(axes_color_back[axis])); this->SetForegroundColour(*wxBLACK); @@ -1266,14 +1261,14 @@ ManipulationEditor::ManipulationEditor(ObjectManipulation* parent, e.Skip(); }, this->GetId()); - this->Bind(wxEVT_SET_FOCUS, [this, parent](wxFocusEvent& e) + this->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [this, parent](wxFocusEvent& e) { parent->set_focused_editor(this); // needed to show the visual hints in 3D scene wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event(m_full_opt_name, true); e.Skip(); - }, this->GetId()); + }); this->Bind(wxEVT_CHAR, ([this](wxKeyEvent& event) { @@ -1292,8 +1287,7 @@ ManipulationEditor::ManipulationEditor(ObjectManipulation* parent, void ManipulationEditor::msw_rescale() { - const int em = wxGetApp().em_unit(); - SetMinSize(wxSize(5 * em, wxDefaultCoord)); + SetCtrlSize(wxSize(int(5.8 * wxGetApp().em_unit()), wxDefaultCoord)); } void ManipulationEditor::sys_color_changed(ObjectManipulation* parent) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp index 6b5dfe5..43b07f4 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp @@ -9,6 +9,8 @@ #include "libslic3r/Point.hpp" #include +#include "Widgets/ComboBox.hpp" +#include "Widgets/TextInput.hpp" #ifdef __WXOSX__ class wxBitmapComboBox; #else @@ -17,7 +19,6 @@ class wxComboBox; class wxStaticText; class LockButton; class wxStaticBitmap; -class wxCheckBox; namespace Slic3r { namespace GUI { @@ -26,6 +27,9 @@ namespace GUI { class BitmapComboBox; #endif +#if 1 + using choice_ctrl = ::ComboBox; +#else #ifdef __WXOSX__ static_assert(wxMAJOR_VERSION >= 3, "Use of wxBitmapComboBox on Manipulation panel requires wxWidgets 3.0 and newer"); using choice_ctrl = wxBitmapComboBox; @@ -36,11 +40,12 @@ class BitmapComboBox; using choice_ctrl = wxComboBox; #endif #endif // __WXOSX__ +#endif class Selection; class ObjectManipulation; -class ManipulationEditor : public wxTextCtrl +class ManipulationEditor : public ::TextInput { std::string m_opt_key; int m_axis; @@ -124,7 +129,7 @@ private: ScalableButton* m_reset_skew_button{ nullptr }; ScalableButton* m_drop_to_bed_button{ nullptr }; - wxCheckBox* m_check_inch {nullptr}; + wxWindow* m_check_inch {nullptr}; std::array m_mirror_buttons; @@ -148,7 +153,7 @@ private: choice_ctrl* m_word_local_combo { nullptr }; ScalableBitmap m_manifold_warning_bmp; - wxStaticBitmap* m_fix_throught_netfab_bitmap{ nullptr }; + wxStaticBitmap* m_fix_by_winsdk_bitmap{ nullptr }; wxStaticBitmap* m_mirror_warning_bitmap{ nullptr }; // Currently focused editor (nullptr if none) diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index fad4703..1c35e6b 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -1,5 +1,6 @@ #include "GUI_Utils.hpp" #include "GUI_App.hpp" +#include "format.hpp" #include #include @@ -300,8 +301,10 @@ TaskTimer::~TaskTimer() { std::chrono::milliseconds stop_timer = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()); - auto process_duration = std::chrono::milliseconds(stop_timer - start_timer).count(); - std::string out = (boost::format("\n!!! %1% duration = %2% ms \n\n") % task_name % process_duration).str(); + const auto timer_delta = stop_timer - start_timer; + const auto process_duration_ms = std::chrono::milliseconds(timer_delta).count(); + const auto process_duration_s = std::chrono::duration_cast>(timer_delta).count(); + std::string out = format("\n! \"%1%\" duration = %2% s (%3% ms) \n", task_name, process_duration_s, process_duration_ms); printf("%s", out.c_str()); #ifdef __WXMSW__ std::wstring stemp = std::wstring(out.begin(), out.end()); diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index 624e7e1..0022d97 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -92,13 +92,13 @@ public: if (font_point_size > 0) m_normal_font.SetPointSize(font_point_size); + else if (parent) + m_normal_font.SetPointSize(parent->GetFont().GetPointSize()); /* Because of default window font is a primary display font, * We should set correct font for window before getting em_unit value. */ -#ifndef __WXOSX__ // Don't call SetFont under OSX to avoid name cutting in ObjectList this->SetFont(m_normal_font); -#endif this->CenterOnParent(); #ifdef _WIN32 update_dark_ui(this); @@ -107,7 +107,13 @@ public: // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3). // So, calculate the m_em_unit value from the font size, as before #if !defined(__WXGTK__) - m_em_unit = std::max(10, 10.0f * m_scale_factor); +#ifdef _WIN32 + const double font_to_em_koef = 10./9.;// Default font point size on Windows is 9 pt +#else // ifdef __WXOSX__ + const double font_to_em_koef = 10./11.;// Default font point size on OSX is 11 pt +#endif + m_em_unit_from_font_size = int(font_to_em_koef * m_normal_font.GetPointSize()); + m_em_unit = std::max(10, int(m_scale_factor * m_em_unit_from_font_size)); #else // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window. m_em_unit = std::max(10, this->GetTextExtent("m").x - 1); @@ -174,7 +180,6 @@ public: float prev_scale_factor() const { return m_prev_scale_factor; } int em_unit() const { return m_em_unit; } -// int font_size() const { return m_font_size; } const wxFont& normal_font() const { return m_normal_font; } void enable_force_rescale() { m_force_rescale = true; } @@ -193,7 +198,7 @@ protected: private: float m_scale_factor; int m_em_unit; -// int m_font_size; + int m_em_unit_from_font_size {10}; wxFont m_normal_font; float m_prev_scale_factor; @@ -202,13 +207,6 @@ private: int m_new_font_point_size; -// void recalc_font() -// { -// wxClientDC dc(this); -// const auto metrics = dc.GetFontMetrics(); -// m_font_size = metrics.height; -// m_em_unit = metrics.averageWidth; -// } // check if new scale is differ from previous bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; } @@ -250,7 +248,7 @@ private: m_normal_font = this->GetFont(); // update em_unit value for new window font - m_em_unit = std::max(10, 10.0f * m_scale_factor); + m_em_unit = std::max(10, int(m_scale_factor * m_em_unit_from_font_size)); // rescale missed controls sizes and images on_dpi_changed(suggested_rect); diff --git a/src/slic3r/GUI/GalleryDialog.cpp b/src/slic3r/GUI/GalleryDialog.cpp index 5ac51d5..91b0b24 100644 --- a/src/slic3r/GUI/GalleryDialog.cpp +++ b/src/slic3r/GUI/GalleryDialog.cpp @@ -94,10 +94,12 @@ GalleryDialog::GalleryDialog(wxWindow* parent) : #endif wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK | wxCLOSE); - m_ok_btn = static_cast(FindWindowById(wxID_OK, this)); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); + m_ok_btn = buttons->GetAffirmativeButton(); + wxGetApp().SetWindowVariantForButton(m_ok_btn); m_ok_btn->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(!m_selected_items.empty()); }); - static_cast(FindWindowById(wxID_CLOSE, this))->Bind(wxEVT_BUTTON, [this](wxCommandEvent&){ this->EndModal(wxID_CLOSE); }); + buttons->GetCancelButton()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&){ this->EndModal(wxID_CLOSE); }); this->SetEscapeId(wxID_CLOSE); auto add_btn = [this, buttons]( size_t pos, int& ID, wxString title, wxString tooltip, void (GalleryDialog::* method)(wxEvent&), @@ -105,6 +107,7 @@ GalleryDialog::GalleryDialog(wxWindow* parent) : ID = NewControlId(); wxButton* btn = new wxButton(this, ID, title); btn->SetToolTip(tooltip); + wxGetApp().SetWindowVariantForButton(btn); btn->Bind(wxEVT_UPDATE_UI, [enable_fn](wxUpdateUIEvent& evt) { evt.Enable(enable_fn()); }); buttons->Insert(pos, btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, BORDER_W); this->Bind(wxEVT_BUTTON, method, this, ID); @@ -410,8 +413,7 @@ void GalleryDialog::load_label_icon_list() int img_cnt = m_image_list->GetImageCount(); for (int i = 0; i < img_cnt; i++) { m_list_ctrl->InsertItem(i, from_u8(list_items[i].name), i); - if (list_items[i].is_system) - m_list_ctrl->SetItemFont(i, wxGetApp().bold_font()); + m_list_ctrl->SetItemData(i, list_items[i].is_system ? 1 : 0); } } @@ -510,7 +512,7 @@ void GalleryDialog::change_thumbnail() void GalleryDialog::select(wxListEvent& event) { int idx = event.GetIndex(); - Item item { into_u8(m_list_ctrl->GetItemText(idx)), m_list_ctrl->GetItemFont(idx).GetWeight() == wxFONTWEIGHT_BOLD }; + Item item { into_u8(m_list_ctrl->GetItemText(idx)), m_list_ctrl->GetItemData(idx) == static_cast(1)}; m_selected_items.push_back(item); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 21795ae..2a44c7b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -228,6 +228,7 @@ GLGizmoCut3D::GLGizmoCut3D(GLCanvas3D& parent, const std::string& icon_filename, {"Shape" , _u8L("Shape")}, {"Depth" , _u8L("Depth")}, {"Size" , _u8L("Size")}, + {"Rotation" , _u8L("Rotation")}, {"Groove" , _u8L("Groove")}, {"Width" , _u8L("Width")}, {"Flap Angle" , _u8L("Flap Angle")}, @@ -559,10 +560,10 @@ bool GLGizmoCut3D::render_double_input(const std::string& label, double& value_i bool GLGizmoCut3D::render_slider_double_input(const std::string& label, float& value_in, float& tolerance_in, float min_val/* = -0.1f*/, float max_tolerance/* = -0.1f*/) { - constexpr float UndefMinVal = -0.1f; + static constexpr const float UndefMinVal = -0.1f; const float f_mm_to_in = static_cast(ObjectManipulation::mm_to_in); - auto render_slider = [this, UndefMinVal, f_mm_to_in] + auto render_slider = [this, f_mm_to_in] (const std::string& label, float& val, float def_val, float max_val, const wxString& tooltip) { float min_val = val < 0.f ? UndefMinVal : def_val; float value = val; @@ -2326,6 +2327,10 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors) connectors[idx].radius_tolerance = 0.5f * m_connector_size_tolerance; }); + if (render_angle_input(m_labels_map["Rotation"], m_connector_angle, 0.f, 0.f, 180.f)) + apply_selected_connectors([this, &connectors](size_t idx) { + connectors[idx].z_angle = m_connector_angle; + }); if (m_connector_type == CutConnectorType::Snap) { render_snap_specific_input(_u8L("Bulge"), _L("Bulge proportion related to radius"), m_snap_bulge_proportion, 0.15f, 5.f, 100.f * m_snap_space_proportion); render_snap_specific_input(_u8L("Space"), _L("Space proportion related to radius"), m_snap_space_proportion, 0.3f, 10.f, 50.f); @@ -2535,7 +2540,7 @@ void GLGizmoCut3D::render_groove_float_input(const std::string& label, float& in } } -void GLGizmoCut3D::render_groove_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val) +bool GLGizmoCut3D::render_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val) { bool is_changed{ false }; @@ -2548,13 +2553,15 @@ void GLGizmoCut3D::render_groove_angle_input(const std::string& label, float& in const float old_val = val; const std::string format = "%.0f " + _u8L("°"); - m_imgui->slider_float(("##groove_" + label).c_str(), &val, min_val, max_val, format.c_str(), 1.f, true, from_u8(label)); + m_imgui->slider_float(("##angle_" + label).c_str(), &val, min_val, max_val, format.c_str(), 1.f, true, from_u8(label)); m_is_slider_editing_done |= m_imgui->get_last_slider_status().deactivated_after_edit; if (!is_approx(old_val, val)) { if (m_imgui->get_last_slider_status().can_take_snapshot) { - Plater::TakeSnapshot snapshot(wxGetApp().plater(), format_wxstr("%1%: %2%", _L("Groove change"), label), UndoRedo::SnapshotType::GizmoAction); + // TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. + Plater::TakeSnapshot snapshot(wxGetApp().plater(), format_wxstr("%1%: %2%", _L("Edited"), label), UndoRedo::SnapshotType::GizmoAction); m_imgui->get_last_slider_status().invalidate_snapshot(); + if (m_mode == size_t(CutMode::cutTongueAndGroove)) m_groove_editing = true; } in_val = deg2rad(val); @@ -2565,14 +2572,19 @@ void GLGizmoCut3D::render_groove_angle_input(const std::string& label, float& in m_imgui->disabled_begin(is_approx(in_val, init_val)); const std::string act_name = _u8L("Reset"); - if (render_reset_button(("##groove_" + label + act_name).c_str(), act_name)) { + if (render_reset_button(("##angle_" + label + act_name).c_str(), act_name)) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), format_wxstr("%1%: %2%", act_name, label), UndoRedo::SnapshotType::GizmoAction); in_val = init_val; is_changed = true; } m_imgui->disabled_end(); - if (is_changed) { + return is_changed; +} + +void GLGizmoCut3D::render_groove_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val) +{ + if (render_angle_input(label, in_val, init_val, min_val, max_val)) { update_plane_model(); reset_cut_by_contours(); } @@ -2790,6 +2802,8 @@ void GLGizmoCut3D::validate_connector_settings() m_connector_size = 2.5f; if (m_connector_size_tolerance < 0.f) m_connector_size_tolerance = 0.f; + if (m_connector_angle < 0.f || m_connector_angle > float(PI) ) + m_connector_angle = 0.f; if (m_connector_type == CutConnectorType::Undef) m_connector_type = CutConnectorType::Plug; @@ -2809,6 +2823,7 @@ void GLGizmoCut3D::init_input_window_data(CutConnectors &connectors) float depth_ratio_tolerance { UndefFloat }; float radius { UndefFloat }; float radius_tolerance { UndefFloat }; + float angle { UndefFloat }; CutConnectorType type { CutConnectorType::Undef }; CutConnectorStyle style { CutConnectorStyle::Undef }; CutConnectorShape shape { CutConnectorShape::Undef }; @@ -2822,6 +2837,7 @@ void GLGizmoCut3D::init_input_window_data(CutConnectors &connectors) depth_ratio_tolerance = connector.height_tolerance; radius = connector.radius; radius_tolerance = connector.radius_tolerance; + angle = connector.z_angle; type = connector.attribs.type; style = connector.attribs.style; shape = connector.attribs.shape; @@ -2839,6 +2855,8 @@ void GLGizmoCut3D::init_input_window_data(CutConnectors &connectors) radius = UndefFloat; if (!is_approx(radius_tolerance, connector.radius_tolerance)) radius_tolerance = UndefFloat; + if (!is_approx(angle, connector.z_angle)) + angle = UndefFloat; if (type != connector.attribs.type) type = CutConnectorType::Undef; @@ -2854,6 +2872,7 @@ void GLGizmoCut3D::init_input_window_data(CutConnectors &connectors) m_connector_size = 2.f * radius; m_connector_size_tolerance = 2.f * radius_tolerance; m_connector_type = type; + m_connector_angle = angle; m_connector_style = int(style); m_connector_shape_id = int(shape); } @@ -3020,7 +3039,7 @@ void GLGizmoCut3D::toggle_model_objects_visibility() { bool has_active_volume = false; std::vector>* raycasters = m_parent.get_raycasters_for_picking(SceneRaycaster::EType::Volume); - for (const auto raycaster : *raycasters) + for (const std::shared_ptr &raycaster : *raycasters) if (raycaster->is_active()) { has_active_volume = true; break; @@ -3106,6 +3125,7 @@ void GLGizmoCut3D::render_connectors() pos += 0.05 * m_clp_normal; const Transform3d view_model_matrix = camera.get_view_matrix() * translation_transform(pos) * m_rotation_m * + rotation_transform(-connector.z_angle * Vec3d::UnitZ()) * scale_transform(Vec3f(connector.radius, connector.radius, height).cast()); render_model(m_shapes[connector.attribs].model, render_color, view_model_matrix); @@ -3232,6 +3252,31 @@ void update_object_cut_id(CutObjectBase& cut_id, ModelObjectCutAttributes attrib } } +static void check_objects_after_cut(const ModelObjectPtrs& objects) +{ + std::vector err_objects_names; + for (const ModelObject* object : objects) { + std::vector connectors_names; + connectors_names.reserve(object->volumes.size()); + for (const ModelVolume* vol : object->volumes) + if (vol->cut_info.is_connector) + connectors_names.push_back(vol->name); + const size_t connectors_count = connectors_names.size(); + sort_remove_duplicates(connectors_names); + if (connectors_count != connectors_names.size()) + err_objects_names.push_back(object->name); + } + if (err_objects_names.empty()) + return; + + wxString names = from_u8(err_objects_names[0]); + for (size_t i = 1; i < err_objects_names.size(); i++) + names += ", " + from_u8(err_objects_names[i]); + WarningDialog(wxGetApp().plater(), format_wxstr("Objects(%1%) have duplicated connectors. " + "Some connectors may be missing in slicing result.\n" + "Please report to PrusaSlicer team in which scenario this issue happened.\n" + "Thank you.", names)).ShowModal(); +} void synchronize_model_after_cut(Model& model, const CutObjectBase& cut_id) { for (ModelObject* obj : model.objects) @@ -3296,6 +3341,7 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) const ModelObjectPtrs& new_objects = cut_by_contour ? cut.perform_by_contour(m_part_selection.get_cut_parts(), dowels_count): cut_with_groove ? cut.perform_with_groove(m_groove, m_rotation_m) : cut.perform_with_plane(); + check_objects_after_cut(new_objects); // save cut_id to post update synchronization const CutObjectBase cut_id = cut_mo->cut_id; @@ -3508,6 +3554,7 @@ bool GLGizmoCut3D::add_connector(CutConnectors& connectors, const Vec2d& mouse_p connectors.emplace_back(pos, m_rotation_m, m_connector_size * 0.5f, m_connector_depth_ratio, m_connector_size_tolerance * 0.5f, m_connector_depth_ratio_tolerance, + m_connector_angle, CutConnectorAttributes( CutConnectorType(m_connector_type), CutConnectorStyle(m_connector_style), CutConnectorShape(m_connector_shape_id))); @@ -3732,6 +3779,7 @@ void GLGizmoCut3D::apply_cut_connectors(ModelObject* mo, const std::string& conn // Transform the new modifier to be aligned inside the instance new_volume->set_transformation(translation_transform(connector.pos) * connector.rotation_m * + rotation_transform(-connector.z_angle * Vec3d::UnitZ()) * scale_transform(Vec3f(connector.radius, connector.radius, connector.height).cast())); new_volume->cut_info = { connector.attribs.type, connector.radius_tolerance, connector.height_tolerance }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index 1fa0386..675eb06 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -135,6 +135,7 @@ class GLGizmoCut3D : public GLGizmoBase float m_connector_depth_ratio{ 3.f }; float m_connector_size{ 2.5f }; + float m_connector_angle{ 0.f }; float m_connector_depth_ratio_tolerance{ 0.1f }; float m_connector_size_tolerance{ 0.f }; @@ -303,6 +304,7 @@ protected: void render_color_marker(float size, const ImU32& color); void render_groove_float_input(const std::string &label, float &in_val, const float &init_val, float &in_tolerance); void render_groove_angle_input(const std::string &label, float &in_val, const float &init_val, float min_val, float max_val); + bool render_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val); void render_snap_specific_input(const std::string& label, const wxString& tooltip, float& in_val, const float& init_val, const float min_val, const float max_val); void render_cut_plane_input_window(CutConnectors &connectors); void init_input_window_data(CutConnectors &connectors); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index beecd80..cb31567 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -16,12 +16,9 @@ #include "slic3r/Utils/WxFontUtils.hpp" #include "slic3r/Utils/UndoRedo.hpp" -// TODO: remove include -#include "libslic3r/SVG.hpp" // debug store -#include "libslic3r/Geometry.hpp" // covex hull 2d +#include "libslic3r/Geometry.hpp" // to range pi pi #include "libslic3r/Timer.hpp" -#include "libslic3r/NSVGUtils.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/ClipperUtils.hpp" // union_ex @@ -30,15 +27,24 @@ #include "libslic3r/BuildVolume.hpp" #include "imgui/imgui_stdlib.h" // using std::string for inputs -#include "nanosvg/nanosvg.h" // load SVG file #include #include #include #include #include // detection of change DPI +#include #include +#include // serialize deserialize facenames +#include +#include + +// cache font list by cereal +#include +#include +#include +#include #include #include // measure enumeration of fonts @@ -57,7 +63,6 @@ #define SHOW_FINE_POSITION // draw convex hull around volume #define DRAW_PLACE_TO_ADD_TEXT // Interactive draw of window position #define ALLOW_OPEN_NEAR_VOLUME -#define EXECUTE_PROCESS_ON_MAIN_THREAD // debug execution on main thread #endif // ALLOW_DEBUG_MODE //#define USE_PIXEL_SIZE_IN_WX_FONT @@ -67,8 +72,7 @@ using namespace Slic3r::Emboss; using namespace Slic3r::GUI; using namespace Slic3r::GUI::Emboss; -namespace priv { -template struct MinMax { T min; T max;}; +namespace { template struct Limit { // Limitation for view slider range in GUI MinMax gui; @@ -79,7 +83,7 @@ template struct Limit { // Variable keep limits for variables static const struct Limits { - MinMax emboss{0.01f, 1e4f}; // in mm + MinMax emboss{0.01, 1e4}; // in mm MinMax size_in_mm{0.1f, 1000.f}; // in mm Limit boldness{{-200.f, 200.f}, {-2e4f, 2e4f}}; // in font points Limit skew{{-1.f, 1.f}, {-100.f, 100.f}}; // ration without unit @@ -88,59 +92,9 @@ static const struct Limits // distance text object from surface MinMax angle{-180.f, 180.f}; // in degrees - template - static bool apply(std::optional &val, const MinMax &limit) { - if (val.has_value()) - return apply(*val, limit); - return false; - } - template - static bool apply(T &val, const MinMax &limit) - { - if (val > limit.max) { - val = limit.max; - return true; - } - if (val < limit.min) { - val = limit.min; - return true; - } - return false; - } } limits; -// Define where is up vector on model -constexpr double up_limit = 0.9; - -// Normalize radian angle from -PI to PI -template void to_range_pi_pi(T& angle) -{ - if (angle > PI || angle < -PI) { - int count = static_cast(std::round(angle / (2 * PI))); - angle -= static_cast(count * 2 * PI); - } -} -} // namespace priv -using namespace priv; - -GLGizmoEmboss::GLGizmoEmboss(GLCanvas3D &parent) - : GLGizmoBase(parent, M_ICON_FILENAME, -2) - , m_volume(nullptr) - , m_is_unknown_font(false) - , m_rotate_gizmo(parent, GLGizmoRotate::Axis::Z) // grab id = 2 (Z axis) - , m_style_manager(m_imgui->get_glyph_ranges(), create_default_styles) - , m_job_cancel(nullptr) -{ - m_rotate_gizmo.set_group_id(0); - m_rotate_gizmo.set_force_local_coordinate(true); - // TODO: add suggestion to use https://fontawesome.com/ - // (copy & paste) unicode symbols from web - // paste HEX unicode into notepad move cursor after unicode press [alt] + [x] -} - -// Private namespace with helper function for create volume -namespace priv { /// /// Prepare data for emboss @@ -152,68 +106,35 @@ namespace priv { /// Define type of volume - side of surface(in / out) /// Cancel for previous job /// Base data for emboss text -static DataBase create_emboss_data_base(const std::string &text, +std::unique_ptr create_emboss_data_base( + const std::string& text, StyleManager &style_manager, TextLinesModel &text_lines, const Selection &selection, ModelVolumeType type, std::shared_ptr> &cancel); +CreateVolumeParams create_input(GLCanvas3D &canvas, const StyleManager::Style &style, RaycastManager &raycaster, ModelVolumeType volume_type); /// -/// Start job for add new volume to object with given transformation +/// Move window for edit emboss text near to embossed object +/// NOTE: embossed object must be selected /// -/// Define where to add -/// Volume transformation -/// Define text -/// Type of volume -static void start_create_volume_job(const ModelObject *object, - const Transform3d volume_trmat, - DataBase &emboss_data, - ModelVolumeType volume_type); +ImVec2 calc_fine_position(const Selection &selection, const ImVec2 &windows_size, const Size &canvas_size); -/// -/// Start job for add new volume on surface of object defined by screen coor -/// -/// Define params of text -/// Emboss / engrave -/// Mouse position which define position -/// Volume to find surface for create -/// Ability to ray cast to model -/// Per glyph transformation -/// Line height need font file/param> -/// Contain already used scene RayCasters -/// True when start creation, False when there is no hit surface by screen coor -static bool start_create_volume_on_surface_job(DataBase &emboss_data, - ModelVolumeType volume_type, - const Vec2d &screen_coor, - const GLVolume *gl_volume, - RaycastManager &raycaster, - TextLinesModel &text_lines, - /*const */ StyleManager &style_manager, - GLCanvas3D &canvas); +struct TextDataBase : public DataBase +{ + TextDataBase(DataBase &&parent, const FontFileWithCache &font_file, + TextConfiguration &&text_configuration, const EmbossProjection& projection); + // Create shape from text + font configuration + EmbossShape &create_shape() override; + void write(ModelVolume &volume) const override; -/// -/// Find volume in selected object with closest convex hull to screen center. -/// Return -/// -/// Define where to search for closest -/// Canvas center(dependent on camera settings) -/// Actual objects -/// OUT: coordinate of controid of closest volume -/// OUT: closest volume -static void find_closest_volume(const Selection &selection, - const Vec2d &screen_center, - const Camera &camera, - const ModelObjectPtrs &objects, - Vec2d *closest_center, - const GLVolume **closest_volume); - -/// -/// Start job for add object with text into scene -/// -/// Define params of text -/// Screen coordinat, where to create new object laying on bed -static void start_create_object_job(DataBase &emboss_data, const Vec2d &coor); +private: + // Keep pointer on Data of font (glyph shapes) + FontFileWithCache m_font_file; + // font item is not used for create object + TextConfiguration m_text_configuration; +}; // Loaded icons enum // Have to match order of files in function GLGizmoEmboss::init_icons() @@ -248,173 +169,174 @@ enum class IconState : unsigned { activable = 0, hovered /*1*/, disabled /*2*/ } // selector for icon by enum const IconManager::Icon &get_icon(const IconManager::VIcons& icons, IconType type, IconState state); // short call of Slic3r::GUI::button -static bool draw_button(const IconManager::VIcons& icons, IconType type, bool disable = false); +bool draw_button(const IconManager::VIcons& icons, IconType type, bool disable = false); -/// -/// Apply camera direction for emboss direction -/// -/// Define view vector -/// Containe Selected Model to modify -/// Keep same up vector -/// True when apply change otherwise false -static bool apply_camera_dir(const Camera &camera, GLCanvas3D &canvas, bool keep_up); +struct FaceName +{ + wxString wx_name; + std::string name_truncated = ""; + size_t texture_index = 0; + // State for generation of texture + // when start generate create share pointers + std::shared_ptr> cancel = nullptr; + // R/W only on main thread - finalize of job + std::shared_ptr is_created = nullptr; +}; -} // namespace priv +// Implementation of forwarded struct +// Keep sorted list of loadable face names +struct Facenames +{ + // flag to keep need of enumeration fonts from OS + // false .. wants new enumeration check by Hash + // true .. already enumerated(During opened combo box) + bool is_init = false; -namespace { + bool has_truncated_names = false; + + // data of can_load() faces + std::vector faces = {}; + // Sorter set of Non valid face names in OS + std::vector bad = {}; + + // Configuration of font encoding + static const wxFontEncoding encoding = wxFontEncoding::wxFONTENCODING_SYSTEM; + + // Identify if preview texture exists + GLuint texture_id = 0; + + // protection for open too much font files together + // Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load + // /usr/share/icons/Yaru/48x48/status/image-missing.png: Error opening file /usr/share/icons/Yaru/48x48/status/image-missing.png: Too + // many open files (g-io-error-quark, 31) This variable must exist until no CreateFontImageJob is running + unsigned int count_opened_font_files = 0; + + // Configuration for texture height + const int count_cached_textures = 32; + + // index for new generated texture index(must be lower than count_cached_textures) + size_t texture_index = 0; + + // hash created from enumerated font from OS + // check when new font was installed + size_t hash = 0; + + // filtration pattern + std::string search = ""; + std::vector hide; // result of filtration +}; + +bool store(const Facenames &facenames); +bool load(Facenames &facenames); +void init_face_names(Facenames &facenames); +void init_truncated_names(Facenames &face_names, float max_width); + +// This configs holds GUI layout size given by translated texts. +// etc. When language changes, GUI is recreated and this class constructed again, +// so the change takes effect. (info by GLGizmoFdmSupports.hpp) +struct GuiCfg +{ + // Detect invalid config values when change monitor DPI + double screen_scale; + float main_toolbar_height; + + // Zero means it is calculated in init function + ImVec2 minimal_window_size = ImVec2(0, 0); + ImVec2 minimal_window_size_with_advance = ImVec2(0, 0); + ImVec2 minimal_window_size_with_collections = ImVec2(0, 0); + float height_of_volume_type_selector = 0.f; + float input_width = 0.f; + float delete_pos_x = 0.f; + float max_style_name_width = 0.f; + unsigned int icon_width = 0; + + // maximal width and height of style image + Vec2i max_style_image_size = Vec2i(0, 0); + + float indent = 0.f; + float input_offset = 0.f; + float advanced_input_offset = 0.f; + float lock_offset = 0.f; + + ImVec2 text_size; + + // maximal size of face name image + Vec2i face_name_size = Vec2i(0, 0); + float face_name_texture_offset_x = 0.f; + + // maximal texture generate jobs running at once + unsigned int max_count_opened_font_files = 10; + + // Only translations needed for calc GUI size + struct Translations + { + std::string font; + std::string height; + std::string depth; + + // advanced + std::string use_surface; + std::string per_glyph; + std::string alignment; + std::string char_gap; + std::string line_gap; + std::string boldness; + std::string skew_ration; + std::string from_surface; + std::string rotation; + std::string keep_up; + std::string collection; + }; + Translations translations; +}; +GuiCfg create_gui_configuration(); + +void draw_font_preview(FaceName &face, const std::string &text, Facenames &faces, const GuiCfg &cfg, bool is_visible); // for existing volume which is selected(could init different(to volume text) lines count when edit text) void init_text_lines(TextLinesModel &text_lines, const Selection& selection, /* const*/ StyleManager &style_manager, unsigned count_lines=0); -// before text volume is created -void init_new_text_line(TextLinesModel &text_lines, const Transform3d& new_text_tr, const ModelObject& mo, /* const*/ StyleManager &style_manager); +} // namespace priv + +// use private definition +struct GLGizmoEmboss::Facenames: public ::Facenames{}; +struct GLGizmoEmboss::GuiCfg: public ::GuiCfg{}; + +GLGizmoEmboss::GLGizmoEmboss(GLCanvas3D &parent) + : GLGizmoBase(parent, M_ICON_FILENAME, -2) + , m_gui_cfg(nullptr) + , m_style_manager(m_imgui->get_glyph_ranges(), create_default_styles) + , m_face_names(std::make_unique()) + , m_rotate_gizmo(parent, GLGizmoRotate::Axis::Z) // grab id = 2 (Z axis) +{ + m_rotate_gizmo.set_group_id(0); + m_rotate_gizmo.set_force_local_coordinate(true); + // to use https://fontawesome.com/ (copy & paste) unicode symbols from web + // paste HEX unicode into notepad move cursor after unicode press [alt] + [x] } -//B34 -void GLGizmoEmboss::create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos, std::string str) +bool GLGizmoEmboss::create_volume(ModelVolumeType volume_type, const Vec2d& mouse_pos) { if (!init_create(volume_type)) - return; + return false; - // select position by camera position and view direction - const Selection &selection = m_parent.get_selection(); - int object_idx = selection.get_object_idx(); - - Size s = m_parent.get_canvas_size(); - - Vec2d screen_center(s.get_width() / 2., s.get_height() / 2.); - DataBase emboss_data = priv::create_emboss_data_base(str, m_style_manager, m_text_lines, m_parent.get_selection(), volume_type, - m_job_cancel); - - const ModelObjectPtrs &objects = selection.get_model()->objects; - bool is_simple_mode = wxGetApp().get_mode() == comSimple; - // No selected object so create new object - if (selection.is_empty() || object_idx < 0 || static_cast(object_idx) >= objects.size() || is_simple_mode) { - // create Object on center of screen - // when ray throw center of screen not hit bed it create object on center of bed - priv::start_create_object_job(emboss_data, screen_center); - return; - } - - // create volume inside of selected object - Vec2d coor; - const GLVolume *vol = nullptr; - const Camera & camera = wxGetApp().plater()->get_camera(); - priv::find_closest_volume(selection, screen_center, camera, objects, &coor, &vol); - - // there is no point on surface so no use of surface will be applied - FontProp &prop = emboss_data.text_configuration.style.prop; - if (prop.use_surface) - prop.use_surface = false; - - - Plater *plater = wxGetApp().plater(); - // Transformation is inspired add generic volumes in ObjectList::load_generic_subobject - const ModelObject *obj = objects[vol->object_idx()]; - BoundingBoxf3 instance_bb = obj->instance_bounding_box(vol->instance_idx()); - - size_t vol_id = obj->volumes[vol->volume_idx()]->id().id; - - auto cond = RaycastManager::AllowVolumes({vol_id}); - - RaycastManager::Meshes meshes = create_meshes(m_parent, cond); - m_raycast_manager.actualize(*obj, &cond, &meshes); - std::optional hit = ray_from_camera(m_raycast_manager, coor, camera, &cond); - - DynamicPrintConfig *print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; - double pa_first_layer_height = print_config->get_abs_value("first_layer_height"); - double pa_layer_height = print_config->get_abs_value("layer_height"); - Transform3d surface_trmat = create_transformation_onto_surface(Vec3d(mouse_pos.x(), mouse_pos.y(), pa_first_layer_height), - hit->normal, - priv::up_limit); - emboss_data.text_configuration.style.prop.emboss = pa_layer_height; - emboss_data.text_configuration.style.prop.size_in_mm = 7; - - const FontProp &font_prop = emboss_data.text_configuration.style.prop; - apply_transformation(font_prop, surface_trmat); - Transform3d instance = vol->get_instance_transformation().get_matrix(); - Transform3d volume_trmat = instance.inverse() * surface_trmat; - start_create_volume_job(obj, volume_trmat, emboss_data, volume_type); - -} - - -void GLGizmoEmboss::create_volume(ModelVolumeType volume_type, const Vec2d& mouse_pos) -{ - if (!init_create(volume_type)) - return; - - const GLVolume *gl_volume = get_first_hovered_gl_volume(m_parent); - DataBase emboss_data = priv::create_emboss_data_base(m_text, m_style_manager, m_text_lines, m_parent.get_selection(), volume_type, m_job_cancel); - bool is_simple_mode = wxGetApp().get_mode() == comSimple; - if (gl_volume != nullptr && !is_simple_mode) { - // Try to cast ray into scene and find object for add volume - if (!priv::start_create_volume_on_surface_job(emboss_data, volume_type, mouse_pos, gl_volume, m_raycast_manager, m_text_lines, m_style_manager, m_parent)) { - // When model is broken. It could appear that hit miss the object. - // So add part near by in simmilar manner as right panel do - create_volume(volume_type); - } - } else { - // object is not under mouse position soo create object on plater - priv::start_create_object_job(emboss_data, mouse_pos); - } + // NOTE: change style manager - be carefull with order changes + DataBasePtr base = create_emboss_data_base(m_text, m_style_manager, m_text_lines, m_parent.get_selection(), volume_type, m_job_cancel); + CreateVolumeParams input = create_input(m_parent, m_style_manager.get_style(), m_raycast_manager, volume_type); + return start_create_volume(input, std::move(base), mouse_pos); } // Designed for create volume without information of mouse in scene -void GLGizmoEmboss::create_volume(ModelVolumeType volume_type) +bool GLGizmoEmboss::create_volume(ModelVolumeType volume_type) { if (!init_create(volume_type)) - return; + return false; - // select position by camera position and view direction - const Selection &selection = m_parent.get_selection(); - int object_idx = selection.get_object_idx(); - - Size s = m_parent.get_canvas_size(); - Vec2d screen_center(s.get_width() / 2., s.get_height() / 2.); - DataBase emboss_data = priv::create_emboss_data_base(m_text, m_style_manager, m_text_lines, m_parent.get_selection(), volume_type, m_job_cancel); - const ModelObjectPtrs &objects = selection.get_model()->objects; - bool is_simple_mode = wxGetApp().get_mode() == comSimple; - // No selected object so create new object - if (selection.is_empty() || object_idx < 0 || static_cast(object_idx) >= objects.size() || is_simple_mode) { - // create Object on center of screen - // when ray throw center of screen not hit bed it create object on center of bed - priv::start_create_object_job(emboss_data, screen_center); - return; + // NOTE: change style manager - be carefull with order changes + DataBasePtr base = create_emboss_data_base(m_text, m_style_manager, m_text_lines, m_parent.get_selection(), volume_type, m_job_cancel); + CreateVolumeParams input = create_input(m_parent, m_style_manager.get_style(), m_raycast_manager, volume_type); + return start_create_volume_without_position(input, std::move(base)); } - // create volume inside of selected object - Vec2d coor; - const GLVolume *vol = nullptr; - const Camera &camera = wxGetApp().plater()->get_camera(); - priv::find_closest_volume(selection, screen_center, camera, objects, &coor, &vol); - if (vol == nullptr) { - priv::start_create_object_job(emboss_data, screen_center); - } else if (!priv::start_create_volume_on_surface_job(emboss_data, volume_type, coor, vol, m_raycast_manager, m_text_lines, m_style_manager, m_parent)) { - // in centroid of convex hull is not hit with object - // soo create transfomation on border of object - - // there is no point on surface so no use of surface will be applied - FontProp &prop = emboss_data.text_configuration.style.prop; - if (prop.use_surface) - prop.use_surface = false; - - // Transformation is inspired add generic volumes in ObjectList::load_generic_subobject - const ModelObject *obj = objects[vol->object_idx()]; - BoundingBoxf3 instance_bb = obj->instance_bounding_box(vol->instance_idx()); - // Translate the new modifier to be pickable: move to the left front corner of the instance's bounding box, lift to print bed. - Transform3d tr = vol->get_instance_transformation().get_matrix_no_offset().inverse(); - Vec3d offset_tr(0, // center of instance - Can't suggest width of text before it will be created - - instance_bb.size().y() / 2 - prop.size_in_mm / 2, // under - prop.emboss / 2 - instance_bb.size().z() / 2 // lay on bed - ); - Transform3d volume_trmat = tr * Eigen::Translation3d(offset_tr); - if (prop.per_glyph) { - init_new_text_line(m_text_lines, volume_trmat, *obj, m_style_manager); - emboss_data.text_lines = m_text_lines.get_lines(); - } - priv::start_create_volume_job(obj, volume_trmat, emboss_data, volume_type); - } -} void GLGizmoEmboss::on_shortcut_key() { set_volume_by_selection(); @@ -423,7 +345,8 @@ void GLGizmoEmboss::on_shortcut_key() { // NOTE: After finish job for creation emboss Text volume, // GLGizmoEmboss will be opened create_volume(ModelVolumeType::MODEL_PART); - } else { + } + else { // shortcut is pressed when text is selected soo start edit it. auto &mng = m_parent.get_gizmos_manager(); if (mng.get_current_type() != GLGizmosManager::Emboss) @@ -431,6 +354,30 @@ void GLGizmoEmboss::on_shortcut_key() { } } +bool GLGizmoEmboss::re_emboss(const ModelVolume &text_volume, std::shared_ptr> job_cancel) +{ + assert(text_volume.text_configuration.has_value()); + assert(text_volume.emboss_shape.has_value()); + if (!text_volume.text_configuration.has_value() || + !text_volume.emboss_shape.has_value()) + return false; // not valid text volume to re emboss + const TextConfiguration &tc = *text_volume.text_configuration; + const EmbossShape &es = *text_volume.emboss_shape; + const ImWchar* ranges = ImGui::GetIO().Fonts->GetGlyphRangesDefault(); + + StyleManager style_manager(ranges, create_default_styles); + StyleManager::Style style{tc.style, es.projection}; + if (!style_manager.load_style(style)) + return false; // can't load font + + TextLinesModel text_lines; + const Selection &selection = wxGetApp().plater()->canvas3D()->get_selection(); + DataBasePtr base = create_emboss_data_base(tc.text, style_manager, text_lines, selection, text_volume.type(), job_cancel); + DataUpdate data{std::move(base), text_volume.id()}; + + RaycastManager raycast_manager; // Nothing is cached now, so It need to create raycasters + return start_update_volume(std::move(data), text_volume, selection, raycast_manager); +} namespace{ ModelVolumePtrs prepare_volumes_to_slice(const ModelVolume &mv) { @@ -450,7 +397,7 @@ ModelVolumePtrs prepare_volumes_to_slice(const ModelVolume &mv) } return result; } -} +} // namespace bool GLGizmoEmboss::do_mirror(size_t axis) { @@ -464,30 +411,46 @@ bool GLGizmoEmboss::do_mirror(size_t axis) if (m_parent.get_gizmos_manager().get_current_type() != GLGizmosManager::Emboss) return false; - const TextConfiguration &tc= *m_volume->text_configuration; - if(tc.style.prop.per_glyph){ - // init textlines before mirroring on mirrored text volume transformation + const std::optional &tc = m_volume->text_configuration; + assert(tc.has_value()); + bool is_per_glyph = tc.has_value()? tc->style.prop.per_glyph : false; + + const std::optional &es = m_volume->emboss_shape; + assert(es.has_value()); + bool use_surface = es.has_value()? es->projection.use_surface : false; + if (!use_surface && !is_per_glyph) { + // do normal mirror with fix matrix + Selection &selection = m_parent.get_selection(); + selection.setup_cache(); + + auto selection_mirror_fnc = [&selection, &axis]() { selection.mirror((Axis) axis, get_drag_transformation_type(selection)); }; + selection_transform(selection, selection_mirror_fnc); + + m_parent.do_mirror(L("Set Mirror")); + wxGetApp().obj_manipul()->UpdateAndShow(true); + return true; + } + + Vec3d scale = Vec3d::Ones(); + scale[axis] = -1.; Transform3d tr = m_volume->get_matrix(); - const std::optional &fix_tr = tc.fix_3mf_tr; + if (es.has_value()) { + const std::optional &fix_tr = es->fix_3mf_tr; if (fix_tr.has_value()) tr = tr * (fix_tr->inverse()); + } // mirror - Vec3d scale = Vec3d::Ones(); - scale[axis] = -1.; tr = tr * Eigen::Scaling(scale); - // collect volumes in object + if (is_per_glyph) { + // init textlines before mirroring on mirrored text volume transformation ModelVolumePtrs volumes = prepare_volumes_to_slice(*m_volume); m_text_lines.init(tr, volumes, m_style_manager, m_text_lines.get_lines().size()); } - // mirror - Transform3d tr = m_volume->get_matrix(); - Vec3d scale = Vec3d::Ones(); - scale[axis] = -1.; - tr = tr * Eigen::Scaling(scale); m_volume->set_transformation(tr); + // setting to volume is not visible for user(not GLVolume) // NOTE: Staff around volume transformation change is done in job finish return process(); } @@ -528,15 +491,6 @@ bool GLGizmoEmboss::init_create(ModelVolumeType volume_type) return true; } -namespace { -TransformationType get_transformation_type(const Selection &selection) -{ - assert(selection.is_single_full_object() || selection.is_single_volume()); - return selection.is_single_volume() ? - TransformationType::Local_Relative_Joint : - TransformationType::Instance_Relative_Joint; // object -} -} // namespace bool GLGizmoEmboss::on_mouse_for_rotation(const wxMouseEvent &mouse_event) { @@ -546,34 +500,13 @@ bool GLGizmoEmboss::on_mouse_for_rotation(const wxMouseEvent &mouse_event) if (!m_dragging) return used; if (mouse_event.Dragging()) { - if (!m_rotate_start_angle.has_value()) { - // when m_rotate_start_angle is not set mean it is not Dragging - // when angle_opt is not set mean angle is Zero - const std::optional &angle_opt = m_style_manager.get_font_prop().angle; - m_rotate_start_angle = angle_opt.has_value() ? *angle_opt : 0.f; - } - - double angle = m_rotate_gizmo.get_angle(); - angle -= PI / 2; // Grabber is upward - - // temporary rotation - Selection& selection = m_parent.get_selection(); - selection.rotate(Vec3d(0., 0., angle), get_transformation_type(selection)); - - angle += *m_rotate_start_angle; - // move to range <-M_PI, M_PI> - priv::to_range_pi_pi(angle); - - // set into activ style + // check that style is activ assert(m_style_manager.is_active_font()); - if (m_style_manager.is_active_font()) { - std::optional angle_opt; - if (!is_approx(angle, 0.)) - angle_opt = angle; - m_style_manager.get_font_prop().angle = angle_opt; - } + if (!m_style_manager.is_active_font()) + return used; - volume_transformation_changing(); + std::optional &angle_opt = m_style_manager.get_style().angle; + dragging_rotate_gizmo(m_rotate_gizmo.get_angle(), angle_opt, m_rotate_start_angle, m_parent.get_selection()); } return used; } @@ -584,11 +517,9 @@ bool GLGizmoEmboss::on_mouse_for_translate(const wxMouseEvent &mouse_event) if (m_volume == nullptr) return false; - std::optional up_limit; - if (m_keep_up) up_limit = priv::up_limit; const Camera &camera = wxGetApp().plater()->get_camera(); bool was_dragging = m_surface_drag.has_value(); - bool res = on_mouse_surface_drag(mouse_event, camera, m_surface_drag, m_parent, m_raycast_manager, up_limit); + bool res = on_mouse_surface_drag(mouse_event, camera, m_surface_drag, m_parent, m_raycast_manager, UP_LIMIT); bool is_dragging = m_surface_drag.has_value(); // End with surface dragging? @@ -609,13 +540,14 @@ bool GLGizmoEmboss::on_mouse_for_translate(const wxMouseEvent &mouse_event) // Recalculate angle for GUI if (!m_keep_up) { - const GLVolume *gl_volume = get_selected_gl_volume(m_parent.get_selection()); + const Selection &selection = m_parent.get_selection(); + const GLVolume *gl_volume = get_selected_gl_volume(selection); assert(gl_volume != nullptr); assert(m_style_manager.is_active_font()); if (gl_volume == nullptr || !m_style_manager.is_active_font()) return res; - m_style_manager.get_font_prop().angle = calc_up(gl_volume->world_matrix(), priv::up_limit); + m_style_manager.get_style().angle = calc_angle(selection); } volume_transformation_changing(); @@ -732,23 +664,48 @@ void GLGizmoEmboss::volume_transformation_changing() void GLGizmoEmboss::volume_transformation_changed() { - if (m_volume == nullptr || !m_volume->text_configuration.has_value()) { + if (m_volume == nullptr || + !m_volume->text_configuration.has_value() || + !m_volume->emboss_shape.has_value() || + !m_style_manager.is_active_font()) { assert(false); return; } - const FontProp &prop = m_volume->text_configuration->style.prop; - if (prop.per_glyph) + if (!m_keep_up) { + // Re-Calculate current angle of up vector + m_style_manager.get_style().angle = calc_angle(m_parent.get_selection()); + } else { + // angle should be the same + assert(is_approx(m_style_manager.get_style().angle, calc_angle(m_parent.get_selection()))); + } + + const TextConfiguration &tc = *m_volume->text_configuration; + const EmbossShape &es = *m_volume->emboss_shape; + + bool per_glyph = tc.style.prop.per_glyph; + if (per_glyph) init_text_lines(m_text_lines, m_parent.get_selection(), m_style_manager, m_text_lines.get_lines().size()); + bool use_surface = es.projection.use_surface; // Update surface by new position - if (prop.use_surface || prop.per_glyph) + if (use_surface || per_glyph) process(); + else { + // inform slicing process that model changed + // SLA supports, processing + // ensure on bed + wxGetApp().plater()->changed_object(*m_volume->get_object()); + } // Show correct value of height & depth inside of inputs calculate_scale(); } +bool GLGizmoEmboss::wants_enter_leave_snapshots() const { return true; } +std::string GLGizmoEmboss::get_gizmo_entering_text() const { return _u8L("Enter emboss gizmo"); } +std::string GLGizmoEmboss::get_gizmo_leaving_text() const { return _u8L("Leave emboss gizmo"); } +std::string GLGizmoEmboss::get_action_snapshot_name() const { return _u8L("Embossing actions"); } bool GLGizmoEmboss::on_init() { m_rotate_gizmo.init(); @@ -770,10 +727,10 @@ std::string GLGizmoEmboss::on_get_name() const { return _u8L("Emboss"); } void GLGizmoEmboss::on_render() { // no volume selected - if (m_volume == nullptr || - get_model_volume(m_volume_id, m_parent.get_selection().get_model()->objects) == nullptr) - return; const Selection &selection = m_parent.get_selection(); + if (m_volume == nullptr || + get_model_volume(m_volume_id, selection.get_model()->objects) == nullptr) + return; if (selection.is_empty()) return; // prevent get local coordinate system on multi volumes @@ -785,7 +742,7 @@ void GLGizmoEmboss::on_render() { if (m_text_lines.is_init()) { const Transform3d& tr = gl_volume_ptr->world_matrix(); - const auto &fix = m_volume->text_configuration->fix_3mf_tr; + const auto &fix = m_volume->emboss_shape->fix_3mf_tr; if (fix.has_value()) m_text_lines.render(tr * fix->inverse()); else @@ -887,15 +844,16 @@ void GLGizmoEmboss::on_render_input_window(float x, float y, float bottom_limit) // Configuration creation double screen_scale = wxDisplay(wxGetApp().plater()).GetScaleFactor(); float main_toolbar_height = m_parent.get_main_toolbar_height(); - if (!m_gui_cfg.has_value() || // Exist configuration - first run + if (m_gui_cfg == nullptr || // Exist configuration - first run m_gui_cfg->screen_scale != screen_scale || // change of DPI m_gui_cfg->main_toolbar_height != main_toolbar_height // change size of view port ) { // Create cache for gui offsets - GuiCfg cfg = create_gui_configuration(); + ::GuiCfg cfg = create_gui_configuration(); cfg.screen_scale = screen_scale; cfg.main_toolbar_height = main_toolbar_height; - m_gui_cfg.emplace(std::move(cfg)); + GuiCfg gui_cfg{std::move(cfg)}; + m_gui_cfg = std::make_unique(std::move(gui_cfg)); // set position near toolbar m_set_window_offset = ImVec2(-1.f, -1.f); @@ -949,7 +907,7 @@ void GLGizmoEmboss::on_render_input_window(float x, float y, float bottom_limit) bool is_opened = true; ImGuiWindowFlags flag = ImGuiWindowFlags_NoCollapse; - if (ImGui::Begin(on_get_name().c_str(), &is_opened, flag)) { + if (ImGui::Begin(get_name().c_str(), &is_opened, flag)) { // Need to pop var before draw window ImGui::PopStyleVar(); // WindowMinSize draw_window(); @@ -969,20 +927,6 @@ void GLGizmoEmboss::on_render_input_window(float x, float y, float bottom_limit) close(); } -namespace priv { -/// -/// Move window for edit emboss text near to embossed object -/// NOTE: embossed object must be selected -/// -static ImVec2 calc_fine_position(const Selection &selection, const ImVec2 &windows_size, const Size &canvas_size); - -/// -/// Change position of emboss window -/// -/// -/// When True Only move to be full visible otherwise reset position -static void change_window_position(std::optional &output_window_offset, bool try_to_fix); -} // namespace priv void GLGizmoEmboss::on_set_state() { @@ -1010,17 +954,12 @@ void GLGizmoEmboss::on_set_state() // change position of just opened emboss window if (m_allow_open_near_volume) { - m_set_window_offset = priv::calc_fine_position(m_parent.get_selection(), get_minimal_window_size(), m_parent.get_canvas_size()); + m_set_window_offset = calc_fine_position(m_parent.get_selection(), get_minimal_window_size(), m_parent.get_canvas_size()); } else { - if (m_gui_cfg.has_value()) - priv::change_window_position(m_set_window_offset, false); - else - m_set_window_offset = ImVec2(-1, -1); + m_set_window_offset = (m_gui_cfg != nullptr) ? + ImGuiWrapper::change_window_position(on_get_name().c_str(), false) : ImVec2(-1, -1); } - // when open by hyperlink it needs to show up - // or after key 'T' windows doesn't appear - m_parent.set_as_dirty(); } } @@ -1035,7 +974,6 @@ void GLGizmoEmboss::on_stop_dragging() { m_rotate_gizmo.stop_dragging(); - // TODO: when start second rotatiton previous rotation rotate draggers // This is fast fix for second try to rotate // When fixing, move grabber above text (not on side) m_rotate_gizmo.set_angle(PI/2); @@ -1043,12 +981,6 @@ void GLGizmoEmboss::on_stop_dragging() // apply rotation m_parent.do_rotate(L("Text-Rotate")); - // Re-Calculate current angle of up vector - const GLVolume *gl_volume = get_selected_gl_volume(m_parent.get_selection()); - assert(m_style_manager.is_active_font()); - assert(gl_volume != nullptr); - if (m_style_manager.is_active_font() && gl_volume != nullptr) - m_style_manager.get_font_prop().angle = calc_up(gl_volume->world_matrix(), priv::up_limit); m_rotate_start_angle.reset(); @@ -1056,106 +988,6 @@ void GLGizmoEmboss::on_stop_dragging() } void GLGizmoEmboss::on_dragging(const UpdateData &data) { m_rotate_gizmo.dragging(data); } -GLGizmoEmboss::GuiCfg GLGizmoEmboss::create_gui_configuration() -{ - GuiCfg cfg; // initialize by default values; - - float line_height = ImGui::GetTextLineHeight(); - float line_height_with_spacing = ImGui::GetTextLineHeightWithSpacing(); - float space = line_height_with_spacing - line_height; - const ImGuiStyle &style = ImGui::GetStyle(); - - cfg.max_style_name_width = ImGui::CalcTextSize("Maximal font name, extended").x; - - cfg.icon_width = static_cast(std::ceil(line_height)); - // make size pair number - if (cfg.icon_width % 2 != 0) ++cfg.icon_width; - - cfg.delete_pos_x = cfg.max_style_name_width + space; - int count_line_of_text = 3; - cfg.text_size = ImVec2(-FLT_MIN, line_height_with_spacing * count_line_of_text); - ImVec2 letter_m_size = ImGui::CalcTextSize("M"); - int count_letter_M_in_input = 12; - cfg.input_width = letter_m_size.x * count_letter_M_in_input; - GuiCfg::Translations &tr = cfg.translations; - - tr.font = _u8L("Font"); - tr.height = _u8L("Height"); - tr.depth = _u8L("Depth"); - - float max_text_width = std::max({ - ImGui::CalcTextSize(tr.font.c_str()).x, - ImGui::CalcTextSize(tr.height.c_str()).x, - ImGui::CalcTextSize(tr.depth.c_str()).x}); - cfg.indent = static_cast(cfg.icon_width); - cfg.input_offset = style.WindowPadding.x + cfg.indent + max_text_width + space; - - tr.use_surface = _u8L("Use surface"); - tr.per_glyph = _u8L("Per glyph orientation"); - tr.alignment = _u8L("Alignment"); - tr.char_gap = _u8L("Char gap"); - tr.line_gap = _u8L("Line gap"); - tr.boldness = _u8L("Boldness"); - tr.skew_ration = _u8L("Skew ratio"); - tr.from_surface = _u8L("From surface"); - tr.rotation = _u8L("Rotation"); - tr.collection = _u8L("Collection"); - - float max_advanced_text_width = std::max({ - ImGui::CalcTextSize(tr.use_surface.c_str()).x, - ImGui::CalcTextSize(tr.per_glyph.c_str()).x, - ImGui::CalcTextSize(tr.alignment.c_str()).x, - ImGui::CalcTextSize(tr.char_gap.c_str()).x, - ImGui::CalcTextSize(tr.line_gap.c_str()).x, - ImGui::CalcTextSize(tr.boldness.c_str()).x, - ImGui::CalcTextSize(tr.skew_ration.c_str()).x, - ImGui::CalcTextSize(tr.from_surface.c_str()).x, - ImGui::CalcTextSize(tr.rotation.c_str()).x + cfg.icon_width + 2*space, - ImGui::CalcTextSize(tr.collection.c_str()).x }); - cfg.advanced_input_offset = max_advanced_text_width - + 3 * space + cfg.indent; - cfg.lock_offset = cfg.advanced_input_offset - (cfg.icon_width + space); - // calculate window size - float window_title = line_height + 2*style.FramePadding.y + 2 * style.WindowTitleAlign.y; - float input_height = line_height_with_spacing + 2*style.FramePadding.y; - float tree_header = line_height_with_spacing; - float separator_height = 1 + style.FramePadding.y; - - // "Text is to object" + radio buttons - cfg.height_of_volume_type_selector = separator_height + line_height_with_spacing + input_height; - - float window_height = - window_title + // window title - cfg.text_size.y + // text field - input_height * 4 + // font name + height + depth + style selector - tree_header + // advance tree - separator_height + // presets separator line - line_height_with_spacing + // "Presets" - 2 * style.WindowPadding.y; - float window_width = cfg.input_offset + cfg.input_width + 2*style.WindowPadding.x - + 2 * (cfg.icon_width + space); - cfg.minimal_window_size = ImVec2(window_width, window_height); - - // 8 = useSurface, per glyph, charGap, lineGap, bold, italic, surfDist, rotation, textFaceToCamera - // 4 = 1px for fix each edit image of drag float - float advance_height = input_height * 10 + 9; - cfg.minimal_window_size_with_advance = - ImVec2(cfg.minimal_window_size.x, - cfg.minimal_window_size.y + advance_height); - - cfg.minimal_window_size_with_collections = - ImVec2(cfg.minimal_window_size_with_advance.x, - cfg.minimal_window_size_with_advance.y + input_height); - - int max_style_image_width = cfg.max_style_name_width /2 - - 2 * style.FramePadding.x; - int max_style_image_height = 1.5 * input_height; - cfg.max_style_image_size = Vec2i(max_style_image_width, max_style_image_height); - cfg.face_name_size.y() = line_height_with_spacing; - cfg.face_name_size.x() = cfg.input_width; - cfg.face_name_texture_offset_x = cfg.input_width + space; - return cfg; -} EmbossStyles GLGizmoEmboss::create_default_styles() { @@ -1227,6 +1059,50 @@ EmbossStyles GLGizmoEmboss::create_default_styles() } namespace{ +/// +/// Check installed fonts whether optional face name exist in installed fonts +/// +/// Name from style - style.prop.face_name +/// All installed good and bad fonts - not const must be possible to initialize it +/// When it could be installed it contain value(potentionaly empty string) +std::optional get_installed_face_name(const std::optional &face_name_opt, ::Facenames& face_names) +{ + // Could exist OS without getter on face_name, + // but it is able to restore font from descriptor + // Soo default value must be TRUE + if (!face_name_opt.has_value()) + return wxString(); + + wxString face_name(face_name_opt->c_str()); + + // search in enumerated fonts + // refresh list of installed font in the OS. + init_face_names(face_names); + face_names.is_init = false; + + auto cmp = [](const FaceName &fn, const wxString &wx_name) { return fn.wx_name < wx_name; }; + const std::vector &faces = face_names.faces; + // is font installed? + if (auto it = std::lower_bound(faces.begin(), faces.end(), face_name, cmp); + it != faces.end() && it->wx_name == face_name) + return face_name; + + const std::vector &bad = face_names.bad; + auto it_bad = std::lower_bound(bad.begin(), bad.end(), face_name); + if (it_bad == bad.end() || *it_bad != face_name) { + // check if wx allowed to set it up - another encoding of name + wxFontEnumerator::InvalidateCache(); + wxFont wx_font_; // temporary structure + if (wx_font_.SetFaceName(face_name) && WxFontUtils::create_font_file(wx_font_) != nullptr // can load TTF file? + ) { + return wxString(); + // QUESTION: add this name to allowed faces? + // Could create twin of font face name + // When not add it will be hard to select it again when change font + } + } + return {}; // not installed +} void init_text_lines(TextLinesModel &text_lines, const Selection& selection, /* const*/ StyleManager &style_manager, unsigned count_lines) { const GLVolume *gl_volume_ptr = selection.get_first_volume(); @@ -1241,6 +1117,10 @@ void init_text_lines(TextLinesModel &text_lines, const Selection& selection, /* if (mv.is_the_only_one_part()) return; + const std::optional &es_opt = mv.emboss_shape; + if (!es_opt.has_value()) + return; + const EmbossShape &es = *es_opt; const std::optional &tc_opt = mv.text_configuration; if (!tc_opt.has_value()) return; @@ -1258,25 +1138,11 @@ void init_text_lines(TextLinesModel &text_lines, const Selection& selection, /* // For interactivity during drag over surface it must be from gl_volume not volume. Transform3d mv_trafo = gl_volume.get_volume_transformation().get_matrix(); - if (tc.fix_3mf_tr.has_value()) - mv_trafo = mv_trafo * (tc.fix_3mf_tr->inverse()); + if (es.fix_3mf_tr.has_value()) + mv_trafo = mv_trafo * (es.fix_3mf_tr->inverse()); text_lines.init(mv_trafo, volumes, style_manager, count_lines); } -void init_new_text_line(TextLinesModel &text_lines, const Transform3d& new_text_tr, const ModelObject& mo, /* const*/ StyleManager &style_manager) -{ - // prepare volumes to slice - ModelVolumePtrs volumes; - volumes.reserve(mo.volumes.size()); - for (ModelVolume *volume : mo.volumes) { - // only part could be surface for volumes - if (!volume->is_model_part()) - continue; - volumes.push_back(volume); - } - unsigned count_lines = 1; - text_lines.init(new_text_tr, volumes, style_manager, count_lines); -} } @@ -1306,8 +1172,7 @@ void GLGizmoEmboss::set_volume_by_selection() remove_notification_not_valid_font(); // Do not use focused input value when switch volume(it must swith value) - if (m_volume != nullptr && - m_volume != volume) // when update volume it changed id BUT not pointer + if (m_volume != nullptr && m_volume != volume) // when update volume it changed id BUT not pointer ImGuiWrapper::left_inputs(); // Is selected volume text volume? @@ -1315,50 +1180,18 @@ void GLGizmoEmboss::set_volume_by_selection() if (!tc_opt.has_value()) return reset_volume(); + // Emboss shape must be setted + assert(volume->emboss_shape.has_value()); + if (!volume->emboss_shape.has_value()) + return; const TextConfiguration &tc = *tc_opt; const EmbossStyle &style = tc.style; - // Could exist OS without getter on face_name, - // but it is able to restore font from descriptor - // Soo default value must be TRUE - bool is_font_installed = true; - wxString face_name; - std::optional face_name_opt = style.prop.face_name; - if (face_name_opt.has_value()) { - face_name = wxString(face_name_opt->c_str()); - - // search in enumerated fonts - // refresh list of installed font in the OS. - init_face_names(m_face_names); - m_face_names.is_init = false; - - auto cmp = [](const FaceName &fn, const wxString& face_name)->bool { return fn.wx_name < face_name; }; - const std::vector &faces = m_face_names.faces; - auto it = std::lower_bound(faces.begin(), faces.end(), face_name, cmp); - is_font_installed = it != faces.end() && it->wx_name == face_name; - - if (!is_font_installed) { - const std::vector &bad = m_face_names.bad; - auto it_bad = std::lower_bound(bad.begin(), bad.end(), face_name); - if (it_bad == bad.end() || *it_bad != face_name){ - // check if wx allowed to set it up - another encoding of name - wxFontEnumerator::InvalidateCache(); - wxFont wx_font_; // temporary structure - if (wx_font_.SetFaceName(face_name) && - WxFontUtils::create_font_file(wx_font_) != nullptr // can load TTF file? - ) { - is_font_installed = true; - // QUESTION: add this name to allowed faces? - // Could create twin of font face name - // When not add it will be hard to select it again when change font - } - } - } - } + std::optional installed_name = get_installed_face_name(style.prop.face_name, *m_face_names); wxFont wx_font; // load wxFont from same OS when font name is installed - if (style.type == WxFontUtils::get_actual_type() && is_font_installed) + if (style.type == WxFontUtils::get_current_type() && installed_name.has_value()) wx_font = WxFontUtils::load_wxFont(style.path); // Flag that is selected same font @@ -1368,8 +1201,8 @@ void GLGizmoEmboss::set_volume_by_selection() is_exact_font = false; // Try create similar wx font by FontFamily wx_font = WxFontUtils::create_wxFont(style); - if (is_font_installed) - is_exact_font = wx_font.SetFaceName(face_name); + if (installed_name.has_value() && !installed_name->empty()) + is_exact_font = wx_font.SetFaceName(*installed_name); // Have to use some wxFont if (!wx_font.IsOk()) @@ -1379,24 +1212,27 @@ void GLGizmoEmboss::set_volume_by_selection() // Load style to style manager const auto& styles = m_style_manager.get_styles(); - auto has_same_name = [&style](const StyleManager::Item &style_item) -> bool { - const EmbossStyle &es = style_item.style; - return es.name == style.name; - }; - auto it = std::find_if(styles.begin(), styles.end(), has_same_name); - if (it == styles.end()) { + auto has_same_name = [&name = style.name](const StyleManager::Style &style_item) { return style_item.name == name; }; + + StyleManager::Style style_{style}; // copy + style_.projection = volume->emboss_shape->projection; + style_.angle = calc_angle(selection); + style_.distance = calc_distance(*gl_volume, m_raycast_manager, m_parent); + + if (auto it = std::find_if(styles.begin(), styles.end(), has_same_name); + it == styles.end()) { // style was not found - m_style_manager.load_style(style, wx_font); + m_style_manager.load_style(style_, wx_font); } else { // style name is in styles list size_t style_index = it - styles.begin(); if (!m_style_manager.load_style(style_index)) { // can`t load stored style m_style_manager.erase(style_index); - m_style_manager.load_style(style, wx_font); + m_style_manager.load_style(style_, wx_font); } else { // stored style is loaded, now set modification of style - m_style_manager.get_style() = style; + m_style_manager.get_style() = style_; m_style_manager.set_wx_font(wx_font); } } @@ -1428,7 +1264,7 @@ void GLGizmoEmboss::set_volume_by_selection() // Calculate current angle of up vector assert(m_style_manager.is_active_font()); if (m_style_manager.is_active_font()) - m_style_manager.get_font_prop().angle = calc_up(gl_volume->world_matrix(), priv::up_limit); + m_style_manager.get_style().angle = calc_angle(selection); // calculate scale for height and depth inside of scaled object instance calculate_scale(); @@ -1471,32 +1307,9 @@ void GLGizmoEmboss::calculate_scale() { m_style_manager.clear_imgui_font(); } -#ifdef EXECUTE_PROCESS_ON_MAIN_THREAD -namespace priv { -// Run Job on main thread (blocking) - ONLY DEBUG -static inline void execute_job(std::shared_ptr j) -{ - struct MyCtl : public Job::Ctl - { - void update_status(int st, const std::string &msg = "") override{}; - bool was_canceled() const override { return false; } - std::future call_on_main_thread(std::function fn) override - { - return std::future{}; - } - } ctl; - j->process(ctl); - wxGetApp().plater()->CallAfter([j]() { - std::exception_ptr e_ptr = nullptr; - j->finalize(false, e_ptr); - }); -} -} // namespace priv -#endif - -namespace priv { -static bool is_text_empty(const std::string &text) { return text.empty() || text.find_first_not_of(" \n\t\r") == std::string::npos; } -} // namespace priv +namespace { +bool is_text_empty(std::string_view text) { return text.empty() || text.find_first_not_of(" \n\t\r") == std::string::npos; } +} // namespace bool GLGizmoEmboss::process() { @@ -1505,61 +1318,21 @@ bool GLGizmoEmboss::process() if (m_volume == nullptr) return false; // without text there is nothing to emboss - if (priv::is_text_empty(m_text)) return false; + if (is_text_empty(m_text)) return false; // exist loaded font file? if (!m_style_manager.is_active_font()) return false; - DataUpdate data{priv::create_emboss_data_base(m_text, m_style_manager, m_text_lines, m_parent.get_selection(), m_volume->type(), m_job_cancel), - m_volume->id()}; - std::unique_ptr job = nullptr; + const Selection& selection = m_parent.get_selection(); + DataBasePtr base = create_emboss_data_base(m_text, m_style_manager, m_text_lines, selection, m_volume->type(), m_job_cancel); + DataUpdate data{std::move(base), m_volume->id()}; - // check cutting from source mesh - bool &use_surface = data.text_configuration.style.prop.use_surface; - bool is_object = m_volume->get_object()->volumes.size() == 1; - if (use_surface && is_object) - use_surface = false; - - assert(!data.text_configuration.style.prop.per_glyph || - get_count_lines(m_text) == m_text_lines.get_lines().size()); + // check valid count of text lines + assert(data.base->text_lines.empty() || data.base->text_lines.size() == get_count_lines(m_text)); - if (use_surface) { - // Model to cut surface from. - SurfaceVolumeData::ModelSources sources = create_volume_sources(m_volume); - if (sources.empty()) + if (!start_update_volume(std::move(data), *m_volume, selection, m_raycast_manager)) return false; - Transform3d text_tr = m_volume->get_matrix(); - auto& fix_3mf = m_volume->text_configuration->fix_3mf_tr; - if (fix_3mf.has_value()) - text_tr = text_tr * fix_3mf->inverse(); - - // when it is new applying of use surface than move origin onto surfaca - if (!m_volume->text_configuration->style.prop.use_surface) { - auto offset = calc_surface_offset(m_parent.get_selection(), m_raycast_manager); - if (offset.has_value()) - text_tr *= Eigen::Translation(*offset); - } - - // check that there is not unexpected volume type - bool is_valid_type = check(m_volume->type()); - assert(is_valid_type); - if (!is_valid_type) - return false; - - UpdateSurfaceVolumeData surface_data{std::move(data), {text_tr, std::move(sources)}}; - job = std::make_unique(std::move(surface_data)); - } else { - job = std::make_unique(std::move(data)); - } - -#ifndef EXECUTE_PROCESS_ON_MAIN_THREAD - auto &worker = wxGetApp().plater()->get_ui_job_worker(); - queue_job(worker, std::move(job)); -#else - // Run Job on main thread (blocking) - ONLY DEBUG - priv::execute_job(std::move(job)); -#endif // EXECUTE_PROCESS_ON_MAIN_THREAD // notification is removed befor object is changed by job remove_notification_not_valid_font(); @@ -1571,7 +1344,7 @@ void GLGizmoEmboss::close() // remove volume when text is empty if (m_volume != nullptr && m_volume->text_configuration.has_value() && - priv::is_text_empty(m_text)) { + is_text_empty(m_text)) { Plater &p = *wxGetApp().plater(); // is the text object? if (m_volume->is_the_only_one_part()) { @@ -1593,7 +1366,6 @@ void GLGizmoEmboss::draw_window() { #ifdef ALLOW_DEBUG_MODE if (ImGui::Button("re-process")) process(); - if (ImGui::Button("add svg")) choose_svg_file(); #endif // ALLOW_DEBUG_MODE // Setter of indent must be befor disable !!! @@ -1635,7 +1407,7 @@ void GLGizmoEmboss::draw_window() draw_style_list(); // Do not select volume type, when it is text object - if (m_volume->get_object()->volumes.size() != 1) { + if (!m_volume->is_the_only_one_part()) { ImGui::Separator(); draw_model_type(); } @@ -1679,7 +1451,7 @@ void GLGizmoEmboss::draw_window() ImGui::SameLine(); if (ImGui::Checkbox("##ALLOW_OPEN_NEAR_VOLUME", &m_allow_open_near_volume)) { if (m_allow_open_near_volume) - m_set_window_offset = priv::calc_fine_position(m_parent.get_selection(), get_minimal_window_size(), m_parent.get_canvas_size()); + m_set_window_offset = calc_fine_position(m_parent.get_selection(), get_minimal_window_size(), m_parent.get_canvas_size()); } else if (ImGui::IsItemHovered()) { ImGui::SetTooltip("%s", ((m_allow_open_near_volume) ? "Fix settings position": @@ -1729,8 +1501,10 @@ void GLGizmoEmboss::draw_text_input() warning_tool_tip += t; }; - if (priv::is_text_empty(m_text)) append_warning(_u8L("Embossed text cannot contain only white spaces.")); - if (m_text_contain_unknown_glyph) append_warning(_u8L("Text contains character glyph (represented by '?') unknown by font.")); + if (is_text_empty(m_text)) + append_warning(_u8L("Embossed text cannot contain only white spaces.")); + if (m_text_contain_unknown_glyph) + append_warning(_u8L("Text contains character glyph (represented by '?') unknown by font.")); const FontProp &prop = m_style_manager.get_font_prop(); if (prop.skew.has_value()) append_warning(_u8L("Text input doesn't show font skew.")); @@ -1771,14 +1545,13 @@ void GLGizmoEmboss::draw_text_input() // warning tooltip has to be with default font if (!warning_tool_tip.empty()) { // Multiline input has hidden window for scrolling - ImGuiWindow *input = ImGui::GetCurrentWindow()->DC.ChildWindows.front(); + const ImGuiWindow *input = ImGui::GetCurrentWindow()->DC.ChildWindows.front(); const ImGuiStyle &style = ImGui::GetStyle(); float scrollbar_width = (input->ScrollbarY) ? style.ScrollbarSize : 0.f; float scrollbar_height = (input->ScrollbarX) ? style.ScrollbarSize : 0.f; - bool hovered = ImGui::IsItemHovered(); - if (hovered) + if (ImGui::IsItemHovered()) ImGui::SetTooltip("%s", warning_tool_tip.c_str()); ImVec2 cursor = ImGui::GetCursorPos(); @@ -1797,216 +1570,16 @@ void GLGizmoEmboss::draw_text_input() // IMPROVE: only extend not clear // Extend font ranges if (!range_text.empty() && - !m_imgui->contain_all_glyphs(imgui_font, range_text) ) + !ImGuiWrapper::contain_all_glyphs(imgui_font, range_text) ) m_style_manager.clear_imgui_font(); } -#include -#include "wx/hashmap.h" -std::size_t hash_value(wxString const &s) -{ - boost::hash hasher; - return hasher(s.ToStdString()); -} - -static std::string concat(std::vector data) { - std::stringstream ss; - for (const auto &d : data) - ss << d.c_str() << ", "; - return ss.str(); -} - -#include -static boost::filesystem::path get_fontlist_cache_path() -{ - return boost::filesystem::path(data_dir()) / "cache" / "fonts.cereal"; -} - -// cache font list by cereal -#include -#include -#include -#include - -// increase number when change struct FacenamesSerializer -#define FACENAMES_VERSION 1 -struct FacenamesSerializer -{ - // hash number for unsorted vector of installed font into system - size_t hash = 0; - // assumption that is loadable - std::vector good; - // Can't load for some reason - std::vector bad; -}; - -template void save(Archive &archive, wxString const &d) -{ std::string s(d.ToUTF8().data()); archive(s);} -template void load(Archive &archive, wxString &d) -{ std::string s; archive(s); d = s;} - -template void serialize(Archive &ar, FacenamesSerializer &t, const std::uint32_t version) -{ - // When performing a load, the version associated with the class - // is whatever it was when that data was originally serialized - // When we save, we'll use the version that is defined in the macro - if (version != FACENAMES_VERSION) return; - ar(t.hash, t.good, t.bad); -} -CEREAL_CLASS_VERSION(FacenamesSerializer, FACENAMES_VERSION); // register class version - -#include -bool GLGizmoEmboss::store(const Facenames &facenames) { - std::string cache_path = get_fontlist_cache_path().string(); - boost::nowide::ofstream file(cache_path, std::ios::binary); - cereal::BinaryOutputArchive archive(file); - std::vector good; - good.reserve(facenames.faces.size()); - for (const FaceName &face : facenames.faces) good.push_back(face.wx_name); - FacenamesSerializer data = {facenames.hash, good, facenames.bad}; - - assert(std::is_sorted(data.bad.begin(), data.bad.end())); - assert(std::is_sorted(data.good.begin(), data.good.end())); - - try { - archive(data); - } catch (const std::exception &ex) { - BOOST_LOG_TRIVIAL(error) << "Failed to write fontlist cache - " << cache_path << ex.what(); - return false; - } - return true; -} - -bool GLGizmoEmboss::load(Facenames &facenames) { - boost::filesystem::path path = get_fontlist_cache_path(); - std::string path_str = path.string(); - if (!boost::filesystem::exists(path)) { - BOOST_LOG_TRIVIAL(warning) << "Fontlist cache - '" << path_str << "' does not exists."; - return false; - } - boost::nowide::ifstream file(path_str, std::ios::binary); - cereal::BinaryInputArchive archive(file); - - FacenamesSerializer data; - try { - archive(data); - } catch (const std::exception &ex) { - BOOST_LOG_TRIVIAL(error) << "Failed to load fontlist cache - '" << path_str << "'. Exception: " << ex.what(); - return false; - } - - assert(std::is_sorted(data.bad.begin(), data.bad.end())); - assert(std::is_sorted(data.good.begin(), data.good.end())); - - facenames.hash = data.hash; - facenames.faces.reserve(data.good.size()); - for (const wxString &face : data.good) - facenames.faces.push_back({face}); - facenames.bad = data.bad; - return true; -} - -void GLGizmoEmboss::init_truncated_names(Facenames &face_names, float max_width) -{ - for (FaceName &face : face_names.faces) { - std::string name_str(face.wx_name.ToUTF8().data()); - face.name_truncated = ImGuiWrapper::trunc(name_str, max_width); - } - face_names.has_truncated_names = true; -} - -void GLGizmoEmboss::init_face_names(Facenames &face_names) -{ - Timer t("enumerate_fonts"); - if (face_names.is_init) return; - face_names.is_init = true; - - // to reload fonts from system, when install new one - wxFontEnumerator::InvalidateCache(); - - // try load cache - // Only not OS enumerated face has hash value 0 - if (face_names.hash == 0) { - load(face_names); - face_names.has_truncated_names = false; - } - - using namespace std::chrono; - steady_clock::time_point enumerate_start = steady_clock::now(); - ScopeGuard sg([&enumerate_start, &face_names = face_names]() { - steady_clock::time_point enumerate_end = steady_clock::now(); - long long enumerate_duration = duration_cast(enumerate_end - enumerate_start).count(); - BOOST_LOG_TRIVIAL(info) << "OS enumerate " << face_names.faces.size() << " fonts " - << "(+ " << face_names.bad.size() << " can't load " - << "= " << face_names.faces.size() + face_names.bad.size() << " fonts) " - << "in " << enumerate_duration << " ms\n" << concat(face_names.bad); - }); - wxArrayString facenames = wxFontEnumerator::GetFacenames(face_names.encoding); - size_t hash = boost::hash_range(facenames.begin(), facenames.end()); - // Zero value is used as uninitialized hash - if (hash == 0) hash = 1; - // check if it is same as last time - if (face_names.hash == hash) { - // no new installed font - BOOST_LOG_TRIVIAL(info) << "Same FontNames hash, cache is used. " - << "For clear cache delete file: " << get_fontlist_cache_path().string(); - return; - } - - BOOST_LOG_TRIVIAL(info) << ((face_names.hash == 0) ? - "FontName list is generate from scratch." : - "Hash are different. Only previous bad fonts are used and set again as bad"); - face_names.hash = hash; - - // validation lambda - auto is_valid_font = [encoding = face_names.encoding, bad = face_names.bad /*copy*/](const wxString &name) { - if (name.empty()) return false; - - // vertical font start with @, we will filter it out - // Not sure if it is only in Windows so filtering is on all platforms - if (name[0] == '@') return false; - - // previously detected bad font - auto it = std::lower_bound(bad.begin(), bad.end(), name); - if (it != bad.end() && *it == name) return false; - - wxFont wx_font(wxFontInfo().FaceName(name).Encoding(encoding)); - //* - // Faster chech if wx_font is loadable but not 100% - // names could contain not loadable font - if (!WxFontUtils::can_load(wx_font)) return false; - - /*/ - // Slow copy of font files to try load font - // After this all files are loadable - auto font_file = WxFontUtils::create_font_file(wx_font); - if (font_file == nullptr) - return false; // can't create font file - // */ - return true; - }; - - face_names.faces.clear(); - face_names.bad.clear(); - face_names.faces.reserve(facenames.size()); - std::sort(facenames.begin(), facenames.end()); - for (const wxString &name : facenames) { - if (is_valid_font(name)) { - face_names.faces.push_back({name}); - }else{ - face_names.bad.push_back(name); - } - } - assert(std::is_sorted(face_names.bad.begin(), face_names.bad.end())); - face_names.has_truncated_names = false; - store(face_names); -} // create texture for visualization font face void GLGizmoEmboss::init_font_name_texture() { Timer t("init_font_name_texture"); // check if already exists - GLuint &id = m_face_names.texture_id; + GLuint &id = m_face_names->texture_id; if (id != 0) return; // create texture for font GLenum target = GL_TEXTURE_2D; @@ -2015,7 +1588,7 @@ void GLGizmoEmboss::init_font_name_texture() { glsafe(::glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); glsafe(::glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); const Vec2i &size = m_gui_cfg->face_name_size; - GLint w = size.x(), h = m_face_names.count_cached_textures * size.y(); + GLint w = size.x(), h = m_face_names->count_cached_textures * size.y(); std::vector data(4*w * h, {0}); const GLenum format = GL_RGBA, type = GL_UNSIGNED_BYTE; const GLint level = 0, internal_format = GL_RGBA, border = 0; @@ -2026,107 +1599,20 @@ void GLGizmoEmboss::init_font_name_texture() { glsafe(::glBindTexture(target, no_texture_id)); // clear info about creation of texture - no one is initialized yet - for (FaceName &face : m_face_names.faces) { + for (FaceName &face : m_face_names->faces) { face.cancel = nullptr; face.is_created = nullptr; } // Prepare filtration cache - m_face_names.hide = std::vector(m_face_names.faces.size(), {false}); -} - -void GLGizmoEmboss::draw_font_preview(FaceName& face, bool is_visible) -{ - // Limit for opened font files at one moment - unsigned int &count_opened_fonts = m_face_names.count_opened_font_files; - // Size of texture - ImVec2 size(m_gui_cfg->face_name_size.x(), m_gui_cfg->face_name_size.y()); - float count_cached_textures_f = static_cast(m_face_names.count_cached_textures); - std::string state_text; - // uv0 and uv1 set to pixel 0,0 in texture - ImVec2 uv0(0.f, 0.f), uv1(1.f / size.x, 1.f / size.y / count_cached_textures_f); - if (face.is_created != nullptr) { - // not created preview - if (*face.is_created) { - // Already created preview - size_t texture_index = face.texture_index; - uv0 = ImVec2(0.f, texture_index / count_cached_textures_f); - uv1 = ImVec2(1.f, (texture_index + 1) / count_cached_textures_f); - } else { - // Not finished preview - if (is_visible) { - // when not canceled still loading - state_text = std::string(" ") + (face.cancel->load() ? - _u8L("No symbol") : - (dots.ToStdString() + _u8L("Loading"))); - } else { - // not finished and not visible cancel job - face.is_created = nullptr; - face.cancel->store(true); - } - } - } else if (is_visible && count_opened_fonts < m_gui_cfg->max_count_opened_font_files) { - ++count_opened_fonts; - face.cancel = std::make_shared(false); - face.is_created = std::make_shared(false); - - const unsigned char gray_level = 5; - // format type and level must match to texture data - const GLenum format = GL_RGBA, type = GL_UNSIGNED_BYTE; - const GLint level = 0; - // select next texture index - size_t texture_index = (m_face_names.texture_index + 1) % m_face_names.count_cached_textures; - - // set previous cach as deleted - for (FaceName &f : m_face_names.faces) - if (f.texture_index == texture_index) { - if (f.cancel != nullptr) f.cancel->store(true); - f.is_created = nullptr; - } - - m_face_names.texture_index = texture_index; - face.texture_index = texture_index; - - // render text to texture - FontImageData data{ - m_text, - face.wx_name, - m_face_names.encoding, - m_face_names.texture_id, - m_face_names.texture_index, - m_gui_cfg->face_name_size, - gray_level, - format, - type, - level, - &count_opened_fonts, - face.cancel, // copy - face.is_created // copy - }; - auto job = std::make_unique(std::move(data)); - auto &worker = wxGetApp().plater()->get_ui_job_worker(); - queue_job(worker, std::move(job)); - } else { - // cant start new thread at this moment so wait in queue - state_text = " " + dots.ToStdString() + " " + _u8L("Queue"); - } - - if (!state_text.empty()) { - ImGui::SameLine(m_gui_cfg->face_name_texture_offset_x); - m_imgui->text(state_text); - } - - ImGui::SameLine(m_gui_cfg->face_name_texture_offset_x); - ImTextureID tex_id = (void *) (intptr_t) m_face_names.texture_id; - ImGui::Image(tex_id, size, uv0, uv1); + m_face_names->hide = std::vector(m_face_names->faces.size(), {false}); } bool GLGizmoEmboss::select_facename(const wxString &facename) { if (!wxFontEnumerator::IsValidFacename(facename)) return false; // Select font - const wxFontEncoding &encoding = m_face_names.encoding; - wxFont wx_font(wxFontInfo().FaceName(facename).Encoding(encoding)); + wxFont wx_font(wxFontInfo().FaceName(facename).Encoding(Facenames::encoding)); if (!wx_font.IsOk()) return false; #ifdef USE_PIXEL_SIZE_IN_WX_FONT // wx font could change source file by size of font @@ -2223,19 +1709,19 @@ void GLGizmoEmboss::draw_font_list() // Fix clearance of search input, // Sometime happens that search text not disapear after font select - m_face_names.search.clear(); + m_face_names->search.clear(); } - if (ImGui::InputTextWithHint(input_id, selected, &m_face_names.search)) { + if (ImGui::InputTextWithHint(input_id, selected, &m_face_names->search)) { // update filtration result - m_face_names.hide = std::vector(m_face_names.faces.size(), {false}); + m_face_names->hide = std::vector(m_face_names->faces.size(), {false}); // search to uppercase - std::string search = m_face_names.search; // copy + std::string search = m_face_names->search; // copy std::transform(search.begin(), search.end(), search.begin(), ::toupper); - for (FaceName &face : m_face_names.faces) { - size_t index = &face - &m_face_names.faces.front(); + for (const FaceName &face : m_face_names->faces) { + size_t index = &face - &m_face_names->faces.front(); // font name to uppercase std::string name(face.wx_name.ToUTF8().data()); @@ -2243,7 +1729,7 @@ void GLGizmoEmboss::draw_font_list() // It should use C++ 20 feature https://en.cppreference.com/w/cpp/string/basic_string/starts_with bool start_with = boost::starts_with(name, search); - m_face_names.hide[index] = !start_with; + m_face_names->hide[index] = !start_with; } } if (!is_popup_open) @@ -2262,23 +1748,23 @@ void GLGizmoEmboss::draw_font_list() if (ImGui::BeginPopup(popup_id, popup_flags)) { bool set_selection_focus = false; - if (!m_face_names.is_init) { - init_face_names(m_face_names); + if (!m_face_names->is_init) { + init_face_names(*m_face_names); set_selection_focus = true; } - if (!m_face_names.has_truncated_names) - init_truncated_names(m_face_names, m_gui_cfg->input_width); + if (!m_face_names->has_truncated_names) + init_truncated_names(*m_face_names, m_gui_cfg->input_width); - if (m_face_names.texture_id == 0) + if (m_face_names->texture_id == 0) init_font_name_texture(); - for (FaceName &face : m_face_names.faces) { + for (FaceName &face : m_face_names->faces) { const wxString &wx_face_name = face.wx_name; - size_t index = &face - &m_face_names.faces.front(); + size_t index = &face - &m_face_names->faces.front(); // Filter for face names - if (m_face_names.hide[index]) + if (m_face_names->hide[index]) continue; ImGui::PushID(index); @@ -2299,7 +1785,7 @@ void GLGizmoEmboss::draw_font_list() // on first draw set focus on selected font if (set_selection_focus && is_selected) ImGui::SetScrollHereY(); - draw_font_preview(face, ImGui::IsItemVisible()); + ::draw_font_preview(face, m_text, *m_face_names, *m_gui_cfg, ImGui::IsItemVisible()); } if (!ImGui::IsWindowFocused() || @@ -2308,33 +1794,33 @@ void GLGizmoEmboss::draw_font_list() ImGui::CloseCurrentPopup(); } ImGui::EndPopup(); - } else if (m_face_names.is_init) { + } else if (m_face_names->is_init) { // Just one after close combo box // free texture and set id to zero - m_face_names.is_init = false; - m_face_names.hide.clear(); + m_face_names->is_init = false; + m_face_names->hide.clear(); // cancel all process for generation of texture - for (FaceName &face : m_face_names.faces) + for (FaceName &face : m_face_names->faces) if (face.cancel != nullptr) face.cancel->store(true); - glsafe(::glDeleteTextures(1, &m_face_names.texture_id)); - m_face_names.texture_id = 0; + glsafe(::glDeleteTextures(1, &m_face_names->texture_id)); + m_face_names->texture_id = 0; // Remove value from search input ImGuiWrapper::left_inputs(); - m_face_names.search.clear(); + m_face_names->search.clear(); } // delete unloadable face name when try to use if (del_index.has_value()) { - auto face = m_face_names.faces.begin() + (*del_index); - std::vector& bad = m_face_names.bad; + auto face = m_face_names->faces.begin() + (*del_index); + std::vector& bad = m_face_names->bad; // sorted insert into bad fonts auto it = std::upper_bound(bad.begin(), bad.end(), face->wx_name); bad.insert(it, face->wx_name); - m_face_names.faces.erase(face); + m_face_names->faces.erase(face); // update cached file - store(m_face_names); + store(*m_face_names); } #ifdef ALLOW_ADD_FONT_BY_FILE @@ -2413,7 +1899,6 @@ void GLGizmoEmboss::draw_model_type() Plater::TakeSnapshot snapshot(plater, _L("Change Text Type"), UndoRedo::SnapshotType::GizmoAction); m_volume->set_type(*new_type); - // move inside bool is_volume_move_inside = (type == part); bool is_volume_move_outside = (*new_type == part); // Update volume position when switch (from part) or (into part) @@ -2443,19 +1928,14 @@ void GLGizmoEmboss::draw_style_rename_popup() { std::string text_in_popup = GUI::format(_L("Rename style(%1%) for embossing text"), old_name) + ": "; ImGui::Text("%s", text_in_popup.c_str()); - bool is_unique = true; - for (const auto &item : m_style_manager.get_styles()) { - const EmbossStyle &style = item.style; - if (&style == &m_style_manager.get_style()) - continue; // could be same as original name - if (style.name == new_name) is_unique = false; - } + bool is_unique = (new_name == old_name) || // could be same as before rename + m_style_manager.is_unique_style_name(new_name); bool allow_change = false; //B18 if (new_name.empty()) { - m_imgui->text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name can't be empty.")); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name can't be empty.")); }else if (!is_unique) { - m_imgui->text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name has to be unique.")); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name has to be unique.")); } else { ImGui::NewLine(); allow_change = true; @@ -2473,7 +1953,7 @@ void GLGizmoEmboss::draw_style_rename_popup() { if (store) { // rename style in all objects and volumes - for (ModelObject *mo :wxGetApp().plater()->model().objects) { + for (const ModelObject *mo :wxGetApp().plater()->model().objects) { for (ModelVolume *mv : mo->volumes) { if (!mv->text_configuration.has_value()) continue; std::string& name = mv->text_configuration->style.name; @@ -2493,7 +1973,7 @@ void GLGizmoEmboss::draw_style_rename_button() bool can_rename = m_style_manager.exist_stored_style(); std::string title = _u8L("Rename style"); const char * popup_id = title.c_str(); - if (priv::draw_button(m_icons, IconType::rename, !can_rename)) { + if (draw_button(m_icons, IconType::rename, !can_rename)) { assert(m_style_manager.get_stored_style()); ImGui::OpenPopup(popup_id); } @@ -2532,16 +2012,14 @@ void GLGizmoEmboss::draw_style_save_as_popup() { // use name inside of volume configuration as temporary new name std::string &new_name = m_volume->text_configuration->style.name; - bool is_unique = true; - for (const auto &item : m_style_manager.get_styles()) - if (item.style.name == new_name) is_unique = false; + bool is_unique = m_style_manager.is_unique_style_name(new_name); bool allow_change = false; //B18 if (new_name.empty()) { - m_imgui->text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name can't be empty.")); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name can't be empty.")); }else if (!is_unique) { - m_imgui->text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name has to be unique.")); + ImGuiWrapper::text_colored(ImGuiWrapper::COL_BLUE_LIGHT, _u8L("Name has to be unique.")); } else { ImGui::NewLine(); allow_change = true; @@ -2574,7 +2052,7 @@ void GLGizmoEmboss::draw_style_add_button() bool only_add_style = !m_style_manager.exist_stored_style(); bool can_add = true; if (only_add_style && - m_volume->text_configuration->style.type != WxFontUtils::get_actual_type()) + m_volume->text_configuration->style.type != WxFontUtils::get_current_type()) can_add = false; std::string title = _u8L("Save as new style"); @@ -2597,7 +2075,7 @@ void GLGizmoEmboss::draw_style_add_button() } } - if (ImGui::BeginPopupModal(popup_id, 0, ImGuiWindowFlags_AlwaysAutoResize)) { + if (ImGui::BeginPopupModal(popup_id, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) { m_imgui->disable_background_fadeout_animation(); draw_style_save_as_popup(); ImGui::EndPopup(); @@ -2662,46 +2140,46 @@ void GLGizmoEmboss::draw_delete_style_button() { } } -// FIX IT: it should not change volume position before successfull change -void GLGizmoEmboss::fix_transformation(const FontProp &from, - const FontProp &to) -{ +namespace { +// FIX IT: It should not change volume position before successfull change volume by process +void fix_transformation(const StyleManager::Style &from, const StyleManager::Style &to, GLCanvas3D &canvas) { // fix Z rotation when exists difference in styles const std::optional &f_angle_opt = from.angle; const std::optional &t_angle_opt = to.angle; if (!is_approx(f_angle_opt, t_angle_opt)) { // fix rotation - float f_angle = f_angle_opt.has_value() ? *f_angle_opt : .0f; - float t_angle = t_angle_opt.has_value() ? *t_angle_opt : .0f; - do_rotate(t_angle - f_angle); + float f_angle = f_angle_opt.value_or(.0f); + float t_angle = t_angle_opt.value_or(.0f); + do_local_z_rotate(canvas, t_angle - f_angle); } // fix distance (Z move) when exists difference in styles const std::optional &f_move_opt = from.distance; const std::optional &t_move_opt = to.distance; if (!is_approx(f_move_opt, t_move_opt)) { - float f_move = f_move_opt.has_value() ? *f_move_opt : .0f; - float t_move = t_move_opt.has_value() ? *t_move_opt : .0f; - do_translate(Vec3d::UnitZ() * (t_move - f_move)); + float f_move = f_move_opt.value_or(.0f); + float t_move = t_move_opt.value_or(.0f); + do_local_z_move(canvas, t_move - f_move); } } +} // namesapce void GLGizmoEmboss::draw_style_list() { if (!m_style_manager.is_active_font()) return; - const EmbossStyle *stored_style = nullptr; + const StyleManager::Style *stored_style = nullptr; bool is_stored = m_style_manager.exist_stored_style(); if (is_stored) stored_style = m_style_manager.get_stored_style(); - const EmbossStyle &actual_style = m_style_manager.get_style(); - bool is_changed = (stored_style)? !(*stored_style == actual_style) : true; + const StyleManager::Style ¤t_style = m_style_manager.get_style(); + bool is_changed = (stored_style)? !(*stored_style == current_style) : true; bool is_modified = is_stored && is_changed; const float &max_style_name_width = m_gui_cfg->max_style_name_width; std::string &trunc_name = m_style_manager.get_truncated_name(); if (trunc_name.empty()) { // generate trunc name - std::string current_name = actual_style.name; + std::string current_name = current_style.name; ImGuiWrapper::escape_double_hash(current_name); trunc_name = ImGuiWrapper::trunc(current_name, max_style_name_width); } @@ -2723,19 +2201,19 @@ void GLGizmoEmboss::draw_style_list() { m_style_manager.init_style_images(m_gui_cfg->max_style_image_size, m_text); m_style_manager.init_trunc_names(max_style_name_width); std::optional> swap_indexes; - const std::vector &styles = m_style_manager.get_styles(); - for (const auto &item : styles) { - size_t index = &item - &styles.front(); - const EmbossStyle &style = item.style; + const StyleManager::Styles &styles = m_style_manager.get_styles(); + for (const StyleManager::Style &style : styles) { + size_t index = &style - &styles.front(); const std::string &actual_style_name = style.name; ImGui::PushID(actual_style_name.c_str()); bool is_selected = (index == m_style_manager.get_style_index()); - ImVec2 select_size(0,m_gui_cfg->max_style_image_size.y()); // 0,0 --> calculate in draw - const std::optional &img = item.image; + float select_height = static_cast(m_gui_cfg->max_style_image_size.y()); + ImVec2 select_size(0.f, select_height); // 0,0 --> calculate in draw + const std::optional &img = style.image; // allow click delete button ImGuiSelectableFlags_ flags = ImGuiSelectableFlags_AllowItemOverlap; - if (ImGui::Selectable(item.truncated_name.c_str(), is_selected, flags, select_size)) { + if (ImGui::Selectable(style.truncated_name.c_str(), is_selected, flags, select_size)) { selected_style_index = index; } else if (ImGui::IsItemHovered()) ImGui::SetTooltip("%s", actual_style_name.c_str()); @@ -2767,18 +2245,18 @@ void GLGizmoEmboss::draw_style_list() { // do not keep in memory style images when no combo box open m_style_manager.free_style_images(); if (ImGui::IsItemHovered()) { - std::string style_name = add_text_modify(actual_style.name); + std::string style_name = add_text_modify(current_style.name); std::string tooltip = is_modified? - GUI::format(_L("Modified style \"%1%\""), actual_style.name): - GUI::format(_L("Current style is \"%1%\""), actual_style.name); + GUI::format(_L("Modified style \"%1%\""), current_style.name): + GUI::format(_L("Current style is \"%1%\""), current_style.name); ImGui::SetTooltip(" %s", tooltip.c_str()); } } // Check whether user wants lose actual style modification if (selected_style_index.has_value() && is_modified) { - const EmbossStyle &style = m_style_manager.get_styles()[*selected_style_index].style; - wxString message = GUI::format_wxstr(_L("Changing style to \"%1%\" will discard current style modification.\n\nWould you like to continue anyway?"), style.name); + const std::string & style_name = m_style_manager.get_styles()[*selected_style_index].name; + wxString message = GUI::format_wxstr(_L("Changing style to \"%1%\" will discard current style modification.\n\nWould you like to continue anyway?"), style_name); MessageDialog not_loaded_style_message(nullptr, message, _L("Warning"), wxICON_WARNING | wxYES | wxNO); if (not_loaded_style_message.ShowModal() != wxID_YES) selected_style_index.reset(); @@ -2786,12 +2264,12 @@ void GLGizmoEmboss::draw_style_list() { // selected style from combo box if (selected_style_index.has_value()) { - const EmbossStyle &style = m_style_manager.get_styles()[*selected_style_index].style; + const StyleManager::Style &style = m_style_manager.get_styles()[*selected_style_index]; // create copy to be able do fix transformation only when successfully load style - FontProp act_prop = actual_style.prop; // copy - FontProp new_prop = style.prop; // copy + StyleManager::Style cur_s = current_style; // copy + StyleManager::Style new_s = style; // copy if (m_style_manager.load_style(*selected_style_index)) { - fix_transformation(act_prop, new_prop); + ::fix_transformation(cur_s, new_s, m_parent); process(); } else { wxString title = _L("Not valid style."); @@ -2931,7 +2409,7 @@ bool GLGizmoEmboss::revertible(const std::string &name, const T *default_value, const std::string &undo_tooltip, float undo_offset, - Draw draw) + Draw draw) const { bool changed = exist_change(value, default_value); if (changed || default_value == nullptr) @@ -2955,42 +2433,43 @@ bool GLGizmoEmboss::revertible(const std::string &name, return draw(); } +// May be move to ImGuiWrapper +template bool imgui_input(const char *label, T *v, T step, T step_fast, const char *format, ImGuiInputTextFlags flags); +template<> bool imgui_input(const char *label, float *v, float step, float step_fast, const char *format, ImGuiInputTextFlags flags) +{ return ImGui::InputFloat(label, v, step, step_fast, format, flags); } +template<> bool imgui_input(const char *label, double *v, double step, double step_fast, const char *format, ImGuiInputTextFlags flags) +{ return ImGui::InputDouble(label, v, step, step_fast, format, flags); } -bool GLGizmoEmboss::rev_input(const std::string &name, - float &value, - const float *default_value, - const std::string &undo_tooltip, - float step, - float step_fast, - const char *format, - ImGuiInputTextFlags flags) +template +bool GLGizmoEmboss::rev_input(const std::string &name, T &value, const T *default_value, + const std::string &undo_tooltip, T step, T step_fast, const char *format, ImGuiInputTextFlags flags) const { // draw offseted input - auto draw_offseted_input = [&]()->bool{ - float input_offset = m_gui_cfg->input_offset; - float input_width = m_gui_cfg->input_width; - ImGui::SameLine(input_offset); - ImGui::SetNextItemWidth(input_width); - return ImGui::InputFloat(("##" + name).c_str(), + auto draw_offseted_input = [&offset = m_gui_cfg->input_offset, &width = m_gui_cfg->input_width, + &name, &value, &step, &step_fast, format, flags](){ + ImGui::SameLine(offset); + ImGui::SetNextItemWidth(width); + return imgui_input(("##" + name).c_str(), &value, step, step_fast, format, flags); }; float undo_offset = ImGui::GetStyle().FramePadding.x; return revertible(name, value, default_value, undo_tooltip, undo_offset, draw_offseted_input); } +template bool GLGizmoEmboss::rev_input_mm(const std::string &name, - float &value, - const float *default_value_ptr, + T &value, + const T *default_value_ptr, const std::string &undo_tooltip, - float step, - float step_fast, + T step, + T step_fast, const char *format, bool use_inch, - const std::optional& scale) + const std::optional &scale) const { // _variable which temporary keep value - float value_ = value; - float default_value_; + T value_ = value; + T default_value_; if (use_inch) { // calc value in inch value_ *= ObjectManipulation::mm_to_in; @@ -3018,11 +2497,11 @@ bool GLGizmoEmboss::rev_input_mm(const std::string &name, bool GLGizmoEmboss::rev_checkbox(const std::string &name, bool &value, const bool *default_value, - const std::string &undo_tooltip) + const std::string &undo_tooltip) const { // draw offseted input - auto draw_offseted_input = [&]() -> bool { - ImGui::SameLine(m_gui_cfg->advanced_input_offset); + auto draw_offseted_input = [&offset = m_gui_cfg->advanced_input_offset, &name, &value](){ + ImGui::SameLine(offset); return ImGui::Checkbox(("##" + name).c_str(), &value); }; float undo_offset = ImGui::GetStyle().FramePadding.x; @@ -3034,7 +2513,7 @@ bool GLGizmoEmboss::set_height() { float &value = m_style_manager.get_font_prop().size_in_mm; // size can't be zero or negative - priv::Limits::apply(value, priv::limits.size_in_mm); + apply(value, limits.size_in_mm); if (m_volume == nullptr || !m_volume->text_configuration.has_value()) { assert(false); @@ -3073,29 +2552,24 @@ void GLGizmoEmboss::draw_height(bool use_inch) process(); } -bool GLGizmoEmboss::set_depth() -{ - float &value = m_style_manager.get_font_prop().emboss; - - // size can't be zero or negative - priv::Limits::apply(value, priv::limits.emboss); - - // only different value need process - return !is_approx(value, m_volume->text_configuration->style.prop.emboss); -} void GLGizmoEmboss::draw_depth(bool use_inch) { - float &value = m_style_manager.get_font_prop().emboss; - const EmbossStyle* stored_style = m_style_manager.get_stored_style(); - const float *stored = ((stored_style)? &stored_style->prop.emboss : nullptr); + double &value = m_style_manager.get_style().projection.depth; + const StyleManager::Style * stored_style = m_style_manager.get_stored_style(); + const double *stored = ((stored_style!=nullptr)? &stored_style->projection.depth : nullptr); const std::string revert_emboss_depth = _u8L("Revert embossed depth."); const char *size_format = ((use_inch) ? "%.3f in" : "%.2f mm"); const std::string name = m_gui_cfg->translations.depth; - if (rev_input_mm(name, value, stored, revert_emboss_depth, 0.1f, 1.f, size_format, use_inch, m_scale_depth)) - if (set_depth()) + if (rev_input_mm(name, value, stored, revert_emboss_depth, 0.1, 1., size_format, use_inch, m_scale_depth)){ + // size can't be zero or negative + apply(value, limits.emboss); + + // only different value need process + if(!is_approx(value, m_volume->emboss_shape->projection.depth)) process(); } +} bool GLGizmoEmboss::rev_slider(const std::string &name, std::optional& value, @@ -3104,7 +2578,7 @@ bool GLGizmoEmboss::rev_slider(const std::string &name, int v_min, int v_max, const std::string& format, - const wxString &tooltip) + const wxString &tooltip) const { auto draw_slider_optional_int = [&]() -> bool { float slider_offset = m_gui_cfg->advanced_input_offset; @@ -3126,7 +2600,7 @@ bool GLGizmoEmboss::rev_slider(const std::string &name, float v_min, float v_max, const std::string& format, - const wxString &tooltip) + const wxString &tooltip) const { auto draw_slider_optional_float = [&]() -> bool { float slider_offset = m_gui_cfg->advanced_input_offset; @@ -3148,7 +2622,7 @@ bool GLGizmoEmboss::rev_slider(const std::string &name, float v_min, float v_max, const std::string &format, - const wxString &tooltip) + const wxString &tooltip) const { auto draw_slider_float = [&]() -> bool { float slider_offset = m_gui_cfg->advanced_input_offset; @@ -3163,37 +2637,6 @@ bool GLGizmoEmboss::rev_slider(const std::string &name, undo_tooltip, undo_offset, draw_slider_float); } -void GLGizmoEmboss::do_translate(const Vec3d &relative_move) -{ - assert(m_volume != nullptr); - assert(m_volume->text_configuration.has_value()); - Selection &selection = m_parent.get_selection(); - assert(!selection.is_empty()); - selection.setup_cache(); - selection.translate(relative_move, TransformationType::Local); - - std::string snapshot_name; // empty mean no store undo / redo - // NOTE: it use L instead of _L macro because prefix _ is appended inside - // function do_move - // snapshot_name = L("Set surface distance"); - m_parent.do_move(snapshot_name); -} - -void GLGizmoEmboss::do_rotate(float relative_z_angle) -{ - assert(m_volume != nullptr); - assert(m_volume->text_configuration.has_value()); - Selection &selection = m_parent.get_selection(); - assert(!selection.is_empty()); - selection.setup_cache(); - selection.rotate(Vec3d(0., 0., relative_z_angle), get_transformation_type(selection)); - - std::string snapshot_name; // empty meand no store undo / redo - // NOTE: it use L instead of _L macro because prefix _ is appended - // inside function do_move - // snapshot_name = L("Set text rotation"); - m_parent.do_rotate(snapshot_name); -} void GLGizmoEmboss::draw_advanced() { @@ -3216,8 +2659,7 @@ void GLGizmoEmboss::draw_advanced() ", unitPerEm=" + std::to_string(font_info.unit_per_em) + ", cache(" + std::to_string(cache_size) + " glyphs)"; if (font_file->infos.size() > 1) { - unsigned int collection = font_prop.collection_number.has_value() ? - *font_prop.collection_number : 0; + unsigned int collection = current_prop.collection_number.value_or(0); ff_property += ", collect=" + std::to_string(collection+1) + "/" + std::to_string(font_file->infos.size()); } m_imgui->text_colored(ImGuiWrapper::COL_GREY_DARK, ff_property); @@ -3226,26 +2668,23 @@ void GLGizmoEmboss::draw_advanced() bool exist_change = false; auto &tr = m_gui_cfg->translations; - const EmbossStyle *stored_style = nullptr; + const StyleManager::Style *stored_style = nullptr; if (m_style_manager.exist_stored_style()) stored_style = m_style_manager.get_stored_style(); bool is_the_only_one_part = m_volume->is_the_only_one_part(); - bool can_use_surface = (font_prop.use_surface)? true : // already used surface must have option to uncheck + bool can_use_surface = (m_volume->emboss_shape->projection.use_surface)? true : // already used surface must have option to uncheck !is_the_only_one_part; m_imgui->disabled_begin(!can_use_surface); const bool *def_use_surface = stored_style ? - &stored_style->prop.use_surface : nullptr; - if (rev_checkbox(tr.use_surface, font_prop.use_surface, def_use_surface, + &stored_style->projection.use_surface : nullptr; + StyleManager::Style ¤t_style = m_style_manager.get_style(); + bool &use_surface = current_style.projection.use_surface; + if (rev_checkbox(tr.use_surface, use_surface, def_use_surface, _u8L("Revert using of model surface."))) { - if (font_prop.use_surface) { + if (use_surface) // when using surface distance is not used - font_prop.distance.reset(); - - // there should be minimal embossing depth - if (font_prop.emboss < 0.1) - font_prop.emboss = 1; - } + current_style.distance.reset(); process(); } m_imgui->disabled_end(); // !can_use_surface @@ -3272,9 +2711,9 @@ void GLGizmoEmboss::draw_advanced() m_text_lines.reset(); m_imgui->disabled_end(); // !can_use_per_glyph - auto draw_align = [&align = font_prop.align, gui_cfg = m_gui_cfg, &icons = m_icons]() { + auto draw_align = [&align = font_prop.align, input_offset = m_gui_cfg->advanced_input_offset, &icons = m_icons]() { bool is_change = false; - ImGui::SameLine(gui_cfg->advanced_input_offset); + ImGui::SameLine(input_offset); if (align.first==FontProp::HorizontalAlign::left) draw(get_icon(icons, IconType::align_horizontal_left, IconState::hovered)); else if (draw_button(icons, IconType::align_horizontal_left)) { align.first=FontProp::HorizontalAlign::left; is_change = true; } else if (ImGui::IsItemHovered()) ImGui::SetTooltip("%s", _CTX_utf8(L_CONTEXT("Left", "Alignment"), "Alignment").c_str()); @@ -3319,13 +2758,15 @@ void GLGizmoEmboss::draw_advanced() &stored_style->prop.char_gap : nullptr; int half_ascent = font_info.ascent / 2; - int min_char_gap = -half_ascent, max_char_gap = half_ascent; - if (rev_slider(tr.char_gap, font_prop.char_gap, def_char_gap, _u8L("Revert gap between characters"), + int min_char_gap = -half_ascent; + int max_char_gap = half_ascent; + FontProp ¤t_prop = current_style.prop; + if (rev_slider(tr.char_gap, current_prop.char_gap, def_char_gap, _u8L("Revert gap between characters"), min_char_gap, max_char_gap, units_fmt, _L("Distance between characters"))){ // Condition prevent recalculation when insertint out of limits value by imgui input - if (!priv::Limits::apply(font_prop.char_gap, priv::limits.char_gap) || - !m_volume->text_configuration->style.prop.char_gap.has_value() || - m_volume->text_configuration->style.prop.char_gap != font_prop.char_gap) { + const std::optional &volume_char_gap = m_volume->text_configuration->style.prop.char_gap; + if (!apply(current_prop.char_gap, limits.char_gap) || + !volume_char_gap.has_value() || volume_char_gap != current_prop.char_gap) { // char gap is stored inside of imgui font atlas m_style_manager.clear_imgui_font(); exist_change = true; @@ -3337,13 +2778,14 @@ void GLGizmoEmboss::draw_advanced() m_imgui->disabled_begin(!is_multiline); auto def_line_gap = stored_style ? &stored_style->prop.line_gap : nullptr; - int min_line_gap = -half_ascent, max_line_gap = half_ascent; - if (rev_slider(tr.line_gap, font_prop.line_gap, def_line_gap, _u8L("Revert gap between lines"), + int min_line_gap = -half_ascent; + int max_line_gap = half_ascent; + if (rev_slider(tr.line_gap, current_prop.line_gap, def_line_gap, _u8L("Revert gap between lines"), min_line_gap, max_line_gap, units_fmt, _L("Distance between lines"))){ // Condition prevent recalculation when insertint out of limits value by imgui input - if (!priv::Limits::apply(font_prop.line_gap, priv::limits.line_gap) || - !m_volume->text_configuration->style.prop.line_gap.has_value() || - m_volume->text_configuration->style.prop.line_gap != font_prop.line_gap) { + const std::optional &volume_line_gap = m_volume->text_configuration->style.prop.line_gap; + if (!apply(current_prop.line_gap, limits.line_gap) || + !volume_line_gap.has_value() || volume_line_gap != current_prop.line_gap) { // line gap is planed to be stored inside of imgui font atlas m_style_manager.clear_imgui_font(); if (font_prop.per_glyph) @@ -3356,41 +2798,39 @@ void GLGizmoEmboss::draw_advanced() // input boldness auto def_boldness = stored_style ? &stored_style->prop.boldness : nullptr; - if (rev_slider(tr.boldness, font_prop.boldness, def_boldness, _u8L("Undo boldness"), - priv::limits.boldness.gui.min, priv::limits.boldness.gui.max, units_fmt, _L("Tiny / Wide glyphs"))){ - if (!priv::Limits::apply(font_prop.boldness, priv::limits.boldness.values) || - !m_volume->text_configuration->style.prop.boldness.has_value() || - m_volume->text_configuration->style.prop.boldness != font_prop.boldness) + if (rev_slider(tr.boldness, current_prop.boldness, def_boldness, _u8L("Undo boldness"), + limits.boldness.gui.min, limits.boldness.gui.max, units_fmt, _L("Tiny / Wide glyphs"))){ + const std::optional &volume_boldness = m_volume->text_configuration->style.prop.boldness; + if (!apply(current_prop.boldness, limits.boldness.values) || + !volume_boldness.has_value() || volume_boldness != current_prop.boldness) exist_change = true; } // input italic auto def_skew = stored_style ? &stored_style->prop.skew : nullptr; - if (rev_slider(tr.skew_ration, font_prop.skew, def_skew, _u8L("Undo letter's skew"), - priv::limits.skew.gui.min, priv::limits.skew.gui.max, "%.2f", _L("Italic strength ratio"))){ - if (!priv::Limits::apply(font_prop.skew, priv::limits.skew.values) || - !m_volume->text_configuration->style.prop.skew.has_value() || - m_volume->text_configuration->style.prop.skew != font_prop.skew) + if (rev_slider(tr.skew_ration, current_prop.skew, def_skew, _u8L("Undo letter's skew"), + limits.skew.gui.min, limits.skew.gui.max, "%.2f", _L("Italic strength ratio"))){ + const std::optional &volume_skew = m_volume->text_configuration->style.prop.skew; + if (!apply(current_prop.skew, limits.skew.values) || + !volume_skew.has_value() ||volume_skew != current_prop.skew) exist_change = true; } // input surface distance - bool allowe_surface_distance = - !m_volume->text_configuration->style.prop.use_surface && - !m_volume->is_the_only_one_part(); - std::optional &distance = font_prop.distance; - float prev_distance = distance.has_value() ? *distance : .0f, - min_distance = -2 * font_prop.emboss, - max_distance = 2 * font_prop.emboss; + bool allowe_surface_distance = !use_surface && !m_volume->is_the_only_one_part(); + std::optional &distance = current_style.distance; + float prev_distance = distance.value_or(.0f); + float min_distance = static_cast(-2 * current_style.projection.depth); + float max_distance = static_cast(2 * current_style.projection.depth); auto def_distance = stored_style ? - &stored_style->prop.distance : nullptr; + &stored_style->distance : nullptr; m_imgui->disabled_begin(!allowe_surface_distance); + bool use_inch = wxGetApp().app_config->get_bool("use_inches"); const std::string undo_move_tooltip = _u8L("Undo translation"); const wxString move_tooltip = _L("Distance of the center of the text to the model surface."); bool is_moved = false; - bool use_inch = wxGetApp().app_config->get_bool("use_inches"); if (use_inch) { std::optional distance_inch; if (distance.has_value()) distance_inch = (*distance * ObjectManipulation::mm_to_in); @@ -3403,9 +2843,9 @@ void GLGizmoEmboss::draw_advanced() max_distance *= ObjectManipulation::mm_to_in; if (rev_slider(tr.from_surface, distance_inch, def_distance, undo_move_tooltip, min_distance, max_distance, "%.3f in", move_tooltip)) { if (distance_inch.has_value()) { - font_prop.distance = *distance_inch * ObjectManipulation::in_to_mm; + distance = *distance_inch * ObjectManipulation::in_to_mm; } else { - font_prop.distance.reset(); + distance.reset(); } is_moved = true; } @@ -3418,83 +2858,77 @@ void GLGizmoEmboss::draw_advanced() if (font_prop.per_glyph){ process(); } else { - m_volume->text_configuration->style.prop.distance = font_prop.distance; - float act_distance = font_prop.distance.has_value() ? *font_prop.distance : .0f; - do_translate(Vec3d::UnitZ() * (act_distance - prev_distance)); + do_local_z_move(m_parent, distance.value_or(.0f) - prev_distance); } } - m_imgui->disabled_end(); + m_imgui->disabled_end(); // allowe_surface_distance // slider for Clock-wise angle in degress // stored angle is optional CCW and in radians // Convert stored value to degress // minus create clock-wise roation from CCW - const std::optional &angle_opt = m_style_manager.get_font_prop().angle; - float angle = angle_opt.has_value() ? *angle_opt: 0.f; + float angle = current_style.angle.value_or(0.f); float angle_deg = static_cast(-angle * 180 / M_PI); float def_angle_deg_val = - (!stored_style || !stored_style->prop.angle.has_value()) ? - 0.f : (*stored_style->prop.angle * -180 / M_PI); + (!stored_style || !stored_style->angle.has_value()) ? + 0.f : (*stored_style->angle * -180 / M_PI); float* def_angle_deg = stored_style ? &def_angle_deg_val : nullptr; if (rev_slider(tr.rotation, angle_deg, def_angle_deg, _u8L("Undo rotation"), - priv::limits.angle.min, priv::limits.angle.max, u8"%.2f °", + limits.angle.min, limits.angle.max, u8"%.2f °", _L("Rotate text Clock-wise."))) { // convert back to radians and CCW - float angle_rad = static_cast(-angle_deg * M_PI / 180.0); - priv::to_range_pi_pi(angle_rad); + double angle_rad = -angle_deg * M_PI / 180.0; + Geometry::to_range_pi_pi(angle_rad); - float diff_angle = angle_rad - angle; - do_rotate(diff_angle); + double diff_angle = angle_rad - angle; + do_local_z_rotate(m_parent, diff_angle); // calc angle after rotation - const GLVolume *gl_volume = get_selected_gl_volume(m_parent.get_selection()); + const Selection &selection = m_parent.get_selection(); + const GLVolume *gl_volume = get_selected_gl_volume(selection); assert(gl_volume != nullptr); assert(m_style_manager.is_active_font()); if (m_style_manager.is_active_font() && gl_volume != nullptr) - m_style_manager.get_font_prop().angle = calc_up(gl_volume->world_matrix(), priv::up_limit); + m_style_manager.get_style().angle = calc_angle(selection); if (font_prop.per_glyph) reinit_text_lines(m_text_lines.get_lines().size()); // recalculate for surface cut - if (font_prop.use_surface || font_prop.per_glyph) + if (use_surface || font_prop.per_glyph) process(); } // Keep up - lock button icon + if (!m_volume->is_the_only_one_part()) { ImGui::SameLine(m_gui_cfg->lock_offset); const IconManager::Icon &icon = get_icon(m_icons, m_keep_up ? IconType::lock : IconType::unlock, IconState::activable); const IconManager::Icon &icon_hover = get_icon(m_icons, m_keep_up ? IconType::lock_bold : IconType::unlock_bold, IconState::activable); const IconManager::Icon &icon_disable = get_icon(m_icons, m_keep_up ? IconType::lock : IconType::unlock, IconState::disabled); - if (button(icon, icon_hover, icon_disable)) { + if (button(icon, icon_hover, icon_disable)) m_keep_up = !m_keep_up; - if (m_keep_up) { - // copy angle to volume - m_volume->text_configuration->style.prop.angle = font_prop.angle; - } - } if (ImGui::IsItemHovered()) ImGui::SetTooltip("%s", (m_keep_up? _u8L("Unlock the text's rotation when moving text along the object's surface."): _u8L("Lock the text's rotation when moving text along the object's surface.") ).c_str()); + } // when more collection add selector if (ff.font_file->infos.size() > 1) { ImGui::Text("%s", tr.collection.c_str()); ImGui::SameLine(m_gui_cfg->advanced_input_offset); ImGui::SetNextItemWidth(m_gui_cfg->input_width); - unsigned int selected = font_prop.collection_number.has_value() ? - *font_prop.collection_number : 0; + unsigned int selected = current_prop.collection_number.value_or(0); if (ImGui::BeginCombo("## Font collection", std::to_string(selected).c_str())) { for (unsigned int i = 0; i < ff.font_file->infos.size(); ++i) { ImGui::PushID(1 << (10 + i)); bool is_selected = (i == selected); if (ImGui::Selectable(std::to_string(i).c_str(), is_selected)) { - if (i == 0) font_prop.collection_number.reset(); - else font_prop.collection_number = i; + if (i == 0) current_prop.collection_number.reset(); + else current_prop.collection_number = i; exist_change = true; } ImGui::PopID(); @@ -3517,29 +2951,26 @@ void GLGizmoEmboss::draw_advanced() if (ImGui::Button(_u8L("Set text to face camera").c_str())) { assert(get_selected_volume(m_parent.get_selection()) == m_volume); const Camera &cam = wxGetApp().plater()->get_camera(); - const FontProp &prop = m_style_manager.get_font_prop(); - if (priv::apply_camera_dir(cam, m_parent, m_keep_up) && - (prop.use_surface || prop.per_glyph)){ - if (prop.per_glyph) - reinit_text_lines(); - process(); - } + auto wanted_up_limit = m_keep_up ? std::optional(UP_LIMIT) : std::optional{}; + if (face_selected_volume_to_camera(cam, m_parent, wanted_up_limit)) + volume_transformation_changed(); } else if (ImGui::IsItemHovered()) { ImGui::SetTooltip("%s", _u8L("Orient the text towards the camera.").c_str()); } + //ImGui::SameLine(); if (ImGui::Button("Re-emboss")) GLGizmoEmboss::re_emboss(*m_volume); #ifdef ALLOW_DEBUG_MODE - ImGui::Text("family = %s", (font_prop.family.has_value() ? - font_prop.family->c_str() : + ImGui::Text("family = %s", (current_prop.family.has_value() ? + current_prop.family->c_str() : " --- ")); - ImGui::Text("face name = %s", (font_prop.face_name.has_value() ? - font_prop.face_name->c_str() : + ImGui::Text("face name = %s", (current_prop.face_name.has_value() ? + current_prop.face_name->c_str() : " --- ")); ImGui::Text("style = %s", - (font_prop.style.has_value() ? font_prop.style->c_str() : + (current_prop.style.has_value() ? current_prop.style->c_str() : " --- ")); - ImGui::Text("weight = %s", (font_prop.weight.has_value() ? - font_prop.weight->c_str() : + ImGui::Text("weight = %s", (current_prop.weight.has_value() ? + current_prop.weight->c_str() : " --- ")); std::string descriptor = style.path; @@ -3556,9 +2987,9 @@ void GLGizmoEmboss::set_minimal_window_size(bool is_advance_edit_style) float diff_y = window_size.y - min_win_size_prev.y; m_is_advanced_edit_style = is_advance_edit_style; const ImVec2 &min_win_size = get_minimal_window_size(); - ImGui::SetWindowSize(ImVec2(0.f, min_win_size.y + diff_y), - ImGuiCond_Always); - priv::change_window_position(m_set_window_offset, true); + ImVec2 new_window_size(0.f, min_win_size.y + diff_y); + ImGui::SetWindowSize(new_window_size, ImGuiCond_Always); + m_set_window_offset = ImGuiWrapper::change_window_position(on_get_name().c_str(), true); } ImVec2 GLGizmoEmboss::get_minimal_window_size() const @@ -3571,8 +3002,8 @@ ImVec2 GLGizmoEmboss::get_minimal_window_size() const else res = m_gui_cfg->minimal_window_size_with_collections; - bool is_object = m_volume->get_object()->volumes.size() == 1; - if (!is_object) + // Can change type of volume + if (!m_volume->is_the_only_one_part()) res.y += m_gui_cfg->height_of_volume_type_selector; return res; } @@ -3585,7 +3016,7 @@ bool GLGizmoEmboss::choose_font_by_wxdialog() data.RestrictSelection(wxFONTRESTRICT_SCALABLE); // set previous selected font EmbossStyle &selected_style = m_style_manager.get_style(); - if (selected_style.type == WxFontUtils::get_actual_type()) { + if (selected_style.type == WxFontUtils::get_current_type()) { std::optional selected_font = WxFontUtils::load_wxFont( selected_style.path); if (selected_font.has_value()) data.SetInitialFont(*selected_font); @@ -3657,7 +3088,7 @@ bool GLGizmoEmboss::choose_true_type_file() // use first valid font for (auto &input_file : input_files) { std::string path = std::string(input_file.c_str()); - std::string name = priv::get_file_name(path); + std::string name = get_file_name(path); //make_unique_name(name, m_font_list); const FontProp& prop = m_style_manager.get_font_prop(); EmbossStyle style{ name, path, EmbossStyle::Type::file_path, prop }; @@ -3670,41 +3101,6 @@ bool GLGizmoEmboss::choose_true_type_file() } #endif // ALLOW_ADD_FONT_BY_FILE -#ifdef ALLOW_DEBUG_MODE -bool GLGizmoEmboss::choose_svg_file() -{ - wxArrayString input_files; - wxString fontDir = wxEmptyString; - wxString selectedFile = wxEmptyString; - wxFileDialog dialog(nullptr, _L("Choose SVG file")+":", fontDir, - selectedFile, file_wildcards(FT_SVG), - wxFD_OPEN | wxFD_FILE_MUST_EXIST); - if (dialog.ShowModal() == wxID_OK) dialog.GetPaths(input_files); - if (input_files.IsEmpty()) return false; - if (input_files.size() != 1) return false; - auto & input_file = input_files.front(); - std::string path = std::string(input_file.c_str()); - std::string name = priv::get_file_name(path); - - NSVGimage *image = nsvgParseFromFile(path.c_str(), "mm", 96.0f); - ExPolygons polys = NSVGUtils::to_ExPolygons(image); - nsvgDelete(image); - - BoundingBox bb; - for (const auto &p : polys) bb.merge(p.contour.points); - const FontProp &fp = m_style_manager.get_font_prop(); - float scale = fp.size_in_mm / std::max(bb.max.x(), bb.max.y()); - auto project = std::make_unique( - std::make_unique(fp.emboss / scale), scale); - indexed_triangle_set its = polygons2model(polys, *project); - return false; - // test store: - // for (auto &poly : polys) poly.scale(1e5); - // SVG svg("converted.svg", BoundingBox(polys.front().contour.points)); - // svg.draw(polys); - //return add_volume(name, its); -} -#endif // ALLOW_DEBUG_MODE void GLGizmoEmboss::create_notification_not_valid_font( const TextConfiguration &tc) @@ -3788,22 +3184,89 @@ void GLGizmoEmboss::init_icons() m_icons = m_icon_manager.init(filenames, size, type); } -const IconManager::Icon &priv::get_icon(const IconManager::VIcons& icons, IconType type, IconState state) { return *icons[(unsigned) type][(unsigned) state]; } -bool priv::draw_button(const IconManager::VIcons &icons, IconType type, bool disable) +static std::size_t hash_value(wxString const &s){ + boost::hash hasher; + return hasher(s.ToStdString()); +} + +// increase number when change struct FacenamesSerializer +constexpr std::uint32_t FACENAMES_VERSION = 1; +struct FacenamesSerializer { + // hash number for unsorted vector of installed font into system + size_t hash = 0; + // assumption that is loadable + std::vector good; + // Can't load for some reason + std::vector bad; +}; + +template void save(Archive &archive, wxString const &d) +{ std::string s(d.ToUTF8().data()); archive(s);} +template void load(Archive &archive, wxString &d) +{ std::string s; archive(s); d = s;} +template void serialize(Archive &ar, FacenamesSerializer &t, const std::uint32_t version) +{ + // When performing a load, the version associated with the class + // is whatever it was when that data was originally serialized + // When we save, we'll use the version that is defined in the macro + if (version != FACENAMES_VERSION) return; + ar(t.hash, t.good, t.bad); +} +CEREAL_CLASS_VERSION(::FacenamesSerializer, FACENAMES_VERSION); // register class version + +///////////// +// private namespace implementation +/////////////// +namespace { + +const IconManager::Icon &get_icon(const IconManager::VIcons& icons, IconType type, IconState state) { + return *icons[(unsigned) type][(unsigned) state]; } + +bool draw_button(const IconManager::VIcons &icons, IconType type, bool disable){ return Slic3r::GUI::button( get_icon(icons, type, IconState::activable), get_icon(icons, type, IconState::hovered), get_icon(icons, type, IconState::disabled), - disable - ); + disable);} + +TextDataBase::TextDataBase(DataBase &&parent, + const FontFileWithCache &font_file, + TextConfiguration &&text_configuration, + const EmbossProjection &projection) + : DataBase(std::move(parent)), m_font_file(font_file) /* copy */, m_text_configuration(std::move(text_configuration)) +{ + assert(m_font_file.has_value()); + shape.projection = projection; // copy + + const FontProp &fp = m_text_configuration.style.prop; + const FontFile &ff = *m_font_file.font_file; + shape.scale = get_text_shape_scale(fp, ff); } -///////////// -// priv namespace implementation -/////////////// +EmbossShape &TextDataBase::create_shape() +{ + if (!shape.shapes_with_ids.empty()) + return shape; -DataBase priv::create_emboss_data_base(const std::string &text, + // create shape by configuration + const char *text = m_text_configuration.text.c_str(); + std::wstring text_w = boost::nowide::widen(text); + const FontProp &fp = m_text_configuration.style.prop; + auto was_canceled = [&c = cancel](){ return c->load(); }; + + shape.shapes_with_ids = text2vshapes(m_font_file, text_w, fp, was_canceled); + return shape; +} + +void TextDataBase::write(ModelVolume &volume) const +{ + DataBase::write(volume); + volume.text_configuration = m_text_configuration; // copy + assert(volume.emboss_shape.has_value()); +} + +std::unique_ptr create_emboss_data_base(const std::string &text, StyleManager &style_manager, TextLinesModel &text_lines, const Selection &selection, @@ -3824,14 +3287,13 @@ DataBase priv::create_emboss_data_base(const std::string &text, return {}; // no active font in style, should never happend !!! } - const EmbossStyle &es = style_manager.get_style(); + const StyleManager::Style &style = style_manager.get_style(); // actualize font path - during changes in gui it could be corrupted // volume must store valid path assert(style_manager.get_wx_font().IsOk()); - assert(es.path.compare(WxFontUtils::store_wxFont(style_manager.get_wx_font())) == 0); - TextConfiguration tc{es, text}; + assert(style.path.compare(WxFontUtils::store_wxFont(style_manager.get_wx_font())) == 0); - if (es.prop.per_glyph) { + if (style.prop.per_glyph) { if (!text_lines.is_init()) init_text_lines(text_lines, selection, style_manager); } else @@ -3846,146 +3308,26 @@ DataBase priv::create_emboss_data_base(const std::string &text, cancel->store(true); // create new shared ptr to cancel new job cancel = std::make_shared>(false); - return Slic3r::GUI::Emboss::DataBase{style_manager.get_font_file_with_cache(), tc, volume_name, is_outside, cancel, text_lines.get_lines()}; + DataBase base(volume_name, cancel); + base.is_outside = is_outside; + base.text_lines = text_lines.get_lines(); + base.from_surface = style.distance; + + FontFileWithCache &font = style_manager.get_font_file_with_cache(); + TextConfiguration tc{static_cast(style), text}; + return std::make_unique(std::move(base), font, std::move(tc), style.projection); } -void priv::start_create_object_job(DataBase &emboss_data, const Vec2d &coor) +CreateVolumeParams create_input(GLCanvas3D &canvas, const StyleManager::Style &style, RaycastManager& raycaster, ModelVolumeType volume_type) { - // start creation of new object + auto gizmo = static_cast(GLGizmosManager::Emboss); + const GLVolume *gl_volume = get_first_hovered_gl_volume(canvas); Plater *plater = wxGetApp().plater(); - const Camera &camera = plater->get_camera(); - const Pointfs &bed_shape = plater->build_volume().bed_shape(); - - // can't create new object with distance from surface - FontProp &prop = emboss_data.text_configuration.style.prop; - if (prop.distance.has_value()) prop.distance.reset(); - - // can't create new object with using surface - if (prop.use_surface) - prop.use_surface = false; - - // Transform3d volume_tr = priv::create_transformation_on_bed(mouse_pos, camera, bed_shape, prop.emboss / 2); - DataCreateObject data{std::move(emboss_data), coor, camera, bed_shape}; - auto job = std::make_unique(std::move(data)); - Worker &worker = plater->get_ui_job_worker(); - queue_job(worker, std::move(job)); + return CreateVolumeParams{canvas, plater->get_camera(), plater->build_volume(), + plater->get_ui_job_worker(), volume_type, raycaster, gizmo, gl_volume, style.distance, style.angle}; } -void priv::start_create_volume_job(const ModelObject *object, - const Transform3d volume_trmat, - DataBase &emboss_data, - ModelVolumeType volume_type) -{ - bool &use_surface = emboss_data.text_configuration.style.prop.use_surface; - std::unique_ptr job; - if (use_surface) { - // Model to cut surface from. - SurfaceVolumeData::ModelSources sources = create_sources(object->volumes); - if (sources.empty()) { - use_surface = false; - } else { - SurfaceVolumeData sfvd{volume_trmat, std::move(sources)}; - CreateSurfaceVolumeData surface_data{std::move(emboss_data), std::move(sfvd), volume_type, object->id()}; - job = std::make_unique(std::move(surface_data)); - } - } - if (!use_surface) { - // create volume - DataCreateVolume data{std::move(emboss_data), volume_type, object->id(), volume_trmat}; - job = std::make_unique(std::move(data)); - } - - Plater *plater = wxGetApp().plater(); - Worker &worker = plater->get_ui_job_worker(); - queue_job(worker, std::move(job)); -} - -bool priv::start_create_volume_on_surface_job(DataBase &emboss_data, - ModelVolumeType volume_type, - const Vec2d &screen_coor, - const GLVolume *gl_volume, - RaycastManager &raycaster, - TextLinesModel &text_lines, - StyleManager &style_manager, - GLCanvas3D &canvas) -{ - assert(gl_volume != nullptr); - if (gl_volume == nullptr) return false; - if (gl_volume->volume_idx() < 0) return false; - - Plater *plater = wxGetApp().plater(); - const ModelObjectPtrs &objects = plater->model().objects; - - int object_idx = gl_volume->object_idx(); - if (object_idx < 0 || static_cast(object_idx) >= objects.size()) return false; - const ModelObject *obj_ptr = objects[object_idx]; - if (obj_ptr == nullptr) return false; - const ModelObject &obj = *obj_ptr; - size_t vol_id = obj.volumes[gl_volume->volume_idx()]->id().id; - auto cond = RaycastManager::AllowVolumes({vol_id}); - - RaycastManager::Meshes meshes = create_meshes(canvas, cond); - raycaster.actualize(obj, &cond, &meshes); - - const Camera &camera = plater->get_camera(); - std::optional hit = ray_from_camera(raycaster, screen_coor, camera, &cond); - - // context menu for add text could be open only by right click on an - // object. After right click, object is selected and object_idx is set - // also hit must exist. But there is options to add text by object list - if (!hit.has_value()) - return false; - - // Create result volume transformation - Transform3d surface_trmat = create_transformation_onto_surface(hit->position, hit->normal, priv::up_limit); - const FontProp &font_prop = emboss_data.text_configuration.style.prop; - apply_transformation(font_prop, surface_trmat); - Transform3d instance = gl_volume->get_instance_transformation().get_matrix(); - Transform3d volume_trmat = instance.inverse() * surface_trmat; - - if (font_prop.per_glyph){ - init_new_text_line(text_lines, volume_trmat, obj, style_manager); - emboss_data.text_lines = text_lines.get_lines(); - } - start_create_volume_job(obj_ptr, volume_trmat, emboss_data, volume_type); - return true; -} - -void priv::find_closest_volume(const Selection &selection, - const Vec2d &screen_center, - const Camera &camera, - const ModelObjectPtrs &objects, - Vec2d *closest_center, - const GLVolume **closest_volume) -{ - assert(closest_center != nullptr); - assert(closest_volume != nullptr); - assert(*closest_volume == nullptr); - const Selection::IndicesList &indices = selection.get_volume_idxs(); - assert(!indices.empty()); // no selected volume - if (indices.empty()) return; - - double center_sq_distance = std::numeric_limits::max(); - for (unsigned int id : indices) { - const GLVolume *gl_volume = selection.get_volume(id); - const ModelVolume *volume = get_model_volume(*gl_volume, objects); - if (volume == nullptr || !volume->is_model_part()) continue; - Slic3r::Polygon hull = CameraUtils::create_hull2d(camera, *gl_volume); - Vec2d c = hull.centroid().cast(); - Vec2d d = c - screen_center; - bool is_bigger_x = std::fabs(d.x()) > std::fabs(d.y()); - if ((is_bigger_x && d.x() * d.x() > center_sq_distance) || - (!is_bigger_x && d.y() * d.y() > center_sq_distance)) continue; - - double distance = d.squaredNorm(); - if (center_sq_distance < distance) continue; - center_sq_distance = distance; - *closest_center = c; - *closest_volume = gl_volume; - } -} - -ImVec2 priv::calc_fine_position(const Selection &selection, const ImVec2 &windows_size, const Size &canvas_size) +ImVec2 calc_fine_position(const Selection &selection, const ImVec2 &windows_size, const Size &canvas_size) { const Selection::IndicesList indices = selection.get_volume_idxs(); // no selected volume @@ -4004,86 +3346,383 @@ ImVec2 priv::calc_fine_position(const Selection &selection, const ImVec2 &window return offset; } -// Need internals to get window -#include "imgui/imgui_internal.h" -void priv::change_window_position(std::optional& output_window_offset, bool try_to_fix) { - const char* name = "Emboss"; - ImGuiWindow *window = ImGui::FindWindowByName(name); - // is window just created - if (window == NULL) - return; - - // position of window on screen - ImVec2 position = window->Pos; - ImVec2 size = window->SizeFull; - - // screen size - ImVec2 screen = ImGui::GetMainViewport()->Size; - - if (position.x < 0) { - if (position.y < 0) - output_window_offset = ImVec2(0, 0); - else - output_window_offset = ImVec2(0, position.y); - } else if (position.y < 0) { - output_window_offset = ImVec2(position.x, 0); - } else if (screen.x < (position.x + size.x)) { - if (screen.y < (position.y + size.y)) - output_window_offset = ImVec2(screen.x - size.x, screen.y - size.y); - else - output_window_offset = ImVec2(screen.x - size.x, position.y); - } else if (screen.y < (position.y + size.y)) { - output_window_offset = ImVec2(position.x, screen.y - size.y); +std::string concat(std::vector data) { + std::stringstream ss; + for (const auto &d : data) + ss << d.c_str() << ", "; + return ss.str(); } - if (!try_to_fix && output_window_offset.has_value()) - output_window_offset = ImVec2(-1, -1); // Cannot +boost::filesystem::path get_fontlist_cache_path(){ + return boost::filesystem::path(data_dir()) / "cache" / "fonts.cereal"; } -bool priv::apply_camera_dir(const Camera &camera, GLCanvas3D &canvas, bool keep_up) { - const Vec3d &cam_dir = camera.get_dir_forward(); +bool store(const Facenames &facenames) { + std::string cache_path = get_fontlist_cache_path().string(); + boost::nowide::ofstream file(cache_path, std::ios::binary); + ::cereal::BinaryOutputArchive archive(file); + std::vector good; + good.reserve(facenames.faces.size()); + for (const FaceName &face : facenames.faces) good.push_back(face.wx_name); + FacenamesSerializer data = {facenames.hash, good, facenames.bad}; - Selection &sel = canvas.get_selection(); - if (sel.is_empty()) return false; - - // camera direction transformed into volume coordinate system - Transform3d to_world = world_matrix_fixed(sel); - Vec3d cam_dir_tr = to_world.inverse().linear() * cam_dir; - cam_dir_tr.normalize(); + assert(std::is_sorted(data.bad.begin(), data.bad.end())); + assert(std::is_sorted(data.good.begin(), data.good.end())); - Vec3d emboss_dir(0., 0., -1.); - - // check wether cam_dir is already used - if (is_approx(cam_dir_tr, emboss_dir)) return false; - - assert(sel.get_volume_idxs().size() == 1); - GLVolume *gl_volume = sel.get_volume(*sel.get_volume_idxs().begin()); - - Transform3d vol_rot; - Transform3d vol_tr = gl_volume->get_volume_transformation().get_matrix(); - // check whether cam_dir is opposit to emboss dir - if (is_approx(cam_dir_tr, -emboss_dir)) { - // rotate 180 DEG by y - vol_rot = Eigen::AngleAxis(M_PI_2, Vec3d(0., 1., 0.)); - } else { - // calc params for rotation - Vec3d axe = emboss_dir.cross(cam_dir_tr); - axe.normalize(); - double angle = std::acos(emboss_dir.dot(cam_dir_tr)); - vol_rot = Eigen::AngleAxis(angle, axe); + try { + archive(data); + } catch (const std::exception &ex) { + BOOST_LOG_TRIVIAL(error) << "Failed to write fontlist cache - " << cache_path << ex.what(); + return false; } - - Vec3d offset = vol_tr * Vec3d::Zero(); - Vec3d offset_inv = vol_rot.inverse() * offset; - Transform3d res = vol_tr * - Eigen::Translation(-offset) * - vol_rot * - Eigen::Translation(offset_inv); - //Transform3d res = vol_tr * vol_rot; - gl_volume->set_volume_transformation(Geometry::Transformation(res)); - get_model_volume(*gl_volume, sel.get_model()->objects)->set_transformation(res); return true; } +bool load(Facenames &facenames) { + boost::filesystem::path path = get_fontlist_cache_path(); + std::string path_str = path.string(); + if (!boost::filesystem::exists(path)) { + BOOST_LOG_TRIVIAL(warning) << "Fontlist cache - '" << path_str << "' does not exists."; + return false; + } + boost::nowide::ifstream file(path_str, std::ios::binary); + cereal::BinaryInputArchive archive(file); + + FacenamesSerializer data; + try { + archive(data); + } catch (const std::exception &ex) { + BOOST_LOG_TRIVIAL(error) << "Failed to load fontlist cache - '" << path_str << "'. Exception: " << ex.what(); + return false; + } + + assert(std::is_sorted(data.bad.begin(), data.bad.end())); + assert(std::is_sorted(data.good.begin(), data.good.end())); + + facenames.hash = data.hash; + facenames.faces.reserve(data.good.size()); + for (const wxString &face : data.good) + facenames.faces.push_back({face}); + facenames.bad = data.bad; + return true; +} + +void init_truncated_names(Facenames &face_names, float max_width) +{ + for (FaceName &face : face_names.faces) { + std::string name_str(face.wx_name.ToUTF8().data()); + face.name_truncated = ImGuiWrapper::trunc(name_str, max_width); + } + face_names.has_truncated_names = true; +} + +void init_face_names(Facenames &face_names) +{ + Timer t("enumerate_fonts"); + if (face_names.is_init) return; + face_names.is_init = true; + + // to reload fonts from system, when install new one + wxFontEnumerator::InvalidateCache(); + + // try load cache + // Only not OS enumerated face has hash value 0 + if (face_names.hash == 0) { + load(face_names); + face_names.has_truncated_names = false; + } + using namespace std::chrono; + steady_clock::time_point enumerate_start = steady_clock::now(); + ScopeGuard sg([&enumerate_start, &face_names = face_names]() { + steady_clock::time_point enumerate_end = steady_clock::now(); + long long enumerate_duration = duration_cast(enumerate_end - enumerate_start).count(); + BOOST_LOG_TRIVIAL(info) << "OS enumerate " << face_names.faces.size() << " fonts " + << "(+ " << face_names.bad.size() << " can't load " + << "= " << face_names.faces.size() + face_names.bad.size() << " fonts) " + << "in " << enumerate_duration << " ms\n" << concat(face_names.bad); + }); + wxArrayString facenames = wxFontEnumerator::GetFacenames(face_names.encoding); + size_t hash = boost::hash_range(facenames.begin(), facenames.end()); + // Zero value is used as uninitialized hash + if (hash == 0) hash = 1; + // check if it is same as last time + if (face_names.hash == hash) { + // no new installed font + BOOST_LOG_TRIVIAL(info) << "Same FontNames hash, cache is used. " + << "For clear cache delete file: " << get_fontlist_cache_path().string(); + return; +} + + BOOST_LOG_TRIVIAL(info) << ((face_names.hash == 0) ? + "FontName list is generate from scratch." : + "Hash are different. Only previous bad fonts are used and set again as bad"); + face_names.hash = hash; + + // validation lambda + auto is_valid_font = [encoding = face_names.encoding, bad = face_names.bad /*copy*/](const wxString &name) { + if (name.empty()) return false; + + // vertical font start with @, we will filter it out + // Not sure if it is only in Windows so filtering is on all platforms + if (name[0] == '@') return false; + + // previously detected bad font + auto it = std::lower_bound(bad.begin(), bad.end(), name); + if (it != bad.end() && *it == name) return false; + + wxFont wx_font(wxFontInfo().FaceName(name).Encoding(encoding)); + //* + // Faster chech if wx_font is loadable but not 100% + // names could contain not loadable font + if (!WxFontUtils::can_load(wx_font)) return false; + + /*/ + // Slow copy of font files to try load font + // After this all files are loadable + auto font_file = WxFontUtils::create_font_file(wx_font); + if (font_file == nullptr) + return false; // can't create font file + // */ + return true; + }; + + face_names.faces.clear(); + face_names.bad.clear(); + face_names.faces.reserve(facenames.size()); + std::sort(facenames.begin(), facenames.end()); + for (const wxString &name : facenames) { + if (is_valid_font(name)) { + face_names.faces.push_back({name}); + }else{ + face_names.bad.push_back(name); + } + } + assert(std::is_sorted(face_names.bad.begin(), face_names.bad.end())); + face_names.has_truncated_names = false; + store(face_names); +} + +void draw_font_preview(FaceName &face, const std::string& text, Facenames &faces, const GuiCfg &cfg, bool is_visible){ + // Limit for opened font files at one moment + unsigned int &count_opened_fonts = faces.count_opened_font_files; + // Size of texture + ImVec2 size(cfg.face_name_size.x(), cfg.face_name_size.y()); + float count_cached_textures_f = static_cast(faces.count_cached_textures); + std::string state_text; + // uv0 and uv1 set to pixel 0,0 in texture + ImVec2 uv0(0.f, 0.f), uv1(1.f / size.x, 1.f / size.y / count_cached_textures_f); + if (face.is_created != nullptr) { + // not created preview + if (*face.is_created) { + // Already created preview + size_t texture_index = face.texture_index; + uv0 = ImVec2(0.f, texture_index / count_cached_textures_f); + uv1 = ImVec2(1.f, (texture_index + 1) / count_cached_textures_f); + } else { + // Not finished preview + if (is_visible) { + // when not canceled still loading + state_text = (face.cancel->load()) ? + " " + _u8L("No symbol"): + " ... " + _u8L("Loading"); + } else { + // not finished and not visible cancel job + face.is_created = nullptr; + face.cancel->store(true); + } + } + } else if (is_visible && count_opened_fonts < cfg.max_count_opened_font_files) { + ++count_opened_fonts; + face.cancel = std::make_shared(false); + face.is_created = std::make_shared(false); + + const unsigned char gray_level = 5; + // format type and level must match to texture data + const GLenum format = GL_RGBA, type = GL_UNSIGNED_BYTE; + const GLint level = 0; + // select next texture index + size_t texture_index = (faces.texture_index + 1) % faces.count_cached_textures; + + // set previous cach as deleted + for (FaceName &f : faces.faces) + if (f.texture_index == texture_index) { + if (f.cancel != nullptr) f.cancel->store(true); + f.is_created = nullptr; + } + + faces.texture_index = texture_index; + face.texture_index = texture_index; + + // render text to texture + FontImageData data{ + text, + face.wx_name, + faces.encoding, + faces.texture_id, + faces.texture_index, + cfg.face_name_size, + gray_level, + format, + type, + level, + &count_opened_fonts, + face.cancel, // copy + face.is_created // copy + }; + auto job = std::make_unique(std::move(data)); + auto &worker = wxGetApp().plater()->get_ui_job_worker(); + queue_job(worker, std::move(job)); + } else { + // cant start new thread at this moment so wait in queue + state_text = " ... " + _u8L("In queue"); + } + + if (!state_text.empty()) { + ImGui::SameLine(cfg.face_name_texture_offset_x); + ImGui::Text("%s", state_text.c_str()); + } + + ImGui::SameLine(cfg.face_name_texture_offset_x); + ImTextureID tex_id = (void *) (intptr_t) faces.texture_id; + ImGui::Image(tex_id, size, uv0, uv1); +} + +GuiCfg create_gui_configuration() +{ + GuiCfg cfg; // initialize by default values; + + float line_height = ImGui::GetTextLineHeight(); + float line_height_with_spacing = ImGui::GetTextLineHeightWithSpacing(); + float space = line_height_with_spacing - line_height; + const ImGuiStyle &style = ImGui::GetStyle(); + + cfg.max_style_name_width = ImGui::CalcTextSize("Maximal font name, extended").x; + + cfg.icon_width = static_cast(std::ceil(line_height)); + // make size pair number + if (cfg.icon_width % 2 != 0) ++cfg.icon_width; + + cfg.delete_pos_x = cfg.max_style_name_width + space; + const float count_line_of_text = 3.f; + cfg.text_size = ImVec2(-FLT_MIN, line_height_with_spacing * count_line_of_text); + ImVec2 letter_m_size = ImGui::CalcTextSize("M"); + const float count_letter_M_in_input = 12.f; + cfg.input_width = letter_m_size.x * count_letter_M_in_input; + GuiCfg::Translations &tr = cfg.translations; + + // TRN - Input label. Be short as possible + // Select look of letter shape + tr.font = _u8L("Font"); + // TRN - Input label. Be short as possible + // Height of one text line - Font Ascent + tr.height = _u8L("Height"); + // TRN - Input label. Be short as possible + // Size in emboss direction + tr.depth = _u8L("Depth"); + + float max_text_width = std::max({ + ImGui::CalcTextSize(tr.font.c_str()).x, + ImGui::CalcTextSize(tr.height.c_str()).x, + ImGui::CalcTextSize(tr.depth.c_str()).x}); + cfg.indent = static_cast(cfg.icon_width); + cfg.input_offset = style.WindowPadding.x + cfg.indent + max_text_width + space; + + // TRN - Input label. Be short as possible + // Copy surface of model on surface of the embossed text + tr.use_surface = _u8L("Use surface"); + // TRN - Input label. Be short as possible + // Option to change projection on curved surface + // for each character(glyph) in text separately + tr.per_glyph = _u8L("Per glyph"); + // TRN - Input label. Be short as possible + // Align Top|Middle|Bottom and Left|Center|Right + tr.alignment = _u8L("Alignment"); + // TRN - Input label. Be short as possible + tr.char_gap = _u8L("Char gap"); + // TRN - Input label. Be short as possible + tr.line_gap = _u8L("Line gap"); + // TRN - Input label. Be short as possible + tr.boldness = _u8L("Boldness"); + + // TRN - Input label. Be short as possible + // Like Font italic + tr.skew_ration = _u8L("Skew ratio"); + + // TRN - Input label. Be short as possible + // Distance from model surface to be able + // move text as part fully into not flat surface + // move text as modifier fully out of not flat surface + tr.from_surface = _u8L("From surface"); + + // TRN - Input label. Be short as possible + // Angle between Y axis and text line direction. + tr.rotation = _u8L("Rotation"); + + // TRN - Input label. Be short as possible + // Keep vector from bottom to top of text aligned with printer Y axis + tr.keep_up = _u8L("Keep up"); + + // TRN - Input label. Be short as possible. + // Some Font file contain multiple fonts inside and + // this is numerical selector of font inside font collections + tr.collection = _u8L("Collection"); + + float max_advanced_text_width = std::max({ + ImGui::CalcTextSize(tr.use_surface.c_str()).x, + ImGui::CalcTextSize(tr.per_glyph.c_str()).x, + ImGui::CalcTextSize(tr.alignment.c_str()).x, + ImGui::CalcTextSize(tr.char_gap.c_str()).x, + ImGui::CalcTextSize(tr.line_gap.c_str()).x, + ImGui::CalcTextSize(tr.boldness.c_str()).x, + ImGui::CalcTextSize(tr.skew_ration.c_str()).x, + ImGui::CalcTextSize(tr.from_surface.c_str()).x, + ImGui::CalcTextSize(tr.rotation.c_str()).x + cfg.icon_width + 2*space, + ImGui::CalcTextSize(tr.keep_up.c_str()).x, + ImGui::CalcTextSize(tr.collection.c_str()).x }); + cfg.advanced_input_offset = max_advanced_text_width + + 3 * space + cfg.indent; + + cfg.lock_offset = cfg.advanced_input_offset - (cfg.icon_width + space); + // calculate window size + float window_title = line_height + 2*style.FramePadding.y + 2 * style.WindowTitleAlign.y; + float input_height = line_height_with_spacing + 2*style.FramePadding.y; + float tree_header = line_height_with_spacing; + float separator_height = 2 + style.FramePadding.y; + + // "Text is to object" + radio buttons + cfg.height_of_volume_type_selector = separator_height + line_height_with_spacing + input_height; + + float window_height = + window_title + // window title + cfg.text_size.y + // text field + input_height * 4 + // font name + height + depth + style selector + tree_header + // advance tree + separator_height + // presets separator line + line_height_with_spacing + // "Presets" + 2 * style.WindowPadding.y; + float window_width = cfg.input_offset + cfg.input_width + 2*style.WindowPadding.x + + 2 * (cfg.icon_width + space); + cfg.minimal_window_size = ImVec2(window_width, window_height); + + // 9 = useSurface, charGap, lineGap, bold, italic, surfDist, rotation, keepUp, textFaceToCamera + // 4 = 1px for fix each edit image of drag float + float advance_height = input_height * 10 + 9; + cfg.minimal_window_size_with_advance = + ImVec2(cfg.minimal_window_size.x, + cfg.minimal_window_size.y + advance_height); + + cfg.minimal_window_size_with_collections = + ImVec2(cfg.minimal_window_size_with_advance.x, + cfg.minimal_window_size_with_advance.y + input_height); + + int max_style_image_width = static_cast(std::round(cfg.max_style_name_width/2 - 2 * style.FramePadding.x)); + int max_style_image_height = static_cast(std::round(1.5 * input_height)); + cfg.max_style_image_size = Vec2i(max_style_image_width, max_style_image_height); + cfg.face_name_size = Vec2i(cfg.input_width, line_height_with_spacing); + cfg.face_name_texture_offset_x = cfg.face_name_size.x() + space; + return cfg; +} +} // namespace + // any existing icon filename to not influence GUI const std::string GLGizmoEmboss::M_ICON_FILENAME = "cut.svg"; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp index 4efa37f..d1aff65 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp @@ -5,7 +5,7 @@ #include "GLGizmoRotate.hpp" #include "slic3r/GUI/IconManager.hpp" #include "slic3r/GUI/SurfaceDrag.hpp" -#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/I18N.hpp" // TODO: not needed #include "slic3r/GUI/TextLines.hpp" #include "slic3r/Utils/RaycastManager.hpp" #include "slic3r/Utils/EmbossStyleManager.hpp" @@ -16,7 +16,6 @@ #include "libslic3r/Emboss.hpp" #include "libslic3r/Point.hpp" -#include "libslic3r/Model.hpp" #include "libslic3r/TextConfiguration.hpp" #include @@ -33,7 +32,7 @@ namespace Slic3r::GUI { class GLGizmoEmboss : public GLGizmoBase { public: - GLGizmoEmboss(GLCanvas3D& parent); + explicit GLGizmoEmboss(GLCanvas3D& parent); //B34 void create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos, std::string m_text); @@ -43,12 +42,12 @@ public: /// /// Object part / Negative volume / Modifier /// Define position of new volume - void create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos); + bool create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos); /// /// Create new text without given position /// /// Object part / Negative volume / Modifier - void create_volume(ModelVolumeType volume_type); + bool create_volume(ModelVolumeType volume_type); //B34 void change_height(double height); @@ -65,6 +64,12 @@ public: /// True on success start job otherwise False bool do_mirror(size_t axis); + /// + /// Call on change inside of object conatining projected volume + /// + /// Way to stop re_emboss job + /// True on success otherwise False + static bool re_emboss(const ModelVolume &text, std::shared_ptr> job_cancel = nullptr); protected: bool on_init() override; std::string on_get_name() const override; @@ -90,10 +95,10 @@ protected: /// Propagete normaly return false. bool on_mouse(const wxMouseEvent &mouse_event) override; - bool wants_enter_leave_snapshots() const override { return true; } - std::string get_gizmo_entering_text() const override { return _u8L("Enter emboss gizmo"); } - std::string get_gizmo_leaving_text() const override { return _u8L("Leave emboss gizmo"); } - std::string get_action_snapshot_name() const override { return _u8L("Embossing actions"); } + bool wants_enter_leave_snapshots() const override; + std::string get_gizmo_entering_text() const override; + std::string get_gizmo_leaving_text() const override; + std::string get_action_snapshot_name() const override; private: void volume_transformation_changing(); void volume_transformation_changed(); @@ -111,7 +116,6 @@ private: void draw_window(); void draw_text_input(); void draw_model_type(); - void fix_transformation(const FontProp &from, const FontProp &to); void draw_style_list(); void draw_delete_style_button(); void draw_style_rename_popup(); @@ -120,8 +124,6 @@ private: void draw_style_save_as_popup(); void draw_style_add_button(); void init_font_name_texture(); - struct FaceName; - void draw_font_preview(FaceName &face, bool is_visible); void draw_font_list_line(); void draw_font_list(); void draw_height(bool use_inch); @@ -130,8 +132,6 @@ private: // call after set m_style_manager.get_style().prop.size_in_mm bool set_height(); - // call after set m_style_manager.get_style().prop.emboss - bool set_depth(); bool draw_italic_button(); bool draw_bold_button(); @@ -139,30 +139,25 @@ private: bool select_facename(const wxString& facename); - void do_translate(const Vec3d& relative_move); - void do_rotate(float relative_z_angle); - - bool rev_input_mm(const std::string &name, float &value, const float *default_value, - const std::string &undo_tooltip, float step, float step_fast, const char *format, - bool use_inch, const std::optional& scale); + template bool rev_input_mm(const std::string &name, T &value, const T *default_value, + const std::string &undo_tooltip, T step, T step_fast, const char *format, bool use_inch, const std::optional& scale) const; /// /// Reversible input float with option to restor default value /// TODO: make more general, static and move to ImGuiWrapper /// /// True when value changed otherwise FALSE. - bool rev_input(const std::string &name, float &value, const float *default_value, - const std::string &undo_tooltip, float step, float step_fast, const char *format, - ImGuiInputTextFlags flags = 0); - bool rev_checkbox(const std::string &name, bool &value, const bool* default_value, const std::string &undo_tooltip); + template bool rev_input(const std::string &name, T &value, const T *default_value, + const std::string &undo_tooltip, T step, T step_fast, const char *format, ImGuiInputTextFlags flags = 0) const; + bool rev_checkbox(const std::string &name, bool &value, const bool* default_value, const std::string &undo_tooltip) const; bool rev_slider(const std::string &name, std::optional& value, const std::optional *default_value, - const std::string &undo_tooltip, int v_min, int v_max, const std::string &format, const wxString &tooltip); + const std::string &undo_tooltip, int v_min, int v_max, const std::string &format, const wxString &tooltip) const; bool rev_slider(const std::string &name, std::optional& value, const std::optional *default_value, - const std::string &undo_tooltip, float v_min, float v_max, const std::string &format, const wxString &tooltip); + const std::string &undo_tooltip, float v_min, float v_max, const std::string &format, const wxString &tooltip) const; bool rev_slider(const std::string &name, float &value, const float *default_value, - const std::string &undo_tooltip, float v_min, float v_max, const std::string &format, const wxString &tooltip); - template - bool revertible(const std::string &name, T &value, const T *default_value, const std::string &undo_tooltip, float undo_offset, Draw draw); + const std::string &undo_tooltip, float v_min, float v_max, const std::string &format, const wxString &tooltip) const; + template bool revertible(const std::string &name, T &value, const T *default_value, + const std::string &undo_tooltip, float undo_offset, Draw draw) const; bool m_should_set_minimal_windows_size = false; void set_minimal_window_size(bool is_advance_edit_style); @@ -174,71 +169,13 @@ private: void on_mouse_change_selection(const wxMouseEvent &mouse_event); // When open text loaded from .3mf it could be written with unknown font - bool m_is_unknown_font; + bool m_is_unknown_font = false; void create_notification_not_valid_font(const TextConfiguration& tc); void create_notification_not_valid_font(const std::string& text); void remove_notification_not_valid_font(); - // This configs holds GUI layout size given by translated texts. - // etc. When language changes, GUI is recreated and this class constructed again, - // so the change takes effect. (info by GLGizmoFdmSupports.hpp) - struct GuiCfg - { - // Detect invalid config values when change monitor DPI - double screen_scale; - float main_toolbar_height; - - // Zero means it is calculated in init function - ImVec2 minimal_window_size = ImVec2(0, 0); - ImVec2 minimal_window_size_with_advance = ImVec2(0, 0); - ImVec2 minimal_window_size_with_collections = ImVec2(0, 0); - float height_of_volume_type_selector = 0.f; - float input_width = 0.f; - float delete_pos_x = 0.f; - float max_style_name_width = 0.f; - unsigned int icon_width = 0; - - // maximal width and height of style image - Vec2i max_style_image_size = Vec2i(0, 0); - - float indent = 0.f; - float input_offset = 0.f; - float advanced_input_offset = 0.f; - - float lock_offset = 0.f; - - ImVec2 text_size; - - // maximal size of face name image - Vec2i face_name_size = Vec2i(100, 0); - float face_name_texture_offset_x = 0.f; - - // maximal texture generate jobs running at once - unsigned int max_count_opened_font_files = 10; - - // Only translations needed for calc GUI size - struct Translations - { - std::string font; - std::string height; - std::string depth; - - // advanced - std::string use_surface; - std::string per_glyph; - std::string alignment; - std::string char_gap; - std::string line_gap; - std::string boldness; - std::string skew_ration; - std::string from_surface; - std::string rotation; - std::string collection; - }; - Translations translations; - }; - std::optional m_gui_cfg; - static GuiCfg create_gui_configuration(); + struct GuiCfg; + std::unique_ptr m_gui_cfg; // Is open tree with advanced options bool m_is_advanced_edit_style = false; @@ -252,62 +189,9 @@ private: // Keep information about stored styles and loaded actual style to compare with Emboss::StyleManager m_style_manager; - struct FaceName{ - wxString wx_name; - std::string name_truncated = ""; - size_t texture_index = 0; - // State for generation of texture - // when start generate create share pointers - std::shared_ptr> cancel = nullptr; - // R/W only on main thread - finalize of job - std::shared_ptr is_created = nullptr; - }; - - // Keep sorted list of loadable face names - struct Facenames - { - // flag to keep need of enumeration fonts from OS - // false .. wants new enumeration check by Hash - // true .. already enumerated(During opened combo box) - bool is_init = false; - - bool has_truncated_names = false; - - // data of can_load() faces - std::vector faces = {}; - // Sorter set of Non valid face names in OS - std::vector bad = {}; - - // Configuration of font encoding - static constexpr wxFontEncoding encoding = wxFontEncoding::wxFONTENCODING_SYSTEM; - - // Identify if preview texture exists - GLuint texture_id = 0; - - // protection for open too much font files together - // Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Yaru/48x48/status/image-missing.png: Error opening file /usr/share/icons/Yaru/48x48/status/image-missing.png: Too many open files (g-io-error-quark, 31) - // This variable must exist until no CreateFontImageJob is running - unsigned int count_opened_font_files = 0; - - // Configuration for texture height - const int count_cached_textures = 32; - - // index for new generated texture index(must be lower than count_cached_textures) - size_t texture_index = 0; - - // hash created from enumerated font from OS - // check when new font was installed - size_t hash = 0; - - // filtration pattern - std::string search = ""; - std::vector hide; // result of filtration - } m_face_names; - static bool store(const Facenames &facenames); - static bool load(Facenames &facenames); - - static void init_face_names(Facenames &facenames); - static void init_truncated_names(Facenames &face_names, float max_width); + // pImpl to hide implementation of FaceNames to .cpp file + struct Facenames; // forward declaration + std::unique_ptr m_face_names; // Text to emboss std::string m_text; // Sequence of Unicode UTF8 symbols @@ -317,7 +201,7 @@ private: // current selected volume // NOTE: Be carefull could be uninitialized (removed from Model) - ModelVolume *m_volume; + ModelVolume *m_volume = nullptr; // When work with undo redo stack there could be situation that // m_volume point to unexisting volume so One need also objectID @@ -327,7 +211,7 @@ private: bool m_text_contain_unknown_glyph = false; // cancel for previous update of volume to cancel finalize part - std::shared_ptr> m_job_cancel; + std::shared_ptr> m_job_cancel = nullptr; // Keep information about curvature of text line around surface TextLinesModel m_text_lines; @@ -341,8 +225,8 @@ private: // Keep data about dragging only during drag&drop std::optional m_surface_drag; - // TODO: it should be accessible by other gizmo too. - // May be move to plater? + // Keep old scene triangle data in AABB trees, + // all the time it need actualize before use. RaycastManager m_raycast_manager; // For text on scaled objects diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 7774c76..9b9e033 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -57,7 +57,7 @@ bool GLGizmoMmuSegmentation::on_is_activable() const return GLGizmoPainterBase::on_is_activable() && wxGetApp().extruders_edited_cnt() > 1; } -static std::vector get_extruders_colors() +std::vector get_extruders_colors() { std::vector colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config(); std::vector ret; @@ -524,6 +524,7 @@ void GLGizmoMmuSegmentation::update_model_object() const void GLGizmoMmuSegmentation::init_model_triangle_selectors() { + const int extruders_count = wxGetApp().extruders_edited_cnt(); const ModelObject *mo = m_c->selection_info()->model_object(); m_triangle_selectors.clear(); @@ -538,8 +539,8 @@ void GLGizmoMmuSegmentation::init_model_triangle_selectors() // This mesh does not account for the possible Z up SLA offset. const TriangleMesh *mesh = &mv->mesh(); - int extruder_idx = (mv->extruder_id() > 0) ? mv->extruder_id() - 1 : 0; - m_triangle_selectors.emplace_back(std::make_unique(*mesh, m_modified_extruders_colors, m_original_extruders_colors[size_t(extruder_idx)])); + size_t extruder_idx = get_extruder_color_idx(*mv, extruders_count); + m_triangle_selectors.emplace_back(std::make_unique(*mesh, m_modified_extruders_colors, m_original_extruders_colors[extruder_idx])); // Reset of TriangleSelector is done inside TriangleSelectorMmGUI's constructor, so we don't need it to perform it again in deserialize(). m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false); m_triangle_selectors.back()->request_update_render_data(); @@ -588,12 +589,6 @@ void TriangleSelectorMmGui::render(ImGuiWrapper* imgui, const Transform3d& matri if (!shader) return; assert(shader->get_name() == "mm_gouraud"); - const Camera& camera = wxGetApp().plater()->get_camera(); - const Transform3d& view_matrix = camera.get_view_matrix(); - shader->set_uniform("view_model_matrix", view_matrix * matrix); - shader->set_uniform("projection_matrix", camera.get_projection_matrix()); - const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); - shader->set_uniform("view_normal_matrix", view_normal_matrix); for (size_t color_idx = 0; color_idx < m_gizmo_scene.triangle_indices.size(); ++color_idx) { if (m_gizmo_scene.has_VBOs(color_idx)) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp index 21138c5..1d53aed 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp @@ -66,8 +66,9 @@ public: class TriangleSelectorMmGui : public TriangleSelectorGUI { public: + TriangleSelectorMmGui() = delete; // Plus 1 in the initialization of m_gizmo_scene is because the first position is allocated for non-painted triangles, and the indices above colors.size() are allocated for seed fill. - TriangleSelectorMmGui(const TriangleMesh& mesh, const std::vector& colors, const ColorRGBA& default_volume_color) + explicit TriangleSelectorMmGui(const TriangleMesh& mesh, const std::vector& colors, const ColorRGBA& default_volume_color) : TriangleSelectorGUI(mesh), m_colors(colors), m_default_volume_color(default_volume_color), m_gizmo_scene(2 * (colors.size() + 1)) {} ~TriangleSelectorMmGui() override = default; @@ -148,6 +149,15 @@ private: std::map m_desc; }; +std::vector get_extruders_colors(); + +inline size_t get_extruder_color_idx(const ModelVolume &model_volume, const int extruders_count) +{ + if (const int extruder_id = model_volume.extruder_id(); extruder_id <= 0 || extruder_id > extruders_count) + return 0; + else + return extruder_id - 1; +} } // namespace Slic3r diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp index 677f258..be7ddf3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp @@ -200,10 +200,12 @@ void GLGizmoRotate::init_data_from_selection(const Selection& selection) const auto [box, box_trafo] = m_force_local_coordinate ? selection.get_bounding_box_in_reference_system(ECoordinatesType::Local) : selection.get_bounding_box_in_current_reference_system(); m_bounding_box = box; - m_center = box_trafo.translation(); + const std::pair sphere = selection.get_bounding_sphere(); + m_center = sphere.first; + m_radius = Offset + sphere.second; m_orient_matrix = box_trafo; - m_radius = Offset + m_bounding_box.radius(); + m_orient_matrix.translation() = m_center; m_snap_coarse_in_radius = m_radius / 3.0f; m_snap_coarse_out_radius = 2.0f * m_snap_coarse_in_radius; m_snap_fine_in_radius = m_radius; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp new file mode 100644 index 0000000..96f68e2 --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp @@ -0,0 +1,2239 @@ +#include "GLGizmoSVG.hpp" +#include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/GUI_ObjectList.hpp" +#include "slic3r/GUI/GUI_ObjectManipulation.hpp" +#include "slic3r/GUI/MainFrame.hpp" // to update title when add text +#include "slic3r/GUI/NotificationManager.hpp" +#include "slic3r/GUI/Plater.hpp" +#include "slic3r/GUI/MsgDialog.hpp" +#include "slic3r/GUI/format.hpp" +#include "slic3r/GUI/CameraUtils.hpp" +#include "slic3r/GUI/Jobs/EmbossJob.hpp" +#include "slic3r/Utils/UndoRedo.hpp" + +#include "libslic3r/Point.hpp" +#include "libslic3r/SVG.hpp" // debug store +#include "libslic3r/Geometry.hpp" // covex hull 2d +#include "libslic3r/Timer.hpp" // covex hull 2d +#include "libslic3r/Emboss.hpp" // heal_shape + +#include "libslic3r/NSVGUtils.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/ClipperUtils.hpp" // union_ex + +#include "imgui/imgui_stdlib.h" // using std::string for inputs +#include "nanosvg/nanosvg.h" // load SVG file + +#include // detection of change DPI +#include + +#include +#include // measure enumeration of fonts +#include // save for svg +#include +#include + +using namespace Slic3r; +using namespace Slic3r::Emboss; +using namespace Slic3r::GUI; +using namespace Slic3r::GUI::Emboss; + +GLGizmoSVG::GLGizmoSVG(GLCanvas3D &parent) + : GLGizmoBase(parent, M_ICON_FILENAME, -3) + , m_gui_cfg(nullptr) + , m_rotate_gizmo(parent, GLGizmoRotate::Axis::Z) // grab id = 2 (Z axis) +{ + m_rotate_gizmo.set_group_id(0); + m_rotate_gizmo.set_force_local_coordinate(true); +} + +// Private functions to create emboss volume +namespace{ + +// Variable keep limits for variables +const struct Limits +{ + MinMax depth{0.01, 1e4}; // in mm + MinMax size{0.01f, 1e4f}; // in mm (width + height) + MinMax ui_size{5.f, 100.f}; // in mm (width + height) - only slider values + MinMax ui_size_in{.1f, 4.f};// in inches (width + height) - only slider values + MinMax relative_scale_ratio{1e-5, 1e4}; // change size + // distance text object from surface + MinMax angle{-180.f, 180.f}; // in degrees +} limits; + +// Store path to directory with svg for import and export svg's +wxString last_used_directory = wxEmptyString; + +/// +/// Open file dialog with svg files +/// +/// File path to svg +std::string choose_svg_file(); + +constexpr double get_tesselation_tolerance(double scale){ + constexpr double tesselation_tolerance_in_mm = .1; //8e-2; + constexpr double tesselation_tolerance_scaled = (tesselation_tolerance_in_mm*tesselation_tolerance_in_mm) / SCALING_FACTOR / SCALING_FACTOR; + return tesselation_tolerance_scaled / scale / scale; +} + +/// +/// Let user to choose file with (S)calable (V)ector (G)raphics - SVG. +/// Than let select contour +/// +/// SVG file path, when empty promt user to select one +/// EmbossShape to create +EmbossShape select_shape(std::string_view filepath = "", double tesselation_tolerance_in_mm = get_tesselation_tolerance(1.)); + +/// +/// Create new embos data +/// +/// Cancel for previous job +/// To distiquish whether it is outside of model +/// SVG file path +/// Base data for emboss SVG +DataBasePtr create_emboss_data_base(std::shared_ptr> &cancel, ModelVolumeType volume_type, std::string_view filepath = ""); + +/// +/// Separate file name from file path. +/// String after last delimiter and before last point +/// +/// path return by file dialog +/// File name without directory path +std::string get_file_name(const std::string &file_path); + +/// +/// Create volume name from shape information +/// +/// File path +/// Name for volume +std::string volume_name(const EmbossShape& shape); + +/// +/// Create input for volume creation +/// +/// parent of gizmo +/// Keep scene +/// Type of volume to be created +/// Params +CreateVolumeParams create_input(GLCanvas3D &canvas, RaycastManager &raycaster, ModelVolumeType volume_type); + +enum class IconType : unsigned { + reset_value, + reset_value_hover, + refresh, + refresh_hover, + change_file, + bake, + bake_inactive, + save, + exclamation, + lock, + lock_hover, + unlock, + unlock_hover, + reflection_x, + reflection_x_hover, + reflection_y, + reflection_y_hover, + // automatic calc of icon's count + _count +}; +// Do not forgot add loading of file in funtion: +// IconManager::Icons init_icons( + +const IconManager::Icon &get_icon(const IconManager::Icons &icons, IconType type) { + return *icons[static_cast(type)]; } + +// This configs holds GUI layout size given by translated texts. +// etc. When language changes, GUI is recreated and this class constructed again, +// so the change takes effect. (info by GLGizmoFdmSupports.hpp) +struct GuiCfg +{ + // Detect invalid config values when change monitor DPI + double screen_scale = -1.; + float main_toolbar_height = -1.f; + + // Define bigger size(width or height) + unsigned texture_max_size_px = 256; + + // Zero means it is calculated in init function + ImVec2 window_size = ImVec2(0, 0); + ImVec2 window_size_for_object = ImVec2(0, 0); // without change type + + float input_width = 0.f; + float input_offset = 0.f; + + float icon_width = 0.f; + + // offset for checbox for lock up vector + float lock_offset = 0.f; + // Only translations needed for calc GUI size + struct Translations + { + std::string depth; + std::string size; + std::string use_surface; + std::string rotation; + std::string distance; // from surface + std::string mirror; + }; + Translations translations; +}; +GuiCfg create_gui_configuration(); + +} // namespace + +// use private definition +struct GLGizmoSVG::GuiCfg: public ::GuiCfg{}; + +bool GLGizmoSVG::create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos) +{ + CreateVolumeParams input = create_input(m_parent, m_raycast_manager, volume_type); + DataBasePtr base = create_emboss_data_base(m_job_cancel, volume_type); + if (!base) return false; // Uninterpretable svg + return start_create_volume(input, std::move(base), mouse_pos); +} + +bool GLGizmoSVG::create_volume(ModelVolumeType volume_type) +{ + CreateVolumeParams input = create_input(m_parent, m_raycast_manager, volume_type); + DataBasePtr base = create_emboss_data_base(m_job_cancel,volume_type); + if (!base) return false; // Uninterpretable svg + return start_create_volume_without_position(input, std::move(base)); +} + +bool GLGizmoSVG::create_volume(std::string_view svg_file, ModelVolumeType volume_type){ + CreateVolumeParams input = create_input(m_parent, m_raycast_manager, volume_type); + DataBasePtr base = create_emboss_data_base(m_job_cancel, volume_type, svg_file); + if (!base) return false; // Uninterpretable svg + return start_create_volume_without_position(input, std::move(base)); +} + +bool GLGizmoSVG::create_volume(std::string_view svg_file, const Vec2d &mouse_pos, ModelVolumeType volume_type) +{ + CreateVolumeParams input = create_input(m_parent, m_raycast_manager, volume_type); + DataBasePtr base = create_emboss_data_base(m_job_cancel, volume_type, svg_file); + if (!base) return false; // Uninterpretable svg + return start_create_volume(input, std::move(base), mouse_pos); +} + +bool GLGizmoSVG::is_svg(const ModelVolume &volume) { + return volume.emboss_shape.has_value(); +} + +bool GLGizmoSVG::is_svg_object(const ModelVolume &volume) { + if (!volume.emboss_shape.has_value()) return false; + if (volume.type() != ModelVolumeType::MODEL_PART) return false; + for (const ModelVolume *v : volume.get_object()->volumes) { + if (v->id() == volume.id()) continue; + if (v->type() == ModelVolumeType::MODEL_PART) return false; + } + return true; +} + +bool GLGizmoSVG::on_mouse_for_rotation(const wxMouseEvent &mouse_event) +{ + if (mouse_event.Moving()) return false; + + bool used = use_grabbers(mouse_event); + if (!m_dragging) return used; + + if (mouse_event.Dragging()) + dragging_rotate_gizmo(m_rotate_gizmo.get_angle(), m_angle, m_rotate_start_angle, m_parent.get_selection()); + + return used; +} + +bool GLGizmoSVG::on_mouse_for_translate(const wxMouseEvent &mouse_event) +{ + // exist selected volume? + if (m_volume == nullptr) + return false; + + auto up_limit = m_keep_up ? std::optional(UP_LIMIT) : std::optional{}; + const Camera &camera = wxGetApp().plater()->get_camera(); + + bool was_dragging = m_surface_drag.has_value(); + bool res = on_mouse_surface_drag(mouse_event, camera, m_surface_drag, m_parent, m_raycast_manager, up_limit); + bool is_dragging = m_surface_drag.has_value(); + + // End with surface dragging? + if (was_dragging && !is_dragging) { + // Update surface by new position + if (m_volume->emboss_shape->projection.use_surface) + process(); + + // TODO: Remove it when it will be stable + // Distance should not change during dragging + const GLVolume *gl_volume = m_parent.get_selection().get_first_volume(); + m_distance = calc_distance(*gl_volume, m_raycast_manager, m_parent); + + // Show correct value of height & depth inside of inputs + calculate_scale(); + } + + // Start with dragging + else if (!was_dragging && is_dragging) { + // Cancel job to prevent interuption of dragging (duplicit result) + if (m_job_cancel != nullptr) + m_job_cancel->store(true); + } + + // during drag + else if (was_dragging && is_dragging) { + // update scale of selected volume --> should be approx the same + calculate_scale(); + + // Recalculate angle for GUI + if (!m_keep_up) + m_angle = calc_angle(m_parent.get_selection()); + } + return res; +} + +void GLGizmoSVG::volume_transformation_changed() +{ + if (m_volume == nullptr || + !m_volume->emboss_shape.has_value()) { + assert(false); + return; + } + + if (!m_keep_up) { + // update current style + m_angle = calc_angle(m_parent.get_selection()); + } else { + // angle should be the same + assert(is_approx(m_angle, calc_angle(m_parent.get_selection()))); + } + + // Update surface by new position + if (m_volume->emboss_shape->projection.use_surface) { + process(); + } else { + // inform slicing process that model changed + // SLA supports, processing + // ensure on bed + wxGetApp().plater()->changed_object(*m_volume->get_object()); + } + + // Show correct value of height & depth inside of inputs + calculate_scale(); +} + +bool GLGizmoSVG::on_mouse(const wxMouseEvent &mouse_event) +{ + // not selected volume + if (m_volume == nullptr || + get_model_volume(m_volume_id, m_parent.get_selection().get_model()->objects) == nullptr || + !m_volume->emboss_shape.has_value()) return false; + + if (on_mouse_for_rotation(mouse_event)) return true; + if (on_mouse_for_translate(mouse_event)) return true; + + return false; +} + +bool GLGizmoSVG::wants_enter_leave_snapshots() const { return true; } +std::string GLGizmoSVG::get_gizmo_entering_text() const { return _u8L("Enter SVG gizmo"); } +std::string GLGizmoSVG::get_gizmo_leaving_text() const { return _u8L("Leave SVG gizmo"); } +std::string GLGizmoSVG::get_action_snapshot_name() const { return _u8L("SVG actions"); } + +bool GLGizmoSVG::on_init() +{ + m_rotate_gizmo.init(); + ColorRGBA gray_color(.6f, .6f, .6f, .3f); + m_rotate_gizmo.set_highlight_color(gray_color); + // Set rotation gizmo upwardrotate + m_rotate_gizmo.set_angle(PI / 2); + return true; +} + +std::string GLGizmoSVG::on_get_name() const { return _u8L("SVG"); } + +void GLGizmoSVG::on_render() { + if (const Selection &selection = m_parent.get_selection(); + selection.volumes_count() != 1 || // only one selected volume + m_volume == nullptr || // already selected volume in gizmo + get_model_volume(m_volume_id, selection.get_model()->objects) == nullptr) // still exist model + return; + + bool is_surface_dragging = m_surface_drag.has_value(); + bool is_parent_dragging = m_parent.is_mouse_dragging(); + // Do NOT render rotation grabbers when dragging object + bool is_rotate_by_grabbers = m_dragging; + if (is_rotate_by_grabbers || + (!is_surface_dragging && !is_parent_dragging)) { + glsafe(::glClear(GL_DEPTH_BUFFER_BIT)); + m_rotate_gizmo.render(); + } +} + +void GLGizmoSVG::on_register_raycasters_for_picking(){ + m_rotate_gizmo.register_raycasters_for_picking(); +} +void GLGizmoSVG::on_unregister_raycasters_for_picking(){ + m_rotate_gizmo.unregister_raycasters_for_picking(); +} + +namespace{ +IconManager::Icons init_icons(IconManager &mng, const GuiCfg &cfg) +{ + mng.release(); + + ImVec2 size(cfg.icon_width, cfg.icon_width); + // icon order has to match the enum IconType + IconManager::InitTypes init_types{ + {"undo.svg", size, IconManager::RasterType::white_only_data}, // reset_value + {"undo.svg", size, IconManager::RasterType::color}, // reset_value_hover + {"refresh.svg", size, IconManager::RasterType::white_only_data}, // refresh + {"refresh.svg", size, IconManager::RasterType::color}, // refresh_hovered + {"open.svg", size, IconManager::RasterType::color}, // changhe_file + {"burn.svg", size, IconManager::RasterType::color}, // bake + {"burn.svg", size, IconManager::RasterType::gray_only_data}, // bake_inactive + {"save.svg", size, IconManager::RasterType::color}, // save + {"exclamation.svg", size, IconManager::RasterType::color}, // exclamation + {"lock_closed.svg", size, IconManager::RasterType::white_only_data}, // lock + {"lock_open_f.svg", size, IconManager::RasterType::white_only_data}, // lock_hovered + {"lock_open.svg", size, IconManager::RasterType::white_only_data}, // unlock + {"lock_closed_f.svg",size, IconManager::RasterType::white_only_data}, // unlock_hovered + {"reflection_x.svg", size, IconManager::RasterType::white_only_data}, // reflection_x + {"reflection_x.svg", size, IconManager::RasterType::color}, // reflection_x_hovered + {"reflection_y.svg", size, IconManager::RasterType::white_only_data}, // reflection_y + {"reflection_y.svg", size, IconManager::RasterType::color}, // reflection_y_hovered + }; + + assert(init_types.size() == static_cast(IconType::_count)); + std::string path = resources_dir() + "/icons/"; + for (IconManager::InitType &init_type : init_types) + init_type.filepath = path + init_type.filepath; + + return mng.init(init_types); + + //IconManager::VIcons vicons = mng.init(init_types); + // + //// flatten icons + //IconManager::Icons icons; + //icons.reserve(vicons.size()); + //for (IconManager::Icons &i : vicons) + // icons.push_back(i.front()); + //return icons; +} + +bool reset_button(const IconManager::Icons &icons) +{ + float reset_offset = ImGui::GetStyle().FramePadding.x; + ImGui::SameLine(reset_offset); + + // from GLGizmoCut + //std::string label_id = "neco"; + //std::string btn_label; + //btn_label += ImGui::RevertButton; + //return ImGui::Button((btn_label + "##" + label_id).c_str()); + + return clickable(get_icon(icons, IconType::reset_value), get_icon(icons, IconType::reset_value_hover)); +} + +} // namespace + +void GLGizmoSVG::on_render_input_window(float x, float y, float bottom_limit) +{ + set_volume_by_selection(); + + // Configuration creation + double screen_scale = wxDisplay(wxGetApp().plater()).GetScaleFactor(); + float main_toolbar_height = m_parent.get_main_toolbar_height(); + if (m_gui_cfg == nullptr || // Exist configuration - first run + m_gui_cfg->screen_scale != screen_scale || // change of DPI + m_gui_cfg->main_toolbar_height != main_toolbar_height // change size of view port + ) { + // Create cache for gui offsets + ::GuiCfg cfg = create_gui_configuration(); + cfg.screen_scale = screen_scale; + cfg.main_toolbar_height = main_toolbar_height; + + GuiCfg gui_cfg{std::move(cfg)}; + m_gui_cfg = std::make_unique(std::move(gui_cfg)); + + // set position near toolbar + m_set_window_offset = ImVec2(-1.f, -1.f); + + m_icons = init_icons(m_icon_manager, *m_gui_cfg); // need regeneration when change resolution(move between monitors) + } + + const ImVec2 &window_size = m_volume->is_the_only_one_part() ? + m_gui_cfg->window_size_for_object : m_gui_cfg->window_size; + ImGui::SetNextWindowSize(window_size); + // Draw origin position of text during dragging + if (m_surface_drag.has_value()) { + ImVec2 mouse_pos = ImGui::GetMousePos(); + ImVec2 center( + mouse_pos.x + m_surface_drag->mouse_offset.x(), + mouse_pos.y + m_surface_drag->mouse_offset.y()); + ImU32 color = ImGui::GetColorU32( + m_surface_drag->exist_hit ? + ImVec4(1.f, 1.f, 1.f, .75f) : // transparent white + ImVec4(1.f, .3f, .3f, .75f) + ); // Warning color + const float radius = 16.f; + ImGuiWrapper::draw_cross_hair(center, radius, color); + } + + // check if is set window offset + if (m_set_window_offset.has_value()) { + if (m_set_window_offset->y < 0) + // position near toolbar + m_set_window_offset = ImVec2(x, std::min(y, bottom_limit - window_size.y)); + + ImGui::SetNextWindowPos(*m_set_window_offset, ImGuiCond_Always); + m_set_window_offset.reset(); + } + + bool is_opened = true; + constexpr ImGuiWindowFlags flag = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize; + if (ImGui::Begin(on_get_name().c_str(), &is_opened, flag)) + draw_window(); + + ImGui::End(); + if (!is_opened) + close(); +} + +void GLGizmoSVG::on_set_state() +{ + // enable / disable bed from picking + // Rotation gizmo must work through bed + m_parent.set_raycaster_gizmos_on_top(GLGizmoBase::m_state == GLGizmoBase::On); + + m_rotate_gizmo.set_state(GLGizmoBase::m_state); + + // Closing gizmo. e.g. selecting another one + if (GLGizmoBase::m_state == GLGizmoBase::Off) { + reset_volume(); + } else if (GLGizmoBase::m_state == GLGizmoBase::On) { + // Try(when exist) set text configuration by volume + set_volume_by_selection(); + + m_set_window_offset = (m_gui_cfg != nullptr) ? + ImGuiWrapper::change_window_position(on_get_name().c_str(), false) : ImVec2(-1, -1); + } +} + +void GLGizmoSVG::data_changed(bool is_serializing) { + set_volume_by_selection(); + if (!is_serializing && m_volume == nullptr) + close(); +} + +void GLGizmoSVG::on_start_dragging() { m_rotate_gizmo.start_dragging(); } +void GLGizmoSVG::on_stop_dragging() +{ + m_rotate_gizmo.stop_dragging(); + + // TODO: when start second rotatiton previous rotation rotate draggers + // This is fast fix for second try to rotate + // When fixing, move grabber above text (not on side) + m_rotate_gizmo.set_angle(PI/2); + + // apply rotation + // TRN This is an item label in the undo-redo stack. + m_parent.do_rotate(L("SVG-Rotate")); + m_rotate_start_angle.reset(); + volume_transformation_changed(); + + // recalculate for surface cut + if (m_volume != nullptr && + m_volume->emboss_shape.has_value() && + m_volume->emboss_shape->projection.use_surface) + process(); +} +void GLGizmoSVG::on_dragging(const UpdateData &data) { m_rotate_gizmo.dragging(data); } + +#include "slic3r/GUI/BitmapCache.hpp" +#include "nanosvg/nanosvgrast.h" +#include "libslic3r/AABBTreeLines.hpp" // aabb lines for draw filled expolygon + +namespace{ + +// inspired by Xiaolin Wu's line algorithm - https://en.wikipedia.org/wiki/Xiaolin_Wu's_line_algorithm +// Draw inner part of polygon CCW line as full brightness(edge of expolygon) +void wu_draw_line_side(Linef line, + const std::function& plot) { + auto ipart = [](float x) -> int {return static_cast(std::floor(x));}; + auto round = [](float x) -> float {return std::round(x);}; + auto fpart = [](float x) -> float {return x - std::floor(x);}; + auto rfpart = [=](float x) -> float {return 1 - fpart(x);}; + + Vec2d d = line.b - line.a; + const bool steep = abs(d.y()) > abs(d.x()); + bool is_full; // identify full brightness pixel + if (steep) { + is_full = d.y() >= 0; + std::swap(line.a.x(), line.a.y()); + std::swap(line.b.x(), line.b.y()); + std::swap(d.x(), d.y()); + }else + is_full = d.x() < 0; // opposit direction of y + + if (line.a.x() > line.b.x()) { + std::swap(line.a.x(), line.b.x()); + std::swap(line.a.y(), line.b.y()); + d *= -1; + } + const float gradient = (d.x() == 0) ? 1. : d.y() / d.x(); + + int xpx11; + float intery; + { + const float xend = round(line.a.x()); + const float yend = line.a.y() + gradient * (xend - line.a.x()); + const float xgap = rfpart(line.a.x() + 0.5f); + xpx11 = int(xend); + const int ypx11 = ipart(yend); + if (steep) { + plot(ypx11, xpx11, is_full? 1.f : (rfpart(yend) * xgap)); + plot(ypx11 + 1, xpx11, !is_full? 1.f : ( fpart(yend) * xgap)); + } else { + plot(xpx11, ypx11, is_full? 1.f : (rfpart(yend) * xgap)); + plot(xpx11, ypx11 + 1,!is_full? 1.f : ( fpart(yend) * xgap)); + } + intery = yend + gradient; + } + + int xpx12; + { + const float xend = round(line.b.x()); + const float yend = line.b.y() + gradient * (xend - line.b.x()); + const float xgap = rfpart(line.b.x() + 0.5f); + xpx12 = int(xend); + const int ypx12 = ipart(yend); + if (steep) { + plot(ypx12, xpx12, is_full? 1.f : (rfpart(yend) * xgap)); + plot(ypx12 + 1, xpx12, !is_full? 1.f : ( fpart(yend) * xgap)); + } else { + plot(xpx12, ypx12, is_full? 1.f : (rfpart(yend) * xgap)); + plot(xpx12, ypx12 + 1, !is_full? 1.f : ( fpart(yend) * xgap)); + } + } + + if (steep) { + if (is_full){ + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(ipart(intery), x, 1.f); + plot(ipart(intery) + 1, x, fpart(intery)); + intery += gradient; + } + } else { + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(ipart(intery), x, rfpart(intery)); + plot(ipart(intery) + 1, x, 1.f ); + intery += gradient; + } + } + } else { + if (is_full){ + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(x, ipart(intery), 1.f); + plot(x, ipart(intery) + 1, fpart(intery)); + intery += gradient; + } + } else { + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(x, ipart(intery), rfpart(intery)); + plot(x, ipart(intery) + 1, 1.f); + intery += gradient; + } + } + } +} + +#ifdef MORE_DRAWING +// Wu's line algorithm - https://en.wikipedia.org/wiki/Xiaolin_Wu's_line_algorithm +void wu_draw_line(Linef line, + const std::function& plot) { + auto ipart = [](float x) -> int {return int(std::floor(x));}; + auto round = [](float x) -> float {return std::round(x);}; + auto fpart = [](float x) -> float {return x - std::floor(x);}; + auto rfpart = [=](float x) -> float {return 1 - fpart(x);}; + + Vec2d d = line.b - line.a; + const bool steep = abs(d.y()) > abs(d.x()); + if (steep) { + std::swap(line.a.x(), line.a.y()); + std::swap(line.b.x(), line.b.y()); + } + if (line.a.x() > line.b.x()) { + std::swap(line.a.x(), line.b.x()); + std::swap(line.a.y(), line.b.y()); + } + d = line.b - line.a; + const float gradient = (d.x() == 0) ? 1 : d.y() / d.x(); + + int xpx11; + float intery; + { + const float xend = round(line.a.x()); + const float yend = line.a.y() + gradient * (xend - line.a.x()); + const float xgap = rfpart(line.a.x() + 0.5); + xpx11 = int(xend); + const int ypx11 = ipart(yend); + if (steep) { + plot(ypx11, xpx11, rfpart(yend) * xgap); + plot(ypx11 + 1, xpx11, fpart(yend) * xgap); + } else { + plot(xpx11, ypx11, rfpart(yend) * xgap); + plot(xpx11, ypx11 + 1, fpart(yend) * xgap); + } + intery = yend + gradient; + } + + int xpx12; + { + const float xend = round(line.b.x()); + const float yend = line.b.y() + gradient * (xend - line.b.x()); + const float xgap = rfpart(line.b.x() + 0.5); + xpx12 = int(xend); + const int ypx12 = ipart(yend); + if (steep) { + plot(ypx12, xpx12, rfpart(yend) * xgap); + plot(ypx12 + 1, xpx12, fpart(yend) * xgap); + } else { + plot(xpx12, ypx12, rfpart(yend) * xgap); + plot(xpx12, ypx12 + 1, fpart(yend) * xgap); + } + } + + if (steep) { + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(ipart(intery), x, rfpart(intery)); + plot(ipart(intery) + 1, x, fpart(intery)); + intery += gradient; + } + } else { + for (int x = xpx11 + 1; x < xpx12; x++) { + plot(x, ipart(intery), rfpart(intery)); + plot(x, ipart(intery) + 1, fpart(intery)); + intery += gradient; + } + } +} + +void draw(const ExPolygonsWithIds &shapes_with_ids, unsigned max_size) +{ + ImVec2 actual_pos = ImGui::GetCursorPos(); + // draw shapes + BoundingBox bb; + for (const ExPolygonsWithId &shape : shapes_with_ids) + bb.merge(get_extents(shape.expoly)); + + Point bb_size = bb.size(); + double scale = max_size / (double) std::max(bb_size.x(), bb_size.y()); + ImVec2 win_offset = ImGui::GetWindowPos(); + Point offset(win_offset.x + actual_pos.x, win_offset.y + actual_pos.y); + offset += bb_size / 2 * scale; + auto draw_polygon = [&scale, offset](Slic3r::Polygon p) { + p.scale(scale, -scale); // Y mirror + p.translate(offset); + ImGuiWrapper::draw(p); + }; + + for (const ExPolygonsWithId &shape : shapes_with_ids) { + for (const ExPolygon &expoly : shape.expoly) { + draw_polygon(expoly.contour); + for (const Slic3r::Polygon &hole : expoly.holes) + draw_polygon(hole); + } + } +} + +#endif // MORE_DRAWING + +template // N .. count of channels per pixel +void draw_side_outline(const ExPolygons &shape, const std::array &color, std::vector &data, size_t data_width, double scale) +{ + int count_lines = data.size() / (N * data_width); + size_t data_line = N * data_width; + auto get_offset = [count_lines, data_line](int x, int y) { + // NOTE: y has opposit direction in texture + return (count_lines - y - 1) * data_line + x * N; + }; + + // overlap color + auto draw = [&data, data_width, count_lines, get_offset, &color](int x, int y, float brightess) { + if (x < 0 || y < 0 || static_cast(x) >= data_width || y >= count_lines) + return; // out of image + size_t offset = get_offset(x, y); + bool change_color = false; + for (size_t i = 0; i < N - 1; ++i) { + if(data[offset + i] != color[i]){ + data[offset + i] = color[i]; + change_color = true; + } + } + + unsigned char &alpha = data[offset + N - 1]; + if (alpha == 0 || change_color){ + alpha = static_cast(std::round(brightess * 255)); + } else if (alpha != 255){ + alpha = static_cast(std::min(255, int(alpha) + static_cast(std::round(brightess * 255)))); + } + }; + + BoundingBox bb_unscaled = get_extents(shape); + Linesf lines = to_linesf(shape); + BoundingBoxf bb(bb_unscaled.min.cast(), bb_unscaled.max.cast()); + + // scale lines to pixels + if (!is_approx(scale, 1.)) { + for (Linef &line : lines) { + line.a *= scale; + line.b *= scale; + } + bb.min *= scale; + bb.max *= scale; + } + + for (const Linef &line : lines) + wu_draw_line_side(line, draw); +} + +/// +/// Draw filled ExPolygon into data +/// line by line inspired by: http://alienryderflex.com/polygon_fill/ +/// +/// Count channels for one pixel(RGBA = 4) +/// Shape to draw +/// Color of shape contain count of channels(N) +/// Image(2d) stored in 1d array +/// Count of pixel on one line(size in data = N x data_width) +/// Shape scale for conversion to pixels +template // N .. count of channels per pixel +void draw_filled(const ExPolygons &shape, const std::array& color, std::vector &data, size_t data_width, double scale){ + assert(data.size() % N == 0); + assert(data.size() % data_width == 0); + assert((data.size() % (N*data_width)) == 0); + + BoundingBox bb_unscaled = get_extents(shape); + + Linesf lines = to_linesf(shape); + BoundingBoxf bb( + bb_unscaled.min.cast(), + bb_unscaled.max.cast()); + + // scale lines to pixels + if (!is_approx(scale, 1.)) { + for (Linef &line : lines) { + line.a *= scale; + line.b *= scale; + } + bb.min *= scale; + bb.max *= scale; + } + + int count_lines = data.size() / (N * data_width); + size_t data_line = N * data_width; + auto get_offset = [count_lines, data_line](int x, int y) { + // NOTE: y has opposit direction in texture + return (count_lines - y - 1) * data_line + x * N; + }; + auto set_color = [&data, &color, get_offset](int x, int y) { + size_t offset = get_offset(x, y); + if (data[offset + N - 1] != 0) + return; // already setted by line + for (unsigned i = 0; i < N; ++i) + data[offset + i] = color[i]; + }; + + // anti aliased drawing of lines + auto draw = [&data, width = static_cast(data_width), count_lines, get_offset, &color](int x, int y, float brightess) { + if (x < 0 || y < 0 || x >= width || y >= count_lines) + return; // out of image + size_t offset = get_offset(x, y); + unsigned char &alpha = data[offset + N - 1]; + if (alpha == 0){ + alpha = static_cast(std::round(brightess * 255)); + for (size_t i = 0; i < N-1; ++i) + data[offset + i] = color[i]; + } else if (alpha != 255){ + alpha = static_cast(std::min(255, int(alpha) + static_cast(std::round(brightess * 255)))); + } + }; + + for (const Linef& line: lines) + wu_draw_line_side(line, draw); + + auto tree = Slic3r::AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); + + // range for intersection line + double x1 = bb.min.x() - 1.f; + double x2 = bb.max.x() + 1.f; + + int max_y = std::min(count_lines, static_cast(std::round(bb.max.y()))); + for (int y = std::max(0, static_cast(std::round(bb.min.y()))); y < max_y; ++y){ + double y_f = y + .5; // 0.5 ... intersection in center of pixel of pixel + Linef line(Vec2d(x1, y_f), Vec2d(x2, y_f)); + using Intersection = std::pair; + using Intersections = std::vector; + // sorted .. false + // + Intersections intersections = Slic3r::AABBTreeLines::get_intersections_with_line(lines, tree, line); + if (intersections.empty()) + continue; + + assert((intersections.size() % 2) == 0); + + // sort intersections by x + std::sort(intersections.begin(), intersections.end(), + [](const Intersection &i1, const Intersection &i2) { return i1.first.x() < i2.first.x(); }); + + // draw lines + for (size_t i = 0; i < intersections.size(); i+=2) { + const Vec2d& p2 = intersections[i+1].first; + if (p2.x() < 0) + continue; // out of data + + const Vec2d& p1 = intersections[i].first; + if (p1.x() > data_width) + break; // out of data + + // clamp to data + int max_x = std::min(static_cast(data_width-1), static_cast(std::round(p2.x()))); + for (int x = std::max(0, static_cast(std::round(p1.x()))); x <= max_x; ++x) + set_color(x, y); + } + } +} + +/// Union shape defined by glyphs +ExPolygons union_ex(const ExPolygonsWithIds &shapes) +{ + // unify to one expolygon + ExPolygons result; + for (const ExPolygonsWithId &shape : shapes) { + if (shape.expoly.empty()) + continue; + expolygons_append(result, shape.expoly); + } + return union_ex(result); +} + +// init texture by draw expolygons into texture +bool init_texture(Texture &texture, const ExPolygonsWithIds& shapes_with_ids, unsigned max_size_px, const std::vector& shape_warnings){ + BoundingBox bb = get_extents(shapes_with_ids); + Point bb_size = bb.size(); + double bb_width = bb_size.x(); // [in mm] + double bb_height = bb_size.y(); // [in mm] + + bool is_widder = bb_size.x() > bb_size.y(); + double scale = 0.f; + if (is_widder) { + scale = max_size_px / bb_width; + texture.width = max_size_px; + texture.height = static_cast(std::ceil(bb_height * scale)); + } else { + scale = max_size_px / bb_height; + texture.width = static_cast(std::ceil(bb_width * scale)); + texture.height = max_size_px; + } + const int n_pixels = texture.width * texture.height; + if (n_pixels <= 0) + return false; + + constexpr int channels_count = 4; + std::vector data(n_pixels * channels_count, {0}); + + // Union All shapes + ExPolygons shape = union_ex(shapes_with_ids); + + // align to texture + translate(shape, -bb.min); + size_t texture_width = static_cast(texture.width); + unsigned char alpha = 255; // without transparency + std::array color_shape{201, 201, 201, alpha}; // from degin by @JosefZachar + std::array color_error{237, 28, 36, alpha}; // from icon: resources/icons/flag_red.svg + std::array color_warning{237, 107, 33, alpha}; // icons orange + // draw unhealedable shape + for (const ExPolygonsWithId &shapes_with_id : shapes_with_ids) + if (!shapes_with_id.is_healed) { + ExPolygons bad_shape = shapes_with_id.expoly; // copy + translate(bad_shape, -bb.min); // align to texture + draw_side_outline<4>(bad_shape, color_error, data, texture_width, scale); + } + // Draw shape with warning + if (!shape_warnings.empty()) { + for (const ExPolygonsWithId &shapes_with_id : shapes_with_ids){ + assert(shapes_with_id.id < shape_warnings.size()); + if (shapes_with_id.id >= shape_warnings.size()) + continue; + if (shape_warnings[shapes_with_id.id].empty()) + continue; // no warnings for shape + ExPolygons warn_shape = shapes_with_id.expoly; // copy + translate(warn_shape, -bb.min); // align to texture + draw_side_outline<4>(warn_shape, color_warning, data, texture_width, scale); + } + } + + // Draw rest of shape + draw_filled<4>(shape, color_shape, data, texture_width, scale); + + // sends data to gpu + glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + if (texture.id != 0) + glsafe(::glDeleteTextures(1, &texture.id)); + glsafe(::glGenTextures(1, &texture.id)); + glsafe(::glBindTexture(GL_TEXTURE_2D, texture.id)); + glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei) texture.width, (GLsizei) texture.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, + (const void *) data.data())); + + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + + GLuint NO_TEXTURE_ID = 0; + glsafe(::glBindTexture(GL_TEXTURE_2D, NO_TEXTURE_ID)); + return true; +} + +bool is_closed(NSVGpath *path){ + for (; path != NULL; path = path->next) + if (path->next == NULL && path->closed) + return true; + return false; +} + +void add_comma_separated(std::string &result, const std::string &add){ + if (!result.empty()) + result += ", "; + result += add; +} + +const float warning_preccission = 1e-4f; +std::string create_fill_warning(const NSVGshape &shape) { + if (!(shape.flags & NSVG_FLAGS_VISIBLE) || + shape.fill.type == NSVG_PAINT_NONE) + return {}; // not visible + + std::string warning; + if ((shape.opacity - 1.f + warning_preccission) <= 0.f) + add_comma_separated(warning, GUI::format(_L("Opacity (%1%)"), shape.opacity)); + + // if(shape->flags != NSVG_FLAGS_VISIBLE) add_warning(_u8L("Visibility flag")); + bool is_fill_gradient = shape.fillGradient[0] != '\0'; + if (is_fill_gradient) + add_comma_separated(warning, GUI::format(_L("Color gradient (%1%)"), shape.fillGradient)); + + switch (shape.fill.type) { + case NSVG_PAINT_UNDEF: add_comma_separated(warning, _u8L("Undefined fill type")); break; + case NSVG_PAINT_LINEAR_GRADIENT: + if (!is_fill_gradient) + add_comma_separated(warning, _u8L("Linear gradient")); + break; + case NSVG_PAINT_RADIAL_GRADIENT: + if (!is_fill_gradient) + add_comma_separated(warning, _u8L("Radial gradient")); + break; + // case NSVG_PAINT_NONE: + // case NSVG_PAINT_COLOR: + // default: break; + } + + // Unfilled is only line which could be opened + if (shape.fill.type != NSVG_PAINT_NONE && !is_closed(shape.paths)) + add_comma_separated(warning, _u8L("Open filled path")); + return warning; +} + +std::string create_stroke_warning(const NSVGshape &shape) { + + std::string warning; + if (!(shape.flags & NSVG_FLAGS_VISIBLE) || + shape.stroke.type == NSVG_PAINT_NONE || + shape.strokeWidth <= 1e-5f) + return {}; // not visible + + if ((shape.opacity - 1.f + warning_preccission) <= 0.f) + add_comma_separated(warning, GUI::format(_L("Opacity (%1%)"), shape.opacity)); + + bool is_stroke_gradient = shape.strokeGradient[0] != '\0'; + if (is_stroke_gradient) + add_comma_separated(warning, GUI::format(_L("Color gradient (%1%)"), shape.strokeGradient)); + + switch (shape.stroke.type) { + case NSVG_PAINT_UNDEF: add_comma_separated(warning, _u8L("Undefined stroke type")); break; + case NSVG_PAINT_LINEAR_GRADIENT: + if (!is_stroke_gradient) + add_comma_separated(warning, _u8L("Linear gradient")); + break; + case NSVG_PAINT_RADIAL_GRADIENT: + if (!is_stroke_gradient) + add_comma_separated(warning, _u8L("Radial gradient")); + break; + // case NSVG_PAINT_COLOR: + // case NSVG_PAINT_NONE: + // default: break; + } + + return warning; +} + +/// +/// Create warnings about shape +/// +/// Input svg loaded to shapes +/// Vector of warnings with same size as EmbossShape::shapes_with_ids +/// or Empty when no warnings -> for fast checking that every thing is all right(more common case) +std::vector create_shape_warnings(const EmbossShape &shape, float scale){ + const std::shared_ptr& image_ptr = shape.svg_file->image; + assert(image_ptr != nullptr); + if (image_ptr == nullptr) + return {std::string{"Uninitialized SVG image"}}; + + const NSVGimage &image = *image_ptr; + std::vector result; + auto add_warning = [&result, &image](size_t index, const std::string &message) { + if (result.empty()) + result = std::vector(get_shapes_count(image) * 2); + std::string &res = result[index]; + if (res.empty()) + res = message; + else + res += '\n' + message; + }; + + if (!shape.final_shape.is_healed) { + for (const ExPolygonsWithId &i : shape.shapes_with_ids) + if (!i.is_healed) + add_warning(i.id, _u8L("Path can't be healed from selfintersection and multiple points.")); + + // This waning is not connected to NSVGshape. It is about union of paths, but Zero index is shown first + size_t index = 0; + add_warning(index, _u8L("Final shape constains selfintersection or multiple points with same coordinate.")); + } + + size_t shape_index = 0; + for (NSVGshape *shape = image.shapes; shape != NULL; shape = shape->next, ++shape_index) { + if (!(shape->flags & NSVG_FLAGS_VISIBLE)){ + add_warning(shape_index * 2, GUI::format(_L("Shape is marked as invisible (%1%)."), shape->id)); + continue; + } + + std::string fill_warning = create_fill_warning(*shape); + if (!fill_warning.empty()) { + // TRN: The first placeholder is shape identifier, the second one is text describing the problem. + add_warning(shape_index * 2, GUI::format(_L("Fill of shape (%1%) contains unsupported: %2%."), shape->id, fill_warning)); + } + + float minimal_width_in_mm = 1e-3f; + if (shape->strokeWidth <= minimal_width_in_mm * scale) { + add_warning(shape_index * 2, GUI::format(_L("Stroke of shape (%1%) is too thin (minimal width is %2% mm)."), shape->id, minimal_width_in_mm)); + continue; + } + std::string stroke_warning = create_stroke_warning(*shape); + if (!stroke_warning.empty()) + add_warning(shape_index * 2 + 1, GUI::format(_L("Stroke of shape (%1%) contains unsupported: %2%."), shape->id, stroke_warning)); + } + return result; +} + + +} // namespace + +void GLGizmoSVG::set_volume_by_selection() +{ + const Selection &selection = m_parent.get_selection(); + const GLVolume *gl_volume = get_selected_gl_volume(selection); + if (gl_volume == nullptr) + return reset_volume(); + + const ModelObjectPtrs &objects = selection.get_model()->objects; + ModelVolume *volume =get_model_volume(*gl_volume, objects); + if (volume == nullptr) + return reset_volume(); + + // is same volume as actual selected? + if (volume->id() == m_volume_id) + return; + + // Do not use focused input value when switch volume(it must swith value) + if (m_volume != nullptr && + m_volume != volume) // when update volume it changed id BUT not pointer + ImGuiWrapper::left_inputs(); + + // is valid svg volume? + if (!is_svg(*volume)) + return reset_volume(); + + // cancel previous job + if (m_job_cancel != nullptr) { + m_job_cancel->store(true); + m_job_cancel = nullptr; + } + + // calculate scale for height and depth inside of scaled object instance + calculate_scale(); // must be before calculation of tesselation + + EmbossShape &es = *volume->emboss_shape; + EmbossShape::SvgFile &svg_file = *es.svg_file; + if (svg_file.image == nullptr) { + if (init_image(svg_file) == nullptr) + return reset_volume(); + } + assert(svg_file.image != nullptr); + assert(svg_file.image.get() != nullptr); + const NSVGimage &image = *svg_file.image; + ExPolygonsWithIds &shape_ids = es.shapes_with_ids; + if (shape_ids.empty()) { + NSVGLineParams params{get_tesselation_tolerance(get_scale_for_tolerance())}; + shape_ids = create_shape_with_ids(image, params); + } + + reset_volume(); // clear cached data + + m_volume = volume; + m_volume_id = volume->id(); + m_volume_shape = es; // copy + m_shape_warnings = create_shape_warnings(es, get_scale_for_tolerance()); + + // Calculate current angle of up vector + m_angle = calc_angle(selection); + m_distance = calc_distance(*gl_volume, m_raycast_manager, m_parent); + + m_shape_bb = get_extents(m_volume_shape.shapes_with_ids); +} +namespace { +void delete_texture(Texture& texture){ + if (texture.id != 0) { + glsafe(::glDeleteTextures(1, &texture.id)); + texture.id = 0; + } +} +} +void GLGizmoSVG::reset_volume() +{ + if (m_volume == nullptr) + return; // already reseted + + m_volume = nullptr; + m_volume_id.id = 0; + m_volume_shape.shapes_with_ids.clear(); + m_filename_preview.clear(); + m_shape_warnings.clear(); + // delete texture after finish imgui draw + wxGetApp().plater()->CallAfter([&texture = m_texture]() { delete_texture(texture); }); +} + +void GLGizmoSVG::calculate_scale() { + // be carefull m_volume is not set yet + const Selection &selection = m_parent.get_selection(); + const GLVolume *gl_volume = selection.get_first_volume(); + if (gl_volume == nullptr) + return; + + Transform3d to_world = gl_volume->world_matrix(); + + const ModelVolume *volume_ptr = get_model_volume(*gl_volume, selection.get_model()->objects); + assert(volume_ptr != nullptr); + assert(volume_ptr->emboss_shape.has_value()); + // Fix for volume loaded from 3mf + if (volume_ptr != nullptr && + volume_ptr->emboss_shape.has_value()) { + const std::optional &fix_tr = volume_ptr->emboss_shape->fix_3mf_tr; + if (fix_tr.has_value()) + to_world = to_world * (fix_tr->inverse()); + } + + auto to_world_linear = to_world.linear(); + auto calc = [&to_world_linear](const Vec3d &axe, std::optional& scale) { + Vec3d axe_world = to_world_linear * axe; + double norm_sq = axe_world.squaredNorm(); + if (is_approx(norm_sq, 1.)) { + if (!scale.has_value()) + return; + scale.reset(); + } else { + scale = sqrt(norm_sq); + } + }; + + calc(Vec3d::UnitX(), m_scale_width); + calc(Vec3d::UnitY(), m_scale_height); + calc(Vec3d::UnitZ(), m_scale_depth); +} + +float GLGizmoSVG::get_scale_for_tolerance(){ + return std::max(m_scale_width.value_or(1.f), m_scale_height.value_or(1.f)); } + +bool GLGizmoSVG::process() +{ + // no volume is selected -> selection from right panel + assert(m_volume != nullptr); + if (m_volume == nullptr) + return false; + + assert(m_volume->emboss_shape.has_value()); + if (!m_volume->emboss_shape.has_value()) + return false; + + // Cancel previous Job, when it is in process + // worker.cancel(); --> Use less in this case I want cancel only previous EmbossJob no other jobs + // Cancel only EmbossUpdateJob no others + if (m_job_cancel != nullptr) + m_job_cancel->store(true); + // create new shared ptr to cancel new job + m_job_cancel = std::make_shared>(false); + + EmbossShape shape = m_volume_shape; // copy + auto base = std::make_unique(m_volume->name, m_job_cancel, std::move(shape)); + base->is_outside = m_volume->type() == ModelVolumeType::MODEL_PART; + DataUpdate data{std::move(base), m_volume_id}; + return start_update_volume(std::move(data), *m_volume, m_parent.get_selection(), m_raycast_manager); +} + +void GLGizmoSVG::close() +{ + // close gizmo == open it again + auto &mng = m_parent.get_gizmos_manager(); + if (mng.get_current_type() == GLGizmosManager::Svg) + mng.open_gizmo(GLGizmosManager::Svg); + reset_volume(); +} + +void GLGizmoSVG::draw_window() +{ + assert(m_volume != nullptr); + assert(m_volume_id.valid()); + if (m_volume == nullptr || + m_volume_id.invalid()) { + ImGui::Text("Not valid state please report reproduction steps on github"); + return; + } + + assert(m_volume->emboss_shape.has_value()); + if (!m_volume->emboss_shape.has_value()) { + ImGui::Text("No embossed file"); + return; + } + + assert(m_volume->emboss_shape->svg_file.has_value()); + if (!m_volume->emboss_shape->svg_file.has_value()){ + ImGui::Text("Missing svg file in embossed shape"); + return; + } + + assert(m_volume->emboss_shape->svg_file->file_data != nullptr); + if (m_volume->emboss_shape->svg_file->file_data == nullptr){ + ImGui::Text("Missing data of svg file"); + return; + } + + draw_preview(); + draw_filename(); + + // Is SVG baked? + if (m_volume == nullptr) return; + + ImGui::Separator(); + + ImGui::Indent(m_gui_cfg->icon_width); + draw_depth(); + draw_size(); + draw_use_surface(); + + draw_distance(); + draw_rotation(); + draw_mirroring(); + draw_face_the_camera(); + + ImGui::Unindent(m_gui_cfg->icon_width); + + if (!m_volume->is_the_only_one_part()) { + ImGui::Separator(); + draw_model_type(); + } +} + +void GLGizmoSVG::draw_face_the_camera(){ + if (ImGui::Button(_u8L("Face the camera").c_str())) { + const Camera &cam = wxGetApp().plater()->get_camera(); + auto wanted_up_limit = (m_keep_up) ? std::optional(UP_LIMIT) : std::optional{}; + if (face_selected_volume_to_camera(cam, m_parent, wanted_up_limit)) + volume_transformation_changed(); + } +} + +void GLGizmoSVG::draw_preview(){ + // init texture when not initialized yet. + // drag&drop is out of rendering scope so texture must be created on this place + if (m_texture.id == 0) { + const ExPolygonsWithIds &shapes = m_volume->emboss_shape->shapes_with_ids; + init_texture(m_texture, shapes, m_gui_cfg->texture_max_size_px, m_shape_warnings); + } + + //::draw(m_volume_shape.shapes_with_ids, m_gui_cfg->texture_max_size_px); + + if (m_texture.id != 0) { + ImTextureID id = (void *) static_cast(m_texture.id); + ImVec2 s(m_texture.width, m_texture.height); + + std::optional spacing; + // is texture over full height? + if (m_texture.height != m_gui_cfg->texture_max_size_px) { + spacing = (m_gui_cfg->texture_max_size_px - m_texture.height) / 2.f; + ImGui::SetCursorPosY(ImGui::GetCursorPosY() + *spacing); + } + // is texture over full width? + unsigned window_width = static_cast( + ImGui::GetWindowSize().x - 2*ImGui::GetStyle().WindowPadding.x); + if (window_width > m_texture.width){ + float space = (window_width - m_texture.width) / 2.f; + ImGui::SetCursorPosX(ImGui::GetCursorPosX() + space); + } + + ImGui::Image(id, s); + //if(ImGui::IsItemHovered()){ + // const EmbossShape &es = *m_volume->emboss_shape; + // size_t count_of_shapes = get_shapes_count(*es.svg_file.image); + // size_t count_of_expolygons = 0; + // size_t count_of_points = 0; + // for (const auto &shape : es.shapes_with_ids) { + // for (const ExPolygon &expoly : shape.expoly){ + // ++count_of_expolygons; + // count_of_points += count_points(expoly); + // } + // } + // // Do not translate it is only for debug + // std::string tooltip = GUI::format("%1% shapes, which create %2% polygons with %3% line segments", + // count_of_shapes, count_of_expolygons, count_of_points); + // ImGui::SetTooltip("%s", tooltip.c_str()); + //} + + if (spacing.has_value()) + ImGui::SetCursorPosY(ImGui::GetCursorPosY() + *spacing); + } +} + +void GLGizmoSVG::draw_filename(){ + const EmbossShape &es = *m_volume->emboss_shape; + const EmbossShape::SvgFile &svg = *es.svg_file; + if (m_filename_preview.empty()){ + // create filename preview + if (!svg.path.empty()) { + m_filename_preview = get_file_name(svg.path); + } else if (!svg.path_in_3mf.empty()) { + m_filename_preview = get_file_name(svg.path_in_3mf); + } + + if (m_filename_preview.empty()) + // TRN - Preview of filename after clear local filepath. + m_filename_preview = _u8L("Unknown filename"); + + m_filename_preview = ImGuiWrapper::trunc(m_filename_preview, m_gui_cfg->input_width); + } + + if (!m_shape_warnings.empty()){ + draw(get_icon(m_icons, IconType::exclamation)); + if (ImGui::IsItemHovered()) { + std::string tooltip; + for (const std::string &w: m_shape_warnings){ + if (w.empty()) + continue; + if (!tooltip.empty()) + tooltip += "\n"; + tooltip += w; + } + ImGui::SetTooltip("%s", tooltip.c_str()); + } + ImGui::SameLine(); + } + + // Remove space between filename and gray suffix ".svg" + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); + ImGui::Text("%s", m_filename_preview.c_str()); + bool is_hovered = ImGui::IsItemHovered(); + ImGui::SameLine(); + m_imgui->text_colored(ImGuiWrapper::COL_GREY_LIGHT, ".svg"); + ImGui::PopStyleVar(); // ImGuiStyleVar_ItemSpacing + + is_hovered |= ImGui::IsItemHovered(); + if (is_hovered) { + std::string tooltip = GUI::format(_L("SVG file path is \"%1%\""), svg.path); + ImGui::SetTooltip("%s", tooltip.c_str()); + } + + bool file_changed = false; + + // Re-Load button + bool can_reload = !m_volume_shape.svg_file->path.empty(); + if (can_reload) { + ImGui::SameLine(); + if (clickable(get_icon(m_icons, IconType::refresh), get_icon(m_icons, IconType::refresh_hover))) { + if (!boost::filesystem::exists(m_volume_shape.svg_file->path)) { + m_volume_shape.svg_file->path.clear(); + } else { + file_changed = true; + } + } else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Reload SVG file from disk.").c_str()); + } + + ImGuiComboFlags flags = ImGuiComboFlags_PopupAlignLeft | ImGuiComboFlags_NoPreview; + ImGui::SameLine(); + if (ImGui::BeginCombo("##file_options", nullptr, flags)) { + ScopeGuard combo_sg([]() { ImGui::EndCombo(); }); + + draw(get_icon(m_icons, IconType::change_file)); + ImGui::SameLine(); + if (ImGui::Selectable((_L("Change file") + dots).ToUTF8().data())) { + std::string new_path = choose_svg_file(); + if (!new_path.empty()) { + file_changed = true; + m_volume_shape.svg_file = {}; // clear data + m_volume_shape.svg_file->path = new_path; + } + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s", _u8L("Change to another .svg file").c_str()); + } + + std::string forget_path = _u8L("Forget the file path"); + if (m_volume->emboss_shape->svg_file->path.empty()){ + draw(get_icon(m_icons, IconType::bake_inactive)); + ImGui::SameLine(); + m_imgui->text_colored(ImGuiWrapper::COL_GREY_DARK, forget_path.c_str()); + } else { + draw(get_icon(m_icons, IconType::bake)); + ImGui::SameLine(); + if (ImGui::Selectable(forget_path.c_str())) { + // set .svg_file.path_in_3mf to remember file name + m_volume->emboss_shape->svg_file->path.clear(); + m_volume_shape.svg_file->path.clear(); + m_filename_preview.clear(); + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s", _u8L("Do NOT save local path to 3MF file.\n" + "Also disables 'reload from disk' option.").c_str()); + } + } + + //draw(get_icon(m_icons, IconType::bake)); + //ImGui::SameLine(); + //if (ImGui::Selectable(_u8L("Bake 2 ©").c_str())) { + // EmbossShape::SvgFile &svg = m_volume_shape.svg_file; + // std::stringstream ss; + // Slic3r::save(*svg.image, ss); + // svg.file_data = std::make_unique(ss.str()); + // svg.image = nsvgParse(*svg.file_data); + // assert(svg.image.get() != NULL); + // if (svg.image.get() != NULL) { + // m_volume->emboss_shape->svg_file = svg; // copy - write changes into volume + // } else { + // svg = m_volume->emboss_shape->svg_file; // revert changes + // } + //} else if (ImGui::IsItemHovered()) { + // ImGui::SetTooltip("%s", _u8L("Use only paths from svg - recreate svg").c_str()); + //} + + draw(get_icon(m_icons, IconType::bake)); + ImGui::SameLine(); + // TRN: An menu option to convert the SVG into an unmodifiable model part. + if (ImGui::Selectable(_u8L("Bake").c_str())) { + m_volume->emboss_shape.reset(); + close(); + } else if (ImGui::IsItemHovered()) { + // TRN: Tooltip for the menu item. + ImGui::SetTooltip("%s", _u8L("Bake into model as uneditable part").c_str()); + } + + draw(get_icon(m_icons, IconType::save)); + ImGui::SameLine(); + if (ImGui::Selectable((_L("Save as") + dots).ToUTF8().data())) { + wxWindow *parent = nullptr; + GUI::FileType file_type = FT_SVG; + wxString wildcard = file_wildcards(file_type); + wxString dlg_title = _L("Save SVG file"); + const EmbossShape::SvgFile& svg = *m_volume_shape.svg_file; + wxString dlg_file = from_u8(get_file_name(((!svg.path.empty()) ? svg.path : svg.path_in_3mf))) + ".svg"; + wxFileDialog dlg(parent, dlg_title, last_used_directory, dlg_file, wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + if (dlg.ShowModal() == wxID_OK ){ + last_used_directory = dlg.GetDirectory(); + wxString out_path = dlg.GetPath(); + std::string path{out_path.c_str()}; + //Slic3r::save(*m_volume_shape.svg_file.image, path); + + std::ofstream stream(path); + if (stream.is_open()){ + stream << *svg.file_data; + + // change source file + m_filename_preview.clear(); + m_volume_shape.svg_file->path = path; + m_volume_shape.svg_file->path_in_3mf.clear(); // possible change name + m_volume->emboss_shape->svg_file = m_volume_shape.svg_file; // copy - write changes into volume + } else { + BOOST_LOG_TRIVIAL(error) << "Opening file: \"" << path << "\" Failed"; + } + + } + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s", _u8L("Save as '.svg' file").c_str()); + } + + //draw(get_icon(m_icons, IconType::save)); + //ImGui::SameLine(); + //if (ImGui::Selectable((_L("Save used as") + dots).ToUTF8().data())) { + // GUI::FileType file_type = FT_SVG; + // wxString wildcard = file_wildcards(file_type); + // wxString dlg_title = _L("Export SVG file:"); + // wxString dlg_dir = from_u8(wxGetApp().app_config->get_last_dir()); + // const EmbossShape::SvgFile& svg = m_volume_shape.svg_file; + // wxString dlg_file = from_u8(get_file_name(((!svg.path.empty()) ? svg.path : svg.path_in_3mf))) + ".svg"; + // wxFileDialog dlg(nullptr, dlg_title, dlg_dir, dlg_file, wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + // if (dlg.ShowModal() == wxID_OK ){ + // wxString out_path = dlg.GetPath(); + // std::string path{out_path.c_str()}; + // Slic3r::save(*m_volume_shape.svg_file.image, path); + // } + //} else if (ImGui::IsItemHovered()) { + // ImGui::SetTooltip("%s", _u8L("Save only used path as '.svg' file").c_str()); + //} + } + + if (file_changed) { + float scale = get_scale_for_tolerance(); + double tes_tol = get_tesselation_tolerance(scale); + EmbossShape es_ = select_shape(m_volume_shape.svg_file->path, tes_tol); + m_volume_shape.svg_file = std::move(es_.svg_file); + m_volume_shape.shapes_with_ids = std::move(es_.shapes_with_ids); + m_volume_shape.final_shape = {}; // clear cache + m_shape_warnings = create_shape_warnings(m_volume_shape, scale); + init_texture(m_texture, m_volume_shape.shapes_with_ids, m_gui_cfg->texture_max_size_px, m_shape_warnings); + process(); + } +} + +void GLGizmoSVG::draw_depth() +{ + ImGuiWrapper::text(m_gui_cfg->translations.depth); + ImGui::SameLine(m_gui_cfg->input_offset); + ImGui::SetNextItemWidth(m_gui_cfg->input_width); + + bool use_inch = wxGetApp().app_config->get_bool("use_inches"); + double &value = m_volume_shape.projection.depth; + constexpr double step = 1.; + constexpr double step_fast = 10.; + std::optional result_scale; + const char *size_format = "%.1f mm"; + double input = value; + if (use_inch) { + size_format = "%.2f in"; + // input in inches + input *= ObjectManipulation::mm_to_in * m_scale_depth.value_or(1.f); + result_scale = ObjectManipulation::in_to_mm / m_scale_depth.value_or(1.f); + } else if (m_scale_depth.has_value()) { + // scale input + input *= (*m_scale_depth); + result_scale = 1. / (*m_scale_depth); + } + + if (ImGui::InputDouble("##depth", &input, step, step_fast, size_format)) { + if (result_scale.has_value()) + input *= (*result_scale); + apply(input, limits.depth); + if (!is_approx(input, value, 1e-4)){ + value = input; + process(); + } + } else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Size in emboss direction.").c_str()); +} + +void GLGizmoSVG::draw_size() +{ + ImGuiWrapper::text(m_gui_cfg->translations.size); + if (ImGui::IsItemHovered()){ + size_t count_points = 0; + for (const auto &s : m_volume_shape.shapes_with_ids) + count_points += Slic3r::count_points(s.expoly); + // TRN: The placeholder contains a number. + ImGui::SetTooltip("%s", GUI::format(_L("Scale also changes amount of curve samples (%1%)"), count_points).c_str()); + } + + bool use_inch = wxGetApp().app_config->get_bool("use_inches"); + + Point size = m_shape_bb.size(); + double width = size.x() * m_volume_shape.scale * m_scale_width.value_or(1.f); + if (use_inch) width *= ObjectManipulation::mm_to_in; + double height = size.y() * m_volume_shape.scale * m_scale_height.value_or(1.f); + if (use_inch) height *= ObjectManipulation::mm_to_in; + + const auto is_valid_scale_ratio = [limit = &limits.relative_scale_ratio](double ratio) { + if (std::fabs(ratio - 1.) < limit->min) + return false; // too small ratio --> without effect + + if (ratio > limit->max) + return false; + + if (ratio < 1e-4) + return false; // negative scale is not allowed + + return true; + }; + + std::optional new_relative_scale; + if (m_keep_ratio) { + std::stringstream ss; + ss << std::setprecision(2) << std::fixed << width << " x " << height << " " << (use_inch ? "in" : "mm"); + + ImGui::SameLine(m_gui_cfg->input_offset); + ImGui::SetNextItemWidth(m_gui_cfg->input_width); + + const MinMax &minmax = use_inch ? limits.ui_size_in : limits.ui_size; + // convert to float for slider + float width_f = static_cast(width); + if (m_imgui->slider_float("##width_size_slider", &width_f, minmax.min, minmax.max, ss.str().c_str(), 1.f, false)) { + double width_ratio = width_f / width; + if (is_valid_scale_ratio(width_ratio)) { + m_scale_width = m_scale_width.value_or(1.f) * width_ratio; + m_scale_height = m_scale_height.value_or(1.f) * width_ratio; + new_relative_scale = Vec3d(width_ratio, width_ratio, 1.); + } + } + } else { + ImGuiInputTextFlags flags = 0; + + float space = m_gui_cfg->icon_width / 2; + float input_width = m_gui_cfg->input_width / 2 - space / 2; + float second_offset = m_gui_cfg->input_offset + input_width + space; + + const char *size_format = (use_inch) ? "%.2f in" : "%.1f mm"; + double step = -1.0; + double fast_step = -1.0; + + ImGui::SameLine(m_gui_cfg->input_offset); + ImGui::SetNextItemWidth(input_width); + double prev_width = width; + if (ImGui::InputDouble("##width", &width, step, fast_step, size_format, flags)) { + double width_ratio = width / prev_width; + if (is_valid_scale_ratio(width_ratio)) { + m_scale_width = m_scale_width.value_or(1.f) * width_ratio; + new_relative_scale = Vec3d(width_ratio, 1., 1.); + } + } + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Width of SVG.").c_str()); + + ImGui::SameLine(second_offset); + ImGui::SetNextItemWidth(input_width); + double prev_height = height; + if (ImGui::InputDouble("##height", &height, step, fast_step, size_format, flags)) { + double height_ratio = height / prev_height; + if (is_valid_scale_ratio(height_ratio)) { + m_scale_height = m_scale_height.value_or(1.f) * height_ratio; + new_relative_scale = Vec3d(1., height_ratio, 1.); + } + } + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Height of SVG.").c_str()); + } + + // Lock on ratio m_keep_ratio + ImGui::SameLine(m_gui_cfg->lock_offset); + const IconManager::Icon &icon = get_icon(m_icons, m_keep_ratio ? IconType::lock : IconType::unlock); + const IconManager::Icon &icon_hover = get_icon(m_icons, m_keep_ratio ? IconType::lock_hover : IconType::unlock_hover); + if (button(icon, icon_hover, icon)) + m_keep_ratio = !m_keep_ratio; + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Lock/unlock the aspect ratio of the SVG.").c_str()); + + + // reset button + bool can_reset = m_scale_width.has_value() || m_scale_height.has_value(); + if (can_reset) { + if (reset_button(m_icons)) { + new_relative_scale = Vec3d(1./m_scale_width.value_or(1.f), 1./m_scale_height.value_or(1.f), 1.); + } else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Reset scale").c_str()); + } + + if (new_relative_scale.has_value()){ + Selection &selection = m_parent.get_selection(); + selection.setup_cache(); + + auto selection_scale_fnc = [&selection, rel_scale = *new_relative_scale]() { + selection.scale(rel_scale, get_drag_transformation_type(selection)); + }; + selection_transform(selection, selection_scale_fnc); + + m_parent.do_scale(L("Resize")); + wxGetApp().obj_manipul()->set_dirty(); + // should be the almost same + calculate_scale(); + + NSVGimage *img = m_volume_shape.svg_file->image.get(); + assert(img != NULL); + if (img != NULL){ + NSVGLineParams params{get_tesselation_tolerance(get_scale_for_tolerance())}; + m_volume_shape.shapes_with_ids = create_shape_with_ids(*img, params); + m_volume_shape.final_shape = {}; // reset cache for final shape + process(); + } + } +} + +void GLGizmoSVG::draw_use_surface() +{ + bool can_use_surface = (m_volume->emboss_shape->projection.use_surface)? true : // already used surface must have option to uncheck + !m_volume->is_the_only_one_part(); + m_imgui->disabled_begin(!can_use_surface); + ScopeGuard sc([imgui = m_imgui]() { imgui->disabled_end(); }); + + ImGuiWrapper::text(m_gui_cfg->translations.use_surface); + ImGui::SameLine(m_gui_cfg->input_offset); + + if (ImGui::Checkbox("##useSurface", &m_volume_shape.projection.use_surface)) + process(); +} + +void GLGizmoSVG::draw_distance() +{ + const EmbossProjection& projection = m_volume->emboss_shape->projection; + bool use_surface = projection.use_surface; + bool allowe_surface_distance = !use_surface && !m_volume->is_the_only_one_part(); + + float prev_distance = m_distance.value_or(.0f); + float min_distance = static_cast(-2 * projection.depth); + float max_distance = static_cast(2 * projection.depth); + + m_imgui->disabled_begin(!allowe_surface_distance); + ScopeGuard sg([imgui = m_imgui]() { imgui->disabled_end(); }); + + ImGuiWrapper::text(m_gui_cfg->translations.distance); + ImGui::SameLine(m_gui_cfg->input_offset); + ImGui::SetNextItemWidth(m_gui_cfg->input_width); + + bool use_inch = wxGetApp().app_config->get_bool("use_inches"); + const wxString move_tooltip = _L("Distance of the center of the SVG to the model surface."); + bool is_moved = false; + if (use_inch) { + std::optional distance_inch; + if (m_distance.has_value()) distance_inch = (*m_distance * ObjectManipulation::mm_to_in); + min_distance = static_cast(min_distance * ObjectManipulation::mm_to_in); + max_distance = static_cast(max_distance * ObjectManipulation::mm_to_in); + if (m_imgui->slider_optional_float("##distance", m_distance, min_distance, max_distance, "%.3f in", 1.f, false, move_tooltip)) { + if (distance_inch.has_value()) { + m_distance = *distance_inch * ObjectManipulation::in_to_mm; + } else { + m_distance.reset(); + } + is_moved = true; + } + } else { + if (m_imgui->slider_optional_float("##distance", m_distance, min_distance, max_distance, "%.2f mm", 1.f, false, move_tooltip)) + is_moved = true; + } + + bool can_reset = m_distance.has_value(); + if (can_reset) { + if (reset_button(m_icons)) { + m_distance.reset(); + is_moved = true; + } else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Reset distance").c_str()); + } + + if (is_moved) + do_local_z_move(m_parent, m_distance.value_or(.0f) - prev_distance); +} + +void GLGizmoSVG::draw_rotation() +{ + ImGuiWrapper::text(m_gui_cfg->translations.rotation); + ImGui::SameLine(m_gui_cfg->input_offset); + ImGui::SetNextItemWidth(m_gui_cfg->input_width); + + // slider for Clock-wise angle in degress + // stored angle is optional CCW and in radians + // Convert stored value to degress + // minus create clock-wise roation from CCW + float angle = m_angle.value_or(0.f); + float angle_deg = static_cast(-angle * 180 / M_PI); + if (m_imgui->slider_float("##angle", &angle_deg, limits.angle.min, limits.angle.max, u8"%.2f °", 1.f, false, _L("Rotate text Clock-wise."))){ + // convert back to radians and CCW + double angle_rad = -angle_deg * M_PI / 180.0; + Geometry::to_range_pi_pi(angle_rad); + + double diff_angle = angle_rad - angle; + + do_local_z_rotate(m_parent, diff_angle); + + // calc angle after rotation + m_angle = calc_angle(m_parent.get_selection()); + + // recalculate for surface cut + if (m_volume->emboss_shape->projection.use_surface) + process(); + } + + // Reset button + if (m_angle.has_value()) { + if (reset_button(m_icons)) { + do_local_z_rotate(m_parent, -(*m_angle)); + m_angle.reset(); + + // recalculate for surface cut + if (m_volume->emboss_shape->projection.use_surface) + process(); + } else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Reset rotation").c_str()); + } + + // Keep up - lock button icon + if (!m_volume->is_the_only_one_part()) { + ImGui::SameLine(m_gui_cfg->lock_offset); + const IconManager::Icon &icon = get_icon(m_icons,m_keep_up ? IconType::lock : IconType::unlock); + const IconManager::Icon &icon_hover = get_icon(m_icons, m_keep_up ? IconType::lock_hover : IconType::unlock_hover); + if (button(icon, icon_hover, icon)) + m_keep_up = !m_keep_up; + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Lock/unlock rotation angle when dragging above the surface.").c_str()); + } +} + +void GLGizmoSVG::draw_mirroring() +{ + ImGui::Text("%s", m_gui_cfg->translations.mirror.c_str()); + ImGui::SameLine(m_gui_cfg->input_offset); + Axis axis = Axis::UNKNOWN_AXIS; + if(clickable(get_icon(m_icons, IconType::reflection_x), get_icon(m_icons, IconType::reflection_x_hover))){ + axis = Axis::X; + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s", _u8L("Mirror vertically").c_str()); + } + + ImGui::SameLine(); + if (clickable(get_icon(m_icons, IconType::reflection_y), get_icon(m_icons, IconType::reflection_y_hover))) { + axis = Axis::Y; + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s", _u8L("Mirror horizontally").c_str()); + } + + if (axis != Axis::UNKNOWN_AXIS){ + Selection &selection = m_parent.get_selection(); + selection.setup_cache(); + + auto selection_mirror_fnc = [&selection, &axis](){ + selection.mirror(axis, get_drag_transformation_type(selection)); + }; + selection_transform(selection, selection_mirror_fnc); + m_parent.do_mirror(L("Set Mirror")); + + // Mirror is ignoring keep up !! + if (m_keep_up) + m_angle = calc_angle(selection); + + volume_transformation_changed(); + + + if (m_volume_shape.projection.use_surface) + process(); + } +} + +void GLGizmoSVG::draw_model_type() +{ + bool is_last_solid_part = m_volume->is_the_only_one_part(); + std::string title = _u8L("Operation"); + if (is_last_solid_part) { + ImVec4 color{.5f, .5f, .5f, 1.f}; + m_imgui->text_colored(color, title.c_str()); + } else { + ImGui::Text("%s", title.c_str()); + } + + std::optional new_type; + ModelVolumeType modifier = ModelVolumeType::PARAMETER_MODIFIER; + ModelVolumeType negative = ModelVolumeType::NEGATIVE_VOLUME; + ModelVolumeType part = ModelVolumeType::MODEL_PART; + ModelVolumeType type = m_volume->type(); + + //TRN EmbossOperation + if (ImGui::RadioButton(_u8L("Join").c_str(), type == part)) + new_type = part; + else if (ImGui::IsItemHovered()) + ImGui::SetTooltip("%s", _u8L("Click to change text into object part.").c_str()); + ImGui::SameLine(); + + std::string last_solid_part_hint = _u8L("You can't change a type of the last solid part of the object."); + if (ImGui::RadioButton(_CTX_utf8(L_CONTEXT("Cut", "EmbossOperation"), "EmbossOperation").c_str(), type == negative)) + new_type = negative; + else if (ImGui::IsItemHovered()) { + if (is_last_solid_part) + ImGui::SetTooltip("%s", last_solid_part_hint.c_str()); + else if (type != negative) + ImGui::SetTooltip("%s", _u8L("Click to change part type into negative volume.").c_str()); + } + + // In simple mode are not modifiers + if (wxGetApp().plater()->printer_technology() != ptSLA && wxGetApp().get_mode() != ConfigOptionMode::comSimple) { + ImGui::SameLine(); + if (ImGui::RadioButton(_u8L("Modifier").c_str(), type == modifier)) + new_type = modifier; + else if (ImGui::IsItemHovered()) { + if (is_last_solid_part) + ImGui::SetTooltip("%s", last_solid_part_hint.c_str()); + else if (type != modifier) + ImGui::SetTooltip("%s", _u8L("Click to change part type into modifier.").c_str()); + } + } + + if (m_volume != nullptr && new_type.has_value() && !is_last_solid_part) { + GUI_App &app = wxGetApp(); + Plater * plater = app.plater(); + // TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). + Plater::TakeSnapshot snapshot(plater, _L("Change SVG Type"), UndoRedo::SnapshotType::GizmoAction); + m_volume->set_type(*new_type); + + bool is_volume_move_inside = (type == part); + bool is_volume_move_outside = (*new_type == part); + // Update volume position when switch (from part) or (into part) + if ((is_volume_move_inside || is_volume_move_outside)) + process(); + + // inspiration in ObjectList::change_part_type() + // how to view correct side panel with objects + ObjectList *obj_list = app.obj_list(); + wxDataViewItemArray sel = obj_list->reorder_volumes_and_get_selection( + obj_list->get_selected_obj_idx(), + [volume = m_volume](const ModelVolume *vol) { return vol == volume; }); + if (!sel.IsEmpty()) obj_list->select_item(sel.front()); + + // NOTE: on linux, function reorder_volumes_and_get_selection call GLCanvas3D::reload_scene(refresh_immediately = false) + // which discard m_volume pointer and set it to nullptr also selection is cleared so gizmo is automaticaly closed + auto &mng = m_parent.get_gizmos_manager(); + if (mng.get_current_type() != GLGizmosManager::Svg) + mng.open_gizmo(GLGizmosManager::Svg); + // TODO: select volume back - Ask @Sasa + } +} + + +///////////// +// private namespace implementation +/////////////// +namespace { + +std::string get_file_name(const std::string &file_path) +{ + if (file_path.empty()) + return file_path; + + size_t pos_last_delimiter = file_path.find_last_of("/\\"); + if (pos_last_delimiter == std::string::npos) { + // should not happend that in path is not delimiter + assert(false); + pos_last_delimiter = 0; + } + + size_t pos_point = file_path.find_last_of('.'); + if (pos_point == std::string::npos || pos_point < pos_last_delimiter // last point is inside of directory path + ) { + // there is no extension + assert(false); + pos_point = file_path.size(); + } + + size_t offset = pos_last_delimiter + 1; // result should not contain last delimiter ( +1 ) + size_t count = pos_point - pos_last_delimiter - 1; // result should not contain extension point ( -1 ) + return file_path.substr(offset, count); +} + +std::string volume_name(const EmbossShape &shape) +{ + std::string file_name = get_file_name(shape.svg_file->path); + if (!file_name.empty()) + return file_name; + return "SVG shape"; +} + +CreateVolumeParams create_input(GLCanvas3D &canvas, RaycastManager& raycaster, ModelVolumeType volume_type) +{ + auto gizmo = static_cast(GLGizmosManager::Svg); + const GLVolume *gl_volume = get_first_hovered_gl_volume(canvas); + Plater *plater = wxGetApp().plater(); + return CreateVolumeParams{canvas, plater->get_camera(), plater->build_volume(), + plater->get_ui_job_worker(), volume_type, raycaster, gizmo, gl_volume}; +} + +GuiCfg create_gui_configuration() { + GuiCfg cfg; // initialize by default values; + + float line_height = ImGui::GetTextLineHeight(); + float line_height_with_spacing = ImGui::GetTextLineHeightWithSpacing(); + + float space = line_height_with_spacing - line_height; + + cfg.icon_width = std::max(std::round(line_height/8)*8, 8.f); + + GuiCfg::Translations &tr = cfg.translations; + + float lock_width = cfg.icon_width + 3 * space; + // TRN - Input label. Be short as possible + tr.depth = _u8L("Depth"); + // TRN - Input label. Be short as possible + tr.size = _u8L("Size"); + // TRN - Input label. Be short as possible + tr.use_surface = _u8L("Use surface"); + // TRN - Input label. Be short as possible + tr.distance = _u8L("From surface"); + // TRN - Input label. Be short as possible + tr.rotation = _u8L("Rotation"); + // TRN - Input label. Be short as possible + tr.mirror = _u8L("Mirror"); + float max_tr_width = std::max({ + ImGui::CalcTextSize(tr.depth.c_str()).x, + ImGui::CalcTextSize(tr.size.c_str()).x + lock_width, + ImGui::CalcTextSize(tr.use_surface.c_str()).x, + ImGui::CalcTextSize(tr.distance.c_str()).x, + ImGui::CalcTextSize(tr.rotation.c_str()).x + lock_width, + ImGui::CalcTextSize(tr.mirror.c_str()).x, + }); + + const ImGuiStyle &style = ImGui::GetStyle(); + cfg.input_offset = style.WindowPadding.x + max_tr_width + space + cfg.icon_width; + cfg.lock_offset = cfg.input_offset - (cfg.icon_width + 2 * space); + + ImVec2 letter_m_size = ImGui::CalcTextSize("M"); + const float count_letter_M_in_input = 12.f; + cfg.input_width = letter_m_size.x * count_letter_M_in_input; + cfg.texture_max_size_px = std::round((cfg.input_width + cfg.input_offset + cfg.icon_width + space)/8) * 8; + + // calculate window size + float window_input_width = cfg.input_offset + cfg.input_width + style.WindowPadding.x + space; + float window_image_width = cfg.texture_max_size_px + 2*style.WindowPadding.x; + + float window_title = line_height + 2 * style.FramePadding.y + 2 * style.WindowTitleAlign.y; + float input_height = line_height_with_spacing + 2 * style.FramePadding.y; + float separator_height = 2 + style.FramePadding.y; + float window_height = + window_title + // window title + cfg.texture_max_size_px + 2 * style.FramePadding.y + // preview (-- not sure with padding -> fix retina height) + line_height_with_spacing + // filename + separator_height + // separator - orange line + input_height * 7 + // depth + size + use_surface + FromSurface + Rotation + Mirror + FaceTheCamera + 2 * style.WindowPadding.y; + cfg.window_size_for_object = ImVec2(std::max(window_input_width, window_image_width), window_height); + float change_type_height = separator_height + line_height_with_spacing + input_height; + cfg.window_size = ImVec2(cfg.window_size_for_object.x, cfg.window_size_for_object.y + change_type_height); + return cfg; +} + +std::string choose_svg_file() +{ + wxWindow *parent = nullptr; + wxString message = _L("Choose SVG file for emboss:"); + wxString selected_file = wxEmptyString; + wxString wildcard = file_wildcards(FT_SVG); + long style = wxFD_OPEN | wxFD_FILE_MUST_EXIST; + wxFileDialog dialog(parent, message, last_used_directory, selected_file, wildcard, style); + if (dialog.ShowModal() != wxID_OK) { + BOOST_LOG_TRIVIAL(warning) << "SVG file for emboss was NOT selected."; + return {}; + } + + wxArrayString input_files; + dialog.GetPaths(input_files); + if (input_files.IsEmpty()) { + BOOST_LOG_TRIVIAL(warning) << "SVG file dialog result is empty."; + return {}; + } + + if (input_files.size() != 1) + BOOST_LOG_TRIVIAL(warning) << "SVG file dialog result contain multiple files but only first is used."; + + std::string path = into_u8(input_files.front()); + if (!boost::filesystem::exists(path)) { + BOOST_LOG_TRIVIAL(warning) << "SVG file dialog return invalid path."; + return {}; + } + + if (!boost::algorithm::iends_with(path, ".svg")) { + BOOST_LOG_TRIVIAL(warning) << "SVG file dialog return path without '.svg' tail"; + return {}; + } + + last_used_directory = dialog.GetDirectory(); + return path; +} + +EmbossShape select_shape(std::string_view filepath, double tesselation_tolerance) +{ + EmbossShape shape; + shape.projection.depth = 10.; + shape.projection.use_surface = false; + + EmbossShape::SvgFile svg; + if (filepath.empty()) { + // When empty open file dialog + svg.path = choose_svg_file(); + if (svg.path.empty()) + return {}; // file was not selected + } else { + svg.path = filepath; // copy + } + + + boost::filesystem::path path(svg.path); + if (!boost::filesystem::exists(path)) { + show_error(nullptr, GUI::format(_u8L("File does NOT exist (%1%)."), svg.path)); + return {}; + } + + if (!boost::algorithm::iends_with(svg.path, ".svg")) { + show_error(nullptr, GUI::format(_u8L("Filename has to end with \".svg\" but you selected %1%"), svg.path)); + return {}; + } + + if(init_image(svg) == nullptr) { + show_error(nullptr, GUI::format(_u8L("Nano SVG parser can't load from file (%1%)."), svg.path)); + return {}; + } + + // Set default and unchanging scale + NSVGLineParams params{tesselation_tolerance}; + shape.shapes_with_ids = create_shape_with_ids(*svg.image, params); + + // Must contain some shapes !!! + if (shape.shapes_with_ids.empty()) { + show_error(nullptr, GUI::format(_u8L("SVG file does NOT contain a single path to be embossed (%1%)."), svg.path)); + return {}; + } + shape.svg_file = std::move(svg); + return shape; +} + +DataBasePtr create_emboss_data_base(std::shared_ptr> &cancel, ModelVolumeType volume_type, std::string_view filepath) +{ + EmbossShape shape = select_shape(filepath); + + if (shape.shapes_with_ids.empty()) + // canceled selection of SVG file + return nullptr; + + // Cancel previous Job, when it is in process + // worker.cancel(); --> Use less in this case I want cancel only previous EmbossJob no other jobs + // Cancel only EmbossUpdateJob no others + if (cancel != nullptr) + cancel->store(true); + // create new shared ptr to cancel new job + cancel = std::make_shared>(false); + + std::string name = volume_name(shape); + + auto result = std::make_unique(name, cancel /*copy*/, std::move(shape)); + result->is_outside = volume_type == ModelVolumeType::MODEL_PART; + return result; +} +} // namespace + +// any existing icon filename to not influence GUI +const std::string GLGizmoSVG::M_ICON_FILENAME = "cut.svg"; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp new file mode 100644 index 0000000..36b1258 --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp @@ -0,0 +1,203 @@ +#ifndef slic3r_GLGizmoSVG_hpp_ +#define slic3r_GLGizmoSVG_hpp_ + +// Include GLGizmoBase.hpp before I18N.hpp as it includes some libigl code, +// which overrides our localization "L" macro. +#include "GLGizmoBase.hpp" +#include "GLGizmoRotate.hpp" +#include "slic3r/GUI/SurfaceDrag.hpp" +#include "slic3r/GUI/GLTexture.hpp" +#include "slic3r/Utils/RaycastManager.hpp" +#include "slic3r/GUI/IconManager.hpp" + +#include +#include +#include + +#include "libslic3r/Emboss.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Model.hpp" + +#include +#include + +namespace Slic3r{ +class ModelVolume; +enum class ModelVolumeType : int; +} + +namespace Slic3r::GUI { + +struct Texture{ + unsigned id{0}; + unsigned width{0}; + unsigned height{0}; +}; + +class GLGizmoSVG : public GLGizmoBase +{ +public: + explicit GLGizmoSVG(GLCanvas3D &parent); + + /// + /// Create new embossed text volume by type on position of mouse + /// + /// Object part / Negative volume / Modifier + /// Define position of new volume + /// True on succesfull start creation otherwise False + bool create_volume(ModelVolumeType volume_type, const Vec2d &mouse_pos); // first open file dialog + + /// + /// Create new text without given position + /// + /// Object part / Negative volume / Modifier + /// True on succesfull start creation otherwise False + bool create_volume(ModelVolumeType volume_type); // first open file dialog + + /// + /// Create volume from already selected svg file + /// + /// File path + /// Position on screen where to create volume + /// Object part / Negative volume / Modifier + /// True on succesfull start creation otherwise False + bool create_volume(std::string_view svg_file, const Vec2d &mouse_pos, ModelVolumeType volume_type = ModelVolumeType::MODEL_PART); + bool create_volume(std::string_view svg_file, ModelVolumeType volume_type = ModelVolumeType::MODEL_PART); + + /// + /// Check whether volume is object containing only emboss volume + /// + /// Pointer to volume + /// True when object otherwise False + static bool is_svg_object(const ModelVolume &volume); + + /// + /// Check whether volume has emboss data + /// + /// Pointer to volume + /// True when constain emboss data otherwise False + static bool is_svg(const ModelVolume &volume); + +protected: + bool on_init() override; + std::string on_get_name() const override; + void on_render() override; + void on_register_raycasters_for_picking() override; + void on_unregister_raycasters_for_picking() override; + void on_render_input_window(float x, float y, float bottom_limit) override; + bool on_is_activable() const override { return true; } + bool on_is_selectable() const override { return false; } + void on_set_state() override; + void data_changed(bool is_serializing) override; // selection changed + void on_set_hover_id() override{ m_rotate_gizmo.set_hover_id(m_hover_id); } + void on_enable_grabber(unsigned int id) override { m_rotate_gizmo.enable_grabber(); } + void on_disable_grabber(unsigned int id) override { m_rotate_gizmo.disable_grabber(); } + void on_start_dragging() override; + void on_stop_dragging() override; + void on_dragging(const UpdateData &data) override; + + /// + /// Rotate by text on dragging rotate grabers + /// + /// Information about mouse + /// Propagete normaly return false. + bool on_mouse(const wxMouseEvent &mouse_event) override; + + bool wants_enter_leave_snapshots() const override; + std::string get_gizmo_entering_text() const override; + std::string get_gizmo_leaving_text() const override; + std::string get_action_snapshot_name() const override; +private: + void set_volume_by_selection(); + void reset_volume(); + + // create volume from text - main functionality + bool process(); + void close(); + void draw_window(); + void draw_preview(); + void draw_filename(); + void draw_depth(); + void draw_size(); + void draw_use_surface(); + void draw_distance(); + void draw_rotation(); + void draw_mirroring(); + void draw_face_the_camera(); + void draw_model_type(); + + // process mouse event + bool on_mouse_for_rotation(const wxMouseEvent &mouse_event); + bool on_mouse_for_translate(const wxMouseEvent &mouse_event); + + void volume_transformation_changed(); + + struct GuiCfg; + std::unique_ptr m_gui_cfg; + + // actual selected only one volume - with emboss data + ModelVolume *m_volume = nullptr; + + // Is used to edit eboss and send changes to job + // Inside volume is current state of shape WRT Volume + EmbossShape m_volume_shape; // copy from m_volume for edit + + // same index as volumes in + std::vector m_shape_warnings; + + // When work with undo redo stack there could be situation that + // m_volume point to unexisting volume so One need also objectID + ObjectID m_volume_id; + + // cancel for previous update of volume to cancel finalize part + std::shared_ptr> m_job_cancel = nullptr; + + // Rotation gizmo + GLGizmoRotate m_rotate_gizmo; + std::optional m_angle; + std::optional m_distance; + + // Value is set only when dragging rotation to calculate actual angle + std::optional m_rotate_start_angle; + + // TODO: it should be accessible by other gizmo too. + // May be move to plater? + RaycastManager m_raycast_manager; + + // When true keep up vector otherwise relative rotation + bool m_keep_up = true; + + // Keep size aspect ratio when True. + bool m_keep_ratio = true; + + // setted only when wanted to use - not all the time + std::optional m_set_window_offset; + + // Keep data about dragging only during drag&drop + std::optional m_surface_drag; + + // For volume on scaled objects + std::optional m_scale_width; + std::optional m_scale_height; + std::optional m_scale_depth; + void calculate_scale(); + float get_scale_for_tolerance(); + + // keep SVG data rendered on GPU + Texture m_texture; + + // bounding box of shape + // Note: Scaled mm to int value by m_volume_shape.scale + BoundingBox m_shape_bb; + + std::string m_filename_preview; + + IconManager m_icon_manager; + IconManager::Icons m_icons; + + // only temporary solution + static const std::string M_ICON_FILENAME; +}; +} // namespace Slic3r::GUI + +#endif // slic3r_GLGizmoSVG_hpp_ diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 0b083a4..c686de3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -37,7 +37,7 @@ static void call_after_if_active(std::function fn, GUI_App* app = &wxGet }); } -static std::set get_volume_ids(const Selection &selection) +static std::set get_selected_volume_ids(const Selection &selection) { const Selection::IndicesList &volume_ids = selection.get_volume_idxs(); const ModelObjectPtrs &model_objects = selection.get_model()->objects; @@ -64,19 +64,6 @@ static std::set get_volume_ids(const Selection &selection) return result; } -// return ModelVolume from selection by object id -static ModelVolume *get_volume(const ObjectID &id, const Selection &selection) { - const Selection::IndicesList &volume_ids = selection.get_volume_idxs(); - const ModelObjectPtrs &model_objects = selection.get_model()->objects; - for (auto volume_id : volume_ids) { - const GLVolume *selected_volume = selection.get_volume(volume_id); - const GLVolume::CompositeID &cid = selected_volume->composite_id; - ModelObject *obj = model_objects[cid.object_id]; - ModelVolume *volume = obj->volumes[cid.volume_id]; - if (id == volume->id()) return volume; - } - return nullptr; -} static std::string create_volumes_name(const std::set& ids, const Selection &selection){ assert(!ids.empty()); @@ -88,7 +75,7 @@ static std::string create_volumes_name(const std::set& ids, const Sele else name += " + "; - const ModelVolume *volume = get_volume(id, selection); + const ModelVolume *volume = get_selected_volume(id, selection); assert(volume != nullptr); name += volume->name; } @@ -181,11 +168,11 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi { create_gui_cfg(); const Selection &selection = m_parent.get_selection(); - auto act_volume_ids = get_volume_ids(selection); + auto act_volume_ids = get_selected_volume_ids(selection); if (act_volume_ids.empty()) { stop_worker_thread_request(); close(); - if (! m_parent.get_selection().is_single_volume()) { + if (m_parent.get_selection().volumes_count() != 1) { MessageDialog msg((wxWindow*)wxGetApp().mainframe, _L("Simplification is currently only allowed when a single part is selected"), _L("Error")); @@ -471,7 +458,7 @@ void GLGizmoSimplify::process() const Selection& selection = m_parent.get_selection(); State::Data its; for (const auto &id : m_volume_ids) { - const ModelVolume *volume = get_volume(id, selection); + const ModelVolume *volume = get_selected_volume(id, selection); its[id] = std::make_unique(volume->mesh().its); // copy } @@ -549,7 +536,7 @@ void GLGizmoSimplify::apply_simplify() { for (const auto &item: m_state.result) { const ObjectID &id = item.first; const indexed_triangle_set &its = *item.second; - ModelVolume *volume = get_volume(id, selection); + ModelVolume *volume = get_selected_volume(id, selection); assert(volume != nullptr); ModelObject *obj = volume->get_object(); @@ -725,7 +712,7 @@ void GLGizmoSimplify::on_render() const Selection & selection = m_parent.get_selection(); // Check that the GLVolume still belongs to the ModelObject we work on. - if (m_volume_ids != get_volume_ids(selection)) return; + if (m_volume_ids != get_selected_volume_ids(selection)) return; const ModelObjectPtrs &model_objects = selection.get_model()->objects; const Selection::IndicesList &volume_idxs = selection.get_volume_idxs(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 3103cd9..794747b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -22,6 +22,7 @@ #include "slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp" #include "slic3r/GUI/Gizmos/GLGizmoSimplify.hpp" #include "slic3r/GUI/Gizmos/GLGizmoEmboss.hpp" +#include "slic3r/GUI/Gizmos/GLGizmoSVG.hpp" #include "slic3r/GUI/Gizmos/GLGizmoMeasure.hpp" #include "libslic3r/format.hpp" @@ -109,6 +110,7 @@ bool GLGizmosManager::init() m_gizmos.emplace_back(new GLGizmoMmuSegmentation(m_parent, "mmu_segmentation.svg", 9)); m_gizmos.emplace_back(new GLGizmoMeasure(m_parent, "measure.svg", 10)); m_gizmos.emplace_back(new GLGizmoEmboss(m_parent)); + m_gizmos.emplace_back(new GLGizmoSVG(m_parent)); m_gizmos.emplace_back(new GLGizmoSimplify(m_parent)); m_common_gizmos_data.reset(new CommonGizmosDataPool(&m_parent)); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index 8c98596..509a433 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -79,6 +79,7 @@ public: MmuSegmentation, Measure, Emboss, + Svg, Simplify, Undefined }; diff --git a/src/slic3r/GUI/IconManager.cpp b/src/slic3r/GUI/IconManager.cpp index 45c7688..e85e710 100644 --- a/src/slic3r/GUI/IconManager.cpp +++ b/src/slic3r/GUI/IconManager.cpp @@ -1,6 +1,20 @@ #include "IconManager.hpp" +#include #include +#include #include +#include +#include +#include +#include "nanosvg/nanosvg.h" +#include "nanosvg/nanosvgrast.h" +#include "libslic3r/Utils.hpp" // ScopeGuard + +#include "3DScene.hpp" // glsafe +#include "GL/glew.h" + +#define STB_RECT_PACK_IMPLEMENTATION +#include "imgui/imstb_rectpack.h" // distribute rectangles using namespace Slic3r::GUI; @@ -14,16 +28,195 @@ static void draw_transparent_icon(const IconManager::Icon &icon); // only help f IconManager::~IconManager() { priv::clear(m_icons); // release opengl texture is made in ~GLTexture() + if (m_id != 0) + glsafe(::glDeleteTextures(1, &m_id)); } -std::vector IconManager::init(const InitTypes &input) +namespace { +NSVGimage *parse_file(const char * filepath) { + FILE *fp = boost::nowide::fopen(filepath, "rb"); + assert(fp != nullptr); + if (fp == nullptr) + return nullptr; + + Slic3r::ScopeGuard sg([fp]() { fclose(fp); }); + + fseek(fp, 0, SEEK_END); + size_t size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + // Note: +1 is for null termination + auto data_ptr = std::make_unique(size+1); + data_ptr[size] = '\0'; // Must be null terminated. + + size_t readed_size = fread(data_ptr.get(), 1, size, fp); + assert(readed_size == size); + if (readed_size != size) + return nullptr; + + return nsvgParse(data_ptr.get(), "px", 96.0f); +} + +void subdata(unsigned char *data, size_t data_stride, const std::vector &data2, size_t data2_row) { + assert(data_stride >= data2_row); + for (size_t data2_offset = 0, data_offset = 0; + data2_offset < data2.size(); + data2_offset += data2_row, data_offset += data_stride) + ::memcpy((void *)(data + data_offset), (const void *)(data2.data() + data2_offset), data2_row); +} +} + +IconManager::Icons IconManager::init(const InitTypes &input) { - BOOST_LOG_TRIVIAL(error) << "Not implemented yet"; + assert(!input.empty()); + if (input.empty()) + return {}; + + // TODO: remove in future + if (m_id != 0) { + glsafe(::glDeleteTextures(1, &m_id)); + m_id = 0; + } + + int total_surface = 0; + for (const InitType &i : input) + total_surface += i.size.x * i.size.y; + const int surface_sqrt = (int)sqrt((float)total_surface) + 1; + + // Start packing + // Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values). + const int TEX_HEIGHT_MAX = 1024 * 32; + int width = (surface_sqrt >= 4096 * 0.7f) ? 4096 : (surface_sqrt >= 2048 * 0.7f) ? 2048 : (surface_sqrt >= 1024 * 0.7f) ? 1024 : 512; + + int num_nodes = width; + std::vector nodes(num_nodes); + stbrp_context context; + stbrp_init_target(&context, width, TEX_HEIGHT_MAX, nodes.data(), num_nodes); + + ImVector pack_rects; + pack_rects.resize(input.size()); + memset(pack_rects.Data, 0, (size_t) pack_rects.size_in_bytes()); + for (size_t i = 0; i < input.size(); i++) { + const ImVec2 &size = input[i].size; + assert(size.x > 1); + assert(size.y > 1); + pack_rects[i].w = size.x; + pack_rects[i].h = size.y; + } + int pack_rects_res = stbrp_pack_rects(&context, &pack_rects[0], pack_rects.Size); + assert(pack_rects_res == 1); + if (pack_rects_res != 1) + return {}; + + ImVec2 tex_size(width, width); + for (const stbrp_rect &rect : pack_rects) { + float x = rect.x + rect.w; + float y = rect.y + rect.h; + if(x > tex_size.x) tex_size.x = x; + if(y > tex_size.y) tex_size.y = y; + } + + Icons result(input.size()); + for (int i = 0; i < pack_rects.Size; i++) { + const stbrp_rect &rect = pack_rects[i]; + assert(rect.was_packed); + if (!rect.was_packed) + return {}; + + ImVec2 tl(rect.x / tex_size.x, rect.y / tex_size.y); + ImVec2 br((rect.x + rect.w) / tex_size.x, (rect.y + rect.h) / tex_size.y); + + assert(input[i].size.x == rect.w); + assert(input[i].size.y == rect.h); + Icon icon = {input[i].size, tl, br}; + result[i] = std::make_shared(std::move(icon)); + } + + NSVGrasterizer *rast = nsvgCreateRasterizer(); + assert(rast != nullptr); + if (rast == nullptr) + return {}; + ScopeGuard sg_rast([rast]() { ::nsvgDeleteRasterizer(rast); }); + + int channels = 4; + int n_pixels = tex_size.x * tex_size.y; + // store data for whole texture + std::vector data(n_pixels * channels, {0}); + + // initialize original index locations + std::vector idx(input.size()); + std::iota(idx.begin(), idx.end(), 0); + + // Group same filename by sort inputs + // sort indexes based on comparing values in input + std::sort(idx.begin(), idx.end(), [&input](size_t i1, size_t i2) { return input[i1].filepath < input[i2].filepath; }); + for (size_t j: idx) { + const InitType &i = input[j]; + if (i.filepath.empty()) + continue; // no file path only reservation of space for texture + assert(boost::filesystem::exists(i.filepath)); + if (!boost::filesystem::exists(i.filepath)) + continue; + assert(boost::algorithm::iends_with(i.filepath, ".svg")); + if (!boost::algorithm::iends_with(i.filepath, ".svg")) + continue; + + NSVGimage *image = parse_file(i.filepath.c_str()); + assert(image != nullptr); + if (image == nullptr) return {}; + ScopeGuard sg_image([image]() { ::nsvgDelete(image); }); + + float svg_scale = i.size.y / image->height; + // scale should be same in both directions + assert(is_approx(svg_scale, i.size.y / image->width)); + + const stbrp_rect &rect = pack_rects[j]; + int n_pixels = rect.w * rect.h; + std::vector icon_data(n_pixels * channels, {0}); + ::nsvgRasterize(rast, image, 0, 0, svg_scale, icon_data.data(), i.size.x, i.size.y, i.size.x * channels); + + // makes white or gray only data in icon + if (i.type == RasterType::white_only_data || + i.type == RasterType::gray_only_data) { + unsigned char value = (i.type == RasterType::white_only_data) ? 255 : 127; + for (size_t k = 0; k < icon_data.size(); k += channels) + if (icon_data[k] != 0 || icon_data[k + 1] != 0 || icon_data[k + 2] != 0) { + icon_data[k] = value; + icon_data[k + 1] = value; + icon_data[k + 2] = value; + } + } + + int start_offset = (rect.y*tex_size.x + rect.x) * channels; + int data_stride = tex_size.x * channels; + subdata(data.data() + start_offset, data_stride, icon_data, rect.w * channels); + } + + if (m_id != 0) + glsafe(::glDeleteTextures(1, &m_id)); + + glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + glsafe(::glGenTextures(1, &m_id)); + glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint) m_id)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei) tex_size.x, (GLsizei) tex_size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*) data.data())); + + // bind no texture + glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); + + for (const auto &i : result) + i->tex_id = m_id; + return result; } std::vector IconManager::init(const std::vector &file_paths, const ImVec2 &size, RasterType type) { + assert(!file_paths.empty()); + assert(size.x >= 1); + assert(size.x < 256*16); // TODO: remove in future if (!m_icons.empty()) { // not first initialization diff --git a/src/slic3r/GUI/IconManager.hpp b/src/slic3r/GUI/IconManager.hpp index aa7afda..72331a8 100644 --- a/src/slic3r/GUI/IconManager.hpp +++ b/src/slic3r/GUI/IconManager.hpp @@ -70,10 +70,10 @@ public: /// Initialize raster texture on GPU with given images /// NOTE: Have to be called after OpenGL initialization ///
    - /// Define files and its + /// Define files and its size with rasterization /// Rasterized icons stored on GPU, /// Same size and order as input, each item of vector is set of texture in order by RasterType - VIcons init(const InitTypes &input); + Icons init(const InitTypes &input); /// /// Initialize multiple icons with same settings for size and type @@ -96,6 +96,7 @@ public: private: // keep data stored on GPU GLTexture m_icons_texture; + unsigned int m_id{ 0 }; Icons m_icons; }; diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 8fb8ce4..eb4bb4e 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -671,8 +671,9 @@ bool ImGuiWrapper::slider_float(const char* label, float* v, float v_min, float ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0.4f, 0.4f, 0.4f, 1.0f }); ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0.4f, 0.4f, 0.4f, 1.0f }); + int frame_padding = style.ItemSpacing.y / 2; // keep same line height for input and slider const ImTextureID tex_id = io.Fonts->TexID; - if (image_button(tex_id, size, uv0, uv1, -1, ImVec4(0.0, 0.0, 0.0, 0.0), ImVec4(1.0, 1.0, 1.0, 1.0), ImGuiButtonFlags_PressedOnClick)) { + if (image_button(tex_id, size, uv0, uv1, frame_padding, ImVec4(0.0, 0.0, 0.0, 0.0), ImVec4(1.0, 1.0, 1.0, 1.0), ImGuiButtonFlags_PressedOnClick)) { if (!slider_editing) ImGui::SetKeyboardFocusHere(-1); else @@ -788,7 +789,8 @@ bool ImGuiWrapper::combo(const wxString& label, const std::vector& bool ImGuiWrapper::combo(const std::string& label, const std::vector& options, int& selection, ImGuiComboFlags flags/* = 0*/, float label_width/* = 0.0f*/, float item_width/* = 0.0f*/) { // this is to force the label to the left of the widget: - if (!label.empty()) { + const bool hidden_label = boost::starts_with(label, "##"); + if (!label.empty() && !hidden_label) { text(label); ImGui::SameLine(label_width); } @@ -798,7 +800,7 @@ bool ImGuiWrapper::combo(const std::string& label, const std::vector= 0 ? options[selection].c_str() : ""; - if (ImGui::BeginCombo(("##" + label).c_str(), selection_str, flags)) { + if (ImGui::BeginCombo(hidden_label ? label.c_str() : ("##" + label).c_str(), selection_str, flags)) { for (int i = 0; i < (int)options.size(); i++) { if (ImGui::Selectable(options[i].c_str(), i == selection)) { selection_out = i; @@ -1395,6 +1397,47 @@ bool ImGuiWrapper::slider_optional_int(const char *label, } else return false; } +std::optional ImGuiWrapper::change_window_position(const char *window_name, bool try_to_fix) { + ImGuiWindow *window = ImGui::FindWindowByName(window_name); + // is window just created + if (window == NULL) + return {}; + + // position of window on screen + ImVec2 position = window->Pos; + ImVec2 size = window->SizeFull; + + // screen size + ImVec2 screen = ImGui::GetMainViewport()->Size; + + std::optional output_window_offset; + if (position.x < 0) { + if (position.y < 0) + // top left + output_window_offset = ImVec2(0, 0); + else + // only left + output_window_offset = ImVec2(0, position.y); + } else if (position.y < 0) { + // only top + output_window_offset = ImVec2(position.x, 0); + } else if (screen.x < (position.x + size.x)) { + if (screen.y < (position.y + size.y)) + // right bottom + output_window_offset = ImVec2(screen.x - size.x, screen.y - size.y); + else + // only right + output_window_offset = ImVec2(screen.x - size.x, position.y); + } else if (screen.y < (position.y + size.y)) { + // only bottom + output_window_offset = ImVec2(position.x, screen.y - size.y); + } + + if (!try_to_fix && output_window_offset.has_value()) + output_window_offset = ImVec2(-1, -1); // Put on default position + + return output_window_offset; +} void ImGuiWrapper::left_inputs() { ImGui::ClearActiveID(); } diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index a18fec2..1fefa63 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -154,6 +154,15 @@ public: // Extended function ImGuiWrapper::slider_float to work with std::optional, when value == def_val than optional release its value bool slider_optional_int(const char* label, std::optional &v, int v_min, int v_max, const char* format = "%.3f", float power = 1.0f, bool clamp = true, const wxString& tooltip = {}, bool show_edit_btn = true, int def_val = 0); + /// + /// Change position of imgui window + /// + /// ImGui identifier of window + /// [output] optional + /// When True Only move to be full visible otherwise reset position + /// New offset of window for function ImGui::SetNextWindowPos + static std::optional change_window_position(const char *window_name, bool try_to_fix); + /// /// Use ImGui internals to unactivate (lose focus) in input. /// When input is activ it can't change value by application. diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp index a4f22be..57c9a62 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp @@ -172,10 +172,11 @@ bool BoostThreadWorker::wait_for_idle(unsigned timeout_ms) bool BoostThreadWorker::push(std::unique_ptr job) { - if (job) - m_input_queue.push(JobEntry{std::move(job)}); + if (!job) + return false; - return bool{job}; + m_input_queue.push(JobEntry{std::move(job)}); + return true; } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Jobs/CreateFontNameImageJob.cpp b/src/slic3r/GUI/Jobs/CreateFontNameImageJob.cpp index 4057b73..417eb0e 100644 --- a/src/slic3r/GUI/Jobs/CreateFontNameImageJob.cpp +++ b/src/slic3r/GUI/Jobs/CreateFontNameImageJob.cpp @@ -74,7 +74,7 @@ void CreateFontImageJob::process(Ctl &ctl) // normalize height of font BoundingBox bounding_box; - for (ExPolygon &shape : shapes) + for (const ExPolygon &shape : shapes) bounding_box.merge(BoundingBox(shape.contour.points)); if (bounding_box.size().x() < 1 || bounding_box.size().y() < 1) { m_input.cancel->store(true); diff --git a/src/slic3r/GUI/Jobs/CreateFontStyleImagesJob.cpp b/src/slic3r/GUI/Jobs/CreateFontStyleImagesJob.cpp index 4bafd96..28edc38 100644 --- a/src/slic3r/GUI/Jobs/CreateFontStyleImagesJob.cpp +++ b/src/slic3r/GUI/Jobs/CreateFontStyleImagesJob.cpp @@ -47,8 +47,7 @@ void CreateFontStyleImagesJob::process(Ctl &ctl) for (ExPolygon &shape : shapes) shape.translate(-bounding_box.min); // calculate conversion from FontPoint to screen pixels by size of font - const FontFile::Info &info = get_font_info(*item.font.font_file, item.prop); - double scale = item.prop.size_in_mm / info.unit_per_em * SHAPE_SCALE * m_input.ppm; + double scale = get_text_shape_scale(item.prop, *item.font.font_file); scales[index] = scale; //double scale = font_prop.size_in_mm * SCALING_FACTOR; diff --git a/src/slic3r/GUI/Jobs/EmbossJob.cpp b/src/slic3r/GUI/Jobs/EmbossJob.cpp index 3b631b8..be45703 100644 --- a/src/slic3r/GUI/Jobs/EmbossJob.cpp +++ b/src/slic3r/GUI/Jobs/EmbossJob.cpp @@ -2,10 +2,13 @@ #include #include +#include #include #include // load_obj for default mesh #include // use surface cuts +#include // create object +#include #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/NotificationManager.hpp" @@ -15,29 +18,143 @@ #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/Gizmos/GLGizmoEmboss.hpp" +#include "slic3r/GUI/Selection.hpp" #include "slic3r/GUI/CameraUtils.hpp" #include "slic3r/GUI/format.hpp" +#include "slic3r/GUI/3DScene.hpp" +#include "slic3r/GUI/Jobs/Worker.hpp" #include "slic3r/Utils/UndoRedo.hpp" +#include "slic3r/Utils/RaycastManager.hpp" + +// #define EXECUTE_UPDATE_ON_MAIN_THREAD // debug execution on main thread using namespace Slic3r; using namespace Slic3r::Emboss; using namespace Slic3r::GUI; using namespace Slic3r::GUI::Emboss; -// private namespace -namespace priv{ -// create sure that emboss object is bigger than source object [in mm] -constexpr float safe_extension = 1.0f; +// Private implementation for create volume and objects jobs +namespace { +/// +/// Hold neccessary data to create ModelVolume in job +/// Volume is created on the surface of existing volume in object. +/// NOTE: EmbossDataBase::font_file doesn't have to be valid !!! +/// +struct DataCreateVolume +{ + // Hold data about shape + DataBasePtr base; + + // define embossed volume type + ModelVolumeType volume_type; + + // parent ModelObject index where to create volume + ObjectID object_id; + + // new created volume transformation + std::optional trmat; + + // Define which gizmo open on the success + GLGizmosManager::EType gizmo; +}; // Offset of clossed side to model constexpr float SAFE_SURFACE_OFFSET = 0.015f; // [in mm] +/// +/// Create new TextVolume on the surface of ModelObject +/// Should not be stopped +/// NOTE: EmbossDataBase::font_file doesn't have to be valid !!! +/// +class CreateVolumeJob : public Job +{ + DataCreateVolume m_input; + TriangleMesh m_result; + +public: + explicit CreateVolumeJob(DataCreateVolume &&input); + void process(Ctl &ctl) override; + void finalize(bool canceled, std::exception_ptr &eptr) override; +}; + +/// +/// Hold neccessary data to create ModelObject in job +/// Object is placed on bed under screen coor +/// OR to center of scene when it is out of bed shape +/// +struct DataCreateObject +{ + // Hold data about shape + DataBasePtr base; + + // define position on screen where to create object + Vec2d screen_coor; + + // projection property + Camera camera; + + // shape of bed in case of create volume on bed + std::vector bed_shape; + + // Define which gizmo open on the success + GLGizmosManager::EType gizmo; +}; + +/// +/// Create new TextObject on the platter +/// Should not be stopped +/// +class CreateObjectJob : public Job +{ + DataCreateObject m_input; + TriangleMesh m_result; + Transform3d m_transformation; + +public: + explicit CreateObjectJob(DataCreateObject &&input); + void process(Ctl &ctl) override; + void finalize(bool canceled, std::exception_ptr &eptr) override; +}; + +/// +/// Hold neccessary data to create(cut) volume from surface object in job +/// +struct CreateSurfaceVolumeData : public SurfaceVolumeData +{ + // Hold data about shape + DataBasePtr base; + + // define embossed volume type + ModelVolumeType volume_type; + + // parent ModelObject index where to create volume + ObjectID object_id; + + // Define which gizmo open on the success + GLGizmosManager::EType gizmo; +}; + +/// +/// Cut surface from object and create cutted volume +/// Should not be stopped +/// +class CreateSurfaceVolumeJob : public Job +{ + CreateSurfaceVolumeData m_input; + TriangleMesh m_result; + +public: + explicit CreateSurfaceVolumeJob(CreateSurfaceVolumeData &&input); + void process(Ctl &ctl) override; + void finalize(bool canceled, std::exception_ptr &eptr) override; +}; + /// /// Assert check of inputs data /// -/// -/// bool check(const DataBase &input, bool check_fontfile = true, bool use_surface = false); +bool check(GLGizmosManager::EType gizmo); +bool check(const CreateVolumeParams& input); bool check(const DataCreateVolume &input, bool is_main_thread = false); bool check(const DataCreateObject &input); bool check(const DataUpdate &input, bool is_main_thread = false, bool use_surface = false); @@ -45,7 +162,8 @@ bool check(const CreateSurfaceVolumeData &input, bool is_main_thread = false); bool check(const UpdateSurfaceVolumeData &input, bool is_main_thread = false); template static ExPolygons create_shape(DataBase &input, Fnc was_canceled); -template static std::vector create_shapes(DataBase &input, Fnc was_canceled); +// create sure that emboss object is bigger than source object [in mm] +constexpr float safe_extension = 1.0f; // /// Try to create mesh from text @@ -56,14 +174,14 @@ template static std::vector create_shapes(DataBase &in /// NOTE: Cache glyphs is changed /// To check if process was canceled /// Triangle mesh model -template static TriangleMesh try_create_mesh(DataBase &input, Fnc was_canceled); -template static TriangleMesh create_mesh(DataBase &input, Fnc was_canceled, Job::Ctl &ctl); +template TriangleMesh try_create_mesh(DataBase &input, const Fnc& was_canceled); +template TriangleMesh create_mesh(DataBase &input, const Fnc& was_canceled, Job::Ctl &ctl); /// /// Create default mesh for embossed text /// /// Not empty model(index trinagle set - its) -static TriangleMesh create_default_mesh(); +TriangleMesh create_default_mesh(); /// /// Must be called on main thread @@ -71,7 +189,14 @@ static TriangleMesh create_default_mesh(); /// New mesh data /// Text configuration, ... /// Transformation of volume -static void update_volume(TriangleMesh &&mesh, const DataUpdate &data, Transform3d *tr = nullptr); +void update_volume(TriangleMesh &&mesh, const DataUpdate &data, const Transform3d *tr = nullptr); + +/// +/// Update name in right panel +/// +/// Right panel data +/// Volume with just changed name +void update_name_in_list(const ObjectList &object_list, const ModelVolume &volume); /// /// Add new volume to object @@ -81,16 +206,9 @@ static void update_volume(TriangleMesh &&mesh, const DataUpdate &data, Transform /// Type of new volume /// Transformation of volume inside of object /// Text configuration and New VolumeName -static void create_volume(TriangleMesh &&mesh, const ObjectID& object_id, - const ModelVolumeType type, const Transform3d trmat, const DataBase &data); - -/// -/// Select Volume from objects -/// -/// All objects in scene -/// Identifier of volume in object -/// Pointer to volume when exist otherwise nullptr -static ModelVolume *get_volume(ModelObjectPtrs &objects, const ObjectID &volume_id); +/// Gizmo to open +void create_volume(TriangleMesh &&mesh, const ObjectID& object_id, const ModelVolumeType type, + const std::optional& trmat, const DataBase &data, GLGizmosManager::EType gizmo); /// /// Create projection for cut surface from mesh @@ -99,7 +217,7 @@ static ModelVolume *get_volume(ModelObjectPtrs &objects, const ObjectID &volume_ /// Convert shape to milimeters /// Bounding box 3d of model volume for projection ranges /// Orthogonal cut_projection -static OrthoProject create_projection_for_cut(Transform3d tr, double shape_scale, const std::pair &z_range); +OrthoProject create_projection_for_cut(Transform3d tr, double shape_scale, const std::pair &z_range); /// /// Create tranformation for emboss Cutted surface @@ -109,65 +227,82 @@ static OrthoProject create_projection_for_cut(Transform3d tr, double shape_scale /// Text voliume transformation inside object /// Cutted surface from model /// Projection -static OrthoProject3d create_emboss_projection(bool is_outside, float emboss, Transform3d tr, SurfaceCut &cut); +OrthoProject3d create_emboss_projection(bool is_outside, float emboss, Transform3d tr, SurfaceCut &cut); /// /// Cut surface into triangle mesh /// -/// (can't be const - cache of font) +/// (can't be const - cache of font) /// SurfaceVolume data /// Check to interupt execution /// Extruded object from cuted surace -static TriangleMesh cut_surface(/*const*/ DataBase &input1, const SurfaceVolumeData &input2, std::function was_canceled); +template +TriangleMesh cut_surface(/*const*/ DataBase &input1, const SurfaceVolumeData &input2, const Fnc& was_canceled); -static void create_message(const std::string &message); // only in finalize -static bool process(std::exception_ptr &eptr); -static bool finalize(bool canceled, std::exception_ptr &eptr, const DataBase &input); +/// +/// Copied triangles from object to be able create mesh for cut surface from +/// +/// Source object volumes for cut surface from +/// Source volume id +/// Source data for cut surface from +SurfaceVolumeData::ModelSources create_sources(const ModelVolumePtrs &volumes, std::optional text_volume_id = {}); + +void create_message(const std::string &message); // only in finalize +bool process(std::exception_ptr &eptr); +bool finalize(bool canceled, std::exception_ptr &eptr, const DataBase &input); class JobException : public std::runtime_error { -public: JobException(const char* message):runtime_error(message){}}; +public: using std::runtime_error::runtime_error;}; +auto was_canceled(const Job::Ctl &ctl, const DataBase &base){ + return [&ctl, &cancel = base.cancel]() { + if (cancel->load()) + return true; + return ctl.was_canceled(); + }; +} -}// namespace priv +} // namespace + +void Slic3r::GUI::Emboss::DataBase::write(ModelVolume &volume) const{ + volume.name = volume_name; + volume.emboss_shape = shape; + volume.emboss_shape->fix_3mf_tr.reset(); +} ///////////////// /// Create Volume -CreateVolumeJob::CreateVolumeJob(DataCreateVolume &&input) - : m_input(std::move(input)) -{ - assert(priv::check(m_input, true)); -} +CreateVolumeJob::CreateVolumeJob(DataCreateVolume &&input): m_input(std::move(input)){ assert(check(m_input, true)); } void CreateVolumeJob::process(Ctl &ctl) { - if (!priv::check(m_input)) throw std::runtime_error("Bad input data for EmbossCreateVolumeJob."); - auto was_canceled = [&ctl]()->bool { return ctl.was_canceled(); }; - m_result = priv::create_mesh(m_input, was_canceled, ctl); + if (!check(m_input)) + throw std::runtime_error("Bad input data for EmbossCreateVolumeJob."); + m_result = create_mesh(*m_input.base, was_canceled(ctl, *m_input.base), ctl); } void CreateVolumeJob::finalize(bool canceled, std::exception_ptr &eptr) { - if (!priv::finalize(canceled, eptr, m_input)) + if (!::finalize(canceled, eptr, *m_input.base)) return; if (m_result.its.empty()) - return priv::create_message("Can't create empty volume."); - - priv::create_volume(std::move(m_result), m_input.object_id, m_input.volume_type, m_input.trmat, m_input); + return create_message("Can't create empty volume."); + create_volume(std::move(m_result), m_input.object_id, m_input.volume_type, m_input.trmat, *m_input.base, m_input.gizmo); } ///////////////// /// Create Object -CreateObjectJob::CreateObjectJob(DataCreateObject &&input) - : m_input(std::move(input)) -{ - assert(priv::check(m_input)); -} +CreateObjectJob::CreateObjectJob(DataCreateObject &&input): m_input(std::move(input)){ assert(check(m_input)); } void CreateObjectJob::process(Ctl &ctl) { - if (!priv::check(m_input)) - throw std::runtime_error("Bad input data for EmbossCreateObjectJob."); + if (!check(m_input)) + throw JobException("Bad input data for EmbossCreateObjectJob."); - auto was_canceled = [&ctl]()->bool { return ctl.was_canceled(); }; - m_result = priv::create_mesh(m_input, was_canceled, ctl); + // can't create new object with using surface + if (m_input.base->shape.projection.use_surface) + m_input.base->shape.projection.use_surface = false; + + auto was_canceled = ::was_canceled(ctl, *m_input.base); + m_result = create_mesh(*m_input.base, was_canceled, ctl); if (was_canceled()) return; // Create new object @@ -181,12 +316,12 @@ void CreateObjectJob::process(Ctl &ctl) bed_shape_.reserve(m_input.bed_shape.size()); for (const Vec2d &p : m_input.bed_shape) bed_shape_.emplace_back(p.cast()); - Polygon bed(bed_shape_); + Slic3r::Polygon bed(bed_shape_); if (!bed.contains(bed_coor.cast())) // mouse pose is out of build plate so create object in center of plate bed_coor = bed.centroid().cast(); - double z = m_input.text_configuration.style.prop.emboss / 2; + double z = m_input.base->shape.projection.depth / 2; Vec3d offset(bed_coor.x(), bed_coor.y(), z); offset -= m_result.center(); Transform3d::TranslationType tt(offset.x(), offset.y(), offset.z()); @@ -195,32 +330,53 @@ void CreateObjectJob::process(Ctl &ctl) void CreateObjectJob::finalize(bool canceled, std::exception_ptr &eptr) { - if (!priv::finalize(canceled, eptr, m_input)) + if (!::finalize(canceled, eptr, *m_input.base)) return; // only for sure if (m_result.empty()) - return priv::create_message("Can't create empty object."); + return create_message("Can't create empty object."); GUI_App &app = wxGetApp(); Plater *plater = app.plater(); - ObjectList *obj_list = app.obj_list(); - GLCanvas3D *canvas = plater->canvas3D(); plater->take_snapshot(_L("Add Emboss text object")); - // Create new object and change selection - bool center = false; - obj_list->load_mesh_object(std::move(m_result), m_input.volume_name, - center, &m_input.text_configuration, - &m_transformation); + Model& model = plater->model(); +#ifdef _DEBUG + check_model_ids_validity(model); +#endif /* _DEBUG */ + { + // INFO: inspiration for create object is from ObjectList::load_mesh_object() + ModelObject *new_object = model.add_object(); + new_object->name = m_input.base->volume_name; + new_object->add_instance(); // each object should have at list one instance + + ModelVolume *new_volume = new_object->add_volume(std::move(m_result)); + // set a default extruder value, since user can't add it manually + new_volume->config.set_key_value("extruder", new ConfigOptionInt(0)); + // write emboss data into volume + m_input.base->write(*new_volume); + + // set transformation + Slic3r::Geometry::Transformation tr(m_transformation); + new_object->instances.front()->set_transformation(tr); + new_object->ensure_on_bed(); + + // Actualize right panel and set inside of selection + app.obj_list()->paste_objects_into_list({model.objects.size() - 1}); + } +#ifdef _DEBUG + check_model_ids_validity(model); +#endif /* _DEBUG */ // When add new object selection is empty. // When cursor move and no one object is selected than // Manager::reset_all() So Gizmo could be closed before end of creation object + GLCanvas3D *canvas = plater->canvas3D(); GLGizmosManager &manager = canvas->get_gizmos_manager(); - if (manager.get_current_type() != GLGizmosManager::Emboss) - manager.open_gizmo(GLGizmosManager::Emboss); + if (manager.get_current_type() != m_input.gizmo) + manager.open_gizmo(m_input.gizmo); // redraw scene canvas->reload_scene(true); @@ -228,87 +384,83 @@ void CreateObjectJob::finalize(bool canceled, std::exception_ptr &eptr) ///////////////// /// Update Volume -UpdateJob::UpdateJob(DataUpdate&& input) - : m_input(std::move(input)) -{ - assert(priv::check(m_input, true)); -} +UpdateJob::UpdateJob(DataUpdate&& input): m_input(std::move(input)){ assert(check(m_input, true)); } void UpdateJob::process(Ctl &ctl) { - if (!priv::check(m_input)) - throw std::runtime_error("Bad input data for EmbossUpdateJob."); + if (!check(m_input)) + throw JobException("Bad input data for EmbossUpdateJob."); - auto was_canceled = [&ctl, &cancel = m_input.cancel]()->bool { - if (cancel->load()) return true; - return ctl.was_canceled(); - }; - m_result = priv::try_create_mesh(m_input, was_canceled); + auto was_canceled = ::was_canceled(ctl, *m_input.base); + m_result = ::try_create_mesh(*m_input.base, was_canceled); if (was_canceled()) return; if (m_result.its.empty()) - throw priv::JobException("Created text volume is empty. Change text or font."); + throw JobException("Created text volume is empty. Change text or font."); } void UpdateJob::finalize(bool canceled, std::exception_ptr &eptr) { - if (!priv::finalize(canceled, eptr, m_input)) + if (!::finalize(canceled, eptr, *m_input.base)) return; - priv::update_volume(std::move(m_result), m_input); + ::update_volume(std::move(m_result), m_input); } -namespace Slic3r::GUI::Emboss { - -SurfaceVolumeData::ModelSources create_sources(const ModelVolumePtrs &volumes, std::optional text_volume_id) +void UpdateJob::update_volume(ModelVolume *volume, TriangleMesh &&mesh, const DataBase &base) { - SurfaceVolumeData::ModelSources result; - result.reserve(volumes.size() - 1); - for (const ModelVolume *v : volumes) { - if (text_volume_id.has_value() && v->id().id == *text_volume_id) continue; - // skip modifiers and negative volumes, ... - if (!v->is_model_part()) continue; - const TriangleMesh &tm = v->mesh(); - if (tm.empty()) continue; - if (tm.its.empty()) continue; - result.push_back({v->get_mesh_shared_ptr(), v->get_matrix()}); - } - return result; + // check inputs + bool is_valid_input = volume != nullptr && !mesh.empty() && !base.volume_name.empty(); + assert(is_valid_input); + if (!is_valid_input) + return; + + // update volume + volume->set_mesh(std::move(mesh)); + volume->set_new_unique_id(); + volume->calculate_convex_hull(); + + // write data from base into volume + base.write(*volume); + + GUI_App &app = wxGetApp(); // may be move to input + if (volume->name != base.volume_name) { + volume->name = base.volume_name; + + const ObjectList *obj_list = app.obj_list(); + if (obj_list != nullptr) + update_name_in_list(*obj_list, *volume); } -SurfaceVolumeData::ModelSources create_volume_sources(const ModelVolume *text_volume) -{ - if (text_volume == nullptr) return {}; - if (!text_volume->text_configuration.has_value()) return {}; - const ModelVolumePtrs &volumes = text_volume->get_object()->volumes; - // no other volume in object - if (volumes.size() <= 1) return {}; - return create_sources(volumes, text_volume->id().id); + ModelObject *object = volume->get_object(); + assert(object != nullptr); + if (object == nullptr) + return; + + + Plater *plater = app.plater(); + if (plater->printer_technology() == ptSLA) + sla::reproject_points_and_holes(object); + plater->changed_object(*object); } - - -} // namespace Slic3r::GUI::Emboss - ///////////////// /// Create Surface volume CreateSurfaceVolumeJob::CreateSurfaceVolumeJob(CreateSurfaceVolumeData &&input) : m_input(std::move(input)) { - assert(priv::check(m_input, true)); + assert(check(m_input, true)); } void CreateSurfaceVolumeJob::process(Ctl &ctl) { - if (!priv::check(m_input)) - throw std::runtime_error("Bad input data for CreateSurfaceVolumeJob."); - // check cancelation of process - auto was_canceled = [&ctl]() -> bool { return ctl.was_canceled(); }; - m_result = priv::cut_surface(m_input, m_input, was_canceled); + if (!check(m_input)) + throw JobException("Bad input data for CreateSurfaceVolumeJob."); + m_result = cut_surface(*m_input.base, m_input, was_canceled(ctl, *m_input.base)); } void CreateSurfaceVolumeJob::finalize(bool canceled, std::exception_ptr &eptr) { - if (!priv::finalize(canceled, eptr, m_input)) + if (!::finalize(canceled, eptr, *m_input.base)) return; - priv::create_volume(std::move(m_result), m_input.object_id, - m_input.volume_type, m_input.text_tr, m_input); + create_volume(std::move(m_result), m_input.object_id, + m_input.volume_type, m_input.transform, *m_input.base, m_input.gizmo); } ///////////////// @@ -316,173 +468,350 @@ void CreateSurfaceVolumeJob::finalize(bool canceled, std::exception_ptr &eptr) { UpdateSurfaceVolumeJob::UpdateSurfaceVolumeJob(UpdateSurfaceVolumeData &&input) : m_input(std::move(input)) { - assert(priv::check(m_input, true)); + assert(check(m_input, true)); } void UpdateSurfaceVolumeJob::process(Ctl &ctl) { - if (!priv::check(m_input)) - throw std::runtime_error("Bad input data for UseSurfaceJob."); - - // check cancelation of process - auto was_canceled = [&ctl, &cancel = m_input.cancel]()->bool { - if (cancel->load()) return true; - return ctl.was_canceled(); - }; - m_result = priv::cut_surface(m_input, m_input, was_canceled); + if (!check(m_input)) + throw JobException("Bad input data for UseSurfaceJob."); + m_result = cut_surface(*m_input.base, m_input, was_canceled(ctl, *m_input.base)); } void UpdateSurfaceVolumeJob::finalize(bool canceled, std::exception_ptr &eptr) { - if (!priv::finalize(canceled, eptr, m_input)) + if (!::finalize(canceled, eptr, *m_input.base)) return; // when start using surface it is wanted to move text origin on surface of model // also when repeteadly move above surface result position should match - Transform3d *tr = &m_input.text_tr; - priv::update_volume(std::move(m_result), m_input, tr); + ::update_volume(std::move(m_result), m_input, &m_input.transform); } +namespace { +/// +/// Check if volume type is possible use for new text volume +/// +/// Type +/// True when allowed otherwise false +bool is_valid(ModelVolumeType volume_type); + +/// +/// Start job for add new volume to object with given transformation +/// +/// Define where to queue the job. e.g. wxGetApp().plater()->get_ui_job_worker() +/// Define where to add +/// Wanted volume transformation, when not set will be calculated after creation to be near the object +/// Define what to emboss - shape +/// Type of volume: Part, negative, modifier +/// Define which gizmo open on the success +/// Nullptr when job is sucessfully add to worker otherwise return data to be processed different way +bool start_create_volume_job(Worker &worker, + const ModelObject &object, + const std::optional &volume_tr, + DataBasePtr data, + ModelVolumeType volume_type, + GLGizmosManager::EType gizmo); + +/// +/// Find volume in selected objects with closest convex hull to screen center. +/// +/// Define where to search for closest +/// Canvas center(dependent on camera settings) +/// Actual objects +/// OUT: coordinate of controid of closest volume +/// closest volume when exists otherwise nullptr +const GLVolume *find_closest( + const Selection &selection, const Vec2d &screen_center, const Camera &camera, const ModelObjectPtrs &objects, Vec2d *closest_center); + +/// +/// Start job for add object with text into scene +/// +/// Contain worker, build shape, gizmo +/// Define params for create volume +/// Screen coordinat, where to create new object laying on bed +/// True when can add job to worker otherwise FALSE +bool start_create_object_job(const CreateVolumeParams &input, DataBasePtr emboss_data, const Vec2d &coor); + +/// +/// Start job to create volume on the surface of object +/// +/// Variabless needed to create volume +/// Describe what to emboss - shape +/// Where to add +/// True .. try to create volume without screen_coor, +/// False .. +/// Nullptr when job is sucessfully add to worker otherwise return data to be processed different way +bool start_create_volume_on_surface_job(CreateVolumeParams &input, DataBasePtr data, const Vec2d &screen_coor, bool try_no_coor); + +} // namespace + +namespace Slic3r::GUI::Emboss { + +SurfaceVolumeData::ModelSources create_volume_sources(const ModelVolume &text_volume) +{ + const ModelVolumePtrs &volumes = text_volume.get_object()->volumes; + // no other volume in object + if (volumes.size() <= 1) + return {}; + return ::create_sources(volumes, text_volume.id().id); +} + +bool start_create_volume(CreateVolumeParams &input, DataBasePtr data, const Vec2d &mouse_pos) +{ + if (data == nullptr) + return false; + if (!check(input)) + return false; + + if (input.gl_volume == nullptr) + // object is not under mouse position soo create object on plater + return ::start_create_object_job(input, std::move(data), mouse_pos); + + bool try_no_coor = true; + return ::start_create_volume_on_surface_job(input, std::move(data), mouse_pos, try_no_coor); +} + +bool start_create_volume_without_position(CreateVolumeParams &input, DataBasePtr data) +{ + assert(data != nullptr); + if (data == nullptr) + return false; + if (!check(input)) + return false; + + // select position by camera position and view direction + const Selection &selection = input.canvas.get_selection(); + int object_idx = selection.get_object_idx(); + + Size s = input.canvas.get_canvas_size(); + Vec2d screen_center(s.get_width() / 2., s.get_height() / 2.); + const ModelObjectPtrs &objects = selection.get_model()->objects; + + // No selected object so create new object + if (selection.is_empty() || object_idx < 0 || + static_cast(object_idx) >= objects.size()) + // create Object on center of screen + // when ray throw center of screen not hit bed it create object on center of bed + return ::start_create_object_job(input, std::move(data), screen_center); + + // create volume inside of selected object + Vec2d coor; + const Camera &camera = wxGetApp().plater()->get_camera(); + input.gl_volume = ::find_closest(selection, screen_center, camera, objects, &coor); + if (input.gl_volume == nullptr) + return ::start_create_object_job(input, std::move(data), screen_center); + + bool try_no_coor = false; + return ::start_create_volume_on_surface_job(input, std::move(data), coor, try_no_coor); +} + +#ifdef EXECUTE_UPDATE_ON_MAIN_THREAD +namespace { +// Run Job on main thread (blocking) - ONLY DEBUG +static inline bool execute_job(std::shared_ptr j) +{ + struct MyCtl : public Job::Ctl + { + void update_status(int st, const std::string &msg = "") override{}; + bool was_canceled() const override { return false; } + std::future call_on_main_thread(std::function fn) override { return std::future{}; } + } ctl; + j->process(ctl); + wxGetApp().plater()->CallAfter([j]() { + std::exception_ptr e_ptr = nullptr; + j->finalize(false, e_ptr); + }); + return true; +} +} // namespace +#endif + +bool start_update_volume(DataUpdate &&data, const ModelVolume &volume, const Selection &selection, RaycastManager& raycaster) +{ + assert(data.volume_id == volume.id()); + + // check cutting from source mesh + bool &use_surface = data.base->shape.projection.use_surface; + if (use_surface && volume.is_the_only_one_part()) + use_surface = false; + + std::unique_ptr job = nullptr; + if (use_surface) { + // Model to cut surface from. + SurfaceVolumeData::ModelSources sources = create_volume_sources(volume); + if (sources.empty()) + return false; + + Transform3d volume_tr = volume.get_matrix(); + const std::optional &fix_3mf = volume.emboss_shape->fix_3mf_tr; + if (fix_3mf.has_value()) + volume_tr = volume_tr * fix_3mf->inverse(); + + // when it is new applying of use surface than move origin onto surfaca + if (!volume.emboss_shape->projection.use_surface) { + auto offset = calc_surface_offset(selection, raycaster); + if (offset.has_value()) + volume_tr *= Eigen::Translation(*offset); + } + + UpdateSurfaceVolumeData surface_data{std::move(data), {volume_tr, std::move(sources)}}; + job = std::make_unique(std::move(surface_data)); + } else { + job = std::make_unique(std::move(data)); + } + +#ifndef EXECUTE_UPDATE_ON_MAIN_THREAD + auto &worker = wxGetApp().plater()->get_ui_job_worker(); + return queue_job(worker, std::move(job)); +#else + // Run Job on main thread (blocking) - ONLY DEBUG + return execute_job(std::move(job)); +#endif // EXECUTE_UPDATE_ON_MAIN_THREAD +} + +} // namespace Slic3r::GUI::Emboss //////////////////////////// /// private namespace implementation -bool priv::check(const DataBase &input, bool check_fontfile, bool use_surface) +namespace { +bool check(const DataBase &input, bool check_fontfile, bool use_surface) { bool res = true; - if (check_fontfile) { - assert(input.font_file.has_value()); - res &= input.font_file.has_value(); - } - assert(!input.text_configuration.fix_3mf_tr.has_value()); - res &= !input.text_configuration.fix_3mf_tr.has_value(); - assert(!input.text_configuration.text.empty()); - res &= !input.text_configuration.text.empty(); + // if (check_fontfile) { + // assert(input.font_file.has_value()); + // res &= input.font_file.has_value(); + // } + // assert(!input.text_configuration.fix_3mf_tr.has_value()); + // res &= !input.text_configuration.fix_3mf_tr.has_value(); + // assert(!input.text_configuration.text.empty()); + // res &= !input.text_configuration.text.empty(); assert(!input.volume_name.empty()); res &= !input.volume_name.empty(); - const FontProp& prop = input.text_configuration.style.prop; - assert(prop.use_surface == use_surface); - res &= prop.use_surface == use_surface; - assert(prop.per_glyph == !input.text_lines.empty()); - res &= prop.per_glyph == !input.text_lines.empty(); - if (prop.per_glyph) { - assert(get_count_lines(input.text_configuration.text) == input.text_lines.size()); - res &= get_count_lines(input.text_configuration.text) == input.text_lines.size(); + //const FontProp& prop = input.text_configuration.style.prop; + //assert(prop.per_glyph == !input.text_lines.empty()); + //res &= prop.per_glyph == !input.text_lines.empty(); + //if (prop.per_glyph) { + // assert(get_count_lines(input.text_configuration.text) == input.text_lines.size()); + // res &= get_count_lines(input.text_configuration.text) == input.text_lines.size(); + //} + return res; +} + +bool check(GLGizmosManager::EType gizmo) +{ + assert(gizmo == GLGizmosManager::Emboss || gizmo == GLGizmosManager::Svg); + return gizmo == GLGizmosManager::Emboss || gizmo == GLGizmosManager::Svg; } +bool check(const CreateVolumeParams &input) +{ + bool res = is_valid(input.volume_type); + auto gizmo_type = static_cast(input.gizmo); + res &= ::check(gizmo_type); return res; } -bool priv::check(const DataCreateVolume &input, bool is_main_thread) { +bool check(const DataCreateVolume &input, bool is_main_thread) +{ bool check_fontfile = false; - bool res = check((DataBase) input, check_fontfile); - assert(input.volume_type != ModelVolumeType::INVALID); - res &= input.volume_type != ModelVolumeType::INVALID; - assert(input.object_id.id >= 0); - res &= input.object_id.id >= 0; + assert(input.base != nullptr); + bool res = input.base != nullptr; + res &= check(*input.base, check_fontfile); + res &= is_valid(input.volume_type); + res &= check(input.gizmo); + assert(!input.base->shape.projection.use_surface); + res &= !input.base->shape.projection.use_surface; return res; } -bool priv::check(const DataCreateObject &input) { +bool check(const DataCreateObject &input) +{ bool check_fontfile = false; - bool res = check((DataBase) input, check_fontfile); + assert(input.base != nullptr); + bool res = input.base != nullptr; + res &= check(*input.base, check_fontfile); assert(input.screen_coor.x() >= 0.); res &= input.screen_coor.x() >= 0.; assert(input.screen_coor.y() >= 0.); res &= input.screen_coor.y() >= 0.; assert(input.bed_shape.size() >= 3); // at least triangle res &= input.bed_shape.size() >= 3; + res &= check(input.gizmo); + assert(!input.base->shape.projection.use_surface); + res &= !input.base->shape.projection.use_surface; return res; } -bool priv::check(const DataUpdate &input, bool is_main_thread, bool use_surface){ +bool check(const DataUpdate &input, bool is_main_thread, bool use_surface) +{ bool check_fontfile = true; - bool res = check((DataBase) input, check_fontfile, use_surface); - assert(input.volume_id.id >= 0); - res &= input.volume_id.id >= 0; + assert(input.base != nullptr); + bool res = input.base != nullptr; + res &= check(*input.base, check_fontfile, use_surface); if (is_main_thread) - assert(get_volume(wxGetApp().model().objects, input.volume_id) != nullptr); - assert(input.cancel != nullptr); - res &= input.cancel != nullptr; + assert(get_model_volume(input.volume_id, wxGetApp().model().objects) != nullptr); + assert(input.base->cancel != nullptr); + res &= input.base->cancel != nullptr; if (is_main_thread) - assert(!input.cancel->load()); + assert(!input.base->cancel->load()); + assert(!input.base->shape.projection.use_surface); + res &= !input.base->shape.projection.use_surface; return res; } -bool priv::check(const CreateSurfaceVolumeData &input, bool is_main_thread) +bool check(const CreateSurfaceVolumeData &input, bool is_main_thread) { bool use_surface = true; - bool res = check((DataBase)input, is_main_thread, use_surface); + assert(input.base != nullptr); + bool res = input.base != nullptr; + res &= check(*input.base, is_main_thread, use_surface); assert(!input.sources.empty()); res &= !input.sources.empty(); + res &= check(input.gizmo); + assert(input.base->shape.projection.use_surface); + res &= input.base->shape.projection.use_surface; return res; } -bool priv::check(const UpdateSurfaceVolumeData &input, bool is_main_thread){ +bool check(const UpdateSurfaceVolumeData &input, bool is_main_thread) +{ bool use_surface = true; - bool res = check((DataUpdate)input, is_main_thread, use_surface); + assert(input.base != nullptr); + bool res = input.base != nullptr; + res &= check(*input.base, is_main_thread, use_surface); assert(!input.sources.empty()); res &= !input.sources.empty(); + assert(input.base->shape.projection.use_surface); + res &= input.base->shape.projection.use_surface; return res; } template -ExPolygons priv::create_shape(DataBase &input, Fnc was_canceled) { - FontFileWithCache &font = input.font_file; - const TextConfiguration &tc = input.text_configuration; - const char *text = tc.text.c_str(); - const FontProp &prop = tc.style.prop; - assert(!prop.per_glyph); - assert(font.has_value()); - if (!font.has_value()) - return {}; - - ExPolygons shapes = text2shapes(font, text, prop, was_canceled); - if (shapes.empty()) - return {}; - - return shapes; -} - -template -std::vector priv::create_shapes(DataBase &input, Fnc was_canceled) { - FontFileWithCache &font = input.font_file; - const TextConfiguration &tc = input.text_configuration; - const char *text = tc.text.c_str(); - const FontProp &prop = tc.style.prop; - assert(prop.per_glyph); - assert(font.has_value()); - if (!font.has_value()) - return {}; - - std::wstring ws = boost::nowide::widen(text); - std::vector shapes = text2vshapes(font, ws, prop, was_canceled); - if (shapes.empty()) - return {}; - - if (was_canceled()) - return {}; - - return shapes; +ExPolygons create_shape(DataBase &input, Fnc was_canceled) { + EmbossShape &es = input.create_shape(); + // TODO: improve to use real size of volume + // ... need world matrix for volume + // ... printer resolution will be fine too + return union_with_delta(es, UNION_DELTA, UNION_MAX_ITERATIN); } //#define STORE_SAMPLING #ifdef STORE_SAMPLING #include "libslic3r/SVG.hpp" #endif // STORE_SAMPLING -namespace { -std::vector create_line_bounds(const std::vector &shapes, const std::wstring& text, size_t count_lines = 0) +std::vector create_line_bounds(const ExPolygonsWithIds &shapes, size_t count_lines = 0) { - assert(text.size() == shapes.size()); if (count_lines == 0) - count_lines = get_count_lines(text); - assert(count_lines == get_count_lines(text)); + count_lines = get_count_lines(shapes); + assert(count_lines == get_count_lines(shapes)); std::vector result(count_lines); size_t text_line_index = 0; // s_i .. shape index - for (size_t s_i = 0; s_i < shapes.size(); ++s_i) { - const ExPolygons &shape = shapes[s_i]; + for (const ExPolygonsWithId &shape_id: shapes) { + const ExPolygons &shape = shape_id.expoly; BoundingBox bb; if (!shape.empty()) { bb = get_extents(shape); } BoundingBoxes &line_bbs = result[text_line_index]; line_bbs.push_back(bb); - if (text[s_i] == '\n'){ + if (shape_id.id == ENTER_UNICODE) { // skip enters on beginig and tail ++text_line_index; } @@ -495,27 +824,22 @@ template TriangleMesh create_mesh_per_glyph(DataBase &input, Fnc w // method use square of coord stored into int64_t static_assert(std::is_same()); - std::vector shapes = priv::create_shapes(input, was_canceled); - if (shapes.empty()) + const EmbossShape &shape = input.create_shape(); + if (shape.shapes_with_ids.empty()) return {}; // Precalculate bounding boxes of glyphs // Separate lines of text to vector of Bounds - const TextConfiguration &tc = input.text_configuration; - std::wstring ws = boost::nowide::widen(tc.text.c_str()); - assert(get_count_lines(ws) == input.text_lines.size()); + assert(get_count_lines(shape.shapes_with_ids) == input.text_lines.size()); size_t count_lines = input.text_lines.size(); - std::vector bbs = create_line_bounds(shapes, ws, count_lines); + std::vector bbs = create_line_bounds(shape.shapes_with_ids, count_lines); - const FontProp &prop = tc.style.prop; - FontFileWithCache &font = input.font_file; - double shape_scale = get_shape_scale(prop, *font.font_file); - double projec_scale = shape_scale / SHAPE_SCALE; - double depth = prop.emboss / projec_scale; - auto scale_tr = Eigen::Scaling(projec_scale); + double depth = shape.projection.depth / shape.scale; + auto scale_tr = Eigen::Scaling(shape.scale); // half of font em size for direction of letter emboss - double em_2_mm = prop.size_in_mm / 2.; + // double em_2_mm = prop.size_in_mm / 2.; // TODO: fix it + double em_2_mm = 5.; int32_t em_2_polygon = static_cast(std::round(scale_(em_2_mm))); size_t s_i_offset = 0; // shape index offset(for next lines) @@ -523,7 +847,7 @@ template TriangleMesh create_mesh_per_glyph(DataBase &input, Fnc w for (size_t text_line_index = 0; text_line_index < input.text_lines.size(); ++text_line_index) { const BoundingBoxes &line_bbs = bbs[text_line_index]; const TextLine &line = input.text_lines[text_line_index]; - PolygonPoints samples = sample_slice(line, line_bbs, shape_scale); + PolygonPoints samples = sample_slice(line, line_bbs, shape.scale); std::vector angles = calculate_angles(em_2_polygon, samples, line.polygon); for (size_t i = 0; i < line_bbs.size(); ++i) { @@ -531,10 +855,11 @@ template TriangleMesh create_mesh_per_glyph(DataBase &input, Fnc w if (!letter_bb.defined) continue; - Vec2d to_zero_vec = letter_bb.center().cast() * shape_scale; // [in mm] - float surface_offset = input.is_outside ? -priv::SAFE_SURFACE_OFFSET : (-prop.emboss + priv::SAFE_SURFACE_OFFSET); - if (prop.distance.has_value()) - surface_offset += *prop.distance; + Vec2d to_zero_vec = letter_bb.center().cast() * shape.scale; // [in mm] + float surface_offset = input.is_outside ? -SAFE_SURFACE_OFFSET : (-shape.projection.depth + SAFE_SURFACE_OFFSET); + + if (input.from_surface.has_value()) + surface_offset += *input.from_surface; Eigen::Translation to_zero(-to_zero_vec.x(), 0., static_cast(surface_offset)); @@ -546,7 +871,7 @@ template TriangleMesh create_mesh_per_glyph(DataBase &input, Fnc w Eigen::Translation offset_tr(offset_vec.x(), 0., -offset_vec.y()); Transform3d tr = offset_tr * rotate * to_zero * scale_tr; - const ExPolygons &letter_shape = shapes[s_i_offset + i]; + const ExPolygons &letter_shape = shape.shapes_with_ids[s_i_offset + i].expoly; assert(get_extents(letter_shape) == letter_bb); auto projectZ = std::make_unique(depth); ProjectTransform project(std::move(projectZ), tr); @@ -585,11 +910,10 @@ template TriangleMesh create_mesh_per_glyph(DataBase &input, Fnc w } return TriangleMesh(std::move(result)); } -} // namespace template -TriangleMesh priv::try_create_mesh(DataBase &input, Fnc was_canceled) +TriangleMesh try_create_mesh(DataBase &input, const Fnc& was_canceled) { if (!input.text_lines.empty()) { TriangleMesh tm = create_mesh_per_glyph(input, was_canceled); @@ -597,17 +921,17 @@ TriangleMesh priv::try_create_mesh(DataBase &input, Fnc was_canceled) if (!tm.empty()) return tm; } - ExPolygons shapes = priv::create_shape(input, was_canceled); + ExPolygons shapes = create_shape(input, was_canceled); if (shapes.empty()) return {}; if (was_canceled()) return {}; - const FontProp &prop = input.text_configuration.style.prop; - const FontFile &ff = *input.font_file.font_file; // NOTE: SHAPE_SCALE is applied in ProjectZ - double scale = get_shape_scale(prop, ff) / SHAPE_SCALE; - double depth = prop.emboss / scale; + double scale = input.shape.scale; + double depth = input.shape.projection.depth / scale; auto projectZ = std::make_unique(depth); - float offset = input.is_outside ? -SAFE_SURFACE_OFFSET : (SAFE_SURFACE_OFFSET - prop.emboss); + float offset = input.is_outside ? -SAFE_SURFACE_OFFSET : (SAFE_SURFACE_OFFSET - input.shape.projection.depth); + if (input.from_surface.has_value()) + offset += *input.from_surface; Transform3d tr = Eigen::Translation(0., 0.,static_cast(offset)) * Eigen::Scaling(scale); ProjectTransform project(std::move(projectZ), tr); if (was_canceled()) return {}; @@ -615,23 +939,21 @@ TriangleMesh priv::try_create_mesh(DataBase &input, Fnc was_canceled) } template -TriangleMesh priv::create_mesh(DataBase &input, Fnc was_canceled, Job::Ctl& ctl) +TriangleMesh create_mesh(DataBase &input, const Fnc& was_canceled, Job::Ctl& ctl) { // It is neccessary to create some shape // Emboss text window is opened by creation new emboss text object - TriangleMesh result; - if (input.font_file.has_value()) { - result = try_create_mesh(input, was_canceled); - if (was_canceled()) return {}; - } + TriangleMesh result = try_create_mesh(input, was_canceled); + if (was_canceled()) + return {}; if (result.its.empty()) { - result = priv::create_default_mesh(); - if (was_canceled()) return {}; + result = create_default_mesh(); + if (was_canceled()) + return {}; // only info ctl.call_on_main_thread([]() { - create_message("It is used default volume for embossed " - "text, try to change text or font to fix it."); + create_message("It is used default volume for embossed text, try to change text or font to fix it."); }); } @@ -639,7 +961,7 @@ TriangleMesh priv::create_mesh(DataBase &input, Fnc was_canceled, Job::Ctl& ctl) return result; } -TriangleMesh priv::create_default_mesh() +TriangleMesh create_default_mesh() { // When cant load any font use default object loaded from file std::string path = Slic3r::resources_dir() + "/data/embossed_text.obj"; @@ -651,105 +973,56 @@ TriangleMesh priv::create_default_mesh() return triangle_mesh; } -namespace{ -void update_volume_name(const ModelVolume &volume, const ObjectList *obj_list) +void update_name_in_list(const ObjectList& object_list, const ModelVolume& volume) { - if (obj_list == nullptr) + const ModelObjectPtrs *objects_ptr = object_list.objects(); + if (objects_ptr == nullptr) return; - const std::vector* objects = obj_list->objects(); - if (objects == nullptr) - return; + const ModelObjectPtrs &objects = *objects_ptr; + const ModelObject *object = volume.get_object(); + const ObjectID &object_id = object->id(); - int object_idx = -1; - int volume_idx = -1; - for (size_t oi = 0; oi < objects->size(); ++oi) { - const ModelObject *mo = objects->at(oi); - if (mo == nullptr) - continue; - if (volume.get_object()->id() != mo->id()) - continue; - const ModelVolumePtrs& volumes = mo->volumes; - for (size_t vi = 0; vi < volumes.size(); ++vi) { - const ModelVolume *mv = volumes[vi]; - if (mv == nullptr) - continue; - if (mv->id() == volume.id()){ - object_idx = static_cast(oi); - volume_idx = static_cast(vi); - break; - } - } - if (volume_idx > 0) + // search for index of object + int object_index = -1; + for (size_t i = 0; i < objects.size(); ++i) + if (objects[i]->id() == object_id) { + object_index = static_cast(i); break; } - obj_list->update_name_in_list(object_idx, volume_idx); -} -} -void UpdateJob::update_volume(ModelVolume *volume, - TriangleMesh &&mesh, - const TextConfiguration &text_configuration, - std::string_view volume_name) -{ - // check inputs - bool is_valid_input = - volume != nullptr && - !mesh.empty() && - !volume_name.empty(); - assert(is_valid_input); - if (!is_valid_input) return; - - // update volume - volume->set_mesh(std::move(mesh)); - volume->set_new_unique_id(); - volume->calculate_convex_hull(); - volume->get_object()->invalidate_bounding_box(); - volume->text_configuration = text_configuration; - - // discard information about rotation, should not be stored in volume - volume->text_configuration->style.prop.angle.reset(); + const ModelVolumePtrs volumes = object->volumes; + const ObjectID &volume_id = volume.id(); - GUI_App &app = wxGetApp(); // may be move ObjectList and Plater to input? - - // update volume name in right panel( volume / object name) - if (volume->name != volume_name) { - volume->name = volume_name; - update_volume_name(*volume, app.obj_list()); + // search for index of volume + int volume_index = -1; + for (size_t i = 0; i < volumes.size(); ++i) + if (volumes[i]->id() == volume_id) { + volume_index = static_cast(i); + break; } - // When text is object. - // When text positive volume is lowest part of object than modification of text - // have to move object on bed. - if (volume->type() == ModelVolumeType::MODEL_PART) - volume->get_object()->ensure_on_bed(); - - // redraw scene - Plater *plater = app.plater(); - if (plater == nullptr) + if (object_index < 0 || volume_index < 0) return; - // Update Model and redraw scene - plater->update(); + object_list.update_name_in_list(object_index, volume_index); } -void priv::update_volume(TriangleMesh &&mesh, const DataUpdate &data, Transform3d* tr) +void update_volume(TriangleMesh &&mesh, const DataUpdate &data, const Transform3d *tr) { // for sure that some object will be created if (mesh.its.empty()) return create_message("Empty mesh can't be created."); Plater *plater = wxGetApp().plater(); - GLCanvas3D *canvas = plater->canvas3D(); + // Check gizmo is still open otherwise job should be canceled + assert(plater->canvas3D()->get_gizmos_manager().get_current_type() == GLGizmosManager::Emboss || + plater->canvas3D()->get_gizmos_manager().get_current_type() == GLGizmosManager::Svg); - // Check emboss gizmo is still open - GLGizmosManager &manager = canvas->get_gizmos_manager(); - if (manager.get_current_type() != GLGizmosManager::Emboss) - return; - - std::string snap_name = GUI::format(_L("Text: %1%"), data.text_configuration.text); + // TRN: This is the name of the action appearing in undo/redo stack. + std::string snap_name = _u8L("Text/SVG attribute change"); Plater::TakeSnapshot snapshot(plater, snap_name, UndoRedo::SnapshotType::GizmoAction); - ModelVolume *volume = get_volume(plater->model().objects, data.volume_id); + ModelVolume *volume = get_model_volume(data.volume_id, plater->model().objects); // could appear when user delete edited volume if (volume == nullptr) @@ -759,18 +1032,21 @@ void priv::update_volume(TriangleMesh &&mesh, const DataUpdate &data, Transform3 volume->set_transformation(*tr); } else { // apply fix matrix made by store to .3mf - const auto &tc = volume->text_configuration; - assert(tc.has_value()); - if (tc.has_value() && tc->fix_3mf_tr.has_value()) - volume->set_transformation(volume->get_matrix() * tc->fix_3mf_tr->inverse()); + const std::optional &emboss_shape = volume->emboss_shape; + assert(emboss_shape.has_value()); + if (emboss_shape.has_value() && emboss_shape->fix_3mf_tr.has_value()) + volume->set_transformation(volume->get_matrix() * emboss_shape->fix_3mf_tr->inverse()); } - UpdateJob::update_volume(volume, std::move(mesh), data.text_configuration, data.volume_name); + UpdateJob::update_volume(volume, std::move(mesh), *data.base); } -void priv::create_volume( - TriangleMesh &&mesh, const ObjectID& object_id, - const ModelVolumeType type, const Transform3d trmat, const DataBase &data) +void create_volume(TriangleMesh &&mesh, + const ObjectID &object_id, + const ModelVolumeType type, + const std::optional &trmat, + const DataBase &data, + GLGizmosManager::EType gizmo) { GUI_App &app = wxGetApp(); Plater *plater = app.plater(); @@ -791,13 +1067,19 @@ void priv::create_volume( // Parent object for text volume was propably removed. // Assumption: User know what he does, so text volume is no more needed. if (obj == nullptr) - return priv::create_message("Bad object to create volume."); + return create_message("Bad object to create volume."); if (mesh.its.empty()) - return priv::create_message("Can't create empty volume."); + return create_message("Can't create empty volume."); plater->take_snapshot(_L("Add Emboss text Volume")); + BoundingBoxf3 instance_bb; + if (!trmat.has_value()) { + // used for align to instance + size_t instance_index = 0; // must exist + instance_bb = obj->instance_bounding_box(instance_index); + } // NOTE: be carefull add volume also center mesh !!! // So first add simple shape(convex hull is also calculated) ModelVolume *volume = obj->add_volume(make_cube(1., 1., 1.), type); @@ -815,12 +1097,25 @@ void priv::create_volume( volume->source.is_from_builtin_objects = true; volume->name = data.volume_name; // copy - volume->text_configuration = data.text_configuration; // copy - // discard information about rotation, should not be stored in volume - volume->text_configuration->style.prop.angle.reset(); + if (trmat.has_value()) { + volume->set_transformation(*trmat); + } else { + assert(!data.shape.projection.use_surface); + // Create transformation for volume near from object(defined by glVolume) + // Transformation is inspired add generic volumes in ObjectList::load_generic_subobject + Vec3d volume_size = volume->mesh().bounding_box().size(); + // Translate the new modifier to be pickable: move to the left front corner of the instance's bounding box, lift to print bed. + Vec3d offset_tr(0, // center of instance - Can't suggest width of text before it will be created + -instance_bb.size().y() / 2 - volume_size.y() / 2, // under + volume_size.z() / 2 - instance_bb.size().z() / 2); // lay on bed + // use same instance as for calculation of instance_bounding_box + Transform3d tr = obj->instances.front()->get_transformation().get_matrix_no_offset().inverse(); + Transform3d volume_trmat = tr * Eigen::Translation3d(offset_tr); + volume->set_transformation(volume_trmat); + } - volume->set_transformation(trmat); + data.write(*volume); // update printable state on canvas if (type == ModelVolumeType::MODEL_PART) { @@ -835,36 +1130,25 @@ void priv::create_volume( // when new volume is created change selection to this volume auto add_to_selection = [volume](const ModelVolume *vol) { return vol == volume; }; wxDataViewItemArray sel = obj_list->reorder_volumes_and_get_selection(object_idx, add_to_selection); - if (!sel.IsEmpty()) obj_list->select_item(sel.front()); + if (!sel.IsEmpty()) + obj_list->select_item(sel.front()); obj_list->selection_changed(); // Now is valid text volume selected open emboss gizmo GLGizmosManager &manager = canvas->get_gizmos_manager(); - if (manager.get_current_type() != GLGizmosManager::Emboss) - manager.open_gizmo(GLGizmosManager::Emboss); + if (manager.get_current_type() != gizmo) + manager.open_gizmo(gizmo); // update model and redraw scene //canvas->reload_scene(true); plater->update(); } -ModelVolume *priv::get_volume(ModelObjectPtrs &objects, - const ObjectID &volume_id) +OrthoProject create_projection_for_cut(Transform3d tr, double shape_scale, const std::pair &z_range) { - for (ModelObject *obj : objects) - for (ModelVolume *vol : obj->volumes) - if (vol->id() == volume_id) return vol; - return nullptr; -}; - -OrthoProject priv::create_projection_for_cut( - Transform3d tr, - double shape_scale, - const std::pair &z_range) -{ - double min_z = z_range.first - priv::safe_extension; - double max_z = z_range.second + priv::safe_extension; + double min_z = z_range.first - safe_extension; + double max_z = z_range.second + safe_extension; assert(min_z < max_z); // range between min and max value double projection_size = max_z - min_z; @@ -883,8 +1167,7 @@ OrthoProject priv::create_projection_for_cut( return OrthoProject(tr, project_direction); } -OrthoProject3d priv::create_emboss_projection( - bool is_outside, float emboss, Transform3d tr, SurfaceCut &cut) +OrthoProject3d create_emboss_projection(bool is_outside, float emboss, Transform3d tr, SurfaceCut &cut) { float front_move = (is_outside) ? emboss : SAFE_SURFACE_OFFSET, @@ -894,14 +1177,11 @@ OrthoProject3d priv::create_emboss_projection( return OrthoProject3d(from_front_to_back); } -namespace { indexed_triangle_set cut_surface_to_its(const ExPolygons &shapes, const Transform3d& tr,const SurfaceVolumeData::ModelSources &sources, DataBase& input, std::function was_canceled) { assert(!sources.empty()); BoundingBox bb = get_extents(shapes); - const FontFile &ff = *input.font_file.font_file; - const FontProp &fp = input.text_configuration.style.prop; - double shape_scale = get_shape_scale(fp, ff); + double shape_scale = input.shape.scale; const SurfaceVolumeData::ModelSource *biggest = &sources.front(); @@ -914,10 +1194,11 @@ indexed_triangle_set cut_surface_to_its(const ExPolygons &shapes, const Transfor Transform3d mesh_tr_inv = s.tr.inverse(); Transform3d cut_projection_tr = mesh_tr_inv * tr; std::pair z_range{0., 1.}; - OrthoProject cut_projection = priv::create_projection_for_cut(cut_projection_tr, shape_scale, z_range); + OrthoProject cut_projection = create_projection_for_cut(cut_projection_tr, shape_scale, z_range); // copy only part of source model indexed_triangle_set its = its_cut_AoI(s.mesh->its, bb, cut_projection); - if (its.indices.empty()) continue; + if (its.indices.empty()) + continue; if (biggest_count < its.vertices.size()) { biggest_count = its.vertices.size(); biggest = &s; @@ -936,8 +1217,9 @@ indexed_triangle_set cut_surface_to_its(const ExPolygons &shapes, const Transfor size_t itss_index = s_to_itss[biggest - &sources.front()]; BoundingBoxf3 mesh_bb = bounding_box(itss[itss_index]); for (const SurfaceVolumeData::ModelSource &s : sources) { - size_t itss_index = s_to_itss[&s - &sources.front()]; - if (itss_index == std::numeric_limits::max()) continue; + itss_index = s_to_itss[&s - &sources.front()]; + if (itss_index == std::numeric_limits::max()) + continue; if (&s == biggest) continue; @@ -945,17 +1227,17 @@ indexed_triangle_set cut_surface_to_its(const ExPolygons &shapes, const Transfor bool fix_reflected = true; indexed_triangle_set &its = itss[itss_index]; its_transform(its, tr, fix_reflected); - BoundingBoxf3 bb = bounding_box(its); - mesh_bb.merge(bb); + BoundingBoxf3 its_bb = bounding_box(its); + mesh_bb.merge(its_bb); } // tr_inv = transformation of mesh inverted Transform3d emboss_tr = cut_projection_tr.inverse(); BoundingBoxf3 mesh_bb_tr = mesh_bb.transformed(emboss_tr); std::pair z_range{mesh_bb_tr.min.z(), mesh_bb_tr.max.z()}; - OrthoProject cut_projection = priv::create_projection_for_cut(cut_projection_tr, shape_scale, z_range); - float projection_ratio = (-z_range.first + priv::safe_extension) / - (z_range.second - z_range.first + 2 * priv::safe_extension); + OrthoProject cut_projection = create_projection_for_cut(cut_projection_tr, shape_scale, z_range); + float projection_ratio = (-z_range.first + safe_extension) / + (z_range.second - z_range.first + 2 * safe_extension); ExPolygons shapes_data; // is used only when text is reflected to reverse polygon points order const ExPolygons *shapes_ptr = &shapes; @@ -986,31 +1268,26 @@ indexed_triangle_set cut_surface_to_its(const ExPolygons &shapes, const Transfor if (was_canceled()) return {}; // !! Projection needs to transform cut - OrthoProject3d projection = priv::create_emboss_projection(input.is_outside, fp.emboss, emboss_tr, cut); + OrthoProject3d projection = create_emboss_projection(input.is_outside, input.shape.projection.depth, emboss_tr, cut); return cut2model(cut, projection); } TriangleMesh cut_per_glyph_surface(DataBase &input1, const SurfaceVolumeData &input2, std::function was_canceled) { - std::vector shapes = priv::create_shapes(input1, was_canceled); - if (was_canceled()) return {}; - if (shapes.empty()) - throw priv::JobException(_u8L("Font doesn't have any shape for given text.").c_str()); // Precalculate bounding boxes of glyphs // Separate lines of text to vector of Bounds - const TextConfiguration &tc = input1.text_configuration; - std::wstring ws = boost::nowide::widen(tc.text.c_str()); - assert(get_count_lines(ws) == input1.text_lines.size()); - size_t count_lines = input1.text_lines.size(); - std::vector bbs = create_line_bounds(shapes, ws, count_lines); + const EmbossShape &es = input1.create_shape(); + if (was_canceled()) return {}; + if (es.shapes_with_ids.empty()) + throw JobException(_u8L("Font doesn't have any shape for given text.").c_str()); - const FontProp &prop = tc.style.prop; - FontFileWithCache &font = input1.font_file; - double shape_scale = get_shape_scale(prop, *font.font_file); + assert(get_count_lines(es.shapes_with_ids) == input1.text_lines.size()); + size_t count_lines = input1.text_lines.size(); + std::vector bbs = create_line_bounds(es.shapes_with_ids, count_lines); // half of font em size for direction of letter emboss - double em_2_mm = prop.size_in_mm / 2.; + double em_2_mm = 5.; // TODO: fix it int32_t em_2_polygon = static_cast(std::round(scale_(em_2_mm))); size_t s_i_offset = 0; // shape index offset(for next lines) @@ -1018,7 +1295,7 @@ TriangleMesh cut_per_glyph_surface(DataBase &input1, const SurfaceVolumeData &in for (size_t text_line_index = 0; text_line_index < input1.text_lines.size(); ++text_line_index) { const BoundingBoxes &line_bbs = bbs[text_line_index]; const TextLine &line = input1.text_lines[text_line_index]; - PolygonPoints samples = sample_slice(line, line_bbs, shape_scale); + PolygonPoints samples = sample_slice(line, line_bbs, es.scale); std::vector angles = calculate_angles(em_2_polygon, samples, line.polygon); for (size_t i = 0; i < line_bbs.size(); ++i) { @@ -1033,7 +1310,7 @@ TriangleMesh cut_per_glyph_surface(DataBase &input1, const SurfaceVolumeData &in Vec2d offset_vec = unscale(sample.point); // [in mm] auto offset_tr = Eigen::Translation(offset_vec.x(), 0., -offset_vec.y()); - ExPolygons &glyph_shape = shapes[s_i_offset + i]; + ExPolygons glyph_shape = es.shapes_with_ids[s_i_offset + i].expoly; assert(get_extents(glyph_shape) == glyph_bb); Point offset(-glyph_bb.center().x(), 0); @@ -1041,7 +1318,7 @@ TriangleMesh cut_per_glyph_surface(DataBase &input1, const SurfaceVolumeData &in s.translate(offset); Transform3d modify = offset_tr * rotate; - Transform3d tr = input2.text_tr * modify; + Transform3d tr = input2.transform * modify; indexed_triangle_set glyph_its = cut_surface_to_its(glyph_shape, tr, input2.sources, input1, was_canceled); // move letter in volume on the right position its_transform(glyph_its, modify); @@ -1057,17 +1334,16 @@ TriangleMesh cut_per_glyph_surface(DataBase &input1, const SurfaceVolumeData &in if (was_canceled()) return {}; if (result.empty()) - throw priv::JobException(_u8L("There is no valid surface for text projection.").c_str()); + throw JobException(_u8L("There is no valid surface for text projection.").c_str()); return TriangleMesh(std::move(result)); } -} // namespace // input can't be const - cache of font -TriangleMesh priv::cut_surface(DataBase& input1, const SurfaceVolumeData& input2, std::function was_canceled) +template +TriangleMesh cut_surface(DataBase& input1, const SurfaceVolumeData& input2, const Fnc& was_canceled) { - const FontProp &fp = input1.text_configuration.style.prop; - if (fp.per_glyph) + if (!input1.text_lines.empty()) return cut_per_glyph_surface(input1, input2, was_canceled); ExPolygons shapes = create_shape(input1, was_canceled); @@ -1075,7 +1351,7 @@ TriangleMesh priv::cut_surface(DataBase& input1, const SurfaceVolumeData& input2 if (shapes.empty()) throw JobException(_u8L("Font doesn't have any shape for given text.").c_str()); - indexed_triangle_set its = cut_surface_to_its(shapes, input2.text_tr, input2.sources, input1, was_canceled); + indexed_triangle_set its = cut_surface_to_its(shapes, input2.transform, input2.sources, input1, was_canceled); if (was_canceled()) return {}; if (its.empty()) throw JobException(_u8L("There is no valid surface for text projection.").c_str()); @@ -1083,18 +1359,40 @@ TriangleMesh priv::cut_surface(DataBase& input1, const SurfaceVolumeData& input2 return TriangleMesh(std::move(its)); } -bool priv::process(std::exception_ptr &eptr) { - if (!eptr) return false; +SurfaceVolumeData::ModelSources create_sources(const ModelVolumePtrs &volumes, std::optional text_volume_id) +{ + SurfaceVolumeData::ModelSources result; + result.reserve(volumes.size() - 1); + for (const ModelVolume *v : volumes) { + if (text_volume_id.has_value() && v->id().id == *text_volume_id) + continue; + // skip modifiers and negative volumes, ... + if (!v->is_model_part()) + continue; + const TriangleMesh &tm = v->mesh(); + if (tm.empty()) + continue; + if (tm.its.empty()) + continue; + result.push_back({v->get_mesh_shared_ptr(), v->get_matrix()}); + } + return result; +} + +bool process(std::exception_ptr &eptr) +{ + if (!eptr) + return false; try { std::rethrow_exception(eptr); - } catch (priv::JobException &e) { + } catch (JobException &e) { create_message(e.what()); eptr = nullptr; } return true; } -bool priv::finalize(bool canceled, std::exception_ptr &eptr, const DataBase &input) +bool finalize(bool canceled, std::exception_ptr &eptr, const DataBase &input) { // doesn't care about exception when process was canceled by user if (canceled || input.cancel->load()) { @@ -1104,6 +1402,165 @@ bool priv::finalize(bool canceled, std::exception_ptr &eptr, const DataBase &inp return !process(eptr); } -void priv::create_message(const std::string &message) { +bool is_valid(ModelVolumeType volume_type) +{ + assert(volume_type != ModelVolumeType::INVALID); + assert(volume_type == ModelVolumeType::MODEL_PART || + volume_type == ModelVolumeType::NEGATIVE_VOLUME || + volume_type == ModelVolumeType::PARAMETER_MODIFIER); + if (volume_type == ModelVolumeType::MODEL_PART || + volume_type == ModelVolumeType::NEGATIVE_VOLUME || + volume_type == ModelVolumeType::PARAMETER_MODIFIER) + return true; + + BOOST_LOG_TRIVIAL(error) << "Can't create embossed volume with this type: " << (int) volume_type; + return false; +} + +bool start_create_volume_job(Worker &worker, + const ModelObject &object, + const std::optional &volume_tr, + DataBasePtr data, + ModelVolumeType volume_type, + GLGizmosManager::EType gizmo) +{ + bool &use_surface = data->shape.projection.use_surface; + std::unique_ptr job; + if (use_surface) { + // Model to cut surface from. + SurfaceVolumeData::ModelSources sources = create_sources(object.volumes); + if (sources.empty() || !volume_tr.has_value()) { + use_surface = false; + } else { + SurfaceVolumeData sfvd{*volume_tr, std::move(sources)}; + CreateSurfaceVolumeData surface_data{std::move(sfvd), std::move(data), volume_type, object.id(), gizmo}; + job = std::make_unique(std::move(surface_data)); + } + } + if (!use_surface) { + // create volume + DataCreateVolume create_volume_data{std::move(data), volume_type, object.id(), volume_tr, gizmo}; + job = std::make_unique(std::move(create_volume_data)); + } + return queue_job(worker, std::move(job)); +} + +const GLVolume *find_closest( + const Selection &selection, const Vec2d &screen_center, const Camera &camera, const ModelObjectPtrs &objects, Vec2d *closest_center) +{ + assert(closest_center != nullptr); + const GLVolume *closest = nullptr; + const Selection::IndicesList &indices = selection.get_volume_idxs(); + assert(!indices.empty()); // no selected volume + if (indices.empty()) + return closest; + + double center_sq_distance = std::numeric_limits::max(); + for (unsigned int id : indices) { + const GLVolume *gl_volume = selection.get_volume(id); + if (const ModelVolume *volume = get_model_volume(*gl_volume, objects); + volume == nullptr || !volume->is_model_part()) + continue; + Slic3r::Polygon hull = CameraUtils::create_hull2d(camera, *gl_volume); + Vec2d c = hull.centroid().cast(); + Vec2d d = c - screen_center; + bool is_bigger_x = std::fabs(d.x()) > std::fabs(d.y()); + if ((is_bigger_x && d.x() * d.x() > center_sq_distance) || + (!is_bigger_x && d.y() * d.y() > center_sq_distance)) + continue; + + double distance = d.squaredNorm(); + if (center_sq_distance < distance) + continue; + center_sq_distance = distance; + + *closest_center = c; + closest = gl_volume; + } + return closest; +} + +bool start_create_object_job(const CreateVolumeParams &input, DataBasePtr emboss_data, const Vec2d &coor) +{ + const Pointfs &bed_shape = input.build_volume.bed_shape(); + auto gizmo_type = static_cast(input.gizmo); + DataCreateObject data{std::move(emboss_data), coor, input.camera, bed_shape, gizmo_type}; + auto job = std::make_unique(std::move(data)); + return queue_job(input.worker, std::move(job)); +} + +bool start_create_volume_on_surface_job(CreateVolumeParams &input, DataBasePtr data, const Vec2d &screen_coor, bool try_no_coor) +{ + auto on_bad_state = [&input, try_no_coor](DataBasePtr data_, const ModelObject *object = nullptr) { + if (try_no_coor) { + // Can't create on coordinate try to create somewhere + return start_create_volume_without_position(input, std::move(data_)); + } else { + // In centroid of convex hull is not hit with object. e.g. torid + // soo create transfomation on border of object + + // there is no point on surface so no use of surface will be applied + if (data_->shape.projection.use_surface) + data_->shape.projection.use_surface = false; + + if (object == nullptr) + return false; + + auto gizmo_type = static_cast(input.gizmo); + return start_create_volume_job(input.worker, *object, {}, std::move(data_), input.volume_type, gizmo_type); + } + }; + + assert(input.gl_volume != nullptr); + if (input.gl_volume == nullptr) + return on_bad_state(std::move(data)); + + const Model *model = input.canvas.get_model(); + + assert(model != nullptr); + if (model == nullptr) + return on_bad_state(std::move(data)); + + const ModelObjectPtrs &objects = model->objects; + const ModelVolume *volume = get_model_volume(*input.gl_volume, objects); + assert(volume != nullptr); + if (volume == nullptr) + return on_bad_state(std::move(data)); + + const ModelInstance *instance = get_model_instance(*input.gl_volume, objects); + assert(instance != nullptr); + if (instance == nullptr) + return on_bad_state(std::move(data)); + + const ModelObject *object = volume->get_object(); + assert(object != nullptr); + if (object == nullptr) + return on_bad_state(std::move(data)); + + auto cond = RaycastManager::AllowVolumes({volume->id().id}); + RaycastManager::Meshes meshes = create_meshes(input.canvas, cond); + input.raycaster.actualize(*instance, &cond, &meshes); + std::optional hit = ray_from_camera(input.raycaster, screen_coor, input.camera, &cond); + + // context menu for add text could be open only by right click on an + // object. After right click, object is selected and object_idx is set + // also hit must exist. But there is options to add text by object list + if (!hit.has_value()) + // When model is broken. It could appear that hit miss the object. + // So add part near by in simmilar manner as right panel do + return on_bad_state(std::move(data), object); + + // Create result volume transformation + Transform3d surface_trmat = create_transformation_onto_surface(hit->position, hit->normal, UP_LIMIT); + apply_transformation(input.angle, input.distance, surface_trmat); + Transform3d transform = instance->get_matrix().inverse() * surface_trmat; + auto gizmo_type = static_cast(input.gizmo); + // Try to cast ray into scene and find object for add volume + return start_create_volume_job(input.worker, *object, transform, std::move(data), input.volume_type, gizmo_type); +} + +void create_message(const std::string &message) { show_error(nullptr, message.c_str()); } + +} // namespace \ No newline at end of file diff --git a/src/slic3r/GUI/Jobs/EmbossJob.hpp b/src/slic3r/GUI/Jobs/EmbossJob.hpp index c153814..1b355b4 100644 --- a/src/slic3r/GUI/Jobs/EmbossJob.hpp +++ b/src/slic3r/GUI/Jobs/EmbossJob.hpp @@ -5,42 +5,78 @@ #include #include #include -#include "slic3r/Utils/RaycastManager.hpp" +#include // ExPolygonsWithIds +#include "libslic3r/Point.hpp" // Transform3d +#include "libslic3r/ObjectID.hpp" #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/TextLines.hpp" #include "Job.hpp" +// forward declarations namespace Slic3r { -class ModelVolume; class TriangleMesh; -} +class ModelVolume; +enum class ModelVolumeType : int; +class BuildVolume; +namespace GUI { +class RaycastManager; +class Plater; +class GLCanvas3D; +class Worker; +class Selection; +}} namespace Slic3r::GUI::Emboss { /// -/// Base data holder for embossing +/// Base data hold data for create emboss shape /// -struct DataBase +class DataBase { - // Keep pointer on Data of font (glyph shapes) - Slic3r::Emboss::FontFileWithCache font_file; - // font item is not used for create object - TextConfiguration text_configuration; - // new volume name created from text - std::string volume_name; +public: + DataBase(const std::string& volume_name, std::shared_ptr> cancel) + : volume_name(volume_name), cancel(std::move(cancel)) {} + DataBase(const std::string& volume_name, std::shared_ptr> cancel, EmbossShape&& shape) + : volume_name(volume_name), cancel(std::move(cancel)), shape(std::move(shape)){} + DataBase(DataBase &&) = default; + virtual ~DataBase() = default; + + /// + /// Create shape + /// e.g. Text extract glyphs from font + /// Not 'const' function because it could modify shape + /// + virtual EmbossShape& create_shape() { return shape; }; + + /// + /// Write data how to reconstruct shape to volume + /// + /// Data object for store emboss params + virtual void write(ModelVolume &volume) const; // Define projection move - // True (raised) .. move outside from surface - // False (engraved).. move into object - bool is_outside; + // True (raised) .. move outside from surface (MODEL_PART) + // False (engraved).. move into object (NEGATIVE_VOLUME) + bool is_outside = true; + + // Define per letter projection on one text line + // [optional] It is not used when empty + Slic3r::Emboss::TextLines text_lines = {}; + + // [optional] Define distance for surface + // It is used only for flat surface (not cutted) + // Position of Zero(not set value) differ for MODEL_PART and NEGATIVE_VOLUME + std::optional from_surface; + + // new volume name + std::string volume_name; // flag that job is canceled // for time after process. std::shared_ptr> cancel; - // Define per letter projection on one text line - // [optional] It is not used when empty - Slic3r::Emboss::TextLines text_lines; + // shape to emboss + EmbossShape shape; }; /// @@ -60,59 +96,15 @@ struct DataCreateVolume : public DataBase Transform3d trmat; }; -/// -/// Create new TextVolume on the surface of ModelObject -/// Should not be stopped -/// NOTE: EmbossDataBase::font_file doesn't have to be valid !!! -/// -class CreateVolumeJob : public Job -{ - DataCreateVolume m_input; - TriangleMesh m_result; - -public: - CreateVolumeJob(DataCreateVolume&& input); - void process(Ctl &ctl) override; - void finalize(bool canceled, std::exception_ptr &eptr) override; -}; - -/// -/// Hold neccessary data to create ModelObject in job -/// Object is placed on bed under screen coor -/// OR to center of scene when it is out of bed shape -/// -struct DataCreateObject : public DataBase -{ - // define position on screen where to create object - Vec2d screen_coor; - - // projection property - Camera camera; - - // shape of bed in case of create volume on bed - std::vector bed_shape; -}; - -/// -/// Create new TextObject on the platter -/// Should not be stopped -/// -class CreateObjectJob : public Job -{ - DataCreateObject m_input; - TriangleMesh m_result; - Transform3d m_transformation; -public: - CreateObjectJob(DataCreateObject&& input); - void process(Ctl &ctl) override; - void finalize(bool canceled, std::exception_ptr &eptr) override; -}; +using DataBasePtr = std::unique_ptr; /// /// Hold neccessary data to update embossed text object in job /// -struct DataUpdate : public DataBase +struct DataUpdate { + // Hold data about shape + DataBasePtr base; // unique identifier of volume to change ObjectID volume_id; }; @@ -128,7 +120,7 @@ class UpdateJob : public Job public: // move params to private variable - UpdateJob(DataUpdate &&input); + explicit UpdateJob(DataUpdate &&input); /// /// Create new embossed volume by m_input data and store to m_result @@ -150,18 +142,14 @@ public: /// /// Volume to be updated /// New Triangle mesh for volume - /// Parametric description of volume - /// Name of volume - static void update_volume(ModelVolume *volume, - TriangleMesh &&mesh, - const TextConfiguration &text_configuration, - std::string_view volume_name); + /// Data to write into volume + static void update_volume(ModelVolume *volume, TriangleMesh &&mesh, const DataBase &base); }; struct SurfaceVolumeData { - // Transformation of text volume inside of object - Transform3d text_tr; + // Transformation of volume inside of object + Transform3d transform; struct ModelSource { @@ -174,66 +162,97 @@ struct SurfaceVolumeData ModelSources sources; }; -/// -/// Hold neccessary data to create(cut) volume from surface object in job -/// -struct CreateSurfaceVolumeData : public DataBase, public SurfaceVolumeData{ - // define embossed volume type - ModelVolumeType volume_type; - - // parent ModelObject index where to create volume - ObjectID object_id; -}; - -/// -/// Cut surface from object and create cutted volume -/// Should not be stopped -/// -class CreateSurfaceVolumeJob : public Job -{ - CreateSurfaceVolumeData m_input; - TriangleMesh m_result; - -public: - CreateSurfaceVolumeJob(CreateSurfaceVolumeData &&input); - void process(Ctl &ctl) override; - void finalize(bool canceled, std::exception_ptr &eptr) override; -}; - /// /// Hold neccessary data to update embossed text object in job /// struct UpdateSurfaceVolumeData : public DataUpdate, public SurfaceVolumeData{}; -/// -/// Copied triangles from object to be able create mesh for cut surface from -/// -/// Source object volumes for cut surface from -/// Source volume id -/// Source data for cut surface from -SurfaceVolumeData::ModelSources create_sources(const ModelVolumePtrs &volumes, std::optional text_volume_id = {}); - -/// -/// Copied triangles from object to be able create mesh for cut surface from -/// -/// Define text in object -/// Source data for cut surface from -SurfaceVolumeData::ModelSources create_volume_sources(const ModelVolume *text_volume); - /// /// Update text volume to use surface from object /// class UpdateSurfaceVolumeJob : public Job { UpdateSurfaceVolumeData m_input; - TriangleMesh m_result; + TriangleMesh m_result; public: // move params to private variable - UpdateSurfaceVolumeJob(UpdateSurfaceVolumeData &&input); + explicit UpdateSurfaceVolumeJob(UpdateSurfaceVolumeData &&input); void process(Ctl &ctl) override; void finalize(bool canceled, std::exception_ptr &eptr) override; }; + +/// +/// Copied triangles from object to be able create mesh for cut surface from +/// +/// Define embossed volume +/// Source data for cut surface from +SurfaceVolumeData::ModelSources create_volume_sources(const ModelVolume &volume); + +/// +/// shorten params for start_crate_volume functions +/// +struct CreateVolumeParams +{ + GLCanvas3D &canvas; + + // Direction of ray into scene + const Camera &camera; + + // To put new object on the build volume + const BuildVolume &build_volume; + + // used to emplace job for execution + Worker &worker; + + // New created volume type + ModelVolumeType volume_type; + + // Contain AABB trees from scene + RaycastManager &raycaster; + + // Define which gizmo open on the success + unsigned char gizmo; // GLGizmosManager::EType + + // Volume define object to add new volume + const GLVolume *gl_volume; + + // Wanted additionl move in Z(emboss) direction of new created volume + std::optional distance = {}; + + // Wanted additionl rotation around Z of new created volume + std::optional angle = {}; +}; + +/// +/// Create new volume on position of mouse cursor +/// +/// canvas + camera + bed shape + +/// Shape of emboss +/// New created volume type +/// Knows object in scene +/// Define which gizmo open on the success - enum GLGizmosManager::EType +/// Define position where to create volume +/// Wanted additionl move in Z(emboss) direction of new created volume +/// Wanted additionl rotation around Z of new created volume +/// True on success otherwise False +bool start_create_volume(CreateVolumeParams &input, DataBasePtr data, const Vec2d &mouse_pos); + +/// +/// Same as previous function but without mouse position +/// Need to suggest position or put near the selection +/// +bool start_create_volume_without_position(CreateVolumeParams &input, DataBasePtr data); + +/// +/// Start job for update embossed volume +/// +/// define update data +/// Volume to be updated +/// Keep model and gl_volumes - when start use surface volume must be selected +/// Could cast ray to scene +/// True when start job otherwise false +bool start_update_volume(DataUpdate &&data, const ModelVolume &volume, const Selection &selection, RaycastManager &raycaster); } // namespace Slic3r::GUI #endif // slic3r_EmbossJob_hpp_ diff --git a/src/slic3r/GUI/Jobs/SLAImportJob.cpp b/src/slic3r/GUI/Jobs/SLAImportJob.cpp index 0b3c4cb..9e60afa 100644 --- a/src/slic3r/GUI/Jobs/SLAImportJob.cpp +++ b/src/slic3r/GUI/Jobs/SLAImportJob.cpp @@ -157,7 +157,7 @@ void SLAImportJob::finalize(bool canceled, std::exception_ptr &eptr) if (Preset::printer_technology(config) == ptSLA) { wxGetApp().preset_bundle->load_config_model(name, std::move(config)); - p->plater->check_selected_presets_visibility(ptSLA); + p->plater->notify_about_installed_presets();; wxGetApp().load_current_presets(); } else { p->plater->get_notification_manager()->push_notification( diff --git a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp index d400490..3ee1672 100644 --- a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp +++ b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp @@ -114,7 +114,8 @@ public: void clear() { std::lock_guard lk{m_mutex}; - while (!m_queue.empty()) m_queue.pop(); + while (!m_queue.empty()) + m_queue.pop(); } }; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 66961b2..30a5e47 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -46,7 +46,8 @@ KBShortcutsDialog::KBShortcutsDialog() } wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK); - wxGetApp().UpdateDarkUI(static_cast(this->FindWindowById(wxID_OK, this))); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); + wxGetApp().UpdateDarkUI(buttons->GetAffirmativeButton()); this->SetEscapeId(wxID_OK); main_sizer->Add(buttons, 0, wxEXPAND | wxALL, 5); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 311aa57..c4e2dcb 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -211,7 +211,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S sizer->SetSizeHints(this); Fit(); - const wxSize min_size = wxGetApp().get_min_size(); //wxSize(76*wxGetApp().em_unit(), 49*wxGetApp().em_unit()); + const wxSize min_size = wxGetApp().get_min_size(this); #ifdef __APPLE__ // Using SetMinSize() on Mac messes up the window position in some cases // cf. https://groups.google.com/forum/#!topic/wx-users/yUKPBBfXWO0 @@ -732,7 +732,7 @@ void MainFrame::init_tabpanel() #ifdef _MSW_DARK_MODE if (wxGetApp().tabs_as_menu()) { m_tabpanel = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME); - wxGetApp().UpdateDarkUI(m_tabpanel); +// wxGetApp().UpdateDarkUI(m_tabpanel); } else m_tabpanel = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME, true); @@ -740,9 +740,8 @@ void MainFrame::init_tabpanel() m_tabpanel = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME); #endif -#ifndef __WXOSX__ // Don't call SetFont under OSX to avoid name cutting in ObjectList + wxGetApp().UpdateDarkUI(m_tabpanel); m_tabpanel->SetFont(Slic3r::GUI::wxGetApp().normal_font()); -#endif m_tabpanel->Hide(); m_settings_dialog.set_tabpanel(m_tabpanel); @@ -1169,7 +1168,6 @@ void MainFrame::on_sys_color_changed() wxGetApp().update_ui_colours_from_appconfig(); #ifdef __WXMSW__ wxGetApp().UpdateDarkUI(m_tabpanel); - // m_statusbar->update_dark_ui(); #ifdef _MSW_DARK_MODE // update common mode sizer if (!wxGetApp().tabs_as_menu()) @@ -1217,6 +1215,29 @@ static const wxString sep = " - "; static const wxString sep_space = ""; #endif +static void append_about_menu_item(wxMenu* target_menu, int insert_pos = wxNOT_FOUND) +{ + if (wxGetApp().is_editor()) + append_menu_item(target_menu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), + [](wxCommandEvent&) { Slic3r::GUI::about(); }, nullptr, nullptr, []() {return true; }, nullptr, insert_pos); + else + append_menu_item(target_menu, wxID_ANY, wxString::Format(_L("&About %s"), GCODEVIEWER_APP_NAME), _L("Show about dialog"), + [](wxCommandEvent&) { Slic3r::GUI::about(); }, nullptr, nullptr, []() {return true; }, nullptr, insert_pos); +} + +#ifdef __APPLE__ +static void init_macos_application_menu(wxMenuBar* menu_bar, MainFrame* main_frame) +{ + wxMenu* apple_menu = menu_bar->OSXGetAppleMenu(); + if (apple_menu != nullptr) { + append_about_menu_item(apple_menu, 0); + + // This fixes a bug on macOS where the quit command doesn't emit window close events. + // wx bug: https://trac.wxwidgets.org/ticket/18328 + apple_menu->Bind(wxEVT_MENU, [main_frame](wxCommandEvent&) { main_frame->Close(); }, wxID_EXIT); + } +} +#endif // __APPLE__ static wxMenu* generate_help_menu() { wxMenu* helpMenu = new wxMenu(); @@ -1434,34 +1455,20 @@ void MainFrame::init_menubar_as_editor() []() {return true; }, this); append_submenu(fileMenu, export_menu, wxID_ANY, _L("&Export"), ""); + wxMenu* convert_menu = new wxMenu(); + append_menu_item(convert_menu, wxID_ANY, _L("Convert ASCII G-code to &binary") + dots, _L("Convert a G-code file from ASCII to binary format"), + [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_binary(); }, "convert_file", nullptr, + []() { return true; }, this); + append_menu_item(convert_menu, wxID_ANY, _L("Convert binary G-code to &ASCII") + dots, _L("Convert a G-code file from binary to ASCII format"), + [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_ascii(); }, "convert_file", nullptr, + []() { return true; }, this); + append_submenu(fileMenu, convert_menu, wxID_ANY, _L("&Convert"), ""); append_menu_item(fileMenu, wxID_ANY, _L("Ejec&t SD Card / Flash Drive") + dots + "\tCtrl+T", _L("Eject SD card / Flash drive after the G-code was exported to it."), [this](wxCommandEvent&) { if (m_plater) m_plater->eject_drive(); }, "eject_sd", nullptr, [this]() {return can_eject(); }, this); fileMenu->AppendSeparator(); -#if 0 - m_menu_item_repeat = nullptr; - append_menu_item(fileMenu, wxID_ANY, _L("Quick Slice") +dots+ "\tCtrl+U", _L("Slice a file into a G-code"), - [this](wxCommandEvent&) { - wxTheApp->CallAfter([this]() { - quick_slice(); - m_menu_item_repeat->Enable(is_last_input_file()); - }); }, "cog_go.png"); - append_menu_item(fileMenu, wxID_ANY, _L("Quick Slice and Save As") +dots +"\tCtrl+Alt+U", _L("Slice a file into a G-code, save as"), - [this](wxCommandEvent&) { - wxTheApp->CallAfter([this]() { - quick_slice(qsSaveAs); - m_menu_item_repeat->Enable(is_last_input_file()); - }); }, "cog_go.png"); - m_menu_item_repeat = append_menu_item(fileMenu, wxID_ANY, _L("Repeat Last Quick Slice") +"\tCtrl+Shift+U", _L("Repeat last quick slice"), - [this](wxCommandEvent&) { - wxTheApp->CallAfter([this]() { - quick_slice(qsReslice); - }); }, "cog_go.png"); - m_menu_item_repeat->Enable(false); - fileMenu->AppendSeparator(); -#endif m_menu_item_reslice_now = append_menu_item(fileMenu, wxID_ANY, _L("(Re)Slice No&w") + "\tCtrl+R", _L("Start new slicing process"), [this](wxCommandEvent&) { reslice_now(); }, "re_slice", nullptr, [this]() { return m_plater != nullptr && can_reslice(); }, this); @@ -1680,14 +1687,7 @@ void MainFrame::init_menubar_as_editor() #endif #ifdef __APPLE__ - // This fixes a bug on Mac OS where the quit command doesn't emit window close events - // wx bug: https://trac.wxwidgets.org/ticket/18328 - wxMenu* apple_menu = m_menubar->OSXGetAppleMenu(); - if (apple_menu != nullptr) { - apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent &) { - Close(); - }, wxID_EXIT); - } + init_macos_application_menu(m_menubar, this); #endif // __APPLE__ if (plater()->printer_technology() == ptSLA) @@ -1738,6 +1738,13 @@ void MainFrame::init_menubar_as_gcodeviewer() "", nullptr, [this]() { return !m_plater->get_last_loaded_gcode().empty(); }, this); #endif // __APPLE__ fileMenu->AppendSeparator(); + append_menu_item(fileMenu, wxID_ANY, _L("Convert ASCII G-code to &binary") + dots, _L("Convert a G-code file from ASCII to binary format"), + [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_binary(); }, "convert_file", nullptr, + []() { return true; }, this); + append_menu_item(fileMenu, wxID_ANY, _L("Convert binary G-code to &ASCII") + dots, _L("Convert a G-code file from binary to ASCII format"), + [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_ascii(); }, "convert_file", nullptr, + []() { return true; }, this); + fileMenu->AppendSeparator(); append_menu_item(fileMenu, wxID_ANY, _L("Export &Toolpaths as OBJ") + dots, _L("Export toolpaths as OBJ"), [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->export_toolpaths_to_obj(); }, "export_plater", nullptr, [this]() {return can_export_toolpaths(); }, this); @@ -1772,14 +1779,7 @@ void MainFrame::init_menubar_as_gcodeviewer() SetMenuBar(m_menubar); #ifdef __APPLE__ - // This fixes a bug on Mac OS where the quit command doesn't emit window close events - // wx bug: https://trac.wxwidgets.org/ticket/18328 - wxMenu* apple_menu = m_menubar->OSXGetAppleMenu(); - if (apple_menu != nullptr) { - apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent&) { - Close(); - }, wxID_EXIT); - } + init_macos_application_menu(m_menubar, this); #endif // __APPLE__ } @@ -1799,133 +1799,6 @@ void MainFrame::update_menubar() m_changeable_menu_items[miPrinterTab] ->SetBitmap(*get_bmp_bundle(is_fff ? "printer" : "sla_printer")); } -#if 0 -// To perform the "Quck Slice", "Quick Slice and Save As", "Repeat last Quick Slice" and "Slice to SVG". -void MainFrame::quick_slice(const int qs) -{ -// my $progress_dialog; - wxString input_file; -// eval -// { - // validate configuration - auto config = wxGetApp().preset_bundle->full_config(); - auto valid = config.validate(); - if (! valid.empty()) { - show_error(this, valid); - return; - } - - // select input file - if (!(qs & qsReslice)) { - wxFileDialog dlg(this, _L("Choose a file to slice (STL/OBJ/AMF/3MF/QIDI):"), - wxGetApp().app_config->get_last_dir(), "", - file_wildcards(FT_MODEL), wxFD_OPEN | wxFD_FILE_MUST_EXIST); - if (dlg.ShowModal() != wxID_OK) - return; - input_file = dlg.GetPath(); - if (!(qs & qsExportSVG)) - m_qs_last_input_file = input_file; - } - else { - if (m_qs_last_input_file.IsEmpty()) { - //wxMessageDialog dlg(this, _L("No previously sliced file."), - MessageDialog dlg(this, _L("No previously sliced file."), - _L("Error"), wxICON_ERROR | wxOK); - dlg.ShowModal(); - return; - } - if (std::ifstream(m_qs_last_input_file.ToUTF8().data())) { - //wxMessageDialog dlg(this, _L("Previously sliced file (")+m_qs_last_input_file+_L(") not found."), - MessageDialog dlg(this, _L("Previously sliced file (")+m_qs_last_input_file+_L(") not found."), - _L("File Not Found"), wxICON_ERROR | wxOK); - dlg.ShowModal(); - return; - } - input_file = m_qs_last_input_file; - } - auto input_file_basename = get_base_name(input_file); - wxGetApp().app_config->update_skein_dir(get_dir_name(input_file)); - - auto bed_shape = Slic3r::Polygon::new_scale(config.option("bed_shape")->values); -// auto print_center = Slic3r::Pointf->new_unscale(bed_shape.bounding_box().center()); -// -// auto sprint = new Slic3r::Print::Simple( -// print_center = > print_center, -// status_cb = > [](int percent, const wxString& msg) { -// m_progress_dialog->Update(percent, msg+"…"); -// }); - - // keep model around - auto model = Slic3r::Model::read_from_file(input_file.ToUTF8().data()); - -// sprint->apply_config(config); -// sprint->set_model(model); - - // Copy the names of active presets into the placeholder parser. -// wxGetApp().preset_bundle->export_selections(sprint->placeholder_parser); - - // select output file - wxString output_file; - if (qs & qsReslice) { - if (!m_qs_last_output_file.IsEmpty()) - output_file = m_qs_last_output_file; - } - else if (qs & qsSaveAs) { - // The following line may die if the output_filename_format template substitution fails. - wxFileDialog dlg(this, format_wxstr(_L("Save %s file as:"), ((qs & qsExportSVG) ? _L("SVG") : _L("G-code"))), - wxGetApp().app_config->get_last_output_dir(get_dir_name(output_file)), get_base_name(input_file), - qs & qsExportSVG ? file_wildcards(FT_SVG) : file_wildcards(FT_GCODE), - wxFD_SAVE | wxFD_OVERWRITE_PROMPT); - if (dlg.ShowModal() != wxID_OK) - return; - output_file = dlg.GetPath(); - if (!(qs & qsExportSVG)) - m_qs_last_output_file = output_file; - wxGetApp().app_config->update_last_output_dir(get_dir_name(output_file)); - } - else if (qs & qsExportPNG) { - wxFileDialog dlg(this, _L("Save ZIP file as:"), - wxGetApp().app_config->get_last_output_dir(get_dir_name(output_file)), - get_base_name(output_file), "*.sl1", wxFD_SAVE | wxFD_OVERWRITE_PROMPT); - if (dlg.ShowModal() != wxID_OK) - return; - output_file = dlg.GetPath(); - } - - // show processbar dialog - m_progress_dialog = new wxProgressDialog(_L("Slicing") + dots, - // TRN ProgressDialog on reslicing: "input file basename" - format_wxstr(_L("Processing %s"), (input_file_basename + dots)), - 100, nullptr, wxPD_AUTO_HIDE); - m_progress_dialog->Pulse(); - { -// my @warnings = (); -// local $SIG{ __WARN__ } = sub{ push @warnings, $_[0] }; - -// sprint->output_file(output_file); -// if (export_svg) { -// sprint->export_svg(); -// } -// else if(export_png) { -// sprint->export_png(); -// } -// else { -// sprint->export_gcode(); -// } -// sprint->status_cb(undef); -// Slic3r::GUI::warning_catcher($self)->($_) for @warnings; - } - m_progress_dialog->Destroy(); - m_progress_dialog = nullptr; - - auto message = format(_L("%1% was successfully sliced."), input_file_basename); -// wxTheApp->notify(message); - //wxMessageDialog(this, message, _L("Slicing Done!"), wxOK | wxICON_INFORMATION).ShowModal(); - MessageDialog(this, message, _L("Slicing Done!"), wxOK | wxICON_INFORMATION).ShowModal(); -// }; -// Slic3r::GUI::catch_error(this, []() { if (m_progress_dialog) m_progress_dialog->Destroy(); }); -} -#endif void MainFrame::reslice_now() { @@ -1993,11 +1866,24 @@ void MainFrame::load_config_file() return; wxFileDialog dlg(this, _L("Select configuration to load:"), !m_last_config.IsEmpty() ? get_dir_name(m_last_config) : wxGetApp().app_config->get_last_dir(), - "config.ini", "INI files (*.ini, *.gcode)|*.ini;*.INI;*.gcode;*.g", wxFD_OPEN | wxFD_FILE_MUST_EXIST); + "config.ini", "INI files (*.ini, *.gcode, *.bgcode)|*.ini;*.INI;*.gcode;*.g;*.bgcode;*.bgc", wxFD_OPEN | wxFD_FILE_MUST_EXIST); wxString file; if (dlg.ShowModal() == wxID_OK) file = dlg.GetPath(); if (! file.IsEmpty() && this->load_config_file(file.ToUTF8().data())) { + DynamicPrintConfig config = wxGetApp().preset_bundle->full_config(); + const auto* post_process = config.opt("post_process"); + if (post_process != nullptr && !post_process->values.empty()) { + const wxString msg = _L("The selected config file contains a post-processing script.\nPlease review the script carefully before exporting G-code."); + std::string text; + for (const std::string& s : post_process->values) { + text += s; + } + + InfoDialog msg_dlg(nullptr, msg, from_u8(text), true, wxOK | wxICON_WARNING); + msg_dlg.set_caption(wxString(SLIC3R_APP_NAME " - ") + _L("Attention!")); + msg_dlg.ShowModal(); + } wxGetApp().app_config->update_config_dir(get_dir_name(file)); m_last_config = file; } @@ -2015,7 +1901,7 @@ bool MainFrame::load_config_file(const std::string &path) return false; } - m_plater->check_selected_presets_visibility(ptFFF); + m_plater->notify_about_installed_presets(); wxGetApp().load_current_presets(); return true; } @@ -2186,6 +2072,7 @@ void MainFrame::select_tab(size_t tab/* = size_t(-1)*/) else model_id = preset->config.opt_string("printer_model"); } + preset_data.push_back({wxString::FromUTF8(it->get_full_name(preset_name)).Lower(), wxString::FromUTF8(preset_name), wxString::FromUTF8(it->get_full_name(preset_name)), ph_printers.is_selected(it, preset_name), model_id}); @@ -2519,15 +2406,6 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) if (wxGetApp().is_gcode_viewer()) return; -#if defined(__WXMSW__) - // ys_FIXME! temporary workaround for correct font scaling - // Because of from wxWidgets 3.1.3 auto rescaling is implemented for the Fonts, - // From the very beginning set dialog font to the wxSYS_DEFAULT_GUI_FONT - this->SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); -#else - this->SetFont(wxGetApp().normal_font()); - this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); -#endif // __WXMSW__ // Load the icon either from the exe, or from the ico file. #if _WIN32 diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 03a66b1..f50b708 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -181,7 +181,6 @@ public: bool is_last_input_file() const { return !m_qs_last_input_file.IsEmpty(); } bool is_dlg_layout() const { return m_layout == ESettingsLayout::Dlg; } -// void quick_slice(const int qs = qsUndef); void reslice_now(); void repair_stl(); void export_config(); diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index f04c51a..1203d92 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -22,6 +22,9 @@ #include "wxExtensions.hpp" #include "slic3r/GUI/MainFrame.hpp" #include "GUI_App.hpp" + +#include "Widgets/CheckBox.hpp" + //Y #include "libslic3r/AppConfig.cpp" @@ -87,6 +90,7 @@ void MsgDialog::SetButtonLabel(wxWindowID btn_id, const wxString& label, bool se wxButton* MsgDialog::add_button(wxWindowID btn_id, bool set_focus /*= false*/, const wxString& label/* = wxString()*/) { wxButton* btn = new wxButton(this, btn_id, label); + wxGetApp().SetWindowVariantForButton(btn); if (set_focus) { btn->SetFocus(); // For non-MSW platforms SetFocus is not enought to use it as default, when the dialog is closed by ENTER @@ -106,6 +110,7 @@ wxButton* MsgDialog::get_button(wxWindowID btn_id){ //B44 void MsgDialog::apply_style(long style) { + if (style & wxOK) add_button(wxID_OK, true); if (style & wxYES) add_button(wxID_YES, !(style & wxNO_DEFAULT)); if (style & wxNO) add_button(wxID_NO, (style & wxNO_DEFAULT)); if (style & wxCANCEL) add_button(wxID_CANCEL, (style & wxCANCEL_DEFAULT)); @@ -125,19 +130,19 @@ void MsgDialog::finalize() // Text shown as HTML, so that mouse selection and Ctrl-V to copy will work. -static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxString msg, bool monospaced_font = false, bool is_marked_msg = false) +static void add_msg_content(MsgDialog* parent, wxBoxSizer* content_sizer, const HtmlContent& content) { wxHtmlWindow* html = new wxHtmlWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); // count lines in the message int msg_lines = 0; - if (!monospaced_font) { + if (!content.is_monospaced_font) { int line_len = 55;// count of symbols in one line int start_line = 0; - for (auto i = msg.begin(); i != msg.end(); ++i) { + for (auto i = content.msg.begin(); i != content.msg.end(); ++i) { if (*i == '\n') { - int cur_line_len = i - msg.begin() - start_line; - start_line = i - msg.begin(); + int cur_line_len = i - content.msg.begin() - start_line; + start_line = i - content.msg.begin(); if (cur_line_len == 0 || line_len > cur_line_len) msg_lines++; else @@ -176,11 +181,11 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin } // if message containes the table - if (msg.Contains("")) { - int lines = msg.Freq('\n') + 1; + if (content.msg.Contains("")) { + int lines = content.msg.Freq('\n') + 1; int pos = 0; - while (pos < (int)msg.Len() && pos != wxNOT_FOUND) { - pos = msg.find("", pos + 1); + while (pos < (int)content.msg.Len() && pos != wxNOT_FOUND) { + pos = content.msg.find("", pos + 1); lines += 2; } int page_height = std::min(int(font.GetPixelSize().y+2) * lines, 68 * em); @@ -188,16 +193,16 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin } else { wxClientDC dc(parent); - wxSize msg_sz = dc.GetMultiLineTextExtent(msg); + wxSize msg_sz = dc.GetMultiLineTextExtent(content.msg); page_size = wxSize(std::min(msg_sz.GetX() + 2 * em, 68 * em), - std::min(msg_sz.GetY() + 8 * em, 68 * em)); + std::min(msg_sz.GetY() + 2 * em, 68 * em)); } html->SetMinSize(page_size); - std::string msg_escaped = xml_escape(into_u8(msg), is_marked_msg); + std::string msg_escaped = xml_escape(into_u8(content.msg), content.is_marked_msg || content.on_link_clicked); boost::replace_all(msg_escaped, "\r\n", "
    "); boost::replace_all(msg_escaped, "\n", "
    "); - if (monospaced_font) + if (content.is_monospaced_font) // Code formatting will be preserved. This is useful for reporting errors from the placeholder parser. msg_escaped = std::string("
    ") + msg_escaped + "
    "; //Y @@ -211,13 +216,17 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin "" "" "%3%" - "%4%" "" "" "", - bgr_clr_str, text_clr_str, from_u8(msg_escaped), is_that_msg ? "
    You can get the latest version of the software through the link below:\nhttps://qidi3d.com/pages/software-firmware" : "")); + bgr_clr_str, text_clr_str, from_u8(msg_escaped))); - html->Bind(wxEVT_HTML_LINK_CLICKED, [parent](wxHtmlLinkEvent& event) { + html->Bind(wxEVT_HTML_LINK_CLICKED, [parent, &content](wxHtmlLinkEvent& event) { + if (content.on_link_clicked) { + parent->EndModal(wxID_CLOSE); + content.on_link_clicked(into_u8(event.GetLinkInfo().GetHref())); + } + else wxGetApp().open_browser_with_warning_dialog(event.GetLinkInfo().GetHref(), parent, false); event.Skip(false); }); @@ -228,21 +237,33 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin // ErrorDialog -ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font) - : MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_NAME), - wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_NAME), wxOK) - , msg(msg) +void ErrorDialog::create(const HtmlContent& content, int icon_width) { - add_msg_content(this, content_sizer, msg, monospaced_font); + add_msg_content(this, content_sizer, content); // Use a small bitmap with monospaced font, as the error text will not be wrapped. - logo->SetBitmap(*get_bmp_bundle("QIDISlicer_192px_grayscale.png", monospaced_font ? 48 : /*1*/84)); + logo->SetBitmap(*get_bmp_bundle("QIDISlicer_192px_grayscale.png", icon_width)); SetMaxSize(wxSize(-1, CONTENT_MAX_HEIGHT*wxGetApp().em_unit())); finalize(); } +ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font) + : MsgDialog(parent, wxString::Format(_L("%s error"), SLIC3R_APP_NAME), + wxString::Format(_L("%s has encountered an error"), SLIC3R_APP_NAME), wxOK) + , m_content(HtmlContent{ msg, monospaced_font, true }) +{ + create(m_content, monospaced_font ? 48 : 84); +} + +ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, const std::function &on_link_clicked) + : MsgDialog(parent, wxString::Format(_L("%s error"), SLIC3R_APP_NAME), + wxString::Format(_L("%s has encountered an error"), SLIC3R_APP_NAME), wxOK) + , m_content(HtmlContent{ msg, false, true, on_link_clicked }) +{ + create(m_content, 84); +} // WarningDialog WarningDialog::WarningDialog(wxWindow *parent, @@ -252,7 +273,7 @@ WarningDialog::WarningDialog(wxWindow *parent, : MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s warning"), SLIC3R_APP_NAME) : caption, wxString::Format(_L("%s has a warning")+":", SLIC3R_APP_NAME), style) { - add_msg_content(this, content_sizer, message); + add_msg_content(this, content_sizer, HtmlContent{ message }); finalize(); } @@ -265,7 +286,7 @@ MessageDialog::MessageDialog(wxWindow* parent, long style/* = wxOK*/) : MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, style) { - add_msg_content(this, content_sizer, get_wraped_wxString(message)); + add_msg_content(this, content_sizer, HtmlContent{ get_wraped_wxString(message) }); finalize(); } @@ -278,9 +299,9 @@ RichMessageDialog::RichMessageDialog(wxWindow* parent, long style/* = wxOK*/) : MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, style) { - add_msg_content(this, content_sizer, get_wraped_wxString(message)); + add_msg_content(this, content_sizer, HtmlContent{ get_wraped_wxString(message) }); - m_checkBox = new wxCheckBox(this, wxID_ANY, m_checkBoxText); + m_checkBox = new ::CheckBox(this, m_checkBoxText); wxGetApp().UpdateDarkUI(m_checkBox); m_checkBox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { m_checkBoxValue = m_checkBox->GetValue(); }); @@ -293,8 +314,10 @@ int RichMessageDialog::ShowModal() { if (m_checkBoxText.IsEmpty()) m_checkBox->Hide(); - else + else { m_checkBox->SetLabelText(m_checkBoxText); + m_checkBox->Update(); + } Layout(); return wxDialog::ShowModal(); @@ -307,7 +330,7 @@ InfoDialog::InfoDialog(wxWindow* parent, const wxString &title, const wxString& : MsgDialog(parent, wxString::Format(_L("%s information"), SLIC3R_APP_NAME), title, style) , msg(msg) { - add_msg_content(this, content_sizer, msg, false, is_marked_msg); + add_msg_content(this, content_sizer, HtmlContent{ msg, false, is_marked_msg }); finalize(); } diff --git a/src/slic3r/GUI/MsgDialog.hpp b/src/slic3r/GUI/MsgDialog.hpp index 4ccc907..308fd92 100644 --- a/src/slic3r/GUI/MsgDialog.hpp +++ b/src/slic3r/GUI/MsgDialog.hpp @@ -13,13 +13,20 @@ #include class wxBoxSizer; -class wxCheckBox; +class CheckBox; class wxStaticBitmap; namespace Slic3r { namespace GUI { +struct HtmlContent +{ + wxString msg{ wxEmptyString }; + bool is_monospaced_font{ false }; + bool is_marked_msg{ false }; + std::function on_link_clicked{ nullptr }; +}; // A message / query dialog with a bitmap on the left and any content on the right // with buttons underneath. struct MsgDialog : wxDialog @@ -63,6 +70,7 @@ public: // If monospaced_font is true, the error message is displayed using html
    tags, // so that the code formatting will be preserved. This is useful for reporting errors from the placeholder parser. ErrorDialog(wxWindow *parent, const wxString &msg, bool courier_font); + ErrorDialog(wxWindow *parent, const wxString &msg, const std::function& on_link_clicked); ErrorDialog(ErrorDialog &&) = delete; ErrorDialog(const ErrorDialog &) = delete; ErrorDialog &operator=(ErrorDialog &&) = delete; @@ -70,7 +78,9 @@ public: virtual ~ErrorDialog() = default; private: - wxString msg; + void create(const HtmlContent& content, int icon_width); + + HtmlContent m_content; }; @@ -128,7 +138,7 @@ public: // Generic rich message dialog, used intead of wxRichMessageDialog class RichMessageDialog : public MsgDialog { - wxCheckBox* m_checkBox{ nullptr }; + CheckBox* m_checkBox{ nullptr }; wxString m_checkBoxText; bool m_checkBoxValue{ false }; @@ -316,6 +326,7 @@ public: InfoDialog&operator=(const InfoDialog&) = delete; virtual ~InfoDialog() = default; + void set_caption(const wxString& caption) { this->SetTitle(caption); } private: wxString msg; }; diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 1fa2200..0358fe8 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -60,6 +60,7 @@ enum class NotificationType // Notification on the start of QIDISlicer, when updates of system profiles are detected. // Contains a hyperlink to execute installation of the new system profiles. PresetUpdateAvailable, + PresetUpdateAvailableNewPrinter, // LoadingFailed, // Errors emmited by Print::validate // difference from Slicing error is that they disappear not grey out at update_background_process @@ -115,14 +116,16 @@ enum class NotificationType SimplifySuggestion, // Change of text will change font to similar one on. UnknownFont, - // information about netfabb is finished repairing model (blocking proccess) - NetfabbFinished, + // information that repairing model finished (blocking proccess) + RepairFinished, // Short meesage to fill space between start and finish of export ExportOngoing, // Progressbar of download from qidislicer:// url URLDownload, // MacOS specific - PS comes forward even when downloader is not allowed URLNotRegistered, + // Config file was detected during startup, open wifi config dialog via hypertext + WifiConfigFileDetected }; class NotificationManager diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index f3fdbf7..6fd6c4d 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -280,6 +280,11 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) tooltip = *field->undo_to_sys_tooltip(); break; } + if (opt_idx < line.rects_edit_icon.size() && is_point_in_rect(pos, line.rects_edit_icon[opt_idx])) { + if (Field* field = opt_group->get_field(opt_key); field && field->has_edit_ui()) + tooltip = *field->edit_tooltip(); + break; + } } if (!tooltip.IsEmpty()) break; @@ -329,6 +334,12 @@ void OG_CustomCtrl::OnLeftDown(wxMouseEvent& event) event.Skip(); return; } + if (opt_idx < line.rects_edit_icon.size() && is_point_in_rect(pos, line.rects_edit_icon[opt_idx])) { + if (Field* field = opt_group->get_field(opt_key)) + field->on_edit_value(); + event.Skip(); + return; + } } } @@ -567,18 +578,22 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) return; } + wxCoord h_pos = draw_mode_bmp(dc, v_pos); Field* field = ctrl->opt_group->get_field(og_line.get_options().front().opt_id); //B21 //const bool suppress_hyperlinks = get_app_config()->get_bool("suppress_hyperlinks"); const bool suppress_hyperlinks = true; if (draw_just_act_buttons) { - if (field) - draw_act_bmps(dc, wxPoint(0, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink()); + if (field) { + const wxPoint pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink()); + // Add edit button, if it exists + if (field->has_edit_ui()) + draw_edit_bmp(dc, pos, field->edit_bitmap()); + } return; } - wxCoord h_pos = draw_mode_bmp(dc, v_pos); if (og_line.near_label_widget_win) h_pos += og_line.near_label_widget_win->GetSize().x + ctrl->m_h_gap; @@ -610,7 +625,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) option_set.front().side_widget == nullptr && og_line.get_extra_widgets().size() == 0) { if (field && field->has_undo_ui()) - h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink()) + ctrl->m_h_gap; + h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink()).x + ctrl->m_h_gap; else if (field && !field->has_undo_ui() && field->blink()) draw_blinking_bmp(dc, wxPoint(h_pos, v_pos), field->blink()); // update width for full_width fields @@ -639,7 +654,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos) } if (field && field->has_undo_ui()) { - h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink(), bmp_rect_id++); + h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap(), field->undo_bitmap(), field->blink(), bmp_rect_id++).x; if (field->getSizer()) { auto children = field->getSizer()->GetChildren(); @@ -670,7 +685,8 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_mode_bmp(wxDC& dc, wxCoord v_pos) return ctrl->m_h_gap; ConfigOptionMode mode = og_line.get_options()[0].opt.mode; - wxBitmapBundle* bmp = get_bmp_bundle("mode", wxOSX ? 10 : 12, wxGetApp().get_mode_btn_color(mode)); + int pix_cnt = wxOSX ? 10 : 12; + wxBitmapBundle* bmp = get_bmp_bundle("mode", pix_cnt, pix_cnt, wxGetApp().get_mode_btn_color(mode)); wxCoord y_draw = v_pos + lround((height - get_bitmap_size(bmp, ctrl).GetHeight()) / 2); if (og_line.get_options().front().opt.gui_type != ConfigOptionDef::GUIType::legend) @@ -750,7 +766,7 @@ wxPoint OG_CustomCtrl::CtrlLine::draw_blinking_bmp(wxDC& dc, wxPoint pos, bool i return wxPoint(h_pos, v_pos); } -wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id) +wxPoint OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id) { pos = draw_blinking_bmp(dc, pos, is_blinking); wxCoord h_pos = pos.x; @@ -769,7 +785,19 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi h_pos += bmp_dim + ctrl->m_h_gap; - return h_pos; + return wxPoint(h_pos, v_pos); +} + +wxCoord OG_CustomCtrl::CtrlLine::draw_edit_bmp(wxDC &dc, wxPoint pos, const wxBitmapBundle *bmp_edit) +{ + const wxCoord h_pos = pos.x + ctrl->m_h_gap; + const wxCoord v_pos = pos.y; + const int bmp_w = get_bitmap_size(bmp_edit, ctrl).GetWidth(); + rects_edit_icon.emplace_back(wxRect(h_pos, v_pos, bmp_w, bmp_w)); + + dc.DrawBitmap(bmp_edit->GetBitmapFor(ctrl), h_pos, v_pos); + + return h_pos + bmp_w + ctrl->m_h_gap; } bool OG_CustomCtrl::CtrlLine::launch_browser() const diff --git a/src/slic3r/GUI/OG_CustomCtrl.hpp b/src/slic3r/GUI/OG_CustomCtrl.hpp index 269f847..0d7cb62 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.hpp +++ b/src/slic3r/GUI/OG_CustomCtrl.hpp @@ -62,12 +62,14 @@ class OG_CustomCtrl :public wxPanel wxCoord draw_mode_bmp(wxDC& dc, wxCoord v_pos); wxCoord draw_text (wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url = false); wxPoint draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking); - wxCoord draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id = 0); + wxPoint draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmapBundle& bmp_undo_to_sys, const wxBitmapBundle& bmp_undo, bool is_blinking, size_t rect_id = 0); + wxCoord draw_edit_bmp(wxDC& dc, wxPoint pos, const wxBitmapBundle* bmp_edit); bool launch_browser() const; bool is_separator() const { return og_line.is_separator(); } std::vector rects_undo_icon; std::vector rects_undo_to_sys_icon; + std::vector rects_edit_icon; wxRect rect_label; }; diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index ca0ac61..7296b18 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -75,6 +75,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* pare const wxString& sub_obj_name, Slic3r::ModelVolumeType type, const bool is_text_volume, + const bool is_svg_volume, const wxString& extruder, const int idx/* = -1*/) : m_parent(parent), @@ -82,6 +83,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* pare m_type(itVolume), m_volume_type(type), m_is_text_volume(is_text_volume), + m_is_svg_volume(is_svg_volume), m_idx(idx), m_extruder(type == Slic3r::ModelVolumeType::MODEL_PART || type == Slic3r::ModelVolumeType::PARAMETER_MODIFIER ? extruder : "") { @@ -333,6 +335,7 @@ ObjectDataViewModel::ObjectDataViewModel() { m_volume_bmps = MenuFactory::get_volume_bitmaps(); m_text_volume_bmps = MenuFactory::get_text_volume_bitmaps(); + m_svg_volume_bmps = MenuFactory::get_svg_volume_bitmaps(); m_warning_bmp = *get_bmp_bundle(WarningIcon); m_warning_manifold_bmp = *get_bmp_bundle(WarningManifoldIcon); m_lock_bmp = *get_bmp_bundle(LockIcon); @@ -355,7 +358,10 @@ void ObjectDataViewModel::UpdateBitmapForNode(ObjectDataViewModelNode* node) bool is_volume_node = vol_type >= 0; if (!node->has_warning_icon() && !node->has_lock()) { - node->SetBitmap(is_volume_node ? (node->is_text_volume() ? *m_text_volume_bmps.at(vol_type) : *m_volume_bmps.at(vol_type)) : m_empty_bmp); + node->SetBitmap(is_volume_node ? ( + node->is_text_volume() ? *m_text_volume_bmps.at(vol_type) : + node->is_svg_volume() ? *m_svg_volume_bmps.at(vol_type) : + *m_volume_bmps.at(vol_type)) : m_empty_bmp); return; } @@ -376,7 +382,10 @@ void ObjectDataViewModel::UpdateBitmapForNode(ObjectDataViewModelNode* node) if (node->has_lock()) bmps.emplace_back(&m_lock_bmp); if (is_volume_node) - bmps.emplace_back(node->is_text_volume() ? m_text_volume_bmps[vol_type] : m_volume_bmps[vol_type]); + bmps.emplace_back( + node->is_text_volume() ? m_text_volume_bmps[vol_type] : + node->is_svg_volume() ? m_svg_volume_bmps[vol_type] : + m_volume_bmps[vol_type]); bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps); } @@ -413,6 +422,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent const int volume_idx, const Slic3r::ModelVolumeType volume_type, const bool is_text_volume, + const bool is_svg_volume, const std::string& warning_icon_name, const wxString& extruder) { @@ -424,7 +434,7 @@ wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent if (insert_position < 0) insert_position = get_root_idx(root, itInstanceRoot); - const auto node = new ObjectDataViewModelNode(root, name, volume_type, is_text_volume, extruder, volume_idx); + const auto node = new ObjectDataViewModelNode(root, name, volume_type, is_text_volume, is_svg_volume, extruder, volume_idx); UpdateBitmapForNode(node, warning_icon_name, root->has_lock() && volume_type < ModelVolumeType::PARAMETER_MODIFIER); insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position); @@ -1683,6 +1693,7 @@ void ObjectDataViewModel::UpdateBitmaps() { m_volume_bmps = MenuFactory::get_volume_bitmaps(); m_text_volume_bmps = MenuFactory::get_text_volume_bitmaps(); + m_svg_volume_bmps = MenuFactory::get_svg_volume_bitmaps(); m_warning_bmp = *get_bmp_bundle(WarningIcon); m_warning_manifold_bmp = *get_bmp_bundle(WarningManifoldIcon); m_lock_bmp = *get_bmp_bundle(LockIcon); diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index 861db32..668c3b7 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -85,6 +85,7 @@ class ObjectDataViewModelNode std::string m_action_icon_name = ""; ModelVolumeType m_volume_type{ -1 }; bool m_is_text_volume{ false }; + bool m_is_svg_volume{false}; InfoItemType m_info_item_type {InfoItemType::Undef}; public: @@ -103,6 +104,7 @@ public: const wxString& sub_obj_name, Slic3r::ModelVolumeType type, const bool is_text_volume, + const bool is_svg_volume, const wxString& extruder, const int idx = -1 ); @@ -238,6 +240,7 @@ public: bool update_settings_digest(const std::vector& categories); int volume_type() const { return int(m_volume_type); } bool is_text_volume() const { return m_is_text_volume; } + bool is_svg_volume() const { return m_is_svg_volume; } void sys_color_changed(); #ifndef NDEBUG @@ -265,6 +268,7 @@ class ObjectDataViewModel :public wxDataViewModel std::vector m_objects; std::vector m_volume_bmps; std::vector m_text_volume_bmps; + std::vector m_svg_volume_bmps; std::map m_info_bmps; wxBitmapBundle m_empty_bmp; wxBitmapBundle m_warning_bmp; @@ -286,6 +290,7 @@ public: const int volume_idx, const Slic3r::ModelVolumeType volume_type, const bool is_text_volume, + const bool is_svg_volume, const std::string& warning_icon_name, const wxString& extruder); wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 30b7de4..a4fd5c2 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -96,6 +96,13 @@ const t_field& OptionsGroup::build_field(const t_config_option_key& id, const Co }; field->m_parent = parent(); + if (edit_custom_gcode && opt.is_code) { + field->m_fn_edit_value = [this](std::string opt_id) { + if (!m_disabled) + this->edit_custom_gcode(opt_id); + }; + field->set_edit_tooltip(_L("Edit Custom G-code")); + } field->m_back_to_initial_value = [this](std::string opt_id) { if (!m_disabled) this->back_to_initial_value(opt_id); @@ -268,6 +275,7 @@ void OptionsGroup::activate_line(Line& line) if (!custom_ctrl && m_use_custom_ctrl) { custom_ctrl = new OG_CustomCtrl(is_legend_line || !staticbox ? this->parent() : static_cast(this->stb), this); + wxGetApp().UpdateDarkUI(custom_ctrl); if (is_legend_line) sizer->Add(custom_ctrl, 0, wxEXPAND | wxLEFT, wxOSX ? 0 : 10); else @@ -904,9 +912,10 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config ret = double_to_string(val); } break; - case coString: + case coString: { ret = from_u8(config.opt_string(opt_key)); break; + } case coStrings: if (opt_key == "compatible_printers" || opt_key == "compatible_prints" || opt_key == "gcode_substitutions") { ret = config.option(opt_key)->values; @@ -921,8 +930,8 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config else if (opt->gui_flags == "serialized") { std::vector values = config.option(opt_key)->values; if (!values.empty() && !values[0].empty()) - for (auto el : values) - text_value += el + ";"; + for (const std::string& el : values) + text_value += from_u8(el) + ";"; ret = text_value; } else @@ -946,10 +955,6 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config case coPoints: if (opt_key == "bed_shape") ret = config.option(opt_key)->values; - else if (opt_key == "bed_exclude_area") - ret = get_thumbnails_string(config.option(opt_key)->values); - else if (opt_key == "thumbnails") - ret = get_thumbnails_string(config.option(opt_key)->values); else ret = config.option(opt_key)->get_at(idx); break; @@ -1004,7 +1009,7 @@ wxString OptionsGroup::get_url(const std::string& path_end) if (path_end.empty()) return wxEmptyString; - wxString language = get_app_config()->get("translation_language"); + wxString language = wxGetApp().current_language_code_safe(); wxString lang_marker = language.IsEmpty() ? "en" : language.BeforeFirst('_'); return wxString("https://help.qidi3d.com/") + lang_marker + wxString("/article/" + path_end); diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp index f754505..d738c18 100644 --- a/src/slic3r/GUI/OptionsGroup.hpp +++ b/src/slic3r/GUI/OptionsGroup.hpp @@ -122,6 +122,7 @@ public: std::function rescale_extra_column_item { nullptr }; std::function rescale_near_label_widget { nullptr }; + std::function edit_custom_gcode { nullptr }; wxFont sidetext_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) }; wxFont label_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) }; int sidetext_width{ -1 }; diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index 80dfba5..672138e 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -180,7 +180,7 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxWindow* parent, wxString printer_ m_add_preset_btn->SetToolTip(_L("Add preset for this printer device")); m_add_preset_btn->Bind(wxEVT_BUTTON, &PhysicalPrinterDialog::AddPreset, this); - m_printer_name = new wxTextCtrl(this, wxID_ANY, printer_name, wxDefaultPosition, wxDefaultSize); + m_printer_name = new ::TextInput(this,printer_name); wxGetApp().UpdateDarkUI(m_printer_name); m_printer_name->Bind(wxEVT_TEXT, [this](wxEvent&) { this->update_full_printer_names(); }); @@ -238,7 +238,7 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxWindow* parent, wxString printer_ if (new_printer) { m_printer_name->SetFocus(); - m_printer_name->SelectAll(); + m_printer_name->GetTextCtrl()->SelectAll(); } this->Fit(); @@ -432,11 +432,14 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr m_optgroup->activate(); + const auto opt = m_config->option>("host_type"); + m_last_host_type = opt->value; + m_opened_as_connect = (m_last_host_type == htQIDIConnect); Field* printhost_field = m_optgroup->get_field("print_host"); if (printhost_field) { - wxTextCtrl* temp = dynamic_cast(printhost_field->getWindow()); - if (temp) + text_ctrl* temp = dynamic_cast(printhost_field->getWindow()); + if (temp) { temp->Bind(wxEVT_TEXT, ([printhost_field, temp](wxEvent& e) { #ifndef __WXGTK__ @@ -454,6 +457,7 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr field->propagate_value(); }), temp->GetId()); } + } // Always fill in the "printhost_port" combo box from the config and select it. { @@ -484,13 +488,7 @@ void PhysicalPrinterDialog::update(bool printer_change) const auto opt = m_config->option>("host_type"); m_optgroup->show_field("host_type"); - // hide QIDIConnect address - if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) { - if (wxTextCtrl* temp = dynamic_cast(printhost_field->getWindow()); temp && temp->GetValue() == L"https://connect.qidi3d.com") { - temp->SetValue(wxString()); - } - } - if (opt->value == htQIDILink) { // QIDIConnect does NOT allow http digest + if (opt->value == htQIDILink) { // PrusaConnect does NOT allow http digest m_optgroup->show_field("printhost_authorization_type"); AuthorizationType auth_type = m_config->option>("printhost_authorization_type")->value; m_optgroup->show_field("printhost_apikey", auth_type == AuthorizationType::atKeyPassword); @@ -502,15 +500,30 @@ void PhysicalPrinterDialog::update(bool printer_change) for (const std::string& opt_key : std::vector{ "printhost_user", "printhost_password" }) m_optgroup->hide_field(opt_key); supports_multiple_printers = opt && opt->value == htRepetier; - if (opt->value == htQIDIConnect) { // automatically show default qidiconnect address - if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) { - if (wxTextCtrl* temp = dynamic_cast(printhost_field->getWindow()); temp && temp->GetValue().IsEmpty()) { - temp->SetValue(L"https://connect.qidi3d.com"); } + // Hide Browse and Test buttons for Connect + if (opt->value == htQIDIConnect) { + m_printhost_browse_btn->Hide(); + // hide show hostname and PrusaConnect address + Field* printhost_field = m_optgroup->get_field("print_host"); + text_ctrl* printhost_win = printhost_field ? dynamic_cast(printhost_field->getWindow()) : nullptr; + if (!m_opened_as_connect && printhost_win && m_last_host_type != htQIDIConnect){ + m_stored_host = printhost_win->GetValue(); + printhost_win->SetValue(L"https://connect.prusa3d.com"); } + } else { + m_printhost_browse_btn->Show(); + // hide PrusaConnect address and show hostname + Field* printhost_field = m_optgroup->get_field("print_host"); + text_ctrl* printhost_win = printhost_field ? dynamic_cast(printhost_field->getWindow()) : nullptr; + if (!m_opened_as_connect && printhost_win && m_last_host_type == htQIDIConnect) { + wxString temp_host = printhost_win->GetValue(); + printhost_win->SetValue(m_stored_host); + m_stored_host = temp_host; } } + m_last_host_type = opt->value; } else { m_optgroup->set_value("host_type", int(PrintHostType::htOctoPrint), false); @@ -554,16 +567,19 @@ void PhysicalPrinterDialog::update_host_type(bool printer_change) || boost::starts_with(model, "XL") ); }; - // allowed models are: all MK3/S and MK2.5/S + // allowed models are: all MK3/S and MK2.5/S. + // Since 2.6.2 also MINI, which makes list of supported printers same for both services. + // Lets keep these 2 functions separated for now. auto model_supports_qidiconnect = [](const std::string& model) { return model.size() >= 2 && ((boost::starts_with(model, "MK") && model[2] > '2' && model[2] <= '9') + || boost::starts_with(model, "MINI") || boost::starts_with(model, "MK2.5") || boost::starts_with(model, "XL") ); }; - // set all_presets_are_qidilink_supported + // set all_presets_are_prusalink_supported for (PresetForPrinter* prstft : m_presets) { std::string preset_name = prstft->get_preset_name(); if (Preset* preset = wxGetApp().preset_bundle->printers.find_preset(preset_name)) { @@ -667,7 +683,7 @@ void PhysicalPrinterDialog::update_full_printer_names() InfoDialog(this, format_wxstr("%1%: \"%2%\" ", _L("Unexpected character"), str), _L("The following characters are not allowed in the name") + ": " + unusable_symbols).ShowModal(); m_printer_name->SetValue(printer_name); - m_printer_name->SetInsertionPointEnd(); + m_printer_name->GetTextCtrl()->SetInsertionPointEnd(); return; } } @@ -724,6 +740,18 @@ void PhysicalPrinterDialog::OnOK(wxEvent& event) return; } + Field* printhost_field = m_optgroup->get_field("print_host"); + text_ctrl* printhost_win = printhost_field ? dynamic_cast(printhost_field->getWindow()) : nullptr; + const auto opt = m_config->option>("host_type"); + if (opt->value == htQIDIConnect) { + if (printhost_win && printhost_win->GetValue() != L"https://connect.qidi3d.com"){ + InfoDialog msg(this, _L("Warning"), _L("URL of QIDIConnect is different from https://connect.qidi3d.com. Do you want to continue?"), true, wxYES_NO); + if(msg.ShowModal() != wxID_YES){ + printhost_win->SetValue(L"https://connect.qidi3d.com"); + return; + } + } + } PhysicalPrinterCollection& printers = wxGetApp().preset_bundle->physical_printers; const PhysicalPrinter* existing = printers.find_printer(into_u8(printer_name), false); if (existing && into_u8(printer_name) != printers.get_selected_printer_name()) diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.hpp b/src/slic3r/GUI/PhysicalPrinterDialog.hpp index bef74c2..8e34087 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.hpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.hpp @@ -6,10 +6,10 @@ #include #include "libslic3r/Preset.hpp" +#include "Widgets/TextInput.hpp" #include "GUI_Utils.hpp" class wxString; -class wxTextCtrl; class wxStaticText; class ScalableButton; class wxBoxSizer; @@ -63,7 +63,7 @@ class PhysicalPrinterDialog : public DPIDialog wxString m_default_name; DynamicPrintConfig* m_config { nullptr }; - wxTextCtrl* m_printer_name { nullptr }; + ::TextInput* m_printer_name { nullptr }; std::vector m_presets; ConfigOptionsGroup* m_optgroup { nullptr }; @@ -76,6 +76,9 @@ class PhysicalPrinterDialog : public DPIDialog wxBoxSizer* m_presets_sizer {nullptr}; + wxString m_stored_host; + PrintHostType m_last_host_type; + bool m_opened_as_connect {false}; void build_printhost_settings(ConfigOptionsGroup* optgroup); void OnOK(wxEvent& event); void AddPreset(wxEvent& event); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9f5a218..2a7cb2a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3,13 +3,13 @@ #include #include -#include #include #include #include #include #include #include +#include #include #include #include @@ -37,6 +37,7 @@ #include #endif +#include #include "libslic3r/libslic3r.h" #include "libslic3r/Format/STL.hpp" #include "libslic3r/Format/AMF.hpp" @@ -106,6 +107,7 @@ #include "MsgDialog.hpp" #include "ProjectDirtyStateManager.hpp" #include "Gizmos/GLGizmoSimplify.hpp" // create suggestion notification +#include "Gizmos/GLGizmoSVG.hpp" // Drop SVG file #include "Gizmos/GLGizmoCut.hpp" #include "FileArchiveDialog.hpp" @@ -123,6 +125,7 @@ #include "libslic3r/CustomGCode.hpp" #include "libslic3r/Platform.hpp" +#include "Widgets/CheckBox.hpp" using boost::optional; namespace fs = boost::filesystem; using Slic3r::_3DScene; @@ -191,11 +194,9 @@ public: wxStaticText *info_size; wxStaticText *info_volume; wxStaticText *info_facets; -// wxStaticText *info_materials; wxStaticText *info_manifold; wxStaticText *label_volume; -// wxStaticText *label_materials; // ysFIXME - delete after next release if anyone will not complain about this std::vector sla_hidden_items; bool showing_manifold_warning_icon; @@ -493,7 +494,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : auto wiping_dialog_btn = [this](wxWindow* parent) { m_wiping_dialog_button = new wxButton(parent, wxID_ANY, _L("Purging volumes") + dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); - m_wiping_dialog_button->SetFont(wxGetApp().normal_font()); + wxGetApp().SetWindowVariantForButton(m_wiping_dialog_button); wxGetApp().UpdateDarkUI(m_wiping_dialog_button, true); auto sizer = new wxBoxSizer(wxHORIZONTAL); @@ -771,6 +772,7 @@ void Sidebar::priv::hide_rich_tip(wxButton* btn) Sidebar::Sidebar(Plater *parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent)) { + SetFont(wxGetApp().normal_font()); p->scrolled = new wxScrolledWindow(this); // p->scrolled->SetScrollbars(0, 100, 1, 2); // ys_DELETE_after_testing. pixelsPerUnitY = 100 from https://github.com/qidi3d/QIDISlicer/commit/8f019e5fa992eac2c9a1e84311c990a943f80b01, // but this cause the bad layout of the sidebar, when all infoboxes appear. @@ -778,13 +780,12 @@ Sidebar::Sidebar(Plater *parent) // But if we set this value to 5, layout will be better p->scrolled->SetScrollRate(0, 5); - SetFont(wxGetApp().normal_font()); #ifndef __APPLE__ #ifdef _WIN32 wxGetApp().UpdateDarkUI(this); wxGetApp().UpdateDarkUI(p->scrolled); #else - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); +// SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); #endif #endif @@ -920,8 +921,8 @@ Sidebar::Sidebar(Plater *parent) int bmp_px_cnt = 32; #endif //__APPLE__ ScalableBitmap bmp = ScalableBitmap(this, icon_name, bmp_px_cnt); - *btn = new ScalableButton(this, wxID_ANY, bmp, label, wxBU_EXACTFIT); - (*btn)->SetFont(wxGetApp().bold_font()); + *btn = new ScalableButton(this, wxID_ANY, bmp, "", wxBU_EXACTFIT); + wxGetApp().SetWindowVariantForButton((*btn)); #ifdef _WIN32 (*btn)->Bind(wxEVT_ENTER_WINDOW, [tooltip, btn, this](wxMouseEvent& event) { @@ -938,9 +939,9 @@ Sidebar::Sidebar(Plater *parent) (*btn)->Hide(); }; - init_scalable_btn(&p->btn_send_gcode, "export_gcode", _L("Send to printer"), _L("Send to printer") + " " + GUI::shortkey_ctrl_prefix() + "Shift+G"); + init_scalable_btn(&p->btn_send_gcode , "export_gcode", _L("Send to printer") + " " +GUI::shortkey_ctrl_prefix() + "Shift+G"); // init_scalable_btn(&p->btn_eject_device, "eject_sd" , _L("Remove device ") + GUI::shortkey_ctrl_prefix() + "T"); - init_scalable_btn(&p->btn_export_gcode_removable, "export_to_sd", _L("Export"), _L("Export to SD card / Flash drive") + " " + GUI::shortkey_ctrl_prefix() + "U"); + init_scalable_btn(&p->btn_export_gcode_removable, "export_to_sd", _L("Export to SD card / Flash drive") + " " + GUI::shortkey_ctrl_prefix() + "U"); //Y14 // regular buttons "Slice now" and "Export G-code" @@ -953,6 +954,7 @@ Sidebar::Sidebar(Plater *parent) auto init_btn = [this](wxButton **btn, wxString label, const int button_height) { *btn = new wxButton(this, wxID_ANY, label, wxDefaultPosition, wxSize(-1, button_height), wxBU_EXACTFIT); + wxGetApp().SetWindowVariantForButton((*btn)); (*btn)->SetFont(wxGetApp().bold_font()); wxGetApp().UpdateDarkUI((*btn), true); }; @@ -1098,10 +1100,14 @@ void Sidebar::update_presets(Preset::Type preset_type) case Preset::TYPE_PRINTER: { update_all_preset_comboboxes(); +#if 1 // #ysFIXME_delete_after_test_of >> it looks like CallAfter() is no need [issue with disapearing of comboboxes are not reproducible] + p->show_preset_comboboxes(); +#else // CallAfter is really needed here to correct layout of the preset comboboxes, // when printer technology is changed during a project loading AND/OR switching the application mode. // Otherwise, some of comboboxes are invisible CallAfter([this]() { p->show_preset_comboboxes(); }); +#endif break; } @@ -1140,7 +1146,7 @@ void Sidebar::update_reslice_btn_tooltip() const void Sidebar::msw_rescale() { - SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1)); + SetMinSize(wxSize(42 * wxGetApp().em_unit(), -1)); for (PlaterPresetComboBox* combo : std::vector { p->combo_print, p->combo_sla_print, @@ -1220,6 +1226,28 @@ void Sidebar::search() p->searcher.search(); } +void Sidebar::jump_to_option(const std::string& composite_key) +{ + const auto separator_pos = composite_key.find(";"); + const std::string opt_key = composite_key.substr(0, separator_pos); + const std::string tab_name = composite_key.substr(separator_pos + 1, composite_key.length()); + + for (Tab* tab : wxGetApp().tabs_list) { + if (tab->name() == tab_name) { + check_and_update_searcher(true); + + // Regularly searcher is sorted in respect to the options labels, + // so resort searcher before get an option + p->searcher.sort_options_by_key(); + const Search::Option& opt = p->searcher.get_option(opt_key, tab->type()); + tab->activate_option(opt_key, boost::nowide::narrow(opt.category)); + + // Revert sort of searcher back + p->searcher.sort_options_by_label(); + break; + } + } +} void Sidebar::jump_to_option(const std::string& opt_key, Preset::Type type, const std::wstring& category) { //const Search::Option& opt = p->searcher.get_option(opt_key, type); @@ -1479,8 +1507,7 @@ void Sidebar::update_sliced_info_sizer() p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label); } - // if there is a wipe tower, insert number of toolchanges info into the array: - p->sliced_info->SetTextAndShow(siWTNumbetOfToolchanges, is_wipe_tower ? wxString::Format("%.d", ps.total_toolchanges) : "N/A"); + p->sliced_info->SetTextAndShow(siWTNumbetOfToolchanges, ps.total_toolchanges > 0 ? wxString::Format("%.d", ps.total_toolchanges) : "N/A"); // Hide non-FFF sliced info parameters p->sliced_info->SetTextAndShow(siMateril_unit, "N/A"); @@ -1632,6 +1659,28 @@ private: Plater& m_plater; }; +namespace { +bool emboss_svg(Plater& plater, const wxString &svg_file, const Vec2d& mouse_drop_position) +{ + std::string svg_file_str = into_u8(svg_file); + GLCanvas3D* canvas = plater.canvas3D(); + if (canvas == nullptr) + return false; + auto base_svg = canvas->get_gizmos_manager().get_gizmo(GLGizmosManager::Svg); + if (base_svg == nullptr) + return false; + GLGizmoSVG* svg = dynamic_cast(base_svg); + if (svg == nullptr) + return false; + + // Refresh hover state to find surface point under mouse + wxMouseEvent evt(wxEVT_MOTION); + evt.SetPosition(wxPoint(mouse_drop_position.x(), mouse_drop_position.y())); + canvas->on_mouse(evt); // call render where is call GLCanvas3D::_picking_pass() + + return svg->create_volume(svg_file_str, mouse_drop_position, ModelVolumeType::MODEL_PART); +} +} bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames) { #ifdef WIN32 @@ -1643,6 +1692,19 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi m_mainframe.select_tab(size_t(0)); if (wxGetApp().is_editor()) m_plater.select_view_3D("3D"); + // When only one .svg file is dropped on scene + if (filenames.size() == 1) { + const wxString &filename = filenames.Last(); + const wxString file_extension = filename.substr(filename.length() - 4); + if (file_extension.CmpNoCase(".svg") == 0) { + const wxPoint offset = m_plater.GetPosition(); + Vec2d mouse_position(x - offset.x, y - offset.y); + // Scale for retina displays + const GLCanvas3D *canvas = m_plater.canvas3D(); + canvas->apply_retina_scale(mouse_position); + return emboss_svg(m_plater, filename, mouse_position); + } + } bool res = m_plater.load_files(filenames); m_mainframe.update_title(); return res; @@ -1956,7 +2018,7 @@ struct Plater::priv bool can_split_to_volumes() const; bool can_arrange() const; bool can_layers_editing() const; - bool can_fix_through_netfabb() const; + bool can_fix_through_winsdk() const; bool can_simplify() const; bool can_set_instance_to_object() const; bool can_mirror() const; @@ -2043,7 +2105,6 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) , collapse_toolbar(GLToolbar::Normal, "Collapse") , m_project_filename(wxEmptyString) { - this->q->SetFont(Slic3r::GUI::wxGetApp().normal_font()); background_process.set_fff_print(&fff_print); background_process.set_sla_print(&sla_print); @@ -2124,6 +2185,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_ROTATED, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_RESET_SKEW, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_SCALED, [this](SimpleEvent&) { update(); }); + view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_MIRRORED, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, [this](Event& evt) { this->sidebar->enable_buttons(evt.data); }); //Y5 view3D_canvas->Bind(EVT_GLCANVAS_ENABLE_EXPORT_BUTTONS, [this](Event& evt) { this->sidebar->enable_export_buttons(evt.data); }); @@ -2236,6 +2298,23 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // Close notification ExportingFinished but only if last export was to removable notification_manager->device_ejected(); }); + this->q->Bind(EVT_REMOVABLE_DRIVE_ADDED, [this](wxCommandEvent& evt) { + if (!fs::exists(fs::path(evt.GetString().utf8_string()) / "prusa_printer_settings.ini")) + return; + if (evt.GetInt() == 0) { // not at startup, show dialog + wxGetApp().open_wifi_config_dialog(false, evt.GetString()); + } else { // at startup, show only notification + notification_manager->push_notification(NotificationType::WifiConfigFileDetected + , NotificationManager::NotificationLevel::ImportantNotificationLevel + // TRN Text of notification when Slicer starts and usb stick with printer settings ini file is present + , _u8L("Printer configuration file detected on removable media.") + // TRN Text of hypertext of notification when Slicer starts and usb stick with printer settings ini file is present + , _u8L("Write Wi-Fi credentials."), [evt/*, CONFIG_FILE_NAME*/](wxEvtHandler* evt_hndlr){ + wxGetApp().open_wifi_config_dialog(true, evt.GetString()); + return true;}); + } + + }); // Start the background thread and register this window as a target for update events. wxGetApp().removable_drive_manager()->init(this->q); #ifdef _WIN32 @@ -2398,46 +2477,15 @@ bool Plater::priv::get_config_bool(const std::string &key) const return wxGetApp().app_config->get_bool(key); } -// After loading of the presets from project, check if they are visible. -// Set them to visible if they are not. -void Plater::check_selected_presets_visibility(PrinterTechnology loaded_printer_technology) +void Plater::notify_about_installed_presets() { - auto update_selected_preset_visibility = [](PresetCollection& presets, std::vector& names) { - if (!presets.get_selected_preset().is_visible) { - assert(presets.get_selected_preset().name == presets.get_edited_preset().name); - presets.get_selected_preset().is_visible = true; - presets.get_edited_preset().is_visible = true; - names.emplace_back(presets.get_selected_preset().name); - } - }; - - std::vector names; - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - if (loaded_printer_technology == ptFFF) { - update_selected_preset_visibility(preset_bundle->prints, names); - for (const auto& extruder_filaments : preset_bundle->extruders_filaments) { - Preset* preset = preset_bundle->filaments.find_preset(extruder_filaments.get_selected_preset_name()); - if (preset && !preset->is_visible) { - preset->is_visible = true; - names.emplace_back(preset->name); - if (preset->name == preset_bundle->filaments.get_edited_preset().name) - preset_bundle->filaments.get_selected_preset().is_visible = true; - } - } - } - else { - update_selected_preset_visibility(preset_bundle->sla_prints, names); - update_selected_preset_visibility(preset_bundle->sla_materials, names); - } - update_selected_preset_visibility(preset_bundle->printers, names); - - preset_bundle->update_compatible(PresetSelectCompatibleType::Never); + const auto& names = wxGetApp().preset_bundle->tmp_installed_presets; // show notification about temporarily installed presets if (!names.empty()) { - std::string notif_text = into_u8(_L_PLURAL("The preset below was temporarily installed on the active instance of QIDISlicer", - "The presets below were temporarily installed on the active instance of QIDISlicer", names.size())) + ":"; - for (std::string& name : names) + std::string notif_text = into_u8(_L_PLURAL("The preset below was temporarily installed on the active instance of PrusaSlicer", + "The presets below were temporarily installed on the active instance of PrusaSlicer", names.size())) + ":"; + for (const std::string& name : names) notif_text += "\n - " + name; get_notification_manager()->push_notification(NotificationType::CustomNotification, NotificationManager::NotificationLevel::PrintInfoNotificationLevel, notif_text); @@ -2486,6 +2534,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ int answer_convert_from_meters = wxOK_DEFAULT; int answer_convert_from_imperial_units = wxOK_DEFAULT; + int answer_consider_as_multi_part_objects = wxOK_DEFAULT; bool in_temp = false; const fs::path temp_path = wxStandardPaths::Get().GetTempDir().utf8_str().data(); @@ -2565,10 +2614,23 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (load_config) { if (!config.empty()) { + const auto* post_process = config.opt("post_process"); + if (post_process != nullptr && !post_process->values.empty()) { + // TRN The placeholder is either "3MF" or "AMF" + wxString msg = GUI::format_wxstr(_L("The selected %1% file contains a post-processing script.\n" + "Please review the script carefully before exporting G-code."), type_3mf ? "3MF" : "AMF" ); + std::string text; + for (const std::string& s : post_process->values) + text += s; + + InfoDialog msg_dlg(nullptr, msg, from_u8(text), true, wxOK | wxICON_WARNING); + msg_dlg.set_caption(wxString(SLIC3R_APP_NAME " - ") + _L("Attention!")); + msg_dlg.ShowModal(); + } Preset::normalize(config); PresetBundle* preset_bundle = wxGetApp().preset_bundle; preset_bundle->load_config_model(filename.string(), std::move(config)); - q->check_selected_presets_visibility(loaded_printer_technology); + q->notify_about_installed_presets(); if (loaded_printer_technology == ptFFF) CustomGCode::update_custom_gcode_per_print_z_from_config(model.custom_gcode_per_print_z, &preset_bundle->project_config); @@ -2667,14 +2729,21 @@ std::vector Plater::priv::load_files(const std::vector& input_ } if (model.looks_like_multipart_object()) { - MessageDialog msg_dlg(q, _L( + if (answer_consider_as_multi_part_objects == wxOK_DEFAULT) { + RichMessageDialog dlg(q, _L( "This file contains several objects positioned at multiple heights.\n" "Instead of considering them as multiple objects, should \n" "the file be loaded as a single object having multiple parts?") + "\n", - _L("Multi-part object detected"), wxICON_WARNING | wxYES | wxNO); - if (msg_dlg.ShowModal() == wxID_YES) { - model.convert_multipart_object(nozzle_dmrs->values.size()); + _L("Multi-part object detected"), wxICON_QUESTION | wxYES_NO); + dlg.ShowCheckBox(_L("Apply to all objects being loaded.")); + int answer = dlg.ShowModal(); + if (dlg.IsCheckBoxChecked()) + answer_consider_as_multi_part_objects = answer; + if (answer == wxID_YES) + model.convert_multipart_object(nozzle_dmrs->size()); } + else if (answer_consider_as_multi_part_objects == wxID_YES) + model.convert_multipart_object(nozzle_dmrs->size()); } } if ((wxGetApp().get_mode() == comSimple) && (type_3mf || type_any_amf) && model_has_advanced_features(model)) { @@ -3333,8 +3402,6 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool GLCanvas3D::ContoursList contours; contours.contours = background_process.fff_print()->get_sequential_print_clearance_contours(); canvas->set_sequential_print_clearance_contours(contours, true); - canvas->set_as_dirty(); - canvas->request_extra_frame(); } } } @@ -3349,8 +3416,6 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool GLCanvas3D::ContoursList contours; contours.contours = background_process.fff_print()->get_sequential_print_clearance_contours(); canvas->set_sequential_print_clearance_contours(contours, true); - canvas->set_as_dirty(); - canvas->request_extra_frame(); } } std::vector warnings; @@ -4433,7 +4498,10 @@ void Plater::priv::on_action_layersediting(SimpleEvent&) void Plater::priv::on_object_select(SimpleEvent& evt) { - wxGetApp().obj_list()->update_selections(); + if (auto obj_list = wxGetApp().obj_list()) + obj_list->update_selections(); + else + return; selection_changed(); } @@ -4472,9 +4540,13 @@ void Plater::priv::on_right_click(RBtnEvent& evt) const bool is_part = selection.is_single_volume_or_modifier() && ! selection.is_any_connector(); if (is_some_full_instances) menu = printer_technology == ptSLA ? menus.sla_object_menu() : menus.object_menu(); - else if (is_part) - menu = selection.is_single_text() ? menus.text_part_menu() : menus.part_menu(); - else + else if (is_part) { + const GLVolume* gl_volume = selection.get_first_volume(); + const ModelVolume *model_volume = get_model_volume(*gl_volume, selection.get_model()->objects); + menu = (model_volume != nullptr && model_volume->is_text()) ? menus.text_part_menu() : + (model_volume != nullptr && model_volume->is_svg()) ? menus.svg_part_menu() : + menus.part_menu(); + } else menu = menus.multi_selection_menu(); // } } @@ -4828,15 +4900,15 @@ bool Plater::priv::can_delete_all() const return !model.objects.empty() && !sidebar->obj_list()->is_editing(); } -bool Plater::priv::can_fix_through_netfabb() const +bool Plater::priv::can_fix_through_winsdk() const { std::vector obj_idxs, vol_idxs; sidebar->obj_list()->get_selection_indexes(obj_idxs, vol_idxs); -#if FIX_THROUGH_NETFABB_ALWAYS +#if FIX_THROUGH_WINSDK_ALWAYS // Fixing always. return ! obj_idxs.empty() || ! vol_idxs.empty(); -#else // FIX_THROUGH_NETFABB_ALWAYS +#else // FIX_THROUGH_WINSDK_ALWAYS // Fixing only if the model is not manifold. if (vol_idxs.empty()) { for (auto obj_idx : obj_idxs) @@ -4850,7 +4922,7 @@ bool Plater::priv::can_fix_through_netfabb() const if (model.objects[obj_idx]->get_repaired_errors_count(vol_idx) > 0) return true; return false; -#endif // FIX_THROUGH_NETFABB_ALWAYS +#endif // FIX_THROUGH_WINSDK_ALWAYS } bool Plater::priv::can_simplify() const @@ -5257,7 +5329,7 @@ void Sidebar::set_btn_label(const ActionButtonType btn_type, const wxString& lab // Plater / Public Plater::Plater(wxWindow *parent, MainFrame *main_frame) - : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxGetApp().get_min_size()) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxGetApp().get_min_size(parent)) , p(new priv(this, main_frame)) { // Initialization performed in the private c-tor @@ -5795,7 +5867,7 @@ void Plater::add_num_text(std::string num, Vec2d posotion) if (volume_type == ModelVolumeType::INVALID) volume_type = ModelVolumeType::MODEL_PART; - emboss->create_volume(volume_type, posotion, num); + // emboss->create_volume(volume_type, posotion, num); } @@ -5906,6 +5978,189 @@ void Plater::reload_gcode_from_disk() load_gcode(filename); } +static std::string rename_file(const std::string& filename, const std::string& extension) +{ + const boost::filesystem::path src_path(filename); + std::string src_stem = src_path.stem().string(); + int value = 0; + if (src_stem.back() == ')') { + const size_t pos = src_stem.find_last_of('('); + if (pos != std::string::npos) { + const std::string value_str = src_stem.substr(pos + 1, src_stem.length() - pos); + try + { + value = std::stoi(value_str); + src_stem = src_stem.substr(0, pos); + } + catch (...) + { + // do nothing + } + } + } + + boost::filesystem::path dst_path(filename); + dst_path.remove_filename(); + dst_path /= src_stem + "(" + std::to_string(value + 1) + ")" + extension; + return dst_path.string(); +} + +void Plater::convert_gcode_to_ascii() +{ + // Ask user for a gcode file name. + wxString input_file; + wxGetApp().load_gcode(this, input_file); + if (input_file.empty()) + return; + + // Open source file + FilePtr in_file{ boost::nowide::fopen(into_u8(input_file).c_str(), "rb") }; + if (in_file.f == nullptr) { + MessageDialog msg_dlg(this, _L("Unable to open the selected file."), _L("Error"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); + return; + } + + // Set out filename + const boost::filesystem::path input_path(into_u8(input_file)); + boost::filesystem::path output_path(into_u8(input_file)); + std::string output_file = output_path.replace_extension("gcode").string(); + + if (input_file == output_file) { + using namespace bgcode::core; + EResult res = is_valid_binary_gcode(*in_file.f); + if (res == EResult::InvalidMagicNumber) { + MessageDialog msg_dlg(this, _L("The selected file is already in ASCII format."), _L("Warning"), wxOK); + msg_dlg.ShowModal(); + return; + } + else { + output_file = rename_file(output_file, ".gcode"); + wxString msg = GUI::format_wxstr("The converted binary G-code file has '.gcode' extension.\n" + "The exported file will be renamed to:\n\n%1%\n\nDo you want to continue?", output_file); + MessageDialog msg_dlg(this, msg, _L("Warning"), wxYES_NO); + if (msg_dlg.ShowModal() != wxID_YES) + return; + } + } + + const bool exists = boost::filesystem::exists(output_file); + if (exists) { + MessageDialog msg_dlg(this, GUI::format_wxstr(_L("File %1% already exists. Do you wish to overwrite it?"), output_file), _L("Notice"), wxYES_NO); + if (msg_dlg.ShowModal() != wxID_YES) + return; + } + + // Open destination file + FilePtr out_file{ boost::nowide::fopen(output_file.c_str(), "wb") }; + if (out_file.f == nullptr) { + MessageDialog msg_dlg(this, _L("Unable to open output file."), _L("Error"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); + return; + } + + // Perform conversion + { + wxBusyCursor busy; + using namespace bgcode::core; + EResult res = bgcode::convert::from_binary_to_ascii(*in_file.f, *out_file.f, true); + if (res == EResult::InvalidMagicNumber) { + in_file.close(); + out_file.close(); + boost::filesystem::copy_file(input_path, output_path, boost::filesystem::copy_option::overwrite_if_exists); + } + else if (res != EResult::Success) { + MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting G-code file"), wxICON_INFORMATION | wxOK); + msg_dlg.ShowModal(); + out_file.close(); + boost::nowide::remove(output_file.c_str()); + return; + } + } + + MessageDialog msg_dlg(this, Slic3r::GUI::format_wxstr("%1%\n%2%", _L("Successfully created G-code ASCII file"), output_file), + _L("Convert G-code file to ASCII format"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); +} + +void Plater::convert_gcode_to_binary() +{ + // Ask user for a gcode file name. + wxString input_file; + wxGetApp().load_gcode(this, input_file); + if (input_file.empty()) + return; + + // Open source file + FilePtr in_file{ boost::nowide::fopen(into_u8(input_file).c_str(), "rb") }; + if (in_file.f == nullptr) { + MessageDialog msg_dlg(this, _L("Unable to open the selected file."), _L("Error"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); + return; + } + + // Set out filename + const boost::filesystem::path input_path(into_u8(input_file)); + boost::filesystem::path output_path(into_u8(input_file)); + std::string output_file = output_path.replace_extension("bgcode").string(); + + if (input_file == output_file) { + using namespace bgcode::core; + EResult res = is_valid_binary_gcode(*in_file.f); + if (res == EResult::Success) { + MessageDialog msg_dlg(this, _L("The selected file is already in binary format."), _L("Warning"), wxOK); + msg_dlg.ShowModal(); + return; + } + else { + output_file = rename_file(output_file, ".bgcode"); + wxString msg = GUI::format_wxstr("The converted ASCII G-code file has '.bgcode' extension.\n" + "The exported file will be renamed to:\n\n%1%\n\nDo you want to continue?", output_file); + MessageDialog msg_dlg(this, msg, _L("Warning"), wxYES_NO); + if (msg_dlg.ShowModal() != wxID_YES) + return; + } + } + + const bool exists = boost::filesystem::exists(output_file); + if (exists) { + MessageDialog msg_dlg(this, GUI::format_wxstr(_L("File %1% already exists. Do you wish to overwrite it?"), output_file), _L("Notice"), wxYES_NO); + if (msg_dlg.ShowModal() != wxID_YES) + return; + } + + // Open destination file + FilePtr out_file{ boost::nowide::fopen(output_file.c_str(), "wb") }; + if (out_file.f == nullptr) { + MessageDialog msg_dlg(this, _L("Unable to open output file."), _L("Error"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); + return; + } + + // Perform conversion + { + wxBusyCursor busy; + using namespace bgcode::core; + const bgcode::binarize::BinarizerConfig& binarizer_config = GCodeProcessor::get_binarizer_config(); + const EResult res = bgcode::convert::from_ascii_to_binary(*in_file.f, *out_file.f, binarizer_config); + if (res == EResult::AlreadyBinarized) { + in_file.close(); + out_file.close(); + boost::filesystem::copy_file(input_path, output_path, boost::filesystem::copy_option::overwrite_if_exists); + } + else if (res != EResult::Success) { + MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting G-code file"), wxICON_INFORMATION | wxOK); + msg_dlg.ShowModal(); + out_file.close(); + boost::nowide::remove(output_file.c_str()); + return; + } + } + + MessageDialog msg_dlg(this, Slic3r::GUI::format_wxstr("%1%\n%2%", _L("Successfully created G-code binary file"), output_file), + _L("Convert G-code file to binary format"), wxICON_ERROR | wxOK); + msg_dlg.ShowModal(); +} void Plater::refresh_print() { p->preview->refresh_print(); @@ -6139,6 +6394,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) // Decompress action. We already has correct file index in stat structure. mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); if (res == 0) { + // TRN: First argument = path to file, second argument = error description wxString error_log = GUI::format_wxstr(_L("Failed to unzip file to %1%: %2% "), final_path.string(), mz_zip_get_error_string(mz_zip_get_last_error(&archive))); BOOST_LOG_TRIVIAL(error) << error_log; show_error(nullptr, error_log); @@ -6413,7 +6669,7 @@ void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) bool Plater::load_files(const wxArrayString& filenames, bool delete_after_load/*=false*/) { const std::regex pattern_drop(".*[.](stl|obj|amf|3mf|qidi|step|stp|zip)", std::regex::icase); - const std::regex pattern_gcode_drop(".*[.](gcode|g)", std::regex::icase); + const std::regex pattern_gcode_drop(".*[.](gcode|g|bgcode|bgc)", std::regex::icase); std::vector paths; @@ -6861,6 +7117,55 @@ void Plater::apply_cut_object_to_model(size_t obj_idx, const ModelObjectPtrs& ne w.wait_for_idle(); } +static wxString check_binary_vs_ascii_gcode_extension(PrinterTechnology pt, const std::string& ext, bool binary_output) +{ + wxString err_out; + if (pt == ptFFF) { + const bool binary_extension = (ext == ".bgcode" || ext == ".bgc"); + const bool ascii_extension = (ext == ".gcode" || ext == ".g" || ext == ".gco"); + if (binary_output && ascii_extension) { + // TRN The placeholder %1% is the file extension the user has selected. + err_out = format_wxstr(_L("Cannot save binary G-code with %1% extension.\n\n" + "Use a different extension or disable binary G-code export " + "in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print"); + } + if (!binary_output && binary_extension) { + // TRN The placeholder %1% is the file extension the user has selected. + err_out = format_wxstr(_L("Cannot save ASCII G-code with %1% extension.\n\n" + "Use a different extension or enable binary G-code export " + "in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print"); + } + } + return err_out; +} + + + +// This function should be deleted when binary G-codes become more common. The dialog is there to make the +// transition period easier for the users, because bgcode files are not recognized by older firmwares +// without any error message. +static void alert_when_exporting_binary_gcode(bool binary_output, const std::string& printer_notes) +{ + if (binary_output + && (boost::algorithm::contains(printer_notes, "PRINTER_MODEL_XL") + || boost::algorithm::contains(printer_notes, "PRINTER_MODEL_MINI") + || boost::algorithm::contains(printer_notes, "PRINTER_MODEL_MK4") + || boost::algorithm::contains(printer_notes, "PRINTER_MODEL_MK3.9"))) + { + AppConfig* app_config = wxGetApp().app_config; + wxWindow* parent = wxGetApp().mainframe; + const std::string option_key = "dont_warn_about_firmware_version_when_exporting_binary_gcode"; + + if (app_config->get(option_key) != "1") { + RichMessageDialog dialog(parent, _L("You are exporting binary G-code for a Prusa printer. Please, make sure that your printer " + "is running firmware version 5.1.0-alpha2 or later. Older firmwares are not able to handle binary G-codes."), + _L("Exporting binary G-code"), wxICON_WARNING | wxOK); + dialog.ShowCheckBox(_L("Don't show again")); + if (dialog.ShowModal() == wxID_OK && dialog.IsCheckBoxChecked()) + app_config->set(option_key, "1"); + } + } +} void Plater::export_gcode(bool prefer_removable) { if (p->model.objects.empty()) @@ -6916,16 +7221,25 @@ void Plater::export_gcode(bool prefer_removable) ); if (dlg.ShowModal() == wxID_OK) { output_path = into_path(dlg.GetPath()); - while (has_illegal_filename_characters(output_path.filename().string())) { - show_error(this, _L("The provided file name is not valid.") + "\n" + - _L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\""); - dlg.SetFilename(from_path(output_path.filename())); - if (dlg.ShowModal() == wxID_OK) - output_path = into_path(dlg.GetPath()); - else { - output_path.clear(); - break; + auto check_for_error = [this](const boost::filesystem::path& path, wxString& err_out) -> bool { + const std::string filename = path.filename().string(); + const std::string ext = boost::algorithm::to_lower_copy(path.extension().string()); + if (has_illegal_filename_characters(filename)) { + err_out = _L("The provided file name is not valid.") + "\n" + + _L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\""; + return true; } + err_out = check_binary_vs_ascii_gcode_extension(printer_technology(), ext, wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary")); + return !err_out.IsEmpty(); + }; + + wxString error_str; + if (check_for_error(output_path, error_str)) { + ErrorDialog(this, error_str, [this](const std::string& key) -> void { sidebar().jump_to_option(key); }).ShowModal(); + output_path.clear(); + } else { + alert_when_exporting_binary_gcode(wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary"), + wxGetApp().preset_bundle->printers.get_edited_preset().config.opt_string("printer_notes")); } } } @@ -7132,6 +7446,108 @@ void Plater::export_amf() } } +namespace { +std::string get_file_name(const std::string &file_path) +{ + size_t pos_last_delimiter = file_path.find_last_of("/\\"); + size_t pos_point = file_path.find_last_of('.'); + size_t offset = pos_last_delimiter + 1; + size_t count = pos_point - pos_last_delimiter - 1; + return file_path.substr(offset, count); +} +using SvgFile = EmbossShape::SvgFile; +using SvgFiles = std::vector; +std::string create_unique_3mf_filepath(const std::string &file, const SvgFiles svgs) +{ + // const std::string MODEL_FOLDER = "3D/"; // copy from file 3mf.cpp + std::string path_in_3mf = "3D/" + file + ".svg"; + size_t suffix_number = 0; + bool is_unique = false; + do{ + is_unique = true; + path_in_3mf = "3D/" + file + ((suffix_number++)? ("_" + std::to_string(suffix_number)) : "") + ".svg"; + for (SvgFile *svgfile : svgs) { + if (svgfile->path_in_3mf.empty()) + continue; + if (svgfile->path_in_3mf.compare(path_in_3mf) == 0) { + is_unique = false; + break; + } + } + } while (!is_unique); + return path_in_3mf; +} + +bool set_by_local_path(SvgFile &svg, const SvgFiles& svgs) +{ + // Try to find already used svg file + for (SvgFile *svg_ : svgs) { + if (svg_->path_in_3mf.empty()) + continue; + if (svg.path.compare(svg_->path) == 0) { + svg.path_in_3mf = svg_->path_in_3mf; + return true; + } + } + return false; +} + +/// +/// Function to secure private data before store to 3mf +/// +/// Data(also private) to clean before publishing +void publish(Model &model) { + + // SVG file publishing + bool exist_new = false; + SvgFiles svgfiles; + for (ModelObject *object: model.objects){ + for (ModelVolume *volume : object->volumes) { + if (!volume->emboss_shape.has_value()) + continue; + if (volume->text_configuration.has_value()) + continue; // text dosen't have svg path + + assert(volume->emboss_shape->svg_file.has_value()); + if (!volume->emboss_shape->svg_file.has_value()) + continue; + + SvgFile* svg = &(*volume->emboss_shape->svg_file); + if (svg->path_in_3mf.empty()) + exist_new = true; + svgfiles.push_back(svg); + } + } + + if (exist_new){ + MessageDialog dialog(nullptr, + _L("Are you sure you want to store original SVGs with their local paths into the 3MF file?\n" + "If you hit 'NO', all SVGs in the project will not be editable any more."), + _L("Private protection"), wxYES_NO | wxICON_QUESTION); + if (dialog.ShowModal() == wxID_NO){ + for (ModelObject *object : model.objects) + for (ModelVolume *volume : object->volumes) + if (volume->emboss_shape.has_value()) + volume->emboss_shape.reset(); + } + } + + for (SvgFile* svgfile : svgfiles){ + if (!svgfile->path_in_3mf.empty()) + continue; // already suggested path (previous save) + + // create unique name for svgs, when local path differ + std::string filename = "unknown"; + if (!svgfile->path.empty()) { + if (set_by_local_path(*svgfile, svgfiles)) + continue; + // check whether original filename is already in: + filename = get_file_name(svgfile->path); + } + svgfile->path_in_3mf = create_unique_3mf_filepath(filename, svgfiles); + } +} +} bool Plater::export_3mf(const boost::filesystem::path& output_path) { if (p->model.objects.empty()) { @@ -7152,6 +7568,9 @@ bool Plater::export_3mf(const boost::filesystem::path& output_path) if (!path.Lower().EndsWith(".3mf")) return false; + // take care about private data stored into .3mf + // modify model + publish(p->model); DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config_secure(); const std::string path_u8 = into_u8(path); wxBusyCursor wait; @@ -7366,13 +7785,25 @@ void Plater::send_gcode() PrintHostSendDialog dlg(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, storage_paths, storage_names); if (dlg.ShowModal() == wxID_OK) { + { + const std::string ext = boost::algorithm::to_lower_copy(dlg.filename().extension().string()); + const bool binary_output = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary"); + const wxString error_str = check_binary_vs_ascii_gcode_extension(printer_technology(), ext, binary_output); + if (! error_str.IsEmpty()) { + ErrorDialog(this, error_str, t_kill_focus([](const std::string& key) -> void { wxGetApp().sidebar().jump_to_option(key); })).ShowModal(); + return; + } + } + + alert_when_exporting_binary_gcode(wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary"), + wxGetApp().preset_bundle->printers.get_edited_preset().config.opt_string("printer_notes")); upload_job.upload_data.upload_path = dlg.filename(); upload_job.upload_data.post_action = dlg.post_action(); upload_job.upload_data.group = dlg.group(); upload_job.upload_data.storage = dlg.storage(); - // Show "Is printer clean" dialog for QIDIConnect - Upload and print. - if (std::string(upload_job.printhost->get_name()) == "QIDIConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + // Show "Is printer clean" dialog for PrusaConnect - Upload and print. + if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); if (dlg.ShowModal() != wxID_OK) return; @@ -7896,28 +8327,41 @@ void Plater::clear_before_change_mesh(int obj_idx, const std::string ¬ificati void Plater::changed_mesh(int obj_idx) { ModelObject* mo = model().objects[obj_idx]; + if (p->printer_technology == ptSLA) sla::reproject_points_and_holes(mo); update(); p->object_list_changed(); p->schedule_background_process(); } +void Plater::changed_object(ModelObject &object){ + assert(object.get_model() == &p->model); // is object from same model? + object.invalidate_bounding_box(); + // recenter and re - align to Z = 0 + object.ensure_on_bed(p->printer_technology != ptSLA); + + if (p->printer_technology == ptSLA) { + // Update the SLAPrint from the current Model, so that the reload_scene() + // pulls the correct data, update the 3D scene. + p->update_restart_background_process(true, false); + } else + p->view3D->reload_scene(false); + + // update print + p->schedule_background_process(); + + // Check outside bed + get_current_canvas3D()->requires_check_outside_state(); +} + void Plater::changed_object(int obj_idx) { if (obj_idx < 0) return; - // recenter and re - align to Z = 0 - p->model.objects[obj_idx]->ensure_on_bed(p->printer_technology != ptSLA); - if (this->p->printer_technology == ptSLA) { - // Update the SLAPrint from the current Model, so that the reload_scene() - // pulls the correct data, update the 3D scene. - this->p->update_restart_background_process(true, false); - } - else - p->view3D->reload_scene(false); - - // update print - this->p->schedule_background_process(); + ModelObject *object = p->model.objects[obj_idx]; + if (object == nullptr) + return; + changed_object(*object); } void Plater::changed_objects(const std::vector& object_idxs) @@ -8161,7 +8605,7 @@ bool Plater::can_delete_all() const { return p->can_delete_all(); } bool Plater::can_increase_instances() const { return p->can_increase_instances(); } bool Plater::can_decrease_instances(int obj_idx/* = -1*/) const { return p->can_decrease_instances(obj_idx); } bool Plater::can_set_instance_to_object() const { return p->can_set_instance_to_object(); } -bool Plater::can_fix_through_netfabb() const { return p->can_fix_through_netfabb(); } +bool Plater::can_fix_through_winsdk() const { return p->can_fix_through_winsdk(); } bool Plater::can_simplify() const { return p->can_simplify(); } bool Plater::can_split_to_objects() const { return p->can_split_to_objects(); } bool Plater::can_split_to_volumes() const { return p->can_split_to_volumes(); } @@ -8261,6 +8705,7 @@ void Plater::bring_instance_forward() wxMenu* Plater::object_menu() { return p->menus.object_menu(); } wxMenu* Plater::part_menu() { return p->menus.part_menu(); } wxMenu* Plater::text_part_menu() { return p->menus.text_part_menu(); } +wxMenu* Plater::svg_part_menu() { return p->menus.svg_part_menu(); } wxMenu* Plater::sla_object_menu() { return p->menus.sla_object_menu(); } wxMenu* Plater::default_menu() { return p->menus.default_menu(); } wxMenu* Plater::instance_menu() { return p->menus.instance_menu(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 704a550..ae751ee 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -19,7 +19,7 @@ #include "libslic3r/GCode.hpp" -#include "libslic3r/GCodeWriter.hpp" +#include "libslic3r/Gcode/GCodeWriter.hpp" #include "libslic3r/PrintConfig.hpp" class wxButton; @@ -32,8 +32,6 @@ namespace Slic3r { class BuildVolume; class Model; class ModelObject; -enum class ModelObjectCutAttribute : int; -using ModelObjectCutAttributes = enum_bitmask; class ModelInstance; class Print; class SLAPrint; @@ -58,7 +56,6 @@ class ObjectSettings; class ObjectLayers; class ObjectList; class GLCanvas3D; -class GLGizmoEmboss; class Mouse3DController; class NotificationManager; struct Camera; @@ -94,6 +91,8 @@ public: void search(); void jump_to_option(size_t selected); void jump_to_option(const std::string& opt_key, Preset::Type type, const std::wstring& category); + // jump to option which is represented by composite key : "opt_key;tab_name" + void jump_to_option(const std::string& composite_key); ObjectManipulation* obj_manipul(); ObjectList* obj_list(); @@ -195,6 +194,8 @@ public: void load_gcode(); void load_gcode(const wxString& filename); void reload_gcode_from_disk(); + void convert_gcode_to_ascii(); + void convert_gcode_to_binary(); void refresh_print(); std::vector load_files(const std::vector& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false); @@ -202,7 +203,7 @@ public: std::vector load_files(const std::vector& input_files, bool load_model = true, bool load_config = true, bool imperial_units = false); // to be called on drag and drop bool load_files(const wxArrayString& filenames, bool delete_after_load = false); - void check_selected_presets_visibility(PrinterTechnology loaded_printer_technology); + void notify_about_installed_presets(); bool preview_zip_archive(const boost::filesystem::path& input_file); @@ -305,6 +306,7 @@ public: void clear_before_change_mesh(int obj_idx, const std::string ¬ification_msg); void changed_mesh(int obj_idx); + void changed_object(ModelObject &object); void changed_object(int obj_idx); void changed_objects(const std::vector& object_idxs); void schedule_background_process(bool schedule = true); @@ -382,7 +384,7 @@ public: bool can_increase_instances() const; bool can_decrease_instances(int obj_idx = -1) const; bool can_set_instance_to_object() const; - bool can_fix_through_netfabb() const; + bool can_fix_through_winsdk() const; bool can_simplify() const; bool can_split_to_objects() const; bool can_split_to_volumes() const; @@ -500,6 +502,7 @@ public: wxMenu* object_menu(); wxMenu* part_menu(); wxMenu* text_part_menu(); + wxMenu* svg_part_menu(); wxMenu* sla_object_menu(); wxMenu* default_menu(); wxMenu* instance_menu(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 8af4976..3bce1fa 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -13,6 +13,7 @@ #include "GLCanvas3D.hpp" #include "ConfigWizard.hpp" +#include "Widgets/SpinInput.hpp" #include #ifdef WIN32 @@ -56,13 +57,33 @@ namespace GUI { PreferencesDialog::PreferencesDialog(wxWindow* parent) : DPIDialog(parent, wxID_ANY, _L("Preferences"), wxDefaultPosition, - wxDefaultSize, wxDEFAULT_DIALOG_STYLE) + wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { #ifdef __WXOSX__ isOSX = true; #endif build(); + wxSize sz = GetSize(); + bool is_scrollbar_shown = false; + + const size_t pages_cnt = tabs->GetPageCount(); + for (size_t tab_id = 0; tab_id < pages_cnt; tab_id++) { + wxSizer* tab_sizer = tabs->GetPage(tab_id)->GetSizer(); + wxScrolledWindow* scrolled = static_cast(tab_sizer->GetItem(size_t(0))->GetWindow()); + scrolled->SetScrollRate(0, 5); + + is_scrollbar_shown |= scrolled->GetScrollLines(wxVERTICAL) > 0; + } + + if (is_scrollbar_shown) + sz.x += 2*em_unit(); +#ifdef __WXGTK__ + // To correct Layout of wxScrolledWindow we need at least small change of size + else + sz.x += 1; +#endif + SetSize(sz); m_highlighter.set_timer_owner(this, 0); } @@ -106,6 +127,11 @@ void PreferencesDialog::show(const std::string& highlight_opt_key /*= std::strin for (const std::string& opt_key : {"suppress_hyperlinks", "downloader_url_registered"}) m_optgroup_other->set_value(opt_key, app_config->get_bool(opt_key)); + for (const std::string& opt_key : { "default_action_on_close_application" + ,"default_action_on_new_project" + ,"default_action_on_select_preset" }) + m_optgroup_general->set_value(opt_key, app_config->get(opt_key) == "none"); + m_optgroup_general->set_value("default_action_on_dirty_project", app_config->get("default_action_on_dirty_project").empty()); // update colors for color pickers of the labels update_color(m_sys_colour, wxGetApp().get_label_clr_sys()); update_color(m_mod_colour, wxGetApp().get_label_clr_modified()); @@ -126,11 +152,17 @@ static std::shared_ptrcreate_options_tab(const wxString& tit tabs->AddPage(tab, _(title)); tab->SetFont(wxGetApp().normal_font()); + auto scrolled = new wxScrolledWindow(tab); + + // Sizer in the scrolled area + auto* scrolled_sizer = new wxBoxSizer(wxVERTICAL); + scrolled->SetSizer(scrolled_sizer); wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); + sizer->Add(scrolled, 1, wxEXPAND); sizer->SetSizeHints(tab); tab->SetSizer(sizer); - std::shared_ptr optgroup = std::make_shared(tab); + std::shared_ptr optgroup = std::make_shared(scrolled); optgroup->label_width = 40; optgroup->set_config_category_and_type(title, int(Preset::TYPE_PREFERENCES)); return optgroup; @@ -143,6 +175,7 @@ static void activate_options_tab(std::shared_ptr optgroup) wxBoxSizer* sizer = static_cast(static_cast(optgroup->parent())->GetSizer()); sizer->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10); + optgroup->parent()->Layout(); // apply sercher wxGetApp().sidebar().get_searcher().append_preferences_options(optgroup->get_lines()); } @@ -204,7 +237,7 @@ void PreferencesDialog::build() #ifdef _WIN32 wxGetApp().UpdateDarkUI(this); #else - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); + //SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); #endif const wxFont& font = wxGetApp().normal_font(); SetFont(font); @@ -215,7 +248,12 @@ void PreferencesDialog::build() tabs = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME | wxNB_DEFAULT); #else tabs = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL |wxNB_NOPAGETHEME | wxNB_DEFAULT ); - tabs->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); +#ifdef __linux__ + tabs->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [this](wxBookCtrlEvent& e) { + e.Skip(); + CallAfter([this]() { tabs->GetCurrentPage()->Layout(); }); + }); +#endif #endif // Add "General" tab @@ -280,10 +318,6 @@ void PreferencesDialog::build() L("If enabled, sets QIDISlicer as default application to open .stl files."), app_config->get_bool("associate_stl")); - append_bool_option(m_optgroup_general, "associate_step", - L("Associate .stp files to QIDISlicer"), - L("If enabled, sets QIDISlicer as default application to open .stp files."), - app_config->get_bool("associate_step")); #endif // _WIN32 m_optgroup_general->append_separator(); @@ -364,6 +398,10 @@ void PreferencesDialog::build() L("Associate .gcode files to QIDISlicer G-code Viewer"), L("If enabled, sets QIDISlicer G-code Viewer as default application to open .gcode files."), app_config->get_bool("associate_gcode")); + append_bool_option(m_optgroup_general, "associate_bgcode", + L("Associate .bgcode files to PrusaSlicer G-code Viewer"), + L("If enabled, sets PrusaSlicer G-code Viewer as default application to open .bgcode files."), + app_config->get_bool("associate_bgcode")); } #endif // _WIN32 @@ -513,13 +551,20 @@ void PreferencesDialog::build() #ifdef _MSW_DARK_MODE append_bool_option(m_optgroup_gui, "tabs_as_menu", - L("Set settings tabs as menu items (experimental)"), + L("Set settings tabs as menu items"), L("If enabled, Settings Tabs will be placed as menu items. If disabled, old UI will be used."), app_config->get_bool("tabs_as_menu")); #endif m_optgroup_gui->append_separator(); +/* + append_bool_option(m_optgroup_gui, "suppress_round_corners", + L("Suppress round corners for controls (experimental)"), + L("If enabled, Settings Tabs will be placed as menu items. If disabled, old UI will be used."), + app_config->get("suppress_round_corners") == "1"); + m_optgroup_gui->append_separator(); +*/ append_bool_option(m_optgroup_gui, "show_hints", L("Show \"Tip of the day\" notification after start"), L("If enabled, useful hints are displayed at startup."), @@ -586,7 +631,7 @@ void PreferencesDialog::build() activate_options_tab(m_optgroup_other); create_downloader_path_sizer(); -// create_settings_font_widget(); + create_settings_font_widget(); #if ENABLE_ENVIRONMENT_MAP // Add "Render" tab @@ -606,10 +651,11 @@ void PreferencesDialog::build() activate_options_tab(m_optgroup_render); #endif // ENABLE_ENVIRONMENT_MAP + } #ifdef _WIN32 // Add "Dark Mode" tab - m_optgroup_dark_mode = create_options_tab(_L("Dark mode (experimental)"), tabs); + m_optgroup_dark_mode = create_options_tab(_L("Dark mode"), tabs); m_optgroup_dark_mode->m_on_change = [this](t_config_option_key opt_key, boost::any value) { if (auto it = m_values.find(opt_key); it != m_values.end()) { m_values.erase(it); // we shouldn't change value, if some of those parameters were selected, and then deselected @@ -635,7 +681,6 @@ void PreferencesDialog::build() activate_options_tab(m_optgroup_dark_mode); #endif //_WIN32 - } // update alignment of the controls for all tabs update_ctrls_alignment(); @@ -644,6 +689,8 @@ void PreferencesDialog::build() sizer->Add(tabs, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5); auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); this->Bind(wxEVT_BUTTON, &PreferencesDialog::accept, this, wxID_OK); this->Bind(wxEVT_BUTTON, &PreferencesDialog::revert, this, wxID_CANCEL); @@ -699,7 +746,7 @@ void PreferencesDialog::accept(wxEvent&) #endif // __linux__ } - std::vector options_to_recreate_GUI = { "no_defaults", "tabs_as_menu", "sys_menu_enabled", "font_size" }; + std::vector options_to_recreate_GUI = { "no_defaults", "tabs_as_menu", "sys_menu_enabled", "font_pt_size", "suppress_round_corners" }; for (const std::string& option : options_to_recreate_GUI) { if (m_values.find(option) != m_values.end()) { @@ -880,7 +927,7 @@ void PreferencesDialog::refresh_og(std::shared_ptr og) { og->parent()->Layout(); tabs->Layout(); - this->layout(); +// this->layout(); } void PreferencesDialog::create_icon_size_slider() @@ -1058,24 +1105,29 @@ void PreferencesDialog::create_settings_font_widget() wxStaticBox* stb = new wxStaticBox(parent, wxID_ANY, _(title)); if (!wxOSX) stb->SetBackgroundStyle(wxBG_STYLE_PAINT); - const std::string opt_key = "font_size"; + const std::string opt_key = "font_pt_size"; m_blinkers[opt_key] = new BlinkingBitmap(parent); wxSizer* stb_sizer = new wxStaticBoxSizer(stb, wxHORIZONTAL); wxStaticText* font_example = new wxStaticText(parent, wxID_ANY, "Application text"); int val = wxGetApp().normal_font().GetPointSize(); - wxSpinCtrl* size_sc = new wxSpinCtrl(parent, wxID_ANY, format_wxstr("%1%", val), wxDefaultPosition, wxSize(15*em_unit(), -1), wxTE_PROCESS_ENTER | wxSP_ARROW_KEYS + SpinInput* size_sc = new SpinInput(parent, format_wxstr("%1%", val), "", wxDefaultPosition, wxSize(15 * em_unit(), -1), wxTE_PROCESS_ENTER | wxSP_ARROW_KEYS #ifdef _WIN32 | wxBORDER_SIMPLE #endif - , 8, 20); + , 8, wxGetApp().get_max_font_pt_size()); wxGetApp().UpdateDarkUI(size_sc); - auto apply_font = [this, font_example, opt_key](const int val, const wxFont& font) { + auto apply_font = [this, font_example, opt_key, stb_sizer](const int val, const wxFont& font) { font_example->SetFont(font); m_values[opt_key] = format("%1%", val); + stb_sizer->Layout(); +#ifdef __linux__ + CallAfter([this]() { refresh_og(m_optgroup_other); }); +#else refresh_og(m_optgroup_other); +#endif }; auto change_value = [size_sc, apply_font](wxCommandEvent& evt) { diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 72337d2..c016802 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -435,6 +435,7 @@ void PresetComboBox::update_from_bundle() void PresetComboBox::msw_rescale() { m_em_unit = em_unit(this); + ::ComboBox::Rescale(); } void PresetComboBox::sys_color_changed() @@ -788,7 +789,7 @@ void PlaterPresetComboBox::show_edit_menu() [this](wxCommandEvent&) { this->change_extruder_color(); }, "funnel", menu, []() { return true; }, wxGetApp().plater()); #endif //__linux__ append_menu_item(menu, wxID_ANY, _L("Show/Hide template presets"), "", - [this](wxCommandEvent&) { wxGetApp().open_preferences("no_templates", "General"); }, "spool", menu, []() { return true; }, wxGetApp().plater()); + [](wxCommandEvent&) { wxGetApp().open_preferences("no_templates", "General"); }, "spool", menu, []() { return true; }, wxGetApp().plater()); wxGetApp().plater()->PopupMenu(menu); return; diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index b588f98..605fb9a 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -21,6 +21,7 @@ #include "GUI.hpp" #include "GUI_App.hpp" +#include "Plater.hpp" #include "MsgDialog.hpp" #include "I18N.hpp" #include "MainFrame.hpp" @@ -103,8 +104,7 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, PrintHostPostUplo auto validate_path = [this](const wxString &path) -> bool { if (! path.Lower().EndsWith(m_valid_suffix.Lower())) { MessageDialog msg_wingow(this, wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), m_valid_suffix), wxString(SLIC3R_APP_NAME), wxYES | wxNO); - if (msg_wingow.ShowModal() == wxID_NO) - return false; + return msg_wingow.ShowModal() == wxID_YES; } return true; }; diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp index dead18d..0d3737b 100644 --- a/src/slic3r/GUI/RemovableDriveManager.cpp +++ b/src/slic3r/GUI/RemovableDriveManager.cpp @@ -40,6 +40,7 @@ namespace GUI { wxDEFINE_EVENT(EVT_REMOVABLE_DRIVE_EJECTED, RemovableDriveEjectEvent); wxDEFINE_EVENT(EVT_REMOVABLE_DRIVES_CHANGED, RemovableDrivesChangedEvent); +wxDEFINE_EVENT(EVT_REMOVABLE_DRIVE_ADDED, wxCommandEvent); #if _WIN32 std::vector RemovableDriveManager::search_for_removable_drives() const @@ -1032,11 +1033,26 @@ void RemovableDriveManager::update() std::scoped_lock lock(m_drives_mutex); std::sort(current_drives.begin(), current_drives.end()); if (current_drives != m_current_drives) { + // event for writing / ejecting functions assert(m_callback_evt_handler); if (m_callback_evt_handler) wxPostEvent(m_callback_evt_handler, RemovableDrivesChangedEvent(EVT_REMOVABLE_DRIVES_CHANGED)); + // event for printer config file + std::vector new_drives; + std::set_difference(current_drives.begin(), current_drives.end(), m_current_drives.begin(), m_current_drives.end(), + std::inserter(new_drives, new_drives.begin())); + + for (const DriveData& data : new_drives) { + if (data.path.empty()) + continue; + wxCommandEvent* evt = new wxCommandEvent(EVT_REMOVABLE_DRIVE_ADDED); + evt->SetString(boost::nowide::widen(data.path)); + evt->SetInt((int)m_first_update); + m_callback_evt_handler->QueueEvent(evt); + } } m_current_drives = std::move(current_drives); + m_first_update = false; } else { // Acquiring the m_iniside_update lock failed, therefore another update is running. // Just block until the other instance of update() finishes. @@ -1091,4 +1107,11 @@ void RemovableDriveManager::eject_thread_finish() } #endif // __APPLE__ +std::vector RemovableDriveManager::get_drive_list() +{ + { + std::lock_guard guard(m_drives_mutex); + return m_current_drives; + } +} }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/RemovableDriveManager.hpp b/src/slic3r/GUI/RemovableDriveManager.hpp index 4ea25ea..5482f28 100644 --- a/src/slic3r/GUI/RemovableDriveManager.hpp +++ b/src/slic3r/GUI/RemovableDriveManager.hpp @@ -38,6 +38,7 @@ wxDECLARE_EVENT(EVT_REMOVABLE_DRIVE_EJECTED, RemovableDriveEjectEvent); using RemovableDrivesChangedEvent = SimpleEvent; wxDECLARE_EVENT(EVT_REMOVABLE_DRIVES_CHANGED, RemovableDrivesChangedEvent); +wxDECLARE_EVENT(EVT_REMOVABLE_DRIVE_ADDED, wxCommandEvent); #if __APPLE__ // Callbacks on device plug / unplug work reliably on OSX. #define REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS @@ -89,11 +90,14 @@ public: void volumes_changed(); #endif // _WIN32 + // returns copy of m_current_drives (protected by mutex) + std::vector get_drive_list(); private: bool m_initialized { false }; wxEvtHandler* m_callback_evt_handler { nullptr }; + bool m_first_update{ true }; #ifndef REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS // Worker thread, worker thread synchronization and callbacks to the UI thread. void thread_proc(); diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index d63a46d..d2e9cba 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -483,7 +483,11 @@ SearchDialog::SearchDialog(OptionsSearcher* searcher) searcher(searcher) { SetFont(GUI::wxGetApp().normal_font()); +#if _WIN32 GUI::wxGetApp().UpdateDarkUI(this); +#elif __WXGTK__ + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); +#endif default_string = _L("Enter a search term"); int border = 10; @@ -521,9 +525,9 @@ SearchDialog::SearchDialog(OptionsSearcher* searcher) wxBoxSizer* check_sizer = new wxBoxSizer(wxHORIZONTAL); - check_category = new wxCheckBox(this, wxID_ANY, _L("Category")); + check_category = new ::CheckBox(this, _L("Category")); if (GUI::wxGetApp().is_localized()) - check_english = new wxCheckBox(this, wxID_ANY, _L("Search in English")); + check_english = new ::CheckBox(this, _L("Search in English")); wxStdDialogButtonSizer* cancel_btn = this->CreateStdDialogButtonSizer(wxCANCEL); GUI::wxGetApp().UpdateDarkUI(static_cast(this->FindWindowById(wxID_CANCEL, this))); @@ -571,6 +575,11 @@ SearchDialog::SearchDialog(OptionsSearcher* searcher) topSizer->SetSizeHints(this); } +SearchDialog::~SearchDialog() +{ + if (search_list_model) + search_list_model->DecRef(); +} void SearchDialog::Popup(wxPoint position /*= wxDefaultPosition*/) { const std::string& line = searcher->search_string(); diff --git a/src/slic3r/GUI/Search.hpp b/src/slic3r/GUI/Search.hpp index e2fab87..8081ab8 100644 --- a/src/slic3r/GUI/Search.hpp +++ b/src/slic3r/GUI/Search.hpp @@ -20,6 +20,9 @@ #include "OptionsGroup.hpp" #include "libslic3r/Preset.hpp" +#include "Widgets/CheckBox.hpp" + +class CheckBox; namespace Slic3r { @@ -158,8 +161,8 @@ class SearchDialog : public GUI::DPIDialog wxTextCtrl* search_line { nullptr }; wxDataViewCtrl* search_list { nullptr }; SearchListModel* search_list_model { nullptr }; - wxCheckBox* check_category { nullptr }; - wxCheckBox* check_english { nullptr }; + CheckBox* check_category { nullptr }; + CheckBox* check_english { nullptr }; OptionsSearcher* searcher { nullptr }; @@ -178,7 +181,7 @@ class SearchDialog : public GUI::DPIDialog public: SearchDialog(OptionsSearcher* searcher); - ~SearchDialog() {} + ~SearchDialog(); void Popup(wxPoint position = wxDefaultPosition); void ProcessSelection(wxDataViewItem selection); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index f1cc437..ff22763 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -25,6 +25,10 @@ #include #include +#include +#include +#include + //B18 static const Slic3r::ColorRGBA UNIFORM_SCALE_COLOR = Slic3r::ColorRGBA::WHITE(); static const Slic3r::ColorRGBA SOLID_PLANE_COLOR = Slic3r::ColorRGBA::WHITE(); @@ -903,6 +907,40 @@ BoundingBoxf Selection::get_screen_space_bounding_box() return ss_box; } +const std::pair Selection::get_bounding_sphere() const +{ + if (!m_bounding_sphere.has_value()) { + std::optional>* sphere = const_cast>*>(&m_bounding_sphere); + *sphere = { Vec3d::Zero(), 0.0 }; + + using K = CGAL::Simple_cartesian; + using Traits = CGAL::Min_sphere_of_points_d_traits_3; + using Min_sphere = CGAL::Min_sphere_of_spheres_d; + using Point = K::Point_3; + + std::vector points; + if (m_valid) { + for (unsigned int i : m_list) { + const GLVolume& volume = *(*m_volumes)[i]; + const TriangleMesh* hull = volume.convex_hull(); + const indexed_triangle_set& its = (hull != nullptr) ? + hull->its : m_model->objects[volume.object_idx()]->volumes[volume.volume_idx()]->mesh().its; + const Transform3d& matrix = volume.world_matrix(); + for (const Vec3f& v : its.vertices) { + const Vec3d vv = matrix * v.cast(); + points.push_back(Point(vv.x(), vv.y(), vv.z())); + } + } + + Min_sphere ms(points.begin(), points.end()); + const float* center_x = ms.center_cartesian_begin(); + (*sphere)->first = { *center_x, *(center_x + 1), *(center_x + 2) }; + (*sphere)->second = ms.radius(); + } + } + + return *m_bounding_sphere; +} void Selection::setup_cache() { if (!m_valid) @@ -968,6 +1006,7 @@ void Selection::rotate(const Vec3d& rotation, TransformationType transformation_ assert(transformation_type.relative() || (transformation_type.absolute() && transformation_type.local())); + bool requires_general_synchronization = false; for (unsigned int i : m_list) { Transform3d rotation_matrix = Geometry::rotation_transform(rotation); GLVolume& v = *(*m_volumes)[i]; @@ -990,15 +1029,28 @@ void Selection::rotate(const Vec3d& rotation, TransformationType transformation_ rotation_matrix = inst_matrix_no_offset.inverse() * inst_rotation_matrix * rotation_matrix * inst_rotation_matrix.inverse() * inst_matrix_no_offset; // rotate around selection center - const Vec3d inst_pivot = inst_trafo.get_matrix_no_offset().inverse() * (m_cache.dragging_center - inst_trafo.get_offset()); + const Vec3d inst_pivot = inst_trafo.get_matrix_no_offset().inverse() * (m_cache.rotation_pivot - inst_trafo.get_offset()); rotation_matrix = Geometry::translation_transform(inst_pivot) * rotation_matrix * Geometry::translation_transform(-inst_pivot); + // Detects if the rotation is equivalent to a world rotation around the Z axis + // If not, force for a full synchronization of unselected instances + if (!requires_general_synchronization) { + const Geometry::Transformation& vol_trafo = volume_data.get_volume_transform(); + const Transform3d old_world_rotation_matrix = (inst_trafo * vol_trafo).get_rotation_matrix(); + const Transform3d new_world_rotation_matrix = (inst_trafo * Geometry::Transformation(rotation_matrix) * vol_trafo).get_rotation_matrix(); + if (std::abs((old_world_rotation_matrix * Vec3d::UnitX()).z() - (new_world_rotation_matrix * Vec3d::UnitX()).z()) > EPSILON) + requires_general_synchronization = true; + else if (std::abs((old_world_rotation_matrix * Vec3d::UnitY()).z() - (new_world_rotation_matrix * Vec3d::UnitY()).z()) > EPSILON) + requires_general_synchronization = true; + else if (std::abs((old_world_rotation_matrix * Vec3d::UnitZ()).z() - (new_world_rotation_matrix * Vec3d::UnitZ()).z()) > EPSILON) + requires_general_synchronization = true; + } } - transform_instance_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.dragging_center); + transform_instance_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.rotation_pivot); } else { if (!is_single_volume_or_modifier()) { assert(transformation_type.world()); - transform_volume_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.dragging_center); + transform_volume_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.rotation_pivot); } else { if (transformation_type.instance()) { @@ -1024,7 +1076,7 @@ void Selection::rotate(const Vec3d& rotation, TransformationType transformation_ vol_rotation_matrix.inverse() * inst_scale_matrix * vol_matrix_no_offset; } } - transform_volume_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.dragging_center); + transform_volume_relative(v, volume_data, transformation_type, rotation_matrix, m_cache.rotation_pivot); } } } @@ -1033,7 +1085,11 @@ void Selection::rotate(const Vec3d& rotation, TransformationType transformation_ if (m_mode == Instance) { int rot_axis_max = 0; rotation.cwiseAbs().maxCoeff(&rot_axis_max); - synchronize_unselected_instances((rot_axis_max == 2) ? SyncRotationType::NONE : SyncRotationType::GENERAL); + const SyncRotationType type = (transformation_type.instance() && requires_general_synchronization) || + (!transformation_type.instance() && rot_axis_max != 2) || + rotation.isApprox(Vec3d::Zero()) ? + SyncRotationType::GENERAL : SyncRotationType::NONE; + synchronize_unselected_instances(type); } else if (m_mode == Volume) synchronize_unselected_volumes(); @@ -1547,10 +1603,7 @@ void Selection::erase() ensure_not_below_bed(); } - GLCanvas3D* canvas = wxGetApp().plater()->canvas3D(); - canvas->set_sequential_clearance_as_evaluating(); - canvas->set_as_dirty(); - canvas->request_extra_frame(); + wxGetApp().plater()->canvas3D()->set_sequential_clearance_as_evaluating(); } void Selection::render(float scale_factor) @@ -2036,6 +2089,7 @@ void Selection::set_caches() m_cache.sinking_volumes.push_back(i); } m_cache.dragging_center = get_bounding_box().center(); + m_cache.rotation_pivot = get_bounding_sphere().first; } void Selection::do_add_volume(unsigned int volume_idx) @@ -2989,5 +3043,29 @@ const GLVolume *get_selected_gl_volume(const Selection &selection) return selection.get_volume(volume_idx); } +ModelVolume *get_selected_volume(const ObjectID &volume_id, const Selection &selection) { + const Selection::IndicesList &volume_ids = selection.get_volume_idxs(); + const ModelObjectPtrs &model_objects = selection.get_model()->objects; + for (auto id : volume_ids) { + const GLVolume *selected_volume = selection.get_volume(id); + const GLVolume::CompositeID &cid = selected_volume->composite_id; + ModelObject *obj = model_objects[cid.object_id]; + ModelVolume *volume = obj->volumes[cid.volume_id]; + if (volume_id == volume->id()) + return volume; + } + return nullptr; +} + +ModelVolume *get_volume(const ObjectID &volume_id, const Selection &selection) { + const ModelObjectPtrs &objects = selection.get_model()->objects; + for (const ModelObject *object : objects) { + for (ModelVolume *volume : object->volumes) { + if (volume->id() == volume_id) + return volume; + } + } + return nullptr; +} } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 1e7bf11..606de7d 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -14,6 +14,7 @@ class Shader; class Model; class ModelObject; class ModelVolume; +class ObjectID; class GLVolume; class GLArrow; class GLCurvedArrow; @@ -110,6 +111,7 @@ private: ObjectIdxsToInstanceIdxsMap content; // List of ids of the volumes which are sinking when starting dragging std::vector sinking_volumes; + Vec3d rotation_pivot; }; // Volumes owned by GLCanvas3D. @@ -146,6 +148,7 @@ private: // and transform to place and orient it in world coordinates std::optional> m_bounding_box_in_current_reference_system; + std::optional> m_bounding_sphere; #if ENABLE_RENDER_SELECTION_CENTER GLModel m_vbo_sphere; #endif // ENABLE_RENDER_SELECTION_CENTER @@ -291,6 +294,8 @@ public: // Returns the screen space bounding box BoundingBoxf get_screen_space_bounding_box(); + // Returns the bounding sphere: first = center, second = radius + const std::pair get_bounding_sphere() const; void setup_cache(); void translate(const Vec3d& displacement, TransformationType transformation_type); @@ -356,6 +361,7 @@ private: m_full_unscaled_instance_bounding_box.reset(); m_full_scaled_instance_bounding_box.reset(); m_full_unscaled_instance_local_bounding_box.reset(); m_bounding_box_in_current_reference_system.reset(); + m_bounding_sphere.reset(); } void render_synchronized_volumes(); void render_bounding_box(const BoundingBoxf3& box, const Transform3d& trafo, const ColorRGB& color); @@ -395,6 +401,8 @@ private: ModelVolume *get_selected_volume(const Selection &selection); const GLVolume *get_selected_gl_volume(const Selection &selection); +ModelVolume *get_selected_volume (const ObjectID &volume_id, const Selection &selection); +ModelVolume *get_volume (const ObjectID &volume_id, const Selection &selection); } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/SurfaceDrag.cpp b/src/slic3r/GUI/SurfaceDrag.cpp index c8ce171..c6adb28 100644 --- a/src/slic3r/GUI/SurfaceDrag.cpp +++ b/src/slic3r/GUI/SurfaceDrag.cpp @@ -1,12 +1,70 @@ #include "SurfaceDrag.hpp" -#include "libslic3r/Model.hpp" // ModelVolume -#include "GLCanvas3D.hpp" +#include // ModelVolume +#include + #include "slic3r/Utils/RaycastManager.hpp" -#include "slic3r/GUI/Camera.hpp" -#include "slic3r/GUI/CameraUtils.hpp" -#include "slic3r/GUI/I18N.hpp" -#include "libslic3r/Emboss.hpp" +#include "GLCanvas3D.hpp" +#include "Camera.hpp" +#include "CameraUtils.hpp" +#include "I18N.hpp" +#include "GUI_App.hpp" +#include "GUI_ObjectManipulation.hpp" + + +using namespace Slic3r; +using namespace Slic3r::GUI; + +namespace{ +// Distance of embossed volume from surface to be represented as distance surface +// Maximal distance is also enlarge by size of emboss depth +constexpr Slic3r::MinMax surface_distance_sq{1e-4, 10.}; // [in mm] + +/// +/// Extract position of mouse from mouse event +/// +/// Event +/// Position +Vec2d mouse_position(const wxMouseEvent &mouse_event); + +bool start_dragging(const Vec2d &mouse_pos, + const Camera &camera, + std::optional &surface_drag, + GLCanvas3D &canvas, + RaycastManager &raycast_manager, + const std::optional &up_limit); + +bool dragging(const Vec2d &mouse_pos, + const Camera &camera, + SurfaceDrag &surface_drag, // need to write whether exist hit + GLCanvas3D &canvas, + const RaycastManager &raycast_manager, + const std::optional &up_limit); + +Transform3d get_volume_transformation( + Transform3d world, // from volume + const Vec3d& world_dir, // wanted new direction + const Vec3d& world_position, // wanted new position + const std::optional& fix, // [optional] fix matrix + // Invers transformation of text volume instance + // Help convert world transformation to instance space + const Transform3d& instance_inv, + // initial rotation in Z axis + std::optional current_angle = {}, + const std::optional &up_limit = {}); + +// distinguish between transformation of volume inside object +// and object(single full instance with one volume) +bool is_embossed_object(const Selection &selection); + +/// +/// Get fix transformation for selected volume +/// Fix after store to 3mf +/// +/// Select only wanted volume +/// Pointer on fix transformation from ModelVolume when exists otherwise nullptr +const Transform3d *get_fix_transformation(const Selection &selection); +} namespace Slic3r::GUI { @@ -27,13 +85,14 @@ bool on_mouse_surface_drag(const wxMouseEvent &mouse_event, std::optional &surface_drag, GLCanvas3D &canvas, RaycastManager &raycast_manager, - std::optional up_limit) + const std::optional&up_limit) { // Fix when leave window during dragging // Fix when click right button if (surface_drag.has_value() && !mouse_event.Dragging()) { // write transformation from UI into model canvas.do_move(L("Move over surface")); + wxGetApp().obj_manipul()->set_dirty(); // allow moving with object again canvas.enable_moving(true); @@ -48,189 +107,16 @@ bool on_mouse_surface_drag(const wxMouseEvent &mouse_event, if (mouse_event.Moving()) return false; - // detect start text dragging - if (mouse_event.LeftDown()) { - // selected volume - GLVolume *gl_volume = get_selected_gl_volume(canvas); - if (gl_volume == nullptr) - return false; - - // is selected volume closest hovered? - const GLVolumePtrs &gl_volumes = canvas.get_volumes().volumes; - if (int hovered_idx = canvas.get_first_hover_volume_idx(); - hovered_idx < 0) - return false; - else if (auto hovered_idx_ = static_cast(hovered_idx); - hovered_idx_ >= gl_volumes.size() || - gl_volumes[hovered_idx_] != gl_volume) - return false; - - const ModelObjectPtrs &objects = canvas.get_model()->objects; - const ModelObject *object = get_model_object(*gl_volume, objects); - assert(object != nullptr); - if (object == nullptr) - return false; - - const ModelInstance *instance = get_model_instance(*gl_volume, *object); - const ModelVolume *volume = get_model_volume(*gl_volume, *object); - assert(instance != nullptr && volume != nullptr); - if (object == nullptr || instance == nullptr || volume == nullptr) - return false; - - // allowed drag&drop by canvas for object - if (volume->is_the_only_one_part()) - return false; - - const ModelVolumePtrs &volumes = object->volumes; - std::vector allowed_volumes_id; - if (volumes.size() > 1) { - allowed_volumes_id.reserve(volumes.size() - 1); - for (auto &v : volumes) { - // skip actual selected object - if (v->id() == volume->id()) - continue; - // drag only above part not modifiers or negative surface - if (!v->is_model_part()) - continue; - allowed_volumes_id.emplace_back(v->id().id); - } - } - RaycastManager::AllowVolumes condition(std::move(allowed_volumes_id)); - RaycastManager::Meshes meshes = create_meshes(canvas, condition); - // initialize raycasters - // INFO: It could slows down for big objects - // (may be move to thread and do not show drag until it finish) - raycast_manager.actualize(*instance, &condition, &meshes); - - // wxCoord == int --> wx/types.h - Vec2i mouse_coord(mouse_event.GetX(), mouse_event.GetY()); - Vec2d mouse_pos = mouse_coord.cast(); - - // world_matrix_fixed() without sla shift - Transform3d to_world = world_matrix_fixed(*gl_volume, objects); - - // zero point of volume in world coordinate system - Vec3d volume_center = to_world.translation(); - // screen coordinate of volume center - Vec2i coor = CameraUtils::project(camera, volume_center); - Vec2d mouse_offset = coor.cast() - mouse_pos; - Vec2d mouse_offset_without_sla_shift = mouse_offset; - if (double sla_shift = gl_volume->get_sla_shift_z(); !is_approx(sla_shift, 0.)) { - Transform3d to_world_without_sla_move = instance->get_matrix() * volume->get_matrix(); - if (volume->text_configuration.has_value() && volume->text_configuration->fix_3mf_tr.has_value()) - to_world_without_sla_move = to_world_without_sla_move * (*volume->text_configuration->fix_3mf_tr); - // zero point of volume in world coordinate system - volume_center = to_world_without_sla_move.translation(); - // screen coordinate of volume center - coor = CameraUtils::project(camera, volume_center); - mouse_offset_without_sla_shift = coor.cast() - mouse_pos; - } - - Transform3d volume_tr = gl_volume->get_volume_transformation().get_matrix(); - - if (volume->text_configuration.has_value()) { - const TextConfiguration &tc = *volume->text_configuration; - // fix baked transformation from .3mf store process - if (tc.fix_3mf_tr.has_value()) - volume_tr = volume_tr * tc.fix_3mf_tr->inverse(); - } - - Transform3d instance_tr = instance->get_matrix(); - Transform3d instance_tr_inv = instance_tr.inverse(); - Transform3d world_tr = instance_tr * volume_tr; - std::optional start_angle; - if (up_limit.has_value()) - start_angle = Emboss::calc_up(world_tr, *up_limit); - surface_drag = SurfaceDrag{mouse_offset, world_tr, instance_tr_inv, gl_volume, condition, start_angle, true, mouse_offset_without_sla_shift}; - - // disable moving with object by mouse - canvas.enable_moving(false); - canvas.enable_picking(false); - return true; - } + if (mouse_event.LeftDown()) + return start_dragging(mouse_position(mouse_event), camera, surface_drag, canvas, raycast_manager, up_limit); // Dragging starts out of window if (!surface_drag.has_value()) return false; - if (mouse_event.Dragging()) { - // wxCoord == int --> wx/types.h - Vec2i mouse_coord(mouse_event.GetX(), mouse_event.GetY()); - Vec2d mouse_pos = mouse_coord.cast(); - Vec2d offseted_mouse = mouse_pos + surface_drag->mouse_offset_without_sla_shift; + if (mouse_event.Dragging()) + return dragging(mouse_position(mouse_event), camera, *surface_drag, canvas, raycast_manager, up_limit); - std::optional hit = ray_from_camera( - raycast_manager, offseted_mouse, camera, &surface_drag->condition); - - surface_drag->exist_hit = hit.has_value(); - if (!hit.has_value()) { - // cross hair need redraw - canvas.set_as_dirty(); - return true; - } - - auto world_linear = surface_drag->world.linear(); - // Calculate offset: transformation to wanted position - { - // Reset skew of the text Z axis: - // Project the old Z axis into a new Z axis, which is perpendicular to the old XY plane. - Vec3d old_z = world_linear.col(2); - Vec3d new_z = world_linear.col(0).cross(world_linear.col(1)); - world_linear.col(2) = new_z * (old_z.dot(new_z) / new_z.squaredNorm()); - } - - Vec3d text_z_world = world_linear.col(2); // world_linear * Vec3d::UnitZ() - auto z_rotation = Eigen::Quaternion::FromTwoVectors(text_z_world, hit->normal); - Transform3d world_new = z_rotation * surface_drag->world; - auto world_new_linear = world_new.linear(); - - // Fix direction of up vector to zero initial rotation - if(up_limit.has_value()){ - Vec3d z_world = world_new_linear.col(2); - z_world.normalize(); - Vec3d wanted_up = Emboss::suggest_up(z_world, *up_limit); - - Vec3d y_world = world_new_linear.col(1); - auto y_rotation = Eigen::Quaternion::FromTwoVectors(y_world, wanted_up); - - world_new = y_rotation * world_new; - world_new_linear = world_new.linear(); - } - - // Edit position from right - Transform3d volume_new{Eigen::Translation(surface_drag->instance_inv * hit->position)}; - volume_new.linear() = surface_drag->instance_inv.linear() * world_new_linear; - - // Check that transformation matrix is valid transformation - assert(volume_new.matrix()(0, 0) == volume_new.matrix()(0, 0)); // Check valid transformation not a NAN - if (volume_new.matrix()(0, 0) != volume_new.matrix()(0, 0)) - return true; - - // Check that scale in world did not changed - assert(!calc_scale(world_linear, world_new_linear, Vec3d::UnitY()).has_value()); - assert(!calc_scale(world_linear, world_new_linear, Vec3d::UnitZ()).has_value()); - - const ModelVolume *volume = get_model_volume(*surface_drag->gl_volume, canvas.get_model()->objects); - if (volume != nullptr && volume->text_configuration.has_value()) { - const TextConfiguration &tc = *volume->text_configuration; - // fix baked transformation from .3mf store process - if (tc.fix_3mf_tr.has_value()) - volume_new = volume_new * (*tc.fix_3mf_tr); - - // apply move in Z direction and rotation by up vector - Emboss::apply_transformation(surface_drag->start_angle, tc.style.prop.distance, volume_new); - } - - // Update transformation for all instances - for (GLVolume *vol : canvas.get_volumes().volumes) { - if (vol->object_idx() != surface_drag->gl_volume->object_idx() || vol->volume_idx() != surface_drag->gl_volume->volume_idx()) - continue; - vol->set_volume_transformation(volume_new); - } - - canvas.set_as_dirty(); - return true; - } return false; } @@ -253,12 +139,11 @@ std::optional calc_surface_offset(const Selection &selection, RaycastMana auto cond = RaycastManager::SkipVolume(volume->id().id); raycast_manager.actualize(*instance, &cond); - Transform3d to_world = world_matrix_fixed(gl_volume, selection.get_model()->objects); - Vec3d point = to_world * Vec3d::Zero(); - Vec3d direction = to_world.linear() * (-Vec3d::UnitZ()); - + Transform3d to_world = world_matrix_fixed(gl_volume, objects); + Vec3d point = to_world.translation(); + Vec3d dir = -get_z_base(to_world); // ray in direction of text projection(from volume zero to z-dir) - std::optional hit_opt = raycast_manager.closest_hit(point, direction, &cond); + std::optional hit_opt = raycast_manager.closest_hit(point, dir, &cond); // Try to find closest point when no hit object in emboss direction if (!hit_opt.has_value()) { @@ -293,6 +178,81 @@ std::optional calc_surface_offset(const Selection &selection, RaycastMana return offset_volume; } +std::optional calc_distance(const GLVolume &gl_volume, RaycastManager &raycaster, GLCanvas3D &canvas) +{ + const ModelObject *object = get_model_object(gl_volume, canvas.get_model()->objects); + assert(object != nullptr); + if (object == nullptr) + return {}; + + const ModelInstance *instance = get_model_instance(gl_volume, *object); + const ModelVolume *volume = get_model_volume(gl_volume, *object); + assert(instance != nullptr && volume != nullptr); + if (object == nullptr || instance == nullptr || volume == nullptr) + return {}; + + if (volume->is_the_only_one_part()) + return {}; + + RaycastManager::AllowVolumes condition = create_condition(object->volumes, volume->id()); + RaycastManager::Meshes meshes = create_meshes(canvas, condition); + raycaster.actualize(*instance, &condition, &meshes); + return calc_distance(gl_volume, raycaster, &condition); +} + +std::optional calc_distance(const GLVolume &gl_volume, const RaycastManager &raycaster, const RaycastManager::ISkip *condition) +{ + Transform3d w = gl_volume.world_matrix(); + Vec3d p = w.translation(); + Vec3d dir = -get_z_base(w); + auto hit_opt = raycaster.closest_hit(p, dir, condition); + if (!hit_opt.has_value()) + return {}; + + const RaycastManager::Hit &hit = *hit_opt; + // NOTE: hit.squared_distance is in volume space not world + + const Transform3d &tr = raycaster.get_transformation(hit.tr_key); + Vec3d hit_world = tr * hit.position; + Vec3d p_to_hit = hit_world - p; + double distance_sq = p_to_hit.squaredNorm(); + + // too small distance is calculated as zero distance + if (distance_sq < ::surface_distance_sq.min) + return {}; + + // check maximal distance + const BoundingBoxf3& bb = gl_volume.bounding_box(); + double max_squared_distance = std::max(std::pow(2 * bb.size().z(), 2), ::surface_distance_sq.max); + if (distance_sq > max_squared_distance) + return {}; + + // calculate sign + float sign = (p_to_hit.dot(dir) > 0)? 1.f : -1.f; + + // distiguish sign + return sign * static_cast(sqrt(distance_sq)); +} + +std::optional calc_angle(const Selection &selection) +{ + const GLVolume *gl_volume = selection.get_first_volume(); + assert(gl_volume != nullptr); + if (gl_volume == nullptr) + return {}; + + Transform3d to_world = gl_volume->world_matrix(); + const ModelVolume *volume = get_model_volume(*gl_volume, selection.get_model()->objects); + assert(volume != nullptr); + assert(volume->emboss_shape.has_value()); + if (volume == nullptr || !volume->emboss_shape.has_value() || !volume->emboss_shape->fix_3mf_tr) + return Emboss::calc_up(to_world, UP_LIMIT); + + // exist fix matrix and must be applied before calculation + to_world = to_world * volume->emboss_shape->fix_3mf_tr->inverse(); + return Emboss::calc_up(to_world, UP_LIMIT); +} + Transform3d world_matrix_fixed(const GLVolume &gl_volume, const ModelObjectPtrs &objects) { Transform3d res = gl_volume.world_matrix(); @@ -301,11 +261,11 @@ Transform3d world_matrix_fixed(const GLVolume &gl_volume, const ModelObjectPtrs if (!mv) return res; - const std::optional &tc = mv->text_configuration; - if (!tc.has_value()) + const std::optional &es = mv->emboss_shape; + if (!es.has_value()) return res; - const std::optional &fix = tc->fix_3mf_tr; + const std::optional &fix = es->fix_3mf_tr; if (!fix.has_value()) return res; @@ -322,4 +282,447 @@ Transform3d world_matrix_fixed(const Selection &selection) return world_matrix_fixed(*gl_volume, selection.get_model()->objects); } -} // namespace Slic3r::GUI \ No newline at end of file +void selection_transform(Selection &selection, const std::function &selection_transformation_fnc) +{ + if (const Transform3d *fix = get_fix_transformation(selection); fix != nullptr) { + // NOTE: need editable gl volume .. can't use selection.get_first_volume() + GLVolume *gl_volume = selection.get_volume(*selection.get_volume_idxs().begin()); + Transform3d volume_tr = gl_volume->get_volume_transformation().get_matrix(); + gl_volume->set_volume_transformation(volume_tr * fix->inverse()); + selection.setup_cache(); + + selection_transformation_fnc(); + + volume_tr = gl_volume->get_volume_transformation().get_matrix(); + gl_volume->set_volume_transformation(volume_tr * (*fix)); + selection.setup_cache(); + } else { + selection_transformation_fnc(); + } + + if (selection.is_single_full_instance()) + selection.synchronize_unselected_instances(Selection::SyncRotationType::GENERAL); +} + +bool face_selected_volume_to_camera(const Camera &camera, GLCanvas3D &canvas, const std::optional &wanted_up_limit) +{ + GLVolume *gl_volume_ptr = get_selected_gl_volume(canvas); + if (gl_volume_ptr == nullptr) + return false; + GLVolume &gl_volume = *gl_volume_ptr; + + const ModelObjectPtrs &objects = canvas.get_model()->objects; + ModelObject *object_ptr = get_model_object(gl_volume, objects); + assert(object_ptr != nullptr); + if (object_ptr == nullptr) + return false; + ModelObject &object = *object_ptr; + + ModelInstance *instance_ptr = get_model_instance(gl_volume, object); + assert(instance_ptr != nullptr); + if (instance_ptr == nullptr) + return false; + ModelInstance &instance = *instance_ptr; + + ModelVolume *volume_ptr = get_model_volume(gl_volume, object); + assert(volume_ptr != nullptr); + if (volume_ptr == nullptr) + return false; + ModelVolume &volume = *volume_ptr; + + // Calculate new volume transformation + Transform3d volume_tr = volume.get_matrix(); + std::optional fix; + if (volume.emboss_shape.has_value()) { + fix = volume.emboss_shape->fix_3mf_tr; + if (fix.has_value()) + volume_tr = volume_tr * fix->inverse(); + } + + Transform3d instance_tr = instance.get_matrix(); + Transform3d instance_tr_inv = instance_tr.inverse(); + Transform3d world_tr = instance_tr * volume_tr; // without sla !!! + std::optional current_angle; + if (wanted_up_limit.has_value()) + current_angle = Emboss::calc_up(world_tr, *wanted_up_limit); + + Vec3d world_position = gl_volume.world_matrix()*Vec3d::Zero(); + + assert(camera.get_type() == Camera::EType::Perspective || + camera.get_type() == Camera::EType::Ortho); + Vec3d wanted_direction = (camera.get_type() == Camera::EType::Perspective) ? + Vec3d(camera.get_position() - world_position) : + (-camera.get_dir_forward()); + + Transform3d new_volume_tr = get_volume_transformation(world_tr, wanted_direction, world_position, + fix, instance_tr_inv, current_angle, wanted_up_limit); + + Selection &selection = canvas.get_selection(); + if (is_embossed_object(selection)) { + // transform instance instead of volume + Transform3d new_instance_tr = instance_tr * new_volume_tr * volume.get_matrix().inverse(); + gl_volume.set_instance_transformation(new_instance_tr); + + // set same transformation to other instances when instance is embossed object + if (selection.is_single_full_instance()) + selection.synchronize_unselected_instances(Selection::SyncRotationType::GENERAL); + } else { + // write result transformation + gl_volume.set_volume_transformation(new_volume_tr); + } + + if (volume.type() == ModelVolumeType::MODEL_PART) { + object.invalidate_bounding_box(); + object.ensure_on_bed(); + } + + canvas.do_rotate(L("Face the camera")); + wxGetApp().obj_manipul()->set_dirty(); + return true; +} + +void do_local_z_rotate(GLCanvas3D &canvas, double relative_angle) +{ + Selection &selection = canvas.get_selection(); + + assert(!selection.is_empty()); + if(selection.is_empty()) return; + + bool is_single_volume = selection.volumes_count() == 1; + assert(is_single_volume); + if (!is_single_volume) return; + + // Fix angle for mirrored volume + bool is_mirrored = false; + const GLVolume* gl_volume = selection.get_first_volume(); + if (gl_volume != nullptr) { + const ModelInstance *instance = get_model_instance(*gl_volume, selection.get_model()->objects); + bool is_instance_mirrored = (instance != nullptr)? has_reflection(instance->get_matrix()) : false; + if (is_embossed_object(selection)) { + is_mirrored = is_instance_mirrored; + } else { + const ModelVolume *volume = get_model_volume(*gl_volume, selection.get_model()->objects); + if (volume != nullptr) + is_mirrored = is_instance_mirrored != has_reflection(volume->get_matrix()); + } + } + if (is_mirrored) + relative_angle *= -1; + + selection.setup_cache(); + auto selection_rotate_fnc = [&selection, &relative_angle](){ + selection.rotate(Vec3d(0., 0., relative_angle), get_drag_transformation_type(selection)); + }; + selection_transform(selection, selection_rotate_fnc); + + std::string snapshot_name; // empty meand no store undo / redo + // NOTE: it use L instead of _L macro because prefix _ is appended + // inside function do_move + // snapshot_name = L("Set text rotation"); + canvas.do_rotate(snapshot_name); +} + +void do_local_z_move(GLCanvas3D &canvas, double relative_move) { + + Selection &selection = canvas.get_selection(); + assert(!selection.is_empty()); + if (selection.is_empty()) return; + + selection.setup_cache(); + auto selection_translate_fnc = [&selection, relative_move]() { + Vec3d translate = Vec3d::UnitZ() * relative_move; + selection.translate(translate, TransformationType::Local); + }; + selection_transform(selection, selection_translate_fnc); + + std::string snapshot_name; // empty mean no store undo / redo + // NOTE: it use L instead of _L macro because prefix _ is appended inside + // function do_move + // snapshot_name = L("Set surface distance"); + canvas.do_move(snapshot_name); +} + +TransformationType get_drag_transformation_type(const Selection &selection) +{ + return is_embossed_object(selection) ? + TransformationType::Instance_Relative_Joint : + TransformationType::Local_Relative_Joint; +} + +void dragging_rotate_gizmo(double gizmo_angle, std::optional& current_angle, std::optional &start_angle, Selection &selection) +{ + if (!start_angle.has_value()) + // create cache for initial angle + start_angle = current_angle.value_or(0.f); + + gizmo_angle -= PI / 2; // Grabber is upward + + double new_angle = gizmo_angle + *start_angle; + + const GLVolume *gl_volume = selection.get_first_volume(); + assert(gl_volume != nullptr); + if (gl_volume == nullptr) + return; + + bool is_volume_mirrored = has_reflection(gl_volume->get_volume_transformation().get_matrix()); + bool is_instance_mirrored = has_reflection(gl_volume->get_instance_transformation().get_matrix()); + if (is_volume_mirrored != is_instance_mirrored) + new_angle = -gizmo_angle + *start_angle; + + // move to range <-M_PI, M_PI> + Geometry::to_range_pi_pi(new_angle); + + const Transform3d* fix = get_fix_transformation(selection); + double z_rotation = (fix!=nullptr) ? (new_angle - current_angle.value_or(0.f)) : // relative angle + gizmo_angle; // relativity is keep by selection cache + + auto selection_rotate_fnc = [z_rotation, &selection]() { + selection.rotate(Vec3d(0., 0., z_rotation), get_drag_transformation_type(selection)); + }; + selection_transform(selection, selection_rotate_fnc); + + // propagate angle into property + current_angle = static_cast(new_angle); + + // do not store zero + if (is_approx(*current_angle, 0.f)) + current_angle.reset(); +} + +} // namespace Slic3r::GUI + +// private implementation +namespace { + +Vec2d mouse_position(const wxMouseEvent &mouse_event){ + // wxCoord == int --> wx/types.h + Vec2i mouse_coord(mouse_event.GetX(), mouse_event.GetY()); + return mouse_coord.cast(); +} + +bool start_dragging(const Vec2d &mouse_pos, + const Camera &camera, + std::optional &surface_drag, + GLCanvas3D &canvas, + RaycastManager &raycast_manager, + const std::optional&up_limit) +{ + // selected volume + GLVolume *gl_volume_ptr = get_selected_gl_volume(canvas); + if (gl_volume_ptr == nullptr) + return false; + const GLVolume &gl_volume = *gl_volume_ptr; + + // is selected volume closest hovered? + const GLVolumePtrs &gl_volumes = canvas.get_volumes().volumes; + if (int hovered_idx = canvas.get_first_hover_volume_idx(); hovered_idx < 0) + return false; + else if (auto hovered_idx_ = static_cast(hovered_idx); + hovered_idx_ >= gl_volumes.size() || gl_volumes[hovered_idx_] != gl_volume_ptr) + return false; + + const ModelObjectPtrs &objects = canvas.get_model()->objects; + const ModelObject *object = get_model_object(gl_volume, objects); + assert(object != nullptr); + if (object == nullptr) + return false; + + const ModelInstance *instance = get_model_instance(gl_volume, *object); + const ModelVolume *volume = get_model_volume(gl_volume, *object); + assert(instance != nullptr && volume != nullptr); + if (object == nullptr || instance == nullptr || volume == nullptr) + return false; + + // allowed drag&drop by canvas for object + if (volume->is_the_only_one_part()) + return false; + + RaycastManager::AllowVolumes condition = create_condition(object->volumes, volume->id()); + RaycastManager::Meshes meshes = create_meshes(canvas, condition); + // initialize raycasters + // INFO: It could slows down for big objects + // (may be move to thread and do not show drag until it finish) + raycast_manager.actualize(*instance, &condition, &meshes); + + + // world_matrix_fixed() without sla shift + Transform3d to_world = world_matrix_fixed(gl_volume, objects); + + // zero point of volume in world coordinate system + Vec3d volume_center = to_world.translation(); + // screen coordinate of volume center + Vec2i coor = CameraUtils::project(camera, volume_center); + Vec2d mouse_offset = coor.cast() - mouse_pos; + Vec2d mouse_offset_without_sla_shift = mouse_offset; + if (double sla_shift = gl_volume.get_sla_shift_z(); !is_approx(sla_shift, 0.)) { + Transform3d to_world_without_sla_move = instance->get_matrix() * volume->get_matrix(); + if (volume->emboss_shape.has_value() && volume->emboss_shape->fix_3mf_tr.has_value()) + to_world_without_sla_move = to_world_without_sla_move * (*volume->emboss_shape->fix_3mf_tr); + // zero point of volume in world coordinate system + volume_center = to_world_without_sla_move.translation(); + // screen coordinate of volume center + coor = CameraUtils::project(camera, volume_center); + mouse_offset_without_sla_shift = coor.cast() - mouse_pos; + } + + Transform3d volume_tr = gl_volume.get_volume_transformation().get_matrix(); + + // fix baked transformation from .3mf store process + if (const std::optional &es_opt = volume->emboss_shape; es_opt.has_value()) { + const std::optional &fix = es_opt->fix_3mf_tr; + if (fix.has_value()) + volume_tr = volume_tr * fix->inverse(); + } + + Transform3d instance_tr = instance->get_matrix(); + Transform3d instance_tr_inv = instance_tr.inverse(); + Transform3d world_tr = instance_tr * volume_tr; + std::optional start_angle; + if (up_limit.has_value()) { + start_angle = Emboss::calc_up(world_tr, *up_limit); + if (start_angle.has_value() && has_reflection(world_tr)) + start_angle = -(*start_angle); + } + + std::optional start_distance; + if (!volume->emboss_shape->projection.use_surface) + start_distance = calc_distance(gl_volume, raycast_manager, &condition); + surface_drag = SurfaceDrag{mouse_offset, world_tr, instance_tr_inv, + gl_volume_ptr, condition, start_angle, + start_distance, true, mouse_offset_without_sla_shift}; + + // disable moving with object by mouse + canvas.enable_moving(false); + canvas.enable_picking(false); + return true; + } + +Transform3d get_volume_transformation( + Transform3d world, // from volume + const Vec3d& world_dir, // wanted new direction + const Vec3d& world_position, // wanted new position + const std::optional& fix, // [optional] fix matrix + // Invers transformation of text volume instance + // Help convert world transformation to instance space + const Transform3d& instance_inv, + // initial rotation in Z axis + std::optional current_angle, + const std::optional &up_limit) +{ + auto world_linear = world.linear(); + // Calculate offset: transformation to wanted position + { + // Reset skew of the text Z axis: + // Project the old Z axis into a new Z axis, which is perpendicular to the old XY plane. + Vec3d old_z = world_linear.col(2); + Vec3d new_z = world_linear.col(0).cross(world_linear.col(1)); + world_linear.col(2) = new_z * (old_z.dot(new_z) / new_z.squaredNorm()); + } + + Vec3d text_z_world = world_linear.col(2); // world_linear * Vec3d::UnitZ() + auto z_rotation = Eigen::Quaternion::FromTwoVectors(text_z_world, world_dir); + Transform3d world_new = z_rotation * world; + auto world_new_linear = world_new.linear(); + + // Fix direction of up vector to zero initial rotation + if(up_limit.has_value()){ + Vec3d z_world = world_new_linear.col(2); + z_world.normalize(); + Vec3d wanted_up = Emboss::suggest_up(z_world, *up_limit); + + Vec3d y_world = world_new_linear.col(1); + auto y_rotation = Eigen::Quaternion::FromTwoVectors(y_world, wanted_up); + + world_new = y_rotation * world_new; + world_new_linear = world_new.linear(); + } + + // Edit position from right + Transform3d volume_new{Eigen::Translation(instance_inv * world_position)}; + volume_new.linear() = instance_inv.linear() * world_new_linear; + + // Check that transformation matrix is valid transformation + assert(volume_new.matrix()(0, 0) == volume_new.matrix()(0, 0)); // Check valid transformation not a NAN + if (volume_new.matrix()(0, 0) != volume_new.matrix()(0, 0)) + return Transform3d::Identity(); + + // Check that scale in world did not changed + assert(!calc_scale(world_linear, world_new_linear, Vec3d::UnitY()).has_value()); + assert(!calc_scale(world_linear, world_new_linear, Vec3d::UnitZ()).has_value()); + + // fix baked transformation from .3mf store process + if (fix.has_value()) + volume_new = volume_new * (*fix); + + // apply move in Z direction and rotation by up vector + Emboss::apply_transformation(current_angle, {}, volume_new); + + return volume_new; +} + +bool dragging(const Vec2d &mouse_pos, + const Camera &camera, + SurfaceDrag &surface_drag, + GLCanvas3D &canvas, + const RaycastManager &raycast_manager, + const std::optional &up_limit) +{ + Vec2d offseted_mouse = mouse_pos + surface_drag.mouse_offset_without_sla_shift; + std::optional hit = ray_from_camera( + raycast_manager, offseted_mouse, camera, &surface_drag.condition); + + surface_drag.exist_hit = hit.has_value(); + if (!hit.has_value()) { + // cross hair need redraw + canvas.set_as_dirty(); + return true; + } + + const ModelVolume *volume = get_model_volume(*surface_drag.gl_volume, canvas.get_model()->objects); + std::optional fix; + if (volume !=nullptr && + volume->emboss_shape.has_value() && + volume->emboss_shape->fix_3mf_tr.has_value()) + fix = volume->emboss_shape->fix_3mf_tr; + Transform3d volume_new = get_volume_transformation(surface_drag.world, hit->normal, hit->position, + fix, surface_drag.instance_inv, surface_drag.start_angle, up_limit); + // Update transformation for all instances + for (GLVolume *vol : canvas.get_volumes().volumes) { + if (vol->object_idx() != surface_drag.gl_volume->object_idx() || + vol->volume_idx() != surface_drag.gl_volume->volume_idx()) + continue; + vol->set_volume_transformation(volume_new); + } + + canvas.set_as_dirty(); + // Show current position in manipulation panel + wxGetApp().obj_manipul()->set_dirty(); + return true; + } + +bool is_embossed_object(const Selection &selection) +{ + assert(selection.volumes_count() == 1); + return selection.is_single_full_object() || selection.is_single_full_instance(); +} + +const Transform3d *get_fix_transformation(const Selection &selection) { + const GLVolume *gl_volume = get_selected_gl_volume(selection); + assert(gl_volume != nullptr); + if (gl_volume == nullptr) + return nullptr; + + const ModelVolume *volume = get_model_volume(*gl_volume, selection.get_model()->objects); + assert(volume != nullptr); + if (volume == nullptr) + return nullptr; + + const std::optional &es = volume->emboss_shape; + if (!volume->emboss_shape.has_value()) + return nullptr; + if (!es->fix_3mf_tr.has_value()) + return nullptr; + return &(*es->fix_3mf_tr); +} + +} // namespace \ No newline at end of file diff --git a/src/slic3r/GUI/SurfaceDrag.hpp b/src/slic3r/GUI/SurfaceDrag.hpp index 48d6a33..cd87dfc 100644 --- a/src/slic3r/GUI/SurfaceDrag.hpp +++ b/src/slic3r/GUI/SurfaceDrag.hpp @@ -5,14 +5,17 @@ #include "libslic3r/Point.hpp" // Vec2d, Transform3d #include "slic3r/Utils/RaycastManager.hpp" #include "wx/event.h" // wxMouseEvent +#include namespace Slic3r { class GLVolume; +class ModelVolume; } // namespace Slic3r namespace Slic3r::GUI { class GLCanvas3D; class Selection; +class TransformationType; struct Camera; // Data for drag&drop over surface with mouse @@ -37,6 +40,8 @@ struct SurfaceDrag // initial rotation in Z axis of volume std::optional start_angle; + // initial Z distance from surface + std::optional start_distance; // Flag whether coordinate hit some volume bool exist_hit = true; @@ -44,6 +49,9 @@ struct SurfaceDrag Vec2d mouse_offset_without_sla_shift; }; +// Limit direction of up vector on model +// Between side and top surface +constexpr double UP_LIMIT = 0.9; /// /// Mouse event handler, when move(drag&drop) volume over model surface /// NOTE: Dragged volume has to be selected. And also has to be hovered on start of dragging. @@ -61,7 +69,7 @@ bool on_mouse_surface_drag(const wxMouseEvent &mouse_event, std::optional &surface_drag, GLCanvas3D &canvas, RaycastManager &raycast_manager, - std::optional up_limit = {}); + const std::optional&up_limit = {}); /// /// Calculate translation of volume onto surface of model @@ -71,6 +79,23 @@ bool on_mouse_surface_drag(const wxMouseEvent &mouse_event, /// Offset of volume in volume coordinate std::optional calc_surface_offset(const Selection &selection, RaycastManager &raycast_manager); +/// +/// Calculate distance by ray to surface of object in emboss direction +/// +/// Define embossed volume +/// Way to cast rays to object +/// Contain model +/// Calculated distance from surface +std::optional calc_distance(const GLVolume &gl_volume, RaycastManager &raycaster, GLCanvas3D &canvas); +std::optional calc_distance(const GLVolume &gl_volume, const RaycastManager &raycaster, const RaycastManager::ISkip *condition); + +/// +/// Calculate up vector angle +/// +/// Calculation of angle is for selected one volume +/// +std::optional calc_angle(const Selection &selection); + /// /// Get transformation to world /// - use fix after store to 3mf when exists @@ -89,5 +114,53 @@ Transform3d world_matrix_fixed(const GLVolume &gl_volume, const ModelObjectPtrs& /// Fixed Transformation of selected volume in selection Transform3d world_matrix_fixed(const Selection &selection); +/// +/// Wrap function around selection transformation to apply fix transformation +/// Fix transformation is needed because of (store/load) volume (to/from) 3mf +/// +/// Selected gl volume will be modified +/// Function modified Selection transformation +void selection_transform(Selection &selection, const std::function& selection_transformation_fnc); + +/// +/// Apply camera direction for emboss direction +/// +/// Define view vector +/// Containe Selected ModelVolume to modify orientation +/// [Optional]Limit for direction of up vector +/// True when apply change otherwise false +bool face_selected_volume_to_camera(const Camera &camera, GLCanvas3D &canvas, const std::optional &wanted_up_limit = {}); + +/// +/// Rotation around z Axis(emboss direction) +/// +/// Selected volume for rotation +/// Relative angle to rotate around emboss direction +void do_local_z_rotate(GLCanvas3D &canvas, double relative_angle); + +/// +/// Translation along local z Axis (emboss direction) +/// +/// Selected volume for translate +/// Relative move along emboss direction +void do_local_z_move(GLCanvas3D &canvas, double relative_move); + +/// +/// Distiguish between object and volume +/// Differ in possible transformation type +/// +/// Contain selected volume/object +/// Transformation to use +TransformationType get_drag_transformation_type(const Selection &selection); + +/// +/// On dragging rotate gizmo func +/// Transform GLVolume from selection +/// +/// GLGizmoRotate::get_angle() +/// In/Out current angle visible in UI +/// Cache for start dragging angle +/// Selected only Actual embossed volume +void dragging_rotate_gizmo(double gizmo_angle, std::optional& current_angle, std::optional &start_angle, Selection &selection); } // namespace Slic3r::GUI #endif // slic3r_SurfaceDrag_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp index 6576a58..5bd4846 100644 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ b/src/slic3r/GUI/SysInfoDialog.cpp @@ -118,13 +118,13 @@ SysInfoDialog::SysInfoDialog() wxStaticText* title = new wxStaticText(this, wxID_ANY, wxGetApp().is_editor() ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME, wxDefaultPosition, wxDefaultSize); wxFont title_font = wxGetApp().bold_font(); title_font.SetFamily(wxFONTFAMILY_ROMAN); - title_font.SetPointSize(22); + title_font.SetPointSize(int(2.5 * title_font.GetPointSize()));//title_font.SetPointSize(22); title->SetFont(title_font); vsizer->Add(title, 0, wxEXPAND | wxALIGN_LEFT | wxTOP, wxGetApp().em_unit()/*50*/); } // main_info_text - wxFont font = get_default_font(this); + wxFont font = GetFont();// get_default_font(this); const auto text_clr = wxGetApp().get_label_clr_default(); auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue())); auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue())); @@ -178,7 +178,9 @@ SysInfoDialog::SysInfoDialog() } wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); m_btn_copy_to_clipboard = new wxButton(this, wxID_ANY, _L("Copy to Clipboard"), wxDefaultPosition, wxDefaultSize); + wxGetApp().SetWindowVariantForButton(m_btn_copy_to_clipboard); buttons->Insert(0, m_btn_copy_to_clipboard, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); m_btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index da33713..67f99cd 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -7,7 +7,8 @@ #include "libslic3r/Utils.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" -#include "libslic3r/GCodeWriter.hpp" +#include "libslic3r/GCode/GCodeWriter.hpp" +#include "libslic3r/GCode/Thumbnails.hpp" #include "slic3r/Utils/Http.hpp" #include "slic3r/Utils/PrintHost.hpp" @@ -45,9 +46,11 @@ #include "format.hpp" #include "UnsavedChangesDialog.hpp" #include "SavePresetDialog.hpp" +#include "EditGCodeDialog.hpp" #include "MsgDialog.hpp" #include "Notebook.hpp" +#include "Widgets/CheckBox.hpp" #ifdef WIN32 #include #endif // WIN32 @@ -61,7 +64,11 @@ Tab::Tab(wxBookCtrlBase* parent, const wxString& title, Preset::Type type) : Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL/*, name*/); this->SetFont(Slic3r::GUI::wxGetApp().normal_font()); +#ifdef __WXMSW__ wxGetApp().UpdateDarkUI(this); +#elif __WXOSX__ + SetBackgroundColour(parent->GetBackgroundColour()); +#endif m_compatible_printers.type = Preset::TYPE_PRINTER; m_compatible_printers.key_list = "compatible_printers"; @@ -146,7 +153,6 @@ void Tab::create_preset_tab() } }); - auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); //buttons m_scaled_buttons.reserve(6); @@ -188,6 +194,8 @@ void Tab::create_preset_tab() // Bitmaps to be shown on the "Undo user changes" button next to each input field. add_scaled_bitmap(this, m_bmp_value_revert, "undo"); add_scaled_bitmap(this, m_bmp_white_bullet, "dot"); + // Bitmap to be shown on the "edit" button before to each editable input field. + add_scaled_bitmap(this, m_bmp_edit_value, "edit"); fill_icon_descriptions(); set_tooltips_text(); @@ -217,7 +225,7 @@ void Tab::create_preset_tab() const float scale_factor = em_unit(this)*0.1;// GetContentScaleFactor(); m_top_hsizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(m_top_hsizer, 0, wxEXPAND | wxBOTTOM | wxALIGN_CENTER_VERTICAL, 3); + sizer->Add(m_top_hsizer, 0, wxEXPAND | wxBOTTOM, 3); m_top_hsizer->Add(m_presets_choice, 0, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3); m_top_hsizer->AddSpacer(int(4*scale_factor)); @@ -243,7 +251,7 @@ void Tab::create_preset_tab() m_h_buttons_sizer->AddSpacer(int(8*scale_factor)); m_h_buttons_sizer->Add(m_btn_compare_preset, 0, wxALIGN_CENTER_VERTICAL); - m_top_hsizer->Add(m_h_buttons_sizer, 1, wxEXPAND | wxALIGN_CENTRE_VERTICAL); + m_top_hsizer->Add(m_h_buttons_sizer, 1, wxEXPAND); m_top_hsizer->AddSpacer(int(16*scale_factor)); // StretchSpacer has a strange behavior under OSX, so // There is used just additional sizer for m_mode_sizer with right alignment @@ -269,6 +277,9 @@ void Tab::create_preset_tab() m_treectrl = new wxTreeCtrl(panel, wxID_ANY, wxDefaultPosition, wxSize(20 * m_em_unit, -1), wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_SUNKEN | wxWANTS_CHARS); m_treectrl->SetFont(wxGetApp().normal_font()); +#ifdef __linux__ + m_treectrl->SetBackgroundColour(m_parent->GetBackgroundColour()); +#endif m_left_sizer->Add(m_treectrl, 1, wxEXPAND); // Index of the last icon inserted into m_treectrl m_icon_count = -1; @@ -399,10 +410,6 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str } // Initialize the page. PageShp page(new Page(m_page_view, title, icon_idx)); -// page->SetBackgroundStyle(wxBG_STYLE_SYSTEM); -#ifdef __WINDOWS__ -// page->SetDoubleBuffered(true); -#endif //__WINDOWS__ if (!is_extruder_pages) m_pages.push_back(page); @@ -466,6 +473,7 @@ void Tab::OnActivate() Refresh(); // Just refresh page, if m_presets_choice is already shown else { // From the tab creation whole top sizer is hidden to correct update of preset combobox's size + // (see https://github.com/prusa3d/PrusaSlicer/issues/10746) // On first OnActivate call show top sizer m_top_hsizer->ShowItems(true); @@ -600,6 +608,8 @@ void Tab::decorate() field->set_undo_tooltip(tt); field->set_undo_to_sys_tooltip(sys_tt); field->set_label_colour(color); + if (field->has_edit_ui()) + field->set_edit_bitmap(&m_bmp_edit_value); } if (m_active_page) @@ -933,6 +943,10 @@ void Tab::msw_rescale() m_presets_choice->msw_rescale(); m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1)); + if (m_compatible_printers.checkbox) + CheckBox::Rescale(m_compatible_printers.checkbox); + if (m_compatible_prints.checkbox) + CheckBox::Rescale(m_compatible_prints.checkbox); // rescale options_groups if (m_active_page) m_active_page->msw_rescale(); @@ -1336,10 +1350,10 @@ void Tab::update_preset_description_line() if (!default_filament_profiles.empty()) { description_line += "\n\n\t" + _(L("default filament profile")) + ": \n\t\t"; - for (auto& profile : default_filament_profiles) { + for (const std::string& profile : default_filament_profiles) { if (&profile != &*default_filament_profiles.begin()) description_line += ", "; - description_line += profile; + description_line += from_u8(profile); } } break; @@ -1539,14 +1553,15 @@ void TabPrint::build() optgroup->append_single_option_line("support_material_synchronize_layers", category_path + "synchronize-with-object-layers"); optgroup = page->new_optgroup(L("Organic supports")); - optgroup->append_single_option_line("support_tree_angle", category_path + "tree_angle"); - optgroup->append_single_option_line("support_tree_angle_slow", category_path + "tree_angle_slow"); - optgroup->append_single_option_line("support_tree_branch_diameter", category_path + "tree_branch_diameter"); - optgroup->append_single_option_line("support_tree_branch_diameter_angle", category_path + "tree_branch_diameter_angle"); - optgroup->append_single_option_line("support_tree_branch_diameter_double_wall", category_path + "tree_branch_diameter_double_wall"); - optgroup->append_single_option_line("support_tree_tip_diameter", category_path + "tree_tip_diameter"); - optgroup->append_single_option_line("support_tree_branch_distance", category_path + "tree_branch_distance"); - optgroup->append_single_option_line("support_tree_top_rate", category_path + "tree_top_rate"); + const std::string path = "organic-supports_480131#organic-supports-settings"; + optgroup->append_single_option_line("support_tree_angle", path); + optgroup->append_single_option_line("support_tree_angle_slow", path); + optgroup->append_single_option_line("support_tree_branch_diameter", path); + optgroup->append_single_option_line("support_tree_branch_diameter_angle", path); + optgroup->append_single_option_line("support_tree_branch_diameter_double_wall", path); + optgroup->append_single_option_line("support_tree_tip_diameter", path); + optgroup->append_single_option_line("support_tree_branch_distance", path); + optgroup->append_single_option_line("support_tree_top_rate", path); page = add_options_page(L("Speed"), "time"); optgroup = page->new_optgroup(L("Speed for print moves")); @@ -1683,6 +1698,34 @@ void TabPrint::build() Option option = optgroup->get_option("output_filename_format"); option.opt.full_width = true; optgroup->append_single_option_line(option); + optgroup->append_single_option_line("gcode_binary"); + + optgroup->m_on_change = [this](const t_config_option_key& opt_key, boost::any value) + { + if (opt_key == "gcode_binary") { + const bool is_binary = m_config->opt_bool("gcode_binary"); + std::string output_filename_format = m_config->opt_string("output_filename_format"); + bool modified = false; + if (is_binary && boost::iends_with(output_filename_format, ".gcode")) { + output_filename_format = output_filename_format.substr(0, output_filename_format.length() - 5) + "bgcode"; + modified = true; + } + else if (!is_binary && boost::iends_with(output_filename_format, ".bgcode")) { + output_filename_format = output_filename_format.substr(0, output_filename_format.length() - 6) + "gcode"; + modified = true; + } + if (modified) { + DynamicPrintConfig new_conf = *m_config; + auto off_option = static_cast(m_config->option("output_filename_format")->clone()); + off_option->value = output_filename_format; + new_conf.set_key_value("output_filename_format", off_option); + load_config(new_conf); + } + } + + update_dirty(); + update(); + }; optgroup = page->new_optgroup(L("Other")); @@ -1844,6 +1887,42 @@ static void validate_custom_gcode_cb(Tab* tab, const wxString& title, const t_co tab->on_value_change(opt_key, value); } +void Tab::edit_custom_gcode(const t_config_option_key& opt_key) +{ + EditGCodeDialog dlg = EditGCodeDialog(this, opt_key, get_custom_gcode(opt_key)); + if (dlg.ShowModal() == wxID_OK) { + set_custom_gcode(opt_key, dlg.get_edited_gcode()); + update_dirty(); + update(); + } +} + +const std::string& Tab::get_custom_gcode(const t_config_option_key& opt_key) +{ + return m_config->opt_string(opt_key); +} + +void Tab::set_custom_gcode(const t_config_option_key& opt_key, const std::string& value) +{ + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value(opt_key, new ConfigOptionString(value)); + load_config(new_conf); +} + +const std::string& TabFilament::get_custom_gcode(const t_config_option_key& opt_key) +{ + return m_config->opt_string(opt_key, unsigned(0)); +} + +void TabFilament::set_custom_gcode(const t_config_option_key& opt_key, const std::string& value) +{ + std::vector gcodes = static_cast(m_config->option(opt_key))->values; + gcodes[0] = value; + + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value(opt_key, new ConfigOptionStrings(gcodes)); + load_config(new_conf); +} void TabFilament::create_line_with_near_label_widget(ConfigOptionsGroupShp optgroup, const std::string& opt_key, int opt_index/* = 0*/) { Line line {"",""}; @@ -1856,7 +1935,8 @@ void TabFilament::create_line_with_near_label_widget(ConfigOptionsGroupShp optgr line = optgroup->create_single_option_line(optgroup->get_option(opt_key)); line.near_label_widget = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup), opt_key, opt_index](wxWindow* parent) { - wxCheckBox* check_box = new wxCheckBox(parent, wxID_ANY, ""); + wxWindow* check_box = CheckBox::GetNewWin(parent); + wxGetApp().UpdateDarkUI(check_box); check_box->Bind(wxEVT_CHECKBOX, [optgroup_wk, opt_key, opt_index](wxCommandEvent& evt) { const bool is_checked = evt.IsChecked(); @@ -1869,7 +1949,7 @@ void TabFilament::create_line_with_near_label_widget(ConfigOptionsGroupShp optgr field->set_na_value(); } } - }, check_box->GetId()); + }); m_overrides_options[opt_key] = check_box; return check_box; @@ -1885,40 +1965,63 @@ void TabFilament::update_line_with_near_label_widget(ConfigOptionsGroupShp optgr m_overrides_options[opt_key]->Enable(is_checked); is_checked &= !m_config->option(opt_key)->is_nil(); - m_overrides_options[opt_key]->SetValue(is_checked); + CheckBox::SetValue(m_overrides_options[opt_key], is_checked); Field* field = optgroup->get_fieldc(opt_key, opt_index); if (field != nullptr) field->toggle(is_checked); } -void TabFilament::add_filament_overrides_page() -{ - PageShp page = add_options_page(L("Filament Overrides"), "wrench"); - ConfigOptionsGroupShp optgroup = page->new_optgroup(L("Retraction")); - - const int extruder_idx = 0; // #ys_FIXME - - for (const std::string opt_key : { "filament_retract_length", +std::vector>> option_keys { + {"Travel lift", { "filament_retract_lift", + "filament_travel_ramping_lift", + "filament_travel_max_lift", + "filament_travel_slope", + //"filament_travel_lift_before_obstacle", "filament_retract_lift_above", - "filament_retract_lift_below", + "filament_retract_lift_below" + }}, + {"Retraction", { + "filament_retract_length", "filament_retract_speed", "filament_deretract_speed", "filament_retract_restart_extra", "filament_retract_before_travel", "filament_retract_layer_change", "filament_wipe", - "filament_retract_before_wipe" - }) - create_line_with_near_label_widget(optgroup, opt_key, extruder_idx); + "filament_retract_before_wipe", + }}, + {"Retraction when tool is disabled", { + "filament_retract_length_toolchange", + "filament_retract_restart_extra_toolchange" + }} +}; - optgroup = page->new_optgroup(L("Retraction when tool is disabled")); - for (const std::string opt_key : { "filament_retract_length_toolchange", - "filament_retract_restart_extra_toolchange" - }) - create_line_with_near_label_widget(optgroup, opt_key, extruder_idx); +void TabFilament::add_filament_overrides_page() +{ + PageShp page = add_options_page(L("Filament Overrides"), "wrench"); + const int extruder_idx = 0; // #ys_FIXME + + for (const auto&[title, keys] : option_keys) { + ConfigOptionsGroupShp optgroup = page->new_optgroup(L(title)); + for (const std::string& opt_key : keys) { + create_line_with_near_label_widget(optgroup, opt_key, extruder_idx); + } + } +} + +std::optional get_option_group(const Page* page, const std::string& title) { + auto og_it = std::find_if( + page->m_optgroups.begin(), page->m_optgroups.end(), + [&](const ConfigOptionsGroupShp& og) { + return og->title == title; + } + ); + if (og_it == page->m_optgroups.end()) + return {}; + return *og_it; } void TabFilament::update_filament_overrides_page() @@ -1927,44 +2030,77 @@ void TabFilament::update_filament_overrides_page() return; Page* page = m_active_page; - auto og_it = std::find_if(page->m_optgroups.begin(), page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == "Retraction"; }); - if (og_it == page->m_optgroups.end()) - return; - ConfigOptionsGroupShp optgroup = *og_it; - - std::vector opt_keys = { "filament_retract_length", - "filament_retract_lift", - "filament_retract_lift_above", - "filament_retract_lift_below", - "filament_retract_speed", - "filament_deretract_speed", - "filament_retract_restart_extra", - "filament_retract_before_travel", - "filament_retract_layer_change", - "filament_wipe", - "filament_retract_before_wipe" - }; const int extruder_idx = 0; // #ys_FIXME - const bool have_retract_length = m_config->option("filament_retract_length")->is_nil() || - m_config->opt_float("filament_retract_length", extruder_idx) > 0; + const bool have_retract_length = ( + m_config->option("filament_retract_length")->is_nil() + || m_config->opt_float("filament_retract_length", extruder_idx) > 0 + ); - for (const std::string& opt_key : opt_keys) - { - bool is_checked = opt_key=="filament_retract_length" ? true : have_retract_length; - update_line_with_near_label_widget(optgroup, opt_key, extruder_idx, is_checked); + const bool uses_ramping_lift = ( + m_config->option("filament_travel_ramping_lift")->is_nil() + || m_config->opt_bool("filament_travel_ramping_lift", extruder_idx) + ); + + const bool is_lifting = ( + m_config->option("filament_travel_max_lift")->is_nil() + || m_config->opt_float("filament_travel_max_lift", extruder_idx) > 0 + || m_config->option("filament_retract_lift")->is_nil() + || m_config->opt_float("filament_retract_lift", extruder_idx) > 0 + ); + + for (const auto&[title, keys] : option_keys) { + std::optional optgroup{get_option_group(page, title)}; + if (!optgroup) { + continue; + } + + for (const std::string& opt_key : keys) { + bool is_checked{true}; + if ( + title == "Retraction" + && opt_key != "filament_retract_length" + && !have_retract_length + ) { + is_checked = false; } - og_it = std::find_if(page->m_optgroups.begin(), page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == "Retraction when tool is disabled"; }); - if (og_it == page->m_optgroups.end()) - return; - optgroup = *og_it; + if ( + title == "Travel lift" + && uses_ramping_lift + && opt_key == "filament_retract_lift" + && !m_config->option("filament_travel_ramping_lift")->is_nil() + && m_config->opt_bool("filament_travel_ramping_lift", extruder_idx) + ) { + is_checked = false; + } - for (const std::string& opt_key : {"filament_retract_length_toolchange", "filament_retract_restart_extra_toolchange"}) - update_line_with_near_label_widget(optgroup, opt_key, extruder_idx); + if ( + title == "Travel lift" + && !is_lifting + && ( + opt_key == "filament_retract_lift_above" + || opt_key == "filament_retract_lift_below" + ) + ) { + is_checked = false; + } + if ( + title == "Travel lift" + && !uses_ramping_lift + && opt_key != "filament_travel_ramping_lift" + && opt_key != "filament_retract_lift" + && opt_key != "filament_retract_lift_above" + && opt_key != "filament_retract_lift_below" + ) { + is_checked = false; + } + update_line_with_near_label_widget(*optgroup, opt_key, extruder_idx, is_checked); + } + } } void TabFilament::create_extruder_combobox() @@ -2158,6 +2294,7 @@ void TabFilament::build() create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "", [this](wxWindow* parent) { auto ramming_dialog_btn = new wxButton(parent, wxID_ANY, _(L("Ramming settings"))+dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); + wxGetApp().SetWindowVariantForButton(ramming_dialog_btn); wxGetApp().UpdateDarkUI(ramming_dialog_btn); ramming_dialog_btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); ramming_dialog_btn->SetSize(ramming_dialog_btn->GetBestSize()); @@ -2192,6 +2329,7 @@ void TabFilament::build() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("start_filament_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2202,6 +2340,7 @@ void TabFilament::build() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("end_filament_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2349,6 +2488,8 @@ void TabFilament::clear_pages() m_volumetric_speed_description_line = nullptr; m_cooling_description_line = nullptr; + for (auto& over_opt : m_overrides_options) + over_opt.second = nullptr; } void TabFilament::msw_rescale() @@ -2362,10 +2503,16 @@ void TabFilament::msw_rescale() void TabFilament::sys_color_changed() { + wxGetApp().UpdateDarkUI(m_extruders_cb); m_extruders_cb->Clear(); update_extruder_combobox(); Tab::sys_color_changed(); + for (const auto& over_opt : m_overrides_options) + if (wxWindow* check_box = over_opt.second) { + wxGetApp().UpdateDarkUI(check_box); + CheckBox::SysColorChanged(check_box); + } } void TabFilament::load_current_preset() @@ -2391,7 +2538,7 @@ void TabFilament::load_current_preset() m_extruders_cb->Select(m_active_extruder); } - assert(m_active_extruder >= 0 && m_active_extruder < m_preset_bundle->extruders_filaments.size()); + assert(m_active_extruder >= 0 && size_t(m_active_extruder) < m_preset_bundle->extruders_filaments.size()); const std::string& selected_extr_filament_name = m_preset_bundle->extruders_filaments[m_active_extruder].get_selected_preset_name(); if (selected_extr_filament_name != selected_filament_name) { m_presets->select_preset_by_name(selected_extr_filament_name, false); @@ -2516,10 +2663,6 @@ void TabPrinter::build_fff() return create_bed_shape_widget(parent); }); -//Y18 - Option option = optgroup->get_option("bed_exclude_area"); - option.opt.full_width = true; - optgroup->append_single_option_line(option); optgroup->append_single_option_line("max_print_height"); optgroup->append_single_option_line("z_offset"); @@ -2532,7 +2675,7 @@ void TabPrinter::build_fff() def.min = 1; def.max = 256; def.mode = comExpert; - option = Option(def, "extruders_count"); + Option option(def, "extruders_count"); optgroup->append_single_option_line(option); optgroup->append_single_option_line("single_extruder_multi_material"); @@ -2606,13 +2749,39 @@ void TabPrinter::build_fff() option = optgroup->get_option("thumbnails"); option.opt.full_width = true; optgroup->append_single_option_line(option); - optgroup->append_single_option_line("thumbnails_format"); optgroup->append_single_option_line("silent_mode"); optgroup->append_single_option_line("remaining_times"); optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) { wxTheApp->CallAfter([this, opt_key, value]() { + if (opt_key == "thumbnails" && m_config->has("thumbnails_format")) { + // to backward compatibility we need to update "thumbnails_format" from new "thumbnails" + if (const std::string val = boost::any_cast(value); !value.empty()) { + auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(val); + + if (errors != enum_bitmask()) { + // TRN: First argument is parameter name, the second one is the value. + std::string error_str = format(_u8L("Invalid value provided for parameter %1%: %2%"), "thumbnails", val); + error_str += GCodeThumbnails::get_error_string(errors); + InfoDialog(parent(), _L("G-code flavor is switched"), from_u8(error_str)).ShowModal(); + } + + if (!thumbnails_list.empty()) { + GCodeThumbnailsFormat old_format = GCodeThumbnailsFormat(m_config->option("thumbnails_format")->getInt()); + GCodeThumbnailsFormat new_format = thumbnails_list.begin()->first; + if (old_format != new_format) { + DynamicPrintConfig new_conf = *m_config; + + auto* opt = m_config->option("thumbnails_format")->clone(); + opt->setInt(int(new_format)); + new_conf.set_key_value("thumbnails_format", opt); + + load_config(new_conf); + } + } + } + } if (opt_key == "silent_mode") { bool val = boost::any_cast(value); if (m_use_silent_mode != val) { @@ -2682,6 +2851,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("start_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2695,6 +2865,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("end_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2705,6 +2876,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("before_layer_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2715,6 +2887,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("layer_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2725,6 +2898,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("toolchange_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2735,6 +2909,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("between_objects_gcode"); option.opt.full_width = true; option.opt.is_code = true; @@ -2745,6 +2920,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("color_change_gcode"); option.opt.is_code = true; option.opt.height = gcode_field_height;//150; @@ -2754,6 +2930,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("pause_print_gcode"); option.opt.is_code = true; option.opt.height = gcode_field_height;//150; @@ -2763,6 +2940,7 @@ void TabPrinter::build_fff() optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { validate_custom_gcode_cb(this, optgroup_title, opt_key, value); }; + optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; option = optgroup->get_option("template_custom_gcode"); option.opt.is_code = true; option.opt.height = gcode_field_height;//150; @@ -2994,7 +3172,8 @@ const std::vector extruder_options = { "min_layer_height", "max_layer_height", "extruder_offset", "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", "deretract_speed", "retract_restart_extra", "retract_before_travel", - "retract_layer_change", "wipe", "retract_before_wipe", + "retract_layer_change", "wipe", "retract_before_wipe", "travel_ramping_lift", + "travel_slope", "travel_max_lift", "travel_lift_before_obstacle", "retract_length_toolchange", "retract_restart_extra_toolchange", }; @@ -3156,14 +3335,20 @@ void TabPrinter::build_extruder_pages(size_t n_before_extruders) optgroup = page->new_optgroup(L("Position (for multi-extruder printers)")); optgroup->append_single_option_line("extruder_offset", "", extruder_idx); - optgroup = page->new_optgroup(L("Retraction")); - optgroup->append_single_option_line("retract_length", "", extruder_idx); + optgroup = page->new_optgroup(L("Travel lift")); optgroup->append_single_option_line("retract_lift", "", extruder_idx); - line = { L("Only lift Z"), "" }; + optgroup->append_single_option_line("travel_ramping_lift", "", extruder_idx); + optgroup->append_single_option_line("travel_max_lift", "", extruder_idx); + optgroup->append_single_option_line("travel_slope", "", extruder_idx); + //optgroup->append_single_option_line("travel_lift_before_obstacle", "", extruder_idx); + + line = { L("Only lift"), "" }; line.append_option(optgroup->get_option("retract_lift_above", extruder_idx)); line.append_option(optgroup->get_option("retract_lift_below", extruder_idx)); optgroup->append_line(line); + optgroup = page->new_optgroup(L("Retraction")); + optgroup->append_single_option_line("retract_length", "", extruder_idx); optgroup->append_single_option_line("retract_speed", "", extruder_idx); optgroup->append_single_option_line("deretract_speed", "", extruder_idx); optgroup->append_single_option_line("retract_restart_extra", "", extruder_idx); @@ -3371,26 +3556,32 @@ void TabPrinter::toggle_options() { size_t i = size_t(val - 1); bool have_retract_length = m_config->opt_float("retract_length", i) > 0; + const bool ramping_lift = m_config->opt_bool("travel_ramping_lift", i); + const bool lifts_z = (ramping_lift && m_config->opt_float("travel_max_lift", i) > 0) + || (! ramping_lift && m_config->opt_float("retract_lift", i) > 0); // when using firmware retraction, firmware decides retraction length bool use_firmware_retraction = m_config->opt_bool("use_firmware_retraction"); toggle_option("retract_length", !use_firmware_retraction, i); + toggle_option("retract_lift", ! ramping_lift, i); + toggle_option("travel_max_lift", ramping_lift, i); + toggle_option("travel_slope", ramping_lift, i); // user can customize travel length if we have retraction length or we"re using // firmware retraction toggle_option("retract_before_travel", have_retract_length || use_firmware_retraction, i); // user can customize other retraction options if retraction is enabled bool retraction = (have_retract_length || use_firmware_retraction); - std::vector vec = { "retract_lift", "retract_layer_change" }; + std::vector vec = { }; for (auto el : vec) - toggle_option(el, retraction, i); + toggle_option("retract_layer_change", retraction, i); // retract lift above / below only applies if using retract lift vec.resize(0); vec = { "retract_lift_above", "retract_lift_below" }; for (auto el : vec) - toggle_option(el, retraction && (m_config->opt_float("retract_lift", i) > 0), i); + toggle_option(el, lifts_z, i); // some options only apply when not using firmware retraction vec.resize(0); @@ -3421,6 +3612,7 @@ void TabPrinter::toggle_options() load_config(new_conf); } + //toggle_option("travel_lift_before_obstacle", ramping_lift, i); toggle_option("retract_length_toolchange", have_multiple_extruders, i); bool toolchange_retraction = m_config->opt_float("retract_length_toolchange", i) > 0; @@ -3617,6 +3809,7 @@ void Tab::rebuild_page_tree() continue; auto itemId = m_treectrl->AppendItem(rootItem, translate_category(p->title(), m_type), p->iconID()); m_treectrl->SetItemTextColour(itemId, p->get_item_colour()); + m_treectrl->SetItemFont(itemId, wxGetApp().normal_font()); if (translate_category(p->title(), m_type) == selected) item = itemId; } @@ -4395,9 +4588,9 @@ void Tab::create_line_with_widget(ConfigOptionsGroup* optgroup, const std::strin // Return a callback to create a Tab widget to mark the preferences as compatible / incompatible to the current printer. wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &deps) { - deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All"))); + deps.checkbox = CheckBox::GetNewWin(parent, _L("All")); deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - wxGetApp().UpdateDarkUI(deps.checkbox, false, true); + wxGetApp().UpdateDarkUI(deps.checkbox); deps.btn = new ScalableButton(parent, wxID_ANY, "printer", format_wxstr(" %s %s", _L("Set"), dots), wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT); deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); @@ -4409,11 +4602,12 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep deps.checkbox->Bind(wxEVT_CHECKBOX, ([this, &deps](wxCommandEvent e) { - deps.btn->Enable(! deps.checkbox->GetValue()); + const bool is_checked = CheckBox::GetValue(deps.checkbox); + deps.btn->Enable(!is_checked); // All printers have been made compatible with this preset. - if (deps.checkbox->GetValue()) + if (is_checked) this->load_key_value(deps.key_list, std::vector {}); - this->get_field(deps.key_condition)->toggle(deps.checkbox->GetValue()); + this->get_field(deps.key_condition)->toggle(is_checked); this->update_changed_ui(); }) ); @@ -4456,7 +4650,7 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep for (auto idx : selections) value.push_back(presets[idx].ToUTF8().data()); if (value.empty()) { - deps.checkbox->SetValue(1); + CheckBox::SetValue(deps.checkbox, true); deps.btn->Disable(); } // All depending_presets have been made compatible with this preset. @@ -4476,22 +4670,24 @@ void SubstitutionManager::init(DynamicPrintConfig* config, wxWindow* parent, wxF m_parent = parent; m_grid_sizer = grid_sizer; m_em = em_unit(parent); + m_substitutions = m_config->option("gcode_substitutions")->values; + m_chb_match_single_lines.clear(); } -void SubstitutionManager::validate_lenth() +void SubstitutionManager::validate_length() { - std::vector& substitutions = m_config->option("gcode_substitutions")->values; - if ((substitutions.size() % 4) != 0) { + if ((m_substitutions.size() % 4) != 0) { WarningDialog(m_parent, "Value of gcode_substitutions parameter will be cut to valid length", "Invalid length of gcode_substitutions parameter").ShowModal(); - substitutions.resize(substitutions.size() - (substitutions.size() % 4)); + m_substitutions.resize(m_substitutions.size() - (m_substitutions.size() % 4)); + // save changes from m_substitutions to config + m_config->option("gcode_substitutions")->values = m_substitutions; } } -bool SubstitutionManager::is_compatibile_with_ui() +bool SubstitutionManager::is_compatible_with_ui() { - const std::vector& substitutions = m_config->option("gcode_substitutions")->values; - if (int(substitutions.size() / 4) != m_grid_sizer->GetEffectiveRowsCount() - 1) { + if (int(m_substitutions.size() / 4) != m_grid_sizer->GetEffectiveRowsCount() - 1) { ErrorDialog(m_parent, "Invalid compatibility between UI and BE", false).ShowModal(); return false; } @@ -4500,8 +4696,7 @@ bool SubstitutionManager::is_compatibile_with_ui() bool SubstitutionManager::is_valid_id(int substitution_id, const wxString& message) { - const std::vector& substitutions = m_config->option("gcode_substitutions")->values; - if (int(substitutions.size() / 4) < substitution_id) { + if (int(m_substitutions.size() / 4) < substitution_id) { ErrorDialog(m_parent, message, false).ShowModal(); return false; } @@ -4527,7 +4722,7 @@ void SubstitutionManager::create_legend() // delete substitution_id from substitutions void SubstitutionManager::delete_substitution(int substitution_id) { - validate_lenth(); + validate_length(); if (!is_valid_id(substitution_id, "Invalid substitution_id to delete")) return; @@ -4552,15 +4747,16 @@ void SubstitutionManager::add_substitution( int substitution_id, if (substitution_id < 0) { if (m_grid_sizer->IsEmpty()) { create_legend(); - substitution_id = 0; } substitution_id = m_grid_sizer->GetEffectiveRowsCount() - 1; // create new substitution // it have to be added to config too - std::vector& substitutions = m_config->option("gcode_substitutions")->values; for (size_t i = 0; i < 4; i ++) - substitutions.push_back(std::string()); + m_substitutions.push_back(std::string()); + + // save changes from config to m_substitutions + m_config->option("gcode_substitutions")->values = m_substitutions; call_after_layout = true; } @@ -4574,11 +4770,7 @@ void SubstitutionManager::add_substitution( int substitution_id, auto top_sizer = new wxBoxSizer(wxHORIZONTAL); auto add_text_editor = [substitution_id, top_sizer, this](const wxString& value, int opt_pos, int proportion) { - auto editor = new wxTextCtrl(m_parent, wxID_ANY, value, wxDefaultPosition, wxSize(15 * m_em, wxDefaultCoord), wxTE_PROCESS_ENTER -#ifdef _WIN32 - | wxBORDER_SIMPLE -#endif - ); + auto editor = new ::TextInput(m_parent, value, "", "", wxDefaultPosition, wxSize(15 * m_em, wxDefaultCoord), wxTE_PROCESS_ENTER); editor->SetFont(wxGetApp().normal_font()); wxGetApp().UpdateDarkUI(editor); @@ -4607,37 +4799,38 @@ void SubstitutionManager::add_substitution( int substitution_id, bool whole_word = strchr(params.c_str(), 'w') != nullptr || strchr(params.c_str(), 'W') != nullptr; bool match_single_line = strchr(params.c_str(), 's') != nullptr || strchr(params.c_str(), 'S') != nullptr; - auto chb_regexp = new wxCheckBox(m_parent, wxID_ANY, _L("Regular expression")); - chb_regexp->SetValue(regexp); + auto chb_regexp = CheckBox::GetNewWin(m_parent, _L("Regular expression")); + CheckBox::SetValue(chb_regexp, regexp); params_sizer->Add(chb_regexp, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, m_em); - auto chb_case_insensitive = new wxCheckBox(m_parent, wxID_ANY, _L("Case insensitive")); - chb_case_insensitive->SetValue(case_insensitive); + auto chb_case_insensitive = CheckBox::GetNewWin(m_parent, _L("Case insensitive")); + CheckBox::SetValue(chb_case_insensitive, case_insensitive); params_sizer->Add(chb_case_insensitive, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxLEFT, m_em); - auto chb_whole_word = new wxCheckBox(m_parent, wxID_ANY, _L("Whole word")); - chb_whole_word->SetValue(whole_word); + auto chb_whole_word = CheckBox::GetNewWin(m_parent, _L("Whole word")); + CheckBox::SetValue(chb_whole_word, whole_word); params_sizer->Add(chb_whole_word, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxLEFT, m_em); - auto chb_match_single_line = new wxCheckBox(m_parent, wxID_ANY, _L("Match single line")); - chb_match_single_line->SetValue(match_single_line); + auto chb_match_single_line = CheckBox::GetNewWin(m_parent, _L("Match single line")); + CheckBox::SetValue(chb_match_single_line, match_single_line); chb_match_single_line->Show(regexp); + m_chb_match_single_lines.emplace_back(chb_match_single_line); params_sizer->Add(chb_match_single_line, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxLEFT, m_em); - for (wxCheckBox* chb : std::initializer_list{ chb_regexp, chb_case_insensitive, chb_whole_word, chb_match_single_line }) { + for (wxWindow* chb : std::initializer_list{ chb_regexp, chb_case_insensitive, chb_whole_word, chb_match_single_line }) { chb->SetFont(wxGetApp().normal_font()); chb->Bind(wxEVT_CHECKBOX, [this, substitution_id, chb_regexp, chb_case_insensitive, chb_whole_word, chb_match_single_line](wxCommandEvent e) { std::string value = std::string(); - if (chb_regexp->GetValue()) + if (CheckBox::GetValue(chb_regexp)) value += "r"; - if (chb_case_insensitive->GetValue()) + if (CheckBox::GetValue(chb_case_insensitive)) value += "i"; - if (chb_whole_word->GetValue()) + if (CheckBox::GetValue(chb_whole_word)) value += "w"; - if (chb_match_single_line->GetValue()) + if (CheckBox::GetValue(chb_match_single_line)) value += "s"; - chb_match_single_line->Show(chb_regexp->GetValue()); + chb_match_single_line->Show(CheckBox::GetValue(chb_regexp)); m_grid_sizer->Layout(); edit_substitution(substitution_id, 2, value); @@ -4657,16 +4850,34 @@ void SubstitutionManager::add_substitution( int substitution_id, void SubstitutionManager::update_from_config() { - if (!m_grid_sizer->IsEmpty()) - m_grid_sizer->Clear(true); - std::vector& subst = m_config->option("gcode_substitutions")->values; + if (m_substitutions == subst && m_grid_sizer->IsShown(1)) { + // just update visibility for chb_match_single_lines + int subst_id = 0; + assert(m_chb_match_single_lines.size() == size_t(subst.size()/4)); + for (size_t i = 0; i < subst.size(); i += 4) { + const std::string& params = subst[i + 2]; + const bool regexp = strchr(params.c_str(), 'r') != nullptr || strchr(params.c_str(), 'R') != nullptr; + m_chb_match_single_lines[subst_id++]->Show(regexp); + } + + // "gcode_substitutions" values didn't changed in config. There is no need to update/recreate controls + return; + } + + m_substitutions = subst; + + if (!m_grid_sizer->IsEmpty()) { + m_grid_sizer->Clear(true); + m_chb_match_single_lines.clear(); + } + if (subst.empty()) hide_delete_all_btn(); else create_legend(); - validate_lenth(); + validate_length(); int subst_id = 0; for (size_t i = 0; i < subst.size(); i += 4) @@ -4677,24 +4888,27 @@ void SubstitutionManager::update_from_config() void SubstitutionManager::delete_all() { + m_substitutions.clear(); m_config->option("gcode_substitutions")->values.clear(); call_ui_update(); - if (!m_grid_sizer->IsEmpty()) + if (!m_grid_sizer->IsEmpty()) { m_grid_sizer->Clear(true); + m_chb_match_single_lines.clear(); + } m_parent->GetParent()->Layout(); } void SubstitutionManager::edit_substitution(int substitution_id, int opt_pos, const std::string& value) { - std::vector& substitutions = m_config->option("gcode_substitutions")->values; - - validate_lenth(); - if(!is_compatibile_with_ui() || !is_valid_id(substitution_id, "Invalid substitution_id to edit")) + validate_length(); + if(!is_compatible_with_ui() || !is_valid_id(substitution_id, "Invalid substitution_id to edit")) return; - substitutions[substitution_id * 4 + opt_pos] = value; + m_substitutions[substitution_id * 4 + opt_pos] = value; + // save changes from m_substitutions to config + m_config->option("gcode_substitutions")->values = m_substitutions; call_ui_update(); } @@ -4747,6 +4961,7 @@ wxSizer* TabPrint::create_substitutions_widget(wxWindow* parent) m_subst_manager.init(m_config, parent, grid_sizer); m_subst_manager.set_cb_edited_substitution([this]() { update_dirty(); + Layout(); wxGetApp().mainframe->on_config_changed(m_config); // invalidate print }); m_subst_manager.set_cb_hide_delete_all_btn([this]() { @@ -4882,7 +5097,7 @@ void Tab::compatible_widget_reload(PresetDependencies &deps) bool has_any = ! m_config->option(deps.key_list)->values.empty(); has_any ? deps.btn->Enable() : deps.btn->Disable(); - deps.checkbox->SetValue(! has_any); + CheckBox::SetValue(deps.checkbox, !has_any); field->toggle(! has_any); } @@ -4911,6 +5126,9 @@ void Tab::fill_icon_descriptions() "the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group to " "the last saved preset.")); + m_icon_descriptions.emplace_back(&m_bmp_edit_value, L("EDIT VALUE"), + // TRN Description for "EDIT VALUE" in the Help dialog (the icon is currently used only to edit custom gcodes). + L("clicking this icon opens a dialog allowing to edit this value.")); } void Tab::set_tooltips_text() diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 9d57709..53ad7c4 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -37,6 +37,7 @@ #include "OptionsGroup.hpp" #include "libslic3r/Preset.hpp" +class CheckBox; namespace Slic3r { namespace GUI { @@ -56,8 +57,11 @@ class SubstitutionManager std::function m_cb_edited_substitution{ nullptr }; std::function m_cb_hide_delete_all_btn{ nullptr }; - void validate_lenth(); - bool is_compatibile_with_ui(); + std::vector m_substitutions; + std::vector m_chb_match_single_lines; + + void validate_length(); + bool is_compatible_with_ui(); bool is_valid_id(int substitution_id, const wxString& message); public: @@ -185,7 +189,7 @@ protected: struct PresetDependencies { Preset::Type type = Preset::TYPE_INVALID; - wxCheckBox *checkbox = nullptr; + wxWindow *checkbox = nullptr; ScalableButton *btn = nullptr; std::string key_list; // "compatible_printers" std::string key_condition; @@ -213,6 +217,8 @@ protected: ScalableBitmap *m_bmp_non_system; // Bitmaps to be shown on the "Undo user changes" button next to each input field. ScalableBitmap m_bmp_value_revert; + // Bitmaps to be shown on the "Undo user changes" button next to each input field. + ScalableBitmap m_bmp_edit_value; std::vector m_scaled_buttons = {}; std::vector m_scaled_bitmaps = {}; @@ -389,6 +395,9 @@ public: bool validate_custom_gcodes(); bool validate_custom_gcodes_was_shown{ false }; + void edit_custom_gcode(const t_config_option_key& opt_key); + virtual const std::string& get_custom_gcode(const t_config_option_key& opt_key); + virtual void set_custom_gcode(const t_config_option_key& opt_key, const std::string& value); protected: void create_line_with_widget(ConfigOptionsGroup* optgroup, const std::string& opt_key, const std::string& path, widget_t widget); wxSizer* compatible_widget_create(wxWindow* parent, PresetDependencies &deps); @@ -450,7 +459,7 @@ class TabFilament : public Tab void create_extruder_combobox(); void update_volumetric_flow_preset_hints(); - std::map m_overrides_options; + std::map m_overrides_options; public: TabFilament(wxBookCtrlBase* parent) : Tab(parent, _(L("Filament Settings")), Slic3r::Preset::TYPE_FILAMENT) {} @@ -473,6 +482,8 @@ public: void update_extruder_combobox(); int get_active_extruder() const { return m_active_extruder; } + const std::string& get_custom_gcode(const t_config_option_key& opt_key) override; + void set_custom_gcode(const t_config_option_key& opt_key, const std::string& value) override; protected: bool select_preset_by_name(const std::string& name_w_suffix, bool force) override; bool save_current_preset(const std::string& new_name, bool detach) override; diff --git a/src/slic3r/GUI/TextLines.cpp b/src/slic3r/GUI/TextLines.cpp index bc3eb58..3a0baa4 100644 --- a/src/slic3r/GUI/TextLines.cpp +++ b/src/slic3r/GUI/TextLines.cpp @@ -154,7 +154,7 @@ TextLines select_closest_contour(const std::vector &line_contours) { std::vector linesf = to_linesf(expolygons); AABBTreeIndirect::Tree2d tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(linesf); - size_t line_idx; + size_t line_idx = 0; Vec2d hit_point; // double distance = AABBTreeLines::squared_distance_to_indexed_lines(linesf, tree, zero, line_idx, hit_point); @@ -218,24 +218,6 @@ GLModel::Geometry create_geometry(const TextLines &lines, float radius, bool is_ return geometry; } -bool get_line_height_offset(const FontProp &fp, const FontFile &ff, double &line_height_mm, double &line_offset_mm) -{ - double third_ascent_shape_size = get_font_info(ff, fp).ascent / 3.; - int line_height_shape_size = get_line_height(ff, fp); // In shape size - - double scale = get_shape_scale(fp, ff); - line_offset_mm = third_ascent_shape_size * scale / SHAPE_SCALE; - line_height_mm = line_height_shape_size * scale; - - if (line_height_mm < 0) - return false; - - // fix for bad filled ascent in font file - if (line_offset_mm <= 0) - line_offset_mm = line_height_mm / 3; - - return true; -} } // namespace void TextLinesModel::init(const Transform3d &text_tr, @@ -259,8 +241,9 @@ void TextLinesModel::init(const Transform3d &text_tr, FontProp::VerticalAlign align = fp.align.second; - double line_height_mm, line_offset_mm; - if (!get_line_height_offset(fp, ff, line_height_mm, line_offset_mm)) + double line_height_mm = calc_line_height_in_mm(ff, fp); + assert(line_height_mm > 0); + if (line_height_mm <= 0) return; m_model.reset(); @@ -364,9 +347,9 @@ void TextLinesModel::render(const Transform3d &text_world) shader->stop_using(); } -double TextLinesModel::calc_line_height(const Slic3r::Emboss::FontFile &ff, const FontProp &fp) +double TextLinesModel::calc_line_height_in_mm(const Slic3r::Emboss::FontFile &ff, const FontProp &fp) { int line_height = Slic3r::Emboss::get_line_height(ff, fp); // In shape size - double scale = Slic3r::Emboss::get_shape_scale(fp, ff); + double scale = Slic3r::Emboss::get_text_shape_scale(fp, ff); return line_height * scale; } diff --git a/src/slic3r/GUI/TextLines.hpp b/src/slic3r/GUI/TextLines.hpp index a6a7b19..f6e297c 100644 --- a/src/slic3r/GUI/TextLines.hpp +++ b/src/slic3r/GUI/TextLines.hpp @@ -32,7 +32,7 @@ public: void reset() { m_model.reset(); m_lines.clear(); } const Slic3r::Emboss::TextLines &get_lines() const { return m_lines; } - static double calc_line_height(const Slic3r::Emboss::FontFile& ff, const FontProp& fp); // return lineheight in mm + static double calc_line_height_in_mm(const Slic3r::Emboss::FontFile& ff, const FontProp& fp); // return lineheight in mm private: Slic3r::Emboss::TextLines m_lines; diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 556b1f6..6b6a04e 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -838,13 +838,7 @@ UnsavedChangesDialog::UnsavedChangesDialog(Preset::Type type, PresetCollection* void UnsavedChangesDialog::build(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset, const wxString& header) { -#if defined(__WXMSW__) - // ys_FIXME! temporary workaround for correct font scaling - // Because of from wxWidgets 3.1.3 auto rescaling is implemented for the Fonts, - // From the very beginning set dialog font to the wxSYS_DEFAULT_GUI_FONT -// this->SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); this->SetFont(wxGetApp().normal_font()); -#endif // __WXMSW__ int border = 10; int em = em_unit(); @@ -1209,11 +1203,6 @@ static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& BedShape shape(*config.option(opt_key)); return shape.get_full_name_with_params(); } -//Y18 - if (opt_key == "bed_exclude_area") - return get_thumbnails_string(config.option(opt_key)->values); - if (opt_key == "thumbnails") - return get_thumbnails_string(config.option(opt_key)->values); Vec2d val = config.opt(opt_key)->get_at(opt_idx); return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); @@ -1342,7 +1331,7 @@ void UnsavedChangesDialog::on_dpi_changed(const wxRect& suggested_rect) { int em = em_unit(); - msw_buttons_rescale(this, em, { wxID_CANCEL, m_save_btn_id, m_move_btn_id, m_continue_btn_id }); + msw_buttons_rescale(this, em, { wxID_CANCEL, m_save_btn_id, m_move_btn_id, m_continue_btn_id }, 1.5); const wxSize& size = wxSize(70 * em, 30 * em); SetMinSize(size); @@ -1491,6 +1480,7 @@ void DiffPresetDialog::create_presets_sizer() auto add_preset_combobox = [collection, sizer, new_type, this](PresetComboBox** cb_, PresetBundle* preset_bundle) { *cb_ = new PresetComboBox(this, new_type, wxSize(em_unit() * 35, -1), preset_bundle); PresetComboBox*cb = (*cb_); + cb->SetFont(this->GetFont()); cb->show_modif_preset_separately(); cb->set_selection_changed_function([this, new_type, preset_bundle, cb](int selection) { std::string preset_name = Preset::remove_suffix_modified(cb->GetString(selection).ToUTF8().data()); @@ -1555,6 +1545,7 @@ void DiffPresetDialog::create_info_lines() void DiffPresetDialog::create_tree() { m_tree = new DiffViewCtrl(this, wxSize(em_unit() * 65, em_unit() * 40)); + m_tree->SetFont(this->GetFont()); m_tree->AppendToggleColumn_(L"\u2714", DiffModel::colToggle, wxLinux ? 9 : 6); m_tree->AppendBmpTextColumn("", DiffModel::colIconText, 35); m_tree->AppendBmpTextColumn(_L("Left Preset Value"), DiffModel::colOldValue, 15); @@ -1676,16 +1667,9 @@ void DiffPresetDialog::complete_dialog_creation() } DiffPresetDialog::DiffPresetDialog(MainFrame* mainframe) - : DPIDialog(mainframe, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), + : DPIDialog(mainframe, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER, "diff_presets_dialog", mainframe->normal_font().GetPointSize()), m_pr_technology(wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology()) { -#if defined(__WXMSW__) - // ys_FIXME! temporary workaround for correct font scaling - // Because of from wxWidgets 3.1.3 auto rescaling is implemented for the Fonts, - // From the very beginning set dialog font to the wxSYS_DEFAULT_GUI_FONT -// this->SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); - this->SetFont(mainframe->normal_font()); -#endif // __WXMSW__ // Init bundles diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp index 0ec4e70..fbf3896 100644 --- a/src/slic3r/GUI/UpdateDialogs.cpp +++ b/src/slic3r/GUI/UpdateDialogs.cpp @@ -315,6 +315,12 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector &updates, bool force_ flex->Add(update_comment); } + if (! update.new_printers.empty()) { + flex->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer", "New printers", update.new_printers.find(',') == std::string::npos ? 1 : 2) + ":"), 0, wxALIGN_RIGHT); + auto* update_printer = new wxStaticText(this, wxID_ANY, from_u8(update.new_printers)); + update_printer->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); + flex->Add(update_printer); + } versions->Add(flex); if (! update.changelog_url.empty() && update.version.prerelease() == nullptr) { @@ -375,6 +381,12 @@ MsgUpdateForced::MsgUpdateForced(const std::vector& updates) : versions->Add(update_comment); } + if (!update.new_printers.empty()) { + versions->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer", "New printers", update.new_printers.find(',') == std::string::npos ? 1 : 2)+":")/*, 0, wxALIGN_RIGHT*/); + auto* update_printer = new wxStaticText(this, wxID_ANY, from_u8(update.new_printers)); + update_printer->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); + versions->Add(update_printer); + } if (!update.changelog_url.empty() && update.version.prerelease() == nullptr) { auto* line = new wxBoxSizer(wxHORIZONTAL); auto changelog_url = (boost::format(update.changelog_url) % lang_code).str(); diff --git a/src/slic3r/GUI/UpdateDialogs.hpp b/src/slic3r/GUI/UpdateDialogs.hpp index 5e2e50d..49b8c52 100644 --- a/src/slic3r/GUI/UpdateDialogs.hpp +++ b/src/slic3r/GUI/UpdateDialogs.hpp @@ -95,12 +95,14 @@ public: Semver version; std::string comment; std::string changelog_url; + std::string new_printers; - Update(std::string vendor, Semver version, std::string comment, std::string changelog_url) + Update(std::string vendor, Semver version, std::string comment, std::string changelog_url, std::string new_printers) : vendor(std::move(vendor)) , version(std::move(version)) , comment(std::move(comment)) , changelog_url(std::move(changelog_url)) + , new_printers(std::move(new_printers)) {} }; @@ -123,12 +125,14 @@ public: Semver version; std::string comment; std::string changelog_url; + std::string new_printers; - Update(std::string vendor, Semver version, std::string comment, std::string changelog_url) + Update(std::string vendor, Semver version, std::string comment, std::string changelog_url, std::string new_printers) : vendor(std::move(vendor)) , version(std::move(version)) , comment(std::move(comment)) , changelog_url(std::move(changelog_url)) + , new_printers(std::move(new_printers)) {} }; diff --git a/src/slic3r/GUI/Widgets/BitmapToggleButton.cpp b/src/slic3r/GUI/Widgets/BitmapToggleButton.cpp new file mode 100644 index 0000000..ccb6b42 --- /dev/null +++ b/src/slic3r/GUI/Widgets/BitmapToggleButton.cpp @@ -0,0 +1,47 @@ +#include "BitmapToggleButton.hpp" + +#include + +BitmapToggleButton::BitmapToggleButton(wxWindow* parent, const wxString& label, wxWindowID id) +{ + const long style = wxBORDER_NONE | wxBU_EXACTFIT | wxBU_LEFT; + if (label.IsEmpty()) + wxBitmapToggleButton::Create(parent, id, wxNullBitmap, wxDefaultPosition, wxDefaultSize, style); + else { +#ifdef __WXGTK3__ + wxSize label_size = parent->GetTextExtent(label); + wxSize def_size = wxSize(label_size.GetX() + 20, label_size.GetY()); +#else + wxSize def_size = wxDefaultSize; +#endif + // Call Create() from wxToggleButton instead of wxBitmapToggleButton to allow add Label text under Linux + wxToggleButton::Create(parent, id, label, wxDefaultPosition, def_size, style); + } + +#ifdef __WXMSW__ + if (parent) { + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + } +#elif __WXGTK3__ + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); +#endif + + Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { + update(); + + wxCommandEvent evt(wxEVT_CHECKBOX); + evt.SetInt(int(GetValue())); + wxPostEvent(this, evt); + + e.Skip(); + }); +} + +void BitmapToggleButton::update_size() +{ +#ifndef __WXGTK3__ + wxSize best_sz = GetBestSize(); + SetSize(best_sz); +#endif +} diff --git a/src/slic3r/GUI/Widgets/BitmapToggleButton.hpp b/src/slic3r/GUI/Widgets/BitmapToggleButton.hpp new file mode 100644 index 0000000..db653e0 --- /dev/null +++ b/src/slic3r/GUI/Widgets/BitmapToggleButton.hpp @@ -0,0 +1,17 @@ +#ifndef slic3r_GUI_BitmapToggleButton_hpp_ +#define slic3r_GUI_BitmapToggleButton_hpp_ + +#include + +class BitmapToggleButton : public wxBitmapToggleButton +{ + virtual void update() = 0; + +public: + BitmapToggleButton(wxWindow * parent = NULL, const wxString& label = wxEmptyString, wxWindowID id = wxID_ANY); + +protected: + void update_size(); +}; + +#endif // !slic3r_GUI_BitmapToggleButton_hpp_ diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 585e8e2..34b0f98 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -1,7 +1,8 @@ #include "Button.hpp" -#include "Label.hpp" #include +#include +#include BEGIN_EVENT_TABLE(Button, StaticBox) @@ -26,9 +27,9 @@ Button::Button() : paddingSize(10, 8) { background_color = StateColor( - std::make_pair(0xF0F0F1, (int) StateColor::Disabled), - std::make_pair(0x52c7b8, (int) StateColor::Hovered | StateColor::Checked), - std::make_pair(0x009688, (int) StateColor::Checked), + std::make_pair(0xF0F0F0, (int) StateColor::Disabled), + std::make_pair(0x37EE7C, (int) StateColor::Hovered | StateColor::Checked), + std::make_pair(0x00AE42, (int) StateColor::Checked), std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal)); text_color = StateColor( @@ -36,23 +37,20 @@ Button::Button() std::make_pair(*wxBLACK, (int) StateColor::Normal)); } -Button::Button(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id) +Button::Button(wxWindow* parent, wxString text, wxString icon, long style, wxSize iconSize/* = wxSize(16, 16)*/) : Button() { - Create(parent, text, icon, style, iconSize, btn_id); + Create(parent, text, icon, style, iconSize); } -bool Button::Create(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id) +bool Button::Create(wxWindow* parent, wxString text, wxString icon, long style, wxSize iconSize/* = wxSize(16, 16)*/) { - StaticBox::Create(parent, btn_id, wxDefaultPosition, wxDefaultSize, style); + StaticBox::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); state_handler.attach({&text_color}); state_handler.update_binds(); - //BBS set default font - SetFont(Label::Body_14); wxWindow::SetLabel(text); if (!icon.IsEmpty()) { - //BBS set button icon default size to 20 - this->active_icon = ScalableBitmap(this, icon.ToStdString(), iconSize > 0 ? iconSize : 20); + this->active_icon = ScalableBitmap(this, icon.ToStdString(), iconSize); } messureSize(); return true; @@ -65,19 +63,11 @@ void Button::SetLabel(const wxString& label) Refresh(); } -bool Button::SetFont(const wxFont& font) -{ - wxWindow::SetFont(font); - messureSize(); - Refresh(); - return true; -} void Button::SetIcon(const wxString& icon) { if (!icon.IsEmpty()) { - //BBS set button icon default size to 20 - this->active_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt()); + this->active_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_size()); } else { @@ -89,8 +79,7 @@ void Button::SetIcon(const wxString& icon) void Button::SetInactiveIcon(const wxString &icon) { if (!icon.IsEmpty()) { - // BBS set button icon default size to 20 - this->inactive_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt()); + this->inactive_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_size()); } else { this->inactive_icon = ScalableBitmap(); } @@ -135,22 +124,16 @@ bool Button::Enable(bool enable) void Button::SetCanFocus(bool canFocus) { this->canFocus = canFocus; } -void Button::SetValue(bool state) -{ - if (GetValue() == state) return; - state_handler.set_state(state ? StateHandler::Checked : 0, StateHandler::Checked); -} - -bool Button::GetValue() const { return state_handler.states() & StateHandler::Checked; } void Button::Rescale() { - if (this->active_icon.get_bitmap().IsOk()) +/* if (this->active_icon.bmp().IsOk()) this->active_icon.msw_rescale(); - if (this->inactive_icon.get_bitmap().IsOk()) + if (this->inactive_icon.bmp().IsOk()) this->inactive_icon.msw_rescale(); +*/ messureSize(); } @@ -174,15 +157,16 @@ void Button::render(wxDC& dc) dc.SetBrush(*wxTRANSPARENT_BRUSH); // calc content size wxSize szIcon; - wxSize szContent = textSize.GetSize(); + wxSize szContent = textSize; ScalableBitmap icon; if (m_selected || ((states & (int)StateColor::State::Hovered) != 0)) +// if (m_selected || (states & (int)StateColor::State::Hovered)) icon = active_icon; else icon = inactive_icon; int padding = 5; - if (icon.get_bitmap().IsOk()) { + if (icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon szContent.x += padding; @@ -204,7 +188,7 @@ void Button::render(wxDC& dc) rcContent.Deflate(offset.x, offset.y); // start draw wxPoint pt = rcContent.GetLeftTop(); - if (icon.get_bitmap().IsOk()) { + if (icon.bmp().IsOk()) { pt.y += (rcContent.height - szIcon.y) / 2; dc.DrawBitmap(icon.get_bitmap(), pt); //BBS norrow size between text and icon @@ -213,18 +197,11 @@ void Button::render(wxDC& dc) } auto text = GetLabel(); if (!text.IsEmpty()) { - if (pt.x + textSize.width > size.x) + if (pt.x + textSize.x > size.x) text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x); - pt.y += (rcContent.height - textSize.height) / 2; + pt.y += (rcContent.height - textSize.y) / 2; + dc.SetFont(GetFont()); dc.SetTextForeground(text_color.colorForStates(states)); -#if 0 - dc.SetBrush(*wxLIGHT_GREY); - dc.SetPen(wxPen(*wxLIGHT_GREY)); - dc.DrawRectangle(pt, textSize.GetSize()); -#endif -#ifdef __WXOSX__ - pt.y -= textSize.x / 2; -#endif dc.DrawText(text, pt); } } @@ -232,9 +209,13 @@ void Button::render(wxDC& dc) void Button::messureSize() { wxClientDC dc(this); - dc.GetTextExtent(GetLabel(), &textSize.width, &textSize.height, &textSize.x, &textSize.y); - wxSize szContent = textSize.GetSize(); - if (this->active_icon.get_bitmap().IsOk()) { + textSize = dc.GetTextExtent(GetLabel()); + if (minSize.GetWidth() > 0) { + wxWindow::SetMinSize(minSize); + return; + } + wxSize szContent = textSize; + if (this->active_icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon szContent.x += 5; @@ -248,9 +229,6 @@ void Button::messureSize() if (minSize.GetHeight() > 0) size.SetHeight(minSize.GetHeight()); - if (minSize.GetWidth() > size.GetWidth()) - wxWindow::SetMinSize(minSize); - else wxWindow::SetMinSize(size); } @@ -260,7 +238,6 @@ void Button::mouseDown(wxMouseEvent& event) pressedDown = true; if (canFocus) SetFocus(); - if (!HasCapture()) CaptureMouse(); } diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 2f5c8ea..149a74a 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -6,7 +6,7 @@ class Button : public StaticBox { - wxRect textSize; + wxSize textSize; wxSize minSize; // set by outer wxSize paddingSize; ScalableBitmap active_icon; @@ -24,13 +24,12 @@ class Button : public StaticBox public: Button(); - Button(wxWindow* parent, wxString text, wxString icon = "", long style = 0, int iconSize = 0, wxWindowID btn_id = wxID_ANY); + Button(wxWindow* parent, wxString text, wxString icon = "", long style = 0, wxSize iconSize = wxSize(16, 16)); - bool Create(wxWindow* parent, wxString text, wxString icon = "", long style = 0, int iconSize = 0, wxWindowID btn_id = wxID_ANY); + bool Create(wxWindow* parent, wxString text, wxString icon = "", long style = 0, wxSize iconSize = wxSize(16, 16)); void SetLabel(const wxString& label) override; - bool SetFont(const wxFont& font) override; void SetIcon(const wxString& icon); @@ -50,9 +49,6 @@ public: void SetCanFocus(bool canFocus) override; - void SetValue(bool state); - - bool GetValue() const; void Rescale(); diff --git a/src/slic3r/GUI/Widgets/CheckBox.cpp b/src/slic3r/GUI/Widgets/CheckBox.cpp new file mode 100644 index 0000000..618c9a9 --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckBox.cpp @@ -0,0 +1,119 @@ +#include "CheckBox.hpp" + +//#include "../wxExtensions.hpp" + +const int px_cnt = 16; + +CheckBox::CheckBox(wxWindow* parent, const wxString& name) + : BitmapToggleButton(parent, name, wxID_ANY) + , m_on(this, "check_on", px_cnt) + , m_off(this, "check_off", px_cnt) + , m_on_disabled(this, "check_on_disabled", px_cnt) + , m_off_disabled(this, "check_off_disabled", px_cnt) + , m_on_focused(this, "check_on_focused", px_cnt) + , m_off_focused(this, "check_off_focused", px_cnt) +{ +#ifdef __WXOSX__ // State not fully implement on MacOS + Bind(wxEVT_SET_FOCUS, &CheckBox::updateBitmap, this); + Bind(wxEVT_KILL_FOCUS, &CheckBox::updateBitmap, this); + Bind(wxEVT_ENTER_WINDOW, &CheckBox::updateBitmap, this); + Bind(wxEVT_LEAVE_WINDOW, &CheckBox::updateBitmap, this); +#endif + + update(); +} + +void CheckBox::SetValue(bool value) +{ + wxBitmapToggleButton::SetValue(value); + update(); +} + +void CheckBox::Update() +{ + update(); +} + +void CheckBox::Rescale() +{ + update(); +} + +void CheckBox::update() +{ + const bool val = GetValue(); + const wxBitmapBundle& bmp = (val ? m_on : m_off).bmp(); + SetBitmap(bmp); + SetBitmapCurrent(bmp); + SetBitmapDisabled((val ? m_on_disabled : m_off_disabled).bmp()); +#ifdef __WXMSW__ + SetBitmapFocus((val ? m_on_focused : m_off_focused).bmp()); +#endif +#ifdef __WXOSX__ + wxCommandEvent e(wxEVT_UPDATE_UI); + updateBitmap(e); +#endif + + if (GetBitmapMargins().GetWidth() == 0 && !GetLabelText().IsEmpty()) + SetBitmapMargins(4, 0); + update_size(); +} + +#ifdef __WXMSW__ + +CheckBox::State CheckBox::GetNormalState() const +{ + return State_Normal; +} + +#endif + +bool CheckBox::Enable(bool enable) +{ + bool result = wxBitmapToggleButton::Enable(enable); + +#ifdef __WXOSX__ + if (result) { + m_disable = !enable; + wxCommandEvent e(wxEVT_ACTIVATE); + updateBitmap(e); + } +#endif + return result; +} + +#ifdef __WXOSX__ + +wxBitmap CheckBox::DoGetBitmap(State which) const +{ + if (m_disable) { + return wxBitmapToggleButton::DoGetBitmap(State_Disabled); + } + if (m_focus) { + return wxBitmapToggleButton::DoGetBitmap(State_Current); + } + return wxBitmapToggleButton::DoGetBitmap(which); +} + +void CheckBox::updateBitmap(wxEvent & evt) +{ + evt.Skip(); + if (evt.GetEventType() == wxEVT_ENTER_WINDOW) { + m_hover = true; + } else if (evt.GetEventType() == wxEVT_LEAVE_WINDOW) { + m_hover = false; + } else { + if (evt.GetEventType() == wxEVT_SET_FOCUS) { + m_focus = true; + } else if (evt.GetEventType() == wxEVT_KILL_FOCUS) { + m_focus = false; + } + wxMouseEvent e; + if (m_hover) + OnEnterWindow(e); + else + OnLeaveWindow(e); + } +} + +#endif diff --git a/src/slic3r/GUI/Widgets/CheckBox.hpp b/src/slic3r/GUI/Widgets/CheckBox.hpp new file mode 100644 index 0000000..727bbce --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckBox.hpp @@ -0,0 +1,45 @@ +#ifndef slic3r_GUI_CheckBox_hpp_ +#define slic3r_GUI_CheckBox_hpp_ + +#include "../wxExtensions.hpp" +#include "BitmapToggleButton.hpp" + +class CheckBox : public BitmapToggleButton +{ +public: + CheckBox(wxWindow* parent = NULL, const wxString& name = wxEmptyString); + +public: + void SetValue(bool value) override; + void Update() override; + bool Enable(bool enable = true) override; + + void Rescale(); + +protected: +#ifdef __WXMSW__ + virtual State GetNormalState() const wxOVERRIDE; +#endif + +#ifdef __WXOSX__ + virtual wxBitmap DoGetBitmap(State which) const wxOVERRIDE; + + void updateBitmap(wxEvent & evt); + + bool m_disable = false; + bool m_hover = false; + bool m_focus = false; +#endif + +private: + void update() override; + + ScalableBitmap m_on; + ScalableBitmap m_off; + ScalableBitmap m_on_disabled; + ScalableBitmap m_off_disabled; + ScalableBitmap m_on_focused; + ScalableBitmap m_off_focused; +}; + +#endif // !slic3r_GUI_CheckBox_hpp_ diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index 5600477..26cc3ab 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -1,13 +1,13 @@ #include "ComboBox.hpp" -#include "Label.hpp" +#include "UIColors.hpp" #include +#include "../GUI_App.hpp" BEGIN_EVENT_TABLE(ComboBox, TextInput) EVT_LEFT_DOWN(ComboBox::mouseDown) -EVT_LEFT_DCLICK(ComboBox::mouseDown) -//EVT_MOUSEWHEEL(ComboBox::mouseWheelMoved) +EVT_MOUSEWHEEL(ComboBox::mouseWheelMoved) EVT_KEY_DOWN(ComboBox::keyDown) // catch paint events @@ -29,26 +29,20 @@ ComboBox::ComboBox(wxWindow * parent, long style) : drop(texts, icons) { - if (style & wxCB_READONLY) - style |= wxRIGHT; text_off = style & CB_NO_TEXT; TextInput::Create(parent, "", value, (style & CB_NO_DROP_ICON) ? "" : "drop_down", pos, size, style | wxTE_PROCESS_ENTER); - drop.Create(this, style & DD_STYLE_MASK); + drop.Create(this, style); - if (style & wxCB_READONLY) { + SetFont(Slic3r::GUI::wxGetApp().normal_font()); + if (style & wxCB_READONLY) GetTextCtrl()->Hide(); - TextInput::SetFont(Label::Body_14); - TextInput::SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), - std::make_pair(0x009688, (int) StateColor::Hovered), - std::make_pair(0xDBDBDB, (int) StateColor::Normal))); - TextInput::SetBackgroundColor(StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled), - std::make_pair(0xEDFAF2, (int) StateColor::Focused), - std::make_pair(*wxWHITE, (int) StateColor::Normal))); - TextInput::SetLabelColor(StateColor(std::make_pair(0x909090, (int) StateColor::Disabled), - std::make_pair(0x262E30, (int) StateColor::Normal))); - } else { + else GetTextCtrl()->Bind(wxEVT_KEY_DOWN, &ComboBox::keyDown, this); + SetBorderColor(TextInput::GetBorderColor()); + if (parent) { + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); } drop.Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &e) { SetSelection(e.GetInt()); @@ -61,10 +55,20 @@ ComboBox::ComboBox(wxWindow * parent, wxCommandEvent e(wxEVT_COMBOBOX_CLOSEUP); GetEventHandler()->ProcessEvent(e); }); +#ifndef _WIN32 + this->Bind(wxEVT_SYS_COLOUR_CHANGED, [this, parent](wxSysColourChangedEvent& event) { + event.Skip(); + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + }); +#endif for (int i = 0; i < n; ++i) Append(choices[i]); } -int ComboBox::GetSelection() const { return drop.GetSelection(); } +int ComboBox::GetSelection() const +{ + return drop.GetSelection(); +} void ComboBox::SetSelection(int n) { @@ -74,14 +78,11 @@ void ComboBox::SetSelection(int n) SetIcon(icons[drop.selection]); } -void ComboBox::SelectAndNotify(int n) { - SetSelection(n); - sendComboBoxEvent(); -} void ComboBox::Rescale() { + SetFont(Slic3r::GUI::wxGetApp().normal_font()); TextInput::Rescale(); drop.Rescale(); } @@ -127,19 +128,52 @@ wxString ComboBox::GetTextLabel() const bool ComboBox::SetFont(wxFont const& font) { + const bool set_drop_font = drop.SetFont(font); if (GetTextCtrl() && GetTextCtrl()->IsShown()) - return GetTextCtrl()->SetFont(font); - else - return TextInput::SetFont(font); + return GetTextCtrl()->SetFont(font) && set_drop_font; + return TextInput::SetFont(font) && set_drop_font; } -int ComboBox::Append(const wxString &item, const wxBitmap &bitmap) +bool ComboBox::SetBackgroundColour(const wxColour& colour) +{ + TextInput::SetBackgroundColour(colour); + + drop.SetBackgroundColour(colour); + StateColor selector_colors( std::make_pair(clr_background_focused, (int)StateColor::Checked), + Slic3r::GUI::wxGetApp().dark_mode() ? + std::make_pair(clr_background_disabled_dark, (int)StateColor::Disabled) : + std::make_pair(clr_background_disabled_light, (int)StateColor::Disabled), + Slic3r::GUI::wxGetApp().dark_mode() ? + std::make_pair(clr_background_normal_dark, (int)StateColor::Normal) : + std::make_pair(clr_background_normal_light, (int)StateColor::Normal)); + drop.SetSelectorBackgroundColor(selector_colors); + + return true; +} + +bool ComboBox::SetForegroundColour(const wxColour& colour) +{ + TextInput::SetForegroundColour(colour); + + drop.SetTextColor(TextInput::GetTextColor()); + + return true; +} + +void ComboBox::SetBorderColor(StateColor const& color) +{ + TextInput::SetBorderColor(color); + drop.SetBorderColor(color); + drop.SetSelectorBorderColor(color); +} + +int ComboBox::Append(const wxString &item, const wxBitmapBundle &bitmap) { return Append(item, bitmap, nullptr); } int ComboBox::Append(const wxString &item, - const wxBitmap &bitmap, + const wxBitmapBundle &bitmap, void * clientData) { texts.push_back(item); @@ -147,7 +181,23 @@ int ComboBox::Append(const wxString &item, datas.push_back(clientData); types.push_back(wxClientData_None); drop.Invalidate(); - return texts.size() - 1; + return int(texts.size()) - 1; +} + +int ComboBox::Insert(const wxString& item, + const wxBitmapBundle& bitmap, + unsigned int pos) +{ + return Insert(item, bitmap, pos, nullptr); +} + +int ComboBox::Insert(const wxString& item, const wxBitmapBundle& bitmap, + unsigned int pos, void* clientData) +{ + const int n = wxItemContainer::Insert(item, pos, clientData); + if (n != wxNOT_FOUND) + icons[n] = bitmap; + return n; } void ComboBox::DoClear() @@ -157,6 +207,8 @@ void ComboBox::DoClear() datas.clear(); types.clear(); drop.Invalidate(true); + if (GetTextCtrl()->IsShown() || text_off) + GetTextCtrl()->Clear(); } void ComboBox::DoDeleteOneItem(unsigned int pos) @@ -166,7 +218,9 @@ void ComboBox::DoDeleteOneItem(unsigned int pos) icons.erase(icons.begin() + pos); datas.erase(datas.begin() + pos); types.erase(types.begin() + pos); + const int selection = drop.GetSelection(); drop.Invalidate(true); + drop.SetSelection(selection); } unsigned int ComboBox::GetCount() const { return texts.size(); } @@ -181,16 +235,17 @@ void ComboBox::SetString(unsigned int n, wxString const &value) if (n >= texts.size()) return; texts[n] = value; drop.Invalidate(); - if (n == drop.GetSelection()) SetLabel(value); + if (int(n) == drop.GetSelection()) SetLabel(value); } -wxBitmap ComboBox::GetItemBitmap(unsigned int n) { return icons[n]; } - -void ComboBox::SetItemBitmap(unsigned int n, wxBitmap const &bitmap) +wxBitmap ComboBox::GetItemBitmap(unsigned int n) { - if (n >= texts.size()) return; - icons[n] = bitmap; - drop.Invalidate(); + return icons[n].GetBitmapFor(m_parent); +} + +void ComboBox::OnKeyDown(wxKeyEvent &event) +{ + keyDown(event); } int ComboBox::DoInsertItems(const wxArrayStringsAdapter &items, @@ -199,15 +254,17 @@ int ComboBox::DoInsertItems(const wxArrayStringsAdapter &items, wxClientDataType type) { if (pos > texts.size()) return -1; - for (int i = 0; i < items.GetCount(); ++i) { + for (size_t i = 0; i < items.GetCount(); ++i) { texts.insert(texts.begin() + pos, items[i]); icons.insert(icons.begin() + pos, wxNullBitmap); datas.insert(datas.begin() + pos, clientData ? clientData[i] : NULL); types.insert(types.begin() + pos, type); ++pos; } + const int selection = drop.GetSelection(); drop.Invalidate(true); - return pos - 1; + drop.SetSelection(selection); + return int(pos) - 1; } void *ComboBox::DoGetItemClientData(unsigned int n) const { return n < texts.size() ? datas[n] : NULL; } @@ -226,7 +283,7 @@ void ComboBox::mouseDown(wxMouseEvent &event) } else if (drop.HasDismissLongTime()) { drop.autoPosition(); drop_down = true; - drop.Popup(&drop); + drop.Popup(); wxCommandEvent e(wxEVT_COMBOBOX_DROPDOWN); GetEventHandler()->ProcessEvent(e); } @@ -236,7 +293,7 @@ void ComboBox::mouseWheelMoved(wxMouseEvent &event) { event.Skip(); if (drop_down) return; - auto delta = event.GetWheelRotation() < 0 ? 1 : -1; + auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? -1 : 1; unsigned int n = GetSelection() + delta; if (n < GetCount()) { SetSelection((int) n); @@ -246,11 +303,16 @@ void ComboBox::mouseWheelMoved(wxMouseEvent &event) void ComboBox::keyDown(wxKeyEvent& event) { - switch (event.GetKeyCode()) { + int key_code = event.GetKeyCode(); + switch (key_code) { case WXK_RETURN: - case WXK_SPACE: if (drop_down) { drop.DismissAndNotify(); + wxCommandEvent e(wxEVT_COMBOBOX); + e.SetEventObject(this); + e.SetId(GetId()); + e.SetInt(GetSelection()); + GetEventHandler()->ProcessEvent(e); } else if (drop.HasDismissLongTime()) { drop.autoPosition(); drop_down = true; @@ -259,27 +321,55 @@ void ComboBox::keyDown(wxKeyEvent& event) GetEventHandler()->ProcessEvent(e); } break; - case WXK_UP: - case WXK_DOWN: - case WXK_LEFT: - case WXK_RIGHT: - if ((event.GetKeyCode() == WXK_UP || event.GetKeyCode() == WXK_LEFT) && GetSelection() > 0) { + case WXK_UP: { + if (GetSelection() > 0) SetSelection(GetSelection() - 1); - } else if ((event.GetKeyCode() == WXK_DOWN || event.GetKeyCode() == WXK_RIGHT) && GetSelection() + 1 < texts.size()) { + break; + } + case WXK_DOWN: { + if (GetSelection() + 1 < int(texts.size())) SetSelection(GetSelection() + 1); - } else { + break; + } + case WXK_LEFT: { + if (HasFlag(wxCB_READONLY)) { + if(GetSelection() > 0) + SetSelection(GetSelection() - 1); break; } - sendComboBoxEvent(); + const auto pos = GetTextCtrl()->GetInsertionPoint(); + if(pos > 0) + GetTextCtrl()->SetInsertionPoint(pos - 1); break; + } + case WXK_RIGHT: { + if (HasFlag(wxCB_READONLY)) { + if (GetSelection() + 1 < int(texts.size())) + SetSelection(GetSelection() + 1); + break; + } + const size_t pos = size_t(GetTextCtrl()->GetInsertionPoint()); + if (pos < GetLabel().Length()) + GetTextCtrl()->SetInsertionPoint(pos + 1); + break; + } case WXK_TAB: HandleAsNavigationKey(event); break; - default: + default: { + if (drop.IsShown() && HasFlag(wxCB_READONLY)) { + for (size_t n = 0; n < texts.size(); n++) { + if (texts[n].StartsWith(wxString(static_cast(key_code)))) { + SetSelection(int(n)); + break; + } + } + } event.Skip(); break; } } +} void ComboBox::OnEdit() { diff --git a/src/slic3r/GUI/Widgets/ComboBox.hpp b/src/slic3r/GUI/Widgets/ComboBox.hpp index bac3523..a719128 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.hpp +++ b/src/slic3r/GUI/Widgets/ComboBox.hpp @@ -4,13 +4,13 @@ #include "TextInput.hpp" #include "DropDown.hpp" -#define CB_NO_DROP_ICON DD_NO_CHECK_ICON +#define CB_NO_DROP_ICON DD_NO_DROP_ICON #define CB_NO_TEXT DD_NO_TEXT class ComboBox : public wxWindowWithItems { std::vector texts; - std::vector icons; + std::vector icons; std::vector datas; std::vector types; @@ -30,12 +30,19 @@ public: DropDown & GetDropDown() { return drop; } - virtual bool SetFont(wxFont const & font) override; + bool SetFont(wxFont const & font) override; -public: - int Append(const wxString &item, const wxBitmap &bitmap = wxNullBitmap); + bool SetBackgroundColour(const wxColour& colour) override; + bool SetForegroundColour(const wxColour& colour) override; - int Append(const wxString &item, const wxBitmap &bitmap, void *clientData); + void SetBorderColor(StateColor const& color); + + int Append(const wxString &item, const wxBitmapBundle &bitmap = wxNullBitmap); + int Append(const wxString &item, const wxBitmapBundle &bitmap, void *clientData); + + int Insert(const wxString& item, const wxBitmapBundle& bitmap, unsigned int pos); + int Insert(const wxString& item, const wxBitmapBundle& bitmap, + unsigned int pos, void* clientData); unsigned int GetCount() const override; @@ -43,7 +50,6 @@ public: void SetSelection(int n) override; - void SelectAndNotify(int n); virtual void Rescale() override; @@ -60,14 +66,14 @@ public: void SetString(unsigned int n, wxString const &value) override; wxBitmap GetItemBitmap(unsigned int n); - void SetItemBitmap(unsigned int n, wxBitmap const &bitmap); + void OnKeyDown(wxKeyEvent& event); protected: virtual int DoInsertItems(const wxArrayStringsAdapter &items, unsigned int pos, void ** clientData, wxClientDataType type) override; - virtual void DoClear() override; + void DoClear() override; void DoDeleteOneItem(unsigned int pos) override; @@ -76,7 +82,6 @@ protected: void OnEdit() override; - void sendComboBoxEvent(); #ifdef __WIN32__ WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) override; @@ -89,6 +94,7 @@ private: void mouseWheelMoved(wxMouseEvent &event); void keyDown(wxKeyEvent &event); + void sendComboBoxEvent(); DECLARE_EVENT_TABLE() }; diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index 0fd1e20..f59b91f 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -1,7 +1,16 @@ #include "DropDown.hpp" -#include "Label.hpp" +#include "ComboBox.hpp" +#include "../GUI_App.hpp" +#include "../OptionsGroup.hpp" #include +#include +#include +#include +#include +#include + +#include #ifdef __WXGTK__ #include @@ -9,7 +18,7 @@ wxDEFINE_EVENT(EVT_DISMISS, wxCommandEvent); -BEGIN_EVENT_TABLE(DropDown, PopupWindow) +BEGIN_EVENT_TABLE(DropDown, wxPopupTransientWindow) EVT_LEFT_DOWN(DropDown::mouseDown) EVT_LEFT_UP(DropDown::mouseReleased) @@ -29,13 +38,14 @@ END_EVENT_TABLE() */ DropDown::DropDown(std::vector &texts, - std::vector &icons) + std::vector &icons) : texts(texts) , icons(icons) + , radius(Slic3r::GUI::wxGetApp().suppress_round_corners() ? 0 : 5) , state_handler(this) - , border_color(0xDBDBDB) , text_color(0x363636) - , selector_border_color(std::make_pair(0x009688, (int) StateColor::Hovered), + , border_color(0xDBDBDB) + , selector_border_color(std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal)) , selector_background_color(std::make_pair(0xEDFAF2, (int) StateColor::Checked), std::make_pair(*wxWHITE, (int) StateColor::Normal)) @@ -44,29 +54,76 @@ DropDown::DropDown(std::vector &texts, DropDown::DropDown(wxWindow * parent, std::vector &texts, - std::vector &icons, + std::vector &icons, long style) : DropDown(texts, icons) { Create(parent, style); } +#ifdef __WXGTK__ +static gint gtk_popup_key_press (GtkWidget *widget, GdkEvent *gdk_event, wxPopupWindow* win ) +{ + // Ignore events sent out before we connected to the signal + if (win->m_time >= ((GdkEventKey*)gdk_event)->time) + return FALSE; + + GtkWidget *child = gtk_get_event_widget (gdk_event); + + /* We don't ask for button press events on the grab widget, so + * if an event is reported directly to the grab widget, it must + * be on a window outside the application (and thus we remove + * the popup window). Otherwise, we check if the widget is a child + * of the grab widget, and only remove the popup window if it + * is not. */ + if (child != widget) { + while (child) { + if (child == widget) + return FALSE; + child = gtk_widget_get_parent(child); + } + } + + gchar* keyval = gdk_keyval_name(((GdkEventKey*)gdk_event)->keyval); + const long keyCode = strcmp(keyval, "Up") == 0 ? WXK_UP : + strcmp(keyval, "Down") == 0 ? WXK_DOWN : + strcmp(keyval, "Left") == 0 ? WXK_LEFT : + strcmp(keyval, "Right") == 0 ? WXK_RIGHT : + strcmp(keyval, "Return") == 0 ? WXK_RETURN : WXK_NONE; + + if (keyCode != WXK_NONE) { + wxKeyEvent event( wxEVT_KEY_DOWN, win->GetId()); + event.m_keyCode = keyCode; + event.SetEventObject( win ); + (void)win->HandleWindowEvent( event ); + } + + return TRUE; +} +#endif void DropDown::Create(wxWindow * parent, long style) { - PopupWindow::Create(parent, wxPU_CONTAINS_CONTROLS); - SetBackgroundStyle(wxBG_STYLE_PAINT); - SetBackgroundColour(*wxWHITE); + wxPopupTransientWindow::Create(parent); +#ifdef __WXGTK__ + g_signal_connect (m_widget, "key_press_event", G_CALLBACK (gtk_popup_key_press), this); + + Bind(wxEVT_KEY_DOWN, [parent](wxKeyEvent &e) { + if (ComboBox* cb = dynamic_cast(parent)) + cb->OnKeyDown(e); + }); +#endif + + if (!wxOSX) SetBackgroundStyle(wxBG_STYLE_PAINT); state_handler.attach({&border_color, &text_color, &selector_border_color, &selector_background_color}); state_handler.update_binds(); - if ((style & DD_NO_CHECK_ICON) == 0) + if (!(style & DD_NO_CHECK_ICON)) check_bitmap = ScalableBitmap(this, "checked", 16); text_off = style & DD_NO_TEXT; - // BBS set default font - SetFont(Label::Body_14); + SetFont(parent->GetFont()); #ifdef __WXOSX__ - // PopupWindow releases mouse on idle, which may cause various problems, + // wxPopupTransientWindow releases mouse on idle, which may cause various problems, // such as losting mouse move, and dismissing soon on first LEFT_DOWN event. Bind(wxEVT_IDLE, [] (wxIdleEvent & evt) {}); #endif @@ -84,11 +141,12 @@ void DropDown::Invalidate(bool clear) void DropDown::SetSelection(int n) { - assert(n < (int) texts.size()); if (n >= (int) texts.size()) n = -1; if (selection == n) return; selection = n; + if (IsShown()) + autoPosition(); paintNow(); } @@ -103,9 +161,9 @@ void DropDown::SetValue(const wxString &value) selection = i == texts.end() ? -1 : std::distance(texts.begin(), i); } -void DropDown::SetCornerRadius(double radius) +void DropDown::SetCornerRadius(double radius_in) { - this->radius = radius; + radius = radius_in; paintNow(); } @@ -157,7 +215,7 @@ bool DropDown::HasDismissLongTime() { auto now = boost::posix_time::microsec_clock::universal_time(); return !IsShown() && - (now - dismissTime).total_milliseconds() >= 20; + (now - dismissTime).total_milliseconds() >= 200; } void DropDown::paintEvent(wxPaintEvent& evt) @@ -183,15 +241,35 @@ void DropDown::paintNow() Refresh(); } -static wxSize GetBmpSize(wxBitmap & bmp) +void DropDown::SetTransparentBG(wxDC& dc, wxWindow* win) { -#ifdef __APPLE__ - return bmp.GetScaledSize(); + const wxSize size = win->GetSize(); + const wxPoint screen_pos = win->GetScreenPosition(); + wxScreenDC screen_dc; + +#ifdef __WXMSW__ + // Draw screen_dc to dc for transparent background + dc.Blit(0, 0, size.x, size.y, &screen_dc, screen_pos.x, screen_pos.y); #else - return bmp.GetSize(); -#endif + // See https://forums.wxwidgets.org/viewtopic.php?f=1&t=49318 + wxClientDC client_dc(win); + client_dc.Blit(0, 0, size.x, size.y, &screen_dc, screen_pos.x, screen_pos.y); + + wxBitmap bmp(size.x, size.y); + wxMemoryDC mem_dc(bmp); + mem_dc.Blit(0, 0, size.x, size.y, &client_dc, 0, 0); + mem_dc.SelectObject(wxNullBitmap); + dc.DrawBitmap(bmp, 0, 0); +#endif //__WXMSW__ } +constexpr int slider_width = 12; +#ifdef __WXOSX__ +constexpr int slider_step = 1; +#else +constexpr int slider_step = 5; +#endif +constexpr int items_padding = 2; /* * Here we do the actual rendering. I put it in a separate * method so that it can work no matter what type of DC @@ -201,25 +279,38 @@ void DropDown::render(wxDC &dc) { if (texts.size() == 0) return; int states = state_handler.states(); + const wxSize size = GetSize(); + if (radius > 0. && !wxOSX) + SetTransparentBG(dc, this); dc.SetPen(wxPen(border_color.colorForStates(states))); - dc.SetBrush(wxBrush(StateColor::darkModeColorFor(GetBackgroundColour()))); + dc.SetBrush(wxBrush(GetBackgroundColour())); // if (GetWindowStyle() & wxBORDER_NONE) // dc.SetPen(wxNullPen); + const bool is_retina = wxOSX && dc.GetContentScaleFactor() > 1.0; + + wxRect rc(0, 0, size.x, size.y); + // On Retina displays all controls are cut on 1px + if (is_retina) + rc.x = rc.y = 1; // draw background - wxSize size = GetSize(); - if (radius == 0) - dc.DrawRectangle(0, 0, size.x, size.y); + if (radius == 0.0 || wxOSX) + dc.DrawRectangle(rc); else - dc.DrawRoundedRectangle(0, 0, size.x, size.y, radius); + dc.DrawRoundedRectangle(rc, radius); // draw hover rectangle wxRect rcContent = {{0, offset.y}, rowSize}; + const int text_size = int(texts.size()); + + const bool has_bar = rowSize.y * text_size > size.y; + if (has_bar) + rcContent.width -= slider_width; if (hover_item >= 0 && (states & StateColor::Hovered)) { rcContent.y += rowSize.y * hover_item; if (rcContent.GetBottom() > 0 && rcContent.y < size.y) { if (selection == hover_item) - dc.SetBrush(wxBrush(selector_background_color.colorForStates(states | StateColor::Checked))); + dc.SetBrush(wxBrush(selector_background_color.colorForStates(StateColor::Disabled))); dc.SetPen(wxPen(selector_border_color.colorForStates(states))); rcContent.Deflate(4, 1); dc.DrawRectangle(rcContent); @@ -231,11 +322,15 @@ void DropDown::render(wxDC &dc) if (selection >= 0 && (selection != hover_item || (states & StateColor::Hovered) == 0)) { rcContent.y += rowSize.y * selection; if (rcContent.GetBottom() > 0 && rcContent.y < size.y) { - dc.SetBrush(wxBrush(selector_background_color.colorForStates(states | StateColor::Checked))); + dc.SetBrush(wxBrush(selector_background_color.colorForStates(StateColor::Disabled))); dc.SetPen(wxPen(selector_background_color.colorForStates(states))); rcContent.Deflate(4, 1); + if (is_retina) + rc.y += 1; dc.DrawRectangle(rcContent); rcContent.Inflate(4, 1); + if (is_retina) + rc.y -= 1; } rcContent.y = offset.y; } @@ -246,20 +341,19 @@ void DropDown::render(wxDC &dc) } // draw position bar - if (rowSize.y * texts.size() > size.y) { - int height = rowSize.y * texts.size(); - wxRect rect = {size.x - 6, -offset.y * size.y / height, 4, - size.y * size.y / height}; + if (has_bar) { + int height = rowSize.y * text_size; + wxRect rect = {size.x - slider_width - 2, -offset.y * size.y / height + 2, slider_width, + size.y * size.y / height - 3}; dc.SetPen(wxPen(border_color.defaultColor())); - dc.SetBrush(wxBrush(*wxLIGHT_GREY)); + dc.SetBrush(wxBrush(selector_background_color.colorForStates(states | StateColor::Checked))); dc.DrawRoundedRectangle(rect, 2); - rcContent.width -= 6; } // draw check icon rcContent.x += 5; rcContent.width -= 5; - if (check_bitmap.get_bitmap().IsOk()) { + if (check_bitmap.bmp().IsOk()) { auto szBmp = check_bitmap.GetSize(); if (selection >= 0) { wxPoint pt = rcContent.GetLeftTop(); @@ -273,7 +367,7 @@ void DropDown::render(wxDC &dc) } // draw texts & icons dc.SetTextForeground(text_color.colorForStates(states)); - for (int i = 0; i < texts.size(); ++i) { + for (size_t i = 0; i < texts.size(); ++i) { if (rcContent.GetBottom() < 0) { rcContent.y += rowSize.y; continue; @@ -281,18 +375,26 @@ void DropDown::render(wxDC &dc) if (rcContent.y > size.y) break; wxPoint pt = rcContent.GetLeftTop(); auto & icon = icons[i]; - auto size2 = GetBmpSize(icon); + const wxSize pref_icon_sz = get_preferred_size(icon, m_parent); if (iconSize.x > 0) { if (icon.IsOk()) { - pt.y += (rcContent.height - size2.y) / 2; - dc.DrawBitmap(icon, pt); + pt.y += (rcContent.height - pref_icon_sz.y) / 2; +#ifdef __WXGTK3__ + dc.DrawBitmap(icon.GetBitmap(pref_icon_sz), pt); +#else + dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt); +#endif } pt.x += iconSize.x + 5; pt.y = rcContent.y; } else if (icon.IsOk()) { - pt.y += (rcContent.height - size2.y) / 2; - dc.DrawBitmap(icon, pt); - pt.x += size2.x + 5; + pt.y += (rcContent.height - pref_icon_sz.y) / 2; +#ifdef __WXGTK3__ + dc.DrawBitmap(icon.GetBitmap(pref_icon_sz), pt); +#else + dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt); +#endif + pt.x += pref_icon_sz.GetWidth() + 5; pt.y = rcContent.y; } auto text = texts[i]; @@ -319,7 +421,7 @@ void DropDown::messureSize() for (size_t i = 0; i < texts.size(); ++i) { wxSize size1 = text_off ? wxSize() : dc.GetMultiLineTextExtent(texts[i]); if (icons[i].IsOk()) { - wxSize size2 = GetBmpSize(icons[i]); + wxSize size2 = get_preferred_size(icons[i], m_parent); if (size2.x > iconSize.x) iconSize = size2; if (!align_icon) { size1.x += size2.x + (text_off ? 0 : 5); @@ -330,13 +432,13 @@ void DropDown::messureSize() if (!align_icon) iconSize.x = 0; wxSize szContent = textSize; szContent.x += 10; - if (check_bitmap.get_bitmap().IsOk()) { + if (check_bitmap.bmp().IsOk()) { auto szBmp = check_bitmap.GetSize(); szContent.x += szBmp.x + 5; } if (iconSize.x > 0) szContent.x += iconSize.x + (text_off ? 0 : 5); if (iconSize.y > szContent.y) szContent.y = iconSize.y; - szContent.y += 10; + szContent.y += items_padding; if (texts.size() > 15) szContent.x += 6; if (GetParent()) { auto x = GetParent()->GetSize().x; @@ -378,15 +480,15 @@ void DropDown::autoPosition() if (use_content_width && texts.size() <= 15) size.x += 6; size.y = drect.GetBottom() - GetPosition().y - 10; wxWindow::SetSize(size); + } + } if (selection >= 0) { if (offset.y + rowSize.y * (selection + 1) > size.y) - offset.y = size.y - rowSize.y * (selection + 1); + offset.y = size.y - rowSize.y * (selection + 3); else if (offset.y + rowSize.y * selection < 0) offset.y = -rowSize.y * selection; } } - } -} void DropDown::mouseDown(wxMouseEvent& event) { @@ -395,6 +497,11 @@ void DropDown::mouseDown(wxMouseEvent& event) return; // force calc hover item again mouseMove(event); + const wxSize size = GetSize(); + const int height = rowSize.y * int(texts.size()); + const wxRect rect = { size.x - slider_width, -offset.y * size.y / height, slider_width - 2, + size.y * size.y / height }; + slider_grabbed = rect.Contains(event.GetPosition()); pressedDown = true; CaptureMouse(); dragStart = event.GetPosition(); @@ -405,9 +512,14 @@ void DropDown::mouseReleased(wxMouseEvent& event) if (pressedDown) { dragStart = wxPoint(); pressedDown = false; + slider_grabbed = false; if (HasCapture()) ReleaseMouse(); if (hover_item >= 0) { // not moved +#ifdef __WXOSX__ + // To avoid cases, when some dialog appears after item selection, but DropDown is still shown + Hide(); +#endif sendDropDownEvent(); DismissAndNotify(); } @@ -423,14 +535,17 @@ void DropDown::mouseCaptureLost(wxMouseCaptureLostEvent &event) void DropDown::mouseMove(wxMouseEvent &event) { wxPoint pt = event.GetPosition(); + int text_size = int(texts.size()); if (pressedDown) { - wxPoint pt2 = offset + pt - dragStart; - wxSize size = GetSize(); + const int height = rowSize.y * text_size; + const int y_step = slider_grabbed ? -height / GetSize().y : 1; + + wxPoint pt2 = offset + (pt - dragStart)*y_step; dragStart = pt; if (pt2.y > 0) pt2.y = 0; - else if (pt2.y + rowSize.y * int(texts.size()) < size.y) - pt2.y = size.y - rowSize.y * int(texts.size()); + else if (pt2.y + rowSize.y * text_size < GetSize().y) + pt2.y = GetSize().y - rowSize.y * text_size; if (pt2.y != offset.y) { offset = pt2; hover_item = -1; // moved @@ -440,7 +555,7 @@ void DropDown::mouseMove(wxMouseEvent &event) } if (!pressedDown || hover_item >= 0) { int hover = (pt.y - offset.y) / rowSize.y; - if (hover >= (int) texts.size()) hover = -1; + if (hover >= text_size || slider_grabbed) hover = -1; if (hover == hover_item) return; hover_item = hover; if (hover >= 0) @@ -451,20 +566,22 @@ void DropDown::mouseMove(wxMouseEvent &event) void DropDown::mouseWheelMoved(wxMouseEvent &event) { - auto delta = event.GetWheelRotation(); - wxSize size = GetSize(); - wxPoint pt2 = offset + wxPoint{0, delta}; + if (event.GetWheelRotation() == 0) + return; + auto delta = event.GetWheelRotation() > 0 ? rowSize.y : -rowSize.y; + wxPoint pt2 = offset + wxPoint{0, slider_step * delta}; + int text_size = int(texts.size()); if (pt2.y > 0) pt2.y = 0; - else if (pt2.y + rowSize.y * int(texts.size()) < size.y) - pt2.y = size.y - rowSize.y * int(texts.size()); + else if (pt2.y + rowSize.y * text_size < GetSize().y) + pt2.y = GetSize().y - rowSize.y * text_size; if (pt2.y != offset.y) { offset = pt2; } else { return; } int hover = (event.GetPosition().y - offset.y) / rowSize.y; - if (hover >= (int) texts.size()) hover = -1; + if (hover >= text_size) hover = -1; if (hover != hover_item) { hover_item = hover; if (hover >= 0) SetToolTip(texts[hover]); diff --git a/src/slic3r/GUI/Widgets/DropDown.hpp b/src/slic3r/GUI/Widgets/DropDown.hpp index 3b15c14..9fe1a33 100644 --- a/src/slic3r/GUI/Widgets/DropDown.hpp +++ b/src/slic3r/GUI/Widgets/DropDown.hpp @@ -2,31 +2,28 @@ #define slic3r_GUI_DropDown_hpp_ #include +#include + +#include #include "../wxExtensions.hpp" #include "StateHandler.hpp" -#include "PopupWindow.hpp" -//B35 -#if defined __linux__ -#include -#include "wx/dcbuffer.h" -#include "wx/display.h" -#endif #define DD_NO_CHECK_ICON 0x0001 -#define DD_NO_TEXT 0x0002 -#define DD_STYLE_MASK 0x0003 +#define DD_NO_DROP_ICON 0x0002 +#define DD_NO_TEXT 0x0004 +#define DD_STYLE_MASK 0x0008 wxDECLARE_EVENT(EVT_DISMISS, wxCommandEvent); -class DropDown : public PopupWindow +class DropDown : public wxPopupTransientWindow { std::vector & texts; - std::vector & icons; + std::vector & icons; bool need_sync = false; int selection = -1; int hover_item = -1; - double radius = 0; + double radius; bool use_content_width = false; bool align_icon = false; bool text_off = false; @@ -43,23 +40,23 @@ class DropDown : public PopupWindow ScalableBitmap check_bitmap; bool pressedDown = false; + bool slider_grabbed = false; boost::posix_time::ptime dismissTime; wxPoint offset; // x not used wxPoint dragStart; public: DropDown(std::vector &texts, - std::vector &icons); + std::vector &icons); DropDown(wxWindow * parent, std::vector &texts, - std::vector &icons, + std::vector &icons, long style = 0); void Create(wxWindow * parent, long style = 0); -public: void Invalidate(bool clear = false); int GetSelection() const { return selection; } @@ -69,7 +66,6 @@ public: wxString GetValue() const; void SetValue(const wxString &value); -public: void SetCornerRadius(double radius); void SetBorderColor(StateColor const & color); @@ -84,11 +80,11 @@ public: void SetAlignIcon(bool align); -public: void Rescale(); bool HasDismissLongTime(); + static void SetTransparentBG(wxDC& dc, wxWindow* win); protected: void OnDismiss() override; diff --git a/src/slic3r/GUI/Widgets/Label.cpp b/src/slic3r/GUI/Widgets/Label.cpp index 8d23033..35252f3 100644 --- a/src/slic3r/GUI/Widgets/Label.cpp +++ b/src/slic3r/GUI/Widgets/Label.cpp @@ -1,7 +1,7 @@ -#include "libslic3r/Utils.hpp" #include "Label.hpp" #include "StaticBox.hpp" +#include wxFont Label::sysFont(int size, bool bold) { //#ifdef __linux__ @@ -29,7 +29,6 @@ wxFont Label::Head_15; wxFont Label::Head_14; wxFont Label::Head_13; wxFont Label::Head_12; -wxFont Label::Head_11; wxFont Label::Head_10; wxFont Label::Body_16; @@ -43,17 +42,6 @@ wxFont Label::Body_9; void Label::initSysFont() { -#ifdef __linux__ - const std::string& resource_path = Slic3r::resources_dir(); - wxString font_path = wxString::FromUTF8(resource_path+"/fonts/HarmonyOS_Sans_SC_Bold.ttf"); - bool result = wxFont::AddPrivateFont(font_path); - //BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Bold returns %1%")%result; - printf("add font of HarmonyOS_Sans_SC_Bold returns %d\n", result); - font_path = wxString::FromUTF8(resource_path+"/fonts/HarmonyOS_Sans_SC_Regular.ttf"); - result = wxFont::AddPrivateFont(font_path); - //BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Regular returns %1%")%result; - printf("add font of HarmonyOS_Sans_SC_Regular returns %d\n", result); -#endif Head_24 = Label::sysFont(24, true); Head_20 = Label::sysFont(20, true); @@ -63,7 +51,6 @@ void Label::initSysFont() Head_14 = Label::sysFont(14, true); Head_13 = Label::sysFont(13, true); Head_12 = Label::sysFont(12, true); - Head_11 = Label::sysFont(11, true); Head_10 = Label::sysFont(10, true); Body_16 = Label::sysFont(16, false); @@ -76,126 +63,6 @@ void Label::initSysFont() Body_9 = Label::sysFont(9, false); } -class WXDLLIMPEXP_CORE wxTextWrapper2 -{ -public: - wxTextWrapper2() { m_eol = false; } - - // win is used for getting the font, text is the text to wrap, width is the - // max line width or -1 to disable wrapping - void Wrap(wxWindow *win, const wxString &text, int widthMax) - { - const wxClientDC dc(win); - - const wxArrayString ls = wxSplit(text, '\n', '\0'); - for (wxArrayString::const_iterator i = ls.begin(); i != ls.end(); ++i) { - wxString line = *i; - - if (i != ls.begin()) { - // Do this even if the line is empty, except if it's the first one. - OnNewLine(); - } - - // Is this a special case when wrapping is disabled? - if (widthMax < 0) { - DoOutputLine(line); - continue; - } - - for (bool newLine = false; !line.empty(); newLine = true) { - if (newLine) OnNewLine(); - - wxArrayInt widths; - dc.GetPartialTextExtents(line, widths); - - const size_t posEnd = std::lower_bound(widths.begin(), widths.end(), widthMax) - widths.begin(); - - // Does the entire remaining line fit? - if (posEnd == line.length()) { - DoOutputLine(line); - break; - } - - // Find the last word to chop off. - size_t lastSpace = posEnd; - while (lastSpace > 0) { - auto c = line[lastSpace]; - if (c == ' ') - break; - if (c > 0x4E00) { - if (lastSpace != posEnd) - ++lastSpace; - break; - } - --lastSpace; - } - if (lastSpace == 0) { - // No spaces, so can't wrap. - lastSpace = posEnd; - } - - // Output the part that fits. - DoOutputLine(line.substr(0, lastSpace)); - - // And redo the layout with the rest. - if (line[lastSpace] == ' ') ++lastSpace; - line = line.substr(lastSpace); - } - } - } - - // we don't need it, but just to avoid compiler warnings - virtual ~wxTextWrapper2() {} - -protected: - // line may be empty - virtual void OnOutputLine(const wxString &line) = 0; - - // called at the start of every new line (except the very first one) - virtual void OnNewLine() {} - -private: - // call OnOutputLine() and set m_eol to true - void DoOutputLine(const wxString &line) - { - OnOutputLine(line); - - m_eol = true; - } - - // this function is a destructive inspector: when it returns true it also - // resets the flag to false so calling it again wouldn't return true any - // more - bool IsStartOfNewLine() - { - if (!m_eol) return false; - - m_eol = false; - - return true; - } - - bool m_eol; -}; - -class wxLabelWrapper2 : public wxTextWrapper2 -{ -public: - void WrapLabel(wxWindow *text, int widthMax) - { - m_text.clear(); - Wrap(text, text->GetLabel(), widthMax); - text->SetLabel(m_text); - } - -protected: - virtual void OnOutputLine(const wxString &line) wxOVERRIDE { m_text += line; } - - virtual void OnNewLine() wxOVERRIDE { m_text += wxT('\n'); } - -private: - wxString m_text; -}; wxSize Label::split_lines(wxDC &dc, int width, const wxString &text, wxString &multiline_text) @@ -231,27 +98,18 @@ Label::Label(wxWindow *parent, wxFont const &font, wxString const &text, long st { this->font = font; SetFont(font); - SetForegroundColour(wxColour("#262E30")); SetBackgroundColour(StaticBox::GetParentBackgroundColor(parent)); - SetForegroundColour("#262E30"); - if (style & LB_PROPAGATE_MOUSE_EVENT) { - for (auto evt : { - wxEVT_LEFT_UP, wxEVT_LEFT_DOWN}) - Bind(evt, [this] (auto & e) { GetParent()->GetEventHandler()->ProcessEventLocally(e); }); - }; + Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { + if (GetWindowStyle() & LB_HYPERLINK) { + SetFont(this->font.Underlined()); + Refresh(); } -void Label::SetLabel(const wxString& label) -{ - if (GetLabel() == label) - return; - wxStaticText::SetLabel(label); -#ifdef __WXOSX__ - if ((GetWindowStyle() & LB_HYPERLINK)) { - SetLabelMarkup(label); - return; - } -#endif + }); + Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { + SetFont(this->font); + Refresh(); + }); } void Label::SetWindowStyleFlag(long style) @@ -262,27 +120,12 @@ void Label::SetWindowStyleFlag(long style) if (style & LB_HYPERLINK) { this->color = GetForegroundColour(); static wxColor clr_url("#00AE42"); - SetFont(this->font.Underlined()); SetForegroundColour(clr_url); - SetCursor(wxCURSOR_HAND); -#ifdef __WXOSX__ - SetLabelMarkup(GetLabel()); -#endif } else { SetForegroundColour(this->color); SetFont(this->font); - SetCursor(wxCURSOR_ARROW); -#ifdef __WXOSX__ - auto label = GetLabel(); - wxStaticText::SetLabel({}); - wxStaticText::SetLabel(label); -#endif } Refresh(); } -void Label::Wrap(int width) -{ - wxLabelWrapper2 wrapper; - wrapper.WrapLabel(this, width); -} + diff --git a/src/slic3r/GUI/Widgets/Label.hpp b/src/slic3r/GUI/Widgets/Label.hpp index 7e71517..fb327d9 100644 --- a/src/slic3r/GUI/Widgets/Label.hpp +++ b/src/slic3r/GUI/Widgets/Label.hpp @@ -2,15 +2,10 @@ #define slic3r_GUI_Label_hpp_ #include +#include -#define LB_HYPERLINK 0x0020 -#define LB_PROPAGATE_MOUSE_EVENT 0x0040 +#define LB_HYPERLINK 0x0001 -//B35 -#if defined __linux__ -#include -#include "wx/dcclient.h" -#endif class Label : public wxStaticText { @@ -19,11 +14,9 @@ public: Label(wxWindow *parent, wxFont const &font, wxString const &text = {}, long style = 0); - void SetLabel(const wxString& label) override; void SetWindowStyleFlag(long style) override; - void Wrap(int width); private: wxFont font; @@ -38,7 +31,6 @@ public: static wxFont Head_14; static wxFont Head_13; static wxFont Head_12; - static wxFont Head_11; static wxFont Head_10; static wxFont Body_16; diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp new file mode 100644 index 0000000..0456d1a --- /dev/null +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -0,0 +1,633 @@ +#include "SpinInput.hpp" +#include "Button.hpp" + +#include "UIColors.hpp" + +#include "../GUI_App.hpp" + +#include +#include +#include +#include + +BEGIN_EVENT_TABLE(SpinInputBase, wxPanel) + +EVT_KEY_DOWN(SpinInputBase::keyPressed) +EVT_MOUSEWHEEL(SpinInputBase::mouseWheelMoved) + +EVT_PAINT(SpinInputBase::paintEvent) + +END_EVENT_TABLE() + + +/* + * Called by the system of by wxWidgets when the panel needs + * to be redrawn. You can also trigger this call by + * calling Refresh()/Update(). + */ + +SpinInputBase::SpinInputBase() + : label_color(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x6B6B6B, (int) StateColor::Normal)) + , text_color(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal)) +{ + if (Slic3r::GUI::wxGetApp().suppress_round_corners()) + radius = 0; + border_width = 1; +} + +Button * SpinInputBase::create_button(ButtonId id) +{ + auto btn = new Button(this, "", id == ButtonId::btnIncrease ? "spin_inc_act" : "spin_dec_act", wxBORDER_NONE, wxSize(12, 7)); + btn->SetCornerRadius(0); + btn->SetInactiveIcon(id == ButtonId::btnIncrease ? "spin_inc" : "spin_dec"); + btn->DisableFocusFromKeyboard(); + btn->SetSelected(false); + + bind_inc_dec_button(btn, id); + + return btn; +} + +void SpinInputBase::SetCornerRadius(double radius) +{ + this->radius = radius; + Refresh(); +} + +void SpinInputBase::SetLabel(const wxString &label) +{ + wxWindow::SetLabel(label); + messureSize(); + Refresh(); +} + +void SpinInputBase::SetLabelColor(StateColor const &color) +{ + label_color = color; + state_handler.update_binds(); +} + +void SpinInputBase::SetTextColor(StateColor const &color) +{ + text_color = color; + state_handler.update_binds(); +} + +void SpinInputBase::SetSize(wxSize const &size) +{ + wxWindow::SetSize(size); + Rescale(); +} + +wxString SpinInputBase::GetTextValue() const +{ + return text_ctrl->GetValue(); +} + +void SpinInput::SetRange(int min, int max) +{ + this->min = min; + this->max = max; +} + +void SpinInputBase::SetSelection(long from, long to) +{ + if (text_ctrl) + text_ctrl->SetSelection(from, to); +} + +bool SpinInputBase::SetFont(wxFont const& font) +{ + if (text_ctrl) + return text_ctrl->SetFont(font); + return StaticBox::SetFont(font); +} + +bool SpinInputBase::SetBackgroundColour(const wxColour& colour) +{ + const int clr_background_disabled = Slic3r::GUI::wxGetApp().dark_mode() ? clr_background_disabled_dark : clr_background_disabled_light; + StateColor clr_state(std::make_pair(clr_background_disabled, (int)StateColor::Disabled), + std::make_pair(clr_background_focused, (int)StateColor::Checked), + std::make_pair(colour, (int)StateColor::Focused), + std::make_pair(colour, (int)StateColor::Normal)); + + StaticBox::SetBackgroundColor(clr_state); + if (text_ctrl) + text_ctrl->SetBackgroundColour(colour); + if (button_inc) + button_inc->SetBackgroundColor(clr_state); + if (button_dec) + button_dec->SetBackgroundColor(clr_state); + + return true; +} + +bool SpinInputBase::SetForegroundColour(const wxColour& colour) +{ + StateColor clr_state(std::make_pair(clr_foreground_disabled, (int)StateColor::Disabled), + std::make_pair(colour, (int)StateColor::Normal)); + + SetLabelColor(clr_state); + SetTextColor(clr_state); + + if (text_ctrl) + text_ctrl->SetForegroundColour(colour); + if (button_inc) + button_inc->SetTextColor(clr_state); + if (button_dec) + button_dec->SetTextColor(clr_state); + + return true; +} + +void SpinInputBase::SetBorderColor(StateColor const &color) +{ + StaticBox::SetBorderColor(color); + if (button_inc) + button_inc->SetBorderColor(color); + if (button_dec) + button_dec->SetBorderColor(color); +} + +void SpinInputBase::DoSetToolTipText(wxString const &tip) +{ + wxWindow::DoSetToolTipText(tip); + text_ctrl->SetToolTip(tip); +} + +void SpinInputBase::Rescale() +{ + SetFont(Slic3r::GUI::wxGetApp().normal_font()); + text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); + + button_inc->Rescale(); + button_dec->Rescale(); + messureSize(); +} + +bool SpinInputBase::Enable(bool enable) +{ + bool result = text_ctrl->Enable(enable) && wxWindow::Enable(enable); + if (result) { + wxCommandEvent e(EVT_ENABLE_CHANGED); + e.SetEventObject(this); + GetEventHandler()->ProcessEvent(e); + text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states())); + text_ctrl->SetForegroundColour(text_color.colorForStates(state_handler.states())); + button_inc->Enable(enable); + button_dec->Enable(enable); + } + return result; +} + +void SpinInputBase::paintEvent(wxPaintEvent& evt) +{ + // depending on your system you may need to look at double-buffered dcs + wxPaintDC dc(this); + render(dc); +} + +/* + * Here we do the actual rendering. I put it in a separate + * method so that it can work no matter what type of DC + * (e.g. wxPaintDC or wxClientDC) is used. + */ +void SpinInputBase::render(wxDC& dc) +{ + StaticBox::render(dc); + int states = state_handler.states(); + wxSize size = GetSize(); + // draw seperator of buttons + wxPoint pt = button_inc->GetPosition(); + pt.y = size.y / 2; + dc.SetPen(wxPen(border_color.defaultColor())); + + const double scale = dc.GetContentScaleFactor(); + const int btn_w = button_inc->GetSize().GetWidth(); + dc.DrawLine(pt, pt + wxSize{ btn_w - int(scale), 0}); + // draw label + auto label = GetLabel(); + if (!label.IsEmpty()) { + pt.x = size.x - labelSize.x - 5; + pt.y = (size.y - labelSize.y) / 2; + dc.SetFont(GetFont()); + dc.SetTextForeground(label_color.colorForStates(states)); + dc.DrawText(label, pt); + } +} + +void SpinInputBase::messureSize() +{ + wxSize size = GetSize(); + wxSize textSize = text_ctrl->GetSize(); + int h = textSize.y + 8; + if (size.y != h) { + size.y = h; + SetSize(size); + SetMinSize(size); + } + + wxSize btnSize = {14, (size.y - 4) / 2}; + btnSize.x = btnSize.x * btnSize.y / 10; + + const double scale = this->GetContentScaleFactor(); + + wxClientDC dc(this); + labelSize = dc.GetMultiLineTextExtent(GetLabel()); + textSize.x = size.x - labelSize.x - btnSize.x - 16; + text_ctrl->SetSize(textSize); + text_ctrl->SetPosition({int(3. * scale), (size.y - textSize.y) / 2}); + button_inc->SetSize(btnSize); + button_dec->SetSize(btnSize); + button_inc->SetPosition({size.x - btnSize.x - int(3. * scale), size.y / 2 - btnSize.y/* - 1*/}); + button_dec->SetPosition({size.x - btnSize.x - int(3. * scale), size.y / 2 + 1}); +} + +void SpinInputBase::onText(wxCommandEvent &event) +{ + sendSpinEvent(); + event.SetId(GetId()); + ProcessEventLocally(event); +} + +void SpinInputBase::sendSpinEvent() +{ + wxCommandEvent event(wxEVT_SPINCTRL, GetId()); + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); +} + + +// SpinInput + +SpinInput::SpinInput(wxWindow *parent, + wxString text, + wxString label, + const wxPoint &pos, + const wxSize & size, + long style, + int min, int max, int initial) + : SpinInputBase() +{ + Create(parent, text, label, pos, size, style, min, max, initial); +} + +void SpinInput::Create(wxWindow *parent, + wxString text, + wxString label, + const wxPoint &pos, + const wxSize & size, + long style, + int min, int max, int initial) +{ + StaticBox::Create(parent, wxID_ANY, pos, size); + wxWindow::SetLabel(label); + + state_handler.attach({&label_color, &text_color}); + state_handler.update_binds(); + + text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {20, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER, wxTextValidator(wxFILTER_NUMERIC)); +#ifdef __WXOSX__ + text_ctrl->OSXDisableAllSmartSubstitutions(); +#endif // __WXOSX__ + text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); + state_handler.attach_child(text_ctrl); + + text_ctrl->Bind(wxEVT_KILL_FOCUS, &SpinInput::onTextLostFocus, this); + text_ctrl->Bind(wxEVT_TEXT, &SpinInput::onText, this); + text_ctrl->Bind(wxEVT_TEXT_ENTER, &SpinInput::onTextEnter, this); + text_ctrl->Bind(wxEVT_KEY_DOWN, &SpinInput::keyPressed, this); + text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu + button_inc = create_button(ButtonId::btnIncrease); + button_dec = create_button(ButtonId::btnDecrease); + delta = 0; + timer.Bind(wxEVT_TIMER, &SpinInput::onTimer, this); + + SetFont(Slic3r::GUI::wxGetApp().normal_font()); + if (parent) { + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + } + + long initialFromText; + if (text.ToLong(&initialFromText)) initial = initialFromText; + SetRange(min, max); + SetValue(initial); + messureSize(); +} + +void SpinInput::bind_inc_dec_button(Button *btn, ButtonId id) +{ + btn->Bind(wxEVT_LEFT_DOWN, [this, btn, id](auto& e) { + delta = id == ButtonId::btnIncrease ? 1 : -1; + SetValue(val + delta); + text_ctrl->SetFocus(); + btn->CaptureMouse(); + delta *= 8; + timer.Start(100); + sendSpinEvent(); + }); + btn->Bind(wxEVT_LEFT_DCLICK, [this, btn, id](auto& e) { + delta = id == ButtonId::btnIncrease ? 1 : -1; + btn->CaptureMouse(); + SetValue(val + delta); + sendSpinEvent(); + }); + btn->Bind(wxEVT_LEFT_UP, [this, btn](auto& e) { + btn->ReleaseMouse(); + timer.Stop(); + text_ctrl->SelectAll(); + delta = 0; + }); +} + +void SpinInput::SetValue(const wxString &text) +{ + long value; + if ( text.ToLong(&value) ) + SetValue(value); + else + text_ctrl->SetValue(text); +} + +void SpinInput::SetValue(int value) +{ + if (value < min) value = min; + else if (value > max) value = max; + this->val = value; + text_ctrl->SetValue(wxString::FromDouble(value)); +} + +int SpinInput::GetValue()const +{ + return val; +} + +void SpinInput::onTimer(wxTimerEvent &evnet) { + if (delta < -1 || delta > 1) { + delta /= 2; + return; + } + SetValue(val + delta); + sendSpinEvent(); +} + +void SpinInput::onTextLostFocus(wxEvent &event) +{ + timer.Stop(); + for (auto * child : GetChildren()) + if (auto btn = dynamic_cast(child)) + if (btn->HasCapture()) + btn->ReleaseMouse(); + wxCommandEvent e; + onTextEnter(e); + // pass to outer + event.SetId(GetId()); + ProcessEventLocally(event); + event.Skip(); +} + +void SpinInput::onTextEnter(wxCommandEvent &event) +{ + long value; + if (!text_ctrl->GetValue().ToLong(&value)) + value = val; + + if (value != val) { + SetValue(value); + sendSpinEvent(); + } + event.SetId(GetId()); + ProcessEventLocally(event); +} + +void SpinInput::mouseWheelMoved(wxMouseEvent &event) +{ + auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? 1 : -1; + SetValue(val + delta); + sendSpinEvent(); + text_ctrl->SetFocus(); +} + +void SpinInput::keyPressed(wxKeyEvent &event) +{ + switch (event.GetKeyCode()) { + case WXK_UP: + case WXK_DOWN: + long value; + if (!text_ctrl->GetValue().ToLong(&value)) { value = val; } + if (event.GetKeyCode() == WXK_DOWN && value > min) { + --value; + } else if (event.GetKeyCode() == WXK_UP && value + 1 < max) { + ++value; + } + if (value != val) { + SetValue(value); + sendSpinEvent(); + } + break; + default: event.Skip(); break; + } +} + + + +// SpinInputDouble + +SpinInputDouble::SpinInputDouble(wxWindow * parent, + wxString text, + wxString label, + const wxPoint &pos, + const wxSize & size, + long style, + double min, double max, double initial, + double inc) + : SpinInputBase() +{ + Create(parent, text, label, pos, size, style, min, max, initial, inc); +} + +void SpinInputDouble::Create(wxWindow *parent, + wxString text, + wxString label, + const wxPoint &pos, + const wxSize & size, + long style, + double min, double max, double initial, + double inc) +{ + StaticBox::Create(parent, wxID_ANY, pos, size); + wxWindow::SetLabel(label); + + state_handler.attach({&label_color, &text_color}); + state_handler.update_binds(); + + text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {20, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER, wxTextValidator(wxFILTER_NUMERIC)); +#ifdef __WXOSX__ + text_ctrl->OSXDisableAllSmartSubstitutions(); +#endif // __WXOSX__ + text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); + state_handler.attach_child(text_ctrl); + + text_ctrl->Bind(wxEVT_KILL_FOCUS, &SpinInputDouble::onTextLostFocus, this); + text_ctrl->Bind(wxEVT_TEXT, &SpinInputDouble::onText, this); + text_ctrl->Bind(wxEVT_TEXT_ENTER, &SpinInputDouble::onTextEnter, this); + text_ctrl->Bind(wxEVT_KEY_DOWN, &SpinInputDouble::keyPressed, this); + text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu + button_inc = create_button(ButtonId::btnIncrease); + button_dec = create_button(ButtonId::btnDecrease); + delta = 0; + timer.Bind(wxEVT_TIMER, &SpinInputDouble::onTimer, this); + + SetFont(Slic3r::GUI::wxGetApp().normal_font()); + if (parent) { + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + } + + double initialFromText; + if (text.ToDouble(&initialFromText)) initial = initialFromText; + SetRange(min, max); + SetIncrement(inc); + SetValue(initial); + messureSize(); +} + +void SpinInputDouble::bind_inc_dec_button(Button *btn, ButtonId id) +{ + btn->Bind(wxEVT_LEFT_DOWN, [this, btn, id](auto& e) { + delta = id == ButtonId::btnIncrease ? inc : -inc; + SetValue(val + delta); + text_ctrl->SetFocus(); + btn->CaptureMouse(); + delta *= 8; + timer.Start(100); + sendSpinEvent(); + }); + btn->Bind(wxEVT_LEFT_DCLICK, [this, btn, id](auto& e) { + delta = id == ButtonId::btnIncrease ? inc : -inc; + btn->CaptureMouse(); + SetValue(val + delta); + sendSpinEvent(); + }); + btn->Bind(wxEVT_LEFT_UP, [this, btn](auto& e) { + btn->ReleaseMouse(); + timer.Stop(); + text_ctrl->SelectAll(); + delta = 0; + }); +} + +void SpinInputDouble::SetValue(const wxString &text) +{ + double value; + if ( text.ToDouble(&value) ) + SetValue(value); + else + text_ctrl->SetValue(text); +} + +void SpinInputDouble::SetValue(double value) +{ + if (Slic3r::is_approx(value, val)) + return; + + if (value < min) value = min; + else if (value > max) value = max; + this->val = value; + wxString str_val = wxString::FromDouble(value, digits); + text_ctrl->SetValue(str_val); +} + +double SpinInputDouble::GetValue()const +{ + return val; +} + +void SpinInputDouble::SetRange(double min, double max) +{ + this->min = min; + this->max = max; +} + +void SpinInputDouble::SetIncrement(double inc_in) +{ + inc = inc_in; +} + +void SpinInputDouble::SetDigits(unsigned digits_in) +{ + digits = int(digits_in); +} + +void SpinInputDouble::onTimer(wxTimerEvent &evnet) { + if (delta < -inc || delta > inc) { + delta /= 2; + return; + } + SetValue(val + delta); + sendSpinEvent(); +} + +void SpinInputDouble::onTextLostFocus(wxEvent &event) +{ + timer.Stop(); + for (auto * child : GetChildren()) + if (auto btn = dynamic_cast(child)) + if (btn->HasCapture()) + btn->ReleaseMouse(); + wxCommandEvent e; + onTextEnter(e); + // pass to outer + event.SetId(GetId()); + ProcessEventLocally(event); + event.Skip(); +} + +void SpinInputDouble::onTextEnter(wxCommandEvent &event) +{ + double value; + if (!text_ctrl->GetValue().ToDouble(&value)) + val = value; + + if (!Slic3r::is_approx(value, val)) { + SetValue(value); + sendSpinEvent(); + } + event.SetId(GetId()); + ProcessEventLocally(event); +} + +void SpinInputDouble::mouseWheelMoved(wxMouseEvent &event) +{ + auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? inc : -inc; + SetValue(val + delta); + sendSpinEvent(); + text_ctrl->SetFocus(); +} + +void SpinInputDouble::keyPressed(wxKeyEvent &event) +{ + switch (event.GetKeyCode()) { + case WXK_UP: + case WXK_DOWN: + double value; + if (!text_ctrl->GetValue().ToDouble(&value)) + val = value; + + if (event.GetKeyCode() == WXK_DOWN && value > min) { + value -= inc; + } else if (event.GetKeyCode() == WXK_UP && value + inc < max) { + value += inc; + } + if (!Slic3r::is_approx(value, val)) { + SetValue(value); + sendSpinEvent(); + } + break; + default: event.Skip(); break; + } +} + + + diff --git a/src/slic3r/GUI/Widgets/SpinInput.hpp b/src/slic3r/GUI/Widgets/SpinInput.hpp new file mode 100644 index 0000000..f81ec0b --- /dev/null +++ b/src/slic3r/GUI/Widgets/SpinInput.hpp @@ -0,0 +1,190 @@ +#ifndef slic3r_GUI_SpinInput_hpp_ +#define slic3r_GUI_SpinInput_hpp_ + +#include +#include "StaticBox.hpp" + +class Button; + +class SpinInputBase : public wxNavigationEnabled +{ +protected: + wxSize labelSize; + StateColor label_color; + StateColor text_color; + wxTextCtrl * text_ctrl{nullptr}; + Button * button_inc {nullptr}; + Button * button_dec {nullptr}; + wxTimer timer; + + static const int SpinInputWidth = 200; + static const int SpinInputHeight = 50; + + enum class ButtonId + { + btnIncrease, + btnDecrease + }; + +public: + SpinInputBase(); + + void SetCornerRadius(double radius); + + void SetLabel(const wxString &label) wxOVERRIDE; + + void SetLabelColor(StateColor const &color); + + void SetTextColor(StateColor const &color); + + void SetSize(wxSize const &size); + + void Rescale(); + + virtual bool Enable(bool enable = true) wxOVERRIDE; + + wxTextCtrl * GetText() { return text_ctrl; } + + virtual void SetValue(const wxString &text) = 0; + + wxString GetTextValue() const; + + bool SetFont(wxFont const& font) override; + + bool SetBackgroundColour(const wxColour& colour) override; + bool SetForegroundColour(const wxColour& colour) override; + void SetBorderColor(StateColor const& color); + void SetSelection(long from, long to); + +protected: + void DoSetToolTipText(wxString const &tip) override; + + void paintEvent(wxPaintEvent& evt); + + void render(wxDC& dc); + + void messureSize(); + + Button *create_button(ButtonId id); + virtual void bind_inc_dec_button(Button *btn, ButtonId id) = 0; + + // some useful events + virtual void mouseWheelMoved(wxMouseEvent& event) = 0; + virtual void keyPressed(wxKeyEvent& event) = 0; + virtual void onTimer(wxTimerEvent &evnet) = 0; + virtual void onTextLostFocus(wxEvent &event) = 0; + virtual void onTextEnter(wxCommandEvent &event) = 0; + + void onText(wxCommandEvent &event); + + void sendSpinEvent(); + + DECLARE_EVENT_TABLE() +}; + +class SpinInput : public SpinInputBase +{ + int val; + int min; + int max; + int delta; + +public: + SpinInput(wxWindow * parent, + wxString text, + wxString label = "", + const wxPoint &pos = wxDefaultPosition, + const wxSize & size = wxDefaultSize, + long style = 0, + int min = 0, int max = 100, int initial = 0); + + void Create(wxWindow * parent, + wxString text, + wxString label = "", + const wxPoint &pos = wxDefaultPosition, + const wxSize & size = wxDefaultSize, + long style = 0, + int min = 0, + int max = 100, + int initial = 0); + + void SetValue(const wxString &text) override; + + void SetValue (int value); + int GetValue () const; + + void SetRange(int min, int max); + + int GetMin() const { return this->min; } + int GetMax() const { return this->max; } + +protected: + void bind_inc_dec_button(Button* btn, ButtonId id) override; + // some useful events + void mouseWheelMoved(wxMouseEvent& event) override; + void keyPressed(wxKeyEvent& event) override; + void onTimer(wxTimerEvent& evnet) override; + void onTextLostFocus(wxEvent& event) override; + void onTextEnter(wxCommandEvent& event) override; +}; + +class SpinInputDouble : public SpinInputBase +{ + double val; + double min; + double max; + double inc; + double delta; + int digits {-1}; + +public: + + SpinInputDouble() : SpinInputBase() {} + + SpinInputDouble(wxWindow* parent, + wxString text, + wxString label = "", + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + double min = 0., + double max = 100., + double initial = 0., + double inc = 1.); + + void Create(wxWindow* parent, + wxString text, + wxString label = "", + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + double min = 0., + double max = 100., + double initial = 0., + double inc = 1.); + + void SetValue(const wxString& text) override; + + void SetValue(double value); + double GetValue() const; + + //wxString GetTextValue() const override; + + void SetRange(double min, double max); + void SetIncrement(double inc); + void SetDigits(unsigned digits); + + double GetMin() const { return this->min; } + double GetMax() const { return this->max; } + +protected: + void bind_inc_dec_button(Button* btn, ButtonId id) override; + // some useful events + void mouseWheelMoved(wxMouseEvent& event) override; + void keyPressed(wxKeyEvent& event) override; + void onTimer(wxTimerEvent& evnet) override; + void onTextLostFocus(wxEvent& event) override; + void onTextEnter(wxCommandEvent& event) override; +}; + +#endif // !slic3r_GUI_SpinInput_hpp_ diff --git a/src/slic3r/GUI/Widgets/StateColor.cpp b/src/slic3r/GUI/Widgets/StateColor.cpp index 61cc393..5b9e725 100644 --- a/src/slic3r/GUI/Widgets/StateColor.cpp +++ b/src/slic3r/GUI/Widgets/StateColor.cpp @@ -1,80 +1,5 @@ #include "StateColor.hpp" -static bool gDarkMode = false; - -static bool operator<(wxColour const &l, wxColour const &r) { return l.GetRGBA() < r.GetRGBA(); } - -static std::map gDarkColors{ - {"#00AE42", "#21A452"}, - {"#1F8EEA", "#2778D2"}, - {"#FF6F00", "#D15B00"}, - {"#D01B1B", "#BB2A3A"}, - {"#262E30", "#EFEFF0"}, - {"#2C2C2E", "#B3B3B4"}, - {"#6B6B6B", "#818183"}, - {"#ACACAC", "#54545A"}, - {"#EEEEEE", "#4C4C55"}, - {"#E8E8E8", "#3E3E45"}, - {"#323A3D", "#E5E5E4"}, - {"#FFFFFF", "#2D2D31"}, - {"#F8F8F8", "#36363C"}, - {"#F1F1F1", "#36363B"}, - {"#3B4446", "#2D2D30"}, - {"#CECECE", "#54545B"}, - {"#DBFDD5", "#3B3B40"}, - {"#000000", "#FFFFFE"}, - {"#F4F4F4", "#36363D"}, - {"#DBDBDB", "#4A4A51"}, - {"#EDFAF2", "#283232"}, - {"#323A3C", "#E5E5E6"}, - {"#6B6B6A", "#B3B3B5"}, - {"#303A3C", "#E5E5E5"}, - {"#FEFFFF", "#242428"}, - {"#A6A9AA", "#2D2D29"}, - {"#363636", "#B2B3B5"}, - {"#F0F0F1", "#404040"}, - {"#9E9E9E", "#53545A"}, - {"#D7E8DE", "#1F2B27"}, - {"#2B3436", "#808080"}, - {"#ABABAB", "#ABABAB"}, - {"#D9D9D9", "#2D2D32"}, - //{"#F0F0F0", "#4C4C54"}, -}; - -std::map const & StateColor::GetDarkMap() -{ - return gDarkColors; -} - -void StateColor::SetDarkMode(bool dark) { gDarkMode = dark; } - -inline wxColour darkModeColorFor2(wxColour const &color) -{ - if (!gDarkMode) - return color; - auto iter = gDarkColors.find(color); - wxFAIL(iter != gDarkColors.end()); - if (iter != gDarkColors.end()) return iter->second; - return color; -} - -std::map revert(std::map const & map) -{ - std::map map2; - for (auto &p : map) map2.emplace(p.second, p.first); - return map2; -} - -wxColour StateColor::lightModeColorFor(wxColour const &color) -{ - static std::map gLightColors = revert(gDarkColors); - auto iter = gLightColors.find(color); - wxFAIL(iter != gLightColors.end()); - if (iter != gLightColors.end()) return iter->second; - return color; -} - -wxColour StateColor::darkModeColorFor(wxColour const &color) { return darkModeColorFor2(color); } StateColor::StateColor(wxColour const &color) { append(color, 0); } @@ -98,7 +23,7 @@ void StateColor::append(unsigned long color, int states) { if ((color & 0xff000000) == 0) color |= 0xff000000; - wxColour cl; cl.SetRGBA(color & 0xff00ff00 | ((color & 0xff) << 16) | ((color >> 16) & 0xff)); + wxColour cl; cl.SetRGBA((color & 0xff00ff00) | ((color & 0xff) << 16) | ((color >> 16) & 0xff)); append(cl, states); } @@ -125,28 +50,7 @@ wxColour StateColor::defaultColor() { wxColour StateColor::colorForStates(int states) { bool focused = takeFocusedAsHovered_ && (states & Focused); - for (int i = 0; i < statesList_.size(); ++i) { - int s = statesList_[i]; - int on = s & 0xffff; - int off = s >> 16; - if ((on & states) == on && (off & ~states) == off) { - return darkModeColorFor2(colors_[i]); - } - if (focused && (on & Hovered)) { - on |= Focused; - on &= ~Hovered; - if ((on & states) == on && (off & ~states) == off) { - return darkModeColorFor2(colors_[i]); - } - } - } - return wxColour(0, 0, 0, 0); -} - -wxColour StateColor::colorForStatesNoDark(int states) -{ - bool focused = takeFocusedAsHovered_ && (states & Focused); - for (int i = 0; i < statesList_.size(); ++i) { + for (size_t i = 0; i < statesList_.size(); ++i) { int s = statesList_[i]; int on = s & 0xffff; int off = s >> 16; @@ -166,18 +70,18 @@ wxColour StateColor::colorForStatesNoDark(int states) int StateColor::colorIndexForStates(int states) { - for (int i = 0; i < statesList_.size(); ++i) { + for (size_t i = 0; i < statesList_.size(); ++i) { int s = statesList_[i]; int on = s & 0xffff; int off = s >> 16; - if ((on & states) == on && (off & ~states) == off) { return i; } + if ((on & states) == on && (off & ~states) == off) { return int(i); } } return -1; } bool StateColor::setColorForStates(wxColour const &color, int states) { - for (int i = 0; i < statesList_.size(); ++i) { + for (size_t i = 0; i < statesList_.size(); ++i) { if (statesList_[i] == states) { colors_[i] = color; return true; diff --git a/src/slic3r/GUI/Widgets/StateColor.hpp b/src/slic3r/GUI/Widgets/StateColor.hpp index 1f7799f..c75aa07 100644 --- a/src/slic3r/GUI/Widgets/StateColor.hpp +++ b/src/slic3r/GUI/Widgets/StateColor.hpp @@ -3,7 +3,6 @@ #include -#include class StateColor { @@ -22,13 +21,6 @@ public: NotPressed = 16 << 16, }; -public: - static void SetDarkMode(bool dark); - - static std::map const & GetDarkMap(); - static wxColour darkModeColorFor(wxColour const &color); - static wxColour lightModeColorFor(wxColour const &color); - public: template StateColor(std::pair... colors) { @@ -63,7 +55,6 @@ public: wxColour colorForStates(int states); - wxColour colorForStatesNoDark(int states); int colorIndexForStates(int states); diff --git a/src/slic3r/GUI/Widgets/StateHandler.cpp b/src/slic3r/GUI/Widgets/StateHandler.cpp index f66585f..d2f2cc1 100644 --- a/src/slic3r/GUI/Widgets/StateHandler.cpp +++ b/src/slic3r/GUI/Widgets/StateHandler.cpp @@ -1,5 +1,6 @@ #include "StateHandler.hpp" +#include wxDEFINE_EVENT(EVT_ENABLE_CHANGED, wxCommandEvent); StateHandler::StateHandler(wxWindow * owner) @@ -50,7 +51,7 @@ void StateHandler::update_binds() int diff = bind_states ^ bind_states_; State states[] = {Enabled, Checked, Focused, Hovered, Pressed}; wxEventType events[] = {EVT_ENABLE_CHANGED, wxEVT_CHECKBOX, wxEVT_SET_FOCUS, wxEVT_ENTER_WINDOW, wxEVT_LEFT_DOWN}; - wxEventType events2[] = {{0}, {0}, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP}; + wxEventType events2[] = {0, 0, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP}; for (int i = 0; i < 5; ++i) { int s = states[i]; if (diff & s) { @@ -69,18 +70,6 @@ void StateHandler::update_binds() for (auto &c : children_) c->update_binds(); } -void StateHandler::set_state(int state, int mask) -{ - if (states_ & mask == state & mask) return; - int old = states_; - states_ = states_ & ~mask | state & mask; - if (old != states_ && (old | states2_) != (states_ | states2_)) { - if (parent_) - parent_->changed(states_ | states2_); - else - owner_->Refresh(); - } -} StateHandler::StateHandler(StateHandler *parent, wxWindow *owner) : StateHandler(owner) @@ -93,7 +82,7 @@ void StateHandler::changed(wxEvent &event) { event.Skip(); wxEventType events[] = {EVT_ENABLE_CHANGED, wxEVT_CHECKBOX, wxEVT_SET_FOCUS, wxEVT_ENTER_WINDOW, wxEVT_LEFT_DOWN}; - wxEventType events2[] = {{0}, {0}, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP}; + wxEventType events2[] = { 0, 0, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP}; int old = states_; // some events are from another window (ex: text_ctrl of TextInput), save state in states2_ to avoid conflicts for (int i = 0; i < 5; ++i) { diff --git a/src/slic3r/GUI/Widgets/StateHandler.hpp b/src/slic3r/GUI/Widgets/StateHandler.hpp index 8aded43..0a27776 100644 --- a/src/slic3r/GUI/Widgets/StateHandler.hpp +++ b/src/slic3r/GUI/Widgets/StateHandler.hpp @@ -2,14 +2,10 @@ #define slic3r_GUI_StateHandler_hpp_ #include +#include #include "StateColor.hpp" -//B35 -#if defined __linux__ -#include -#include -#endif wxDECLARE_EVENT(EVT_ENABLE_CHANGED, wxCommandEvent); @@ -48,7 +44,6 @@ public: int states() const { return states_ | states2_; } - void set_state(int state, int mask); private: StateHandler(StateHandler * parent, wxWindow *owner); diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 6fde9bb..9780905 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -1,11 +1,13 @@ #include "StaticBox.hpp" #include "../GUI.hpp" #include +#include + +#include "DropDown.hpp" +#include "UIColors.hpp" BEGIN_EVENT_TABLE(StaticBox, wxWindow) -// catch paint events -//EVT_ERASE_BACKGROUND(StaticBox::eraseEvent) EVT_PAINT(StaticBox::paintEvent) END_EVENT_TABLE() @@ -20,9 +22,15 @@ StaticBox::StaticBox() : state_handler(this) , radius(8) { - border_color = StateColor( - std::make_pair(0xF0F0F1, (int) StateColor::Disabled), - std::make_pair(0x303A3C, (int) StateColor::Normal)); + border_color = StateColor(std::make_pair(clr_border_disabled, (int) StateColor::Disabled), +#ifndef __WXMSW__ + std::make_pair(clr_border_normal, (int) StateColor::Focused), +#endif + std::make_pair(clr_border_hovered, (int) StateColor::Hovered), + std::make_pair(clr_border_normal, (int) StateColor::Normal)); +#ifndef __WXMSW__ + border_color.setTakeFocusedAsHovered(false); +#endif } StaticBox::StaticBox(wxWindow* parent, @@ -41,7 +49,8 @@ bool StaticBox::Create(wxWindow* parent, wxWindowID id, const wxPoint& pos, cons wxWindow::Create(parent, id, pos, size, style); state_handler.attach({&border_color, &background_color, &background_color2}); state_handler.update_binds(); - SetBackgroundColour(GetParentBackgroundColor(parent)); +// SetBackgroundColour(GetParentBackgroundColor(parent)); +// SetForegroundColour(parent->GetParent()->GetForegroundColour()); return true; } @@ -109,21 +118,11 @@ wxColor StaticBox::GetParentBackgroundColor(wxWindow* parent) return *wxWHITE; } -void StaticBox::eraseEvent(wxEraseEvent& evt) -{ - // for transparent background, but not work -#ifdef __WXMSW__ - wxDC *dc = evt.GetDC(); - wxSize size = GetSize(); - wxClientDC dc2(GetParent()); - dc->Blit({0, 0}, size, &dc2, GetPosition()); -#endif -} void StaticBox::paintEvent(wxPaintEvent& evt) { // depending on your system you may need to look at double-buffered dcs - wxPaintDC dc(this); + wxBufferedPaintDC dc(this);//wxPaintDC dc(this); render(dc); } @@ -134,31 +133,7 @@ void StaticBox::paintEvent(wxPaintEvent& evt) */ void StaticBox::render(wxDC& dc) { -#ifdef __WXMSW__ - if (radius == 0) { - doRender(dc); - return; - } - - wxSize size = GetSize(); - if (size.x <= 0 || size.y <= 0) - return; - wxMemoryDC memdc; - wxBitmap bmp(size.x, size.y); - memdc.SelectObject(bmp); - //memdc.Blit({0, 0}, size, &dc, {0, 0}); - memdc.SetBackground(wxBrush(GetBackgroundColour())); - memdc.Clear(); - { - wxGCDC dc2(memdc); - doRender(dc2); - } - - memdc.SelectObject(wxNullBitmap); - dc.DrawBitmap(bmp, 0, 0); -#else doRender(dc); -#endif } void StaticBox::doRender(wxDC& dc) @@ -168,37 +143,53 @@ void StaticBox::doRender(wxDC& dc) if (background_color2.count() == 0) { if ((border_width && border_color.count() > 0) || background_color.count() > 0) { wxRect rc(0, 0, size.x, size.y); - if (border_width && border_color.count() > 0) { - if (dc.GetContentScaleFactor() == 1.0) { - int d = floor(border_width / 2.0); - int d2 = floor(border_width - 1); - rc.x += d; - rc.width -= d2; - rc.y += d; - rc.height -= d2; - } else { - int d = 1; - rc.x += d; - rc.width -= d; - rc.y += d; - rc.height -= d; - } - dc.SetPen(wxPen(border_color.colorForStates(states), border_width)); - } else { - dc.SetPen(wxPen(background_color.colorForStates(states))); +#ifdef __WXOSX__ + // On Retina displays all controls are cut on 1px + if (dc.GetContentScaleFactor() > 1.) + rc.Deflate(1, 1); +#endif //__WXOSX__ + + if (radius > 0.) { +#if 0 + DropDown::SetTransparentBG(dc, this); +#else +#ifdef __WXMSW__ + wxColour bg_clr = GetParentBackgroundColor(m_parent); + dc.SetBrush(wxBrush(bg_clr)); + dc.SetPen(wxPen(bg_clr)); + dc.DrawRectangle(rc); +#endif +#endif } + if (background_color.count() > 0) dc.SetBrush(wxBrush(background_color.colorForStates(states))); else dc.SetBrush(wxBrush(GetBackgroundColour())); - if (radius == 0) { - dc.DrawRectangle(rc); + if (border_width && border_color.count() > 0) { +#ifdef __WXOSX__ + const double bw = (double)border_width; +#else + const double bw = dc.GetContentScaleFactor() * (double)border_width; +#endif //__WXOSX__ + { + int d = floor(bw / 2.0); + int d2 = floor(bw - 1); + rc.x += d; + rc.width -= d2; + rc.y += d; + rc.height -= d2; + } + dc.SetPen(wxPen(border_color.colorForStates(states), bw)); + } else { + dc.SetPen(wxPen(background_color.colorForStates(states))); } - else { + if (radius == 0.) + dc.DrawRectangle(rc); + else dc.DrawRoundedRectangle(rc, radius - border_width); } } - } else { wxColor start = background_color.colorForStates(states); wxColor stop = background_color2.colorForStates(states); diff --git a/src/slic3r/GUI/Widgets/StaticBox.hpp b/src/slic3r/GUI/Widgets/StaticBox.hpp index 871c565..a2ad531 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.hpp +++ b/src/slic3r/GUI/Widgets/StaticBox.hpp @@ -31,7 +31,7 @@ public: void SetBorderColorNormal(wxColor const &color); - void SetBackgroundColor(StateColor const &color); + virtual void SetBackgroundColor(StateColor const &color); void SetBackgroundColorNormal(wxColor const &color); @@ -40,7 +40,6 @@ public: static wxColor GetParentBackgroundColor(wxWindow * parent); protected: - void eraseEvent(wxEraseEvent& evt); void paintEvent(wxPaintEvent& evt); @@ -48,7 +47,6 @@ protected: virtual void doRender(wxDC& dc); -protected: double radius; int border_width = 1; StateHandler state_handler; diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp new file mode 100644 index 0000000..c87d302 --- /dev/null +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -0,0 +1,136 @@ +#include "SwitchButton.hpp" + +#include "../wxExtensions.hpp" +#include "../../Utils/MacDarkMode.hpp" + +#include +#include +#include + +SwitchButton::SwitchButton(wxWindow* parent, const wxString& name, wxWindowID id) + : BitmapToggleButton(parent, name, id) + , m_on(this, "toggle_on", 28, 16) + , m_off(this, "toggle_off", 28, 16) + , text_color(std::pair{*wxWHITE, (int) StateColor::Checked}, std::pair{0x6B6B6B, (int) StateColor::Normal}) + , track_color(0xD9D9D9) + , thumb_color(std::pair{0x00AE42, (int) StateColor::Checked}, std::pair{0xD9D9D9, (int) StateColor::Normal}) +{ + Rescale(); +} + +void SwitchButton::SetLabels(wxString const& lbl_on, wxString const& lbl_off) +{ + labels[0] = lbl_on; + labels[1] = lbl_off; + Rescale(); +} + +void SwitchButton::SetTextColor(StateColor const& color) +{ + text_color = color; +} + +void SwitchButton::SetTrackColor(StateColor const& color) +{ + track_color = color; +} + +void SwitchButton::SetThumbColor(StateColor const& color) +{ + thumb_color = color; +} + +void SwitchButton::SetValue(bool value) +{ + if (value != GetValue()) + wxBitmapToggleButton::SetValue(value); + update(); +} + +void SwitchButton::Rescale() +{ + if (!labels[0].IsEmpty()) { +#ifdef __WXOSX__ + auto scale = Slic3r::GUI::mac_max_scaling_factor(); + int BS = (int) scale; +#else + constexpr int BS = 1; +#endif + wxSize thumbSize; + wxSize trackSize; + wxClientDC dc(this); +#ifdef __WXOSX__ + dc.SetFont(dc.GetFont().Scaled(scale)); +#endif + wxSize textSize[2]; + { + textSize[0] = dc.GetTextExtent(labels[0]); + textSize[1] = dc.GetTextExtent(labels[1]); + } + { + thumbSize = textSize[0]; + auto size = textSize[1]; + if (size.x > thumbSize.x) thumbSize.x = size.x; + else size.x = thumbSize.x; + thumbSize.x += BS * 12; + thumbSize.y += BS * 6; + trackSize.x = thumbSize.x + size.x + BS * 10; + trackSize.y = thumbSize.y + BS * 2; + auto maxWidth = GetMaxWidth(); +#ifdef __WXOSX__ + maxWidth *= scale; +#endif + if (trackSize.x > maxWidth) { + thumbSize.x -= (trackSize.x - maxWidth) / 2; + trackSize.x = maxWidth; + } + } + for (int i = 0; i < 2; ++i) { + wxMemoryDC memdc(&dc); + wxBitmap bmp(trackSize.x, trackSize.y); + memdc.SelectObject(bmp); + memdc.SetBackground(wxBrush(GetBackgroundColour())); + memdc.Clear(); + memdc.SetFont(dc.GetFont()); + auto state = i == 0 ? StateColor::Enabled : (StateColor::Checked | StateColor::Enabled); + { +#ifdef __WXMSW__ + wxGCDC dc2(memdc); +#else + wxDC &dc2(memdc); +#endif + dc2.SetBrush(wxBrush(track_color.colorForStates(state))); + dc2.SetPen(wxPen(track_color.colorForStates(state))); + dc2.DrawRoundedRectangle(wxRect({0, 0}, trackSize), trackSize.y / 2); + dc2.SetBrush(wxBrush(thumb_color.colorForStates(StateColor::Checked | StateColor::Enabled))); + dc2.SetPen(wxPen(thumb_color.colorForStates(StateColor::Checked | StateColor::Enabled))); + dc2.DrawRoundedRectangle(wxRect({ i == 0 ? BS : (trackSize.x - thumbSize.x - BS), BS}, thumbSize), thumbSize.y / 2); + } + memdc.SetTextForeground(text_color.colorForStates(state ^ StateColor::Checked)); + memdc.DrawText(labels[0], {BS + (thumbSize.x - textSize[0].x) / 2, BS + (thumbSize.y - textSize[0].y) / 2}); + memdc.SetTextForeground(text_color.colorForStates(state)); + memdc.DrawText(labels[1], {trackSize.x - thumbSize.x - BS + (thumbSize.x - textSize[1].x) / 2, BS + (thumbSize.y - textSize[1].y) / 2}); + memdc.SelectObject(wxNullBitmap); +#ifdef __WXOSX__ + bmp = wxBitmap(bmp.ConvertToImage(), -1, scale); +#endif + (i == 0 ? m_off : m_on).SetBitmap(bmp); + } + } + + update(); +} + +void SwitchButton::SysColorChange() +{ + m_on.sys_color_changed(); + m_off.sys_color_changed(); + + update(); +} + +void SwitchButton::update() +{ + SetBitmap((GetValue() ? m_on : m_off).bmp()); + update_size(); +} diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp new file mode 100644 index 0000000..5c1859e --- /dev/null +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -0,0 +1,42 @@ +#ifndef slic3r_GUI_SwitchButton_hpp_ +#define slic3r_GUI_SwitchButton_hpp_ + +#include "../wxExtensions.hpp" +#include "StateColor.hpp" + +#include "BitmapToggleButton.hpp" + +class SwitchButton : public BitmapToggleButton +{ +public: + SwitchButton(wxWindow * parent = NULL, const wxString& name = wxEmptyString, wxWindowID id = wxID_ANY); + +public: + void SetLabels(wxString const & lbl_on, wxString const & lbl_off); + + void SetTextColor(StateColor const &color); + + void SetTrackColor(StateColor const &color); + + void SetThumbColor(StateColor const &color); + + void SetValue(bool value) override; + + void Rescale(); + + void SysColorChange(); + +private: + void update() override; + +private: + ScalableBitmap m_on; + ScalableBitmap m_off; + + wxString labels[2]; + StateColor text_color; + StateColor track_color; + StateColor thumb_color; +}; + +#endif // !slic3r_GUI_SwitchButton_hpp_ diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 08bfb4f..f31f348 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -1,9 +1,10 @@ #include "TextInput.hpp" -#include "Label.hpp" -#include "TextCtrl.h" -#include "slic3r/GUI/Widgets/Label.hpp" +#include "UIColors.hpp" #include +#include + +#include "slic3r/GUI/GUI_App.hpp" BEGIN_EVENT_TABLE(TextInput, wxPanel) @@ -23,12 +24,9 @@ TextInput::TextInput() , text_color(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal)) { + if (Slic3r::GUI::wxGetApp().suppress_round_corners()) radius = 0; border_width = 1; - border_color = StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), std::make_pair(0x009688, (int) StateColor::Hovered), - std::make_pair(0xDBDBDB, (int) StateColor::Normal)); - background_color = StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled), std::make_pair(*wxWHITE, (int) StateColor::Normal)); - SetFont(Label::Body_12); } TextInput::TextInput(wxWindow * parent, @@ -54,14 +52,17 @@ void TextInput::Create(wxWindow * parent, text_ctrl = nullptr; StaticBox::Create(parent, wxID_ANY, pos, size, style); wxWindow::SetLabel(label); - style &= ~wxRIGHT; state_handler.attach({&label_color, & text_color}); state_handler.update_binds(); - text_ctrl = new TextCtrl(this, wxID_ANY, text, {4, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER); - text_ctrl->SetFont(Label::Body_14); + text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {4, 4}, size, style | wxBORDER_NONE); +#ifdef __WXOSX__ + text_ctrl->OSXDisableAllSmartSubstitutions(); +#endif // __WXOSX__ text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); - text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states())); - text_ctrl->SetForegroundColour(text_color.colorForStates(state_handler.states())); + if (parent) { + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + } state_handler.attach_child(text_ctrl); text_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto &e) { OnEdit(); @@ -74,18 +75,17 @@ void TextInput::Create(wxWindow * parent, e.SetId(GetId()); ProcessEventLocally(e); }); - text_ctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable context menu + text_ctrl->Bind(wxEVT_TEXT, [this](auto &e) { + e.SetId(GetId()); + ProcessEventLocally(e); + }); + text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu if (!icon.IsEmpty()) { - this->icon = ScalableBitmap(this, icon.ToStdString(), 16); + this->drop_down_icon = ScalableBitmap(this, icon.ToStdString(), 16); } messureSize(); } -void TextInput::SetCornerRadius(double radius) -{ - this->radius = radius; - Refresh(); -} void TextInput::SetLabel(const wxString& label) { @@ -94,10 +94,54 @@ void TextInput::SetLabel(const wxString& label) Refresh(); } -void TextInput::SetIcon(const wxBitmap &icon) +bool TextInput::SetBackgroundColour(const wxColour& colour) { - this->icon.get_bitmap() = icon; - Rescale(); + const int clr_background_disabled = Slic3r::GUI::wxGetApp().dark_mode() ? clr_background_disabled_dark : clr_background_disabled_light; + const StateColor clr_state( std::make_pair(clr_background_disabled, (int)StateColor::Disabled), + std::make_pair(clr_background_focused, (int)StateColor::Checked), + std::make_pair(colour, (int)StateColor::Focused), + std::make_pair(colour, (int)StateColor::Normal)); + + SetBackgroundColor(clr_state); + if (text_ctrl) + text_ctrl->SetBackgroundColour(colour); + + return true; +} + +bool TextInput::SetForegroundColour(const wxColour& colour) +{ + const StateColor clr_state( std::make_pair(clr_foreground_disabled, (int)StateColor::Disabled), + std::make_pair(colour, (int)StateColor::Normal)); + + SetLabelColor(clr_state); + SetTextColor (clr_state); + + return true; +} + +void TextInput::SetValue(const wxString& value) +{ + if (text_ctrl) + text_ctrl->SetValue(value); +} + +wxString TextInput::GetValue() +{ + if (text_ctrl) + return text_ctrl->GetValue(); + return wxEmptyString; +} + +void TextInput::SetSelection(long from, long to) +{ + if (text_ctrl) + text_ctrl->SetSelection(from, to); +} + +void TextInput::SetIcon(const wxBitmapBundle& icon_in) +{ + icon = icon_in; } void TextInput::SetLabelColor(StateColor const &color) @@ -110,16 +154,37 @@ void TextInput::SetTextColor(StateColor const& color) { text_color= color; state_handler.update_binds(); + if (text_ctrl) + text_ctrl->SetForegroundColour(text_color.colorForStates(state_handler.states())); +} + +void TextInput::SetBGColor(StateColor const& color) +{ + background_color = color; + state_handler.update_binds(); +} + +void TextInput::SetCtrlSize(wxSize const& size) +{ + StaticBox::SetInitialSize(size); + Rescale(); } void TextInput::Rescale() { - if (!this->icon.name().empty()) - this->icon.msw_rescale(); + if (text_ctrl) + text_ctrl->SetInitialSize(text_ctrl->GetBestSize()); messureSize(); Refresh(); } +bool TextInput::SetFont(const wxFont& font) +{ + bool ret = StaticBox::SetFont(font); + if (text_ctrl) + return ret && text_ctrl->SetFont(font); + return ret; +} bool TextInput::Enable(bool enable) { bool result = text_ctrl->Enable(enable) && wxWindow::Enable(enable); @@ -151,16 +216,21 @@ void TextInput::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (sizeFlags & wxSIZE_USE_EXISTING) return; wxSize size = GetSize(); wxPoint textPos = {5, 0}; - if (this->icon.get_bitmap().IsOk()) { - wxSize szIcon = this->icon.GetSize(); + if (this->icon.IsOk()) { + wxSize szIcon = get_preferred_size(icon, m_parent); textPos.x += szIcon.x; } + wxSize dd_icon_size = wxSize(0,0); + if (this->drop_down_icon.bmp().IsOk()) + dd_icon_size = this->drop_down_icon.GetSize(); bool align_right = GetWindowStyle() & wxRIGHT; if (align_right) textPos.x += labelSize.x; if (text_ctrl) { wxSize textSize = text_ctrl->GetSize(); - textSize.x = size.x - textPos.x - labelSize.x - 10; + wxClientDC dc(this); + const int r_shift = int((dd_icon_size.x == 0 ? 3. : 2.) * dc.GetContentScaleFactor()); + textSize.x = size.x - textPos.x - labelSize.x - dd_icon_size.x - r_shift; text_ctrl->SetSize(textSize); text_ctrl->SetPosition({textPos.x, (size.y - textSize.y) / 2}); } @@ -192,28 +262,38 @@ void TextInput::render(wxDC& dc) bool align_right = GetWindowStyle() & wxRIGHT; // start draw wxPoint pt = {5, 0}; - if (icon.get_bitmap().IsOk()) { - wxSize szIcon = icon.GetSize(); + if (icon.IsOk()) { + wxSize szIcon = get_preferred_size(icon, m_parent); pt.y = (size.y - szIcon.y) / 2; - dc.DrawBitmap(icon.get_bitmap(), pt); - pt.x += szIcon.x + 0; +#ifdef __WXGTK3__ + dc.DrawBitmap(icon.GetBitmap(szIcon), pt); +#else + dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt); +#endif + pt.x += szIcon.x + 5; + } + + // drop_down_icon draw + wxPoint pt_r = {size.x, 0}; + if (drop_down_icon.bmp().IsOk()) { + wxSize szIcon = drop_down_icon.GetSize(); + pt_r.x -= szIcon.x + 2; + pt_r.y = (size.y - szIcon.y) / 2; + dc.DrawBitmap(drop_down_icon.get_bitmap(), pt_r); } auto text = wxWindow::GetLabel(); if (!text.IsEmpty()) { wxSize textSize = text_ctrl->GetSize(); if (align_right) { - if (pt.x + labelSize.x > size.x) - text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x); - pt.y = (size.y - labelSize.y) / 2; - } else { pt.x += textSize.x; pt.y = (size.y + textSize.y) / 2 - labelSize.y; + } else { + if (pt.x + labelSize.x > pt_r.x) + text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, pt_r.x - pt.x); + pt.y = (size.y - labelSize.y) / 2; } dc.SetTextForeground(label_color.colorForStates(states)); - if(align_right) dc.SetFont(GetFont()); - else - dc.SetFont(Label::Body_12); dc.DrawText(text, pt); } } @@ -222,17 +302,10 @@ void TextInput::messureSize() { wxSize size = GetSize(); wxClientDC dc(this); - bool align_right = GetWindowStyle() & wxRIGHT; - if (align_right) - dc.SetFont(GetFont()); - else - dc.SetFont(Label::Body_12); labelSize = dc.GetTextExtent(wxWindow::GetLabel()); - wxSize textSize = text_ctrl->GetSize(); - int h = textSize.y + 8; - if (size.y < h) { - size.y = h; - } + const wxSize textSize = text_ctrl->GetSize(); + const wxSize iconSize = drop_down_icon.bmp().IsOk() ? drop_down_icon.GetSize() : wxSize(0, 0); + size.y = ((textSize.y > iconSize.y) ? textSize.y : iconSize.y) + 8; wxSize minSize = size; minSize.x = GetMinWidth(); SetMinSize(minSize); diff --git a/src/slic3r/GUI/Widgets/TextInput.hpp b/src/slic3r/GUI/Widgets/TextInput.hpp index 1013e7c..b35a6ee 100644 --- a/src/slic3r/GUI/Widgets/TextInput.hpp +++ b/src/slic3r/GUI/Widgets/TextInput.hpp @@ -8,10 +8,11 @@ class TextInput : public wxNavigationEnabled { wxSize labelSize; - ScalableBitmap icon; + wxBitmapBundle icon; + ScalableBitmap drop_down_icon; StateColor label_color; StateColor text_color; - wxTextCtrl * text_ctrl; + wxTextCtrl* text_ctrl{nullptr}; static const int TextInputWidth = 200; static const int TextInputHeight = 50; @@ -36,34 +37,44 @@ public: const wxSize & size = wxDefaultSize, long style = 0); - void SetCornerRadius(double radius); + void SetLabel(const wxString& label) wxOVERRIDE; - void SetLabel(const wxString& label); - - void SetIcon(const wxBitmap &icon); + void SetIcon(const wxBitmapBundle& icon); void SetLabelColor(StateColor const &color); + void SetBGColor(StateColor const &color); void SetTextColor(StateColor const &color); + void SetCtrlSize(wxSize const& size); virtual void Rescale(); + bool SetFont(const wxFont &font) override; virtual bool Enable(bool enable = true) override; virtual void SetMinSize(const wxSize& size) override; + bool SetBackgroundColour(const wxColour &colour) override; + + bool SetForegroundColour(const wxColour &colour) override; wxTextCtrl *GetTextCtrl() { return text_ctrl; } wxTextCtrl const *GetTextCtrl() const { return text_ctrl; } + void SetValue(const wxString& value); + + wxString GetValue(); + + void SetSelection(long from, long to); protected: virtual void OnEdit() {} - virtual void DoSetSize( - int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); + void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO) wxOVERRIDE; void DoSetToolTipText(wxString const &tip) override; + StateColor GetTextColor() const { return text_color; } + StateColor GetBorderColor() const { return border_color; } private: void paintEvent(wxPaintEvent& evt); diff --git a/src/slic3r/GUI/Widgets/UIColors.hpp b/src/slic3r/GUI/Widgets/UIColors.hpp new file mode 100644 index 0000000..14ecb6f --- /dev/null +++ b/src/slic3r/GUI/Widgets/UIColors.hpp @@ -0,0 +1,18 @@ +#ifndef slic3r_UI_Colors_hpp_ +#define slic3r_UI_Colors_hpp_ + +static const int clr_border_normal = 0x646464;//0xDBDBDB; +static const int clr_border_hovered = 0xED6B21;//0x00AE42; +static const int clr_border_disabled = 0x646464;//0xDBDBDB; + +static const int clr_background_normal_light = 0xFFFFFF; +static const int clr_background_normal_dark = 0x2B2B2B;//0x434343; +static const int clr_background_focused = 0xED6B21;//0xEDFAF2; +static const int clr_background_disabled_dark = 0x404040;//0xF0F0F0; +static const int clr_background_disabled_light = 0xD9D9D9;//0xF0F0F0; + +static const int clr_foreground_normal = 0x262E30; +static const int clr_foreground_focused = 0x00AE42; +static const int clr_foreground_disabled = 0x909090; + +#endif // !slic3r_UI_Colors_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/WifiConfigDialog.cpp b/src/slic3r/GUI/WifiConfigDialog.cpp new file mode 100644 index 0000000..6b088d8 --- /dev/null +++ b/src/slic3r/GUI/WifiConfigDialog.cpp @@ -0,0 +1,304 @@ +#include "WifiConfigDialog.hpp" + +#include "GUI_App.hpp" +#include "GUI.hpp" +#include "I18N.hpp" +#include "format.hpp" +#include "RemovableDriveManager.hpp" +#include "MsgDialog.hpp" + +#include +#include +#include +#include +#include +#include +#include + +#include "Widgets/ComboBox.hpp" + +namespace Slic3r { +namespace GUI { + +const char* WIFI_CONFIGFILE_NAME = "prusa_printer_settings.ini"; + +WifiConfigDialog::WifiConfigDialog(wxWindow* parent, std::string& file_path, RemovableDriveManager* removable_manager, const wxString& preffered_drive) + // TRN: This is the dialog title. + : DPIDialog(parent, wxID_ANY, _L("Wi-Fi Configuration File Generator"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + , m_wifi_scanner(new WifiScanner()) + , out_file_path(file_path) + , m_removable_manager(removable_manager) +{ + wxPanel* panel = new wxPanel(this); + wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); + panel->SetSizer(vsizer); + + // TRN Wifi config dialog explanation line 1. + wxStaticText* explain_label1 = new wxStaticText(panel, wxID_ANY, _L("Generate a file to be loaded by a Prusa printer to configure its Wi-Fi connection.")); + // TRN Wifi config dialog explanation line 2. + wxStaticText* explain_label2 = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr(_L("Write this file on the USB flash drive. Its name will be %1%."), WIFI_CONFIGFILE_NAME)); + // TRN Wifi config dialog explanation line 3. + wxStaticText* explain_label3 = new wxStaticText(panel, wxID_ANY, _L("Your Prusa printer should load this file automatically.")); + // TRN Wifi config dialog explanation line 4. + wxStaticText* explain_label4 = new wxStaticText(panel, wxID_ANY, _L("Note: This file will contain the SSID and password in plain text.")); + + auto* ssid_sizer = new wxBoxSizer(wxHORIZONTAL); + // TRN SSID of WiFi network. It is a standard abbreviation which should probably not change in most languages. + wxStaticText* ssid_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("SSID"))); + m_ssid_combo = new ::ComboBox(panel, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, DD_NO_CHECK_ICON); +#if __APPLE__ + m_ssid_combo->SetToolTip(_L("On some versions of MacOS, this only loads SSID of connected network.")); +#endif // __APPLE__ + rescan_networks(false); + m_ssid_button_id = NewControlId(); + // TRN Text of button to rescan visible networks in Wifi Config dialog. + wxButton* ssid_button = new wxButton(panel, m_ssid_button_id, _(L("Rescan"))); + ssid_sizer->Add(m_ssid_combo, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + ssid_sizer->Add(ssid_button, 0); + + auto* pass_sizer = new wxBoxSizer(wxHORIZONTAL); + // TRN Password of WiFi network. + wxStaticText* password_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("Password"))); + m_pass_textctrl = new ::TextInput(panel, "", "", "", wxDefaultPosition, wxDefaultSize); +#if __APPLE__ + pass_sizer->Add(m_pass_textctrl, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + m_pass_button_id = NewControlId(); + // TRN Text of button to retrieve password from keychain in Wifi Config dialog. Only on Mac. + wxButton* pass_button = new wxButton(panel, m_pass_button_id, _(L("Retrieve"))); + pass_sizer->Add(pass_button, 0); + pass_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_retrieve_password, this); +#else + pass_sizer->Add(m_pass_textctrl, 1, wxALIGN_CENTER_VERTICAL, 10); +#endif // __APPLE__ + // show password if current ssid was selected already + fill_password(); + + auto* drive_sizer = new wxBoxSizer(wxHORIZONTAL); + // TRN description of Combo Box with path to USB drive. + wxStaticText* drive_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("Drive"))); + m_drive_combo = new ::ComboBox(panel, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, DD_NO_CHECK_ICON); + rescan_drives(preffered_drive); + m_drive_button_id = NewControlId(); + // TRN Text of button to rescan connect usb drives in Wifi Config dialog. + wxButton* drive_button = new wxButton(panel, m_drive_button_id, _(L("Rescan"))); + drive_sizer->Add(m_drive_combo, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + drive_sizer->Add(drive_button, 0); + + // TRN Text of button to write config file in Wifi Config dialog. + wxButton* ok_button = new wxButton(panel, wxID_OK, _L("Write")); + wxButton* cancel_button = new wxButton(panel, wxID_CANCEL); + + auto* grid = new wxFlexGridSizer(2, 15, 15); + grid->AddGrowableCol(1); + + grid->Add(ssid_label, 0, wxALIGN_CENTER_VERTICAL); + grid->Add(ssid_sizer, 0, wxEXPAND); + + grid->Add(password_label, 0, wxALIGN_CENTER_VERTICAL); + grid->Add(pass_sizer, 0, wxEXPAND); + + grid->Add(drive_label, 0, wxALIGN_CENTER_VERTICAL); + grid->Add(drive_sizer, 0, wxEXPAND); + + vsizer->Add(explain_label1, 0, wxALIGN_CENTER_VERTICAL); + vsizer->Add(explain_label2, 0, wxALIGN_CENTER_VERTICAL); + vsizer->Add(explain_label3, 0, wxALIGN_CENTER_VERTICAL); + vsizer->Add(explain_label4, 0, wxALIGN_CENTER_VERTICAL); + vsizer->Add(grid, 0, wxEXPAND | wxTOP | wxBOTTOM, 15); + + wxBoxSizer* buttons_sizer = new wxBoxSizer(wxHORIZONTAL); + buttons_sizer->Add(ok_button, 1, wxLEFT); + buttons_sizer->AddStretchSpacer(); + buttons_sizer->Add(cancel_button, 1, wxRIGHT); + + vsizer->Add(buttons_sizer, 0, wxEXPAND); + + wxBoxSizer* topsizer = new wxBoxSizer(wxVERTICAL); + topsizer->Add(panel, 1, wxEXPAND | wxALL, 15); + SetSizerAndFit(topsizer); + + ok_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_ok, this); + m_ssid_combo->Bind(wxEVT_TEXT, &WifiConfigDialog::on_combo, this); + drive_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_rescan_drives, this); + ssid_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_rescan_networks, this); + + wxGetApp().UpdateDlgDarkUI(this); +} + +WifiConfigDialog::~WifiConfigDialog() +{ + if (m_wifi_scanner) + delete m_wifi_scanner; +} + +void WifiConfigDialog::on_combo(wxCommandEvent& e) +{ + fill_password(); +} + +void WifiConfigDialog::fill_password() +{ + assert(m_ssid_combo && m_pass_textctrl && m_wifi_scanner); + if (auto it = m_wifi_scanner->get_map().find(m_ssid_combo->GetValue()); it != m_wifi_scanner->get_map().end()) + m_pass_textctrl->SetValue(boost::nowide::widen(it->second)); +} + +void WifiConfigDialog::on_retrieve_password(wxCommandEvent& e) +{ + if (m_ssid_combo->GetValue().empty()) { + return; + } + + std::string psk = m_wifi_scanner->get_psk(boost::nowide::narrow(m_ssid_combo->GetValue())); + if (psk.empty()) { + // TRN Alert message when retrieving password for wifi from keychain. Probably will display only on Apple so keychain is MacOS term. + wxString msg = _L("No password in the keychain for given SSID."); + show_info(nullptr, msg); + return; + } + m_pass_textctrl->SetValue(boost::nowide::widen(psk)); +} + +void WifiConfigDialog::on_rescan_drives(wxCommandEvent& e) +{ + rescan_drives({}); +} + +void WifiConfigDialog::rescan_drives(const wxString& preffered_drive) +{ + assert(m_drive_combo && m_removable_manager); + m_drive_combo->Clear(); + std::vector ddata = m_removable_manager->get_drive_list(); + for (const auto& data : ddata) { + wxString item = boost::nowide::widen(data.path); + m_drive_combo->Append(item); + if (preffered_drive == item) + m_ssid_combo->Select(m_ssid_combo->GetCount() - 1); + } + if (m_drive_combo->GetSelection() == -1 && m_drive_combo->GetCount() > 0) { + m_drive_combo->Select(0); + } +} + +void WifiConfigDialog::on_rescan_networks(wxCommandEvent& e) +{ + rescan_networks(true); +} + +void WifiConfigDialog::rescan_networks(bool select) +{ + assert(m_ssid_combo && m_wifi_scanner); + m_wifi_scanner->scan(); + std::string current = m_wifi_scanner->get_current_ssid(); + const auto& map = m_wifi_scanner->get_map(); + m_ssid_combo->Clear(); + for (const auto pair : map) { + m_ssid_combo->Append(pair.first); + // select ssid of current network (if connected) + if (current == pair.first) + m_ssid_combo->Select(m_ssid_combo->GetCount() - 1); + } + if (m_ssid_combo->GetSelection() == -1 && m_ssid_combo->GetCount() > 0) + m_ssid_combo->Select(0); + if (select && m_ssid_combo->GetSelection() != -1) + fill_password(); +} + +void WifiConfigDialog::on_ok(wxCommandEvent& e) +{ + assert(m_ssid_combo && m_pass_textctrl); + if (m_ssid_combo->GetValue().empty()) { + // TRN Alert message when writing WiFi configuration file to usb drive. + wxString msg = _L("SSID field is empty."); + show_info(nullptr, msg); + return; + } + + std::string selected_path = boost::nowide::narrow(m_drive_combo->GetValue()); + + if (selected_path.empty()) { + // TRN Alert message when writing WiFi configuration file to usb drive. + wxString msg = _L("Drive field is empty."); + show_info(nullptr, msg); + return; + } + + boost::filesystem::path file_path = boost::filesystem::path(selected_path) / WIFI_CONFIGFILE_NAME; + + bool path_on_removable_media = m_removable_manager->set_and_verify_last_save_path(file_path.string()); + if (!path_on_removable_media) { + // TRN Alert message when writing WiFi configuration file to usb drive. + wxString msg = _L("Selected path is not on removable media."); + show_info(nullptr, msg); + return; + } + + if (boost::filesystem::exists(file_path)) { + // TRN placeholder 1 is path to file + wxString msg_text = GUI::format_wxstr(_L("%1% already exists. Do you want to rewrite it?\n(Other items than Wi-Fi credentials will stay unchanged)"), file_path.string()); + WarningDialog dialog(m_parent, msg_text, _L("Warning"), wxYES | wxNO); + if (dialog.ShowModal() == wxID_NO) { + return; + } + } + + std::string data; + namespace pt = boost::property_tree; + pt::ptree tree; + // File already exist and we only need to add data to it rather than rewrite it. + if (boost::filesystem::exists(file_path)) { + + boost::nowide::ifstream ifs(file_path.string()); + try { + pt::read_ini(ifs, tree); + } + catch (const boost::property_tree::ini_parser::ini_parser_error& err) { + throw Slic3r::RuntimeError(format("Failed loading ini file \"%1%\"\nError: \"%2%\" at line %3%", file_path, err.message(), err.line()).c_str()); + } + + if (auto sub = tree.get_optional("wifi"); sub) { + tree.erase("wifi"); + } + } + + pt::ptree subtree; + subtree.put("ssid", m_ssid_combo->GetValue().utf8_string()); + subtree.put("psk", m_pass_textctrl->GetValue().utf8_string()); + tree.add_child("wifi", subtree); + + data.clear(); + // manually write ini string (so there is extra line between sections) + for (const auto& section : tree) { + data += "[" + section.first + "]" + "\n"; + for (const auto& entry : section.second) { + data += entry.first + " = " + entry.second.get_value() + "\n"; + } + data += "\n"; + } + + m_used_path = boost::nowide::widen(file_path.string()); + FILE* file; + file = fopen(file_path.string().c_str(), "w"); + if (file == NULL) { + BOOST_LOG_TRIVIAL(error) << "Failed to write to file " << file_path; + // TODO show error + show_error(nullptr, _L("Failed to open file for writing.")); + return; + } + fwrite(data.c_str(), 1, data.size(), file); + fclose(file); + out_file_path = file_path.string(); + this->EndModal(wxID_OK); +} + +void WifiConfigDialog::on_dpi_changed(const wxRect& suggested_rect) +{ + SetFont(wxGetApp().normal_font()); + + const int em = em_unit(); + msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL, m_ssid_button_id, m_pass_button_id, m_drive_button_id }); + + Fit(); + Refresh(); +} +}}// Slicer::GUI \ No newline at end of file diff --git a/src/slic3r/GUI/WifiConfigDialog.hpp b/src/slic3r/GUI/WifiConfigDialog.hpp new file mode 100644 index 0000000..532c8d4 --- /dev/null +++ b/src/slic3r/GUI/WifiConfigDialog.hpp @@ -0,0 +1,55 @@ +#ifndef slic3r_WifiConfigDialog_hpp_ +#define slic3r_WifiConfigDialog_hpp_ + +#include "GUI_Utils.hpp" + +#include "../Utils/WifiScanner.hpp" + +#include +#include +#include +#include + +#include "Widgets/ComboBox.hpp" +#include "Widgets/TextInput.hpp" + +namespace Slic3r { +namespace GUI { + +class RemovableDriveManager; +class WifiConfigDialog : public DPIDialog +{ +public: + WifiConfigDialog(wxWindow* parent, std::string& file_path, RemovableDriveManager* removable_manager, const wxString& preffered_drive ); + ~WifiConfigDialog(); + wxString get_used_path() const { return m_used_path; } + +private: + ::ComboBox* m_ssid_combo {nullptr}; + ::TextInput* m_pass_textctrl {nullptr}; + ::ComboBox* m_drive_combo {nullptr}; + // reference to string that is filled after ShowModal is called from owner + std::string& out_file_path; + WifiScanner* m_wifi_scanner; + RemovableDriveManager* m_removable_manager; + wxString m_used_path; + int m_ssid_button_id {wxID_ANY}; + int m_pass_button_id {wxID_ANY}; + int m_drive_button_id {wxID_ANY}; + + void on_ok(wxCommandEvent& e); + void on_combo(wxCommandEvent& e); + void on_rescan_drives(wxCommandEvent& e); + void on_rescan_networks(wxCommandEvent& e); + void on_retrieve_password(wxCommandEvent& e); + void rescan_drives(const wxString& preffered_drive); + void rescan_networks(bool select); + void fill_password(); + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; + void on_sys_color_changed() override {} +}; + +}} // Slicer::GUI +#endif \ No newline at end of file diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 4d117ff..6f5915d 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -11,17 +11,20 @@ #include -int scale(const int val) { return val * Slic3r::GUI::wxGetApp().em_unit(); } +using namespace Slic3r::GUI; + +int scale(const int val) { return val * wxGetApp().em_unit(); } int ITEM_WIDTH() { return scale(6); } static void update_ui(wxWindow* window) { - Slic3r::GUI::wxGetApp().UpdateDarkUI(window); + wxGetApp().UpdateDarkUI(window); } RammingDialog::RammingDialog(wxWindow* parent,const std::string& parameters) : wxDialog(parent, wxID_ANY, _(L("Ramming customization")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE/* | wxRESIZE_BORDER*/) { + SetFont(wxGetApp().normal_font()); update_ui(this); m_panel_ramming = new RammingPanel(this,parameters); @@ -38,7 +41,10 @@ RammingDialog::RammingDialog(wxWindow* parent,const std::string& parameters) auto main_sizer = new wxBoxSizer(wxVERTICAL); main_sizer->Add(m_panel_ramming, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5); - main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxALIGN_CENTER_HORIZONTAL | wxTOP | wxBOTTOM, 10); + auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); + main_sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP | wxBOTTOM, 10); SetSizer(main_sizer); main_sizer->SetSizeHints(this); @@ -52,8 +58,7 @@ RammingDialog::RammingDialog(wxWindow* parent,const std::string& parameters) EndModal(wxID_OK); },wxID_OK); this->Show(); -// wxMessageDialog dlg(this, _(L("Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to " - Slic3r::GUI::MessageDialog dlg(this, _(L("Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to " + MessageDialog dlg(this, _(L("Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to " "properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself " "be reinserted later. This phase is important and different materials can require different extrusion speeds to get " "the good shape. For this reason, the extrusion rates during ramming are adjustable.\n\nThis is an expert-level " @@ -100,10 +105,11 @@ RammingPanel::RammingPanel(wxWindow* parent, const std::string& parameters) #endif sizer_chart->Add(m_chart, 0, wxALL, 5); - m_widget_time = new wxSpinCtrlDouble(this,wxID_ANY,wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,0.,5.0,3.,0.5); - m_widget_volume = new wxSpinCtrl(this,wxID_ANY,wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,0,10000,0); - m_widget_ramming_line_width_multiplicator = new wxSpinCtrl(this,wxID_ANY,wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,10,200,100); - m_widget_ramming_step_multiplicator = new wxSpinCtrl(this,wxID_ANY,wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,10,200,100); + m_widget_time = new ::SpinInputDouble(this,"", wxEmptyString, wxDefaultPosition, wxSize(ITEM_WIDTH(), -1), style, 0., 5., 3., 0.5); + m_widget_time->SetDigits(2); + m_widget_volume = new ::SpinInput(this,"",wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,0,10000,0); + m_widget_ramming_line_width_multiplicator = new ::SpinInput(this,"",wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,10,200,100); + m_widget_ramming_step_multiplicator = new ::SpinInput(this,"",wxEmptyString,wxDefaultPosition,wxSize(ITEM_WIDTH(), -1),style,10,200,100); #ifdef _WIN32 update_ui(m_widget_time->GetText()); @@ -127,7 +133,6 @@ RammingPanel::RammingPanel(wxWindow* parent, const std::string& parameters) sizer_param->Add(gsizer_param, 0, wxTOP, scale(10)); m_widget_time->SetValue(m_chart->get_time()); - m_widget_time->SetDigits(2); m_widget_volume->SetValue(m_chart->get_volume()); m_widget_volume->Disable(); m_widget_ramming_line_width_multiplicator->SetValue(m_ramming_line_width_multiplicator); @@ -143,8 +148,9 @@ RammingPanel::RammingPanel(wxWindow* parent, const std::string& parameters) sizer->SetSizeHints(this); SetSizer(sizer); - m_widget_time->Bind(wxEVT_TEXT,[this](wxCommandEvent&) {m_chart->set_xy_range(m_widget_time->GetValue(),-1);}); + m_widget_time->Bind(wxEVT_SPINCTRL,[this](wxCommandEvent&) { m_chart->set_xy_range(m_widget_time->GetValue(),-1); }); m_widget_time->Bind(wxEVT_CHAR,[](wxKeyEvent&){}); // do nothing - prevents the user to change the value + m_widget_time->GetText()->Bind(wxEVT_CHAR,[](wxKeyEvent&){}); // do nothing - prevents the user to change the value m_widget_volume->Bind(wxEVT_CHAR,[](wxKeyEvent&){}); // do nothing - prevents the user to change the value Bind(EVT_WIPE_TOWER_CHART_CHANGED,[this](wxCommandEvent&) {m_widget_volume->SetValue(m_chart->get_volume()); m_widget_time->SetValue(m_chart->get_time());} ); Refresh(true); // erase background @@ -174,9 +180,11 @@ std::string RammingPanel::get_parameters() WipingDialog::WipingDialog(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, const std::vector& extruder_colours) : wxDialog(parent, wxID_ANY, _(L("Wipe tower - Purging volume adjustment")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE/* | wxRESIZE_BORDER*/) { + SetFont(wxGetApp().normal_font()); update_ui(this); auto widget_button = new wxButton(this,wxID_ANY,"-",wxPoint(0,0),wxDefaultSize); update_ui(widget_button); + wxGetApp().SetWindowVariantForButton(widget_button); m_panel_wiping = new WipingPanel(this,matrix,extruders, extruder_colours, widget_button); auto main_sizer = new wxBoxSizer(wxVERTICAL); @@ -187,7 +195,10 @@ WipingDialog::WipingDialog(wxWindow* parent, const std::vector& matrix, c main_sizer->Add(m_panel_wiping, 0, wxEXPAND | wxALL, 5); main_sizer->Add(widget_button, 0, wxALIGN_CENTER_HORIZONTAL | wxCENTER | wxBOTTOM, 5); - main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10); + auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL); + wxGetApp().SetWindowVariantForButton(buttons->GetAffirmativeButton()); + wxGetApp().SetWindowVariantForButton(buttons->GetCancelButton()); + main_sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10); SetSizer(main_sizer); main_sizer->SetSizeHints(this); @@ -310,35 +321,12 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, con gridsizer_simple->Add(new wxStaticText(m_page_simple, wxID_ANY, wxString(_(L("unloaded")))), 0, wxALIGN_CENTER | wxALIGN_CENTER_VERTICAL); gridsizer_simple->Add(new wxStaticText(m_page_simple,wxID_ANY,wxString(_(L("loaded")))), 0, wxALIGN_CENTER | wxALIGN_CENTER_VERTICAL); - auto add_spin_ctrl = [this](std::vector& vec, float initial) + auto add_spin_ctrl = [this](std::vector<::SpinInput*>& vec, float initial) { - wxSpinCtrl* spin_ctrl = new wxSpinCtrl(m_page_simple, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(ITEM_WIDTH(), -1), style | wxALIGN_RIGHT, 0, 300, (int)initial); + ::SpinInput* spin_ctrl = new ::SpinInput(m_page_simple, "", wxEmptyString, wxDefaultPosition, wxSize(ITEM_WIDTH(), -1), style | wxALIGN_RIGHT, 0, 300, (int)initial); update_ui(spin_ctrl); vec.push_back(spin_ctrl); -#ifdef __WXOSX__ - // On OSX / Cocoa, wxSpinCtrl::GetValue() doesn't return the new value - // when it was changed from the text control, so the on_change callback - // gets the old one, and on_kill_focus resets the control to the old value. - // As a workaround, we get the new value from $event->GetString and store - // here temporarily so that we can return it from get_value() - spin_ctrl->Bind(wxEVT_TEXT, ([spin_ctrl](wxCommandEvent e) - { - long value; - const bool parsed = e.GetString().ToLong(&value); - int tmp_value = parsed && value >= INT_MIN && value <= INT_MAX ? (int)value : INT_MIN; - - // Forcibly set the input value for SpinControl, since the value - // inserted from the keyboard or clipboard is not updated under OSX - if (tmp_value != INT_MIN) { - spin_ctrl->SetValue(tmp_value); - - // But in SetValue() is executed m_text_ctrl->SelectAll(), so - // discard this selection and set insertion point to the end of string - spin_ctrl->GetText()->SetInsertionPointEnd(); - } - }), spin_ctrl->GetId()); -#endif }; for (unsigned int i=0;i& matrix, con hsizer->AddSpacer(10); hsizer->Add(new wxStaticText(m_page_simple, wxID_ANY, wxString(_(L("Tool #"))) << i + 1 << ": "), 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); - gridsizer_simple->Add(hsizer, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL); + gridsizer_simple->Add(hsizer, 1, wxEXPAND); gridsizer_simple->Add(m_old.back(),0); gridsizer_simple->Add(m_new.back(),0); } @@ -440,8 +428,7 @@ bool WipingPanel::advanced_matches_simple() { // Switches the dialog from simple to advanced mode and vice versa void WipingPanel::toggle_advanced(bool user_action) { if (m_advanced && !advanced_matches_simple() && user_action) { -// if (wxMessageDialog(this,wxString(_(L("Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?"))), - if (Slic3r::GUI::MessageDialog(this, _L("Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?"), + if (MessageDialog(this, _L("Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?"), _L("Warning"),wxYES_NO|wxICON_EXCLAMATION).ShowModal() != wxID_YES) return; } diff --git a/src/slic3r/GUI/WipeTowerDialog.hpp b/src/slic3r/GUI/WipeTowerDialog.hpp index 84b9921..46d4e5c 100644 --- a/src/slic3r/GUI/WipeTowerDialog.hpp +++ b/src/slic3r/GUI/WipeTowerDialog.hpp @@ -8,6 +8,7 @@ #include #include "RammingChart.hpp" +#include "Widgets/SpinInput.hpp" class RammingPanel : public wxPanel { @@ -18,10 +19,10 @@ public: private: Chart* m_chart = nullptr; - wxSpinCtrl* m_widget_volume = nullptr; - wxSpinCtrl* m_widget_ramming_line_width_multiplicator = nullptr; - wxSpinCtrl* m_widget_ramming_step_multiplicator = nullptr; - wxSpinCtrlDouble* m_widget_time = nullptr; + ::SpinInput* m_widget_volume = nullptr; + ::SpinInput* m_widget_ramming_line_width_multiplicator = nullptr; + ::SpinInput* m_widget_ramming_step_multiplicator = nullptr; + ::SpinInputDouble* m_widget_time = nullptr; int m_ramming_step_multiplicator; int m_ramming_line_width_multiplicator; @@ -56,8 +57,8 @@ private: void fill_in_matrix(); bool advanced_matches_simple(); - std::vector m_old; - std::vector m_new; + std::vector<::SpinInput*> m_old; + std::vector<::SpinInput*> m_new; std::vector> edit_boxes; std::vector m_colours; unsigned int m_number_of_extruders = 0; diff --git a/src/slic3r/GUI/calib_dlg.hpp b/src/slic3r/GUI/calib_dlg.hpp index 9eb9a36..6ab4cc2 100644 --- a/src/slic3r/GUI/calib_dlg.hpp +++ b/src/slic3r/GUI/calib_dlg.hpp @@ -5,9 +5,9 @@ #include "GUI_Utils.hpp" #include "Widgets/Button.hpp" #include "Widgets/Label.hpp" -#include "Widgets/RadioBox.hpp" +// #include "Widgets/RadioBox.hpp" #include "Widgets/RoundedRectangle.hpp" -#include "Widgets/CheckBoxInWT.hpp" +// #include "Widgets/CheckBoxInWT.hpp" #include "Widgets/ComboBox.hpp" #include "Widgets/TextInput.hpp" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index e48d323..a11cc20 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -367,9 +367,9 @@ void edit_tooltip(wxString& tooltip) /* Function for rescale of buttons in Dialog under MSW if dpi is changed. * btn_ids - vector of buttons identifiers */ -void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector& btn_ids) +void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector& btn_ids, double height_koef/* = 1.*/) { - const wxSize& btn_size = wxSize(-1, int(2.5f * em_unit + 0.5f)); + const wxSize& btn_size = wxSize(-1, int(2.5 * em_unit * height_koef + 0.5f)); for (int btn_id : btn_ids) { // There is a case [FirmwareDialog], when we have wxControl instead of wxButton @@ -417,10 +417,12 @@ static int scale() } #endif // __WXGTK2__ -wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16*/, const std::string& new_color/* = std::string()*/) +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int width/* = 16*/, int height/* = -1*/, const std::string& new_color/* = std::string()*/) { #ifdef __WXGTK2__ - px_cnt *= scale(); + width *= scale(); + if (height > 0) + height *= scale(); #endif // __WXGTK2__ static Slic3r::GUI::BitmapCache cache; @@ -428,10 +430,12 @@ wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name_in, int px_cnt/* = 16 std::string bmp_name = bmp_name_in; boost::replace_last(bmp_name, ".png", ""); + if (height < 0) + height = width; // Try loading an SVG first, then PNG if SVG is not found: - wxBitmapBundle* bmp = cache.from_svg(bmp_name, px_cnt, px_cnt, Slic3r::GUI::wxGetApp().dark_mode(), new_color); + wxBitmapBundle* bmp = cache.from_svg(bmp_name, width, height, Slic3r::GUI::wxGetApp().dark_mode(), new_color); if (bmp == nullptr) { - bmp = cache.from_png(bmp_name, px_cnt, px_cnt); + bmp = cache.from_png(bmp_name, width, height); if (!bmp) // Neither SVG nor PNG has been found, raise error throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); @@ -653,7 +657,7 @@ void ModeButton::SetState(const bool state) void ModeButton::update_bitmap() { - m_bmp = *get_bmp_bundle("mode", m_px_cnt, Slic3r::GUI::wxGetApp().get_mode_btn_color(m_mode_id)); + m_bmp = *get_bmp_bundle("mode", m_bmp_width, m_bmp_height, Slic3r::GUI::wxGetApp().get_mode_btn_color(m_mode_id)); SetBitmap(m_bmp); SetBitmapCurrent(m_bmp); @@ -780,69 +784,37 @@ void MenuWithSeparators::SetSecondSeparator() // QIDIBitmap // ---------------------------------------------------------------------------- ScalableBitmap::ScalableBitmap( wxWindow *parent, - const std::string& icon_name/* = ""*/, - const int px_cnt/* = 16*/, + const std::string& icon_name, + const int width/* = 16*/, + const int height/* = -1*/, const bool grayscale/* = false*/): m_parent(parent), m_icon_name(icon_name), - m_px_cnt(px_cnt) + m_bmp_width(width), m_bmp_height(height) { - m_bmp = *get_bmp_bundle(icon_name, px_cnt); + m_bmp = *get_bmp_bundle(icon_name, width, height); m_bitmap = m_bmp.GetBitmapFor(m_parent); } +ScalableBitmap::ScalableBitmap( wxWindow* parent, + const std::string& icon_name, + const wxSize icon_size, + const bool grayscale/* = false*/) : +ScalableBitmap(parent, icon_name, icon_size.x, icon_size.y, grayscale) +{ +} + void ScalableBitmap::sys_color_changed() { - m_bmp = *get_bmp_bundle(m_icon_name, m_px_cnt); + m_bmp = *get_bmp_bundle(m_icon_name, m_bmp_width, m_bmp_height); } -//B34 -// win is used to get a correct em_unit value -// It's important for bitmaps of dialogs. -// if win == nullptr, em_unit value of MainFrame will be used -wxBitmap create_scaled_bitmap(const std::string &bmp_name_in, - wxWindow * win /* = nullptr*/, - const int px_cnt /* = 16*/, - const bool grayscale /* = false*/, - const std::string &new_color /* = std::string()*/, // color witch will used instead of orange - const bool menu_bitmap /* = false*/, - const bool resize /* = false*/) -{ - static Slic3r::GUI::BitmapCache cache; - - unsigned int width = 0; - unsigned int height = (unsigned int) (win->FromDIP(px_cnt) + 0.5f); - - std::string bmp_name = bmp_name_in; - boost::replace_last(bmp_name, ".png", ""); - - bool dark_mode = -#ifdef _WIN32 - menu_bitmap ? Slic3r::GUI::check_dark_mode() : -#endif - Slic3r::GUI::wxGetApp().dark_mode(); - - // Try loading an SVG first, then PNG if SVG is not found: - wxBitmap *bmp = cache.load_svg(bmp_name, width, height, grayscale, dark_mode, new_color); - if (bmp == nullptr) { - bmp = cache.load_png(bmp_name, width, height, grayscale); - } - - if (bmp == nullptr) { - // Neither SVG nor PNG has been found, raise error - throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); - } - - return *bmp; -} - - //B34 -void ScalableBitmap::msw_rescale() -{ - - m_bmp = create_scaled_bitmap(m_icon_name, m_parent, m_px_cnt, m_grayscale, std::string(), false, m_resize); -} +//void ScalableBitmap::msw_rescale() +//{ +// +// m_bmp = create_scaled_bitmap(m_icon_name, m_parent, m_px_cnt, m_grayscale, std::string(), false, m_resize); +//} // ---------------------------------------------------------------------------- @@ -856,17 +828,19 @@ ScalableButton::ScalableButton( wxWindow * parent, const wxSize& size /* = wxDefaultSize*/, const wxPoint& pos /* = wxDefaultPosition*/, long style /*= wxBU_EXACTFIT | wxNO_BORDER*/, - int bmp_px_cnt/* = 16*/) : + int width/* = 16*/, + int height/* = -1*/) : m_parent(parent), m_current_icon_name(icon_name), - m_px_cnt(bmp_px_cnt), + m_bmp_width(width), + m_bmp_height(height), m_has_border(!(style & wxNO_BORDER)) { Create(parent, id, label, pos, size, style); Slic3r::GUI::wxGetApp().UpdateDarkUI(this); if (!icon_name.empty()) { - SetBitmap(*get_bmp_bundle(icon_name, m_px_cnt)); + SetBitmap(*get_bmp_bundle(icon_name, width, height)); if (!label.empty()) SetBitmapMargins(int(0.5* em_unit(parent)), 0); } @@ -887,7 +861,8 @@ ScalableButton::ScalableButton( wxWindow * parent, long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) : m_parent(parent), m_current_icon_name(bitmap.name()), - m_px_cnt(bitmap.px_cnt()), + m_bmp_width(bitmap.px_size().x), + m_bmp_height(bitmap.px_size().y), m_has_border(!(style& wxNO_BORDER)) { Create(parent, id, label, wxDefaultPosition, wxDefaultSize, style); @@ -908,7 +883,7 @@ bool ScalableButton::SetBitmap_(const std::string& bmp_name) if (m_current_icon_name.empty()) return false; - wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_px_cnt); + wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_bmp_width, m_bmp_height); SetBitmap(bmp); SetBitmapCurrent(bmp); SetBitmapPressed(bmp); @@ -936,13 +911,13 @@ void ScalableButton::sys_color_changed() { Slic3r::GUI::wxGetApp().UpdateDarkUI(this, m_has_border); - wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_px_cnt); + wxBitmapBundle bmp = *get_bmp_bundle(m_current_icon_name, m_bmp_width, m_bmp_height); SetBitmap(bmp); SetBitmapCurrent(bmp); SetBitmapPressed(bmp); SetBitmapFocus(bmp); if (!m_disabled_icon_name.empty()) - SetBitmapDisabled(*get_bmp_bundle(m_disabled_icon_name, m_px_cnt)); + SetBitmapDisabled(*get_bmp_bundle(m_disabled_icon_name, m_bmp_width, m_bmp_height)); if (!GetLabelText().IsEmpty()) SetBitmapMargins(int(0.5 * em_unit(m_parent)), 0); } diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index aad5aea..63d95d3 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -46,11 +46,11 @@ void enable_menu_item(wxUpdateUIEvent& evt, std::function const cb_condi class wxDialog; void edit_tooltip(wxString& tooltip); -void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector& btn_ids); +void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector& btn_ids, double height_koef = 1.); int em_unit(wxWindow* win); int mode_icon_px_size(); -wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name, int px_cnt = 16, const std::string& new_color_rgb = std::string()); +wxBitmapBundle* get_bmp_bundle(const std::string& bmp_name, int width = 16, int height = -1, const std::string& new_color_rgb = std::string()); wxBitmapBundle* get_empty_bmp_bundle(int width, int height); wxBitmapBundle* get_solid_bmp_bundle(int width, int height, const std::string& color); @@ -127,6 +127,16 @@ public: void SetItemsCnt(int cnt) { m_cnt_open_items = cnt; } }; +inline wxSize get_preferred_size(const wxBitmapBundle& bmp, wxWindow* parent) +{ + if (!bmp.IsOk()) + return wxSize(0,0); +#ifdef __WIN32__ + return bmp.GetPreferredBitmapSizeFor(parent); +#else + return bmp.GetDefaultSize(); +#endif +} // ---------------------------------------------------------------------------- // ScalableBitmap @@ -137,8 +147,14 @@ class ScalableBitmap public: ScalableBitmap() {}; ScalableBitmap( wxWindow *parent, - const std::string& icon_name = "", - const int px_cnt = 16, + const std::string& icon_name, + const int width = 16, + const int height = -1 , + const bool grayscale = false); + + ScalableBitmap( wxWindow *parent, + const std::string& icon_name, + const wxSize icon_size, const bool grayscale = false); ~ScalableBitmap() {} @@ -149,18 +165,12 @@ public: wxBitmap get_bitmap() { return m_bmp.GetBitmapFor(m_parent); } wxWindow* parent() const { return m_parent;} const std::string& name() const { return m_icon_name; } - int px_cnt() const { return m_px_cnt;} + wxSize px_size() const { return wxSize(m_bmp_width, m_bmp_height);} - wxSize GetSize() const { -#ifdef __WIN32__ - return m_bmp.GetPreferredBitmapSizeFor(m_parent); -#else - return m_bmp.GetDefaultSize(); -#endif - } + void SetBitmap(const wxBitmapBundle& bmp) { m_bmp = bmp; } + wxSize GetSize() const { return get_preferred_size(m_bmp, m_parent); } //B34 - void msw_rescale(); - + //void msw_rescale(); int GetWidth() const { return GetSize().GetWidth(); } int GetHeight() const { return GetSize().GetHeight(); } @@ -169,7 +179,8 @@ private: wxBitmapBundle m_bmp = wxBitmapBundle(); wxBitmap m_bitmap = wxBitmap(); std::string m_icon_name = ""; - int m_px_cnt {16}; + int m_bmp_width{ 16 }; + int m_bmp_height{ -1 }; //B34 bool m_grayscale{false}; bool m_resize{false}; @@ -231,7 +242,8 @@ public: const wxSize& size = wxDefaultSize, const wxPoint& pos = wxDefaultPosition, long style = wxBU_EXACTFIT | wxNO_BORDER, - int bmp_px_cnt = 16); + int width = 16, + int height = -1); ScalableButton( wxWindow * parent, @@ -258,7 +270,8 @@ private: protected: // bitmap dimensions - int m_px_cnt{ 16 }; + int m_bmp_width{ 16 }; + int m_bmp_height{ -1 }; bool m_has_border {false}; }; diff --git a/src/slic3r/Utils/Duet.cpp b/src/slic3r/Utils/Duet.cpp index e77ebc8..9d0ce29 100644 --- a/src/slic3r/Utils/Duet.cpp +++ b/src/slic3r/Utils/Duet.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -23,10 +24,27 @@ #include "slic3r/GUI/format.hpp" #include "Http.hpp" +#include namespace fs = boost::filesystem; namespace pt = boost::property_tree; namespace Slic3r { +namespace { +std::string escape_string(const std::string& unescaped) +{ + std::string ret_val; + CURL* curl = curl_easy_init(); + if (curl) { + char* decoded = curl_easy_escape(curl, unescaped.c_str(), unescaped.size()); + if (decoded) { + ret_val = std::string(decoded); + curl_free(decoded); + } + curl_easy_cleanup(curl); + } + return ret_val; +} +} Duet::Duet(DynamicPrintConfig *config) : host(config->opt_string("print_host")), @@ -75,6 +93,8 @@ bool Duet::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn e auto http = (dsf ? Http::put(std::move(upload_cmd)) : Http::post(std::move(upload_cmd))); if (dsf) { http.set_put_body(upload_data.source_path); + if (connect_msg.empty()) + http.header("X-Session-Key", boost::nowide::narrow(connect_msg)); } else { http.set_post_body(upload_data.source_path); } @@ -134,7 +154,20 @@ Duet::ConnectionType Duet::connect(wxString &msg) const msg = format_error(body, error, status); }) .on_complete([&](std::string body, unsigned) { + try { + pt::ptree root; + std::istringstream iss(body); + pt::read_json(iss, root); + auto key = root.get_optional("sessionKey"); + if (key) + msg = boost::nowide::widen(*key); res = ConnectionType::dsf; + } + catch (const std::exception&) { + BOOST_LOG_TRIVIAL(error) << "Failed to parse serverKey from Duet reply to Connect request: " << body; + msg = format_error(body, L("Failed to parse a Connect reply"), 0); + res = ConnectionType::error; + } }) .perform_sync(); }) @@ -199,12 +232,13 @@ std::string Duet::get_upload_url(const std::string &filename, ConnectionType con std::string Duet::get_connect_url(const bool dsfUrl) const { if (dsfUrl) { - return (boost::format("%1%machine/status") - % get_base_url()).str(); + return (boost::format("%1%machine/connect?password=%2%") + % get_base_url() + % (password.empty() ? "reprap" : escape_string(password))).str(); } else { return (boost::format("%1%rr_connect?password=%2%&%3%") % get_base_url() - % (password.empty() ? "reprap" : password) + % (password.empty() ? "reprap" : escape_string(password)) % timestamp_str()).str(); } } diff --git a/src/slic3r/Utils/Duet.hpp b/src/slic3r/Utils/Duet.hpp index 24c6c92..b09c8d4 100644 --- a/src/slic3r/Utils/Duet.hpp +++ b/src/slic3r/Utils/Duet.hpp @@ -33,7 +33,7 @@ public: std::string get_host() const override { return host; } private: - enum class ConnectionType { rrf, dsf, error }; + enum class ConnectionType { rrf, dsf, error }; // rrf = RepRapFirmware, dsf = DuetSoftwareFramework std::string host; std::string password; diff --git a/src/slic3r/Utils/EmbossStyleManager.cpp b/src/slic3r/Utils/EmbossStyleManager.cpp index e33484d..fef70da 100644 --- a/src/slic3r/Utils/EmbossStyleManager.cpp +++ b/src/slic3r/Utils/EmbossStyleManager.cpp @@ -1,26 +1,23 @@ #include "EmbossStyleManager.hpp" +#include #include // Imgui texture #include // ImTextCharFromUtf8 -#include "WxFontUtils.hpp" -#include "libslic3r/Utils.hpp" // ScopeGuard +#include +#include // ScopeGuard +#include "WxFontUtils.hpp" #include "slic3r/GUI/3DScene.hpp" // ::glsafe #include "slic3r/GUI/Jobs/CreateFontStyleImagesJob.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" // check of font ranges -#include "slic3r/Utils/EmbossStylesSerializable.hpp" using namespace Slic3r; using namespace Slic3r::Emboss; using namespace Slic3r::GUI::Emboss; -StyleManager::StyleManager(const ImWchar *language_glyph_range, std::function create_default_styles) - : m_imgui_init_glyph_range(language_glyph_range) - , m_create_default_styles(create_default_styles) - , m_exist_style_images(false) - , m_temp_style_images(nullptr) - , m_app_config(nullptr) - , m_last_style_index(std::numeric_limits::max()) +StyleManager::StyleManager(const ImWchar *language_glyph_range, const std::function& create_default_styles) + : m_create_default_styles(create_default_styles) + , m_imgui_init_glyph_range(language_glyph_range) {} StyleManager::~StyleManager() { @@ -28,53 +25,65 @@ StyleManager::~StyleManager() { free_style_images(); } +/// +/// For store/load emboss style to/from AppConfig +/// +namespace { +void store_style_index(AppConfig &cfg, size_t index); +::std::optional load_style_index(const AppConfig &cfg); + +StyleManager::Styles load_styles(const AppConfig &cfg); +void store_styles(AppConfig &cfg, const StyleManager::Styles &styles); +void make_unique_name(const StyleManager::Styles &styles, std::string &name); +} // namespace void StyleManager::init(AppConfig *app_config) { + assert(app_config != nullptr); m_app_config = app_config; - EmbossStyles styles = (app_config != nullptr) ? - EmbossStylesSerializable::load_styles(*app_config) : - EmbossStyles{}; - if (styles.empty()) - styles = m_create_default_styles(); + m_styles = ::load_styles(*app_config); + + if (m_styles.empty()) { + // No styles loaded from ini file so use default + EmbossStyles styles = m_create_default_styles(); for (EmbossStyle &style : styles) { - make_unique_name(style.name); - m_style_items.push_back({style}); + ::make_unique_name(m_styles, style.name); + m_styles.push_back({style}); + } } std::optional active_index_opt = (app_config != nullptr) ? - EmbossStylesSerializable::load_style_index(*app_config) : + ::load_style_index(*app_config) : std::optional{}; size_t active_index = 0; if (active_index_opt.has_value()) active_index = *active_index_opt; - if (active_index >= m_style_items.size()) active_index = 0; + if (active_index >= m_styles.size()) active_index = 0; // find valid font item if (load_style(active_index)) return; // style is loaded // Try to fix that style can't be loaded - m_style_items.erase(m_style_items.begin() + active_index); + m_styles.erase(m_styles.begin() + active_index); load_valid_style(); } -bool StyleManager::store_styles_to_app_config(bool use_modification, - bool store_active_index) +bool StyleManager::store_styles_to_app_config(bool use_modification, bool store_active_index) { assert(m_app_config != nullptr); if (m_app_config == nullptr) return false; if (use_modification) { if (exist_stored_style()) { // update stored item - m_style_items[m_style_cache.style_index].style = m_style_cache.style; + m_styles[m_style_cache.style_index] = m_style_cache.style; } else { // add new into stored list EmbossStyle &style = m_style_cache.style; - make_unique_name(style.name); + ::make_unique_name(m_styles, style.name); m_style_cache.truncated_name.clear(); - m_style_cache.style_index = m_style_items.size(); - m_style_items.push_back({style}); + m_style_cache.style_index = m_styles.size(); + m_styles.push_back({style}); } m_style_cache.stored_wx_font = m_style_cache.wx_font; } @@ -84,30 +93,27 @@ bool StyleManager::store_styles_to_app_config(bool use_modification, size_t style_index = exist_stored_style() ? m_style_cache.style_index : m_last_style_index; - EmbossStylesSerializable::store_style_index(*m_app_config, style_index); + store_style_index(*m_app_config, style_index); } - EmbossStyles styles; - styles.reserve(m_style_items.size()); - for (const Item &item : m_style_items) styles.push_back(item.style); - EmbossStylesSerializable::store_styles(*m_app_config, styles); + store_styles(*m_app_config, m_styles); return true; } void StyleManager::add_style(const std::string &name) { EmbossStyle& style = m_style_cache.style; style.name = name; - make_unique_name(style.name); - m_style_cache.style_index = m_style_items.size(); + ::make_unique_name(m_styles, style.name); + m_style_cache.style_index = m_styles.size(); m_style_cache.stored_wx_font = m_style_cache.wx_font; m_style_cache.truncated_name.clear(); - m_style_items.push_back({style}); + m_styles.push_back({style}); } void StyleManager::swap(size_t i1, size_t i2) { - if (i1 >= m_style_items.size() || - i2 >= m_style_items.size()) return; - std::swap(m_style_items[i1], m_style_items[i2]); + if (i1 >= m_styles.size() || + i2 >= m_styles.size()) return; + std::swap(m_styles[i1], m_styles[i2]); // fix selected index if (!exist_stored_style()) return; if (m_style_cache.style_index == i1) { @@ -131,7 +137,7 @@ void StyleManager::discard_style_changes() { } void StyleManager::erase(size_t index) { - if (index >= m_style_items.size()) return; + if (index >= m_styles.size()) return; // fix selected index if (exist_stored_style()) { @@ -140,15 +146,15 @@ void StyleManager::erase(size_t index) { else if (index == i) i = std::numeric_limits::max(); } - m_style_items.erase(m_style_items.begin() + index); + m_styles.erase(m_styles.begin() + index); } void StyleManager::rename(const std::string& name) { m_style_cache.style.name = name; m_style_cache.truncated_name.clear(); if (exist_stored_style()) { - Item &it = m_style_items[m_style_cache.style_index]; - it.style.name = name; + Style &it = m_styles[m_style_cache.style_index]; + it.name = name; it.truncated_name.clear(); } } @@ -156,28 +162,28 @@ void StyleManager::rename(const std::string& name) { void StyleManager::load_valid_style() { // iterate over all known styles - while (!m_style_items.empty()) { + while (!m_styles.empty()) { if (load_style(0)) return; // can't load so erase it from list - m_style_items.erase(m_style_items.begin()); + m_styles.erase(m_styles.begin()); } // no one style is loadable // set up default font list EmbossStyles def_style = m_create_default_styles(); for (EmbossStyle &style : def_style) { - make_unique_name(style.name); - m_style_items.push_back({std::move(style)}); + ::make_unique_name(m_styles, style.name); + m_styles.push_back({std::move(style)}); } // iterate over default styles // There have to be option to use build in font - while (!m_style_items.empty()) { + while (!m_styles.empty()) { if (load_style(0)) return; // can't load so erase it from list - m_style_items.erase(m_style_items.begin()); + m_styles.erase(m_styles.begin()); } // This OS doesn't have TTF as default font, @@ -187,15 +193,15 @@ void StyleManager::load_valid_style() bool StyleManager::load_style(size_t style_index) { - if (style_index >= m_style_items.size()) return false; - if (!load_style(m_style_items[style_index].style)) return false; + if (style_index >= m_styles.size()) return false; + if (!load_style(m_styles[style_index])) return false; m_style_cache.style_index = style_index; m_style_cache.stored_wx_font = m_style_cache.wx_font; // copy m_last_style_index = style_index; return true; } -bool StyleManager::load_style(const EmbossStyle &style) { +bool StyleManager::load_style(const Style &style) { if (style.type == EmbossStyle::Type::file_path) { std::unique_ptr font_ptr = create_font_file(style.path.c_str()); @@ -208,13 +214,13 @@ bool StyleManager::load_style(const EmbossStyle &style) { m_style_cache.stored_wx_font = {}; return true; } - if (style.type != WxFontUtils::get_actual_type()) return false; + if (style.type != WxFontUtils::get_current_type()) return false; std::optional wx_font_opt = WxFontUtils::load_wxFont(style.path); if (!wx_font_opt.has_value()) return false; return load_style(style, *wx_font_opt); } -bool StyleManager::load_style(const EmbossStyle &style, const wxFont &font) +bool StyleManager::load_style(const Style &style, const wxFont &font) { m_style_cache.style = style; // copy @@ -265,12 +271,18 @@ bool StyleManager::is_font_changed() const return is_bold != is_stored_bold; } +bool StyleManager::is_unique_style_name(const std::string &name) const { + for (const StyleManager::Style &style : m_styles) + if (style.name == name) + return false; + return true; +} bool StyleManager::is_active_font() { return m_style_cache.font_file.has_value(); } -const EmbossStyle* StyleManager::get_stored_style() const +const StyleManager::Style *StyleManager::get_stored_style() const { - if (m_style_cache.style_index >= m_style_items.size()) return nullptr; - return &m_style_items[m_style_cache.style_index].style; + if (m_style_cache.style_index >= m_styles.size()) return nullptr; + return &m_styles[m_style_cache.style_index]; } void StyleManager::clear_glyphs_cache() @@ -282,24 +294,6 @@ void StyleManager::clear_glyphs_cache() void StyleManager::clear_imgui_font() { m_style_cache.atlas.Clear(); } -#include "slic3r/GUI/TextLines.hpp" -double StyleManager::get_line_height() -{ - assert(is_active_font()); - if (!is_active_font()) - return -1; - const auto &ffc = get_font_file_with_cache(); - assert(ffc.has_value()); - if (!ffc.has_value()) - return -1; - const auto &ff_ptr = ffc.font_file; - assert(ff_ptr != nullptr); - if (ff_ptr == nullptr) - return -1; - const FontProp &fp = get_font_prop(); - const FontFile &ff = *ff_ptr; - return TextLinesModel::calc_line_height(ff, fp); -} ImFont *StyleManager::get_imgui_font() { @@ -317,44 +311,12 @@ ImFont *StyleManager::get_imgui_font() return font; } -const std::vector &StyleManager::get_styles() const{ return m_style_items; } - -void StyleManager::make_unique_name(std::string &name) -{ - auto is_unique = [&](const std::string &name) -> bool { - for (const Item &it : m_style_items) - if (it.style.name == name) return false; - return true; - }; - - // Style name can't be empty so default name is set - if (name.empty()) name = "Text style"; - - // When name is already unique, nothing need to be changed - if (is_unique(name)) return; - - // when there is previous version of style name only find number - const char *prefix = " ("; - const char suffix = ')'; - auto pos = name.find_last_of(prefix); - if (name.c_str()[name.size() - 1] == suffix && - pos != std::string::npos) { - // short name by ord number - name = name.substr(0, pos); - } - - int order = 1; // start with value 2 to represents same font name - std::string new_name; - do { - new_name = name + prefix + std::to_string(++order) + suffix; - } while (!is_unique(new_name)); - name = new_name; -} +const StyleManager::Styles &StyleManager::get_styles() const{ return m_styles; } void StyleManager::init_trunc_names(float max_width) { - for (auto &s : m_style_items) + for (auto &s : m_styles) if (s.truncated_name.empty()) { - std::string name = s.style.name; + std::string name = s.name; ImGuiWrapper::escape_double_hash(name); s.truncated_name = ImGuiWrapper::trunc(name, max_width); } @@ -387,9 +349,9 @@ void StyleManager::init_style_images(const Vec2i &max_size, StyleImagesData::Item &style = m_temp_style_images->styles[index]; // find style in font list and copy to it - for (auto &it : m_style_items) { - if (it.style.name != style.text || - !(it.style.prop == style.prop)) + for (auto &it : m_styles) { + if (it.name != style.text || + !(it.prop == style.prop)) continue; it.image = image; break; @@ -406,9 +368,8 @@ void StyleManager::init_style_images(const Vec2i &max_size, // create job for init images m_temp_style_images = std::make_shared(); StyleImagesData::Items styles; - styles.reserve(m_style_items.size()); - for (const Item &item : m_style_items) { - const EmbossStyle &style = item.style; + styles.reserve(m_styles.size()); + for (const Style &style : m_styles) { std::optional wx_font_opt = WxFontUtils::load_wxFont(style.path); if (!wx_font_opt.has_value()) continue; std::unique_ptr font_file = @@ -435,7 +396,7 @@ void StyleManager::init_style_images(const Vec2i &max_size, void StyleManager::free_style_images() { if (!m_exist_style_images) return; GLuint tex_id = 0; - for (Item &it : m_style_items) { + for (Style &it : m_styles) { if (tex_id == 0 && it.image.has_value()) tex_id = (GLuint)(intptr_t) it.image->texture_id; it.image.reset(); @@ -547,10 +508,278 @@ bool StyleManager::set_wx_font(const wxFont &wx_font, std::unique_ptr FontFileWithCache(std::move(font_file)); EmbossStyle &style = m_style_cache.style; - style.type = WxFontUtils::get_actual_type(); + style.type = WxFontUtils::get_current_type(); // update string path style.path = WxFontUtils::store_wxFont(wx_font); WxFontUtils::update_property(style.prop, wx_font); clear_imgui_font(); return true; } + +#include +#include "WxFontUtils.hpp" +#include "fast_float/fast_float.h" + +// StylesSerializable +namespace { + +using namespace Slic3r; +using namespace Slic3r::GUI; +using Section = std::map; + +const std::string APP_CONFIG_FONT_NAME = "name"; +const std::string APP_CONFIG_FONT_DESCRIPTOR = "descriptor"; +const std::string APP_CONFIG_FONT_LINE_HEIGHT = "line_height"; +const std::string APP_CONFIG_FONT_DEPTH = "depth"; +const std::string APP_CONFIG_FONT_USE_SURFACE = "use_surface"; +const std::string APP_CONFIG_FONT_BOLDNESS = "boldness"; +const std::string APP_CONFIG_FONT_SKEW = "skew"; +const std::string APP_CONFIG_FONT_DISTANCE = "distance"; +const std::string APP_CONFIG_FONT_ANGLE = "angle"; +const std::string APP_CONFIG_FONT_COLLECTION = "collection"; +const std::string APP_CONFIG_FONT_CHAR_GAP = "char_gap"; +const std::string APP_CONFIG_FONT_LINE_GAP = "line_gap"; + +const std::string APP_CONFIG_ACTIVE_FONT = "active_font"; + +std::string create_section_name(unsigned index) +{ + return AppConfig::SECTION_EMBOSS_STYLE + ':' + std::to_string(index); +} + +// check only existence of flag +bool read(const Section §ion, const std::string &key, bool &value) +{ + auto item = section.find(key); + if (item == section.end()) + return false; + + value = true; + return true; +} + +bool read(const Section §ion, const std::string &key, float &value) +{ + auto item = section.find(key); + if (item == section.end()) + return false; + const std::string &data = item->second; + if (data.empty()) + return false; + float value_; + fast_float::from_chars(data.c_str(), data.c_str() + data.length(), value_); + // read only non zero value + if (fabs(value_) <= std::numeric_limits::epsilon()) + return false; + + value = value_; + return true; +} + +bool read(const Section §ion, const std::string &key, std::optional &value) +{ + auto item = section.find(key); + if (item == section.end()) + return false; + const std::string &data = item->second; + if (data.empty()) + return false; + int value_ = std::atoi(data.c_str()); + if (value_ == 0) + return false; + + value = value_; + return true; +} + +bool read(const Section §ion, const std::string &key, std::optional &value) +{ + auto item = section.find(key); + if (item == section.end()) + return false; + const std::string &data = item->second; + if (data.empty()) + return false; + int value_ = std::atoi(data.c_str()); + if (value_ <= 0) + return false; + + value = static_cast(value_); + return true; +} + +bool read(const Section §ion, const std::string &key, std::optional &value) +{ + auto item = section.find(key); + if (item == section.end()) + return false; + const std::string &data = item->second; + if (data.empty()) + return false; + float value_; + fast_float::from_chars(data.c_str(), data.c_str() + data.length(), value_); + // read only non zero value + if (fabs(value_) <= std::numeric_limits::epsilon()) + return false; + + value = value_; + return true; +} + +std::optional load_style(const Section &app_cfg_section) +{ + auto path_it = app_cfg_section.find(APP_CONFIG_FONT_DESCRIPTOR); + if (path_it == app_cfg_section.end()) + return {}; + + StyleManager::Style s; + EmbossProjection& ep = s.projection; + FontProp& fp = s.prop; + + s.path = path_it->second; + s.type = WxFontUtils::get_current_type(); + auto name_it = app_cfg_section.find(APP_CONFIG_FONT_NAME); + const std::string default_name = "font_name"; + s.name = (name_it == app_cfg_section.end()) ? default_name : name_it->second; + + read(app_cfg_section, APP_CONFIG_FONT_LINE_HEIGHT, fp.size_in_mm); + float depth = 1.; + read(app_cfg_section, APP_CONFIG_FONT_DEPTH, depth); + ep.depth = depth; + read(app_cfg_section, APP_CONFIG_FONT_USE_SURFACE, ep.use_surface); + read(app_cfg_section, APP_CONFIG_FONT_BOLDNESS, fp.boldness); + read(app_cfg_section, APP_CONFIG_FONT_SKEW, fp.skew); + read(app_cfg_section, APP_CONFIG_FONT_DISTANCE, s.distance); + read(app_cfg_section, APP_CONFIG_FONT_ANGLE, s.angle); + read(app_cfg_section, APP_CONFIG_FONT_COLLECTION, fp.collection_number); + read(app_cfg_section, APP_CONFIG_FONT_CHAR_GAP, fp.char_gap); + read(app_cfg_section, APP_CONFIG_FONT_LINE_GAP, fp.line_gap); + return s; +} + +void store_style(AppConfig &cfg, const StyleManager::Style &s, unsigned index) +{ + const EmbossProjection &ep = s.projection; + Section data; + data[APP_CONFIG_FONT_NAME] = s.name; + data[APP_CONFIG_FONT_DESCRIPTOR] = s.path; + const FontProp &fp = s.prop; + data[APP_CONFIG_FONT_LINE_HEIGHT] = std::to_string(fp.size_in_mm); + data[APP_CONFIG_FONT_DEPTH] = std::to_string(ep.depth); + if (ep.use_surface) + data[APP_CONFIG_FONT_USE_SURFACE] = "true"; + if (fp.boldness.has_value()) + data[APP_CONFIG_FONT_BOLDNESS] = std::to_string(*fp.boldness); + if (fp.skew.has_value()) + data[APP_CONFIG_FONT_SKEW] = std::to_string(*fp.skew); + if (s.distance.has_value()) + data[APP_CONFIG_FONT_DISTANCE] = std::to_string(*s.distance); + if (s.angle.has_value()) + data[APP_CONFIG_FONT_ANGLE] = std::to_string(*s.angle); + if (fp.collection_number.has_value()) + data[APP_CONFIG_FONT_COLLECTION] = std::to_string(*fp.collection_number); + if (fp.char_gap.has_value()) + data[APP_CONFIG_FONT_CHAR_GAP] = std::to_string(*fp.char_gap); + if (fp.line_gap.has_value()) + data[APP_CONFIG_FONT_LINE_GAP] = std::to_string(*fp.line_gap); + cfg.set_section(create_section_name(index), std::move(data)); +} + +void store_style_index(AppConfig &cfg, size_t index) +{ + // store actual font index + // active font first index is +1 to correspond with section name + Section data; + data[APP_CONFIG_ACTIVE_FONT] = std::to_string(index); + cfg.set_section(AppConfig::SECTION_EMBOSS_STYLE, std::move(data)); +} + +std::optional load_style_index(const AppConfig &cfg) +{ + if (!cfg.has_section(AppConfig::SECTION_EMBOSS_STYLE)) + return {}; + + auto section = cfg.get_section(AppConfig::SECTION_EMBOSS_STYLE); + auto it = section.find(APP_CONFIG_ACTIVE_FONT); + if (it == section.end()) + return {}; + + size_t active_font = static_cast(std::atoi(it->second.c_str())); + // order in config starts with number 1 + return active_font - 1; +} + +::StyleManager::Styles load_styles(const AppConfig &cfg) +{ + StyleManager::Styles result; + // human readable index inside of config starts from 1 !! + unsigned index = 1; + std::string section_name = create_section_name(index); + while (cfg.has_section(section_name)) { + std::optional style_opt = load_style(cfg.get_section(section_name)); + if (style_opt.has_value()) { + make_unique_name(result, style_opt->name); + result.emplace_back(*style_opt); + } + + section_name = create_section_name(++index); + } + return result; +} + +void store_styles(AppConfig &cfg, const StyleManager::Styles &styles) +{ + EmbossStyle::Type current_type = WxFontUtils::get_current_type(); + // store styles + unsigned index = 1; + for (const StyleManager::Style &style : styles) { + // skip file paths + fonts from other OS(loaded from .3mf) + assert(style.type == current_type); + if (style.type != current_type) + continue; + store_style(cfg, style, index); + ++index; + } + + // remove rest of font sections (after deletation) + std::string section_name = create_section_name(index); + while (cfg.has_section(section_name)) { + cfg.clear_section(section_name); + section_name = create_section_name(index); + ++index; + } +} + +void make_unique_name(const StyleManager::Styles& styles, std::string &name) +{ + auto is_unique = [&styles](const std::string &name){ + for (const StyleManager::Style &it : styles) + if (it.name == name) return false; + return true; + }; + + // Style name can't be empty so default name is set + if (name.empty()) name = "Text style"; + + // When name is already unique, nothing need to be changed + if (is_unique(name)) return; + + // when there is previous version of style name only find number + const char *prefix = " ("; + const char suffix = ')'; + auto pos = name.find_last_of(prefix); + if (name.c_str()[name.size() - 1] == suffix && + pos != std::string::npos) { + // short name by ord number + name = name.substr(0, pos); + } + + int order = 1; // start with value 2 to represents same font name + std::string new_name; + do { + new_name = name + prefix + std::to_string(++order) + suffix; + } while (!is_unique(new_name)); + name = new_name; +} + +} // namespace \ No newline at end of file diff --git a/src/slic3r/Utils/EmbossStyleManager.hpp b/src/slic3r/Utils/EmbossStyleManager.hpp index 397954f..9a79263 100644 --- a/src/slic3r/Utils/EmbossStyleManager.hpp +++ b/src/slic3r/Utils/EmbossStyleManager.hpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include #include namespace Slic3r::GUI::Emboss { @@ -26,7 +28,7 @@ class StyleManager public: /// Character to load for imgui when initialize imgui font /// Function to create default styles - StyleManager(const ImWchar *language_glyph_range, std::function create_default_styles); + StyleManager(const ImWchar *language_glyph_range, const std::function& create_default_styles); /// /// Release imgui font and style images from GPU @@ -57,11 +59,11 @@ public: void add_style(const std::string& name); /// - /// Change order of style item in m_style_items. + /// Change order of style item in m_styles. /// Fix selected font index when (i1 || i2) == m_font_selected /// - /// First index to m_style_items - /// Second index to m_style_items + /// First index to m_styles + /// Second index to m_styles void swap(size_t i1, size_t i2); /// @@ -71,7 +73,7 @@ public: void discard_style_changes(); /// - /// Remove style from m_style_items. + /// Remove style from m_styles. /// Fix selected font index when index is under m_font_selected /// /// Index of style to be removed @@ -92,13 +94,14 @@ public: /// Change active font /// When font not loaded roll back activ font /// - /// New font index(from m_style_items range) + /// New font index(from m_styles range) /// True on succes. False on fail load font bool load_style(size_t font_index); // load font style not stored in list - bool load_style(const EmbossStyle &style); + struct Style; + bool load_style(const Style &style); // fastering load font on index by wxFont, ignore type and descriptor - bool load_style(const EmbossStyle &style, const wxFont &font); + bool load_style(const Style &style, const wxFont &font); // clear actual selected glyphs cache void clear_glyphs_cache(); @@ -106,15 +109,12 @@ public: // remove cached imgui font for actual selected font void clear_imgui_font(); - // calculate line height - // not const because access to font file which could be created. - double get_line_height(); /* const */ // getters for private data - const EmbossStyle *get_stored_style() const; + const Style *get_stored_style() const; - const EmbossStyle &get_style() const { return m_style_cache.style; } - EmbossStyle &get_style() { return m_style_cache.style; } + const Style &get_style() const { return m_style_cache.style; } + Style &get_style() { return m_style_cache.style; } size_t get_style_index() const { return m_style_cache.style_index; } std::string &get_truncated_name() { return m_style_cache.truncated_name; } const ImFontAtlas &get_atlas() const { return m_style_cache.atlas; } @@ -135,6 +135,7 @@ public: /// bool is_font_changed() const; + bool is_unique_style_name(const std::string &name) const; /// /// Setter on wx_font when changed /// @@ -169,30 +170,49 @@ public: void init_style_images(const Vec2i& max_size, const std::string &text); void free_style_images(); - struct Item; // access to all managed font styles - const std::vector &get_styles() const; + const std::vector

    U()n$dv0n!6zNCXiOoPgYhB$-9k{m$-wGD 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�os4WB0^X3D57Ri3)@=czST3-&@+dkw@TdG!pZBdS!mkeC@nI z=J)gxSAWCTfIf-G?%{-*yU4>E@`MdI`U9R=fhShr86Be_wn})Z8hJ$<2xai};C2|taKM#eq4mtY(Pj3&W23K*;tcGTtC4gkgp9>%1^ zV7qWAmC{C+hq1*Iw&DaBVg-g+fnjuNj@T+;yie2je0gLrQm)5f?1E2?VC({n8eq6w z+mpn0yRS^r0WfNCf;RqhgK4AA6V%uR7-9g1Sb<@5Y?Rn4VQjUTzqYLgW2>9mQ`&d{ z7?XnW05B$jQOLFZ02pl^MoMC^MK~B>Y2!2xqsbGRaRLmn0z<68FgmtKY?UzH?qS%6 zIvwNg%?9HZVA$7hw!k{D>K0D29Bm!w_yH$b7Fq|+eKIq+#toc%KxXhgb*%$yPH7)} zPjlWtlkAB3dTj z(nPm8__AajY3&N%G`-c}%PN1QB_n*ZbP|Ivi}R6IYVhr%Zx(#J@tv^5w)D^?;z`JQ z@f|VWwS8!g&WI)Ri&Y6MjqO*(KInHni-qHNYmlaMvSIe zanVM7xH?ZO7)?{sqK$c)(?n8!tt=|mpBK?4JgwkqlSb2ItZ2^DHh9_=qiH5ow5^_| z`A1}`abr;-&}w)i4VwIerWS}9{XnbtG|jw0Q`^XNdZ4KVC)`#Wq^@l;nr6QgpPE@{ zvavkm~Z%G0t&)4Y#pojzQjr*#=klP;oldzz*?z|vzh&3K5`>uH*2fYxU; zO*e>^^E3_ep$!>LV|~#!c-o|O*Vhgk?NMGt+vsVdo;G4MjdDdB^|T>RD;P~fOwqG^ByH#b_GYh_=waU{p z@}Ob`nhB$Bd0NV7>QF131~G)|^|U6VsW&THv!`V}O>n7dftK;KMo-HcP5n59>-4lL zPwO(8I#HsTLa2EvisYZs9^yr`ULQ`C1X`cb)O`>w=V?|A$v>m1?G|l=r=@65+VeLJ z^VZV$--}vvpW4V{d;Xgv=JP-Je0fx?`EM3*`hK-2_pvd1|MIwT{0febP4L*B|InoQ zJcv);na|oSIDNldl>5+D9<MAy^=m7O_)kObY zjTOPzS;Kys?vDJu;XD^M@C=y>?BEgG=eUO?rnMO=V~4!7^Xj+fa8d&IU!43=ow;uZ z+_Qhj9l300QmLI)Z0GSuM9tj4BY}3_OA`;T&T#h*{Auy0^@P>shiyR(PmlAO;!PWL z!bv*dP4*#`wr?eeqlEJl*u#^Y0VBwm+ZMd+oE6*BWP7rd9wJHGwj*so0x_w6dR&|- zVNk5SrJY1R8A<$2(nz!EMjMu9N4d7o6ggL{rk$`KHSHtxiJl|EBtCXVJ%jYFmG#{r zNmltNi<+devrW6TfJ5tMrd$zqNn>4l3OQM(Q9O@?dL+r~op;Mq`!HV`ke&y9s@$mg&L9Sl_7Xms9L(G;$Iq_KwJ zrTv@3wA*3-rte0^RqAQRQJr--ZK0K+&D9^Y5tj8r8S_BfNA@+YK5x(nTA^hy)QqD) z#=~OOn8zGj!DWywdTGp~Ra^%7Ch4sjJUzIZ-Yj^VdCV+mG4*X8UYAGFjZ-Hj z#nmYfug4R5aRNNC0#B^KGdlAxVk?dqO?&5ic%unCJ-8PdJX<}@FJv+Gf!LJPC-Ka` z;IMN>@Yd#yFysjvZ~{EB0#B^KGdlAxVylE#@C#Z)2|PWxOWq{y+3M+n7E{mm@P;LR zbF>jBthfC#XYfWmVH7986D#n<3Ou7T7bCVxcn5lT-3dHBxbJoe-oh7C$FDII1&L>l z1}9|h$sXRgCrsc3cwz;fSb=AB=4ixL3GXTdQNYp(JUzIV8oY%srnY!^lM>I|4NlPB zXRbEfTRdSaPJky?;E5G@MrZCuY?bhS#Vj50>JxZ+a345d+I!k;)It_hZ}Ik{O2csG zba28-d9{aU)eZ}pYZl0E%Der95$5+9vYMMtS5Bh1bAWvo>+lrbnKqkD&g(y;i<7PczSSO zK3Cea)zbwnrta+k=R^S;OyC=3vco*5^*^I^1Jq+H$ z7gLA4dFzvS>>f^lmtSYv8}ft=I02qmfhShr86CSPwn})KewF$Y?dic?agMaN@Ws>@ zdU(SUkKMyzx2iJt;eLZR;t8WT0iIZaCsyDY9lIyCN_ZW@sY{d!i#0osI0?+8!J+W27oAwJ@nn<#$p$GTTv!%V; zJv?>AWmxQW?#0x1c=Kjcqu4#>MT1#h>fvddIk;ISOW=tWcwz;f(Xo4CtAy9?;c2*G z@buuGe1qWG>gj?OQy=l>EhX{TJ)F>?dfQslUXv#@s> z%RD>{ludhjaNq2d_7=XF`Xg`Nx+EUEhZ77-lZV&i3B5Q0o>+k=R^S;OyC=3vc$ca7 z&Q^>Bo*vwb4Bi1eLP{BFn~SOK9$ufsWA|{drZOxadY@@;$P+f;1bAWvo>+lrbnKqk zD&g5TGFXoUo*vvkoh9u(sVEk-n0l+XzQYoa-NOkh<&VAB;Ei~~C{BPUR^W*hct*$W ziLDae(YELnX`0?LR}bzNXA0gAcm&?Kk+!**`cepLk~*gc$J_rCTX)7}H7C$>sRT?VPRn7X@xnQt-m^WL&*rWzQHI044>?>5aec|tQzfFV|3h!q${ z$EJy`62^a8=eR9dOdU8wI+<@V^<^GLT4JzWI043<9!Ay^I&lIFu>wP^z%V+tOKg=e zPV+EQDm+|QypzG0Z!xvt4SAQuV54wCF}~)XOdCC((2Embh!q%O1%}bFQDUov@g2qi ztXU?Dsqa2r+L&)KwcW$$lNf9fPJmJEVGMb~2AlvxtiTW}FpQ2Z5?dvVRu3atOnv+` z!6+@JZiW1e7gPOe8jGo6CCwI7{W6*sQ^OisOFfG^eHML7iVqNYVx^>o8K0=r`?8oC z*3DX&_>BCbnHE#SidhR&gOOh@(_(5^D{Eo8*)Bo%i>Z&&Et1@BeErgj7E{Cem@TFb z!J)+*G{x%c6-{8(UQfn4ZI;O?PHJMyyoJTFZXQ`2>oFf&9P{b?W*f4n}{kCiW5AA96fB`ld)pS>ay&fC_sd9x$x>$4%dR?TPmX!l8e4K2cCy5$QvsOd<#Yr4`2L)R z&Q|76FVuP%wK80f$eQ0dT-A(FKe2io)ZS2 zQ=uQ5d=BRWw@M$H1Aess(nq)0dlax&BHqmmve)Cf zhCYRd-CP*D6l<5X!NTA<4Owa9oK|TAFP14aQ9idaRQQv18qJR@Vq2d9+M?v-g+p}m zf+bcr#i#4U#L9!><%vmd@_PDcMZ>D;rW$!>-539<@@x;&O*<=-#UPRyvddQ2h#y&F z634_iF=cC9Mk&REU^7pEX-;q_t4xFk8sV4N4E$X8%YZsr1#~xDrK8ye!DmY-HqGv9 zb}EAKLI8>V_*|`6(;~k5%;?IWZ`f~_pQHfT$|V3K2@C)j6bQT4TR;7G)w3RyoEI{l z84Q;nz(LMX5OUWvTuoA2YU>v9e`Os%uTRykpa9gaXm9AMU16(jlbL+h4wTOF(AXYV zzu;Y}q3M(knNGKJZbrsE@sXufwYy3u;3EmB++F_3r=K1IL}P`@O7yGdqi47Z>oCb^ z;^9O+n8fseyvgrIci8Wi=nB$9Il$!5S69`pFC;ghWbA&WR?&(=Wb4joc#S;EgtaQH zNt0N3+#QcDvHKA!7wo{>oojD6zV;if4aZBljZ!x|1eP*{ugYAogzYh7Pft=*=P`l=S0)~fb+>Dw-^uR6M*^G8y6RJr$Z;nei9>0PF)r+2FT;ubS!gt>??7T(3D zFGG>F2ULBT^6(4(b4J_KoYVOl~6?7Z+>Q)IE>UBmMEd3jDo+M|Ae>G zubKBUGM|5}mnnrRhol^xaRH0GdRF#tt-Jhy(guJ5sP5z6TS{fIb5~R&J5+Sh5xM6^ zUbd@|r~oQSv1Nc64xOWdzOwEMw1;J(F)%XWvMFZHrXL0W_RGUQWL;7o2v?qigzs!6 z8OJIAUq(TA`G7ZJypo?7Df~J_e4W@%m6s_ji%O4gC5gwWsJx6)!olXy;7qx9Fwf1y zF@!x9%CT@9)4)+VcU9EYkYCS1{CEHU8N_e3$LwcHsjHWc>*ur=R8{GVR25ZIt`K=k z1@340YI3bu7s``O_-<(v0hQ~W_?>V1)=!soim+r;hkMyIGbDBgtAV_-@~g{6{=~sz z2%D$KKMVehnl%yn2sii>w=o z+%K|rI2o^149Yrs?ryt`gZVF8YDgi9kniYaUZBrX*FoYq6F+9`cUYZ7vVHXh?ptg-oyG)l8vZ1-wEHi{n;Igv zrIVI<83yVbZM$q-bmdaSH@Lile9wZU*ljA2HSQWSfGylB0+vpuj(|Cc4H6RBN%Zl~@9M+gm>6RW4i+c1v%1B4hS^cAC**l}(z8(7c&zzo}ala$xP4-N%%}zqMe*Co!eRz*j*s63i zogH6y(W2=+)i}}i_tsR|#da9_i#VL_B3+ao?sKXk$n?JA%Vsw7{Quc|_xL!gYX5)I z3xrETV0vgJMT+qV8Uag0j#Mni>hY421{>1Rs;#0NJ&}W2 z?*$c71W60FQBewt)*A#A-NT?(R4nMB-}h(j{XEZ1GD#Dtzu)(dZ(p4}m%aAdYpuQZ z+H0?Uc|gE@JFQX$-L1AO6nzXEHa#*;pZ=0%xLw)YA7)70vHQ&!&zpzvxu1?H^lGEYdJQK#5jD$bTGmB(6Ld84t5-uC9x#l>>rb|a5^vGY%n z$6NEY^_9YSWS%3Z@pxX2%|mnXUEqMLLrlthq6pqKR7)v=!deoAJ$Gt zB$ri+r2XPOB9e*dhqU;gqaVJ#OpWDX?d98hPe>lO^;M`y{!M#O9{8hbVi`5DMsK-j zXE`${N@#OmKqlCUGjJ)-&_S430C}Wpotd)H2rgNw^ceQ9J^C2u_k_d`g>9*}h9r&d zar4G>*TL+bMzG~hJ^AzYB~Qy7LQdq%G;btd%B@C^geT(;3%M&DM)G%v?6k_JL5AQ2 zoH5)|f?4PMKx_zRYV??+wJ>m$WrL+$t!x-JNPoC98-shIJ063Hoi~*4okmQ+A_TJ< z@}~~j`JcFj>QbUXIrK2zqhW`#w|S@B@DtXc$y*V5A#NAB9io)+Am+`TafP~5l?Ys$ z%e~b#7G%BqLzM+x*V-xoeXNz|pEXZJs^_Km{JuV@Q9 z82>Dltd_gS9*-o6blau6?WzcRxRnjVWY<3(6S|$Nf^fsS7FNeWy^QOA2l#oTPB35a zCx*Ho9>Yt(?Pbs4GK~lRMb2{+&Wl1qYa80(Njxg-96HY$_s{}QG}XVdK~d<^X<}@Z zQQ`CI5YquYlb6A~$)`=%!t9-$^(l7_r+Jl9#Ul+ZPQXSpv^@cFPKcLU8k*+*FfB49 zh=G={vSGQ>K&?o(B3NB23O4I`c3k(?rVK>(A6X51zJ<>liH!CHfG z4;|&@V=sez&Z?Vf8y&=`l}4#M$RtL0Dl^nvFZ58S=(?VLXq`~1sG7$~(53n1avGU^ zRmi?Z*TQUf8FIS&*y*X_gE)v{Lmmqb%>e0q;4FM=)H^#R_7{d1eYRJ_&ZKRl<>%A* zL*z)6?oi~x|HI!9mgk}0sxRwu#@Fw=&+)3#VfJC9eouGLSHJ&fsjoj%W&a%gw)q3=j2oqS`FufM>Nk;`^gea`ck|uvX~@PODD>w>(?iK% z0B^@A^GQOikIX;523?%{*x|II>GV*YcaJ_#xijB8s=Ooq^1RABatU1R z@1!T67k_7sU!JDh%%Ne1oSQrw&~OptS5TS6lkn2q;fG3f!@~B z^9B2E?ozJ5q~PTgyL3SxVa3ASO=n}{6*63o=c{4(!u24|xs7@3ML^73;*}h?2p4tf z*5SH&JzbJ&p`eRVxve9k0T7NU~? z+~TLbtFNrbMzNNv@jbws+{a$?tj%qW0B?a4bRqhFu$3nO6oOOy40cO(doYWtErTT{!84NxR4UI^fBkuyV;$4 zz`mB)CqXtvlCsTR@EEGtNAy{B`?E!Is!-eR z!9OxrC?g?1_?7bWS~mbTfckAyS-n)%w^;eZJ5;yO&pY>`*C=<7?qzw}@MZ7ReZk`6 z5vQ5M;Iu#lyRbNVHCwOr1=_;mc4kfc-ase#LBbx8G6c(Fk`OXBs>i#}b|g<-+E(q+ zEZW2mCl%-t+DoIojGK(Ue{Dw{Y}i>pz?3EAlwi!PYZP*he7p#LzWv%=yNY}&4yMHD zIxA!T*=p~g5mD}CuYPt{k+8}xnq<}X5#Xi*r@=N&s=SHp8GU%_(K3Db?zxlEhcC6M z9uj?+Y1-7&4{zh>Lpn1`AO81{NQ9;j|9K(ud-nYQAN1jM&51rN#Je9yALfhZYWk3k znThn_?$^W5vG6lWA2v3Z>%)r{OiUmCd`?w;7{gw&iaoZM)$D1KzT%1N1&c||$?jTr zj(uFNz*m=2qCqCZI+>+>pZy0U@6P=d)x}+#vfBWiKZ<-j^*Wz`0S;4|d3R45*#V5@ zj+PS1GkyIF%mN=rwCcFT0s~aO*r!tlQ%yfrG7H?n9c0MvQ$Q!?LrkclU@o6KKksLS zK~;W^tisP<>Zcswye2(I2jq1&*)orS<#`#{;e2`5k=pKEbI?PV#(o%P6_#bRjX_VT%wzczdhYhvY}yvNHwaWeexJr4g#duWn) z5wtD7@{QRw&)!#S-Oi^;uB8Pb!}B%UV%|PZzO8;QEkelWOTIK`Yr>6g`onNc#;jiB z;cHwm(qQ2Dw6h_fw4B_W_RyzJf1#9CURBa+lNu{)zt!md@T})X@8XA^GrfxsdLHyX zGV{67``KSTXL>(dKOVh{X%GxnuD}6~=U=swVDYeflWc15CcHjpbFufoUDmM52fT+E z=uoekpT(u@zGvwez3BPv7qB`HMou2+`4~N6iKh}q$q3gcJ~n@ zj{#knHs_9I67E0WVN`D5wVm@N4|d@IObqkJnV;Lo7rTv0){)7aMB|ammp(;#$>Ibn z`So~*r9W03FID5G%$~OSUXb>+RCmkO(mHh4DRu8qL+A{xPo@eRmQz>QCBFQFwJ`fr zYYQ*WUF!RzMq$ay{_#icEg2zDo$W%}6foOpJlNB$&}Myy7Tq<523zZHywW4j=uHLz z*|g4c$M=!3@Ie|HW1}i#0N!%7yV~ljE?S~|VYU?C5rNTOucPUjb_`8#p0;~Zw?Shi-L0hM7 z9eiI1ibGv{@tT06gP9BnwjLmI@5F&$^sLDhjlJY&fy>?xTFzv(belw+4@GK1rnfEa zwr=q}Qgd=6y<~z;c1k`=i?6UjQD_G37Mw54zN?LuvxVvTMfIuMUqM0c*v5TRuJ^4{ z%xIZ8lM5n&=YG2~xnNhx(Iii4R_|Hyiy@;g)<(XO=b zWIjAg(!egw&l}Q1zI2fo0w50n%-+5rYLr&8K*~6#j#&Q9JByymZPmaP`se5^($jQS zui|=(s4tF3DQ%8v)s5^kw&4oInAqnXW|R9CI`>}9rC=_&eYD9B2y*2inl)lBwr?N; zaAN?pkz`f-52FirY-#-?dbSUj8h1eJbnXc$5Q*%ob$h>99JGebK;H6`-d3wTZk~C~ zRr-nT)(ioSE$bq3I8*v({!A z-Hh)}k!3lX0n6F;rODZt*$=#0JH&=*0-56n zS8dX)oHX2BeE+Up3gMQmN7^MOAq@T2pYD5DujKtXX&0OskJOT}8H51?*7^AM?aukQ z)+4X=Q)rPW%8Uczike!mF{ra7e6dKU7&zCe04T_bEu3$;+{-vBWH}jroFNzV(5!U+k0wi0uXwH&};_z&NGr;|`X@#H2lp=LWDA9-*&QTeU zc!7F?zFfU#K{uG>ye-u%sh%}iE!*n8-{x&)r^K;T9P$Ul<<5JV5+d^!%pJM=g{@)* z>!pg4Mf`-NS|Dr7Q^tBhqrvS$l{1!B+dQn(jEQIrEN}m8j|{SPysI^g5))r{uQ4QqM zs`TN&jN__G*Rv{J&+aD#^CT2ADFDk>No{R9?hboQX5_9+P_GSEEf^y(>>!g^+G$s- zLewrJ8mTdXL zYF}z0EE3q~^NB-7#6}ZLcO=zhj!#rq>QC1;WP}Bp8+C;!dqy<&TsbdPMA>X#N7N}^ zKm(T=Y97*u3()lQRkJz$Q6pL=W4K&<)w;xeVL`(c$3M_KU<&JN7ZdpjnNZq{}NFf@v!RvfQAu`(emDSF#roLqj zSM)AxSh}G1pas2)YV%v0$t)J;*SGYtk+pYG2H2&&i;kw#5OZ%xEMjE;fwHpqakn$I zSWh@HlIu zzeQDAhqvTvrxaghy0aMHiY&eBw84HsZ%+!+^95V+-n=n|l-(V_4h|Ai59?Hi?%j=g z{ zlr+1E5s6yH#3&tdyXfwaT)cqVkLLKKc9H++=j)XDEHba5>&AsFpAM`xfAN%QPnj2I z(){MpRT1RSmXYOIDN*ykm&zW>_g0M8P#d%B8fwtko80m^xMPp+3Xf=|4YuT;tb5<5 zk*3DEwAX0tr9x;w*a7qSUR$cwllAn&kl z+14rTuVOphRe|`n;=Z&cyw^91_70)iKz14ei^w&Cl5KKp)h7fqSURRG;YDUCynU2D zc~kGEWv5e@NUt=d^tizD?lTMgtDGKl?y%{4jC%8Mt?+BI@@vc*d)GsxndWmHghY2` zC?qRMG?kF&>?c}ijhEF5byy4s5z9rGd2Zod7&PmpuQ658a#7O--qHi2kaZ4B63+@n zWK;w-Wc93R+=>i8i1jn_Up+~xoLuYi-*v4fKB<~V6L6Jlo<~t7e^@y?WkM*t{(@db zH>sD*iByzWu9>xm*Zm?=Ke)-7N=zvoA(k86rwEgTb|EH_K5KvA!Tp9^Wk^vf9rLOi z%0q5Z0q!e5_qZEX9x|{o2vsN~^af(PFuUVb)X|TO9kp2z>T9B+_779-t6`JNc<2<) zrS2#eOd5%$IZ6Vn2)~rcd}Z*hd3j8v`ZuX_vVW|#k&@A6*+~L{ngM_9MS8J#yV=9- z`Ax%Yi=YGZo!B<+$qrZ+Fo6(&+}c`OE3AEsYsr{)-~5^QPJ)rGgMba$LMWz2dpDD| zfgw%o=A*~t_blJK{u%t9_HPltjn())*e6%x_mQ7WlHdMHemAkAag6%C;O{}7 zCtbhTo2=|jMvC94yR`1=Wd+bO+qpX{+T}lu;i8W*WFv#{|MEXS`Hf{yS$MPot1y6( z8{{{{z2hBG#NQF;`(2HDO>w5Q!D5DHUn2Xu-PQ83uvM*JlWDa*e%Q{%vVZz6%hy^~ zE!>;y-du-;45V05w#)KW8?I^KYJumvaQlMZeE=P9Sv9|wm@0}vY#_3kb%%7J|Bx`k zUOokJ$&^oN=kEMjvx-|DjF-bz^oG_S=7VYuSXSaO zt<-KG|2O~BRJ&UKHl5|+KJZN&ai7IT^s}{7{A`t!WpnmfLPe{<@6s4Fuf5tcZlf88 z63ic^>CjfRbNc*-L-M_|8n`0DX$>GyJT4QpmC(NBQz@h z(Y_`N-&DR{nC^UrombMmxz-&5pPnOv&X3;V&&z14C{g;TiY@EkcdCCwJ=WXm0(HMq zO{A%%qFNrO6`EmAv!DfMtPe$#hN#&=cRKwYFEq^3Xv$A)ZmS%S*2&QT(TaOi@JA94wpWksML}*qx4S#r-vJRyj9tsBVXjD`j8^)4sqM2 zA-o{nAwcs{P3x#4Urn*l$j^`gSow$9`Mvj>E|#yq$Sb)`nA?S~!##bU`T4e9eV=-NwC(p0+WjHKf%fLQcXYH#M&nJiV#qhs-N)A#QmpDWQk__TxX6ms#2=wOt+}>tWw)_mveUc`6OBs&g_T+th4;N=%}&@% zMXmc6!xpA72pO*;hvhO$AC1jJ;D3doGd?zpK6GG?xbM&d^^Ay02iOcJfD|mbM6*6T znEcvGzpHFO=vPK^L}_imr+l~29Z8QMtL7swY2Lh5gaMkvD>lWj01x5OX(ko6?jB z9`^okv9HFzDQ(XEFMGYBc}^l`FOcmBT9W0&oTeIr6nu(U?SVS7R|X+xEpquP8U*|* zL~_vywi4neTyEFbMcrDYrCmAL6KB|h%Ag}*b_e`yj9u%ec%(_o+44)Cm* zkwLpAvvTT8AVV?Z3IYOjBGCx z>_VZHDiuyY@K!8IRqb)x2>a;ahw{BbTHQZsvMlN_`rwW828V)?sUpkRuZb!^`*e&r zZ^swGN>4e_to(`O-a!+As%=mL;W*k`Th+*EKJzu~cBsylT!uNcxn~`#ArB$GSN?sb zr*YJHCYvu@-hsrkmHSs9C#(9(_;z9nXOgGBOl{Fd6bns77tk5BSsEC}b0q(M(HYNQ zwnp(yTfyYcv2G?XpfiJFi=s_V`_#>JU-*;X3uy;vZD1fLW(N?&POd4gwOrF1)0E;* z$yv_y9Ipm#j5z2=f2ucxm)8;~7TqyIDNJuaMk{+-x7j);TRpXSoBIV*Z3wiV1e@C9 zj!3V8j1K=jhw-8K(#M$t6go9lY>x9AlV%fcXX5UIEQ%;RL-@dS;Njk-Yw;BQow z;CvjI(jN>rSSu=dzq*;0EML7ADpNW+#TT8i@;OoJz?!RPh;TKw#=A>@3FyUNUh-i% zA_OV3nq*dvLX)dA-8Q`$+37`wHp-8Xkt0qC6e((qVQq9wZRYjM|g{7Utl8{&#|gWbwrz&>&cx_(@`ds<^rLrCbZGRP98| z(k!^$Wh%QylvS(`cnaj@@$B-^M78x>RrT8@98fPatY&?pe%F1=+O{dS{RyEqG~RUI zY>%2kuxxGlUX2@TqWz+%zcmh;#Qa+K!GNqWY9QuAMYcxQ7~XA8#&!zZ{kardRyicy zNj!<#Qjs`3ctuI?g;!)Rp)(_5YyH+@bC6WL_k<`f@Aej1_&<%v7@11|){48Ujwj(~ zNC?3i`iZRj>)|skV?tP9%JXCJh@e*E-{S|Hdk5W*LNDS)v4wJtCEz<{Omh0u=G?G` zlvWw)3aFr*NXsj=gYyh(+=~wM7AY%gnv}>N`9Oz>mzYc?SW%*|GdAy%cRIMhLLi}( zhhO9RXjCd3?BlN6YgW~n4bQOW*OVl{KR$he@DP1n&Cye@N=xsBK~tk&rbCb?7b(hf z9FH7PKk4zvlL%HNm-hyypNK;4`sOJp1+hlU#RCB zlII0_?n|C$@myREE5s(=&E;x-*M;jR!&MP=y}vzNzZb4Q4_Bo<&QBUrt^Q>8a1ZYH zi)OS9>RL*b>~fXE#}W2S<41sB7l5sz#=-vxIv~{&ek43``~leTqu;)Mtu{C>ctjnW z{cBHDB8GRH@c^spL(rF7_zK>5>6>w0#!El1sy>dSXXJB2-;LvxKjaOGw_k2MAEAmU z8HsOf`O9`Z6sp)p{cg?Nq!vcSmomhcs9z7cBtTZSMd=gtr`42d^Sz-Hs5D?B2h`9D zGs$?L{Mmf({*2QNM?C%B{Y=d}Z0<;5qEzXHzQ^dJjP7EM%`~dn(st8INu#Sigatk( z-02*`p{dqzWjbv{VKxqo<}KDENwn*9lHkYB)_I4gT)Lzk`;W7o1d zmndDcB*hOX;(){$kIY?XxMmC2KH%arUMub6IK>ZW1ZqGL)q#=@QPS=yInQ$A!KB>l z110{8X)7B#0ws1O$9jN7S(Ls(lzdzPfJq zo|4Dv#fRlSJ5bUXD9Hp$>`IR9fs!bFSd`or3%)RSrQyQpao%PHB}K!eDjZQec~P=c zN>`YBqUBb+(%ngJ$)q+=k_wdAl^i<&5~?VDrzqJPvs;*Z-+|(at|8?fd40J|>_gJk zY9}X3wtGstEw{B-T$x$1gqjc?TEB-WQw=nlG!(}pgZ3QI{TFxpm zq2V(_s?@^VTMrN)Izq>Nf!vbGkWzpcwEW@9b0$1T>5V)We`ha!+i5pkCf^^hBrIt= z=ac~*Zb0fi-1-V2e==|ta_NVd;uMO)+;7emxz;?NA-Bj~uM{Bqt&ni#xhXtH={cT@ z4^nQ`wu4>6o+wLUZrTd5x?L9vS)~*px&l(W^4u1lqx5!rRu@=U9dA2b6Eb&j)wX9{ z`E8{}Hd9*K7SX^y+p`~7#X9CQt<9&_WLJ`?egsyRVVeX?ZDC6tGxQO#Y z5g8Tn*<;K2Djts8s8VvmQft`RgK1Yk`7i0!hf*xPF!w#>r98!hm);XE^Na|}ol#NB zomzoGDS4G*4IOdm)8(q*6!0oV*Eqc}_ki+J*2JY;8%hxt_cJOi(fQYgQrd*Y3>&3n zLn#h;m7;5$UYNUKzcPs(6_=6;r3j0AM@1=rQtTRD+J$9M*eInfl(LOym7;5$UYPq% z;{~hA%jwJFQf@!WOKgw?H@l*gzEDbsuvo`MDN92s1Hh{kUE}n^+&Sf?>>HPIekes) z+~-k+L}EvTQaXiYjj&P5novqV&niXNIK43UOD3_v%X%Js?f+q(=S5gtb44k4X*TJQ z)RzdarCI-Q62DLKyNh1~D>>%#`zpU5@oRc!*RG5BZRYnoehXO5|8{;Ki z_Xmfp_;BFU{@Wmex>01IaQWZUv^5p_Q!%IZV*Ihf>;sUrd&?itJ+NRpaUqM(s>Q(W(ype| z)d$-|nM%#6woG%MK4505xWC#LP!^G~w0_>WJ6Z86z@=l~r+ag)3L4^dsJz$y z&})!cAHd3zPFGUj0@)AtrIUrV&<~~&$a+ZAK-w<|l=#go=LL*!=Dz{c!A)9kI=QKj z4i^5Nino>pPLtN_b8tEzL|hfaj#&yvjRaQMi;AP zut|$SpX+VNNo-9@nr0INH%tI;tx1cKiq$t!d})Y9Pz!peH7w{m({j~vllIyB&I6xq zkkO!(-RFIZ+Uc|zZiKyFH^407(14mcUqsR@N4Kx<;SP=49`oX|NrmP@yowH35ylP3 zf}CZCf^?S;Wg~k5QDcwK+eVMamy1zEOJfTqGiYXl`<Wc$K7#Ix1E#gp4#C39Mt^m0^TThgEO3l@? z*;e~kUY|^{`MXPhjTI=Wud&u2RE@XnaEsN3n0`<*we>H~LMh!NBWeI8^9jUTMut1f z$HNw{gc}=g@4@x$?Lj}{*b5}ta)dm}YXq`&H$QKiY_M4r{wRF!wM10a4Cw(=t3NcG zd>_AVTbPIZz^|Yr1AQh81kO>x za-e*9B1&9HlPQn5jap33y)ASlXr3OgjCvOJ6vSZS*!@q=C|kc^^fwCC81vBq3sfs2 zq;N~T|Mypf>cmz?ddMG2P+2*5K5ZA}7{Q(5vlG}~`*GRqWPfe7y|p?&$bzl5w^rQ{ zb6M0GdutC;A2`{)wU;vRi>4geYuajjwf0xpTl+oiFC|Cnf(Hlg|MpIYg=o$ub@ z!K@LEG2cBK(}FC}-$~4O*PHm``R-F0iITs{eD_^=nkI@tr*+Dhj8qxE;& zZAIXVU<#aDTOD2il}dnC3mUZ=ObZ780WopCSMD!9)MoH@yQdl@X{CjOYnx{*+HbpP zj`2CV&WGJkd|Y|-g1a^4_U(&ZqPWt;RoI8TpxfN`qAG<}61T{l`!U9Qg7(4MEA8Lx z4IPYc|2NGs*e-4pO-RHQY1{&*j{Z1$im9_cO?@z#|2V^}io4S4HOHXr$n`U~)? zi@sCt3h*G8yJ98ikh{fE^B*f-N&)-0_v4|2+};#6>3lMC-=I2S435_}NVo&m&}D)4 zrq7$$_YIY0!r!lh96x5dUD@0Zoo5g0u08{2@Ooa0ntokjH_xQ2yDjixQp>t_QzR3L zTv#OIYuc=^>};pdEtLe9E0xDuU3oM5`-auO$MPUX$b|9SzQ?i`^;#P1dn_h*tDkd? zS>rtE{><1*d9B*%XEN^Nd`(*uHq0|b`jK@vh7*u86$+&GKPwUV1`Jx^UN4J~$&i&2xD9nB(RTYQ18B}eaW_uydoX%c| zMv8LvKfz6F1)48d?#%SIw)D3CV@vDKRO#J)3upB%Jl(w%469lnF0K|~n!h{17rw33 zVUNEfdQ7oHenY{+A&71B3i2sqGG5x-+lug7vtoiPo-&&d`4So2#jCbiB23v+pMuA$ z+eHn;lq3vq?Q+HdbhND_^&v`+W353>(^GbzG_wL)4G##6!}1390o5x6PK zGNpYzoR**NT~qo=z|utO)FkyprA{dggw#B#(~{H{rA{qsS9lH zVmbknsQ_%B1Z-^pt1T8yDWJzsU;s8F0lO)H?Nij8tnuY{;s7=?0sBS(n^C+W0UPp# z&Pu@U31Bmee4IJLrlB#|W+z}j4q&s23llKs!S+qSeiOiE7j?!+plzoIt4qNC62SH? z?ou>LmF`3E6q-)JrqS>ux4Po?1WaRMz~&@i3U&xAUG!^A4O^oJ+b;oY2w-!H*Cp7R zJlG2ouoDB=e#J`?u)GJ`KLKkAU@s`1o`AJ`u(=7?`2lSI;@kwR(}Nw5fL$8E<`(~e zFA)T?+=CsMfGrDP2Nbs^V5>Y>eFC;JfE`%uPr$DCUAy(j_uMgV(Z@ns3vkOwUUeC14E!?9k#16EH=M06RPZJ28MAR{XQvDc=?p)dK9L30O-2JG^*r0@m)q zj!3}H4`44Xel`K?^k5AM*rfsNh~oPau;m`?$OLRz0Bb0|HUV4Z!5Xo#k$nqbM;5by zNrLl=M{?(_-`bGcSlo|y<-Ldbms#sSydO$WLRVqorHSp=!Jl}(`8!oUooF=vkHbIh zy6X@*bgu%zpMyGizX0R&nU|vxy$=B3%2}9~!9R@Cfp+5WB>t-PlRhgFdcPFy{T59M z(bba_tqHC*uChXF{(MXCQ-+v)a-Jn7G*x=DvH&f|Fb8pA#vg0C#+%spr$j6~hP`{8 z@-mnD@&Cgb5y2UQ_Duw4apXcUY7ICB2 z3;eBYxR19fjwsf(oXe)MxKx)T`iJe>MuiZ+-O2+|&tK|Y%qaZi;23Tt`#z$(+#q~5 zWWr^8DAY3Kq8?Pa^Lp42P_^k{AUw3|VbC7JiUFQig=fpbvjnR6uVv!ds)c9E$8*2Z z3*nq#{N4`tHCCNf$hRZN_f5BrkZ+JvB4P5pQNyVDv^W;9z>Ahb7Poy{EBw3nf zhT#88{z~7h&fkyh{b>HarT5kNyU`LR%HMjcKZUH78{q-3I&8h!2Lz(8ZhH;=6~bae9bRj5RbeYAE$bHXL}W~qFE?e5ZPCPVq& zWWCz%o|Ez21Lo;QLx1MzVeyL#j~0M?^U77h{H)+^fcf-=q9^{*6Vou~8w_ zk^Jrs-t!MWGvpX$_8VUxvtq5-njYpT5rVY@|EF61Rg=yylTQ4kE@VWclB;Cy@k`!M zntvY4`|j{KX8nwS|LBPMCTW`7LE#apS!hgzf3xv9?HBy^LmqR8x8D^W8%M_5 zmw;XYlIr^fmxpYDzIR1f%IIqylRn>nO!$1)Spj*6RHmc+eAn}S?Roj<>=$hKxjz}c zY`@^9r~Ip&bSLM|{F)wGum>@s|Tr?gO_7wKuhDxyu!3 z(FAZ`c(=kI!lRc>rpZ$A<)Wqwt5tr!>(QZzjPJ3n-9bK&(jr8ng`sBnBTc`yRRdxhM1(mg!!Ebp6|La;BJ(--~sndca{4MhuI48+|PIY*PjIv zEA|_%9DE-84Yz(w64~wiOTPyjZ~kTB&kfTMA-sw2H|+d`GR5;RU$8o;HvjS*_8abY z{^hOfriS^KtUBzG^Dhg0a<%h6-}E!%br8~rERs1$a1+k8w{m@QrfsbcXEOid6RPjD2OF=xFWUYb>bueOD6a2~KQTE}nQuFe zfC`eG%>L5d*7prC1%zf?)bPe#PxmugJahBS;SL}(SE9~ ze2>l=S&xeSiS(-FyEb;q?^{0-@tXnnX#Mud)%acUlS%TMrmd9m`^b;SWuqyDM#P7^C5x-UK*Arv&`RI%SzvNY91A&w@#UShZWpHi3* z|7j04F8}vG2maj%{_h);f95Zr1ONRoBJ3&7EOkvX2v{!wd$hTXNS{53{Jdb!T;f&S~dh~KLAe1T7{#_y*4CdqHg z+Dpvup+6j>jSstz+3^lICVQUW*Y`&JR<-A+`{Zi;-v7f%^1H^`N6hc>KNyqW&-v36 z{u%s!DdxATKCd2|-$#BhNq%>rD`ooJeD9e2-pb(;|0I1rZB z?-o6cJq8+igt338?(C3I;)NmhmUC}W6qB5Jq_liwyiopp2kuH@|9iG$Q;8EYlNuj~ z!ol6UQZBb&r9v!RPj@hgyD|hQ!H3o+zNwY1o7bA*J-@|JwiudPJ9yv0`?k79e)D>| zC?Ve$F7_3$e6M{QE8p8AFQzW-FY|i(_0;Gu^Lhq(BA>sk^Yc3EuGh=no;6&^XP0@c zOQC?@Vr08G4+S|W$U#Ax_x$X%qFUaQh2K1#3Al@c6Kx^nFzLhYH7xM!ZM~_K>TA7; z1#x`tms6)(H~0y)(y_XiP|V}g+A5uhWM?&MomGAs&pWuz3iE$pznahEw3;BX;}W@+ z5slSfP3HW0_)~oEM%GlJ4Yna$EBI!)+$|`b6r}V5Z6;|#LeQ%aTsKR}yz-OW6s?U{ zBpH1)eCVO#&tI8lNRKAh(H?2(W{))Ek!B;L1hxXwjLOUgq!B*OD;q^$e?av-==;^w zk@TH2N&2GilWI;BIl{b_kS?y1s;~8%_y|*`sjs?pxX$z2?=+X0;(fkvb-W2MuV>)3 zTSxGA1wO0i#&G3X^{@Q?x;kt-Pd<9OCgis(@LeIlU3u;g`TdnGIeKRDce!0x+WsV! zzf}2vZwv7Lx;lJebanW|<4W5qDfmo)-(ji}?Jtf#XSq85B4b#d_6?Gq*~EOOlBZl5y+ zR&6$3e=2r;X>#173~_EA+J)7O1ob5Ips2K-T{_HgWJ~q|wVZ6`Qq}r4QrR_>d5E~_ z%!8)L|26v=zO5?qvhD<VfKT7lH;pfZa-MOto^d$v4A%MdSNKG zgZqZ^Y@hboZi};B6lK$D!j4edrQBzHwk1~DWj@>Wake8Zn}m{smkjOZQZa?7!zv3N zI`pt!LP75Rx|&&xHfG8+>R<6Qs@}rvslJQ_aT%MxWD(|IkLX_1Nm3$~Nj)UfbNlyM z*J#GctWTN!ss{hibyeWQ{0=y?z1vU#JJf<691c!YNfhUoCIoI!k1s>E>;7_$%xw;` zS}bl4X)R>R0k;7Fa%lk}b~n#O*9E#Fsy4EnUza99EwhW4I{(^V!}1gSj86Actqa8qal`?sUi9@fUoC;W#fA4-0g{i5j@js<)k?cV-&lRyRuG+2f~pW%@>!>%uc3_3?7L$@~sno17@_d|sC zZVMlsX%j1AGBny2uK&ej_&7Lsx?QO&|43A`6VPg|)#W%(wy!YvVxw;Me{zu@$65>9 zIsf_>d-0j3f~Oxm5}#co@%h9`@h$Kzqz+jua6Ny57;4nyFz|B|+`L#0e_J0Kr*uim zfjBNieIkp*}pbwkmx{d2&)5`bA8&oZ09| zdKq6HJJcqZ>kjknzj}E)-u*6j`3J1ET^P$0Ot-ULW|wR8DW{Wi6UD35oUZTmUZ{4I zQ;~V;JsxA!Ec`U$g1-L>n@5Ki^tQ93sx9MW{6v91Z6U(Tc?tdubPb8VjH=bQqiCN2 zs@y_KwuNSSVw}tyEKLL>V^aubC$GCk6NT-)=pl!*Jq)`bg*ed@a z-<=|vI)X0SlMq?S=&ThIqh(gnD;>xgt+tBarS)#m_>bS!>)ntQ5Ph4vW@8P)EO#wkQ#IbXjPcH8C+@Nl4~gf4*VdL5 zX6Mm%_rZ);du3K1!(>tcX%gU8!fgs$Nwu@(uUK*YDo zR099Fan<+u;@9D;?&o8%>`Fb7b&W?%(`Uqv;M{{B_cx~aG#DcM9(V4dcB_Vl>lQQ| z4n#wCXw@d4?WOn@+Hul&H}4PkRW#&Qtfb`^%gbBwL=ys*>cOd2Z(KgjySfs#>Oi_7 zSJ1BWd<&Gox|B{=?scZp6%_m+>1weXbZrb*o`-o>et!*TNl@qYMn-klTKQ9?3!hw4 z<@eXfWsO`?@1m;w9V!?2ZJ|7WP0qBCb%=CK@cjmF+G2lfeStKH`tFb#b?7dqJ9}qs zKc{zX(zG_Wf*_S18{@Gy3rv)QckNoC((XR}cR%dcqECsveE-f9*Hm~TAu1q!P`&V7 z3Ceyo)?Ya%}N-u52wr0o4W@2;%|Yf77?odG}a5V-{%PtjDQw>NR@ojUG$?F>q~sfB8U7eE)`lDe?Vz1AX!RSp(O__pcaO z72h8_urj_sY@jE;KVYCczMnC0O>{2_q~W;!?hEMT^?|Wv{B+;NZ#6%yV7gyI}vE0b34&FB1#-Na46$iMwyZX!}b$VCu172C2?e;wVUH9X8 z@;IzVve;|N?b0*XRVp8p!}gqv4%evsOF1QD)yjsClg6=1y4dHj4pjy*CWQT5-3x{>&h=oVH!jxI(!t`~9W~GlSK$5+ty|r5}9~f-Z73w-9?S3BIwP(Ox zOT(3PT~``k2a7MOAdqYjA^$_5T70#Y&X8^G5J_69ehT@G8QE9;qZu7Hni-|KH@?R+ zBkO(NfBKe-J;Zw=Rkk$mPJiDtQ4)Pm=_RtJBP4uKpronPAR!Lvq1^%CvJh=*3^GGR>NY&MXun{z{)HFS67Z$Lm08!DG4WvU=_X zb>8TkWs+^rn=6X_fn(Y45%3?~w<^5Or(n0k73kB})}1~q%#qiekZs3Y|L>U+oL;nU z*D=`^0_9WQO61)jnbiD%SL8K>E9sdu`6B=7j>XzZ2C^ zyKsjR6{Hn6WZV`g-v;H|-Hodi_*6)|)o&zS?-^e>$eSTH&kwqD&!L8dp??H(TRshQ ze7}wa&)iNcYQ;Swbxi)ke$w*q;Zn?itG$e3!WU%5tj|kM^!1rhON(3-^-+-~_)cxi z{D&Vu(fr;Ya8I5PqRmoX3RK#=Je!at&C0X2e4GdLz)HGNTXK*m|dFWG_Ve)Kkx+S1EnPNa6lMEw8rp?8RR$d+Xx5>s6*w z_0fYJ%uu9xuk8mOqQ)&cP6BJ?S9FVyxBH#O!%lZW$@ohaoRCS_83!z^b)7!d7Ch>M z0-HN|opy(w6d0~`XL$&lc85rbvU^jfyYiKo+19Pv-@Fw=v%g9sxlpJ@)7>Lz45#g= zgj;dF_?&>}Nc62+6my0v+Yc%BHKSTL%a;`9>{Uv>uukZj2X;yfw{_2s@$`Xt!N)@T zcmC_ed}_%H3@ZGgmKc-5;5JGr<=|60aFD5Q7>u0r{VB0!H=@Aj0DQ+6c3*#8(RQQA@cd$hh{k|X?0fLG(* z#yaF%n*S?(S~I;upK5vZ`Xq(VLI1GW=quP|#U{xS9di{gcOYV38p8>se<}92^sowF zAe-_LhSoN;m1rQ>J`{2AS%13sL&Q>?4fi4V`jQHQ#fBDeTwD#!y?N-n!>j!7*m zsV%E7e&55j<-40wbt^vyW5t2!6+-WAZDfidR`YTk*d z!t@tVK2O#@`ut0+*X!*`SzQ-=!%=^4R=Y2CS`EWBW8jeDEX@cNW?$*c>Q`AOimsEb zEEyRL&dx18yC@6SqDK}>|HvcyDjaAtXYRsf)69QH$E^0gs6E@#xFGuCE2&Npr$Jm# z?a5Vl?`+Ul`!FPUUN$}Mrf&+(v0v$XV~tCx;|G^ePXM{kpK5D7`WAQ48Kl87095mU zB6IHK_tB07bV8Ffz#sUbx#{72XnI!n6l9r91>CZ$sPon*H2M8RZ;!UQci*YM<#n&; zxbCy1gOR~~_xSpx3Vhu^%i;xnBGKm_QTuQCjzM1|Xsi8gf_}im#Dgv!J@#@=&mG{wVB5>a08-eXm-Bl1t+-WYWDD!` zK$o-!nbUKy zhqRZC0i=-jkSPyoAai+Zb9#QvWoyqi{#q4S)yR5Ua=B()gTiu*hOYPFt!6nN7{VwmoPP2$mRP?`0jIG0CBGeJ}lptAoB<_ zLU>D!+PA?#kMO#?C<9K{e~5{?*1_Jz_w@E;0qtFPB7Y;G%RSK70cv4{*3!4|o;=#w z+`GAVTTAb{CS~Y3T^ag%r3uGBP%*(YEk{8&{=2jyrdKBnYLe+;dyS^|tuP&8xD~t+ zcOu8IQp~`r%|y4|76h!>D0xOWmikQAip@c?UE*Zj5%O*Odi21ix|*xcpmy{PZfeIq z#hhN(uctZd?$u>pVbCr;8@NQSP@iv1-|NEzo%xjcM>SVBmtI~*I95V}`Dscm(( z!-egrk4?NvS2}HIZ1aXT?K&cyNepT|;1*x9Yluv)yGO=hWkZ)<5>nIE^$?G%ny13`>eKy7n!MZj zMOGWNu=;`@+3_3gux>$@?l+bc!|USFUG%l7sp0{uk`?zzt~P0jo%kXwszx$q2-CL09Qxk*4@7^|@R<1}Z~UuD0mm zM$Sn@KyJocOd89AH1dc_G`gn8>6Qw9nUG#Kf}nYTA!*9BPV~(a)v4K-xHkelI}hqC#_Vp(jT;J!F4?Y!cok6?}4e!5-*815l%Y8Yvum?OD7X zqmgodrymoK8EG?iX`qp}e6Ve!rGDiybyUdSeStf5ITBH2d(NxUX|6*8*%b>&z? za={%3BKg@W=k7nwQlR)0?A0mJ0$^G$_1j2EVKoc6{aNK=H0wSjQXwikmTAO_@O7Qk zvRVie8q`xHAX`M%d48+j&NQl9{jD`-)(8~^H z#k_T{DVbhnf^g#%&#H3zgel&f=X4vH^Op*iL^)4tHb{_k&R(IQrS9Eto2tY4M^r_$ z&>4G7qgM99^ffCQO*L}D2L`^bjycYWcT`zRH}?HkInpG$OE<~nZBka+f9%U0tObU% z-}nt1xzv7>LBg3*h67k)Ag5kYdmGpVdyg1&r`g3|2B618Wt~R7lI!!m)BH3qAxE7r z5!1V~Yj^a1Iv>%y42Ne-dcXE{qqiNhJ-tg<7O>~(?bt27f8Y=FOIp5CGN?@qqYHb?ZXy=xqL&-L`~z_hzcK7tQMfCpW&T;7dZ;rwz z?vjt`y?}}QJulzu-?uyYK6Fk*@7nR`{o@9s_j<_o^8Fms?t7lz)b8m$Kcctcj&bCB zhNstY@$^2`wFl|Nz(!Mju5h65?R;-2ONO;FD>P!huSuD5?o$_vY}q6;OjY4^K>Q}( znZDtTHV%qnfy$J@nw2@g*sI3A=`X>u_HN=VwP{DRTOT)VC|_7rFVlEh-j|5MAC+1D zE%_D7VwigWO;sR0{%>PhM&r*4f8TELH^KRd?tesA!nyi3nPl*%dxv;m%WqcirWKFu z+LcP3x@p;r{MKm=>Tyf8x}(3ua$%@Ptcf9iJNR4F7v<%pw>ie@R#H~)@MR*u&}ILD z_5hMm0ySWNyim&fhkEc$#F*a zee%pe=4(7GvuUt9~Z1%q#GSxHn@4Fvoc1pgB&a}8G9J$9+;HjD^B8jTqI)jRtV$a0mq!AkZc7iAg@ zSnYlHpe?#uN^E?p|Kut`(%Ez2EnYa2FZd;u?vS)t&|(1u-dQ{xvE;k&Fnl$2-3n%x zeiXf!QrF$17n`FOQ|r3_M!}_ z*HiSm-JpH$`MsOwcW;`iH7OmuZV6It-c;PLx%-j5o4dZdqjgoSh7l5W^CmZ|xqJAG z=B}ZxmQ`ogP^4aOdVH_$N6+Z`Ue~HcQv!nSN6zT_Zr7^()Um5%r7hSH8(B(TP?-G> zY^wX)#lGdWNlxv>qBx2W>BuTxm!mtR>wAN%=8V8rQ?x_30*$JMHOl6dcvWrj z$2OIsVINJX4YycL;clsqX?bp6)vS4lS|bJ;({s?seHNImZX@FXfko|Ijx0VThFB&6 z%sH(HWm%}s<$?5_$V+ukgEd8}6*AtZ?V2o%%qX2g1h2w|>^k>GdX?q@wPl;5(T&?O zQy_D1BPoJ(PqNsgZl?CQ9Lnzmey`H(h97^bq6{D9ZUY14*g9SwI|Es&URc)aBV-d# z^Y_bUFc4S6NNE#XhzTH4VR2u*gowh*2JP%%m69%6h{_vfVBoGx&D94=lvaB8PMY0z zUKYQ_pONT7>5%#jQf->TJwXYoNGaV&_(&P0eaf+a$bsq>HPY6RrUYqc?h1d8h7D0?ubfw=W2Uv%4&ktaY0t@aAbXbQ< zQ=|E*y|t;m(Ic<5MymFfCA0LtiL2^6XV=x&Pzg5mL2l(%* zpE7EIzv3QIS;iDpqS|p_AcXtg=Ax{nFaVc7DVA!bJn8FdeCP&p>#v)^Li)N}zpKiX8-h)%1$*KXgis&6THQcS$;IQrGTv+qll3mIgVj-qZCCALWsM z$Y%sH>ppq8*OW$s9GyOccC4!M>9&4Fx>fjcLzk{wqxE%*`&nPWhZT15dsf#Pt_0zm z;jeXvmb0hlr|ae|9M*PgCR5k5Kw+DE;xlw4;9uMyM3opp226ho`MgSZk2W#!?-lF8e;GI-h0bs8RUuRkq7cd9JOSwSo2Ov z=!?lK6DsyM`eHHy88H%y<=ZJ$z!?bo&=j(L#j+`d2H50&tpyoDtepu}l$RGFR;X`J z=2@tXf-&b#YgaxSI)KY*slCw9dThkE+x&ljZAJboM(0PL$1K0iLb{h-ZHFJ6#RSLM zny@)r?KgYf`3+}zj?hXRAMA$a_P)2AA!?w|&ga}c{=FxI|6kuZ0>5uhe*WbURX=3b z=4nt6sQMk*o+b-luZjR+4URCnqgC&{Xb%N|ygsQ)QwZu~vhYnw@Ywpd8P)-GZ?1J$ zF7vF?)z!N5F7Q)X<*nPsvt#E!t~~#KW93Kx%s!ei7X_#Tos4OqnB}fkZ0B^B^Ss-8 z*)BT--uePXHqleH65`^~Kd+zv55HtrRX!{1yz&JIGOKU`m8njRN2``Ld4B4;RRQgC z8P@Y4uV#Z?qd}SH!kPb^L0#`)S^bL_Ykic zPbp|$n0xb0a-`&#Fz#INY32k6lT~KZY?^fL?}0IR_wp;{PN{!I1ZFko_8&8w@6~G% z1M?JNM$rCvW2}}?4xizJy3W1{JTdqUd`H@SYvTA*x6Meo(!}A14+Z}XS^&0tda(c2 z`1f&N{EbaCy%an9(#Qiz+I+-s0xx?@?M@i}aqQ=0;9vNz-NRe|p-Mx48eQYa5M4rk zQeW<{6@Gz2St3Rw;tzjk|FP4P^7gU5(J>!mQ}va|Vtk|E=kmSHHCU>N!hdJ4$-zHZ zJ307uObJhho}Nk4^Vpop;Xf%oIr!;>P9{VD^hwh5*J+c(-#W?qeXOdojjccH_L&?# z>lnjMMn0dNBt4&RL@UcD=tAgB=!o3k?W2%3Z1H1? zGUs4y`Tmu!R!)Y#>4bVG1OJ^#>fd)JDX)_zsjqVzkLq*&XR5ilZ@-yM(2(6 z-9vTuN#im43aTU6-%+b~W`{`5mEWX~!=ufD>EuTo_`}0pqzIIs8 zv75boZ~g7K@-581wk-eGEk7Mr%Kc%J&;Q%vIQjF;C+;M_+tH$NmR|$Z7sqVbtje0G zSEbmOK;zE#<)%@WEw8+!m37A-^&_iS;j6z2pW1fxMn1c5#hQQ7G-P4+I+2JQAQSRY z?wdE_Go{=)fyBF=Coyj$CjS}Qe6lU6rw?EefHhG+$_TL2@UCuH!VpW#Etz6SxmPZ* zg@A29YeC@o;o2Uq7lvzxt{Ql?F-Y7$Us!8c0**hQ;{#q6-fZI>lTAdUmrT^C5%GL#F?CdVvF(b8v0r)kNu-$cWtw}9m ztiZ3a5-;-sD|ETr*RP^Op5(!PquZsQ!dVaDtq31#Fn>XUnrQE*+dj6v{ z9zD77{hN7v*q(o4GW9iq`hOSe-Y49D1$mvO`t$zZS;7B1ZA^c_Z9QS8HLKC?*hKVw zBg_6LMW4Iv=Tajzu#xKH{prH&D^%Y&-zoR~R!{#S)#)F5zJ;ysy^FVVe(g3UR0f$r z8Dvk|5FYJ-`{})!B&>2&!A|s)EiChMTWcO*U}k4?0#jUcHVinHg(C0w?>D6bl*dT?6y9T-x&VU z8!c>aLlUYniYZK>{yuT+o|V@@NAFpD8z+M==+~0IM8Dp+TJ7mY(yt$W-RswuUp^oG zYTUE@ePP}t@CE*Ezb@f#3cNONw9e-bw|M@RjLBcfe^y!kxt8DJ8($6iPyWgCkk7n5 ztWU2ya&q#~q+^cS)_9l^z90AIZfAyu?*yMPJH-~lWiv=?Qd&u4PmMKC*PAf*)CqsE7iT)PKNt%fs3#)?L2XpFvBKe&)_G z$_x2#q(xQDZ}YjH9<8BZzvsRQJr|A${F*+-^yj-zOT(RkT>B});-c6NQx&K<@y{P_j?mK9gghBl! zl|9nmj^R7qcfx$ZMBoD{H$q$}A{ty))>lZclt&`3iPTrVPrJJJibGQIIXM-z;^mS1!Z(#)W7p&H|KckvCQcc)j69}mF= zEX)04E{G#1`ck|6*Ha}t%?`Q8KAed9*eI4Uia+$*pQ!m{t|iK zNNcSs&qj^FGVVwhy9F`Ax) zpR0Dm&n>KcA20u-1h{${P~A+w+%K54ww z^vfE1#?1}bE18Afq&{z9`%l&SoLv8Q8r5Fbza{t;aIK0z$nztt5FMR9Qh)#7b7gy; ztUQwXcrt_`E8E{ldB&sW%I9M^4)IQ zRmZ6C@UZNN-jrn)iRJDI2;YU7K$|szCRp}HOmehB>;|;WR#K! z;75A?MVYk|Xqb|mGF3O*gJV8teFLgxFev9#BW*7peNssL5l zg(dR6ie*Tn+i#M7&G`PQ+srb-ar5ua{*BUY*`KlH;pSXW=?^?r#f7OR52^RM09+{y z%B$2De@K(5OD1kJI>d$8|;p9+x~!S$2XRBE$E3g*4f@A3eW}Zoc%A|?Q<*QEZRtZHA9^fPxeez@kTYX12+^ly4|OuzPbtF2Fn{(05u-*3Ce zQR%M(erefm;uQgM6uIN|ANT*OKNTE*g{F{*s>yvE z+a1(7WdN6nAoiJ?=pv_FHA`h{yW1y%BVki& zBlBziWLg{pA7lRHwO}a4^Cy#QUnRcj7V=iwlLz*%HvSk%-vs#E7=n^z{7oXhKl9Hc z>6;vXuV)xmmA@0#`}(f5ABjCZfr6!TW2Ha(!^zoOx9D$B64{@$i{cZxa)+S0zNOup zgELr7--5k;v}*q`w*I4-ZSLPSdl1po?xOfHG>vEf+ucc_PRF6=n)@axpJt9>_q4cc zL-$f4o3Z?X*Om80N&P+Wt7_$s>F*(qdiRFMN7i|Q?;4ivRMm&c>EoFF*`q(GMsHI7 z3Bg4lOCO)Cs*g$j&A%8Q|Bc@tKmFo+ca#3m_~{?nP5#4vHh%soKOaB+(VvW)uI_Z# zyGK@Ung8@aRr!wHe%uOKrl{?t9ZOwC_fccD=bmxeb4C9l`#*hm_J6CqxaVm9N7z?u zAAL1_i>CSWd(oeEg;H|r_``vP1D9)6kR3B(d(xtfY3__`{W71%ymf4AdPl7KX}9m0 z=7kR?IVHgTpk*2^rlJl$G83;e3+|KZCyfz~&sgD^(9V#KSftr=oD3&P=w?CRG=Bij zf?h&Ci)_DQT3aG?yg-^a_4%#M89{DoZsa$wW=r!?Q{=T&&iJc5$eYEl7LsbAZ5r2U z5e-I<67#(rU!g+Fh>QJOo9_+#@jpqKVlg8Y86(9@XN<)O;OmsAvSJ#ka&3u^b}+n6 zZhNhkw6gW1R8isTZ_uGw3?g>*~dY;$W_cPe{c7Ce3KjQ;7xV>gt_<-25z4%-ShkH34 zP;MuSEG``?0K2z?<@q!B$v1)Yz2DfS0|8qa7IW&z;+m`V0f^W7Gqzp}t30f)F?@45 zEUYm5lNXccRQ5@Tkfzeny!sEl`dFY125Ca>wfA{3w~N&F|HIz9z{g#c`Tt32AwbKd z$R!HOAQ7feOF)DmMW!_a12!6vNY)EPEF~(Jh^<8BlA4ZYI*fK%ig;PAH;gW76&6AT znM${fs1Q)st~UZIo-im8*-}yI|NVK+`OYOt)0CC{|9-F6uaG(4b9>J7Jm)#jxj)Ak zQJkx&X16ekD*nb_s3J6ZoZYy5(LVkJKA@MAuTkgzgwMrx@|$GX3u>1Iqh>@0l=a~D z5r+K5W-=wV>Is%02t3aM&*kgfsJ?n4F4J6YlH>&zzfm7OvQ2bD<3|;qpL4tT^1DD# zn~-cP^$(>pGPNsC1w8M>=!PDX5TGPv6RsZ^RwhKeEuGg7UriGEx4Dr&MT|QLvfipn zd#gtfOP6G1Iove0DH)W$?u0j?fID@zT=(~B30PQHgXy$q&>OjBcmr{PTmGR1fEK@8 zDbERa25Df}kra3&C-C>?DM1X9)D#bN|LS92LCh=6G~_r#CDntWNI&K0e6tfKb(d>h zG;+@C{M*8z<|U2C@_@pVUor0jpf8AOVqA+Wwa*<7g5kuA@5Fb&f+TpB&xaC_R)E-= zbo0hMTfqP{vfo<*+mm-LCZ0#^+}rmushSV_&Lw`n&NoV`POB-t2!Bi8NGH7^+5ZFI7dp@!*2--dF z<%9kb;q{`#E)lN5^_K|srAvg0bMM+jAO$pfOL8s9+>vG=k{7CFMF?@|ajV`06V$@w z?Qmb#1sMvIxk2F{i9hQTE1y_LKt+GiK&wGVwGPoopy^wK&A7h@yK#TVZrlzYx@_O- zE?^wQIW>PajqXxco?7d?*)5(D%C~NH*O`6ERH4X-LEQ^|2wjXjuw5D@A=x6`g`q)7Z>-`d$Yx-R;PX+wM20Tb9H~1cz*P2 zy+j4Oc0PZVeY?r~L$inHAMc@GMB!KVj()#k!udzB72=)&-DhguCpm8pVI%6o-4A)J z+j#4&Kc)(l&i!|o`-&&eXm5?9kQ4BEciT4Lm0!k`Nj}UeR*AJ8pG6` z247KkANpS^+u9pZ?kwR2Og0&{V;JsJG`qznwKj4yF#4Gc>9`>s^B{aXtr&le>wYIG zpTT&=`x|OM^>n!9_LJ$SfY5{n(%F13-p#3N!Fe%k(Dl9rVM`EenT#x&w) z@JJvMIzZZ5m!bapQ+MdT&mCxJJz|+}WoXns=r%O6Om`&Sdh`C9yktzNCDaK3f>7s{ zO91vK7&c)JdZSaLs4G59h)PgNYTKP$HXMxAw+?|$8|WlS)eQhTmDZ#?&E74v4y)4a2p;e6! z|1!IBY-iq-1KW0QEpKVq?9%$HF@{ffr{6lwz*%+OCe<8Jghs+wlJzR zCiFB2Xq_=4ojo9$lr(si8nqwj75;#3b_o_^D^YI(G56XDs2ktN-w{|P6xQLR-m<5n-WEl5s?4-+q@jds_oS=yEG|BbUo5~1w-1FC&VQTl&Yf%FEVBMO)?eJvLpfUD$3>y`t zAgk#R{v*PRHI{~9Qm%k>zGtstqww6Cv!p$P&>CL(phR|!Jg%Pmgq z+QI+;n6t$}`Sj28I=m4?{WW6|nt{wRxV1n($7@`0f(4%Feu%n)%T0`9nouO1GgyWs z&DY~i3*0w-+J3d zU!TVdbkhb2>7v0nzwV!W#IZht!!JbCDMF^?!Oez)s~I6OoWrP&nbNQN5a_rHPiUCfMQtFIq7I@;Yb~KY z?kYa*QP0n6J}5y$v6g1KMqhYoZZsbEsBEyPE+k;?1eulf*Kgywn$klBla79q zJ>v3XoDCW*yGIU*9z}r|i62bVdP4>`LeO>tnHp_!7Q19XJ)f zPsyf33ExJnpGNquuBn>JdUQW@j-lIFLihOTpeudXAygR`&l)<|;{#>B9X4o&mK3q3 zZ`1B&zwkIE-2r9(p@wB_reZkcF&aJFFuESZJOkIgBx0b|OG1F##3G4eS^t*s>DVPc z_v>Dukaerd{Mi{k|K#zRQNpKwH}P>nzDoRI#8J(kYaWU4Ik&x3Ujd&A(R!fGIMV|{ zo--eLahWs!xc9i)c8TvB9*yu_`lc!HJ#B8H zhugfUfm?Z-x*3b*=XCp4@N3mE*X(NCd@$9E&Xev}cdJQOEXH|#8QLd}BDoFNE3lhn zs`2c4cmFXO$y-;9aw*QU7!as&KbfnAtq1NdJ&Y>))^ZLey#C zMNsX>H%PD6NZ%7C_r%c?ou-Uk3hF+yZ+ra}hnZzQ%SoSgnk!yE+ZX{CX&c2>#aO@6 zlrEl~O`H=#d#-G7B z`Za!`!jI^Tm5iT;kOL)wWIgOB^xay$(<%h@)2(Vux<4^BXF$ZFAOmq$L0S}SV>MER zXEqo{4;VOaz*xiTLHTQkl%$}~TyO#0RD8240Rn97%EJ}P(5qCW)&NKTHF7sTQX7EW zBribB1xN?;0>f|Rp?(^f@WUU|p&eQ#3}al_TAob?m90l&M1M&HcEXQ~ZbuP} zgqFY{SxtZ+dBa+$X$Nc10G0%h%;r}K*8pU4jyEl7IcPtYp7nbKom2_(%?J8?iIF?? z3%v7EnN{fle}cPru02{i9~|aaD3vx;!VLcQ0L;w(2YVmcYyGtkIW)nH_{P}n8>3-j zz?ShMkC)Aqh5NlWj_ld{=xMRr@7sH*B9-9n)%%x1>@$8Zp(4uTAGK$DQrIsjx{LSn zyy{VX^|*m=NtimM4pT#m3_Y{{Hn8_L@*wg207P1!?pU ztM{is&FA_?kc|CdM%)dvH)O)N#9PbTdnk}w{8UMvXun&@B|RGH)AjgWBPTi~1J)>W zUdg(Tf71)bI^}>@=2i*DJTDj)LGIof52X-XsnXu&-Yd>TI4)do!toh`NGT^4=5mBs47F@b)dk> zh#D;;)VLq9&IJlBpzu19v_vS(@+d3@g~g!2d2Ud6XN1BQpKD?9eWmhSLir`x`tg~R z|LgFWazf=NDF3>~pQ&t3vfbGpik{U_+1eZufl(nB`e@n7h=-`rE0JaVl6xf`{VnYP z|J$OhJ{aG)`WkH|VWe--;3fTxmNfO7bU%J-qFH)|TQ$ExV>3@`$_xBJ9_ zzBi@XR8)eSf|VWrjAFg`nM~)>b?)Cj5t0Puc&f|J;k3(sT$9&0;#I2PYJJinOFBf-f)$)X^!UrBkb{)U zqjRQQ79Cv74yU9Bm4p4;Y^pw}-E`m8_2pezZlk2?iB0p@K=CY_afbbzKhdkQW%Xh} ziXy=nBX&Csk^k-Y`n@b&b<3q#_|z+*H9x>koOKj>5$|nylPLA0QUKLkq8NAL`ab~)h>A|C{0xbesSY$!EfdA+`668YE$ z6UtlQNOHjq-A$Jk7Ofsh_G8qXx%@ud-) zDo2uKEAcvNQmaSVPV=vv7LDIhQq(F7!)g_1Bi}4+mzturZmi)9MV~^MSR_9{MOy=S zO;mI={^~NhcHa(DAH-ZTMENYuZLFjGGpzhGeEHuA3A~)~{Rx=?r0V8~G!j@%| zyO|SbYam;smX_8cdF#+)XmJT$6P#bDHj-3O+A-h=gcH^#hQ|$fF7QzzT`dmcrx6T4 zoe=sZ(K)7T7r>s^ZI7FEe` z+Tp*7p*l5EY0^oth1!EoI-Vb*p2b!Ht)MB$vmmtyrgf5N04i4_APH7WBk=>;U6D=&nM2_}9o<>6s&{1PNl(5XmEgr`fM?IEUH%Jk;jSOtf zO~YBj(&?=FWvkqDy*}ud)0}b#1afhNLK4wfP~+cvScRfKWg+wQgWerYBAdpwqW^33 z$INNzkFL>4^~W+^_n2IN&{T%f*`4pNYdq6!5^_spFN{ua$v7CRAx%rR^-#tgaRv+s zXe(_i6DQ@8Y^K+wG~bW2Im7&2&Ii47t#_{W4i>c($NXQ8;%YZ%6o{T)T+gthO{cYV zEGl|g5LyJy#w_VX_ zuOq_DeDalRt#?NrypP~8>Li!GI!N8&KE7B*rM6q}cEI-m9C!FXTcoo{N8|{hp1HN4IfhUFKt-SKp?4b1BbI!GBxVSPsUl1YI}a^`bekK30RHkO$s7H9dHmG+q#*SjU>i{lfYCdelR zC!0wdxQzLNc3ug(($1*_1t^{tIAqD%J77vb(S#%vl3m+mPQKaV^FB~|HSZ&&S$$+# zx0c#&sLN1^l})&KKFFhe*Q$6*Dd3=cpE(iTdlmya4*Et4pb|(rNbVh*wT2aBCasot z;2l216og5r6t@&n^^AhT#?3#rdHqo}rAWG;^6=CeKNYQwipAWcB@Wf8NuyWp#NYRI$5aG5{0H+hz*6I={8`D{h$t zfrmsHm{y8o3VApym{QqEERBPDivhR%;wiwsxR@I z%jjE!RPC`IY&sCsSQp!pN`gSm=mmyyYkh95(r4SZXV*Sm!rR^QW1;*vf&N>zKt^?% z+m*$yjg9$9_={OY8&fwW&gAn0KyoW?qJ|Dl=jY5n&XxmSaeTBKaLm)QsXK59Dc|!c zTS*zQO9CTWj$^=qvL0K+JBUYvf%vOeCOqI@lH54%=(6iY1ph#*!6;d)5VX8}JQBTy z!lR6D`kczq6+yj-z?#r7V7C%$o%1XD_7T{8enjB%Yb~(zL0^^)4Jc!nI7CcI5U~Od zjf1J`T79~QWLTh7+|#%2*fH9Um_tgEl5|c$?SNBJTQWVM$JCR=2QKs|D#X3}38?+$9Y*bXqjo*i)?1`^7!RtPd|vE^TKU}S z+r`gsirR0AT0!4tzm?R=Ky5X(t39>9IM%3LL#{yW2RyxAgJM$ETx@KQ^jVFO)t$)KGq2`uKO(2YvjRV@w~fogeAr zPyex6AOGTpDfIEDel%VmFIl@A`uHSDrS(}4aqlOm(#LDBo#6o<81K zhTvNN;~%AufAepX>SL{!1}l6_MsQ7iRCkj2a{%m z;SnRt);4l?xbHOX%UG4{Ln_U-G}GtUN=%_RqxgFw3czDL$cs1+e^xc?66cw+uq-E% zrOv&1Q#s_-0#ct#Hc&(z%UYCJXZypg+qJ)(Yu%n}uW<+bRScB<3BR?dqwT5nV8$v$ zdnch?5YE<9dz|kCgP;bO$Ut~w+^8m3#d2Ui=K=Iv|1w zNC;3H3k&TDT=p$b@W6g(v*MMTR7Z64YbMNxx54if`{+LKNt&LpuF*Q=_WTNE{9zl_ z!A>LHo zHE4~eue_xl?N26HhiGzt{10zav3vwx;}IHsr937ik1g5MExtZV_COj4i*IH#m_JtF z*wX*p-_<%>a;>*8o?ovhf`^#iIk)`xf$M_|Oh0-QF&b~RX>|Dx`SR^Ui|%CAx5n+$ z;@7^BtCgFCO63Ylncir8wT;5VWSgOtt|V9egWiNYYAJ)3an=D6ei#P1npv{`NeF9QM=)BZoX3BlBzVqP(e~8|4r`Ob^=y9860W+wppZ~zRDXR zq)!{^8#K3ZS8k%dNeVl(kt`D3i>a}y?EYqmFI4hn@s%u0YQIMcE1kd2b`0G`Ep*H5 zXC*?Q?=HJkWNKKVhtydV8%v7@E&P>)OT~eL1%MD6*xDaF03`9vXaB8{Ops?*D`vYL zzw?;Ji%V3pZ|CF)5P$K27iR7I&s3305aRB!I4aZcUx{b34I$c0?3#rLTuj%6E2zH; z^xOTMDeN(=e4<%|AzhJ(-C#S(>D>Op(Z;5CXtGD^OA0B4pf&bwq?^5evG0VFV4T6(Yf8mMX1pad(l245rxm$$x4>ch3MJqQ6v8u@$B>DCl zc2U7tO##fB-K#YH1~x@s2ZbaDn1FVg8^_Qwf%+ zR0u%Y1;j0?RVB6@<6o$oA6ug%P`XTGrxir8iQ#;FZ`6f9bl0RD*H%FkpS_?2F7i65l0ZA(2T; z>AwG;@2TW}*kj(C`BB9FE-NFdzc%HMi`|Kk_E$gj(oZ0Q<9-7?b+Y4598iD#!pd^< z)1#)`s}Mk8uQ7a?6tuYo^&-Fu63lCn5p@rO5GWo;kBO2SM@kdP-D?d!FG-#hs}S;| zm5pDp1SR8suEwIuHbv&+VU>I8dxT3?%8`=C3Hcvax^n*ftdkEvIKtM_L$V#cW<+LP zf;0he)8a{o`)eqsElu@W+vs$kxECt`vCA1r$L0lvn^xvzEP;1f>{?w=^v4RoXKMJL zo&^5Ey9K{Ph#IrtoE`lMU5WKp2@nO@Yef};kaVvBcv%pr|E*L9_e?G)VXf#P9UK4d zsf~fiZUwf9G=3lwV16vYM>zA54~G&;4aJAM*M8SvtZM9~41sB~JkrC0=Y0iyX&}gT zw|tK!8WcPg#*O}##!Hs*bqO*iERiwznHHi(5o0DKVZ#n(l)h4i1X}+*NVhRW`bNC%mY{Zo8uJ~R#TSSdjCJPvj%-QZU(Ru#ygM*iu~vbWXV}tSXD3fK z^x|>xLP$7*&uYUep z6Fp=S7s~x%+Cm<*F&B!r&Ah|uSsG5M>CygH$JdEz=R zWuO!8`ZA5GvIumXWaa5n(4XiNcj0cPfBCf1Q)%Ej^?4UBxwka-3gVVjTJtrgyX2E~ zr!$a9Uf07Sl>2y=1UeY8=es2$DMzfIxvhP#1&nAwnHmXG>NxO}KCW4@dsLq26o8Tq z5>)^$>`XOSIkJPU#R^WAhpf~_d$ZeXhGiWf(r*L|la=lx*p1A!*K>CrL!fh)WY5&4 zZy=uSA+Fpc;wD>PkB9a5ZIDpjY_(}<;;YOxpWKQ4EmG9GJwI2PL01lLe18bbZ78eZ zql8SNlMW419Un5?q$<$|vZ4#teDNbGGs_kxT9Pw_z5#h@D~Ye{tjnD0v5X?wrY^5JaKpB?`&bWPbYB+NVpr1z-ZKy`fhTo^KAC~=5k~# z%ikCIyPLm=jfiXY{e4bBsX8O0CD8wZ@>lB@rXNe|X?CnBG>PGKWMAtVRxQk`)v!C6 zyLDzd1Zh?+=+F#*`8ntA0hcT5fCN?r`Ss%1BbTWXHX`j3cEMvk>T&m)kD9P=2hbRR z#+a!;>urC;R_UD~&L=u4Wi=iT?IuCH_3{Xsssm`(&@yRu`@UokO0i`w^i>LRDudHC zSHKl;D!{G5>z0?0OXEcaw5Q#e?WLcwI(0_LKFaIa%EJUf2^Eb@-B2lSXUN;>zVuQK zMQ?PMva`viTX3vrDiqD8oM60OoYs zFTYOk{V_Gv)d&^iJSW|rI;D>OXF4@Qru?p{3BOO1eb_ze?G>&cz0WWd^Q*J$tt_Ks zNY^&%YlVkUEN%~k>4GqT5P?Yv8z>VtP(|3!4m85nK%ZyYM>wnyn0A=~%yH)>n;-Oq z70f9SMsX9cytZcaXj-XczW66p;D~#Xr){11+P)5;>s_3Rz^m9Ve~RrHy~gP!crtj; zqQABw^P(E4qWZ8Td>(hc$-uoCaBI}R%Bo<^9l)JM?sNHD!(XI3EPwu*}N%}ZnR6W=2VK(iKCNQsqVy4=D`d`wgE zja4z7?)Z==;mw$o@^rX?5EEC9xEnp(7A!S`Q9!~CJ%aiS+H&DxXwKg#yxEP=x{5zr zw&tDG#MS(Lfuvm`ZfE$iEZ2V9nc1Obxz^h`%4&9EmSGcSS+@PD z&8a8R8c$+4C27}dV)YC*Q^W3S%)W{L;j*j_DPZ`s^@seV?x)HJl?T-@>|VV(T6DFb zKADS|aGvPh-P?d)?rbaVKhh&=QlAZfP^i>-rbEn8>3dTV)YbVl(o;+pmk1}`)0x*2$q1He}=iBea zS6lq-&dzteyK_9hmaVC5AMft;O`=l%A*aK$5`M;Qz83g->Rq0nwzSaX-oynr@iPvL zsIdSjYA-O=rnYwMT#F=t>rz;^GVvA08r`113{;X{NM#jBVF@K}(g=nhUu~M91K+Be zdePX%kmQTHvq7>S6_M8lL>hAE2h6s?wq@A&XFK@*}lfF-fGj?IDw56 zZOcStFAuoMAK8DONs%*&jD{A*M!NqYqrjFZB$6sj$U?KfFObgJCDWwVu-1{*)%}hx zmeLs7*>KO#6Llj&T19f=@7ADp+%JEt?s%ifO^0iu8Vu;LySYrUyjG6x=aetew23Rm ze*5ZC0lnm9lz})E_DFBph%(q=56}PxWno~=C1+e^QWwy)gs(PX%q7&vF_y&4O;-dp z0|Ys{X4;|X&hd9lt^UgLm0s5Of%=*i7zf3I$#D-Y8q^^u_wzf0pt(2Fv8iO$M)6oH zdKp`xn#aF+*_K81eoBA5>^wH1WQ3pQeaD+f^3e#ghBl49fQ>{}9m5?F+O&wkM73sd zUjcI&A;c0PAgZ#46<#Gr6d??`Qmsi(Noliou=d^Nev90b%CNL#~< zTBmLTk;Kc*5@fCyaL&Emr;aOiLUd63beSsLWF;;(b04Q<6O384MBBG#_(mo8{f$!( z7Mhc`{?dG!^k%PqNQF?Qp{a(Gt9Pfeg*SD6zy594oJ2Lu!LF(}BvPU#DNYH&C6KCS zrQ3YgtY|Xgt^TR`sBP$9>8=UQXvxV#SD?j>`JpCsJo4nB*oS{h(ot<-h%-IuoG%nO zsvZ4ve}72LTY>@?`Oy;79)9&sYcb2q-zwKrH=RT9eA<$Ho9m z`LTEMwLMS^K80U71pWOX&=wtIcNA0yM%uD)0Vbq6& z(FR5()oPF3OZM=raeLYspP)nIvD=|xcgkg6=K&RS^e+-RHJP}65+=W@w_XLK53t{< zFStPW4L=qQrt!OLZj)A3%i7ucKjI@E(jK@WDd|J4Hj@=er?#RG0ke=c`_P&Rr<C zt5j=@iyC|dXBWlwL4#dnY60c7sEM=z>Y}7TIIbyL#-?h`=SL-EVOb*rKe*ze_jO-% z>E-WBzY3mE%;2S$FTLy?S6sd{{VJW6p_svUTyfE57hU{;OMH@edhmT0E&srUOD|d; zk_Z7S*hVeUcmQTfS&0M2Kg|}@>qqfT?onGr5(ABkK3e-}YH7QpN_-E!WRFD*lUZu2 zR3m*KNY<>FHTsBg#Fm%+=8oB)O&_y3S#FZP18|@Dx@`8*45ebb)Bw6w^*#Pciv6&e zQ&J~H1T9CZ&UEg~Bv$Q$)IVB^+xKjgK7Xfp;g%|kaxH3xg$M|L98+-bg(2Dq528n@ z=&Cd*@)vg1%8_aEa{JJ3$s~>aVq&1q$~Oa%8Feus zWZr{l*ei|{7l?_tpe{CdF7k*(i=5VkT4B|W*Q-x zkaFe*J?u5pb_G$Kxgc+vNuYhJ0;NbZ)e-16eOY6^vSy|o``fB=hYeQ5c8Odi-~SRy z>NQs?AmVJGmcb5f!Baju%owU%4S_qf$Tq4uog6)f=*hM;XbH# zW=)KQNR1*4R-fh>v^R!&Fjcc?eyD72#+_L&dgB&xoj=5&TCon##zh*9Wb2|E*Q!n` zUfuB=L%uLa`K?yrp|4$|FJy)g-Sn!1)0Cu7Fz~_(oF4)s?%~80?5i*8zeEI52}AXj z1zR*#?o61w%HOv~t{Q~7#~3LIg~DUAtYIk!fKO4k;ne%0jO0OmgR;5M3r|B)uvluC zvRBPK4Va)a$&(9|5n&pMAIiu4lgeGM2Y4M$T$wf&AdmJQ z0Gf+mVlM4%gaFw5)dJWSi0LR36G^YnbzK;Rl_jyu7rq>)QWASY;pS5K(73|QzjKjH z21L?jL<$C>%vJN3Wm6Zt;3|e!s${b>;9)L!Sj(tjg84&pm_$gM0v^p}Jl2oH!~7*_ zUDep^5#alKpt%6- zH-Keg%wH|7^?{g%GBLfDt4xgfEA-}8U-)lv>Xme3!E}+sZ*5JkG)}pl*bH~)sxzR# zlX{U7>n=B14S~uMTJUB65T{am4u`VMrR=WCvb!QxJ&A0NiDOcra=ilWtSq~;tV0nu zUpNn1RY~PwDBN5M@2CXOF}WtCvOTcR;KV%_P2sEyz{~|$TO}oJP*N$0BLRC?#y(wH zc)Fs4?(yZV!l~4l{h>T_DKA->Kk1RL=mlWbDm#FH^j$*MO4PdpD02bTT#0(~xNdql zpuV+?I^A?6bhf@%){ki*Q{cHcl@iwx3N)7j6O{!fe63H~SrHbm4#Ciu-W(5 zO}^}fIF%BY3}u^3+4R>@JCkSU+Hid+d$3$KU3Qsp+L94&ZK}Z+t|On79d{xWZZ3s` zY#Bh^&LpnJ1DlOgS#9+Jn7P)EN3cp=xw>!b%57N7{0+fkML<7E_w_gU_73;MD3prS z2(zzzUV~N;7H<(Ljcf3>IgB!)F``9U*Anw{1!~Sl_Vy!?HcBmzs40JPczxCIzO>)} z5Z<5FF3b2m{Xd2Gn`(IfV|w3L4R1H-MYvSClRQ46@tU3QeL>@8U%Qb%ogFpMZTDAgpWGhO?jjjExV?;w|(-3oS6>M zDs0tak{>_&j(bSCBNA*buSJJv9#wExY|a0vB>X@Aqw)TK6d~GkPqqFH!r%97I4EH! z0_m>l{*QYo{mh@jZdkK~zsVX%`A|i(HM;(7*67}Wvq6iE?v7j4=+qpl;Al~ZVy-;G za$Vtb9iv<)E7wZP#kCb4m^DL#%~sGSFoX}o&f|W_d8h;5ogn1t;wk>yj3dw%ymbUi zK)X-^ot8gj%#hpk-xPDGig`&uPA#~v+Sr-bcSb3VQ|}k`{iXK($EcV(9pLZ{Hg#*Hhfb(E0oPoYrr0S9A>~bJhSe zQSQ!_zl->ze}7PoYdY3rlvKYr>BS|R=M&9HP@OzKtZHxM_{R==e|F*MO0gn8=NFFw z?wY<4y)eH9LljuK~cP1fWKDJSZbB0P)EH!~}q71JJf( zSk!ghOV~m^X!0k;vOK+!{X7sXKH~Y6R#j7plGgm3CYAJ&SNf6|yfE;XtfT`Z-Bwkk zvEq`xxai=5DuaL8ubi13dMX_|y6{x2e$HKgKB(rY*!df6ah!Pcp`S5pb(y(`l)F27 z4SNX?O6L+pog< z4akE&?nz53cpb++VWNp(o-t8lNP zdldKVTu#!B^&5Zeq8R*H2!BX~3Swl+jG>p5`p2ghzx408hnD1h#FG4V7HU){ie(gT z0z^W#PRl_V2H3si78au`5G9hFE5zqSh>u4rx`| z;SEOY+##@;^D1`RHMNezE(2^1)XVN}tUjqHI^`yD$8;d5UY9~K1yZy-8LZlC^JvO;k zZLk0$;a)^)-+uclj*EDHnuy-g*sCO4GR=5db*Dl2tE_HQ4kS}Q%x>i5P&RWY(eB@w z_Hs}P#*WB(zFng>12CK;)I=)FX+^uc++NRFss;`SZ3o;|cQ;m?sDrJp@qO4BdRPT> zerQp)(2~uZAfH}k&2m-twhfBnBVtT3>KnQxi6 z&gp9O+O49<8_shVUgvMvrV8X6T*AxAExEUI7&l{ya%)FO%Q5SCOZHzidt2h|*e%KC z>*ULskt=-8lKH@_S>7YgXE4(|Jk7=aR9!k3?B8)yF1L2f@Hm@!ty$_JfkvhU09Rh# z-P!rTxO;PF>3m@MFx7JI31<%;L8yZJQ9-HSE(qr?&7H59W_ZTDvqd&(L`ZucBf&ibjNE#=SDe5=EhXW_p5LUc2g6f|9h{r=kIESZLh~mm6x_gNLUO$O~oT()39I1A=yXtXt zpRa`WDLkXPs6ZCOgbGmUr_?Sl;iy4Ee$I(P@Vx=SUXqOF_>s^LQ=jgL9#sQnINE5diOTfKLmMvXduEzhX_=5i|ALX#Ik*?gbozRQd+-V zS?h40CysK@1(9Vca#1Lfk!A}Mk-A*lOs_=TSJ-7DrS7Cjm!1pZ3lSq|PU0N*{dvQ& z#TyCKmJ)@_A$d}1lgE8uV!7zfdzdV$A3>IMU+b6)_9>z6d1&WTJ zN}`)Q(LWJ6my((Ig{RKI7t8FeQ}_8fUlf1^2@fD4mJC>3Guq76OId7e%?`OQ_j!HM zPgeaiEi4ScJ`%b$!5_)OO~J3KAN{lqpvu6zD}bj1@O2fy^<4>kU>xxEmB3#M@JNvc z7k%0ZN?TFnp&Pdnwmlb&^lb_|(>t!-8^?yY(nLd7L1)bR2onp!KRf z3rt+B`$yvl|I(O)@o0w!1x56wTB=Te*g&-iT`ftrpx_6Si(^bD&U|K!@ua&ETUa6? z>I-+adTsM{gAcwX_->`a*W+*t@APn=`I8n-_SN!267<4iVNw+*ED%6u=^P{Vm&ZDc|2}ruq5tI`$#${!V^7gl*1n;WTn; z9VQKVPUcCO4SaH-HkRoV7a+cUYe>iddu-8Q4ZyfLG35Tp%!GmRkT;yX;@8hnA*o^I zV1%7-4@un?pKLgt%`0m-ZpFYPw{C-_|AHY^x%&4;0n4nZa7)u+h3%nQt zH#C8qJM9}>UeU?`V|nsmD^t{*{3fV*VyE_sJdNdBB9>>C@;u4iA4%T$_gBW;W1Q3u zgZXKU|HUnL>$#;Yl`01DsY5L6bqaK#9|_OevrgRcy&dX%qr2#8YM+3cAX7D?|KPv^ zEo;5lw05+x;)e`w6P=rfB zx=~#Br`L%jRA|HiyXd&8|zJnhZA?`gsu%-(Ah!rWLoB)77CQzh1{t!OUi|cmVOu^RmJ*9 zM|m>eUO+)$7VUIyLY<*Mf4li-%#K7(tD{k%fOSDA#RZ|$IaI{N-Aw4qG+JuJUt?}B z2!sTexDjUGG)I5U8Gi%mny{=@$D&F6&IWMtZT@%+Z}=8S#`PpbWiP77nm-Q})w)$Y zPe?4wG_+6JroHjqwgH8_!_9b6e z*QUm}ll#%z;L3{q)f%`q_3L+(%E7Oz8Tin}S{vlPG9^BSNFw5SC7K5(~B3rQI*E@6{jNEkq zq{|GM4zWxnmeT)r!9VMNtq;{3IZFrC)15s0{{5^EO>a?GR8u@1ZnE9U2=q$q@WEdB zvxU-Ha__HVwwC-lA^o=w zxE1=Z!Rx>K&{ISFjUkI$-2q=!Mc7rwVO)kZb4Hb|@`@}CJU>7f_accteuR$VZm$0! z?S+b2z+$kF(IS;if42QL zlxQ7`rWNC)=YC>3b5OiX4YHwF`=f0ns;oe`i zwZLDO`^o+_HPkxC?^_F`Wc>NK>5j3!tA7%UW#9#`Xe)aTh|~isuOse217f$&9UK)N zxPzZz$8gb3R+DjDIG;j~nne#JIp0f3?jWXRgc~0jA+iBL z2gPcCD{gz7Rem-CT9b5GO$=?D+`(4s;n5CWXKWp^)u%bWWON}v0aRRwCe*jCqCFZt_-4dbU5;<`EPg^lBo!g{HvP|Djx_b%EqzQr9viJ0 z?cm3!G}0R({oj58={MUoLP&2E=~_n~y^)^))R6AuX+mRtt*g6h#|~MFKWrAum-ZWs zKe9v!0;#4_9dSx8SBE8k67C^*`L+6VAN}o)9pf|Zz0E^kF*nK`Sjt_|KL9jI1C}64 zC6?-r20G{QpF_Zkh=4eYjqlP)1gn}j#k)^p1q9*grDRwm$8G+TUB3?{M4`iHA@?`< ztUBhmH_XiK&;9;*YYtu{x!YOiHojMiDU}@Uvc_t~gj((Jwc4p#efrboS{?X;G__uX zc&%{#0CJXVJ+wmQue@TsfTTUBHi7!8f%=|Vk>Wud;eRs_sak!{Sn-y0F29DaT;?Wz z5vz4LnBR~mpD)l_+>Jc$4fFL)&=^kW^*b~<$gfoh5$nkkB2FWscv4_vps(2@l@wA3 zRM1!Vb#g}y;A~WbJLrw9Xs&gJPG-a-;+?fZ&fR$F3~BQj#m|OP)lSNb-H1w!I~qo- zyZ(0H-Gk&o$zKM?-CxJV*tO}sC^MT$;_xJeIrB123S?SuPQKZa?xKe!!f}I;E`l&b&;o zPwAa}zfalWQ?~h(=FH2)eM;}-6Fy~H^#iqXa^B$$74el9oqXJO^H~+DLh&(wbg6D* zVk~n!)qyMG4!S&4Q83jKTa=27n#kROTm42 zHxXL1{L~_r%G4Hi+HSHGW9_Di^;Vw^Rr6->DgH+&&TiQiKO<7X)&UyFr6+x5h$anP(ZDkDkqsqMwQ#ot(`GJjGCaZl)6ugro_c+gis@ zzKf99dEZ|aTd;A(VIO=cXF!-)dVef~AlJlJe}&)C3_nah6%Sm!UdLUc+}>Lf&CT&8^+$o!BZJuLz8#Lh4&9 zxvL6tT!I7k@`>Btr*Zi4-O@D@!-QXDH7eOK`ms0Y2~R^1goW>&Drf>EL&dZ02w93l!x8;Tk!)jOET|>b%c# zGc5EzF8d{n|ETGr{17SJOF3o&I?iVrk(0}qFH?w&eD$&G!H9Q; zPB>;PNtPi$^=?%A)Upjm-4n99zW4DNgUB!YPQA~TOwp{!Q`Zhgj;-Fizx81q7tZGd zz|Q@pMr>6jmbs36Fno3U!{Rv;jS&u-TvuieVwT>i=@R4S9wY-SC(uI#Ckeprs&q=xa##A6!-{h8$yrzR_x#X5_wtxP+soOVS> zE0^YNSyt4q&d9Ik|Nam!mw0nxtA2_dtSIr`n=@A`QYGpGE~JKIchqHBBFf(crs(<^ z%Q&d!zWmeYcJyylbbsp)eCW&?_i;j7R;PZDYyY8-TvRvI(x3SpIb(OE_jH%PSSzlX zb@;QxjEHdIv%G}%P+-o&5DfcPi1tZinI@3T<*&k@&EH1yoTbR7ZsWa1yl&ZkGw2FI zrzzWdS2ll_0oGtwY%Z)eV)|3xarf^zgKgCI+get)eur~QcOf(kbP%8x-m#?XTZEjo z^yd%Y6Umv4lU-ZSFHKL;Nd6PTDdz)uoDARQjN^At#LlA3r;7EyF*(`HP2RWN`__41 zje*Pz;MQvZ^A@s))=^WO$*&|seZ4wF zX6FMM8$&yTgCG5ql%_&>TQZ!N%IW-Rp(0EynGJR%WiOG?U}X3^f`j)#EKDD($^79LX$NVZ=T1|**=rM2k_1L%f2m5`6) zxMS9o2lAhz9We}9Y>>C4(iBbQM7ipGu6pJA?~m8koS7}0*~j&}Tx%M_+uYnIcI>dV zyKD3su}vK6Y>LQnwenKHrJyysXu{lLyB`SF2>49^k7kUQd|4w{pLTl?z)RK#%kyH}2L`{nGTf_q15wYmyC0 z)-U5SGQ%8c|0UT28kgkG!LlfKSopy11DjA7revOv5i3r#$?j-6cL1xdI?iU6Vs)5J zsdSW$50aj(%S9zaR$)Pj@`xHrs|d=Z3@m^~5CyGoQ$u<6k@LQmcqS*l3-$j*#P0ej zuh~Fo%~rE?-KW%AEjT9JuOAryp2yVbzkA>0>9u1l=GjuNtr60B#{S|>r;+GJ1Ml&U2?1Jb?7WDdokCN zqyUsSV%m$?`CNMZhW7z;tfXe!+i-y*?V$%_X*%|DbZZ-KGk%39aT95~iN~nd?%)!q zO@$nBJfX*eJwys2&x~m4FBHFyG6t{+QD=F#kdjXCp`Gr}U~;i?3&FX>;_~{KuW#zl zJ!EaoL_<@M!D7Y*{pnyXSkQ!!B!LF>XR5JcS;6mzXIR|TUf*aW#@lkxt8wpvj(r>Af}zVTh+`?1yt-*czJ_jC6e zzUdOa%Q$AC;pRUU-~Ow2#oy1C@LkHNXs7&r@_UBwO`z@hdpqY5{_*&ZU9~HGFFQNp z?+M?T0^id-z7EIZyXOmnZ^th2eeR7BzKyKS@07nE-)Q`8F5&xT_Wu82{7p-=*@m0d z(Bt__15zuZt)cBqZP0+-^>6UF(qee(>gmA}zAP5^6`u36BYXMQH@cq}4Cy{__e}mg zOMD(_T9n!`;_MrJw0VO|dn>i4rVmxs_qeuy{p$kn44+kHd~^`6s`!s@Ac7mdQ%o?!v*dEm4D15@!Qk{>DZI`@;?OY$?JzSe!$_;Y3npNpR#K21~N zv;X2s{J3jFI_;ck{^7Dl%{@ife&iT{n@!7kC&r#10 zpQdVjSlJj~XK!c@b>?PP@W+ooCMd-3f5+H#1=x8ut>L^t)Xa9Kg3yP4ycOmjGXGj> z5OCb^D~wl$%trrAW<`scv1ryPi1n}m+- z(yasJ0D)YNO08d#)mYb``XYQQ8Ak9I$UIcs$e?hsZ`B`?mf*oX)i&^6ewR zGCZqP!)^&BC>7^U`egLIQl4e+{h5l%W^wznHP!Kg?#?{EbV$&z2NXnfx&3Q{MeTop zzr^MgIviyKs^Fo;04DxN=^&qoSZ_FWtd=k_(`S{y9rAwTg>ShI^qZUul%)ndG#%&E zNte{1tu5%hjJ@hQ>J|V=Cj}|9bfvZ8cwUPtXI%T;1~%pS^-?bIsxh^-M;jrPREVCNl18zuULs`AYu|QE7T9`3H(-u*V~)UOa(9 ztFa$R%e$VG+LKHXVPeEjG;}6Eyj~(>A{^?^%~ZRpoRI&Y9f+T;$sUzOvZJ>rRt zyZ@-BkQ%UtIpDsl<!%myY;!~ zyl{ms@%m)9_}lvR$@%*qub!H}U-t1Y0DrkRR>9xDv!-3a-{*9f>VM4Nj+1xA-~WUy zQUaAdzh^Y<%k%~B&Gz_aYK^mUJubvwv5WYJuG~fbUBvIdi}>sRhw%@+e`@@m+C}_1 zJBv5{M;nw9Y_-h<8=pw^oqrPb>pM@RAR0`#pS`DayF1dKA^(r6^I!JrN%LRH^JuD0 z1|Z|||K0ZLO6C7ib~PrJf5*FamjCV5`G0-Hr1{U=Y5reT=U;$iPE!8CJH`L&w&hmB z|NaG&=09nt<-fAJ{QYFIWg`6t?==6_)%mYEVbc5`-D&;Z&DNmr1Z|*n|K$14>)ILr z$Kij?GE?R166X>6Q z`7@ti`Ik;v{sT?ZroZu-=f(e5PFemNr(gbWw>_`&TZ0{SKWiG#{|AnpHvPZ-?`fAG z`lpBf;&Vj(7aNZi^RQ@GQSR?v9#EZb`fu+h{0nz8{S`stri;(w-GqPqc=#-2mglJx z_@lYQ1D92InUk=z#LwrG{>e*s5B`Mo6G^DT=YrkDf5&d(bL?)ye|R_HpSGLn@3~|; z{Hz?Wyfmm8bUu9u?e(>_>MvgF`-{slFm0WH`cTwAYZLXPIc>)3C5@-KM~-Cjx))Oe z4Mdbb;r@t>6~j%4()hBnydQ;TJ$ZRMj+v^w_f9PDyP!X1d8bZU-p8jbuXbX2`=J%5 zEU$IS@(!D_ynn{%&p3YmdYAM)?Uml-{QTz8Q}OfgiRE1e`cu;P^(o6cZOZb##l7xv z^u2ah{Cw$@w>ClgcA z_l}9>T?V_RtiSw}{_DT z%;ap?AzE6n@oJr0A5z-zw7bXxeoMHaO^UQul-kfW;T20A;$WjmWibG42}{L-)oDXv zg|%^1KD^Ia#^){7_!JM^DLzgAEBLIwxQaiA>>QuYkn)A)&+27W_`HYvbR4XjtiC!! z$`=-&`!1@&=dC-(XI)77!s7FIH9ol)?UX--{}p`h;~qst`})w%@mUvAzOejxNi~0p zb9c(0vHul(o_%K(e@@vsKEom93(KDmR^wBw-zk6EUI={rew0*Xn|`|8YMZiauMLe^ zwy$~><}lK+7EW+7>f;2j)NG_&(eSGpds(;Eef!ESBnF3<*#Pn~KY(07mm#p};y&p4 zuwNuF>C#~Gat$UgcQ+hL=OT-4|E1_QEkVpJ3sMNV=N-N({p`~9^2UsyQ(v|%$OyKy zQ^oOwIXz$C_TUe0d~QeatI_mE_5-wORYCttUP$^6pEmu6Or*c8hy(qXSJU6QEBZe# z`q%D){;%1R!3$LX@oCe~#_72Ff3Vz80{st{o*hLTo89_d(Z5dg->?h%U-LrJf7rC? z=jz2c`ageRNpVH;Urm2}SM+~Q^#98)=zq%#Nk1FK(`^3@6X;*mIiCL0&aZ0!W87Pt zvi*Nn^k2UV`k%Fxt`|uD!=C6g^xwe~=zk=%b_UL&{-1nX75zzGSe%mne--`zybJn& zZd0rmh<>#CH0%GM3G}}=)OMNv&sEbueEBZu|BUEgvkUs){X)`@R-Y#Q2Tq`WqWoXL z>*E3!`oA^1lK)SO{*Uj1{?{f~s&F4zCZ-%>??J-1i|eW(5Z zr$qn9c0vDrwq)}H(Qg;(rZxU~(FFPzO`!i+v&CJi|C(LN|0hL%zMB5>eE_>O#GwlY zPj%_sOio|;`w(SgiHw?bzG1xvOy%=3iHh?w>o=z!z@p&;{i&n+Q%9~&9oe6{hf8H6 zY=becZyn(Xg45v_Hn|&csjd`dr4(0(e=GiBGwaq!`^QtTlLqUF9$4Le59i(u5ORHOK9heeQTEU zRz&NV!>$7;w2SoZqu&Cqdu#1JA*)Ug*8A*ywl@Sw13{VADXcbFz+e8 zvNG^7h?LQtK+-m2757MgN#@ZX@UuE~&k0;$wQI%S#1A$ziVsrVV<6h)9z(uBF3&Zm ze0!Js{a1pQTQ^)B?6_Ut*zKw2fm%DzAB*j~I(4${*lqz<@pceP0xL~TnQUj*4ic_+ zmu{rR{6&_*vbyo)kHw@0NWUINZ6_o`IZ$Kbx*b@W-AFFX0#(8Nj&o}mC_0pl)sS*@ zw$9Sz;mEt@vS>Cs-ab@QxIehfjGhPN6|MOaWB} z-9S9Za|F*PubltXsTP^~LH>1S){I%(9Z{V#SX`0BNsLQR0J`_K|Q6wK0Hw^stpF$JMVMRrJCcaCGF@*U26Z_RqS@} z1}S)n-^OO@>2FLmE9)4=7WdOiqpW9m3jqSvESr@QX$~X++na`yA-8q--9ZE5(+&RE zBv5P)oC|Z|zKwsg#Ys0~&@S6z-w*E1xI$-#j|K+-50n5$mW_jL`x1|eXQd-}rIVP^ zldr+3CbcKA6%_@!q&Gk5&0m5wdL&|~I$#E`ey;TRb_E}s1ZKN|(ZQ9}NZ_L+P<)gd z_~@_4{Pmx$;y*+E`-=ZCW|c%;;AHV*CUZIuN+Z1l3EGm{9(oQAt36CzrykxQ202$R zZgSUz1J!+Qk1Jj#F|)(fW9}9jk`x{CKH_%#ZSR`mo=9|?HGmQKvHhwWz_|0D6ilvn zk!X!q`{nyN&@1`lXatDpfP`UkzF}e=tbWS!&*L7*{{k=n^2}I%sF(jW#)hw7AF<&> zXBr#&I4U8QHz92%s0m3c?MmBZzyGyaCp?OkkE2j=>HL8i^1I}{QX0kR=&QLeh_Bt@|Zw8dwD=OEwR|U{s<&T=`#W58tc|#j@7Edgd1uAM&#rI4I z`KJjXXLwY*Dx)KN;~}HR;BwO;9jx^&WP?gbZ<`9)@}v|9vR~RcT~4Y!Il!zMRml=J$AbI zO)ZhWhV=UGDYrXmsy*&788{8$JB{A$B_3;mtP?7w_K0!{fUMwuR{^{M|I(E8N`(~_ojW03C zR4EJk#rKvsc%!~>PuerO7>rf7qCH*~F{zYssIDs^o&FOrib#!E=8 zCZ#3lC$2NKuX{1&7e(~AgNnLWYmUswSc0Uq3(UZ9C*kTHAN$z2H$0X!cDi>RQH!Ds z6w#*bu1l@I>cUW#`~Mow1}%X4q`j-k`C*g>I*SGqKzBcC!XASOL!P77?%sChMqrXa z({+_qNOT?|p{CfR{kUfz#1Q!;H|0G-N>52AxG!Rv53@o5#OM&eZZUDt5sT#m)Ncw*82D`$kN~&M!bv={kkow+Q(UAD5qu z2e#^BbOIO`+$Znpc!9(B{Ef%ShE*YU7BXG|uMJ=`8_UPqpeHR>Coz~PafrM79`hG8 z5@L4TvzQ152((h#JY2WcXM)^w@A20^%GY8h!h8I8(}(xn%cg`EbVb75{P1%-z=;F@ z2nj+Ud-e;#kLz6+V?jLhG{i!8!Mn$UE1e%L)4NY``uN??{6$^sPUtP+_x?u=KiLW{ z<0!Tf&@5cbIG)0!z5?VV{Co5th94!z-Ltzv?*hzSRUk)`nTX%ls0&HXwB%(%g#gdm zduNb8Yw~ILY7woLBSNiH)2@$yt448h zc-wwCE%|#mAXXNaYW%D|zGiO|Opkx}PXGvh=xgaq+HasY?rsDoI?tX4jnm^UU@q9w zcq|>mvF_)AK(Aw}=repC#|F%F>+`kM%<}RvS$$pv!=_!I>5HoBb250Z`2B9c+rG34 z9^w@AT}eK+VJjZu%WW0UB>E(_YHqNO>Tkr%%?+{ zPrwPJ^4&8-3A*ToRb9P7Y+FW}J(u?t1%VKwdNehURVNZR{(ASLE9fkBpS5tvPgnu>G5q02KelN;~=v~VgVxOT2j9~$b z8Cls6taP9KFCiN3HTZs;`KwljUg=k-=(m_7NFzgsUDowioU!Zb*0X#fTo)9NaGL@o z8v&&KgGU`m&n5`x?m}EISGRIBkn+4--RwQl!&N7^FT){X1up@x1kCq0sw?1m zIPa;1bAAM8`tk`vGm)CuzfLAyCSQyfhQykL5#l~|3ll}~(L|~_yysdO|LnSn@oGEg ze9BKS6~^hOl)-<(}p}|pDB#)f+YWc?7a(o+(o(npOj#? zl#+0%je@d3ge@S1V-G}8x`8Y##{>d45L6&4hWtD#QCp}8(wbJ1hG>yiydJBfRF59& z4FbnY3jMV~JyP&ORg@?Q6Bi{4lzPGb-k)dYyZhbE9a`z{|Nr&X?DsbF%rnnzo|$=O z#&F>)f}{^U70lE~!g-a@U0QclK{cUYwFD=j?nzaZ6oVu{S1$fawtEvkvGfDeOz%f{ zrw(6QI~{zgrL6SgnqGd9U}_@;0{Q`=@&*{{Ed+ z6MvsG#`jhgZLKp%sHe#zql#+Z-~X@%;le%{sYXT`>)e$XVcD2kY;WtB=SA76U^FpI zm)k=A2iY~?!E$%PYBebS%s-NF3JNo>TX{3W=Q8*1uM;rvf*fgR#Z< zqxQ#WBPWyLvF6G4?`YF}OiW#k?k%_c;80yxiTpR`_Wb2Osu8GTT;2z*bn9L7{8hQ8g#E6A^t;~FKD6_Nkmwq{Tki|q8!CEpA;G{GD#TgJhO55|Fty} z()Zji?=JdIRX*jYO`t#cdC#l<-22%H@jGBQ>Cf`VmPros@hg5-7U^7v*sVuGkycH< zDzZig4&H;b-c#;gXWAY~D-yX5FH)(x-60F4@Tc5k8$Db8Jy7t)m{P=Uz z;?E)?GNjFWY<*rgJ$YO7pZ~1-bUjvVPa9~CdRjJN1k5GDBjL?sayiT^`6R6tr_gZ- zU5>5#GXuRO)iH9JpEM9o)<6TtVV35gyvwS<`Eoku&s>!Fe(A|<-?Q^io~6E@_K|7H z(}K`C?0$KgCjH;Aa;o(I(-$Q|dkXyzylz_bfAXg1Oa5v3aKOCqbFWw>FZrLnRy7#c zAO8UE=JV=LY+NxRe&>E+_ux17ewz3W_!8O;A1lIUnZ&s2AW8npUG*3O>T>xIY`tXXLcU1R2bs{pa}; zH<)x_F3g*s)SqbB^W^(a*GwosAK7j4P3O5dK5$!i%kNM@r$FzP?VB@?A~%ngyIM?0 zcjgfZL({fZEx%ipd4ze~%+pFhQrBjZVsHK2hr$Ho{hj9RfGHA=BKdh+bBS|_k2$(O z)J}8w!}gw*A9**qX^4BLm%qch5xjP2+7BkRoQ^x*nS%{`;GM z7kL;^#j&RR32K=Ukl?A&(HjZ>O+O6Iv!E+ zQ7b1C8#B?$;M=#{iV(j0jDKj_!-5j2(r(Xu-jpcz$%$e0b;B{r|Ma zC(^O`+#w{W&|!WNEwP%`CWPtnGIz)I_Sm&4J!*b7UECiYRepNx@~7Ay{Khywu75Ry z>00v#cX@j-Mf^@!K4E)x_-@0mSl-6%A6);AxW-KCU;mlz*t77jPyWF~?UnimFCxXW zX|LWivA=S7gzqlr{}k!FoRd-t7HLxYejRasHuUApit+scqc169^c}msz^hqT+FtOk z&|Vy2qoq@}uZtLdP;LGh_H~N-xO~}!`uLIECNERO?`spw^Qm+vcZWTDmh!NdS+^<6 zLj{3pdzd_2|L+sZ!>K`npErN^u&XAaZ=VpqcZYuQ^G3gSy>&wT^6l>~_7|R|K7Hfe)6%C) z{%Q7g-1+aA|Dc|YIyuZ^hB@#>QKx|ry3D%C=D;^cvRs%0FWo;V8SNj$40~aU6EAC> z>$o+zL}T?&<%hY`Ns)Jn;^DwH|JhtLKReF&|3i%C+2ri#@&A-b`tBS5FUAl5ew_K^ z&i79|f4nZjGg>>h3+9iBN3YV7D$V02=-!nq$NOP(SX345KtTGGqRL?>KklpF_KZnI zLE0tXU-SKmzyIpKiN8M+<|4*}|A(y;=l|8cqrXpB-^u7vQom=uw(H^VQvCWy;}_@O z)nm}7uCRVVOisDfcRUa+Vxa#1yJ8<$;owvJjHQ3lPg{>R8U87E#nU)C zF%Lg%?ryA^85svSl9vw|lpr06aC)NTr@4fm;-8xtMikKUG3<@@d$FB4+=F-7s>~Fi z{Zh?n6=b1FQ2F`vXK$V~J^0Z0Rn$ZafV@1|t1(TY;Jc%e`)I2ftsPz9UaaVDo>E#w z;}>NX&@p;|&jNSg4SsLXq>?4a%>evrP%1rN+V8r<(ui#DLD=fCj+OQ+Cw+c9ue4FA zOV>W~ox=5rpK5)lxUlw;N+k3~?Lf52Ch09{!Ws#`LNne*OyPT0Mb(O$Y5hPae%$MR z>4mhgwLqlLUY<$0fIltet#O-sqC;XS&)}s5H0>^&Ynug~l!X;3R%M-J8)qzZ--0R8 zCPM69bs*FG>|G(3+0A%>TYzO}1z=(Z8eB_u^$^MbPLs&rHL4oGlpbc2GeSY8Emu6mAR^LAx zVz{n%%tlO$mv)o1P7H5TrnFxocJQgAkJIglN;CW>DDS@-^5q>k#q$2Me!}vay9bRa zGqu$wEBPTp(TY9l@8#LIM+o!2HMC2}aYYT(i;HqZuj!@t>*pIGXsf6Sso3Gp7uMMT zbKj*;ODk_>Gqte)-~z3bCpoCTtNTtRT~l){EU_@D zD907#xI#Hj2s!G=!RB+U=i|#6`tmdj?|FH=*jQ@}MY!4j)Wo7WA<|{5vRkwRob;eG zND;fd9^rS2Ya{*nN{{5k(v!R_M_6D3Tgio0`?)^_!3&qLzre1i&wH+&E`91lj?wg) z`8?7GeKu`}S6HbzpZfEWWp3toeOrJjRFiQ#n+@pSHQB=kwfC+!CFQxw3H_1Y@{?y&uJIcqgo+h?*B(kGDT=;?N@g$G;bE ztwMPeC7&Vi7;dxvS2cS#UWC|9gWp?ra{1zUx&4sTc{{;j9yp}#(o=bEZ(YiA!=B3} z_`hTd_>Wb-=iIvw%wyp9E}R^Paq8pYUG=QsVb@FA&pOF@RwQe7$Fy7fbUIWyomTz; z4T{sux+DDi<8v?bc2@S-{nwX*zMf$Y#~G2vw%$eds?~WLhY2*8YOUB0cF8{t5 z-yeM;kANDo$?&Zl8{gCy3sA{*`T6ML2~;IcVWS+=UF(*1I-28sU0Y=274Gb^O4 zScZ~vKh_5ITQbe|vX_m=ds|xFk2tjekce_7?asMn77--u{hVQDr0m-TPb{fPv)CI>kQC3fwt7Grf8t`lXyUK%#b1ROQde&O-Ht`Z#~J~l`qF> z0I$AfJZ1aV+RHB-XVXc2eLIxo{7UvrRgyuU#9n>?Tm`ks^-?x#ciDjXZ(51aNO)^w z&;AWPJpx6nOI2gfnF+4dT&uVyxmGuHFaL_5^_-LJsi%!Fy9&58b_3W**F%2%u zND;OtJ???oRv2GEeXTI5@2}<89Ta`hZvMTQG_bObJvUPZNjxl#pRjlu z7?O5J-t0R!ELkrEdyE}_L;5!Ng0D;?y%E-ReJP(MZXb|8+4SJ)CybN4e}3j}uVbg@^X6N#G)9-h=O6TrfZ5HiI}>g@K)f##Z@YxosPf)d zQr@*H?~8|zSKjFLEy$Z>j&*O3vWRM9tu4KI>KGHvZIWXsy45wb0Z~TmT5R5~;nT_9Je?i`lXM8$wpWODnD9;+1Y~taNK;rCYi(r9bXd zExc=~!Eg;Zu8Rag%nJ9)E| z=T3GrXNxtux6zRZyxgHJ&fD01>?*Ml#4$vq?peEmBCt{Gm*Q{`-rv5*qXtp+7Cq}0%+EO(#E4r~GirAtuSfTgq3 zH3}#!^Dnz~={0i$3VL#<6`?SEB?7VCQwlE4+HO*yOl+N zV1#jJ^S_hfV@Zqjd26vg>x_q>&uFBY%f2M9Hm`gszg%A8FNgTcp@mCc8E!i=Z>@$* z8Q_sN*HN3F+2H|6pGVwR-ynV7B7NSH*XONyeYO(euiB{{Ziu#g7(J7O4sKp)C1-oH zZ6G)VW|dWGblK#a+cdWW_O`IJwW<}x{@A_T-F2Ac}uW7wfHiOnlT zN34mcnkV4pFB{vM^f|+C<%ll5EA6SstjyKe3~HW#c?rhl9lqeTmb}+z_P!V9KwD@R z^xL0xu(C=od)Mj-{nnFv3(gS-#t>m?<^_VR8GvJN&i%U#j28xWzmZBdZ4E*avnFx^ zDJ`u_-k|O9wJFof-nDw7G(EYe%vrM1KC<1DXvxcDMvP1{BSHL37}@u}XV{hh4h$d3 zJ-ponRa^SMzyLfRBzL<>Ok_bu+&Q0=1zDAO+&7HNH%SlBC3aJAEwU~Tm#mKp_CRtM zw+Bl9GNpff?DP`iczVhGPd_nb`$5ev{Zu~nD0_yfFDqMY_QE7-Nh+6&$W*Ww0Qv1h zlbVaM?NQMdRTG}SgsJ#Gf=#oR*+8%!LT(59Y+lJ(3$VEBPCQW-1h~UZlO|KaU^)L9rw+SZN zqnZJ%*}X^So?@dySz+MI`g1b5vHl#7p?z@PruQXzg+b;wT*`ZAFw!@3Nj2Iug2J0C z-u4o8?H(O|2MVG0ZYM|o`Iv>wBiNFch_wWEuVl8MY{sg!y13b3GrU#eBS_ZGnS0yI z@u_FPTZ9dnD?U%lce;X~v z?cxntU!VM~Y~R{6FWuJ;3@+jzZ}h=kcDTI>NL-H=g8+Ri=wxzkpJ6mQ8>mJ=XPw=a5@)sE&NojGpShD(vJE|Ib2ov?@Z)^MkyD*0c5d~tI*nu4 z4SrE<->gP|Gi=97sq>#ZYxBzEm2%ZuU9!D%Y9C-M`M+=0Sh8hv+DCukfHnY9 zV3m810rfotb%rXpXDS)aGJ(omyw|Fhi`~FX$Z-KjvSqiVlN2PJeh5Vx`{w-A6Q;Ue zJD8Ta_IDer4xDSbskHrw(r1J8ye_mD-=q^vMO6$S=F4XtZJ>p-(0QNsEA$q zI_PDw_?TBbH^y>1mVLVi$ZgH)Kgp;q8Y%jN^wHnat`PNaboZq+3p6mof z&>ga;QZL#}Mam~l`HZPg4_ML*aok(d7!dsP4AMu(xM$@uK7q9^9_yB*dpRhhYld+_ z9z6Rb2UQ44b+%{ih^pGNa)&Ox_5>t7xq~&17!C5x&{>4hFkj!0&*XIJvnThfvkK!4 z3$QA;MjxL1m@LGq%&i!(1ts_-fGH8LLZ)yXb|4xufskDncfl+q`VdYhYD?KcS6||C z$7`vj`yL~69Gr+hZF+%TNtNQmHB+-EY9|w}d>ts}3bv?td@iytc*~R#w?{f7ab@r? zur_f3X-F6P(^3A2AP?Q>U5pa@Bzv&V2%5JC)jWFtp=rbBmGgLlN306;ZTmNlqHRBt zksFwV36eB$GUgW;$l_tWDf@a}^}9C{m?8&D0OUm`U9FB)1DQuA$u1>M=8L|6|lNd5-kSuf0YzaXzZ zxF`25)V6H+hiYVs`3arOUo=V_$)W43{h&acedGK0R^?GBYOkX9<~o0PBgWq5T-D5kCT8*fo{d0gih_f+ zYTfJq5^rJz z$%h`EbgW`GS0T{Bk%ARh%vB56foA?ypx#okJX=1vb4clwUg_GDuJYRZ^+?(_(rzCw zZL7iDsC2EQyJO6BqU1@rPvy(t{I|tN<*ti8@3nZ|@Ov3ei@mC-TzRPmT!~o#C_PpP z;R9{1=6QHOl~j25zj)03IQF7diMCV}C2G*SxA9KJ7*)Drw_kKv=eqYO?%m-^@$)DJ z5Z?sE;X%F738)lGDr&_!f868xyf=yEJ@%6p+;tLKa}rJ4zF625HMfxf&zZYxs8<=M zTk493{-LdS=r8(|JoFVc%j{ja^4xD=Bk&xO$g}(5Ck%dw_dpW`d%M3-oTutcs>&Ia zpf+GI=Kk?8#a$s9^3~^q=LrKkUm?khGIx7Bku*A2QE92#2v_}U?B#$&z2jiU9R|n4 z!!i6X;F+WA4!H&Ay~m1$M5jQK;V=B%lc*MYMI_QaBs%Xs};YW^g<_NH9B3;@iKPC>wrHq;u|QSTS7xw}Rx# zEsb!~z3bqV5l`BG7;LYp8~7BdjP6}M$%c3QwE#%1aRf;B?og%pSuDj!EQRjfGk=bX zx`CpGzf9Wp)hF}&7XIGDUl)HLq0{&vJzBN&`tr^iN52@4ogYsQnaoj6sKzq&~SdmP41Z4AC@&elgnU_~ zX@DeDL{(GMF3*aZ%OP^_`Y`kRYig>Ml6O_QLPvjHV@cf~zG|_g=R?!;Q8zn1+YZ1E zhg4Hu9pD9z+Xkwbbi@02MC95w4}U@>tBNuyDn29^4^zsv!cLu3b&@>tUxZ4!&j%u(12eHFj@d|fUZ*RV?g-DLFuNtRGM#P?W<~8j z)B_Y2TFo${1t$#D_YBnEE_rC|xzp9%GMgca<(sxqvAb5^NA@B9grBY@{-PC!uU99O zg$tHHoe(bghiUh!$9<8s?gL40)X(UfWu+T0bo3_7u)u6Eao^ujZe|O$B1(kH{-s})wXTOhao#nm3AtA(c}70t*GZP>v{=tto zaxo@p2u!FL-}z9>GgL@&IZ&XCiF_ApRezzSkM;e{6z$#&S}3x<^4}n}DJ7}&E+GHv zIP&`LJ{(%NB&JM7H=xAA$z6W9I%jkrD5GdNF(1zYvDNu{Iqhi_x4B?v6hTr54`Y4e zxbYyIM_@-7(2;k3o`6^iKbuHb9+tLrFiF%&vZal7WM211MRND4r-to*14FJj7?~l4 zbsW9gl#_V#QWO3uJ|GGfeAU>qa)U9b2@BCQ$lyyF_%y(M{dyfHe)^iS?!y2WzJZq! zSed1bz)rZu20IhrHzk0y9!OO{+5n_(56LVnfmvXH2=ti*^{idTNB3h(5ept0u|W;u zyeKT3&w%=-fvg>Lveh|6igB(eaDfNSauc_sDlk1|gUuGVMM+zM-q=%|f1vWvG}SAK zZ^(8{JfAeR?|Bo<_;H8yE~|o?8`WMb7QRh)b-GL2@!O4PM>^ZL_nhj;vA*F%(cXrU zrJJUpX3Dza$74(006kbpSpW>UpUsQFZ4$VUKfYc?^0!Q+&yP3z^ECWSD(Lz;Yn&w$T`daZLp`Ysh4pm(t z_4{Wf?E1G%w5-b2i&_cVM1)PT^Khb&+KzBc;*#$q0;iYHy^>38u^D6!z{pL*wy8F5 zAt)c$LCof-*}XP|6^psHNI*-Ef zgGy;xLei<8lBW^nDaca?h3-T?)+09?kRMQMsoR`6o>{Bo%iYO_Qkb7wkJk1hW=aO$ z3QX0MQA=y~-|qvXdwFalNt<#b3T=E!GPcf;Vy23#h7}nx=6{w)_F}gwzY9kgbsS>U zaVwt(nCu#GFU;Dc$ns4>H9kbUdX#)_2g#!K=<8j_<%oC)>4TpjY4jEYKaKk(IvVe4 z-G|g|<}oFL@uLs(2i3Y0{SmbWadiyxZt{tuRNiXCd)1Y&Rx7S=jwd zJ7_F|BXv;zjsiZaO;)Ujh>K)-;B{m9oq7luKBj)R$1r$!b?##{T6zbY^;2YUVDC0) z<}DX#sJu=O1343G%BIhza+WsIPA?;=yC4(+=Ok(pYDv}xzRBtGjZEmB@jR&a1p$=h zmH^rnxQ2JDs|Y}`jJBpp>)8M*F%;0%b`6~bp4aKQ0Cc?`0cux((i}>R5pCmCoy&a0 zJGrWBTzvz5Ws#{e`W0Dr_jz?*0hQKIt0{;rI;c-vUY*xwust=AJw`{|zWc$xd3L@rDJ62YHTIS_9y7}=M^kc)n^|)};f?r8)-Q0EN{6U{=V^AY zY=QCWWVnkdQR%mFuAtv3 z={K54CI!1$`%t|(GY|cqR~|E~ue`JJBLlV+5`xf3cWo@c1OKVawf;yQNMgoMDV|%- z?r(F;@10{)ibH+?%k8tsH!yQQ&S%=0Ay>D_Px}CMz#UU1WJ0)DKj{vzBZN?h6UF)F*Up?2(&#PBnH-b&VScF~s71qxqZdR5I8HrfzaOd^3~( zgK_LtJAZGP91gW~|ir0VlEkp=E`E14=&c=5=RxC1& zFk&R7+5=YS{eu)76x1!1LzqB!iyvy_R;`hWyi3&pWvhm@jx*GiY<736ob!kQ#TQ8jlN7;+9X z{}L|uW=6YswLu;Oa{77RF%!$`NrcjJ$;(yTSA9YSH1?+3Xf$g>^QLA_%^U4nY4gV9 zR|`#C6HOfMZy!hPT|o`OW%(x6Brd&U#phCyqV}!dbze5ReM_0WbKhZ5T%0o=n(K{ms!p7HnP*~7N--7jn8J8rc;Hr9}EQBAcPBLpbl|D8{W zoh<;Cd)JHbb`1job7TP@36}SA9`d8jbk5gbxjU*;<1H;a5D%N6p<6@WjbuoF6Q;C=z zsNs1lELid)`gtvZhPQMEyRJ^n;B0br z6z_jO0-zc8kM3*SsDvqZq{NL28Njp|c2FmGVil1?v%W29Q>A!Q?Y>WCgk8%BuX2BJUPzOF(`=bh>7jk^RwF_SWI5k_gwmR$?G`t zx!a-Ml6`Vz+o2}w{8hoEdm(LU?hi0C$(*Z#BiAm=cR=D3zG>Jpy1$Zgw_cr3p11V= zM)KfCRP*!ovi~w6tl#hv>(9vzT$KRt}H=xzO--Cc)QEQY~d!*D~I3&b*Vq zckp+a{>t6o-eIyb0{M0r`9`4n4w6Y$k|dR^z|mp%H7L*hpi)_LTO~kO}X|Bl4tG8J03swLrmf4jtk zGh}`uNmPCKl5|I0#VE(?D2=brdoGi=;4+mAE*CZ;5opRxg)F$n3p0MNzmJ6{X2JV&TJ{mRq$KR3Wg|< zd>t7quy4K4vz~p!l_n6qG^-lUQY>p22T~H{&wY1HdTuY?Pppr{Cp+E?tnusx6&O{7 zXPi-1`kh3g3iPxUM8QQsvlPHx%gEX?>aaO;4cJ>CUK=&8b7y5V56C!M-`s-}3><&A zT0-3lp_)lszB#kh3;X8NO?A^I>FHJJRuk@otn7Qsa{poq@j0I+Y3hwvwlV3xw;zc0 zWc<)rwZ=8fCF{<-cYEf&3g(n*z0K#V8vZ62Qd|7`y7DEj1ufcQo)}?i=w(E{XRQnu zX2|+d3~Z}5jIK2|tP;jUjeQr=$7@YBbT=p6-ne7kEi)-RkvrW$g$!_u44GEuoj;3L z;(o|acgxcx#ComDJWX1R*EKR;&9Z;3(4c(yb(qUlnVEc4sfCZjuTob7)!v?NEnmX& zgexOztPy2F|5s*_e0b7TNQ@uL@ELPk_T*!t%Zpt-Db9YQO2g)RV_t-E!_IBjV) z$RrUQT{jfW=ms;R#P8=`Ar_NFO|A-i>{P4S`rHY)V>9tGTu=%L#Ye z;+Sk9Vr`!H@-m`s8vN4k*mk_V>O%5FA;7INS7S-ObcIZJ?w9iMs9S=(Sw3Xl$Xh4K zd!QwGN62el+#!NcC<=NKtoC%2e>vi+ z-%Q5w+KVyqnUPBv5~YECVDU)?4}&LAq)*8x{?HgWBOehc@AQoKJ~t*`@HyZHH_e9NNz^%acLt~rPJ!S1-C%;WO*~zWvT1G)~w4A zm2v{8DL(6Mw(+LJ%KO$SR=;ifYz-HVojEGrOs)MG@QCPM$HmQBX5i%6d9yf3o~=xp zsr_gA&)R>#N|_`B1*=6vg!6X<6?mnrjZfIKa=o%yJh4ZjKldtZ*K7YV*XGN2&JA73 z18%`~z0~s%E4y+T+4L{l^&J&lw)nNVi_D18xM9R@$OswVWuz7BoBL%TxvNw5cD<2d z{bmB0d#(HktnWnS{xjkrJ&#pvhH>6kq5FQ>KC7a08t?cOAhgxO8!oZ7W1T@M`(%81bH|rngRI-il5z z{(ybN7i#Ls@V6&cvyERfPjLfRejDl<%5b0=WR=*P7T zY3&-Ot_mWdFLR#wn{c4$EJ07*8ymHn;%N+mnS!nE+h_y8224E%xRbr>a6dhSVlv;8 zzxq9`Gx@H)y;vPRUVRq_+?)5b`}bEG0vpWDzLmllZG4o=9VduOSF^QJaI^8rFgxGY zutVk+LAk}MEWae}_I|y1Ul?4N^KB35cY<`ZAiYA6Ze5+1hrIu5?Inw&B%FA{1yL^6 zw^;fP_tB;K^m$JE8^$X;G+tS&pJs-h@hoj(!KMW2lQPlS9dqyG+vw# zB@LRaMUBbp@0@h`*{_g3vnzeg85`q(0j$zE>d$)pzBd5E+2T9?bIusV=hdROjAFJ}4QFrTGCbx;g)2gQgawAp1!zgQSw zY#5g;FFz?@Y>8Zbh0qC;S-`{8*z}eO--?=LU?+T<6~(U^2kJ_d6j_=N$pia~%aTiK%J!`@!Zx8tiddS?qB3=>&Mfc#zB<5ut56M;X3ICzt-HWit(PfZ8?-UGlBp%}qA(3sZYW zqN(B^;%`zAXrV~Ha4gk2(9<3g+0-ktl{?TfxVO{OlJe9dol>5K4E~BlwWv!g>Z117 zB)2ab|M&4!jPEnG$9QS}v~0##)xX=584N zq2b)1@i$weJLll-YQmWG`z?Flsp*P0C}}jPWWL(BI(dDbI=-4MSIl5WcsuGdlI@)l z;eMQO*IbkEZvn+qiM1=|!mOaGb8a>B=~eNnY#^;BJkd@16c#@vha;-iB~MwkhTQB> ztM-zRV9gmfdDg`H&w2d2MvaH9gWZMxZ^p*!$B>^L;954J{GiIL=w;F7X!&6z zpBZJpC^<|W7Z5)xLi|IYFO{j$@}%9=+9#lY>G{yqWB|+|V#`+9v8D&PL!L4tmA7Ud z48|`3vAcARs*#)SD3pai5oM2jB1p#{J{J%ib>1rUeOqUVup{-O_lu+CtzfVX2|)gu zTtTRhFoi@E%*U+=kpgqCn+??wfUZq#!q4;qDNaLexy=B{CUInE7>;v3`DdJ>V_*PE zI^te4A--++mLu-H7sZ5mG``>p?Nn;sa=h3OuUa7hssV#apcdPts>9PH#)YNU1)Aa=UD8WrwaEtBrj z<^s9f&)0a35~%??J2XJ@*E+`V*UX=c?e7Z_%xce~m%jqBl<27Ty>h$HL52yL@Xe3K zc@hN0o0MN6VG%hx7Jv%X37Mqs3@z%{s7^znC!!=cYKF613f*M60lN3jlI%FHe}sJ% zVbFUfJX%!KA&8y2Yt>zwc`wQfg}jpzb}aW?mA5MYiv8YYRoDt%d#=AA*c0!=jTttX z%=bOSHu9&lJ!8;I9=8pu=ZSSD#EL38VNHxS@KTf|M^ZI0DnPz5YmzRYB>Bzuh&R@& zh%L*X1Ltr=5=KJ6@g1Q6q+}d|LPSGVKN3wZl)!^6zylk2V?a#?4~YbUT;M8!2DuAqDa`aDaH$vkL8c`tGbX6tWB>?EApPu z`9ew`yY5VcrAzV^-LF^DY!H9Ocm;jwupaPky+ou_j5UxNp${K6*ay)&NY**332JEK zgPK}ZShH)mTvxNfu71r;w9G5Zsuhj%W?2@v&c2TlwpyG6RcCy8dlvjcUB}U%ju^wn zGB#(LepoH-uGZHVGMlwAzNPgJ0ri#zS@xDCZI&ev>!=vpy_PnMS6OAvT2{ZJOUcAz z;^?D)yFgwkAzuH2Kk?e)>eD8f9XONS_l&K+Ptg zv!&duVrg+I51gX%+&fO2fqv%Uj-EdD8V8_6F*{;&li*Dsn_q& zT~fcPmv_rYcNsk+V;mMXATFZRDWL$9ilA5U3OZs!M-$u2gYjo%8ivD^|KZSD{4L|eMKb9WB|bZ3mJ3Oe(bw%&NqKYw~f*1GWWKR__1vH z-=owyif>mDRMCpG1Gr?dg*T(Cq3uM47MX&?bL1ta|~YI#+xtjr*=&=)PqmJ? zrm4;6g!C-&o>uy=GmAc@`Jw>-x6_2rl>OA;qq+NHJZ-!qKSWg2TVz*H%xl*`Lbj$_ zKM6Sy>TxBDwAc5icN@II2-cYB;UG_jp7f!(zFh-<8?Td0oTgfp31I>+-oC^d6r2WY zXXNSuBQ$T2txnT&g_8-YD`(40Vq0wh1%v12F=Xg{|Hyf@wn2yOm9{7)U&@w-WPWXyt{r8)%Uzz0`EO}crVx`@Q%pC zyY+*+f_^{#c~sx_T>`Hw5ATJO!<*P1*X2R|fRRGlmdJok$9_JsEvnxKJrJ|r&)yz? zJ`eB2T>|fQd3cYk*cJTTD-Z9Zy9C}h?vLnq`YwU@mOQ-eUAv;b2j<~@ahJfm>t|7Y z&)X&N-jj#-f?Wddh&;SoKQICPte=jbP;jkm4of5WF*h#wEh(IzAN(|`_eFWQY57~` z&DGjj+=_Kbgjfd#Fc<;svSsqq(Z{#s%h|qsy7>3b=o;8QHv0SK!G0!yjW7=zU!A6- zn9+TWZJfk$pACJ!f0S zL0~zJ{AfOwNGl7$(F`n6R>cu(!vCLKUTeN?evqoNia`^3;#Jfmg!2`g_?K98nbzNE zF2d@?ops9Uv_q=(&6ogyUdUXUxdQqgo?B7ktlrf@2_pH7KGyfpgfJ0Fg`?+eM4*|S zpJy;Tx|f2<7S+4}l=c?k_g387UPWN)$!F5qwF1w}Nu_E?=Ug ztd%D=@q)W@PlUk-KmKF%@cITUwoc$@)cm)7aqmAOjB)v09gM}zQSI2LU_aJIJf+Hq z$~~$6AJu21iaPzPZv1J=fICSw`qzs4V@fekoiI9N`da4xG}rdJJTW&{38~5%{OK(A zlbGOFLA*ZER3bL3uXv1fw(spQV@tGCRueJIkF&(=acV_uMUfd{;@Rz3&dA~cN@L#@ zCDOGi&3d}o?W;`%1T;y!N;*FpboEdavdS{Y?Lb}4&>E5sx3HDcu@|M>K4? zP5|l?`pT^*Q*r0ObTW3ev2@<%jCJQ`;14Q3H%Xhusq0D`2?0d-iL45*Vs5GY zyj2BC%YO_2l?=}{tV!a5Du%r#d1%vvg&iL53FU=m8pGuC)-yJI9X|=-r_#lDiVuI9BoCAlCt|EO(-+gC8@7 zgM8dQqYS19Ru`Bb^)GGQBe=_Pr;~d1zLrd zI}%EaA^+E2SSQ2TXwwctGiSN79-`SZIw!iKDu{OA9SAjmPGa`6TF-b&iXoUvu~CyJkeOoUtJz`M+vyU<_8& zO4Fm-otPx&jcJi$9WR8f+|k;F?z-gXr1A>h0iuuIpH!oECqC=GzlY(I6qBbN97}A0jfrq!V*|H5~=p$)AW4v`)V^kEVmA=U)nP1(S)N} zceFT?P-H6W=Khfb5pZX0$p=ebWs6>o@X}E(*diIE-6=0y2d7OQ;bW>_E8~|^`(xVZ z9)5$5bTf5HQj?7~DfoyELChO%Sf1A~q))A_FqoVwH7Ef(iE zT#@7A(Q8pW#c2FDu^rch@Js4jaq;xhuW6lL`h#9Qz4VLEo?iMV+r~|w^-Tf%H78W^ zz#Iw|(H)-`3akKwRQBW95zR}CCr=fV@vnrwi_RGrzcJ-?!D-V=zxbqa(_=3NB?>9o zy0(Z6jeXFAcyO{oi7$ogWo4IX_G2_3$+Hb5V0t)YSN~qG@{R7oR@8^cB88{MY_m{KF%cPda$$dCZcdwH2(h1Xx zI_c@FP*HCYv4;jfrM&dZN_xD(KlQ!+m#Pp;n070|&}3+TDI{PR0k+~?q=Jx{H)2QD~@A4gnN$VH(gD~3TY?TJg`Yto`uwsuE=~4Y=cll2}blNDh z<8s?Pi$oKcq_#^PAQdlin8Nq!c5tXt0Q&*DOXzN&b`VTR zKK5zv*%yP(#BF;oVeWv3MTJev^X;emEt}UX-LcA#tl1BbaqA!1|9uPd^|h6^*Z#Hm7uy-JW0$}g;{cSU|!DUQLY z_|`$eI3(CY@P*>*4Apf%{p=%a09twr%V9p4L>nMcAGA&UDp}tfs$Y<% z0K_UUl8QnArh+L_=%C~=h-+^}4Ie6Eg?ayk+@s~Wx}d)X-N{%bhxU{gUky z?yhIQfULGG1z<-*?~L%3<%@j1FMMUGga$M?=w~0Am@~?Tuji}eje^543J9uq$h&NB z)$-rRN{Ci<7{(-TF5pmF$}0!irP9-fBeb<*<&1JRY$cP`f2ryUbNu#9ZY3Qa8-zWB zz=#>SztizK!*_g&P8WfHh5e06=^^8)nrD0W$=A`!Ez7-Q+zM*HxqNNdd2S4(X<~$Q zFwOz-E>>Sh$nUtvj*bQ8NsyO(?1A{F-a19%d-?A4f~`hEbcPL##0KK01M#!bNm7TF z<=!viW70x;)JgKrJ4`pkM^X5c6730-;EB_#OkNHx&n>iMXZ8%7$zl>|AW~`8{`)d==t?gdD#o4mliQSHTuy*&rG656VyMbPpS5la||`i8rwX?l&5zVJRhY# zWx2fiR7hI#>cdme{lA=EuA?cYq&}ncr$ekqA~mT2mg!!d?Ed)9*yy-zsv$A$n|u9N z=5iQk1#EJce19Kb=)&Cl@@6;fMH8ObBubXu2w$%(w_BFqkVRz>vS~)_x|(HTIH}td zOTiDX$#Mc&+$HNstQYRfpUsz~Ed>`AnYG*>Lc0@PXdkSVNvU4Ye3skCuPYn1lF{dg z+7qvZQjxS91TDyUJln<{Pnb6q|L%XmRLnQc*TZ6>v9vk1kr~W^Lqo zGt!*7e^uuGh}EjVg?DYv++Q}8{lN*wOXSLME0SZJ_oe;DY%Z{{|6Af8@;KS`ioZc< zF;bwz45NeXy38(GRgYN3`vK10XzpF#DUd}wzKu%#Wcn087rpvEams z>9I`t3iQ|!=t0!vgUG~#nx{27L=|8EaG~N&8{GdYm4`vYyGS0)h}hvIj_N|;2f@_# zquc6w?hbO0_!4#Rg{pBm*b+N;M2JcbIFe+zbicV|*q?nn2v5L&ukWzg+Rz!gVkJ&R zI;~fDYL#x%vPZQpxfSQq3|3d(MfLh<`N@~iwq5>=zlUBEcWO67QR@^%`djN}yh+>% zO}89WQ&PTDBz?nd&%VBsQ|$0cUNyI0;E(N}ooCU?o1qCit?N>L`vAXp$dz|Dt=80R z*nixK*48q*ul!tS>gWak{3-uDC}Cr-Uk^^(oS_UG>iahU3)9f=zIV#(vT!!>2HQo? z@2fW0*fT4u9RxX=#(k1BNa$8~(k-g0-vpSW)FeRoytP`Xuff) ztaH+{kRFP6q$EBjI`9y~Pc!D;`)fZdp4MYl0)%&`29)d^2#9#8gV-#>;&7jnu+iRT zbrjESZ(yl@d(SxsfJcY*&|v>Icpwp})5bw!h!Oj)VRf&ShvJ*H-&r#z*rxAUcd7#G z+-Dwm#=77Ol<>sdOVlGJJ!hH&MfuKZUw&21S!LVay*PJ~5I9l86bszUKY7@%SDIGA zZjE5SkVqb&@MT4fcHcHAxqkOBSrlh6Ap8ieuq(OKY-2V8f7|`J8+ z6WY!J<;%DVL?MhMJ^ZM?0o2N7G|-=fs_T9F@|v;--aSv>k86L;&Ic=RRONj6w+^%xU>1$&|O3VZBK*Z0*8T_7}dU=|Q?re{}NkB2Q(L%BYLt zH)wOWv6fYO&vw}io6L2Au$^dV}Z zGV$=>vpf3le)Qd-N{L-vfZD7C&F+=)V!M@KUPwS=qaKqB#ZqH&McbGk6zG_6C!g@a2Vy^J${A`hbNgJgu%gvW~Uk2jQ9}&6vvGE3tRP@cc_A?0beb?f)eV6tzE9%0% zF#45t-Nn$noi@iO;r4ynS3D_%k~DKA9VqV);R*o`ui`H|=~P6c4;n-Lf8XUVPDmf) zM-X|a7*s5{v1mGFe}W)c z$JV|jGmu{eV_7)yCt)g0?Xw2bBsBcZQ9^a zZaPOdR-;+;TYt}Vj^TT?&RJFMq>R*pjrs8m1g^&i1$1KfrM99nYj@8smR ze1)X{l>l3+gb+O3lkOX(UhNNWoBr>xQ&8s6*TU# zm>Lb_&xQ}#$i9yOlPjobZog1q85V<$_EmJQYqd2M(R$?0(!ss0sBE4ar+fg|3q6EL~lv5blAz{h)=Y;>gI>&sf_&=~FhX2ex0{{J|gMULD z|1*x?6X<`Ao%uCI`T5EXG5TM7+@65{^>(z_6!AYOj{laI?+N(d`{HTH|5YD}(SPP1 zf&c!~!T;gwWB8wO?4CgXb6zwJ`Zvb$zxJ3t0srf(r-A=BSI6kT<>);D|9j_61OG$f z_|M!U@ZWzr_^kb-4*oT9{LeUYPoV!f2Tp_j*IgH*|FtjM6Y#(OfN9|WWN!@rEj7Cp z|7P{inq&PlIw2a_^8GXSa~&z3`L+5jzoy@Eto2*0!)3t?eVGT<>7vilQNVe~9azA* zS#cv{#237+d6NEC^KZsu;b`KVrAiyR<(%PJi)DRnw4{SI6;My4e zHy*kt;Q!fur-6S%9RK@Yx+mcO8y#gn)$yLMd@x4;d3yx@DB;xcKPZm>`7hZM=>I16 zPn$CRuUZ+S|BZ+23HX0@)->>ccts5V`w!l2_($`VjD_1Q2;;66&!FXNM6kW&fBX4b z#>_Pb-#2#?c)6$7`L{{EO}fFy{DGUA@tp+T)dMB)77O0I^+oU!zn?O^UzOrlBY3xc z=Gnq~&0Qt<{iF+cCw;C6-p8hn-*@gTfw$th!F#5ZehUQe+AkL2=N_3d{k~d?-@_jm zUEjLgl;OQ(Q%QZ-2;Q~D^xHOdco&w!YY@EiZz`(q`r#?#*Z18L{GMD6yxTrs1h4uJ zQ-=4<_e$X1BzW_R;U#`IWqAMd?Gkv41h1sNJEj58V#saI%j<82;2l-Wk7?ldl2Ulz zTn41`m@l!?c zrh(r(O8L83@b3R?F}$hsx2cpLHDlm64gGjWseb(A{iEqO4R}qZ`msXrF8xGNefuAt zvVP3D!{^MmM+*e+{9^e_Jv4QAwzeRq9}iy*ylac)MO{(O0&0N#%KRG8m)Ec$VGUjC1r?thM)K^zUkIBB;3KD0rA3+rj#mL5I6L;Oy+ z#ZPR_2Wcq0L@_Jb?(1r<6*xmIxr+&8mJ z@ZK+aAB)X;(n-BbH})x_^M!BTheJd}gxyfy-B*q(?~C~IyRE$UjxO)Se0dOo;Ktr^ ztu@y_d+x1I#GVNjVdI3#%VxCKR}#2Yd5vx97ZO09L1=FDSDXs@397Z!mDhy0eMriX z)|#4SBy|5hn;`kh%LthXTd2c0o&`4qEEA}-nv}}1PC0sf4jtbYbJU+-e_nk{{i5^EZ+RVkmkzNr zp`WT%D=hX4>+#ZtRbR1qu!dDPS>#y5s&8A2S;MMtTFhCR?+PkU^IlO_uFeOXz0GA z=JgHTSJk|sp?h)78`HeIFwNsdX&x``ej|Gg@bjhyK)jjEZz1y~0x3vu70hfSXYxZW1!qGt0yB+TLT!l;2{hh9Q4>V#`=pf@_ z{Hph}&3|54kuuHvB7#0)Q6rXglVPB6t`3^!w_6k(%oMxkeQ*}Ece)-XW>vP zOUn@7((YiQnyi>~v`B3~mP*{3naQD^b8=<58h5+0{EuZxveZ@}6Yk;HX;Ep*R={q{ zodUGNr&){a(*U0a4e|i^4T4ZBZ`#09i#NmC{Ax-#jaOSqvMoxI`=wQ>6{v05p1y9Y z&RVm6J$)bZPwTk2=OTwi%;nvVs4`^(EHbUQqXhls{xUANQc_xBgK%%0^4**S-<$03z+&YW%w1ZZJ5ZS77A{Sc*`Nf?_N9IYbXy}LQ=8x~_adbuq=kC` zaIe1MdhYL%ED6NFXA>P-LnE{7w|F@0Xh~syHi*S3-d2Z0zbsd8!mS$iM5D!mjP971 zOGg6@n)NO%pQKI;O{|+nDPc#TrTWTaLf1~esLK{7WvhnS&UmNn?7guBrUx5J1bQf&`^QmJ zqQ}j}^hg}DOGIQU^!O*s#~+WJ55N-1bE)_u@E54qoA|0aX?7l=FscqV5Cuc>Ea*u4=;;D<7G zM1=KLQ|=e)3(#*(xvd23tTxqv;ZgpC`40)$C*1+#<(~w9n!u?31pJIqfA)(3-^QK+&oQ&L^lz=>$3v}J6q({+ zyVa{T>OyQ|Wt+RybL?y+K)W|o`8J>~G!MCh{RRj!*n(mRO^h{>>vZ=JaqKyQd^Nk;L-Te^>bf!MA2A{VU?Pb4AP)!!t*HheY<%Qd zmtRT5e5`zSR<%c@ROR2h%|GtG^6w#HJXU@!gL8Te;T>uhmvL6d5=?sgqn^iKEBaQg2u$9(2&MnX-C1e3T`Mx6 z1uJTn>YG?%X##7gW;M_5vZr?L6s_ulSq!z}vqt?JLo!dFAHT`d#|8Q*g*$7+)5l&0 z`kY=lTlO}siY`-PDmubd72Tm{u=$w4gWWo=dR`x%Hwftbzhg_!jMJ$!dv{2_TGzfg zLl;A*S3sxXpW3KpKb6Qg4o8`r z8vv(^<@>lJrX}B>d1C7F{lrCM$oD({up8w2ZuT;omVB382%TOBopz6Wdu60$l>P3I z_;sqG#F7UEMnRK7<5G6L&MbMM^KO#88oudYTygczU9g`Q5^tM_9|eThI_aM~xzS5D zoMwnX)`+H7(VAH9tp-r0BWwtPD(ju>^afqca=-Ewo^#e*V7c|htq7d6m%%cnWx4&< zRH|S~6_m-t#Z>O}eBFkGM=Wng$lIxF-<;3Cp1N)RBf@wX zK5xDyT)s(Sgt3(i5G?I){S!nBjd9q6BQmphdVd>{vxy}5p+TZPbs?W(zleSSvdet7 z>naXb%4(l^_Jml%ac5#36tzaK+1f8_a3sET2oPk~{%ZEx+S}av++PaDeEjm3JpP=@ z+kWyi%X{h%&#Al*PPe=zk3FaIUN~`iOfo|Ibe6ai-JrnrRl4y#V2jIf2R?lvY7PoKfh8N^03)|}3C+!+KcbvHBB&b0o9a@RD#*utWkdd3&hlJvAY=0oKg zZ8(X(>q){}T~ffgC+=d$R@+OFer$w%pYT3&Er#V6MmsA%tMaY>Y4<W2FALUda z0{v6%aQB7tunM&yjM)^~_{NVo-c<;JV7$*va)ffHJNjR}(KY758goa*Bm^kd21QPs zckYZQT>~a}FwDfnBv71$ovq5NtcBEFwLsXfZ&HF?8k6Rf#yrcN3kU z1f(RnMn0%Ym55WF?I9zDC9=I03|IKmPHH1E{lENi`ieruG%lw9p7*`EWWMJA@6Yhd z^b@U`NubCjfn^E|P)pSqn6ScF~5dZBVE?{(vr=jFwHonea@en(7}{?EnfpU8V71PyZDf+x(vh?Q`!{2M%^l|=uC!`Ae`_W(XH1-NH7XRY; zuYMN!13wQ41V&bj|7;m4_Kr*MHy5WrVzTsy7pH$>=6LXFkfZi{x3nL1ayQVH1@3#d z+d1(m9*(7ehpm|-C z`xD|%WAOu#J$9_DGW`k+C^lPp1kvAWz*kX)gK%89RNw_C%BV_$?K(XHt0V8l@HKg< z6;kQ#^@;K&^W^04d@q~uR=D23{livVX=CeczLk$(bwOSwhzEZPH*DV=4kA*`g z0J4?%FfQ6eEk!?_gO+=h=@rhau%LW({QhX6Jr?>6wdpNs?UydTpaE~L8Dr?NPwmh~#leG^zp zkr~1@R)xk`Kk{W&a69P69 zN$1vM((?k5ByQ6X*L}!hNcC7zQQ7J-89-Nsd{e4VSc=aO`iQ+hU!JVwa1n2VXNXnW z?gEQqJ`=I54pxE6$3FX;y-+w~wbz`7Vxc8gq{`$N?@A5IO(*?gO?C?)hy#1@w$*ro-?*Le7V@yFqN=MOV%5Z|odKx5ElJ?UQnh2&o|N0DJdQ^~4V%h*`-c3u z+}9pad(=0geUX(k>DJy)a1zF*)$D$q< zmW*AV`_0TuBSkw%d0XcWArv~2;f(Xlf_3iD`>aLMmn--ZmBiGVe1RHuz4gwP55NCM z8DQc`Tcd3%PLj{`LP*Ol)Tp0kCAdYBSR^U6x;giFVPa9YId0pr7tB%l8TT*&3T(Ev z_1wuS?+d$BaOs8DWwsm-5+uRbi zAt2eo_6y^q{rC^h9af)cXj9=R|v6+&qc$fdm0yZ z_33`Fa@`-c%fdtYqm6E%!9ibX52idZH7XFY&)Su7AY-u=SJ@??r}frdp)~7( z^hCKZ@r2xV)bfB_$K$%-=*W4v*CMM1EIA0qWMXm4O|sK%f!TO zRV2o(d?u=HjZ;KkD>ldnlb2Z|smX+H8x-M!F^nQ;0g%@ze(6gn-qHdj?>yatI+ zt)9cx0;kR9uCU$J@~?)bi_MTQ!^9RyzL|?$-vYXSv?;%$b!K770hRw6Q4ASpTkMpj z-O;*;6}Do-?*94Rkx>TB&obhN1XhEIJ1|dC%F%L zorRO6D-WFX22R$=g%fiFC$*jvOSZ>b;qNG+_n?&+?&u*&KdOoRjV`V3TuA4xE?T*u z3=S(7h?}xcVNq+CP)_w31FOP?CeaGQ=z$uv2-6{!^0`4a>8*_}BLX@44R%S#5yj=rAbD;!c`QgP%--9(6SI!ouV@S=&bwT2(&KubSTx^PoG_- zmQ1s=riUAZlpVFX6GhYfRs=s%5R#d26(f^*LO_b=AZ9rv&eb=h?#umN#Nv7%nRs}F zKdWaG?)lLE#q;QD`poDU(jrG!g*5BD6I#>gJ`=M93}~RQE0uZ5+;@za-(SXO_K)fl z#sUZ0X7`)-m=&XaLo-9?qoT3($nnGbo3}t~$u6+L5IZ-d_#=L6-Rb$EGs#OttQNi> zI@Wg-EWc_!Bem&d-MtcxjP*h49WKj4H2$(IH1q8!qIDMDUQJ|8p`TBDraz{-3HPaB zfQJCtmG3f!w&lXLp> zSq5+1D3e{N)IT;u1v%VBNv*b4l}yR?V%!Jk>nQsKs#Sc1m+KCvubcZ(NT2F(bppxE zd~ciN(kL-tR29|+0tsaQHb0yP@b;=JCXycZ2{+~5s=ldZWYV%f!uzl+-5*xE8qL@e zcgH}*V7F$L8EK*=E3#m%bx-_Zc$oS)bU1Qb#2kMbk1rapkdeK*L)R^$yOu=~tv(tDQj|n{nW#W7zweXfhohr(-~#8Siv;n3(Rf%M(}k z8hVE^PPJKw!QC0bl-Sm=Bi;S=yJ$tne;C$sbI}b>%t>$R7{pV5G$EM@UDs;}-VvkK zfS5U5hLP^}o4~s}#M%7rjy7`|TI-juw)AvgYq{8+8RP>|H$z4}0a6&pncsD7LQdwu z3y#$hL)X><&1DOIedp@a?0ZJd8gf&M#m;jrT1tj24TO#8eAa5(<#1 zFvN~3L+mgpG@hqa?!G)DuG$_eb6@(=MCdJOBz%*J=o&HD-Oz|Zk?N#mDOC1$Wv5SL zx;tZ}yBd;2*5tWrw#X{n9$QpQQ)y!;2{kH$Op89Q&z5Ps%V+(~oP_OOK$FFdhtEE) z`XNQ5Grv321`n8qTM?_}baz8t5G1jiAiGv~qDxR+X->yAaxxR*$4teuqX#HR?x9-dSl`)5m5`37GnoOna)0Ii8hFiQdctnQODeRVBSR8G&Zg9N7oBVw#F5ghNC2q>#pT7XQOIUS2|Ts4d!h1%Tl z#Nu;ewPHb|*5aToy$~cleR49B>qxJA$6PU*WtAP=rdavbk>;!Z5Je-e(2@_*6yzT4 zm#7!Si6~(?6eov}N2WV310lC`zVKbh!yx8D|lTBVhwV46J>lQRRk%Ct%;E!3NzM)L81! zh@g8g=(C#O17~)vpU>Tkum6W;*7$cKx67+&c!8KuDJ;$Cwa!ADpP8`# z(P+i_UZ+b)8R;G=#?lR{nv1(AE7fRJsT0IF%Fm~@Z>Sy3{-6IIQa&EWR?=|*+1LF3 z7fQ52*4X!}fvHt{Ul+zrxC}qli)d=-MxkwZr7Wk7k4xHG?dQh9cj}Ar%G&?K?9me4Z0s%HZlLGV_3W_m=FW2 zA0I?Tj)xj+5;aydA$BmLT4SnO-iD$@IAaCdYg3=W5uOs)cHq~Lq1iM2h`il zbEdN~>3E~G7zOqlN1G(0W}V!`r&{YbZy`&pFsK8TbPuzyMPNc5dNA|`Sf?UT=f3jo ze`*fRy06i(PI(I-@k8H+qIC9E@Z#O|F4E z9mQW-q?0CJUCe1!*8HwAxy`y(T`w)Xupk(-5HHmXs5E8LiQI~7AXTl6BkyA|t##|4 zRnQ4rjyB>TM>jpGX3jh3leIu&i7*^6y4$JX{NV6+2TrU84(H-f~E37mcY zyT%#$;Vbr3b&$Io(Fx9djCeK^hc(fmdCi|1wF~X@8?29LpSv;+7MS0+YGfdH8nIEi z7$1^HtBW$LQX`E#pFy@s0y^}K zMhrq;Kto5`Q=JJ@#kixx1irGfMYcIZn^dI)%LzbvLrwfS!Iq1aAU`=0BDt* zvNPLXjxCuQ{L-0*A$K5Vh%7Ua%A-D4=_EQ`|D(XnkzM2^KL6K z8H!qFL9ILUs8E2aqo(O3P0`U((YO$s(ZNn6nXxg0I}}!ObKql; za8zum1SwLUlOh#yTFIXtMi=q>vlU&AB4TN(?D!4|%zjZBmthQN28{NackG(c`T41j=43^Z@Sy#c{Mh?f*NPf_Pio`Egw?A zh7hU&RhH(fdzn}J+`U`%r=tFK$d<4Kj^1_g^}t2<|3>&!@!RgN+xL7EkZ+HdPgGTu z;ZhGZuW|K35^C@G5g0Ye;J4~qt(x9C{UAJT%X+WLB^dNt6f$XzwR_rnU^MY+8fyz5 ztl3{~hBkUDSGddQvC87+TUrR)NvGEMvU^EQm%8#{K1Qazl@_Bn>1l?f57-@0q3nt7 zKKFCvs#61ccQ{R8fiV@PUhtF(r!(G^@6u2GbC^Rw{a#a@7P^STK>e8kIuzDJrX+-r z>$W&TAhr)Lq?_$G}`CXsmJ$E)?s5u!(sP1vs zTW6lGM(#jOTUf%otHf`QVsFK6n%&Pd4je|#o9J61({m8#In-s#Y7U0Va_`{(PW<1= zczO>BhOw6{kt*c5_eY#rA8J;JHLX0Ordm;BEynUEgLDK*I?>syh)C6v5aqhZBu0dC zl!S7W+tY*+Vj|)&tF&~3ih90_ME*7b+kCcqrxZflkKC7r$Rep`tJqauO9%RK=K~Lz zyP{?g*HtU|%j_(1oagXT3Koe%tNX_Ug$#m@5)Oh^pP&emgF9iOa3mSRH7P-s%e8+F zDHo)ab5tyej=?V{A%9MusE7AdzA2#P-%APzy;CKLQ(ay6zYLtS5b4iZ2opDoN3i9( z6ZyQA_7sf7i`Bb0g331^S2DyU*PX2FA+D3M-xEr)7xZfYV$z)+v4d;MdL7f<;&+Wa;n7_9R#xjz--hHO4f*9yvmn>{ zf#=>@#jne#kB8S(Eu4zO2pKUplI3g>?C zef3#a`Po*G_7V04$X0Y!pOIP01@3LR@ zY05{HH$K2I@ezT#4w?_V{nwr#0x=fUeSm7M`}0FlOni_zA+S3l{HI3=4{Mg@go|z3 zI?cpSduOLO^(m^jmp*}vtw#6D-}^v;C7;HL=|lR2Xj`$92qh+lNrQSh?fJ=4pFZRX zU7ag$t6&qDEtcDgScUKrAz;=uU1+VGJCPVco+k}MWje>yD8 zt#WUcPWagAN4BrWOe8l<_*1{B>JsIo@{kz&J)8L?O2K@A_tmph*NP9S+(TG5pfUw| zlcGs`rGzb$TXQ;NYlqHO%bahK`P!P!(A2p3k_}-^d_=yircFK+aB~eOAs=ue<&hdO z9kj|X-=gR!1))bkekIdgn2?C9O8oF+fhp$(c$-;Vc?!KU`BeA6VljwuwL@pJS0wAxBc&8P4qg(%5%cs-o$r%PNLN{H#6mDhtwkdPyS$Q&g z6spikhD5$l{Wc^&sSJl_aSI`|3H8r+h%a&Pp&ccvBl3Bx0#E)b@1$L)i6+9aA{+I? z_2DD>z$qMF_Nq5n2vlVpcvT>_v|?+NENs1+34rR`%?ZrGQcy(0thGefcg7qO3MPLN zkGi7Rr*&#pTudp;NPnwhvZTYDq^FYp(EYwZlS<0B!lE4F0QONVRVTdp#k24sghhEB zQ3Vj}_ykZkify}_pcqzCN)`vgkN@6&V&1qo0zvkH9+jxf4{O?#v`sc68|(uEVM<`F znI1K;)W(Ta@A8f&D}}2Y<=74o8$dGD+zb&0=tDR%Biz?%!|IJ4PvOCSj(PtaUfysY zBl3O*s~XJ@Mx%C_uh<3h7Ul)`>=@csxhV$mTN57?5kl2UR_z$ zkf@yAz=bTSW*<>mWg^vFnUGflZEb4v{O&hb6Je}jdLK!mJf2kz+ZBN=us4GZW~Ns$ zOt%SahQIwl7>v}QFhUo^ysR}ZnM|9$Wo&BJ-7=dQtCQeq9Xu(b_z3GsX7VSeGLpZ5 zBm6_0B&!#_k?dvZA!Pgd3h0S!*dg`F@9YMrNZi|oLcrY53ntD{#=l!k(tcHqjh0nv z3V-OQl|>lrlPcl{-ADY?neLY?tx(lX$veSj9d(Qh`xFcptxVAA)Ts~dGP+5*C!{}d z*?S85a}7!I`eTL|bizc%WVIyLmFba#G);A)B@k(YOrHoK?Lvu~aW;0$<2UBsq)CWw zLnjZczV2Raq`G{@bXmrDbPUrYa%-I;?J^^rYt_jT-XQ0GXs1kAeydaMGoH0temza9 zRh}v8l8!+L=nr*pa)ME$+ty~djvuRdkFo$k#epD0ax&gz`SOnpw~2z(Y~-8B{$`kq znGF0Yg|M)qWHwo8aR1Ob8<>Ez?~v5HJ+|z=T^%h7pD~l7d&r}u6~TfeX`mWn|I{Nyl|FI>fL#Sp z;hyyyRW#k!ovI*6TTzhvXPKnvjTVwp0Uo#&uG}YO$U+Vgva=}UmwiZPBB-ELoC#)9 z*sP#mVWzP&^_=GApQDQF_!1$v*l$@uoM(FygSn%l6rApT2Fy%H3XI@@2(}J+3uJZ~ z#fI4QQH&1i;}7`QnR-~UJ>1#BK{T;B!;9I+5M|C#nq>>_Zofbv)aIK}h&xDnP zQXiD&t{rx_TTCMZyVWua=GwAwsOq*+od}|Ce9*L|7cwCiKJ5vwGpVgJv?Mu&)iEG^ z$Rn7s+;+P5LT{}Qr{AB(Y8Xm0s?jIa=<28?K`bJXYE$jTeJ03p7kx^r0HOd(H>j4O zrldu+`T2M>-)i+k(G+UL%IR!9W@q8ju>K9zvPRa9+G^3TrN@-h4@CSOF5&b`I&EwD zwhk`r{H>D;r*BPH!`!UOu!RFMRAV-(J1O=hu?vu|;%U-SIzu$?T_5n?=`2@);iIl4 zlZuN7g$&Ftp{}HQk?!OhqmBY8O$wJE>qV`oX*2v_K*)I5eg6gp@OBLKH&+UY(X+Xs z{@|>s><1zPnL49ZvWb8~99cRlT+)_{g}!SowZr0Zxobi{$P!aAcb%4=xhqt7eE&!m zD%fjA8rCZOkVPv>Qe2#)NVG7NYL7wZlvV9#(phKy6P@J$7 z!&qp-$j>3X)n#p#E|8Pf3y&5gdy|8@^aJAbS60lCux2;;v1BMz#_tVt2i&iuguO&1 zD-b7E?(U}CVvG6+M(%{&WMsFrBO1aMvOm(EV37si@W5{i_@*Y&=!5UQ@(1==7KR8U zs!qf^?ITUHvS=`1`lcs@AmwQV-)tXk!8sCViuaODUWb~LNywKjrhCTnukbrN}8Keg^!T4j0*X8y|e7V3O&!L`|* zXmH&v4^hMYSy@<=f6yuJzf+Kk)@y33oR>h9qtV*(aJnDgC5-uH6zH(OfNb=lQ2EN2 z1jUijLe=~Gu^idk6%TkD;qkIPenZkD{m8js_EOGO=>vY2YYZlOBR?B4Ec526yqU^+ zQ9+NOMn;%wGi{YL+%JA$kkDS?Bm^ z_UQ+$mnL&EV6&YF7~-?SKsvnWEW{*2$Q=6C>@SUy$ZBWK$#bhN=W;0v$nr+SvdFEy zj~a6y)l5y`TC}=WLj2t2F-~R2tQm5ZI#`lPm$`m#Jo;)TKCih$J z^cU5H`O_miJ~ZSsBN2VZY~Pb}qE%e%?;NFR28jr?}MbEo*FK4UCVn8na|jJ{V= zJq?x|g^pok{w?%QumwD@M0^+3l1=I=y?T15f9&<8chT$2-&wCSy{i_#zUjU5^4FK% z)nn1C^IhvZf2M^BWA_&iz2l!da9&cOJ^k@c;P-j;?6%R@aARDZ>d>EG`iv~C8h^ya zXF>zJ_xlA( zxij`Xcg^B%`bh3bzBdGVt`t@2fF>%hHb}9NEpK7+F78K%NHNK_(YG;_Wt0j9j*XaW z<4Je>hhZIo)*^o^{(gQCpR~d@Dp^*Qz;+;N6^Qv+^uhp$26>E5hTN{pzl~5Z71~5z%R1o_8VNFdMqbfEertYC`yGqs=lakW%pSv>UV45n zlU9B7g6UW_3@q=c0JAgo=j9zSdwG(%QpZf@T0($*t(00b9+(#~%-_UsaLU|6`>^RI z^;9nAmSf%NOxxNTaK$=c6=iCSAHsNghD#Bvkd3fyYkT3m{JiuwvpwTGf> zE?mM{*IdeP3cY}1+sZLFjk^fA5w{f=JKFkYxKEc%@P74kyCK)ARBw0chje!Pk@4K- zuB9u5*uK66WHCK=-H_7qA&~2rH$2I1xIcH>+=_S}n9H)|`p&Me6Q;g%>9sgm88d6V z+rffw;I6J~yu0+PxLsdZ#V>WR^rF<9kR;88@y_?#h27sTUL;d%!y@+wUR0yUqb&&tYf?@3QgL7_5u~3hiKd{R`SV(UcU6b$)9 zn`yT}_r@utOkrRN(yy?a2hwX4CbcFaeO*_oT%6bl<>Txh%f;%uQ`bSDue;%9_vP_n z4V+R|Ea9U0`gk;dMIx5$#`XgeggY*`#f!^gKZ;wu8NB3A&=@uRUy3uQNYqvXn7o(I zJuq7KLH(bgo~cm{QgfRMgxhb5EiRqLjQ=zim+nha?W0{p^~z-XcqpgUm?uSsMxGG4 z-+_Oq+5D&aPbysQ9*=)Wgg;D8;~tLi4>A0SR93P}Cd{f_bDJt7_Y>hfY4%z8n@v-i zgkB7{Uaq2;t)W27UFxGamiUh?@H_i9i+{fVcucO6NRj{(bbe(r_Xya>6k}WJ4)WNu za{C7CI}O_+C9d25PxII3^&t1#R@!pBj?xNX91_P8_il;Z`;S|*&Q97}?IjK`i);5wP- zdPWI0Y`b!g{l)@zTORw3CD_Qx{f6xXOamQRz>ep!j|BVZoEj))N5wAs;L|3l)!!-| zye$@oN+WUNRa2l+W>hxNu$jWnb~AlMk**#LU3yR=htkx6J%{%?@aLdk>AMu^VZ+0< z>S!l(4^blW^D9gO5@c~bU#Osc7ZqBI-S5~pgy$l{F2Y@mXRG_U_q-U-ixonc#M0^> zfgwDubjPw=fDUt8%R1YJx3QQW*}Ru5d~ZQ;SKej{crBs$cu`Jk$ZVnow2O+- zOou+^(cY6ws~oiYu5por%*NFNzu~$2JiW9g1tL0MNVCg;qRp= zfC@b?MZxaJVp>u>k3dy)dyb`QKpJ0HsE|t*>3`u*4!;Z3cjf785-d+&0Bfo8^aZ=K zMF0E7yfjH7RNaKArDtb1ajf{)d5(=Jf7V*sF zrN7@h<{sHkGl=zm{L!LO2kW`~Xk}I}D{b8+motE~tT*;w@p0OL#8!F7(W@Q^9$`eK zjMj)eLy^9(u9dp&{xx z$zAG6ra(*CF+?7TycTZRl5x4c7*h7|-riS5GWC|rd0qF=tOrI{J? zLn<4qy;SJN*~$*pAyp=ihORz$He0i@=TQUr`om5ULDF?BVdi?PRW**XV|=?CAAiM9 zF{c@Hwz@lB{?{-mZ;rMMay6(Tu)*HNg&FGlnhy$4zNbmiO1a8S0px*38YPz%WBHOsGPpcwysnrf(yJ^7{KNN4=NgJ zA-VZG{fMa#*!_rfEBmU<#W*3CD9wfaeha)T|9t>BcX+ych2O9uyMsbxrnWqT{HOgr z$Un=vrD6BtUq}5c9KM@B z@Rh*i?IIlh`-)S5{zSJ&E_iG46TBwC>wp2*0`j$2UrFUP=5pvGuFF=@uHY$hstfhe zUB{kSG&t%6PRJfaU057Zzp#rU8UQXtG-$Ngx+Gd_a>^^3rF1vLYIpAQ%E@K6twj|2 zgj=#SNXw~iq&|=?*jIF+PO{ESUHmkE*UPptio7 z^U=BRgH%*dCMT(H6Q`o8p`(-Foip9>NQ0tv3VC~Aozf>1{nSdY66S+`$)!@LbF0@f zpp$e|v2lZg3YhzSYh>$Nx3;9wd{CuxmN(Mt zAC(wQVY*gK%Z}xDz(n{kTT1^;gdBx_BWAK)wXb$pKLR3rRcC*?Yf=r!m7RAUx<}oe z`JES~OC?O`;Kzln=qhY*EJmxl%T69w6fB-M8g2_eoX<;I3iyp=HFd2SaLQrP#%tZS zv_Fd9MB~p3K^_TrH!Y~;COI?1{nA4^7(YP<)f8}h*Q8SeJ6Wk;C9~JExmNN&|tftpw`_$Dsoc_@TY)fZ}7@OtQH^T z0V%ig zmeNO8Hr2YHaa5!1G)p69tA*406((yD(PKhM>s$rADraz@c zeoHqfrFW_FtW$}~J>lgW)o)3Kf^pw34#L~l7!PYG^J%IjxO>HV!YgXp0F+$Sc_Gwe zp_9zKpC9D~|GUkfoldGn2QA#>zmr(Ra5)_;cO$YOG0*S?F~}he8nVuj80@52f~vj) zD^9@N+mv4X!ZNfbeKo=OI+`{fEC~TgsCq^cNT=k$LVZDp7DO!zNfDmPZQu zT3CPBLYY~lJdo~@o*tZNZ6V-Ffuy3-ypcKY@`FKj_v^)vseTha&1yGbo?bD1?kl`V z*5bIYQTvhDWrT!)9MDH<1|fq0n)3pPdJt|qNVITc<`qsQK;08=*;{GSQ5{P)X-Nddf7nJ5-rpTfYh66K<@K-6h#LJK zd$l$(I-((*Y)vFdH{75|w4Rw5m{F?*-7T>gv_3PYE(b{qO(Ih3HF{AuJnDIyEUZ{q zqb}2ec(68#`mQCE9-DfiM7Tah3*7|SGuvdxOB0ftZ93)Z*fpX`wFL^u%M0ET(HAn= z1^`+G4wa;Shy(M9`}C)%E_fqHtWX47OPkmx%WRm)w`gT`)J=?*{)Vwok&= zMn0-5+EtGE!74N@hb0gB!K=M+kB@Jk`wWwC6@`{Nl;8Y$a?&t2lUpmLa8x{M5}K9AP3x6f+CpXLH#Z1H?GZM}=&^5SWW*ug!>%_{;byOS7 z+~{@G^+xcb#bq3l-MwIlZ4sFXzknbCm>#J-Sfzr}QkZ{XJ!in5^?+f2J&&Dd5cwoX zTaBA}(QYv<%|2ACvJYK&SgdW~DY3SqKB{GhjUU{@v_<4sbZCV?|9N&SSAFYuV8PCp z=5urk1=X=Tj8#n#ul1)qd=5T9n5j*%Gv~GqGQC1y#hVti{^`~|L`M5}!I}Y*?8`ou z<6^lTM(Ob5;r6 z`fic?*~i^AnUJ$Eo8gcHg{^x0tE%N&xQ?1ex=2O@3tlgNpg2|*S%5(ubQ#vSe!@9Za6vDmdNY#Q|x72jF z@;zKL*y}EBmOWGf$^HR8Fa?_Gvnfzc%i@TvMt8*0$7I0#tbnojcP zr@}#o8LjE7wY>~l#te;tVrN!rtMl=`--ckez--~ZL9y(HPSq@wS2^la2bM;ki%``o zRe39z++JK7&wFsRcBEh4G@0CVXe%NxF2~#r@27_C_F=p=_qNY!Crao?1oYeJCo#Wq zspzUPLGFvRgQ7*IkWRkwe&wtOXwT!q#7*EBa;-c1!ri2+7en(Aq4L^3RQ9PV%oA$8 zW3fGA!NBc#^O5ZpB5PC$Y*Jms4_z;}|0TXkN$LZKmW5tLQb}6_H8+u?!ScYB0*HB# zFKVmI1@1A}Z#HvZ-h&aG=O${-mTr((3*%v{j;J|9J(cj48VuFBbAN5OlxoDMsxnGdZaOR|iHEIyNIq)(V-2UM926t_6dxE<%xNX5* z6x?RqS$E$y3~TP{TVcf9qbq%s{qk0n1H33oc__*jTtImPEec=d ztFN8@tGt0$$`>7$uR9LP6y2};PuJi;Mowh9KCE(gjPyE39PRNhB;m6kKa8U7t{@TF zR}hLyM`L%OLn{x-KZyv@NObOYdXlKx45D}Vdvx^%Xg``=kN;Z3*Jt=D{YK$uP_y&^ z;(MKZ8HnI4eOl$%8r)fTxBorAL$k6YLG25YaK}a(FCv#mAQynE1^h7pZxL{R09YUz z%Weojw}77pfTfwS?Dqq(T)?#fU=d?1yD|W(S+nf{I8DIE0`LI=mj>XY0?rG-Wdhz7 zfEod(2jIg3jtjt20f_+27x0Dvqy$U}K)ryn0K7@Sixa#I<_dT!0A~pJT>$0@_*DSX z0(t{*rhuOW;1mJh4M0-BR|0Ul03CEBS!-G@`?3DbdZv$;b6oK0LhAFYXU%q$FlndphCcI0Z==c{U>BZfa&E}c5?tG33ws^lLh=H z08<3q9e_#!KMO#WfSUrKep&Wg0Z9^8&D+fRh5Szkrzmc!Pj=01gnaR{#zauuA|A67Vu|l?)CR@Js;W0v-*(Ap#x< zz@Y+u9)M{A)&<}S0Y3=93IX2;!21MzApo2z70WIQK%;;w0`PVL?+?IP0?rS>I|MWa z;A{bJ3cvyZ#|Pk@0;UJx903Oeph-Yw0L~RKE&$B}{)VDS2JaG}I#a-V1pGb#>dj{F z4S>45+4TW9Ou)?nI9$N>0XRayR|Aj`kO{za0cv&>&yfNy55OA*EDXR50p|vQYA}|a z9{`$ySoX9494+9O0MrUNEC90vR0rS~0lNp_SONc{u!)1&0=P8Cfa3({f(Ly$Uckcv zI6=TK0#GO5zXNch05$IlbCQ5>2jFA@I=ew%<_PEtz}p1agce^;74VVpg@H*ddr<%w z9mKK=0`PSK=>U8~z{vr)R=`mK_=p74N^}d5Y&no-$TbOyPM0PlD$- zo`}BO(}CZ{b6)Vj6!&91?K~@auI2eY&rf+a@Z8VyN1kFDBj0m;AL5xnA81dWgL!7~ zoXB$q&pUXUc|OGR37*gKtm645&y76)#nZ?0Yo5n>p5u9iXCgMkeR!tv)bgCd^JboN zc*MiSxSFK=G*36rH9X(p`7zHOJooVYmgh;H7kFY!vnt$V-2Hiu;F--cm*=fK@8)UY zS;BJ_54U0rf1T%hJh$-N#lt@Q;Xm*^&GQmZIen%*cn;!uBTpSqisvkz3wcJ$Y9#zY za6Y~Rcq79_a1D7ri|16Hx9~LaypQLz(EK7#56=xeTBx{*=OLcQc%J29)x~fHoyn;@ zhw>cFGl%C)o``)rr&m>h|Z^k#&RmG^J9ZnSZ7m?=P+uXZ?kN3+FjM+MqBka zyWQ=v_`K+KPi}r!*`A|%q}`@R1~+-I&vD+ zTWyR#Bg?rrn%zBlO<85f3w+5w#!uwYCy!hBA;Q^2*q93w3wu>AQ{9<+N*~&X_FDX| zTs>)-bMBy3xs7}2qf*!S1%<{8U@T)pgvxoqO~B_N8cngM!ArtMEO)BNoifa;+1(J~ zIk^dp3(hIyy0LT0Dwi!r!du1Dqws_gmuY{Md6IE`%U$?4UWb47lRjAEcLaPm0N)ZI z8=KI+EkK8ELt}{{WRZ{#uX_=bJ1Q zt(rgZ^Sg1l(af&YD~Vh09^~K{!&ew4d-#w5orKj3cPVegT4!llxbg|I==yCu|Fw;8qlHu19?k!M z%1?EQ>X6?S@$qxsM~sK1iF4BLy_=hbc6p z*)OJ!nv^>!O*Bo$(2q?}B+SnY3vu_-ety~=QyJmG(aicqxBCbU8%DfUSNjnLMYdqi zZK8^oJ=gJY57H5sW{)Uy(=L;zzpX?&M^a2(q$=76$MZUvZg=CaU^W#d4qMZkW{7FvlGMh0fHYSq)t@ zec+y?A|amsT(f~+Hra6-=Qu4eG$V7PU&l8yB?*PAn0k3bc&SU6GP*-kVdXYge&gpI>OUm>#fKEWnAv}%Nrg|XW+UkRmF@(l{*buovE92R@qIR zsW)||UM3l3xu1}&(5>BH3d$an$;kfzo+sgyRdyrw zDWUx2e(w+Z3mBh~*{Vw`b_S&k7436sVvDKk45|hyTYO}$y1QHknZ2o;{puiCQ#j5S zGrR-fUg+4?#zhwLnDny=-Bul4#mKKIq|wTZ727EjCV z;VGZ3ujSc~n~GWR77%tRAY3ej3E8FsLMsTnEuviGYWKW0?yn!5?ipA4&dn*<{ ztuC}(wU& zv=;-~l8YI_&Z>I2$d**OKYCXY6?fOd93+dDh8fY##C z_9>uU9MGm_Ir=M#wAG{STR>YJ(Duo0Dxh_GwCV!dvVgX4wx@u0jYr$BfVL{2RcAk5 zKwIO{_Aj7a7tr?0o>f3w=h5C!K)X4h?Vo*P0js|D%9bL4`w}#tUfW_(+is&bAcL zWF-OZkOJD?0WF@LTR=;Av_lJMH399A?EVF`I*&H3fHpgz9h!ZC0cc2R+M^v&K&uaE z)3Wyz(3(8jVFk3a1KJVU?-bBlJX%cw?c#uTSoYHev{sLHcmZv3K~Q$XwVXbI}r zsD2A*hi7X+lLV({59iI-eyhUQM0QX7ihCpee%>lFr_kPabW%4^cOVH}eBDP2h{F+@ zw6_~m=hOP1$8&y}TfhG>hoLQaWMNn8kGa^w?$jd-yBq$vu&ZGRpTAfBlr}FMzgXp) zWq02Mdg-$9&=~eYr;I><2l;lM3v~71K?j7X+8D7l^DJWPY%2j`>EYh=ruA?&oUW{A z3ZbJ-p53eE+*;0$d;Ei%NA>$+b>AO{(Q>1b`vGy%n(DQ8SAy7H#)aJrZYN!9loogE zpCb(4XE?FKV4Y8FH=;Id4qJ2wL(*BO&i^zEj~kMkkAJ0@Hh3E zSZBtCZn*4|p)1f&TPu<40;84czD4Kjg!cdZqWS0I%YMe1uRgB`-}f2{8z#4=Z<5&O zko>mP0`BPa!5?%_#`E~4>a&gc|522u0mYfm(@^HF`+`o=+ZpA#8sTQk^2#&6Sb5$m zl4WKKFeOBtV3k@2nHuGcdswYa- zW*jCwi+&Wfu|&ff*G6$wveZW#yd$+y9lc{}6ANln$h1-Pr=dt6c0_;X7vb-q{``jB z23irvx}5?m+t8oy7Vt;tj~~xax!ACUv5-yppI)IC20*7HFdN#OUagm;76vBVJXPn6 zaWrZvo&LA+bvQ3Dk?uBnB4hLzA$fX6rq(6ZA+XU_flM^MN`}DkC@|D~V39LsIGup8 zz1x3M@ul}8!zdz-^T&HCwX@QNJAx^q)r2SfqT79jPM4I&0 ztche&ryT*ZWVkP(vVO%PvY6jJ;Y+vfjrL9bG7h&^7GEA&vUmb6JpMwDf60#GpW*T6 z?Et=wKl{YGC9&3NIyTCMXuW>%cTESDe77XWtz}}|6DUbrkW<>d@pQFZ5{C_p5sa6K zq?0r`jgSC3)KriH^4~W7x4dThq}$d5vZ`Kh@pUxM4EI<7ZC9;UtC8a-BRHqs@Yh=~ zQf0SGx~m*J6Hj~Lgh=?U^XF@tAfzw|Vtu;1vC367_;ssA%e8F$KNkMV`J>~D%Y+-3 z_JTEun@r>G^Rs>4s37`S#E-}S@w~0^Z@iewmZXe^fBGo+xA(C!cMSZ?M#29VlV@Y$ zA36&DL1Xe$>y8Qdlwj#O48`s_QSlriVtBcg_Ys$eV2WuNBLc_uT-nEMO%0y zZNplgKHh(`F|~na|i5( z&bL>&$KImORBn*Y&W+&r_z!1_+-9N~!lhl)61wsSlim;G18ttj$*X)Kemu*h4q75rJw9ygVyXI)CAl*Kf zNTkK}P^6~tlU7_rtp<0d4IIUUhEIj~wE!bvgc_s2aP>PN31U5yT$Y%BDtOMETUj77m zg*srYr&H%n;z)U~Xqp3qUh7u$M5aR7+Z@qr;iXzW$RZGKay^xzlqdX!7Yl?n6=i?Q ze@)&M+M^CxG9^d^h#;}1TgNw5RarHTVM~mRt3pOxFT~kZI+w~{-pvI5;gLSVW4T5x?Dz;x00Of3Br1^CtZoG;@5?!&d5iHt0$reeRH^5Z0=# zu8tlLsV=ojtYfX-!u>T}+&`3oldcpt0CUq2K^sy@Wi{_f-q-Ndxlb-EjQ^w!rWFHd z#~O4PE#>NDjwkOrQzw&??zdN?v=W$hEYypm5$zxS0Y*hpbzOW8lYw0c9W8 zW|aYx9TVYEk=n&dN^UPnt#)nFtmx#hUP!Fv+O@@%qUEl$iy}DZ=?p6n875i2u$wo= zn7|~wI8P(Rtcm1%gUp?%i3~D#@}-%8&F<^OL8s#f-ok>6z4a(TI%`3y!%c<`2YJ$v zR@&VOp}|#5m<_l{(A^9_+61sGGup^&)bnete(>@h`}-E8R4Ae&a>v`hb~t~YYcr$8 ztIeN5ukmB%&)^GV=TEuMyOR7_>g^pnl|Qc#$4=+ZmmlyQqN4oS+w%F}pFh-p=!}i? zG->%O6OpQ_{=dfvKXnJg-!Mk_C70@qVYI7wtR*(! zAKmY>w%C1SGZ`GZ9SL7Y@I6hxw+*426ex<`%*KzoqSY=@! zJ@=9kUTYK%&l72Tyo~o#9aYdU`BY(Wa`yi0H5pOqS+H z6YOy_CfzGu-lmsE{nWwO3F5HMonsa^%Vqr(576On`{8#jSH(PLc!>sqheaW%7nT9} z6?n1h4iUa}>!f$@qsCLOvZ+wB`$WM{i^AGfpQfp4(QB07g-TYlrPOb)f?l0cm~;y; z7M5_>5(v{AtNqP$S1UsEw7bZfIyMxjp{u;bJgr}h$@U$q!w>x3=@KS|g4}%zg0poY%2HsI8!Wm#=x$?~Op6 zE7X0JzFI|=NPn)3A`$I9&P=@BCp^{5MaeLjMc$Ikz~`H-EQOKJz&)tstMz@-;7?t`Vq*2z49s`5yRQJ}106$miMM zm3B4ewG;9o7bsq)IiqXLy=3p!8e>|S&fcVtWIA@osS``m|D6%(|1F97XizR6m_-?x z6*X-}Vd|B|61ieT;7SEPpfs>4syywPK z(37|Ee1fNo=chb*eR=)l@iM8%XYzH|mC9qzz_#V_!Q#M|j0imZ@D9l1Bq&4zc9YY2 zd0b}xG7}8VGtd7id1OgNULLEyT`G?mO42s;V|WtbegL_B_n7s%sC{8?`33bk(we^=#gzKC7aZ)spv;G9w#qHx}8?VN|Ee z%$=v|uheVa)?UYK?RDVRURDykr8M_q?)lv2+_MW;X3*&#o}ch+HjL(Z{Aiwxyg~*S1s^4+I>?u=^4!F;fhWqRoy#9> zeHc~WUK%Kheo>yMbcz2v$MByshQHnR<(0RD&M3)Sxr8)H7r(=!_W9R5rhiMH(eO}a zHhOhhXsbTZa?FtUsvDCqca?3MosaFY4!FK^Ma{h6t|ZBw%WAalxbl|5Sr;uVDJ=I3 zR2kDx{w>q91;KzPd}VMNJQf=NmN^xfaJ|R)%4J*d$gbu`L=Bk%5re4nQxla4{cOhn#lAY?SV1HmRCnx&yiLqsn1%f(9Rvi&s`)n*imF; zNgf6vQ#~%LNs}n@RZ(}Y=j1l>@Ep9f5PdHR`(;Vt?%bxGiG_~i4zrYfKk~`GZ|8)R z+o>3|u^~Ht=VHh{C^O?uB;y_lHN#<+=1v{|jiT1{jIWorrhmMT2Jt*$TYo<@_1a?W z>Jiv$h5asJo6#&YwXzud>93X2zDn5p(6Rc$wZ1_WL+*#CsX@i}iQp?z?n{yHOejX| zxHj|6a=E09a?ujaQZSUj@`o<$B^566#1E~K$rAl;rN^g=Lw6dT&xD8eo5R!~Y?D`DcQu0+WmeD5^O5c^&j+?DV`keVMvsL=NWV!}x@2K495BJx#ZN@LJ0q zAok09+}{1DMiAlAf6$uPGF8oZ45%lzx|icb7Vm<+d#bHK z?X^k1yJ=>?UzgJcl>y#1^Yq(P-afhA@LMN1_bhMyC@oWfxfe&BUl?uvZwL7O_)hYB zE)~JQmEUH~pK7tB&7UIMejesc!%Xk3|qxI2Qj}gu8S6f8%xMpZYAVTGN_2#ue+U+{ETGwJfKq zi*u?k?2Ht2>424V#y5-iL!}RpN-JPy>gPy^d;TL8vE2Tw{XV74HeH^gZJ?(_2ir1J zV8}!O%4ucvDo%56yP!MHQn2=#(m{jJ3egb2F1Ir`F}tEn3?Rp$eGtq9IKw9&G#zY_V``)8u-2Dyb^wI zt=&m}>%{M|o?oBeHWl&H(ZNBJiGHebp}rLn^41T}fYeMLtn z+lD=bPHEIw;=+&B4|KyPI-Qv28*JZFvl^h}`%T;Veqo3>Kgx>2m-4qRklAtmO2c0x z1I?>R-%TOlR{W_OLi#Tp>w9VZov$|jgSR8U=P(p)Q~qP|7x;hMcE10gvFMkkuj$pK z&v8>=#5~Qgd(-KD1Ql1Wub_H)eR9VXm=XS7+rxi8Adq>&e`4-f^wZY*OZSuRzz_-9 zi;UcjAy8fc=n<6u75KZXl)uZzjL(-Jw`VE-o3@Ald|3J#(zDn0@V^z7@{ERR!4({n)xv`u*i{*Ec-Z`zpg1^ly0`Fr8i?WF(CyeZDg$6edQKeUwo z7ste>ef?kU&v{STt9BCq z;<52fKWR%D^5`d-PkG$kek5hc+H&7NP$!|iWXmD)YEpm-{Zy;cv{pH(X^%AHKY`8FZT(_dJ$IhI*;~yZo2S42vGLoAqqqj& z`S^A&JtO;Hz#0eSFZ>w^NBW4Q7?-*mOrmNKOKR;x3P#{(*qo`^1GuBm^9PEOA=|i2xSOEv$Ur0{JCV>|WjN+cQya7Oxk!^p3Ex2yZJN&6m=Y;{Hk?(_Kdk@rD&AxjV3h#Y*quSex*8As6B>C48^smtiwjNVT4^3jINhP3;~u>zFCi_+c7e;90lb(tfNAa{>& z`&si1nLyn!D+Yj1R6BLJb8=G`qhZW8Qw=2FBQFbn@J) z%XZnAIyt8O&#Bn*WVPLskve%x>g2K|ljOH0SzWdymE&q2;=Iw5u=xbr#wE2T-Z|V9 zpPJ+D@NU%pYB;04YeRHL+ z%nPb%ZXsJz8$p6^?&{jH14C_AfeIZDvVXKuHwZIqr)cHMl%(70i?q^~b_e^koj`x!gnWI` zYV`%lu$h!|RA-#y-pAR0N-bq7NG9#x!%39_sY1dBt38@r;(jvzS}%Y`q+H(qa;)-N zZun!iGP3Ih@reI)sNdqDeMLBa_g`(a`;Y7@Js;y++EM7u22n#B2tp4Yv46Wgr|D+B z_QFvDhEe!_=vdz^zaV1m;6$hM8AQit6XBcm$s$SW4OvcftF`wKS-`RlLll;8jqa7B z`Ct|{t=DmXIc~(d4(PG4f-stms6DgmenUQ!R#e)jMQLh0^f4{8M$>JPZdP=0_cJTr z(rEn1cKZ?7?w5FoUxiNCp$LU3kff0mwMN%DJ7OLh$l8AVP(WSul0WE?Ut&$T?uHOF zE|82XG9~(q3F}LYg>7$vHnOCTHI;6kS2WvYWmjDxQ)WQYtm~V3Tco$vu)Vv@+K9sP zJrqg05iKzp$v*^2#xsF8;?)~*P~(UKKZYks5CREXJwn0ZWXrNJ;Aj*kT$e|KnwC7kzb&^Z6Z^_5rmQh$xh(Y^(l+Q3Zx zJFVP7XqI`>(ku40xjqRl%I}240%_?6!brMzOdRz-R`DZ*2vzzBn2zv|raC!#?2*dR zvBguUjgF?qJ%{Hg8?YRunckz&XtWXf=$Z}x?7p!{;iL*uPyt4~RQkq$Rk|y};v$iv z8?!X=p!7*X@k054K1r2lNNQcda;b{0J>R(x^4VVaq1PCmLvcdoODeaHpY)*~C?IT0 z1|{<;q;GrQ(~>7iC9B*&|K$r_$Zk}kR!Uchbi4HYdNPqj53HK9B5PMos>rg#%a>QJ zoirI2Exe5?Fe%}8PW2`gZ?rq&j`o7gFjFRsU3|cTiQ&{(X*r(sq8f@>fwARF|rkjo&a8 z7LDIJ)=(b&5N^Rb`slss=n#U{J$!K|y+S$kyWIO2RrRA~)h_jI4G@K^6=n+t)mwDE zcyg!!2W2$$bM(Z3`uFoWr*J-FLB?bhcRMkGvktWOGu^dXT^pT8xhWZEzXLo?oqW00 zTQ}6fhnuVGUD&hP(Bd|JQ_-=qCDRah*=H+YNaG2e*^r9cp$(jm_t>>Euq@b&|B%kV zU=a-0Fv7$-x21I=E1`Z$o`d&2>`lv4KlO^UREAlGlv|xw%(^2#-XO#kgisfd13Ku> z=vE+AZE+RRgnnwhVaPfv+N^p+$?gr7F$o#1PiI!xm1g1Q*H8XqB8laadbSg!GpmX} zHHS~S%L~~Oa+RTlkaP7}l_7WD2}OTG(fizW%|PxTP_jCg)5jjV)Qk!4tgM_y_~%gXCspNM4=5YJ;;-HF0fx# zv&O%plgnz>O6$7MLTamOWT#AbbJLex;JDG`%G>}a0&HRUUK?Nw2dqO*A*rKY)kU`8 zz;K2O>w&1`60akEr@fZX~g1tESm<076B>2e7NKji_B1tEC_j*cR74U8r-oF$+ z4Q?*Z>(;oVq-r%2gPZS?dW@a725c7!QjYsUO} zYRhWUrlQMgTEHfO%{ZJ5Y6SEi2>fGcVk}1k>h-9X4;2AP?*ZvILYfvK#bI+|K+=0a z`VmNCpq7SM#lwb>iFC#~%*$*Klx}vclQ2oF?XfuPYL<2V;!n(qYGzn>hg?T3bPo@Q z)Yy68_1KlJ;<=tDssbs03T<7kFrKh-7`2ySM^!iZtFD7u{h-m41CL0`x~Cj8Mx~`L zL4=WeNvY6Bl2W&+3~sf*Tk+*30F#3?u0sanO{?yv9;sjn2R zBO+QL4T3aINO}oKPj3NfToID$#_>YZOF;U$kp6%^7P!)?66@G0e>tu~@16FZtX4T& zY46Lz9y#s?46xzweRF^f4|piRh6mgeV8a7m6JWywUJFc;uE8lc{o*BXyRW!CdQ@&z z<|A$^?A>!)W$)oidZ_zKbXkqz0IQN!tz&q=I@MUP;Q{-~EZ_kr!gs?1R&4~g)i@Kx ztzH7Rm;McIm#Xk8$3bf2+b%-VOF*g@(s>b*mHY0bYT?;lCmsTop#3)CZLsf;+WgnJD0nE>!E&(VFoO)`wbg8$^{<4g`h5KQyZbrrceRaXTd9RjoYQX zNK`lzO;o%DZub+nvr4%&Q6;>n{^WxW;_RlNdI>@Q_yR$<0FO-QB!aStKV8L7vYG|{ zD{89DYY+027nSd2H8qN0Rn2VTHk71)p=#!Z?{zpZU5mr+GYS|lA?Aw}^OdDB8`Bk{ z$zlIKXdBKXOK&0QbOoI|O3-p2^dTR#A7`?H>LtYb?DGWOr6g!QYE@5!LsldBVy*jl zDKr%8RW%9!9@o2WLR{V`EgA;f%RtS^{O%QYhwprL3w44cSm6Y(46woqz6MwE%`tzr zUYfse&D4AtKHnR|ci~H6)Z!5Fi8w$>93)$ZGev3COGx8xO5>pvheDp#Q+3tDzk}=g z+PXZ`z76pr zfAtfHWiud6+bVkru}oGhheffN$!D&QrVnCseU{zB>+^Go6743+ejiOeR3VFb!lwbSqfW2TLdg00 z9O^}(?5W^-2~p4BdydlxX!ke9rshs5WO7j*w+VVyYkZU!B((@%wti*Rlrh$q6wc3~%hRVc;+ieRZ^zRmP3?D5KFv}` zJB-lf2b`3K*qE!m7cHX8ArEyL7II#gY9Fm z{xj$?+w=Z>b=MCpTG1G>*lT_EirfC zGg2;np-UZkR+y&-D((6CkvQdOe)qWfMCHe@#Ku6CY_*Aiy)mpZH|>u@=7T)FZAHfB zvE#osH%k1S=2;s582q0V3)wDt|Tw{m3ra#-f6|_4lvd zSXh-*ch_k7$-XePB({JjWaYEU6b|QZj3dgy!hIn97~6Wa9n$?@_TB})&Z64?-YLDL z(2{Ve4T`XpKsQinxJZLsx(nT~(FQhZXuLtZ)rbN?TZ!j@w5HLd>Go8iN4(&vqFC<* zZv|0Oz%+6|0)kYJK)fImHcCBWDT?;}{?^R1Z`o<9oQi<^rBC@pzgShMdxL=+p2Vba6iTDeC9(gabLpQg)r5%O5utAe;B!sYWf4;dC9N2+S3D_2<;~K+IjiOowOQ z%H~@t@7V2)$6m0%Z;LJ2%l!8q?N0qDcch#6jVU(Xfkj{<@yr8U)d3HX-aOzs(L}pb zU&gkc`VmGJ;q;ciu&`z=eA?$noZ z?_^M~OLsO_EhYRTchcugNp5z0XAgG%x$x+7Z~x{L@_#Y6Pd?=yP{cpw`jx3K9*5hP zLcBEn-L^t@*pFBFom47pT2ESc3i93I zwJv$J5JR`~FTfrfSddyO8fztg;ca5*98da0X!F+XUgL_dwaHJiiVf%2V}G;$n!(j z0A1l(LhgLBr)SkW{aydTZ@8esY>fA(4w|^K`5;$)i?ObggtsWfEIm>T#1v2`{rOGO z_EJooJWB5NbeYD9vzK@c;A?@J#$b116@)c6lsdTG*9L{RxNU!xVILuWVSnmifY^qC zaDh!GzFF>E)2DNR5G_6uiu+GwqHO_a78qocprxj^sja5AxufRrX14vB8jxdgEcLHY zIRN&gHLzb_U$`NKY1vnBU!yC&S0cE<|*-1}~ri$nOWKX~4bfY3nfa zIpf<6>8)OVZLi9GJ)NTJOhIEA@|>@1_0$?YAiY)V{`(TNE@)C(L!IoUHgG|GjEhA8rp1v0-s|F6Qo< zCYeAZoZHu+Ju10_Oe3_FMmZ`?9_nU;dLU5e3+fp_HAD=$?sJ@OFXq+w8;w`r`Udgb zaA4KkM`-DUTo=4t%X@85)zJ-NK&nI@S$v0sExv<;__h71QyF!qy0_hEEHgO#YLSP5 zCmP7}lKnYYQ4LBj@1S36V^9hJ#1P1kf=Wtlpc#p5p;C)91VSVekC9GY{`0MtNQO@LS!BSkXXtYj&Yg9XN2-<(YmeRDF1OlIFJT z^t)P&)wgoF$vl4-$TIjT*ho}cnR#5c*Va3>?*a#=Pa3@h9E;>eoD23!4I3TQQWyPf!ny4?_vLW zyCZJ$<09R8`C!%3GmQal*vwI;IRy@7Zrk9#{ylQb^HnAiB=z9~H7mYLea2gT^w;*9 z6_U2OB`^e&S1M_6FMWOBlOe>_ko(USrsgy5n&V;2!%QGOESsd%3;{(;v{4@y_oeZXPIf!ASm4uItFPx~wOBmmrR9@UrA&c*y+H zxlub;XFyzjeHWbZMG=)fH1lv}snQ@r(=wW*RJPYZT-GO6=jy;(Evg0N!ioG`1f+%a z7Yf`(&~ia{GJa-$47!EiRqqD(#}(8 zh(!z<$gH;5W@V#$IWDfeyjWpLE{-v`0 zTfa`FdvAI%h`TE=RC)vxbe8$`MEJyoR8o`@Qi_RkiuKSbZsm7GL9G{QSfYeLOR*rx zb;=i*X9eaJ28^47)e^USD`!pOhu+kWsxK0idXaks3TeL-M(t+k+!6Zis`?lyNW2yG zHR9pUTM@Ra>X)fSFTIR$k)3f0EzPHW39uc*I{vJ+Qc zWmk9R4ZeZ&3!8MR0SsF-gf80?i|?1o%UJP=#j}}b51(PHzaYWV?4L{H&_C}x*`m{K z2%lg&H8j|#QYLA3?t{oD-{WMd3-xD82)$&Es?VhN2r!JhR@g3U(NM4H`aLj*`FI3P z@QsbrfPS9USY6#Jx)ajx*j}?2_h@}OVZf;gA_*{{R9`!-fJ<|iM_{AcL^!;gq2L!%vAfveWy|v8F!3#j7LV#jZzm9UCv*hF^%V zXKOP*9zP_h@*#HtA$P-2(0E`_w6e^)8Bn@!6B4buORJ47f&~HFBn~nP+1F|*#r+H3 zs!XD5Mg31{jVP?En{&Nqu09@eCuz$FDdt5ro|1I_GG6E(O*+jGDCzuVym4>(i8?=> z#mz<;!O50E*-5`_@~ml`3u{_3cq1)W)VCRyt2|qKNw&(uY?dw*^QddD{2?7yPZqg=vSO}S-eTV${X7FJEi{&}}>3$l3ArL(oiguRr z{MzE?YLP~rloV)#PsIiZYRmmuzF+}WjNZy(2%11(ca?vu32AF-zhijY<+Lux%w_F zZQpr2UEkwo9yb;!r)#D5HI=sSAK`KQ^t^26>ib4%`wrUa{+qUQ^)-F7r2ih;>Gpj# z=pYQ5@z8U6S$(0o{ixoAGVfiSh8mZl^!ycm96Qs#ua&g#W1+d@ukXEM*Jom|!F?g06FHS|*KS4JBiZ5-Wt!T(Xl1=+ zs=uV4w2p4g3W&4T8>LOS3uk+Lk#iDpCg&vf+&lL5;bV}SS~Bt?h|D92-!5m6WdcNf z9jdP*S|7hm`gvH|djTF+G-yF#md*XjT>-G+wPJ6$7*ZA6N zXfDR1=-IZnP3_IHRVY9s`gaBTt6n6_`}Z|>JnQxjrD*SM#wY5|9rv%a6Ze69xNR>b zchJ8DeWGf6rViNV(Nf^|lJltYqh5eEvOSY5${Fci;ur`sknWjSADu&H{;os8s=bb% zeJ-vjvB@0I-Q|2uwWoXyXRPUC0hOq8rOXTG9!v0Q*&b-gZ=KXa=1xK?ehPWKjc zuDVFi20jdHzE}gs;Gq+&i*!u=Z@F-e+%yzF@W|ilCM0}U!t~`cNm~Tn^p7}WeWEf| z_Y88oKe*IYZRGAiP&<&e3a`#^G!lFoq~lbp0C?wv`c&PchlH9#jcSRNYA94?1CH`0 zk0Pw5x(j|`cC!(YmcsZP`}`qYVtS~KpK=#Clsga=;lPMHVPqPjQQCe`Jjq2PXs}+^ zih6Z4HB&$uc{l*a`L-EM3`lL^7|mZdu`i{uIBTV?hTaA6S_cW@HH^>f_36};^U`#JUm9s1a%%vH}b&0v0+$p(ESTE zABFzU=ngiq9@mQqFDMr#L_kvqXo8nHZ`H9KPogb+>|k7rr~5A8@2O?H=^mUW-YVd# znfZWU{Jr3l2Yl8CgTeaQ9^y_U*?y}Q#b}fqdL<3u%f!Mg4RbBE0Hui#)|Ms4|FY^t z1TZhj7PtDBz9Li90~1kSivTwmemW+TbZNXgJ!O2S8_9HP7IGxS&vEz2W)CV*rNEJu z;C0{>F&4a^?*zQW-ebZ$^#0M|`Th|1O8lSXPGE}RCP9i^9FtrZ(9+o&xbB(zJfLV! zsMNj+aPl+x=We;;JHjmm$I2SOF`pD!<*8{LB(u2Tz) z>yQ#+*-sT0sf2%G`k3_m@u>V-L0)X0G$y?JcR&xXAFyL{ygLd>!9+KUzqxGc&2rZS zJQ|}}uTp!~Mg2MY_?xja?b)DHEf6(6I=px8pgkkxX?5tN9l-nXJq4C42vhDVwO0qg z#=!4OKN}t1PR}phqVG87msY-XrCs2$=9dj)&j(9)h8|`!T;`p%vK7N#sjQm50@8P z^N<3N$-~ckI;s*pC|@xkC0-7z!4lrb9{&KyZWyyK+5d*nN#*IRHlDE9Y=j{zfHSiyo|s9{>X57uKKT{JhI2C8HyuQ2vT$aBtCxZ#VScNdBxy&+FHzu3eyKtLWKUH2;m> zo@;i8yxfWUUh($ez#W;B#3ku_7nuxLj{N4U*UZz5XTN`v+Fo4vjGkY;a$U?uz}(%v!N=Ls=N z`G38)-jC>??@!|===)DbpAr1AGx)Vg=Ei08g>!@Dm(?%EauW#H!QyEdl4NXbbiMj= zE{yD5cJua#MitGtSG?8lMkNI^EssAe)aH}JZisvMPo>+Gwl5`PRi}48_Wa(VvJoog z#iLz8%$-Sh&~N0o8?4S|{Y<)FYG0d*8i7LW;b4yn_*~w)BYftK?i|n(2BFRmt(RQP zpKnVgaIrzLBAzuq`8Bl@YHD9yi*((BbRDWm=uh`eq@`j!^QZf!L1~0rC8CV{3Wpj$-$UWyMB&~2M)=`V+OOw~;o%WyqoHdT|!M*>GPsyKves;00W>wXS zz;)>!Nglc3^&)gYRa2P42IT)m^fnT;xVx_PBg{H5Eh4h>e6AdS&vl>g^6#u}=&AvA zO~?-oHS&G_MdrA_$W9l0U4;x``5~8{F6cvxP&@qTf>RGOpX9G`@$T0zyQTPaLFgBa zrzEZU`$xjZa_Uh1@omF*neG7)9@)CqHAGZGAA$02B zU7BX-Ra3P)+2_O@#N%dg)Ofd!_%x%idjK197g>&;u62MdI!7QD=bOhWefWUV!}-r`_5M5w zlnCcPf5=g@ztfj^yKhRxfucGkw$$Z1jzklW@U^Ya9n2#K|1TGsmlvH9nYvu$$lc59 z^}e@1q%0pYG8{;2j5yBCzeVhqT4xPg$6Y-4@zr^G*bto$g@uaFw`J+u>g5HM(Y{Ag z%8&B8_WY=`%f=}pNPpLLYEXaImvwRbakkxaYpNES!WA0IcAd-W%%?0r{e?p?Q}Ji;fU64`*JEK z#qm^o`tB-7qLZqeU+46+s&Yr$wufe*)aGHGQUKrwC zK-@K4tRwSx=k_m7{LDr8B*${s@Ez>v)O_{<%G<&DkAm;Eqx%T<23BqEY&J>^!Av^a z+~(S6Xn664Vcwi^_wczxj=6p>)ff)B)^JE9bpj_Px}E@F?s||&0x%7EHjSb}Qqr=IVstzO#m=CXqA!sy%z((aV1Lwog_IBA*XWw7_ z+(zm3OO6u_ncH=4_;lT8EmN;A(v#id0c^92uQB(=5xG|TTvv0+ofW;Uz)BOA5^fA{*WShJD8WRoq5!4lfPvm0IISgMR!h(qOC+;J*ydfgWXXG2J z6YpnS4)+X?um}3}qi55l(}~g%s`pU{5^kA_J*F8A(I7b6IlZ;oKaV(H8js@Xig_om z%x5fKEmn$u;K7acy__Aq&l(ZjeiuBmJ!*gsrA9cvrhv01TIUHv)#IXw{A;vqBM!j=mS#G(YX^+ z$(k+&*&W_uy-B6^{T0NNO|Gf9d%)l^xrs?NOIg1!Z?v=C`zw`7Z}6FhhK~(kT)R&R zlT&}{D2e5xOe}xNqZHY0OC}k85NC@!))yWaUL|x%vEdY^u+#lZ8;4=0>FKh;(Oc`j za-}tQgU5?v3|X6^T#YZbzUYnLP+HHiZw;}g-s&?C-`E5zbLjgVBsP-Ax9+}A8_;z& z3k~$A$`ALt&VP$$A$^#s%L!{vbVVT%CJjFzk&vB!;z2eEUdH97)5zqG_?|y~528a9 z98y6IDV>#JWXnFY8!j1G5h3B9eLs-W`qV<1kDlM#ZHWCRwB$fkWD#J znAu3iL+eleryAGXMxIvBYM4J#twr2*B!qZ1Y2u#&VYn%kfjpv3hU6AM?@`0&gq=w^ zHuZU3DrEv13j_41SrdW2XGx=4$pJdqK>_LM+H9Amb`b2K%68s%L{-AAVEWjkN|Whc zTW#P}EuG1y-250CegkTExXnsct&9|RvnQ(AJe_0OOVfiF2A+)EMlC;IHn-^+E7l;cFNwC}&bFgguB zu$U?G<;a*;?cu^>|M3#zv4#U9MXUeYrdliWi899htfKt7pw++~K#m|)y?k0L>KE3t zbza%g8TO`_>;0s7M{ypA6tPJoe3SR7zG1O7aD)4l<&f4xSF#zc0O`%46bo144Dpe& zCn(wUM@m02@(lLCrN*8^l-^9wTSyEYz^+zMg9l=SG4SEPs!Nnrh741C>H*v1o(jXO z8KzTiaMziLAXvM|tN0&XFPC(^-cZu_1(lg+;R%>|xWJwksp z0OtZgBqTOM8Naapf^)-qI_X!eJhr*hYzzkb2P2ndD@(ESAPc`PWh4k|*M^dI>O*E) znoS4*68^+A0w5gMWPob}ftr=(6?xkeZFC9y+L z6|!Dq=;>OoV%bUi%oNrA(xcZW+Wu+RIwM9_Tm*UgAkX>{MiS zEzsou`9z`TyQTnuChOvESi%b}vo6eCXvDdPsGRVKds_R7U(QHU@67Sn9NPfebEivJ~=jgzDXHsxga2DnpSp5WkP6p z-;Y|ah=jv`VHiQg^$>Age^)rh+ZCsP{z1e6L#>#Idg)GBRm5{KcrNSFXrbHjC8O3m;kS7Rl%OF7AwETE|q8Q zB~x;T4&SVLd!uX>t5TSXr)OAiznIqg2sWF)jz-laB%;#2Szq&-K|>(B*)9qqpRVm^ zO`NZ!k`}RKV(#S{qdP)m>7?N%bznBDM!9n@Ws?2F@Y`5h7v_r6^-g4Oh>9G-;-*yE@A*gOL@Bt4-ZWcN`V~rGaB*!*|dN z&VzdoQAD$NrCbe1}-MxX2I7 zeO?w#nZQt1_$V&;4x%J&3HWxF;EPqzaK;bzh}j<3hhw>4FJ4`aU%CIQ*OyI7v8#v7 zc^6T`jUW@4{?ut5B`WsL&|Aj>My2q>SFnAGb*bkZpfHO zglQ84w@aYenwwLxl0*xUdbS`YAj%NWasIS1<~2pwu~j3v0}W7N9X?=zWLncFkW};G z10db-Ui_r9(J9&$L0W3Y$a;Al#?31G3X>STLy~r#ih;{|yCROmbDyqN@bilN2ayKs zl_n?>w+KHlYRf}f7D{&8HGHoH$X6F2t<^2E-mZQ?^I-^sWG7?TES$eVEqDLcrJOdr zna4unJ40exb!I|h#u6ja0JLNHE-gi}Uy?$jVWs);NM+z9!X%2mLfcg{&zeF+I{&Ph zlrrtABq^dHaaQFgRwG)A3Xs@p*A+g{4A1R)_C)K@Elss66*s7&T1zY@T7yAY*^t?8G>Y2AjJi#jzq~Plm1>@xzkq^r8NlsxI3meEv~eLJBYO5UqPe%Dpunw zDSyAD>@~b$mh-;o$TQZ`%|q^lOM>eO2hMF;t^`r!_Wn3oN`6wddN%;qUibcB(OCmP|! z4Deu#2p(&5oi&*$Xfq4YR_YMSOkU39I)%UE`O{aArvRw2L|#SmtxiDcB4a7j$BdhV zF0c*fjNaCnE2>h|X&w`jVLWS(0xNOXsuyj#gE#Y@M4jH>Az8qml5ybFlUv7lN23Z^ zYI~;DlUunId%uC}al)AENz^d0HxP;Tqy--$3cm<7R_)*}gc|a9)q2a1`N&K)V`s<% zg?$es(;lwhTNe}l3qCa55q*f4Xo8_kd%4O>6ncT~_d-D(!GrOVseg3X{0(iAsps@g zMa-@8VvZAn$&h}6rH3zd@IFpe;nhKUMPJgtR~4sEwshf4^h2_jaR2ktpB-XFc<=cd zUoUk2FOm<78KLpT^yTtlzUzCg>Gxd2|9_2M&u@Eni~h9Fhb!w(PcK(`Mg8d^y{e!;^;`Om z^ruG6c-8u;8~1vIO@y!_iGnFO|RvTJF}(Rrd*hQ zk?4_5v_O+@6tmqPL>wmg22GoZ5UJ|=4(UbdETS!;iZ?+|JV2s-@cIa>7w!-&{YZlFB z4lt4Z?Dj)3y`c101eficnG!OyeQHczDT%Ppg+5W2?%BUyJ{{G{i19$w#OKfw z_y9_0agYh}L+|}fB4TjxSvw2gc#q&I66NlMw-fm7?)KCYx^ap~Q>`8HZd{iO&6Ry+ zr|Qe3dt?wI&My=`6$ z#lQcT{5GEPwG;U5?)HuauNLv3;Xl#FOqq-rU;k)*<40L$H;k7t=s9M4#wh=M^XFLj zM)KY~C1zbPLf(&6eys65X8GMrubrjubDe)I`TK17|GCCL;t$gYrnK!me~i(;&z3*N zEWa52YqAL!d1~OtQ8Xp*%6zsMfwfo?i&+`TgHls~I6iqbx;~T{TYl|qe~(3O=4=~Ky1LE$?W4*V%RYiW^ zp6)?g6C987}mw^=2LaKhK_qWX&QYpRg{ zQ^on^@5<)md)a}^`@8C7VZjexzNzwwch?_{_wBC4&m0L~8fb+O(lv;bCI_7(~lBQdSrbS+jI1%cUyZZ!vFQ0U4Tz_z#1H&IodL6%=gRfdkG80 zqSEogxZu&)f<4&au+F=d$Sf_7`}OeTLL9ecK$eBNkL#Hy^u6yuF~9ARx7eBe69#HN zse{LyRIpDezN?C_KfkML=^K;}@T#a6Z*{q3b8ZB)^g0(^X{{xnQ%gFZsGrZ8{hS15>j9Dpg`sWh?2HdSydS1*7@D(>(=X$J?*?-$AWlNe zO|;W#Grmi*<#&f%YF~hbUVi-L<;evn_`x@-JTXzga6f_L(HzK_QsqAx8Pn=5;>zfA zo?(C7_gC%8`3)2QQ54D`MD(f_hB>};@5KrITO?ERJL!3O#Q7Y=h&r!9y|tRcDq+n? zsu^j$%P3cih@Ol-9#&VgSGgnnHA|wHQ*^(a2Rq9GfP=nGCWWBREA zesu(YpPIdR)HlUvnp0$M8jsV+e;|Lgu))l#rBg|&rIz?@xxc7ImHg?OhV;Es{uG5_ zs5A%~A02lsM?$WB?VG0l;QJN;;$&a5SK0Va8aF7w(B(sg6P%N`0(ohONs`;<=^Fjg z-nN4LrYVcm&P8UfXown02nrZ0Y29{==YJ8;a*K>`IBf3P53>(b%%;h+NnM~aVo(1$ z^ywrgVf_V0^W2|22GpO>_%Ma!Q85)hN9RZb6Y@>_QSr@itR;|ETD$a0yS!zBdq4+u__u> z0XGCA&4j=T={Bb_ZsZBGIs>N|w>befdAXz`+(bk1he!mWBPB$SI)qxpDT#7jT+V!lGWhE#_?r9*JEo~HKx)Wt}ai>naDvnQMsJ|AK*0)Cso>~aD7}GT z!CTzBuLOdCZE*iU0uZP}k+s$_L;cq;_KUea|E4oTskQVkcr2|UYj0{TlbO&afXSZ< z>P*@98+?2y6{@BXGSq*vA{yFur9b@q6n*NLL-RYDrpRv-M}t#5#z-4JZhJJ5l_;Ck zQ1N`>0F)h6%;2uRB??S(prnIRWPBtnXOCiC5FD;k5n6aNK#O^cu&@C03f8IEKm1R} zIf1--^M0DbZ{%_lqMm!ccyS1ZWulkuRZN`)o_@J5>TtvY0 z0#~mU7WGVMUpNS30WwVj>CQ{O5`nGKlEz_gLktBz=~3}HDnAR9R%jeWGxESq{Ou;> zN>^zAg!F0)@;EF4y*4Itr!^a8^tMIa((2BZpn?^kmn}|Bqtmn^jo4H*bX|IxArytc zC{xdDJ{os@57Q6NzP_}3U?y--K6Dxs>80f+7&pK7+o%hM@6Ev4#{H1WosN~MX0O1nyckILF#I5D zWaiZ?`&UullMY>9FisOmHJ@FUA{+Xce2v=nkvwn;WVw@cD8&kls}^mbQ{+*-&|#jSfQHK9FXo_ zRsT`mL69o`&Q$FGbBO)VIs2N!aeb~iTnkpsN*Q{{Ms9|n-jnXR7vAhiGE-@kviMB9 ztzWK=_-}dm9-#&_44QVYnqjK|mSQ|Hjhr7Ny72j~v(}cG=do%$ufFP}*wT|N1Mkk8 z-#s{g*+3O}-!Xxocg7a1Tv-2(1-yDE=q%{Y#NCfo`t|j1Wx{S9zMf%dU{Gk5)@pg% z;-1{!z|YI=4TQy-trk};eQ|CY`R3W`d~q%pm05CF?z{-QcL}?9xkqZO_$g#Lg*wg~ zZr1u)Ehr!;+%D1_da)sRkr2E%La^Q=_-+cfDV`8Cx8gbrZYBhXm)4+Y*H4E=M!O_l z$HLw;t9-xWx3j*{3U_E>)_<~bAzA`4Pl-(Q#8KkhtNcf|u}LhWH*<%8b6Xg{#FJgY zt`qKNYgN-k=TcHHo?Z($BxSfDhV(>zQytQ;WJ}4LpmKElGTEj zNq4@=Yr`kTa(t}PQ*djnic!Nud}VSU8yhE?Mdzd{+HsO4oXGe&v1%!SoyfH{SzEPq zaV`~#)LLLd3(c+&1&T!I0aK?DstL} zr{79y`t1{!6GvhDke_B7kU4X@tB0@EE1?^nKdxtW2J4wkKP|Gjy_|<)i`yr11Q2x+ssNLV0)dBa~6 z1R4St&gd*|^HF6D`JAHJFSbteMRSW(uAOp!D<;6!J4*?$Smh2VE++{y40{(i+@)CT%fTBk5S52Vi*_N^;dgpePrEZPTbeu(8+QD1M@RrQC4 z>oQt|d|l3^=6i)Xpbfb{@luNvgC%+T>(D|9?Ixe{2La-$YF501_(p!hK%%%kYE~>K zVK~l@fLdn7s#`Hkt+`uD)7C5PYxy+DotFB$VxiJ)q@{s5p=QNfl~LbD{fTw28+Lc5h@u3-xOj&+Dpcx_->n)R^48ITW=q zAR=JL$gwK7a?Cu3j+JBhG)Odj$~fpWe86}z-6(8DF@gNFqKmP%03be~& z_xHDi)H_3}&~cAi>M#M}x6_+*>D)`0_}i;;(~BR~)9rBAC5SPN+1q|gIKZd)+Y6=U zIR0As``38>*LePaV?5v6Uo=8z{J3;Hcm1YpJim8SQSL`?FU`G3xr@j1L&dOfEX#ek za%(&%fterAr@b+Z+*3oUjptWHsS84?jpvz`x_ibm>l5bX8qLeKnxzkmRIj$lgmQr6-SCdXg_aIh3Acr6q1>p-DC7H7R|B<4^n@!|e2a z{;t<7g?-x1VpX=9tO+~6ou{)Pf{yMp^$Ljf6}%FY&l7>Vj~~$SQFB* z#XwF`N)aS=;$a1FEq^Y2F-q&V1?U^csmLnQns^|WDDR7 zFz3oJa-5*Q66nVZ*+z24-E~hJ!pBhdSl%2Y-)i zkbd1lt$Eao5mvHLbf5eWIE8@_7V*Vsd3vZPS#7fjw$@@x5(NxagVHi;Go2H{RyDXu zt9*}EYG0emf>242Ri&BooD{rP!Lzlv*)5Z9(&{n{+k%yo`C5WReKAi)G>T&tpwHI( zK3inqlxW+e?aFwC(y%J{;EL3=Nc}cXi~FS7z#^UZAQX3Zna_ZZrj@GggIGxYx1(W zlyOid-BV&;)p(~j<;##zUEI&6_Y(BfZ1==MGj+zPQ^E4;c@Zar192y5>=Ll5ONP%Yo+0XJJ{Gp;#~m) zUICBHmGJOc*rr%Z&V@jiOkF^-Ah{cA4C(;)k^f!pz)))p0j%01leC(Q)o4|HpGpoe zQq`^PqHFt24vM-j9_rIt)jMsXIzLPV>1-kV_#lOahOTap2PKniMSn8YA!-K<{sk><&(TjY6NvHW2CsN zXHSh$%qb@**_CI>H$u99??-65JPzp*3@sTTjQSNmKrGPhB@75Ft}@4~<&EE&go!3_ z&!pj*RAd%rHNOE;J^?sPs@?@_ zZL_RJ*4&=H^rU&G))@U8yzDt#bc4r1cm9SX?~cCr%%`^S9UOP|AyiK@;)3YE68ZI; zjk_QDVI+P2w$Su?Ft*XCt+ry34L+2fX8xgd>E4O;H>xLkenKSVOVMX>Jx4LlRU^Kq z=>=enznjPPXOQoD#2{8tu^i%=WnQ{!1h65XgElK6bmCS zKTQt=>K;A=nt{Ghx2qy>K^=m6&X2nw4InS=$Kx>T1R9SDvKnnT+6PRw;YY z=-Lquqhr#YVog;9V7hKqxyEDJ!g*A zo`%ZpvHr919x4%4MBcP|GE+vwBWw0jw;>mdORN(Lt!;I^QETVrX6+zji#sN2_q^gs zyS&3`e}~}`_{$Ved@bxSWN*G_O&>GOvw%yxyG0SvX#*Ssk7;r*%hKk4h5afFiJ+U( zVCz}2L&4+4v+@GeUWLihaIkzZuFZ|5o-sc!Fm2R-@I>BUBJOu&NE+ezkOkwMxnP&P z1rxAy+d;OBA%UMb`X_GDtkPpSc?9wkXGl?g_kAqef|D@)+s2da7-#{|z-I*ZaEBe| z;YGtL50CkGK%=_n4k>`dEN_(X{L`^h5#xRW&^CIM{tHW&B*|W7vqQ+gk@VH*y8=}@ z!sTC(DL(n{K(4G?-@v`r<6g*E?N(R zn0SAX>Qx)g7Ko6M{(J%F2_7v`o)@n!eJ@d3>JL)MAEUVs)#NPOW)pk=h0rT%_kq-m%lZhE`Qc|ZQ?^(Cf(r` zybC1_d*|2k?d;UieKtGIX86yB_GsSZZ?VCt5^3FefoW35PkofO8Pwzpz<`oE`X?oT zB5FkbMkae~zGmc`{G!|l{r`y((x6a2UOeC12>0c^{!d9S^uSE|{{-76s;K|_{b#if zC_(8(8D48bz-I1f`j!tzpZfty7$`5)RKHM_Fq$Xr{axvIlAcsZm#J1XyLAGBw1tAE zXz(otQuLL{pwsCqH&T|1zjC8bW=OkeBOReL{Zxa^(2Ep0PLH@rFt3R|k55sz#Ug*+PUz_W11ImKDd)>Ke$-uuj%?VnR7AssY$*} zx9UZiwJY^43(t1td2M*ME6-PlXS?#Ookf+mE6)Sr*{(eIg=f3+JQ$ws%CinjsJvZy zUKgJ2%Jb^*Y*(H;!n0j@ZVAtJ<+)GI!}Z6TeNeA&Apu_qf8%`^-tq^}S?%iRcKiI8 zR#IP9PH8`(7l5H&aG%5S7G75YN7%!cBCaTHfoy1Lw;T69%d zeT1b6FE^{MV*lu}rrpL|J^Y?P!Xae_7X-u#|LF{{>?6^g6qe#hjj-F7rx7DXN*4a6 zxK4WVySI=X5KmGRZzf%0OW0WODFVKY6b4-C2EU++1q3V^1Q^3B{5LzO&R&{$V-&QL zb9v(gext$Hn42E;&G7k*>Y|=MgKXCGy74{#c6>h6#D-kK5ZFlh8fDcQtX4O=&rbi= z^}=qbFl1NRTX*)$G-|~<4aPcA{juSPwY8Y1OyHhYh>^$ehefP3yq*WIvPANkhDY+* zU41~wdakqY?S^>GYFUzCQdM941z!nAwzZe0y!{B|@fzHNi?<)0Fwd{x3X8yZsF|NS z^QmoG1hUa;eIM84;1_{YJcz#afIx=C+}2Y@TLglCn-vW5+~$J@;R^?|zGqTcWd2Bt zZ2k7&uF?`dxUqM3T=LSnK zHP;G964Ort?p5zIDfk++_}7>jCoi-GohqPT6x=~E43=x$*j z#S=~>G=`(UjMXS7js2x$$1G$!EnH_oB)_NQxzpPN(>?p!`o3DdQ>TLQ-l`KPypONd zvG51Q>fYFiRZC`?@8?Wy(a%KrNZbZiGyP%3nX%k(p5J#z{aUSn!G3uR{MYBk#vvMS z&~iZZGnyKS(`sGD<-TFZyHBSTr!%JZl?qHY_gkMnCx;(L(3Be8QCq70()kSZcq|o> zBHwZwPje`4pB2t$|F6I0v*Ub~Pwp;)lG~7bCZfHr@OQWIchEvQ+^e3RER%M-m;qLi zaV#qq`VCIQ__qXmV~(ch%>85eBV>S7&6k7Qa~2V2(y^7KlsI z=?yb3d-WAJesJ#RR70ldvF2L?%F!SyY)I17!w1Nb@Rm46ES=7)gzWcy-hPj*tn=6N z(m#951{SCtW@7wxUpFy6o6Aj1J2CgZ6TA%ejmMKSJN;sxC!;(pmSXNK%TvNXW}mRB zMJ!<7-!h``)2c2^tHH_MOr6^Y`<$9%qXEv+9T}3*$)5&ndcGYKyw53bG^cF*_2l#( z)oL~L#^CGl|B2=53JlI{^oOsp%@i~2=q>!2Uthn7-kN+Yy*2ehPx`p31~a+lWYw2EJCuWdro5DcfFgkeMr1cIspM7oF;P|Rh~|lU?Q4EvahGRSb}}8C$~;%Xi23od>yY;oY|WE_R}0F@LG*PbDY7 z#rLd(7{9YFY2HB2J`GLo^r^#a3h9ta^V!|B`}}~K8g?kxr+d28a{(fmw^3<3hb1?2 zSkiGwlJgWP+Sj#=TzpK{F4?AxTdC)s=Cy!YM@`wLTDRy}dPtS7#oV!u_N&D@5RxQk z!5(A#nO5L13ao|~F}@U^mRTUkW%;*SlSe)OE&8r6rEh{qqi;_$_&2pkJa+a~(-d1r zXsO@Rwb@!VzmD4>YmoB9d2;r&W(${o`@}StyLjMox4-DA%D>~HMC~}^JMQi_Wk1y_ zTBP9Urq*;%c3YvW41(?mTx7dbXUlMPw&_y`h0GaD)(s$>BwMXJ?G|M_OVedjt2?yT zD7-1vM&n{z4Ke&MPr%SOd<;KiO0H}^OIEQr{(y~3B?w-fX^nHw^ZjEuDY;hDeJ|VE zA40cGeaIdEurHI(z(`2ek;DD!rU;r_&MvnB#w@k5+I``C^;U{=&(ziE-hVCgLyCQ| zm8rSbEOZO#FB&NKcisXDCx*vb_fB6pp~996$+WS~eN4GLD@8?X-3OI8A(vBOcVLZj zgr0F1F{cTH@a9-rZ+^w5bKFqCT_c?JRd>KenKIQ2>=^4Bt&bM;bX9Y4_mQzXHB0C# zj7#c@t*I-jmL8EqM+3}tco67&rB_tt9yMT)&~3!P%|L*gQgt~9W(1GBBW|`~rX#=p zGwT1XuH(z8jOs1vo;6xLv6uiH!?3GP7`^XNVKhY;O)-Mvi_IW~ zm@w5cz_~cxO64w>)*Dx~w@8!6;|uTsZ-)$zA?^xz+>CsOqR)UJBCA;vOJm496CCxM z$lql0L3sCf{TIJ*cvdf5&*#FCT{DVx_#sfYBRPFDQ+ih&+8eQCZzp^$A4$m=&QLZ|7C_F)v2GqD_#N`^3 zvAv!y={E&Jh+4Jo={H;6J|je5`b2AvGe4zr=Upv&GFrPb$TrKW17E~GV1!_r(v9xsfXw_4Xmjn zospe>`L(8PeU6LQq$W1__*_r>Gstj!Nwy+mC)o%8ly z%yHy?LhjEIfIao#r;d>mND}1B<`17KuhMD07!osOzh1u#ywaQO>+YH_n1r`690Ac> zZL6CmE;fHcv#c0wVNaJPmxVpq1}@c@sD#O^4&|tz&)*Rj?QAUq? zG18^Ut0rNIyc^ymj zBk(Dja9@0bwP*9Ne0c&e-zMC57O8<`WaYt_e5cQ7<2N;sJ~7p> zgxzjabXs#b2KsC?yV3odl?-J!r36uARi9+IcQ5{5$;nN*w^ORsJ^oqIu3w|AKa941 zz3^?ln6_T*s(o8GSYK@5t+kc;%CgnDffj4q`rPFHRHiET5fEEX!&`ILME$TbwMmo2 zIe`VpkYR|d1+&l}5+d}6Qo?wnKa_}4)lPhbcDKjvM(}k)LY`x5(gi}s-K6hm!r={u z3ok}~Ca+;5psTC)wCs}50sNrg)|w=vyZe-w&FbRL`>iho7o#Agd#bslG0W)+#`-c) zst)NtMBOI+H`C6B;SVr6$q{$ooZ@R5wS4YJW9x4R1H5DxE?Xgp^h zBmrmGZM{6rw!@)s#=&m(=_&uiX*Q^e%Ic+S<+m+PO zy~0i=>pl&t86iirSd)__LyCP|SJ+l7PoqCiv#|bjTVrC~t*7E>} zYb!+hK+K1qsN>Gw)@iK~r|*Prkv(7s_}6^vj(_?F?1=tVf&QO(A<%z7y_X0qWJ_tW z&{Mxra@#*I3%%g!AMCR>&g#;gPgi~5NI#f3DeebU%@6z1om=Ml{$ZTaNfVI=vSaP1 z(N-G`v05ZXBbIZdg)B^)`cM+Kr+?;@w>I~niLpq2CEbVhk~b!l8vW_vZ%Pj%E%1S? zS3*W+81|O+4|=boKI97?R;%il>HezvRa`bcHnnFk{qDie*G!D1H$FDY{hA#o@l#q5 zlY*0sHmF{~at9+OTd^}<_vxa8D(CW0d~o-h-(o&^EhVuq%G^SYHdArES~cHFrRjIy z8&&!4dt-Ne`ozNrG2?uZ*AgD`4W@;%b85$+aNzY=sxlnh2k}+OyQMJ8K)&9pX#d`x z@!E=>poW1x!-C1#t~sAgHx70 zHerJ#=FvY{_SZrfxhcyot3M^SL`PK=BH;u4ovcI5+KY!64en(g#Jt>8vYbp8b=(HD zd80#{=b_C5(xnD%5;mrjW4S)-S^q=(Ksn5B+GjXRVHnP4t+25EEWmR{V2A(_TBe6h zhgaK%q;^(})O2g3yAHP@YOsg|Oc2btjDk84yYB*h|yg(SL}jH^biZ?imzP_kKUQSL##NxG?@ z@krT@iSPf;Ur%5t%G=tk*iq+0BHjTlaovwjpgPxCd+p{6;b*EGko)Ep?gh`*z(!lSe| za+L4pQQ?0Z>0tfwtl=B$Ft#jGpfnKZU8`NQTBE!MKblj_C-XpZke^CIIPlaN#iRmX zqqm1gJ7$68OhKDjfM!R)Ohw|Q&Q=|79Hm~LQbuRs?QZV;U(>Q(9+Grsp2 z0UxcL3^ zrw`VA;NHd#%dVWixXHu2Qt%Feg6=B@kAXhw`HQCr`zE@=oN=y3TUauYmoMgjb%(@N zLUN`-U1V|Ql6XhP+=RWncO-Lk#J?r}lQH-EJ$;U{(Qo`>{B9s^Vo8_@_IHPyxU}uF zVwR5Jm*@Y^DEZ6J`{ebtLAg(?hdvrsEPxR5-Mbbq>5?nyz|we0{paQ5B?W&tq{4vc z$5r}_suK}2ZZDiN^=OI?KVja6C_!mKKu9QtNh_1?DbWuK^kApRJ%pQ=uYj(U)-*c3 zEgoXXOP%goctDSF$*Xw2XwbKWYpc{BTkL^Q>y1hA*2!~xDbOlCHSvzK{EMVsq}2p| zG}|3ntrwB^*@F5G)z=XzX67-DYZ$PF3{(g^VqDjfm^%XFS^Fp0z`53ZnWKGaKe@H3 zp8S52>TA3yNh$Y%GQHBs9Vp$VirRCx_&G`P%Sa5`)nUE+2|o)%6V|)<3m4=URH;(~ zA=<9{2Ndd)mjkKS2)(Em-;Jw=dB1VXnUQt8Oh62*Ov zI4s~F0x$=?J1yWD$>0{fXe(}xtV1P7P3J_-0t1k=C5|Gjh1FmYPM{Ry(5b|LL3A}s zo^@mBFRBXblSbj~=ME|;ijQm|ZwjYlXM2>9?vmu-V-0Q-oc3~jk1&G z8|DT;kXBB2RvOrY)xBDV6~bXh{yhIT^gcT@0!GOon5mS%)#gj z1r=~3vPF5zul9Cg8WV7g2-<1N&3hIK!srn>z zg(PuFS0p2~gZ?l%2$NW8^hC`A880R2xQt%3sQX*p!ErAXZLlCn^J*OVl5!MeO|m=V z32#4Wchr}5ml6;}+}RM(0f8=o*cn+hquJ5)z46n7`00_FY!l0_(If5Vs-4k_TV&l$ z_}%i--Gbl$>G`ARe7%n_DJ{bmjoIlFKEeWeNgQmKc|ZZWmzjL5#V3X8Mw{I4e@-ih5bT)0>j4pt$mE zm@L0tJE54}{fWYKZ*T*w4+z+b4FsGO3P%OLyTuUrC}|*|3kbZ}5I92!;D#G>8AE{8 zS#IC*+H=dq!K~dvW#9jUT5H>T;rlvhIqmK&RYL$>3{w~9EBNb*sDdZL;geR`l}np9 ze4w@msG~Js$Lm5J2!n90gF0H=V;tV1jz!cVKjg!;6kOrgspRt;{ox9NX%&_SQ-vzO zVqPFC>gBVbY<&8&nMFf|B*;Rc;~+r`Pfa*c1w2f3lHhfx;#nEL;o@btAS` z_|yAbwJ%=*heHjAKuGOl3V>Y!fC?z>oYL{|#;&|!zy|t36F+)`JY3;V0kPs9RCD0p z&AQTY1NL04TmMQ6gYcTI?%_|fs~z+U)Aa`=labTb5Hxob)hHG&*u>m?d|_l<4?8tp zrlIfKu<$BQ=}`#@^`!ckA2c9;UT!b!vQ$xeUhZw3yLK`nfAnGp=Ogws*h7WGH!MKh z{hZtK=jC?pyh+yFRzx9s3T1qEoHtn)`b~0xLzk}Rv1(cC7NoQK;SO$`^yUwH3NdjS zlZ#p4ldG+at?Nw3^ux8YF&|?@6jB9tqR>oD4fJa`+(EiTQnkS@p-`*)_TxT2MAW~9 z^=N4)yCdeAC2z;)VN&=8j_CFGF5k6Y-|=~v*BaE4*0i}tIIR_(kF;^YIZE<*Pxv%` z%%U^mjy1EZ8ZMG`YegcG+ubpM7$NHp5)k|hi7yg>wC3t{`fC|!`loTb%&sA9$nx7& zKjPd(p8&tf`TA_&8#7Q}i~C<<>K4g8FT8JF7RlBt`K*932Or)lsxS93K~8&=s{-Vt zSj8q2ASd0`9&)t9b&!{NR=uC%!c+%I8gTe5f7RgixP@g_f}=tVoJ z5s!vv$YDI2U(I__K71c?Q4+=L@8gn3*PmNS9){a)GwVaxV&O~^7+F>V=*#qmfU zY!=G|D#nA(9K;Q{Y7hoPaZo9xU;mTEBWY8x1e#12i10o4q&sh|cAcK-%(sVW9Ct=( zq-m%d%bhKrX>_&tGKWrqh5Qcfv~bMQNY*L}7=tys*Rdg>%yE$mN@-0YfSRhjj3jRc zYT34HpqB9$C>eeTP>mGBZ=!o$>7Zas8E8pE?{s5nx14bm$q> z+>J+CKHFvCjkda^3`l2)zL!?AKMkE|uDdnZuxX1m(te6f_0|UZJLFeXM5`QE2`Zm$ zT+>;;BS8MzXiFKmm?2BgL}hvgdI+lX`ud4}6Po;Wmfse9GBI}+f8IWf&#;tZKG7Yu zH@e%rw}5TQQzlXpJiY_gQ|`ZHFS72+<5}|lTkjv`z4aF?z@jR6GNe2I4XIhPU}Jvl z$}>e99Y;XxT>cwlz^9zApCbwSXp_5|81PbL5-d`Y4%6xj-7(_Xm&a=3ZkSLgm1if> z1NeHs?|VjhZ~bMN5HuKpEifpXH=F|a5Nsh#3fnm4_*DGsH zh!*^hRlm=9e8_1i6e{DcK+jX(IyOC5p3_jtcfbc@ix}b!LNa2AO6?iI$rF+)oFNR7 z~nR~_u4q`)q_WAoSX=Ilnee{Sv{`I>PbFc={PHo^ZtGa{&)lpcm!ES zpZ8Id_kr)DwgLKb(6Wc)Y5u@k2tvU}Od;nWCAQ=ikb4j+Y_{C;PB+(o_YXLo43TGh zIL(&LI`X+oScw{ckzEH70!0A2g+QOo;f4HJQP|y9C{ipSH9n!(Mt9n4)HEB8`r)q8&7(!S zi~C8IaSB(5HN6eQgy!l75Q(Pe{Cv)Eu&EsLYH$A3SmpR}Khcn=6hAIWcmTCB58TTi z#)siBUie=b4Su{bd`5%mabXqA@Ux}Wsl_d+94~Db%NR z%uaXa9aBT9^1Dl?<)_{e{xue#G4FqH!aa6cfOYD@*yj%BYEJu+heKTc6vl%Mo(VK{ zc>kYCh3O;8EiDLp(f}mVerAI<3Mef55s$`35dQ`HeeYkqugDYmS3DGZB8TsL&v-v3 zk*q9KrxDwM&WY&f`OjVcUh{Ss;Wm};(?CB_&FJ2$JM3NWj-&-NZ5Ib8-RIjh6KqIA zZd0NWq7oReF7)>9I5H=$)BDJN!1D$@R}EA$05s&z^~DVkHFXqr?IV+Iumk9jzXx)) z;N{H%j3CKm;WwZ4mJPk!G(m-f^zyfQi5$~V^ITy=jg_B7Ho6vTQMxe-CvghAqvqEZ{?V8$a4s zBUfpLOjxW%F2Ou2Uzxvn{;`Zdq(k2EE3+Go!Xl;or2H}iGj7M7|0a%P?jZm2$E`zY zqEWj=RXl|}QSZ@3(BE}0E@iw4xmwX0S;=wmz3gRpu68$vqQ;lLuhJ*ZudZ3qY5f81a4(YZs8$ApVVeH5khBp`4n_!W{uGLKmE7jQtwo&W`&!TSQUIJ(BxK*$K zvyWQQs)ttHHSpOAD$W3foZ`dfx2yFg{~MGelY2BjH0=iZ^Fm$#@R=c2tGhZ?WK^iL z4yP#77u*4dYR#T^s|>M2gNZ{_bPB1vqmN@pz?{t(vz6hw!L zIm7`(=bru}10Wn==G-@@z9&}Ap76fOoL9vmL?BQhRb-GO$pGbv3Q~hx0lKt$E8vM1 zGaFyF|LJv<) zaZ_Hbc`Xfcz<^*oioB{Y|6BhzIPBd4G+iS(X+{j-)ulI_GxH-?A29I86{^~}nmWYH zs>C>3KW12p`me#gHo%MfkpZfS3Y|`VGMM{;Momv7i3K{074Ik+ScLp-%Ae5>@@Ij5 zSmNWVvPNDG=4%qZa-Rf)SkA0{M#C1L9gL}xA@2^hgR%u`%Ixz4G&1G$VX>T_>pFqD6xobmXf+WssiVXQ{I}rLU`uS$ETw2Ye2;( zSRdnqpKpM^Y*E5ld>PdZKP*j-hHj?u>lyV!>J;v`aiuKBty!(#SW7K_$=%T*kogaC z^fqnq{RZ)ff0cTIb9=~_?4-oIwSSfx6dr(w5t;|xOO_cvYk9Fwnv{=0V_8_#Qpf1> z#QGN!O5{W~t_uDCL_YWoT{7Ul%0^)>GOy+Jk+_JSklXYKdi>%cPmeIH=(ri@wb2rj zAm#CHVSi219-5{E-L(j-*7U#5zp@IqsTFzu937!%{4|Q>@TgqPpO5pSR$oK@{3uLh z^GlyUuIi&?nSn8GEQ1;8%Zts()y>5pvH8!(qw^V+;vK6gR!LHKCb%2i+xa$%gmP3} zuwrQZE386c{C5q&k3n%*i-l?(kNsU==2s$Wy*q+9H5zt44W!rf=@r{dJ(AOFWZjAK zn=CMc9d@|&*x~wWYMTdZ4!7u1#GK+o-l01y!v%UrNvt)L1)TX;y9fE^;F+=9AhQYzgnlEkoUz-4@)t(mJwYs)Y zDkF6ytyW~*eb`^b?xA-~PvJ$Q`wXn@#{p%jwn$@?76X33mny~Uj5B|LA}~e_TQY_9 zd8=Rr?BjXRq2mEq*4}GM+gmsLYdNES@ZWy zp6_qj75*y}%nt{){33qP`-4Y&Us`{4$Tt4^OUr8+=~-8li$zNRGH$nxWz8{4`mJs_*jB z`pz0peLFk8b~gVw#@i0(t013V`?pB223Z!Zms`a44eI2i?u`5lGxfQbz7op|FglFF zV=cvfPXCPy-gj_-+@0|1#}BVVZL13nw3V_=C#Eh)RA20MS~r#$hwpUAt&jt1OyY*@;>H_%3!(>qH~(ODnFyl7 z@covmpR$r>k=~KcqRWKD$L~_2yri?k8A%8zP)Uh1stME>jxi#$)P z1kVP# zycf^u)yVh~W4yP1Vq_XI-*rdn#wPfV2_GRl(drk+l~ynP5K`}7uf0cWGi3Bgl9>ed z$2*H1;#42s%bjBI7(P?F^_kv+O3(WU-z0tNzWN*p^_F%Hed10=6iuh<&Bmc3-3IChUzP?RU+6EL{iq z8!9m`{@Uj1QNO43KIVU0d=5g8Rx>G;#WUWu?>+6%9=hJtTUpnd%{(V-nX5yK5GH1P zTj#B18Q8daNRvx#x|TIGi*Bs++2%gm4>P#iGkER^OoV0q>FtM**_}%c zd4d$T)Hiu&_-mU~lu`NXUi2wz%Wmec^6#DP;6L8aCG9mI^HsF?vA-9<T!-OG!gE6Jam&MVz;FlrIw6c$c3XC%Jk->b8kff-^CW{N#5!$j^Tmd+I#(b4=?s|gU9 zDour%k~x%F(`HUhn>KfLhVL&Xl>{!dDSN;n-GlrS@;n)Vjw zZ<5F+D{ac>?&jjo=d>HS?eZ+6ZRLGjug`XB_k3-^Q%joq9--gCFt(YlOcu-;*34 z{EGO0-WK;>zKd+#_^v18VG&Ly4>jq zuoyT&6=q**5shK>0kH?y(ED%@>sWUrVZD?F6q&s#*kEiV-8wqM&ZfXQ1dW(q3uqx$ zG+x0EUJB#G8W=BlXqhp(4((t&hrVn~X)Bw`%Ep|HG>uN92bhGR+2F1Trmlo&=+ zuw`v=Z{s`$iGDI;@=7%d7qZ8hwG!^PFV}0^?l$*d?$}6mpKZ0|wUjK`9;M{++ttt= z%-2ERn_D#BX(nnBGjVs`eA28_ z)II9Y=GW07c7QqRkj~%rrF(vx?s-oOvD??u0^dEaYfJaMraj%$yP2f^&IkAn7rfu) ze{fod@p-59uD%=H)9J{Q?&ZaacDrOBb?9r_odwkIIjvP+e*k9hIkoOPV2i`c5ZT*E zY)$vRju)>5Zm+kuTNUitsA_b%{p7Udp)Qd+uPN>XSc=t1^Cpj#DLuLL~8 zR0nr+k>M zZ!^7%u=vR#zW#Gm91o<_&REbN`976B)X%HsEOwsci~;D#qh$6CvpDTl#B{vF{oFEB;U*fKXfy)_%1 z`2;-@;ve80p>mIiNKxg^BgflWV&5>zR?c~)2E`)U8r`BXSb>|im;=7Xn+JwUEy&|xI422bFx^fw zD743!mhK3We}rZ0Nq4MPqXlHd#k2vSu5=4vhHwsf?im~h_&N`5kXtY)ohvZt@##Ti zwvdHwe${YvFHd#8e_JmL`!$rjYJOhLTs)H!K{+O}KpR#|p=sy5Hmq9-mkX|4acIO+ zrTrs4%_IXH+?KQw8Q7C{7=yb6QB;P6G^kq0iY&6^H+c^+OknV1{_vj|w}s~!Ubv+1 zM0GsL%H)Cbk%Kc^3n%CL!_V9!`>EofEPj%nQc)=OD*xB#?>2v{R8|oO&Wl!}6j#9| zY4;6;3QI07g}G8l2{zoGc$VXM!U(C65dxq^=?62E||?#3sCSsAONy z#;vlb(s=1RuU~&Us$vI!m+|+0{%+?lu!r`4{9n`O?$fL2)67dXecprzMuk2*Us{#) z_qA;t-W_=ULP~(1%`zI55r`rm<&o%y(wx80#IGsV@fp zU@Exu?KSnER;f4LOQqftn9FA_ikzs-|4^IR7*)qds+rk5 zxAayZL;zj;m?%?vfcRfqynIz!eB`#5z$a(%_YVH@{C%CjGQT`^^ms#cm6lAa(uLpJ zJw5)L^#0)bw&J26rfTVNv@-9B9-jq5nI13MUZ%%G7B6}veB}QXJziN|rTNpU)OOGA z>2WXV%kqlzC6|_%|Sw>2bogGCl6Ic+sQDN6t!%+7#@`qDADE*)nI|TyaOy7OR2$Fcw5Sbg(*M&O@yE;& zKTGx2ucl6FyHE0`@$3iuS$nN{v=d!Ox(riEI}Zi@27RZOSPlC&m&Y9;X{pxQ`C+XC z*K;b2v?RY3X<%(LM^+%?!ww~Yb#c$b{Hr)tO^?MzKavJmRu4$0^lIRY?t^Gp`y-4c zQki|kehq7P5;3)r9|5(*x;=R9xk`6uZCr!mK39$dsP0*5Si2DnJ zJz1NXh&02`epG^5QZc8jR(qem^qPGDF3f1dKxD+pT041$c2&{d7yEkd2hq8E4gH6S z*uNJQ?k;WLmr_ij+uQnH4t=IB-8UkY_NfFp%1!OJZzW89UnY{hZ-%LRMbzT;&1Oa_ zEQ^cCCM#p=pOJqr4-q;N*)N#2|Z6tBl zLlIwcDq6Euf`dzg>n_4juEPrY`TGKY|HWT4CZPZPUB0Mi8R`BmU;Zv%_B1R^lP?dy zs7k&Z|H4}N^5#3I$(MgUsVeoZ7u2RsDRs4cdAu6-J=0Pjs??G%Zy{AA@LbzBf_%9v z#7b1T7e%p)C_fT+E^e`ZmoI3ya~$-|PTAyv zxuxwNx7a+PVZ&xYN$vDg-wX>E_bGKsvE5V87f@a!NWt{F8%W6jsU?DhQD2ZAQH81? zCG^72+&IMpq(lTM?jh;$(P~Iddf{hoNR0tfQv|8eAnAOxO4VX|;b$%|^P2;d7*M{S zDa^NZ$ZoG=>HZ}(8EY=3$4kE~mDcy7;ormG5@rS$^QSp*SwCfc1rz>BYD5+>j1KxK zF5)ERnnuK0jiGz#H(=wk!RP}g)b^L3VDc*+Qd(GAP};BI3tDFEk_qvH!GpHpkeiJ4CBX2D~zsC?Yb z&!%HoUf=rb)@R_PX!^a|^_kB<5m9EY^^vE#K7Sp&OMe;RX zDtI&)tZNIzVxiuL>fMVZi|8zf0b4_yWg#(iFs;{4swYM6AluWObVd0OPq1F=aDmyu zbK|yj1M9X8oNUs7L?K?M+~wQh+%z20P9I=>R;MBs+Tp-pqD6f`~~8 zfQ|{0OuA3pECS7R)ZwI7Tt@R-2u8`7w@DJmGxXeJ2&<@z=kz^(L<)R3O)LVfF_cFj)S-Z9SeEt-j==sf?QGW z{;=L^0yWaRgavddSiPY`nn8d+tX-8WQS7oOh-61bw)e1ix|ad~87Do04F{i-3?%eA zz&$&^kh!TA>^RV}*q(A9UgRgMkUjVc9D=~QIn71qt2h+7)a-sgK$dS?mNqnvfbyR zbE;6{QYOl!;NXfP3oziiRkI#_vNm*5#X<122V z4eFeq9rNyF@YPQGmnj4*V!^ka>ob8U{Z#l*og|UTc-w9CcP~WI z_ch_GX{Pixsl0%kG=MtxCc3*L+$K}>+X|I0?q2%<5Qs5uF8Ymy?h6}<#1L(fL7beb z&KzvhAg9G))mc_Tg*k;Bv<7q5yF0$>(SrPIo4fc@da){IbP0LefHe|eWJu9Q%B;fT zqJd>N<~-|zlIc@2>8nPWTks{RbC(9dDFK$b(^}fSr{K#=ib!;Vwaq>HrY5m8p=qdQ z6YqAOsd?52a&VRr-BzzH9nZDb62g&%e-dRogpoj-rDo!k9 zjmEn*GVf}6eOIgKdn~;B#$D@|3ixj6_&y%sSvuY)!uy!zH?ib9hnhS}Y>A-qNGN2K z&@W|U;pf?-(5tZA&LZCCNrnWIccEWED8X=t4fw8sth3cEe0SW(u2b9w>kO(%qt!%< zh_pd>)H5YFMgh?VBl{FU7_$j5}bU4YsZ+43kPk9R>)+hU>%ortm&U=CVdjKnWICqWb`z~^j8Yqn=TsZxA?PDsccYSSMcb9>FMDxs zey=E{E)~dhiiEQb)6wc-pe?WxR)CFw;uHYo+%Nk9poS~GQ28=Kw?|~{r9dIlXvl^J zFD@z`18D|OKM~2-D~WIAz+*@6M-12w>I!I;R)XyC_M8<*_vS}#n* z^VX}ud6FXBV{56|1uEW#&zv~9%k4VOm+t$d@6b}ij9&g;EFo#1i#9@g;UI38kZ@mL z2iS8x#S0Xnx+kp^0TDAp8o08NbrlfnQ}AfeGlddQ!uRb$K)$EiYlpYKANSaZlX}JCFTdz@cL+d@6zF(b2{Fvek7Azmj_kDt| z{)o1g($lc=-S!MSnr$P2zijJ|A60V|EFrEb`MwQNj)wk^^JuxY`COka=lW*IrNk6M zneN>e?ho#pnadPzP(4=W$J+9zcdy8gw&qX28q9`BMg95pRAK8-VT6RP3AZyUW|gPb zMCl*2nov+ECC{2_hc$`OY|1yHjh9FRTEptIB!C}$@+f9Q+D%!h? z8O(EY?7``hoH{+n4w^1f@9?R2DJb}jIYA)5m^}`@Y56eblXX+GhQ_`T-Wrzoi8Clb zfjdJL%%7X3fX>nz$zc%led_UjqxJdI+k6u}t+nv-w$=jF((avNp-!1k;Rj8oxM>1Cl#jQBSGf?*jouOP8m4N~N0p1hecHBDK(S4>12RTQbE;eyp+cL|PFcEv*QHe-Z*z zM`IB`G>N~)Qx{2YqO?|qKJ^**{6kc&FqLD}5gjE>I1b(Jd-x4rb9zsP_lLuKqE&-J zEAj+4HWh`4?Qx$}ZsK|bQk`BSe6K>@RZG2l9URhPQ6P%u41V z(-ET@9N7DSEN;smP`;a&FF9JMNl9Sqv*UW`=0R@wV%{o?0`j`aq}Y;Xkt-&`aZ=3U zR!-Vz&97`kMmAL?5Bi+k_(<5qxUzY25&4*ekQqdlJU`Qjm_>=$>=yH3e)M5}<-_EH zyvAK+IJmhSO-U$$WqXme6&1rSbOpDUXbGyg=;lqw*7>Wy&YSYh0j)$ZdXroj3-=iM;kc6RI_7MTw5R5_5G2|6zKgb?gifB?}ht@}wC1`DY z9Sm*TOBgt0bFh!3EW^X$jcYi$JtQ68lH3jP`^~oX}v@OzkQqp<4 z+ww;$#Gv!aSX<#E%_@xN#x@$eEx$4j2P9-+Jv&K5i-B!@#RhBLI(eee@kHqO<_|`6 zyf7?mw1h_1_)XH&=7Ga$q--OlI|;k7$eYklN+>4Wm9ff!;~JkOH$n>TA96a6+`5Zm zla-Mk_&qi{LWV8wJ-a+$lqx!r`(h%>L^+6NqXF1lydOW8%+s!ui}|~xe1FXsJ`nD& z`J`c}i5ofT8~O>N8}qKmLAaO9H8`mVOKLUhc5gEUQjA3J&AIC~fL2r+>Z?lk$(rT& zXXTJPW%Xct{{&U_I)TjX#X(-T^?!`tI_J+%+>E7_FEZ*E)he07O1e*btfD2bC(Bd> zc5bC(SaKVg-(Q(Fp8ezD#d&PggD zA?03#g|YO7S{yDH4#oXF4qvk{odSo<)LPN2(7~Swv{91H6R6%5cM2a72-IZ(k81QN z)pn;Dl#U%>Y)b-Sz-bZ2uL{_j%b5F!j~*s^#PSVO+6blfs<(FFa-Dy+4{!=HyUNK&?8%>N5k5)WmKyx%@b#}XTfJ& zIqy);vC5G;vz|vQR_`L8iMmu}J(C?+Vuw$-<}34c)K)eIj1zH^noHf~$nEMryOx(yb(JAdjEcS+pv zxzw#ofYEDD&Mz=*}w>2oTn*Iv|NHRHkT_I~N|^SEU;WEZTQEj8>H(+TVD$beE- zoD_^jIXda9m%tYH-r##LQr?X-E>Xp^sNz|`e3tlOmQqtusSW)DAXDCLHUqtuC?V)A zn*%*~G}uPId>c(<7`9jy!0?BMf#EX)hO=OjEEjNo>78>FK>hFVR8Dy4sR;V}1pVIk zNA+i_yqV$yHqF9j-CQus$^MKT--As?V9ycQ)d6f^qP|fCjb?(hP25JBty%zpy2d9) z#`nYVW}oUrLwvTHw}ppRJ!CQ?ORqljnp@s}(nkd*TlL!T#WAHw0{Gcx#bwgPu;;lV zq4w6NM1HJqa#SAu8%OilP=9(_=KH^pCK{)mk2ksg+QnY39~#N^*SybD#!rkp@vB&L zCm(5+L8WP?>D{T8hHh2<$9S4B{f%tyPDxWLshM@c59s<{Sa8VukFCpZzBE&qe_W^W z^Zc<)aUdg*FHU&QhgLNiLkZ+>u?p*l`tf7*T*b-jL&6?puU!#N}zSQmxx+wV7k__3#MDSk<@fE{ui=B<*ngaRCz4eqA*oDV)DKS?FFJV28hZ^j8tb&fWw)vl zZol`6y@G1G69*jSiY7BZ5ATWa{r>Q7Oko`u83Ff7A!E`3|4S*&wB;8oWW)a1G4xOL z&=pNK-;f>2Gm!iN233jTP0hUux0mm47~Ym<3w@d$^xM;;e9||KI(3XdqwZl;jOdmZ zI?W6GV5uxvDIs|~b8qI|@)oe`T@Y*?F~*)9ZaE_d!|M=>#CAV|ty-oB4Zt8DMoV8K z&k)1OAcfT)P(j8S>)&kEkCC}=w&M}hzFwn${sV!eYKWw7V^K>_Mn-kY==_>s-_l`# zub9WrS!m{M&96Y`W>5FzK-OfI_rh|&Fu8A{g94A5?E=yL=OuCO! zAx(xm1NDvnjGxHuCsXI6zO*)RFb*zzZ`g`uRSa-9K#W_7{|XEPyGOr#*y}u|)O!&OP`>yF%GE^@$c&)IotO zT+@GftPG)?djm>HG)$T%fI&i9`uj}Jl~VsUMWE5pD_C1!**8|t$iEg^%p>e4guK^V zL@TO*BA{|BWOhX>O4~iCS+|<5yi{-?s!*6kDV`M3EDusm>9Q7Iy;D4T5xr;&3cXf^ za=1UOb)id8O)79IbUzi+_^&&CP`~=cnWAVP=|8+=^u3k_0g~&$M#pZ9>>|K45jZrxQ)(FQf98!K#OfokZon(MFZi z$!=!ajWW5W9OdazHeN;vkR>99+SbOLar>sk)*f0!FK`a8gr#(EdrZj>6>Qd;o{d~A zohAUC2H?HZfhYAXY2U64z`HyN`ZmX1j;PXmB=a)D5zrI`wQqzZ`w^efHd{1Ie8>9FGSXzwavYJ!n92(-L6#&f1#Rkax|`k{b`Hd6Ien(xT! zz&G=z@au#|ZbgXPiipU))e!b8Vxq(#-%6S?sJ6Doub9XtVC!oE=`#b;#NsPH9J_!5&}$EvQ@L&RnG*lIxN z^)hKr9m~AHgqh%US-1GXuoxg<+*vzsIL1rpob+jTb%2%<5t4%DO~JDeck<5=^?s@) zY57A!Bd#JuTt!60z3d07*ap9H58P3GgGLrI5na0hxtor6i(L| z9W^-oiC2gdNzbRLE}^UWnm@pf^bM)u-Gj`&pzUERB|Q&AwhX z9BK>dsf-uCr-;ejYJR5P&I}}~71%#c9D}oe$ZX%j*C*YFsr8cm{1We)UK3!JiMCS-M};Q2>jasFBOMb8~(}WZ&yYVE!kRxK}a9qEooUB0w}9O z#%-)X2A-+e<$loOmQBY#(yk5v8T4ogzydu^j$l{O<7YpciymGd(6K+4h$K|TCe7Y# zvx3t}wJHA7@RsV)b<}$; zL|9ckiIY)pFL=Q!)J!ZBj*`or$V!xFEGW^!UhU$d*UiV;u&i70kwr`69VM716ynzS zp;wWfL&OcHLG}Vy+g>7_=H5_`xQGo)Nn_(9uhkj8UGBk*-wtxN=kICH-z6M`s1P3` zM0UjI*%&S9E#HYIUgbN{s4)K#^TB8%*QCCa%UKxtYF*##MfC<7Ic#t~O=7L+9V6X? zukj>}DH2^qVclxHp?&dEvTfL42sgkWu!9uh8uxKYEK06ZUfOdPAEsmh&lJ~s7cnAj zZ80isO(@Npgh+vOZwirOA+@S~qZiL-H@CS_h?B6%<{{&$(RzJH`skpJDin)Phi# zp-{}Qg|uUMA5~b-5Q6%kN6@!WU0t=~#|sIONTgf2d{pc|PGZK;2MJ(o#%dm(d!PIE z#SE7G*|69t03a34HXv0Usir<32tR0{_waSEyWCecP6{C-#ZX0CSVPOKq)6}-rui%Z z^+pe%H(G890q8amK&`is)yD8XNa$K`P02*|qv(y9Sk zt|LIpmCFrvOuFMj6EISR*<&;oG9SN4>7U`4Hl_1Ynorfp-|O{2eCG%%g-$NgD3o3_X-608Nam@PH8O~U{hjc#zZX!7Ns66 zr~QQsEutR{QS(a2iB1XkZL_8cPhRF&JHLmpP~QE{IQk)ojLU>_;N-jU#ER(ewfta`d| z%n3Y*sbWHClF;?o&=RfC`!<-GS>$~a5wh+3C!&i?g40zI=nsY;>HuYMw;zzI+R$SZ}XpZsQC8u zu9zk1*u_FQ`h{AiYQ-G0zAjak^Q`tLYD?p=+$Mn4$d?J%Xu{jCqqF(#Emn~ zxL_aaJ8W!SuJ0O|2)U+amiqpDmzDZg*4HF*@uucp)q8t70h3aYzkSHad6jk7j>x;h z_EfN4wZNZmYsdxFv(fQvrIK-PIqjTL>Y^DB%IqJW|{oIe< zYqqK?``q56!n9KVmQep4V7`lr?QmZ=%6E9@6X*9dq+`@yyg9*Nqa|DKlTBLtPw<&) zq#F6$M0KcIN8G)n!{{(Z=AGDwkV%~sWDj{Tjp@cSOy|0G|rJ+*%$$qYyJ^=a*Y-e1xF zSzmASo1wq2!9)aIX7WGn|GQA}eQtl`Z=k?6?uI*_NE$P9qKbjdB3vVTu*U%mG=8};DgY6mnHDVO2f`={4hpC6%hO>}Wf91H!RFhgdb=_rF#7%roD_WV4FD?fiAy;vxE4xlbj1$DuFRygY&T#1p!Z zW!!CKEM(!CC>uXGCBnVN$UnmY@twZcF}Tz^AZmEm83F2f9g-xp!gTr3y_51P&Jb4e z)4M2Hm#^%7d(EKNWK~@z-QA35<+@C|Gd081sSB#wge!S&^`j+(Fr0-i+&Ud!?nj!2 z@1*q_oQ;*_udg>C!Imz{|PzzN6jH!h;H-wk+#H|pM`-OXa zjjuvNP#6U4M`bHBy?taR0{C`Xy|#n6FS3=`XZTOA&G`Kgqkx+^U(yr? z#^t)H_8}fAmlJ6&f*?lCA%mQLeBQc_$K3_MHSU;%L~*XD8Rm+b(T2tjZiVe=t@~4BZ@aRIhR) zma?*a`j0Z|fD04~%MoeE+vxR)1`Ztj%NQjn6k^*2R0(voNR zmaN=7>{~3G$sgQolCZ3g8eM29lP(9iU!-F4$e6M6UQVA;Qqqr!2!xVa#*D?KuQwE} z{`=j(P+(31m6Iw=RrZICTNZZ|gFC5$o5bqCw0wjda9T?}MycY0Wq}?R1?~9=Kgw1f zE#pV*DEKmo{p^uL2|lwYg_gl(M8qrKo(B@b=Z%NcM(NWnqtHWG+fX*A2Nx>(f3 zKPHh8)bbI=!$A}?C1Y%QkT25B!ept4hx7{CTSuE!hL36b?`MU`%qv36eMJwmjfZ0t zIj-3YPHh?)&ASqHB&T|rd5USdhH;F%L}7Nq^;_nL{N%P&oC(R&o&SS$lDW72l?*b% zF&g2lSyU*}&gSpQDq}17*cVtMu7n9O2`K2II9k3@jMkLNA3XE;kYwcWyc_$pjqvWn z)~!MXX6PXYup9K2v%KkBc8K<28>nd%o_A4cn!#J3Z_%*ew@!~ORL2XG+EFM(+o|2a zJQK5P``8197>kK2kk;SSM@zDw%smS~ch4BUt6?oRWvd%=*@!$CKAzM z9TC}R3p@4j@H9U~p_MbQUp{JIg3`iKX#)UZ0Hf{Yy&VlT!7X)-IN1usZVfEJa5sp}eDuRplJk%$I12>B zMbr>k8TJDGvZY6A#M8amDqTfiB7RLWvI7L5M(c#dM@&q`#mLbV?6cu`lw?C=eZz9i7*VI7_`me~;3+xp}QrrOM0GuiF>q;@Sv`Ve~RE3JakZl5C@cYZO{`$9GuNbHNT6_KrA>lOp?E4M98TQ$NZ=qqZ98p7R^;ZW9{I&M{Z&A!# z_U75_vwutbXG0J+q4!ltJz>oeW}j;=5Rf_ z^rPLT-;3|a7njT9j_{8xulOvUE>_J|rZkq_F}p zqMrxgZVd1!SUC;}ujL%IgCi|KezGd|(hys0po`K|Ju<13y|ce0 zl^!&r^iP%jWjFScL8Ri4O~LbcPaz?(p|Dc;T~-yoTkoFlmp4bebjJKJ$lQ4d**8q5 z#0#cSr#t4OXcjyTtT@ikj}Vabc`TCY~Fu^;aQc(uvB+PZ>~YDW55$0s{* za7@&S`zE2)GooPDJuA#~p?zQsYYH0C#x7$ZF=Nn7;BWQ&`l|lz+gpbSxxdIyv6`cN zBUfoOQF|xdmI^P4KYkOk#)U@>e}GRAH8uJRx7ue4NCAqoO2tYCsBbe+K^0(VLY0s` zE#uDkHE8iI5q*Pk)S3Fq)08rXq;C{qV&y_>J3RFt%jBoaH;YnJs8GL=EI{=2<+~9# zX3J<%{|D{q%I0kJ$_O8bOe;7%j*P&eKfayH$(Px7-hJVv< z8Wy)UAIvYQ`8}_B3BU83En>b!!~|bf20+zhmpqJ<1mrBaa$-H?_rm6X;I|fvMPs}H z3X~QmWjaL+D*0qHv5LMOL$bmYvgOK5pvDyp;R4+$Xp9ZgQy zDwdSZh}P?N4_qZ7sL_qD8F%ku|C*Bppfgj{c$*;!miA~*?*S;XoE1^$513B5&jbhw zaVqs;(JtlajE+b^TuzzQ?VOUR&IZbf?`pDTk)^@(%;B4q849PfN_i) zP<^6JN_5kO^E9p%iy4dDXpzf$JnLDl-S63K44jzYsET@UOH|!_zpQzRve%Y;0D+o zfGyRzMXTrWwsBI0oMQotDq2q;b`4#F#<#L2;4JNhwp1!kUE0`Kzq3(Wo#z zxHT5JahPYIjD&Cf_FgFJ9ac)2*4M8iE~%B?+{w>dz?Y4KKHpH3&)y6E0K$AR>GQQ% zFqzrTx{cBomwxzdZUkGpdrFsNlXUC143qUf z>82>@*L+e2yL3+dC5`ygaf8J{CCv8^5i~UR>#bpV|0os@R-bzWi_Xkjrnpg&D{irZ z&v=HhjQ`|*w12(OK**-E20H_66o6tv8T0)~3#!}bG!J+e6fC!q61!99)wYpRxZfKe zrBenw1;8D|f|mk!@6SUHVd)NGt$gZy+KL)>fkii1jQSdm`5Nkt8cvdz8s2}8)v(h5 zZd7Eb;iX4~8tRjKVu95#Nex>J3)CrHeO1gTW4=FYL3Ir;@_?HJG2%icb{E#y)=(+j z5x#~AgUztg-zb2^q5}7epM@NT%CnzF4OhwXT1fZM{lq39GU+Snd?ocpC3W5jl{~=X z(qo*rQIVmNz5fs@sZZ`uU&$sa88<|lsAL@2UCNm6@3x@2l0A2O{@_Eol1l8ZLM#KK zEYw>R`MfIyCT-40X_SfnqyW-6^>IN|Nkip~BdO$jHPI;aTjwdC2U+Kbrx*e3syFHx z2Lkmx*`u?``piZ}uDHdz;U>7k(9tLN%=y-s!X;+)q&sLyv^b!Q98zgPbv@UQc`o5Y zxt>bw-uq+#oUzWgu~U&};s_7yT?Ts>0J8#EEGlqE{ZF8bp>hemY3kFO$OJk1mp5D9 z9aEoEvxdk6uCPdF0386E)Y!$M0(U)9jm|egiIbLKg4#?{o0t;8NfuPsX3KV~%>@0W zTpJ~JoBvW<8>Mhpzr_mo=B04}juT7a3fx%_BN|iECha!3{w@_(EGlrvdc;OSY|IcF z1+g&@>okn|a~4!1_CAkTf)8cHl-MPvA*K}W;ci3B+YCoQEG~e>q5^mGLsbmuHuV~< zpL*@*VOUQVIQ#=DQ}C+w@2d3T9(N^$>}7frb;lmQ*Xd1g{06l562A4pyY@c4@$wCo z^q*zh&R6)mjlXa5_Z@}o=z4&^gP8}O!r!I*nZ6$Rx5+w#f{u)hw&KrQm$f@JTHF(7 zGti-3;~B*wjB8SRGK117(VJ+lYMpv6dkpiO5n6x5&q&M#6Nc1m#T!}Ff0&v~x`S}v zl(u`A>9w+^PrxGW-$d1&G(N(`-`pW^MYzIu^@y>0*Htr?TeH@)4GHf*RK#DiwHIvX z;D>mbe@Oo+OV4z!*11IUo4ujec4SQzy_}@VzSC=vy3;-AF<*Zf0OWgd@%dIIdG>5) zAmhk_6uRY)PxbtCp0WzSByQ8ymHo+Ml0o>8t9ezG#&qbpf0x9^9C) zyLuqR{dusQ^41aOa}%TM=eE!TzH^QcWDM8+4sRib4`&kit2uHn4);570JwX2+A!Nr zUD6QIHc(Ci#JN$QWCt&dmY6(uP~}}Dag@pa8(OI1$1Er1t9F8S!`f#b#chqsM#Mx}VRmMBO(0w)IRQ68cQG0%r_0l)cOdxR?cAd*` zf&B-ygHo#ppYRIhHH#C=@1?^r99>gS!fU(%sC*u$JgLZ((Z-3c$P+2r?e9Kls`wnf z*Wsu)JlhO->ECsdk+kHx)w+cAn!3_^JwEtgnDUI5$DpcYU0g;}>*J8$vni(q%3KCE zEp(mMJLx))gjyu+DBk=X#*K&a#rN}`llk;3s>4oPqY{HH~aCJGA0EK<_S(`P|3j47V;@R1d*w4DP@5tBE}G(wUD$; z|8XkY{{_}W=9XQ{B4%$BHOlt3^8WB)3BZP%S8!R&u6e5u-Il(yeqH;W?vxMB*I{3; zD7}oXHoPu%?m&9kK>7~Yet2E_4y>1MKz#|7VeqxUmFHv;uYtZ_Jo)4;os{H#EdS>y z(FrF4HecMaUuiSH^Ge?U$dD}%qz5sRj;CbMbIl2}tfPmumnH$1I zi0R|ysN1=4_v7W5HJN)7Emow9L!*T6M)1G1T)BZ)Sbt0eLoYL#1v^P-$%}l_;-?+U zLcEMeN}p5+8`^u}djHP%h%I}SUyP!b@0Ks)E`u0O7~wr;kk=jM#a8oIBxm6W@$Xk*@f zq5D$s`cUvDg+=eno+)}I)*W?hy<|n?E+6&>lyO^?#J*^K_TQ?vQzXkTeWUZNL-?+G zLFqv2^Hc1pqv0yGg8R)5-A3b#1bjvbRX@G!I2gUV&zDre=vLRYwm-l+`I2u~C;uja zA98NM(1*o~3JsAF75E-Lxj&z3^{Jeae9hF4Yx*?(IibE9cP|Y*7#J&b``P>%?Cy&l z?t2J#$x>eXI0^LKC|%O|Qq>Cc`f7f^JXKEI5faZ(5X<5gE`23U^RvDj| zdmaB&`xQ&D2Z zyx(ei(j5l_lqR7LyG9X96B(s?W@&LPeX{cAC8O=tlE*7KOEgyru`6AAn!o+!Ssz_3 zp+OgEjJuSiJ3mQ!h`(30e5GUE>ILL$0S{(q?u|5isqCID`5yS;t@qU%{VKFqIdjwB z8titI)p8p&x>taFXoH&jwJ0TyKYqjyjqbRRa0dM=_~^W6!P;wl&|FSM(hD8)nsLJ% zoe*)vjQs%tAD{Btka7k(qR+n3_W{tZqVL@FbFa=sv~w?_%_2<8oAqk#7iIc6mPjnI zAzPu>mh5cpSNZ<_;6JoydXB+}p5F^GTi||#tYxxVOh;3Nv{eYF5MGt>PVH^wnIi{4`yDN_gs$B_!P&w>0fecs7{`+%(8!WxDV@p|oVW|K{acQdQ)q z&-~BI%#|p6FFzB0JlyiFN-I?)Y=wTupdrqrPv!eL?4p?YeeU*li(8|%eoFfPIc>Ye z&)DlRn7ra1TtMb45)eZD9_xd29O&TQK zRiP-=W|}-E@yQigQDyHgk1y0G>0THh%&5=Y_{ehbg_`jC!+h z8*garOg1dPD9b)|KDG0lj$@(&#=+eAw<5mZDUjFrd_LWdJvEm(|nUH5~G^MATMRx$BfGi zhfq^{KBx4Pk*#D9sG7uRVxk$(u-Oig^Uy_8ZAGjI?i89zlT4YqG#9Ed z7peWJ-`xIte5c}O_0=v;25Z$2wM90iS$wYkiu8Lbf4ASWWo8?K zz+FM7Pz`4i(90qTPM$`qE+&FwhR825qk zL6O`UZ5M>~ReMseWmJKBmS_snIIUbcOhKA|ze zx`rb9X7MlPR`SBUwtRhC;iX`?B1R}Q!0{Xib#^T^{Q8qwq$>8!$lr6AfoX)lQN|v)gda&Moc-I2Z32XFYJUN?Gv1sD54=!K<=8Hm+h0?GsoXbPM*gBAYg767Kw*A=F zeqeC8B&R#FqB0J;e4fCyQ{-zz@Cv0F_J%M#Jh*TE>heu}+vsk_bK1j<6=R3+9M^Rm-1!P z9w0>bXj@KSuth7sleO*Sd){i>R^ow49v#%K@=E@;CF+oY^E$U75bCo4e{(TS1)`!}TDh+jL=p?Zhp>y&R<%x*iML z9ZScO)wz1i2kI)0X;I9G0XKJixk^#6ak2&=WFI8mHiFc7H)eC@Zb4A0sX8l(Kdrin;}! z>r@J3@wlG&F&&8lmBd)aI!uzHs*(2P+2~23q8G(zWvAxG+g#OaxbZe+CD@g>8Q-^) zeo^I_Ws1TJSlA~=eIxfx$}`w2yj{BXw#TP= zrP4@!ac5W><7=%y#!*kIrjzPJFbvv(76aRdjgntw=Eh*$!_eD9sIzJ&Jr%VyU{g>6 z>yD9+B(uP9ybdRjjcF#wcns5|ahsBZWBbU8TQH~Bxt0?tpW)m!94F3}Ef(_`%MqqF zZBMHlW{7FWDQ3Hv6*4DMxwaQz|MXiyAv{kc3_8VP8TY>bdb$?BaJ=633n zkXc$F{o+9i`+I>@nd>r7Y|q&lN-0~8^jky7+hQtMN6u?ta&tzND0Fm7>p}8~inaC! z(7r(P>w<()~Y|XNvxfdYr5Z@qC9c|X6B)M>_kO`*G+TMxVIg#*N@puY@nm|4pvf)$$FY_Z#`b2;2W*95v zPt*vQxC1g0bOVge#znF1a8JyZy0}( z%bYxR)rsa}_EnEcQK06rOt13N}0DEOTKaIaqCwkZv9z$PE^Z|2Bk~e zbUB^0Va(Su;cJP79!q5+FbEB+%y`*#3P!Xa4WVdtANhzi!;c7j-9LROb$=T?8s!f; z9%mN_V0Pe#Os~6TjGH8L-W7>UTM;PjgK+B zUwIoEZI@QV;+2gJi|gHI4z{+$<&v803d~N0I%%M7{a28I*}H}A&3I^9#dlHgB&ATW z4?Oc7a)^qHtlOv>4v;$__$W}^`YFEvRUD|!$vAlu4&h)qY5td!B;Q2x3|owp>knsI zu41v=PTSkwyj?~ zxVXyILU$IKO57H%)8ai*P9AIMKg~K_JF2IAaEt2&{s$~rP?1rA$C+#!&B*JBl{R8N zas5LgY7j;DKg{`*?@owe2oJuDZ89=ojEYLQdR; zjq(&mqYK{yX1&7f#U8V;d%`{2V>W1*4OTF-3&wXECiSb~ZjUZn8v+WgtymOp?vS5T z?n9L&u-f$^ZyyRUVw7MCU6l7ebiC4|8i=R)zj^6=*F$9$a1Zb`rc{}rfS(mFZFyi8 z0PANfFQMdzLBgPN?zTL@t53S$;5EKC>37=DSBsxo$8GuXEC6P~&l`{=|fitneLN3!?qQe1Z>=2E|T$+?XR^^zO32y6m?83wVL=6zFvS zm|OS*F9_1R!biUnWm`dKEJocZ&S+R}>OsTuVz0e1Bo*0=R_y3@x3ZNHUMLpF_(Dv4 z#YmPXcjK;wKE8=^5hnWVemShf>r80Q|9#bg-A(HMp!QGqt498SsHsN;vAnH11so)( zz%d#n4XTM`cirOsM21ltbS4mclZZV;9|wTW=oV5;Q6PbJl)G6#lws#Js z?*yUtJ9Ve%CBNK{_d9e__Z@i1_IIeLn=KfsUnR}HQE2)?=PlW2s#w$Kb-oxHYb} z4TLTF9b@#C$$YzGwOl)f51taq1dsDkO4$mBHvKf z2y=uf!Y;xLVK-qGM0!G}>H6Kmx^c2#`{F+|j zUjU>Iz5t@%=93|8E}ItTc{gmCif`YN6K3hpm1>HPi0tZhUiR&+-Ep<6ANwdk@ard!pTf;*so}0 z+4J)Uvw}QdHvH-XVD|JKQjcZwmG#~|y#tR%Gb8K)?oPN`I3_e}OHi_{&q5+*fkrX+ zFF4XF1=ZG^_|4NZ%(SnE^{!Y(>re^ULP{$oQ|7iAsHI z)6c(l_VmzC?EqJw9SirpH;Enrsl8c$1V2E)a4~Dous_4DE3h+TL`_KAWIM^=gSrx{ zg5gU-U*hFSv`<6dpzGKgk9-c)Ol5gR{o)>FSjV99(Pzpb>Vd-pr=?I2MF5sHr3xSBr3 z&p^Q+;Vxd#!(q7}T>+ zO%Br2HO4Y|v7cYBtQKG8_NOVKySx1X-^w(vxWrf`G@2JBz@v9m$~PNjnR8T%C8w>7 zt@$CUZ)^Fy^gZHJ@h@tTQI2NUY5~~f^lED_-5Mh{snHoDMEx0K21{Cg3~6Pw;6EFn6KB^mca<}T6NDGX5_JZOomI)CLjweY@T zeh^>xa-VI@na{JFKTZ4XcKo5~!gz7b_oLPeZ5H|Sgzr~`?{U%7D!`9=XkS@m(LPW+ z^!lv3Jq#$cxh;^|k4BpF?({{`8DRnUHHKN1#aBXw3@e?PAmXudF6_O!dF6qt%*P@H zNwr(ouw#k(z2hE8$}i8Rz@t+_r0O5)p5`}N@%0T7cAJ+uATpM3u*-{;PJ;DI2fF9k zjK6m4jGEFIqgv>DUUKuSs%x8j!Ex%fXx`e4V`Ubii!1y}f>xb1yI9$`ndy?>sFNu! zxUYZ-6CR7ZjA&B`EK254Ac}r)-`eIedokr>LvssY#Dki;=&}pwVJUM;IT2EJiOn-1 zrA>90A>mXM9YOa#!HE1|)^-hAq6yBjB`_+XqCBgHGvy)t;pn#lked3e3JJKn zF9t)lZBB}E$>RK}uln>z1U3HG@06Sl*L;KNq=3|zYvwl`RC<=++9wFsDg28|zqyVf z%3Z0EAy~TWrb^@%nq5NEYHocSG(Erigj08`5Q^np zi4sR8MO)9V_m_JYm#!2}=T+epwrkM|+_&%WHQf=4vaqJ8g$)NyohsG=uzjVnnq5=b zm;nFrt(D47HIi^jJjIUQH3rh}KXaFcawIy0xrH_5JX>ogwG3HZ#n$^&#X!@Og^Ym! znQo8F4SA4xb2Tzo8rD7wQcKlqPD;AJYnyofhAZr-I{m7R0wF%X*n4XfD7cpu#t9N(7a{?YB}aXvGmAB_#IeU$0U zIHUepL*u-L#xwDuJtvOuECzyh8_{W{_YY|4p?$Qi$Zo3>F4D~U>zY}AT{G(k8*WZN z80Pi|!&KYTB5Pe~1v$ptgDY5uNZ+i~H`CpgXdb`l-N188VQPvUDji}-+3|Xq19c78 z5b-0W-|hs#)r-SdsS&D`EN$S7VbOh@qisu*>(#?+^#f@TJMZ0%evq;8-c+>6#m6l* zk>s_nnmGaO0l~+t6(i%l&ePUxKjHP!M*ChqQgN}o+A`Z$G>Q4CrJ<{kn&u0#gKcN`x+#VG!QK!!IDJV$CFvNZQ;0#b#2Y3$%u8} zFKvuCo&?8N5@^$V3yZragMT%H)Rd2=fs(jxo}IL;jj%7OD;?(E;Bi_8gk=WsMLYRY zZ@UcrwQdQLo`jK&-&>I~b&lB#%&iU$e6PQdNdBDasiO6N(sv1q zq=>4)NTh?pTG=fwy|rIQ0v)6x`Yy+wLBgC8FqYYfD=PD3aj8sEL)+6&vwOp;X8(QF z4lI-x7xYH&|JRhs@4^4ipHD6qp-$zaC>)b~=I&OS=q>uxqr3CEgIsxmpJ#Pa-?t2G zQPK^~*HHzd<=Y_1+lX^liZ4`G)T|3i?@--qa$FnbxQZNCDaVSCqlFyi@u>DaLtmC5 z7jg8dXm?bzM}-X zU`*rOU8P@Hvz33KXTlxv+zPi=d;ukH?xk7V3Jd>t;WoX7f z(0R7=kEx0bL#1#^1ze_yCAgUqL;vGdY6oLbO$l^>sv!$}cMtzt|7-XO<1hWh^b;Qu z*==dclxE#!_GIZ0VIH&F18KA-y)|X>^COd#(N1I$eW$~dr2b#PYcXfOF)>R*A`HUf zLBz6PH*O#rC#uXH)}QA}zkZJNR%`tv-Akye6{HH%Mw(u}ctzt?(T-)w#Zda8EOD2d z^no3!UuC@M()?edeOvk@^ne%fcT&B(K~#jPONMK>b&vrP2$4x7kE zY7_sICjN}dlR(V5MI2NSEk77EgpdtWpp{Ngm=;i!w9`E_UrGI@G2fP4Sgu?-g7h9(o*p<7gW;EnVEDI04{+TH>sFw}#4*phYNlG=iq++(Jy3k`N-!`717pzY7igwHyqn zMkGFFIb!69lcNst1neCv*}Y~&Tm3ha<_(y0&?ot{78}F!beSRd!dnReWI1#eRJ&5t34}7014iIDG4xo6xZ>M zGzpTtKy0Y(2IVl+W}>0CTba9+xk%!*pFVLqoaa-o&9GJ z#Ooj)mH_e;7eGUa7PQxjaodmQB#Z2=4UH@wG%TOr+>qdJdB_b2p9cx3{x+(PQt59p zGWj8qUc-?|aD59MD}@ofg~2Tj&yE>EH;xl*>)+0A2lv! z&-V6CSU4q2kQb)}W7vYZO5p4!G2*`UY%g>L*PnXsee$fLeWSFP`Gi3&*)=H}kLLEQ zA2F`^Z{?jjQaz1GcgdZYm+}=f2Sa0`*2F1&*uDe-wQ)qH-)NG~%M?i`8z6=t>@aQS zls-C_F7omlG$0!lP=z4^7xPspqvcpc04*JQw9~k$e)T~B=h`i5U?z^ZTlEe2>e1J) zpE;g{9AdLRsUSw`w30tQo4#WefBhX5jipv#A&XBM$>MBn=fJZ~wyi=ygADd@fkPQe3(_9b>OL4gMy&JJW$F?7J z*S?zBwLecMr}Kq!aJSvuOCNww$7l-zEm3LHy1y>o{l$voFtW$%-4>j5l*rlPQsohb zk!6DRQ!g0Rt*-9CF9il0vrAt4w&to;$ZGn}cK^Hf_je1w?g&4`2S~}vqHfl~bvKVN zK0i|Le(Jk}u%0ka8-}2=(+XPmBX#ZzUlCbqm0mhi-`4Kg#-q!-cLKL|Fxm%v&fYUV zKl!roDf{VpJmx;XW)^%re`#h3Q*?@&IXAJ=TQXsk$lbtg4RJ}uVPD7epvh;_7)}FA z#=VbwV=xeyC8Er8)A;R1^I@LJZym?Y!f#rbx%yV$Ga{SLGg&V z&hIT5HB*4;LAJL95zgKcal14d`E=#a*3c`As?Rr|*73@Dy`%2%kvZi>wEsafPntBL z#TQ>e%}@XQDG3FAlk+DAyX1es3Z8>Vt`l?GoP-d6MyE;i2(-_wc{{={ewE zv6t}G9)l{n(jK-R9(pXDQ>R&U?2;@nG4f9DDNc_yi6iMji)>3jR=2L>F}H{jhWAlx zj8RhPt7bl{j%FboQ;m&x2%PqD6E^J&E&WL8RD&iWq2;@q8A`}FY=sQFPkVkCGN_C; z`Zh^xPeL#ukIF=0TfCZp1fE8ZKmXUh(W9uQ zkbtSB$EWaItfI#UJ(d5j=#i9VqRb!tL(Fawm70%%l+OFre6rYWlirOwTpWkdUJHr? z1o)iuOYr7OP`^@2G&})w;1;(ny$o}2`!aL=d8Mb>E*+(LJjaV1U%&b}n)lM@qe;O) z`uNh%>A#lQw82&1q9ZU%o8lBEIFre^FD}C^9~AD+^C#RC{gkX|`xD&bL6`D+7K$9l zm`t&M9HV_@o5HZ(%Np6Be^WQb?Oy6kL!+ri4UIQSMl~$IalMi(-`Hz`xy+(VNfB*G zn1d~Ey-JzrH(<-t-8}m5K6S$9O$106y}|5BMUAn*i_b`yYek zC#>V{t{>U!n887t5x+N;K1Z#PKXzLVD(x6ltX()>CbgSsgbZ?~{ia7NEx(CXdG{)& zAtmgdJ~LY@DO|938iR0Z_S*qEbs7u}uO!KlDQ>ik-+QK4glw~t)O>MAoW#Z*1Ei!S zvp|D8di-0;zqRPCv6!*I_Fcdo+CTtzB$Z^jU0;FsbECcW*C|MNV9WdCN}1?4V9Wa( z{hLqXGbDWWL;!Z9{C7kRz)o4c3S^SvFRR$iaBEc8fIu>Lz$>?lPfxJG3ZIVEW{`)t`EKec})p{kN0X z&*ORv+SAMHuU!VO^x7oOuOpe;$^V(WzWMXB2)n0JUauaSwSd%9C$E2V(<~+ISzaTq z2N-r_Wnze6{vgW_FG(}$nB6ECelwb0W;H%_y5m1A=8zqj*&{#Z-!JPoNxJl*TTeYz zC%5!!Y{MVSLK4K4Q^tLjUNzxlBw`hXd1=7NmiP_4Y}pi^(T6POm3Tjzd4B78(&G?L ziqVR=tQ8buhAjC_T=~O=C{AW?mJU@lpO7vc<`XPHq^a2dL*ARf*Hu;h-$^Mn3~9np z8Ya0wfFJ?^8NwjkLIW3UB^3%mMS>til!t(=L`6wSt4Y%<6^j%H2q+L#qz;b;L`<0) zaf*l%1tEaQj#r>6mOAo&e{1i3?zuN9RMh|b{y%R&y*cOXz1G@mt-aRT!Hr9h&tFIs|*pXMP4zY<@Kp?!t zi{G3p>&6Kd{X$OzVH#?M|s!R&z3n?!Mr6&F$6Nz zTF?NHpN73*0nV=s4;48ZGR_*{tjRcQg)M8(A|vA#Xv3se0|Z+=@2V+^YbzkSwA9?j zHOIPP+ok&&SF0#^&^_pfPXnfg0YiAi5Do{hsW5}?-+BOZh|%We{xVr)Bms(A7xb?n zQSy9!fl0M>CeNm1Z4vcg)y)fF`hkJi6Wh0;jB zQScyHWKS?Dt5z{M(6G%qs0E7=o%H(;|9{7Cm;Ou%L=u{k@SU;zU490&@lJj6QfI+7 zx#{L4=`|SI*I^P>msA0v*|vUJlWLW1lo!_z2{G?K_7UjsXY>_dD3omie)-tF`Fi=a zaGA}`hSw}B4OXr8qWe@_(F(jhQi|K=#>woN{LaMWI^3IntY%K^!6=h1lpNT(?mLJp z@vU4}|1%Frl=k9w`ZA%137eIf(dnyc-pXWL{2-36cxz=B81T8EUqp2rh!LC)xU9+P z_PN_TjV%diJ*B1W`xe^3G~dM&Cuu@h<9UKZj=m#We!xJZ*sX6_ESIctKgb0w>o}n@ zJ+ilW6g(nqZ^KE%xfb{85K-e>&6TD452Ns`{sRRM@S_zxwuN##YHE+oGGo@3-pXD3 zHrDM*k3*)}>!1l9feLeFZOohu`P&TBW=x%NaB_n%KEF!I`&`{`7n?^6GkFX-giV>X z%$p2ZKKsJLTwH?(ZSaT7;i_i10V zMIckK{vc#yVNC7cWbIjHY!7Ac%S9-ee=k`t8^-grJ89HT4Vv$`T}zVhNBh%Sd4J|X zZ&+qhB~?(xN5-1JT~XMtXmQL|X~7otyOs;X=`aIi4{^#t6~L9@T?hZ(vsg<{X)T{< zkN(|rLq`$JwH1w#JH?Z>vh{4+E;pi>V&dd^fwK8#`B!mQly$OMPT~X$dgF9X9i7v) zb9#B%;KV9BK35BUWoy^v^KBQjO=M`|dNCmdEzc#sJxdT;%~}O(*U#K!{yxfw8Ar8G zi9PgFsCJgP+-EFHI|Eq;t1~RWC`83HkJt)zmictQ)UAzssD=Z+RHan|gUkz6@z9f2 zYa`dLW*22Yr!O>UxJn91kzipciG4 z+02UiF7U)zr$9TSH2ZsLNQ{Hxc#gp0`c;OJ2t-<1XxQGIix{)^-jISz_xKuvDJ*Qc2-O8AUH z2l!6$i*AeiF9JU>A}>Ky{)o}DwzBsQ4p_?D4tf>l${&WeEKb+^7^jE#F}C%V)aZu7 zPQ+Ycd-p{^#Z=DM3!1sFGraGPzKq`nn@P#}_j?Ek{{5b&_iyKhLgva7wV;s)*1W1N#D0uor9^VgTNzyjV`rc7It5r@ugq+L26TUO(R-_ zr%PyFhfx^(6_diN{mZI7&c^*)YWrw;^r0LYy7L=(4_#Nccx{vx5S%ON<)xj++qcoPc;Jmy)!CvykTNudf(3zIMn$4R`(rUHMj~H_ zk-t}?ckX|f-l_j#db2m4UWar=q*74D&wT~xu^~8w)TB@-m$tiF!SM&Qn%YX%kG)Hq zv4{4tN(86{IuyEV(_OpNUX}Cy(BaM8%oPBGuM^!+0%g?-iMp~8Z-pL0!M%7CPt=jI zYyOo@=wVgK_!(T2qE5UcqmbeqoET+mKsmG1o(-lc7fK+88*vLQ(I5X`)fXyNNa3AQ zrs~wXp zG+X^qJP1IWDy?2Kk&zUQhNQlL8%~P!{TYn|W>q~ftB#2uUIj>%_zL^GMu~J|{MIwj zU_+bUqV-jWB!})hJ8lx?5HljRBBs5D-t8A?q@BB9h#%ZbfrH zcdqbF3&e3JT;UJJ@H*N4XDhf0^ll$i)6lb3Y;k@jydU;bYKq2Vg}T!PduRy$Vm-vP z<(Rj27yF8Wm;SALT^!Gb_wltao*jZ3%W6ZJ-_V1an^E`tj6Zc}I`vV5o~L8Ho9FVj z0cov9e(v0E+ScYrG&p^P!B|H6nL7lPVZE5~Km|xO74GrPLQT9)Lp2c5w@&k!E^SgS z$E9ikDh`~l)L^5y4RQImqbx4OmCDQr$82ln zL)I&f>-|ci&vo^iS*KaQiK%5+2I-ydY=E?2adKfG2T4g}o=Nlgclv&m^5R zBY8k1$@xDBnsKMSotdBCnttN?w7NrH?;7X9ZHrXis(9NDhv!%54{oWMxssmZ0qXpP znYI=+^wggYpkb8UWwEjarQ7S{JXI7J#88w`bXVG*Kx=|S|1GOr>c`en5=6NfX9%2M zxsWe1&W63>%j6U1bJ(^zM3foElSlA_QLfJBnG^v^^vCQN=EAE6_{A`;K4OzKelll_ zvp<=z$?*E%wKsc* z0IpWyVU0wSK{y?PQ;Uz}jghW3dky8GH0uwCN-C`%%+0?SR#bsG)Rb5^XR2hnbL7eBI{}pR@jVR$opNt^5nm3Ac1q+w4a`AuxNT(bf5T1 zVkr8`<$7Z;0zqokSq(AK=IpG`E!p(lHad4yVN-}qNkFi|*g`)EEOjP{W6k6l!{=&HwoNR@A9_M;58iRczX*H`uPr5WsrKc2>x;cN5!E9vos@N znwYG8wDJ&|5bQ2I+ZPIOnyW;-q&;eMmjuu<{`}Wg)pl4V#HzC)-l;mTPm{}jE+w#< zul^hLkvnJVBECZP@|gc7NTceF246h^TPpIix9)SBioq4(G^;R`+ZU&F<*hsnO05*s zI=&3b>M%?~ZaF~i!fBpdzhT4^!on2_M$Tu7+?&K`zIx_yHmBRq#UDGr7gLhH!n0!8 zm&WAviQPk0lDI*CI_L0;@`x3*A{^!x&O_5N0l@`MEf?SW9gV4c%6+$bQxm^dj6lwO z9f`fqhpBp=W4@+|3-$tIQ3DA@N2cqm^Ay(`V~gw8>IwzBQo>Mpj`^afe4oB7oL?8$ z92VDig?zh44fZIJhgO*tI`wndbqGPnvZ9tQ*IE3&%5Ruo(c18rMYg_gfn0upW!n}w ztzdX7f}Cjb{(^K;v?7&awULVk)DIW#NHZW+X1(Ai0Id|zp=K5WdRd(FZJt?Hgq#?;p?jBtCQ6gkttejQdimJ z?LP8`#P`IyYKq*AsPrFh;p;*bByOGrm>^`Bcq;tBpGKUBE@wrxO8MkF9v0c@wwZGJ%`eDVs732y{JD8`1#jgB} ztyR`hNm(nFpGrM1;J1RGd{=%O{8jNTBkQMKvBt`(KMpF2UgAANfpNJ6Ds~~?;^QDp z+e~cAMa(Gvw@PY_M`?zLk1MDeWY(Bj2vIzA7EV$dFbOSb(e-ZYX?Zsa=O2RJpQaUk ztW#=(x_00CNF*O4txd(!U`eUmWp&4+Vo-1$3v0CBhL{bDL^P6`2lb)M(AfY~t;4%Y zLRlg|%dW0riWsJqFU&D3iqWUtJzg7gY~?M472Mms*yRFf zW*4u~KHjtS|7G@3RS~VA+&=D}9&^g= z=-qY4R)=AH>$+@J<-$t}=g1)2+*KjY;|zF&JLf$<=;3Q}xRN-f(_~pF4qFh`s*dwB zZajkU^!Z(Uuxt0tRy)2Yc5HVJFl(!YHA6@}_g^PsHMwtf}%lzpSuW~|#n$t_H%(4#D zgpzO0^~HG=-z9{mJDkG5uyc@nd=t5;FMkWlXRbL_{=>iqndgP_i8@*V`{VhNIi4sR zu9KJFV_vn)_d3y|%HJa?zniAO%3oUB^}8*@tW?)up+T{NQ#fM7dp6SSJ5%juhnIPV$TH*5E^3IjRy1sH}B z5Omk3yEqICjb)>#bg1U-5DW~`rURwk%UXRw8G&e++?h-z`1W+s@7)&K|H~MtN}$*P zSB}iwH9R(u?GMpBEC4ofo!v9cCYHtZv$>zOZgu6teN}lPQS&XREUvE*I!SiTSFfGN zV;o$Rf%4%Z1GQ_u`VVQ)nk|o;`%n=z`#kC)jtPM+KHmGrQPM9n8u0DR0@551L)(JclG}R;GF!X-OzJ4-$V$a z62|~iH_>q&Z>Z)0LYB< zyEU-0n0Xa}O@Ge|A~Nudd+=Qq6@!-A?buSXxSpMG6}Ek>X2}fzQ*TnJ>O(oQ=wS-~ z+PUYkH)Gu&zP5$Gp4YoNK%TdHyb2vZ05F%+kuJi->jc>QJ#1?V*29QMpvS&5(K`be zzBc<1EL0p-v0!Hoe9c!Mk2FX)lZ)TfwkNZMX6mARR7K6=QNYKa;ZMM2?iER;O#8?t zJu(3Orn!BPL*+_hrACRTHsYV(PQVT~tNFXPn$L6br!arH-w*Brb@VwP8r|!+_0)GR z90J4ld$jWsv;_&8z?Uwwf_j!sRXvX%Y%M7L7P1htQCMbwpD--=l{zeb{EVAI6+-H! za$UGCqyZ@v7sOb}f01f_z@KuMl@Vs4R3c4EB}y$($u$X>SIPK6RvAmVc$KWYzFZ|e zqEV)juY0sp611}uG=ZZM6%J?z_4u-=VDB+xtG!@R@0@x$;SH{PYdJ5!!Bct5!@YT>re2R|0+ zaz7UG1V3&Cu;|AsScH{YVg#orVBQE0rbtTu`2o=gp8j095#&T8(YN>Ge*h2KbqU&6 z5;TEh1S%*RZS-Shfz>W7tLz61iz<>x=Epzh#{5_}@?*PB^y4g~Ox&6!8}#F*2xERM zO-dz7Em6r~37A*OZeF%~_KzwV`E0pL8bqT^CBFk6;rbG^YZEkqqY@PqRTBMJSzyf< zmbZVyLM1X7@heG7_}!a?v>#vW3*IIvIFl4?fgYEs6O9zV^5Y{s+N1kLF~>g>#S}RF zs-O+{ac#mw@MEDMM_$xSjzU6Bu#@?5mC_TY5PrW;cK2zLL=(ENFzdgWj_{V z@Vm{p#gETS`DUpfr(ieru-AB!`1|M(lC7M{5___0Wr z`>~KG`0@J9V(qH&QNa>fsU=46QUd0U_I(sd$<-=(XLxcuS;^_R=|m&ZxA)^iJlZez zjcC7F8I3^T7=a3kMjQQDSrpbUEUWB)8W#LYB=h4(xG_K0jr`cI6a9D$Qm^L6qY=jZ zSeledlv<*aM-nivk~3frF8})aC|gw`Tl9-z(I`{N?jG&l1nsBSM3o2}m8hVolIX|E zqOiQMy!{&%Dv`m6UrAcR?-~-)etavqkT@wRxV2a?N|Xx?ibjfG`SB$lZQBHGw**b# z@T-D0;K!>H9!~P@u~1;*{(YhxdnD8ZJDDF3C_Tm02{83*@FDY2kuh^z_UWiZfj_X= zI(WQ{R_reJmyp?|z!VTYKN6vHXu{5lgpS|?oeL8>p;Nn(Jg?e|yjTK;&hrgXtT_oC z!D=`%ijMV9B92Ml8cA@~*M00c8GTgW0vY$Am40l~BYYi3$kn>WPm)VnSEwwLefiar zU33H^x`u;z8X~*hPV|LltkA{vc3pIzhSSWK`9YHz5QYTZ>!6zqXLjMi4`=>1zic?u zMOneK%7!z_ktJ3!Vw=1lq=8R}cOM0q`1wDnm{=M=Q?MWLuotCZef$)WK<{!7)8XUi zHn5=h>4!6y?roaOaq+{M(^g1xIFTrqhfm>J_>>%RIMV^3uX%+}l`GXLHA-y5nTrxI zA1n6rCI5J@SZ9xYD%z`2$0piDBW30q&a4BTD!C>>yD32vIKHQX@V)1#+hjPSEU?ZN zmc@$i85aCXBnzM0a%16BHwvG2_2DxuZY!ihC6{!A(l9L%#=@sGDU~R-L?tIDU|uCV zdfC3SXH?1euPRqbRy4{~@-*-Ww>Uw&DnS!CDp5gEB{6&|3#_*Y%T)3e!$Kvp7x61e zOZYv81Ygsh-wS-fTP6kXkQ5xNuu(Kp{3?9D(W58OOSlZ+A?iNhHo(hZVnz4~zG zbpYeW7pGja)QwZanO!{WB`H|%#v&5jcvlbee(%QHVWp{VkT`?)u05g_9$y~(SftDS zSjZFnxE8>oAFE&)fl^D1pe6zHM(}Qmq~y(1vc=x*tmLHL(07GsB>MKs&c7v2fVb==FD*GkFqKYJv`SA>H%#U>=Kep>cKVHvnh*$IDwGqbr zSeledlv<*a7ZNb9lDEPhT>fddC|hMBTl9-D(I`{NP9E*91nog)<+MwJ)(~)1qJpAI zq8}@Z!agP}Z~umcN@OtNSCW?S`veJTKfV!MNF0|GJTECY@;f3LDSqY0@AYU~C1^V) zXaa{{6|@0A9!_`&ek>H2xH}W&*g2sl*vb5ONa+bvi68$A5>Q$oN@kH)69$3mXq$EyG=`mqX@$Vx3Sg4+`?Z?vDMNJ>6hC7agfEQ{6`ji6sN5`B9=KF^~~ zOVDN{XadIwR8Tb9=*P;Uu%Eszig|!xVYCv-{CFle=Eu5`AKP`JAFqVetNHQr2xERM zO-dz7Em6sp37A*OQrLsbeZ{4z%C20x2my?k8<6nUbi4P|Q_bx5xw?i~i{K}8N;L&C$Xm3r>1P;F{ zXaj!Sp70QcGeUuhbvs8nPEDu@b}~P1Q+kRi4QHl%rfwG*)BSgQqbvev7-Fq(x|wM$ zArpo(0*0OQ6L#)T=m<7&g1Z777Yz5$SzeRYpy7ahTfuHj%4Hk^6u zQK3+EdEf9SsKQMT@r58}OE?#jk*p*gvcRt-b&+TQkkh@^dIU(xcZj`r1oj#Odre%& z^Ll`KXNvlMY3h%>-&4<~sOw(T1qk)Gi~2v8df_vHdV{WT;;*a}^9<|>z$Qbl-Ffgs zudZC#(5nvc5Cy`}>!lFul_RgoQTXITFF}Ub%$7C9`X#COT^j3CuroaD$5OC9){97> z$96^0`#3Nxl$-_&iuHcz_4ggDmgnwBE$>E#d-P+fWgK3V%R{|zE!0bnIP|Il&|9g7 zUMg2{La9+=8+uJkzT)cgqZ6(W>j5_wap4Z>gE~%l{hdtWo613MRXaXlr zs378m>Ny#DDT|6cPgoY$W=An4l7;%yxv@~M8-;qi`cR)1cP*qsC6^4n(l9Q386eNAHiUWsL+6_bovRW$f>roy zg(3Zuh;7^}aw$zA+MbhWSA8L5+z^`y1-nxCg!+E27V7sVm$Gsy%bK}gTp`&-M=+vm zI5E_pf2c1sLt*2yo`Wh7ip;VaMQVuc2(ct)K0hPI%sI!E#mwat5ZtLOW-3SK*F!0< z8Z$ouFfs0`R2$;+C3tW9GE;!tUu$aV5Wl@m_3CkR-Hi{{cEM{KAjm1peC}!H#$IP_2 z?T`wUToN!7tiknNx_ld ztZ1b8Rm@!M(QZo6-k6{X9DY?$;5V^{5Hp(+9zx6%3UZt-Y9_}a2{pkgNEkCIyJ}Q= ziYdj+7q&K8Y7?fe`)E|6z=?G-D2tg%f*h!^eZ!3a*Fb%dx zDcHOs*jv+JfB$WXq?sbvzG<+Zmx66?U>fkascEpUmV*7ZM(Q=NU;iSd-jA1pJ!)W9 z3*SnEwUvT>sR(vu8tm{=up5eC?P;)WO2ImcV6)O-g=b0>a-M;i2s@_1?kfd5v)6n?OQKtGp1gszx2Q)z|0OVa+A$MN3Mv{RI}cWK%m_9E?m{-o$# zskC!S)AmzZWogP3uC)lSG8HnbCRD*>;lzZzh_ z6SCSTd|C;%6LPvIca4z?J0XX+FjwAsIL4CRmS5_UqajL1;GElqu9pgu&R6%TdYi@E@z z{$Wu+I#74EeSSs#T3vzlS4JE>13PW2RA1~^5dHXd=*cjlUnGSt1DOB~L95rjh z6h3)hOpu}P^f3s?T8fkq*yYN>7+dmK@qVUuP$L)fgo-qA)0p2vIwzu#gQb9SSnI-A4h& zjlYy~%~Cf`!G6TUemMo}-B?5dy~{n!SG*fP3=eYSuoF_8p@o|e!E50QOc0tMi*&gk z3weSccK}%QV-+lsm0Ds17bRfc2wp$UYI9$eY#q5@GI{71yiD)tyG=9_efuScKW%1c zFM{pSZcNYwjuEJ!XtZ(3L0O1-x3H|T?=mc^NFtdZ|C}51W8KJ)?K;tqTOsvoe%uma z%#Wo>sYIzIDmgg;^D3F?WvfeMd*G6Cm1ISuOeJHRno6Do+pFZt1Wn+mL|a>k{tXM2$Y8{;BrW0h7!uNce7-NZJt=tmq~KVEjiQm_SAN{+(GE<|p13%QDRB5z zK^ySnhJ=T>1%L$Pcp9Q!jwcgpf}PBdGfGdGO8j``RMX?NqGT3%f>A;v>b*!KLVRUE z7G&_d*8z+l-hF;&d|cI5y5NW(T?E9 zB3uj z3EHnNibf!Cj6elNqm6#7EW}&~vKRA3!=j2LlKJr?+?XHhMt*G9iGIAE*8pG5kJm;R z^J8gJDp6{QN?u67yh=` zWy$_Q4)$+Ys6+-MekExMzfX{m_T%d-jo*HeFn-^X6dd^-5sehT^5b@o_MQZ7W`ZVg z_*Fq0@Z;fxhcGuH6y(?`kza#F_X1~5!&>3A zc@CD433DR?hMi@iW8raWLPzj{j^7E1p~X(^D)PK)!`z5~p))(7b8JFKu$mhg1z-Op z;+SYLl2DrFH0(JUeN_Jg>0HM}er(e(eC9?5xZ2#vBQI~QvPJ>&vVZJ-l3jEJBf5qo zw`QQ{W@db$HtF#PjcAh=W67)CiVzbXZ{ zN#Ev5jY~caFhTR~R3I!3nkm?;J?!^Vus&#tNC=wOc$gs{G`HcRpy}7(I{#_vx)lli z80Pf%N?mx4D3`}f;abd;9I?840QA+ZF^tNU>XaHKwlU1d6EGhj_V*asp1GZPmrxG-QqY@PqRT5*SvQWwG!ZMZIW>~01_9A{IX$illli+LG^ZQ<3 z@cWX2cT5V7RhScv6u*j@2Ya+b611n=qnHARUlkPiRgg-nHksYIzIDw&pm zd6k^<7gNcp;?h(yC6O)q#rn#LD%shi?UJDVfT=h?8WcDxQ9)59(T|lS`v*DLzhR*g z8I1Uqq$T{m1WMYEzp&o;{h~-1zi&+nj{LeZe&xsS^Jo_)Xgein0*7A}v;jXJOLz!= zEEMF}HIZYNgqmO{^W#yaCw7(i@xw2fI6sFyFHZNl!588fMu@NM$Ek72F961m@57v; z|HiBL(G={@J?#A{SPvs2!H*yDFb@EOA8*ek<;UU-E$krPEh^89yo+?X9}9Vc9}fdq z^kWq)BT#CI5v)nTywP5_&a`$t%JW*Adrq{zXas|zk?7m|@%bLDJwe+(K@&Jepn{^& zMn6^-Vjd(c6SL8G1k9_X z@6V=^Wr*lia>TpJRkBhv%2aZyN1LCZZIYk~9F?e`sFLW%%98yH%T%(9VWAQkjQI6u zl=x1hb*Zi)BkjkJzG(bDM){uKrDvD(+ap>je&xqs^k_FFXs0A-0*7A}v;jZvN_Yrk z7@;7?>7r(G%ulEZb}~QiRC^zXr5qzNIw?ATNu~XYlo>y%c!w48UT?w6!CUgX=F-#r!`X>=HqQyu;X&QUjb6CjX zjN8K@#z$M>8i*+oY%qH8#c?Ha?Jf}X8V9>(|6 z7r`{5qU5-IbRivYfFn{HhX`X@2{V_H4+6hEI^jfrQ+0d&I@DK%V zpbGFBE#Ap%lp`mV zlC*^17s~iu`@HeHc~bE8Z!hO}43u;gD%9WM(H??rFJ^m!CUE#wL4n`I9>Sg%o$KOt z7DByHkYll^nH(1+)C8-LWXem~)ritlN>r$?_e{MhVd`gZi?Rru5G{l9+aI|R+2Im0 zA=C>PcK!@G&(5O>9l-}We*2^71hIz5^J0ZiFJS20meBcBLPxL)uC3tfpLl5#Ern#R z7NYe`sQ1yX`aHRBFq%$&>4g+UAW;qajW3JC6W1GlM|sT`SK52Czk z%)A-ko@MpVq~hQPW9CgB_O~fmA2UTH#LQbf%(Fgbei{~vG4uNcQ`a^KVLh381fT#Y~kehf`{l*!QgxFy9xv+?Txa_pze(x02-}Mx8q85sj2> zD`w_A+Sv)(OQ%QM7P$IWTyVGxVKIrB%Az9o6_z>H)=^A}WHIv^ZY*Z%MlsW_K4zxH z?SfROerX10!(hM1xg)_jIbpCB2G0)+mTRuXmpjX! ztlA3Kmx_XMeP%*|6YxUOiM7nuNyo)=s%F8$E}n%$6Bd3rKk6t)?2>`_?Tp;Wqq9W< zI~I;nrR6C9C8+rFf1RLb1G?YEDD+VA;ftN;c=ofP4<_i>CFo6xcq>8EKZ(*W62u*) zDN@-p5l<}Axm^Ga_mk5V@pM2SXZ|&s;T+|xUgoO^i*i6uJ3jqRSoQrQm|=7uyfO3(@Vi#fTuw1O=+-a?=C6y-Xhrc zX|SPEurC+EUifN?w`)tmE-!)&r@<~M1v|e8c0(HM&81*R7QsH02CFXx+oK3}N*e4R z-z|~!rDqd`yde$ti&C&BieQ_j!EP@F`$iG$@!L`g=_v*KY!U3+X|S_P!7eI-El-0T zQ3`f?5$ru_ux(4h_AP=Pn+E&+U3^odg*~0;^6TWcjGy+Oev{uYzsLBk<+lqPVc*Sf zM-;F>zhn8G#_s}tALVxyznl5p$?sWy2VgmNaAo+zd6`W*U(>sYtG+=Bnq8lX$6dyA zH6u=h=ler^@XiKSuA9|Rx$p@29PSp5+H7*Ot`k9CgEJ4O zMGy}ha%+cKv*{-!=L!dvV`^$ZE^bG7whOI2poL>SIa9@`a2hBl@`}NDiYNRI7-1q; zI1<~qZ4F0aXE}U#!M6T1UxJ;hT(AdUi9Je9jpVX};yDM{eesK48!h9Hh+I0e-Q99? z%)HYwbuxGH(0)`ur@l>1NtfmFF$QF|Gf6r1wE8+Fo-;LmoI<2I8(Zi7FRSk-&s}@- zREx!(h503!>Q1;h{~I&ynB4?(xiZh%Q+h+mIxHqdRtj=cVrEheExMx`6Z2SfpLBQc zg*2GFNci$C{OApq*q6RPG@|Osf2F<);M|%e>LLCUFg`z2$M<(Ke7px0T-{IZoZcl? z8~M3e_s1V?W}ggewkp^Rt+z_+bE(T_n8^F#$r26icxtfAl1BgJ2lPv_dg{B{hVgy= zDL=Qtwc1?td^FfxJMNil&hgO77vEZQy-R#&cW$eDg0p2v_iU(JRk3gnqW{XL>CQrE zmNwY&d0J0yEs*QSuO+3XwmDa`&yp@~bNRe3?rKlT$&lvPAq5VmZzwHMCC%ycmwfeJ zP<9`DNTtSak@HEVQEhZ=ro}R#K13({o zu+MngCncKO;l>8MYnr8g>b<#`Fz#6KCjrARSPVT;8N z;3LXK`;`gceIP8YMr^k`Nwrc~al&qWcVn?C^_?Moad*M_g-dgJ*=zH9uGmj=hQijn=Z|3A(EL4p74dsL z&6`n~pBppZ*vy?XOIdd->uxyNuE1vy#iCJZfWl~DORBE>BV&~d-d1?0G7BHd<*T2D zfIAPmfUGLKGayjE_B};pZC(riYw6-G669k)5#%J_OdJMsq;UN@hGdY|C{x<|Ka8J_t@j1{=RU`YpcIKo}gB4ZrX_YTTM}J=O4ee`kVdR z|4RKm_e@#+slS6eAMDOiCDQaYs1c+Y4WHGLzmq>(cH&POcee(}MhgMz;8@e!=$1FD zy3~3C3?2KU$L``cBcWFZy{Y`RTlAMMNL^A*fm7d9QN``7@3xvr)USKIICwxtM( zp`H>!^uOwohDKV?=|o~HoIra zMAj?ISf4VUwf;fWAC{3S#eWl-!Z9F{)8uyTdT^*`>oRJU<9}4lN7`sg%Z28RxTk9T zVar8i-?3eEpIm`Ylm;tr{Ipj~R%*$KjCYa6_DKYRH308^d9??N{;u9Vy=j^(g#-*V zJBP>iIXt$_f%WyMS9OoWnqyUQl}NRAU1lGKkjZ3}Pa%R=VZ(Nv@tI#~a4cVzQ)|C* zg*#rT`5Cv96(QXfw0SjK*8bz=mv`fL5WnO25npoZpH%4&&9Fva{DET|l+3QL^>GES z$?6W-r`p#jNZ*RD5Zag66|=~zlZ1+1sZSXGUr&FLeeX@5oekgoMLQ_LhKKg0r1)t% zP2f>$3UxAj1t-;Nw6r0fPdt3+lAWa~GYIDUR#)Z@AFjD(h}lywQr2niXdC zZH}Du+~PWah&A&VEi;%WUy~}fld%=s7<%jX@a^tK(yO(30IVKC)xf4dKP!Fk@sK(7 z8S!hJLp98B;4m>nm@M&gV}fs+d-&>_PY+qId?!_FrhF3PAnCDAsW}?7#g8ySxrb`z zq->ml&B9E3aj0P`Q2Py(iU^|(^lAp<^*QV7jkx?2=^ zTI*n#Ak@9S?viPI0QrQ9!cK!q%js)x`ggg)<)?kPJOKtzF#j<&Fb|pIKErny#mM@4s1C%)XBWRE7V*N?mKf~fse9Yx*f3Op8V zB1_E4;>D!;`{oApr}2KH`lV@6jFpjAB$NM=5B-zV556_jx;fU zJsCD11{0cL>1$rkaJ*t}?`pmpK1$D49}j05Z@ut(Z3@UWSh4dRsA~%}S4;u)@jdP^ zHFoFL#62-I2EkExEXLWNt8*pWo(o-yyJ^rJR+6La~g zu+lt`%iA2C`_5iWgVNJ7^{iq%b=5-}PaWaENDk%zMdgfvFsYYs^iLzkO1{ZIjrymo ze=?BXe7k=#kluWUe=?BXe5ZdhkluWke=?BXe2;%Jkly@q|70M&`4<0VAieok|70M& z`8NM#AYpE<&x7>lGd|Bi!hCLDn7+f*e0Fb6w+({q&0+dWR@&{7elFv?Sa06jrK_K6 z_0VsY)lcQrxr>hv29t@ExadB)+AGiZtTRulTv!FAZcX(S))%LT&RZ_0FPSe~=ly5l zHY%A?Kf9IxIy{&dbEEt6=5X;$5<-X{7%ep(dlPD*n%wiRWU=SM=4tO{B~-vV<8ou0zF zr1p#TnRN$+$%;ntU@GE|uy=T)mw1wj$=&Pi2Qb5u+Ow_|N1!=9pn?|jfY_vmng`zM zyMaOucAxN&dkb=s#veX`Z&d{cu1q~V=G>>|zWlN}V_la~&_Xre`&SgUQi-IV&ToJ2 z_s8T~OM0y0S6pU_{eP1y_TSXs8a>ks+@Ojm^8oQ9{8t)3IE(KaJ$|74ISf+}tuEKA zF|L|%N>*E*DPi90<5l_Zv5i(@eNz4@3V)xv!SMz0z)TNIbU&(A7!xVD!e#7FS}C!9 zvI6k_DD`+hbFVXVofJJ(i~1WHx)%Ez%?;{o_{E>OLv%VuSYLqW`E~9mim{^ZHAeo8zvR)dbcch%ND(V`}c8t4tyN)SXzVQU>^C+~<7> zehFw5*wh3OJwJEEJ;af!JoT@&uVjtzBMp zpEP(TpOVi~S!L~kj3~7}^e^fAEE{KpPRf5p-~0IzCe!zgfBk2fz8fD5`d+j5B>LVq z=H6<#|GK^}{`-GP-^*p7Nq@Sz%G>wce(ZVxyRMj3Q>$ODmOm|-ntkSv)a)~Nh{Z5E zWOJRn_25eDpn{N}ziQTCBjnsgJ5R$>NRmzUsc$`F8Prdr$LTc=DZV%r_W~@N62Q){o=4z5qA~G*)YE{W)rl2&RQK;HD4+tIhGM`qag|Jr1ms4ts@^d~`F7k_TQH`_*!^T~yKA!o5r=8Zv zA`Zz#A9Vu%Kdz7We!uS3^l|Yn{~3LFMTaKCl-RBv6N z(J$RO7Kr>g*Ny~f$Cy%pw6%A+Dz}qmhUY4GR6sSq;SYwJJ91W4&Ejqo*L+Dm4)oNa zSO|}<%5YYD8t{Nt)x9I<`JKc_&=D)p(ve|x57jDNLmRyop{rXYU@Ooo8Zui4ErunT z#=`b0xCLm?o|J4y?a>E~|CnN&YmL79GL3HZODpE_#9xi=_=cgXf3=&c1lgD>%(mtD8CSP%TI{?4FeHGzMLon>(ndrY2}gCMCmHDs2Hwr6 z7uUN0wpLf{d%E#zHH+eGRz2*uA@dKKMx+$%n4|Md$>F8gVq;OOWE?3O3R(~d`}8`wgQ!|7c6fB@VbOi6WQB~Rf2SI!TcT0Z zN+w)XAvV$7ugQhIKRXY$D{`GvSe`b8r*# zS&?sYdzW+H9-`;u`sfM7f z&?#=ZNH07jhFfeO!B>JD87UiM4PL^d%`gOnA9-U<*}rE=_L^-z@cXXW)Mq1DBNJ$) zEj_V!Gw>AttUKg;ZpucH@csh%;pC$O5_IjrVG4A zGkW9?y+9dz)-CwEHB;rwC2Ie)k~)`&g2D%3R0cGpD}5IYXSA7fm9FGV>)M2-aHwe+ z3x{0C1W&qeDpuIm!d%{mOLxW|%H(TP0%G&4t`!SkpX>m|I)+G5IYysn(RY79VdH(#uWzZ{&Bvq-;Nyh+u`1Fp?}256)ax(x-Y>R6DZlW#3kP-myFw^ zi$_MZr~vA(m8<)p@yXajHrH0*jilN|P$2M0eWPJSl75fUGhB!?lFr7BL*c28S5R9^;c%o`|8=A}g{@TO(u^Nq1K!Y%Q=Ey)3w_Wa*wEHU&sjGuXb9hm z@h{A#wYbk}nhjJ{d9<_%roBDhD4ltF6Lhvlp#mcxm9E~Fkv8S&l-+1S?UD1udodan zgIbyLKMJ8FwAl^u1(S*a#a+l5GonOa!KS}rtt)6ypu$|fdhBcH>*>GBAZ>!tg0B9Q z)ReuKWdmvhQp*E)hx=7zwqRQZOpFG1@b+<=lwxRS(%x=({YvW*tb_1^jk|?y*P19% zv%qULtHYcxesf{}FGvthc=v>F2RIFc@m^irNKj#XF;sY->%F+blt~$kZprr2m+Nksi^PLy8t%FW_vh%#V}kYfRai`gPk!-o^rN$qR?2<*$QQkw0^wEqPzH@WQ0;qr$Jk z>iCoYEG{N1UUik)uW6OJ^M1GF12KL%e`1uYZp zvq_s`)iRh}TD!=ujkofC1Z*=yb}eCIgBzSNH}J7n_t2ISSdBJqYsNRa+-YegwSobB zr{Hq|Ub7S+wFn8`Lepz$*_v zcpdgXSltiWT&1?F5`cBSgldpYrukcK$$iMZp~Jt0&rXT_{2^C;TO}*-+JrOr7RJIX z&VLF>-Y41aOM1EFFiLX2d~S+O;6OEQekeAuY5Vr|+ecG*aiP)9QQsdGl@Sw?%*A3 zbKUo7b!pV^-o?u3-E`mAqOG0PH<}_g{V*4Qvdkx^`#riv;mh_1T+jk?naJ?pAbB(H zl9T+NkcOo1B@v7HS8OOh*K=z9-e%L>9HSefm|d!5Os>IA`y~4)X4mh9>FmXMRadjY zo;d-S@#~edm6s6dda9E9qm`Hw6)^_OqF)WxmRUPp2 z^{Gnjz7J7>Z>6}y1fJ#QWZh6{bX+OuFqPQkUa~QSd=pY~&|)15U#y~l&`jZhba<6k zq}3?)QHDUE*yxsExXVijrR<5hpy~4E=?T;M>ZVdpX8U6eZ$bIXwz^CyY~?ST>N1t` zYM@`sKA?)9;g`P({>d88%P;T?#c8~6Ba_H|qZmIyBai`=$nb6zS8+pPh&Ig5RS%c) zBgHgY^oU;Q0-b64 z^!4)bO6y}v9vo!GfxsIf_v}_SxX91=KuF5Dhb^fvQuy(C%a21J^ZA|6?<#)ZcQu8gs6W&$xtu4I2F`uHXxdbAa;j~K3a9VVB3oPJg1nTjZ>b=C*E!_f( z-?ix#P>b7Qefitr$Kjn)Jlpm?SLTkKa@n@IK0-DETdX~@a>2~PboiM0GJMQ5hu2f3 zF*mcKFkXyr|5m)f9n&*j|${n(1L)#TtDeS_<1FX+4IT^j0QWzO?y9pc4LJmuZ!yewq&cPM10;AkK^n z@N%WKDn@mIO4Xj82$4-@Wm-YbxF5X~`~FZsIQt_l#Z#HEr`p__sr5v7JSDUbyoVb9 zk#DsdLO(McS8G1ob{B45v!%NWpYU2h^NN8by*IP3SH!>U)$yr3+9uPB+fUPM=)|7)VBsux)?T!|c}EXHlL;cSV2;k_Eme9d9`LAZy(XPuMKOa2x|A z`%Xql8MD5L-WrO7pT*GkmJ{bUHZ;D;s{fNs^?%m78CDkCUZ@mk_cE&2NVogGYEDTdhxFT#(k~S@f6Q%dy&9F_>-S)2Hn^Rnemf@D{{;CM^}WQX?zjnx;$&L2(jJmUULYnt#pf?h`5Q&wfgDKtMt;J)mw zY!#djnl-ONtUSvFcNm#1TbJR|PQ93ruy@%SYAr}~Ktnug_1&PNigFzbUz zUJ(n+q=v#>uvV6%uXs#~Pg$+CJz5_!L9Lf;qfy%-Ye%WXNbMT{;!=AkRRvN4rTPW7 z@R0N;`>Jw%EmiJ?M}3hEvg*mAwQsN8x3{pitK=18>s|cthqF$fb=qmCp8}gBfz3AY z03%_^q4%f7&Mn5QeI;RAg1U7Y+IJ6Sl-4O`ecxDV=qd2dbx5Gy_aIMLJK?GxvHQ`! zQ=k!B!?+_tOEbsudV^OrveArc_2z((1|3^V@C}-)3&|8|@jWcTR)%D_3o*T2WZEpm zs|C*_$2YK|{SGZAEI{Rbm#MgS)VIv(`=+h7%;~$!TI)HzhtKJ~xGL9s20Hj)U9R`y z%$(jcSZJKbCdm_OVjDApVNehKOKx6`rs@Xke=;ewYh6^y?ND; zyYnR!*{A0vR>fumSXMvoI7;2CELDAy9v^j-an}#tfWi+85`B6LWo|14wYf79g=9%}(1@n-7Tu@XeC(d8` z`4hozX0YAmjV<x%|CQ-NR1e}&xLMKSkA=gy z?b7d664e3Y-tU>n6?Y}d#M>K zWwcUSU=Nd$lh67JLuO+4SdWqG}=y|(o ztR4GdAqrb_M>OuI=)&viWeluff5JCDsRH5|&1(8I4MI5`v_oQ+bbxwhccr4B{K4(EDP=kFB92WU^ku?(~Dwp=A$Z+ZkZSA~|o9XIY!QfJR% zo0QUhju>O@cusn+0;GkMnOtqEw@NTgJ*$0;INlC6vy*xNnx?Q2-p8i40ad8O*|iNV zY<8{V&TN5zEw797K%u#d^HC;Mq95o45ng&qMB8hY|9@441BXg`==i5xl0LSA8MR^S zmbf_Psg$-s=|*oT9pPV4l6ba3k+%}Mo0JBIhImZvZegw7cvn!N^>Zv*SY1(Tc=06k z?0kxra-#IyZ1#{aw7$}2jZdg75E?N7vk6hdy1Zw&?H;gifY7Saq)sXPovJ>;Pb`<# zpyIcg2&^7fp($Cd6|pl1CzCZGHvug*CzdPI*QEG|2Dg57e2s_3q@QFw)ZD7U5UY8k z^tv6rZoNmwYg#o-dDK+uN{`&p$6rf6+HB5pZQzP}o8grKl)ZDNqmXr!_S_ct@u?EW z&yIx`yJo*m5p3c~-Bg}tbhLqK2;4f*GJ#Ic9Y7qkLBSBk47!ou8;t>A{K#Vf4z#E$ zfiycYTg4XVn`}I=4k1dWT%7B?M^hBuqoj{UX)n=-4eF#4*l}9yn?H>^UNXA~gS#;;_b*&Ea(kg1H`xt)xPx}^VJjy&h+DP+yKXW5R!!&qT+ zx9o?TBC=5Ii1V!L{-D<477ogi&}lkiw%TQY%#380*P@bG=vF zAg|X(bv*Tx=w5I(m>g7(UMIZIZ*aeVelt!cl6F<2*LeV|Op_FJfuLqo=MG5g z6k7{t1jOcAXy~v!)tD+gOXh_7z9?1Sh4nFThU>px-*>Wi2u=Pc>-(j3B5C#gxd+SY z`?FiWT7ADqDCPD2;!lms$?AKDhb(L8zhB?SJUgMj|Ni@u`u?o}#QHvY_`hD?Nqg=aWZDka zI9Cw&E~{YXNw@gElpOlzjqdHUeMgVTZ5GOW8`eJq{-fr%l0BR!qT}s*YU^4em=C64~AIttM^)5kIetf6}HAzh!d# zT(NLJf>mi5_s3}-FXQS0p1MAi*Cq~Yr9d1YY?^7%Bh$cU{q)F+j%V{oIyC#`0uw%} zi1_BKo~Q>K&WCL`ReB62tGDE)+TuK|3}cCKFtOhV)E0YT8_Q2(`2T%=I_>?kpbHvm z&B-Gcq7KVnO=Nu2#t3l*L?|8ZN_Iwi4FK2TD#9b7L5A=(x=G4KgBD6;$`HpAsSLbN zd+by{uf6=A*xFeLLoIH3cnsyw+oJCDUMacU_S&1rK{U8hmm-bU63I4OizBl>xE-QgXIHd$W#xc`p30;NKtyD7Y{jxA~6g2Lz>X?y_5 zG0^o-@6e2L)dazquKDm@k96!lbp%0(6l-1bE9!@Ua7SNGBH)%7x_?Kj^A)BTU~ZKt zAzLdl>1vA|J~&poyTiK-RR3aof$7b$JM(Ye$se_9pNwiv`9bs>h{Hq+y4d& zyfw3z$Rkni4*K>L?%jcKR)jk&4@+~O2Jtu&f4Z3@;_xf>?7ySsrz3wAkKb9EubG*J@C$mS;E&+%4VkGE#J)@+R zA`f@{T=hHz(Jt-S1_b8w1!S_@hlUGLWjeYvjr>eg=bbk0XPXYuEnr=gtXDu*pi zBju zW)l0pKUC~%x9@Kp=IgJ-zTbJ7ufNx7-;djte?=#1qa8i{OZMHfhO9J6+ zseNB(BT$>C*ckhMf`0zS+V|6+^ZF^V@1sBD_46OK?-TX1&%a{don7du`@{cT`<|^e z@TB8O(C(5Cg}^3fYomJgEFUetk#F5-xv#bOwi}#~tXK1in!>>Q>}sY>tij{d2--Q? z2kV0q`Z^pwKjUVSBZ}MM>CG6x z%WG}k>Mq{^nv(n--LKwo2w%F+ll>I?AsK&pvo9_KS7o8yxu~ zfu6zfJQ|*d4d0r5?;Hwg5!isx@?a=rh^yb4*_n(&LO4$1n3QMlt_6p)xR0Vl!@ZH6 zyP+>(3!QYz-1lrzXN3iONm6T)*u*p4kJ$34T~zVY4uv1(ruQD8=pq18Cfw;E<07|;s) zl!-WO6cA?D!!^cyJ+BPU{aoET9KCR8u1}+*NpL#@Y?rS2>g6B7pT5wEKdrR(LcJE> zIE;Usgktd5_{!Exhb4S%jx}jBZF;9X^Pv8!Uml7JIl$vbHi_CGWwD`IgNbJPCy7N~ zR^ON$_N4ckwVDVSYqZ&gftsxWRd@Vf~O;(=H@A)^%yP5q3 zuTUQAsPKjf%&O8&j+6KCE667-zYhi8Lnw=#vPm5 zq+96YVrOwxz#Z|J+&K!3ep{7^vTTtHTR%`Im)lr_78X0kk=QHEhwUIwCK>0Zp4T7r8DmSN*lZi@UEGSee7KR%2$6X^2$6Zs$ zS#I=-S~9Cl|H9%N)M(o^%g{_Y|*R_UJV>CO>uF?o~So-XBZG&X{}Uy76eSRhnBfsLOQ9g|;Gg+cw1I zVk_DINGk)OGXN2Pwi9#`{`?zgYgs6qDL(HsWs6UEfzKm~eAbB1BaF|Hz`?Nlo$?bt z;boP+6{1f&G0~8pJM4bBr!QaIBq#DW?CuEp#vl5{%Bq*Bq|EC@Sq4l!WRQS8ZRFRg z?yGDcP3c;;OqTpsZyWhd>wdYL;b*;5bgw3Un|YWEV;=74H%NOLN!*8V=!_vqV+~1| z-Wey(S0C^}`-sITmphM@sU7+&`KZ{!1coq1`8|IyAKj(=NbUfjApL(2FO!OfUXhthqBC>Zn_3GFd%(vOjuH@~{GW+EH z)b#tG;ve>N-bk>NthVyG_poBZeAv<2pK-J|1seJA&0>s!Zx-)B(3dG;YK{2&32^D& zx-HY{dSmHLeiz4^w2R|S@#PS9QW!7=0CG$vD|g4Z|A)P^fsebY@_y2$ZIG4>FO?_? z14KGigy3Qu1Z098I&~WvkVxDW$SOi)eF@mw=;LZiTF47os|zl=t5%nltZ!6YA)vdY zP)pPm0=m*?eIeircbHYGt5Drt`+R@r-v9jnGnu5VppW}}o_?B{`Ty^^_nv#sx#ymH z?z#7#i?7~i_*NtWT3_g=xOhD&+O@0hJ4ut_7E#1E871OqT=b48!fm9s6q*}bGc>_E z+%{Go9GP~jWjk{Z%^U7~$n8S0ih^wUXNkmp=p=jGxI^_;hM#9E_#fiqmZUb&nZNmv z4Qrq~Nj44hkvq*s3CuTMy58~O&P}36!KdhS0j0d^k1t{({-Gp4xqt}ewp(t^tfjt{SNEzCJ8-uiE$dVl6FFEzyGkK(Nv%sr+Pq93!_ z&SL9&4pfOxM|^fM8rKunRlLrx+}pJ8`*}wT@jD7rSJh9!p=Yz2CY(u{LUy z(W|LnY^9g3pnp7 zksL3gc-lSglVsR3lew^2`p)K2WqNMD5weP;kdlFwMS;ICN>P~quKTw>PZ#tXVkq=2eee)LHzk|#ALLS}Khi72ZKk&ME10S#) z^M@19FZER#lZ-*FmZbg9O3wM@3BzatOfYR&^B?6#q*q!Oyi1I_i^YV2>3SWV2!i$E zGu=AW@DhqJo;A9A%`^?i)^1C-&o7;;#=rA0V>+cKlpy-hIj1RojG{$6-M!w}ljlboO`(7B9;tgf)KfxfB=TDbRQ5HU<-S z9A<+beS-~V_IRAms7KF`a7hGv&?7o?8E zdMS@t-ABm+TI~z{z=qlSNPBY#sHFYP!mUvQx~1`u%8xWC613Uxf3x+mNu!;RN75Q? z`^ofio}%e!D1b^~{8me$yJdnjMg{Y;_?#yk?{gY~Ac05*>g4b%9`TkFKd|e0T;jj| zk@?}++X?FpQOLMq6-vp55mD2{ku|i=R$;Dd=~oUaQ2&dTX%hvCt+Focn>-n1>ZY?r*$?#UiDk;hfn8+R9`p) zCHQYEqW7Z>B($91T7A&r^?`XBE#wCi75sWMxMYH+jRpWS(WOzq7UhmY6%_hknkdxS zET6FeQ6Kaw4SFB>YUGH>tJ-dA?5U{H_eXPVOJd0`2W4XB|6E@vhTf9?EAVf;2vz4^ zQ!W-_N{xlyYx7^$-%aD0qGLqVV~@g*G&jY3G88Mxl&4TzD+6cWB=YoH9+gis89dz9 z5KR-%B!Ts8^eWatoeyGaQs%s%3!uc2J5SI)DCPMB`He|79vCBNx3GiQhAgzC&XvM* zrQw;5NPB|!<}`|`&H0fdS`4nrNm{;T+4}xknE`|)+^e<;zm@gtaVyAgKCq*py)9-> zm^?04c}J?=BdNEcYG=t|wzK3&<_5@&3R5HrKwysS@s7fe424UkGEw2OSIqti{ekkA zsgh+;CAL?@7r)GkPl=W#S}5tH=vI9+tKyU@rlMu_>y64OQCY6rHmDqg*Vl(g{I1(0 zF#)HHa58Ck-?GEnZ0t-9Pi22hR`85C9=_H3i96X&@iQt`&uXKIv!@>nK?k~x& zfsMbF!)sfXxo=Q{2IerjnSHoRl^{^?CaiBUq3>=VZ{xjt=<^E=WBQXiIsV3OXBNk3 zi0@#rAQNCeE!gnhz1?csxI?8Uda(RuGv?dVgPl)A(^$<^?7X$Zu!;wB-DjODT05HC=Kfih zI`puqpQ=et{bq}wuGq596<;pDgi>OA9|c?4-?bZy7B`D*kc;%7`%?xvLRSi@zP;0x z?X`Gx8o3Qpj`KI6yQg$}mOJZj8sK!obBbolA^y23_lu3X-HThYcr(F#Zk$=swpCo2 zwQ4Z8lJAv#vqgRx^Z9wq?fE*pk#7z~J3GZUz3Y7N)IBMhuy(fbO^58v@(tFV=s0cs zyhT`7ZFihwmwlIUnxaHK?T*ITW<=A}1aTFaAQbG~au8)+rxq zdy)wnZ=&@An}6H2SMhv{^XA+hoI|$7ew75j3Z5C+l)DWGb(1P*jOPdVs`vRR6W>AW z&@9F~_jNh>;{lC=c+?;_V9qW0*)>Ogh5=S!7ByM7Jx2!;>7VlvRnJ z3x%z{51&HQMKzecowi{^k@pw093zS08&V=wl}nwb1Y`MPQE*@aUP<8(Az~F`X0ZAI zo`%NjqpkUoX9;I^%Qw3F5AmpEm~pvB@qAUN8ed;zFWY>}3X~$Q#%(iT;@4 z-LxGfDK}s++Stwu*c4#9VQW8BwHuSRNzLKBAun07X(9{W)2)TE+%A{fu44+D4&Ea4 zO`qV5^8UPm9jz7jZ_Zr*(JmdlbabeI05+-l?O1OgMw<=g+#ninK&v&ppETq+AA~5a$*d@;s0lzD{QC_>;a~AoIXK2FjjC6o?=L$K* zjIx(VZCX8~v2;+`U{e?HmKpi;`Ju%8Bb6U1_t2BPDAONRf%NqnS`hc_GM6EFop#Zv z)GAo8GifYGCnIAhdNW7L`DNuPcPePnxKDy#*4jt4l#Sl1Xr%2Y6>?@DT1C>uR0*P3 zioVTg(5QT?ePBm6GFkp-w0{=$nAL8}g~o+2 zUdC2>U_#8~zyuko&w%_QAG6RWj4;uhXBKj_2D0t9geJ%#{Cku?7IQxv_F9yN7L?j0 za&^16rM-UldRan?$_+{rHz|_Kp)GI`9dd8Ik*j)od|>t65>A8vebsl?Gg4pPtv(hy z#q%SL?ohIIhH^kn91#7VD4#A3I~eGGJNoC{?c!rR-`fX%dAH$N0Y2&ibGFC07366I z|0UzA+l&I6X>29hZ$ivc%vu&l_i$LK@g8H{+9YucfujGf=YC=bL4DS!HrlT${W0dw!`S zEi}^rm8Y-bFZ3w)uYuF*)+^4AjcL|#WKCmsd|H;J1%bN zieJsv9+uOtJi^++`lh=qke?PMPv@lo(rK3 zvS(}gC$Jc|@@G*_Zjs`vbQw4Xu0ozjsN)a6$YZou5il&4-H?#exF&bl!5Ta| z$4IpOq4+5LeVr4$A^eJ%yGvl1&G5G-Lc(;)a0)@dfc(ua0lLkMGOI<(LF zi;f~XS?3v??3R-Vf+qofQWQQ_R(Q~(M>5?S{11FWnd#w^_7En3-o$BO~mke2PAt3 z@7#P&y*64<`-P=<&B$>LM6nzj$gx2=9teAK+Q?xZ7V&?zQkJ0|czLqQ!vcd~2oJZr z8`%quB1L(#5m@yGy6vf3cYNuj2>wFB!^TM(Q7U2T z-A2IC`R6PA_Z$I?F8DVd1ebPGyFCdEM#KO*h+f)mqi&hc~4 z`B$Mu{N+mKv#Y??E%HYKjPbToRqf)!!Tfta!WK((5;4W`+UFm!AAe+?h zK_Bf+#8=EXzrgDgDI1(vNEP44Rl0)wH`z7YrwLvD@Io6pQAGOzKi}P20dM^|E%{N2 ztyba(14OwWo3Y{b8(r9DyM~laOv4N~B}uU!CH^+%N0{9r2AY_cuSfyErqakIrp1>6s9-Z16yyIOS1tMU32%OACr0 z9K7577q@=||AqI-_9~1vX6Ke9Kd<0?RDyKN&RYPh(xF7v2=4hMdllO8QPG7Ca&O^k zR}m8fTf84#x(dA9%|GyO(|VhBV+6ozJz31tNH>KQZ9$PkuLde(;;j4{nGv9psIO|{AsK&%_)Bc3aFAl;nywvx+DDPGZP>ONvh&C&ohH< z)_BbikgP7HpvPzOzMGzRBtMoxr ziXgdsswq`SH!bg+CQxpQK)DIK-sR$`4dZ27GD+>K`B4r1Ei2eH|6KOuZ0D6~MdwL| zDD~JXX3V0`)WXh5T08|$&}ZR}rSp(A5@>hWq_WKho)NLn_OVQd`<5mZMC%Uo)7WUR z8mP5jr83?g<9O12Cu+e`qC@&ioH>46Yc3y-bQ^ii(5Vd zL%&$;u{z+Oa`RzuhHStf>otB92B-)SAPe~+4dwg|RC`>g&(@IQT4=EqW@}AYl&Z9_ z_O$K(&Y*c*fli67zRjT?jTv$m(kPo&k>CB@C;fhfeXJ)_zsVc-S0Mp`OAM8Jm;U<8 z-Y80PJJ#2&?h{q;57vesqW3KLaUPp>Wa(pktsP=|%hJKU?dF9~h?0p^giprZ&7!FA zN$bPfn|7Z=ldJi$Pbh}}Kn?i!%z&TWKGsZHnnIepb82VqUXx%h5n$wMQFN zc8YY;I#_kTx6b`yK^P4vE1$xL0oC}9Oys%d=l52aP*Fz>---A|lhv;Lz&leq2pjih zo<34n)Wk{Bm9?g``zJrto^qEmi4Y@#`LbR>o-g5Ds~)>0yFL2Vt6y_Mn1xDzeh zzT6+l8OKbC(|L(>A(}m*|MEi^Log+tkLFbs)yrS-ldx0G(B#7;r;u`Qv=hWkn5>7` zhnJ&-F$9ff+QW<+6G#Lss{oe5>}PogU_WUE1jrFhx4qQG3Zs4le|UeX-qRUc^P~P4oA7?Ey;t|zxI;LZs)U~)P#&L5 z7t(1`!YrkZhh*5?u}%-@6no9c!xJ)Koz=#nuxJ(O&qfv6%qXweu_IO5k#T8uShOA4 zO5!5^R`9nH;6*bej`I4fD1BH5M32}c$mZT67G)!4VQ6fYIl0_uXp>^K44k38A#O`$ zm3jr4wPtCm(WiJ>6KLA5{83i+{Mb}ljgEdys0>{YW?Z8&X+!Cc{>c zjg{s#wd1_nkY4jQOXCj*yTO=cf?#420;YU@lX+uEt@&h_Y)0p87pk7gZ}`w<>3L4q zS&GB0*1_CK;W6U{WuU_K9MP|*tR=hjtJ@8RTm?}uuaXMx7pB?Oom7t!_>dy~Utyqx zAU3B@Oze9gJor(*bqIL{mV~0CVyu6fc+Z<;aRCUDT5hIeN$cb8`Tcd-w9IQMWv{fYCgT8J%1 z003F*u*Q^SN;|Qi(i0VEhxn6NPIg6)&iQ|m_frsA9xGj*QFH!AZ%U5nRpSf(tYk1~ za{skwxO+>WpC_lp2ubzK^{j$^=mW5oQmN4&BKo$v^UJIN4gt3haVBD2B;WM81JVyY zf~TKJXu*w-Y@@uv@$UPunIH=WbtPgJO}wSL4cx?ok8byHF!rL>qQ>0c{1CAN&Uz>b z8Z`jU>YW)VSug03y!!oZik`D&HG;0Jdc(;hJ2B*-7b;BpM#c8Gd3b5Gw>?fuRauvINR%mpZ>NA>g~-$L0UBo6$31k*pW+XpmsGCx$YU(fiV@IZ~xW%}wo z;gcsl5fbbu(^CYI0O$h=@dOzcQOho=XY_nvf8^u*NRjv>f-eq(9wMXx9YbH5LD+27 zHzb91jc&uez8xl>t!^?rTC)n`H`)tNzg#jI8HPQ9F`5vN%44Ixdo47NAAOqJ7o+oV z^TCx53Vw}BDlOe^=k2?{6&`waw=RrVEkft?^4zBt)mGI@Go}m^2^P(n^tkZ=tz!d& z&|YQfb$5kXvbCY$wuVRACBvc>+OufwUAqMlN1d?5Z5~;ky5{hUiRiMjb5vG6NvRPANzosh+Ngz z`D6DeE2FZg5{Z{ep`dQ}-=P<@m0qe&niu2xbPQj=IDp>LhB+Z3#<48hc`BsoVu2nJ zx=tX#bM!(ulkgbXXFP0G3OJ7Q?LMXJ4=B-I1~iWrnrKMda-O(sWPqDLa;5hMRKnpm zaKmQ(#kko8|@dQhEABUj{3)0UOm|r1v^Idl*+Jic?YZ{_sf& zw22xxPYc)I5NJ>$5W{Rw24x9zkL$A4g6sW3k7StwR0E{Z>w0?>$#x0JQFAuZioStlisBlM(@#EovBv=-Wmw^SQtncYW}`Wz_RcPxIkzplW{} zsK)zy@@i$Pdn0mHX6}KXe|W+YC_MZ5hu&zoaYg4?wR#G z!cUFZLP(%8^vegCGRaqC$8jBsereGvBZBkcXHI?+mf(=5zsaP{RG7r??|FvxRn?T| zJXA>4Gd4fSBT~UDp&|V7A1$*s@Z&7~fXS#MR``}lC^K#YJqY{TLf+1(W1<$B;C8=R zUSU@!lnWsMir+8S%S2%cUOT}`Q?Uw?;;g|sEizV;1p7@|f)a?Hf-EX#wfg6n-d^8w zJ6{U!;+@Us^f9{RZrt(0;PS$_qzYV33G z#RCg=qf1{-U512vv%M-!mF~N2i_QmnEq`y~?|T03;;(Ga!UvI6q}WQq<-^si8{(9# zMT3kvTF)xpLL*DuY8giL+Y@Ze7M?MCarQb;s;M*rv5@3b$*&Q08 zN}MHPe>77VUHX|ogkJY9>pvXBJ-YO<@G|S(=wE)VOoL6d{r&uXnZHDLkw0B@jl|VN zL!-e=nYd42RWcFcdGf_u0!0d7abB`z|MlX^mc8y)T6U!gP?WjUogclfrQb?ex&uo1 z6$3`YyQ(rDqs-5%%xuD_?SYYae1H<70^LQpUz-jteFwC@X74rE%lnr*&x97|^7k(O zhWNXkKj{zTg8K+zFF(%J541P={0co!j_Wo|A(Jzh{ah{QBT<{7>CMqalQ3c70Wx|W+wn3&1A zcZb5eB{khPRXsx0_P9@kltS?k)G^)b5;dkT6BsgX5w4gi_Fb`AuGL#{pdOrQ zpyoTPU!QVMgi2s0tS&*%C2LQ_WLtzi6iv}Z=sxdmz-kSCjE(-pA<@K3h*;DoZ2HxV z2Zb=>CP(O97pjQHUJdvp@|eu__%%g0xl)i`l)@;1Bbv;Y;13+5(;Z+(O17}_&TdtWUzukU^f*=YTVzMYr)TxM2I~k6z`a?(l_}d%XwKy)^Op7BqpeuT1fte3809&H2{wBU7R-PxRk+= z*cFg9yw=%C|IukMoBZkX5#26SB1le<)4j|>GQA{-H71vQ_me23cJUpV)$X%l0&B9< zV~A*AzUD{5Qymjo>2()=$v@JU)bqy8AG4`^IJ)LQSdoc6*=%q|RwN`s%hHjzZpl%v zfcfs@n?8C@>3F36t;>=6L#;zqa*%1%TMeu0LpwAn8xPo_^zi=`H->7AZuAIi%UGyp zn|;H_@I0aK`blwVQa@p_ebd;yTE~ai1tO71w`Tc-(47K!=cbm2`9iRnlldOJb>`tszn8Aw%a-xahhNQ-#hihTw^ zyRmcVjmib;j8^_ccvZT^UiuT^^}Lm5*P>+rAhV^@p!c&g(EH<)dR0m9;;8f_CGQDH zs|5_sjxXknhxEd_sdoHh0Qb-4}l)+%<=Q6x2KGl){g{Br7ZKJ{f&{P^Q9OMm2str|8QHmZR>i zpI3T;c$slO;S@Aq507ahfCkU3YheP1R!*7@rbDR@HSIlExn>PV1$?9_- zdvBQEd@j7oyX)-Lob#LUATq6(ug`=%|3I=S?{2AV^}iF9VX;i)qS&Yi8v_s>Pd? zL2K)AhPLwl4rQHdf5R?~0l=VV^)ZliQAock|6KU&Ixu`}eq;K&bnRrOX*^Z8;0Cps8v1Wm$aS!-%N)8v_F$UT@l@W`FQ)TX10X6Aqr%?k%CI>Dk65 z>}%O6MzZ~n$6h$)F`_M+^=SlBBWbfHIQ;6>ufAZ|^h<#-2H7`>X=O+=imT@2;K4BB z>A~0*Fp^&Y(FnfG-gX)xAX;`G9Ud2%5~Kh0ss0(lo#5Ql!1uFOX-#~O+Xucs z?^9E2;0wJbqbpO9dyx=X(DaPHl7*E>q*2`XZ*c=q#l1e%*DB#b2ib=oRbqFM=Y zf9w9154~+{n-UISV@hSxYepWBmsm5(_4A>x`A%X-yhRE_Vr>FWQ{hkCLFpK7kxkPh zQK%+ig@*9$t-*g^Zn>MCwtYid!f1pG!q{rAr>Gh)aR{3cR=RB4J7#b&L1~W$^*39H zhzxuf!&Zi5IIQ?FclyTieH(4Q+b2UB_Nm{b!}?8P!iwwbzUqlxrSG;HOjzwliEInc zX6t$-GND)W8vBMJa5iX^8G28%R%uFi^a;K;-)9qy+87|zIK<*#uN|E@eF=jY}sM0{WiNrxzW$G^y~ZHTo3i{T{YBk6A}DlW@Gq6 zEG#}nJ8*3G_XKgDVBOgTAq{e-z9mRnVW z8FFF{R1E}iPJ}ciQ9`^H+irly{D{QKuP#4h`^*1-{rim9rQ2A4FL!W63bkv)gf>0! zt5F&sEo`HOxMc6eH`5PN$-HV7_cYE&ix-~%|Fg@F_5BQ!g~k`8flZ&-kcgi3*00yt zf7tgc9lJC!vv1)cxg_17v37LnMZDHDyvNOdYcxNZG(9F6fdJi7Kt1k@FOzNy#ze1K z3hqiy3oX^f_j9lECWjZI$WA}7A+E%7f(fF{xXg7Oji=rVt?_k>@cZ+xHiy}rO%dRd zeTz%d$cz~7XNP*6Go{5U6*Z;AA1KijUzgg4@R~)uO7@RjpyiR$D^`Y+TJ-qQ@iXaB zKVkI1Ie;G&r|C06kMol>or@mcW|);0Ur9X!v#aZorM$Sxf_xw0e7E16P7pXM9gA6sG&>qfUWWDN>ff|@_Qy|HQ2fW*f49nF}T zdT3>cSB645y(wdg0xJI^6<;}gG^r^v=lN@9i&HZet#glZ;Jz+2dk#hJ_C>O_{t})fKz(Ys?=b@B$qpkZZI*PJdGoYD?)$ycwgK#^RsafV5<7lU*J9V!rO= zQZw|+8>6#``>j&Cd4)ZUIg&h;1AWsK=6@NfgzT!p33_*)$wHoQ6DtUVI4dHkt$k=h zYQNQOk_=g=7)V6FnErwcax_sGxy|LoFLyjUYACS!e9B1QQ8}Q)^(W51DkXxb*Xppy z=iy6LR9mExs^Pk0aykLZYDPpq ze_o;ESP}y^GE%&uo_1FgN~bb1(bUhne69K?VW8s=X@J8>=SbaNJL^m57w}YQbie%9 znh0fQ;1g%LJ7h_6*Z2|eI}X?KO#EW}&pvnV^ha@x&XxZqHS-tpLyKF=v(0cmK;qf+ zGmdX663G^b#vi&Hu5l6`uTMBnd!Cor*j67pF`hPmY+0xN%Az+8`-nQe>wcNa`p09qUVU34%&-R^; z*$SQR!Uo?Qe`>3L_XXaS9=G!sX6aAuZ!Oc~gae_+uWI+FD4umTddQzRlV4t*!kFKh z*ZH#;7m+s6ep_9B6Fq-4lo4r{WPf?^*16^7!Pm~6e*Vf@=e<_q(6+fSA)39uh6MmX3z_+z=_TPJVRjTsPB>Siuw*akotZ^{E(2FQD5Aj zuc}F(TKG)v+aCDQeR0<<-zHw|@05KK+XJ_TER`tEtsg(9sHB8`yqIS-GuDsQ{inu$ z>mH3NX8K_`nkA?~W>g>8k?a!)ztYmfX@Tev!b>o{nN~4y5EthIEZn(gMnre(&Pl z^v>MWSN$1% zaNfrYZ5Ci_5wn~>@=8r?5ER5iAN)d=^f4emYQZKe@qT8H|73oM_8TD-q?S;a)$j-U zO!;O%wc2^+!X{(pgPUK8X4FT3xAu~W$&|Y&Kw){&6Wm)7y-!UdRyYKWTsR_Xu@sM3;VbI~Q^lBw=~Aq~N}FFn!8+qjoBR54@1>PZ?Hx6G@<2 z`|yqJ@%}B!H$S4*rp^pSdvbX`Q%qJRP`mk4n&nHsS&VJGe%A+0VS(wjap^Tp>2uS=x#>X;Owsw6oIk%a$90jpBkSFl zPP9AdCd^EnAPHT{-%!rE-oxWN=um4N+lD)D8SGp(+_{YFl2pKO=hPtA$#LEn)u4kq z8@ZV-#m#i|vd;W)XJN1tsjv&>+J-x`gPpxR(Y(%{;m+Q{&TgK1c9m(PU# znY?fAiCiSrcqSjsdy^%$9isfn^G^T0L+71_C~0V>j(rF6tA8`kJ3Z--_v5@%qp#B@|D-`e=|)7VVtht@VTKbiMprUbs>+Pw z-Foa%La$b_yw^Mmh>w=ZuJ@53EN6`wKf*>EGG)bGm@Vw!xHY1$?AxZmL1ifWw8L`Q zNLVhTfPxCJ?bhtBW88D~tYK9ye1uJhlI!T7*Y~CuB4uy!818TcI?5fNxl^J0RYsH_ zeC0L$i|_i;6jGZ?u@6yxAS@~apAyL$O$a>klLY=v!Iih$r6W@$`^{nuD;SZ9sH+}p~*u8ka44ygfY5goll>{)sf5B;EAQKs?tA{in;ijxs?Rss3Fb z_qslt(Eq;(9V;UcT5BJkMzibxP+nh+@>-rod4sq*C9g^RjyS;b&=;ojg5^%PlT7$# z$t>S7yCSLC-hGvK>N8y4P2ZWd&sO8ttF|@k1HPG#x0ajEmAv6!Kx9mJhhHhd@j&`UwoeL;@mU5j{cWBR*l;(c>jdqBgLj*IViI&%Sc~HoU+!le8K27gYE&aDJ-E zf1_PNYEBM3gt5%SXtiRVjy)YY8z>Gmb&xttsypf{3#it*1wE|Pp%jv(-4rmOq%Kv$WjSRj0@fiQtJ!{K?1C@-r|Tt(6x=#dt^;E>&4Nlt#0 zTUhp6Ntfv#$cIbK4RHgwAhIbzPuNQ`2geC)6?8Y}Z< zv+lIJ->z%HF1O37BU@c?fDj!dQR(BHi4D6`TryMy0vTO`Tozn=)lhR|2cuNmA=|oerC51 z(I1ofp=y5`@Wb`-(zc~dZq^YeI2$Bj8u zMHhTXkMG6m>S_0hhw**?0DiRk{-(j=w)%j=G1>`%NL!GG$%qsc4(mp=S{>Vjd?H+? zE`9h!6pX11`Zp?p4%X^N5o>xy`>7Q9G(WgLQ09`qaJ141s$D&lf_n`{zZhSnqJ}Rr zQ9QZy{4$KE0)ScVb-JW}{c)v3A;QUa-&(ug*Oh)O=&bOHRGG&o-fv}cnH6*LLN4Cu z@w>ZE{f20Wpgww^A!x(Abav$lOf>BB`t>s|heu!diCv^G41b#ZJG#&Q-5-3~D96IU zFXYeq1M(1c3TeD&{66?if93H;Si_t$XgdUgcNK?SLFzf~gRgPF(xk1Z;7|(k`!w!b z|Hb1eos0MUQYvxZ`pQ>CF-~ zH4=Tay?>hHVmK}z`FLraKG+_?`_So+}-5-jwL4nwCRqk-LWEKwFJ&3~Xt`={S!QFOfR4i1bm0iRw*j9Ldb6+}A%lzkWaW zz5k)}r$_vW*=**wjqQ0+wV>24@xR+O1xEqAFw5N-qP)OmZFk`Q+((~xm+O8pc$^WB z#bGOB0`-LC;H5vpWW?c^<(vnf6GANWbD=m^%MmqID z>niAz{cqpCuzira>Yi*|}cp-j|%f#CK&PZjbRoQKp!-R9q0F#q)}{YqjA z+~c0OAIFZ>4i|dzLpsgbmf!Mp6>Xsz$~S|U^yrhmAz=pA%0m1YZ|^Dntjr1j1AcUw zeum?#C1|T{YO7O&6O8B1dr8E+(uux$+NhYY)j|7Fcbhxx{G`T#9xD-r)%EKSf(R>3 zyd?(Imr?&FHvtZOP#yiQqBbmTOV*%J)j81(yrW=(2A(Bc)aNr?FcUS4^687g{-%^= zs$^MIiQNg|i(h6VSW2`iVXvtqibg!7QK*=q1S%@;dSXP)=9OVLz&cPV4sTa`n0Twc z*xt2$ZKjx*t4Sx|{4*7SoPf+yu#&~U9p z776fz=)0YfL`G&IB8lfOcmRJQ%{Wo$s1JyLYzpT?LY`^(53@ zbv(53AWTH7tV|pCn%Beo3tCQr>s)IMF6`-ELb0u!$$EX3??JsE|fo|-Dtn7y> zXuQ8yQd(zAxYU;lCV;po@t2#q{Eu{Nj~|fSf7>yHf#qgb@uA0oXni{N$IuRw(#V|E z=nIE?6hT4?C$LPelXNCY2yMrnoo=?pxfK2El`%=OYCl3l`r zRcxO(q6hBg$?H1T*Hq_k&0WnXGOzSs2-0dlO`mzhQNo{O`1gn^y(-wWIv?eW6m0e> zOKWuLZU2_ykT7;k)Vc3`e1Wg*ESxh`$ZJXVGWH%Q3TbXtC13_lmhQ~fTcg3sbTV!nc-t0sG zRu&bM*k9F+*i?oq+kTV%sQ-<#*Z=s_s-NaZ^fE^zl-sZSp-fmzNS-aw@MRDNhN zx|hzsEm{MJb%3V_Wk(@k)=wE1&Tm{h0^`}i`>W?92kLlgVFE?|ypW(?DfTnx3*)); z$G-KE(IfB9?^Gb8wa6xC_CZDNt45WYby&O{sQ6yn^$>mO({l%Rc=`vcoR&arHy*P1 zHmQ@N7Su#3v4|@3(Xn(h+y5B(1hL4g=y4HHPnRC>5B|bYv9N~zX8jc8WH)5ha>$21 z(PNJidY!`WgoAILnnO#_cW!G)$S4O5gK8SbkaD>xc+9*1K5{1S`>Mtds~?laST&{0 z6bPllAvPW}C4-sN9Z2=4#$I=Sh)(gC34wwTU{Ek!CLEs!j@8;MiGb&ysZ_D9gLORB zQq4MdeK~SQZ4DKut-hNi$HT6Q^RR4zGA~LN?vy51>1p@ITRcr$)ey*OAL=?)#YrB( z1) zm+b!0Mz&_wmA-GFqFL!6`-yI-E4ebM?T6NbDNQHN`6-P*$%%Nrn^Xrwd|OD)@;%~T zyVscHMnQtnS-tUE*BKGnF*fTFY6 z!wFOX+xvkD>rB0D9-F^`Ghek(Il5%2^j>tCLVh$H>U{q{d4hL~J3YnYA&ZVNpP>Bu zrhy;Qpwc&^7xS71HtWUR(Tn*_15W{1`h4`F;i^yS*km7Gxv3=&w2oEQvrcugrOZwK zNOS1qUr+LySdvXGT?XxQuNm6DW?=h#o!-*T>s5iO?c0lowGTY9sJ;KIyK{q$tEfvn zXy5J@w+~F8)!skZziRO8daBgx?T;@Uc=W9Puk{a}H!l=0@W@&HU+o{v&lg(8O%iSt zdK5KgXm0XX67j6P{44~W`XJod@EK31g6Py$ELxVRW!KxqUHOV8+2I8i?hy#W{nTq{ zsl=$ynpA;%6Sz;W8k{#1_4+E*=M}Z-FRl#9NDxj3M-1Fe<^FK(WO2vze{Ev$(5lkv zi$9mz2{>951EmEZ?q2zpr7BIz(m5~O_hmpoar*140j{)~_UOyBNJ0W9k8 z(tfB?Q*xYf$FLyH+T*WE0`)zRSG=dgTEA;lVZ7JeR)%S_eQ&bE#Me@Z;8oeAeJ}mD zDcQp6%j(o={cyK&)dptr6C_2D?$#6Ju}TpJcr1S};qMjvp0-y!F>1wJMlwIc<{d zopz7Vvg++{(vKOph!f4DK`D;?wI!`N_NR@p1!Akla!yiXKgKrxrg`ObRXTt5ZtBl4 z`#Fuxwr-3AwiTmWU~JBKn3T>5Z>wW@k9JJBb|kd~hRGdgK*jcV*e~&L#eRuO^;^>( zpQOsE{Lpr$Tq$bY9UWrOEuM3Z2AE6(vWppn;}uroniNw6M@ZYwY?_OLm;UBH2?A@k z|9w;glLc^`u|Jt<73;eLJ8V@qMhg12ifL&zB%@!T5LU=i;$d@sNY<>zo{@&~m{^|w zivC-LXS{!=nO=s@?tqF<)Vb5`=9AC>&1)(o566{z(_!A#YA2FxWA}_2J5B+6_=dn8 zjeMu>NKuQw#d7ci62n}y<%V3{J=!U62x0Ag%DwR0^mm_i5{G5{%rK z7|$<`1Tm0}JJgco5f+zinZaKf1at3~d7^&(LJtK?CfzH)lH5RS^6%-b?qUw~O3#ja z?V*wDIW4-wxTWWOgO-@xLVlVlj>tG6`|0y4BHGkn@LIMSvmxd!I68J!XHTmnS1o)BbAPItKp4{fGUxM%-9Bt^O`aWnO><_hN|}L}}AwRxRPfRE{YhQ$uEN zMy96l!(ezbRzp1h-lZPp{>;kSj(|Cyce~FU&e4ul@RdrKAbCVn+`wHxyvEsG*voC$3gOHLNe@L^q?qf zYRW4vdJG+4h+XnSP*}Z3`@IayYWh~)*KIX_`fiEmez&LW&#@uJVn5BpZKj;X{bG5E zFWurxPhg$cG^&rtB=iq9LfA*6Z9F(x{&TpS5qDb?lZM!@B>8rav3ook52CrCjRqz! zdF7^vuL*-t6cXg;MQgTC*SQA|@}Yh>2`LX*LjU0&Jz4gAt3lirAWX)qt4w%>ZdGn=jfwEe%?}kGuMr`jNlMSc+|)Uf$m-y@}Mt|1^G@=^l@tjT%4k3{r?R z0bjBXP(HE*Z1*W$U4vsMX3SIit9L&#t&nr3D9{2Ore55uaO>GC%k4hKZ8;QS11H8p z-LW=~ni`=Ro!IpeU(Po3L84i-9Us%@w%&?zHh3sMevYX&w~4Y;6Y6K<4mIeadzy|} zrSfC_9_*v1D(s`AHB}4VN|(L6Wu|h4jL^HwYm0c0=&KkcWRaUL$=XQa9)JIWT8^Z^ z5?>zUjXVFi%AqFmO1b5BZ%+*^C0~T+zdR|2h5W5TuPwMN$KBePcaM5NMWW; zG|KtI*rv;1%?41BcQr&Pk%=Nz+UX&fyk=?8XJa@|(sZ-A^D(|pZ*N{V&mYd;1F_)S zDrs$b<~RD2o5y8t*|Cz`xoO%QOv03R&~k*yJlJ&=uMTCP^jYfkoQNj*YC)LGb0Xe2 zko8vdguS1zobjpC1+^+4s+3!7sE~52LmSb&Ge-R$(WkfgGMh$*VF!r-jnO41bE*U$ ziE+N}WWzY;RdY3m`_Pxw3o88|dfqBjn3s*&w+$gCIpVZPt#tkF+=Y@HJ5yu-^P~dN$Ls(nV@563W`}2#tN$n>~|FC^7~j0584bkMd;6z%<0bjoe+ny2m`R7S#)C$og-rd6Al`>*F9<|~{-{|$AI3||AT4qtAk}W` zp2Pq^|J0n$)&s5&Q+^O}H)-xpS)gQ^#^35J_R`0KLl?x%3JX1v-qlZ0CJxwFq|!0+ zqmdI%>ty8YRVEOQ?uIwRP1*#>pC-E-{()hor0G5Vg{p)B`$hN4A7kyKrG83LPIvP- zKPe<)#<@RQ;g18WvdCh1owt;LpFb;npXv`xHBggp>+5d`X8+EGL`IYHXe!s zF^Tmnh(P@Vdgy8Tfcgy$(#{wN$e=m6spZ;`OQ(7kR5omaiGV0X=}5khRGvn`w?!dd z=U9lBbtQln0knua7wyDS2>=D8rNZR_3{LxIexdp--azyAc;@5PIQ;hbPbzmtWI^7H z1d`&X9@Rrn)0RKfCIop6ctfg~{?U#pHDLHz81YTFeO0Lz*zha_a&=wtlYu&LH{{K$ z!JZ+*1PW-mlo#|j1akPGP|9hO>xm!K>kzYjijS1b<8s4W6b>^$UJH@GSthJInR7Kf z2TLcZzyO{IiZI`FzhLLbuyxfz5!QDC|4jcG^JoJ)K>O{(Wsc|v(-dWOF_2uTO6Hg0 zH?PqvqO=-DR%^6ADss`E`b5NhfH&n32u9xvTF$ysRud-pQ7&k7$;Bdfw9L|UFeEsG zvevn07dY952&mHOi1cavdb>TDa?7fOp5biDUWF@xc-0+Vkwf8TSSG*3Kk-@Ywh8{& zQ@NMDqViWG)JC6lyT7rb<<|?WN60|VB!*5S2=L7Yk6Dtxx1j}u8IaVUaFa^gqGJ>G zP+}%mrY90)`c_)@BV1}Myv6N|Fg5m{<-SOHytg0^dhp@?K5k9 z883Z2ExcSj=XpDYaM|XfFv+J83#}310F9s@H6C`UT+l<2`@(y*SLsS6^-0uwgKywe zuM4y@^2))x1$w<{d!zL`AlW;3=Y9~zNZsCfVd-6>O+^ltMtq#o26Ajrj?af2ZRA)j z_%>2jD`gRaE`O6qhZa!ZSj&@*mxL6mY0O`IpeR`N1}^QXTX(z^k%zxf@Ngyp4+?dq z`vlMv4II@0rRDKsN{fcu$RH%LGBomo*IB#US(f2%O^T26*yx2#)U+H*YN-a5F-?`N zilO3nA%iLWXUuih4rSANmt70f^X{BKUVyC^BdLo zP|`H|Q*U+9ZZpgD!7tRkKKKPv(uO=rUD$j)ng7h+BER9+C|OUjp;hIxvDHHE(ox7= zO~;Zov`lZC7&4d*x3`zO_r-OJ;G_*tX0!F{*#s+~5l$d@k%IB-n*MsiWbhL6T3sR) za*4gT7zJ>#LieJerP4br@6PsiGHy?~omY6iLbVFtgH=XEjg|n#a(V}{qB%>qty#L! z4|@8hmC*>=r-?zovJbq(B|l5**BKYf!2>WRknqkLa3xJ_m_ zM(U}^E>lWVZK83QDw}oZSIX6T%w$xlY-Dwd4x+Jw*(?mzI7I{W+qX9u+$A@7Y6UU_ zHcqk{GNEq>hB~yl4ir+QlumSjsU}EXRIp9ySLLywLSL89uSt7WfV@e$#Ja4l6Z+lV z{ccrV7Jhz(UQrDX#SN!}+%1N!3~QiGbGMaCuy>(GtJ{xT^w(4vpBurXBDOW)AD6$E z!ARK8QNFGGuKc)H4GfHw4-VkxuKrOZiV&{cYWYj2h4$!YTKe^UZ>~%JQuAPNp~21^ z5#_mM_3jl|7WfBtGua;@$dV)f`EDGTo^MVA1(O`X3)}}w&J>oBk;C)nzhGXYm;57M zqYPCzw}9=kIc3jp-;*B7ts2Vx*UsFYy3)HwIu;LgoZ%ju$B>_UxOklqk{e~AuY9W1 zZI8EGyamfR^CX^HPwFW6f%+{E8J5vfroRKBRgD16W?-A$ut{=xm6|0{>Yo23ZCu|a ztnk_{^X22U1<7sX6v({NcZNH-rn04d!mac*)%|n0v)w?pMIom%c!* zJpk0v%cg0;`!{L+U* zY8R;su#*n;C10S_hT=O-MHq@b04$6FE)~FnVpj~%2f(6rCqyNz6Trga$_T)Z1;8|} zTV6UswQOqHM6VIpqGBor)1U^}K{1#%BMGdrShP+JK7RNC>{&6`O#$qn;@vTrMi#&h zj=}yhfIX}DH!+w7U%(c}U^@cX!Nqkk*e(yYBnJCd09#!2J{QByd9Xubupb7nCB+ls z()M_;rWouO0ql_CUh584ngXA|Efs?`@J0k_D(;HGgUr~jqSZv^S{U`NJa>jK!bi}%K0gC49o2HO*i8ZKImPp1uyGG|R1Efy0qnWO7sX(c9_)EB*p2{pRIwoj+vUNYAA@}> zfIYAHJ@d1BdGlaL$6!AUV9zh!7K82aV8_H@zX)JQ7vC3yDJ&KVNylIfypg;eQ|yVs znmyRDG1w6SEM07m!7?7~xEQP@fE`6DM1{?HX8FXx< z-vZbP#a6&X!R5sh_~o_V^&vG=)ExlH(I5MCXmahyg5P|KHGz?(d-+<+L2E-C<#2Di zRv7CNt`N)U;lJDxJwnWqOzL zrDX(T+w&b}o~<%l^X^OG=0dDk8NS%A%<$!3!icts2XQDB6tHP(nP}8Mclk#>?eb~2 ztxp7Jbvj&==8jaHKHyAvss%-9;=K~q{b6sXo1^>}G;OEsS|E;(hXDj~$ zHOhba9OYkqfbdtb$JQ_MLRW%9QSGw$R^ZLZ| zrwju*YN>OKX~{PJrlSB^AE&EO%t;JdW(asDv|&w=ai`~YuRB!pjgD*OjJ$9pmLzW)~!!59%E-k+aT+I{2-d-i|mwKf0KO7hOxoAHjGQe2e^$ zKGl?}Yg*2I5Tl(F?!3=wk=JH8iZU?IJ>MI5s67^vw@MNcuTSq!JZ`~=NkDS&A67p@ z&%B>6(`ndmWn;WembLx>XOLV({VO+#1SZVYE_^1niGNk)J^vXl@4s!xeH!@9jF%)5 zX#!Rt0zOW1XYMhkmygxEN6Y{uB9fpa#S3*z5R^O#r>Ec~@kfslZ}GoOGNK6U0Slch zug%Z6e}(n=$0{b5wc-h8#pmPu#^=6wnWS$6Wgqo~P$JA8uNm=5SJcF3wsRdLW% zS>AEU26-=sI1uWs5QmC?>i=1crPzP6Su+c-0y!+}ZB))PcQ>{H`4AOK5EMazVp=Mc+N^3 z`JLtW7=LZ<@(&v-e*R5+O>%en8`q_$I@4>3rx{v(D3|oj4NS%% zWEd0@9IndWF-!gh`~WXVsUE#-8NM zmd`WpMSz%-`z-T%pOx5#Ef3^37;C=8-*@=?34fC3ttvGh&!YVYshznd`d*VFtjAfr z`q0+$rt%*X^sEU^on1vb9^I5!zka#$AS;u|$#hdHH;#l)k@t<{rI;yqhT?g0x0RY} zWnb4;I%7C@8w-R>V2;2qdLMlH*3R7R{_#~jss?T@^=mrOmV+ljbNz`{`RLL{U)gSY z)mZy@BWSvpf-rJA=Dy3K(qQh3?E9lp?l*r)@n7ZVZg>0#_U;|deUZ9x&QW1~>BFkF zbbYKVs`agxU!i#$-8cze%to}hm=7aAqmzR)D{S?2fXUF`qcvsq5XVQZI zQa;SlB_~NsMQ&MSC3ja{>BW53mzKehfBC2}WFnjraDy3k3{UTyNCM?6} zn{ zTXb2`5BQUFX)%36^oHDxA|$=h`lZe=#rL+ug8gK6zM~Dn23c zTli}K*jD_i9yf&4*3z3@>3pArhLYto>UToAQ*-K**I7tee$?+RY#+}k_XYp9fG#F{ z1~_7Zv}xXkv^GmyMcTb}^LZ`&w6>%+So9IYoEComUZP3yUX<8!5c2Q&-&JJ`Af$cQ z(tO#>SnEokQ0a^kvgG_pE!0w18Y#bK#3&!&QoIt1UbaO(?qBlPz?1pWyJ}ItJ~gqL=#640MwPfE3qj5Lq6Kb*giNVlx)<= ztQy?J`8Rkz-K&ljN-7sN zE2VwBOTgy|*l^ppL)FJ7vLC-tzlONx-_KHk2CLCd`lFj1vA*BD3jjF6IH}DtHk_lq zDMDfMquW&9lgE*RS*dQl9^n^u0vtL_9O9=KbQVfuok$9V@n>{O8J|zVfTt+CnY0w} z&6Kj6cYC7kc*Q#n!*a$+W&EKT_ShtL9g`+E*gJ`gG@-7z(K1RSY42Yn*vb|o%o=&r zv}^MOkM2WO)B~6$yy{RAouDJ@KF?aMG|ti+KWw@%>u&i6G+5^?Kw#RSxWITDRwl!5 zCte4wf^mB`idM=B4@}PaE|!CAxvlw8v(uPrxzJ%g{cUlnla!9GwWFKGKX=BlAgCp* z(ax^+@m9UsWMB|`;|_5qIfPucWv0C}+R^GhI8@emWl8iu#NU1sv1om7^BxNI{FRZ} zv1_pNr(AUPMAL1#pMv+av2b+B&9o&kT)1yu%Ja|-yT}Y7r}Q=AzibM-*(c=ol-}!{ z2bC*RH20wPNA7sBO_qar>M{s=eQ_3^i z@r3JoQVD+CVr=8;;^EGp!v0D^XbN8Y`cvLvA$%=0_*L0meynh8Xwy!P*G4zFKsuaTk<_L3;FY13KY zQ(Vo*aPC)woBNSExc)P!(&sTZ(L7YOUEp7&fOU1D`q61+7`;I+Lv2&vOd@fE07A-b zmQu!}_;xhQuvIx|nudz|Bv9mNy3O9S4^8ApZqN&8s1EFI#{7|Pi5hu>SAEu7UK5o+ z;ye3Lp1Hy3gmMq%v;36$;HO4FjZ%I~`{-yE#`Up{{s~ zw3sZPjXTu0E@I0&GWWBMVCnW{?^WY?ZExtyK5A zZlQTYo47T!xm8~y{!6%zZ1xE(bHCSJ=|M9dH0?p{%Y*s^Kre6$J!rEBl^j!)eR)uy z0O)delm~6}pmiS9zC5T;kQWbk&IsFH@BEl_%;qeRgHwZ>^FD_jY38nBd%^XGkZzZI zl?57XcbDA){kNa;p!*3ge6aKAYsi6$paVVxY!<4Gx%d21f`?~uw4>2&=WH9O)<$Jp z>!i1GjZLWzE_mt8G%deji(V}^7XqrRS6c_%$1W9{Zz~<4a0asOF^qDo-A|WpWTG{= z`9dlkw$H)M+bAJ_ueme$g{qhy+`LEc%;w*`o1gSpz41L(FObeDzTA2OHcCKhqS)En zKHjF6pT2(qn(=mf%cZodhOLTKgYCU*N30s$18n%PQJSB4_cyEa@-shp-j$I~7&@=O z&t0l)=sXN=Q#SnU=BM*-6|FZ-OKSQTMmu`l&dp_!O?J0cDsyIk8yE6l7$|4?a}0p?dt+c-s;_u^e`W$y*|tas7@#z@gWRD^ya zTS6G6A6IA==H`B-4tbR{u)TNZ=KFckFnoi)+^hc#;%t5&KNWJi*;+ONIHMmYIBb%d zP>10W^SNo$>+HGsPQHdM7ph=hX(x5|tF#40DH+{Xn(LMKGuMM!=#AQS?em35uG@NG zw`=^kfOB0|eis<3i-LoFRU99oBLhd5PI9hvD5~A);#T+q3nln!9US7DMjKr^0I+*@ zr&XA@8ju$w6c2&U8|XX5f3iWdqu}1jU;{c?1I_}x%cEmo73eH#I=DDx*+wmKXwBldyO53a)X+d$PG@?m|7Z*PT=!1mrUmr7iWvI8cxJdF=0n;Ox&wH3=VA91m z@&=f#9yR0Ez(gZS{B15MQ4;_1Pg+w_LV?N5=+e*rrDm2(?&GU{+@_Xa@*u`sBEp7l z=u+m<(K=Q6@?lexqf5U?hUn#KQVyL@QP&=shfh&7ih6W6s00N(Y7cIT+(0?i&JhJ8 z9c-jCmFk{Ucf*!9yr$hE8xE z@}#ut!){J_1s=DY1{IBUtK~$=xoGjyD=(<0iC$akXzkN2AFtpzt5+}LnEMlt#a)~`< z{~cY)9Nq04b}7*BZ2%j7i_biv%w)3fim~EMnJB@t3xKLtZL$dRBiH+L?M4^8>skhm zjvzfK28dMbrb8sN`Z~xh4M7oR9#Mq7AGo_wxe985Su7;@x~^}T3U%(%H}CbV?HGE- ze!1ov>i)A(H~ocuAGWDQeCv{c_qpTQK&^VSdd#|;Y@^GjmPsoxd{?xZ>l=K|Hyz@0 zwv|?>EtUh$c)Mun@v3^~D+S_@kdV~-U*a}2!tmDCrI&;nr$deQT~Xr;RHF%#E!Ox$ zEr+v>=H-p332^=im*>kO*>fB{Eo=Xw*iF$e`q#*TmcG{y` zFGfKfl#ybyuCa|Rn_6}oVEC@URrbRj7$m~RpeU(V0x`O@UD*8NnwTQR(r*MPrT5}c zunPs-_l$zOL&26x!F|5qIu-n<$$~#X!D2Kc6Ma)v^tqQE>YI|*W7>V`dN1C4LXGxa zQR8zWM)%uwF`jqDm4^TD8&8fs|a zs~O@p@UBturw8fdS^79wAB**|q#mfop}U)I=S6<|bUJ^~-T9FQ1=}T0D3X2Q{u;w= z=m8X0HoyJx^kqX2T*mKJ;$NEtsLeRZk1TImrHEEZ5uM79R$sxXWK()Q)YWt|xB&^SU z&sX~k5(bBtyvh>RR3;SPj4TW< zX|=Q$Rizay?J!GQQk8b9rTyZ)!utt66L=RDQ98Wj+m`k~RoZ`{Z-r4}XLF zeSp8e`TH(^-{()6Qq;Vhzq9$fn7?=N_d)({ceaq;iQ znBVRGdjiMe4_Ma<`xr_6D>F1fBOPdV8`Te?uo(NC-bA_b;#RD81DR} z(&Q_Wt~jq1<*Y{6^v{nFE|By;gV_uge9Lro z4Hoo3wO**!Q)a;$78j~m@NJ*Fngw^g(Yx5nEa<~E)KB%4*B5c&*SPx!bAbz^$`Nzn zj+hGtvbi<4&E$e5w31NG1;qiW>B#_tEgF2H^T>QWmH2VlpYK0?C51n}bpPSu$L%pV z<6pDcKS#7^4oAc&dn<;|Z)KB*0!U4KQmE?4U;>_f=BrxLcDSRhQ)m$ImX8cN(y%<3 z0E8fn6TT=CSx`CS=vu&_Pqnnr<7&y(#O)V=vAi5){$RyAQ+0n93e0Kh-Yc$m74{U6@m20reh z+W+6QX`4bz!b2e-O3(mXC=j4Pkf$vqu+;>DQV7aJR4h>uBeW9kMM+IovfVCLq*@>F z=3Y^H5wR*tizq2z2>ui+f>!Y%C~{|6lqy>4!=?ZC=gfR}zne5|h3mhsZst1==gc{0 z&YXFk0i8NKYvtxjultT>PtX zi*}}dI~diGa&J1?V;l_-!*c2Lm>a_w#S5e2eNN#beaIVBIO+RByty!)R$?DXAGLU_ z#vx@|Qhxpo?WB&_07ZX1SePU0kTAibA#b=`&DOg*CH*EVx1btGyz~~dy;EG0o@RLp zuk*Xenv3-@xoVc@XcIwvRM4P2neFk98QOf#vgbBd+7k`RWlz{KglaR>&9Qpc0fyke zEt)xJ`_a{{(-P{tvadQ^s?@206gEEBik9X5%tctG&L@>eSP;+Vo4qe3CufW0teu)K z-=1_j^hU-gM{8Zd6W5x?!$w7Z*^Jk$_D*;I*VXW}dNP;_*_v4TI{Me6*J^R1J?U@F zcQZY@&7|B~_!M0D1}I|%nfL2cOFbsPG=Ugx!Ilb?M7nB89&T64Dvd}Fqj zMeD{qmMH(6@#U{`Ey~vAw<0~SmA2%?1|Rvb zuRUPnx2V^>^G2g#9ax4fqjf|L1Ghse(WId6YX^DzGb|{e z*BNwhy-A3S5eA|72HB5>lBM?(&6uCn!u65EJ+3tY*HFM^ZiLH6%D8|DHDNMD%u$l1 zu_<58inXwmzVK>-blF3a3WIv}FNTG^+`m(2m9m$5EgHorY~-7pIcFdX^^v$!|C5|n zu?36SsL>{%6NLkT>6to>1t1u?5aCcuyN63MFE$KED`}op!EQxw2 z{TZW}jaP=byzASey+mk>CGEEMBdt>R&%~-i-HH~iN8)pp?b zH50lk@Y0_qm3>KnGSbVSLQegmMKcgr&q(Y0D53XNxu4rwy(a#(evDi;tEfpr9b~hR zHViREamz3ZBTJ_<0XolG845@{iP}-|OrLS5!-ICFsKM>$m;c9#GhN$f{DTTBp4$7v~Z0%9IJDa+=m~jcGHj0gIe}Vi!xo{3h>#f?nboWt`pq4KvJ$4nuqJHM1 zhKaIO;MQSNo-jZmr_M41_2j^~pE{(C#vw`ZNn@!KtX-JIL1V{n{D{s!tr{ZGUB;M( zT-FtNU|B8HqNKa?+tU(-SF3`u%;K(Mpg@9XIryOWnb#{S%GbU|QYYIw64gUS9XNEj zNhPKQmlToX?B^EBD1P5dOxN`JGRpfvljQ$pc^}55tZ=0AzW7t)%KNQ*?X0}#3S@kF zKQwRB@-FzOVRHNzm-q9GGsq=g-uHbgUfwtP1W|dv&z5q6Vft5<_r&)s%V$H~mzfQM z;*D0rM$tGbj1=AM{3f&wv-MEdB<;1mPeWrKS264n)!fD#Gu`usU7ccDF0B$q=k-JU z{X2>O=*0MrapNP*mv2XPgo1pDx1o?uH1}uEuyVKI2a<4WII1Ej6H|ve0x6k%yPMih=y$7@_lUDz#p11zO9({xenYyh zun4Q7{?d-*f!#=0zkAo^A&^~`2iymF2+aLq-(8Z&PeVD=NJt*5d;WiuNBuu9k6qM{ z_oQp;OTrM0duq-u3FF>(d+viUa@HoiV&&+Ra`2D(*;(0{ZjxT1t5hIG`1cW+v^bqP z%+u+a%|PQd{v6leb#yTj#oq~EJMZP`N(p-+H6_zng2 zU&_FodeM9Za19IAn+C0@_RtOP!vT82`a_q1>cjv72U35M@-nHT4l~|#*$~*B87ZU@ z?#!TBPSvRPQRl+?g4HRSTc(E;(IE_-cKv^~-Iz-&JgbqbB<;ROzyG5vGJ^2Kd=Xk4 z^4@4Q+2dzs2mMCWvLF2E6yh#X+AWYC_dLBrpCjoyTq<~z0!zBLS#QDy9cF;ch}w)4 z%wq`pxuaL*`||VuN@e~VFDcbS<-g22D?7`d^+5{G_>l;DW&HY371f2o;M%~9aCKue zP}7K3_c&@sp{d(^4mGsYS^s?Y(ttQ6#61>=rn#f&Oew!6DH%0kz%R|KNGwe#8ramh z-hGABLy}dqWQF|+ToIihS}z0m;lJebo(OT%udJ&g7# zF^q1;6{B0_hnm$w4|PMh@~;X0wL&_VWsu^+xSYm=4~FC`<#NVjF>>m^jt!tsFpd#D zrf@9S63=8tm&8aYbt~*0RTXQJ zdKFqk&3J*R%l)ry@xdY$xp-OBP(6F2dwoSnomIvGGfY(dZ@(SUtR`1X6=xI z>qOwTV6%o41C18=hES#!7|48$$fO6as&1z?USHayvZS?mLmPswpNbs`eb!FoQg!l=8OmTvVL*QO5`CcJh05NV zvo0CyZZ~SvC%5=D7zDYIq#CA}yejwJrSsNe`W<3w0A)(ui*z}QZ}t-Z3|WYG%s;t^ zIpwURQhNVLZth}@LB`s$oeWR7{pQ5ic=k7uLM15z3fIGOp@u(YFInzQJnwJtu);6&pun&O}mb8vuAXr{?Rbx4V4^pjXYDv@L zvdKO1r`Uxe*R%6EUE9K$?yce8>!e4BZM7vUMq*S4b!X^1OD%uGoJdjk`FB4!@jmG7 z<+tdMuPDF8|7?EKUU)_MZDE3D2mJY6%@oIi8kGSBc1LtKy^59cOouvSHCu(bPF*$V zXpk;g(eX##{_(S=73+1TRg~~C!;EtF5Cko<)G|>_m2PSmNia%B%N?T@GnP#lzgvc6 zUD0LmOpepVKtH-{0~F(xuVaR@4>(=t%AhMe8d2U0v)_DJH?rQhl>-AJi{kuV(6Gq=O2)IZ72to)7(++&}NoHW&;Uz z=__g5oj!btZFhRrrEGU%k7vTY-wH~pR13R(Eu_4V4cib^Hg)NfeiXeWbP(Ac1jjRQ zV{bc>-sI!UQdO?WZOZx8{$@}{@ky)q?!6~PWkR+paHWa=BR%HSL?{T2k}B>%-_CoL z6YfX6H_-rlkHKTaTsarfGyXnBpPsJwcG6GWkIxFtIwswQ`9bC)XBR){lAo$@##LvR ziMHz`Cf$-hvYb!@pP=XccdA)s7W!XH&!qRok0BwuFWwetzRo4? zh-)izm7AII-|VI^Bf%x%T2T76Ep9P)uRAj+1{!-3oX0N6!m%{Iu;3r!)=hbexz^)C z{F(`64FL{WI?&FPwpm)ql!4%YkgsGtc&|SSQu;4UK-tEKa!#pa;>E$N0usB z!Kz6txu(!(WVF_RsGc>ldfXJK>fLUuwGb9v@_s05WMgl!HL^q9(YGq5>>j&%C4aoKUc8gU3?>pW#0jlyUxajtwTj#EYTwUBFr?29(ZO7y@cWh zyP2L9u)`9CyERd80H1i^D;G-R2uyNYGG=(72^f+3r6>ko$ene?vj&*}dl)K4ka z7#(|*?nyFDHDcyMOgM=a&i|Vz?`$-YK3sZFV5~wvKK{FL`tchAcBmi6K=k(Y<3f*X z6k&|lk30Wv+58Lj<5{-gSL(+wh8@Wq>S{mp^7P~Evx9zo4ovPM+v7h$KmP0K$@SwC z3tpLijIb&jiZrfG+dUt@Q~j6;F(v(o+J^?~BrIRhV5UG_HP#+z%NyLiOea_?rk-HZ zeWn#w?CB+IHg*pG7P~J|jhw;1bpm{+>IC^?L~J%vNomKZubR|*YnW7{pHu2U5Yen8 z7zDMs8hJpl^c`!U+CJR1aB zZaGWq2Vo2Rpz0a~b*)!t!X0Tl(rr$Zc?U)CM{GSFmNZggK5ZQ)MWo!xZ&yCi9H1ry z$xmm}ZF7qbgfqmjnhY^WA$nZKPyH1S$BK1bfR_H)W*==CgfWjyF^=--iB@KmU$b9_ z`G5==_z=8}Wa5(URzy$nelMWO`K6&qxKmepL=;0MzfXrHiwXR`@ole|-=0PA`&)Km zD$^d3y90iW%#W0G`sMShc`4Wa(MkCIGdnaz$pn7i+VzV0?K>ZSU$CXoo%5@Kqx*zT zHt$;b+IUh*;OirUf_;H}ovpSi56PgNl#)@S}@|NXe*fD3|+A$25Q0 z<=M2!beE$mY&svrcQoMpOEF8yPrta7oCU>FaQ%6u;6!m<@gL**t7bnYrMFnOeR_ZE z!z<~%>ilv}yFhR4+e*pf^p3``jHkCFoi+Q!Ez&i*l6ky8%$Ldnm?>dqVqgs{omCpd=ok{ViXAVPd!yz}XIT2B zUUsC(V~tW{?J&SkZFCKsY%$U<(!Y zmiSZ+^Z9AGfAWHcYmO+=G)4RDA~=o*>!`3FNf)Tq+X}CdIVPc(2=nT>j)wGHd%YEl zzalJHluEwW#6YVM#4#BBE9DA}`K`Gm^WcfKIbjJS$}d%?LLUqKI^6NITJDQMD4Rl} zjku+`zx!-Ht2{&WzA`J}per)-kbY%DENwMRR)nY>Q(gl$RY|C+UcIprrY~VhekKfm zbuO0hQ>Eo^8S~<_!hI&bavSECW2C_~LX!_CI`d%>W+6>+G?jo!(gX{qDWYQ1tVyYi z7gCawYgsmtcvlEy2uOB#FHvirBip0;5Be|<}K0eyz^8dUAG=gp&Q zA?7YEPb$csi3|8bbpw~4QnBe5a;0ypNhO|#%=Jr#(OY#Y4Q~jH*2p5MTLrn4Pr%!& zGVTL`G|DOuei2mCKx+e|vc&^~DhIG6B{=X=2JZIr${G>fuq!V7e2R5UVMe`93a8l( z{>96=$$PWGYZ&>X*0J^PtISH8xYc`%R^{n$A`OxlK8eK8+sq*AkpUG`^04TRjxd)9 zHr|`umcOmCF1@`6X)*<$b&}~^3TcPDelk|5((ds;dzy`fw0k0Wla=yFiTY-DJLqNO zOVo$SDij;~C&;5WAPe%iF2XGd2YI}6JjRkdmf8O0mch2h%Onz*(Q*joDFs=;8L<{D z^X)2A_~>@C0`e|tLYHmT*~iBm8)7;Ndr&`V%`X!(T|%`MaCJTu&@HNZT%+}XeKjc_ z8H;$84Ff_%BAp9sH!Y`n`K5Ua`B^1TyZ^MFY?yXWxnnO-in9Kh9#*t_O=|b7ww4=t zUs?RZy8Gy9kz%R(6p`ob^WTWYyO2|BGDLk61M=zh-Ft=#A#9o7?p&%JrVXXqQG84U zGmpzW>b#IegM>}tSVgd5m~F52)v5S{k_n?eJH*+Z{a$;P$Iiml2FP?2T9ywqHn6W? zaG+7U{ncvdfT+3(x}mEr`&l#lZ9t7F9w=*F5YlG+Dw(8ADe+CXcA!}|W2W=Iy>JJy z3Q;oSw81jxiKXmT_1U*9Utt+b42Bp2gjibRK5t!qZ}Np>D-nhDQ-wXW3j|t+BFb$8 zYY<9lMM9uZx;sOlR7h6EBFW$UCyg%Q+OzS*l+mvi5E!kY-X4)JSwB7M0(qlX7?TLd z${H`A2LqPQAR42qI?%N;M0UmH_CK591iFTabgw_zv(<-3MPm@S@=J1?EZlbh+?T`P z-E^nh2thC0S+5rkRZJAA$K8IZ_fnTsC!4Kz;2UreUMIK;&1a7@y5f(7pd5ceqFXq3SY&S`G51OT8VAKjdVFwy2;w9`vA-jZ-ak>kK z`6BBqslCet1))6&{p`s0r`$=`2t}|QP(CV=k<2SzSh>B;gc2He%-1-XJq#KC^}vet zEj1RY)?*%V-(Zh`Z?U{t3$`uZ@_LgNwO?cb@dh7u(p|kvD17@3dVvBTdLp!m>P_U; zdcN!To)$_(eNvs`nxav%W|h8tVniq21{0v#_LO^?truAJ2`ggchnWxEBZN34IgzW+ zP(=7vzK#65t%|lD^Q1ft@+6~MtK9s*`HY)IXi6FLN8;|+uDJ3)%ddprwLj;z8~RLaiFY-DD7vqc~1qqULy;nuA+ zmPCsri?BCE5mLUhIy(2j;<(O8DfAj})v+?M$<;BjipSPHIIOV2%9eRzwA=0} zU&DIB5V?-I5gH?iTK14gk1s*3lng4*`}S8XLG9rD(q;(S3VPNvPB+S(x&`oS8#Y^O z!aB$%qgTmNKG~R(v58$*#oK0z)_Mr72U~-?13mLQ)mWy-Bc_DSeS~_bl%{ZlNNLGcSwXmukvuf~@R^mFN zwYHAv+PT~)RNWXcRbQ)XhIC_%E;nh!f;Es|qIj^+(5wr8U_yWRl95xxXPGs4qf{Dj zMfn-eB-gO2Gi;hl3I(cMvR5Uj3VUeuk`_^U`1$}(UgT`>>>g;U@)TjiWL3iehx}pH z%1)Ak&Hjo7cIo$+XfNBdPAn;Qg|V}72x!#s7P#l1>mi%V-1rEPZ~g@_NM zg9+mCBu+5ufFu{!xkXk`>TXb58;Z4Vpd!FmMC*?9S8j1p{gQDg*RPC5WhxlmKhu6c zOyBQ5Vl~cg7f}^r0|IsCZN9b27Vy=(Yv@1~6SeoWmNqXOBkS8rZD>7>>ZrHnFfy&D z;r|2GQF|W7OrraPd~vq*zT#rUsY=w#9)@|R&}aG&8*Qm=9Crx44-z>DY9qf~#{1MA z@ge9ih&Q@1>aUpuVmPz5>>)8q?;_WJpSz9u@NDaCDzw|OnOne@v%lO|!_73g_Ks|O zxBczWeKMUKpwG5mlxywDwq61golvx4d282T>mwtr!_wQ0?rPF`g&tqM#GqIh2cXNX3k@3S8xDVP>-NN)yb+M(|YzueQ68)ExFd8*jtCzsaiDVI;~j4MFztbW%YG@ zf9Ks@Teu9Ud>9omZ*se%*v02d4Nz1cl6FTL7t7lX^W51#&8}jZ?il;Ra*&bw%H_RR zLNY1*41=$6e>ais6uv39po(0QYB945ra9d{wY_Xr-!@Bo%k7!nr^JI32sLTvrH^~K zb-pdv)Y|k%Y>(1+Y?Na4(0XYI+h4SVO`w6RYi*`h)e**zI{6g_O_a(okyv%J(^gLH zX+olVnWzD!D!U)^5UoGWwO41`@5{D#W!o=j%Hb4k{IQDJNyYq9GZk~h5Qj>+7G&yL zs|)>JMhwN~TEXf>aFoZQ;DWUt(!Moal|V}-M;`$aag_-!cEHX+H! zniW-iXQ}51FKu9Ad-ZFx+cM*o)GxEA)^%A-SBWsK0%c@-(9x*_-!j>C0jxV1012t1CLe(X_B6u-*^nO z%Ew~gS{jcdONQd(Do3n-G`TkgYL60mM=jnkM&G4{PBFfDWk~2viqu0FZzzzUt&zry zKd!}-^ExPaU9{?*^y>$-5cL1b?HRX1s2rx(u(8)ZkP?~bDulWRJA`xk;{K;<7We-( zajmwcPV;xEaVrwvhC8&C@%sHr>AyQhKZJ;M`v<@EqQA}_Go<^PJ6Ukp5cxn95OE`{1sfI{TO&q_D>flfoWkUjN|Ym3Lv*?%_Ag z?-72F@q3cr)BKoUDXp|_8+ukvX? z-H+CEP*eMRhWB+N@0w-}as}?7FEs99C_{fmBme~tYXZVbKnlLkWfFxsRVp15n+r5w zns7X;X)~LuN}Z-6)#Yo%Xvc+mdND z8JFX4-bwuS;njadZLdTX%HvIng}zD{zwj=WyCC3B#mi#i_zZO-@!XKOK{r>F={sXG z`b@u!$)_# zuh*X%aZv;B;aFIyzLLLf00`ybO|gtZ*id?azvN5P_U}K6lPO1l-~II3XtEvI$qbfd z>iMzd1X&Go)q$nj@{P~|VFL&oN(etvLI@qoy;OljpB1RMYZ7;6nzf$L?0BNfOyG9v zUu3g^_x&joT25lAm`@|#SVzn=x6RqYDng}>slN26zVyWE%UT8zqv0m7^0@C~MvdmX z!_@9tEX+Cv9>XNxB+KVVef~l)JO6?;k`eOP!sx8Y%6NbN-8~b=d!z1Knq_!?yYDH# z8$uZoeu@-gBC3zQl3%_4&_JoQP)3uf$(n*No22DXVtI~^8}k%GD&(q}NGn8&#RS=@ z0_svkx4wE*94MmKuHFX`7g>eNK$VI(gr2p@&Kh>RNeSzt-XiuQ+W!M}{U@FBK`xY0 z8~R=971+-&+-W6FVdoP4?qq`I*RIt0vi-?%{`$oCK7DfSS2hsbc%tOH=t z_NpWjrO(VRF87B~DY#!y&TiyGE6Q5l8$5OgQs3gfdYg6{Iro$h9PFe18u!LKL^7;X$0Jt}XsN{b;vv{yY`qwvaG17X$OewxbWlKkB+HYWR`K%gu?|&H%_2rio5ht;9p&vRDp$X3Y z+tnsC-g`L-tXIE=1hSr2&K(6JZD?yVdy%p*l|Rb0->E2Ce2&s6Ev$4$^fbrmIj}gN zx-es|iM(5R9xQ2o^Zljz2Bpn`(mGG+d{1RFRGw3!@^OQJw)yKM86&RAQ!s~|o2EiB zR0RDv)bwLz(y~3cl^yP9i3>%oA{Z0?|XvsRteKYbNr8uM+Lqnz+F?nAl2-Awo zJsZfIoZ6~HO%V5fU{M8VvcMqlCKKjIeZF-it{#0~5XL;OGeL-lSn9X=)Y4Ng`k^Sb zDk57Ed3WznW8{7%F~#|yC5b90F7-v@+opT9E5&_oqj99-)!=xZ!+P3`4`b~kK-#SK z$Hv3ycktS|s{E+}^kqAx$mrh2GSlWj+wy9)MSv&_Wqg;Yux!pQQxVy(=H)Y)96H;z z@o0u*B>^#iAVT`DZ=65%>Y0Sh2VeR@ee@42DhO{kLX70%lkofo&-30Tv1G535ChMm zU#2p-T+>h|a&TGCwvVR!$HufXgpO4IQwQBUol)42pG9-nr?hlG&^PvvRrL?+1&RjG zt1p6Id0Tit&b^JQn6I|H0PsCp$obYGRs_FL600D8dvA;!$-fSAs`<@Y_E+ttx>oFH zxwWQP6ZJR=ku3F|3HF|;h2uzn3ho*F&UBiXk)-%Zv*t5b#^*ey;f`~Eztse)+LR=2 z-b|^YT4}#13O-rHdHhoRS~e7>;+XhJm(C9BE!+I;<3)ao5vzMuoj2szW8tXid(Nue z9g628h(z%Wi)SA{4-U9bL`0x5hv-&|4P#S5-w07M2P(V{vOV9-k}P5aA@=46T>FWQ za{1B!q1Tj?4XxYYre;~Kw%23!S;q(_ank4qG)c$pt9$0E8&CZOVYT7Jc*W7}&_{y* z7`}ZrI7zM=3aZJOG~?p?$7)dL7~Fq5f>AKAvLrvD4zMK3?da;hJ(_teX3( zs2-mLKi^6|v@^0qNz$ESy7|Wj)6JVpty2?|nzlLQlrk6N>dOWv=}caqV)d>$uk z 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 z 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 R7vE-oI&N7_Z6g`O6{jZo8cjKr}Fany? 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 z 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�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�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·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%0AQF#RIN@NdKh&qi5z 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‰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

  • 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

  • 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Μ4pM+ALXwv1&mvwvB6aQ-!WNQ+=BSUv-g^J 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%0A$ud_8Xi@WQ8JVrcR8}A7Mu3l2Z9@)NE$v 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 F{{dv0L6rai literal 0 HcmV?d00001 diff --git a/deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib b/deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib new file mode 100644 index 0000000000000000000000000000000000000000..8a1263c50975d4accc637f77e3eb99a0bc012f6c GIT binary patch literal 68992 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 z zn7$y|nxrX}tAiMJwHb+VoB6byaaM`qT)7x=t$zul_Gu~IFVxV1}#Ai|Y$dcPh zo?`}{0Uh*a#3+$+dj=+K3eyp)T*Fc+$Fp@CBi?hSiIl68luNXUyc!XBu%k_dtzDfk zCGzN*f(ai1G*R`mOEB@;j*k<*G1O&Bq~5b66Fxj?D&^`V^%6`x{|#}%QojmYyEIhXY4{iF7ox#Ct7dGwcrdw)u%O|&47IjiY-FPKh*99S7 zyl+$!DOb%B!5?pI%*?J-74&A5h{T+a7yTX6)Ql<;y*w{~JFa|7ZQZyfa*G${EgyfG z)I`cvGq?B)Q{ai0JFC~LL`(5p$yC4BO)xF-b;}-iqLQn630%~s1ajZLzmHSNzG+RX zTpi?DiuHiNTHKYbcyzhxgtbkHZQoC;(2eAi>_O622#p3&~{)lHyqwc-XX1g{)nj@FYscL4n7Z z3TUFrC1X*d-CwSloFzg{zEqiiLEtln4mFulF*{f>xgRU7%hzU1$}_tcYCd76p-Gji zgL0CJ;~|=}?2|?H(voN+U!?iM7B>~A$~7U?mK>@X{pL7LIHhqsOf!bvcbZbUI?2U0 zwVl@Fu0#kET+t4q}&DT{%23!FEUmycscSQ#N^ZtG&vSiWzU(3u)+${d7WBk6EI0 zyiD@dU)5IiB3rviR!-g2-iC(e zEo_5R<*1XA(`M%qe-}A1=K8P1usdgU#=j~~mFq@oyw#I)#m!CiTuY3DdIe9s+@)gI zL5`*3)0gwaQ~N26PgC$rXMFkt&v>uS_^BNauMs?TvJ}cQe{B9Iw%o~ z+VtK$Uuu;w8hdw5S-Eti`nr=!IHftgrdF<+v3*r3Gk!KtkyI}`sqxrg#A$48>+&UX zbf|={flW8l8OPy>)0|{bGmfd1uMy8@4@#IurqP^<&E;w`Eow8mw{58&b~5Lx z|K&NcTV!p{vsPzO_0}sjo;*eHlueRVQg%=}Qu(w_aTPW_RL`e2V^`iExL$D;Cgjz* z+O){L`m{lE#S1l4%Jgc9^b~C;B_R=`w+S8` zz@>uTj2I=D-Y%Kq4@*;;OYaa&I6kayoDyxsJ98#`I$2$=M4$UE&*ct3(^SgUL77Oc zw4W82)X{2+qI%g#&Bx!Z7_sk=f4QSBUz;9e9=P74`P^}CnozlFrs#V$pZ}>5MKQH0 zdbVP8r`px!Ytz#6?y~n4`1mZiI1|+ibdsitJUmA;PJ14{U-L~-9;Q}Q&JB#_JVBLs z)k{lihWvrRG}K+U-lclA^Ku@XhNvT?Tpg5+RD3>|^VI%EkZLK<4?JcAvp-)-MP)N` zs!cuPT_7I{jC@k0CQ_~rQZQv}`Qe-=oI|O?*W4YjrEC#D;&=S=T9^GrB289(e9&ga zYgfeU0u?v@5gbjXT%E)$G3xoK=duSUs-UZvjKyun^lX{(F~wB!+e|gNQ!UlU12+sw zsw;1h~zD%ROjE6tx&Z1N~p6(?O%JBZ=pHf59Tel9BG zOdYXNJtq^j@M6hca>#~?cLy;|&9DDA<}zo_Du&7_o8r5q$XDNHCy|z)(tNeKQgOR9 z=9=cT{B)78cKlK+-k(u?)4QJVS;NtJmyA8~r)SReKj?YTkIc zW-4o>E5|Iw_j$?ZPnE8ll8JhKh2q0`xly($>JHk-)ZW!ENUr){4-#eZi;Af*{HmN| zsaSnUa@GD)kt!QsmQ4P%aFs#T$9t(U*HMHo^shHZ`b5+FVf7d`$Dpx1*YcuNNFOOgIjP@9K74&ArEwQ`uYR}~DSZc4wq{`#h zb2k2g&YJN`ts-2LGvOyZG?8-E%&Bikp4w~UsWH_zB@=H9GUxlNxafG+jM=v&U+oo= zRQr3aVu}+{#juk&CEAT|=S=>m4^;5g>sD8r)kppY`5n)OUsljG%GF7n5-i^hEOlqP zskmGhSZZ6UCq{+e^DOQ+CsaD=H0&VNQa$nYlBv8wuRO*`tpa{u^5s96p(9wCF;%O6 z5E#prl@xIYX_;C{{b69jFVw4mH={l!#)LNn9`|D+b-CKClsy4FKMGvDOV?Hm-t3-OW@+4&`}|4S0_A)I{UN0<9?t=Q&msDL_XabxbXWwb$Jr`^mD;8 zB{Q8w`rW3u3RCXt>6hU8h2knqgsXEUTBF+~SN*R638r64rg$@0^*AL)FLy|$LRP5) z*-5QRF#Sq06*8(aQzG^5luWf(5K`awel3{XZ)&NCY(|@&h}T`74W}tg!AvwU=lG3a z;=?JXfGyDm{x-1T2gmBBUm{k&%X$3onN1_x-IA@RIf$P!n?|Yk6KWH}di&QFnovZXtDkDhC)PAf^Qn%x_76)Lrg zXD6wcsMCM)Z1@#Eojujt#MGSl&w?lXLZFIBb-vUL^)HfdTKmiUB-6C^mw%N^wfoD| zdf@$nDgSLoon6Y+K`BhN9DfUZ`7b}J@O9Dbgssi0);ut6%Gr3QXHRRmdu+XC(5_DS z+Khdl4z9mzzM<}Rq?JdEsV@r;Xx8wfnDx>%RpqId;cr2HobM}wC{j>IOHFG=yfW7Z6h(7 z{CCc^W^%B5tk9iSu63#18;|5{_V;6T!K}`eh}nN~F8}kib=ea0LKG8whR|5k{Q9k? zQmzi#%hdO^EHLqJ>#C5os}r6?`pu9$_LqA#S>@bH^>JG$Hv7ZCnohYoh+B$nreZUj z>U7#^S53Ap6`TEGQx%)aY^n0GRbU$#sa-x2E&tXz56%qKQK&vzO^vsBgJAb>GLxDUK0$E>TkojB zs>+xe56@MM)4QAbiIOXxepavJiT-mJ#Z-Scb82kxB+2D>(oJKI?W+0er(~;}W}rmkPGHuuo;%^nA(FC=Ar9=TxH2SQfY@#wJGk z>*rRYR2&qz>YqKFT9;iecxqe!B>Ke{NSi zyyr!dsZgCN*WAP${7}hMe^!uKIXO%)4UdcsncWsqQ(HM^iMqQY=c|7bbYlMTV!_iG zADPzQY&<-0ozfkDNSw;FJHqo6f6%siTb}5jjubrcu%&8zQY%|W1s?pamEU<&x9la# z#L<#(3eI#-wSO-OTw{~N@u3mbb1Tt%tn^IyRjcWpRlQU&6*tRPEg30mg;knqD#k8} z6g)<-O~Gt2G0r?TFiq9kQfhAXvI1NEonI-w)j8kD7}n03ef9ZLGm)1EKHiu(GOhi| zaS>PiqZgG+f15s;E!$t=xz" + "-DTEST_COMMAND=$" + -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") + else() # old 2.x add_test; limited and won't work well on Windows + # Note LIBPNG is a dummy value as there are no generator expressions + add_test("${_PAT_NAME}" "${CMAKE_COMMAND}" + "-DLIBPNG=${CMAKE_CURRENT_BINARY_DIR}/libpng.so" + "-DTEST_COMMAND=./${_PAT_COMMAND}" + -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") + endif() +endfunction() + +if(PNG_TESTS AND PNG_SHARED) + # Find test PNG files by globbing, but sort lists to ensure + # consistency between different filesystems. + file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png") + list(SORT PNGSUITE_PNGS) + file(GLOB TEST_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/*.png") + list(SORT TEST_PNGS) + + set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") + + add_executable(pngtest ${pngtest_sources}) + target_link_libraries(pngtest png) + + png_add_test(NAME pngtest COMMAND pngtest FILES "${PNGTEST_PNG}") + + add_executable(pngvalid ${pngvalid_sources}) + target_link_libraries(pngvalid png) + + png_add_test(NAME pngvalid-gamma-16-to-8 + COMMAND pngvalid OPTIONS --gamma-16-to-8) + png_add_test(NAME pngvalid-gamma-alpha-mode + COMMAND pngvalid OPTIONS --gamma-alpha-mode) + png_add_test(NAME pngvalid-gamma-background + COMMAND pngvalid OPTIONS --gamma-background) + png_add_test(NAME pngvalid-gamma-expand16-alpha-mode + COMMAND pngvalid OPTIONS --gamma-alpha-mode --expand16) + png_add_test(NAME pngvalid-gamma-expand16-background + COMMAND pngvalid OPTIONS --gamma-background --expand16) + png_add_test(NAME pngvalid-gamma-expand16-transform + COMMAND pngvalid OPTIONS --gamma-transform --expand16) + png_add_test(NAME pngvalid-gamma-sbit + COMMAND pngvalid OPTIONS --gamma-sbit) + png_add_test(NAME pngvalid-gamma-threshold + COMMAND pngvalid OPTIONS --gamma-threshold) + png_add_test(NAME pngvalid-gamma-transform + COMMAND pngvalid OPTIONS --gamma-transform) + png_add_test(NAME pngvalid-progressive-interlace-standard + COMMAND pngvalid OPTIONS --standard --progressive-read --interlace) + png_add_test(NAME pngvalid-progressive-size + COMMAND pngvalid OPTIONS --size --progressive-read) + png_add_test(NAME pngvalid-progressive-standard + COMMAND pngvalid OPTIONS --standard --progressive-read) + png_add_test(NAME pngvalid-standard + COMMAND pngvalid OPTIONS --standard) + png_add_test(NAME pngvalid-transform + COMMAND pngvalid OPTIONS --transform) + + add_executable(pngstest ${pngstest_sources}) + target_link_libraries(pngstest png) + + foreach(gamma_type 1.8 linear none sRGB) + foreach(alpha_type none alpha) + set(PNGSTEST_FILES) + foreach(test_png ${TEST_PNGS}) + string(REGEX MATCH ".*-linear[-.].*" TEST_PNG_LINEAR "${test_png}") + string(REGEX MATCH ".*-sRGB[-.].*" TEST_PNG_SRGB "${test_png}") + string(REGEX MATCH ".*-1.8[-.].*" TEST_PNG_G18 "${test_png}") + string(REGEX MATCH ".*-alpha-.*" TEST_PNG_ALPHA "${test_png}") + + set(TEST_PNG_VALID TRUE) + + if(TEST_PNG_ALPHA) + if (NOT "${alpha_type}" STREQUAL "alpha") + set(TEST_PNG_VALID FALSE) + endif() + else() + if ("${alpha_type}" STREQUAL "alpha") + set(TEST_PNG_VALID FALSE) + endif() + endif() + + if(TEST_PNG_LINEAR) + if(NOT "${gamma_type}" STREQUAL "linear") + set(TEST_PNG_VALID FALSE) + endif() + elseif(TEST_PNG_SRGB) + if(NOT "${gamma_type}" STREQUAL "sRGB") + set(TEST_PNG_VALID FALSE) + endif() + elseif(TEST_PNG_G18) + if(NOT "${gamma_type}" STREQUAL "1.8") + set(TEST_PNG_VALID FALSE) + endif() + else() + if(NOT "${gamma_type}" STREQUAL "none") + set(TEST_PNG_VALID FALSE) + endif() + endif() + + if(TEST_PNG_VALID) + list(APPEND PNGSTEST_FILES "${test_png}") + endif() + endforeach() + # Should already be sorted, but sort anyway to be certain. + list(SORT PNGSTEST_FILES) + png_add_test(NAME pngstest-${gamma_type}-${alpha_type} + COMMAND pngstest + OPTIONS --tmpfile "${gamma_type}-${alpha_type}-" --log + FILES ${PNGSTEST_FILES}) + endforeach() + endforeach() + + add_executable(pngunknown ${pngunknown_sources}) + target_link_libraries(pngunknown png) + + png_add_test(NAME pngunknown-discard COMMAND pngunknown OPTIONS --strict default=discard FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-IDAT COMMAND pngunknown OPTIONS --strict default=discard IDAT=save FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-if-safe COMMAND pngunknown OPTIONS --strict default=if-safe FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-sAPI COMMAND pngunknown OPTIONS --strict bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-save COMMAND pngunknown OPTIONS --strict default=save FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-sTER COMMAND pngunknown OPTIONS --strict sTER=if-safe FILES "${PNGTEST_PNG}") + png_add_test(NAME pngunknown-vpAg COMMAND pngunknown OPTIONS --strict vpAg=if-safe FILES "${PNGTEST_PNG}") + + add_executable(pngimage ${pngimage_sources}) + target_link_libraries(pngimage png) + + png_add_test(NAME pngimage-quick COMMAND pngimage OPTIONS --list-combos --log FILES ${PNGSUITE_PNGS}) + png_add_test(NAME pngimage-full COMMAND pngimage OPTIONS --exhaustive --list-combos --log FILES ${PNGSUITE_PNGS}) +endif() + +if(PNG_SHARED) + add_executable(pngfix ${pngfix_sources}) + target_link_libraries(pngfix png) + set(PNG_BIN_TARGETS pngfix) + + add_executable(png-fix-itxt ${png_fix_itxt_sources}) + target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY}) + list(APPEND PNG_BIN_TARGETS png-fix-itxt) +endif() + +# Set a variable with CMake code which: +# Creates a symlink from src to dest (if possible) or alternatively +# copies if different. +include(CMakeParseArguments) + +function(CREATE_SYMLINK DEST_FILE) + + cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN}) + + if(NOT S_TARGET AND NOT S_FILE) + message(FATAL_ERROR "Specify either a TARGET or a FILE for CREATE_SYMLINK to link to.") + endif(NOT S_TARGET AND NOT S_FILE) + + if(S_TARGET AND S_FILE) + message(FATAL_ERROR "CREATE_SYMLINK called with both source file ${S_FILE} and build target ${S_TARGET} arguments - can only handle 1 type per call.") + endif(S_TARGET AND S_FILE) + + if(S_FILE) + # If we don't need to symlink something that's coming from a build target, + # we can go ahead and symlink/copy at configure time. + + if(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + execute_process( + COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + ) + else(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + execute_process( + COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + ) + endif(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + endif(S_FILE) + + if(S_TARGET) + # We need to use generator expressions, which can be a bit tricky, so for + # simplicity make the symlink a POST_BUILD step and use the TARGET + # signature of add_custom_command. + + if(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + add_custom_command(TARGET ${S_TARGET} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_if_different $ $/${DEST_FILE} + ) + else(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + add_custom_command(TARGET ${S_TARGET} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E create_symlink $ $/${DEST_FILE} + ) + endif(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) + + endif(S_TARGET) + +endfunction() + +# Create source generation scripts. +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY) + + +# libpng is a library so default to 'lib' +if(NOT DEFINED CMAKE_INSTALL_LIBDIR) + set(CMAKE_INSTALL_LIBDIR lib) +endif(NOT DEFINED CMAKE_INSTALL_LIBDIR) + +# CREATE PKGCONFIG FILES +# we use the same files like ./configure, so we have to set its vars +# Only do this on Windows for Cygwin - the files don't make much sense outside +# a UNIX look alike +if(NOT WIN32 OR CYGWIN OR MINGW) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix ${CMAKE_INSTALL_PREFIX}) + set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) + set(includedir ${CMAKE_INSTALL_PREFIX}/include) + set(LIBS "-lz -lm") + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) + CREATE_SYMLINK(libpng.pc FILE ${PNGLIB_NAME}.pc) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in + ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) + CREATE_SYMLINK(libpng-config FILE ${PNGLIB_NAME}-config) +endif(NOT WIN32 OR CYGWIN OR MINGW) + +# SET UP LINKS +if(PNG_SHARED) + set_target_properties(png PROPERTIES +# VERSION 16.${PNGLIB_RELEASE}.1.6.35 + VERSION 16.${PNGLIB_RELEASE}.0 + SOVERSION 16 + CLEAN_DIRECT_OUTPUT 1) +endif() + +# If CMake > 2.4.x, we set a variable used below to export +# targets to an export file. +# TODO: Use VERSION_GREATER after our cmake_minimum_required >= 2.6.2 +if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 4) + set(PNG_EXPORT_RULE EXPORT libpng) +elseif(CMAKE_MAJOR_VERSION GREATER 2) # future proof + set(PNG_EXPORT_RULE EXPORT libpng) +endif() + +# INSTALL +if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) + install(TARGETS ${PNG_LIB_TARGETS} + ${PNG_EXPORT_RULE} + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + if(PNG_SHARED) + # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin + if(CYGWIN OR MINGW) + CREATE_SYMLINK(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png) + install(FILES $/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif(CYGWIN OR MINGW) + + if(NOT WIN32) + CREATE_SYMLINK(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png) + install(FILES $/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif(NOT WIN32) + endif(PNG_SHARED) + + if(PNG_STATIC) + if(NOT WIN32 OR CYGWIN OR MINGW) + CREATE_SYMLINK( libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static) + install(FILES $/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif(NOT WIN32 OR CYGWIN OR MINGW) + endif() +endif() + +if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) + install(FILES ${libpng_public_hdrs} DESTINATION include) + install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) +endif() +if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL ) + if(NOT WIN32 OR CYGWIN OR MINGW) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config + DESTINATION bin) + endif(NOT WIN32 OR CYGWIN OR MINGW) +endif() + +if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL ) + install(TARGETS ${PNG_BIN_TARGETS} + RUNTIME DESTINATION bin) +endif() + +if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) + # Install man pages + if(NOT PNG_MAN_DIR) + set(PNG_MAN_DIR "share/man") + endif() + install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) + install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) + # Install pkg-config files + if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config + DESTINATION bin) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config + DESTINATION bin) + endif(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) +endif() + +# On versions of CMake that support it, create an export file CMake +# users can include() to import our targets +if(PNG_EXPORT_RULE AND NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL ) + install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) +endif() + +# what's with libpng-manual.txt and all the extra files? + +# UNINSTALL +# do we need this? + +# DIST +# do we need this? + +# to create msvc import lib for mingw compiled shared lib +# pexports libpng.dll > libpng.def +# lib /def:libpng.def /machine:x86 diff --git a/deps/PNG/PNG.cmake b/deps/+PNG/PNG.cmake similarity index 54% rename from deps/PNG/PNG.cmake rename to deps/+PNG/PNG.cmake index 6577eec..edbbeb9 100644 --- a/deps/PNG/PNG.cmake +++ b/deps/+PNG/PNG.cmake @@ -1,31 +1,27 @@ if (APPLE) # Only disable NEON extension for Apple ARM builds, leave it enabled for Raspberry PI. - set(_disable_neon_extension "-DPNG_ARM_NEON=off") + set(_disable_neon_extension "-DPNG_ARM_NEON:STRING=off") else () set(_disable_neon_extension "") endif () -set(_patch_step "") +set(_patch_cmd PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.patched CMakeLists.txt) + if (APPLE) - set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch) + set(_patch_cmd ${_patch_cmd} && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch) endif () -qidislicer_add_cmake_project(PNG - # GIT_REPOSITORY https://github.com/glennrp/libpng.git - # GIT_TAG v1.6.35 +add_cmake_project(PNG URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f - DEPENDS ${ZLIB_PKG} - "${_patch_step}" + PATCH_COMMAND "${_patch_cmd}" CMAKE_ARGS -DPNG_SHARED=OFF -DPNG_STATIC=ON -DPNG_PREFIX=qidislicer_ -DPNG_TESTS=OFF - -DDISABLE_DEPENDENCY_TRACKING=OFF + -DPNG_EXECUTABLES=OFF ${_disable_neon_extension} ) -if (MSVC) - add_debug_dep(dep_PNG) -endif () +set(DEP_PNG_DEPENDS ZLIB) diff --git a/deps/PNG/PNG.patch b/deps/+PNG/PNG.patch similarity index 100% rename from deps/PNG/PNG.patch rename to deps/+PNG/PNG.patch diff --git a/deps/+Qhull/Qhull.cmake b/deps/+Qhull/Qhull.cmake new file mode 100644 index 0000000..011f58e --- /dev/null +++ b/deps/+Qhull/Qhull.cmake @@ -0,0 +1,19 @@ +include(GNUInstallDirs) + +set(_qhull_static_libs "-DBUILD_STATIC_LIBS:BOOL=ON") +set(_qhull_shared_libs "-DBUILD_SHARED_LIBS:BOOL=OFF") +if (BUILD_SHARED_LIBS) + set(_qhull_static_libs "-DBUILD_STATIC_LIBS:BOOL=OFF") + set(_qhull_shared_libs "-DBUILD_SHARED_LIBS:BOOL=ON") +endif () + +add_cmake_project(Qhull + URL "https://github.com/qhull/qhull/archive/refs/tags/v8.1-alpha3.zip" + URL_HASH SHA256=7bd9b5ffae01e69c2ead52f9a9b688af6c65f9a1da05da0a170fa20d81404c06 + CMAKE_ARGS + -DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR} + -DBUILD_APPLICATIONS:BOOL=OFF + ${_qhull_shared_libs} + ${_qhull_static_libs} + -DQHULL_ENABLE_TESTING:BOOL=OFF +) diff --git a/deps/TBB/TBB.cmake b/deps/+TBB/TBB.cmake similarity index 73% rename from deps/TBB/TBB.cmake rename to deps/+TBB/TBB.cmake index 042f5f0..95ac76b 100644 --- a/deps/TBB/TBB.cmake +++ b/deps/+TBB/TBB.cmake @@ -1,16 +1,12 @@ -qidislicer_add_cmake_project( +add_cmake_project( TBB URL "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip" URL_HASH SHA256=83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47 CMAKE_ARGS - -DTBB_BUILD_SHARED=OFF + -DTBB_BUILD_SHARED=${BUILD_SHARED_LIBS} -DTBB_TEST=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_DEBUG_POSTFIX=_debug ) -if (MSVC) - add_debug_dep(dep_TBB) -endif () - diff --git a/deps/+TIFF/TIFF.cmake b/deps/+TIFF/TIFF.cmake new file mode 100644 index 0000000..9281dd5 --- /dev/null +++ b/deps/+TIFF/TIFF.cmake @@ -0,0 +1,15 @@ +add_cmake_project(TIFF + URL https://gitlab.com/libtiff/libtiff/-/archive/v4.6.0/libtiff-v4.6.0.zip + URL_HASH SHA256=5d652432123223338a6ee642a6499d98ebc5a702f8a065571e1001d4c08c37e6 + CMAKE_ARGS + -Dtiff-tools:BOOL=OFF + -Dtiff-tests:BOOL=OFF + -Dlzma:BOOL=OFF + -Dwebp:BOOL=OFF + -Djbig:BOOL=OFF + -Dzstd:BOOL=OFF + -Dpixarlog:BOOL=OFF + -Dlibdeflate:BOOL=OFF +) + +set(DEP_TIFF_DEPENDS ZLIB PNG JPEG OpenGL) diff --git a/deps/WebView2/include/WebView2.h b/deps/+WebView2/include/WebView2.h similarity index 100% rename from deps/WebView2/include/WebView2.h rename to deps/+WebView2/include/WebView2.h diff --git a/deps/WebView2/include/WebView2EnvironmentOptions.h b/deps/+WebView2/include/WebView2EnvironmentOptions.h similarity index 100% rename from deps/WebView2/include/WebView2EnvironmentOptions.h rename to deps/+WebView2/include/WebView2EnvironmentOptions.h diff --git a/deps/WebView2/lib/win32/WebView2Loader.dll b/deps/+WebView2/lib/win32/WebView2Loader.dll similarity index 100% rename from deps/WebView2/lib/win32/WebView2Loader.dll rename to deps/+WebView2/lib/win32/WebView2Loader.dll diff --git a/deps/WebView2/lib/win32/WebView2Loader.dll.lib b/deps/+WebView2/lib/win32/WebView2Loader.dll.lib similarity index 100% rename from deps/WebView2/lib/win32/WebView2Loader.dll.lib rename to deps/+WebView2/lib/win32/WebView2Loader.dll.lib diff --git a/deps/WebView2/lib/win32/WebView2LoaderStatic.lib b/deps/+WebView2/lib/win32/WebView2LoaderStatic.lib similarity index 100% rename from deps/WebView2/lib/win32/WebView2LoaderStatic.lib rename to deps/+WebView2/lib/win32/WebView2LoaderStatic.lib diff --git a/deps/WebView2/lib/win64/WebView2Loader.dll b/deps/+WebView2/lib/win64/WebView2Loader.dll similarity index 100% rename from deps/WebView2/lib/win64/WebView2Loader.dll rename to deps/+WebView2/lib/win64/WebView2Loader.dll diff --git a/deps/WebView2/lib/win64/WebView2Loader.dll.lib b/deps/+WebView2/lib/win64/WebView2Loader.dll.lib similarity index 100% rename from deps/WebView2/lib/win64/WebView2Loader.dll.lib rename to deps/+WebView2/lib/win64/WebView2Loader.dll.lib diff --git a/deps/WebView2/lib/win64/WebView2LoaderStatic.lib b/deps/+WebView2/lib/win64/WebView2LoaderStatic.lib similarity index 100% rename from deps/WebView2/lib/win64/WebView2LoaderStatic.lib rename to deps/+WebView2/lib/win64/WebView2LoaderStatic.lib diff --git a/deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch b/deps/+ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch similarity index 100% rename from deps/ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch rename to deps/+ZLIB/0001-Respect-BUILD_SHARED_LIBS.patch diff --git a/deps/ZLIB/ZLIB.cmake b/deps/+ZLIB/ZLIB.cmake similarity index 77% rename from deps/ZLIB/ZLIB.cmake rename to deps/+ZLIB/ZLIB.cmake index 35a8588..60ba8c7 100644 --- a/deps/ZLIB/ZLIB.cmake +++ b/deps/+ZLIB/ZLIB.cmake @@ -1,6 +1,4 @@ -qidislicer_add_cmake_project(ZLIB - # GIT_REPOSITORY https://github.com/madler/zlib.git - # GIT_TAG v1.2.11 +add_cmake_project(ZLIB URL https://github.com/madler/zlib/archive/refs/tags/v1.2.11.zip URL_HASH SHA256=f5cc4ab910db99b2bdbba39ebbdc225ffc2aa04b4057bc2817f1b94b6978cfc3 PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-Respect-BUILD_SHARED_LIBS.patch diff --git a/deps/+heatshrink/CMakeLists.txt b/deps/+heatshrink/CMakeLists.txt new file mode 100644 index 0000000..f304a48 --- /dev/null +++ b/deps/+heatshrink/CMakeLists.txt @@ -0,0 +1,93 @@ +cmake_minimum_required(VERSION 3.10) + +project(heatshrink LANGUAGES C VERSION 0.4.1) + +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +add_library(${PROJECT_NAME} heatshrink_decoder.c heatshrink_encoder.c) +add_library(${PROJECT_NAME}_dynalloc heatshrink_decoder.c heatshrink_encoder.c) + +find_library(MATH_LIBRARY m) # Business as usual +if(MATH_LIBRARY) + target_link_libraries(${PROJECT_NAME} PUBLIC ${MATH_LIBRARY}) +endif() + +target_include_directories(${PROJECT_NAME} PUBLIC $) +target_include_directories(${PROJECT_NAME}_dynalloc PUBLIC $) + +target_compile_definitions(${PROJECT_NAME} PUBLIC HEATSHRINK_DYNAMIC_ALLOC=0) +target_compile_definitions(${PROJECT_NAME}_dynalloc PUBLIC HEATSHRINK_DYNAMIC_ALLOC=1) + +if (UNIX) + add_executable(${PROJECT_NAME}_cmd heatshrink.c) + target_link_libraries(${PROJECT_NAME}_cmd ${PROJECT_NAME}_dynalloc) + set_target_properties(${PROJECT_NAME}_cmd PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) +endif () + +foreach (tgt ${PROJECT_NAME} ${PROJECT_NAME}_dynalloc) + set_target_properties(${tgt} + PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION}) +endforeach() + +# Installation and export: + +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + +set(_exported_targets ${PROJECT_NAME} ${PROJECT_NAME}_dynalloc) +if (UNIX) + list(APPEND _exported_targets ${PROJECT_NAME}_cmd) +endif () + +install(TARGETS ${_exported_targets} + EXPORT ${PROJECT_NAME}Targets +) + +export(EXPORT ${PROJECT_NAME}Targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" + NAMESPACE ${PROJECT_NAME}:: +) + +include(GNUInstallDirs) +set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${ConfigPackageLocation} +) + +install( + FILES + heatshrink_common.h + heatshrink_config.h + heatshrink_encoder.h + heatshrink_decoder.h + DESTINATION + include/${PROJECT_NAME} + ) + +install(EXPORT ${PROJECT_NAME}Targets + FILE + ${PROJECT_NAME}Targets.cmake + NAMESPACE + ${PROJECT_NAME}:: + DESTINATION + ${ConfigPackageLocation} +) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION + ${ConfigPackageLocation} +) \ No newline at end of file diff --git a/deps/+heatshrink/Config.cmake.in b/deps/+heatshrink/Config.cmake.in new file mode 100644 index 0000000..7ace8c5 --- /dev/null +++ b/deps/+heatshrink/Config.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +endif () \ No newline at end of file diff --git a/deps/+heatshrink/heatshrink.cmake b/deps/+heatshrink/heatshrink.cmake new file mode 100644 index 0000000..08917a6 --- /dev/null +++ b/deps/+heatshrink/heatshrink.cmake @@ -0,0 +1,6 @@ +add_cmake_project(heatshrink + URL https://github.com/atomicobject/heatshrink/archive/refs/tags/v0.4.1.zip + URL_HASH SHA256=2e2db2366bdf36cb450f0b3229467cbc6ea81a8c690723e4227b0b46f92584fe + PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt ./CMakeLists.txt && + ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in ./Config.cmake.in +) \ No newline at end of file diff --git a/deps/wxWidgets/0001-wxWidget-fix.patch b/deps/+wxWidgets/0001-wxWidget-fix.patch similarity index 100% rename from deps/wxWidgets/0001-wxWidget-fix.patch rename to deps/+wxWidgets/0001-wxWidget-fix.patch diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/+wxWidgets/wxWidgets.cmake similarity index 86% rename from deps/wxWidgets/wxWidgets.cmake rename to deps/+wxWidgets/wxWidgets.cmake index 2ab56e3..a8385ec 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/+wxWidgets/wxWidgets.cmake @@ -2,6 +2,8 @@ set(_wx_git_tag v3.2.0) set(_wx_toolkit "") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + option(DEP_WX_GTK3 "Build wxWidgets for GTK3 instead of GTK2" OFF) + set(_gtk_ver 2) if (DEP_WX_GTK3) set(_gtk_ver 3) @@ -29,18 +31,13 @@ if (UNIX AND NOT APPLE) # wxWidgets will not use char as the underlying type for set (_unicode_utf8 ON) endif() -qidislicer_add_cmake_project(wxWidgets +add_cmake_project(wxWidgets URL https://github.com/prusa3d/wxWidgets/archive/78aa2dc0ea7ce99dc19adc1140f74c3e2e3f3a26.zip URL_HASH SHA256=94b7d972373503e380e5a8b0ca63b1ccb956da4006402298dd89a0c5c7041b1e - #PATCH_COMMAND ${_patch_cmd} - DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG dep_NanoSVG CMAKE_ARGS + "-DCMAKE_DEBUG_POSTFIX:STRING=" -DwxBUILD_PRECOMP=ON ${_wx_toolkit} - "-DCMAKE_DEBUG_POSTFIX:STRING=" - -DwxBUILD_DEBUG_LEVEL=0 - -DwxBUILD_SAMPLES=OFF - -DwxBUILD_SHARED=OFF -DwxUSE_MEDIACTRL=ON -DwxUSE_DETECT_SM=OFF -DwxUSE_UNICODE=ON @@ -67,6 +64,4 @@ qidislicer_add_cmake_project(wxWidgets -DwxUSE_WEBREQUEST=OFF ) -if (MSVC) - add_debug_dep(dep_wxWidgets) -endif () \ No newline at end of file +set(DEP_wxWidgets_DEPENDS ZLIB PNG EXPAT TIFF JPEG NanoSVG) diff --git a/deps/Blosc/Blosc.cmake b/deps/Blosc/Blosc.cmake deleted file mode 100644 index 62a7c82..0000000 --- a/deps/Blosc/Blosc.cmake +++ /dev/null @@ -1,28 +0,0 @@ -if(BUILD_SHARED_LIBS) - set(_build_shared ON) - set(_build_static OFF) -else() - set(_build_shared OFF) - set(_build_static ON) -endif() - -qidislicer_add_cmake_project(Blosc - #URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip - #URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9 - URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip - URL_HASH SHA256=dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3 - DEPENDS ${ZLIB_PKG} - # Patching upstream does not work this way with git version 2.28 installed on mac worker - # PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/blosc-mods.patch - CMAKE_ARGS - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DBUILD_SHARED=${_build_shared} - -DBUILD_STATIC=${_build_static} - -DBUILD_TESTS=OFF - -DBUILD_BENCHMARKS=OFF - -DPREFER_EXTERNAL_ZLIB=ON -) - -if (MSVC) - add_debug_dep(dep_Blosc) -endif () \ No newline at end of file diff --git a/deps/Blosc/blosc-mods.patch b/deps/Blosc/blosc-mods.patch deleted file mode 100644 index 9b1b9cb..0000000 --- a/deps/Blosc/blosc-mods.patch +++ /dev/null @@ -1,469 +0,0 @@ -From 7cf6c014a36f1712efbdbe9bc52d2d4922b54673 Mon Sep 17 00:00:00 2001 -From: tamasmeszaros -Date: Wed, 30 Oct 2019 12:54:52 +0100 -Subject: [PATCH] Blosc 1.17 fixes and cmake config script - -Signed-off-by: tamasmeszaros ---- - CMakeLists.txt | 105 +++++++++++++++++----------------- - blosc/CMakeLists.txt | 118 +++++++++------------------------------ - cmake/FindLZ4.cmake | 6 +- - cmake/FindSnappy.cmake | 8 ++- - cmake/FindZstd.cmake | 8 ++- - cmake_config.cmake.in | 24 ++++++++ - internal-complibs/CMakeLists.txt | 35 ++++++++++++ - 7 files changed, 157 insertions(+), 147 deletions(-) - create mode 100644 cmake_config.cmake.in - create mode 100644 internal-complibs/CMakeLists.txt - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 59d9fab..e9134c2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -71,7 +71,7 @@ - # DEV: static includes blosc.a and blosc.h - - --cmake_minimum_required(VERSION 2.8.12) -+cmake_minimum_required(VERSION 3.1) # Threads::Threads target available from 3.1 - if (NOT CMAKE_VERSION VERSION_LESS 3.3) - cmake_policy(SET CMP0063 NEW) - endif() -@@ -124,55 +124,30 @@ option(PREFER_EXTERNAL_ZSTD - - set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") - -- --if(NOT DEACTIVATE_LZ4) -- if(PREFER_EXTERNAL_LZ4) -- find_package(LZ4) -- else() -- message(STATUS "Using LZ4 internal sources.") -- endif(PREFER_EXTERNAL_LZ4) -- # HAVE_LZ4 will be set to true because even if the library is -- # not found, we will use the included sources for it -- set(HAVE_LZ4 TRUE) --endif(NOT DEACTIVATE_LZ4) -- --if(NOT DEACTIVATE_SNAPPY) -- if(PREFER_EXTERNAL_SNAPPY) -- find_package(Snappy) -- else() -- message(STATUS "Using Snappy internal sources.") -- endif(PREFER_EXTERNAL_SNAPPY) -- # HAVE_SNAPPY will be set to true because even if the library is not found, -- # we will use the included sources for it -- set(HAVE_SNAPPY TRUE) --endif(NOT DEACTIVATE_SNAPPY) -- --if(NOT DEACTIVATE_ZLIB) -- # import the ZLIB_ROOT environment variable to help finding the zlib library -- if(PREFER_EXTERNAL_ZLIB) -- set(ZLIB_ROOT $ENV{ZLIB_ROOT}) -- find_package(ZLIB) -- if (NOT ZLIB_FOUND ) -- message(STATUS "No zlib found. Using internal sources.") -- endif (NOT ZLIB_FOUND ) -- else() -- message(STATUS "Using zlib internal sources.") -- endif(PREFER_EXTERNAL_ZLIB) -- # HAVE_ZLIB will be set to true because even if the library is not found, -- # we will use the included sources for it -- set(HAVE_ZLIB TRUE) --endif(NOT DEACTIVATE_ZLIB) -- --if (NOT DEACTIVATE_ZSTD) -- if (PREFER_EXTERNAL_ZSTD) -- find_package(Zstd) -- else () -- message(STATUS "Using ZSTD internal sources.") -- endif (PREFER_EXTERNAL_ZSTD) -- # HAVE_ZSTD will be set to true because even if the library is -- # not found, we will use the included sources for it -- set(HAVE_ZSTD TRUE) --endif (NOT DEACTIVATE_ZSTD) -+set(LIBS "") -+macro(use_package _pkg _tgt) -+ string(TOUPPER ${_pkg} _PKG) -+ if(NOT DEACTIVATE_${_PKG}) -+ if(PREFER_EXTERNAL_${_PKG}) -+ find_package(${_pkg}) -+ if (NOT ${_pkg}_FOUND ) -+ message(STATUS "No ${_pkg} found. Using internal sources.") -+ endif() -+ else() -+ message(STATUS "Using ${_pkg} internal sources.") -+ endif(PREFER_EXTERNAL_${_PKG}) -+ # HAVE_${_pkg} will be set to true because even if the library is -+ # not found, we will use the included sources for it -+ set(HAVE_${_PKG} TRUE) -+ list(APPEND LIBS ${_pkg}::${_tgt}) -+ endif(NOT DEACTIVATE_${_PKG}) -+endmacro() -+ -+set(ZLIB_ROOT $ENV{ZLIB_ROOT}) -+use_package(ZLIB ZLIB) -+use_package(LZ4 LZ4) -+use_package(Snappy snappy) -+use_package(Zstd Zstd) - - # create the config.h file - configure_file ("blosc/config.h.in" "blosc/config.h" ) -@@ -316,6 +291,7 @@ endif() - - - # subdirectories -+add_subdirectory(internal-complibs) - add_subdirectory(blosc) - - if(BUILD_TESTS) -@@ -328,7 +304,6 @@ if(BUILD_BENCHMARKS) - add_subdirectory(bench) - endif(BUILD_BENCHMARKS) - -- - # uninstall target - if (BLOSC_INSTALL) - configure_file( -@@ -338,10 +313,38 @@ if (BLOSC_INSTALL) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/blosc.pc" - DESTINATION lib/pkgconfig COMPONENT DEV) - -+ configure_file( -+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake_config.cmake.in" -+ "${CMAKE_CURRENT_BINARY_DIR}/cmakeexports/BloscConfig.cmake" -+ @ONLY) -+ - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) -+ -+ include(CMakePackageConfigHelpers) -+ write_basic_package_version_file( -+ "${CMAKE_CURRENT_BINARY_DIR}/cmakeexports/BloscConfigVersion.cmake" -+ VERSION ${BLOSC_VERSION_MAJOR}.${BLOSC_VERSION_MINOR}.${BLOSC_VERSION_PATCH} -+ COMPATIBILITY AnyNewerVersion -+ ) -+ -+ export(EXPORT BloscTargets -+ FILE "${CMAKE_CURRENT_BINARY_DIR}/cmakeexports/BloscTargets.cmake" -+ NAMESPACE Blosc::) -+ -+ install(EXPORT BloscTargets -+ FILE BloscTargets.cmake -+ NAMESPACE Blosc:: -+ DESTINATION lib/cmake/Blosc -+ EXPORT_LINK_INTERFACE_LIBRARIES) -+ -+ install(FILES -+ "${CMAKE_CURRENT_BINARY_DIR}/cmakeexports/BloscConfig.cmake" -+ "${CMAKE_CURRENT_BINARY_DIR}/cmakeexports/BloscConfigVersion.cmake" -+ DESTINATION lib/cmake/Blosc COMPONENT DEV) -+ - add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) - endif() -diff --git a/blosc/CMakeLists.txt b/blosc/CMakeLists.txt -index 1d1bebe..f554abe 100644 ---- a/blosc/CMakeLists.txt -+++ b/blosc/CMakeLists.txt -@@ -1,52 +1,11 @@ - # a simple way to detect that we are using CMAKE - add_definitions(-DUSING_CMAKE) - --set(INTERNAL_LIBS ${PROJECT_SOURCE_DIR}/internal-complibs) -- - # Hide symbols by default unless they're specifically exported. - # This makes it easier to keep the set of exported symbols the - # same across all compilers/platforms. - set(CMAKE_C_VISIBILITY_PRESET hidden) - --# includes --set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}) --if(NOT DEACTIVATE_LZ4) -- if (LZ4_FOUND) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${LZ4_INCLUDE_DIR}) -- else(LZ4_FOUND) -- set(LZ4_LOCAL_DIR ${INTERNAL_LIBS}/lz4-1.9.1) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${LZ4_LOCAL_DIR}) -- endif(LZ4_FOUND) --endif(NOT DEACTIVATE_LZ4) -- --if(NOT DEACTIVATE_SNAPPY) -- if (SNAPPY_FOUND) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${SNAPPY_INCLUDE_DIR}) -- else(SNAPPY_FOUND) -- set(SNAPPY_LOCAL_DIR ${INTERNAL_LIBS}/snappy-1.1.1) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${SNAPPY_LOCAL_DIR}) -- endif(SNAPPY_FOUND) --endif(NOT DEACTIVATE_SNAPPY) -- --if(NOT DEACTIVATE_ZLIB) -- if (ZLIB_FOUND) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) -- else(ZLIB_FOUND) -- set(ZLIB_LOCAL_DIR ${INTERNAL_LIBS}/zlib-1.2.8) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${ZLIB_LOCAL_DIR}) -- endif(ZLIB_FOUND) --endif(NOT DEACTIVATE_ZLIB) -- --if (NOT DEACTIVATE_ZSTD) -- if (ZSTD_FOUND) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${ZSTD_INCLUDE_DIR}) -- else (ZSTD_FOUND) -- set(ZSTD_LOCAL_DIR ${INTERNAL_LIBS}/zstd-1.4.1) -- set(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIRS} ${ZSTD_LOCAL_DIR} ${ZSTD_LOCAL_DIR}/common) -- endif (ZSTD_FOUND) --endif (NOT DEACTIVATE_ZSTD) -- --include_directories(${BLOSC_INCLUDE_DIRS}) - - # library sources - set(SOURCES blosc.c blosclz.c fastcopy.c shuffle-generic.c bitshuffle-generic.c -@@ -73,53 +32,13 @@ if(WIN32) - message(STATUS "using the internal pthread library for win32 systems.") - set(SOURCES ${SOURCES} win32/pthread.c) - else(NOT Threads_FOUND) -- set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT}) -+ list(APPEND LIBS Threads::Threads) - endif(NOT Threads_FOUND) - else(WIN32) - find_package(Threads REQUIRED) -- set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT}) -+ list(APPEND LIBS Threads::Threads) - endif(WIN32) - --if(NOT DEACTIVATE_LZ4) -- if(LZ4_FOUND) -- set(LIBS ${LIBS} ${LZ4_LIBRARY}) -- else(LZ4_FOUND) -- file(GLOB LZ4_FILES ${LZ4_LOCAL_DIR}/*.c) -- set(SOURCES ${SOURCES} ${LZ4_FILES}) -- endif(LZ4_FOUND) --endif(NOT DEACTIVATE_LZ4) -- --if(NOT DEACTIVATE_SNAPPY) -- if(SNAPPY_FOUND) -- set(LIBS ${LIBS} ${SNAPPY_LIBRARY}) -- else(SNAPPY_FOUND) -- file(GLOB SNAPPY_FILES ${SNAPPY_LOCAL_DIR}/*.cc) -- set(SOURCES ${SOURCES} ${SNAPPY_FILES}) -- endif(SNAPPY_FOUND) --endif(NOT DEACTIVATE_SNAPPY) -- --if(NOT DEACTIVATE_ZLIB) -- if(ZLIB_FOUND) -- set(LIBS ${LIBS} ${ZLIB_LIBRARY}) -- else(ZLIB_FOUND) -- file(GLOB ZLIB_FILES ${ZLIB_LOCAL_DIR}/*.c) -- set(SOURCES ${SOURCES} ${ZLIB_FILES}) -- endif(ZLIB_FOUND) --endif(NOT DEACTIVATE_ZLIB) -- --if (NOT DEACTIVATE_ZSTD) -- if (ZSTD_FOUND) -- set(LIBS ${LIBS} ${ZSTD_LIBRARY}) -- else (ZSTD_FOUND) -- file(GLOB ZSTD_FILES -- ${ZSTD_LOCAL_DIR}/common/*.c -- ${ZSTD_LOCAL_DIR}/compress/*.c -- ${ZSTD_LOCAL_DIR}/decompress/*.c) -- set(SOURCES ${SOURCES} ${ZSTD_FILES}) -- endif (ZSTD_FOUND) --endif (NOT DEACTIVATE_ZSTD) -- -- - # targets - if (BUILD_SHARED) - add_library(blosc_shared SHARED ${SOURCES}) -@@ -191,14 +110,17 @@ if (BUILD_TESTS) - endif() - endif() - -+add_library(blosc INTERFACE) -+ - if (BUILD_SHARED) -- target_link_libraries(blosc_shared ${LIBS}) -- target_include_directories(blosc_shared PUBLIC ${BLOSC_INCLUDE_DIRS}) -+ target_link_libraries(blosc_shared PRIVATE ${LIBS}) -+ target_include_directories(blosc_shared PUBLIC $) -+ target_link_libraries(blosc INTERFACE blosc_shared) - endif() - - if (BUILD_TESTS) -- target_link_libraries(blosc_shared_testing ${LIBS}) -- target_include_directories(blosc_shared_testing PUBLIC ${BLOSC_INCLUDE_DIRS}) -+ target_link_libraries(blosc_shared_testing PRIVATE ${LIBS}) -+ target_include_directories(blosc_shared_testing PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - endif() - - if(BUILD_STATIC) -@@ -207,17 +129,31 @@ if(BUILD_STATIC) - if (MSVC) - set_target_properties(blosc_static PROPERTIES PREFIX lib) - endif() -- target_link_libraries(blosc_static ${LIBS}) -- target_include_directories(blosc_static PUBLIC ${BLOSC_INCLUDE_DIRS}) -+ # With the static library, cmake has to deal with transitive dependencies -+ target_link_libraries(blosc_static PRIVATE ${LIBS}) -+ target_include_directories(blosc_static PUBLIC $) -+ if (NOT BUILD_SHARED) -+ target_link_libraries(blosc INTERFACE blosc_static) -+ endif() - endif(BUILD_STATIC) - -+ - # install - if(BLOSC_INSTALL) - install(FILES blosc.h blosc-export.h DESTINATION include COMPONENT DEV) -+ set(_inst_libs "blosc") - if(BUILD_SHARED) -- install(TARGETS blosc_shared DESTINATION ${lib_dir} COMPONENT LIB) -+ list(APPEND _inst_libs blosc_shared) - endif(BUILD_SHARED) - if(BUILD_STATIC) -- install(TARGETS blosc_static DESTINATION ${lib_dir} COMPONENT DEV) -+ list(APPEND _inst_libs blosc_static) - endif(BUILD_STATIC) -+ -+ install(TARGETS ${_inst_libs} -+ EXPORT BloscTargets -+ LIBRARY DESTINATION ${lib_dir} -+ ARCHIVE DESTINATION ${lib_dir} -+ RUNTIME DESTINATION bin -+ COMPONENT DEV -+ INCLUDES DESTINATION include) - endif(BLOSC_INSTALL) -diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake -index e581a80..05de6ef 100644 ---- a/cmake/FindLZ4.cmake -+++ b/cmake/FindLZ4.cmake -@@ -5,6 +5,10 @@ find_library(LZ4_LIBRARY NAMES lz4) - if (LZ4_INCLUDE_DIR AND LZ4_LIBRARY) - set(LZ4_FOUND TRUE) - message(STATUS "Found LZ4 library: ${LZ4_LIBRARY}") -+ add_library(LZ4::LZ4 UNKNOWN IMPORTED) -+ set_target_properties(LZ4::LZ4 PROPERTIES -+ IMPORTED_LOCATION ${LZ4_LIBRARY} -+ INTERFACE_INCLUDE_DIRECTORIES ${LZ4_INCLUDE_DIR}) - else () - message(STATUS "No LZ4 library found. Using internal sources.") --endif () -+endif () -\ No newline at end of file -diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake -index 688d4d5..21dbee1 100644 ---- a/cmake/FindSnappy.cmake -+++ b/cmake/FindSnappy.cmake -@@ -3,8 +3,12 @@ find_path(SNAPPY_INCLUDE_DIR snappy-c.h) - find_library(SNAPPY_LIBRARY NAMES snappy) - - if (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARY) -- set(SNAPPY_FOUND TRUE) -+ set(Snappy_FOUND TRUE) -+ add_library(Snappy::snappy UNKNOWN IMPORTED) -+ set_target_properties(Snappy::snappy PROPERTIES -+ IMPORTED_LOCATION ${SNAPPY_LIBRARY} -+ INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR}) - message(STATUS "Found SNAPPY library: ${SNAPPY_LIBRARY}") - else () - message(STATUS "No snappy found. Using internal sources.") --endif () -+endif () -\ No newline at end of file -diff --git a/cmake/FindZstd.cmake b/cmake/FindZstd.cmake -index 7db4bb9..cabc2f8 100644 ---- a/cmake/FindZstd.cmake -+++ b/cmake/FindZstd.cmake -@@ -3,8 +3,12 @@ find_path(ZSTD_INCLUDE_DIR zstd.h) - find_library(ZSTD_LIBRARY NAMES zstd) - - if (ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY) -- set(ZSTD_FOUND TRUE) -+ set(Zstd_FOUND TRUE) -+ add_library(Zstd::Zstd UNKNOWN IMPORTED) -+ set_target_properties(Zstd::Zstd PROPERTIES -+ IMPORTED_LOCATION ${ZSTD_LIBRARY} -+ INTERFACE_INCLUDE_DIRECTORIES ${ZSTD_INCLUDE_DIR}) - message(STATUS "Found Zstd library: ${ZSTD_LIBRARY}") - else () - message(STATUS "No Zstd library found. Using internal sources.") --endif () -+endif () -\ No newline at end of file -diff --git a/cmake_config.cmake.in b/cmake_config.cmake.in -new file mode 100644 -index 0000000..0f6af24 ---- /dev/null -+++ b/cmake_config.cmake.in -@@ -0,0 +1,24 @@ -+include(CMakeFindDependencyMacro) -+ -+include("${CMAKE_CURRENT_LIST_DIR}/BloscTargets.cmake") -+ -+function(_blosc_remap_configs from_Cfg to_Cfg) -+ string(TOUPPER ${from_Cfg} from_CFG) -+ string(TOLOWER ${from_Cfg} from_cfg) -+ -+ if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/BloscTargets-${from_cfg}.cmake) -+ foreach(tgt IN ITEMS blosc_static blosc_shared blosc) -+ if(TARGET Blosc::${tgt}) -+ set_target_properties(Blosc::${tgt} PROPERTIES -+ MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg}) -+ endif() -+ endforeach() -+ endif() -+endfunction() -+ -+# MSVC will try to link RelWithDebInfo or MinSizeRel target with debug config -+# if no matching installation is present which would result in link errors. -+if(MSVC) -+ _blosc_remap_configs(RelWithDebInfo Release) -+ _blosc_remap_configs(MinSizeRel Release) -+endif() -diff --git a/internal-complibs/CMakeLists.txt b/internal-complibs/CMakeLists.txt -new file mode 100644 -index 0000000..4586efa ---- /dev/null -+++ b/internal-complibs/CMakeLists.txt -@@ -0,0 +1,35 @@ -+macro(add_lib_target pkg tgt incdir files) -+ string(TOUPPER ${pkg} TGT) -+ if(NOT DEACTIVATE_${TGT} AND NOT ${pkg}_FOUND) -+ add_library(${tgt}_objs OBJECT ${files}) -+ add_library(${tgt} INTERFACE) -+ target_include_directories(${tgt}_objs PRIVATE $) -+ target_include_directories(${tgt} INTERFACE $) -+ #set_target_properties(${tgt} PROPERTIES INTERFACE_SOURCES "$") -+ set_target_properties(${tgt}_objs PROPERTIES POSITION_INDEPENDENT_CODE ON) -+ target_sources(${tgt} INTERFACE "$>") -+ add_library(${pkg}::${tgt} ALIAS ${tgt}) -+ -+ # This creates dummy (empty) interface targets in the exported config. -+ install(TARGETS ${tgt} EXPORT BloscTargets INCLUDES DESTINATION include) -+ endif() -+ unset(TGT) -+endmacro() -+ -+set(ZLIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib-1.2.8) -+file(GLOB ZLIB_FILES ${ZLIB_DIR}/*.c) -+add_lib_target(ZLIB ZLIB ${ZLIB_DIR} "${ZLIB_FILES}") -+ -+set(SNAPPY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/snappy-1.1.1) -+file(GLOB SNAPPY_FILES ${SNAPPY_DIR}/*.cc) -+add_lib_target(Snappy snappy ${SNAPPY_DIR} "${SNAPPY_FILES}") -+ -+set(LZ4_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lz4-1.9.1) -+file(GLOB LZ4_FILES ${LZ4_DIR}/*.c) -+add_lib_target(LZ4 LZ4 ${LZ4_DIR} "${LZ4_FILES}") -+ -+set(ZSTD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zstd-1.4.1) -+file(GLOB ZSTD_FILES ${ZSTD_DIR}/common/*.c ${ZSTD_DIR}/compress/*.c ${ZSTD_DIR}/decompress/*.c) -+add_lib_target(Zstd Zstd ${ZSTD_DIR} "${ZSTD_FILES}") -+target_include_directories(Zstd INTERFACE $) -+target_include_directories(Zstd_objs PRIVATE $) -\ No newline at end of file --- -2.16.2.windows.1 - diff --git a/deps/Boost/Boost.cmake b/deps/Boost/Boost.cmake deleted file mode 100644 index 2b44218..0000000 --- a/deps/Boost/Boost.cmake +++ /dev/null @@ -1,168 +0,0 @@ -include(ExternalProject) - -if (WIN32) - set(_bootstrap_cmd bootstrap.bat) - set(_build_cmd b2.exe) -else() - set(_bootstrap_cmd ./bootstrap.sh) - set(_build_cmd ./b2) -endif() - -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(_boost_toolset gcc) - configure_file(${CMAKE_CURRENT_LIST_DIR}/user-config.jam boost-user-config.jam) - set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/boost-user-config.jam ./tools/build/src/tools/user-config.jam) -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - # https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html - if (MSVC_VERSION EQUAL 1800) - # 1800 = VS 12.0 (v120 toolset) - set(_boost_toolset "msvc-12.0") - elseif (MSVC_VERSION EQUAL 1900) - # 1900 = VS 14.0 (v140 toolset) - set(_boost_toolset "msvc-14.0") - elseif (MSVC_VERSION LESS 1920) - # 1910-1919 = VS 15.0 (v141 toolset) - set(_boost_toolset "msvc-14.1") - elseif (MSVC_VERSION LESS 1930) - # 1920-1929 = VS 16.0 (v142 toolset) - set(_boost_toolset "msvc-14.2") - elseif (MSVC_VERSION LESS 1940) - # 1930-1939 = VS 17.0 (v143 toolset) - set(_boost_toolset "msvc-14.3") - else () - message(FATAL_ERROR "Unsupported MSVC version") - endif () -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - if (WIN32) - set(_boost_toolset "clang-win") - elseif (APPLE) - set(_boost_toolset "clang") - else() - set(_boost_toolset clang) - configure_file(${CMAKE_CURRENT_LIST_DIR}/user-config.jam boost-user-config.jam) - set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/boost-user-config.jam ./tools/build/src/tools/user-config.jam) - endif() -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - set(_boost_toolset "intel") -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - set(_boost_toolset "clang") -endif() - -message(STATUS "Deduced boost toolset: ${_boost_toolset} based on ${CMAKE_CXX_COMPILER_ID} compiler") - -set(_libs "") -foreach(_comp ${DEP_Boost_COMPONENTS}) - list(APPEND _libs "--with-${_comp}") -endforeach() - -if (BUILD_SHARED_LIBS) - set(_link shared) -else() - set(_link static) -endif() - -set(_bits "") -if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") - set(_bits 64) -elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") - set(_bits 32) -endif () - -include(ProcessorCount) -ProcessorCount(NPROC) -file(TO_NATIVE_PATH ${DESTDIR}/usr/local/ _prefix) - -set(_boost_flags "") -if (UNIX) - set(_boost_flags "cflags=-fPIC;cxxflags=-fPIC") -endif () - -if(APPLE) - set(_boost_flags - "cflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};" - "cxxflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};" - "mflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};" - "mmflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}") -endif() - -set(_boost_variants "") -if(CMAKE_BUILD_TYPE) - list(APPEND CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE}) - list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES) -endif() -list(FIND CMAKE_CONFIGURATION_TYPES "Release" _cfg_rel) -list(FIND CMAKE_CONFIGURATION_TYPES "RelWithDebInfo" _cfg_relwdeb) -list(FIND CMAKE_CONFIGURATION_TYPES "MinSizeRel" _cfg_minsizerel) -list(FIND CMAKE_CONFIGURATION_TYPES "Debug" _cfg_deb) - -if (_cfg_rel GREATER -1 OR _cfg_relwdeb GREATER -1 OR _cfg_minsizerel GREATER -1) - list(APPEND _boost_variants release) -endif() - -if ( (NOT MSVC AND _cfg_deb GREATER -1) OR (MSVC AND ${DEP_DEBUG}) ) - list(APPEND _boost_variants debug) -endif() - -if (NOT _boost_variants) - set(_boost_variants release) -endif() - -set(_boost_layout system) -if (MSVC) - set(_boost_layout versioned) -endif () - -set(_build_cmd ${_build_cmd} - ${_boost_flags} - -j${NPROC} - ${_libs} - --layout=${_boost_layout} - --debug-configuration - toolset=${_boost_toolset} - address-model=${_bits} - link=${_link} - threading=multi - boost.locale.icu=off - --disable-icu - ${_boost_variants} - stage) - -set(_install_cmd ${_build_cmd} --prefix=${_prefix} install) - -if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - # When Clang is used with enabled UndefinedBehaviorSanitizer, it produces "undefined reference to '__muloti4'" when __int128 is used. - # Because of that, UndefinedBehaviorSanitizer is disabled for those functions that use __int128. - list(APPEND _patch_command COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/Boost.patch) -endif () - -ExternalProject_Add( - dep_Boost - URL "https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.zip" - URL_HASH SHA256=f22143b5528e081123c3c5ed437e92f648fe69748e95fa6e2bd41484e2986cc3 - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost - CONFIGURE_COMMAND "${_bootstrap_cmd}" - PATCH_COMMAND ${_patch_command} - BUILD_COMMAND "${_build_cmd}" - BUILD_IN_SOURCE ON - INSTALL_COMMAND "${_install_cmd}" -) - -if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") - # Patch the boost::polygon library with a custom one. - ExternalProject_Add(dep_boost_polygon - EXCLUDE_FROM_ALL ON - # GIT_REPOSITORY "https://github.com/qidi3d/polygon" - # GIT_TAG qidislicer_gmp - URL https://github.com/qidi3d/polygon/archive/refs/heads/qidislicer_gmp.zip - URL_HASH SHA256=abeb9710f0a7069fb9b22181ae5c56f6066002f125db210e7ffb27032aed6824 - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/boost_polygon - DEPENDS dep_Boost - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory - "${CMAKE_CURRENT_BINARY_DIR}/dep_boost_polygon-prefix/src/dep_boost_polygon/include/boost/polygon" - "${DESTDIR}/usr/local/include/boost/polygon" - ) - # Only override boost::Polygon Voronoi implementation with Vojtech's GMP hacks on 64bit platforms. - list(APPEND _dep_list "dep_boost_polygon") -endif () diff --git a/deps/Boost/Boost.patch b/deps/Boost/Boost.patch deleted file mode 100644 index 8c54430..0000000 --- a/deps/Boost/Boost.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -u ../boost_1_75_0-orig/boost/rational.hpp ./boost/rational.hpp ---- ../boost_1_75_0-orig/boost/rational.hpp 2020-12-03 06:02:19.000000000 +0100 -+++ ./boost/rational.hpp 2022-01-27 16:02:27.993848905 +0100 -@@ -302,6 +302,9 @@ - return *this; - } - template -+ #if defined(__clang__) -+ __attribute__((no_sanitize("undefined"))) -+ #endif - BOOST_CXX14_CONSTEXPR typename boost::enable_if_c::value, rational&>::type operator*= (const T& i) - { - // Avoid overflow and preserve normalization -@@ -311,6 +314,9 @@ - return *this; - } - template -+ #if defined(__clang__) -+ __attribute__((no_sanitize("undefined"))) -+ #endif - BOOST_CXX14_CONSTEXPR typename boost::enable_if_c::value, rational&>::type operator/= (const T& i) - { - // Avoid repeated construction diff --git a/deps/Boost/user-config.jam b/deps/Boost/user-config.jam deleted file mode 100644 index 6d86ef8..0000000 --- a/deps/Boost/user-config.jam +++ /dev/null @@ -1 +0,0 @@ -using @_boost_toolset@ : : @CMAKE_CXX_COMPILER@ ; \ No newline at end of file diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 87beb88..073c92b 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -19,110 +19,77 @@ # WARNING: On UNIX platforms wxWidgets hardcode the destdir path into its `wx-conffig` utility, # therefore, unfortunatelly, the installation cannot be copied/moved elsewhere without re-installing wxWidgets. # +cmake_minimum_required(VERSION 3.12) +project(QIDISlicer_deps) -project(QIDISlicer-deps) -cmake_minimum_required(VERSION 3.2) +# Redefine BUILD_SHARED_LIBS with default being OFF +option(BUILD_SHARED_LIBS "Build shared libraries instead of static (experimental)" OFF) -include(ExternalProject) -include(ProcessorCount) +# List libraries to be excluded from build +set(${PROJECT_NAME}_PACKAGE_EXCLUDES "" CACHE STRING "Exclude packages matching this regex pattern") -ProcessorCount(NPROC) -if (NPROC EQUAL 0) - set(NPROC 1) +# Support legacy parameter DESTDIR +if (DESTDIR) + set(${PROJECT_NAME}_DEP_INSTALL_PREFIX ${DESTDIR}/usr/local CACHE PATH "Destination directory" FORCE) endif () -set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") -set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.") - -option(DEP_DEBUG "Build debug variants (only applicable on Windows)" ON) - -if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF) -endif() - -# On developer machines, it can be enabled to speed up compilation and suppress warnings coming from IGL. -# FIXME: -# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while -# Slic3r compiles with a different version which will cause runtime errors. -# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF) - -message(STATUS "QIDISlicer deps DESTDIR: ${DESTDIR}") -message(STATUS "QIDISlicer dowload dir for source packages: ${DEP_DOWNLOAD_DIR}") -message(STATUS "QIDISlicer deps debug build: ${DEP_DEBUG}") - -find_package(Git REQUIRED) - -# The default command line for patching. Only works for newer -set(PATCH_CMD ${GIT_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix) - -get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - -if (NOT _is_multi AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release) - message(STATUS "Forcing CMAKE_BUILD_TYPE to Release as it was not specified.") +# Support legacy parameter DEP_DOWNLOAD_DIR +if (DEP_DOWNLOAD_DIR) + set(${PROJECT_NAME}_DEP_DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR} CACHE PATH "Path for downloaded source packages." FORCE) endif () -function(qidislicer_add_cmake_project projectname) - cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN}) - - set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) - if (_is_multi OR MSVC) - set(_configs_line "") - endif () - - set(_gen "") - set(_build_j "-j${NPROC}") - if (MSVC) - set(_gen CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_GENERATOR_PLATFORM "${DEP_PLATFORM}") - set(_build_j "/m") - if (${projectname} STREQUAL "OCCT") - set(_build_j "/m:1") - endif () - endif () - - ExternalProject_Add( - dep_${projectname} - EXCLUDE_FROM_ALL ON - INSTALL_DIR ${DESTDIR}/usr/local - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname} - ${_gen} - CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local - -DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules - -DCMAKE_PREFIX_PATH:STRING=${DESTDIR}/usr/local - -DCMAKE_DEBUG_POSTFIX:STRING=d - -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} - -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} - -DBUILD_SHARED_LIBS:BOOL=OFF - "${_configs_line}" - ${DEP_CMAKE_OPTS} - ${P_ARGS_CMAKE_ARGS} - ${P_ARGS_UNPARSED_ARGUMENTS} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release - ) - -endfunction(qidislicer_add_cmake_project) - +# Slightly controversial +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake/modules) if (MSVC) - if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") - message(STATUS "\nDetected 64-bit compiler => building 64-bit deps bundle\n") - set(DEPS_BITS 64) - include("deps-windows.cmake") - elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") - message(STATUS "\nDetected 32-bit compiler => building 32-bit deps bundle\n") - set(DEPS_BITS 32) - include("deps-windows.cmake") - else () - message(FATAL_ERROR "Unable to detect architecture") - endif () -elseif (APPLE) - message("OS X SDK Path: ${CMAKE_OSX_SYSROOT}") + option(DEP_DEBUG "Build in debug version of packages automatically" ON) +endif () + +if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.24) + cmake_policy(SET CMP0135 NEW) +endif () + +include(${PROJECT_SOURCE_DIR}/../cmake/modules/AddCMakeProject.cmake) + +macro(list_projects result curdir) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child}) + string(REGEX MATCH "^\\+([a-zA-Z0-9]+)" is_package_dir ${child}) + if(is_package_dir AND EXISTS ${curdir}/${child}/${CMAKE_MATCH_1}.cmake) + list(APPEND dirlist ${CMAKE_MATCH_1}) + endif() + endif() + endforeach() + set(${result} ${dirlist}) +endmacro() + +function(dep_message mode msg) + if (NOT DEP_MESSAGES_WRITTEN) + message(${mode} "${msg}") + endif() +endfunction () + +# Always ON options: +if (MSVC) + if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + dep_message(STATUS "Detected 64-bit compiler => building 64-bit deps bundle") + set(DEPS_BITS 64) + elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") + dep_message(STATUS "Detected 32-bit compiler => building 32-bit deps bundle") + set(DEPS_BITS 32) + else () + dep_message(FATAL_ERROR "Unable to detect architecture!") + endif () +else () + set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") +endif () + +if (APPLE) if (CMAKE_OSX_DEPLOYMENT_TARGET) set(DEP_OSX_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}") - message("OS X Deployment Target: ${DEP_OSX_TARGET}") + dep_message(STATUS "OS X Deployment Target: ${DEP_OSX_TARGET}") else () # Attempt to infer the SDK version from the CMAKE_OSX_SYSROOT, # this is done because wxWidgets need the min version explicitly set @@ -133,91 +100,198 @@ elseif (APPLE) message(FATAL_ERROR "Could not determine OS X SDK version. Please use -DCMAKE_OSX_DEPLOYMENT_TARGET=") endif () - message("OS X Deployment Target (inferred from SDK): ${DEP_OSX_TARGET}") + dep_message(STATUS "OS X Deployment Target (inferred from SDK): ${DEP_OSX_TARGET}") endif () - include("deps-macos.cmake") -elseif (MINGW) - message(STATUS "Building for MinGW...") - include("deps-mingw.cmake") -else() - include("deps-linux.cmake") -endif() - -set(ZLIB_PKG "") -if (NOT ZLIB_FOUND) - include(ZLIB/ZLIB.cmake) - set(ZLIB_PKG dep_ZLIB) -endif () -set(PNG_PKG "") -if (NOT PNG_FOUND) - include(PNG/PNG.cmake) - set(PNG_PKG dep_PNG) -endif () -set(EXPAT_PKG "") -if (NOT EXPAT_FOUND) - include(EXPAT/EXPAT.cmake) - set(EXPAT_PKG dep_EXPAT) -endif () - -set(DEP_Boost_COMPONENTS system iostreams filesystem thread log locale regex date_time) -include(Boost/Boost.cmake) - -# The order of includes respects the dependencies between libraries -include(Cereal/Cereal.cmake) -include(Qhull/Qhull.cmake) -include(GLEW/GLEW.cmake) -include(OpenCSG/OpenCSG.cmake) - -include(TBB/TBB.cmake) - -include(Blosc/Blosc.cmake) -include(OpenEXR/OpenEXR.cmake) -include(OpenVDB/OpenVDB.cmake) - -include(GMP/GMP.cmake) -include(MPFR/MPFR.cmake) -include(CGAL/CGAL.cmake) - -include(NLopt/NLopt.cmake) - -include(OpenSSL/OpenSSL.cmake) - -set(CURL_PKG "") -if (NOT CURL_FOUND) - include(CURL/CURL.cmake) - set(CURL_PKG dep_CURL) -endif () - -include(JPEG/JPEG.cmake) -include(TIFF/TIFF.cmake) -include(NanoSVG/NanoSVG.cmake) -include(wxWidgets/wxWidgets.cmake) -include(OCCT/OCCT.cmake) - -set(_dep_list - dep_Boost - dep_TBB - ${CURL_PKG} - dep_wxWidgets - dep_Cereal - dep_NLopt - dep_OpenVDB - dep_OpenCSG - dep_CGAL - dep_Qhull - dep_OCCT - ${PNG_PKG} - ${ZLIB_PKG} - ${EXPAT_PKG} + # This ensures dependencies don't use SDK features which are not available in the version specified by Deployment target + # That can happen when one uses a recent SDK but specifies an older Deployment target + set(DEP_WERRORS_SDK "-Werror=partial-availability -Werror=unguarded-availability -Werror=unguarded-availability-new") + + set(DEP_CMAKE_OPTS + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" + "-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}" + "-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" + "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}" + "-DCMAKE_CXX_FLAGS=${DEP_WERRORS_SDK}" + "-DCMAKE_C_FLAGS=${DEP_WERRORS_SDK}" + "-DCMAKE_FIND_FRAMEWORK=LAST" + "-DCMAKE_FIND_APPBUNDLE=LAST" ) +endif () -# if (NOT MSVC) - # Not working, static build has different Eigen - #list(APPEND _dep_list "dep_libigl") -# endif() +list_projects(FOUND_PACKAGES ${CMAKE_CURRENT_LIST_DIR}) -add_custom_target(deps ALL DEPENDS ${_dep_list}) +dep_message(STATUS "Found external package definitions: ${FOUND_PACKAGES}") -# Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands -# because they seem to generate bogus build files (possibly a bug in ExternalProject). +# Current list of all required dependencies for PS (top level) +set(REQUIRED_PACKAGES + Boost + Catch2 + Cereal + CURL + EXPAT + NLopt + GLEW + TBB + Qhull + wxWidgets + OpenVDB + CGAL + OCCT + ZLIB + LibBGCode +) + +set(${PROJECT_NAME}_PLATFORM_PACKAGES "" CACHE STRING "Select packages which are provided by the platform" ) +set(SYSTEM_PROVIDED_PACKAGES OpenGL) + +if (UNIX) + # On UNIX systems (including Apple) ZLIB should be available + list(APPEND SYSTEM_PROVIDED_PACKAGES ZLIB) + if (APPLE) + # Deal with CURL on Apple (See issue #5984 on GH): + # Mac SDK should include CURL from at least version 10.12 + list(APPEND SYSTEM_PROVIDED_PACKAGES CURL) + endif () +endif () + + +list(APPEND SYSTEM_PROVIDED_PACKAGES ${${PROJECT_NAME}_PLATFORM_PACKAGES}) +list(REMOVE_DUPLICATES SYSTEM_PROVIDED_PACKAGES) + +include(CMakeDependentOption) +option(${PROJECT_NAME}_SELECT_ALL "Choose all external projects to be built." ON) + +find_package(Git REQUIRED) + +# The default command line for patching. Only works for newer +set(PATCH_CMD ${GIT_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix) + +# all required package targets that have existing definitions will be gathered here +set(DEPS_TO_BUILD "") +set(_build_list "") +set(_build_list_toplevel "") +set(_checked_list "") + +# function to check if a package ought to be provided by the platform can really be found +function (check_system_package pkg checked_list) + if (NOT ${pkg} IN_LIST ${checked_list}) + find_package(${pkg}) + if (NOT ${pkg}_FOUND) + dep_message(WARNING "No ${pkg} found in system altough marked as system provided. This might cause trouble building the dependencies on this platform") + endif () + list(APPEND ${checked_list} ${pkg}) + set (${checked_list} ${${checked_list}} PARENT_SCOPE) + endif () +endfunction() + +# Go through all the found package definition folders and filter them according to the provided cache options +set(SUPPORTED_PACKAGES "") +foreach (pkg ${FOUND_PACKAGES}) + cmake_dependent_option(${PROJECT_NAME}_SELECT_${pkg} "Select package ${pkg} to be built." OFF "NOT ${PROJECT_NAME}_SELECT_ALL" OFF) + if (NOT ${PROJECT_NAME}_PACKAGE_EXCLUDES MATCHES ${pkg} AND (${PROJECT_NAME}_SELECT_ALL OR ${PROJECT_NAME}_SELECT_${pkg})) + include(+${pkg}/${pkg}.cmake) + + list(APPEND SUPPORTED_PACKAGES ${pkg}) + + if (${pkg} IN_LIST SYSTEM_PROVIDED_PACKAGES) + check_system_package(${pkg} _checked_list) + elseif (${pkg} IN_LIST REQUIRED_PACKAGES) + list(APPEND DEPS_TO_BUILD ${pkg}) + endif () + endif () +endforeach() + +# Establish dependency graph +foreach (pkg ${SUPPORTED_PACKAGES}) + if (${pkg} IN_LIST DEPS_TO_BUILD) + list(APPEND _build_list dep_${pkg}) + list(APPEND _build_list_toplevel dep_${pkg}) + endif () + foreach(deppkg ${DEP_${pkg}_DEPENDS}) + if (${deppkg} IN_LIST SYSTEM_PROVIDED_PACKAGES) + check_system_package(${deppkg} _checked_list) + elseif(TARGET dep_${deppkg}) + dep_message(STATUS "Mapping dep_${deppkg} => dep_${pkg}") + add_dependencies(dep_${pkg} dep_${deppkg}) + if (${pkg} IN_LIST REQUIRED_PACKAGES) + list(APPEND _build_list dep_${deppkg}) + endif () + endif () + endforeach() +endforeach() + +list(REMOVE_DUPLICATES _build_list) +dep_message(STATUS "Building dep targets (${CMAKE_BUILD_TYPE}): ${_build_list}") +add_custom_target(deps ALL DEPENDS ${_build_list_toplevel}) + +# Support legacy option DEP_DEBUG on MSVC to build debug libraries in the same cmake run as for CMAKE_BUILD_TYPE: +if (DEP_DEBUG AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + # MSVC has this nice feature to not be able to link release mode libs to Debug mode + # projects + + # Exclude the libraries which have no problem to link to Debug builds in + # Release mode (mostly C libraries) + set(DEP_DEBUG_EXCLUDES GMP MPFR OpenSSL NanoSVG TIFF JPEG ZLIB heatshrink) + if (UNIX) + # Making a separate debug build on Unix of wx is a nightmare + list(APPEND DEP_DEBUG_EXCLUDES wxWidgets) + endif () + + # Create the list of targets needed in debug mode + set(_build_list_dbg "") + set(_build_list_filt ${_build_list}) + list(JOIN DEP_DEBUG_EXCLUDES "|" _excl_regexp) + list(FILTER _build_list_filt EXCLUDE REGEX "${_excl_regexp}") + + foreach (t ${_build_list_filt}) + list(APPEND _build_list_dbg ${t}_debug) + endforeach() + + # Create a subdirectory for the Debug build within the current binary dir: + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_d) + execute_process( + COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR} -G${CMAKE_GENERATOR} + -DCMAKE_BUILD_TYPE=Debug + -DDEP_WX_GTK3=${DEP_WX_GTK3} + -D${PROJECT_NAME}_DEP_DOWNLOAD_DIR=${${PROJECT_NAME}_DEP_DOWNLOAD_DIR} + -D${PROJECT_NAME}_DEP_INSTALL_PREFIX=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} + -D${PROJECT_NAME}_PACKAGE_EXCLUDES="${_excl_regexp}" + -D${PROJECT_NAME}_SELECT_ALL=${${PROJECT_NAME}_SELECT_ALL} + -D${PROJECT_NAME}_DEP_BUILD_VERBOSE=${${PROJECT_NAME}_DEP_BUILD_VERBOSE} + -DCMAKE_DEBUG_POSTFIX=d + #TODO: forward per-package selector variables + -DDEP_MESSAGES_WRITTEN=ON + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_d + OUTPUT_QUIET + ) + + dep_message(STATUS "Building dep targets (Debug): ${_build_list_dbg}") + + # Each lib will have a dep__debug target to build only the debug counterpart + # Not part of ALL (problem with parallelization) + foreach(pkgtgt ${_build_list_filt}) + add_custom_target(${pkgtgt}_debug + COMMAND ${CMAKE_COMMAND} --build . --target ${pkgtgt} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_d + USES_TERMINAL + ) + endforeach() + + # Can be used to build all the debug libs + string(JOIN " " _build_list_filt_targets "${_build_list_filt}") + add_custom_target(deps_debug ALL + COMMAND ${CMAKE_COMMAND} --build . --target ${_build_list_filt_targets} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/_d + USES_TERMINAL + ) + + # The Release must be built before, as there are libs in this debug session which need + # the release versions of the excluded libs + add_dependencies(deps_debug deps) + +endif () + +set(DEP_MESSAGES_WRITTEN ON CACHE BOOL "") + +install(CODE "message(STATUS \"Built packages succesfully.\")") diff --git a/deps/CMakePresets.json b/deps/CMakePresets.json new file mode 100644 index 0000000..b6dc536 --- /dev/null +++ b/deps/CMakePresets.json @@ -0,0 +1,57 @@ +{ + "version": 3, + "configurePresets": [ + { + "name": "default", + "displayName": "Default Config", + "description": "Default build for any desktop OS", + "binaryDir": "${sourceDir}/build-default", + "condition": { + "type": "const", + "value": true + }, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "DEP_WX_GTK3": true, + "DEP_DOWNLOAD_DIR": { + "type": "PATH", + "value": "${sourceDir}/.pkg_cache" + } + } + }, + { + "name": "no-occt", + "inherits": "default", + "binaryDir": "${sourceDir}/build-no-occt", + "cacheVariables": { + "PrusaSlicer_deps_PACKAGE_EXCLUDES": "OCCT" + } + }, + { + "name": "mac_universal_x86", + "inherits": "default", + "binaryDir": "${sourceDir}/build-x86_64", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + }, + "cacheVariables": { + "CMAKE_OSX_ARCHITECTURES": "x86_64" + } + }, + { + "name": "mac_universal_arm", + "inherits": "default", + "binaryDir": "${sourceDir}/build-arm64", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + }, + "cacheVariables": { + "CMAKE_OSX_ARCHITECTURES": "arm64" + } + } + ] +} diff --git a/deps/GLEW/GLEW.cmake b/deps/GLEW/GLEW.cmake deleted file mode 100644 index bc36940..0000000 --- a/deps/GLEW/GLEW.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# We have to check for OpenGL to compile GLEW -set(OpenGL_GL_PREFERENCE "LEGACY") # to prevent a nasty warning by cmake -find_package(OpenGL QUIET REQUIRED) - -qidislicer_add_cmake_project( - GLEW - URL https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip - URL_HASH SHA256=a9046a913774395a095edcc0b0ac2d81c3aacca61787b39839b941e9be14e0d4 - SOURCE_SUBDIR build/cmake - CMAKE_ARGS - -DBUILD_UTILS=OFF -) - -if (MSVC) - add_debug_dep(dep_GLEW) -endif () diff --git a/deps/JPEG/JPEG.cmake b/deps/JPEG/JPEG.cmake deleted file mode 100644 index fb3920f..0000000 --- a/deps/JPEG/JPEG.cmake +++ /dev/null @@ -1,8 +0,0 @@ -qidislicer_add_cmake_project(JPEG - URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/2.0.6.zip - URL_HASH SHA256=017bdc33ff3a72e11301c0feb4657cb27719d7f97fa67a78ed506c594218bbf1 - DEPENDS ${ZLIB_PKG} - CMAKE_ARGS - -DENABLE_SHARED=OFF - -DENABLE_STATIC=ON -) diff --git a/deps/MPFR/MPFR.cmake b/deps/MPFR/MPFR.cmake deleted file mode 100644 index c29bb39..0000000 --- a/deps/MPFR/MPFR.cmake +++ /dev/null @@ -1,38 +0,0 @@ -set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/mpfr) -set(_dstdir ${DESTDIR}/usr/local) - -if (MSVC) - set(_output ${_dstdir}/include/mpfr.h - ${_dstdir}/include/mpf2mpfr.h - ${_dstdir}/lib/libmpfr-4.lib - ${_dstdir}/bin/libmpfr-4.dll) - - add_custom_command( - OUTPUT ${_output} - COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${_dstdir}/include/ - COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${_dstdir}/include/ - COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${_dstdir}/lib/ - COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${_dstdir}/bin/ - ) - - add_custom_target(dep_MPFR SOURCES ${_output}) - -else () - - set(_cross_compile_arg "") - if (CMAKE_CROSSCOMPILING) - # TOOLCHAIN_PREFIX should be defined in the toolchain file - set(_cross_compile_arg --host=${TOOLCHAIN_PREFIX}) - endif () - - ExternalProject_Add(dep_MPFR - URL http://ftp.vim.org/ftp/gnu/mpfr/mpfr-3.1.6.tar.bz2 https://www.mpfr.org/mpfr-3.1.6/mpfr-3.1.6.tar.bz2 # mirrors are allowed - URL_HASH SHA256=cf4f4b2d80abb79e820e78c8077b6725bbbb4e8f41896783c899087be0e94068 - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR - BUILD_IN_SOURCE ON - CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt} - BUILD_COMMAND make -j - INSTALL_COMMAND make install - DEPENDS dep_GMP - ) -endif () diff --git a/deps/OpenCSG/OpenCSG.cmake b/deps/OpenCSG/OpenCSG.cmake deleted file mode 100644 index 18d6696..0000000 --- a/deps/OpenCSG/OpenCSG.cmake +++ /dev/null @@ -1,17 +0,0 @@ - -qidislicer_add_cmake_project(OpenCSG - # GIT_REPOSITORY https://github.com/floriankirsch/OpenCSG.git - # GIT_TAG 83e274457b46c9ad11a4ee599203250b1618f3b9 #v1.4.2 - URL https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip - URL_HASH SHA256=51afe0db79af8386e2027d56d685177135581e0ee82ade9d7f2caff8deab5ec5 - PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in ./CMakeLists.txt - DEPENDS dep_GLEW -) - -if (TARGET ${ZLIB_PKG}) - add_dependencies(dep_OpenCSG ${ZLIB_PKG}) -endif() - -if (MSVC) - add_debug_dep(dep_OpenCSG) -endif () \ No newline at end of file diff --git a/deps/Qhull/Qhull.cmake b/deps/Qhull/Qhull.cmake deleted file mode 100644 index 5d38d3a..0000000 --- a/deps/Qhull/Qhull.cmake +++ /dev/null @@ -1,11 +0,0 @@ -include(GNUInstallDirs) -qidislicer_add_cmake_project(Qhull - URL "https://github.com/qhull/qhull/archive/v8.0.1.zip" - URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b - CMAKE_ARGS - -DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR} -) - -if (MSVC) - add_debug_dep(dep_Qhull) -endif () \ No newline at end of file diff --git a/deps/TIFF/TIFF.cmake b/deps/TIFF/TIFF.cmake deleted file mode 100644 index 05bbecb..0000000 --- a/deps/TIFF/TIFF.cmake +++ /dev/null @@ -1,13 +0,0 @@ -find_package(OpenGL QUIET REQUIRED) - -qidislicer_add_cmake_project(TIFF - URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip - URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32 - DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG - CMAKE_ARGS - -Dlzma:BOOL=OFF - -Dwebp:BOOL=OFF - -Djbig:BOOL=OFF - -Dzstd:BOOL=OFF - -Dpixarlog:BOOL=OFF -) diff --git a/deps/autobuild.cmake b/deps/autobuild.cmake new file mode 100644 index 0000000..316a5b8 --- /dev/null +++ b/deps/autobuild.cmake @@ -0,0 +1,63 @@ +if (NOT ${PROJECT_NAME}_DEPS_PRESET) + set (${PROJECT_NAME}_DEPS_PRESET "default") +endif () + +set (_output_quiet "") +if (${PROJECT_NAME}_DEPS_OUTPUT_QUIET) + set (_output_quiet OUTPUT_QUIET) +endif () + +message(STATUS "Building the dependencies with preset ${${PROJECT_NAME}_DEPS_PRESET}") + +set(_gen_arg "") +if (CMAKE_GENERATOR) + set (_gen_arg "-G${CMAKE_GENERATOR}") +endif () + +set(_build_args "") + +if (CMAKE_C_COMPILER) + list(APPEND _build_args "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}") +endif () + +if (CMAKE_CXX_COMPILER) + list(APPEND _build_args "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") +endif () + +if (CMAKE_TOOLCHAIN_FILE) + list(APPEND _build_args "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") +endif () + +set(_build_dir "${CMAKE_CURRENT_LIST_DIR}/build-${${PROJECT_NAME}_DEPS_PRESET}") +if (${PROJECT_NAME}_DEPS_BUILD_DIR) + set(_build_dir "${${PROJECT_NAME}_DEPS_BUILD_DIR}") +endif () + +message(STATUS "build dir = ${_build_dir}") + +execute_process( + COMMAND ${CMAKE_COMMAND} --preset ${${PROJECT_NAME}_DEPS_PRESET} "${_gen_arg}" -B ${_build_dir} ${_build_args} + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + ${_output_quiet} + ERROR_VARIABLE _deps_configure_output + RESULT_VARIABLE _deps_configure_result +) + +if (NOT _deps_configure_result EQUAL 0) + message(FATAL_ERROR "Dependency configure failed with output:\n${_deps_configure_output}") +else () + execute_process( + COMMAND ${CMAKE_COMMAND} --build . + WORKING_DIRECTORY ${_build_dir} + ${_output_quiet} + ERROR_VARIABLE _deps_build_output + RESULT_VARIABLE _deps_build_result + ) + if (NOT _deps_build_result EQUAL 0) + message(FATAL_ERROR "Dependency build failed with output:\n${_deps_build_output}") + endif () +endif () + +list(APPEND CMAKE_PREFIX_PATH ${_build_dir}/destdir/usr/local) +set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" CACHE STRING "") + diff --git a/deps/deps-linux.cmake b/deps/deps-linux.cmake deleted file mode 100644 index fbe7b71..0000000 --- a/deps/deps-linux.cmake +++ /dev/null @@ -1,10 +0,0 @@ - -set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") - -include("deps-unix-common.cmake") - -# Some Linuxes may have very old libpng, so it's best to bundle it instead of relying on the system version. -# find_package(PNG QUIET) -# if (NOT PNG_FOUND) -# message(WARNING "No PNG dev package found in system, building static library. You should install the system package.") -# endif () \ No newline at end of file diff --git a/deps/deps-macos.cmake b/deps/deps-macos.cmake deleted file mode 100644 index d9e0ce3..0000000 --- a/deps/deps-macos.cmake +++ /dev/null @@ -1,96 +0,0 @@ - -# This ensures dependencies don't use SDK features which are not available in the version specified by Deployment target -# That can happen when one uses a recent SDK but specifies an older Deployment target -set(DEP_WERRORS_SDK "-Werror=partial-availability -Werror=unguarded-availability -Werror=unguarded-availability-new") - -set(DEP_CMAKE_OPTS - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" - "-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}" - "-DCMAKE_OSX_DEPLOYMENT_TARGET=${DEP_OSX_TARGET}" - "-DCMAKE_CXX_FLAGS=${DEP_WERRORS_SDK}" - "-DCMAKE_C_FLAGS=${DEP_WERRORS_SDK}" - "-DCMAKE_FIND_FRAMEWORK=LAST" - "-DCMAKE_FIND_APPBUNDLE=LAST" -) - -include("deps-unix-common.cmake") - -find_package(CURL QUIET) -if (NOT CURL_FOUND) - message(WARNING "No CURL dev package found in system, building static library. Mac SDK should include CURL from at least version 10.12. Check your SDK installation.") -endif () - - -# ExternalProject_Add(dep_boost -# EXCLUDE_FROM_ALL 1 -# URL "https://dl.bintray.com/boostorg/release/1.75.0/source/boost_1_75_0.tar.gz" -# URL_HASH SHA256=aeb26f80e80945e82ee93e5939baebdca47b9dee80a07d3144be1e1a6a66dd6a -# BUILD_IN_SOURCE 1 -# CONFIGURE_COMMAND ./bootstrap.sh -# --with-toolset=clang -# --with-libraries=system,iostreams,filesystem,thread,log,locale,regex,date_time -# "--prefix=${DESTDIR}/usr/local" -# BUILD_COMMAND ./b2 -# -j ${NPROC} -# --reconfigure -# toolset=clang -# link=static -# variant=release -# threading=multi -# boost.locale.icu=off -# --disable-icu -# "cflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}" -# "cxxflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}" -# "mflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}" -# "mmflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}" -# install -# INSTALL_COMMAND "" # b2 does that already -# ) - -# ExternalProject_Add(dep_libcurl -# EXCLUDE_FROM_ALL 1 -# URL "https://curl.haxx.se/download/curl-7.58.0.tar.gz" -# URL_HASH SHA256=cc245bf9a1a42a45df491501d97d5593392a03f7b4f07b952793518d97666115 -# BUILD_IN_SOURCE 1 -# CONFIGURE_COMMAND ./configure -# --enable-static -# --disable-shared -# "--with-ssl=${DESTDIR}/usr/local" -# --with-pic -# --enable-ipv6 -# --enable-versioned-symbols -# --enable-threaded-resolver -# --with-darwinssl -# --without-ssl # disables OpenSSL -# --disable-ldap -# --disable-ldaps -# --disable-manual -# --disable-rtsp -# --disable-dict -# --disable-telnet -# --disable-pop3 -# --disable-imap -# --disable-smb -# --disable-smtp -# --disable-gopher -# --without-gssapi -# --without-libpsl -# --without-libidn2 -# --without-gnutls -# --without-polarssl -# --without-mbedtls -# --without-cyassl -# --without-nss -# --without-axtls -# --without-brotli -# --without-libmetalink -# --without-libssh -# --without-libssh2 -# --without-librtmp -# --without-nghttp2 -# --without-zsh-functions-dir -# BUILD_COMMAND make "-j${NPROC}" -# INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" -# ) - -# add_dependencies(dep_openvdb dep_boost) \ No newline at end of file diff --git a/deps/deps-mingw.cmake b/deps/deps-mingw.cmake deleted file mode 100644 index b86554f..0000000 --- a/deps/deps-mingw.cmake +++ /dev/null @@ -1,8 +0,0 @@ -set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") -set(DEP_BOOST_TOOLSET "gcc") -set(DEP_BITS 64) - -find_package(Git REQUIRED) - -# TODO make sure to build tbb with -flifetime-dse=1 -include("deps-unix-common.cmake") diff --git a/deps/deps-unix-common.cmake b/deps/deps-unix-common.cmake deleted file mode 100644 index d715e81..0000000 --- a/deps/deps-unix-common.cmake +++ /dev/null @@ -1,19 +0,0 @@ - -# The unix common part expects DEP_CMAKE_OPTS to be set - -if (MINGW) - set(TBB_MINGW_WORKAROUND "-flifetime-dse=1") -else () - set(TBB_MINGW_WORKAROUND "") -endif () - -find_package(ZLIB QUIET) -if (NOT ZLIB_FOUND) - message(WARNING "No ZLIB dev package found in system, building static library. You should install the system package.") -endif () - -# TODO Evaluate expat modifications in the bundled version and test with system versions in various distros and OSX SDKs -# find_package(EXPAT QUIET) -# if (NOT EXPAT_FOUND) -# message(WARNING "No EXPAT dev package found in system, building static library. Consider installing the system package.") -# endif () diff --git a/deps/deps-windows.cmake b/deps/deps-windows.cmake deleted file mode 100644 index aba6fca..0000000 --- a/deps/deps-windows.cmake +++ /dev/null @@ -1,68 +0,0 @@ -# https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html -if (MSVC_VERSION EQUAL 1800) -# 1800 = VS 12.0 (v120 toolset) - set(DEP_VS_VER "12") - set(DEP_BOOST_TOOLSET "msvc-12.0") -elseif (MSVC_VERSION EQUAL 1900) -# 1900 = VS 14.0 (v140 toolset) - set(DEP_VS_VER "14") - set(DEP_BOOST_TOOLSET "msvc-14.0") -elseif (MSVC_VERSION LESS 1920) -# 1910-1919 = VS 15.0 (v141 toolset) - set(DEP_VS_VER "15") - set(DEP_BOOST_TOOLSET "msvc-14.1") -elseif (MSVC_VERSION LESS 1930) -# 1920-1929 = VS 16.0 (v142 toolset) - set(DEP_VS_VER "16") - set(DEP_BOOST_TOOLSET "msvc-14.2") -elseif (MSVC_VERSION LESS 1940) -# 1930-1939 = VS 17.0 (v143 toolset) - set(DEP_VS_VER "17") - set(DEP_BOOST_TOOLSET "msvc-14.3") -else () - message(FATAL_ERROR "Unsupported MSVC version") -endif () - -if (CMAKE_CXX_COMPILER_ID STREQUAL Clang) - set(DEP_BOOST_TOOLSET "clang-win") -endif () - -if (${DEPS_BITS} EQUAL 32) - set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}") - set(DEP_PLATFORM "Win32") -else () - if (DEP_VS_VER LESS 16) - set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER} Win64") - else () - set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}") - endif () - set(DEP_PLATFORM "x64") -endif () - -if (${DEP_DEBUG}) - set(DEP_BOOST_DEBUG "debug") -else () - set(DEP_BOOST_DEBUG "") -endif () - -macro(add_debug_dep _dep) -if (${DEP_DEBUG}) - ExternalProject_Get_Property(${_dep} BINARY_DIR) - ExternalProject_Add_Step(${_dep} build_debug - DEPENDEES build - DEPENDERS install - COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj - WORKING_DIRECTORY "${BINARY_DIR}" - ) -endif () -endmacro() - -if (${DEPS_BITS} EQUAL 32) - set(DEP_WXWIDGETS_TARGET "") - set(DEP_WXWIDGETS_LIBDIR "vc_lib") -else () - set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64") - set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib") -endif () - -find_package(Git REQUIRED) diff --git a/lib/Slic3r/Geometry.pm b/lib/Slic3r/Geometry.pm index 6a2161d..ae0dc85 100644 --- a/lib/Slic3r/Geometry.pm +++ b/lib/Slic3r/Geometry.pm @@ -15,7 +15,6 @@ our @EXPORT_OK = qw( X Y Z convex_hull - chained_path_from deg2rad rad2deg ); diff --git a/resources/data/embossed_text.obj b/resources/data/embossed_text.obj new file mode 100644 index 0000000..8f6f09f --- /dev/null +++ b/resources/data/embossed_text.obj @@ -0,0 +1,2555 @@ +v -18.02 2 -1 +v -17.5 -0.13 -1 +v -18.02 -1.94 -1 +v 5.62 0.93 -1 +v 5.93 0.58 -1 +v 5.65 0.49 -1 +v -17.5 0.33 -1 +v -15.07 -1.94 -1 +v -17.5 -1.47 -1 +v -15.31 -0.13 -1 +v -15.31 0.33 -1 +v -17.5 1.54 -1 +v -11.91 0.85 -1 +v -11.73 0.54 -1 +v -12.12 0.7 -1 +v -15.16 1.54 -1 +v -15.16 2 -1 +v -15.07 -1.47 -1 +v 6.78 -1.58 -1 +v 6.62 -1.76 -1 +v 6.37 -1.52 -1 +v 6.69 -1.14 -1 +v 6.56 -1.35 -1 +v -9.33 0.59 -1 +v -9.81 2 -1 +v -9.33 2 -1 +v 6.78 -1.94 -1 +v 7.23 -1.94 -1 +v 6.74 2 -1 +v 7.23 2 -1 +v 6.74 0.59 -1 +v 5.95 0.98 -1 +v 2.05 -1.62 -1 +v 2.5 -1.41 -1 +v 2.25 -1.79 -1 +v 5.33 0.1 -1 +v 5.24 -0.34 -1 +v 4.78 -0.1 -1 +v -6.35 -1.79 -1 +v -6.25 -1 -1 +v -6 -1.5 -1 +v 4.74 -0.51 -1 +v 5.27 -0.88 -1 +v -4.84 -1.11 -1 +v -4.74 -0.66 -1 +v -4.26 -0.84 -1 +v 6.2 0.95 -1 +v 6.5 0.83 -1 +v 6.16 0.56 -1 +v 5.09 -1.59 -1 +v 4.9 -1.29 -1 +v 5.41 -1 -1 +v 5.34 -1.82 -1 +v 5.65 -1.5 -1 +v 5.87 -1.59 -1 +v 5.65 -1.96 -1 +v 3.96 -1.69 -1 +v 3.68 -1.28 -1 +v 4.2 -1.37 -1 +v 5.98 -2 -1 +v 3.81 -1.02 -1 +v 6.44 -1.9 -1 +v 4.78 -0.92 -1 +v 4.89 0.26 -1 +v 5 0.49 -1 +v 5.46 0.31 -1 +v 5.25 0.75 -1 +v 6.38 0.47 -1 +v 6.62 0.22 -1 +v 6.76 -0.15 -1 +v 10.39 -1.52 -1 +v 10.65 -1.93 -1 +v 10.36 -1.98 -1 +v 6.78 -0.72 -1 +v 6.09 -1.61 -1 +v 6.22 -1.98 -1 +v -8.06 -1.33 -1 +v -7.92 -1.11 -1 +v -7.69 -1.6 -1 +v 3.54 0.88 -1 +v 3.45 0.47 -1 +v 3.15 0.98 -1 +v 2.49 -1.91 -1 +v 2.78 -1.57 -1 +v -9.02 -1.9 -1 +v -9.2 -1.77 -1 +v -8.9 -1.55 -1 +v -7.85 -0.13 -1 +v -7.33 -0.27 -1 +v -7.83 -0.68 -1 +v 2.35 -1.21 -1 +v -7.83 0.74 -1 +v -8.22 0.47 -1 +v -8.04 0.87 -1 +v -8.94 0.49 -1 +v -9.19 0.24 -1 +v -8.29 0.95 -1 +v -8.49 0.58 -1 +v -8.69 0.98 -1 +v 2.23 -0.95 -1 +v 1.69 -0.75 -1 +v 2.19 -0.63 -1 +v 2.21 -0.23 -1 +v -4.33 -1.16 -1 +v -4.43 -1.4 -1 +v -7.98 0.23 -1 +v 4.12 0.37 -1 +v 3.77 0 -1 +v 3.67 0.25 -1 +v -12.82 0.95 -1 +v -13.02 0.53 -1 +v -13.11 0.98 -1 +v -9.33 -0.09 -1 +v -8.54 -1.61 -1 +v -8.81 -1.98 -1 +v -13.91 -0.15 -1 +v -13.98 0.51 -1 +v -13.85 0.14 -1 +v -9.32 -1.02 -1 +v -9.18 -1.31 -1 +v -9.36 -1.58 -1 +v -9.81 -1.94 -1 +v -9.36 -1.94 -1 +v -8.42 -2 -1 +v -8.26 -1.51 -1 +v -7.42 -1.12 -1 +v -12.3 0.48 -1 +v -11.97 0.41 -1 +v -9.09 0.83 -1 +v -8.74 0.56 -1 +v -7.66 0.57 -1 +v -7.47 0.27 -1 +v -7.35 -0.81 -1 +v -7.53 -1.38 -1 +v -7.97 -1.84 -1 +v 10.58 -1.51 -1 +v 17.42 -1.96 -1 +v 17.58 -1.5 -1 +v 17.73 -1.98 -1 +v 17.47 -1.37 -1 +v 17.02 -1.64 -1 +v 16.98 -1.27 -1 +v 10.22 -1.5 -1 +v 9.62 -1.27 -1 +v 10.11 -1.37 -1 +v 9.65 -1.64 -1 +v 9.26 0.91 -1 +v 9.61 0.54 -1 +v 9.26 0.54 -1 +v -9.37 -0.58 -1 +v 9.61 1.62 -1 +v 10.1 0.91 -1 +v 9.61 0.91 -1 +v 10.58 0.91 -1 +v 10.58 0.54 -1 +v 10.1 0.54 -1 +v 10.1 1.92 -1 +v 9.82 -1.86 -1 +v 10.05 -1.96 -1 +v 12.64 -1.97 -1 +v 12.11 -2 -1 +v 12.26 -1.61 -1 +v 17.76 -1.52 -1 +v 17.95 -1.51 -1 +v 18.02 -1.93 -1 +v 16.98 0.54 -1 +v 16.63 0.91 -1 +v 16.98 0.91 -1 +v 17.46 0.54 -1 +v 17.46 0.91 -1 +v 12.51 -1.57 -1 +v 16.98 1.62 -1 +v 17.95 0.91 -1 +v 17.95 0.54 -1 +v 17.46 1.92 -1 +v 16.63 0.54 -1 +v 12.89 -1.28 -1 +v 13.41 -1.37 -1 +v 13.17 -1.69 -1 +v 13.02 -1.02 -1 +v 17.19 -1.86 -1 +v 15.13 -0.06 -1 +v 15.83 0.91 -1 +v 16.41 0.91 -1 +v 15.42 -0.42 -1 +v 12.72 -1.46 -1 +v 15.15 -0.81 -1 +v 14.39 -1.94 -1 +v 14.85 -0.45 -1 +v 13.52 -1.08 -1 +v 12.91 -1.87 -1 +v 11.46 -1.79 -1 +v 11.71 -1.41 -1 +v 11.7 -1.91 -1 +v 11.43 -0.23 -1 +v 11.4 -0.63 -1 +v 10.9 -0.75 -1 +v 11.99 -1.57 -1 +v 11.26 -1.62 -1 +v 11.56 -1.21 -1 +v 11.1 -1.4 -1 +v 11.44 -0.95 -1 +v 10.99 -1.15 -1 +v 14.49 0.91 -1 +v 13.89 0.91 -1 +v -14.41 0.91 -1 +v 11.48 0.04 -1 +v 10.92 -0.19 -1 +v 10.99 0.1 -1 +v 13.02 -0.23 -1 +v 11.11 0.36 -1 +v 11.58 0.24 -1 +v 11.27 0.58 -1 +v 11.74 0.42 -1 +v 11.47 0.75 -1 +v 12.01 0.55 -1 +v 11.7 0.88 -1 +v 11.95 0.95 -1 +v 12.36 0.58 -1 +v 12.36 0.98 -1 +v 12.66 0.47 -1 +v 12.76 0.88 -1 +v 12.98 0.76 -1 +v 12.88 0.25 -1 +v 13.17 0.59 -1 +v 13.33 0.37 -1 +v 12.99 0 -1 +v 13.48 0.02 -1 +v 13.54 -0.63 -1 +v -13.75 0.32 -1 +v -13.6 0.45 -1 +v -13.32 0.56 -1 +v -13.62 0.85 -1 +v -13.38 0.95 -1 +v -12.85 0.43 -1 +v -12.75 0.25 -1 +v -12.41 0.69 -1 +v -12.14 0.2 -1 +v -12.22 -0.1 -1 +v -12.71 0.02 -1 +v -10.83 0.81 -1 +v -11.23 0.48 -1 +v -11.13 0.95 -1 +v -11.67 0.95 -1 +v -12.71 -1.94 -1 +v -12.22 -1.94 -1 +v -11.02 0.06 -1 +v -11.08 0.33 -1 +v -10.54 0.21 -1 +v -11.41 0.98 -1 +v -11.41 0.55 -1 +v -10.53 -1.94 -1 +v -11.01 -1.94 -1 +v -10.63 0.56 -1 +v -14.41 -1.94 -1 +v -12.59 0.85 -1 +v -13.82 0.7 -1 +v -13.98 0.91 -1 +v 3.81 -0.23 -1 +v 4.33 -0.63 -1 +v -13.93 -1.94 -1 +v 3.51 -1.46 -1 +v 4.31 -1.08 -1 +v 3.43 -1.97 -1 +v 3.7 -1.87 -1 +v 3.3 -1.57 -1 +v 3.05 -1.61 -1 +v 1.89 -1.4 -1 +v 1.71 -0.19 -1 +v 2.26 0.04 -1 +v 3.96 0.59 -1 +v 3.77 0.76 -1 +v 2.74 0.95 -1 +v 2.8 0.55 -1 +v -4.97 -1.33 -1 +v 2.48 0.88 -1 +v 2.53 0.42 -1 +v 2.06 0.58 -1 +v 2.36 0.24 -1 +v 1.89 0.36 -1 +v 1.78 0.1 -1 +v -5.73 0.98 -1 +v -5.47 0.57 -1 +v -5.75 0.56 -1 +v -2.89 -1.58 -1 +v -2.57 -1.61 -1 +v -2.41 -2 -1 +v 0.62 0.31 -1 +v 0.84 0.77 -1 +v 0.99 0.62 -1 +v 1.78 -1.15 -1 +v 1.1 0.43 -1 +v -5.86 -1.98 -1 +v -6.12 -1.91 -1 +v 0.62 -0.88 -1 +v 0.4 -0.8 -1 +v 0.73 -0.38 -1 +v 2.9 -2 -1 +v 16.49 -1.94 -1 +v 15.89 -1.94 -1 +v 2.26 0.75 -1 +v 3.14 0.58 -1 +v 4.27 0.02 -1 +v -0.56 -1.87 -1 +v -0.37 -1.47 -1 +v -0.25 -1.98 -1 +v -4.24 -0.23 -1 +v -0.47 0.01 -1 +v -0.78 -0.38 -1 +v -0.91 -0.22 -1 +v -5.04 0.88 -1 +v -5.16 0.47 -1 +v -5.29 0.96 -1 +v 0.95 -1.75 -1 +v 0.72 -1.89 -1 +v 0.61 -1.47 -1 +v -0.5 -0.54 -1 +v -0.28 -0.09 -1 +v -5.97 0.48 -1 +v 1.13 -1.56 -1 +v 0.73 -1.32 -1 +v -6.67 0.44 -1 +v -6.18 0.31 -1 +v -6.32 0.09 -1 +v 0.77 -1.15 -1 +v 1.23 -1.33 -1 +v 0.5 0.46 -1 +v 0.26 0.57 -1 +v 0.62 0.88 -1 +v -0.55 0.18 -1 +v -1.01 0.03 -1 +v -4.45 0.38 -1 +v -4.33 0.13 -1 +v -4.9 0.21 -1 +v -4.76 -0.13 -1 +v -6.71 -1.4 -1 +v -6.55 -1.62 -1 +v -5.69 -1.6 -1 +v -5.58 -2 -1 +v -4.65 -1.67 -1 +v -5.19 -1.51 -1 +v -5.22 -1.96 -1 +v -5.4 -1.59 -1 +v -6.39 -0.88 -1 +v -6.83 -1.15 -1 +v -6.92 -0.72 -1 +v -6.42 -0.34 -1 +v -6.89 -0.14 -1 +v -6.81 0.18 -1 +v -6.48 0.66 -1 +v -6.2 0.85 -1 +v -4.81 0.76 -1 +v -4.61 0.59 -1 +v -4.89 -1.83 -1 +v 1.16 0.18 -1 +v 0.69 0.11 -1 +v -0.98 0.41 -1 +v -1.52 -1.33 -1 +v -1.63 -1.56 -1 +v -2.02 -1.32 -1 +v -1.51 -0.87 -1 +v -1.98 -1.15 -1 +v -2.02 -1 -1 +v -0.5 0.88 -1 +v -0.37 0.5 -1 +v -0.78 0.71 -1 +v -0.15 0.57 -1 +v -0.09 0.98 -1 +v 0.34 0.96 -1 +v -2.92 0.57 -1 +v -3.27 0.88 -1 +v -2.86 0.98 -1 +v -2.49 0.57 -1 +v -3.54 0.71 -1 +v -3.13 0.5 -1 +v -3.28 0.35 -1 +v -0.51 0.35 -1 +v -3.26 -0.54 -1 +v -3.05 -0.09 -1 +v -2.35 -0.8 -1 +v -1.8 -1.75 -1 +v -2.03 -1.89 -1 +v -2.14 -1.47 -1 +v -0.78 -1.73 -1 +v -0.54 -1.26 -1 +v -1 -1.42 -1 +v 0.18 -1.61 -1 +v 0.46 -1.56 -1 +v 0.34 -2 -1 +v 1.24 -0.87 -1 +v 1.27 -1.1 -1 +v 1.02 -0.54 -1 +v 0.73 -1 -1 +v 1.15 -0.68 -1 +v -3.13 -1.47 -1 +v -3.01 -1.98 -1 +v -3.33 -1.87 -1 +v -0.62 -1.01 -1 +v -2.29 -1.56 -1 +v -1.1 -1.08 -1 +v -2.02 -0.38 -1 +v -2.13 -0.88 -1 +v -0.13 -1.58 -1 +v -1.74 -0.54 -1 +v -2.13 0.31 -1 +v -1.65 0.43 -1 +v -2.06 0.11 -1 +v -3.23 0.01 -1 +v -3.54 -0.38 -1 +v -3.38 -1.01 -1 +v -3.3 -1.26 -1 +v -3.76 -1.42 -1 +v -3.67 -0.22 -1 +v -3.78 0.03 -1 +v -3.74 0.41 -1 +v -3.31 0.18 -1 +v -2.41 0.96 -1 +v -2.13 0.88 -1 +v -2.25 0.46 -1 +v -1.91 0.77 -1 +v -1.76 0.62 -1 +v -1.59 0.18 -1 +v -1.48 -1.1 -1 +v -1.6 -0.68 -1 +v -3.55 -1.73 -1 +v -3.86 -1.08 -1 +v 13.81 -1.94 -1 +v -18.02 2 1 +v -18.02 -1.94 1 +v -17.5 -0.13 1 +v 5.62 0.93 1 +v 5.63 0.47 1 +v 5.9 0.58 1 +v -17.5 0.33 1 +v -15.07 -1.94 1 +v -17.5 -1.47 1 +v -15.31 -0.13 1 +v -15.31 0.33 1 +v -17.5 1.54 1 +v -11.91 0.85 1 +v -12.12 0.7 1 +v -11.75 0.53 1 +v -15.16 1.54 1 +v -15.16 2 1 +v -15.07 -1.47 1 +v 6.78 -1.58 1 +v 6.39 -1.5 1 +v 6.62 -1.76 1 +v -9.33 0.59 1 +v -9.33 2 1 +v -9.81 2 1 +v 6.78 -1.94 1 +v 7.23 -1.94 1 +v 6.74 2 1 +v 6.74 0.59 1 +v 7.23 2 1 +v 5.95 0.98 1 +v 2.05 -1.62 1 +v 2.25 -1.79 1 +v 2.52 -1.43 1 +v -7.33 -0.33 1 +v -7.92 0.1 1 +v -7.83 -0.33 1 +v 5.4 0.23 1 +v 4.89 0.26 1 +v 5.27 -0.13 1 +v 4.74 -0.51 1 +v 5.24 -0.68 1 +v -6.35 -1.79 1 +v -5.97 -1.51 1 +v -6.18 -1.33 1 +v 4.78 -0.92 1 +v 5.34 -1.12 1 +v 6.2 0.95 1 +v 6.16 0.56 1 +v 6.53 0.81 1 +v 5.09 -1.59 1 +v 4.9 -1.29 1 +v 5.34 -1.82 1 +v 5.67 -1.51 1 +v 5.47 -1.33 1 +v 5.87 -1.59 1 +v 5.65 -1.96 1 +v 3.93 -1.71 1 +v 4.18 -1.4 1 +v 3.68 -1.28 1 +v 5.98 -2 1 +v 3.81 -1.02 1 +v 6.44 -1.9 1 +v 4.78 -0.1 1 +v 5.02 0.51 1 +v 5.27 0.77 1 +v 6.36 0.48 1 +v 6.61 0.24 1 +v 6.75 -0.11 1 +v 10.4 -1.52 1 +v 10.34 -1.98 1 +v 10.65 -1.93 1 +v 6.73 -1.02 1 +v 6.78 -0.68 1 +v 6.63 -1.26 1 +v 6.11 -1.6 1 +v 6.22 -1.98 1 +v 3.54 0.88 1 +v 3.2 0.98 1 +v 3.42 0.48 1 +v -7.99 -1.24 1 +v -7.53 -1.38 1 +v -7.85 -0.88 1 +v 2.49 -1.91 1 +v 2.81 -1.58 1 +v -9.02 -1.9 1 +v -9.02 -1.48 1 +v -9.2 -1.77 1 +v 2.35 -1.21 1 +v -7.83 0.74 1 +v -8.04 0.87 1 +v -8.24 0.49 1 +v -9.21 0.21 1 +v -8.96 0.47 1 +v -8.29 0.95 1 +v -8.65 0.98 1 +v -8.52 0.58 1 +v 2.24 -0.98 1 +v 2.19 -0.63 1 +v 1.71 -0.86 1 +v 2.21 -0.23 1 +v 1.69 -0.31 1 +v -4.33 -1.16 1 +v -4.76 -0.87 1 +v -4.45 -1.43 1 +v -8.05 0.31 1 +v 4.12 0.37 1 +v 3.66 0.26 1 +v 3.77 0.03 1 +v -12.82 0.95 1 +v -13.11 0.98 1 +v -13.04 0.54 1 +v -9.37 -0.35 1 +v -8.52 -1.6 1 +v -8.79 -1.58 1 +v -8.81 -1.98 1 +v -9.31 -0.02 1 +v -13.92 -0.18 1 +v -13.85 0.14 1 +v -13.98 0.51 1 +v -9.81 -1.94 1 +v -9.36 -1.94 1 +v -9.36 -1.58 1 +v -8.57 -2 1 +v -8.23 -1.5 1 +v -8.32 -1.98 1 +v -7.39 -1.02 1 +v -9.25 -1.19 1 +v -9.35 -0.87 1 +v -12.3 0.48 1 +v -11.99 0.39 1 +v -9.06 0.85 1 +v -8.74 0.56 1 +v -7.66 0.57 1 +v -7.45 0.23 1 +v -7.69 -1.6 1 +v -8.01 -1.87 1 +v 10.58 -1.51 1 +v 17.42 -1.96 1 +v 17.7 -1.98 1 +v 17.59 -1.5 1 +v 17.48 -1.38 1 +v 16.98 -1 1 +v 17.02 -1.62 1 +v 10.23 -1.5 1 +v 9.61 -1 1 +v 9.65 -1.62 1 +v 10.11 -1.38 1 +v 9.26 0.91 1 +v 9.26 0.54 1 +v 9.61 0.54 1 +v 9.61 1.62 1 +v 9.61 0.91 1 +v 10.1 0.91 1 +v 10.58 0.54 1 +v 10.58 0.91 1 +v 10.1 0.54 1 +v 10.1 1.92 1 +v 9.8 -1.84 1 +v 10.05 -1.96 1 +v 12.6 -1.98 1 +v 12.26 -1.61 1 +v 12.06 -2 1 +v 17.77 -1.52 1 +v 18.02 -1.93 1 +v 17.95 -1.51 1 +v 16.98 0.54 1 +v 16.98 0.91 1 +v 16.63 0.91 1 +v 17.46 0.54 1 +v 17.46 0.91 1 +v 12.51 -1.57 1 +v 16.98 1.62 1 +v 17.95 0.54 1 +v 17.95 0.91 1 +v 17.46 1.92 1 +v 16.63 0.54 1 +v 12.89 -1.28 1 +v 13.15 -1.71 1 +v 13.4 -1.4 1 +v 13.02 -1.02 1 +v 17.16 -1.84 1 +v 15.13 -0.06 1 +v 16.41 0.91 1 +v 15.83 0.91 1 +v 15.42 -0.42 1 +v 12.72 -1.46 1 +v 15.15 -0.81 1 +v 14.85 -0.45 1 +v 14.39 -1.94 1 +v 13.52 -1.08 1 +v 12.91 -1.87 1 +v 11.46 -1.79 1 +v 11.7 -1.91 1 +v 11.74 -1.43 1 +v 11.43 -0.23 1 +v 10.9 -0.31 1 +v 11.4 -0.63 1 +v 12.02 -1.58 1 +v 11.26 -1.62 1 +v 11.56 -1.21 1 +v 11.1 -1.4 1 +v 11.45 -0.98 1 +v 10.99 -1.15 1 +v 10.92 -0.86 1 +v 14.49 0.91 1 +v 13.89 0.91 1 +v -14.41 0.91 1 +v 11.47 0.01 1 +v 10.99 0.1 1 +v 13.02 -0.23 1 +v 11.11 0.36 1 +v 11.58 0.24 1 +v 11.27 0.58 1 +v 11.72 0.4 1 +v 11.47 0.75 1 +v 11.99 0.55 1 +v 11.7 0.88 1 +v 11.95 0.95 1 +v 12.32 0.58 1 +v 12.41 0.98 1 +v 12.64 0.48 1 +v 12.76 0.88 1 +v 12.98 0.76 1 +v 12.87 0.26 1 +v 13.17 0.59 1 +v 13.33 0.37 1 +v 12.98 0.03 1 +v 13.45 0.12 1 +v 13.51 -0.17 1 +v 13.54 -0.63 1 +v -13.75 0.32 1 +v -13.6 0.45 1 +v -13.35 0.55 1 +v -13.62 0.85 1 +v -13.38 0.95 1 +v -12.87 0.45 1 +v -12.41 0.69 1 +v -12.76 0.27 1 +v -12.15 0.17 1 +v -12.71 0.04 1 +v -12.22 -0.12 1 +v -10.8 0.79 1 +v -11.1 0.94 1 +v -11.23 0.48 1 +v -11.67 0.95 1 +v -12.71 -1.94 1 +v -12.22 -1.94 1 +v -11.02 0.08 1 +v -10.54 0.18 1 +v -11.1 0.35 1 +v -11.44 0.56 1 +v -11.41 0.98 1 +v -10.53 -1.94 1 +v -11.01 -1.94 1 +v -10.61 0.53 1 +v -14.41 -1.94 1 +v -12.59 0.85 1 +v -13.82 0.7 1 +v -13.98 0.91 1 +v 4.33 -0.63 1 +v 3.81 -0.23 1 +v -13.93 -1.94 1 +v 3.51 -1.46 1 +v 4.31 -1.08 1 +v 3.39 -1.98 1 +v 3.7 -1.87 1 +v 3.3 -1.57 1 +v 3.05 -1.61 1 +v 1.89 -1.4 1 +v 2.25 0.01 1 +v 3.96 0.59 1 +v 3.77 0.76 1 +v 2.74 0.95 1 +v 2.77 0.55 1 +v 2.48 0.88 1 +v 2.51 0.4 1 +v 2.06 0.58 1 +v 2.36 0.24 1 +v -4.61 0.59 1 +v -4.98 0.3 1 +v -4.84 0.09 1 +v 1.89 0.36 1 +v 1.78 0.1 1 +v -6.92 -0.66 1 +v -6.32 -1.12 1 +v -6.42 -0.68 1 +v -2.86 -1.59 1 +v -2.64 -2 1 +v -2.54 -1.6 1 +v 0.62 0.31 1 +v 0.99 0.62 1 +v 0.84 0.77 1 +v 1.78 -1.15 1 +v 1.1 0.43 1 +v -6.03 -1.95 1 +v 0.61 -0.88 1 +v 0.76 -0.39 1 +v 0.38 -0.79 1 +v 2.85 -2 1 +v 16.49 -1.94 1 +v 15.89 -1.94 1 +v 2.26 0.75 1 +v 3.11 0.58 1 +v 4.23 0.12 1 +v 4.3 -0.17 1 +v -4.9 -1.24 1 +v -0.56 -1.87 1 +v -0.29 -1.97 1 +v -0.36 -1.49 1 +v -4.24 -0.28 1 +v -4.74 -0.32 1 +v -4.26 -0.88 1 +v -0.52 0.07 1 +v -0.91 -0.22 1 +v -0.78 -0.38 1 +v -6.39 -0.14 1 +v 0.95 -1.75 1 +v 0.61 -1.47 1 +v 0.72 -1.89 1 +v -5.69 0.98 1 +v -6 0.47 1 +v -5.68 0.58 1 +v 1.13 -1.56 1 +v 0.73 -1.32 1 +v 1.23 -1.33 1 +v 0.77 -1.15 1 +v 0.5 0.46 1 +v 0.62 0.88 1 +v 0.31 0.55 1 +v -0.34 -0.07 1 +v -0.53 -0.53 1 +v -4.45 0.38 1 +v -4.33 0.13 1 +v -6.71 -1.4 1 +v -6.55 -1.62 1 +v -5.58 -2 1 +v -5.75 -1.59 1 +v -4.68 -1.69 1 +v -5.16 -1.49 1 +v -5.22 -1.96 1 +v -5.47 -1.6 1 +v -6.83 -1.15 1 +v -6.89 -0.14 1 +v -6.81 0.18 1 +v -6.25 0.22 1 +v -6.67 0.44 1 +v -6.48 0.66 1 +v -6.16 0.87 1 +v -5.4 0.56 1 +v -5.13 0.92 1 +v -5.19 0.48 1 +v -4.81 0.76 1 +v -4.89 -1.83 1 +v 0.21 -1.6 1 +v 0.12 -2 1 +v 0.43 -1.98 1 +v 1.16 0.18 1 +v 0.69 0.11 1 +v -0.99 -0.04 1 +v -1.02 0.15 1 +v -0.55 0.21 1 +v -0.97 0.44 1 +v -1.52 -1.33 1 +v -2.02 -1.32 1 +v -1.63 -1.56 1 +v -1.51 -0.87 1 +v -2.02 -1 1 +v -1.98 -1.15 1 +v -0.48 0.89 1 +v -0.76 0.73 1 +v -0.39 0.49 1 +v -0.18 0.56 1 +v -0.05 0.98 1 +v 0.06 0.58 1 +v 0.34 0.96 1 +v -2.94 0.56 1 +v -2.82 0.98 1 +v -3.24 0.89 1 +v -2.69 0.58 1 +v -3.52 0.73 1 +v -3.28 0.35 1 +v -3.15 0.49 1 +v -3.31 0.21 1 +v -3.78 0.15 1 +v -3.28 0.07 1 +v -0.51 0.35 1 +v -3.29 -0.53 1 +v -2.37 -0.79 1 +v -3.1 -0.07 1 +v -1.8 -1.75 1 +v -2.14 -1.47 1 +v -2.03 -1.89 1 +v -0.54 -1.26 1 +v -0.81 -1.71 1 +v -1.02 -1.39 1 +v 0.48 -1.55 1 +v 1.24 -0.87 1 +v 1.27 -1.1 1 +v 0.73 -1 1 +v 1.02 -0.54 1 +v 1.15 -0.68 1 +v -3.12 -1.49 1 +v -3.33 -1.87 1 +v -3.05 -1.97 1 +v -0.62 -1.01 1 +v -2.32 -1.98 1 +v -2.27 -1.55 1 +v -1.1 -1.08 1 +v -1.99 -0.39 1 +v -2.14 -0.88 1 +v -0.1 -1.59 1 +v -1.74 -0.54 1 +v -2.13 0.31 1 +v -2.06 0.11 1 +v -1.65 0.43 1 +v -3.54 -0.38 1 +v -3.38 -1.01 1 +v -3.78 -1.39 1 +v -3.3 -1.26 1 +v -3.67 -0.22 1 +v -3.75 -0.04 1 +v -3.73 0.44 1 +v -2.44 0.55 1 +v -2.41 0.96 1 +v -2.13 0.88 1 +v -2.25 0.46 1 +v -1.91 0.77 1 +v -1.76 0.62 1 +v -1.59 0.18 1 +v -1.48 -1.1 1 +v -1.6 -0.68 1 +v -3.57 -1.71 1 +v -3.86 -1.08 1 +v 13.81 -1.94 1 +f 1 2 3 +f 4 5 6 +f 7 2 1 +f 8 3 9 +f 10 7 11 +f 10 2 7 +f 12 7 1 +f 13 14 15 +f 16 12 17 +f 17 12 1 +f 2 9 3 +f 9 18 8 +f 19 20 21 +f 22 19 23 +f 24 25 26 +f 27 19 28 +f 29 30 31 +f 4 32 5 +f 33 34 35 +f 36 37 38 +f 39 40 41 +f 42 37 43 +f 44 45 46 +f 47 48 49 +f 50 51 52 +f 53 52 54 +f 55 56 54 +f 57 58 59 +f 55 60 56 +f 58 61 59 +f 62 21 20 +f 54 56 53 +f 53 50 52 +f 52 51 43 +f 63 43 51 +f 42 43 63 +f 37 42 38 +f 36 38 64 +f 36 64 65 +f 66 65 67 +f 36 65 66 +f 66 67 6 +f 4 6 67 +f 49 5 47 +f 5 32 47 +f 49 48 68 +f 31 68 48 +f 31 69 68 +f 31 70 69 +f 71 72 73 +f 22 74 28 +f 19 22 28 +f 21 23 19 +f 75 21 62 +f 76 75 62 +f 60 55 75 +f 60 75 76 +f 77 78 79 +f 80 81 82 +f 83 34 84 +f 85 86 87 +f 88 89 90 +f 33 91 34 +f 92 93 94 +f 24 95 96 +f 97 98 99 +f 100 101 102 +f 102 101 103 +f 94 93 97 +f 104 105 44 +f 92 106 93 +f 107 108 109 +f 110 111 112 +f 25 24 113 +f 114 115 87 +f 116 117 118 +f 119 120 121 +f 122 121 123 +f 124 115 114 +f 87 115 85 +f 125 124 114 +f 78 90 126 +f 120 87 86 +f 121 120 86 +f 122 119 121 +f 127 15 128 +f 24 96 113 +f 24 129 95 +f 130 129 99 +f 95 129 130 +f 98 130 99 +f 93 98 97 +f 92 131 106 +f 106 131 132 +f 88 106 132 +f 89 88 132 +f 133 90 89 +f 126 90 133 +f 134 78 126 +f 79 78 134 +f 135 77 79 +f 135 125 77 +f 135 124 125 +f 71 136 72 +f 137 138 139 +f 140 141 142 +f 71 73 143 +f 144 145 146 +f 147 148 149 +f 113 150 122 +f 151 152 153 +f 152 154 155 +f 153 152 156 +f 156 152 155 +f 152 151 157 +f 150 119 122 +f 156 144 148 +f 153 156 148 +f 153 148 147 +f 156 145 144 +f 25 113 122 +f 158 146 145 +f 143 158 145 +f 159 158 143 +f 143 73 159 +f 160 161 162 +f 163 164 165 +f 165 139 163 +f 166 167 168 +f 139 138 163 +f 166 169 142 +f 169 140 142 +f 170 169 168 +f 162 171 160 +f 172 170 168 +f 170 173 174 +f 172 175 170 +f 169 170 174 +f 176 167 166 +f 177 178 179 +f 178 177 180 +f 169 166 168 +f 140 181 141 +f 182 183 184 +f 140 138 181 +f 185 182 184 +f 138 137 181 +f 186 177 179 +f 187 188 189 +f 190 178 180 +f 191 160 186 +f 192 193 194 +f 191 186 179 +f 195 196 197 +f 171 186 160 +f 198 194 193 +f 199 200 193 +f 201 202 200 +f 203 197 202 +f 204 182 205 +f 206 117 116 +f 207 208 209 +f 207 195 208 +f 197 208 195 +f 197 196 202 +f 203 202 201 +f 199 201 200 +f 192 199 193 +f 194 198 161 +f 162 161 198 +f 210 196 195 +f 209 211 207 +f 212 211 213 +f 207 211 212 +f 214 213 215 +f 212 213 214 +f 216 214 217 +f 214 215 217 +f 216 217 218 +f 219 216 220 +f 216 218 220 +f 221 220 222 +f 219 220 221 +f 222 223 221 +f 224 223 225 +f 221 223 224 +f 225 226 224 +f 224 226 227 +f 227 226 228 +f 210 227 228 +f 229 210 228 +f 230 117 231 +f 232 231 233 +f 234 232 233 +f 111 110 235 +f 127 236 237 +f 238 239 240 +f 241 242 243 +f 244 14 13 +f 239 245 240 +f 196 210 229 +f 246 245 239 +f 247 248 249 +f 236 238 240 +f 127 238 236 +f 14 128 15 +f 244 250 251 +f 14 244 251 +f 242 251 243 +f 252 247 249 +f 247 252 253 +f 248 254 249 +f 206 116 255 +f 248 241 254 +f 242 241 248 +f 250 243 251 +f 256 237 235 +f 237 236 235 +f 235 110 256 +f 128 238 127 +f 232 112 111 +f 232 234 112 +f 233 231 257 +f 258 117 206 +f 231 117 257 +f 230 118 117 +f 102 259 260 +f 261 255 116 +f 57 262 58 +f 61 263 59 +f 264 262 265 +f 262 57 265 +f 264 266 262 +f 266 264 267 +f 100 91 268 +f 103 269 270 +f 103 101 269 +f 107 109 271 +f 271 109 272 +f 272 81 80 +f 273 82 274 +f 275 44 105 +f 276 274 277 +f 278 277 279 +f 280 270 281 +f 282 283 284 +f 281 270 269 +f 285 286 287 +f 288 289 290 +f 291 101 100 +f 292 288 290 +f 293 294 41 +f 291 100 268 +f 268 91 33 +f 294 39 41 +f 83 35 34 +f 295 296 297 +f 298 83 84 +f 267 298 84 +f 264 298 267 +f 299 300 187 +f 280 279 270 +f 102 103 259 +f 280 278 279 +f 278 301 277 +f 276 277 301 +f 274 276 273 +f 274 82 302 +f 81 302 82 +f 109 81 272 +f 107 303 108 +f 108 303 259 +f 259 303 260 +f 299 187 185 +f 304 305 306 +f 307 46 45 +f 308 309 310 +f 311 312 313 +f 314 315 316 +f 317 308 318 +f 282 284 319 +f 320 314 321 +f 322 323 324 +f 321 325 326 +f 327 328 329 +f 318 296 317 +f 308 317 309 +f 330 308 331 +f 332 333 334 +f 333 307 335 +f 336 40 337 +f 293 338 339 +f 293 41 338 +f 340 341 275 +f 342 343 341 +f 39 337 40 +f 344 40 345 +f 40 336 345 +f 346 344 345 +f 347 344 346 +f 346 348 347 +f 324 348 349 +f 347 348 324 +f 324 349 322 +f 322 350 323 +f 319 350 351 +f 323 350 319 +f 282 319 351 +f 283 282 313 +f 312 283 313 +f 312 311 352 +f 334 352 353 +f 312 352 334 +f 353 332 334 +f 334 333 335 +f 335 307 45 +f 46 104 44 +f 105 340 275 +f 341 340 354 +f 342 341 354 +f 339 343 342 +f 339 338 343 +f 355 356 292 +f 331 308 310 +f 289 327 329 +f 330 331 357 +f 358 359 360 +f 361 362 363 +f 364 365 366 +f 365 364 367 +f 367 364 368 +f 328 368 369 +f 288 292 356 +f 327 289 288 +f 328 367 368 +f 329 328 369 +f 370 371 372 +f 370 372 373 +f 374 375 376 +f 365 377 366 +f 378 379 380 +f 377 357 366 +f 357 377 330 +f 381 382 383 +f 305 384 385 +f 384 386 385 +f 387 388 389 +f 297 296 318 +f 390 391 325 +f 295 392 393 +f 297 392 295 +f 392 394 393 +f 325 393 390 +f 393 394 390 +f 325 391 326 +f 320 321 326 +f 314 316 321 +f 315 388 316 +f 389 388 315 +f 395 396 397 +f 398 385 386 +f 286 399 287 +f 386 400 398 +f 401 402 380 +f 384 305 304 +f 306 305 403 +f 389 306 403 +f 387 389 403 +f 363 402 404 +f 360 362 358 +f 405 406 407 +f 379 378 408 +f 408 378 409 +f 410 411 412 +f 413 408 409 +f 408 413 414 +f 415 376 416 +f 371 375 374 +f 371 370 375 +f 373 417 418 +f 373 372 417 +f 419 418 420 +f 420 421 405 +f 407 406 422 +f 421 406 405 +f 420 405 419 +f 373 418 419 +f 376 415 374 +f 414 415 416 +f 416 408 414 +f 401 380 379 +f 361 423 362 +f 402 401 404 +f 383 382 399 +f 363 404 424 +f 361 363 424 +f 362 423 358 +f 360 359 381 +f 381 383 360 +f 287 399 382 +f 395 397 425 +f 412 411 425 +f 412 426 410 +f 425 411 395 +f 395 285 396 +f 396 285 287 +f 182 185 189 +f 205 182 189 +f 189 188 427 +f 187 189 185 +f 28 74 70 +f 28 70 30 +f 70 31 30 +f 428 429 430 +f 431 432 433 +f 434 428 430 +f 435 436 429 +f 437 438 434 +f 437 434 430 +f 439 428 434 +f 440 441 442 +f 443 444 439 +f 444 428 439 +f 430 429 436 +f 436 435 445 +f 446 447 448 +f 449 450 451 +f 452 453 446 +f 454 455 456 +f 431 433 457 +f 458 459 460 +f 461 462 463 +f 464 465 466 +f 466 467 468 +f 469 470 471 +f 472 473 468 +f 474 475 476 +f 477 473 478 +f 479 480 481 +f 482 480 483 +f 484 485 486 +f 482 483 487 +f 486 485 488 +f 489 448 447 +f 480 479 483 +f 479 481 477 +f 481 473 477 +f 472 478 473 +f 467 472 468 +f 466 490 467 +f 466 465 490 +f 464 491 465 +f 464 492 491 +f 464 432 492 +f 431 492 432 +f 475 474 433 +f 433 474 457 +f 475 493 476 +f 455 476 493 +f 455 493 494 +f 455 494 495 +f 496 497 498 +f 499 453 500 +f 446 453 499 +f 446 499 501 +f 447 446 501 +f 502 489 447 +f 503 489 502 +f 487 502 482 +f 487 503 502 +f 504 505 506 +f 507 508 509 +f 510 511 460 +f 512 513 514 +f 458 460 515 +f 516 517 518 +f 449 519 520 +f 521 522 523 +f 524 525 526 +f 525 527 528 +f 517 521 518 +f 529 530 531 +f 516 518 532 +f 533 534 535 +f 536 537 538 +f 451 539 449 +f 540 541 542 +f 449 539 543 +f 544 545 546 +f 547 548 549 +f 550 540 542 +f 541 512 542 +f 541 513 512 +f 551 540 552 +f 463 509 553 +f 549 514 513 +f 549 513 554 +f 547 549 554 +f 547 554 555 +f 556 557 441 +f 449 543 519 +f 449 520 558 +f 559 522 558 +f 520 559 558 +f 523 522 559 +f 518 521 523 +f 516 532 560 +f 462 561 560 +f 532 462 560 +f 461 561 462 +f 553 461 463 +f 508 553 509 +f 562 508 507 +f 563 562 507 +f 563 507 551 +f 563 551 552 +f 552 540 550 +f 496 498 564 +f 565 566 567 +f 568 569 570 +f 496 571 497 +f 572 573 574 +f 575 576 577 +f 578 579 580 +f 580 581 582 +f 579 583 580 +f 583 581 580 +f 580 584 578 +f 539 547 555 +f 583 577 572 +f 579 577 583 +f 579 575 577 +f 583 572 574 +f 451 547 539 +f 585 574 573 +f 571 574 585 +f 586 571 585 +f 571 586 497 +f 587 588 589 +f 590 591 592 +f 591 590 566 +f 593 594 595 +f 566 590 567 +f 593 569 596 +f 596 569 568 +f 597 594 596 +f 588 587 598 +f 599 594 597 +f 597 600 601 +f 599 597 602 +f 596 600 597 +f 603 593 595 +f 604 605 606 +f 606 607 604 +f 596 594 593 +f 568 570 608 +f 609 610 611 +f 568 608 567 +f 612 610 609 +f 567 608 565 +f 613 605 604 +f 614 615 616 +f 617 607 606 +f 618 613 587 +f 619 620 621 +f 618 605 613 +f 622 623 624 +f 598 587 613 +f 625 621 620 +f 626 621 627 +f 628 627 629 +f 630 629 631 +f 623 631 624 +f 632 633 609 +f 634 544 546 +f 635 636 623 +f 635 623 622 +f 631 629 624 +f 630 628 629 +f 626 627 628 +f 619 621 626 +f 620 589 625 +f 588 625 589 +f 637 622 624 +f 636 635 638 +f 639 640 638 +f 635 639 638 +f 641 642 640 +f 639 641 640 +f 643 644 641 +f 641 644 642 +f 643 645 644 +f 646 647 643 +f 643 647 645 +f 648 649 647 +f 646 648 647 +f 649 648 650 +f 651 652 650 +f 648 651 650 +f 652 651 653 +f 651 654 653 +f 654 655 653 +f 654 656 655 +f 637 656 654 +f 657 656 637 +f 658 659 546 +f 660 661 659 +f 662 661 660 +f 538 663 536 +f 556 664 665 +f 666 667 668 +f 669 670 671 +f 672 440 442 +f 668 667 673 +f 624 657 637 +f 674 668 673 +f 675 676 677 +f 665 667 666 +f 556 665 666 +f 442 441 557 +f 672 678 679 +f 442 678 672 +f 671 670 678 +f 680 676 675 +f 675 681 680 +f 677 676 682 +f 634 683 544 +f 677 682 669 +f 671 677 669 +f 679 678 670 +f 684 663 664 +f 664 663 665 +f 663 684 536 +f 557 556 666 +f 660 538 537 +f 660 537 662 +f 661 685 659 +f 686 634 546 +f 659 685 546 +f 658 546 545 +f 525 687 688 +f 689 544 683 +f 484 486 690 +f 488 485 691 +f 692 693 690 +f 690 693 484 +f 692 690 694 +f 694 695 692 +f 524 696 515 +f 527 697 528 +f 533 698 534 +f 698 699 534 +f 699 504 506 +f 700 701 505 +f 702 703 701 +f 704 705 703 +f 706 707 708 +f 709 710 697 +f 711 712 713 +f 710 528 697 +f 714 715 716 +f 526 525 528 +f 717 718 719 +f 720 524 526 +f 721 718 717 +f 720 696 524 +f 696 458 515 +f 722 470 469 +f 510 460 459 +f 723 724 725 +f 726 511 510 +f 695 511 726 +f 692 695 726 +f 727 614 728 +f 709 697 705 +f 525 688 527 +f 709 705 704 +f 704 703 729 +f 702 729 703 +f 701 700 702 +f 701 730 505 +f 506 505 730 +f 534 699 506 +f 533 535 731 +f 731 535 732 +f 535 688 732 +f 688 687 732 +f 727 612 614 +f 531 530 733 +f 734 735 736 +f 737 738 739 +f 740 741 742 +f 713 743 711 +f 744 745 746 +f 747 748 749 +f 750 751 744 +f 751 752 753 +f 754 755 756 +f 757 758 725 +f 757 742 758 +f 759 708 760 +f 760 708 737 +f 761 762 712 +f 722 763 764 +f 722 764 470 +f 765 733 766 +f 767 766 768 +f 469 471 762 +f 712 762 471 +f 712 769 761 +f 711 769 712 +f 711 743 770 +f 743 771 770 +f 772 773 771 +f 743 772 771 +f 773 772 774 +f 748 775 774 +f 772 748 774 +f 747 775 748 +f 776 777 747 +f 749 776 747 +f 778 777 776 +f 778 779 777 +f 707 706 779 +f 778 707 779 +f 706 708 759 +f 708 738 737 +f 738 530 739 +f 739 530 529 +f 531 733 765 +f 766 780 765 +f 767 780 766 +f 763 767 768 +f 763 768 764 +f 781 782 783 +f 784 721 785 +f 786 741 740 +f 787 786 740 +f 719 755 754 +f 788 789 787 +f 790 791 792 +f 793 794 795 +f 796 797 798 +f 798 799 796 +f 799 800 796 +f 801 802 800 +f 756 802 801 +f 717 785 721 +f 754 717 719 +f 801 800 799 +f 755 802 756 +f 803 804 805 +f 803 806 804 +f 807 808 809 +f 810 811 812 +f 798 797 813 +f 814 815 816 +f 813 797 789 +f 789 788 813 +f 740 788 787 +f 817 818 819 +f 757 740 742 +f 736 820 821 +f 821 820 822 +f 781 783 823 +f 724 757 725 +f 824 753 825 +f 723 826 827 +f 724 723 827 +f 827 826 828 +f 753 824 826 +f 826 824 828 +f 753 752 825 +f 750 752 751 +f 744 751 745 +f 746 745 823 +f 783 746 823 +f 829 830 831 +f 832 822 820 +f 716 833 834 +f 822 832 835 +f 836 815 837 +f 821 734 736 +f 735 838 736 +f 782 838 735 +f 781 838 782 +f 794 839 837 +f 791 790 795 +f 840 841 842 +f 816 843 814 +f 844 845 846 +f 847 843 812 +f 812 848 847 +f 849 810 808 +f 805 807 809 +f 805 809 803 +f 806 850 851 +f 850 852 851 +f 806 851 804 +f 853 854 852 +f 854 840 855 +f 841 856 842 +f 855 840 842 +f 854 853 840 +f 850 853 852 +f 808 807 849 +f 811 810 849 +f 848 812 811 +f 843 816 812 +f 836 816 815 +f 793 795 857 +f 837 839 836 +f 818 834 819 +f 794 858 839 +f 793 858 794 +f 795 790 857 +f 791 817 792 +f 817 791 818 +f 833 819 834 +f 829 859 830 +f 845 859 846 +f 845 844 860 +f 859 829 846 +f 829 831 714 +f 831 715 714 +f 715 833 716 +f 609 615 612 +f 633 615 609 +f 615 861 616 +f 614 612 615 +f 453 495 500 +f 453 456 495 +f 495 456 455 +f 18 445 8 +f 435 8 445 +f 9 436 18 +f 445 18 436 +f 2 430 9 +f 436 9 430 +f 10 437 2 +f 430 2 437 +f 11 438 10 +f 437 10 438 +f 7 434 11 +f 438 11 434 +f 12 439 7 +f 434 7 439 +f 16 443 12 +f 439 12 443 +f 17 444 16 +f 443 16 444 +f 1 428 17 +f 444 17 428 +f 3 429 1 +f 428 1 429 +f 8 435 3 +f 429 3 435 +f 76 503 60 +f 487 60 503 +f 62 489 76 +f 503 76 489 +f 20 448 62 +f 489 62 448 +f 19 446 20 +f 448 20 446 +f 27 452 19 +f 446 19 452 +f 28 453 27 +f 452 27 453 +f 30 456 28 +f 453 28 456 +f 29 454 30 +f 456 30 454 +f 31 455 29 +f 454 29 455 +f 48 476 31 +f 455 31 476 +f 47 474 48 +f 476 48 474 +f 32 457 47 +f 474 47 457 +f 4 431 32 +f 457 32 431 +f 67 492 4 +f 431 4 492 +f 65 491 67 +f 492 67 491 +f 64 465 65 +f 491 65 465 +f 38 490 64 +f 465 64 490 +f 42 467 38 +f 490 38 467 +f 63 472 42 +f 467 42 472 +f 51 478 63 +f 472 63 478 +f 50 477 51 +f 478 51 477 +f 53 479 50 +f 477 50 479 +f 56 483 53 +f 479 53 483 +f 60 487 56 +f 483 56 487 +f 55 482 75 +f 502 75 482 +f 54 480 55 +f 482 55 480 +f 52 481 54 +f 480 54 481 +f 481 52 473 +f 43 473 52 +f 473 43 468 +f 37 468 43 +f 468 37 466 +f 36 466 37 +f 466 36 464 +f 66 464 36 +f 6 432 66 +f 464 66 432 +f 5 433 6 +f 432 6 433 +f 49 475 5 +f 433 5 475 +f 68 493 49 +f 475 49 493 +f 69 494 68 +f 493 68 494 +f 70 495 69 +f 494 69 495 +f 74 500 70 +f 495 70 500 +f 22 499 74 +f 500 74 499 +f 499 22 501 +f 23 501 22 +f 21 447 23 +f 501 23 447 +f 75 502 21 +f 447 21 502 +f 550 124 552 +f 135 563 124 +f 552 124 563 +f 79 562 135 +f 563 135 562 +f 134 508 79 +f 562 79 508 +f 126 553 134 +f 508 134 553 +f 133 553 126 +f 89 461 133 +f 553 133 461 +f 132 561 89 +f 461 89 561 +f 131 560 132 +f 561 132 560 +f 92 516 131 +f 560 131 516 +f 94 517 92 +f 516 92 517 +f 97 521 94 +f 517 94 521 +f 99 522 97 +f 521 97 522 +f 129 558 99 +f 522 99 558 +f 24 449 129 +f 558 129 449 +f 26 450 24 +f 449 24 450 +f 25 451 26 +f 450 26 451 +f 122 547 25 +f 451 25 547 +f 123 548 122 +f 547 122 548 +f 121 549 123 +f 548 123 549 +f 86 514 121 +f 549 121 514 +f 85 512 86 +f 514 86 512 +f 115 542 85 +f 512 85 542 +f 124 550 115 +f 542 115 550 +f 87 541 114 +f 540 114 541 +f 541 87 513 +f 120 513 87 +f 513 120 554 +f 119 554 120 +f 554 119 555 +f 150 555 119 +f 555 150 539 +f 113 539 150 +f 539 113 543 +f 96 519 113 +f 543 113 519 +f 95 520 96 +f 519 96 520 +f 130 559 95 +f 520 95 559 +f 98 523 130 +f 559 130 523 +f 93 518 98 +f 523 98 518 +f 106 532 93 +f 518 93 532 +f 532 106 462 +f 88 462 106 +f 462 88 463 +f 90 463 88 +f 463 90 509 +f 78 509 90 +f 509 78 507 +f 77 507 78 +f 125 551 77 +f 507 77 551 +f 114 540 125 +f 551 125 540 +f 72 498 73 +f 497 73 498 +f 136 564 72 +f 498 72 564 +f 71 496 136 +f 564 136 496 +f 143 571 71 +f 496 71 571 +f 145 574 143 +f 571 143 574 +f 156 583 145 +f 574 145 583 +f 155 581 156 +f 583 156 581 +f 154 582 155 +f 581 155 582 +f 152 580 154 +f 582 154 580 +f 157 584 152 +f 580 152 584 +f 151 578 157 +f 584 157 578 +f 153 579 151 +f 578 151 579 +f 147 575 153 +f 579 153 575 +f 149 576 147 +f 575 147 576 +f 148 577 149 +f 576 149 577 +f 144 572 148 +f 577 148 572 +f 146 573 144 +f 572 144 573 +f 158 585 146 +f 573 146 585 +f 159 586 158 +f 585 158 586 +f 73 497 159 +f 586 159 497 +f 165 591 139 +f 566 139 591 +f 164 592 165 +f 591 165 592 +f 163 590 164 +f 592 164 590 +f 138 567 163 +f 590 163 567 +f 140 568 138 +f 567 138 568 +f 169 596 140 +f 568 140 596 +f 174 600 169 +f 596 169 600 +f 173 601 174 +f 600 174 601 +f 170 597 173 +f 601 173 597 +f 175 602 170 +f 597 170 602 +f 172 599 175 +f 602 175 599 +f 168 594 172 +f 599 172 594 +f 167 595 168 +f 594 168 595 +f 176 603 167 +f 595 167 603 +f 166 593 176 +f 603 176 593 +f 142 569 166 +f 593 166 569 +f 141 570 142 +f 569 142 570 +f 181 608 141 +f 570 141 608 +f 137 565 181 +f 608 181 565 +f 139 566 137 +f 565 137 566 +f 160 587 161 +f 589 161 587 +f 191 618 160 +f 587 160 618 +f 179 605 191 +f 618 191 605 +f 178 606 179 +f 605 179 606 +f 190 617 178 +f 606 178 617 +f 180 607 190 +f 617 190 607 +f 177 604 180 +f 607 180 604 +f 186 613 177 +f 604 177 613 +f 171 598 186 +f 613 186 598 +f 162 588 171 +f 598 171 588 +f 198 625 162 +f 588 162 625 +f 193 621 198 +f 625 198 621 +f 200 627 193 +f 621 193 627 +f 202 629 200 +f 627 200 629 +f 196 624 202 +f 629 202 624 +f 229 657 196 +f 624 196 657 +f 228 656 229 +f 657 229 656 +f 656 228 655 +f 226 653 228 +f 655 228 653 +f 225 652 226 +f 653 226 652 +f 223 650 225 +f 652 225 650 +f 222 649 223 +f 650 223 649 +f 220 647 222 +f 649 222 647 +f 218 645 220 +f 647 220 645 +f 217 644 218 +f 645 218 644 +f 215 642 217 +f 644 217 642 +f 213 640 215 +f 642 215 640 +f 211 638 213 +f 640 213 638 +f 209 636 211 +f 638 211 636 +f 208 623 209 +f 636 209 623 +f 197 623 208 +f 623 197 631 +f 203 630 197 +f 631 197 630 +f 201 628 203 +f 630 203 628 +f 199 626 201 +f 628 201 626 +f 192 619 199 +f 626 199 619 +f 194 620 192 +f 619 192 620 +f 161 589 194 +f 620 194 589 +f 195 622 210 +f 637 210 622 +f 207 635 195 +f 622 195 635 +f 212 639 207 +f 635 207 639 +f 214 641 212 +f 639 212 641 +f 216 643 214 +f 641 214 643 +f 219 646 216 +f 643 216 646 +f 221 648 219 +f 646 219 648 +f 224 651 221 +f 648 221 651 +f 227 654 224 +f 651 224 654 +f 210 637 227 +f 654 227 637 +f 116 544 261 +f 689 261 544 +f 118 545 116 +f 544 116 545 +f 230 658 118 +f 545 118 658 +f 231 659 230 +f 658 230 659 +f 232 660 231 +f 659 231 660 +f 111 538 232 +f 660 232 538 +f 235 663 111 +f 538 111 663 +f 236 665 235 +f 663 235 665 +f 240 667 236 +f 665 236 667 +f 245 673 240 +f 667 240 673 +f 246 674 245 +f 673 245 674 +f 239 668 246 +f 674 246 668 +f 238 666 239 +f 668 239 666 +f 128 557 238 +f 666 238 557 +f 14 442 128 +f 557 128 442 +f 251 678 14 +f 442 14 678 +f 242 671 251 +f 678 251 671 +f 248 677 242 +f 671 242 677 +f 247 675 248 +f 677 248 675 +f 253 681 247 +f 675 247 681 +f 252 680 253 +f 681 253 680 +f 249 676 252 +f 680 252 676 +f 254 682 249 +f 676 249 682 +f 241 669 254 +f 682 254 669 +f 243 670 241 +f 669 241 670 +f 250 679 243 +f 670 243 679 +f 244 672 250 +f 679 250 672 +f 13 440 244 +f 672 244 440 +f 15 441 13 +f 440 13 441 +f 127 556 15 +f 441 15 556 +f 237 664 127 +f 556 127 664 +f 256 684 237 +f 664 237 684 +f 110 536 256 +f 684 256 536 +f 112 537 110 +f 536 110 537 +f 234 662 112 +f 537 112 662 +f 233 661 234 +f 662 234 661 +f 257 685 233 +f 661 233 685 +f 117 546 257 +f 685 257 546 +f 258 686 117 +f 546 117 686 +f 206 634 258 +f 686 258 634 +f 255 683 206 +f 634 206 683 +f 261 689 255 +f 683 255 689 +f 264 692 298 +f 726 298 692 +f 265 693 264 +f 692 264 693 +f 57 484 265 +f 693 265 484 +f 59 485 57 +f 484 57 485 +f 263 691 59 +f 485 59 691 +f 61 488 263 +f 691 263 488 +f 58 486 61 +f 488 61 486 +f 262 690 58 +f 486 58 690 +f 266 694 262 +f 690 262 694 +f 267 695 266 +f 694 266 695 +f 84 511 267 +f 695 267 511 +f 34 460 84 +f 511 84 460 +f 91 515 34 +f 460 34 515 +f 100 524 91 +f 515 91 524 +f 102 525 100 +f 524 100 525 +f 260 687 102 +f 525 102 687 +f 303 732 260 +f 687 260 732 +f 732 303 731 +f 107 533 303 +f 731 303 533 +f 271 698 107 +f 533 107 698 +f 272 699 271 +f 698 271 699 +f 80 504 272 +f 699 272 504 +f 82 505 80 +f 504 80 505 +f 273 700 82 +f 505 82 700 +f 276 702 273 +f 700 273 702 +f 301 729 276 +f 702 276 729 +f 278 704 301 +f 729 301 704 +f 280 709 278 +f 704 278 709 +f 281 710 280 +f 709 280 710 +f 269 528 281 +f 710 281 528 +f 101 528 269 +f 528 101 526 +f 291 720 101 +f 526 101 720 +f 268 696 291 +f 720 291 696 +f 33 458 268 +f 696 268 458 +f 35 459 33 +f 458 33 459 +f 83 510 35 +f 459 35 510 +f 298 726 83 +f 510 83 726 +f 103 527 259 +f 688 259 527 +f 270 697 103 +f 527 103 697 +f 279 705 270 +f 697 270 705 +f 277 703 279 +f 705 279 703 +f 274 701 277 +f 703 277 701 +f 302 730 274 +f 701 274 730 +f 81 506 302 +f 730 302 506 +f 109 534 81 +f 506 81 534 +f 108 535 109 +f 534 109 535 +f 259 688 108 +f 535 108 688 +f 342 767 339 +f 763 339 767 +f 354 780 342 +f 767 342 780 +f 340 765 354 +f 780 354 765 +f 105 531 340 +f 765 340 531 +f 104 529 105 +f 531 105 529 +f 46 739 104 +f 529 104 739 +f 307 737 46 +f 739 46 737 +f 333 760 307 +f 737 307 760 +f 332 759 333 +f 760 333 759 +f 353 706 332 +f 759 332 706 +f 352 779 353 +f 706 353 779 +f 311 777 352 +f 779 352 777 +f 313 777 311 +f 282 747 313 +f 777 313 747 +f 351 775 282 +f 747 282 775 +f 350 774 351 +f 775 351 774 +f 322 773 350 +f 774 350 773 +f 349 771 322 +f 773 322 771 +f 348 770 349 +f 771 349 770 +f 346 711 348 +f 770 348 711 +f 345 769 346 +f 711 346 769 +f 336 761 345 +f 769 345 761 +f 337 762 336 +f 761 336 762 +f 39 469 337 +f 762 337 469 +f 294 722 39 +f 469 39 722 +f 293 722 294 +f 339 763 293 +f 722 293 763 +f 768 338 764 +f 41 470 338 +f 764 338 470 +f 40 471 41 +f 470 41 471 +f 471 40 712 +f 344 712 40 +f 712 344 713 +f 347 713 344 +f 713 347 743 +f 324 743 347 +f 743 324 772 +f 323 772 324 +f 319 748 323 +f 772 323 748 +f 284 749 319 +f 748 319 749 +f 283 749 284 +f 749 283 776 +f 312 778 283 +f 776 283 778 +f 334 707 312 +f 778 312 707 +f 707 334 708 +f 335 708 334 +f 708 335 738 +f 45 738 335 +f 738 45 530 +f 44 530 45 +f 530 44 733 +f 275 733 44 +f 341 766 275 +f 733 275 766 +f 343 768 341 +f 766 341 768 +f 338 768 343 +f 782 389 783 +f 315 746 389 +f 783 389 746 +f 314 744 315 +f 746 315 744 +f 320 750 314 +f 744 314 750 +f 326 752 320 +f 750 320 752 +f 391 825 326 +f 752 326 825 +f 390 824 391 +f 825 391 824 +f 394 828 390 +f 824 390 828 +f 392 827 394 +f 828 394 827 +f 297 724 392 +f 827 392 724 +f 318 757 297 +f 724 297 757 +f 308 757 318 +f 757 308 740 +f 330 740 308 +f 740 330 788 +f 377 813 330 +f 788 330 813 +f 365 798 377 +f 813 377 798 +f 367 799 365 +f 798 365 799 +f 328 801 367 +f 799 367 801 +f 801 328 756 +f 327 754 328 +f 756 328 754 +f 288 717 327 +f 754 327 717 +f 356 785 288 +f 717 288 785 +f 355 784 356 +f 785 356 784 +f 292 721 355 +f 784 355 721 +f 290 718 292 +f 721 292 718 +f 289 719 290 +f 718 290 719 +f 329 755 289 +f 719 289 755 +f 369 802 329 +f 755 329 802 +f 368 800 369 +f 802 369 800 +f 364 796 368 +f 800 368 796 +f 366 797 364 +f 796 364 797 +f 357 789 366 +f 797 366 789 +f 331 787 357 +f 789 357 787 +f 787 331 786 +f 310 741 331 +f 786 331 741 +f 309 742 310 +f 741 310 742 +f 317 758 309 +f 742 309 758 +f 296 725 317 +f 758 317 725 +f 295 723 296 +f 725 296 723 +f 393 826 295 +f 723 295 826 +f 325 753 393 +f 826 393 753 +f 321 751 325 +f 753 325 751 +f 316 745 321 +f 751 321 745 +f 388 823 316 +f 745 316 823 +f 387 781 388 +f 823 388 781 +f 403 838 387 +f 781 387 838 +f 305 736 403 +f 838 403 736 +f 385 820 305 +f 736 305 820 +f 398 832 385 +f 820 385 832 +f 400 835 398 +f 832 398 835 +f 386 822 400 +f 835 400 822 +f 384 821 386 +f 822 386 821 +f 304 734 384 +f 821 384 734 +f 306 735 304 +f 734 304 735 +f 389 782 306 +f 735 306 782 +f 715 287 833 +f 382 819 287 +f 833 287 819 +f 381 817 382 +f 819 382 817 +f 359 792 381 +f 817 381 792 +f 358 790 359 +f 792 359 790 +f 423 857 358 +f 790 358 857 +f 361 793 423 +f 857 423 793 +f 424 858 361 +f 793 361 858 +f 404 839 424 +f 858 424 839 +f 401 836 404 +f 839 404 836 +f 379 816 401 +f 836 401 816 +f 408 816 379 +f 816 408 812 +f 416 812 408 +f 812 416 810 +f 376 808 416 +f 810 416 808 +f 375 809 376 +f 808 376 809 +f 370 803 375 +f 809 375 803 +f 373 806 370 +f 803 370 806 +f 806 373 850 +f 419 853 373 +f 850 373 853 +f 405 840 419 +f 853 419 840 +f 407 841 405 +f 840 405 841 +f 422 856 407 +f 841 407 856 +f 406 842 422 +f 856 422 842 +f 421 855 406 +f 842 406 855 +f 420 854 421 +f 855 421 854 +f 418 852 420 +f 854 420 852 +f 417 851 418 +f 852 418 851 +f 372 804 417 +f 851 417 804 +f 371 805 372 +f 804 372 805 +f 374 807 371 +f 805 371 807 +f 415 849 374 +f 807 374 849 +f 414 811 415 +f 849 415 811 +f 811 414 848 +f 413 847 414 +f 848 414 847 +f 409 843 413 +f 847 413 843 +f 378 814 409 +f 843 409 814 +f 380 815 378 +f 814 378 815 +f 402 837 380 +f 815 380 837 +f 363 794 402 +f 837 402 794 +f 362 795 363 +f 794 363 795 +f 360 791 362 +f 795 362 791 +f 383 818 360 +f 791 360 818 +f 399 834 383 +f 818 383 834 +f 286 716 399 +f 834 399 716 +f 285 714 286 +f 716 286 714 +f 395 829 285 +f 714 285 829 +f 411 846 395 +f 829 395 846 +f 410 844 411 +f 846 411 844 +f 426 860 410 +f 844 410 860 +f 412 845 426 +f 860 426 845 +f 425 859 412 +f 845 412 859 +f 397 830 425 +f 859 425 830 +f 396 831 397 +f 830 397 831 +f 287 715 396 +f 831 396 715 +f 187 614 188 +f 616 188 614 +f 300 728 187 +f 614 187 728 +f 299 727 300 +f 728 300 727 +f 185 612 299 +f 727 299 612 +f 184 610 185 +f 612 185 610 +f 183 611 184 +f 610 184 611 +f 182 609 183 +f 611 183 609 +f 204 632 182 +f 609 182 632 +f 205 633 204 +f 632 204 633 +f 189 615 205 +f 633 205 615 +f 427 861 189 +f 615 189 861 +f 188 616 427 +f 861 427 616 diff --git a/resources/data/hints.ini b/resources/data/hints.ini index 1b07d14..e3ab0bf 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -231,6 +231,11 @@ disabled_tags = SLA text = Fullscreen mode\nDid you know that you can switch QIDISlicer to fullscreen mode? Use the F11 hotkey. enabled_tags = Windows +[hint:Printables integration] +text = Printables.com integration\nDid you know that when you are browsing Printables.com, you can send 3D model files to PrusaSlicer with a single click? Learn more in the documentation. +documentation_link = https://help.qidi3d.com/article/prusaslicer-printables-com-integration_399198 +weight = 3 + [hint:Cut tool] text = Cut tool\nDid you know that you can cut a model at any angle and even create aligning pins with the updated Cut tool? Learn more in the documentation. documentation_link = https://help.qidi3d.com/article/cut-tool_1779 diff --git a/resources/icons/PrusaSlicer-gcodeviewer-mac_128px.png b/resources/icons/PrusaSlicer-gcodeviewer-mac_128px.png new file mode 100644 index 0000000000000000000000000000000000000000..b62f3fddc84e662f1b011cc19aad7128781cb3ca GIT binary patch literal 12218 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 KAYLVE82BGiN2+}Q literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer-gcodeviewer.ico b/resources/icons/PrusaSlicer-gcodeviewer.ico new file mode 100644 index 0000000000000000000000000000000000000000..1cd867e29b540e59e0bf594f697071071a19d1c0 GIT binary patch literal 120297 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 literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer-gcodeviewer.svg b/resources/icons/PrusaSlicer-gcodeviewer.svg new file mode 100644 index 0000000..6312bee --- /dev/null +++ b/resources/icons/PrusaSlicer-gcodeviewer.svg @@ -0,0 +1,73 @@ + + + + + + + diff --git a/resources/icons/PrusaSlicer-gcodeviewer_128px.png b/resources/icons/PrusaSlicer-gcodeviewer_128px.png new file mode 100644 index 0000000000000000000000000000000000000000..475ddb68ed8681359ccfe7fe7a6b96e70a3373ad GIT binary patch literal 9332 zcmW++byyT%7v80n?*1Vnjg*9RcQ4&tN{95alt?2iARr|r-Q6W2QUWUt0@B^F@D1M| zGrP|`Gxy9r=RNOv&z&2ksjh(goa#9U1j1EPl!XAlu%`nH1334ITmA%op1CO+dV)aU zKTikv)}+V-xJc0t}<@$unwbb0S-ZRuvq>FQyhc_>N+0=)n!$x7+? zem%(Y@r4h}b_dsGF1^ZRqD6CjuBep=A}V>QtW_#69Qx86b3^>A(B>9oZGka>6BRBP!lk&Rce%#fQ~0)o;Iep+y85SV?QRu za2-QmNFphgtF+wZ9WpOTnhROhAjrj(K6UwtrV1le9KLJ8dxb(Ca@Nh&jZPna{>%I? zb$A!Mrd|P@Kjed-L`8_5MaYQ5Qlwq(9L}Ac|%0S*c)f2)-y-6#E?9i!^2^E&ykSG<2)ehtG{)u%>z}fePTb zFmf27B>&@VQU5)-94t;C{q@Ah_CZIHbwP!-3l1^bG!H|CjF>?vbC-JvAKUC2jvC#INw!21Bx? zKka4v=MDmnuH~%8wiP}re!<8Xv9V#3l$@-jrZ!;1`#C*5%B+f6RP<|gHFs}s?{~cl zs+m$?Zeryuc#F*P{n=WTHi(L z+s-k5@=C8PrMda-Y^CYX1c?U+AG0dN?`lgKDnS?3gZYLMt$Yk%1`ML2G#zFMdS#pW z3F212GWbE$RpvSN*?u2Ax5fzR=rn*gXG$JEZ1LWm&U0PqJl{hkOiXB2J!bjsgZ<$H zxE0fYNtaftPn-vDM5BgntbV4x?*H+_V{?Qw)AMRMfQwexD_15GkI!)mElYjt)NpQY z&TD%D4AVCcN?GfREZgEB!zSl6Sv_9sqj~EFBW6~&s4F@9V-dkl@$Mm~ME#Fvh<=R-M+~9Lh7-pT_FRD}y!*B8EvGNQ@U610Elau=^T`LPS zzG}*I#e9OP&ESpK`{gWZmf6zE!}AUADFvJ;1{3HoNu)-<3MJ!G3rutc2cP?QXzUeC zI&4pu5Yq+U^Nfq>Tl8uuD_h-PpNwXSq?MO*xRP?g5(?l~@be!;{GgKSjViRjMiWE0 zagz(rhkXMwE;Chibv&brRC<|@)$Z%^{#S>lod0$S2?=)}Wu)P@iN7)h-`EThK<^F& zT}h3f888=miFLC|EAe+{vasty*QN?pVrhhujymt~G^df#r0f(D(DvJJKdEbKYU&+- zW5D|RW#!{(h7Xt8I&>HNx)+lcS3jT*oo)CP7Vw{vFspyH=>J6ciirtjqQY3P^ZGA# z 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 literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer-gcodeviewer_32px.png b/resources/icons/PrusaSlicer-gcodeviewer_32px.png new file mode 100644 index 0000000000000000000000000000000000000000..eaba5e21d70663ae5d72cb715bd5eb68da933727 GIT binary patch literal 1795 zcmV+e2mJVnP)~zv3>1l9}JC25fT_TkhtppHw}E=#9B|SY(>GG?;e_)f z{ZUfCMvi_-`y@^OHp1zW-j@`43gMv$ORALQep>PAlCFLW;i0%7X;LCBlR*6Yz!_kC zDwE-GnC9kY+S}WSMx$h9Wl>O2Kvq^(vPas0rN)@gk{VEa&Hj~2{LY;_?BBm1zu!+` zVIh+zPv+FAQ{?C8)7sjKZQCqdxR3=479=zALu1UnZy0#EP8W$+_%|Sl0|yS!-Q7)Q zW+wCI&12@wnE+H*SF?QiawbfefNk59mX_l2c-XjcBiY&6L#h4){MZ;11aN$9;`hnK zW3d=zWo5WrE|x4=!i^g@IDGgp_wL=JuC9*8#zv~EtLg6Urna`0a5zjL5Mb-pt%>O7 z0B;X{yF8_+_T9U8>&%%m+O%ntwr$&{U@)kzt}d07lxWwkU5Z2^YHMrL>eZ`t=+Gf` zbaZILh7Ee~;6XCVK1mY+oDV(x`fJxupsA?|+qPM>Xc5t9l$@L#+-^5+x0^Y0<}iQ$ ze4I`vxw*N_m@$L7bLUb~Q9*fmIXO8wi6{XwfO25HL-7-CRkFyvd-t+(mRKxCXJ;q%_4QO$RZ+I-omAqF@C!+qMp6;*r$iCKV34x1GAzqN z5^LA4B@hU3@Zdq5PAA31#oWGqo8!li6AT6k1On{b_FJ4s-@^0q+c>BFU^o-2oW#%e zglK4JVDaL`xZQ4S+a^ChAAsiOX7cj#@Or&?yz3aXXmypj5=M3v+$?%AKpY( zX$>aLlghx04w6(pz}>rd$<58h=kw9l);4(G=kww7`2e_o|2{Ww-eh}ODWgtT;#pCS z!UI?nzstb6eZys7mXUNH7?)`F$dMylx^#)zvuERUI%#QXAruNxSXf9$M+bdrTuqU}v7*T4z%CR>7nf&w;g-i&2g zSe8X&VQCC+-Utb^V)~zENjSh-?R&2quVhh%U=ZJQ;kn!pt7+tg-Vm3Hkq%VFQ zlb)H%K(m8*8NTk-{gN^OP`rUmidf$R_3e30cH4FJAKUua)ZHcp|GH;z z9KQY!h3aY~Nr4mZE7JN|D%!p9xF4thB8hS&e>eVvZ{c}mGm)nA*sTr3y6!;KCVaVu z$jytydherfknok$g#UMr@RiemaC(#OfH1HFp6rM!fzqLo{(b9FI0&&QX)hGvn*JjK zH9Ls)cHw?$4c0SL2^`;nB04z#sy%3F(&kcfrln0 z0(HQYp-)Aw{*BOo{{k4SXPzbMyUwWRUnbVohW&XRCOs4P;$p1vQ>5A!jU~0Yf>J@m6l2v;0xky`PJb9ku+XXZK@J}N}PX~ z-H}65nxx-p1ZPAFgd}a3G;DfO8JQ?)_fs12OWGspx#9SemTCec8N@%&7XY(?XL<7T lyal*Id?%eU#`s6V`+t&3n#{x9fR_LO002ovPDHLkV1hujZvFrO literal 0 HcmV?d00001 diff --git a/resources/icons/PrusaSlicer-mac_128px.png b/resources/icons/PrusaSlicer-mac_128px.png new file mode 100644 index 0000000000000000000000000000000000000000..ff0b093beb1d3c6b8cf7e215397a654e03549cde GIT binary patch literal 6890 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Ð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

    ;Nfz#dH&`PE8EWm?x8Jtn!~hXlR}WtGXn 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 literal 0 HcmV?d00001 diff --git a/deps/+JPEG/JPEG.cmake b/deps/+JPEG/JPEG.cmake new file mode 100644 index 0000000..2b31f34 --- /dev/null +++ b/deps/+JPEG/JPEG.cmake @@ -0,0 +1,9 @@ +add_cmake_project(JPEG + URL https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.1.zip + URL_HASH SHA256=d6d99e693366bc03897677650e8b2dfa76b5d6c54e2c9e70c03f0af821b0a52f + CMAKE_ARGS + -DENABLE_SHARED=OFF + -DENABLE_STATIC=ON +) + +set(DEP_JPEG_DEPENDS ZLIB) diff --git a/deps/+LibBGCode/LibBGCode.cmake b/deps/+LibBGCode/LibBGCode.cmake new file mode 100644 index 0000000..3403646 --- /dev/null +++ b/deps/+LibBGCode/LibBGCode.cmake @@ -0,0 +1,34 @@ +set(LibBGCode_SOURCE_DIR "" CACHE PATH "Optionally specify local LibBGCode source directory") + +set(_source_dir_line + URL https://github.com/prusa3d/libbgcode/archive/04556c4f64d4b7a5942d8d193d1eb87fc7e1005f.zip + URL_HASH SHA256=f0745b2dae95f0a49ae75bfbe4d775c751499fc4245864675e2dab06c13b2c8f +) + +if (LibBGCode_SOURCE_DIR) + set(_source_dir_line "SOURCE_DIR;${LibBGCode_SOURCE_DIR};BUILD_ALWAYS;ON") +endif () + +# add_cmake_project(LibBGCode_deps +# ${_source_dir_line} +# SOURCE_SUBDIR deps +# BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/ +# CMAKE_ARGS +# -DLibBGCode_Deps_DEP_DOWNLOAD_DIR:PATH=${${PROJECT_NAME}_DEP_DOWNLOAD_DIR} +# -DDEP_CMAKE_OPTS:STRING=-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON +# -DLibBGCode_Deps_SELECT_ALL:BOOL=OFF +# -DLibBGCode_Deps_SELECT_heatshrink:BOOL=ON +# -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} +# -DLibBGCode_Deps_DEP_INSTALL_PREFIX=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} +# ) + +add_cmake_project(LibBGCode + ${_source_dir_line} + CMAKE_ARGS + -DLibBGCode_BUILD_TESTS:BOOL=OFF + -DLibBGCode_BUILD_CMD_TOOL:BOOL=OFF +) + +# set(DEP_LibBGCode_deps_DEPENDS ZLIB Boost) +# set(DEP_LibBGCode_DEPENDS LibBGCode_deps) +set(DEP_LibBGCode_DEPENDS ZLIB Boost heatshrink) diff --git a/deps/+MPFR/MPFR.cmake b/deps/+MPFR/MPFR.cmake new file mode 100644 index 0000000..e04ce28 --- /dev/null +++ b/deps/+MPFR/MPFR.cmake @@ -0,0 +1,44 @@ +set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/mpfr) +set(_dstdir ${${PROJECT_NAME}_DEP_INSTALL_PREFIX}) + +if (MSVC) + set(_output ${_dstdir}/include/mpfr.h + ${_dstdir}/include/mpf2mpfr.h + ${_dstdir}/lib/libmpfr-4.lib + ${_dstdir}/bin/libmpfr-4.dll) + + add_custom_command( + OUTPUT ${_output} + COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${_dstdir}/include/ + COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${_dstdir}/include/ + COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${_dstdir}/lib/ + COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${_dstdir}/bin/ + ) + + add_custom_target(dep_MPFR SOURCES ${_output}) + +else () + + # set(_cross_compile_arg "") + # if (CMAKE_CROSSCOMPILING) + # # TOOLCHAIN_PREFIX should be defined in the toolchain file + # set(_cross_compile_arg --host=${TOOLCHAIN_PREFIX}) + # endif () + + message(STATUS "${PROJECT_NAME}_DEP_INSTALL_PREFIX=${${PROJECT_NAME}_DEP_INSTALL_PREFIX}") + + ExternalProject_Add(dep_MPFR + EXCLUDE_FROM_ALL ON + #URL http://ftp.vim.org/ftp/gnu/mpfr/mpfr-3.1.6.tar.bz2 https://www.mpfr.org/mpfr-3.1.6/mpfr-3.1.6.tar.bz2 # mirrors are allowed + #URL_HASH SHA256=cf4f4b2d80abb79e820e78c8077b6725bbbb4e8f41896783c899087be0e94068 + URL https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.bz2 + URL_HASH SHA256=b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0 + DOWNLOAD_DIR ${${PROJECT_NAME}_DEP_DOWNLOAD_DIR}/MPFR + BUILD_IN_SOURCE ON + CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} --enable-shared=no --enable-static=yes --with-gmp=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} ${_gmp_build_tgt} + BUILD_COMMAND make -j + INSTALL_COMMAND make install + ) +endif () + +set(DEP_MPFR_DEPENDS GMP) diff --git a/deps/MPFR/mpfr/include/mpf2mpfr.h b/deps/+MPFR/mpfr/include/mpf2mpfr.h similarity index 100% rename from deps/MPFR/mpfr/include/mpf2mpfr.h rename to deps/+MPFR/mpfr/include/mpf2mpfr.h diff --git a/deps/MPFR/mpfr/include/mpfr.h b/deps/+MPFR/mpfr/include/mpfr.h similarity index 100% rename from deps/MPFR/mpfr/include/mpfr.h rename to deps/+MPFR/mpfr/include/mpfr.h diff --git a/deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll b/deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll new file mode 100644 index 0000000000000000000000000000000000000000..73a0c801d607a63e236afd28924a4253ed350205 GIT binary patch literal 431519 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 A!2kdN literal 0 HcmV?d00001 diff --git a/deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib b/deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib new file mode 100644 index 0000000000000000000000000000000000000000..7b0ad8d2bd86b6896be3a68b25b10faf0dc05c80 GIT binary patch literal 70696 zcmdsg378#4)pm7&03pP%h!G=3L_|bL!XzwT#Gn`fLqH6O5xJS=PIBYS++mgwqT+^# zxFez>A}XRHBBCM!A|fJ!;)bXZF(M*jM8v3wsQ-IvJ*T?6xJ}RaJ^wd(-gMWgQ}uRL z*WPvNK7CR5Nbl-HrtLRJ{>__z&_VMKm_M)UKq;SVo%0s#zyJRFe&sZ!rd+Pny4NbT z{xYRrbFWgbTLfIC)M@j9OO$&39E-DY1>Ufw#Tc%em3rd{aFm>fOM5W?P(zE8!u7 z_pVS%;|8V9M%)^R_iW&O+gKnE-bc9C;GAQW(m-0y0p7m{@GgUM@jM!*;Yt7x;R7dH zAPpY?KDfx@VqAd_&9qpLE8%{F^Oh^6aU-t4hYz;61Xtkv-7MaNEASD#YmIfd67Dg$ zV5w3XSKz?TnUdFd}@tS8b87n_%!lK<04#v&&;q`iz{KH!6nEijhk@= zK6{wORk#9|?qzX4uE6I|-ZT)$=Lm?0aM|$|h~qNg^NTGm#TB@GXN%Y3O1R(P3kauy za`Xk@ihV53#TEGC6pJBT2^$Q)gy+<_3|HXGvn`M(UnV?YaODc6G`@=~@Rcr$3vdOl znrbnOD*^EnzKZxY5cgMstC8;-r{hX^(BPULr8JP|*8tZdoW_;70$!w?r zhAZJdgRdW>l*ZM#0@v?uaSpD8e;a&bNU3k!X>h}lN@;uvSKym-Ex_|l;6|iPV=b