diff --git a/.clang-tidy b/.clang-tidy index a670e9e1b1..3f0aaa8bde 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -7,9 +7,17 @@ CheckOptions: misc-include-cleaner.UnusedIncludes: false # Headers that declare a symbol but are not the one to include: per-platform # implementations of wxWidgets and Boost.Thread (a Linux run would suggest the - # GTK or pthread one), library internals and forward declarations, CPython's - # headers behind Python.h, curl's behind curl.h, oneTBB's behind tbb/, and + # GTK or pthread one), library internals and forward declarations (MSVC's STL + # __msvc_* and the Windows UCRT's corecrt_* included), CPython's headers behind + # Python.h (python3.x/ on Linux and macOS, libpython/include/ on Windows), + # curl's behind curl.h, oneTBB's behind tbb/, and # admesh's stl.h, which the include path also exposes without its directory. + # Clipper's own clipper.hpp is only included through libslic3r/clipper.hpp or + # clipper_z.hpp, which configure it first, and Boost.Polygon's headers only + # work through boost/polygon/polygon.hpp or voronoi.hpp. Clipper2's headers + # are included through clipper2/clipper.h, or clipper2_z.hpp, which defines + # USINGZ first. minilzo's config + # headers are internal to minilzo.h. # FFmpeg's C headers are left alone because they are only included inside # extern "C", which an inserted include would miss. OS-specific headers (GLib, # GTK, D-Bus, POSIX, the Windows SDK) are only used inside platform #if blocks, @@ -23,7 +31,11 @@ CheckOptions: .*[/\\]impl[/\\].*; .*_fwd\.hpp; python3\.[0-9]+[/\\].*; + libpython[/\\]include[/\\].*; bits[/\\].*; + corecrt_.*\.h; + __msvc_.*\.hpp; + boost[/\\]multiprecision[/\\]fwd\.hpp; imconfig\.h; expat_external\.h; admesh[/\\]stl\.h; @@ -44,4 +56,10 @@ CheckOptions: fcntl\.h; termios\.h; [/\\](um|shared)[/\\].*; - sal\.h + sal\.h; + clipper[/\\]clipper\.hpp; + png(lib)?conf\.h; + mcut[/\\]platform\.h; + boost[/\\]polygon[/\\].*; + clipper2[/\\]clipper\.(core|engine|offset|minkowski|rectclip|export|triangulation|version)\.h; + lzo(conf|defs)\.h diff --git a/.claude/skills/orca-wxwidgets/SKILL.md b/.claude/skills/orca-wxwidgets/SKILL.md index 263d2e390f..0e39ce9d24 100644 --- a/.claude/skills/orca-wxwidgets/SKILL.md +++ b/.claude/skills/orca-wxwidgets/SKILL.md @@ -30,8 +30,9 @@ how you read the wx docs: Look things up in the source the app is built from — it beats memory, and 3.3 changed real behaviour: ```bash -WX=$(find deps -maxdepth 5 -type d -path '*dep_wxWidgets-prefix/src/dep_wxWidgets' | head -1) -# macOS: deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets Linux: deps/build/dep_wxWidgets-prefix/... +WX=$(find -L deps -maxdepth 5 -type d -path '*dep_wxWidgets-prefix/src/dep_wxWidgets' 2>/dev/null | head -1) +# macOS: deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets Linux, Windows: deps//dep_wxWidgets-prefix/... +# -L follows a worktree's deps/ symlinked to the main checkout. Not a glob: zsh aborts on one that matches nothing. # If deps are not built: git clone --depth 1 -b v3.3.2 https://github.com/SoftFever/Orca-deps-wxWidgets grep -n "CaptureMouse" -A 30 $WX/interface/wx/window.h # documented contract (doxygen source) grep -rn "@onlyfor\|not implemented" $WX/interface/wx/popupwin.h # documented platform limits @@ -40,6 +41,13 @@ grep -n "IsDark" $WX/docs/changes.txt # what changed in grep -n "NotifyCaptureLost" -r $WX/src/osx $WX/src/gtk $WX/src/msw # what each port actually does ``` +On Windows these lookups are bash: run them from Git Bash. PowerShell has no `grep`, and its `find` is +Windows' text-search `find.exe`. To locate the wx tree from PowerShell: + +```powershell +$WX = Resolve-Path deps\*\dep_wxWidgets-prefix\src\dep_wxWidgets, deps\*\*\dep_wxWidgets-prefix\src\dep_wxWidgets -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty Path +``` + `interface/wx/.h` is the documentation; `src/common` holds shared behaviour and `src/{msw,osx,gtk,unix,generic}` the per-port implementation. When the docs and the source disagree, the source is what runs — the references mark such facts **[source]**. Orca-side design docs live in diff --git a/.claude/skills/orca-wxwidgets/references/controls-dataview.md b/.claude/skills/orca-wxwidgets/references/controls-dataview.md index 0789f47d79..3671e05991 100644 --- a/.claude/skills/orca-wxwidgets/references/controls-dataview.md +++ b/.claude/skills/orca-wxwidgets/references/controls-dataview.md @@ -331,6 +331,10 @@ OrcaSlicer: integer spinners are `::SpinInput` ([below](#spininput)); progress b Contract: - A page must be created with the book as its parent and added once; the book owns and deletes it (`interface/wx/bookctrl.h:253-254, 273`). `RemovePage` detaches without deleting, and you then own it (`:324-330`). +- Removing the selected page selects the page before it (the new first page if it was first) through `SetSelection`, + so that page is shown and PAGE_CHANGING/CHANGED are sent; removing a page before the selection only shifts the + index. This is `wxBookCtrlBase::DoSetSelectionAfterRemoval` (`src/common/bookctrl.cpp:477-495` **[source]**), + called from `DoRemovePage` by `wxSimplebook`, `wxChoicebook`, `wxListbook`, `wxToolbook` and Orca's `Notebook`. - `GetSelection()` inside a `PAGE_CHANGED` handler may return the old or the new page depending on the platform; use `event.GetSelection()` (`interface/wx/bookctrl.h:160-166`). - `wxSimplebook` has no UI; switch with `ChangeSelection()`. `SetSelection()` sends PAGE_CHANGING/CHANGED diff --git a/.claude/skills/orca-wxwidgets/references/mouse-keyboard-focus.md b/.claude/skills/orca-wxwidgets/references/mouse-keyboard-focus.md index 0ccb5e4b70..48646134d8 100644 --- a/.claude/skills/orca-wxwidgets/references/mouse-keyboard-focus.md +++ b/.claude/skills/orca-wxwidgets/references/mouse-keyboard-focus.md @@ -10,7 +10,7 @@ wx asserts are compiled out in Orca (`wxDEBUG_LEVEL=0`), so every misuse below t an assert fails silently. "GTK" means wxGTK3, Orca's Linux default (X11 and Wayland); GTK2 is only an opt-out build (`-DDEP_WX_GTK3=OFF`), noted where it differs. Paths starting `interface/`, `include/`, `src/`, `docs/` are in the wx tree -(`find deps -maxdepth 5 -type d -path '*dep_wxWidgets-prefix/src/dep_wxWidgets'`); Orca paths are +(located as in `SKILL.md` §Ground truth); Orca paths are relative to `src/slic3r/GUI/`. Contents: [Rules](#rules) · [Mouse capture](#mouse-capture) · [Mouse events](#mouse-events) · diff --git a/.claude/skills/orca-wxwidgets/references/orca-architecture.md b/.claude/skills/orca-wxwidgets/references/orca-architecture.md index 801494d802..6c23122910 100644 --- a/.claude/skills/orca-wxwidgets/references/orca-architecture.md +++ b/.claude/skills/orca-wxwidgets/references/orca-architecture.md @@ -332,7 +332,9 @@ indices: pages come and go per printer and per feature flag. pages depending on the printer and on `use_printer_agents`; a removed page stays registered but is not prebuilt (its `LazyPage::in_book()` is false). - Plugin pages are appended by `PluginPages::initialize` (`plugin/host/PluginPages.hpp`) with - namespaced ids (`plugin..`) that cannot collide with `TAB_ID_*`. + namespaced ids (`plugin..`) that cannot collide with `TAB_ID_*`. Each is a + `LazyPage` with order −1, destroyed when its capability goes away. + → [Deferred construction](#deferred-construction-lazy-lazypage-stagedbuild-idlescheduler) ### Preset tabs @@ -529,6 +531,32 @@ the main frame does nothing to a panel after creating it. m_idle.add(m_diff_dialog); ``` Cite: `IdleScheduler::tick`, `docs/HLSD/deferred-page-construction.md`. +- **Rule:** A lazy page that can be destroyed while the main frame lives takes a negative order and + stays out of `m_lazy_pages`. + **Why:** `m_lazy_pages` and `PrebuildQueue` hold raw `LazyBase*` and nothing removes one + (`PrebuildQueue` has only `add` and `clear`). The queue calls `pending()` on every task each slice, + and `prebuild_pages_when_idle` reads every entry of `m_lazy_pages`, so a page destroyed while still + listed can be read after it is freed. A page only taken out of the book is fine: it stays registered + and its `pending()` is false (`MainFrame::show_device`). + ```cpp + // Right (PluginPages::create_page): order -1, and no m_lazy_pages.push_back + auto* page = new GUI::LazyPage(m_parent, name, -1, [capability](wxWindow* parent) { + return new PluginPage(parent, capability); + }); + ``` + Cite: `PluginPages::create_page`, `PluginPages::remove_page`. +- **Rule:** Remove several lazy pages from a book left to right. + **Why:** removing the selected page selects and shows the page before it + (`references/controls-dataview.md` §Book controls), and showing an unbuilt `LazyPage` while the frame + is shown builds it. In any other order the page before the selected one can be one removed next, + built only to be destroyed; left to right it is one that stays (unless the selected page is the + book's first). + ```cpp + // Right (PluginPages::shutdown): m_order is the tabs' left-to-right order + for (const PluginCapabilityId& id : std::vector(m_order)) + remove_page(id); + ``` + Cite: `PluginPages::shutdown`, `PluginPages::relayout`, `PluginPages::on_plugin_deregister`. ## Plater and Sidebar diff --git a/.claude/skills/orca-wxwidgets/references/painting-custom-widgets.md b/.claude/skills/orca-wxwidgets/references/painting-custom-widgets.md index 905ff97d99..4f047042c3 100644 --- a/.claude/skills/orca-wxwidgets/references/painting-custom-widgets.md +++ b/.claude/skills/orca-wxwidgets/references/painting-custom-widgets.md @@ -6,7 +6,7 @@ to write a custom control on the wx side and how to author an Orca widget on the `StaticBox`/`StateHandler` foundation. Read it before writing or reviewing any `wxEVT_PAINT` handler, `render`/`doRender` method, `messureSize`, or a new class under `src/slic3r/GUI/Widgets/`. -wx cites are relative to the pinned wx 3.3.2 tree (`deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets`). +wx cites are relative to the pinned wx 3.3.2 tree (located as in `SKILL.md` §Ground truth). Orca builds wx with `wxBUILD_DEBUG_LEVEL=0` and `libslic3r_gui` with `wxDEBUG_LEVEL=0`: every wx assert below is compiled out and `wxCHECK*` returns silently, so paint misuse shows up only as wrong, missing or stale pixels, never as an assert dialog. diff --git a/.claude/skills/orca-wxwidgets/references/platforms.md b/.claude/skills/orca-wxwidgets/references/platforms.md index 13ed32314a..f100b02269 100644 --- a/.claude/skills/orca-wxwidgets/references/platforms.md +++ b/.claude/skills/orca-wxwidgets/references/platforms.md @@ -78,8 +78,9 @@ Contents: [Rules](#rules) · [The wx build Orca uses](#the-wx-build-orca-uses) `references/colours-dark-mode.md`. - The checked-out source is the tree that every wx citation in this skill refers to: `deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets` on macOS and - `deps/build/dep_wxWidgets-prefix/src/dep_wxWidgets` on Linux. Find it with - `find deps -maxdepth 5 -type d -path '*dep_wxWidgets-prefix/src/dep_wxWidgets'`. On macOS its + `deps//dep_wxWidgets-prefix/src/dep_wxWidgets` on Linux and Windows (`deps/build` for a + release build; `build_win.bat` names the others). Locate it with the bash or PowerShell lookup in + `SKILL.md` §Ground truth. On macOS its `src/osx/cocoa/colour.mm` already has the patch applied. - **Flatpak builds wx separately.** `deps/CMakeLists.txt` leaves `dep_wxWidgets` out of the deps target when `FLATPAK` is set. Instead, `scripts/flatpak/com.orcaslicer.OrcaSlicer.yml` has its own diff --git a/.claude/skills/orca-wxwidgets/references/popups-menus.md b/.claude/skills/orca-wxwidgets/references/popups-menus.md index be1abb69a8..3fab369436 100644 --- a/.claude/skills/orca-wxwidgets/references/popups-menus.md +++ b/.claude/skills/orca-wxwidgets/references/popups-menus.md @@ -5,7 +5,7 @@ How wx 3.3.2 popups and menus behave on each port, and the Orca wrappers built o `append_menu_item`, `Plater::PopupMenu` and the macOS menubar versus `BBLTopbar`. Read it before you add or change anything that opens over other UI and must close by itself, or any context menu or menubar item. -wx cites are relative to the wx tree root (`deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets`). +wx cites are relative to the wx tree root (located as in `SKILL.md` §Ground truth). **[source]** marks behaviour derived from the implementation that the wx docs do not state or contradict. Orca builds wx with `wxBUILD_DEBUG_LEVEL=0`, so every "asserts" below means "fails silently in Orca". "GTK" means wxGTK3 (X11 and Wayland), the default Linux build; GTK2 is only an opt-out (`-DDEP_WX_GTK3=OFF`). diff --git a/.claude/skills/orca-wxwidgets/references/threads-timers-app.md b/.claude/skills/orca-wxwidgets/references/threads-timers-app.md index 8c8367c999..269c228a35 100644 --- a/.claude/skills/orca-wxwidgets/references/threads-timers-app.md +++ b/.claude/skills/orca-wxwidgets/references/threads-timers-app.md @@ -7,7 +7,7 @@ yields and nested event loops, progress dialogs, startup, shutdown and exception screen, and the access rules for `wxGetApp()` and `app_config`. Read it whenever code runs off the main thread, defers work, starts a timer, yields, shows progress, or runs during startup or shutdown. -wx cites are relative to the pinned wx 3.3.2 tree (`deps/build//dep_wxWidgets-prefix/src/dep_wxWidgets`). +wx cites are relative to the pinned wx 3.3.2 tree (located as in `SKILL.md` §Ground truth). Orca builds wx with `wxBUILD_DEBUG_LEVEL=0` and `libslic3r_gui` with `wxDEBUG_LEVEL=0`, so `wxASSERT` is compiled out and `wxCHECK*` returns silently: a timer started off the main thread never fires on macOS, `Exit()` on a loop that is not the active one is ignored, `Start(0)` on macOS fails — all without diff --git a/.claude/skills/orca-wxwidgets/references/windows-dialogs.md b/.claude/skills/orca-wxwidgets/references/windows-dialogs.md index 1c5be5af4c..ff8a858e24 100644 --- a/.claude/skills/orca-wxwidgets/references/windows-dialogs.md +++ b/.claude/skills/orca-wxwidgets/references/windows-dialogs.md @@ -6,10 +6,9 @@ port; what Orca's `DPIDialog`/`DPIFrame` add; the Orca dialog recipe; and the `M Read it before writing or reviewing any dialog, frame, close handler, `Destroy()`/`delete`, or code that keeps a pointer to a window across an event, a `CallAfter` or a modal loop. -wx cites are relative to the pinned wx 3.3.2 tree (`find deps -maxdepth 5 -type d -path -'*dep_wxWidgets-prefix/src/dep_wxWidgets'`). wx is built with `wxBUILD_DEBUG_LEVEL=0` and -`libslic3r_gui` with `wxDEBUG_LEVEL=0`: every wx assert quoted below is compiled out, so misuse -fails silently (dropped call, stuck loop, freed memory), never with an assert dialog. "GTK" below +wx cites are relative to the pinned wx 3.3.2 tree (located as in `SKILL.md` §Ground truth). wx is +built with `wxBUILD_DEBUG_LEVEL=0` and `libslic3r_gui` with `wxDEBUG_LEVEL=0`: every wx assert +quoted below is compiled out, so misuse fails silently (dropped call, stuck loop, freed memory), never with an assert dialog. "GTK" below means wxGTK as Orca builds it on Linux: GTK3 by default (X11 or Wayland); GTK2 is only an opt-out. Contents: [Rules](#rules) · [1 Creating and parenting](#1-creating-and-parenting-windows) · diff --git a/.claude/skills/orca-wxwidgets/references/wx-33-changes.md b/.claude/skills/orca-wxwidgets/references/wx-33-changes.md index c2075ea2fb..4a292d89af 100644 --- a/.claude/skills/orca-wxwidgets/references/wx-33-changes.md +++ b/.claude/skills/orca-wxwidgets/references/wx-33-changes.md @@ -14,7 +14,7 @@ Contents: [Rules](#rules) · [1 Reading the change logs](#1-reading-the-change-l [8 Migration done in Orca](#8-migration-already-done-in-orca) All `docs/`, `interface/`, `include/`, `src/`, `build/` cites are relative to the pinned wx tree -(`find deps -maxdepth 5 -type d -path '*dep_wxWidgets-prefix/src/dep_wxWidgets'`), except paths +(located as in `SKILL.md` §Ground truth), except paths explicitly called Orca's (`deps/…`, Orca's `src/CMakeLists.txt`) and bare Orca file + symbol cites. ## Rules diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 87352f505e..b1cdc6e7f8 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -20,6 +20,49 @@ #endif /* SLIC3R_GUI */ #endif /* WIN32 */ +#include +#include +#include "libslic3r/PrintBase.hpp" +#include "slic3r/Utils/json_diff.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/LocalesUtils.hpp" +#include +#include +#include +#include "libslic3r/Color.hpp" +#include "libslic3r/TriangleSelector.hpp" +#include +#include "libslic3r/Format/bbs_3mf.hpp" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r_version.h" +#include "libslic3r/Semver.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/CustomGCode.hpp" +#include +#include +#include +#include +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "slic3r/GUI/Gizmos/GLGizmoBase.hpp" +#include +#include "libslic3r/Arrange.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/GCode/ThumbnailData.hpp" +#include "slic3r/GUI/3DScene.hpp" +#include "slic3r/GUI/GLShader.hpp" +#include +#include +#include + #include #include #include @@ -2780,6 +2823,37 @@ int CLI::run(int argc, char **argv) fetch_compatible_values = true; } + // Refresh every project filament no loaded filament replaces from its current system preset, as the GUI + // does when it loads the project; the filament merge below keeps the keys the project lists as changed. + // Entries stay in slot order, which the merge's variant bookkeeping relies on. + std::vector load_filaments_refresh(load_filaments_config.size(), false); + if (is_bbl_3mf && new_printer_name.empty()) { + const ConfigOptionStrings *project_filament_ids = m_print_config.option("filament_ids"); + for (size_t index = 0; index < current_filaments_system_name.size(); index++) { + const int slot = static_cast(index) + 1; + if (std::find(load_filaments_index.begin(), load_filaments_index.end(), slot) != load_filaments_index.end()) + continue; + std::string system_name = current_filaments_system_name[index]; + if (system_name.empty()) + continue; + PresetBundle::convert_filament_preset_name(current_printer_name, system_name); + DynamicPrintConfig config; + std::string error; + if (!ensure_system_preset_resolver().resolve_system_preset(config, Preset::TYPE_FILAMENT, system_name, config_substitution_rule, error)) { + BOOST_LOG_TRIVIAL(warning) << boost::format("CLI: system filament preset '%1%' not resolved (%2%); filament %3% keeps its values") % system_name % error % slot; + continue; + } + const size_t at = std::upper_bound(load_filaments_index.begin(), load_filaments_index.end(), slot) - load_filaments_index.begin(); + load_filaments_id.insert(load_filaments_id.begin() + at, + project_filament_ids != nullptr && index < project_filament_ids->size() ? project_filament_ids->values[index] : std::string()); + load_filaments_name.insert(load_filaments_name.begin() + at, system_name); + load_filaments_config.insert(load_filaments_config.begin() + at, std::move(config)); + load_filaments_index.insert(load_filaments_index.begin() + at, slot); + load_filaments_inherit.insert(load_filaments_inherit.begin() + at, system_name); + load_filaments_refresh.insert(load_filaments_refresh.begin() + at, true); + } + } + //fetch upward_compatible_machine if (fetch_upward_values) { if (!current_printer_system_name.empty()) { @@ -3470,7 +3544,7 @@ int CLI::run(int argc, char **argv) } //set the filament settings into print config - if ((load_filament_count > 0) || (up_config_to_date)) + if ((load_filament_count > 0) || (up_config_to_date) || !load_filaments_config.empty()) { //std::vector filament_variant_count(filament_count, 1); std::vector old_start_indice(filament_count, 0); @@ -3529,6 +3603,8 @@ int CLI::run(int argc, char **argv) for (int index = 0; index < load_filaments_config.size(); index++) { DynamicPrintConfig& config = load_filaments_config[index]; int filament_index = load_filaments_index[index]; + // A filament given with --load-filaments replaces the slot; a refreshed one keeps the project's changed keys. + const bool loaded = load_filament_count > 0 && !load_filaments_refresh[index]; std::vector different_keys; //ORCA: diff before load_default_gcodes_to_config, the way the process and machine @@ -3538,12 +3614,12 @@ int CLI::run(int argc, char **argv) // compared" to "compared as empty against the parent" and land in the column // as an override the user never made. std::string filament_different_settings; - if (load_filament_count > 0) + if (loaded) filament_different_settings = cli_different_settings(config, load_filaments_inherit[index], Preset::TYPE_FILAMENT); load_default_gcodes_to_config(config, Preset::TYPE_FILAMENT); - if (load_filament_count > 0) { + if (loaded) { ConfigOptionStrings *opt_filament_settings = static_cast (m_print_config.option("filament_settings_id", true)); std::string& filament_name = load_filaments_name[index]; ConfigOptionString* filament_name_setting = new ConfigOptionString(filament_name); @@ -3615,7 +3691,7 @@ int CLI::run(int argc, char **argv) flush_and_exit(CLI_CONFIG_FILE_ERROR); } - if ((load_filament_count == 0) && !different_keys_set.empty()) + if (!loaded && !different_keys_set.empty()) { std::set::iterator iter = different_keys_set.find(opt_key); if ( iter != different_keys_set.end()) { diff --git a/src/OrcaSlicer.hpp b/src/OrcaSlicer.hpp index 380607e95f..9aceee4a20 100644 --- a/src/OrcaSlicer.hpp +++ b/src/OrcaSlicer.hpp @@ -1,7 +1,14 @@ #ifndef SLIC3R_HPP #define SLIC3R_HPP +#include +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Format/bbs_3mf.hpp" +#include "libslic3r/GCode/ThumbnailData.hpp" #include +#include +#include #include "libslic3r/Config.hpp" #include "libslic3r/Model.hpp" diff --git a/src/dev-utils/OrcaSlicer_profile_validator.cpp b/src/dev-utils/OrcaSlicer_profile_validator.cpp index c328c565c8..bbfa53c262 100644 --- a/src/dev-utils/OrcaSlicer_profile_validator.cpp +++ b/src/dev-utils/OrcaSlicer_profile_validator.cpp @@ -8,6 +8,28 @@ #define NANOSVGRAST_IMPLEMENTATION #include "nanosvg/nanosvgrast.h" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/PrintConfig.hpp" +#include +#include "libslic3r/CustomGCode.hpp" +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/PlaceholderParser.hpp" +#include +#include +#include +#include + #include "libslic3r/BoundingBox.hpp" #include "libslic3r/GCode.hpp" #include "libslic3r/GCode/WipeTower.hpp" diff --git a/src/dev-utils/encoding-check.cpp b/src/dev-utils/encoding-check.cpp index 2a645e2ab2..0eb390f161 100644 --- a/src/dev-utils/encoding-check.cpp +++ b/src/dev-utils/encoding-check.cpp @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/src/dev-utils/generate_system_cache.cpp b/src/dev-utils/generate_system_cache.cpp index 017db79836..7baa11a8a0 100644 --- a/src/dev-utils/generate_system_cache.cpp +++ b/src/dev-utils/generate_system_cache.cpp @@ -4,9 +4,19 @@ #include #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include #include +#include +#include "libslic3r/Config.hpp" using namespace Slic3r; namespace fs = boost::filesystem; diff --git a/src/dev-utils/profile_include_dump.cpp b/src/dev-utils/profile_include_dump.cpp index f2486dedfc..6561027f70 100644 --- a/src/dev-utils/profile_include_dump.cpp +++ b/src/dev-utils/profile_include_dump.cpp @@ -11,13 +11,19 @@ #include "libslic3r/Utils.hpp" #include +#include +#include #include #include "nlohmann/json.hpp" #include +#include +#include #include +#include "libslic3r/Config.hpp" #include #include +#include #include #include diff --git a/src/libslic3r/AABBMesh.cpp b/src/libslic3r/AABBMesh.cpp index be026f69d7..bcd34546ed 100644 --- a/src/libslic3r/AABBMesh.cpp +++ b/src/libslic3r/AABBMesh.cpp @@ -1,10 +1,19 @@ #include "AABBMesh.hpp" +#include "Point.hpp" +#include #include +#include +#include +#include +#include +#include #include #include +#include #include +#include #ifdef SLIC3R_HOLE_RAYCASTER #include diff --git a/src/libslic3r/AABBMesh.hpp b/src/libslic3r/AABBMesh.hpp index 9998f504b5..c9195b2105 100644 --- a/src/libslic3r/AABBMesh.hpp +++ b/src/libslic3r/AABBMesh.hpp @@ -1,6 +1,10 @@ #ifndef PRUSASLICER_AABBMESH_H #define PRUSASLICER_AABBMESH_H +#include +#include +#include +#include #include #include diff --git a/src/libslic3r/AABBTreeIndirect.hpp b/src/libslic3r/AABBTreeIndirect.hpp index 483ca8efc4..5fd83e0be9 100644 --- a/src/libslic3r/AABBTreeIndirect.hpp +++ b/src/libslic3r/AABBTreeIndirect.hpp @@ -6,15 +6,20 @@ #ifndef slic3r_AABBTreeIndirect_hpp_ #define slic3r_AABBTreeIndirect_hpp_ +#include #include +#include +#include #include #include +#include #include #include #include "BoundingBox.hpp" #include "Utils.hpp" // for next_highest_power_of_2() +#include "libslic3r.h" // Definition of the ray intersection hit structure. #include diff --git a/src/libslic3r/AABBTreeLines.hpp b/src/libslic3r/AABBTreeLines.hpp index 52c4cdf545..957627ab9b 100644 --- a/src/libslic3r/AABBTreeLines.hpp +++ b/src/libslic3r/AABBTreeLines.hpp @@ -6,9 +6,15 @@ #include "libslic3r.h" #include "libslic3r/AABBTreeIndirect.hpp" #include "libslic3r/Line.hpp" +#include #include +#include #include +#include +#include +#include #include +#include #include namespace Slic3r { @@ -352,7 +358,7 @@ namespace AABBTreeLines { return dist; } - std::vector all_lines_in_radius(const Vec& point, Floating radius) + std::vector all_lines_in_radius(const Vec& point, Floating radius) const { return AABBTreeLines::all_lines_in_radius(this->lines, this->tree, point.template cast(), radius * radius); } diff --git a/src/libslic3r/AStar.hpp b/src/libslic3r/AStar.hpp index a7d9e7b8f9..e79295c503 100644 --- a/src/libslic3r/AStar.hpp +++ b/src/libslic3r/AStar.hpp @@ -1,7 +1,11 @@ #ifndef ASTAR_HPP #define ASTAR_HPP +#include #include // std::isinf() is here +#include +#include +#include #include #include "libslic3r/MutablePriorityQueue.hpp" diff --git a/src/libslic3r/Algorithm/LineSplit.cpp b/src/libslic3r/Algorithm/LineSplit.cpp index d91514dbf9..789ca39be6 100644 --- a/src/libslic3r/Algorithm/LineSplit.cpp +++ b/src/libslic3r/Algorithm/LineSplit.cpp @@ -1,8 +1,20 @@ #include "LineSplit.hpp" #include "AABBTreeLines.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/ClipperZUtils.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExPolygon.hpp" #include "SVG.hpp" #include "Utils.hpp" +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include //#define DEBUG_SPLIT_LINE diff --git a/src/libslic3r/Algorithm/LineSplit.hpp b/src/libslic3r/Algorithm/LineSplit.hpp index 80f64e684c..098ff72d09 100644 --- a/src/libslic3r/Algorithm/LineSplit.hpp +++ b/src/libslic3r/Algorithm/LineSplit.hpp @@ -2,6 +2,12 @@ #define SRC_LIBSLIC3R_ALGORITHM_LINE_SPLIT_HPP_ #include "ClipperZUtils.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include +#include +#include +#include "libslic3r/ExPolygon.hpp" namespace Slic3r { namespace Algorithm { diff --git a/src/libslic3r/Algorithm/RegionExpansion.cpp b/src/libslic3r/Algorithm/RegionExpansion.cpp index 2cfb15ce6d..a4558a3939 100644 --- a/src/libslic3r/Algorithm/RegionExpansion.cpp +++ b/src/libslic3r/Algorithm/RegionExpansion.cpp @@ -1,11 +1,25 @@ #include "RegionExpansion.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Polygon.hpp" +#include +#include +#include +#include +#include +#include #include #include #include #include +#include #include +#include +#include namespace Slic3r { namespace Algorithm { diff --git a/src/libslic3r/Algorithm/RegionExpansion.hpp b/src/libslic3r/Algorithm/RegionExpansion.hpp index a3e5ddaa38..b493b72d5c 100644 --- a/src/libslic3r/Algorithm/RegionExpansion.hpp +++ b/src/libslic3r/Algorithm/RegionExpansion.hpp @@ -1,10 +1,12 @@ #ifndef SRC_LIBSLIC3R_ALGORITHM_REGION_EXPANSION_HPP_ #define SRC_LIBSLIC3R_ALGORITHM_REGION_EXPANSION_HPP_ +#include #include #include #include #include +#include namespace Slic3r { namespace Algorithm { diff --git a/src/libslic3r/AnyPtr.hpp b/src/libslic3r/AnyPtr.hpp index c40d10093e..7c0f28b834 100644 --- a/src/libslic3r/AnyPtr.hpp +++ b/src/libslic3r/AnyPtr.hpp @@ -1,6 +1,7 @@ #ifndef ANYPTR_HPP #define ANYPTR_HPP +#include #include #include #include diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 061665fbe6..663072d866 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -1,3 +1,8 @@ +#include "Technologies.hpp" +#include "Config.hpp" +#include "PrintConfig.hpp" +#include "calib.hpp" +#include "Semver.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/Utils.hpp" #include "libslic3r/Format/DRC.hpp" @@ -9,9 +14,18 @@ #include "LocalesUtils.hpp" #include "Thread.hpp" #include "format.hpp" +#include "libslic3r_version.h" #include "nlohmann/json.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 1486cb6f9f..a08c018bb2 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -5,8 +5,11 @@ #include #include #include +#include "LocalesUtils.hpp" #include "nlohmann/json.hpp" #include +#include +#include #include "libslic3r/Config.hpp" #include "libslic3r/Semver.hpp" diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp index 5ade0c9207..119ff8dd99 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp @@ -2,7 +2,9 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "BeadingStrategy.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" +#include namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index d6cb1331c1..242d54e63b 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -12,6 +12,7 @@ #include "DistributedBeadingStrategy.hpp" #include "RedistributeBeadingStrategy.hpp" #include "OuterWallInsetBeadingStrategy.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp index 7234015ae2..966682e054 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/DistributedBeadingStrategy.cpp @@ -6,6 +6,7 @@ #include #include "DistributedBeadingStrategy.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/LimitedBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/LimitedBeadingStrategy.cpp index 24e04c3f26..0c570bf307 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/LimitedBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/LimitedBeadingStrategy.cpp @@ -3,10 +3,12 @@ #include #include +#include #include #include #include "LimitedBeadingStrategy.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" diff --git a/src/libslic3r/Arachne/BeadingStrategy/OuterWallInsetBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/OuterWallInsetBeadingStrategy.cpp index ac9edb1dba..1b7bd7e342 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/OuterWallInsetBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/OuterWallInsetBeadingStrategy.cpp @@ -6,6 +6,7 @@ #include #include +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp index 7307781840..e6a3c337ae 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp @@ -7,6 +7,7 @@ #include #include +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp index ab8b070604..0ceb2d9dd3 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/WideningBeadingStrategy.cpp @@ -4,8 +4,11 @@ #include "WideningBeadingStrategy.hpp" #include +#include #include +#include +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index da5c7357c1..82ca92e090 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -10,10 +10,18 @@ #include #include #include +#include +#include +#include #include #include #include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" #include "libslic3r/Geometry/VoronoiUtils.hpp" #include "ankerl/unordered_dense.h" #include "libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp" diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp b/src/libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp index e0d3fe81d2..9eced8be93 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp @@ -4,10 +4,12 @@ #ifndef SKELETAL_TRAPEZOIDATION_EDGE_H #define SKELETAL_TRAPEZOIDATION_EDGE_H +#include #include // smart pointers #include #include +#include "libslic3r/libslic3r.h" #include "utils/ExtrusionJunction.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp index f7a30c32db..4621a04616 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp @@ -6,11 +6,17 @@ #include #include #include +#include #include #include #include +#include +#include #include "../Line.hpp" +#include "libslic3r/Arachne/utils/HalfEdge.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Arachne/utils/HalfEdgeNode.hpp" #include "libslic3r/Arachne/SkeletalTrapezoidationEdge.hpp" #include "libslic3r/Arachne/SkeletalTrapezoidationJoint.hpp" #include "libslic3r/Point.hpp" diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationJoint.hpp b/src/libslic3r/Arachne/SkeletalTrapezoidationJoint.hpp index 346d511165..3eab9c0916 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationJoint.hpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationJoint.hpp @@ -6,6 +6,7 @@ #include // smart pointers +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/BeadingStrategy/BeadingStrategy.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/WallToolPaths.cpp b/src/libslic3r/Arachne/WallToolPaths.cpp index d1f0341bda..a116674daa 100644 --- a/src/libslic3r/Arachne/WallToolPaths.cpp +++ b/src/libslic3r/Arachne/WallToolPaths.cpp @@ -2,12 +2,31 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include //For std::partition_copy and std::min_element. +#include +#include +#include +#include +#include +#include +#include #include #include "WallToolPaths.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Arachne/utils/ExtrusionLine.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Arachne/utils/PolygonsPointIndex.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.hpp" +#include "libslic3r/Arachne/utils/ExtrusionJunction.hpp" +#include "libslic3r/Arachne/utils/SparsePointGrid.hpp" +#include "libslic3r/Arachne/utils/SquareGrid.hpp" #include "SkeletalTrapezoidation.hpp" #include "../ClipperUtils.hpp" +#include "libslic3r/libslic3r.h" #include "utils/linearAlg2D.hpp" #include "EdgeGrid.hpp" #include "utils/SparseLineGrid.hpp" @@ -17,6 +36,8 @@ #include "Utils.hpp" #include +#include +#include //#define ARACHNE_STITCH_PATCH_DEBUG diff --git a/src/libslic3r/Arachne/WallToolPaths.hpp b/src/libslic3r/Arachne/WallToolPaths.hpp index d7120a088c..cfec7284eb 100644 --- a/src/libslic3r/Arachne/WallToolPaths.hpp +++ b/src/libslic3r/Arachne/WallToolPaths.hpp @@ -4,10 +4,16 @@ #ifndef CURAENGINE_WALLTOOLPATHS_H #define CURAENGINE_WALLTOOLPATHS_H +#include +#include #include #include +#include +#include #include "BeadingStrategy/BeadingStrategyFactory.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" #include "utils/ExtrusionLine.hpp" #include "../Polygon.hpp" #include "../PrintConfig.hpp" diff --git a/src/libslic3r/Arachne/utils/ExtrusionJunction.hpp b/src/libslic3r/Arachne/utils/ExtrusionJunction.hpp index 625bf9b727..aebfd81347 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionJunction.hpp +++ b/src/libslic3r/Arachne/utils/ExtrusionJunction.hpp @@ -6,6 +6,9 @@ #define UTILS_EXTRUSION_JUNCTION_H #include "../../Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index 2beaa4f92f..c1c29c50e9 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -2,11 +2,17 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include +#include #include +#include #include +#include #include "ExtrusionLine.hpp" #include "../../VariableWidth.hpp" +#include "libslic3r/ClipperZUtils.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" #include "libslic3r/Arachne/utils/ExtrusionJunction.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ExtrusionEntity.hpp" diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.hpp b/src/libslic3r/Arachne/utils/ExtrusionLine.hpp index 8b4a753f5e..421f73e0e8 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.hpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.hpp @@ -22,6 +22,7 @@ #include "../../BoundingBox.hpp" #include "../../ExtrusionEntity.hpp" #include "../../Flow.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" namespace Slic3r { diff --git a/src/libslic3r/Arachne/utils/PolygonsPointIndex.hpp b/src/libslic3r/Arachne/utils/PolygonsPointIndex.hpp index 04f017f86a..2ac32b9366 100644 --- a/src/libslic3r/Arachne/utils/PolygonsPointIndex.hpp +++ b/src/libslic3r/Arachne/utils/PolygonsPointIndex.hpp @@ -4,6 +4,9 @@ #ifndef UTILS_POLYGONS_POINT_INDEX_H #define UTILS_POLYGONS_POINT_INDEX_H +#include +#include +#include #include #include "../../Point.hpp" diff --git a/src/libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp b/src/libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp index 3258b41c7d..2df641c085 100644 --- a/src/libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp +++ b/src/libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp @@ -6,7 +6,10 @@ #include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" #include "PolygonsPointIndex.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/PolylineStitcher.cpp b/src/libslic3r/Arachne/utils/PolylineStitcher.cpp index 0abf63ac10..e011e5db51 100644 --- a/src/libslic3r/Arachne/utils/PolylineStitcher.cpp +++ b/src/libslic3r/Arachne/utils/PolylineStitcher.cpp @@ -4,6 +4,7 @@ #include "PolylineStitcher.hpp" #include "ExtrusionLine.hpp" +#include "libslic3r/Point.hpp" #include "libslic3r/Arachne/utils/PolygonsPointIndex.hpp" #include "libslic3r/Polygon.hpp" diff --git a/src/libslic3r/Arachne/utils/SparseGrid.hpp b/src/libslic3r/Arachne/utils/SparseGrid.hpp index 45876fb9a7..ce5bac81bc 100644 --- a/src/libslic3r/Arachne/utils/SparseGrid.hpp +++ b/src/libslic3r/Arachne/utils/SparseGrid.hpp @@ -6,11 +6,14 @@ #define UTILS_SPARSE_GRID_H #include +#include +#include #include #include #include "../../Point.hpp" #include "SquareGrid.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/SparseLineGrid.hpp b/src/libslic3r/Arachne/utils/SparseLineGrid.hpp index 0b38988f92..be3c430749 100644 --- a/src/libslic3r/Arachne/utils/SparseLineGrid.hpp +++ b/src/libslic3r/Arachne/utils/SparseLineGrid.hpp @@ -6,10 +6,15 @@ #define UTILS_SPARSE_LINE_GRID_H #include +#include +#include +#include #include #include +#include "libslic3r/Point.hpp" #include "SparseGrid.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/SparsePointGrid.hpp b/src/libslic3r/Arachne/utils/SparsePointGrid.hpp index 127380b3eb..ba1898a0ae 100644 --- a/src/libslic3r/Arachne/utils/SparsePointGrid.hpp +++ b/src/libslic3r/Arachne/utils/SparsePointGrid.hpp @@ -6,9 +6,13 @@ #define UTILS_SPARSE_POINT_GRID_H #include +#include +#include #include +#include "libslic3r/Point.hpp" #include "SparseGrid.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/SquareGrid.cpp b/src/libslic3r/Arachne/utils/SquareGrid.cpp index 1af9910426..dcbd018f1b 100644 --- a/src/libslic3r/Arachne/utils/SquareGrid.cpp +++ b/src/libslic3r/Arachne/utils/SquareGrid.cpp @@ -4,7 +4,11 @@ #include "SquareGrid.hpp" #include +#include +#include +#include +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" using namespace Slic3r::Arachne; diff --git a/src/libslic3r/Arachne/utils/linearAlg2D.hpp b/src/libslic3r/Arachne/utils/linearAlg2D.hpp index 599d3fa835..632032da8f 100644 --- a/src/libslic3r/Arachne/utils/linearAlg2D.hpp +++ b/src/libslic3r/Arachne/utils/linearAlg2D.hpp @@ -5,6 +5,9 @@ #define UTILS_LINEAR_ALG_2D_H #include "../../Point.hpp" +#include +#include +#include namespace Slic3r::Arachne::LinearAlg2D { diff --git a/src/libslic3r/ArcFitter.cpp b/src/libslic3r/ArcFitter.cpp index 46dd12931e..8bd1bc4fe6 100644 --- a/src/libslic3r/ArcFitter.cpp +++ b/src/libslic3r/ArcFitter.cpp @@ -1,8 +1,14 @@ #include "ArcFitter.hpp" +#include "Point.hpp" +#include "Circle.hpp" +#include "MultiPoint.hpp" #include "Polyline.hpp" +#include "libslic3r.h" #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ArcFitter.hpp b/src/libslic3r/ArcFitter.hpp index f2b2ee49d8..03d38abc85 100644 --- a/src/libslic3r/ArcFitter.hpp +++ b/src/libslic3r/ArcFitter.hpp @@ -2,6 +2,9 @@ #define slic3r_ArcFitter_hpp_ #include "Circle.hpp" +#include +#include "Point.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index 9020aba8ba..8a2cace499 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -1,9 +1,28 @@ #include "Arrange.hpp" +#include "ExPolygon.hpp" +#include "Point.hpp" #include "Print.hpp" #include "BoundingBox.hpp" +#include "PrintConfig.hpp" #include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include "libnest2d/common.hpp" +#include "libnest2d/geometry_traits_nfp.hpp" +#include "libnest2d/nester.hpp" +#include "libnest2d/geometry_traits.hpp" #include #include #include @@ -13,6 +32,11 @@ #include #include +#include +#include +#include +#include +#include #if defined(_MSC_VER) && defined(__clang__) #define BOOST_NO_CXX17_HDR_STRING_VIEW diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index ad125aee7d..ea89640a7b 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -2,8 +2,17 @@ #define ARRANGE_HPP #include "ExPolygon.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "PrintConfig.hpp" #include "Print.hpp" +#include +#include "libslic3r.h" +#include +#include +#include +#include +#include #define BED_SHRINK_SEQ_PRINT 5 diff --git a/src/libslic3r/BoundingBox.cpp b/src/libslic3r/BoundingBox.cpp index cf5441dace..dc4f461dc7 100644 --- a/src/libslic3r/BoundingBox.cpp +++ b/src/libslic3r/BoundingBox.cpp @@ -1,5 +1,8 @@ #include "BoundingBox.hpp" +#include "Point.hpp" #include "Polygon.hpp" +#include "libslic3r.h" +#include #include #include diff --git a/src/libslic3r/BoundingBox.hpp b/src/libslic3r/BoundingBox.hpp index 8aac3f1cb9..03f6a8f9bb 100644 --- a/src/libslic3r/BoundingBox.hpp +++ b/src/libslic3r/BoundingBox.hpp @@ -5,7 +5,10 @@ #include "Exception.hpp" #include "Point.hpp" #include "Polygon.hpp" +#include +#include #include +#include namespace Slic3r { diff --git a/src/libslic3r/BridgeDetector.cpp b/src/libslic3r/BridgeDetector.cpp index 321e066a8a..ad1b8bb6fb 100644 --- a/src/libslic3r/BridgeDetector.cpp +++ b/src/libslic3r/BridgeDetector.cpp @@ -1,7 +1,18 @@ #include "BridgeDetector.hpp" +#include "BoundingBox.hpp" #include "ClipperUtils.hpp" +#include "ExPolygon.hpp" #include "Geometry.hpp" +#include "libslic3r.h" +#include "Polygon.hpp" +#include "Line.hpp" +#include "Polyline.hpp" +#include "Point.hpp" #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/BridgeDetector.hpp b/src/libslic3r/BridgeDetector.hpp index 1e5bb1a101..85982ed91c 100644 --- a/src/libslic3r/BridgeDetector.hpp +++ b/src/libslic3r/BridgeDetector.hpp @@ -9,7 +9,14 @@ #include "PrincipalComponents2D.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" +#include +#include +#include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index 8ba4dfb596..f48723cfef 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -1,18 +1,37 @@ +#include "BoundingBox.hpp" +#include "BrimEarsPoint.hpp" #include "ClipperUtils.hpp" #include "EdgeGrid.hpp" +#include "ExPolygon.hpp" +#include "Flow.hpp" +#include "Geometry.hpp" +#include "ExtrusionEntity.hpp" #include "Layer.hpp" +#include "Point.hpp" +#include "ObjectID.hpp" +#include "Polygon.hpp" +#include "Line.hpp" +#include "MultiPoint.hpp" +#include "Polyline.hpp" #include "Print.hpp" +#include "PrintBase.hpp" #include "ShortestPath.hpp" #include "libslic3r.h" #include "PrintConfig.hpp" #include "MaterialType.hpp" #include "Model.hpp" #include +#include +#include #include #include +#include +#include #include #include +#include +#include #ifndef NDEBUG // #define BRIM_DEBUG_TO_SVG diff --git a/src/libslic3r/Brim.hpp b/src/libslic3r/Brim.hpp index 0603af20cc..9279b1e023 100644 --- a/src/libslic3r/Brim.hpp +++ b/src/libslic3r/Brim.hpp @@ -4,8 +4,10 @@ #include "ExPolygon.hpp" #include "ObjectID.hpp" #include "Point.hpp" +#include "Polygon.hpp" #include +#include #include namespace Slic3r { diff --git a/src/libslic3r/BrimEarsPoint.hpp b/src/libslic3r/BrimEarsPoint.hpp index a859d54f23..020b03475a 100644 --- a/src/libslic3r/BrimEarsPoint.hpp +++ b/src/libslic3r/BrimEarsPoint.hpp @@ -1,7 +1,10 @@ #ifndef BRIMEARSPOINT_HPP #define BRIMEARSPOINT_HPP +#include +#include "libslic3r.h" #include +#include namespace Slic3r { diff --git a/src/libslic3r/BuildVolume.cpp b/src/libslic3r/BuildVolume.cpp index 15e6668bae..eb5a447249 100644 --- a/src/libslic3r/BuildVolume.cpp +++ b/src/libslic3r/BuildVolume.cpp @@ -1,11 +1,24 @@ #include "BuildVolume.hpp" +#include "BoundingBox.hpp" #include "ClipperUtils.hpp" +#include "Polygon.hpp" +#include "Geometry/Circle.hpp" +#include "ExtrusionEntity.hpp" #include "TriangleMesh.hpp" #include "Geometry/ConvexHull.hpp" #include "GCode/GCodeProcessor.hpp" #include "Point.hpp" +#include "libslic3r.h" +#include #include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/BuildVolume.hpp b/src/libslic3r/BuildVolume.hpp index 6f53fdd704..8c53242fe8 100644 --- a/src/libslic3r/BuildVolume.hpp +++ b/src/libslic3r/BuildVolume.hpp @@ -5,9 +5,13 @@ #include "Geometry/Circle.hpp" #include "Polygon.hpp" #include "BoundingBox.hpp" +#include "libslic3r.h" #include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/CadDocument.cpp b/src/libslic3r/CAD/CadDocument.cpp index ea20ffd966..b4a89f6a69 100644 --- a/src/libslic3r/CAD/CadDocument.cpp +++ b/src/libslic3r/CAD/CadDocument.cpp @@ -1,8 +1,14 @@ #include "libslic3r/CAD/CadDocument.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/CAD/SketchEngine.hpp" +#include "libslic3r/CAD/GeometryEngine.hpp" #include "libslic3r/CAD/SketchConstraints.hpp" #include "libslic3r/CAD/SketchSolver.hpp" #include "libslic3r/CAD/SketchImport.hpp" // transform_regions for imported art +#include +#include +#include #include #include @@ -26,6 +32,10 @@ #include #include #include +#include +#include +#include +#include #include #include #include @@ -69,12 +79,18 @@ #include #include #include +#include +#include +#include #include #include #include #include #include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/CadDocument.hpp b/src/libslic3r/CAD/CadDocument.hpp index f62536384a..216be818bd 100644 --- a/src/libslic3r/CAD/CadDocument.hpp +++ b/src/libslic3r/CAD/CadDocument.hpp @@ -1,16 +1,20 @@ #ifndef slic3r_CadDocument_hpp_ #define slic3r_CadDocument_hpp_ +#include "libslic3r/Point.hpp" #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/CAD/SketchEngine.hpp" #include "libslic3r/CAD/GeometryEngine.hpp" // FaceGroup #include "libslic3r/Color.hpp" // ColorRGBA (per-body display colour override) +#include #include #include #include #include #include +#include +#include #include #include #include diff --git a/src/libslic3r/CAD/GeometryEngine.cpp b/src/libslic3r/CAD/GeometryEngine.cpp index 2b923938c2..1e5896e67a 100644 --- a/src/libslic3r/CAD/GeometryEngine.cpp +++ b/src/libslic3r/CAD/GeometryEngine.cpp @@ -1,12 +1,25 @@ #include "libslic3r/CAD/GeometryEngine.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" #include #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include #include #include @@ -43,6 +56,9 @@ #include #include #include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/GeometryEngine.hpp b/src/libslic3r/CAD/GeometryEngine.hpp index f27a0f2f17..6c0fb51daf 100644 --- a/src/libslic3r/CAD/GeometryEngine.hpp +++ b/src/libslic3r/CAD/GeometryEngine.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_GeometryEngine_hpp_ #define slic3r_GeometryEngine_hpp_ +#include "libslic3r/Point.hpp" #include "libslic3r/TriangleMesh.hpp" #include @@ -8,6 +9,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/src/libslic3r/CAD/SketchConstraints.cpp b/src/libslic3r/CAD/SketchConstraints.cpp index 003afb4d63..acc82a0e42 100644 --- a/src/libslic3r/CAD/SketchConstraints.cpp +++ b/src/libslic3r/CAD/SketchConstraints.cpp @@ -1,6 +1,11 @@ #include "libslic3r/CAD/SketchConstraints.hpp" +#include "libslic3r/Point.hpp" +#include #include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/SketchConstraints.hpp b/src/libslic3r/CAD/SketchConstraints.hpp index 88bcadc403..10c3efacc4 100644 --- a/src/libslic3r/CAD/SketchConstraints.hpp +++ b/src/libslic3r/CAD/SketchConstraints.hpp @@ -2,6 +2,7 @@ #define slic3r_SketchConstraints_hpp_ #include "libslic3r/Point.hpp" +#include #include #include diff --git a/src/libslic3r/CAD/SketchEngine.cpp b/src/libslic3r/CAD/SketchEngine.cpp index 5cc36ce648..ba92fa88bb 100644 --- a/src/libslic3r/CAD/SketchEngine.cpp +++ b/src/libslic3r/CAD/SketchEngine.cpp @@ -1,7 +1,18 @@ #include "libslic3r/CAD/SketchEngine.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include @@ -47,8 +58,11 @@ #include #include #include +#include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/SketchImport.cpp b/src/libslic3r/CAD/SketchImport.cpp index 7140776603..32bcc608d3 100644 --- a/src/libslic3r/CAD/SketchImport.cpp +++ b/src/libslic3r/CAD/SketchImport.cpp @@ -1,5 +1,8 @@ #include "libslic3r/CAD/SketchImport.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/EmbossShape.hpp" #include "libslic3r/Emboss.hpp" #include "libslic3r/NSVGUtils.hpp" #include "libslic3r/ExPolygon.hpp" @@ -9,6 +12,11 @@ #include #include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/SketchInference.cpp b/src/libslic3r/CAD/SketchInference.cpp index cfeb2cd509..eca56ee5c1 100644 --- a/src/libslic3r/CAD/SketchInference.cpp +++ b/src/libslic3r/CAD/SketchInference.cpp @@ -1,7 +1,13 @@ #include "libslic3r/CAD/SketchInference.hpp" +#include "libslic3r/CAD/SketchEngine.hpp" +#include "libslic3r/Point.hpp" #include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/SketchInference.hpp b/src/libslic3r/CAD/SketchInference.hpp index be51f0240e..eb30af184a 100644 --- a/src/libslic3r/CAD/SketchInference.hpp +++ b/src/libslic3r/CAD/SketchInference.hpp @@ -1,7 +1,9 @@ #ifndef slic3r_SketchInference_hpp_ #define slic3r_SketchInference_hpp_ +#include "libslic3r/Point.hpp" #include "libslic3r/CAD/SketchEngine.hpp" +#include #include #include #include diff --git a/src/libslic3r/CAD/SketchSolver.cpp b/src/libslic3r/CAD/SketchSolver.cpp index 952f9de16f..03033d061e 100644 --- a/src/libslic3r/CAD/SketchSolver.cpp +++ b/src/libslic3r/CAD/SketchSolver.cpp @@ -1,5 +1,7 @@ #include "libslic3r/CAD/SketchSolver.hpp" +#include "libslic3r/CAD/SketchEngine.hpp" +#include #include #include @@ -7,6 +9,8 @@ #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CAD/ThreadStandards.cpp b/src/libslic3r/CAD/ThreadStandards.cpp index 2d113d01e6..11b6b24d8f 100644 --- a/src/libslic3r/CAD/ThreadStandards.cpp +++ b/src/libslic3r/CAD/ThreadStandards.cpp @@ -1,4 +1,6 @@ #include "libslic3r/CAD/ThreadStandards.hpp" +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CSGMesh/CSGMesh.hpp b/src/libslic3r/CSGMesh/CSGMesh.hpp index ea16eae52a..bb5060b0d3 100644 --- a/src/libslic3r/CSGMesh/CSGMesh.hpp +++ b/src/libslic3r/CSGMesh/CSGMesh.hpp @@ -2,7 +2,11 @@ #define CSGMESH_HPP #include +#include +#include #include +#include +#include namespace Slic3r { namespace csg { diff --git a/src/libslic3r/CSGMesh/CSGMeshCopy.hpp b/src/libslic3r/CSGMesh/CSGMeshCopy.hpp index 78800f9bbb..f00b24b535 100644 --- a/src/libslic3r/CSGMesh/CSGMeshCopy.hpp +++ b/src/libslic3r/CSGMesh/CSGMeshCopy.hpp @@ -1,7 +1,11 @@ #ifndef CSGMESHCOPY_HPP #define CSGMESHCOPY_HPP +#include "libslic3r/AnyPtr.hpp" #include "CSGMesh.hpp" +#include "libslic3r/libslic3r.h" +#include +#include namespace Slic3r { namespace csg { diff --git a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp index 5963b29109..2dcd2eef2e 100644 --- a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp +++ b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp @@ -3,9 +3,13 @@ #include "CSGMesh.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/SLA/Hollowing.hpp" #include "libslic3r/MeshSplitImpl.hpp" +#include +#include namespace Slic3r { namespace csg { diff --git a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp index df4a603382..091621ab84 100644 --- a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp +++ b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp @@ -1,11 +1,17 @@ #ifndef PERFORMCSGMESHBOOLEANS_HPP #define PERFORMCSGMESHBOOLEANS_HPP +#include #include +#include +#include #include +#include + #include "CSGMesh.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Execution/ExecutionTBB.hpp" //#include "libslic3r/Execution/ExecutionSeq.hpp" #include "libslic3r/MeshBoolean.hpp" diff --git a/src/libslic3r/CSGMesh/SliceCSGMesh.hpp b/src/libslic3r/CSGMesh/SliceCSGMesh.hpp index 9d7b9a077d..165e9af2b6 100644 --- a/src/libslic3r/CSGMesh/SliceCSGMesh.hpp +++ b/src/libslic3r/CSGMesh/SliceCSGMesh.hpp @@ -3,8 +3,16 @@ #include "CSGMesh.hpp" +#include +#include +#include #include +#include +#include +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Execution/Execution.hpp" #include "libslic3r/TriangleMeshSlicer.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Execution/ExecutionTBB.hpp" diff --git a/src/libslic3r/CSGMesh/TriangleMeshAdapter.hpp b/src/libslic3r/CSGMesh/TriangleMeshAdapter.hpp index 81b05b0463..d5586823fb 100644 --- a/src/libslic3r/CSGMesh/TriangleMeshAdapter.hpp +++ b/src/libslic3r/CSGMesh/TriangleMeshAdapter.hpp @@ -3,6 +3,7 @@ #include "CSGMesh.hpp" +#include "libslic3r/Point.hpp" #include "libslic3r/TriangleMesh.hpp" namespace Slic3r { namespace csg { diff --git a/src/libslic3r/Channel.hpp b/src/libslic3r/Channel.hpp index 68369af638..8ed9da9a88 100644 --- a/src/libslic3r/Channel.hpp +++ b/src/libslic3r/Channel.hpp @@ -1,6 +1,9 @@ #ifndef slic3r_Channel_hpp_ #define slic3r_Channel_hpp_ +#include +#include +#include #include #include #include diff --git a/src/libslic3r/Circle.cpp b/src/libslic3r/Circle.cpp index c277a67795..8d09ba8f89 100644 --- a/src/libslic3r/Circle.cpp +++ b/src/libslic3r/Circle.cpp @@ -2,8 +2,14 @@ #include #include +#include +#include +#include #include "Geometry.hpp" +#include "Point.hpp" +#include "Line.hpp" #include "Polygon.hpp" +#include "libslic3r.h" //BBS: Refer to ArcWelderLib for the arc fitting functions diff --git a/src/libslic3r/Circle.hpp b/src/libslic3r/Circle.hpp index c06b197e19..388c7488ea 100644 --- a/src/libslic3r/Circle.hpp +++ b/src/libslic3r/Circle.hpp @@ -3,6 +3,8 @@ #include "Point.hpp" #include "Line.hpp" +#include "libslic3r.h" +#include namespace Slic3r { diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index 88be185f8c..d80936515e 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -1,14 +1,29 @@ #include #include +#include +#include +#include +#include +#include #include #include #include #include "ClipperUtils.hpp" +#include "BoundingBox.hpp" +#include "ExPolygon.hpp" #include "Geometry.hpp" +#include "Point.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" +#include "Line.hpp" #include "ShortestPath.hpp" +#include "libslic3r.h" +#include "Surface.hpp" #include +#include +#include // #define CLIPPER_UTILS_DEBUG diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index 5f05c8e3c4..00cf60076b 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -1,10 +1,17 @@ #ifndef slic3r_ClipperUtils_hpp_ #define slic3r_ClipperUtils_hpp_ +#include "Point.hpp" +#include "Polyline.hpp" +#include "Line.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" #include "Polygon.hpp" #include "Surface.hpp" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ClipperZUtils.cpp b/src/libslic3r/ClipperZUtils.cpp index f7a4b79b0d..a07f40dc4a 100644 --- a/src/libslic3r/ClipperZUtils.cpp +++ b/src/libslic3r/ClipperZUtils.cpp @@ -1,6 +1,8 @@ #include "ClipperZUtils.hpp" +#include "ClipperUtils.hpp" #include +#include namespace Slic3r { namespace ClipperZUtils { diff --git a/src/libslic3r/ClipperZUtils.hpp b/src/libslic3r/ClipperZUtils.hpp index 159a4e81b3..781357caa5 100644 --- a/src/libslic3r/ClipperZUtils.hpp +++ b/src/libslic3r/ClipperZUtils.hpp @@ -1,8 +1,13 @@ #ifndef slic3r_ClipperZUtils_hpp_ #define slic3r_ClipperZUtils_hpp_ +#include "libslic3r.h" +#include +#include +#include #include #include +#include #include #include diff --git a/src/libslic3r/Color.cpp b/src/libslic3r/Color.cpp index d7208d40fc..bb08b7c75b 100644 --- a/src/libslic3r/Color.cpp +++ b/src/libslic3r/Color.cpp @@ -1,7 +1,15 @@ #include "libslic3r.h" #include "Color.hpp" +#include +#include +#include +#include +#include +#include #include +#include +#include static const float INV_255 = 1.0f / 255.0f; diff --git a/src/libslic3r/ColorDecomposeRecipe.cpp b/src/libslic3r/ColorDecomposeRecipe.cpp index f2ceb1860a..6aa09f01d2 100644 --- a/src/libslic3r/ColorDecomposeRecipe.cpp +++ b/src/libslic3r/ColorDecomposeRecipe.cpp @@ -9,7 +9,9 @@ #include #include #include +#include #include +#include namespace Slic3r { namespace { diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index df2030b575..cac46d7108 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -1,4 +1,6 @@ #include "Config.hpp" +#include "Exception.hpp" +#include "Point.hpp" #include "format.hpp" #include "Utils.hpp" #include "LocalesUtils.hpp" @@ -6,7 +8,20 @@ #include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -26,8 +41,15 @@ #include #include #include +#include #include +#include +#include +#include +#include //BBS: add json support +#include "libslic3r.h" +#include "libslic3r_version.h" #include "nlohmann/json.hpp" using namespace nlohmann; @@ -849,19 +871,6 @@ ConfigSubstitutions ConfigBase::load_from_json(const std::string &file, ForwardC return std::move(substitutions_ctxt.substitutions); } -// Case-insensitive compare of a JSON key against a fixed ASCII one, without -// boost::iequals, whose std::locale() takes a lock the whole process shares in the -// MSVC runtime. -static bool ascii_iequals(const std::string &key, const char *literal) -{ - auto lower = [](char c) { return (c >= 'A' && c <= 'Z') ? char(c - 'A' + 'a') : c; }; - size_t i = 0; - for (; i < key.size() && literal[i] != '\0'; ++ i) - if (lower(key[i]) != lower(literal[i])) - return false; - return i == key.size() && literal[i] == '\0'; -} - int ConfigBase::load_from_json(const std::string &file, ConfigSubstitutionContext& substitution_context, bool load_inherits_to_config, std::map& key_values, std::string& reason) { json j; diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 9818887c1d..9d76262ec6 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -3,6 +3,11 @@ #include #include +#include +#include +#include +#include +#include #include #include #include @@ -10,10 +15,15 @@ #include #include #include +#include #include +#include +#include #include #include +#include #include +#include "LocalesUtils.hpp" #include "libslic3r.h" #include "clonable_ptr.hpp" #include "Exception.hpp" diff --git a/src/libslic3r/ContourZ.cpp b/src/libslic3r/ContourZ.cpp index f4a5fc049a..8751bcca58 100644 --- a/src/libslic3r/ContourZ.cpp +++ b/src/libslic3r/ContourZ.cpp @@ -2,14 +2,18 @@ #include "ExtrusionEntity.hpp" #include "ExtrusionEntityCollection.hpp" #include "Layer.hpp" +#include "Line.hpp" #include "Point.hpp" #include "Print.hpp" #include "SLA/IndexedMesh.hpp" #include "libslic3r.h" +#include #include #include #include +#include #include +#include namespace Slic3r { diff --git a/src/libslic3r/CustomGCode.cpp b/src/libslic3r/CustomGCode.cpp index acd7089c05..a78bc2a111 100644 --- a/src/libslic3r/CustomGCode.cpp +++ b/src/libslic3r/CustomGCode.cpp @@ -2,6 +2,10 @@ #include "Config.hpp" #include "GCode.hpp" #include "GCodeWriter.hpp" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CustomGCode.hpp b/src/libslic3r/CustomGCode.hpp index 7d8c7d9982..a4ed244dc5 100644 --- a/src/libslic3r/CustomGCode.hpp +++ b/src/libslic3r/CustomGCode.hpp @@ -1,7 +1,10 @@ #ifndef slic3r_CustomGCode_hpp_ #define slic3r_CustomGCode_hpp_ +#include +#include #include +#include #include #include diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp index dbf737e3ed..8967f6c2ba 100644 --- a/src/libslic3r/CutSurface.cpp +++ b/src/libslic3r/CutSurface.cpp @@ -1,4 +1,38 @@ #include "CutSurface.hpp" +#include "libslic3r/Emboss.hpp" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/ExPolygon.hpp" +#include +#include +#include +#include +#include "libslic3r/BoundingBox.hpp" +#include +#include "libslic3r/Polygon.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/AABBTreeIndirect.hpp" +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include /// models_input.obj - Check transormation of model to each others /// projection_center.obj - circle representing center of projection with correct distance diff --git a/src/libslic3r/CutSurface.hpp b/src/libslic3r/CutSurface.hpp index 9f4e3159cf..33b0d88697 100644 --- a/src/libslic3r/CutSurface.hpp +++ b/src/libslic3r/CutSurface.hpp @@ -1,6 +1,8 @@ #ifndef slic3r_CutSurface_hpp_ #define slic3r_CutSurface_hpp_ +#include "libslic3r/BoundingBox.hpp" +#include #include #include // indexed_triangle_set #include "ExPolygon.hpp" diff --git a/src/libslic3r/CutUtils.cpp b/src/libslic3r/CutUtils.cpp index f8b1483773..e5cb3cc6f1 100644 --- a/src/libslic3r/CutUtils.cpp +++ b/src/libslic3r/CutUtils.cpp @@ -1,13 +1,24 @@ #include "CutUtils.hpp" #include "Geometry.hpp" +#include "Point.hpp" +#include "TriangleMesh.hpp" #include "libslic3r.h" #include "Model.hpp" #include "TriangleMeshSlicer.hpp" #include "TriangleSelector.hpp" #include "ObjectID.hpp" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/CutUtils.hpp b/src/libslic3r/CutUtils.hpp index b7f31d7b9a..37f30308b6 100644 --- a/src/libslic3r/CutUtils.hpp +++ b/src/libslic3r/CutUtils.hpp @@ -5,6 +5,7 @@ #include "Point.hpp" #include "Model.hpp" +#include #include namespace Slic3r { diff --git a/src/libslic3r/EdgeGrid.cpp b/src/libslic3r/EdgeGrid.cpp index 93bf7d48ec..c6e003505a 100644 --- a/src/libslic3r/EdgeGrid.cpp +++ b/src/libslic3r/EdgeGrid.cpp @@ -1,10 +1,21 @@ #include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include "Polygon.hpp" +#include "Point.hpp" +#include "Polyline.hpp" +#include "ExPolygon.hpp" +#include "Line.hpp" #include "libslic3r.h" #include "ClipperUtils.hpp" #include "EdgeGrid.hpp" diff --git a/src/libslic3r/EdgeGrid.hpp b/src/libslic3r/EdgeGrid.hpp index 6bbed1e9fa..971d23ead6 100644 --- a/src/libslic3r/EdgeGrid.hpp +++ b/src/libslic3r/EdgeGrid.hpp @@ -1,12 +1,24 @@ #ifndef slic3r_EdgeGrid_hpp_ #define slic3r_EdgeGrid_hpp_ +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include "Line.hpp" #include "Point.hpp" #include "BoundingBox.hpp" #include "ExPolygon.hpp" +#include "libslic3r.h" +#include "Polygon.hpp" +#include "Polyline.hpp" namespace Slic3r { namespace EdgeGrid { diff --git a/src/libslic3r/ElephantFootCompensation.cpp b/src/libslic3r/ElephantFootCompensation.cpp index aaf18608ee..40b856ee4b 100644 --- a/src/libslic3r/ElephantFootCompensation.cpp +++ b/src/libslic3r/ElephantFootCompensation.cpp @@ -1,3 +1,6 @@ +#include "Point.hpp" +#include "BoundingBox.hpp" +#include "Polygon.hpp" #include "libslic3r.h" #include "ClipperUtils.hpp" #include "EdgeGrid.hpp" @@ -8,8 +11,14 @@ #include "SVG.hpp" #include "Utils.hpp" +#include #include #include +#include +#include +#include +#include +#include // #define CONTOUR_DISTANCE_DEBUG_SVG diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index 80a9274fd0..ae13cbf54e 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -1,12 +1,35 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include "Emboss.hpp" +#include #include #include #include #include #include #include // union_ex + for boldness(polygon extend(offset)) +#include "ExPolygon.hpp" +#include +#include "AABBTreeIndirect.hpp" +#include +#include "EmbossShape.hpp" +#include #include "IntersectionPoints.hpp" +#include "Polygon.hpp" +#include "TextConfiguration.hpp" +#include "Point.hpp" #define STB_TRUETYPE_IMPLEMENTATION // force following include to generate implementation #include "imgui/imstb_truetype.h" // stbtt_fontinfo diff --git a/src/libslic3r/Emboss.hpp b/src/libslic3r/Emboss.hpp index 2d445fcc6c..9b7beafec7 100644 --- a/src/libslic3r/Emboss.hpp +++ b/src/libslic3r/Emboss.hpp @@ -1,11 +1,19 @@ #ifndef slic3r_Emboss_hpp_ #define slic3r_Emboss_hpp_ +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include // indexed_triangle_set +#include "Point.hpp" #include "Polygon.hpp" #include "ExPolygon.hpp" #include "EmbossShape.hpp" // ExPolygonsWithIds diff --git a/src/libslic3r/EmbossShape.hpp b/src/libslic3r/EmbossShape.hpp index 3e4a950037..490844bdef 100644 --- a/src/libslic3r/EmbossShape.hpp +++ b/src/libslic3r/EmbossShape.hpp @@ -9,9 +9,11 @@ #include #include #include +#include #include "Point.hpp" // Transform3d #include "ExPolygon.hpp" #include "ExPolygonSerialize.hpp" +#include "libslic3r.h" #include "nanosvg/nanosvg.h" // NSVGimage namespace Slic3r { diff --git a/src/libslic3r/ExPolygon.cpp b/src/libslic3r/ExPolygon.cpp index 185e925084..f34b07b7cb 100644 --- a/src/libslic3r/ExPolygon.cpp +++ b/src/libslic3r/ExPolygon.cpp @@ -2,13 +2,23 @@ #include "ExPolygon.hpp" #include "Exception.hpp" #include "Geometry/MedialAxis.hpp" +#include "Point.hpp" +#include "MultiPoint.hpp" #include "Polygon.hpp" #include "Line.hpp" #include "ClipperUtils.hpp" +#include "Polyline.hpp" #include "SVG.hpp" +#include "libslic3r.h" #include #include +#include +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp index ce7ebe892f..d695171d1e 100644 --- a/src/libslic3r/ExPolygon.hpp +++ b/src/libslic3r/ExPolygon.hpp @@ -1,10 +1,17 @@ #ifndef slic3r_ExPolygon_hpp_ #define slic3r_ExPolygon_hpp_ +#include "Line.hpp" #include "Point.hpp" #include "libslic3r.h" #include "Polygon.hpp" #include "Polyline.hpp" +#include +#include +#include +#include +#include +#include #include namespace Slic3r { diff --git a/src/libslic3r/ExPolygonCollection.hpp b/src/libslic3r/ExPolygonCollection.hpp index 35e1eef4eb..ecef053ebc 100644 --- a/src/libslic3r/ExPolygonCollection.hpp +++ b/src/libslic3r/ExPolygonCollection.hpp @@ -1,10 +1,13 @@ #ifndef slic3r_ExPolygonCollection_hpp_ #define slic3r_ExPolygonCollection_hpp_ +#include "Point.hpp" +#include "Polygon.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" #include "Line.hpp" #include "Polyline.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/ExPolygonSerialize.hpp b/src/libslic3r/ExPolygonSerialize.hpp index 712d4706d5..58d12093e6 100644 --- a/src/libslic3r/ExPolygonSerialize.hpp +++ b/src/libslic3r/ExPolygonSerialize.hpp @@ -3,6 +3,7 @@ #include "ExPolygon.hpp" #include "Point.hpp" // Cereal serialization of Point +#include "Polygon.hpp" #include #include diff --git a/src/libslic3r/ExPolygonsIndex.cpp b/src/libslic3r/ExPolygonsIndex.cpp index 976531799f..296d43a198 100644 --- a/src/libslic3r/ExPolygonsIndex.cpp +++ b/src/libslic3r/ExPolygonsIndex.cpp @@ -1,4 +1,10 @@ #include "ExPolygonsIndex.hpp" +#include "ExPolygon.hpp" +#include +#include +#include +#include +#include using namespace Slic3r; // IMPROVE: use one dimensional vector for polygons offset with searching by std::lower_bound diff --git a/src/libslic3r/ExPolygonsIndex.hpp b/src/libslic3r/ExPolygonsIndex.hpp index b46fd50890..317fb5f731 100644 --- a/src/libslic3r/ExPolygonsIndex.hpp +++ b/src/libslic3r/ExPolygonsIndex.hpp @@ -2,6 +2,8 @@ #define slic3r_ExPolygonsIndex_hpp_ #include "ExPolygon.hpp" +#include +#include namespace Slic3r { /// diff --git a/src/libslic3r/Exception.hpp b/src/libslic3r/Exception.hpp index d271a25052..5297af8ff2 100644 --- a/src/libslic3r/Exception.hpp +++ b/src/libslic3r/Exception.hpp @@ -1,7 +1,9 @@ #ifndef _libslic3r_Exception_h_ #define _libslic3r_Exception_h_ +#include #include +#include #include namespace Slic3r { diff --git a/src/libslic3r/Execution/Execution.hpp b/src/libslic3r/Execution/Execution.hpp index 62e49cfeb3..9620d9b11d 100644 --- a/src/libslic3r/Execution/Execution.hpp +++ b/src/libslic3r/Execution/Execution.hpp @@ -1,6 +1,7 @@ #ifndef EXECUTION_HPP #define EXECUTION_HPP +#include #include #include #include diff --git a/src/libslic3r/Execution/ExecutionSeq.hpp b/src/libslic3r/Execution/ExecutionSeq.hpp index 321d65631b..56afa6aaf4 100644 --- a/src/libslic3r/Execution/ExecutionSeq.hpp +++ b/src/libslic3r/Execution/ExecutionSeq.hpp @@ -1,6 +1,9 @@ #ifndef EXECUTIONSEQ_HPP #define EXECUTIONSEQ_HPP +#include +#include "libslic3r/libslic3r.h" +#include #ifdef PRUSASLICER_USE_EXECUTION_STD // Conflicts with our version of TBB #include #endif diff --git a/src/libslic3r/Execution/ExecutionTBB.hpp b/src/libslic3r/Execution/ExecutionTBB.hpp index 2250b8e322..4881c7b59c 100644 --- a/src/libslic3r/Execution/ExecutionTBB.hpp +++ b/src/libslic3r/Execution/ExecutionTBB.hpp @@ -1,14 +1,17 @@ #ifndef EXECUTIONTBB_HPP #define EXECUTIONTBB_HPP +#include #include #include #include #include #include +#include #include "Execution.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/Extruder.cpp b/src/libslic3r/Extruder.cpp index b1b6ca347a..bffdf6771c 100644 --- a/src/libslic3r/Extruder.cpp +++ b/src/libslic3r/Extruder.cpp @@ -1,5 +1,11 @@ #include "Extruder.hpp" +#include "Exception.hpp" #include "PrintConfig.hpp" +#include +#include "libslic3r.h" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Extruder.hpp b/src/libslic3r/Extruder.hpp index aa023ea040..94e083c86b 100644 --- a/src/libslic3r/Extruder.hpp +++ b/src/libslic3r/Extruder.hpp @@ -3,6 +3,7 @@ #include "libslic3r.h" #include "Point.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index bd45150a15..a3590814f7 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -4,10 +4,23 @@ #include "ClipperUtils.hpp" #include "Extruder.hpp" #include "Flow.hpp" +#include +#include #include +#include +#include #include #include +#include "Point.hpp" +#include "Polyline.hpp" +#include "Polygon.hpp" +#include +#include +#include "Line.hpp" +#include +#include #include "Utils.hpp" +#include "libslic3r.h" #define L(s) (s) diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index de80247bce..d7dac99364 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -1,13 +1,19 @@ #ifndef slic3r_ExtrusionEntity_hpp_ #define slic3r_ExtrusionEntity_hpp_ +#include "Point.hpp" #include "libslic3r.h" #include "Polygon.hpp" #include "Polyline.hpp" #include +#include +#include +#include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ExtrusionEntityCollection.cpp b/src/libslic3r/ExtrusionEntityCollection.cpp index 9a37ff3ac1..0141e3d5e8 100644 --- a/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/src/libslic3r/ExtrusionEntityCollection.cpp @@ -1,7 +1,12 @@ #include "ExtrusionEntityCollection.hpp" +#include "ExtrusionEntity.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "ShortestPath.hpp" #include #include +#include +#include #include namespace Slic3r { diff --git a/src/libslic3r/ExtrusionEntityCollection.hpp b/src/libslic3r/ExtrusionEntityCollection.hpp index 13727869fe..f79ae22aba 100644 --- a/src/libslic3r/ExtrusionEntityCollection.hpp +++ b/src/libslic3r/ExtrusionEntityCollection.hpp @@ -1,9 +1,16 @@ #ifndef slic3r_ExtrusionEntityCollection_hpp_ #define slic3r_ExtrusionEntityCollection_hpp_ +#include "Point.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" #include "libslic3r.h" #include "Exception.hpp" #include "ExtrusionEntity.hpp" +#include +#include +#include +#include namespace Slic3r { @@ -168,6 +175,23 @@ private: bool is_reverse{true}; }; +// Calls `f` for every ExtrusionPath in `entity`, descending into collections, loops and multi-paths. +template void for_each_extrusion_path(const ExtrusionEntity &entity, F &&f) +{ + if (auto *collection = dynamic_cast(&entity)) { + for (const ExtrusionEntity *child : collection->entities) + for_each_extrusion_path(*child, f); + } else if (auto *loop = dynamic_cast(&entity)) { + for (const ExtrusionPath &path : loop->paths) + f(path); + } else if (auto *multi_path = dynamic_cast(&entity)) { + for (const ExtrusionPath &path : multi_path->paths) + f(path); + } else if (auto *path = dynamic_cast(&entity)) { + f(*path); + } +} + } // namespace Slic3r #endif diff --git a/src/libslic3r/ExtrusionSimulator.cpp b/src/libslic3r/ExtrusionSimulator.cpp index 4bf54edea9..bb9179a7e2 100644 --- a/src/libslic3r/ExtrusionSimulator.cpp +++ b/src/libslic3r/ExtrusionSimulator.cpp @@ -3,6 +3,9 @@ //#undef SLIC3R_DEBUG //#define NDEBUG +#include +#include +#include #include #include @@ -12,7 +15,14 @@ #include #include +#include +#include +#include +#include +#include "Point.hpp" +#include "BoundingBox.hpp" +#include "ExtrusionEntity.hpp" #include "libslic3r.h" #include "ExtrusionSimulator.hpp" diff --git a/src/libslic3r/ExtrusionSimulator.hpp b/src/libslic3r/ExtrusionSimulator.hpp index 040406766d..33629d79e6 100644 --- a/src/libslic3r/ExtrusionSimulator.hpp +++ b/src/libslic3r/ExtrusionSimulator.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_ExtrusionSimulator_hpp_ #define slic3r_ExtrusionSimulator_hpp_ +#include "Point.hpp" #include "libslic3r.h" #include "ExtrusionEntity.hpp" #include "BoundingBox.hpp" diff --git a/src/libslic3r/FaceDetector.cpp b/src/libslic3r/FaceDetector.cpp index 5eb5ca762c..a631822d9e 100644 --- a/src/libslic3r/FaceDetector.cpp +++ b/src/libslic3r/FaceDetector.cpp @@ -1,8 +1,13 @@ #include "FaceDetector.hpp" +#include "BoundingBox.hpp" #include "TriangleMesh.hpp" #include "SLA/IndexedMesh.hpp" #include "Model.hpp" +#include +#include #include +#include +#include namespace Slic3r { static const double BBOX_OFFSET = 2.0; diff --git a/src/libslic3r/FaceDetector.hpp b/src/libslic3r/FaceDetector.hpp index b4d9d78985..190877ecec 100644 --- a/src/libslic3r/FaceDetector.hpp +++ b/src/libslic3r/FaceDetector.hpp @@ -2,6 +2,7 @@ #define slic3r_FaceDetector_hpp_ #include "Point.hpp" +#include namespace Slic3r { class ModelObject; diff --git a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp index be86e92245..c580cc3c0f 100644 --- a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp +++ b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.cpp @@ -1,5 +1,19 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Surface.hpp" #include "libslic3r/Algorithm/LineSplit.hpp" #include "libslic3r/Arachne/utils/ExtrusionJunction.hpp" #include "libslic3r/Arachne/utils/ExtrusionLine.hpp" diff --git a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp index ab0c491b38..ec5069a49c 100644 --- a/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp +++ b/src/libslic3r/Feature/FuzzySkin/FuzzySkin.hpp @@ -1,9 +1,13 @@ #ifndef libslic3r_FuzzySkin_hpp_ #define libslic3r_FuzzySkin_hpp_ +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" #include "libslic3r/Arachne/utils/ExtrusionJunction.hpp" #include "libslic3r/Arachne/utils/ExtrusionLine.hpp" #include "libslic3r/PerimeterGenerator.hpp" +#include namespace Slic3r::Feature::FuzzySkin { diff --git a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp index 726ee2ffd8..9e2fb7fa47 100644 --- a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp +++ b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp @@ -2,8 +2,22 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include "InterlockingGenerator.hpp" +#include "libslic3r/Feature/Interlocking/VoxelUtils.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Geometry.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/ExPolygon.hpp" #include "libslic3r/ClipperUtils.hpp" #include "Layer.hpp" +#include +#include +#include +#include +#include +#include namespace std { template<> struct hash diff --git a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp index e6b79f9bc8..b06c8a10c8 100644 --- a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp +++ b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp @@ -4,8 +4,16 @@ #ifndef INTERLOCKING_GENERATOR_HPP #define INTERLOCKING_GENERATOR_HPP +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include "libslic3r/ExPolygon.hpp" #include "libslic3r/Print.hpp" #include "VoxelUtils.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Feature/Interlocking/VoxelUtils.cpp b/src/libslic3r/Feature/Interlocking/VoxelUtils.cpp index 303473ae48..6e33ddaca7 100644 --- a/src/libslic3r/Feature/Interlocking/VoxelUtils.cpp +++ b/src/libslic3r/Feature/Interlocking/VoxelUtils.cpp @@ -2,9 +2,21 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include "VoxelUtils.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Polyline.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/Fill/FillRectilinear.hpp" #include "libslic3r/Surface.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Feature/Interlocking/VoxelUtils.hpp b/src/libslic3r/Feature/Interlocking/VoxelUtils.hpp index 0348b69598..dc571c06ea 100644 --- a/src/libslic3r/Feature/Interlocking/VoxelUtils.hpp +++ b/src/libslic3r/Feature/Interlocking/VoxelUtils.hpp @@ -4,8 +4,13 @@ #ifndef UTILS_VOXEL_UTILS_H #define UTILS_VOXEL_UTILS_H +#include +#include #include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Polygon.hpp" #include "libslic3r/ExPolygon.hpp" diff --git a/src/libslic3r/FilamentGroup.cpp b/src/libslic3r/FilamentGroup.cpp index 07a4cc2449..5536a13282 100644 --- a/src/libslic3r/FilamentGroup.cpp +++ b/src/libslic3r/FilamentGroup.cpp @@ -1,11 +1,34 @@ #include "FilamentGroup.hpp" +#include "FilamentGroupUtils.hpp" #include "GCode/ToolOrderUtils.hpp" #include "FlushVolPredictor.hpp" +#include "MultiNozzleUtils.hpp" +#include "PrintConfig.hpp" +#include "libslic3r.h" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/FilamentGroup.hpp b/src/libslic3r/FilamentGroup.hpp index 9172685bee..b090a22fe0 100644 --- a/src/libslic3r/FilamentGroup.hpp +++ b/src/libslic3r/FilamentGroup.hpp @@ -2,14 +2,21 @@ #define FILAMENT_GROUP_HPP #include +#include #include #include +#include #include #include +#include +#include +#include #include #include #include "GCode/ToolOrderUtils.hpp" #include "FilamentGroupUtils.hpp" +#include "PrintConfig.hpp" +#include "MultiNozzleUtils.hpp" const static int DEFAULT_CLUSTER_SIZE = 16; diff --git a/src/libslic3r/FilamentGroupUtils.cpp b/src/libslic3r/FilamentGroupUtils.cpp index c0cd747025..7402341806 100644 --- a/src/libslic3r/FilamentGroupUtils.cpp +++ b/src/libslic3r/FilamentGroupUtils.cpp @@ -1,6 +1,22 @@ #include "FilamentGroupUtils.hpp" +#include +#include +#include +#include +#include +#include "PrintConfig.hpp" +#include "Config.hpp" +#include +#include +#include "libslic3r.h" +#include "MultiNozzleUtils.hpp" #include +#include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/FilamentGroupUtils.hpp b/src/libslic3r/FilamentGroupUtils.hpp index f0865a93c6..a73a562e90 100644 --- a/src/libslic3r/FilamentGroupUtils.hpp +++ b/src/libslic3r/FilamentGroupUtils.hpp @@ -1,6 +1,9 @@ #ifndef FILAMENT_GROUP_UTILS_HPP #define FILAMENT_GROUP_UTILS_HPP +#include +#include +#include #include #include #include diff --git a/src/libslic3r/FilamentMixer.cpp b/src/libslic3r/FilamentMixer.cpp index 66640498e6..51952c94c9 100644 --- a/src/libslic3r/FilamentMixer.cpp +++ b/src/libslic3r/FilamentMixer.cpp @@ -5,12 +5,17 @@ #include #include #include +#include #include +#include #include #include #include #include +#include +#include +#include #include "ColorDecomposeRecipe.hpp" #include "FilamentMixerModel.hpp" diff --git a/src/libslic3r/FilamentMixer.hpp b/src/libslic3r/FilamentMixer.hpp index 81ddd29e46..5ea4484437 100644 --- a/src/libslic3r/FilamentMixer.hpp +++ b/src/libslic3r/FilamentMixer.hpp @@ -1,6 +1,7 @@ #ifndef SLIC3R_FILAMENT_MIXER_HPP #define SLIC3R_FILAMENT_MIXER_HPP +#include #include #include #include diff --git a/src/libslic3r/FileParserError.hpp b/src/libslic3r/FileParserError.hpp index b7e63d84e0..4777ee8a79 100644 --- a/src/libslic3r/FileParserError.hpp +++ b/src/libslic3r/FileParserError.hpp @@ -1,8 +1,10 @@ #ifndef slic3r_FileParserError_hpp_ #define slic3r_FileParserError_hpp_ +#include "Exception.hpp" #include "libslic3r.h" +#include #include #include #include diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index a09c69fc5e..505081ab79 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -1,6 +1,19 @@ +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include #include "../ClipperUtils.hpp" #include "../Geometry.hpp" @@ -10,14 +23,23 @@ #include "../Surface.hpp" #include "AABBTreeLines.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" #include "ExtrusionEntity.hpp" #include "Fill.hpp" +#include "libslic3r/Fill/FillBase.hpp" #include "FillRectilinear.hpp" #include "FillLightning.hpp" #include "FillConcentricInternal.hpp" #include "FillTpmsD.hpp" #include "FillTpmsFK.hpp" #include "FillConcentric.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Polyline.hpp" #include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/Fill/Fill.hpp b/src/libslic3r/Fill/Fill.hpp index b183cf0253..138321fd0a 100644 --- a/src/libslic3r/Fill/Fill.hpp +++ b/src/libslic3r/Fill/Fill.hpp @@ -1,9 +1,11 @@ #ifndef slic3r_Fill_hpp_ #define slic3r_Fill_hpp_ +#include #include #include #include +#include #include "../libslic3r.h" #include "../PrintConfig.hpp" diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp index ad5f8918fd..5a390fa517 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp @@ -1,8 +1,20 @@ #include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" #include "../Surface.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" #include "FillBase.hpp" #include "FillCornerSmoothing.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include +#include "libslic3r/Polyline.hpp" +#include #include "Fill3DHoneycomb.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.hpp b/src/libslic3r/Fill/Fill3DHoneycomb.hpp index 2d6664ddf4..2ad6f79a7c 100644 --- a/src/libslic3r/Fill/Fill3DHoneycomb.hpp +++ b/src/libslic3r/Fill/Fill3DHoneycomb.hpp @@ -2,10 +2,14 @@ #define slic3r_Fill3DHoneycomb_hpp_ #include +#include #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 809eddb218..927e2c86a3 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -6,18 +6,40 @@ #include "../Layer.hpp" #include "../Print.hpp" #include "../ShortestPath.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Fill/FillBase.hpp" #include "FillAdaptive.hpp" // for indexed_triangle_set +#include +#include #include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include #include +#include #include +#include +#include // Boost pool: Don't use mutexes to synchronize memory allocation. #define BOOST_POOL_NO_MT diff --git a/src/libslic3r/Fill/FillAdaptive.hpp b/src/libslic3r/Fill/FillAdaptive.hpp index de0768b26e..9b424133a2 100644 --- a/src/libslic3r/Fill/FillAdaptive.hpp +++ b/src/libslic3r/Fill/FillAdaptive.hpp @@ -11,7 +11,17 @@ #ifndef slic3r_FillAdaptive_hpp_ #define slic3r_FillAdaptive_hpp_ +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Line.hpp" struct indexed_triangle_set; diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp index d0126e9cb8..91a3bb42af 100644 --- a/src/libslic3r/Fill/FillBase.cpp +++ b/src/libslic3r/Fill/FillBase.cpp @@ -1,7 +1,16 @@ +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include #include "../ClipperUtils.hpp" #include "../EdgeGrid.hpp" #include "../Geometry.hpp" @@ -13,6 +22,12 @@ #include "../VariableWidth.hpp" #include "FillBase.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/ExtrusionEntityCollection.hpp" +#include "libslic3r/BoundingBox.hpp" #include "FillConcentric.hpp" #include "FillSpiralInset.hpp" #include "FillHoneycomb.hpp" @@ -28,6 +43,11 @@ // BBS: new infill pattern header #include "FillConcentricInternal.hpp" #include "FillCrossHatch.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/ShortestPath.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Utils.hpp" // #define INFILL_DEBUG_OUTPUT namespace Slic3r { diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index d50c29b332..0ccce102ad 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -2,12 +2,18 @@ #define slic3r_FillBase_hpp_ #include +#include +#include +#include #include #include #include #include +#include #include +#include +#include #include "../libslic3r.h" #include "../BoundingBox.hpp" @@ -20,6 +26,8 @@ #include "../ExtrusionEntity.hpp" #include "../ExtrusionEntityCollection.hpp" #include "../ShortestPath.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Polygon.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 044fee042e..6a70200b34 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -5,8 +5,21 @@ #include "Arachne/WallToolPaths.hpp" #include "FillConcentric.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Arachne/utils/ExtrusionLine.hpp" #include "FillCornerSmoothing.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include +#include "libslic3r/PrintConfig.hpp" +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentric.hpp b/src/libslic3r/Fill/FillConcentric.hpp index 56040d848d..43273131db 100644 --- a/src/libslic3r/Fill/FillConcentric.hpp +++ b/src/libslic3r/Fill/FillConcentric.hpp @@ -1,7 +1,11 @@ #ifndef slic3r_FillConcentric_hpp_ #define slic3r_FillConcentric_hpp_ +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentricInternal.cpp b/src/libslic3r/Fill/FillConcentricInternal.cpp index d565992ea1..49b21935f3 100644 --- a/src/libslic3r/Fill/FillConcentricInternal.cpp +++ b/src/libslic3r/Fill/FillConcentricInternal.cpp @@ -3,9 +3,22 @@ #include "../Surface.hpp" #include "../VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Arachne/utils/ExtrusionLine.hpp" +#include "libslic3r/ExtrusionEntityCollection.hpp" #include "FillConcentricInternal.hpp" +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentricInternal.hpp b/src/libslic3r/Fill/FillConcentricInternal.hpp index 2c93eb5ee9..f78e9e1cb1 100644 --- a/src/libslic3r/Fill/FillConcentricInternal.hpp +++ b/src/libslic3r/Fill/FillConcentricInternal.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_FillConcentricInternal_hpp_ #define slic3r_FillConcentricInternal_hpp_ +#include "libslic3r/ExtrusionEntity.hpp" #include "FillBase.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillCornerSmoothing.cpp b/src/libslic3r/Fill/FillCornerSmoothing.cpp index dbce39d572..f87de98293 100644 --- a/src/libslic3r/Fill/FillCornerSmoothing.cpp +++ b/src/libslic3r/Fill/FillCornerSmoothing.cpp @@ -1,6 +1,16 @@ +#include #include +#include +#include +#include +#include +#include #include "FillCornerSmoothing.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Polygon.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillCornerSmoothing.hpp b/src/libslic3r/Fill/FillCornerSmoothing.hpp index 7f2ead229a..b59cf26237 100644 --- a/src/libslic3r/Fill/FillCornerSmoothing.hpp +++ b/src/libslic3r/Fill/FillCornerSmoothing.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "../libslic3r.h" diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp index 98be5ef46b..c70a8a5320 100644 --- a/src/libslic3r/Fill/FillCrossHatch.cpp +++ b/src/libslic3r/Fill/FillCrossHatch.cpp @@ -1,9 +1,17 @@ #include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" #include "../Surface.hpp" +#include #include +#include +#include +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" #include "FillBase.hpp" #include "FillCornerSmoothing.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" #include "FillCrossHatch.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillCrossHatch.hpp b/src/libslic3r/Fill/FillCrossHatch.hpp index 34c46116eb..0fdc16644a 100644 --- a/src/libslic3r/Fill/FillCrossHatch.hpp +++ b/src/libslic3r/Fill/FillCrossHatch.hpp @@ -2,10 +2,14 @@ #define slic3r_FillCrossHatch_hpp_ #include +#include #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index c9a108573d..de748d4893 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -4,9 +4,19 @@ #include "../Surface.hpp" #include #include +#include #include #include +#include "libslic3r/BoundingBox.hpp" +#include +#include "libslic3r/Execution/ExecutionTBB.hpp" +#include +#include +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" #include "FillGyroid.hpp" // --------------------------------------------------------------------------- diff --git a/src/libslic3r/Fill/FillGyroid.hpp b/src/libslic3r/Fill/FillGyroid.hpp index 751a7c2570..2599662403 100644 --- a/src/libslic3r/Fill/FillGyroid.hpp +++ b/src/libslic3r/Fill/FillGyroid.hpp @@ -3,7 +3,11 @@ #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp index 82679541da..594ff3fbba 100644 --- a/src/libslic3r/Fill/FillHoneycomb.cpp +++ b/src/libslic3r/Fill/FillHoneycomb.cpp @@ -2,7 +2,17 @@ #include "../ShortestPath.hpp" #include "../Surface.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" #include "FillCornerSmoothing.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include #include "FillHoneycomb.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillHoneycomb.hpp b/src/libslic3r/Fill/FillHoneycomb.hpp index 55be423854..fd1fe039de 100644 --- a/src/libslic3r/Fill/FillHoneycomb.hpp +++ b/src/libslic3r/Fill/FillHoneycomb.hpp @@ -1,11 +1,17 @@ #ifndef slic3r_FillHoneycomb_hpp_ #define slic3r_FillHoneycomb_hpp_ +#include #include +#include +#include #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillLightning.cpp b/src/libslic3r/Fill/FillLightning.cpp index 77031b42e0..9f6200a88e 100644 --- a/src/libslic3r/Fill/FillLightning.cpp +++ b/src/libslic3r/Fill/FillLightning.cpp @@ -1,10 +1,18 @@ #include "../ClipperUtils.hpp" #include "../Print.hpp" #include "../ShortestPath.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Fill/Lightning/Layer.hpp" #include "FillBase.hpp" #include "FillCornerSmoothing.hpp" #include "FillLightning.hpp" #include "Lightning/Generator.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/libslic3r.h" +#include +#include namespace Slic3r::FillLightning { diff --git a/src/libslic3r/Fill/FillLightning.hpp b/src/libslic3r/Fill/FillLightning.hpp index 74aa159b0b..8ad15b5c2a 100644 --- a/src/libslic3r/Fill/FillLightning.hpp +++ b/src/libslic3r/Fill/FillLightning.hpp @@ -1,7 +1,13 @@ #ifndef slic3r_FillLightning_hpp_ #define slic3r_FillLightning_hpp_ +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillLine.cpp b/src/libslic3r/Fill/FillLine.cpp index 5d548e5dbb..f46c102131 100644 --- a/src/libslic3r/Fill/FillLine.cpp +++ b/src/libslic3r/Fill/FillLine.cpp @@ -2,6 +2,17 @@ #include "../ExPolygon.hpp" #include "../ShortestPath.hpp" #include "../Surface.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Line.hpp" +#include +#include +#include #include "FillLine.hpp" diff --git a/src/libslic3r/Fill/FillLine.hpp b/src/libslic3r/Fill/FillLine.hpp index 4ad9ca49a4..73633716dc 100644 --- a/src/libslic3r/Fill/FillLine.hpp +++ b/src/libslic3r/Fill/FillLine.hpp @@ -3,7 +3,12 @@ #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Line.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillPlanePath.cpp b/src/libslic3r/Fill/FillPlanePath.cpp index 577aef0600..2ee2b1ef3a 100644 --- a/src/libslic3r/Fill/FillPlanePath.cpp +++ b/src/libslic3r/Fill/FillPlanePath.cpp @@ -2,7 +2,21 @@ #include "../ShortestPath.hpp" #include "../Surface.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/ExtrusionEntity.hpp" #include "FillCornerSmoothing.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Polyline.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include #include "FillPlanePath.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillPlanePath.hpp b/src/libslic3r/Fill/FillPlanePath.hpp index a1e9068ca9..d24d9df9f4 100644 --- a/src/libslic3r/Fill/FillPlanePath.hpp +++ b/src/libslic3r/Fill/FillPlanePath.hpp @@ -1,11 +1,17 @@ #ifndef slic3r_FillPlanePath_hpp_ #define slic3r_FillPlanePath_hpp_ +#include +#include #include +#include #include "../libslic3r.h" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index b4373d3ea6..5951e154e9 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -1,3 +1,8 @@ +#include +#include +#include +#include +#include #include #include @@ -10,6 +15,9 @@ #include #include #include +#include +#include +#include #include "../ClipperUtils.hpp" #include "../ExPolygon.hpp" @@ -18,7 +26,17 @@ #include "../ShortestPath.hpp" #include "../VariableWidth.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/ExtrusionEntityCollection.hpp" #include "FillCornerSmoothing.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Utils.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Flow.hpp" #include "FillRectilinear.hpp" // #define SLIC3R_DEBUG diff --git a/src/libslic3r/Fill/FillRectilinear.hpp b/src/libslic3r/Fill/FillRectilinear.hpp index adb9ef5131..a4453ad2d0 100644 --- a/src/libslic3r/Fill/FillRectilinear.hpp +++ b/src/libslic3r/Fill/FillRectilinear.hpp @@ -3,7 +3,18 @@ #include "../libslic3r.h" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include "libslic3r/Polyline.hpp" +#include +#include +#include +#include +#include "libslic3r/Flow.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillSpiralInset.cpp b/src/libslic3r/Fill/FillSpiralInset.cpp index e6323c2572..8f663df340 100644 --- a/src/libslic3r/Fill/FillSpiralInset.cpp +++ b/src/libslic3r/Fill/FillSpiralInset.cpp @@ -3,12 +3,25 @@ #include "../Surface.hpp" #include "../VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Arachne/utils/ExtrusionLine.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/BoundingBox.hpp" #include "FillSpiralInset.hpp" #include +#include #include +#include #include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Fill/FillSpiralInset.hpp b/src/libslic3r/Fill/FillSpiralInset.hpp index eb799ec2f3..8b95657b4b 100644 --- a/src/libslic3r/Fill/FillSpiralInset.hpp +++ b/src/libslic3r/Fill/FillSpiralInset.hpp @@ -1,7 +1,11 @@ #ifndef slic3r_FillSpiralInset_hpp_ #define slic3r_FillSpiralInset_hpp_ +#include "libslic3r/ExPolygon.hpp" #include "FillBase.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Fill/FillTpmsD.cpp b/src/libslic3r/Fill/FillTpmsD.cpp index 06e0302e8d..bb1a338691 100644 --- a/src/libslic3r/Fill/FillTpmsD.cpp +++ b/src/libslic3r/Fill/FillTpmsD.cpp @@ -1,10 +1,15 @@ #include #include +#include +#include +#include #include //#include #include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/ExPolygon.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Fill/FillBase.hpp" #include "libslic3r/Point.hpp" diff --git a/src/libslic3r/Fill/FillTpmsFK.cpp b/src/libslic3r/Fill/FillTpmsFK.cpp index 66ed1cbc84..a48a63f3d0 100644 --- a/src/libslic3r/Fill/FillTpmsFK.cpp +++ b/src/libslic3r/Fill/FillTpmsFK.cpp @@ -1,8 +1,17 @@ #include "../ClipperUtils.hpp" #include "../MarchingSquares.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Execution/ExecutionTBB.hpp" +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/ExPolygon.hpp" #include "FillTpmsFK.hpp" #include #include +#include +#include #include #include #include diff --git a/src/libslic3r/Fill/Lightning/DistanceField.cpp b/src/libslic3r/Fill/Lightning/DistanceField.cpp index 65da94b839..73d74cef03 100644 --- a/src/libslic3r/Fill/Lightning/DistanceField.cpp +++ b/src/libslic3r/Fill/Lightning/DistanceField.cpp @@ -4,8 +4,22 @@ #include "DistanceField.hpp" //Class we're implementing. #include "../FillRectilinear.hpp" #include "../../ClipperUtils.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include +#include +#include +#include +#include +#include +#include #include +#include #ifdef LIGHTNING_DISTANCE_FIELD_DEBUG_OUTPUT #include "../../SVG.hpp" diff --git a/src/libslic3r/Fill/Lightning/DistanceField.hpp b/src/libslic3r/Fill/Lightning/DistanceField.hpp index 007ac235e5..737c432824 100644 --- a/src/libslic3r/Fill/Lightning/DistanceField.hpp +++ b/src/libslic3r/Fill/Lightning/DistanceField.hpp @@ -7,6 +7,13 @@ #include "../../BoundingBox.hpp" #include "../../Point.hpp" #include "../../Polygon.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include //#define LIGHTNING_DISTANCE_FIELD_DEBUG_OUTPUT diff --git a/src/libslic3r/Fill/Lightning/Generator.cpp b/src/libslic3r/Fill/Lightning/Generator.cpp index c638610aa5..c35eb3250f 100644 --- a/src/libslic3r/Fill/Lightning/Generator.cpp +++ b/src/libslic3r/Fill/Lightning/Generator.cpp @@ -2,6 +2,15 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "Generator.hpp" +#include "libslic3r/SVG.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/Fill/Lightning/Layer.hpp" +#include "libslic3r/EdgeGrid.hpp" #include "TreeNode.hpp" #include "../../ClipperUtils.hpp" @@ -9,6 +18,18 @@ #include "../../Print.hpp" #include "ExPolygon.hpp" +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include /* Possible future tasks/optimizations,etc.: * - Improve connecting heuristic to favor connecting to shorter trees diff --git a/src/libslic3r/Fill/Lightning/Generator.hpp b/src/libslic3r/Fill/Lightning/Generator.hpp index 79110fb8dd..18be848b9e 100644 --- a/src/libslic3r/Fill/Lightning/Generator.hpp +++ b/src/libslic3r/Fill/Lightning/Generator.hpp @@ -4,8 +4,12 @@ #ifndef LIGHTNING_GENERATOR_H #define LIGHTNING_GENERATOR_H +#include "libslic3r/BoundingBox.hpp" #include "Layer.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/libslic3r.h" +#include #include #include #include diff --git a/src/libslic3r/Fill/Lightning/Layer.cpp b/src/libslic3r/Fill/Lightning/Layer.cpp index 4a30a95f45..f461888a14 100644 --- a/src/libslic3r/Fill/Lightning/Layer.cpp +++ b/src/libslic3r/Fill/Lightning/Layer.cpp @@ -3,16 +3,31 @@ #include "Layer.hpp" //The class we're implementing. +#include "libslic3r/BoundingBox.hpp" #include "DistanceField.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/EdgeGrid.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Polyline.hpp" #include "TreeNode.hpp" #include "../../ClipperUtils.hpp" #include "../../Geometry.hpp" #include "Utils.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include namespace Slic3r::FillLightning { diff --git a/src/libslic3r/Fill/Lightning/Layer.hpp b/src/libslic3r/Fill/Lightning/Layer.hpp index e8c0a38b4d..378dc354b2 100644 --- a/src/libslic3r/Fill/Lightning/Layer.hpp +++ b/src/libslic3r/Fill/Lightning/Layer.hpp @@ -6,7 +6,12 @@ #include "../../EdgeGrid.hpp" #include "../../Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polyline.hpp" +#include #include #include #include diff --git a/src/libslic3r/Fill/Lightning/TreeNode.cpp b/src/libslic3r/Fill/Lightning/TreeNode.cpp index c57180e530..9a08242392 100644 --- a/src/libslic3r/Fill/Lightning/TreeNode.cpp +++ b/src/libslic3r/Fill/Lightning/TreeNode.cpp @@ -4,6 +4,22 @@ #include "TreeNode.hpp" #include "../../Geometry.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include +#include +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/EdgeGrid.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/Line.hpp" +#include "libslic3r/Polyline.hpp" +#include +#include namespace Slic3r::FillLightning { diff --git a/src/libslic3r/Fill/Lightning/TreeNode.hpp b/src/libslic3r/Fill/Lightning/TreeNode.hpp index 95559524ba..c82ca3f2b6 100644 --- a/src/libslic3r/Fill/Lightning/TreeNode.hpp +++ b/src/libslic3r/Fill/Lightning/TreeNode.hpp @@ -4,6 +4,8 @@ #ifndef LIGHTNING_TREE_NODE_H #define LIGHTNING_TREE_NODE_H +#include +#include #include #include #include @@ -12,7 +14,11 @@ #include "../../EdgeGrid.hpp" #include "../../Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/BoundingBox.hpp" #include "SVG.hpp" +#include "libslic3r/libslic3r.h" //#define LIGHTNING_TREE_NODE_DEBUG_OUTPUT diff --git a/src/libslic3r/Flow.cpp b/src/libslic3r/Flow.cpp index 80912362ce..13ee73973e 100644 --- a/src/libslic3r/Flow.cpp +++ b/src/libslic3r/Flow.cpp @@ -1,10 +1,15 @@ #include "Flow.hpp" +#include "Exception.hpp" +#include "Config.hpp" #include "I18N.hpp" #include "Print.hpp" +#include "libslic3r.h" #include #include #include +#include +#include // Mark string for localization and translate. #define L(s) Slic3r::I18N::translate(s) diff --git a/src/libslic3r/Flow.hpp b/src/libslic3r/Flow.hpp index 79cb1b324d..14d20a41c7 100644 --- a/src/libslic3r/Flow.hpp +++ b/src/libslic3r/Flow.hpp @@ -5,6 +5,8 @@ #include "Config.hpp" #include "Exception.hpp" #include "ExtrusionEntity.hpp" +#include +#include namespace Slic3r { diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index 635328f5ab..daeaf587c6 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -1,5 +1,8 @@ +#include #include #include +#include +#include "FlushVolPredictor.hpp" #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "Utils.hpp" #include "FlushVolCalc.hpp" diff --git a/src/libslic3r/FlushVolPredictor.cpp b/src/libslic3r/FlushVolPredictor.cpp index dc39284b5f..e18b726c1f 100644 --- a/src/libslic3r/FlushVolPredictor.cpp +++ b/src/libslic3r/FlushVolPredictor.cpp @@ -1,9 +1,19 @@ #include "FlushVolPredictor.hpp" #include "Utils.hpp" +#include +#include +#include #include +#include +#include +#include #include #include #include +#include +#include +#include +#include namespace FlushPredict { diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 738f1f5f6f..2f457f634d 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -10,10 +10,37 @@ #include "../Time.hpp" #include "../I18N.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/SLA/Hollowing.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r_version.h" +#include "libslic3r/PrintConfig.hpp" #include "3mf.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include @@ -28,6 +55,9 @@ #include #include #include +#include +#include +#include namespace pt = boost::property_tree; #include diff --git a/src/libslic3r/Format/3mf.hpp b/src/libslic3r/Format/3mf.hpp index c46b4e5533..ec59aff307 100644 --- a/src/libslic3r/Format/3mf.hpp +++ b/src/libslic3r/Format/3mf.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_Format_3mf_hpp_ #define slic3r_Format_3mf_hpp_ #include +#include namespace Slic3r { // PrusaFileParser is used to check 3mf file is from Prusa diff --git a/src/libslic3r/Format/AMF.cpp b/src/libslic3r/Format/AMF.cpp index c5c9904e87..abf6953855 100644 --- a/src/libslic3r/Format/AMF.cpp +++ b/src/libslic3r/Format/AMF.cpp @@ -1,4 +1,10 @@ +#include +#include +#include +#include +#include #include +#include #include #include #include @@ -16,11 +22,16 @@ #include "../Geometry.hpp" #include "../CustomGCode.hpp" #include "../LocalesUtils.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" #include "AMF.hpp" #include #include +#include +#include namespace pt = boost::property_tree; #include diff --git a/src/libslic3r/Format/AMF.hpp b/src/libslic3r/Format/AMF.hpp index e48e424748..335d47d6fb 100644 --- a/src/libslic3r/Format/AMF.hpp +++ b/src/libslic3r/Format/AMF.hpp @@ -5,6 +5,7 @@ namespace Slic3r { class Model; class DynamicPrintConfig; +struct ConfigSubstitutionContext; // Load the content of an amf file into the given model and configuration. extern bool load_amf(const char* path, DynamicPrintConfig* config, ConfigSubstitutionContext* config_substitutions, Model* model, bool* use_inches); diff --git a/src/libslic3r/Format/AssimpImport.cpp b/src/libslic3r/Format/AssimpImport.cpp index f0ae99506a..0ab728f305 100644 --- a/src/libslic3r/Format/AssimpImport.cpp +++ b/src/libslic3r/Format/AssimpImport.cpp @@ -4,21 +4,30 @@ #include "ResourcePathUtils.hpp" #include +#include #include #include +#include #include #include +#include +#include +#include #include #include +#include #include #include #include +#include #include +#include #include #include #include +#include #include namespace Slic3r { diff --git a/src/libslic3r/Format/DRC.cpp b/src/libslic3r/Format/DRC.cpp index c07655f69b..1cf9c13565 100644 --- a/src/libslic3r/Format/DRC.cpp +++ b/src/libslic3r/Format/DRC.cpp @@ -1,3 +1,15 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -9,6 +21,7 @@ #include #include #include +#include using namespace draco; #include "libslic3r/Model.hpp" diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index 8242f2c0c9..db24ebec0b 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -2,15 +2,27 @@ #include "../Model.hpp" #include "../TriangleMesh.hpp" #include "../TexturePainting.hpp" +#include "libslic3r/Color.hpp" +#include "libslic3r/Point.hpp" #include "ResourcePathUtils.hpp" #include "OBJ.hpp" #include "objparser.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include #ifdef _WIN32 #define DIR_SEPARATOR '\\' diff --git a/src/libslic3r/Format/OBJ.hpp b/src/libslic3r/Format/OBJ.hpp index c103326af6..0767ddd87d 100644 --- a/src/libslic3r/Format/OBJ.hpp +++ b/src/libslic3r/Format/OBJ.hpp @@ -2,7 +2,14 @@ #define slic3r_Format_OBJ_hpp_ #include "libslic3r/Color.hpp" #include "objparser.hpp" +#include "libslic3r/Point.hpp" +#include +#include +#include +#include +#include #include +#include namespace Slic3r { class TriangleMesh; diff --git a/src/libslic3r/Format/ResourcePathUtils.hpp b/src/libslic3r/Format/ResourcePathUtils.hpp index d82b92bd45..eccfcba84f 100644 --- a/src/libslic3r/Format/ResourcePathUtils.hpp +++ b/src/libslic3r/Format/ResourcePathUtils.hpp @@ -2,6 +2,9 @@ #define slic3r_Format_ResourcePathUtils_hpp_ #include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/Format/SL1.cpp b/src/libslic3r/Format/SL1.cpp index 5796c108e5..15589e79b4 100644 --- a/src/libslic3r/Format/SL1.cpp +++ b/src/libslic3r/Format/SL1.cpp @@ -1,13 +1,34 @@ #include "SL1.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Config.hpp" #include "GCode/ThumbnailData.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Utils.hpp" #include "libslic3r/Time.hpp" +#include +#include +#include +#include #include #include #include "libslic3r/Zipper.hpp" #include "libslic3r/SLAPrint.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include "libslic3r/Exception.hpp" @@ -20,10 +41,15 @@ #include "libslic3r/miniz_extension.hpp" #include "libslic3r/PNGReadWrite.hpp" #include "libslic3r/LocalesUtils.hpp" +#include "libslic3r_version.h" #include #include #include +#include +#include +#include +#include namespace marchsq { diff --git a/src/libslic3r/Format/SL1.hpp b/src/libslic3r/Format/SL1.hpp index 6fb4405c90..ad6b51f7d9 100644 --- a/src/libslic3r/Format/SL1.hpp +++ b/src/libslic3r/Format/SL1.hpp @@ -1,8 +1,17 @@ #ifndef ARCHIVETRAITS_HPP #define ARCHIVETRAITS_HPP +#include +#include +#include #include +#include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/SLA/RasterBase.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Exception.hpp" #include "libslic3r/Zipper.hpp" #include "libslic3r/SLAPrint.hpp" diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 8305174e73..611648bc5a 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -1,10 +1,30 @@ #include "../libslic3r.h" #include "../Model.hpp" #include "../TriangleMesh.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/Utils.hpp" +#include "libslic3r/Point.hpp" #include "libslic3r/Thread.hpp" #include "STEP.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -12,6 +32,8 @@ #include #include +#include +#include #ifdef _WIN32 #define DIR_SEPARATOR '\\' diff --git a/src/libslic3r/Format/STEP.hpp b/src/libslic3r/Format/STEP.hpp index 336fd79766..5563a690c8 100644 --- a/src/libslic3r/Format/STEP.hpp +++ b/src/libslic3r/Format/STEP.hpp @@ -3,16 +3,26 @@ #include "XCAFDoc_DocumentTool.hxx" #include "XCAFApp_Application.hxx" #include "XCAFDoc_ShapeTool.hxx" +#include +#include #include #include #include #include +#include +#include +#include +#include +#include +#include +#include namespace fs = boost::filesystem; namespace Slic3r { class TriangleMesh; +class Model; class ModelObject; // load step stage diff --git a/src/libslic3r/Format/STL.cpp b/src/libslic3r/Format/STL.cpp index 1888f5cd18..55489af976 100644 --- a/src/libslic3r/Format/STL.cpp +++ b/src/libslic3r/Format/STL.cpp @@ -4,7 +4,9 @@ #include "STL.hpp" +#include #include +#include #ifdef _WIN32 #define DIR_SEPARATOR '\\' diff --git a/src/libslic3r/Format/ZipperArchiveImport.cpp b/src/libslic3r/Format/ZipperArchiveImport.cpp index 657e420bbc..3f690e42da 100644 --- a/src/libslic3r/Format/ZipperArchiveImport.cpp +++ b/src/libslic3r/Format/ZipperArchiveImport.cpp @@ -1,12 +1,25 @@ #include "ZipperArchiveImport.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/LocalesUtils.hpp" #include "libslic3r/miniz_extension.hpp" #include "libslic3r/Exception.hpp" #include "libslic3r/PrintConfig.hpp" +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Format/ZipperArchiveImport.hpp b/src/libslic3r/Format/ZipperArchiveImport.hpp index adddcacd40..18cbb78209 100644 --- a/src/libslic3r/Format/ZipperArchiveImport.hpp +++ b/src/libslic3r/Format/ZipperArchiveImport.hpp @@ -1,12 +1,14 @@ #ifndef ZIPPERARCHIVEIMPORT_HPP #define ZIPPERARCHIVEIMPORT_HPP +#include #include #include #include #include +#include "libslic3r/Config.hpp" #include "libslic3r/PrintConfig.hpp" namespace Slic3r { diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index cb778bbeca..ec2f30b856 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -13,10 +13,61 @@ #include "../Time.hpp" #include "../I18N.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/MultiNozzleUtils.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/ObjectID.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/BrimEarsPoint.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/CustomGCode.hpp" +#include "libslic3r_version.h" #include "bbs_3mf.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -40,6 +91,10 @@ #include #include #include +#include +#include +#include +#include namespace pt = boost::property_tree; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 768ae7bcfe..489870b8fc 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -2,9 +2,21 @@ #define BBS_3MF_hpp_ #include "../GCode/ThumbnailData.hpp" +#include "libslic3r/MultiNozzleUtils.hpp" +#include "libslic3r/Semver.hpp" #include "libslic3r/ProjectTask.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { class Model; diff --git a/src/libslic3r/Format/objparser.cpp b/src/libslic3r/Format/objparser.cpp index c5f33a7d0a..5146a21e80 100644 --- a/src/libslic3r/Format/objparser.cpp +++ b/src/libslic3r/Format/objparser.cpp @@ -1,8 +1,16 @@ +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include #include "objparser.hpp" diff --git a/src/libslic3r/Format/objparser.hpp b/src/libslic3r/Format/objparser.hpp index e711bdf6f4..b34c0f3bf2 100644 --- a/src/libslic3r/Format/objparser.hpp +++ b/src/libslic3r/Format/objparser.hpp @@ -6,6 +6,7 @@ #include #include #include +#include namespace ObjParser { diff --git a/src/libslic3r/Format/svg.cpp b/src/libslic3r/Format/svg.cpp index c9738c8058..7521afddb9 100644 --- a/src/libslic3r/Format/svg.cpp +++ b/src/libslic3r/Format/svg.cpp @@ -1,3 +1,5 @@ +#include "libslic3r/Point.hpp" +#include "libslic3r/Format/STEP.hpp" #include "libslic3r/ClipperUtils.hpp" #include "../libslic3r.h" #include "../Model.hpp" @@ -6,9 +8,23 @@ #include "svg.hpp" #include "nanosvg/nanosvg.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include "BRepBuilderAPI_MakeWire.hxx" #include "BRepBuilderAPI_MakeEdge.hxx" diff --git a/src/libslic3r/Format/svg.hpp b/src/libslic3r/Format/svg.hpp index 095251c32a..cf6c35137f 100644 --- a/src/libslic3r/Format/svg.hpp +++ b/src/libslic3r/Format/svg.hpp @@ -1,4 +1,7 @@ #pragma once + +#include + namespace Slic3r { class Model; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f75d05bb0a..6ced608938 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1,9 +1,31 @@ +#include "ArcFitter.hpp" #include "BoundingBox.hpp" +#include "Circle.hpp" #include "Config.hpp" +#include "GCode/GCodeProcessor.hpp" +#include "Flow.hpp" +#include "GCode/ThumbnailData.hpp" +#include "GCode/ToolOrdering.hpp" +#include "GCode/SpiralVase.hpp" +#include "GCode/PressureEqualizer.hpp" +#include "GCode/SmallAreaInfillFlowCompensator.hpp" +#include "GCode/CoolingBuffer.hpp" +#include "GCode/AdaptivePAProcessor.hpp" +#include "CustomGCode.hpp" +#include "GCode/TimelapsePosPicker.hpp" +#include "ExPolygon.hpp" #include "GCode/WipePathHelpers.hpp" +#include "GCodeReader.hpp" #include "GCodeWriter.hpp" +#include "Point.hpp" +#include "Line.hpp" +#include "ObjectID.hpp" +#include "Layer.hpp" #include "Polygon.hpp" +#include "Polyline.hpp" +#include "PrintBase.hpp" #include "PrintConfig.hpp" +#include "enum_bitmask.hpp" #include "libslic3r.h" #include "I18N.hpp" #include "IMEXHelpers.hpp" @@ -27,16 +49,39 @@ #include "libslic3r/format.hpp" #include "Time.hpp" #include "GCode/ExtrusionProcessor.hpp" +#include +#include #include +#include +#include +#include +#include #include #include +#include +#include +#include #include #include +#include +#include +#include +#include #include #include +#include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include +#include #include #include #include @@ -56,7 +101,9 @@ #include "SVG.hpp" #include +#include #include "calib.hpp" +#include "libslic3r_version.h" // Intel redesigned some TBB interface considerably when merging TBB with their oneAPI set of libraries, see GH #7332. // We are using quite an old TBB 2017 U7. Before we update our build servers, let's use the old API, which is deprecated in up to date TBB. #if ! defined(TBB_VERSION_MAJOR) @@ -761,13 +808,13 @@ static std::vector get_path_of_change_filament(const Print& print) GCodeReader parser; parser.parse_buffer(gcode, [&changes](GCodeReader &parser, const GCodeReader::GCodeLine &line) { const std::string_view cmd = line.cmd(); - if (boost::iequals(cmd, "M204") || boost::iequals(cmd, "M201") || - boost::iequals(cmd, "M202")) + if (ascii_iequals(cmd, "M204") || ascii_iequals(cmd, "M201") || + ascii_iequals(cmd, "M202")) changes.acceleration = true; - else if ((boost::iequals(cmd, "M205") || boost::iequals(cmd, "M207") || boost::iequals(cmd, "M566")) && + else if ((ascii_iequals(cmd, "M205") || ascii_iequals(cmd, "M207") || ascii_iequals(cmd, "M566")) && custom_gcode_line_has_xy_parameter(line.raw())) changes.jerk = true; - else if (boost::iequals(cmd, "SET_VELOCITY_LIMIT")) { + else if (ascii_iequals(cmd, "SET_VELOCITY_LIMIT")) { changes.acceleration |= boost::icontains(line.raw(), "ACCEL="); changes.jerk |= boost::icontains(line.raw(), "SQUARE_CORNER_VELOCITY="); } @@ -4551,6 +4598,75 @@ size_t GCode::get_nozzle_config_index(int filament_id) const return get_extruder_id(filament_id); } +namespace { +struct PrecomputedLayer +{ + size_t index{size_t(-1)}; // size_t(-1) for the empty layer after the last + std::vector overhang_layers; +}; +} // namespace + +template static bool any_enabled(const BoolsOption &option) +{ + return std::any_of(option.values.begin(), option.values.end(), [](unsigned char enabled) { return enabled != 0; }); +} + +// Whether process_layer() prepares the overhang estimator for `layer`. +template +static bool prepares_overhang_estimator(const Layer &layer, bool overhang_fan, OverhangSpeed overhang_speed) +{ + const LayerRegionPtrs ®ions = layer.regions(); + return std::any_of(regions.begin(), regions.end(), [overhang_fan, &overhang_speed](const LayerRegion *region) { + return region->has_extrusions() && (overhang_fan || overhang_speed(*region)); + }); +} + +std::vector precompute_overhang_layers(const std::vector &layers, bool overhang_fan) +{ + // Any filament may print the layer, so a region's overhang speed counts if it is enabled for any. + auto overhang_speed = [](const LayerRegion ®ion) { return any_enabled(region.region().config().enable_overhang_speed); }; + std::vector out; + for (const GCode::LayerToPrint &layer : layers) + if (layer.object_layer != nullptr && layer.object_layer->lower_layer != nullptr && + prepares_overhang_estimator(*layer.object_layer, overhang_fan, overhang_speed)) { + const LayerRegionPtrs ®ions = layer.object_layer->regions(); + const bool curled_lines = std::any_of(regions.begin(), regions.end(), [](const LayerRegion *region) { + return any_enabled(region->region().config().slowdown_for_curled_perimeters); + }); + out.push_back(precompute_overhang_layer(layer.original_object, *layer.object_layer, curled_lines)); + } + return out; +} + +// Hands out the index of each layer to process_layers(), then computes the layers' overhang data in parallel. +template +static auto precomputed_layers_source(size_t &next_index, size_t layer_count, bool nop_layer, bool overhang_fan, LayersAt layers_at) +{ + return tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, + [&next_index, layer_count, nop_layer](tbb::flow_control &fc) -> PrecomputedLayer { + if (next_index < layer_count) + return {next_index++}; + // The pressure equalizer returns one layer back, so it gets an empty layer after the last. + if (next_index == layer_count + (nop_layer ? 1 : 0)) + fc.stop(); + else + ++next_index; + return {}; + }) & + tbb::make_filter(slic3r_tbb_filtermode::parallel, + [layers_at, overhang_fan](PrecomputedLayer layer) -> PrecomputedLayer { + if (layer.index != size_t(-1)) + layer.overhang_layers = precompute_overhang_layers(layers_at(layer.index), overhang_fan); + return layer; + }); +} + +// Whether the overhang fan can switch on for any filament. +static bool overhang_fan_enabled(const PrintConfig &config, bool cooling_markers) +{ + return cooling_markers && any_enabled(config.enable_overhang_bridge_fan); +} + // 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. @@ -4563,29 +4679,23 @@ void GCode::process_layers( { // 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 { - if (layer_to_print_idx >= layers_to_print.size()) { - 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(); - } - } else { - const std::pair>& layer = layers_to_print[layer_to_print_idx++]; - const LayerTools& layer_tools = tool_ordering.tools_for_layer(layer.first); - print.set_status(80, Slic3r::format(_(L("Generating G-code: layer %1%")), std::to_string(layer_to_print_idx))); - if (m_wipe_tower && layer_tools.has_wipe_tower) - m_wipe_tower->next_layer(); - //BBS - check_placeholder_parser_failed(); - print.throw_if_canceled(); - return this->process_layer(print, layer.second, layer_tools, &layer == &layers_to_print.back(), &print_object_instances_ordering, tool_ordering.get_most_used_extruder(), size_t(-1)); - } + const auto source = precomputed_layers_source(layer_to_print_idx, layers_to_print.size(), m_pressure_equalizer != nullptr, + overhang_fan_enabled(print.config(), m_enable_cooling_markers), + [&layers_to_print](size_t index) -> const std::vector & { return layers_to_print[index].second; }); + const auto generator = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, + [this, &print, &tool_ordering, &print_object_instances_ordering, &layers_to_print](PrecomputedLayer precomputed) -> LayerResult { + if (precomputed.index == size_t(-1)) + return LayerResult::make_nop_layer_result(); + const std::pair>& layer = layers_to_print[precomputed.index]; + const LayerTools& layer_tools = tool_ordering.tools_for_layer(layer.first); + print.set_status(80, Slic3r::format(_(L("Generating G-code: layer %1%")), std::to_string(precomputed.index + 1))); + if (m_wipe_tower && layer_tools.has_wipe_tower) + m_wipe_tower->next_layer(); + //BBS + check_placeholder_parser_failed(); + print.throw_if_canceled(); + m_extrusion_quality_estimator.set_precomputed_layers(std::move(precomputed.overhang_layers)); + return this->process_layer(print, layer.second, layer_tools, &layer == &layers_to_print.back(), &print_object_instances_ordering, tool_ordering.get_most_used_extruder(), size_t(-1)); }); if (m_spiral_vase) { float nozzle_diameter = EXTRUDER_CONFIG(nozzle_diameter); @@ -4643,13 +4753,15 @@ void GCode::process_layers( // The pipeline elements are joined using const references, thus no copying is performed. if (m_spiral_vase && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_mode & pressure_equalizer & cooling & fan_mover & output); + tbb::parallel_pipeline(12, source & generator & spiral_mode & pressure_equalizer & cooling & fan_mover & output); else if (m_spiral_vase) - tbb::parallel_pipeline(12, generator & spiral_mode & cooling & fan_mover & output); + tbb::parallel_pipeline(12, source & generator & spiral_mode & cooling & fan_mover & output); else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); + tbb::parallel_pipeline(12, source & generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); else - tbb::parallel_pipeline(12, generator & cooling & fan_mover & pa_processor_filter & output); + tbb::parallel_pipeline(12, source & generator & cooling & fan_mover & pa_processor_filter & output); + // The estimator's precomputed data points into this print's layers. + m_extrusion_quality_estimator.set_precomputed_layers({}); } @@ -4667,26 +4779,20 @@ void GCode::process_layers( { // 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, prime_extruder](tbb::flow_control& fc) -> LayerResult { - if (layer_to_print_idx >= layers_to_print.size()) { - 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(); - } - } else { - LayerToPrint &layer = layers_to_print[layer_to_print_idx ++]; - print.set_status(80, Slic3r::format(_(L("Generating G-code: layer %1%")), std::to_string(layer_to_print_idx))); - //BBS - check_placeholder_parser_failed(); - 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, tool_ordering.get_most_used_extruder(), single_object_idx, prime_extruder); - } + const auto source = precomputed_layers_source(layer_to_print_idx, layers_to_print.size(), m_pressure_equalizer != nullptr, + overhang_fan_enabled(print.config(), m_enable_cooling_markers), + [&layers_to_print](size_t index) { return std::vector{layers_to_print[index]}; }); + const auto generator = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, + [this, &print, &tool_ordering, &layers_to_print, single_object_idx, prime_extruder](PrecomputedLayer precomputed) -> LayerResult { + if (precomputed.index == size_t(-1)) + return LayerResult::make_nop_layer_result(); + LayerToPrint &layer = layers_to_print[precomputed.index]; + print.set_status(80, Slic3r::format(_(L("Generating G-code: layer %1%")), std::to_string(precomputed.index + 1))); + //BBS + check_placeholder_parser_failed(); + print.throw_if_canceled(); + m_extrusion_quality_estimator.set_precomputed_layers(std::move(precomputed.overhang_layers)); + return this->process_layer(print, { std::move(layer) }, tool_ordering.tools_for_layer(layer.print_z()), &layer == &layers_to_print.back(), nullptr, tool_ordering.get_most_used_extruder(), single_object_idx, prime_extruder); }); if (m_spiral_vase) { float nozzle_diameter = EXTRUDER_CONFIG(nozzle_diameter); @@ -4741,13 +4847,15 @@ void GCode::process_layers( // The pipeline elements are joined using const references, thus no copying is performed. if (m_spiral_vase && m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & spiral_mode & pressure_equalizer & cooling & fan_mover & output); + tbb::parallel_pipeline(12, source & generator & spiral_mode & pressure_equalizer & cooling & fan_mover & output); else if (m_spiral_vase) - tbb::parallel_pipeline(12, generator & spiral_mode & cooling & fan_mover & output); + tbb::parallel_pipeline(12, source & generator & spiral_mode & cooling & fan_mover & output); else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); + tbb::parallel_pipeline(12, source & generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); else - tbb::parallel_pipeline(12, generator & cooling & fan_mover & pa_processor_filter & output); + tbb::parallel_pipeline(12, source & generator & cooling & fan_mover & pa_processor_filter & output); + // The estimator's precomputed data points into this print's layers. + m_extrusion_quality_estimator.set_precomputed_layers({}); } std::string GCode::placeholder_parser_process(const std::string &name, const std::string &templ, unsigned int current_filament_id, const DynamicConfig *config_override) @@ -6148,25 +6256,13 @@ LayerResult GCode::process_layer( return next_extruder; }; - for (const auto &layer_to_print : layers) { - if (layer_to_print.object_layer) { - const auto& regions = layer_to_print.object_layer->regions(); - const bool has_extrusions = std::any_of(regions.begin(), regions.end(), [](const LayerRegion* r) { - return r->has_extrusions(); - }); - const bool enable_overhang_speed = std::any_of(regions.begin(), regions.end(), [this](const LayerRegion* r) { - return r->has_extrusions() && r->region().config().enable_overhang_speed.get_at(get_nozzle_config_index(m_writer.filament()->id())); - }); - const bool enable_overhang_fan = m_enable_cooling_markers && has_extrusions && - std::any_of(m_config.enable_overhang_bridge_fan.values.begin(), - m_config.enable_overhang_bridge_fan.values.end(), - [](unsigned char value) { return value != 0; }); - if (enable_overhang_speed || enable_overhang_fan) { - m_extrusion_quality_estimator.prepare_for_new_layer(layer_to_print.original_object, - layer_to_print.object_layer); - } - } - } + const bool overhang_fan = overhang_fan_enabled(m_config, m_enable_cooling_markers); + auto overhang_speed = [this](const LayerRegion ®ion) { + return bool(region.region().config().enable_overhang_speed.get_at(get_nozzle_config_index(m_writer.filament()->id()))); + }; + for (const auto &layer_to_print : layers) + if (layer_to_print.object_layer && prepares_overhang_estimator(*layer_to_print.object_layer, overhang_fan, overhang_speed)) + m_extrusion_quality_estimator.prepare_for_new_layer(layer_to_print.original_object, layer_to_print.object_layer); // Group extrusions by an extruder, then by an object, an island and a region. std::map> by_extruder; diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 92716ac2f7..218bbd8073 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -1,6 +1,11 @@ #ifndef slic3r_GCode_hpp_ #define slic3r_GCode_hpp_ +#include "ExtrusionEntity.hpp" +#include "Polygon.hpp" +#include "Config.hpp" +#include "ExtrusionEntityCollection.hpp" +#include "Print.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" #include "GCodeWriter.hpp" @@ -28,12 +33,20 @@ #include "GCode/AdaptivePAProcessor.hpp" #include "GCode/TimelapsePosPicker.hpp" +#include "libslic3r_version.h" +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include namespace Slic3r { @@ -872,6 +885,10 @@ private: std::vector sort_object_instances_by_model_order(const Print& print, bool init_order = false); +// The overhang data ExtrusionQualityEstimator needs for the object layers in `layers`, computed ahead of the generator; +// `overhang_fan` says whether the overhang fan can switch on for any filament. +std::vector precompute_overhang_layers(const std::vector &layers, bool overhang_fan); + } #endif diff --git a/src/libslic3r/GCode/AdaptivePAInterpolator.cpp b/src/libslic3r/GCode/AdaptivePAInterpolator.cpp index 2681ab13b2..5d86420ad2 100644 --- a/src/libslic3r/GCode/AdaptivePAInterpolator.cpp +++ b/src/libslic3r/GCode/AdaptivePAInterpolator.cpp @@ -4,10 +4,16 @@ // Implementation file for the AdaptivePAInterpolator class, providing methods to parse data and perform PA interpolation. #include "AdaptivePAInterpolator.hpp" +#include +#include "libslic3r/GCode/PchipInterpolatorHelper.hpp" +#include #include #include #include #include +#include +#include +#include /** * @brief Parses the input data and sets up the interpolators. diff --git a/src/libslic3r/GCode/AdaptivePAProcessor.cpp b/src/libslic3r/GCode/AdaptivePAProcessor.cpp index 8145db3b9f..2adc03bc34 100644 --- a/src/libslic3r/GCode/AdaptivePAProcessor.cpp +++ b/src/libslic3r/GCode/AdaptivePAProcessor.cpp @@ -4,11 +4,20 @@ // Implementation of the AdaptivePAProcessor class, responsible for processing G-code layers with adaptive pressure advance. #include "../GCode.hpp" +#include "libslic3r/GCode/AdaptivePAInterpolator.hpp" +#include "libslic3r/libslic3r.h" #include "AdaptivePAProcessor.hpp" +#include +#include +#include +#include +#include +#include #include #include #include #include +#include namespace Slic3r { @@ -32,6 +41,9 @@ AdaptivePAProcessor::AdaptivePAProcessor(GCode &gcodegen) m_pa_change_pattern(R"(; PA_CHANGE:T(\d+) MM3MM:([0-9]*\.[0-9]+) ACCEL:(\d+) BR:(\d+) RC:(\d+) OV:(\d+))"), m_g1_f_pattern(R"(G1 F([0-9]+))") { + const size_t indices = std::max(m_config.adaptive_pressure_advance.size(), m_config.enable_pressure_advance.size()); + for (size_t i = 0; i < indices && !m_enabled; ++i) + m_enabled = m_config.adaptive_pressure_advance.get_at(i) && m_config.enable_pressure_advance.get_at(i); } // Method to get the interpolator for a specific filament config index. @@ -57,6 +69,12 @@ AdaptivePAInterpolator* AdaptivePAProcessor::getInterpolator(unsigned int config * @return A string containing the processed G-code with adaptive pressure advance applied. */ std::string AdaptivePAProcessor::process_layer(std::string &&gcode) { + // Without PA_CHANGE tags the loop below would only terminate the layer's last line. + if (!m_enabled && gcode.find("; PA_CHANGE") == std::string::npos) { + if (!gcode.empty() && gcode.back() != '\n') + gcode += '\n'; + return std::move(gcode); + } std::istringstream stream(gcode); std::string line; std::ostringstream output; diff --git a/src/libslic3r/GCode/AdaptivePAProcessor.hpp b/src/libslic3r/GCode/AdaptivePAProcessor.hpp index 01aa2f1104..f3aef6ce82 100644 --- a/src/libslic3r/GCode/AdaptivePAProcessor.hpp +++ b/src/libslic3r/GCode/AdaptivePAProcessor.hpp @@ -11,12 +11,14 @@ #include #include #include +#include #include "AdaptivePAInterpolator.hpp" namespace Slic3r { // Forward declaration of GCode class class GCode; +class PrintConfig; /** * @brief Class for processing G-code layers with adaptive pressure advance. @@ -76,6 +78,7 @@ private: double m_next_feedrate; ///< First feed rate (speed) for the upcomming island. double m_current_feedrate; ///< Current, latest feedrate. int m_last_config_index; ///< Filament config index of the last PA_CHANGE tag. + bool m_enabled{false}; ///< Whether any filament config index has both PA and adaptive PA on, the only ones that emit PA_CHANGE tags. std::regex m_pa_change_pattern; ///< Regular expression to detect PA_CHANGE pattern. std::regex m_g1_f_pattern; ///< Regular expression to detect G1 F pattern. diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp index 21f02b3462..62c2ae61fd 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.cpp @@ -7,11 +7,30 @@ #include "../Geometry.hpp" #include "../ClipperUtils.hpp" #include "../SVG.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include "libslic3r/Utils.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/Config.hpp" #include "AvoidCrossingPerimeters.hpp" +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp b/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp index a348eed786..53e2942d3b 100644 --- a/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp +++ b/src/libslic3r/GCode/AvoidCrossingPerimeters.hpp @@ -4,6 +4,10 @@ #include "../libslic3r.h" #include "../ExPolygon.hpp" #include "../EdgeGrid.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/BoundingBox.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/ConflictChecker.cpp b/src/libslic3r/GCode/ConflictChecker.cpp index e8f533be7c..70b58423fa 100644 --- a/src/libslic3r/GCode/ConflictChecker.cpp +++ b/src/libslic3r/GCode/ConflictChecker.cpp @@ -1,11 +1,28 @@ #include "ConflictChecker.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/ExtrusionEntityCollection.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Layer.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/GCode/GCodeProcessor.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/ConflictChecker.hpp b/src/libslic3r/GCode/ConflictChecker.hpp index a10b969431..50a126b89a 100644 --- a/src/libslic3r/GCode/ConflictChecker.hpp +++ b/src/libslic3r/GCode/ConflictChecker.hpp @@ -5,8 +5,18 @@ #include "../Model.hpp" #include "../Print.hpp" #include "../Layer.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/ExtrusionEntityCollection.hpp" +#include "libslic3r/GCode/GCodeProcessor.hpp" #include +#include +#include +#include +#include #include #include diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index 7f6e9c67d5..28a561369b 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -1,12 +1,27 @@ #include "../GCode.hpp" +#include "../LocalesUtils.hpp" +#include "libslic3r/Extruder.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Circle.hpp" #include "CoolingBuffer.hpp" +#include #include #include #include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include +#include +#include #if 0 #define DEBUG @@ -394,13 +409,13 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: if (*c == 0 || *c == ';') break; - assert(is_decimal_separator_point()); // for atof //BBS: Parse the axis. size_t axis = (*c >= 'X' && *c <= 'Z') ? (*c - 'X') : (*c == 'E') ? 3 : (*c == 'F') ? 4 : (*c == 'I') ? 5 : (*c == 'J') ? 6 : size_t(-1); if (axis != size_t(-1)) { - new_pos[axis] = float(atof(++c)); + ++ c; + new_pos[axis] = float(atof_decimal_point(std::string_view(c, sline.data() + sline.size() - c))); if (axis == 4) { // Convert mm/min to mm/sec. new_pos[4] /= 60.f; @@ -536,10 +551,9 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: line.type = CoolingLine::TYPE_G4; size_t pos_S = sline.find('S', 3); size_t pos_P = sline.find('P', 3); - assert(is_decimal_separator_point()); // for atof line.time = line.time_max = float( - (pos_S > 0) ? atof(sline.c_str() + pos_S + 1) : - (pos_P > 0) ? atof(sline.c_str() + pos_P + 1) * 0.001 : 0.); + (pos_S > 0) ? atof_decimal_point(sline.c_str() + pos_S + 1) : + (pos_P > 0) ? atof_decimal_point(sline.c_str() + pos_P + 1) * 0.001 : 0.); } else if (boost::starts_with(sline, ";_FORCE_RESUME_FAN_SPEED")) { line.type = CoolingLine::TYPE_FORCE_RESUME_FAN; } diff --git a/src/libslic3r/GCode/CoolingBuffer.hpp b/src/libslic3r/GCode/CoolingBuffer.hpp index 742b8f78b7..0f7e27b14f 100644 --- a/src/libslic3r/GCode/CoolingBuffer.hpp +++ b/src/libslic3r/GCode/CoolingBuffer.hpp @@ -2,14 +2,18 @@ #define slic3r_CoolingBuffer_hpp_ #include "../libslic3r.h" +#include "../Point.hpp" +#include #include #include #include +#include namespace Slic3r { class GCode; class Layer; +class PrintConfig; struct PerExtruderAdjustments; // A standalone G-code filter, to control cooling of the print. diff --git a/src/libslic3r/GCode/ElegooGCodeProcessorHelper.cpp b/src/libslic3r/GCode/ElegooGCodeProcessorHelper.cpp index cac53637a5..1b086e4f47 100644 --- a/src/libslic3r/GCode/ElegooGCodeProcessorHelper.cpp +++ b/src/libslic3r/GCode/ElegooGCodeProcessorHelper.cpp @@ -1,10 +1,13 @@ #include "GCodeProcessor.hpp" +#include "libslic3r/GCodeReader.hpp" #include "libslic3r/libslic3r.h" #include #include #include +#include +#include #include namespace Slic3r { diff --git a/src/libslic3r/GCode/ExtrusionProcessor.hpp b/src/libslic3r/GCode/ExtrusionProcessor.hpp index 8ed829aa6e..6abf09fe14 100644 --- a/src/libslic3r/GCode/ExtrusionProcessor.hpp +++ b/src/libslic3r/GCode/ExtrusionProcessor.hpp @@ -15,12 +15,16 @@ #include "../ClipperUtils.hpp" #include "../Flow.hpp" #include "../Config.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExPolygon.hpp" +#include #include #include #include #include #include +#include #include #include #include @@ -35,7 +39,14 @@ template struct ExtendedPoint float curvature; }; -template +// A KNOWN_DISTANCES functor that knows no distances, so every input point is queried. +struct NoKnownDistances +{ + template const double *operator()(const P &) const { return nullptr; } +}; + +template std::vector> estimate_points_properties(const POINTS& input_points, const AABBTreeLines::LinesDistancer& unscaled_prev_layer, float flow_width, @@ -46,7 +57,9 @@ std::vector> estimate_points_properties(const POINTS& const std::function& distance_to_speed = {}, // Overlap (1 - distance / flow_width) at or below which the overhang // fan switches on; negative when the fan does not depend on overlap. - float fan_overlap_threshold = -1.0f) + float fan_overlap_threshold = -1.0f, + // Returns an input point's signed distance if already known, else nullptr. + const KNOWN_DISTANCES& known_distance = KNOWN_DISTANCES{}) { bool looped = input_points.front() == input_points.back(); std::function get_prev_index = [](size_t idx, size_t count) { @@ -91,21 +104,26 @@ std::vector> estimate_points_properties(const POINTS& float boundary_offset = PREV_LAYER_BOUNDARY_OFFSET ? 0.5 * flow_width : 0.0f; auto maybe_unscale = [](const P& p) -> Vec { return SCALED_INPUT ? unscaled(p) : p.template cast(); }; + using Distance = typename AABBTreeLines::LinesDistancer::Floating; + auto input_distance = [&unscaled_prev_layer, &known_distance](const P &input, const Vec &position) -> Distance { + if (const double *known = known_distance(input)) + return Distance(*known); + auto [distance, nearest_line, x] = unscaled_prev_layer.template distance_from_lines_extra( + position.template cast()); + return distance; + }; + std::vector> points; points.reserve(input_points.size() * (ADD_INTERSECTIONS ? 1.5 : 1)); { ExtendedPoint start_point{maybe_unscale(input_points.front())}; - auto [distance, nearest_line, x] = unscaled_prev_layer.template distance_from_lines_extra( - start_point.position.template cast()); - start_point.distance = distance + boundary_offset; + start_point.distance = input_distance(input_points.front(), start_point.position) + 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.template cast()); - next_point.distance = distance + boundary_offset; + next_point.distance = input_distance(input_points[i], next_point.position) + boundary_offset; // Intersection handling if (ADD_INTERSECTIONS && @@ -346,6 +364,9 @@ std::vector> estimate_points_properties(const POINTS& points = std::move(new_points); } + if constexpr (!CURVATURE) + return points; + // Curvature calculation float accumulated_distance = 0; std::vector distances_for_curvature(points.size()); @@ -414,6 +435,49 @@ std::vector> estimate_points_properties(const POINTS& return points; } +struct Point3Hash +{ + size_t operator()(const Vec3crd &pt) const noexcept { return size_t(((89 * 31 + int64_t(pt.x())) * 31 + pt.y()) * 31 + pt.z()); } +}; + +// The trees of the layer below an object layer, and the signed distances from the layer's perimeter and bridge +// vertices to that layer's outline, computed for ExtrusionQualityEstimator ahead of the G-code generator. +struct PrecomputedOverhangLayer +{ + const PrintObject *object{nullptr}; + const Layer *layer{nullptr}; + std::shared_ptr> lower_boundaries; + std::shared_ptr> lower_curled_lines; + std::unordered_map distances; +}; + +// `layer` must have a layer below it; leave out `curled_lines` only when no region of `layer` slows down for curled +// perimeters. +inline PrecomputedOverhangLayer precompute_overhang_layer(const PrintObject *object, const Layer &layer, bool curled_lines = true) +{ + PrecomputedOverhangLayer out{object, &layer, + std::make_shared>(to_unscaled_linesf3(layer.lower_layer->lslices)), + curled_lines ? std::make_shared>(layer.lower_layer->curled_lines) : + nullptr, + {}}; + const AABBTreeLines::LinesDistancer &lower = *out.lower_boundaries; + auto add_path = [&out, &lower](const ExtrusionPath &path) { + if (!is_bridge(path.role()) && !is_perimeter(path.role())) + return; + for (const Point3 &point : path.polyline.points) + if (auto [it, inserted] = out.distances.try_emplace(point, 0.); inserted) { + const Eigen::Matrix position = unscaled(point); + auto [distance, nearest_line, x] = lower.distance_from_lines_extra(position.cast()); + it->second = distance; + } + }; + for (const LayerRegion *region : layer.regions()) { + for_each_extrusion_path(region->perimeters, add_path); + for_each_extrusion_path(region->fills, add_path); + } + return out; +} + struct ProcessedPoint { Point3 p; @@ -423,23 +487,53 @@ struct ProcessedPoint 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; + using Boundaries = AABBTreeLines::LinesDistancer; + using CurledLines = AABBTreeLines::LinesDistancer; + std::unordered_map> prev_layer_boundaries; + std::unordered_map> prev_curled_extrusions; + // The layers the trees above are built from, and the layers prepared last. + std::unordered_map prev_layer_sources; + std::unordered_map last_prepared_layers; + std::vector precomputed_layers; + const PrintObject *current_object; + + const PrecomputedOverhangLayer *precomputed_for(const PrintObject *object) const + { + auto it = std::find_if(precomputed_layers.begin(), precomputed_layers.end(), + [object](const PrecomputedOverhangLayer &layer) { return layer.object == object; }); + return it == precomputed_layers.end() ? nullptr : &*it; + } + + template static const T &or_empty(const std::shared_ptr &tree) + { + static const T empty; + return tree ? *tree : empty; + } public: void set_current_object(const PrintObject *object) { current_object = object; } + // Takes the data computed ahead for the layer about to be generated, replacing the previous layer's. + void set_precomputed_layers(std::vector &&layers) { precomputed_layers = std::move(layers); } + + // Measures the layer against the layer prepared before it. void prepare_for_new_layer(const PrintObject * obj, const Layer *layer) { if (layer == nullptr) return; const PrintObject *object = obj; - prev_layer_boundaries[object] = next_layer_boundaries[object]; - next_layer_boundaries[object] = AABBTreeLines::LinesDistancer{to_unscaled_linesf3(layer->lslices)}; - prev_curled_extrusions[object] = next_curled_extrusions[object]; - next_curled_extrusions[object] = AABBTreeLines::LinesDistancer{layer->curled_lines}; + const Layer *prev = std::exchange(last_prepared_layers[object], layer); + prev_layer_sources[object] = prev; + const PrecomputedOverhangLayer *precomputed = precomputed_for(object); + if (prev == nullptr) { + prev_layer_boundaries[object] = nullptr; + prev_curled_extrusions[object] = nullptr; + } else if (precomputed != nullptr && precomputed->layer == layer && layer->lower_layer == prev) { + prev_layer_boundaries[object] = precomputed->lower_boundaries; + prev_curled_extrusions[object] = precomputed->lower_curled_lines; + } else { + prev_layer_boundaries[object] = std::make_shared(to_unscaled_linesf3(prev->lslices)); + prev_curled_extrusions[object] = std::make_shared(prev->curled_lines); + } } std::vector estimate_extrusion_quality(const ExtrusionPath &path, @@ -523,9 +617,24 @@ public: return std::min(calculate_speed(distance), original_speed); }; + // Precomputed distances hold only if they were measured against the layer prev_layer_boundaries is built from. + const std::unordered_map *known = nullptr; + if (const PrecomputedOverhangLayer *precomputed = precomputed_for(current_object); + precomputed != nullptr && precomputed->layer->lower_layer == prev_layer_sources[current_object]) + known = &precomputed->distances; + const Boundaries &prev_boundaries = or_empty(prev_layer_boundaries[current_object]); + const CurledLines &prev_curled = or_empty(prev_curled_extrusions[current_object]); + auto known_distance = [known](const Point3 &point) -> const double * { + if (known == nullptr) + return nullptr; + auto it = known->find(point); + return it == known->end() ? nullptr : &it->second; + }; + std::vector> extended_points = - estimate_points_properties(path.polyline.points, prev_layer_boundaries[current_object], path.width, -1, - smallest_distance_with_lower_speed, effective_speed, fan_overlap_threshold); + estimate_points_properties(path.polyline.points, prev_boundaries, path.width, -1, + smallest_distance_with_lower_speed, effective_speed, fan_overlap_threshold, + known_distance); const auto width_inv = 1.0f / path.width; std::vector processed_points; processed_points.reserve(extended_points.size()); @@ -539,7 +648,7 @@ public: const double dist_limit = 10.0 * path.width; { Vec3d middle = 0.5 * (curr.position + next.position); - auto line_indices = prev_curled_extrusions[current_object].all_lines_in_radius(Point::new_scale(middle), + auto line_indices = prev_curled.all_lines_in_radius(Point::new_scale(middle), scale_(dist_limit)); if (!line_indices.empty()) { double len = (next.position - curr.position).norm(); @@ -560,7 +669,7 @@ public: double projected_lengths_sum = 0; for (size_t idx : line_indices) { - const CurledLine& line = prev_curled_extrusions[current_object].get_line(idx); + const CurledLine& line = prev_curled.get_line(idx); Lines inside = intersection_ln({{line.a, line.b}}, {box_of_influence}); if (inside.empty()) continue; @@ -573,7 +682,7 @@ public: } for (size_t idx : line_indices) { - const CurledLine &line = prev_curled_extrusions[current_object].get_line(idx); + const CurledLine &line = prev_curled.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)) * diff --git a/src/libslic3r/GCode/FanMover.cpp b/src/libslic3r/GCode/FanMover.cpp index 9d77d1d04c..cb5fc310ee 100644 --- a/src/libslic3r/GCode/FanMover.cpp +++ b/src/libslic3r/GCode/FanMover.cpp @@ -1,10 +1,25 @@ #include "FanMover.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/ExtrusionEntity.hpp" #include "GCodeReader.hpp" +#include +#include +#include +#include +#include +#include +#include +#include #include /* +#include +#include +#include #include +#include #include #include @@ -12,8 +27,12 @@ #include "../PrintConfig.hpp" #include "../Utils.hpp" #include "Print.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/libslic3r.h" #include +#include +#include */ diff --git a/src/libslic3r/GCode/FanMover.hpp b/src/libslic3r/GCode/FanMover.hpp index 17addd855c..b3a6fcb309 100644 --- a/src/libslic3r/GCode/FanMover.hpp +++ b/src/libslic3r/GCode/FanMover.hpp @@ -9,7 +9,12 @@ #include "../Point.hpp" #include "../GCodeReader.hpp" #include "../GCodeWriter.hpp" +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index e03be228d0..33b9119116 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1,14 +1,30 @@ +#include "libslic3r/Config.hpp" +#include "libslic3r/CustomGCode.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/CommonDefs.hpp" +#include "libslic3r/ArcFitter.hpp" #include "ExtrusionEntity.hpp" +#include "libslic3r/GCodeReader.hpp" #include "GCodeWriter.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/PrintBase.hpp" +#include "libslic3r/Polygon.hpp" #include "PrintConfig.hpp" +#include "libslic3r/TriangleSelector.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/Utils.hpp" #include "libslic3r/Print.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/LocalesUtils.hpp" #include "libslic3r/format.hpp" +#include "libslic3r_version.h" #include "GCodeProcessor.hpp" +#include +#include +#include +#include #include #include #include @@ -16,15 +32,38 @@ #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include +#include #include +#include +#include +#include +#include #if __has_include() #include @@ -870,8 +909,8 @@ public: { // Orca: find start pos by seaching G28/G29/PRINT_START/START_PRINT commands auto is_start_pos = [](const std::string& curr_cmd) { - return boost::iequals(curr_cmd, "G28") || boost::iequals(curr_cmd, "G29") || boost::iequals(curr_cmd, "PRINT_START") || - boost::iequals(curr_cmd, "START_PRINT"); + return ascii_iequals(curr_cmd, "G28") || ascii_iequals(curr_cmd, "G29") || ascii_iequals(curr_cmd, "PRINT_START") || + ascii_iequals(curr_cmd, "START_PRINT"); }; assert(!m_lines.empty()); const float time_step = backtrace.time_step(); @@ -1226,6 +1265,9 @@ void GCodeProcessor::run_post_process() // Process inline placeholders (print_time_total_sec, print_time_day, print_time_hour, print_time_minute, print_time_sec and used_filament_length) auto process_inline_placeholders = [&](std::string& gcode_line) { bool processed = false; + // Every inline placeholder contains '@', so a line without one has nothing to replace. + if (gcode_line.find('@') == std::string::npos) + return processed; const std::string& print_time_total_placeholder = reserved_tag(ETags::Print_Time_Total_Sec_Placeholder); const std::string& print_time_day_placeholder = reserved_tag(ETags::Print_Time_Day_Placeholder); @@ -3968,13 +4010,13 @@ void GCodeProcessor::process_gcode_line(const GCodeReader::GCodeLine& line, bool const std::string_view cmd = line.cmd(); if (m_flavor == gcfKlipper) { - if (boost::iequals(cmd, "SET_VELOCITY_LIMIT")) + if (ascii_iequals(cmd, "SET_VELOCITY_LIMIT")) { process_SET_VELOCITY_LIMIT(line); return; } // ORCA: Add Pressure Advance visualization support - if (boost::iequals(cmd, "SET_PRESSURE_ADVANCE")) + if (ascii_iequals(cmd, "SET_PRESSURE_ADVANCE")) { process_SET_PRESSURE_ADVANCE(line); return; @@ -7512,51 +7554,72 @@ void GCodeProcessor::calculate_time(GCodeProcessorResult& result, size_t keep_la actual_speed_moves = std::move(machine.actual_speed_moves); } - // insert actual speed moves into the move list - unsigned int inserted_actual_speed_moves_count = 0; - std::vector new_moves; - std::map id_map; - for (auto it = actual_speed_moves.begin(); it != actual_speed_moves.end(); ++it) { - const unsigned int base_id = it->move_id + inserted_actual_speed_moves_count; - if (it->position.has_value()) { - // insert actual speed move into the move list - // clone from existing move - GCodeProcessorResult::MoveVertex new_move = result.moves[base_id]; - // override modified parameters - new_move.time = { 0.0f, 0.0f }; - new_move.position = *it->position; - new_move.actual_feedrate = it->actual_feedrate; - new_move.delta_extruder = *it->delta_extruder; - new_move.feedrate = *it->feedrate; - new_move.width = *it->width; - new_move.height = *it->height; - new_move.mm3_per_mm = *it->mm3_per_mm; - new_move.fan_speed = *it->fan_speed; - new_move.temperature = *it->temperature; - new_move.internal_only = true; - new_moves.push_back(new_move); + // actual_speed_moves holds, per block in move order, the moves to insert before the block's move and then an + // entry without a position for that move; positioned entries after the last such entry are dropped. + std::vector& moves = result.moves; + size_t inserted_actual_speed_moves_count = 0; + size_t kept = 0; + size_t group_start = 0; + for (size_t i = 0; i < actual_speed_moves.size(); ++i) { + if (actual_speed_moves[i].position.has_value()) + continue; + const unsigned int move_id = actual_speed_moves[i].move_id; + // A VG1 block has no move of its own, so its id can fall behind the previous block's or point past the list. + if (move_id < moves.size() && (kept == 0 || move_id > actual_speed_moves[kept - 1].move_id)) { + inserted_actual_speed_moves_count += i - group_start; + moves[move_id].actual_feedrate = actual_speed_moves[i].actual_feedrate; + // A seam vertex right after a block's move shares its actual speed. + if (move_id + 1 < moves.size() && moves[move_id + 1].type == EMoveType::Seam) + moves[move_id + 1].actual_feedrate = actual_speed_moves[i].actual_feedrate; + for (size_t j = group_start; j <= i; ++j, ++kept) + if (kept != j) + actual_speed_moves[kept] = std::move(actual_speed_moves[j]); } - else { - result.moves.insert(result.moves.begin() + base_id, new_moves.begin(), new_moves.end()); - id_map[it->move_id] = base_id + new_moves.size(); - // update move actual speed - result.moves[base_id + new_moves.size()].actual_feedrate = it->actual_feedrate; - inserted_actual_speed_moves_count += new_moves.size(); - // synchronize seams actual speed - if (base_id + new_moves.size() + 1 < result.moves.size()) { - GCodeProcessorResult::MoveVertex& move = result.moves[base_id + new_moves.size() + 1]; - if (move.type == EMoveType::Seam) - move.actual_feedrate = it->actual_feedrate; - } - new_moves.clear(); + group_start = i + 1; + } + actual_speed_moves.erase(actual_speed_moves.begin() + kept, actual_speed_moves.end()); + + // Walks the blocks back to front, so each shifted move is moved once, into its final slot. + size_t read = moves.size(); // one past the last move not yet placed + moves.resize(moves.size() + inserted_actual_speed_moves_count); + size_t write = moves.size(); // one past the last free slot + m_actual_speed_id_map.clear(); + size_t entry = actual_speed_moves.size(); + while (entry > 0) { + const unsigned int block_id = actual_speed_moves[--entry].move_id; + assert(block_id < read); + while (read > block_id + 1) + moves[--write] = moves[--read]; + const GCodeProcessorResult::MoveVertex block_move = moves[--read]; + moves[--write] = block_move; + m_actual_speed_id_map.emplace_back(block_id, (unsigned int)write); + for (; entry > 0 && actual_speed_moves[entry - 1].position.has_value(); --entry) { + const TimeMachine::ActualSpeedMove& it = actual_speed_moves[entry - 1]; + GCodeProcessorResult::MoveVertex new_move = block_move; + new_move.time = { 0.0f, 0.0f }; + new_move.position = *it.position; + new_move.actual_feedrate = it.actual_feedrate; + new_move.delta_extruder = *it.delta_extruder; + new_move.feedrate = *it.feedrate; + new_move.width = *it.width; + new_move.height = *it.height; + new_move.mm3_per_mm = *it.mm3_per_mm; + new_move.fan_speed = *it.fan_speed; + new_move.temperature = *it.temperature; + new_move.internal_only = true; + moves[--write] = new_move; } } + assert(read == write); // synchronize blocks' move_ids with after moves for actual speed insertion + std::reverse(m_actual_speed_id_map.begin(), m_actual_speed_id_map.end()); for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { for (GCodeProcessor::TimeBlock& block : m_time_processor.machines[i].blocks) { - auto it = id_map.find(block.move_id); - block.move_id = (it != id_map.end()) ? it->second : block.move_id + inserted_actual_speed_moves_count; + auto it = std::lower_bound(m_actual_speed_id_map.begin(), m_actual_speed_id_map.end(), block.move_id, + [](const std::pair& entry, unsigned int id) { return entry.first < id; }); + block.move_id = (it != m_actual_speed_id_map.end() && it->first == block.move_id) ? + it->second : block.move_id + (unsigned int)inserted_actual_speed_moves_count; } } } diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 192a80a43d..819b019703 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -1,6 +1,11 @@ #ifndef slic3r_GCodeProcessor_hpp_ #define slic3r_GCodeProcessor_hpp_ +#include "libslic3r/CommonDefs.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/ArcFitter.hpp" #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Point.hpp" #include "libslic3r/ExtrusionEntity.hpp" @@ -8,8 +13,17 @@ #include "libslic3r/CustomGCode.hpp" #include "libslic3r/MultiNozzleUtils.hpp" +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -323,54 +337,57 @@ class Print; //BBS: add mutex for protection of gcode result mutable std::mutex result_mutex; - GCodeProcessorResult& operator=(const GCodeProcessorResult &other) + GCodeProcessorResult& operator=(const GCodeProcessorResult &other) { assign(other); return *this; } + // Declared because the user-declared copy assignment suppresses the implicit move. + GCodeProcessorResult& operator=(GCodeProcessorResult &&other) { assign(std::move(other)); return *this; } + // Add a new member here, or neither assignment transfers it. + template void assign(Other &&other) { - filename = other.filename; - id = other.id; - moves = other.moves; - lines_ends = other.lines_ends; - printable_area = other.printable_area; - bed_exclude_area = other.bed_exclude_area; - wrapping_exclude_area = other.wrapping_exclude_area; - toolpath_outside = other.toolpath_outside; - label_object_enabled = other.label_object_enabled; - long_retraction_when_cut = other.long_retraction_when_cut; - timelapse_warning_code = other.timelapse_warning_code; - printable_height = other.printable_height; - settings_ids = other.settings_ids; - filaments_count = other.filaments_count; - extruder_colors = other.extruder_colors; - filament_diameters = other.filament_diameters; - filament_densities = other.filament_densities; - filament_costs = other.filament_costs; - print_statistics = other.print_statistics; - custom_gcode_per_print_z = other.custom_gcode_per_print_z; - spiral_vase_mode = other.spiral_vase_mode; - warnings = other.warnings; - bed_type = other.bed_type; - gcode_check_result = other.gcode_check_result; - limit_filament_maps = other.limit_filament_maps; - filament_printable_reuslt = other.filament_printable_reuslt; + filename = std::forward(other).filename; + id = std::forward(other).id; + moves = std::forward(other).moves; + lines_ends = std::forward(other).lines_ends; + printable_area = std::forward(other).printable_area; + bed_exclude_area = std::forward(other).bed_exclude_area; + wrapping_exclude_area = std::forward(other).wrapping_exclude_area; + toolpath_outside = std::forward(other).toolpath_outside; + label_object_enabled = std::forward(other).label_object_enabled; + long_retraction_when_cut = std::forward(other).long_retraction_when_cut; + timelapse_warning_code = std::forward(other).timelapse_warning_code; + printable_height = std::forward(other).printable_height; + settings_ids = std::forward(other).settings_ids; + filaments_count = std::forward(other).filaments_count; + extruder_colors = std::forward(other).extruder_colors; + filament_diameters = std::forward(other).filament_diameters; + filament_densities = std::forward(other).filament_densities; + filament_costs = std::forward(other).filament_costs; + print_statistics = std::forward(other).print_statistics; + custom_gcode_per_print_z = std::forward(other).custom_gcode_per_print_z; + spiral_vase_mode = std::forward(other).spiral_vase_mode; + warnings = std::forward(other).warnings; + bed_type = std::forward(other).bed_type; + gcode_check_result = std::forward(other).gcode_check_result; + limit_filament_maps = std::forward(other).limit_filament_maps; + filament_printable_reuslt = std::forward(other).filament_printable_reuslt; // Orca: copy the shared grouping result so a copied result keeps it (shared_ptr => // memory-safe), rather than leaving a stale pointer on the target. No g-code effect either way. - nozzle_group_result = other.nozzle_group_result; + nozzle_group_result = std::forward(other).nozzle_group_result; // Keep the per-extruder hotend types on a copied result (injector input). - extruder_types = other.extruder_types; - printer_extruder_variant = other.printer_extruder_variant; - printer_extruder_id = other.printer_extruder_id; - layer_filaments = other.layer_filaments; - filament_change_sequence = other.filament_change_sequence; - used_mixed_filaments = other.used_mixed_filaments; - nozzle_change_sequence = other.nozzle_change_sequence; - optimal_assignment = other.optimal_assignment; - filament_change_count_map = other.filament_change_count_map; + extruder_types = std::forward(other).extruder_types; + printer_extruder_variant = std::forward(other).printer_extruder_variant; + printer_extruder_id = std::forward(other).printer_extruder_id; + layer_filaments = std::forward(other).layer_filaments; + filament_change_sequence = std::forward(other).filament_change_sequence; + used_mixed_filaments = std::forward(other).used_mixed_filaments; + nozzle_change_sequence = std::forward(other).nozzle_change_sequence; + optimal_assignment = std::forward(other).optimal_assignment; + filament_change_count_map = std::forward(other).filament_change_count_map; // Keep the SKIPPABLE per-type time on a copied result. - skippable_part_time = other.skippable_part_time; - initial_layer_time = other.initial_layer_time; + skippable_part_time = std::forward(other).skippable_part_time; + initial_layer_time = std::forward(other).initial_layer_time; #if ENABLE_GCODE_VIEWER_STATISTICS - time = other.time; + time = std::forward(other).time; #endif - return *this; } void lock() const { result_mutex.lock(); } void unlock() const { result_mutex.unlock(); } @@ -1202,6 +1219,9 @@ class Print; EProducer m_producer; TimeProcessor m_time_processor; + // calculate_time()'s map from each block's move id to its index after the actual speed moves are inserted, + // a member to reuse its capacity. + std::vector> m_actual_speed_id_map; UsedFilaments m_used_filaments; Print* m_print{ nullptr }; diff --git a/src/libslic3r/GCode/OrderingStrategies.cpp b/src/libslic3r/GCode/OrderingStrategies.cpp index 2ba9ae5490..73cb90f461 100644 --- a/src/libslic3r/GCode/OrderingStrategies.cpp +++ b/src/libslic3r/GCode/OrderingStrategies.cpp @@ -4,9 +4,14 @@ #include "OrderingStrategies.hpp" #include "../Geometry.hpp" #include "../ShortestPath.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/PrintConfig.hpp" #include #include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/GCode/OrderingStrategies.hpp b/src/libslic3r/GCode/OrderingStrategies.hpp index 598eac8130..4e6d766b37 100644 --- a/src/libslic3r/GCode/OrderingStrategies.hpp +++ b/src/libslic3r/GCode/OrderingStrategies.hpp @@ -5,6 +5,8 @@ #include "../libslic3r.h" #include "../Point.hpp" +#include +#include "libslic3r/PrintConfig.hpp" #ifndef SLIC3R_TEST_HARNESS #include "../Print.hpp" diff --git a/src/libslic3r/GCode/PchipInterpolatorHelper.cpp b/src/libslic3r/GCode/PchipInterpolatorHelper.cpp index 44baa6cbf7..b01a23edb5 100644 --- a/src/libslic3r/GCode/PchipInterpolatorHelper.cpp +++ b/src/libslic3r/GCode/PchipInterpolatorHelper.cpp @@ -4,9 +4,13 @@ // Implementation file for the PchipInterpolatorHelper class #include "PchipInterpolatorHelper.hpp" +#include +#include #include #include #include +#include +#include /** * @brief Constructs the PCHIP interpolator with given data points. diff --git a/src/libslic3r/GCode/PreciseSeam.cpp b/src/libslic3r/GCode/PreciseSeam.cpp index 378ab2d2d3..b8eb5ea270 100644 --- a/src/libslic3r/GCode/PreciseSeam.cpp +++ b/src/libslic3r/GCode/PreciseSeam.cpp @@ -1,9 +1,23 @@ #include "PreciseSeam.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/ClipperUtils.hpp" #include "SeamPlacer.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/BoundingBox.hpp" #include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include namespace Slic3r { namespace PreciseSeam { diff --git a/src/libslic3r/GCode/PreciseSeam.hpp b/src/libslic3r/GCode/PreciseSeam.hpp index d5c1e98952..f4f75c37bf 100644 --- a/src/libslic3r/GCode/PreciseSeam.hpp +++ b/src/libslic3r/GCode/PreciseSeam.hpp @@ -2,9 +2,11 @@ #define slic3r_PreciseSeam_hpp_ #include +#include #include #include #include +#include "libslic3r/Point.hpp" #include "libslic3r/Polygon.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/Model.hpp" diff --git a/src/libslic3r/GCode/PressureEqualizer.cpp b/src/libslic3r/GCode/PressureEqualizer.cpp index 3db54ca2af..44ca576933 100644 --- a/src/libslic3r/GCode/PressureEqualizer.cpp +++ b/src/libslic3r/GCode/PressureEqualizer.cpp @@ -1,8 +1,17 @@ +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include #include +#include #include "../libslic3r.h" #include "../PrintConfig.hpp" @@ -10,6 +19,8 @@ #include "../GCode.hpp" #include "PressureEqualizer.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Exception.hpp" #include "fast_float/fast_float.h" #include "GCodeWriter.hpp" diff --git a/src/libslic3r/GCode/PressureEqualizer.hpp b/src/libslic3r/GCode/PressureEqualizer.hpp index 2f2982860e..be8e0e77fe 100644 --- a/src/libslic3r/GCode/PressureEqualizer.hpp +++ b/src/libslic3r/GCode/PressureEqualizer.hpp @@ -2,7 +2,14 @@ #define slic3r_GCode_PressureEqualizer_hpp_ #include "../libslic3r.h" +#include "../ExtrusionEntity.hpp" #include "../PrintConfig.hpp" +#include +#include +#include +#include +#include +#include #include diff --git a/src/libslic3r/GCode/PrintExtents.cpp b/src/libslic3r/GCode/PrintExtents.cpp index 9008adaa9a..71bc826258 100644 --- a/src/libslic3r/GCode/PrintExtents.cpp +++ b/src/libslic3r/GCode/PrintExtents.cpp @@ -10,7 +10,16 @@ #include "../Print.hpp" #include "PrintExtents.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/Geometry.hpp" #include "WipeTower.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp index 776091adfb..32994741d4 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp @@ -1,6 +1,15 @@ #include "../ClipperUtils.hpp" #include "../Layer.hpp" #include "../Polyline.hpp" +#include "libslic3r/Surface.hpp" +#include +#include "libslic3r/AABBTreeIndirect.hpp" +#include +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/Polygon.hpp" #include "RetractWhenCrossingPerimeters.hpp" diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.hpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.hpp index fb624d7f90..e6029ce7f1 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.hpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.hpp @@ -4,6 +4,7 @@ #include #include "../AABBTreeIndirect.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index d527ec6aa9..720339f746 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1,15 +1,38 @@ #include "SeamPlacer.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/AABBTreeIndirect.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExPolygon.hpp" #include "Polygon.hpp" +#include "libslic3r/PrintBase.hpp" #include "PrintConfig.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/TriangleSelector.hpp" #include "tbb/parallel_for.h" #include "tbb/blocked_range.h" #include "tbb/parallel_reduce.h" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include #include +#include +#include #include "libslic3r/AABBTreeLines.hpp" #include "libslic3r/KDTreeIndirect.hpp" diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 9855b4f4aa..cbf2c73fbe 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -1,12 +1,17 @@ #ifndef libslic3r_SeamPlacer_hpp_ #define libslic3r_SeamPlacer_hpp_ +#include +#include #include #include +#include +#include #include #include #include +#include "libslic3r/Point.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/Polygon.hpp" diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp index 20377cfe8d..fec0e4aa88 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp @@ -6,16 +6,26 @@ // Based on original work by Alexander Þór licensed under the GPLv3: // https://github.com/Alexander-T-Moss/Small-Area-Flow-Comp +#include +#include +#include #include #include #include +#include +#include #include #include "../libslic3r.h" #include "../PrintConfig.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/GCode/PchipInterpolatorHelper.hpp" +#include "libslic3r/ExtrusionEntity.hpp" #include "SmallAreaInfillFlowCompensator.hpp" #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp index de1df98170..2139e7f438 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp @@ -6,6 +6,7 @@ #include "../ExtrusionEntity.hpp" #include "PchipInterpolatorHelper.hpp" #include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/SpiralVase.cpp b/src/libslic3r/GCode/SpiralVase.cpp index 2c39bda4f7..d96f99de4f 100644 --- a/src/libslic3r/GCode/SpiralVase.cpp +++ b/src/libslic3r/GCode/SpiralVase.cpp @@ -1,8 +1,13 @@ #include "SpiralVase.hpp" #include "GCode.hpp" +#include "libslic3r/libslic3r.h" +#include +#include #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/SpiralVase.hpp b/src/libslic3r/GCode/SpiralVase.hpp index f28b4c5f55..b1e7c79f7e 100644 --- a/src/libslic3r/GCode/SpiralVase.hpp +++ b/src/libslic3r/GCode/SpiralVase.hpp @@ -3,6 +3,10 @@ #include "../libslic3r.h" #include "../GCodeReader.hpp" +#include "libslic3r/PrintConfig.hpp" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/ThumbnailData.cpp b/src/libslic3r/GCode/ThumbnailData.cpp index d895c0d95f..a86d10c4a4 100644 --- a/src/libslic3r/GCode/ThumbnailData.cpp +++ b/src/libslic3r/GCode/ThumbnailData.cpp @@ -1,4 +1,5 @@ #include "ThumbnailData.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/ThumbnailData.hpp b/src/libslic3r/GCode/ThumbnailData.hpp index bc37ad40c4..f112000273 100644 --- a/src/libslic3r/GCode/ThumbnailData.hpp +++ b/src/libslic3r/GCode/ThumbnailData.hpp @@ -1,7 +1,10 @@ #ifndef slic3r_ThumbnailData_hpp_ #define slic3r_ThumbnailData_hpp_ +#include +#include #include +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" #include "nlohmann/json.hpp" diff --git a/src/libslic3r/GCode/Thumbnails.cpp b/src/libslic3r/GCode/Thumbnails.cpp index 526ba82498..9d32b0b63b 100644 --- a/src/libslic3r/GCode/Thumbnails.cpp +++ b/src/libslic3r/GCode/Thumbnails.cpp @@ -1,11 +1,27 @@ #include "Thumbnails.hpp" #include "../miniz_extension.hpp" +#include "libslic3r/GCode/ThumbnailData.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/enum_bitmask.hpp" #include "format.hpp" #include #include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include #include #include diff --git a/src/libslic3r/GCode/Thumbnails.hpp b/src/libslic3r/GCode/Thumbnails.hpp index bcee02fea1..fd72973bac 100644 --- a/src/libslic3r/GCode/Thumbnails.hpp +++ b/src/libslic3r/GCode/Thumbnails.hpp @@ -4,9 +4,13 @@ #include "../Point.hpp" #include "../PrintConfig.hpp" #include "../enum_bitmask.hpp" +#include "libslic3r/Config.hpp" #include "ThumbnailData.hpp" #include "../enum_bitmask.hpp" +#include +#include +#include #include #include #include diff --git a/src/libslic3r/GCode/TimelapsePosPicker.cpp b/src/libslic3r/GCode/TimelapsePosPicker.cpp index 364624a88c..fded08c1ce 100644 --- a/src/libslic3r/GCode/TimelapsePosPicker.cpp +++ b/src/libslic3r/GCode/TimelapsePosPicker.cpp @@ -1,6 +1,23 @@ #include "ClipperUtils.hpp" #include "TimelapsePosPicker.hpp" +#include "libslic3r/ExPolygon.hpp" #include "Layer.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/PrintConfig.hpp" +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include +#include +#include "libslic3r/Print.hpp" +#include +#include +#include +#include "libslic3r/Utils.hpp" +#include "libslic3r/Polyline.hpp" constexpr int FILTER_THRESHOLD = 5; constexpr int MAX_CANDIDATE_SIZE = 5; diff --git a/src/libslic3r/GCode/TimelapsePosPicker.hpp b/src/libslic3r/GCode/TimelapsePosPicker.hpp index 9ed6b14fc7..af102e6340 100644 --- a/src/libslic3r/GCode/TimelapsePosPicker.hpp +++ b/src/libslic3r/GCode/TimelapsePosPicker.hpp @@ -1,7 +1,11 @@ #ifndef TIMELAPSE_POS_PICKER_HPP #define TIMELAPSE_POS_PICKER_HPP +#include +#include #include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/BoundingBox.hpp" #include "libslic3r/Point.hpp" #include "libslic3r/ExPolygon.hpp" #include "libslic3r/Print.hpp" diff --git a/src/libslic3r/GCode/ToolOrderUtils.cpp b/src/libslic3r/GCode/ToolOrderUtils.cpp index 4a67477d24..b64042a23f 100644 --- a/src/libslic3r/GCode/ToolOrderUtils.cpp +++ b/src/libslic3r/GCode/ToolOrderUtils.cpp @@ -1,9 +1,23 @@ #include "ToolOrderUtils.hpp" +#include "libslic3r/MultiNozzleUtils.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/ToolOrderUtils.hpp b/src/libslic3r/GCode/ToolOrderUtils.hpp index 7b103531b1..db24545f33 100644 --- a/src/libslic3r/GCode/ToolOrderUtils.hpp +++ b/src/libslic3r/GCode/ToolOrderUtils.hpp @@ -1,6 +1,7 @@ #ifndef TOOL_ORDER_UTILS_HPP #define TOOL_ORDER_UTILS_HPP +#include #include #include #include diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 5026323d54..38532a2f67 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1,4 +1,9 @@ +#include "libslic3r/Exception.hpp" +#include "libslic3r/CustomGCode.hpp" +#include "libslic3r/Config.hpp" #include "ExtrusionEntity.hpp" +#include "libslic3r/ObjectID.hpp" +#include "libslic3r/FilamentGroup.hpp" #include "Print.hpp" #include "ToolOrdering.hpp" #include "Layer.hpp" @@ -9,11 +14,23 @@ #include "MultiNozzleUtils.hpp" #include "FilamentMixer.hpp" #include "LocalesUtils.hpp" +#include "libslic3r/PrintConfig.hpp" #include "Utils.hpp" #include "format.hpp" #include "I18N.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // #define SLIC3R_DEBUG diff --git a/src/libslic3r/GCode/ToolOrdering.hpp b/src/libslic3r/GCode/ToolOrdering.hpp index 1b8ce190d7..70b55fdb33 100644 --- a/src/libslic3r/GCode/ToolOrdering.hpp +++ b/src/libslic3r/GCode/ToolOrdering.hpp @@ -5,11 +5,19 @@ #include "../libslic3r.h" +#include +#include +#include #include #include +#include +#include +#include +#include #include #include +#include #include "../FilamentGroup.hpp" #include "../FilamentMixer.hpp" #include "../MultiNozzleUtils.hpp" diff --git a/src/libslic3r/GCode/WipePathHelpers.cpp b/src/libslic3r/GCode/WipePathHelpers.cpp index d785a16a8c..2c2ef7ff74 100644 --- a/src/libslic3r/GCode/WipePathHelpers.cpp +++ b/src/libslic3r/GCode/WipePathHelpers.cpp @@ -1,12 +1,19 @@ #include "WipePathHelpers.hpp" #include "../AABBTreeLines.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include #include #include +#include #include +#include #include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/WipePathHelpers.hpp b/src/libslic3r/GCode/WipePathHelpers.hpp index 616e5dc88b..17c0dfa238 100644 --- a/src/libslic3r/GCode/WipePathHelpers.hpp +++ b/src/libslic3r/GCode/WipePathHelpers.hpp @@ -5,6 +5,7 @@ #include "../ExtrusionEntity.hpp" #include "../Polyline.hpp" #include "../Line.hpp" +#include "libslic3r/Point.hpp" namespace Slic3r { diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 7f440a11f6..2a8fd77249 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1,16 +1,39 @@ #include "WipeTower.hpp" +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include "libslic3r/Circle.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/ArcFitter.hpp" #include "GCodeProcessor.hpp" #include "BoundingBox.hpp" #include "ClipperUtils.hpp" +#include "libslic3r/Line.hpp" #include "LocalesUtils.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/MultiNozzleUtils.hpp" +#include "libslic3r/TriangleMesh.hpp" #include "Triangulation.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 8ea7f848ef..dd000737c7 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -2,16 +2,23 @@ #define WipeTower_ #include +#include +#include +#include +#include #include #include +#include #include #include +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" #include "libslic3r/Polygon.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/TriangleMesh.hpp" #include +#include #include "libslic3r/MultiNozzleUtils.hpp" namespace Slic3r { diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index a576172a39..9b92f4c26a 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -1,22 +1,44 @@ // Orca: WipeTower2 for all non bbl printers, support all MMU device and toolchanger. #include "WipeTower2.hpp" +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include #include #include #include +#include "libslic3r/Circle.hpp" +#include "libslic3r/ArcFitter.hpp" #include "ClipperUtils.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Fill/FillBase.hpp" #include "GCodeProcessor.hpp" #include "BoundingBox.hpp" +#include "libslic3r/Line.hpp" #include "LocalesUtils.hpp" #include "Geometry.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" #include "PrintConfig.hpp" #include "Surface.hpp" #include "Fill/FillRectilinear.hpp" +#include "libslic3r/libslic3r.h" #include diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 02ce15672b..408a5f6607 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -4,10 +4,14 @@ #define WipeTower2_ #include +#include +#include +#include #include #include #include #include +#include #include "libslic3r/Point.hpp" #include "libslic3r/Polygon.hpp" diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp index 713f3092c2..89891099cf 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.cpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -1,5 +1,6 @@ #include "WipeTowerEstimate.hpp" +#include "libslic3r/Polygon.hpp" #include "WipeTower.hpp" #include "WipeTower2.hpp" #include "../Config.hpp" @@ -8,7 +9,9 @@ #include #include +#include #include +#include namespace Slic3r { diff --git a/src/libslic3r/GCodeReader.cpp b/src/libslic3r/GCodeReader.cpp index 17510800c5..10c3be600f 100644 --- a/src/libslic3r/GCodeReader.cpp +++ b/src/libslic3r/GCodeReader.cpp @@ -1,18 +1,30 @@ #include "GCodeReader.hpp" +#include #include #include #include #include #include +#include +#include +#include +#include +#include #include #include #include +#include "PrintConfig.hpp" #include "Utils.hpp" #include "LocalesUtils.hpp" +#include "libslic3r.h" #include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/GCodeReader.hpp b/src/libslic3r/GCodeReader.hpp index 12b9dc98e2..591fe41e6b 100644 --- a/src/libslic3r/GCodeReader.hpp +++ b/src/libslic3r/GCodeReader.hpp @@ -3,10 +3,14 @@ #include "libslic3r.h" #include +#include #include +#include #include #include #include +#include +#include #include "PrintConfig.hpp" namespace Slic3r { diff --git a/src/libslic3r/GCodeSender.hpp b/src/libslic3r/GCodeSender.hpp index 3a2055e54f..e9f97e2a29 100644 --- a/src/libslic3r/GCodeSender.hpp +++ b/src/libslic3r/GCodeSender.hpp @@ -3,9 +3,17 @@ #include "libslic3r.h" #include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include #include #include diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 091173f752..f50d8abc16 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -1,17 +1,37 @@ #include "GCodeWriter.hpp" +#include "Config.hpp" #include "CustomGCode.hpp" +#include "Extruder.hpp" #include "I18N.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "PrintConfig.hpp" #include "IMEXHelpers.hpp" #include "ClipperUtils.hpp" #include "Geometry/ArcWelder.hpp" #include "Line.hpp" +#include "libslic3r.h" #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include #ifdef __APPLE__ #include @@ -454,32 +474,31 @@ std::string GCodeWriter::set_accel_and_jerk(unsigned int acceleration, double je if (EXTRUDER_LIMIT(m_max_acceleration) > 0 && acceleration > EXTRUDER_LIMIT(m_max_acceleration)) acceleration = EXTRUDER_LIMIT(m_max_acceleration); - bool is_empty = true; - std::ostringstream gcode; - gcode << "SET_VELOCITY_LIMIT"; - if (acceleration != 0 && acceleration != m_last_acceleration) { - gcode << " ACCEL=" << acceleration; - if (this->config.accel_to_decel_enable) { - gcode << " ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; - } - m_last_acceleration = acceleration; - is_empty = false; - } // Clamp the jerk to the allowed maximum. if (EXTRUDER_LIMIT(m_max_jerk_x) > 0 && jerk > EXTRUDER_LIMIT(m_max_jerk_x)) jerk = EXTRUDER_LIMIT(m_max_jerk_x); if (EXTRUDER_LIMIT(m_max_jerk_y) > 0 && jerk > EXTRUDER_LIMIT(m_max_jerk_y)) jerk = EXTRUDER_LIMIT(m_max_jerk_y); - if (jerk > 0.01 && !is_approx(jerk, m_last_jerk)) { + const bool set_acceleration = acceleration != 0 && acceleration != m_last_acceleration; + const bool set_jerk = jerk > 0.01 && !is_approx(jerk, m_last_jerk); + if (!set_acceleration && !set_jerk) + return std::string(); + + std::ostringstream gcode; + gcode << "SET_VELOCITY_LIMIT"; + if (set_acceleration) { + gcode << " ACCEL=" << acceleration; + if (this->config.accel_to_decel_enable) { + gcode << " ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; + } + m_last_acceleration = acceleration; + } + if (set_jerk) { gcode << " SQUARE_CORNER_VELOCITY=" << jerk; m_last_jerk = jerk; - is_empty = false; } - if(is_empty) - return std::string(); - if (GCodeWriter::full_gcode_comment) gcode << " ; adjust VELOCITY_LIMIT(accel/jerk)"; gcode << "\n"; diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index af9c13b9d7..65e8154914 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -2,8 +2,14 @@ #define slic3r_GCodeWriter_hpp_ #include "libslic3r.h" +#include +#include +#include +#include +#include #include #include +#include #include "Extruder.hpp" #include "Point.hpp" #include "Polygon.hpp" diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 1c775be3a8..6c097428f4 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -1,16 +1,29 @@ +#include "Point.hpp" +#include "Polygon.hpp" +#include "MultiPoint.hpp" +#include "BoundingBox.hpp" #include "libslic3r.h" #include "Exception.hpp" #include "Geometry.hpp" #include "ClipperUtils.hpp" #include "ExPolygon.hpp" #include "Line.hpp" +#include +#include +#include #include +#include +#include #include #include +#include +#include +#include #include #include #include #include +#include #include #include #include diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index e610a9ed4f..cb148e596a 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -9,7 +9,18 @@ #include "Polyline.hpp" // Serialization through the Cereal library +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Geometry/ArcWelder.hpp b/src/libslic3r/Geometry/ArcWelder.hpp index 184a2d6c7c..aee893fae6 100644 --- a/src/libslic3r/Geometry/ArcWelder.hpp +++ b/src/libslic3r/Geometry/ArcWelder.hpp @@ -1,7 +1,9 @@ #ifndef slic3r_Geometry_ArcWelder_hpp_ #define slic3r_Geometry_ArcWelder_hpp_ +#include #include +#include #include #include #include diff --git a/src/libslic3r/Geometry/Bicubic.hpp b/src/libslic3r/Geometry/Bicubic.hpp index 98c6f8bb29..2121947e94 100644 --- a/src/libslic3r/Geometry/Bicubic.hpp +++ b/src/libslic3r/Geometry/Bicubic.hpp @@ -1,7 +1,9 @@ #ifndef BICUBIC_HPP #define BICUBIC_HPP +#include #include +#include #include #include diff --git a/src/libslic3r/Geometry/Circle.cpp b/src/libslic3r/Geometry/Circle.cpp index 6796671954..f8dc0d273d 100644 --- a/src/libslic3r/Geometry/Circle.cpp +++ b/src/libslic3r/Geometry/Circle.cpp @@ -1,10 +1,19 @@ #include "Circle.hpp" #include "../Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include #include #include #include +#include namespace Slic3r { namespace Geometry { diff --git a/src/libslic3r/Geometry/Circle.hpp b/src/libslic3r/Geometry/Circle.hpp index 653102e2ab..8f8655df65 100644 --- a/src/libslic3r/Geometry/Circle.hpp +++ b/src/libslic3r/Geometry/Circle.hpp @@ -2,8 +2,13 @@ #define slic3r_Geometry_Circle_hpp_ #include "../Point.hpp" +#include "libslic3r/libslic3r.h" +#include #include +#include +#include +#include namespace Slic3r { namespace Geometry { diff --git a/src/libslic3r/Geometry/ConvexHull.cpp b/src/libslic3r/Geometry/ConvexHull.cpp index b8bf5eb696..80617c0caf 100644 --- a/src/libslic3r/Geometry/ConvexHull.cpp +++ b/src/libslic3r/Geometry/ConvexHull.cpp @@ -1,9 +1,19 @@ +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" #include "libslic3r.h" #include "ConvexHull.hpp" #include "BoundingBox.hpp" #include "../Geometry.hpp" +#include +#include #include +#include +#include +#include +#include +#include namespace Slic3r { namespace Geometry { diff --git a/src/libslic3r/Geometry/ConvexHull.hpp b/src/libslic3r/Geometry/ConvexHull.hpp index eb0be4fe1f..f8bac380e8 100644 --- a/src/libslic3r/Geometry/ConvexHull.hpp +++ b/src/libslic3r/Geometry/ConvexHull.hpp @@ -1,9 +1,12 @@ #ifndef slic3r_Geometry_ConvexHull_hpp_ #define slic3r_Geometry_ConvexHull_hpp_ +#include #include #include "../Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" namespace Slic3r { diff --git a/src/libslic3r/Geometry/Curves.hpp b/src/libslic3r/Geometry/Curves.hpp index f4a5a0067e..e9c4bef40c 100644 --- a/src/libslic3r/Geometry/Curves.hpp +++ b/src/libslic3r/Geometry/Curves.hpp @@ -4,7 +4,13 @@ #include "libslic3r/Point.hpp" #include "Bicubic.hpp" +#include +#include +#include +#include #include +#include +#include //#define LSQR_DEBUG diff --git a/src/libslic3r/Geometry/MedialAxis.cpp b/src/libslic3r/Geometry/MedialAxis.cpp index 7fece75e63..9d05ec9867 100644 --- a/src/libslic3r/Geometry/MedialAxis.cpp +++ b/src/libslic3r/Geometry/MedialAxis.cpp @@ -5,7 +5,11 @@ #include #include #include +#include +#include +#include "libslic3r/Line.hpp" +#include "libslic3r/Polyline.hpp" #include "VoronoiOffset.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ExPolygon.hpp" diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index 4f7173e5c2..7d59e2d2b8 100644 --- a/src/libslic3r/Geometry/Voronoi.cpp +++ b/src/libslic3r/Geometry/Voronoi.cpp @@ -2,7 +2,12 @@ #include #include +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp" #include "libslic3r/Geometry/VoronoiUtils.hpp" #include "libslic3r/Geometry/VoronoiUtilsCgal.hpp" diff --git a/src/libslic3r/Geometry/VoronoiOffset.cpp b/src/libslic3r/Geometry/VoronoiOffset.cpp index 70c45dfb25..aeaf883c72 100644 --- a/src/libslic3r/Geometry/VoronoiOffset.cpp +++ b/src/libslic3r/Geometry/VoronoiOffset.cpp @@ -8,7 +8,11 @@ #include #include #include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/Polygon.hpp" #include "libslic3r/Geometry.hpp" #include "VoronoiOffset.hpp" #include "libslic3r/libslic3r.h" diff --git a/src/libslic3r/Geometry/VoronoiUtils.cpp b/src/libslic3r/Geometry/VoronoiUtils.cpp index f140782891..d0ad07cc7e 100644 --- a/src/libslic3r/Geometry/VoronoiUtils.cpp +++ b/src/libslic3r/Geometry/VoronoiUtils.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -10,6 +11,10 @@ #include #include "VoronoiUtils.hpp" +#include "libslic3r/Geometry/Voronoi.hpp" +#include "libslic3r/Arachne/utils/PolygonsPointIndex.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/Exception.hpp" #include "libslic3r/Line.hpp" diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp index 28a648851d..e1ae432f36 100644 --- a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp @@ -1,9 +1,18 @@ // Needed since the CGAL headers are not self-contained. +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include #include #include diff --git a/src/libslic3r/Geometry/VoronoiVisualUtils.hpp b/src/libslic3r/Geometry/VoronoiVisualUtils.hpp index c89d59bf9a..a27645c159 100644 --- a/src/libslic3r/Geometry/VoronoiVisualUtils.hpp +++ b/src/libslic3r/Geometry/VoronoiVisualUtils.hpp @@ -1,14 +1,26 @@ #ifndef slic3r_VoronoiVisualUtils_hpp_ #define slic3r_VoronoiVisualUtils_hpp_ +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include +#include +#include "libslic3r/Geometry/Voronoi.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/BoundingBox.hpp" #include "VoronoiOffset.hpp" +#include "libslic3r/libslic3r.h" namespace boost { namespace polygon { diff --git a/src/libslic3r/InstanceLock.cpp b/src/libslic3r/InstanceLock.cpp index 1fa71b572a..7cacdef0cb 100644 --- a/src/libslic3r/InstanceLock.cpp +++ b/src/libslic3r/InstanceLock.cpp @@ -1,7 +1,11 @@ #include "InstanceLock.hpp" +#include +#include #include #include +#include +#include #include #include diff --git a/src/libslic3r/IntersectionPoints.cpp b/src/libslic3r/IntersectionPoints.cpp index 888285f834..7db77d0787 100644 --- a/src/libslic3r/IntersectionPoints.cpp +++ b/src/libslic3r/IntersectionPoints.cpp @@ -1,5 +1,10 @@ #include "IntersectionPoints.hpp" +#include #include +#include "libslic3r/Line.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/ExPolygon.hpp" //NOTE: using CGAL SweepLines is slower !!! (example in git history) diff --git a/src/libslic3r/IntersectionPoints.hpp b/src/libslic3r/IntersectionPoints.hpp index 49694c8a8e..89b36224df 100644 --- a/src/libslic3r/IntersectionPoints.hpp +++ b/src/libslic3r/IntersectionPoints.hpp @@ -2,6 +2,11 @@ #define slic3r_IntersectionPoints_hpp_ #include "ExPolygon.hpp" +#include +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Line.hpp" +#include "libslic3r/Polygon.hpp" namespace Slic3r { diff --git a/src/libslic3r/JumpPointSearch.hpp b/src/libslic3r/JumpPointSearch.hpp index 86eeb9ce6a..b5fbf6aaf0 100644 --- a/src/libslic3r/JumpPointSearch.hpp +++ b/src/libslic3r/JumpPointSearch.hpp @@ -1,4 +1,5 @@ #pragma once +#include "Line.hpp" #ifndef SRC_LIBSLIC3R_JUMPPOINTSEARCH_HPP_ #define SRC_LIBSLIC3R_JUMPPOINTSEARCH_HPP_ diff --git a/src/libslic3r/KDTreeIndirect.hpp b/src/libslic3r/KDTreeIndirect.hpp index 37c10827b1..d334a2ad64 100644 --- a/src/libslic3r/KDTreeIndirect.hpp +++ b/src/libslic3r/KDTreeIndirect.hpp @@ -4,10 +4,15 @@ #define slic3r_KDTreeIndirect_hpp_ #include +#include +#include +#include #include +#include #include #include "Utils.hpp" // for next_highest_power_of_2() +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/LayOnFace.cpp b/src/libslic3r/LayOnFace.cpp index 1112f9d2fe..3cc5c2fdce 100644 --- a/src/libslic3r/LayOnFace.cpp +++ b/src/libslic3r/LayOnFace.cpp @@ -3,11 +3,17 @@ #include "Geometry.hpp" #include "Geometry/ConvexHull.hpp" #include "Model.hpp" +#include "Point.hpp" #include "TriangleMesh.hpp" +#include "libslic3r.h" +#include #include #include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/LayOnFace.hpp b/src/libslic3r/LayOnFace.hpp index 1a5e92a15e..6a9242e5c6 100644 --- a/src/libslic3r/LayOnFace.hpp +++ b/src/libslic3r/LayOnFace.hpp @@ -2,6 +2,7 @@ #include "Point.hpp" +#include #include namespace Slic3r { diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 7bdef5a4ff..7f27012dc4 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -1,12 +1,28 @@ #include "Layer.hpp" #include "ClipperUtils.hpp" +#include "Polygon.hpp" +#include "Point.hpp" +#include "ExPolygon.hpp" +#include "ExtrusionEntity.hpp" +#include "Exception.hpp" +#include "Flow.hpp" #include "Print.hpp" #include "Fill/Fill.hpp" +#include "PrintConfig.hpp" #include "ShortestPath.hpp" #include "SVG.hpp" #include "BoundingBox.hpp" +#include "Surface.hpp" +#include "libslic3r.h" +#include "Utils.hpp" +#include #include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 9be6b86139..600e4c4062 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -1,12 +1,21 @@ #ifndef slic3r_Layer_hpp_ #define slic3r_Layer_hpp_ +#include "Polyline.hpp" +#include "Polygon.hpp" +#include "ExtrusionEntity.hpp" +#include "Line.hpp" #include "libslic3r.h" #include "BoundingBox.hpp" #include "Flow.hpp" #include "SurfaceCollection.hpp" #include "ExtrusionEntityCollection.hpp" #include "BoundingBox.hpp" +#include +#include +#include +#include +#include namespace Slic3r { class ExPolygon; diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index ab2096184b..3132dd348d 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -1,20 +1,44 @@ +#include "Flow.hpp" +#include "Config.hpp" +#include "ExPolygon.hpp" +#include "ExtrusionEntity.hpp" +#include "Exception.hpp" #include "Layer.hpp" #include "BridgeDetector.hpp" #include "ClipperUtils.hpp" #include "Geometry.hpp" +#include "Line.hpp" #include "PerimeterGenerator.hpp" #include "Point.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" #include "Print.hpp" +#include "PrintConfig.hpp" #include "Surface.hpp" #include "BoundingBox.hpp" #include "SVG.hpp" #include "Algorithm/RegionExpansion.hpp" +#include "libslic3r.h" +#include "Utils.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 94453e18f7..5c40e48e63 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -1,8 +1,13 @@ #include "Geometry.hpp" #include "Line.hpp" +#include "Point.hpp" #include "Polyline.hpp" +#include +#include "libslic3r.h" #include #include +#include +#include #include namespace Slic3r { diff --git a/src/libslic3r/Line.hpp b/src/libslic3r/Line.hpp index d8240702b2..f75ef7fc66 100644 --- a/src/libslic3r/Line.hpp +++ b/src/libslic3r/Line.hpp @@ -4,7 +4,10 @@ #include "libslic3r.h" #include "Point.hpp" +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/LocalesUtils.cpp b/src/libslic3r/LocalesUtils.cpp index 9c81511dc5..b73861c9db 100644 --- a/src/libslic3r/LocalesUtils.cpp +++ b/src/libslic3r/LocalesUtils.cpp @@ -1,4 +1,10 @@ #include "LocalesUtils.hpp" +#include +#include +#include +#include +#include +#include #ifdef _WIN32 #include @@ -78,6 +84,19 @@ double string_to_double_decimal_point(const std::string_view str, size_t* pos /* return out; } +double atof_decimal_point(std::string_view str) +{ + size_t i = 0; + while (i < str.size() && (str[i] == ' ' || (str[i] >= '\t' && str[i] <= '\r'))) + ++i; + if (i < str.size() && str[i] == '+') { + ++i; + if (i < str.size() && str[i] == '-') + return 0.; + } + return string_to_double_decimal_point(str.substr(i)); +} + std::string float_to_string_decimal_point(double value, int precision/* = -1*/) { // Our Windows build server fully supports C++17 std::to_chars. Let's use it. diff --git a/src/libslic3r/LocalesUtils.hpp b/src/libslic3r/LocalesUtils.hpp index d7e59f5ded..c2e020044a 100644 --- a/src/libslic3r/LocalesUtils.hpp +++ b/src/libslic3r/LocalesUtils.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_LocalesUtils_hpp_ #define slic3r_LocalesUtils_hpp_ +#include #include #include #include @@ -47,6 +48,9 @@ bool is_decimal_separator_point(); std::string float_to_string_decimal_point(double value, int precision = -1); //std::string float_to_string_decimal_point(float value, int precision = -1); double string_to_double_decimal_point(const std::string_view str, size_t* pos = nullptr); +// Parses like atof in the C locale, skipping leading whitespace and a '+', +// without the C runtime's per-call locale lookup. +double atof_decimal_point(std::string_view str); } // namespace Slic3r diff --git a/src/libslic3r/MTUtils.hpp b/src/libslic3r/MTUtils.hpp index ab99ea5f68..b1099e1439 100644 --- a/src/libslic3r/MTUtils.hpp +++ b/src/libslic3r/MTUtils.hpp @@ -1,7 +1,9 @@ #ifndef MTUTILS_HPP #define MTUTILS_HPP +#include #include // for std::atomic_flag and memory orders +#include #include // for std::lock_guard #include // for std::function #include // for std::forward diff --git a/src/libslic3r/MarchingSquares.hpp b/src/libslic3r/MarchingSquares.hpp index 7eb0b25806..e123dd14e0 100644 --- a/src/libslic3r/MarchingSquares.hpp +++ b/src/libslic3r/MarchingSquares.hpp @@ -2,11 +2,17 @@ #define MARCHINGSQUARES_HPP #include "Execution/ExecutionTBB.hpp" +#include +#include "libslic3r/Execution/Execution.hpp" +#include +#include #include #include #include #include #include +#include +#include // Marching squares // diff --git a/src/libslic3r/MaterialType.cpp b/src/libslic3r/MaterialType.cpp index dc65b6d23c..18e27dbe46 100644 --- a/src/libslic3r/MaterialType.cpp +++ b/src/libslic3r/MaterialType.cpp @@ -1,6 +1,8 @@ #include "MaterialType.hpp" #include +#include +#include namespace Slic3r { namespace { diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index ad34752685..e2ef912f37 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -1,3 +1,5 @@ +#include "Point.hpp" +#include "TriangleMesh.hpp" #include "libslic3r/libslic3r.h" #include "Measure.hpp" #include "MeasureUtils.hpp" @@ -6,8 +8,28 @@ #include "libslic3r/SurfaceMesh.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #define DEBUG_EXTRACT_ALL_FEATURES_AT_ONCE 0 diff --git a/src/libslic3r/Measure.hpp b/src/libslic3r/Measure.hpp index 0374c5d4aa..2980afe324 100644 --- a/src/libslic3r/Measure.hpp +++ b/src/libslic3r/Measure.hpp @@ -1,10 +1,17 @@ #ifndef Slic3r_Measure_hpp_ #define Slic3r_Measure_hpp_ +#include +#include +#include #include #include +#include +#include +#include #include "Point.hpp" +#include "libslic3r.h" struct indexed_triangle_set; diff --git a/src/libslic3r/MeasureUtils.hpp b/src/libslic3r/MeasureUtils.hpp index 2fdac52443..5e34c6fdf8 100644 --- a/src/libslic3r/MeasureUtils.hpp +++ b/src/libslic3r/MeasureUtils.hpp @@ -1,7 +1,14 @@ #ifndef Slic3r_MeasureUtils_hpp_ #define Slic3r_MeasureUtils_hpp_ +#include +#include +#include +#include #include +#include + +#include "Point.hpp" namespace Slic3r { namespace Measure { diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 4d9dda0c2e..2a05378f58 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -3,6 +3,37 @@ #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/TryCatchSignal.hpp" #include "libslic3r/format.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #undef PI #include diff --git a/src/libslic3r/MeshBoolean.hpp b/src/libslic3r/MeshBoolean.hpp index c307d1528b..6ced9b4646 100644 --- a/src/libslic3r/MeshBoolean.hpp +++ b/src/libslic3r/MeshBoolean.hpp @@ -1,9 +1,13 @@ #ifndef libslic3r_MeshBoolean_hpp_ #define libslic3r_MeshBoolean_hpp_ +#include +#include "libslic3r/Point.hpp" #include #include #include +#include +#include #include #include diff --git a/src/libslic3r/MeshSplitImpl.hpp b/src/libslic3r/MeshSplitImpl.hpp index 9fa87d2a9e..1805dc36ba 100644 --- a/src/libslic3r/MeshSplitImpl.hpp +++ b/src/libslic3r/MeshSplitImpl.hpp @@ -2,6 +2,15 @@ #define MESHSPLITIMPL_HPP // Disable meaningless boost warning on MSVC +#include +#include "Point.hpp" +#include +#include +#include +#include +#include +#include "libslic3r.h" +#include #ifdef _MSC_VER #pragma warning( push ) #pragma warning( disable : 4805 ) diff --git a/src/libslic3r/MinAreaBoundingBox.cpp b/src/libslic3r/MinAreaBoundingBox.cpp index 51fd8a45e7..ccc2eb981b 100644 --- a/src/libslic3r/MinAreaBoundingBox.cpp +++ b/src/libslic3r/MinAreaBoundingBox.cpp @@ -1,5 +1,12 @@ #include "MinAreaBoundingBox.hpp" +#include "Point.hpp" +#include "libslic3r.h" +#include +#include "libnest2d/common.hpp" +#include +#include +#include "libnest2d/geometry_traits.hpp" #include #if defined(_MSC_VER) && defined(__clang__) diff --git a/src/libslic3r/MinimumSpanningTree.cpp b/src/libslic3r/MinimumSpanningTree.cpp index 88555e70ee..0134c6b1a3 100644 --- a/src/libslic3r/MinimumSpanningTree.cpp +++ b/src/libslic3r/MinimumSpanningTree.cpp @@ -1,7 +1,12 @@ #include "MinimumSpanningTree.hpp" +#include #include #include +#include "Point.hpp" +#include +#include +#include #include "libslic3r.h" namespace Slic3r diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index fbc299cf72..24a77ce716 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1,4 +1,21 @@ #include "Model.hpp" +#include "calib.hpp" +#include "Format/STEP.hpp" +#include "TriangleMesh.hpp" +#include "Semver.hpp" +#include "Format/OBJ.hpp" +#include "Config.hpp" +#include "Format/STL.hpp" +#include "Format/objparser.hpp" +#include "CustomGCode.hpp" +#include "PrintConfig.hpp" +#include "ObjectID.hpp" +#include "BoundingBox.hpp" +#include "Point.hpp" +#include "Utils.hpp" +#include "Polygon.hpp" +#include "SLA/SupportPoint.hpp" +#include "TextureDisplacement.hpp" #include "libslic3r.h" #include "BuildVolume.hpp" #include "TexturePainting.hpp" @@ -23,7 +40,17 @@ #include "libslic3r/Geometry/ConvexHull.hpp" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -35,6 +62,21 @@ #include "SVG.hpp" #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "GCodeWriter.hpp" // BBS: for segment diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 895ea30d09..6ef00c8587 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1,6 +1,9 @@ #ifndef slic3r_Model_hpp_ #define slic3r_Model_hpp_ +#include "BoundingBox.hpp" +#include "Polygon.hpp" +#include "Semver.hpp" #include "libslic3r.h" #include "enum_bitmask.hpp" #include "Geometry.hpp" @@ -30,6 +33,13 @@ #include "Format/OBJ.hpp" #include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 95167565aa..df95b92b99 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -1,9 +1,19 @@ #include "ModelArrange.hpp" +#include +#include +#include #include #include #include +#include "Arrange.hpp" +#include +#include "Config.hpp" +#include +#include #include "MTUtils.hpp" +#include "Point.hpp" +#include "PrintConfig.hpp" namespace Slic3r { diff --git a/src/libslic3r/ModelArrange.hpp b/src/libslic3r/ModelArrange.hpp index e389eea5f0..b7a31dea8d 100644 --- a/src/libslic3r/ModelArrange.hpp +++ b/src/libslic3r/ModelArrange.hpp @@ -1,7 +1,13 @@ #ifndef MODELARRANGE_HPP #define MODELARRANGE_HPP +#include +#include #include +#include +#include "Exception.hpp" +#include +#include "Point.hpp" #include "libslic3r/PrintConfig.hpp" #include "libslic3r/Model.hpp" diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index 464740768d..9119498a1e 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -1,13 +1,40 @@ +#include "MultiMaterialSegmentation.hpp" #include "BoundingBox.hpp" #include "ClipperUtils.hpp" +#include "Config.hpp" #include "EdgeGrid.hpp" +#include "Geometry/VoronoiOffset.hpp" +#include "Geometry/Voronoi.hpp" +#include "Flow.hpp" +#include "ExPolygon.hpp" #include "Layer.hpp" +#include "Point.hpp" +#include "Polygon.hpp" +#include "Line.hpp" +#include "Model.hpp" #include "Print.hpp" #include "Geometry/VoronoiVisualUtils.hpp" #include "Geometry/VoronoiUtils.hpp" #include "MutablePolygon.hpp" +#include "Utils.hpp" +#include "PrintConfig.hpp" +#include "TriangleSelector.hpp" +#include "TriangleMeshSlicer.hpp" +#include "Surface.hpp" #include "format.hpp" +#include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -15,6 +42,8 @@ #include #include #include +#include +#include //#define MM_SEGMENTATION_DEBUG_GRAPH //#define MM_SEGMENTATION_DEBUG_REGIONS diff --git a/src/libslic3r/MultiMaterialSegmentation.hpp b/src/libslic3r/MultiMaterialSegmentation.hpp index ee7b07c0d8..6b230e8cad 100644 --- a/src/libslic3r/MultiMaterialSegmentation.hpp +++ b/src/libslic3r/MultiMaterialSegmentation.hpp @@ -1,9 +1,17 @@ #ifndef slic3r_MultiMaterialSegmentation_hpp_ #define slic3r_MultiMaterialSegmentation_hpp_ +#include +#include #include #include +#include + +#include "Line.hpp" +#include "Point.hpp" +#include "libslic3r.h" + namespace Slic3r { class ExPolygon; diff --git a/src/libslic3r/MultiNozzleUtils.cpp b/src/libslic3r/MultiNozzleUtils.cpp index d5ce550536..5fc3d3de17 100644 --- a/src/libslic3r/MultiNozzleUtils.cpp +++ b/src/libslic3r/MultiNozzleUtils.cpp @@ -1,12 +1,22 @@ #include "MultiNozzleUtils.hpp" +#include "PrintConfig.hpp" +#include "Config.hpp" #include "Utils.hpp" #include "ProjectTask.hpp" // Slic3r::FilamentInfo (StaticNozzleGroupResult / load_nozzle_infos_with_compatibility) #include +#include +#include #include +#include +#include +#include #include +#include #include #include #include +#include +#include // Multi-nozzle support. diff --git a/src/libslic3r/MultiNozzleUtils.hpp b/src/libslic3r/MultiNozzleUtils.hpp index 5ae56e497d..f59dad6761 100644 --- a/src/libslic3r/MultiNozzleUtils.hpp +++ b/src/libslic3r/MultiNozzleUtils.hpp @@ -1,6 +1,8 @@ #ifndef MULTI_NOZZLE_UTILS_HPP #define MULTI_NOZZLE_UTILS_HPP +#include +#include #include #include #include diff --git a/src/libslic3r/MultiPoint.cpp b/src/libslic3r/MultiPoint.cpp index 694d3ea9d0..cda57c6cd8 100644 --- a/src/libslic3r/MultiPoint.cpp +++ b/src/libslic3r/MultiPoint.cpp @@ -1,5 +1,16 @@ #include "MultiPoint.hpp" #include "BoundingBox.hpp" +#include "Point.hpp" +#include "libslic3r.h" +#include +#include "Line.hpp" +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index 096230d22c..82d6d5884b 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -3,6 +3,10 @@ #include "libslic3r.h" #include +#include +#include +#include +#include #include #include "Line.hpp" #include "Point.hpp" diff --git a/src/libslic3r/MutablePolygon.cpp b/src/libslic3r/MutablePolygon.cpp index bdc2d91376..60484dc3aa 100644 --- a/src/libslic3r/MutablePolygon.cpp +++ b/src/libslic3r/MutablePolygon.cpp @@ -1,6 +1,11 @@ #include "MutablePolygon.hpp" #include "Line.hpp" +#include "Point.hpp" #include "libslic3r.h" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/MutablePolygon.hpp b/src/libslic3r/MutablePolygon.hpp index e4741186ff..31322583e3 100644 --- a/src/libslic3r/MutablePolygon.hpp +++ b/src/libslic3r/MutablePolygon.hpp @@ -4,6 +4,13 @@ #include "Point.hpp" #include "Polygon.hpp" #include "ExPolygon.hpp" +#include +#include +#include +#include +#include +#include +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/MutablePriorityQueue.hpp b/src/libslic3r/MutablePriorityQueue.hpp index 2565f417f8..f06acaa93e 100644 --- a/src/libslic3r/MutablePriorityQueue.hpp +++ b/src/libslic3r/MutablePriorityQueue.hpp @@ -2,7 +2,11 @@ #define slic3r_MutablePriorityQueue_hpp_ #include +#include +#include #include +#include +#include constexpr auto InvalidQueueID = std::numeric_limits::max(); template class MutablePriorityQueue diff --git a/src/libslic3r/NSVGUtils.cpp b/src/libslic3r/NSVGUtils.cpp index d12a866b3d..5274ffad4f 100644 --- a/src/libslic3r/NSVGUtils.cpp +++ b/src/libslic3r/NSVGUtils.cpp @@ -1,11 +1,24 @@ #include "NSVGUtils.hpp" #include +#include #include // to_chars #include #include +#include +#include +#include +#include +#include +#include +#include #include "ClipperUtils.hpp" #include "Emboss.hpp" // heal for shape +#include "Polygon.hpp" +#include "Polyline.hpp" +#include "EmbossShape.hpp" +#include "Point.hpp" +#include "libslic3r.h" namespace { using namespace Slic3r; // Polygon diff --git a/src/libslic3r/NSVGUtils.hpp b/src/libslic3r/NSVGUtils.hpp index 8d6a3bc3ef..846c4adfb8 100644 --- a/src/libslic3r/NSVGUtils.hpp +++ b/src/libslic3r/NSVGUtils.hpp @@ -1,12 +1,16 @@ #ifndef slic3r_NSVGUtils_hpp_ #define slic3r_NSVGUtils_hpp_ +#include +#include #include #include #include +#include "Point.hpp" #include "Polygon.hpp" #include "ExPolygon.hpp" #include "EmbossShape.hpp" // ExPolygonsWithIds +#include "libslic3r.h" #include "nanosvg/nanosvg.h" // load SVG file // Helper function to work with nano svg diff --git a/src/libslic3r/NormalUtils.cpp b/src/libslic3r/NormalUtils.cpp index 8619b749a2..1499d25f22 100644 --- a/src/libslic3r/NormalUtils.cpp +++ b/src/libslic3r/NormalUtils.cpp @@ -1,4 +1,9 @@ #include "NormalUtils.hpp" +#include "Point.hpp" +#include +#include +#include +#include using namespace Slic3r; diff --git a/src/libslic3r/NormalUtils.hpp b/src/libslic3r/NormalUtils.hpp index 8dcd0c0290..1811957381 100644 --- a/src/libslic3r/NormalUtils.hpp +++ b/src/libslic3r/NormalUtils.hpp @@ -3,6 +3,7 @@ #include "Point.hpp" #include "Model.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/ObjColorUtils.cpp b/src/libslic3r/ObjColorUtils.cpp index 3761267401..536078a083 100644 --- a/src/libslic3r/ObjColorUtils.cpp +++ b/src/libslic3r/ObjColorUtils.cpp @@ -1,4 +1,6 @@ #include "ObjColorUtils.hpp" +#include +#include "Color.hpp" bool obj_color_deal_algo(std::vector & input_colors, std::vector & cluster_colors_from_algo, diff --git a/src/libslic3r/ObjColorUtils.hpp b/src/libslic3r/ObjColorUtils.hpp index b587c80848..46163c8b44 100644 --- a/src/libslic3r/ObjColorUtils.hpp +++ b/src/libslic3r/ObjColorUtils.hpp @@ -1,6 +1,13 @@ #pragma once +#include +#include #include #include +#include +#include +#include +#include +#include #include "opencv2/opencv.hpp" #include "libslic3r/Color.hpp" diff --git a/src/libslic3r/ObjectID.cpp b/src/libslic3r/ObjectID.cpp index 7177c47fec..c8f4f5409f 100644 --- a/src/libslic3r/ObjectID.cpp +++ b/src/libslic3r/ObjectID.cpp @@ -1,4 +1,5 @@ #include "ObjectID.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/ObjectID.hpp b/src/libslic3r/ObjectID.hpp index 56042bbaa3..6adc1078f0 100644 --- a/src/libslic3r/ObjectID.hpp +++ b/src/libslic3r/ObjectID.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/OpenVDBUtils.cpp b/src/libslic3r/OpenVDBUtils.cpp index c72607f14f..d4ac09781d 100644 --- a/src/libslic3r/OpenVDBUtils.cpp +++ b/src/libslic3r/OpenVDBUtils.cpp @@ -1,6 +1,19 @@ #ifndef NOMINMAX #define NOMINMAX #endif + +#include +#include +#include +#include "Point.hpp" +#include +#include +#include +#include "TriangleMesh.hpp" +#include +#include "libslic3r.h" +#include +#include #include "OpenVDBUtils.hpp" #ifdef _MSC_VER diff --git a/src/libslic3r/OpenVDBUtils.hpp b/src/libslic3r/OpenVDBUtils.hpp index f4441ba964..badd19d377 100644 --- a/src/libslic3r/OpenVDBUtils.hpp +++ b/src/libslic3r/OpenVDBUtils.hpp @@ -1,7 +1,10 @@ #ifndef OPENVDBUTILS_HPP #define OPENVDBUTILS_HPP +#include "Point.hpp" #include +#include +#include #ifdef _MSC_VER // Suppress warning C4146 in include/gmp.h(2177,31): unary minus operator applied to unsigned type, result still unsigned diff --git a/src/libslic3r/Optimize/BruteforceOptimizer.hpp b/src/libslic3r/Optimize/BruteforceOptimizer.hpp index 2daef538e7..6aa4308f99 100644 --- a/src/libslic3r/Optimize/BruteforceOptimizer.hpp +++ b/src/libslic3r/Optimize/BruteforceOptimizer.hpp @@ -1,7 +1,12 @@ #ifndef BRUTEFORCEOPTIMIZER_HPP #define BRUTEFORCEOPTIMIZER_HPP +#include +#include +#include +#include #include +#include namespace Slic3r { namespace opt { diff --git a/src/libslic3r/Optimize/NLoptOptimizer.hpp b/src/libslic3r/Optimize/NLoptOptimizer.hpp index f5d3140463..6e1649f701 100644 --- a/src/libslic3r/Optimize/NLoptOptimizer.hpp +++ b/src/libslic3r/Optimize/NLoptOptimizer.hpp @@ -1,6 +1,12 @@ #ifndef NLOPTOPTIMIZER_HPP #define NLOPTOPTIMIZER_HPP +#include +#include +#include +#include +#include +#include #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4244) diff --git a/src/libslic3r/Optimize/Optimizer.hpp b/src/libslic3r/Optimize/Optimizer.hpp index 8ae55c61c5..ce5bb5bad6 100644 --- a/src/libslic3r/Optimize/Optimizer.hpp +++ b/src/libslic3r/Optimize/Optimizer.hpp @@ -1,6 +1,7 @@ #ifndef OPTIMIZER_HPP #define OPTIMIZER_HPP +#include #include #include #include diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index 7d54048176..b72401f36b 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -1,10 +1,30 @@ #include "Orient.hpp" #include "Geometry.hpp" +#include +#include +#include +#include "TriangleMesh.hpp" +#include "Point.hpp" +#include +#include +#include "libslic3r.h" +#include +#include +#include +#include +#include "Model.hpp" +#include "PrintConfig.hpp" #include #include #include #include +#include +#include +#include #include +#include +#include +#include #if defined(_MSC_VER) && defined(__clang__) #define BOOST_NO_CXX17_HDR_STRING_VIEW diff --git a/src/libslic3r/Orient.hpp b/src/libslic3r/Orient.hpp index 370f23d4fb..6839665e01 100644 --- a/src/libslic3r/Orient.hpp +++ b/src/libslic3r/Orient.hpp @@ -1,7 +1,14 @@ #ifndef ORIENT_HPP #define ORIENT_HPP +#include "TriangleMesh.hpp" +#include "Point.hpp" +#include "PrintConfig.hpp" #include "libslic3r/Model.hpp" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/PNGReadWrite.cpp b/src/libslic3r/PNGReadWrite.cpp index 9f6a8b739d..1f29de646b 100644 --- a/src/libslic3r/PNGReadWrite.cpp +++ b/src/libslic3r/PNGReadWrite.cpp @@ -1,5 +1,9 @@ #include "PNGReadWrite.hpp" +#include +#include +#include +#include #include #include @@ -8,6 +12,8 @@ #include #include #include +#include +#include namespace Slic3r { namespace png { diff --git a/src/libslic3r/PNGReadWrite.hpp b/src/libslic3r/PNGReadWrite.hpp index 9a27fed490..c2d2149e1f 100644 --- a/src/libslic3r/PNGReadWrite.hpp +++ b/src/libslic3r/PNGReadWrite.hpp @@ -1,6 +1,8 @@ #ifndef PNGREAD_HPP #define PNGREAD_HPP +#include +#include #include #include #include diff --git a/src/libslic3r/ParameterUtils.cpp b/src/libslic3r/ParameterUtils.cpp index 2e7b0d1d3c..f2f3669124 100644 --- a/src/libslic3r/ParameterUtils.cpp +++ b/src/libslic3r/ParameterUtils.cpp @@ -1,5 +1,10 @@ #include "ParameterUtils.hpp" +#include "PrintConfig.hpp" #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ParameterUtils.hpp b/src/libslic3r/ParameterUtils.hpp index 795e7ff619..bf475c16bd 100644 --- a/src/libslic3r/ParameterUtils.hpp +++ b/src/libslic3r/ParameterUtils.hpp @@ -1,6 +1,8 @@ #ifndef slic3r_Parameter_Utils_hpp_ #define slic3r_Parameter_Utils_hpp_ +#include +#include #include #include #include "PrintConfig.hpp" diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 2f8e29c237..5b775f7e25 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1,23 +1,41 @@ #include "PerimeterGenerator.hpp" #include "AABBTreeLines.hpp" +#include "Arachne/utils/ExtrusionLine.hpp" +#include "Arachne/utils/ExtrusionJunction.hpp" #include "BridgeDetector.hpp" #include "ClipperUtils.hpp" #include "ClipperZUtils.hpp" +#include "ExPolygon.hpp" #include "ExtrusionEntity.hpp" #include "ExtrusionEntityCollection.hpp" #include "Feature/FuzzySkin/FuzzySkin.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" +#include "Point.hpp" +#include "Flow.hpp" #include "PrintConfig.hpp" #include "ShortestPath.hpp" +#include "Surface.hpp" #include "VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" #include "Geometry/ConvexHull.hpp" #include "ExPolygonCollection.hpp" #include "Geometry.hpp" #include "Line.hpp" +#include #include #include +#include +#include +#include +#include +#include +#include #include #include +#include +#include "libslic3r.h" +#include #include "libslic3r/AABBTreeLines.hpp" #include "Print.hpp" static const int overhang_sampling_number = 6; diff --git a/src/libslic3r/PerimeterGenerator.hpp b/src/libslic3r/PerimeterGenerator.hpp index cd49b4acdd..c4d5b06095 100644 --- a/src/libslic3r/PerimeterGenerator.hpp +++ b/src/libslic3r/PerimeterGenerator.hpp @@ -1,8 +1,15 @@ #ifndef slic3r_PerimeterGenerator_hpp_ #define slic3r_PerimeterGenerator_hpp_ +#include "ExtrusionEntityCollection.hpp" +#include "Point.hpp" +#include "Surface.hpp" #include "libslic3r.h" +#include +#include +#include #include +#include #include #include "Layer.hpp" #include "Flow.hpp" diff --git a/src/libslic3r/PlaceholderParser.cpp b/src/libslic3r/PlaceholderParser.cpp index 1d7abcd5de..8bddfc1f10 100644 --- a/src/libslic3r/PlaceholderParser.cpp +++ b/src/libslic3r/PlaceholderParser.cpp @@ -1,12 +1,52 @@ #include "PlaceholderParser.hpp" +#include "Config.hpp" #include "Exception.hpp" #include "Flow.hpp" +#include "PrintConfig.hpp" +#include "Point.hpp" #include "Utils.hpp" +#include "libslic3r_version.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include #include #include +#include +#include #ifdef _MSC_VER #include // provides **_environ #else diff --git a/src/libslic3r/PlaceholderParser.hpp b/src/libslic3r/PlaceholderParser.hpp index e32a4de9dc..962517a252 100644 --- a/src/libslic3r/PlaceholderParser.hpp +++ b/src/libslic3r/PlaceholderParser.hpp @@ -1,8 +1,10 @@ #ifndef slic3r_PlaceholderParser_hpp_ #define slic3r_PlaceholderParser_hpp_ +#include "Config.hpp" #include "libslic3r.h" #include +#include #include #include #include diff --git a/src/libslic3r/Platform.cpp b/src/libslic3r/Platform.cpp index d2ca27fa96..35a30712d9 100644 --- a/src/libslic3r/Platform.cpp +++ b/src/libslic3r/Platform.cpp @@ -2,6 +2,11 @@ #include #include +#include +#include +#include +#include +#include #if defined(__APPLE__) #include diff --git a/src/libslic3r/Point.cpp b/src/libslic3r/Point.cpp index 9a2c2b14cd..e3ac888ede 100644 --- a/src/libslic3r/Point.cpp +++ b/src/libslic3r/Point.cpp @@ -5,7 +5,14 @@ #include "Polyline.hpp" #include "Int128.hpp" #include "BoundingBox.hpp" +#include +#include "libslic3r.h" #include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 21e5355fc5..6b8c1a81d7 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -2,7 +2,18 @@ #define slic3r_Point_hpp_ #include "libslic3r.h" +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index b2e2888111..d7591ae27c 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -2,9 +2,22 @@ #include "ClipperUtils.hpp" #include "Exception.hpp" #include "Polygon.hpp" +#include "Line.hpp" +#include "Point.hpp" +#include "MultiPoint.hpp" #include "Polyline.hpp" +#include "libslic3r.h" +#include +#include +#include #include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Polygon.hpp b/src/libslic3r/Polygon.hpp index 146491e281..ae312fd830 100644 --- a/src/libslic3r/Polygon.hpp +++ b/src/libslic3r/Polygon.hpp @@ -2,6 +2,13 @@ #define slic3r_Polygon_hpp_ #include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include #include #include #include "Line.hpp" diff --git a/src/libslic3r/PolygonTrimmer.cpp b/src/libslic3r/PolygonTrimmer.cpp index 2c4e06fc58..a9cdafc73b 100644 --- a/src/libslic3r/PolygonTrimmer.cpp +++ b/src/libslic3r/PolygonTrimmer.cpp @@ -1,6 +1,11 @@ #include "PolygonTrimmer.hpp" #include "EdgeGrid.hpp" #include "Geometry.hpp" +#include "Polygon.hpp" +#include +#include "Point.hpp" +#include "libslic3r.h" +#include namespace Slic3r { diff --git a/src/libslic3r/PolygonTrimmer.hpp b/src/libslic3r/PolygonTrimmer.hpp index 93e94e303f..4f0608169b 100644 --- a/src/libslic3r/PolygonTrimmer.hpp +++ b/src/libslic3r/PolygonTrimmer.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_PolygonTrimmer_hpp_ #define slic3r_PolygonTrimmer_hpp_ +#include "Point.hpp" #include "libslic3r.h" #include #include diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index 98a5366ecf..278522bfd9 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -1,11 +1,21 @@ +#include "ArcFitter.hpp" #include "BoundingBox.hpp" #include "Polyline.hpp" #include "Exception.hpp" #include "ExPolygon.hpp" #include "Line.hpp" +#include "Point.hpp" +#include "MultiPoint.hpp" #include "Polygon.hpp" +#include +#include +#include +#include "libslic3r.h" +#include #include +#include #include +#include namespace Slic3r { diff --git a/src/libslic3r/Polyline.hpp b/src/libslic3r/Polyline.hpp index f52c3c9bbd..29c795db33 100644 --- a/src/libslic3r/Polyline.hpp +++ b/src/libslic3r/Polyline.hpp @@ -1,10 +1,16 @@ #ifndef slic3r_Polyline_hpp_ #define slic3r_Polyline_hpp_ +#include "Point.hpp" #include "libslic3r.h" #include "Line.hpp" #include "MultiPoint.hpp" +#include +#include +#include +#include #include +#include #include //BBS: new necessary header file #include "ArcFitter.hpp" diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 0b9e3400b0..aba0655e6c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1,4 +1,30 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "Config.hpp" #include "Exception.hpp" @@ -7,6 +33,9 @@ #include "AppConfig.hpp" #include "LocalesUtils.hpp" #include "ParallelResolve.hpp" +#include "Semver.hpp" +#include "PrintConfig.hpp" +#include "libslic3r_version.h" #ifdef _MSC_VER #define WIN32_LEAN_AND_MEAN diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 0134681f9f..2b1fb372af 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -1,7 +1,13 @@ #ifndef slic3r_Preset_hpp_ #define slic3r_Preset_hpp_ +#include +#include +#include +#include #include +#include +#include #include #include #include @@ -12,10 +18,14 @@ #include #include #include +#include +#include +#include "Config.hpp" #include "PrintConfig.hpp" #include "Semver.hpp" #include "ProjectTask.hpp" +#include "libslic3r.h" //BBS: change system directories #define PRESET_SYSTEM_DIR "system" diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 3601593d3a..7327260dea 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1,16 +1,45 @@ #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include "PresetBundle.hpp" +#include "Config.hpp" +#include "Exception.hpp" +#include "AppConfig.hpp" #include "ParallelResolve.hpp" +#include "Preset.hpp" #include "PresetCacheFormat.hpp" #include "PrintConfig.hpp" #include "PublishSettings.hpp" #include "FilamentMixer.hpp" +#include "Semver.hpp" #include "libslic3r.h" #include "I18N.hpp" #include "Utils.hpp" @@ -25,6 +54,11 @@ #include #include #include +#include +#include +#include +#include +#include #include #include #include @@ -43,6 +77,8 @@ #include #include #include +#include +#include // Mark string for localization and translate. #define L(s) Slic3r::I18N::translate(s) @@ -598,13 +634,15 @@ const PresetBundle *PresetBundle::load_source_vendor(const boost::filesystem::pa return it->second.get(); // The library loads with no base of its own, so the tree a vendor inherits from - // is the same one that resolves the library's own presets. - const std::string library_file = std::string(ORCA_FILAMENT_LIBRARY); - const PresetBundle *library = nullptr; - if (vendor_id != ORCA_FILAMENT_LIBRARY && - (boost::filesystem::is_regular_file(root_dir / (library_file + ".json")) || - (allow_cache && boost::filesystem::is_regular_file(root_dir / (library_file + ".opc"))))) { - library = load_source_vendor(root_dir, ORCA_FILAMENT_LIBRARY, compatibility_rule, error, allow_cache); + // is the same one that resolves the library's own presets. It is only a base, so + // it comes from its cache whenever that is all that is installed, even when the + // vendor itself is parsed (a vendor updated over the air). + const std::string library_file = std::string(ORCA_FILAMENT_LIBRARY); + const bool library_json = boost::filesystem::is_regular_file(root_dir / (library_file + ".json")); + const bool library_cache_only = !library_json && boost::filesystem::is_regular_file(root_dir / (library_file + ".opc")); + const PresetBundle *library = nullptr; + if (vendor_id != ORCA_FILAMENT_LIBRARY && (library_json || library_cache_only)) { + library = load_source_vendor(root_dir, ORCA_FILAMENT_LIBRARY, compatibility_rule, error, allow_cache || library_cache_only); if (library == nullptr) { error = "OrcaFilamentLibrary contains invalid presets"; return nullptr; @@ -2548,7 +2586,7 @@ void PresetBundle::clear_printer_hold_aliases() //BBS: add json related logic, load system presets from json std::pair PresetBundle::load_system_presets_from_json( - ForwardCompatibilitySubstitutionRule compatibility_rule, bool allow_cache) + ForwardCompatibilitySubstitutionRule compatibility_rule, bool write_caches) { //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%")%compatibility_rule; @@ -2568,14 +2606,14 @@ std::pair PresetBundle::load_system_pre // The vendors below are loaded whole and against each other — the filament // library first, then every other vendor with it as the base — so each parse // is complete enough to be worth caching. - m_generate_vendor_caches = allow_cache && (m_generate_vendor_caches || !validation_mode); + m_generate_vendor_caches = write_caches && (m_generate_vendor_caches || !validation_mode); // Sorted, so any duplicate-preset warning comes out in the same order on every run. std::vector vendors; for (const std::string& name : vendor_names_in(dir)) if (name == ORCA_FILAMENT_LIBRARY || !(validation_mode && !vendor_to_validate.empty() && name != vendor_to_validate)) vendors.push_back({ name, dir }); - auto result = this->load_vendors(vendors, compatibility_rule, allow_cache); + auto result = this->load_vendors(vendors, compatibility_rule, true); this->update_system_maps(); @@ -5282,7 +5320,7 @@ static void apply_receiver_mix_relocations(DynamicPrintConfig& //convert the old filament preset to new one after split -static void convert_filament_preset_name(std::string& machine_name, std::string& filament_name) +void PresetBundle::convert_filament_preset_name(const std::string& machine_name, std::string& filament_name) { auto machine_iter = filament_preset_convert.find(machine_name); if (machine_iter != filament_preset_convert.end()) diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index e09ce9dcb5..dac55c4130 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -1,16 +1,23 @@ #ifndef slic3r_PresetBundle_hpp_ #define slic3r_PresetBundle_hpp_ +#include "Config.hpp" #include "Preset.hpp" #include "PresetCacheFormat.hpp" #include "AppConfig.hpp" +#include "PrintConfig.hpp" #include "PublishSettings.hpp" +#include "Semver.hpp" #include "enum_bitmask.hpp" +#include +#include +#include #include #include #include #include +#include #include #include #include @@ -18,6 +25,8 @@ #include #include #include +#include +#include #define DEFAULT_USER_FOLDER_NAME "default" #define BUNDLE_STRUCTURE_JSON_NAME "bundle_structure.json" @@ -238,6 +247,9 @@ public: // Keys a project keeps when its presets are loaded: those listed in its escaped // "different_settings_to_system" entry for the preset, plus the preset bookkeeping keys. static std::set project_different_keys(const std::string &different_settings); + // A project filament saved under a name the current presets split per nozzle (e.g. H2D 0.6) is loaded from + // the preset that now holds its values. + static void convert_filament_preset_name(const std::string& machine_name, std::string& filament_name); PresetBundle(); PresetBundle(const PresetBundle &rhs); @@ -839,7 +851,9 @@ private: //std::pair load_system_presets(ForwardCompatibilitySubstitutionRule compatibility_rule); //BBS: add json related logic - std::pair load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule, bool allow_cache = true); + // Reads each vendor from its preset cache where one covers the profile, as every load does. + // write_caches = false keeps a read-only load from writing caches into the data directory. + std::pair load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule, bool write_caches = true); // Update the multicolor information for filaments. void update_filament_multi_color(); // Update renamed_from and alias maps of system profiles. diff --git a/src/libslic3r/PresetCacheFormat.cpp b/src/libslic3r/PresetCacheFormat.cpp index a45bcb77ac..01e634a581 100644 --- a/src/libslic3r/PresetCacheFormat.cpp +++ b/src/libslic3r/PresetCacheFormat.cpp @@ -1,9 +1,20 @@ #include "libslic3r/PresetCacheFormat.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include #include #include @@ -14,7 +25,12 @@ #include #include #include +#include +#include "Config.hpp" +#include "PrintConfig.hpp" +#include "Semver.hpp" +#include "Preset.hpp" #include "libslic3r/Utils.hpp" namespace Slic3r { diff --git a/src/libslic3r/PresetCacheFormat.hpp b/src/libslic3r/PresetCacheFormat.hpp index 52c40bea21..8ad1c5bde5 100644 --- a/src/libslic3r/PresetCacheFormat.hpp +++ b/src/libslic3r/PresetCacheFormat.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_PresetCacheFormat_hpp_ #define slic3r_PresetCacheFormat_hpp_ +#include #include #include #include diff --git a/src/libslic3r/PrincipalComponents2D.cpp b/src/libslic3r/PrincipalComponents2D.cpp index 7bdf793157..6d88320286 100644 --- a/src/libslic3r/PrincipalComponents2D.cpp +++ b/src/libslic3r/PrincipalComponents2D.cpp @@ -1,5 +1,11 @@ #include "PrincipalComponents2D.hpp" #include "Point.hpp" +#include +#include +#include "Polygon.hpp" +#include +#include "libslic3r.h" +#include namespace Slic3r { diff --git a/src/libslic3r/PrincipalComponents2D.hpp b/src/libslic3r/PrincipalComponents2D.hpp index dc8897a7a7..adf8e77a20 100644 --- a/src/libslic3r/PrincipalComponents2D.hpp +++ b/src/libslic3r/PrincipalComponents2D.hpp @@ -3,7 +3,9 @@ #include "AABBTreeLines.hpp" #include "BoundingBox.hpp" +#include "Point.hpp" #include "libslic3r.h" +#include #include #include "Polygon.hpp" diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index ce141c95a4..f44c124b8b 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -3,6 +3,56 @@ // needs the Win32 types declared already. #include #endif + +#include "PrintBase.hpp" +#include +#include +#include +#include +#include "libslic3r.h" +#include "calib.hpp" +#include +#include "CustomGCode.hpp" +#include "ObjectID.hpp" +#include +#include "Point.hpp" +#include "Polygon.hpp" +#include "Geometry.hpp" +#include +#include +#include +#include +#include "Slicing.hpp" +#include +#include "TriangleSelector.hpp" +#include "GCode/AdaptivePAProcessor.hpp" +#include +#include +#include "ExPolygon.hpp" +#include "Layer.hpp" +#include "FilamentGroup.hpp" +#include +#include "FilamentGroupUtils.hpp" +#include "MultiNozzleUtils.hpp" +#include +#include +#include "GCode/GCodeProcessor.hpp" +#include "GCode/ThumbnailData.hpp" +#include "ExtrusionEntity.hpp" +#include +#include "CommonDefs.hpp" +#include +#include +#include +#include "Surface.hpp" +#include "Circle.hpp" +#include "Polyline.hpp" +#include "ArcFitter.hpp" +#include +#include +#include +#include +#include "TriangleMesh.hpp" #include "Config.hpp" #include "Exception.hpp" #include "IMEXHelpers.hpp" diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 99aa6d385f..ed76404c92 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -1,6 +1,14 @@ #ifndef slic3r_Print_hpp_ #define slic3r_Print_hpp_ +#include "Config.hpp" +#include "Model.hpp" +#include "Polygon.hpp" +#include "Fill/FillBase.hpp" +#include "Polyline.hpp" +#include "ExtrusionEntity.hpp" +#include "Geometry.hpp" +#include "CommonDefs.hpp" #include "PrintBase.hpp" #include "Fill/FillAdaptive.hpp" #include "Fill/FillLightning.hpp" @@ -9,7 +17,9 @@ #include "ExtrusionEntityCollection.hpp" #include "Flow.hpp" #include "Point.hpp" +#include "PrintConfig.hpp" #include "Slicing.hpp" +#include "TriangleMesh.hpp" #include "TriangleMeshSlicer.hpp" #include "GCode/ToolOrdering.hpp" #include "GCode/WipeTower.hpp" @@ -18,13 +28,25 @@ #include "GCode/GCodeProcessor.hpp" #include "MultiMaterialSegmentation.hpp" #include "ObjectID.hpp" +#include "TriangleSelector.hpp" #include "libslic3r.h" #include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include #include +#include +#include #include "calib.hpp" diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index eba04d7d35..78a4e40ee6 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -1,11 +1,36 @@ #include "ClipperUtils.hpp" #include "IMEXHelpers.hpp" +#include "Geometry.hpp" +#include "CustomGCode.hpp" +#include "Config.hpp" #include "Model.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "Print.hpp" #include "FilamentMixer.hpp" +#include "Slicing.hpp" +#include "libslic3r.h" +#include "PrintConfig.hpp" +#include "PrintBase.hpp" +#include "libslic3r_version.h" +#include "TriangleSelector.hpp" +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/PrintBase.cpp b/src/libslic3r/PrintBase.cpp index 4448c12c76..7b022c8c84 100644 --- a/src/libslic3r/PrintBase.cpp +++ b/src/libslic3r/PrintBase.cpp @@ -1,11 +1,23 @@ +#include "Config.hpp" #include "Exception.hpp" #include "PrintBase.hpp" #include +#include #include #include +#include +#include +#include +#include +#include +#include #include "I18N.hpp" +#include "Model.hpp" +#include "libslic3r.h" +#include "libslic3r_version.h" +#include "PlaceholderParser.hpp" //! macro used to mark string used at localization, //! return same string diff --git a/src/libslic3r/PrintBase.hpp b/src/libslic3r/PrintBase.hpp index f1b158e51f..7e2b17e48f 100644 --- a/src/libslic3r/PrintBase.hpp +++ b/src/libslic3r/PrintBase.hpp @@ -1,8 +1,15 @@ #ifndef slic3r_PrintBase_hpp_ #define slic3r_PrintBase_hpp_ +#include "Config.hpp" +#include "Polygon.hpp" #include "libslic3r.h" +#include +#include +#include +#include #include +#include #include #include #include diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 88a9396dd0..3b84ac047a 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1,14 +1,35 @@ #include "PrintConfig.hpp" +#include "CommonDefs.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "PrintConfigConstants.hpp" #include "ClipperUtils.hpp" #include "Config.hpp" #include "FilamentMixer.hpp" #include "MaterialType.hpp" #include "I18N.hpp" +#include "enum_bitmask.hpp" #include "format.hpp" #include "GCode/Thumbnails.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -19,6 +40,11 @@ #include #include #include +#include +#include +#include +#include +#include namespace { std::set SplitStringAndRemoveDuplicateElement(const std::string &str, const std::string &separator) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index ce0e55487f..d65c4515e4 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -16,10 +16,13 @@ #ifndef slic3r_PrintConfig_hpp_ #define slic3r_PrintConfig_hpp_ +#include "Point.hpp" #include "libslic3r.h" #include "CommonDefs.hpp" #include "Config.hpp" #include "Polygon.hpp" +#include +#include #include #include #include @@ -27,6 +30,19 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 699bbb99b2..d4201cf696 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1,6 +1,12 @@ +#include "ExPolygon.hpp" +#include "Config.hpp" #include "Exception.hpp" +#include "Line.hpp" +#include "Flow.hpp" #include "Model.hpp" #include "Point.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" #include "Print.hpp" #include "BoundingBox.hpp" #include "ClipperUtils.hpp" @@ -9,6 +15,7 @@ #include "I18N.hpp" #include "Layer.hpp" #include "MutablePolygon.hpp" +#include "PrintBase.hpp" #include "PrintConfig.hpp" #include "SLA/IndexedMesh.hpp" #include "Support/SupportMaterial.hpp" @@ -18,6 +25,7 @@ #include "Slicing.hpp" #include "Tesselate.hpp" #include "TriangleMeshSlicer.hpp" +#include "TriangleSelector.hpp" #include "Utils.hpp" #include "Fill/FillAdaptive.hpp" #include "Fill/Fill.hpp" @@ -26,16 +34,39 @@ #include "format.hpp" #include "AABBTreeIndirect.hpp" #include "AABBTreeLines.hpp" +#include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include #include #include #include #include #include +#include +#include #include #include @@ -45,6 +76,7 @@ #include #include +#include using namespace std::literals; diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 14bd65c9cf..43a9b703a0 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -1,16 +1,42 @@ +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include "BoundingBox.hpp" #include "ClipperUtils.hpp" #include "ElephantFootCompensation.hpp" +#include "ExPolygon.hpp" #include "Exception.hpp" +#include "Flow.hpp" #include "I18N.hpp" #include "Layer.hpp" +#include "Model.hpp" #include "MultiMaterialSegmentation.hpp" +#include "ObjectID.hpp" +#include "Point.hpp" +#include "Polygon.hpp" #include "Print.hpp" //BBS +#include "PrintConfig.hpp" +#include "PrintBase.hpp" #include "ShortestPath.hpp" +#include "libslic3r.h" +#include "TriangleMeshSlicer.hpp" +#include "TriangleMesh.hpp" +#include "Slicing.hpp" +#include "Surface.hpp" +#include "Utils.hpp" #include "libslic3r/Feature/Interlocking/InterlockingGenerator.hpp" //! macro used to mark string used at localization, return same string diff --git a/src/libslic3r/PrintRegion.cpp b/src/libslic3r/PrintRegion.cpp index 5c08de8b36..52018223ca 100644 --- a/src/libslic3r/PrintRegion.cpp +++ b/src/libslic3r/PrintRegion.cpp @@ -1,5 +1,13 @@ +#include "Config.hpp" #include "Exception.hpp" +#include "Flow.hpp" #include "Print.hpp" +#include +#include "PrintConfig.hpp" +#include "libslic3r.h" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/ProjectTask.cpp b/src/libslic3r/ProjectTask.cpp index fe5fd36a45..33be040999 100644 --- a/src/libslic3r/ProjectTask.cpp +++ b/src/libslic3r/ProjectTask.cpp @@ -4,6 +4,11 @@ #include "ProjectTask.hpp" +#include +#include +#include +#include +#include #include #include #include diff --git a/src/libslic3r/ProjectTask.hpp b/src/libslic3r/ProjectTask.hpp index fd9dd2db3b..47eaa37dcc 100644 --- a/src/libslic3r/ProjectTask.hpp +++ b/src/libslic3r/ProjectTask.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_ProjectTask_hpp_ #define slic3r_ProjectTask_hpp_ +#include #include #include #include diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 6d28cc0af3..435c8e44eb 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -1,5 +1,6 @@ #include "PublishSettings.hpp" +#include "Config.hpp" #include "PresetBundle.hpp" #include "Preset.hpp" #include "PrintConfig.hpp" @@ -8,8 +9,11 @@ #include #include +#include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/QuadricEdgeCollapse.cpp b/src/libslic3r/QuadricEdgeCollapse.cpp index 5d0e3c17e8..27f820e453 100644 --- a/src/libslic3r/QuadricEdgeCollapse.cpp +++ b/src/libslic3r/QuadricEdgeCollapse.cpp @@ -1,8 +1,22 @@ #include "QuadricEdgeCollapse.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include "MutablePriorityQueue.hpp" +#include "libslic3r.h" +#include "Point.hpp" #include +#include +#include using namespace Slic3r; diff --git a/src/libslic3r/SLA/AGGRaster.hpp b/src/libslic3r/SLA/AGGRaster.hpp index 7c8e71c2ae..52c95eae5b 100644 --- a/src/libslic3r/SLA/AGGRaster.hpp +++ b/src/libslic3r/SLA/AGGRaster.hpp @@ -1,7 +1,14 @@ #ifndef AGGRASTER_HPP #define AGGRASTER_HPP +#include +#include +#include +#include #include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/ExPolygon.hpp" // For rasterizing @@ -15,6 +22,8 @@ #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/SLA/BoostAdapter.hpp b/src/libslic3r/SLA/BoostAdapter.hpp index 13e0465b14..d5487808a7 100644 --- a/src/libslic3r/SLA/BoostAdapter.hpp +++ b/src/libslic3r/SLA/BoostAdapter.hpp @@ -1,10 +1,22 @@ #ifndef SLA_BOOSTADAPTER_HPP #define SLA_BOOSTADAPTER_HPP +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include namespace boost { namespace geometry { diff --git a/src/libslic3r/SLA/Clustering.cpp b/src/libslic3r/SLA/Clustering.cpp index 41ff1d4f09..010ce5d6e1 100644 --- a/src/libslic3r/SLA/Clustering.cpp +++ b/src/libslic3r/SLA/Clustering.cpp @@ -1,8 +1,16 @@ #include "Clustering.hpp" #include "boost/geometry/index/rtree.hpp" +#include +#include +#include +#include +#include +#include #include #include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/Clustering.hpp b/src/libslic3r/SLA/Clustering.hpp index 269ec28822..0f1e113b22 100644 --- a/src/libslic3r/SLA/Clustering.hpp +++ b/src/libslic3r/SLA/Clustering.hpp @@ -1,6 +1,11 @@ #ifndef SLA_CLUSTERING_HPP #define SLA_CLUSTERING_HPP +#include +#include +#include +#include +#include #include #include diff --git a/src/libslic3r/SLA/ConcaveHull.cpp b/src/libslic3r/SLA/ConcaveHull.cpp index 2484fda2ff..8d361fc5b5 100644 --- a/src/libslic3r/SLA/ConcaveHull.cpp +++ b/src/libslic3r/SLA/ConcaveHull.cpp @@ -1,3 +1,10 @@ +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include "libslic3r/Polygon.hpp" +#include +#include "libslic3r/ExPolygon.hpp" #include #include @@ -5,6 +12,8 @@ #include #include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/ConcaveHull.hpp b/src/libslic3r/SLA/ConcaveHull.hpp index dccdafd18c..5c697c2595 100644 --- a/src/libslic3r/SLA/ConcaveHull.hpp +++ b/src/libslic3r/SLA/ConcaveHull.hpp @@ -1,6 +1,10 @@ #ifndef SLA_CONCAVEHULL_HPP #define SLA_CONCAVEHULL_HPP +#include "libslic3r/Polygon.hpp" +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include namespace Slic3r { diff --git a/src/libslic3r/SLA/Concurrency.hpp b/src/libslic3r/SLA/Concurrency.hpp index 7299101b31..35e30d88d7 100644 --- a/src/libslic3r/SLA/Concurrency.hpp +++ b/src/libslic3r/SLA/Concurrency.hpp @@ -3,6 +3,8 @@ // FIXME: Deprecated +#include "libslic3r/Execution/Execution.hpp" +#include #include #include diff --git a/src/libslic3r/SLA/Hollowing.cpp b/src/libslic3r/SLA/Hollowing.cpp index f50cdbced2..d21744a026 100644 --- a/src/libslic3r/SLA/Hollowing.cpp +++ b/src/libslic3r/SLA/Hollowing.cpp @@ -1,5 +1,20 @@ +#include "libslic3r/SLA/JobController.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include "libslic3r/ExPolygon.hpp" +#include +#include "libslic3r/SLA/Concurrency.hpp" #include +#include +#include #include +#include #include #include @@ -15,6 +30,8 @@ #include #include +#include +#include //! macro used to mark string used at localization, //! return same string diff --git a/src/libslic3r/SLA/Hollowing.hpp b/src/libslic3r/SLA/Hollowing.hpp index f6beaadb24..fd06f93a34 100644 --- a/src/libslic3r/SLA/Hollowing.hpp +++ b/src/libslic3r/SLA/Hollowing.hpp @@ -1,9 +1,17 @@ #ifndef SLA_HOLLOWING_HPP #define SLA_HOLLOWING_HPP +#include "libslic3r/Point.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/ExPolygon.hpp" +#include #include #include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/SLA/IndexedMesh.cpp b/src/libslic3r/SLA/IndexedMesh.cpp index 65d9d90b34..d17f9497fc 100644 --- a/src/libslic3r/SLA/IndexedMesh.cpp +++ b/src/libslic3r/SLA/IndexedMesh.cpp @@ -1,10 +1,24 @@ #include "IndexedMesh.hpp" +#include "libslic3r/BoundingBox.hpp" #include "Concurrency.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include +#include #ifdef SLIC3R_HOLE_RAYCASTER #include diff --git a/src/libslic3r/SLA/IndexedMesh.hpp b/src/libslic3r/SLA/IndexedMesh.hpp index bb2dee034c..b377064115 100644 --- a/src/libslic3r/SLA/IndexedMesh.hpp +++ b/src/libslic3r/SLA/IndexedMesh.hpp @@ -1,6 +1,12 @@ #ifndef SLA_INDEXEDMESH_H #define SLA_INDEXEDMESH_H +#include +#include +#include +#include +#include +#include #include #include diff --git a/src/libslic3r/SLA/Pad.cpp b/src/libslic3r/SLA/Pad.cpp index 8726dfa55b..887676174d 100644 --- a/src/libslic3r/SLA/Pad.cpp +++ b/src/libslic3r/SLA/Pad.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include #include @@ -6,6 +8,9 @@ #include "ConcaveHull.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/TriangleMesh.hpp" #include "boost/log/trivial.hpp" #include "ClipperUtils.hpp" #include "Tesselate.hpp" @@ -19,7 +24,11 @@ #include "SVG.hpp" #include "I18N.hpp" +#include "libslic3r/libslic3r.h" #include +#include +#include +#include //! macro used to mark string used at localization, //! return same string diff --git a/src/libslic3r/SLA/RasterBase.cpp b/src/libslic3r/SLA/RasterBase.cpp index 7240b198da..dadfa23e96 100644 --- a/src/libslic3r/SLA/RasterBase.cpp +++ b/src/libslic3r/SLA/RasterBase.cpp @@ -1,13 +1,25 @@ #ifndef SLARASTER_CPP #define SLARASTER_CPP +#include +#include +#include +#include +#include #include +#include +#include #include #include // minz image write: +#include #include +#include +#include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/RasterBase.hpp b/src/libslic3r/SLA/RasterBase.hpp index 33d39eafbd..44b7c0dccd 100644 --- a/src/libslic3r/SLA/RasterBase.hpp +++ b/src/libslic3r/SLA/RasterBase.hpp @@ -1,8 +1,13 @@ #ifndef SLA_RASTERBASE_HPP #define SLA_RASTERBASE_HPP +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" #include #include +#include #include #include #include diff --git a/src/libslic3r/SLA/RasterToPolygons.cpp b/src/libslic3r/SLA/RasterToPolygons.cpp index e05a721cd8..88620831d8 100644 --- a/src/libslic3r/SLA/RasterToPolygons.cpp +++ b/src/libslic3r/SLA/RasterToPolygons.cpp @@ -1,9 +1,18 @@ #include "RasterToPolygons.hpp" #include "AGGRaster.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/libslic3r.h" #include "libslic3r/MarchingSquares.hpp" #include "MTUtils.hpp" #include "ClipperUtils.hpp" +#include +#include +#include +#include +#include namespace marchsq { diff --git a/src/libslic3r/SLA/RasterToPolygons.hpp b/src/libslic3r/SLA/RasterToPolygons.hpp index 5320887c8f..1f78865603 100644 --- a/src/libslic3r/SLA/RasterToPolygons.hpp +++ b/src/libslic3r/SLA/RasterToPolygons.hpp @@ -1,6 +1,7 @@ #ifndef RASTERTOPOLYGONS_HPP #define RASTERTOPOLYGONS_HPP +#include "libslic3r/Point.hpp" #include "libslic3r/ExPolygon.hpp" namespace Slic3r { diff --git a/src/libslic3r/SLA/ReprojectPointsOnMesh.hpp b/src/libslic3r/SLA/ReprojectPointsOnMesh.hpp index 3ad7d62b1e..881a0a0e22 100644 --- a/src/libslic3r/SLA/ReprojectPointsOnMesh.hpp +++ b/src/libslic3r/SLA/ReprojectPointsOnMesh.hpp @@ -7,7 +7,9 @@ #include "IndexedMesh.hpp" #include "libslic3r/Model.hpp" +#include #include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/Rotfinder.cpp b/src/libslic3r/SLA/Rotfinder.cpp index 196646dc9e..8134fb1d6c 100644 --- a/src/libslic3r/SLA/Rotfinder.cpp +++ b/src/libslic3r/SLA/Rotfinder.cpp @@ -1,3 +1,10 @@ +#include +#include +#include +#include +#include +#include +#include #include #include @@ -8,12 +15,19 @@ #include #include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Execution/Execution.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Optimize/Optimizer.hpp" +#include "libslic3r/BoundingBox.hpp" #include "libslic3r/SLAPrint.hpp" #include "libslic3r/PrintConfig.hpp" #include #include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/Rotfinder.hpp b/src/libslic3r/SLA/Rotfinder.hpp index d632419fb3..ba0f23b310 100644 --- a/src/libslic3r/SLA/Rotfinder.hpp +++ b/src/libslic3r/SLA/Rotfinder.hpp @@ -5,6 +5,7 @@ #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/SLA/SpatIndex.cpp b/src/libslic3r/SLA/SpatIndex.cpp index d95ba55bee..3e36b4943e 100644 --- a/src/libslic3r/SLA/SpatIndex.cpp +++ b/src/libslic3r/SLA/SpatIndex.cpp @@ -1,7 +1,15 @@ #include "SpatIndex.hpp" +#include "libslic3r/BoundingBox.hpp" // for concave hull merging decisions +#include +#include +#include +#include +#include #include +#include +#include #ifdef _MSC_VER #pragma warning(push) diff --git a/src/libslic3r/SLA/SpatIndex.hpp b/src/libslic3r/SLA/SpatIndex.hpp index ef059d3ae6..a35806800c 100644 --- a/src/libslic3r/SLA/SpatIndex.hpp +++ b/src/libslic3r/SLA/SpatIndex.hpp @@ -1,6 +1,9 @@ #ifndef SLA_SPATINDEX_HPP #define SLA_SPATINDEX_HPP +#include +#include +#include #include #include #include diff --git a/src/libslic3r/SLA/SupportPoint.hpp b/src/libslic3r/SLA/SupportPoint.hpp index 71849a3643..6c2cf88075 100644 --- a/src/libslic3r/SLA/SupportPoint.hpp +++ b/src/libslic3r/SLA/SupportPoint.hpp @@ -1,7 +1,11 @@ #ifndef SLA_SUPPORTPOINT_HPP #define SLA_SUPPORTPOINT_HPP +#include +#include +#include "libslic3r/libslic3r.h" #include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportPointGenerator.cpp b/src/libslic3r/SLA/SupportPointGenerator.cpp index e3cca1324f..f63430bede 100644 --- a/src/libslic3r/SLA/SupportPointGenerator.cpp +++ b/src/libslic3r/SLA/SupportPointGenerator.cpp @@ -1,6 +1,15 @@ //#include "igl/random_points_on_mesh.h" //#include "igl/AABB.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include "SupportPointGenerator.hpp" @@ -8,6 +17,9 @@ #include "Concurrency.hpp" #include "Model.hpp" #include "ExPolygon.hpp" +#include "libslic3r/SLA/IndexedMesh.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/Polygon.hpp" #include "SVG.hpp" #include "Point.hpp" #include "ClipperUtils.hpp" @@ -17,6 +29,9 @@ #include #include +#include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportPointGenerator.hpp b/src/libslic3r/SLA/SupportPointGenerator.hpp index 17daed9f30..e48fa05335 100644 --- a/src/libslic3r/SLA/SupportPointGenerator.hpp +++ b/src/libslic3r/SLA/SupportPointGenerator.hpp @@ -1,6 +1,13 @@ #ifndef SLA_SUPPORTPOINTGENERATOR_HPP #define SLA_SUPPORTPOINTGENERATOR_HPP +#include "libslic3r/ExPolygon.hpp" +#include +#include "libslic3r/Polygon.hpp" +#include +#include "libslic3r/libslic3r.h" +#include +#include #include #include @@ -11,6 +18,9 @@ #include #include +#include +#include +#include // #define SLA_SUPPORTPOINTGEN_DEBUG diff --git a/src/libslic3r/SLA/SupportTree.cpp b/src/libslic3r/SLA/SupportTree.cpp index a0f88ed608..4de28ca45b 100644 --- a/src/libslic3r/SLA/SupportTree.cpp +++ b/src/libslic3r/SLA/SupportTree.cpp @@ -3,6 +3,12 @@ * */ +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include #include #include #include @@ -18,6 +24,8 @@ #include #include #include +#include +#include //! macro used to mark string used at localization, //! return same string diff --git a/src/libslic3r/SLA/SupportTree.hpp b/src/libslic3r/SLA/SupportTree.hpp index a5e283b0dd..7511b0aaa5 100644 --- a/src/libslic3r/SLA/SupportTree.hpp +++ b/src/libslic3r/SLA/SupportTree.hpp @@ -1,6 +1,7 @@ #ifndef SLA_SUPPORTTREE_HPP #define SLA_SUPPORTTREE_HPP +#include #include #include #include diff --git a/src/libslic3r/SLA/SupportTreeBuilder.cpp b/src/libslic3r/SLA/SupportTreeBuilder.cpp index 4080c4fc3f..635b5452d1 100644 --- a/src/libslic3r/SLA/SupportTreeBuilder.cpp +++ b/src/libslic3r/SLA/SupportTreeBuilder.cpp @@ -2,6 +2,21 @@ #define NOMINMAX #endif +#include "libslic3r/SLA/SpatIndex.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/SLA/Pad.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/MTUtils.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/SLA/SupportTree.hpp" + #include #include #include diff --git a/src/libslic3r/SLA/SupportTreeBuilder.hpp b/src/libslic3r/SLA/SupportTreeBuilder.hpp index df5484e3dd..de0170d854 100644 --- a/src/libslic3r/SLA/SupportTreeBuilder.hpp +++ b/src/libslic3r/SLA/SupportTreeBuilder.hpp @@ -1,12 +1,18 @@ #ifndef SLA_SUPPORTTREEBUILDER_HPP #define SLA_SUPPORTTREEBUILDER_HPP +#include "libslic3r/Point.hpp" +#include +#include +#include "libslic3r/libslic3r.h" #include #include //#include #include #include #include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SupportTreeBuildsteps.cpp index cff92b5b89..923d0f924f 100644 --- a/src/libslic3r/SLA/SupportTreeBuildsteps.cpp +++ b/src/libslic3r/SLA/SupportTreeBuildsteps.cpp @@ -1,8 +1,31 @@ +#include "libslic3r/Optimize/Optimizer.hpp" +#include "libslic3r/SLA/SupportTree.hpp" +#include "libslic3r/SLA/IndexedMesh.hpp" +#include "libslic3r/SLA/SupportTreeBuilder.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include +#include +#include +#include "libslic3r/SLA/Concurrency.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/SLA/Clustering.hpp" +#include +#include +#include #include #include #include #include +#include +#include +#include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportTreeBuildsteps.hpp b/src/libslic3r/SLA/SupportTreeBuildsteps.hpp index 478e2df1fe..850f35bdeb 100644 --- a/src/libslic3r/SLA/SupportTreeBuildsteps.hpp +++ b/src/libslic3r/SLA/SupportTreeBuildsteps.hpp @@ -1,12 +1,30 @@ #ifndef SLASUPPORTTREEALGORITHM_H #define SLASUPPORTTREEALGORITHM_H +#include "libslic3r/Point.hpp" +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/SLA/Concurrency.hpp" +#include +#include +#include "libslic3r/SLA/SupportTree.hpp" +#include "libslic3r/SLA/IndexedMesh.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/SLA/Pad.hpp" #include +#include +#include +#include #include #include #include #include +#include +#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportTreeMesher.cpp b/src/libslic3r/SLA/SupportTreeMesher.cpp index 17f57f4578..0732a7ab23 100644 --- a/src/libslic3r/SLA/SupportTreeMesher.cpp +++ b/src/libslic3r/SLA/SupportTreeMesher.cpp @@ -1,4 +1,13 @@ #include "SupportTreeMesher.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include "libslic3r/TriangleMesh.hpp" namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/SupportTreeMesher.hpp b/src/libslic3r/SLA/SupportTreeMesher.hpp index 63ccc5fce3..e914bcea36 100644 --- a/src/libslic3r/SLA/SupportTreeMesher.hpp +++ b/src/libslic3r/SLA/SupportTreeMesher.hpp @@ -1,10 +1,14 @@ #ifndef SUPPORTTREEMESHER_HPP #define SUPPORTTREEMESHER_HPP +#include "libslic3r/libslic3r.h" #include "libslic3r/Point.hpp" #include "libslic3r/SLA/SupportTreeBuilder.hpp" #include "libslic3r/TriangleMesh.hpp" +#include +#include +#include //#include "libslic3r/SLA/Contour3D.hpp" namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index eb37ca578c..336143c764 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1,17 +1,42 @@ #include "SLAPrint.hpp" +#include "PrintConfig.hpp" +#include "SLA/SupportTree.hpp" +#include "SLA/Pad.hpp" +#include "Point.hpp" +#include "Model.hpp" +#include "ObjectID.hpp" +#include "Config.hpp" +#include "PrintBase.hpp" +#include "SLA/SupportPoint.hpp" +#include "Polygon.hpp" +#include "ExPolygon.hpp" +#include "SLA/Hollowing.hpp" #include "SLAPrintSteps.hpp" #include "ClipperUtils.hpp" #include "Geometry.hpp" #include "MTUtils.hpp" #include "Thread.hpp" +#include "libslic3r.h" +#include "Utils.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include // #define SLAPRINT_DO_BENCHMARK diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index 0eaa44a754..7b863f7380 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -1,15 +1,35 @@ #ifndef slic3r_SLAPrint_hpp_ #define slic3r_SLAPrint_hpp_ +#include +#include +#include #include +#include +#include +#include #include +#include "ObjectID.hpp" +#include +#include "ExPolygon.hpp" +#include +#include "Config.hpp" +#include +#include "Polygon.hpp" +#include #include "PrintBase.hpp" +#include "PrintConfig.hpp" +#include "SLA/Hollowing.hpp" +#include "SLA/JobController.hpp" +#include "SLA/Pad.hpp" #include "SLA/RasterBase.hpp" +#include "SLA/SupportPoint.hpp" #include "SLA/SupportTree.hpp" #include "Execution/ExecutionTBB.hpp" #include "Point.hpp" #include "MTUtils.hpp" #include "Zipper.hpp" +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp index 04c65644d0..51c2e6ef9f 100644 --- a/src/libslic3r/SLAPrintSteps.cpp +++ b/src/libslic3r/SLAPrintSteps.cpp @@ -1,3 +1,13 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -18,8 +28,23 @@ #include #include +#include +#include +#include "ExPolygon.hpp" +#include "Execution/ExecutionTBB.hpp" #include "I18N.hpp" +#include "SLAPrint.hpp" +#include "Point.hpp" +#include "libslic3r.h" +#include "SLA/Hollowing.hpp" +#include "TriangleMesh.hpp" +#include "Line.hpp" +#include "Model.hpp" +#include "SLA/SupportPoint.hpp" +#include "SLA/JobController.hpp" +#include "SLA/SupportTree.hpp" +#include "SLA/RasterBase.hpp" //! macro used to mark string used at localization, //! return same string diff --git a/src/libslic3r/SLAPrintSteps.hpp b/src/libslic3r/SLAPrintSteps.hpp index 19b64d4a98..8d1ca12179 100644 --- a/src/libslic3r/SLAPrintSteps.hpp +++ b/src/libslic3r/SLAPrintSteps.hpp @@ -1,12 +1,15 @@ #ifndef SLAPRINTSTEPS_HPP #define SLAPRINTSTEPS_HPP +#include +#include "libslic3r.h" #include #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/SVG.cpp b/src/libslic3r/SVG.cpp index 206158edd7..ebd4343425 100644 --- a/src/libslic3r/SVG.cpp +++ b/src/libslic3r/SVG.cpp @@ -1,8 +1,28 @@ #include "SVG.hpp" +#include +#include +#include +#include +#include "BoundingBox.hpp" +#include "libslic3r.h" +#include "Line.hpp" +#include "Point.hpp" +#include +#include "ExPolygon.hpp" +#include "Polygon.hpp" +#include "Surface.hpp" +#include "Polyline.hpp" +#include "MultiPoint.hpp" +#include +#include #include #include #include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/SVG.hpp b/src/libslic3r/SVG.hpp index d677f48375..838c1cdc73 100644 --- a/src/libslic3r/SVG.hpp +++ b/src/libslic3r/SVG.hpp @@ -1,11 +1,20 @@ #ifndef slic3r_SVG_hpp_ #define slic3r_SVG_hpp_ +#include "Point.hpp" +#include "Polygon.hpp" +#include "Polyline.hpp" +#include "MultiPoint.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" #include "Line.hpp" #include "TriangleMesh.hpp" #include "Surface.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Semver.cpp b/src/libslic3r/Semver.cpp index 5d36b39f72..f052ba6bdb 100644 --- a/src/libslic3r/Semver.cpp +++ b/src/libslic3r/Semver.cpp @@ -1,4 +1,6 @@ +#include "Semver.hpp" #include "libslic3r.h" +#include "libslic3r_version.h" namespace Slic3r { diff --git a/src/libslic3r/Semver.hpp b/src/libslic3r/Semver.hpp index d3683b4eb8..7c79f404ce 100644 --- a/src/libslic3r/Semver.hpp +++ b/src/libslic3r/Semver.hpp @@ -1,12 +1,17 @@ #ifndef slic3r_Semver_hpp_ #define slic3r_Semver_hpp_ +#include +#include +#include +#include #include #include #include #include #include #include +#include #include "semver/semver.h" diff --git a/src/libslic3r/Shape/TextShape.cpp b/src/libslic3r/Shape/TextShape.cpp index 4f32b9d857..cc7a7d555d 100644 --- a/src/libslic3r/Shape/TextShape.cpp +++ b/src/libslic3r/Shape/TextShape.cpp @@ -4,13 +4,36 @@ #include "TextShape.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include +#include "libslic3r/Point.hpp" #include "Standard_TypeDef.hxx" #include "STEPCAFControl_Reader.hxx" #include "BRepMesh_IncrementalMesh.hxx" #include "Interface_Static.hxx" +#include "libslic3r/Utils.hpp" #include "XCAFDoc_DocumentTool.hxx" #include "XCAFDoc_ShapeTool.hxx" #include "XCAFApp_Application.hxx" diff --git a/src/libslic3r/Shape/TextShape.hpp b/src/libslic3r/Shape/TextShape.hpp index d093c2da42..28abf4d7ea 100644 --- a/src/libslic3r/Shape/TextShape.hpp +++ b/src/libslic3r/Shape/TextShape.hpp @@ -2,6 +2,9 @@ #define slic3r_Text_Shape_hpp_ #include "libslic3r/TriangleMesh.hpp" +#include +#include +#include namespace Slic3r { class TriangleMesh; diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp index 3397daf55c..59637b4dae 100644 --- a/src/libslic3r/ShortEdgeCollapse.cpp +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -1,10 +1,14 @@ #include "ShortEdgeCollapse.hpp" +#include "Point.hpp" +#include "TriangleMesh.hpp" #include "libslic3r/NormalUtils.hpp" +#include #include #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/ShortEdgeCollapse.hpp b/src/libslic3r/ShortEdgeCollapse.hpp index e6f1822c89..f62a082828 100644 --- a/src/libslic3r/ShortEdgeCollapse.hpp +++ b/src/libslic3r/ShortEdgeCollapse.hpp @@ -2,6 +2,7 @@ #define SRC_LIBSLIC3R_SHORTEDGECOLLAPSE_HPP_ #include "libslic3r/TriangleMesh.hpp" +#include namespace Slic3r{ diff --git a/src/libslic3r/ShortestPath.cpp b/src/libslic3r/ShortestPath.cpp index 301a804753..0b31a66919 100644 --- a/src/libslic3r/ShortestPath.cpp +++ b/src/libslic3r/ShortestPath.cpp @@ -1,3 +1,18 @@ +#include "ExtrusionEntity.hpp" +#include +#include +#include +#include "Point.hpp" +#include +#include +#include +#include "ExPolygon.hpp" +#include "BoundingBox.hpp" +#include +#include "Polyline.hpp" +#include +#include "Line.hpp" +#include "libslic3r.h" #if 0 #pragma optimize("", off) #undef NDEBUG diff --git a/src/libslic3r/ShortestPath.hpp b/src/libslic3r/ShortestPath.hpp index f4ce89a16b..d8cd7a025f 100644 --- a/src/libslic3r/ShortestPath.hpp +++ b/src/libslic3r/ShortestPath.hpp @@ -1,10 +1,12 @@ #ifndef slic3r_ShortestPath_hpp_ #define slic3r_ShortestPath_hpp_ +#include "Polyline.hpp" #include "libslic3r.h" #include "ExtrusionEntity.hpp" #include "Point.hpp" +#include #include #include #include diff --git a/src/libslic3r/SlicesToTriangleMesh.cpp b/src/libslic3r/SlicesToTriangleMesh.cpp index 3b55cf066b..a536bc0d5e 100644 --- a/src/libslic3r/SlicesToTriangleMesh.cpp +++ b/src/libslic3r/SlicesToTriangleMesh.cpp @@ -1,14 +1,21 @@ +#include +#include #include #include "SlicesToTriangleMesh.hpp" //#include "libslic3r/MTUtils.hpp" +#include "Polygon.hpp" +#include "Point.hpp" +#include "TriangleMesh.hpp" +#include "Execution/Execution.hpp" #include "libslic3r/Execution/ExecutionTBB.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Tesselate.hpp" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/SlicesToTriangleMesh.hpp b/src/libslic3r/SlicesToTriangleMesh.hpp index 57b540d9fb..f3177a7622 100644 --- a/src/libslic3r/SlicesToTriangleMesh.hpp +++ b/src/libslic3r/SlicesToTriangleMesh.hpp @@ -3,6 +3,7 @@ #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/ExPolygon.hpp" +#include namespace Slic3r { diff --git a/src/libslic3r/Slicing.cpp b/src/libslic3r/Slicing.cpp index c8c37a5a79..92bdac10e3 100644 --- a/src/libslic3r/Slicing.cpp +++ b/src/libslic3r/Slicing.cpp @@ -1,5 +1,13 @@ +#include +#include +#include +#include #include +#include +#include +#include +#include "Point.hpp" #include "libslic3r.h" #include "Slicing.hpp" #include "SlicingAdaptive.hpp" diff --git a/src/libslic3r/Slicing.hpp b/src/libslic3r/Slicing.hpp index f735ec5518..59ae27c8dd 100644 --- a/src/libslic3r/Slicing.hpp +++ b/src/libslic3r/Slicing.hpp @@ -3,10 +3,12 @@ #ifndef slic3r_Slicing_hpp_ #define slic3r_Slicing_hpp_ +#include #include #include #include #include +#include #include #include "libslic3r.h" diff --git a/src/libslic3r/SlicingAdaptive.cpp b/src/libslic3r/SlicingAdaptive.cpp index 30ff67bba5..65600b4005 100644 --- a/src/libslic3r/SlicingAdaptive.cpp +++ b/src/libslic3r/SlicingAdaptive.cpp @@ -3,8 +3,14 @@ #include "TriangleMesh.hpp" #include "SlicingAdaptive.hpp" +#include #include +#include #include +#include +#include +#include +#include // Based on the work of Florens Waserfall (@platch on github) // and his paper diff --git a/src/libslic3r/SlicingAdaptive.hpp b/src/libslic3r/SlicingAdaptive.hpp index a296553d62..99479bb8b6 100644 --- a/src/libslic3r/SlicingAdaptive.hpp +++ b/src/libslic3r/SlicingAdaptive.hpp @@ -5,6 +5,9 @@ #include "Slicing.hpp" #include "admesh/stl.h" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/StreamUtils.hpp b/src/libslic3r/StreamUtils.hpp index 78a9ac7335..d3c6823a8f 100644 --- a/src/libslic3r/StreamUtils.hpp +++ b/src/libslic3r/StreamUtils.hpp @@ -6,6 +6,7 @@ #include "Polygon.hpp" #include "Polyline.hpp" #include "ExPolygon.hpp" +#include #include #include diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index d4495cf4a2..46ed7e968c 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -13,11 +13,27 @@ #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include "SupportCommon.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Polyline.hpp" #include "SupportLayer.hpp" #include "SupportParameters.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Surface.hpp" +#include "libslic3r/Utils.hpp" // #define SLIC3R_DEBUG diff --git a/src/libslic3r/Support/SupportCommon.hpp b/src/libslic3r/Support/SupportCommon.hpp index 531daaa0a8..e6f5b3e1ef 100644 --- a/src/libslic3r/Support/SupportCommon.hpp +++ b/src/libslic3r/Support/SupportCommon.hpp @@ -4,8 +4,16 @@ #include "../Layer.hpp" #include "../Polygon.hpp" #include "../Print.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Fill/FillBase.hpp" #include "SupportLayer.hpp" #include "SupportParameters.hpp" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Support/SupportLayer.hpp b/src/libslic3r/Support/SupportLayer.hpp index 64e3be99e7..46b41df35a 100644 --- a/src/libslic3r/Support/SupportLayer.hpp +++ b/src/libslic3r/Support/SupportLayer.hpp @@ -1,8 +1,12 @@ #ifndef slic3r_SupportLayer_hpp_ #define slic3r_SupportLayer_hpp_ +#include +#include #include #include +#include +#include // for Slic3r::deque #include "../libslic3r.h" #include "../ClipperUtils.hpp" diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 2850160d91..ab40c155af 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1,22 +1,48 @@ #include "ClipperUtils.hpp" +#include "libslic3r/ExPolygon.hpp" #include "ExtrusionEntity.hpp" #include "ExtrusionEntityCollection.hpp" +#include "libslic3r/Flow.hpp" #include "Layer.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Polyline.hpp" #include "Print.hpp" #include "SupportMaterial.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/Support/SupportLayer.hpp" +#include "libslic3r/PrintConfig.hpp" #include "SupportCommon.hpp" #include "Geometry.hpp" #include "Point.hpp" #include "MutablePolygon.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Surface.hpp" +#include "libslic3r/TriangleSelector.hpp" +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include #include #include +#include +#include +#include #define SUPPORT_USE_AGG_RASTERIZER diff --git a/src/libslic3r/Support/SupportMaterial.hpp b/src/libslic3r/Support/SupportMaterial.hpp index 6d5355dab1..1d5bec31b5 100644 --- a/src/libslic3r/Support/SupportMaterial.hpp +++ b/src/libslic3r/Support/SupportMaterial.hpp @@ -2,11 +2,14 @@ #define slic3r_SupportMaterial_hpp_ #include "Flow.hpp" +#include "libslic3r/Polygon.hpp" #include "PrintConfig.hpp" #include "Slicing.hpp" #include "Fill/FillBase.hpp" #include "SupportLayer.hpp" #include "SupportParameters.hpp" +#include +#include "libslic3r/libslic3r.h" namespace Slic3r { class PrintObject; diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index e9151c0c95..ebf2cc2f4e 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -1,9 +1,20 @@ #ifndef slic3r_SupportParameters_hpp_ #define slic3r_SupportParameters_hpp_ +#include #include +#include +#include +#include +#include #include "../libslic3r.h" #include "../Flow.hpp" +#include "../Layer.hpp" +#include "../Print.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Geometry.hpp" namespace Slic3r { diff --git a/src/libslic3r/Support/SupportSpotsGenerator.cpp b/src/libslic3r/Support/SupportSpotsGenerator.cpp index 6fb4908e67..a3c312ee15 100644 --- a/src/libslic3r/Support/SupportSpotsGenerator.cpp +++ b/src/libslic3r/Support/SupportSpotsGenerator.cpp @@ -4,6 +4,7 @@ #include "ExPolygon.hpp" #include "ExtrusionEntity.hpp" #include "ExtrusionEntityCollection.hpp" +#include "libslic3r/Flow.hpp" #include "GCode/ExtrusionProcessor.hpp" #include "Line.hpp" #include "Point.hpp" @@ -20,6 +21,7 @@ #include "tbb/parallel_reduce.h" #include #include +#include #include #include #include diff --git a/src/libslic3r/Support/SupportSpotsGenerator.hpp b/src/libslic3r/Support/SupportSpotsGenerator.hpp index 615158dabb..e3c3245d47 100644 --- a/src/libslic3r/Support/SupportSpotsGenerator.hpp +++ b/src/libslic3r/Support/SupportSpotsGenerator.hpp @@ -8,6 +8,8 @@ #include "MaterialType.hpp" #include #include +#include +#include #include diff --git a/src/libslic3r/Support/TreeModelVolumes.cpp b/src/libslic3r/Support/TreeModelVolumes.cpp index e933ac3c1b..5d1a3bdb20 100644 --- a/src/libslic3r/Support/TreeModelVolumes.cpp +++ b/src/libslic3r/Support/TreeModelVolumes.cpp @@ -7,6 +7,8 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include "TreeModelVolumes.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/ExPolygon.hpp" #include "TreeSupportCommon.hpp" #include "../BuildVolume.hpp" @@ -18,13 +20,26 @@ #include "../PrintConfig.hpp" #include "../Utils.hpp" #include "../format.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include namespace Slic3r::TreeSupport3D { diff --git a/src/libslic3r/Support/TreeModelVolumes.hpp b/src/libslic3r/Support/TreeModelVolumes.hpp index eff4cadcaf..b2c1226dfe 100644 --- a/src/libslic3r/Support/TreeModelVolumes.hpp +++ b/src/libslic3r/Support/TreeModelVolumes.hpp @@ -9,16 +9,25 @@ #ifndef slic3r_TreeModelVolumes_hpp #define slic3r_TreeModelVolumes_hpp +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include #include "TreeSupportCommon.hpp" #include "../Point.hpp" #include "../Polygon.hpp" #include "../PrintConfig.hpp" +#include "libslic3r/libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index a50b328dbe..10467012ff 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -1,6 +1,31 @@ +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Geometry.hpp" +#include "libslic3r/TriangleSelector.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Support/SupportParameters.hpp" +#include "libslic3r/Utils.hpp" #include "format.hpp" #include "ClipperUtils.hpp" #include "Fill/FillBase.hpp" @@ -14,10 +39,17 @@ #include "TreeSupportCommon.hpp" #include "TreeSupport.hpp" #include "TreeSupport3D.hpp" +#include "libslic3r/libslic3r.h" #include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -26,6 +58,11 @@ #include #include +#include +#include +#include +#include +#include #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index bd5a154e26..e0da1f40c7 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -1,12 +1,26 @@ #ifndef TREESUPPORT_H #define TREESUPPORT_H +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include #include "ExPolygon.hpp" #include "Point.hpp" +#include "libslic3r/Polygon.hpp" #include "Slicing.hpp" #include "MinimumSpanningTree.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Support/TreeSupportCommon.hpp" +#include "libslic3r/Support/SupportParameters.hpp" #include "tbb/concurrent_unordered_map.h" #include "Flow.hpp" #include "PrintConfig.hpp" diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index c9fceabaea..09f741ec25 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -12,20 +12,47 @@ #include "BuildVolume.hpp" #include "ClipperUtils.hpp" #include "EdgeGrid.hpp" +#include "libslic3r/Exception.hpp" +#include "libslic3r/ExPolygon.hpp" #include "Fill/Fill.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Fill/FillBase.hpp" #include "Layer.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" #include "Print.hpp" #include "MultiPoint.hpp" #include "Polygon.hpp" #include "Polyline.hpp" #include "MutablePolygon.hpp" +#include "libslic3r/Support/TreeSupportCommon.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Support/TreeModelVolumes.hpp" +#include "libslic3r/Support/SupportParameters.hpp" +#include "libslic3r/Support/SupportLayer.hpp" #include "SupportCommon.hpp" +#include "libslic3r/Surface.hpp" #include "TriangleMeshSlicer.hpp" #include "TreeSupport.hpp" #include "I18N.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Utils.hpp" +#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -36,6 +63,10 @@ #include #include #include +#include +#include +#include +#include #if defined(TREE_SUPPORT_SHOW_ERRORS) && defined(_WIN32) #define TREE_SUPPORT_SHOW_ERRORS_WIN32 diff --git a/src/libslic3r/Support/TreeSupport3D.hpp b/src/libslic3r/Support/TreeSupport3D.hpp index a333edb962..65a5e22975 100644 --- a/src/libslic3r/Support/TreeSupport3D.hpp +++ b/src/libslic3r/Support/TreeSupport3D.hpp @@ -9,6 +9,8 @@ #ifndef slic3r_TreeSupport_hpp #define slic3r_TreeSupport_hpp +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Layer.hpp" #include "SupportLayer.hpp" #include "TreeModelVolumes.hpp" #include "TreeSupportCommon.hpp" @@ -16,8 +18,16 @@ #include "../BoundingBox.hpp" #include "../Point.hpp" #include "../Utils.hpp" +#include "libslic3r/libslic3r.h" #include +#include +#include +#include +#include +#include +#include +#include // #define TREE_SUPPORT_SHOW_ERRORS diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index fb08a1a928..97a0e31eb3 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -11,10 +11,28 @@ #include "../libslic3r.h" #include "../Polygon.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Slicing.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/Flow.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Support/SupportParameters.hpp" +#include "libslic3r/Support/SupportLayer.hpp" #include "SupportCommon.hpp" +#include "libslic3r/Utils.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Surface.cpp b/src/libslic3r/Surface.cpp index 58ac7294cc..cb7d0d4674 100644 --- a/src/libslic3r/Surface.cpp +++ b/src/libslic3r/Surface.cpp @@ -1,6 +1,11 @@ #include "BoundingBox.hpp" #include "Surface.hpp" +#include "Polygon.hpp" +#include "Point.hpp" +#include "ExPolygon.hpp" #include "SVG.hpp" +#include +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/Surface.hpp b/src/libslic3r/Surface.hpp index b63c283251..1849e3462a 100644 --- a/src/libslic3r/Surface.hpp +++ b/src/libslic3r/Surface.hpp @@ -1,8 +1,16 @@ #ifndef slic3r_Surface_hpp_ #define slic3r_Surface_hpp_ +#include "Polygon.hpp" +#include "Line.hpp" +#include "Point.hpp" #include "libslic3r.h" #include "ExPolygon.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/SurfaceCollection.cpp b/src/libslic3r/SurfaceCollection.cpp index 83015c3e6a..47109b9965 100644 --- a/src/libslic3r/SurfaceCollection.cpp +++ b/src/libslic3r/SurfaceCollection.cpp @@ -1,8 +1,18 @@ #include "SurfaceCollection.hpp" #include "BoundingBox.hpp" +#include "ExPolygon.hpp" +#include "Polygon.hpp" +#include "Point.hpp" #include "SVG.hpp" +#include "Surface.hpp" +#include +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/SurfaceCollection.hpp b/src/libslic3r/SurfaceCollection.hpp index 1895516aa2..3b6316e0a4 100644 --- a/src/libslic3r/SurfaceCollection.hpp +++ b/src/libslic3r/SurfaceCollection.hpp @@ -1,9 +1,13 @@ #ifndef slic3r_SurfaceCollection_hpp_ #define slic3r_SurfaceCollection_hpp_ +#include "Polygon.hpp" +#include "ExPolygon.hpp" #include "libslic3r.h" #include "Surface.hpp" +#include #include +#include #include namespace Slic3r { diff --git a/src/libslic3r/SurfaceMesh.hpp b/src/libslic3r/SurfaceMesh.hpp index 82dff2e22d..221c584697 100644 --- a/src/libslic3r/SurfaceMesh.hpp +++ b/src/libslic3r/SurfaceMesh.hpp @@ -2,8 +2,13 @@ #define slic3r_SurfaceMesh_hpp_ #include +#include +#include +#include #include +#include +#include "Point.hpp" #include "boost/container/small_vector.hpp" namespace Slic3r { diff --git a/src/libslic3r/Tesselate.cpp b/src/libslic3r/Tesselate.cpp index febb3d0e74..be7087a311 100644 --- a/src/libslic3r/Tesselate.cpp +++ b/src/libslic3r/Tesselate.cpp @@ -1,8 +1,17 @@ #include "Tesselate.hpp" #include "ExPolygon.hpp" +#include "Point.hpp" +#include "libslic3r.h" +#include +#include +#include +#include +#include #include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Tesselate.hpp b/src/libslic3r/Tesselate.hpp index 2dbe6caa10..f9effa242d 100644 --- a/src/libslic3r/Tesselate.hpp +++ b/src/libslic3r/Tesselate.hpp @@ -4,6 +4,7 @@ #include #include "Point.hpp" +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/TextConfiguration.hpp b/src/libslic3r/TextConfiguration.hpp index 40c8c836ac..753cec71ba 100644 --- a/src/libslic3r/TextConfiguration.hpp +++ b/src/libslic3r/TextConfiguration.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_TextConfiguration_hpp_ #define slic3r_TextConfiguration_hpp_ +#include #include #include #include @@ -9,6 +10,7 @@ #include #include #include "Point.hpp" // Transform3d +#include "libslic3r.h" namespace Slic3r { diff --git a/src/libslic3r/TextureBake/TextureBakeDebug.cpp b/src/libslic3r/TextureBake/TextureBakeDebug.cpp index 9465080e21..7b3538da72 100644 --- a/src/libslic3r/TextureBake/TextureBakeDebug.cpp +++ b/src/libslic3r/TextureBake/TextureBakeDebug.cpp @@ -1,11 +1,19 @@ #include "TextureBakeDebug.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" #include +#include +#include #include +#include #include #include #include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/TextureBake/TextureBakeDebug.hpp b/src/libslic3r/TextureBake/TextureBakeDebug.hpp index 5c6d987e44..b0cf0c1952 100644 --- a/src/libslic3r/TextureBake/TextureBakeDebug.hpp +++ b/src/libslic3r/TextureBake/TextureBakeDebug.hpp @@ -18,8 +18,10 @@ #include #include #include +#include #include +#include "libslic3r/Point.hpp" #include "TextureBakeIndex.hpp" namespace Slic3r { diff --git a/src/libslic3r/TextureBake/TextureBakeDecimate.cpp b/src/libslic3r/TextureBake/TextureBakeDecimate.cpp index ee335cff3c..c03607e99c 100644 --- a/src/libslic3r/TextureBake/TextureBakeDecimate.cpp +++ b/src/libslic3r/TextureBake/TextureBakeDecimate.cpp @@ -1,8 +1,13 @@ #include "TextureBakeDecimate.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" #include #include #include +#include +#include +#include #include #include @@ -10,6 +15,7 @@ #include #include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeDecimate.hpp b/src/libslic3r/TextureBake/TextureBakeDecimate.hpp index 5579778050..8b31dbb642 100644 --- a/src/libslic3r/TextureBake/TextureBakeDecimate.hpp +++ b/src/libslic3r/TextureBake/TextureBakeDecimate.hpp @@ -10,6 +10,7 @@ // Flat-face harvesting: the loop keeps going past the triangle target while each collapse's error // stays under an absolute bound, so flat faces that cost nothing to remove are not left behind. +#include #include #include #include diff --git a/src/libslic3r/TextureBake/TextureBakeDisplace.cpp b/src/libslic3r/TextureBake/TextureBakeDisplace.cpp index 6e306b1c43..7dee94de99 100644 --- a/src/libslic3r/TextureBake/TextureBakeDisplace.cpp +++ b/src/libslic3r/TextureBake/TextureBakeDisplace.cpp @@ -1,11 +1,18 @@ #include "TextureBakeDisplace.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" #include #include +#include +#include #include +#include #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeDisplace.hpp b/src/libslic3r/TextureBake/TextureBakeDisplace.hpp index eee6ca0626..76e70d3bc5 100644 --- a/src/libslic3r/TextureBake/TextureBakeDisplace.hpp +++ b/src/libslic3r/TextureBake/TextureBakeDisplace.hpp @@ -13,6 +13,7 @@ #include #include +#include "libslic3r/Point.hpp" #include "TextureBakeIndex.hpp" namespace Slic3r { diff --git a/src/libslic3r/TextureBake/TextureBakeFlip.cpp b/src/libslic3r/TextureBake/TextureBakeFlip.cpp index f4d9997f71..8f7000a878 100644 --- a/src/libslic3r/TextureBake/TextureBakeFlip.cpp +++ b/src/libslic3r/TextureBake/TextureBakeFlip.cpp @@ -1,13 +1,20 @@ #include "TextureBakeFlip.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/TextureBake/TextureBakeDisplace.hpp" +#include "libslic3r/Point.hpp" #include #include #include +#include +#include #include #include #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeFlip.hpp b/src/libslic3r/TextureBake/TextureBakeFlip.hpp index 02701bbced..a1057a344a 100644 --- a/src/libslic3r/TextureBake/TextureBakeFlip.hpp +++ b/src/libslic3r/TextureBake/TextureBakeFlip.hpp @@ -16,6 +16,7 @@ // flat regions cost nothing; a non-planar quad (a model crease) is never touched, nor is one whose // triangles belong to different source faces or straddle the painted boundary. +#include #include #include diff --git a/src/libslic3r/TextureBake/TextureBakeIndex.cpp b/src/libslic3r/TextureBake/TextureBakeIndex.cpp index ac7234774b..75839c746b 100644 --- a/src/libslic3r/TextureBake/TextureBakeIndex.cpp +++ b/src/libslic3r/TextureBake/TextureBakeIndex.cpp @@ -1,6 +1,9 @@ #include "TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeIndex.hpp b/src/libslic3r/TextureBake/TextureBakeIndex.hpp index 2b1dd72395..6fbfa4f831 100644 --- a/src/libslic3r/TextureBake/TextureBakeIndex.hpp +++ b/src/libslic3r/TextureBake/TextureBakeIndex.hpp @@ -11,7 +11,9 @@ #include #include +#include #include +#include #include #include "../Point.hpp" diff --git a/src/libslic3r/TextureBake/TextureBakeMesh.cpp b/src/libslic3r/TextureBake/TextureBakeMesh.cpp index 6f6d72218d..caf6e22d36 100644 --- a/src/libslic3r/TextureBake/TextureBakeMesh.cpp +++ b/src/libslic3r/TextureBake/TextureBakeMesh.cpp @@ -1,6 +1,11 @@ #include "TextureBakeMesh.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" #include +#include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeMesh.hpp b/src/libslic3r/TextureBake/TextureBakeMesh.hpp index b4e3ced5fe..860aa1445d 100644 --- a/src/libslic3r/TextureBake/TextureBakeMesh.hpp +++ b/src/libslic3r/TextureBake/TextureBakeMesh.hpp @@ -5,6 +5,8 @@ #include "TextureBakeIndex.hpp" #include "../TriangleMesh.hpp" +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakePipeline.cpp b/src/libslic3r/TextureBake/TextureBakePipeline.cpp index 2b678905b1..b44ae837bc 100644 --- a/src/libslic3r/TextureBake/TextureBakePipeline.cpp +++ b/src/libslic3r/TextureBake/TextureBakePipeline.cpp @@ -1,8 +1,21 @@ #include "TextureBakePipeline.hpp" +#include +#include +#include +#include #include #include +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TextureBake/TextureBakeDisplace.hpp" +#include "libslic3r/TextureBake/TextureBakeSubdivide.hpp" +#include "libslic3r/TextureBake/TextureBakeRegularize.hpp" +#include "libslic3r/TextureBake/TextureBakeRelocate.hpp" +#include "libslic3r/TextureBake/TextureBakeFlip.hpp" +#include "libslic3r/TextureBake/TextureBakeDecimate.hpp" +#include "libslic3r/TextureBake/TextureBakeRepair.hpp" #include "TextureBakeDebug.hpp" #include @@ -11,6 +24,8 @@ #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakePipeline.hpp b/src/libslic3r/TextureBake/TextureBakePipeline.hpp index e230cf0d49..43429ce22f 100644 --- a/src/libslic3r/TextureBake/TextureBakePipeline.hpp +++ b/src/libslic3r/TextureBake/TextureBakePipeline.hpp @@ -13,10 +13,12 @@ // Decimation and repair are export-only - decimation drops the output-to-input face mapping a bake // needs to carry per-face data forward. +#include #include #include #include +#include "libslic3r/Point.hpp" #include "TextureBakeDecimate.hpp" #include "TextureBakeDisplace.hpp" #include "TextureBakeIndex.hpp" diff --git a/src/libslic3r/TextureBake/TextureBakeRegularize.cpp b/src/libslic3r/TextureBake/TextureBakeRegularize.cpp index 3028d8bee9..fb32eb7712 100644 --- a/src/libslic3r/TextureBake/TextureBakeRegularize.cpp +++ b/src/libslic3r/TextureBake/TextureBakeRegularize.cpp @@ -1,11 +1,18 @@ #include "TextureBakeRegularize.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" #include #include +#include +#include +#include #include #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeRegularize.hpp b/src/libslic3r/TextureBake/TextureBakeRegularize.hpp index 350666783a..b6cd5eedc3 100644 --- a/src/libslic3r/TextureBake/TextureBakeRegularize.hpp +++ b/src/libslic3r/TextureBake/TextureBakeRegularize.hpp @@ -12,6 +12,7 @@ // flattened); and the link condition must hold, or the result would be non-manifold. Boundary and // non-manifold edges are skipped outright. Rounds repeat until one achieves nothing. +#include #include #include diff --git a/src/libslic3r/TextureBake/TextureBakeRelocate.cpp b/src/libslic3r/TextureBake/TextureBakeRelocate.cpp index 5ea33b353b..405ea8e286 100644 --- a/src/libslic3r/TextureBake/TextureBakeRelocate.cpp +++ b/src/libslic3r/TextureBake/TextureBakeRelocate.cpp @@ -1,11 +1,17 @@ #include "TextureBakeRelocate.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/TextureBake/TextureBakeDisplace.hpp" #include #include +#include +#include #include #include #include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeRelocate.hpp b/src/libslic3r/TextureBake/TextureBakeRelocate.hpp index cd674d03ae..36ca059dde 100644 --- a/src/libslic3r/TextureBake/TextureBakeRelocate.hpp +++ b/src/libslic3r/TextureBake/TextureBakeRelocate.hpp @@ -21,6 +21,7 @@ // Vertices in flat regions have no gradient to speak of and are left alone, so the pass costs nothing // where there is nothing to align. +#include #include #include #include diff --git a/src/libslic3r/TextureBake/TextureBakeRepair.cpp b/src/libslic3r/TextureBake/TextureBakeRepair.cpp index 438e0ea25d..49f427d461 100644 --- a/src/libslic3r/TextureBake/TextureBakeRepair.cpp +++ b/src/libslic3r/TextureBake/TextureBakeRepair.cpp @@ -1,10 +1,16 @@ #include "TextureBakeRepair.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include "libslic3r/Point.hpp" #include #include #include +#include +#include #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeRepair.hpp b/src/libslic3r/TextureBake/TextureBakeRepair.hpp index 35e9f50b06..07d5323059 100644 --- a/src/libslic3r/TextureBake/TextureBakeRepair.hpp +++ b/src/libslic3r/TextureBake/TextureBakeRepair.hpp @@ -7,6 +7,7 @@ // one incident face on one side, which a slicer reads as an open boundary. This splits the offending // face into a fan so every on-edge vertex becomes a real corner. +#include #include #include diff --git a/src/libslic3r/TextureBake/TextureBakeSubdivide.cpp b/src/libslic3r/TextureBake/TextureBakeSubdivide.cpp index 6b882b1fc8..967f88381a 100644 --- a/src/libslic3r/TextureBake/TextureBakeSubdivide.cpp +++ b/src/libslic3r/TextureBake/TextureBakeSubdivide.cpp @@ -1,12 +1,20 @@ #include "TextureBakeSubdivide.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" #include #include +#include +#include +#include +#include #include #include #include #include +#include +#include namespace Slic3r { namespace TextureBake { diff --git a/src/libslic3r/TextureBake/TextureBakeSubdivide.hpp b/src/libslic3r/TextureBake/TextureBakeSubdivide.hpp index 743c74eb49..0120160345 100644 --- a/src/libslic3r/TextureBake/TextureBakeSubdivide.hpp +++ b/src/libslic3r/TextureBake/TextureBakeSubdivide.hpp @@ -8,9 +8,12 @@ // The 1->4 case is what keeps the tessellation regular - its children are similar to the parent. An // irregular one shows up after displacement as adjacent triangles tilting alternately, i.e. noise. +#include +#include #include #include +#include "libslic3r/Point.hpp" #include "TextureBakeIndex.hpp" namespace Slic3r { diff --git a/src/libslic3r/TextureDisplacement.cpp b/src/libslic3r/TextureDisplacement.cpp index 862c6c9044..46a7cb18b4 100644 --- a/src/libslic3r/TextureDisplacement.cpp +++ b/src/libslic3r/TextureDisplacement.cpp @@ -1,7 +1,10 @@ #include "TextureDisplacement.hpp" +#include +#include #include #include +#include #include #include #include @@ -11,10 +14,13 @@ #include #include #include +#include +#include #include #include #include #include +#include #include #include #include @@ -27,11 +33,16 @@ #include #include +#include +#include #include "AABBTreeIndirect.hpp" #include "MeshBoolean.hpp" #include "Model.hpp" #include "PNGReadWrite.hpp" +#include "Point.hpp" +#include "TriangleMesh.hpp" +#include "TextureBake/TextureBakeDisplace.hpp" #include "TriangleSelector.hpp" #include "TextureBake/TextureBakeDebug.hpp" #include "TextureBake/TextureBakeMesh.hpp" diff --git a/src/libslic3r/TextureDisplacement.hpp b/src/libslic3r/TextureDisplacement.hpp index e97178abca..afe6a42911 100644 --- a/src/libslic3r/TextureDisplacement.hpp +++ b/src/libslic3r/TextureDisplacement.hpp @@ -1,10 +1,13 @@ #ifndef slic3r_TextureDisplacement_hpp_ #define slic3r_TextureDisplacement_hpp_ +#include +#include #include #include #include #include +#include #include #include diff --git a/src/libslic3r/TexturePainting.cpp b/src/libslic3r/TexturePainting.cpp index 9f83f282cd..e44f870b5d 100644 --- a/src/libslic3r/TexturePainting.cpp +++ b/src/libslic3r/TexturePainting.cpp @@ -1,9 +1,15 @@ #include "TexturePainting.hpp" #include +#include #include +#include +#include #include +#include +#include #include +#include #include #include @@ -11,11 +17,15 @@ #include #include +#include +#include "Point.hpp" +#include "TextureToColor/Callbacks.hpp" #include "TextureToColor/TextureToColor.hpp" #include "TextureToColor/ColorUtils.hpp" #include "Model.hpp" +#include "TextureToColor/TriMesh.hpp" #include "TriangleMesh.hpp" #include "TriangleSelector.hpp" diff --git a/src/libslic3r/TextureToColor/CgalUtils.hpp b/src/libslic3r/TextureToColor/CgalUtils.hpp index 109d454827..1782530bcb 100644 --- a/src/libslic3r/TextureToColor/CgalUtils.hpp +++ b/src/libslic3r/TextureToColor/CgalUtils.hpp @@ -1,8 +1,10 @@ #pragma once +#include "libslic3r/Point.hpp" #include "TriMesh.hpp" #include #include #include +#include #include #include #include diff --git a/src/libslic3r/TextureToColor/ColorUtils.cpp b/src/libslic3r/TextureToColor/ColorUtils.cpp index 7127a5d364..a32b4848b2 100644 --- a/src/libslic3r/TextureToColor/ColorUtils.cpp +++ b/src/libslic3r/TextureToColor/ColorUtils.cpp @@ -1,12 +1,26 @@ #include "ColorUtils.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include #include +#include +#include #include +#include +#include #include #include @@ -23,11 +37,19 @@ #include #include #include +#include #include #include "CgalUtils.hpp" +#include "TriMesh.hpp" +#include "libslic3r/Point.hpp" #include "libslic3r/AABBTreeIndirect.hpp" #include +#include +#include +#include +#include +#include namespace Slic3r { namespace tex2color { namespace color_utils { diff --git a/src/libslic3r/TextureToColor/ColorUtils.hpp b/src/libslic3r/TextureToColor/ColorUtils.hpp index 05849109f4..89e6095923 100644 --- a/src/libslic3r/TextureToColor/ColorUtils.hpp +++ b/src/libslic3r/TextureToColor/ColorUtils.hpp @@ -1,7 +1,12 @@ #pragma once #include "Callbacks.hpp" +#include "libslic3r/Point.hpp" #include "TriMesh.hpp" +#include +#include +#include +#include namespace Slic3r { namespace tex2color { diff --git a/src/libslic3r/TextureToColor/Repair.hpp b/src/libslic3r/TextureToColor/Repair.hpp index 44dc30c144..092c0623fb 100644 --- a/src/libslic3r/TextureToColor/Repair.hpp +++ b/src/libslic3r/TextureToColor/Repair.hpp @@ -4,18 +4,22 @@ #include "Callbacks.hpp" #include #include +#include #include #include #include #include #include #include +#include #include #include #include #include +#include #include #include +#include namespace Slic3r { namespace tex2color { diff --git a/src/libslic3r/TextureToColor/TextureToColor.cpp b/src/libslic3r/TextureToColor/TextureToColor.cpp index e5dde36714..15a2a641af 100644 --- a/src/libslic3r/TextureToColor/TextureToColor.cpp +++ b/src/libslic3r/TextureToColor/TextureToColor.cpp @@ -1,5 +1,12 @@ #include "TextureToColor.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -9,14 +16,20 @@ #include #include +#include "Callbacks.hpp" #include "CgalUtils.hpp" #include "ColorUtils.hpp" +#include "TriMesh.hpp" +#include "libslic3r/Point.hpp" #include "libslic3r/TriangleMesh.hpp" #include #include #include "Repair.hpp" #include "libslic3r/AABBTreeIndirect.hpp" #include +#include +#include +#include namespace Slic3r { namespace tex2color { diff --git a/src/libslic3r/TextureToColor/TextureToColor.hpp b/src/libslic3r/TextureToColor/TextureToColor.hpp index 019a113fc4..a88fe2086e 100644 --- a/src/libslic3r/TextureToColor/TextureToColor.hpp +++ b/src/libslic3r/TextureToColor/TextureToColor.hpp @@ -1,10 +1,15 @@ #pragma once #include "Callbacks.hpp" +#include "libslic3r/Point.hpp" #include "TriMesh.hpp" #include "opencv2/core.hpp" +#include +#include #include +#include #include +#include namespace Slic3r { namespace tex2color { diff --git a/src/libslic3r/TextureToColor/TriMesh.hpp b/src/libslic3r/TextureToColor/TriMesh.hpp index d557ae1d2e..63d5286ab7 100644 --- a/src/libslic3r/TextureToColor/TriMesh.hpp +++ b/src/libslic3r/TextureToColor/TriMesh.hpp @@ -1,5 +1,8 @@ #pragma once #include +#include +#include +#include #include "Point.hpp" namespace Slic3r { namespace tex2color { diff --git a/src/libslic3r/Thread.cpp b/src/libslic3r/Thread.cpp index edd7c2a3d0..066656c9ed 100644 --- a/src/libslic3r/Thread.cpp +++ b/src/libslic3r/Thread.cpp @@ -6,6 +6,14 @@ #include #endif +#include +#include +#include +#include +#include +#include +#include + #include #include #include diff --git a/src/libslic3r/Thread.hpp b/src/libslic3r/Thread.hpp index c407159072..e40cae5f26 100644 --- a/src/libslic3r/Thread.hpp +++ b/src/libslic3r/Thread.hpp @@ -1,6 +1,7 @@ #ifndef GUI_THREAD_HPP #define GUI_THREAD_HPP +#include #include #include #include diff --git a/src/libslic3r/Time.cpp b/src/libslic3r/Time.cpp index 81b9af49e2..a9f3f07352 100644 --- a/src/libslic3r/Time.cpp +++ b/src/libslic3r/Time.cpp @@ -1,6 +1,10 @@ #include "Time.hpp" #include +#include +#include +#include +#include #include #include #include @@ -8,6 +12,8 @@ #include #include #include +#include +#include #ifdef _MSC_VER #include diff --git a/src/libslic3r/Timer.cpp b/src/libslic3r/Timer.cpp index 91f3b0f09e..1a81210c58 100644 --- a/src/libslic3r/Timer.cpp +++ b/src/libslic3r/Timer.cpp @@ -1,5 +1,7 @@ #include "Timer.hpp" #include +#include +#include using namespace std::chrono; diff --git a/src/libslic3r/Timer.hpp b/src/libslic3r/Timer.hpp index 01f73a9b3e..e122c6cb1d 100644 --- a/src/libslic3r/Timer.hpp +++ b/src/libslic3r/Timer.hpp @@ -1,8 +1,10 @@ #ifndef libslic3r_Timer_hpp_ #define libslic3r_Timer_hpp_ +#include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 9e08e6f1e0..2f047e4e7f 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1,5 +1,7 @@ +#include "BoundingBox.hpp" #include "Exception.hpp" #include "TriangleMesh.hpp" +#include "Polygon.hpp" #include "TriangleMeshSlicer.hpp" #include "MeshSplitImpl.hpp" #include "ClipperUtils.hpp" @@ -11,13 +13,26 @@ #include "CutUtils.hpp" #include "Utils.hpp" #include "Format/STL.hpp" +#include "libslic3r.h" +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include #include #include #include +#include +#include #include #include #include diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index b963671ce9..8c82bac52f 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -3,6 +3,11 @@ #include "libslic3r.h" #include +#include +#include +#include +#include +#include #include #include #include "BoundingBox.hpp" diff --git a/src/libslic3r/TriangleMeshDeal.cpp b/src/libslic3r/TriangleMeshDeal.cpp index 4ea3030e51..7ecfc362d1 100644 --- a/src/libslic3r/TriangleMeshDeal.cpp +++ b/src/libslic3r/TriangleMeshDeal.cpp @@ -1,5 +1,7 @@ #include "TriangleMeshDeal.hpp" +#include "TriangleMesh.hpp" +#include #include #undef NDEBUG #include diff --git a/src/libslic3r/TriangleMeshSlicer.cpp b/src/libslic3r/TriangleMeshSlicer.cpp index 444f33c296..2bd5e94622 100644 --- a/src/libslic3r/TriangleMeshSlicer.cpp +++ b/src/libslic3r/TriangleMeshSlicer.cpp @@ -1,16 +1,29 @@ #include "ClipperUtils.hpp" +#include "ExPolygon.hpp" #include "Geometry.hpp" +#include "Point.hpp" +#include "Line.hpp" +#include "MultiPoint.hpp" +#include "Polygon.hpp" #include "Tesselate.hpp" #include "TriangleMesh.hpp" #include "TriangleMeshSlicer.hpp" #include "Utils.hpp" // BBS #include "MeshBoolean.hpp" +#include "libslic3r.h" #include +#include #include +#include +#include #include #include +#include +#include +#include +#include #include #include #include @@ -18,6 +31,7 @@ #include #include +#include #ifndef NDEBUG // #define EXPENSIVE_DEBUG_CHECKS diff --git a/src/libslic3r/TriangleMeshSlicer.hpp b/src/libslic3r/TriangleMeshSlicer.hpp index 1a78e5b7d0..aa1b020716 100644 --- a/src/libslic3r/TriangleMeshSlicer.hpp +++ b/src/libslic3r/TriangleMeshSlicer.hpp @@ -1,8 +1,14 @@ #ifndef slic3r_TriangleMeshSlicer_hpp_ #define slic3r_TriangleMeshSlicer_hpp_ +#include +#include #include +#include #include +#include + +#include "Point.hpp" #include "Polygon.hpp" #include "ExPolygon.hpp" diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index 4d6007530f..7314b00082 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -1,12 +1,31 @@ #include "TriangleSelector.hpp" +#include "Geometry.hpp" #include "Model.hpp" #include "AABBTreeIndirect.hpp" +#include "Point.hpp" +#include "libslic3r.h" +#include "Utils.hpp" +#include "TriangleMesh.hpp" +#include +#include +#include +#include #include #include +#include +#include #include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #ifndef NDEBUG // #define EXPENSIVE_DEBUG_CHECKS diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index 344e88cb99..3dd2efdaf0 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -4,7 +4,18 @@ // #define PRUSASLICER_TRIANGLE_SELECTOR_DEBUG +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include "Point.hpp" #include "TriangleMesh.hpp" diff --git a/src/libslic3r/TriangleSetSampling.cpp b/src/libslic3r/TriangleSetSampling.cpp index bb03ff6d75..6ab4290ee6 100644 --- a/src/libslic3r/TriangleSetSampling.cpp +++ b/src/libslic3r/TriangleSetSampling.cpp @@ -1,8 +1,13 @@ #include "TriangleSetSampling.hpp" +#include +#include "Point.hpp" +#include +#include #include #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/TriangleSetSampling.hpp b/src/libslic3r/TriangleSetSampling.hpp index 28a661d76f..ba20a932eb 100644 --- a/src/libslic3r/TriangleSetSampling.hpp +++ b/src/libslic3r/TriangleSetSampling.hpp @@ -2,6 +2,8 @@ #define SRC_LIBSLIC3R_TRIANGLESETSAMPLING_HPP_ #include +#include +#include #include "libslic3r/Point.hpp" namespace Slic3r { diff --git a/src/libslic3r/TriangulateWall.hpp b/src/libslic3r/TriangulateWall.hpp index fcdb842f9b..fcc67e29b2 100644 --- a/src/libslic3r/TriangulateWall.hpp +++ b/src/libslic3r/TriangulateWall.hpp @@ -1,7 +1,11 @@ #ifndef TRIANGULATEWALL_HPP #define TRIANGULATEWALL_HPP +#include "Point.hpp" #include "libslic3r/Polygon.hpp" +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/Triangulation.cpp b/src/libslic3r/Triangulation.cpp index f290442bf1..63a5b30fe5 100644 --- a/src/libslic3r/Triangulation.cpp +++ b/src/libslic3r/Triangulation.cpp @@ -1,10 +1,27 @@ #include "Triangulation.hpp" #include "IntersectionPoints.hpp" +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Line.hpp" +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/ExPolygon.hpp" +#include using namespace Slic3r; namespace priv{ diff --git a/src/libslic3r/Triangulation.hpp b/src/libslic3r/Triangulation.hpp index 6a168d1d20..261f76bba5 100644 --- a/src/libslic3r/Triangulation.hpp +++ b/src/libslic3r/Triangulation.hpp @@ -1,6 +1,8 @@ #ifndef libslic3r_Triangulation_hpp_ #define libslic3r_Triangulation_hpp_ +#include +#include #include #include #include diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index d142afae92..29adae1b74 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -1,9 +1,23 @@ #ifndef slic3r_Utils_hpp_ #define slic3r_Utils_hpp_ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include #include #include #include @@ -11,6 +25,8 @@ #include #include #include +#include +#include #include #include @@ -19,6 +35,7 @@ #include "boost/date_time/posix_time/ptime.hpp" #include +#include #include "libslic3r.h" #include "Semver.hpp" @@ -287,6 +304,14 @@ extern bool is_absolute_path_within_root(const boost::filesystem::path &path, co // Anything unknown is not safe. extern bool is_safe_to_open_file_name(const std::string &file_name); +// Case-insensitive compare against a fixed ASCII keyword, without boost::iequals, whose +// std::locale() takes a lock the whole process shares in the MSVC runtime. +inline bool ascii_iequals(std::string_view a, std::string_view b) +{ + auto lower = [](char c) { return (c >= 'A' && c <= 'Z') ? char(c - 'A' + 'a') : c; }; + return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin(), [&lower](char x, char y) { return lower(x) == lower(y); }); +} + // Orca: custom protocal support utils inline bool is_orca_open(const std::string& url) { return boost::starts_with(url, "orcaslicer://open"); } inline bool is_prusaslicer_open(const std::string& url) { return boost::starts_with(url, "prusaslicer://open"); } diff --git a/src/libslic3r/VariableWidth.cpp b/src/libslic3r/VariableWidth.cpp index c00fc13bdf..db8f0bc373 100644 --- a/src/libslic3r/VariableWidth.cpp +++ b/src/libslic3r/VariableWidth.cpp @@ -1,4 +1,16 @@ #include "VariableWidth.hpp" +#include "ExtrusionEntity.hpp" +#include "Polyline.hpp" +#include "Flow.hpp" +#include "Line.hpp" +#include +#include "libslic3r.h" +#include "Point.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/VariableWidth.hpp b/src/libslic3r/VariableWidth.hpp index f6eca97089..7b8f1f4b0a 100644 --- a/src/libslic3r/VariableWidth.hpp +++ b/src/libslic3r/VariableWidth.hpp @@ -4,6 +4,8 @@ #include "Polygon.hpp" #include "ExtrusionEntity.hpp" #include "Flow.hpp" +#include "Polyline.hpp" +#include namespace Slic3r { ExtrusionMultiPath thick_polyline_to_multi_path(const ThickPolyline& thick_polyline, ExtrusionRole role, const Flow& flow, const float tolerance, const float merge_tolerance); diff --git a/src/libslic3r/Zipper.cpp b/src/libslic3r/Zipper.cpp index aa0c6409e7..4e7e53a1b5 100644 --- a/src/libslic3r/Zipper.cpp +++ b/src/libslic3r/Zipper.cpp @@ -1,9 +1,14 @@ +#include +#include #include #include "Exception.hpp" #include "Zipper.hpp" #include "miniz_extension.hpp" #include +#include +#include +#include #include "I18N.hpp" //! macro used to mark string used at localization, diff --git a/src/libslic3r/Zipper.hpp b/src/libslic3r/Zipper.hpp index bbaf2f05e7..dbd1fb9cc0 100644 --- a/src/libslic3r/Zipper.hpp +++ b/src/libslic3r/Zipper.hpp @@ -1,9 +1,11 @@ #ifndef ZIPPER_HPP #define ZIPPER_HPP +#include #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 99625ca196..dd6d8592b7 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -1,9 +1,23 @@ #include "calib.hpp" #include "BoundingBox.hpp" #include "Config.hpp" +#include "Flow.hpp" +#include "GCodeWriter.hpp" +#include "GCode/GCodeProcessor.hpp" +#include "CustomGCode.hpp" #include "Model.hpp" #include "GCode.hpp" +#include "PrintConfig.hpp" +#include +#include "Point.hpp" +#include "libslic3r.h" #include +#include +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index abca5e79dc..fd22d4a08f 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -1,5 +1,11 @@ #pragma once +#include "Point.hpp" +#include +#include +#include #include +#include +#include #define calib_pressure_advance_dd #include "GCodeWriter.hpp" diff --git a/src/libslic3r/format.hpp b/src/libslic3r/format.hpp index c3747677b0..7f3385c3d7 100644 --- a/src/libslic3r/format.hpp +++ b/src/libslic3r/format.hpp @@ -14,6 +14,7 @@ // boost::format may convert to string, see slic3r/GUI/I18N.hpp for a "cook" function to convert wxString to UTF8. #include +#include namespace Slic3r { diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index c339da566a..bc32a8c60f 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -2,6 +2,12 @@ #define _libslic3r_h_ #include "libslic3r_version.h" +#include +#include +#include +#include +#include +#include #define SLIC3R_APP_FULL_NAME "Orca Slicer" #define GCODEVIEWER_APP_NAME "OrcaSlicer G-code Viewer" #define GCODEVIEWER_APP_KEY "OrcaSlicerGcodeViewer" diff --git a/src/libslic3r/miniz_extension.cpp b/src/libslic3r/miniz_extension.cpp index 4d9b528267..33f24a9a55 100644 --- a/src/libslic3r/miniz_extension.cpp +++ b/src/libslic3r/miniz_extension.cpp @@ -1,3 +1,8 @@ +#include +#include +#include +#include +#include #include #include @@ -6,6 +11,9 @@ #include #include +#include +#include +#include #if defined(_MSC_VER) || defined(__MINGW64__) #include "boost/nowide/cstdio.hpp" diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 849d309563..6205f11219 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -1,11 +1,43 @@ #include "Utils.hpp" +#include "Exception.hpp" #include "I18N.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include #include #include #include @@ -14,7 +46,12 @@ #include #include #include +#include +#include +#include +#include +#include "Semver.hpp" #include "format.hpp" #include "Platform.hpp" #include "Time.hpp" @@ -23,6 +60,7 @@ // (get_version_from_json) and the preset cache stamp (VendorCacheFile). #include "Preset.hpp" #include "PresetCacheFormat.hpp" +#include "libslic3r_version.h" #ifdef __APPLE__ #include "MacUtils.hpp" diff --git a/src/libvgcode/include/ColorPrint.hpp b/src/libvgcode/include/ColorPrint.hpp index 071b93a708..bbae9284a5 100644 --- a/src/libvgcode/include/ColorPrint.hpp +++ b/src/libvgcode/include/ColorPrint.hpp @@ -6,6 +6,8 @@ #define VGCODE_COLORPRINT_HPP #include "../include/Types.hpp" +#include +#include namespace libvgcode { diff --git a/src/libvgcode/include/ColorRange.hpp b/src/libvgcode/include/ColorRange.hpp index e6c83cb21d..ce34c3de7b 100644 --- a/src/libvgcode/include/ColorRange.hpp +++ b/src/libvgcode/include/ColorRange.hpp @@ -7,7 +7,10 @@ #include "../include/Types.hpp" +#include #include +#include +#include namespace libvgcode { diff --git a/src/libvgcode/include/GCodeInputData.hpp b/src/libvgcode/include/GCodeInputData.hpp index 5085322e37..a0057230e7 100644 --- a/src/libvgcode/include/GCodeInputData.hpp +++ b/src/libvgcode/include/GCodeInputData.hpp @@ -6,6 +6,8 @@ #define VGCODE_GCODEINPUTDATA_HPP #include "PathVertex.hpp" +#include +#include "Types.hpp" namespace libvgcode { diff --git a/src/libvgcode/include/PathVertex.hpp b/src/libvgcode/include/PathVertex.hpp index f5704d5376..8f24d6a440 100644 --- a/src/libvgcode/include/PathVertex.hpp +++ b/src/libvgcode/include/PathVertex.hpp @@ -7,7 +7,9 @@ #include "Types.hpp" +#include #include +#include namespace libvgcode { diff --git a/src/libvgcode/include/Types.hpp b/src/libvgcode/include/Types.hpp index 099f622dc3..1c3b50208a 100644 --- a/src/libvgcode/include/Types.hpp +++ b/src/libvgcode/include/Types.hpp @@ -5,6 +5,7 @@ #ifndef VGCODE_TYPES_HPP #define VGCODE_TYPES_HPP +#include #define VGCODE_ENABLE_COG_AND_TOOL_MARKERS 0 #include diff --git a/src/libvgcode/include/Viewer.hpp b/src/libvgcode/include/Viewer.hpp index 458bc4b69f..a714bf1756 100644 --- a/src/libvgcode/include/Viewer.hpp +++ b/src/libvgcode/include/Viewer.hpp @@ -7,7 +7,10 @@ #include "Types.hpp" +#include +#include #include +#include namespace libvgcode { diff --git a/src/libvgcode/src/Bitset.hpp b/src/libvgcode/src/Bitset.hpp index eebe297262..75dbe5580b 100644 --- a/src/libvgcode/src/Bitset.hpp +++ b/src/libvgcode/src/Bitset.hpp @@ -6,6 +6,9 @@ #define VGCODE_BITSET_HPP #include +#include +#include +#include #include namespace libvgcode { diff --git a/src/libvgcode/src/ColorRange.cpp b/src/libvgcode/src/ColorRange.cpp index 1ba0dfc526..86a034fffe 100644 --- a/src/libvgcode/src/ColorRange.cpp +++ b/src/libvgcode/src/ColorRange.cpp @@ -7,8 +7,13 @@ #include "Utils.hpp" #include +#include #include +#include #include +#include "../include/Types.hpp" +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/ExtrusionRoles.cpp b/src/libvgcode/src/ExtrusionRoles.cpp index e38886c57b..bac4eac60e 100644 --- a/src/libvgcode/src/ExtrusionRoles.cpp +++ b/src/libvgcode/src/ExtrusionRoles.cpp @@ -3,6 +3,11 @@ ///|/ libvgcode is released under the terms of the AGPLv3 or higher ///|/ #include "ExtrusionRoles.hpp" +#include "../include/Types.hpp" +#include +#include +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/ExtrusionRoles.hpp b/src/libvgcode/src/ExtrusionRoles.hpp index ee949fbf0d..5ab06cef94 100644 --- a/src/libvgcode/src/ExtrusionRoles.hpp +++ b/src/libvgcode/src/ExtrusionRoles.hpp @@ -7,7 +7,10 @@ #include "../include/Types.hpp" +#include +#include #include +#include namespace libvgcode { diff --git a/src/libvgcode/src/Layers.cpp b/src/libvgcode/src/Layers.cpp index 16a2e38fcd..5e52bc7aa9 100644 --- a/src/libvgcode/src/Layers.cpp +++ b/src/libvgcode/src/Layers.cpp @@ -9,6 +9,11 @@ #include #include +#include "../include/Types.hpp" +#include +#include +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/Layers.hpp b/src/libvgcode/src/Layers.hpp index bf3386016c..e55d1f04af 100644 --- a/src/libvgcode/src/Layers.hpp +++ b/src/libvgcode/src/Layers.hpp @@ -6,6 +6,11 @@ #define VGCODE_LAYERS_HPP #include "Range.hpp" +#include +#include +#include "../include/Types.hpp" +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/OpenGLUtils.cpp b/src/libvgcode/src/OpenGLUtils.cpp index bc39b29a4d..c6617af506 100644 --- a/src/libvgcode/src/OpenGLUtils.cpp +++ b/src/libvgcode/src/OpenGLUtils.cpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace libvgcode { diff --git a/src/libvgcode/src/OptionTemplate.cpp b/src/libvgcode/src/OptionTemplate.cpp index 316897ad3b..cc2b39a5ec 100644 --- a/src/libvgcode/src/OptionTemplate.cpp +++ b/src/libvgcode/src/OptionTemplate.cpp @@ -6,6 +6,9 @@ #include "OpenGLUtils.hpp" #include "Utils.hpp" +#include +#include "../include/Types.hpp" +#include #include #include #include diff --git a/src/libvgcode/src/PathVertex.cpp b/src/libvgcode/src/PathVertex.cpp index ed1569bc36..e157f20ff7 100644 --- a/src/libvgcode/src/PathVertex.cpp +++ b/src/libvgcode/src/PathVertex.cpp @@ -3,6 +3,7 @@ ///|/ libvgcode is released under the terms of the AGPLv3 or higher ///|/ #include "../include/PathVertex.hpp" +#include "../include/Types.hpp" namespace libvgcode { diff --git a/src/libvgcode/src/Range.cpp b/src/libvgcode/src/Range.cpp index 4d8df12f3d..5ef4570d1f 100644 --- a/src/libvgcode/src/Range.cpp +++ b/src/libvgcode/src/Range.cpp @@ -5,6 +5,7 @@ #include "Range.hpp" #include +#include "../include/Types.hpp" namespace libvgcode { diff --git a/src/libvgcode/src/SegmentTemplate.cpp b/src/libvgcode/src/SegmentTemplate.cpp index 9d9872aa3b..f925e0a860 100644 --- a/src/libvgcode/src/SegmentTemplate.cpp +++ b/src/libvgcode/src/SegmentTemplate.cpp @@ -5,6 +5,7 @@ #include "SegmentTemplate.hpp" #include "OpenGLUtils.hpp" +#include #include #include diff --git a/src/libvgcode/src/Settings.hpp b/src/libvgcode/src/Settings.hpp index b3aa371c4a..fe205531f2 100644 --- a/src/libvgcode/src/Settings.hpp +++ b/src/libvgcode/src/Settings.hpp @@ -7,6 +7,8 @@ #include "../include/Types.hpp" +#include +#include #include namespace libvgcode { diff --git a/src/libvgcode/src/ToolMarker.cpp b/src/libvgcode/src/ToolMarker.cpp index 3e595faec0..f4447fe9ad 100644 --- a/src/libvgcode/src/ToolMarker.cpp +++ b/src/libvgcode/src/ToolMarker.cpp @@ -7,6 +7,7 @@ #include "Utils.hpp" #include +#include "../include/Types.hpp" #if VGCODE_ENABLE_COG_AND_TOOL_MARKERS diff --git a/src/libvgcode/src/Types.cpp b/src/libvgcode/src/Types.cpp index 2aa8a40e9d..1badfae81b 100644 --- a/src/libvgcode/src/Types.cpp +++ b/src/libvgcode/src/Types.cpp @@ -5,6 +5,7 @@ #include "../include/Types.hpp" #include +#include namespace libvgcode { diff --git a/src/libvgcode/src/Utils.cpp b/src/libvgcode/src/Utils.cpp index aee2cd4875..46ed6a336c 100644 --- a/src/libvgcode/src/Utils.cpp +++ b/src/libvgcode/src/Utils.cpp @@ -6,6 +6,9 @@ #include #include +#include "../include/Types.hpp" +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/Utils.hpp b/src/libvgcode/src/Utils.hpp index 84c3deb3c5..4db67e426f 100644 --- a/src/libvgcode/src/Utils.hpp +++ b/src/libvgcode/src/Utils.hpp @@ -6,6 +6,8 @@ #define VGCODE_UTILS_HPP #include "../include/Types.hpp" +#include +#include #ifdef _WIN32 #define STDVEC_MEMSIZE(NAME, TYPE) NAME.capacity() * ((sizeof(TYPE) + __alignof(TYPE) - 1) / __alignof(TYPE)) * __alignof(TYPE) diff --git a/src/libvgcode/src/ViewRange.cpp b/src/libvgcode/src/ViewRange.cpp index ea2f1e916e..b5657da1b7 100644 --- a/src/libvgcode/src/ViewRange.cpp +++ b/src/libvgcode/src/ViewRange.cpp @@ -3,6 +3,7 @@ ///|/ libvgcode is released under the terms of the AGPLv3 or higher ///|/ #include "ViewRange.hpp" +#include "../include/Types.hpp" namespace libvgcode { diff --git a/src/libvgcode/src/ViewRange.hpp b/src/libvgcode/src/ViewRange.hpp index b9356fc760..7d5f9eb32e 100644 --- a/src/libvgcode/src/ViewRange.hpp +++ b/src/libvgcode/src/ViewRange.hpp @@ -6,6 +6,7 @@ #define VGCODE_VIEWRANGE_HPP #include "Range.hpp" +#include "../include/Types.hpp" namespace libvgcode { diff --git a/src/libvgcode/src/Viewer.cpp b/src/libvgcode/src/Viewer.cpp index 089f1f7e7b..b082a6e29d 100644 --- a/src/libvgcode/src/Viewer.cpp +++ b/src/libvgcode/src/Viewer.cpp @@ -4,6 +4,12 @@ ///|/ #include "../include/Viewer.hpp" #include "ViewerImpl.hpp" +#include +#include +#include "../include/Types.hpp" +#include +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/ViewerImpl.cpp b/src/libvgcode/src/ViewerImpl.cpp index ee38594817..8dc908d6d8 100644 --- a/src/libvgcode/src/ViewerImpl.cpp +++ b/src/libvgcode/src/ViewerImpl.cpp @@ -9,14 +9,26 @@ #include "OpenGLUtils.hpp" #include "Utils.hpp" +#include +#include "../include/Types.hpp" +#include +#include "../include/PathVertex.hpp" +#include "Bitset.hpp" +#include "../include/ColorPrint.hpp" +#include +#include #include #include +#include #include #include #include #include #include #include +#include +#include +#include namespace libvgcode { diff --git a/src/libvgcode/src/ViewerImpl.hpp b/src/libvgcode/src/ViewerImpl.hpp index 335fb5ef52..0877e6265b 100644 --- a/src/libvgcode/src/ViewerImpl.hpp +++ b/src/libvgcode/src/ViewerImpl.hpp @@ -8,6 +8,12 @@ #include "Settings.hpp" #include "SegmentTemplate.hpp" #include "OptionTemplate.hpp" +#include "../include/Types.hpp" +#include +#include +#include +#include +#include #if VGCODE_ENABLE_COG_AND_TOOL_MARKERS #include "CogMarker.hpp" #include "ToolMarker.hpp" diff --git a/src/slic3r/Config/Snapshot.cpp b/src/slic3r/Config/Snapshot.cpp index a7135eac6f..cf568432dc 100644 --- a/src/slic3r/Config/Snapshot.cpp +++ b/src/slic3r/Config/Snapshot.cpp @@ -1,5 +1,21 @@ #include "Snapshot.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/Exception.hpp" +#include "slic3r/Config/Version.hpp" +#include #include #include @@ -26,7 +42,10 @@ #include "../GUI/MainFrame.hpp" #include "../GUI/MsgDialog.hpp" +#include +#include #include +#include #define SLIC3R_SNAPSHOTS_DIR "snapshots" #define SLIC3R_SNAPSHOT_FILE "snapshot.ini" diff --git a/src/slic3r/Config/Snapshot.hpp b/src/slic3r/Config/Snapshot.hpp index f453006338..96a0c33771 100644 --- a/src/slic3r/Config/Snapshot.hpp +++ b/src/slic3r/Config/Snapshot.hpp @@ -1,6 +1,8 @@ #ifndef slic3r_GUI_Snapshot_ #define slic3r_GUI_Snapshot_ +#include +#include #include #include #include diff --git a/src/slic3r/Config/Version.cpp b/src/slic3r/Config/Version.cpp index 092594ce51..f25577c9dc 100644 --- a/src/slic3r/Config/Version.cpp +++ b/src/slic3r/Config/Version.cpp @@ -1,9 +1,21 @@ #include "Version.hpp" +#include +#include +#include +#include #include #include #include +#include "libslic3r/Semver.hpp" +#include +#include +#include +#include +#include +#include +#include "libslic3r/Exception.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/Config.hpp" diff --git a/src/slic3r/Config/Version.hpp b/src/slic3r/Config/Version.hpp index 8249573dec..5e10e9ab95 100644 --- a/src/slic3r/Config/Version.hpp +++ b/src/slic3r/Config/Version.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_GUI_ConfigIndex_ #define slic3r_GUI_ConfigIndex_ +#include #include #include diff --git a/src/slic3r/GUI/2DBed.cpp b/src/slic3r/GUI/2DBed.cpp index 3257d05adc..4bf71c2d50 100644 --- a/src/slic3r/GUI/2DBed.cpp +++ b/src/slic3r/GUI/2DBed.cpp @@ -18,6 +18,7 @@ #include "slic3r/GUI/Gizmos/GLGizmoBase.hpp" #include "slic3r/GUI/Widgets/StateColor.hpp" #include +#include #include #include #include diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 08e7d7a056..66e87ac3af 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include "slic3r/GUI/GUI_Utils.hpp" #include "slic3r/GUI/Widgets/Button.hpp" diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 79880a6ec5..0ecc8809be 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -16,6 +16,7 @@ #include "Widgets/TextInput.hpp" #include "Widgets/HyperLink.hpp" #include "slic3r/Utils/CalibUtils.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp index d967fa37ab..f953dd115a 100644 --- a/src/slic3r/GUI/AMSSetting.cpp +++ b/src/slic3r/GUI/AMSSetting.cpp @@ -12,6 +12,7 @@ #include "slic3r/GUI/Widgets/AnimaController.hpp" #include "slic3r/GUI/Widgets/Label.hpp" #include "slic3r/GUI/Widgets/ComboBox.hpp" +#include #include #include #include "slic3r/GUI/GUI_Utils.hpp" diff --git a/src/slic3r/GUI/AMSSetting.hpp b/src/slic3r/GUI/AMSSetting.hpp index 24467f8d13..1d6b559981 100644 --- a/src/slic3r/GUI/AMSSetting.hpp +++ b/src/slic3r/GUI/AMSSetting.hpp @@ -12,6 +12,7 @@ #include "Widgets/CheckBox.hpp" #include "slic3r/GUI/DeviceCore/DevFilaAmsSetting.h" +#include #include #include #include diff --git a/src/slic3r/GUI/CAD/DesignCanvas.cpp b/src/slic3r/GUI/CAD/DesignCanvas.cpp index 517fbcee63..1abfd81feb 100644 --- a/src/slic3r/GUI/CAD/DesignCanvas.cpp +++ b/src/slic3r/GUI/CAD/DesignCanvas.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include "libslic3r/CAD/SketchEngine.hpp" diff --git a/src/slic3r/GUI/CAD/DesignPanel.cpp b/src/slic3r/GUI/CAD/DesignPanel.cpp index 59e3aaac8e..d61d0aa11f 100644 --- a/src/slic3r/GUI/CAD/DesignPanel.cpp +++ b/src/slic3r/GUI/CAD/DesignPanel.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index f427b37871..adf03e4be9 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -6,6 +6,24 @@ #include "Lazy.hpp" #include "SelectMachinePop.hpp" #include "Widgets/SideTools.hpp" +#include +#include "libslic3r/calib.hpp" +#include +#include "slic3r/GUI/wxExtensions.hpp" +#include "slic3r/GUI/DeviceManager.hpp" +#include +#include +#include +#include "slic3r/GUI/Widgets/PopupWindow.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include "slic3r/GUI/StagedBuild.hpp" namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/CapsuleButton.hpp b/src/slic3r/GUI/CapsuleButton.hpp index ac23f174e8..f8afdddabb 100644 --- a/src/slic3r/GUI/CapsuleButton.hpp +++ b/src/slic3r/GUI/CapsuleButton.hpp @@ -3,6 +3,7 @@ #include "wxExtensions.hpp" #include "Widgets/Label.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/ConfigExceptions.hpp b/src/slic3r/GUI/ConfigExceptions.hpp index 181442d4e3..e3c5b08cea 100644 --- a/src/slic3r/GUI/ConfigExceptions.hpp +++ b/src/slic3r/GUI/ConfigExceptions.hpp @@ -1,4 +1,8 @@ #include +#include + +#include "libslic3r/Exception.hpp" + namespace Slic3r { class ConfigError : public Slic3r::RuntimeError { diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 91c5f211e1..48c0cd0d5f 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp index f02007593a..151d53810b 100644 --- a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp +++ b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.cpp @@ -13,6 +13,7 @@ #include "slic3r/GUI/Widgets/StateColor.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp index 34cd85e692..dcc7654b41 100644 --- a/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp +++ b/src/slic3r/GUI/DeviceTab/uiAMSBestPositionPopup.hpp @@ -18,6 +18,7 @@ #include "libslic3r/ProjectTask.hpp" #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp index 5014743f2d..462fcf892e 100644 --- a/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp +++ b/src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp @@ -14,6 +14,7 @@ #include "slic3r/GUI/Widgets/StateColor.hpp" +#include #include #include "slic3r/GUI/Widgets/Label.hpp" #include diff --git a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h index 16cd311120..c433973e44 100644 --- a/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h +++ b/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h @@ -14,9 +14,16 @@ #include "slic3r/GUI/Widgets/StaticBox.hpp" #include "slic3r/GUI/Widgets/AnimaController.hpp" +#include +#include +#include +#include +#include #include #include #include +#include +#include // Previous definitions class Button; diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index e15470e462..a2d14fa370 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -6,6 +6,7 @@ #include #include "I18N.hpp" #include +#include #include #include "slic3r/GUI/GUI_Utils.hpp" #include "slic3r/GUI/wxExtensions.hpp" diff --git a/src/slic3r/GUI/ExtrusionCalibration.hpp b/src/slic3r/GUI/ExtrusionCalibration.hpp index cbee1b56b1..3b500373da 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.hpp +++ b/src/slic3r/GUI/ExtrusionCalibration.hpp @@ -16,6 +16,7 @@ #include "ParamsDialog.hpp" #include "GUI_App.hpp" #include "wx/hyperlink.h" +#include #include #include #include diff --git a/src/slic3r/GUI/GUI_AuxiliaryList.hpp b/src/slic3r/GUI/GUI_AuxiliaryList.hpp index 8604259371..88bab94a3d 100644 --- a/src/slic3r/GUI/GUI_AuxiliaryList.hpp +++ b/src/slic3r/GUI/GUI_AuxiliaryList.hpp @@ -6,10 +6,14 @@ #include #include +#include #include +#include #include #include #include +#include +#include #include "AuxiliaryDataViewModel.hpp" diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index e2226b3d3e..38633dc86a 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -67,6 +67,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index fbca655a24..949abfcb13 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -15,6 +15,7 @@ #include "I18N.hpp" #include "ConfigManipulation.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp index 24e3d427a9..490df76a75 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp @@ -1,15 +1,21 @@ #ifndef slic3r_GUI_ObjectTableSettings_hpp_ #define slic3r_GUI_ObjectTableSettings_hpp_ +#include #include +#include #include +#include #include +#include #include "wxExtensions.hpp" +#include "libslic3r/PrintConfig.hpp" class wxBoxSizer; namespace Slic3r { class DynamicPrintConfig; +class ModelObject; class ModelConfig; namespace GUI { class ConfigOptionsGroup; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index ebd0821ded..69999155af 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -32,6 +32,7 @@ #include "slic3r/GUI/3DScene.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/Line.hpp" +#include #include #include "libslic3r/TriangleMesh.hpp" #include "slic3r/GUI/MeshUtils.hpp" diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index 5bf94c7d77..38aeb26bdf 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -75,6 +75,7 @@ #include #include "slic3r/GUI/Jobs/Worker.hpp" #include +#include #ifndef IMGUI_DEFINE_MATH_OPERATORS #define IMGUI_DEFINE_MATH_OPERATORS #endif diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp index bed2c42267..87ffbb762f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp @@ -25,6 +25,7 @@ #include "libslic3r/Geometry.hpp" #include #include "libslic3r/Model.hpp" +#include #include namespace Slic3r { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp index a223749b6c..56c0944da9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -24,6 +24,7 @@ #include "slic3r/GUI/GLShader.hpp" #include #include "libslic3r/Geometry.hpp" +#include #include namespace Slic3r { diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp index 84ff8ebe62..e43a129734 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp @@ -1,11 +1,16 @@ #ifndef slic3r_GizmoObjectManipulation_hpp_ #define slic3r_GizmoObjectManipulation_hpp_ +#include #include #include "libslic3r/Point.hpp" #include "libslic3r/Geometry.hpp" #include +#include +#include +#include +#include #include "slic3r/GUI/GUI_Geometry.hpp" @@ -14,6 +19,7 @@ namespace Slic3r { namespace GUI { +class ImGuiWrapper; class Selection; class GLCanvas3D; diff --git a/src/slic3r/GUI/Jobs/PlaterWorker.hpp b/src/slic3r/GUI/Jobs/PlaterWorker.hpp index f22bd6d511..9b149ab91b 100644 --- a/src/slic3r/GUI/Jobs/PlaterWorker.hpp +++ b/src/slic3r/GUI/Jobs/PlaterWorker.hpp @@ -1,13 +1,26 @@ #ifndef PLATERWORKER_HPP #define PLATERWORKER_HPP +#include +#include +#include +#include +#include #include #include #include "Worker.hpp" #include "BusyCursorJob.hpp" +#include "slic3r/GUI/Jobs/Job.hpp" +#include +#include +#include +#include +#include + #include "slic3r/GUI/GUI.hpp" +#include "slic3r/GUI/GUI_Utils.hpp" #include "slic3r/GUI/I18N.hpp" namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/Jobs/SLAImportDialog.hpp b/src/slic3r/GUI/Jobs/SLAImportDialog.hpp index 5bb101b74a..68ad749726 100644 --- a/src/slic3r/GUI/Jobs/SLAImportDialog.hpp +++ b/src/slic3r/GUI/Jobs/SLAImportDialog.hpp @@ -3,7 +3,14 @@ #include "SLAImportJob.hpp" +#include +#include +#include "libslic3r/Point.hpp" +#include #include +#include +#include +#include #include #include #include diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 92051d116e..903ce4c43a 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -34,6 +34,7 @@ #include "Widgets/StaticLine.hpp" #include "Widgets/TabCtrl.hpp" #include +#include #include #include #include diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 8c4fc58d03..8c25b31770 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -184,7 +184,8 @@ class MainFrame : public DPIFrame std::string m_name{ "prepare_layout" }; wxSize m_laid_out_size; } m_prepare_layout_prebuild{ *this }; - // Every LazyPage, in and out of the book; prebuild_pages_when_idle() registers them. + // Every built-in LazyPage, in and out of the book; prebuild_pages_when_idle() registers them. + // Plugin pages stay out: PluginPages destroys them at runtime. std::vector m_lazy_pages; // The latest EVT_LOAD_PRINTER_URL, applied when the web Device view is built. wxString m_printer_url; diff --git a/src/slic3r/GUI/MarkdownTip.cpp b/src/slic3r/GUI/MarkdownTip.cpp index 70422a4232..9a80870fe0 100644 --- a/src/slic3r/GUI/MarkdownTip.cpp +++ b/src/slic3r/GUI/MarkdownTip.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/MultiChoiceDialog.cpp b/src/slic3r/GUI/MultiChoiceDialog.cpp index e106d7869f..e78f5d1856 100644 --- a/src/slic3r/GUI/MultiChoiceDialog.cpp +++ b/src/slic3r/GUI/MultiChoiceDialog.cpp @@ -2,6 +2,7 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" +#include #include #include #include "slic3r/GUI/GUI_Utils.hpp" diff --git a/src/slic3r/GUI/PartSkipCommon.hpp b/src/slic3r/GUI/PartSkipCommon.hpp index bd158edbf8..ae7ad6f6a5 100644 --- a/src/slic3r/GUI/PartSkipCommon.hpp +++ b/src/slic3r/GUI/PartSkipCommon.hpp @@ -1,6 +1,8 @@ #ifndef PARTSKIPCOMMON_H #define PARTSKIPCOMMON_H +#include +#include namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 71086d1915..6dd5af8794 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6,6 +6,7 @@ #include "libslic3r/Config.hpp" #include "libslic3r_version.h" +#include #include #include #include diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 4ea2ba0a72..1993748cc6 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -119,33 +119,13 @@ PrinterWebView::PrinterWebView(wxWindow *parent) wxBoxSizer* topsizer = new wxBoxSizer(wxVERTICAL); // Create the webview - m_browser = WebView::CreateWebView(this, ""); - if (m_browser == nullptr) { - wxLogError("Could not init m_browser"); - return; - } - -#ifdef __linux__ - inject_vue_resize_workaround(m_browser); - - auto cookiesPath = boost::filesystem::path(data_dir() + "/cache/cookies.db"); - auto wv = static_cast(m_browser->GetNativeBackend()); - auto wv_ctx = webkit_web_view_get_context(wv); - auto cookieManager = webkit_web_context_get_cookie_manager(wv_ctx); - webkit_cookie_manager_set_persistent_storage(cookieManager, cookiesPath.c_str(), WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE); -#endif - - m_browser->Bind(wxEVT_WEBVIEW_ERROR, &PrinterWebView::OnError, this); - m_browser->Bind(wxEVT_WEBVIEW_LOADED, &PrinterWebView::OnLoaded, this); - m_browser->Bind(wxEVT_WEBVIEW_NEWWINDOW, &PrinterWebView::OnNewWindow, this); - m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &PrinterWebView::OnScriptMessage, this); + create_browser(); + m_reset_on_show = WebView::NeedsRecreateOnShow(); SetSizer(topsizer); topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); - update_mode(); - // Log backend information /* m_browser->GetUserAgent() may lead crash if (wxGetApp().get_mode() == comDevelop) { @@ -177,12 +157,44 @@ PrinterWebView::~PrinterWebView() BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " End"; } +void PrinterWebView::create_browser() +{ + m_browser = WebView::CreateWebView(this, ""); + +#ifdef __linux__ + inject_vue_resize_workaround(m_browser); + + auto cookiesPath = boost::filesystem::path(data_dir() + "/cache/cookies.db"); + auto wv = static_cast(m_browser->GetNativeBackend()); + auto wv_ctx = webkit_web_view_get_context(wv); + auto cookieManager = webkit_web_context_get_cookie_manager(wv_ctx); + webkit_cookie_manager_set_persistent_storage(cookieManager, cookiesPath.c_str(), WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE); +#endif + + m_browser->Bind(wxEVT_WEBVIEW_ERROR, &PrinterWebView::OnError, this); + m_browser->Bind(wxEVT_WEBVIEW_LOADED, &PrinterWebView::OnLoaded, this); + m_browser->Bind(wxEVT_WEBVIEW_NEWWINDOW, &PrinterWebView::OnNewWindow, this); + m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &PrinterWebView::OnScriptMessage, this); + update_mode(); +} + +void PrinterWebView::reset_browser() +{ + m_browser->Destroy(); // also removes it from the sizer + create_browser(); + GetSizer()->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); + Layout(); + + // OnLoaded may have cleared m_url_deferred already, so requeue the last url for Show(). + m_apikey_sent = false; + m_url_deferred = m_url; +} + void PrinterWebView::load_url(wxString& url, wxString apikey) { // this->Show(); // this->Raise(); - if (m_browser == nullptr) - return; + m_url = url; m_apikey = apikey; m_apikey_sent = false; m_handler = create_printer_webview_handler(*this); @@ -200,6 +212,8 @@ void PrinterWebView::load_url(wxString& url, wxString apikey) bool PrinterWebView::Show(bool show) { + if (show && std::exchange(m_reset_on_show, false)) + reset_browser(); if (show && !m_url_deferred.empty()) { m_browser->LoadURL(m_url_deferred); //ORCA: m_url_deferred will be cleared on load success diff --git a/src/slic3r/GUI/PrinterWebView.hpp b/src/slic3r/GUI/PrinterWebView.hpp index 9bd8ff51a8..53c4f30557 100644 --- a/src/slic3r/GUI/PrinterWebView.hpp +++ b/src/slic3r/GUI/PrinterWebView.hpp @@ -58,13 +58,18 @@ private: friend class PrinterWebViewHandler; void SendAPIKey(); + void create_browser(); + void reset_browser(); wxWebView* m_browser; long m_zoomFactor; wxString m_apikey; bool m_apikey_sent; + // Last url passed to load_url(), reloaded after reset_browser(). + wxString m_url; wxString m_url_deferred; std::unique_ptr m_handler; + bool m_reset_on_show{false}; // DECLARE_EVENT_TABLE() }; diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 47945e1179..d8e7d6b806 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -80,16 +80,10 @@ ProjectPanel::ProjectPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); - m_browser = WebView::CreateWebView(this, m_project_home_url); - if (m_browser == nullptr) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("load web view of project page failed"); - return; - } + create_browser(); + m_reset_on_show = WebView::NeedsRecreateOnShow(); //m_browser->Hide(); main_sizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); - m_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &ProjectPanel::on_navigated, this); - m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ProjectPanel::OnScriptMessage, this, m_browser->GetId()); - Bind(wxEVT_WEBVIEW_NAVIGATING, &ProjectPanel::onWebNavigating, this, m_browser->GetId()); Bind(EVT_PROJECT_RELOAD, &ProjectPanel::on_reload, this); @@ -117,6 +111,23 @@ void ProjectPanel::shutdown() m_reload_task.reset(); } +void ProjectPanel::create_browser() +{ + m_browser = WebView::CreateWebView(this, m_project_home_url); + m_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &ProjectPanel::on_navigated, this); + m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ProjectPanel::OnScriptMessage, this, m_browser->GetId()); + m_browser->Bind(wxEVT_WEBVIEW_NAVIGATING, &ProjectPanel::onWebNavigating, this); +} + +void ProjectPanel::reset_browser() +{ + m_browser->Destroy(); // also removes it from the sizer + create_browser(); + GetSizer()->Insert(0, m_browser, wxSizerFlags().Expand().Proportion(1)); + Layout(); + m_web_init_completed.store(false, std::memory_order_release); +} + // Helper to convert newlines to
static std::string convert_newlines_to_br(const std::string& text) { std::string result = text; @@ -281,12 +292,13 @@ void ProjectPanel::on_reload(wxCommandEvent& evt) wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', false, json::error_handler_t::ignore)); - if (m_web_init_completed.load(std::memory_order_acquire) && - !cancel_token->load(std::memory_order_acquire) && wxTheApp != nullptr && !wxGetApp().is_closing()) { + if (!cancel_token->load(std::memory_order_acquire) && wxTheApp != nullptr && !wxGetApp().is_closing()) { wxGetApp().CallAfter([this, cancel_token, strJS] { if (cancel_token->load(std::memory_order_acquire) || wxTheApp == nullptr || wxGetApp().is_closing()) return; - RunScript(strJS.ToStdString()); + m_info_script = strJS.ToStdString(); + if (m_web_init_completed.load(std::memory_order_acquire)) + RunScript(m_info_script); }); } }); @@ -327,6 +339,11 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } else if (strCmd == "request_3mf_info") { m_web_init_completed.store(true, std::memory_order_release); + // Replay the stored info after each page load. + CallAfter([this] { + if (!m_info_script.empty()) + RunScript(m_info_script); + }); } else if (strCmd == "edit_project_info") { show_info_editor(true); @@ -383,6 +400,8 @@ void ProjectPanel::clear_model_info() wxGetApp().CallAfter([this, cancel_token, strJS] { if (cancel_token->load(std::memory_order_acquire) || wxTheApp == nullptr || wxGetApp().is_closing()) return; + // Runs after any store queued by an earlier reload pass, so stale info is never replayed. + m_info_script.clear(); RunScript(strJS.ToStdString()); }); } @@ -523,10 +542,12 @@ void ProjectPanel::RunScript(std::string content) WebView::RunScript(m_browser, content); } -bool ProjectPanel::Show(bool show) +bool ProjectPanel::Show(bool show) { + if (show && std::exchange(m_reset_on_show, false)) + reset_browser(); if (show) update_model_data(); - return wxPanel::Show(show); + return wxPanel::Show(show); } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Project.hpp b/src/slic3r/GUI/Project.hpp index c7a85bce74..90e6eda1f1 100644 --- a/src/slic3r/GUI/Project.hpp +++ b/src/slic3r/GUI/Project.hpp @@ -80,9 +80,14 @@ private: AuxiliaryPanel* m_auxiliary{nullptr}; wxString m_project_home_url; wxString m_root_dir; + // Last show_3mf_info script, also sent whenever the page asks for it. + std::string m_info_script; + bool m_reset_on_show{false}; static inline std::atomic m_sequence_id{8000}; void show_info_editor(bool show); + void create_browser(); + void reset_browser(); public: diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index 7aff669668..7f280debf5 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/SavePresetDialog.hpp b/src/slic3r/GUI/SavePresetDialog.hpp index 10cf25883b..3bbeeb0cde 100644 --- a/src/slic3r/GUI/SavePresetDialog.hpp +++ b/src/slic3r/GUI/SavePresetDialog.hpp @@ -12,6 +12,7 @@ #include "Widgets/Label.hpp" #include "Widgets/TextInput.hpp" #include +#include #include #include #include diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 7a44305e4e..3ab630b404 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -16,6 +16,7 @@ #include "Jobs/BoostThreadWorker.hpp" #include "Jobs/PlaterWorker.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/TabButton.cpp b/src/slic3r/GUI/TabButton.cpp index 3469c9c980..f7c1a55d7c 100644 --- a/src/slic3r/GUI/TabButton.cpp +++ b/src/slic3r/GUI/TabButton.cpp @@ -2,6 +2,7 @@ #include "Widgets/Label.hpp" #include "slic3r/GUI/Widgets/StaticBox.hpp" +#include #include #include #include "slic3r/GUI/wxExtensions.hpp" diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 485ac48b99..ca20f4edb1 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index 2e0245e40e..c67ec0bbc3 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -2,6 +2,7 @@ #define slic3r_UpgradePanel_hpp_ #include "slic3r/GUI/wxExtensions.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 02fc7b0877..0101c83534 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -62,10 +62,10 @@ namespace GUI { WebViewPanel::WebViewPanel(wxWindow *parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize) { - wxString url = file_url_from_path(boost::filesystem::path(resources_dir()) / "web/homepage/index.html"); + m_home_url = file_url_from_path(boost::filesystem::path(resources_dir()) / "web/homepage/index.html"); wxString strlang = wxGetApp().current_language_code_safe(); if (strlang != "") - url += "?lang=" + strlang; + m_home_url += "?lang=" + strlang; wxBoxSizer* topsizer = new wxBoxSizer(wxVERTICAL); @@ -109,12 +109,8 @@ WebViewPanel::WebViewPanel(wxWindow *parent) m_info = new wxInfoBar(this); topsizer->Add(m_info, wxSizerFlags().Expand()); // Create the webview - m_browser = WebView::CreateWebView(this, url); - if (m_browser == nullptr) { - wxLogError("Could not init m_browser"); - return; - } - m_browser->Hide(); + create_browser(); + m_reset_on_show = WebView::NeedsRecreateOnShow(); SetSizer(topsizer); topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); @@ -264,6 +260,27 @@ WebViewPanel::~WebViewPanel() } +void WebViewPanel::create_browser() +{ + m_browser = WebView::CreateWebView(this, m_home_url); + m_browser->Hide(); +} + +void WebViewPanel::reset_browser() +{ + m_browser->Destroy(); // also removes it from the sizer + create_browser(); + GetSizer()->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); + Layout(); +} + +bool WebViewPanel::Show(bool show) +{ + if (show && std::exchange(m_reset_on_show, false)) + reset_browser(); + return wxPanel::Show(show); +} + void WebViewPanel::load_url(wxString& url) { this->Show(); diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 96d18f23c0..8a4ecbf35d 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -113,9 +113,15 @@ public: int get_model_mall_detail_url(std::string *url, std::string id); void update_mode(); + + bool Show(bool show = true) override; private: + void create_browser(); + void reset_browser(); wxWebView* m_browser; + wxString m_home_url; + bool m_reset_on_show{false}; wxButton * m_button_stop; wxTextCtrl *m_url; #if !BBL_RELEASE_TO_PUBLIC diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 8a5f03b7ad..1abe045942 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -11,6 +11,7 @@ #include "slic3r/GUI/DeviceCore/DevFilaSystem.h" #include "slic3r/GUI/DeviceCore/DevFilaSwitch.h" +#include #include #include #include "slic3r/GUI/AmsMappingPopup.hpp" diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 4f44d7a1e7..f4c83667c2 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -9,6 +9,7 @@ #include "../DeviceManager.hpp" #include "slic3r/GUI/Event.hpp" #include "slic3r/GUI/AmsMappingPopup.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 96ca92494d..303b4221bb 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -12,6 +12,7 @@ #include "slic3r/GUI/DeviceCore/DevConfig.h" #include "slic3r/GUI/DeviceCore/DevManager.h" +#include #include #include #include "slic3r/GUI/Event.hpp" diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index e84ba64d98..55c0a3ca8d 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -9,6 +9,7 @@ #include "slic3r/GUI/Event.hpp" #include "slic3r/GUI/AmsMappingPopup.hpp" #include +#include #include #include #include "slic3r/GUI/DeviceCore/DevDefs.h" diff --git a/src/slic3r/GUI/Widgets/AnimaController.cpp b/src/slic3r/GUI/Widgets/AnimaController.cpp index a73c6d8e50..0267650e1d 100644 --- a/src/slic3r/GUI/Widgets/AnimaController.cpp +++ b/src/slic3r/GUI/Widgets/AnimaController.cpp @@ -1,5 +1,6 @@ #include "AnimaController.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/AnimaController.hpp b/src/slic3r/GUI/Widgets/AnimaController.hpp index e32eae6fb7..a1ddb7bc74 100644 --- a/src/slic3r/GUI/Widgets/AnimaController.hpp +++ b/src/slic3r/GUI/Widgets/AnimaController.hpp @@ -3,6 +3,7 @@ #include "../wxExtensions.hpp" #include "Label.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 7010dbd91c..54e720feb4 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -3,6 +3,7 @@ #include "slic3r/GUI/Widgets/StaticBox.hpp" #include +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index cee2eb15b6..b4b1e24bb2 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -3,6 +3,7 @@ #include "../wxExtensions.hpp" #include "StaticBox.hpp" +#include #include #include "slic3r/GUI/Widgets/StateColor.hpp" #include diff --git a/src/slic3r/GUI/Widgets/CheckBox.cpp b/src/slic3r/GUI/Widgets/CheckBox.cpp index f019f18784..c36a53d8af 100644 --- a/src/slic3r/GUI/Widgets/CheckBox.cpp +++ b/src/slic3r/GUI/Widgets/CheckBox.cpp @@ -1,6 +1,7 @@ #include "CheckBox.hpp" #include "../wxExtensions.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/CheckBox.hpp b/src/slic3r/GUI/Widgets/CheckBox.hpp index 3ad3dac2c4..bab691eb53 100644 --- a/src/slic3r/GUI/Widgets/CheckBox.hpp +++ b/src/slic3r/GUI/Widgets/CheckBox.hpp @@ -3,6 +3,7 @@ #include "../wxExtensions.hpp" +#include #include #include diff --git a/src/slic3r/GUI/Widgets/CheckList.cpp b/src/slic3r/GUI/Widgets/CheckList.cpp index 2b8dcac75e..a9c5c15be4 100644 --- a/src/slic3r/GUI/Widgets/CheckList.cpp +++ b/src/slic3r/GUI/Widgets/CheckList.cpp @@ -2,6 +2,7 @@ #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/I18N.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/CheckList.hpp b/src/slic3r/GUI/Widgets/CheckList.hpp index 9e5ae4c9e1..5518b10fd0 100644 --- a/src/slic3r/GUI/Widgets/CheckList.hpp +++ b/src/slic3r/GUI/Widgets/CheckList.hpp @@ -6,6 +6,7 @@ #include "Label.hpp" #include "TextInput.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index 7d507789f5..20998eda0a 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/ComboBox.hpp b/src/slic3r/GUI/Widgets/ComboBox.hpp index f13bc876c4..1dae23b85d 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.hpp +++ b/src/slic3r/GUI/Widgets/ComboBox.hpp @@ -3,6 +3,7 @@ #include "TextInput.hpp" #include "DropDown.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index 3ffaf59141..e4f039307b 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -6,6 +6,7 @@ #include "../MsgDialog.hpp" #include "json_diff.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/FanControl.hpp b/src/slic3r/GUI/Widgets/FanControl.hpp index b97c9a4d27..e5eb49ed45 100644 --- a/src/slic3r/GUI/Widgets/FanControl.hpp +++ b/src/slic3r/GUI/Widgets/FanControl.hpp @@ -9,6 +9,7 @@ #include "../SelectMachine.hpp" #include "../DeviceManager.hpp" #include "slic3r/GUI/Event.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/FilamentLoad.cpp b/src/slic3r/GUI/Widgets/FilamentLoad.cpp index 712c103826..11541a95a3 100644 --- a/src/slic3r/GUI/Widgets/FilamentLoad.cpp +++ b/src/slic3r/GUI/Widgets/FilamentLoad.cpp @@ -5,6 +5,7 @@ #include "../GUI_App.hpp" #include "../DeviceCore/DevFilaSystem.h" +#include #include #include #include "slic3r/GUI/Widgets/StepCtrl.hpp" diff --git a/src/slic3r/GUI/Widgets/FilamentLoad.hpp b/src/slic3r/GUI/Widgets/FilamentLoad.hpp index 257e92d21c..2c516987fc 100644 --- a/src/slic3r/GUI/Widgets/FilamentLoad.hpp +++ b/src/slic3r/GUI/Widgets/FilamentLoad.hpp @@ -8,6 +8,7 @@ #include "../DeviceManager.hpp" #include "slic3r/GUI/Event.hpp" #include "slic3r/GUI/AmsMappingPopup.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp index 9915795af5..80e7e85c66 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp @@ -4,6 +4,7 @@ #include "../wxExtensions.hpp" #include "slic3r/GUI/I18N.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/RadioBox.cpp b/src/slic3r/GUI/Widgets/RadioBox.cpp index 93e8f63b91..5b4af4e7b5 100644 --- a/src/slic3r/GUI/Widgets/RadioBox.cpp +++ b/src/slic3r/GUI/Widgets/RadioBox.cpp @@ -1,6 +1,7 @@ #include "RadioBox.hpp" #include "../wxExtensions.hpp" +#include #include #include diff --git a/src/slic3r/GUI/Widgets/RadioGroup.hpp b/src/slic3r/GUI/Widgets/RadioGroup.hpp index 6f25190431..ce6499c727 100644 --- a/src/slic3r/GUI/Widgets/RadioGroup.hpp +++ b/src/slic3r/GUI/Widgets/RadioGroup.hpp @@ -3,6 +3,7 @@ #include "../wxExtensions.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp index 5b5cd98076..d53f176ac3 100644 --- a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp +++ b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp @@ -1,5 +1,6 @@ #include "RoundedRectangle.hpp" #include "../wxExtensions.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/ScrolledWindow.hpp b/src/slic3r/GUI/Widgets/ScrolledWindow.hpp index a430dec423..cb497d1015 100644 --- a/src/slic3r/GUI/Widgets/ScrolledWindow.hpp +++ b/src/slic3r/GUI/Widgets/ScrolledWindow.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/SideButton.cpp b/src/slic3r/GUI/Widgets/SideButton.cpp index e9fe493621..54b75f1e14 100644 --- a/src/slic3r/GUI/Widgets/SideButton.cpp +++ b/src/slic3r/GUI/Widgets/SideButton.cpp @@ -3,6 +3,7 @@ #include #include "slic3r/GUI/Widgets/StateHandler.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/SideTools.hpp b/src/slic3r/GUI/Widgets/SideTools.hpp index 81c42ecef0..94af1e64c9 100644 --- a/src/slic3r/GUI/Widgets/SideTools.hpp +++ b/src/slic3r/GUI/Widgets/SideTools.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "Button.hpp" #include "Label.hpp" diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index 3077304947..80c000fe46 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -6,6 +6,7 @@ #include "slic3r/GUI/Widgets/StaticBox.hpp" #include #include "slic3r/GUI/Widgets/StateHandler.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 87a1d26827..5b18f733c9 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -1,6 +1,7 @@ #include "StaticBox.hpp" #include "../GUI.hpp" #include +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/StaticBox.hpp b/src/slic3r/GUI/Widgets/StaticBox.hpp index b7662ff670..7c8d7c50ee 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.hpp +++ b/src/slic3r/GUI/Widgets/StaticBox.hpp @@ -4,6 +4,7 @@ #include "../wxExtensions.hpp" #include "StateHandler.hpp" +#include #include #include #include "slic3r/GUI/Widgets/StateColor.hpp" diff --git a/src/slic3r/GUI/Widgets/StaticLine.cpp b/src/slic3r/GUI/Widgets/StaticLine.cpp index f574a5b739..61602d520d 100644 --- a/src/slic3r/GUI/Widgets/StaticLine.cpp +++ b/src/slic3r/GUI/Widgets/StaticLine.cpp @@ -2,6 +2,7 @@ #include "Label.hpp" #include "StateColor.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/StepCtrl.cpp b/src/slic3r/GUI/Widgets/StepCtrl.cpp index 34ce8506de..e50db7c821 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.cpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.cpp @@ -1,6 +1,7 @@ #include "StepCtrl.hpp" #include "Label.hpp" +#include #include #include "slic3r/GUI/Widgets/StaticBox.hpp" #include diff --git a/src/slic3r/GUI/Widgets/StepCtrl.hpp b/src/slic3r/GUI/Widgets/StepCtrl.hpp index d568443eaa..3b5abdab57 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.hpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_StepCtrlBase_hpp_ #include "StaticBox.hpp" +#include #include #include "slic3r/GUI/Widgets/StateColor.hpp" #include diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp index e4ef0005ad..24fcf59981 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 66ff926d25..7c39cdd3f4 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -1,6 +1,7 @@ #include "TabCtrl.hpp" #include "slic3r/GUI/Widgets/StaticBox.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 80ac49da0a..f80a1aa08c 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_TabCtrl_hpp_ #include "Button.hpp" +#include #include #include "slic3r/GUI/Widgets/StaticBox.hpp" #include diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index 99f50269ed..5890c702ac 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -5,6 +5,7 @@ #include "slic3r/GUI/Widgets/StaticBox.hpp" #include #include +#include #include #include "slic3r/GUI/Widgets/StateHandler.hpp" #include diff --git a/src/slic3r/GUI/Widgets/TempInput.hpp b/src/slic3r/GUI/Widgets/TempInput.hpp index 8560576b96..3ca55e558c 100644 --- a/src/slic3r/GUI/Widgets/TempInput.hpp +++ b/src/slic3r/GUI/Widgets/TempInput.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_TempInput_hpp_ #include "../wxExtensions.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/TextCtrl.h b/src/slic3r/GUI/Widgets/TextCtrl.h index 3f3ab2b4de..2d57c38146 100644 --- a/src/slic3r/GUI/Widgets/TextCtrl.h +++ b/src/slic3r/GUI/Widgets/TextCtrl.h @@ -1,3 +1,5 @@ +#include + #ifdef __WXMSW__ class TextCtrl : public wxTextCtrl { diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 0ed38ff8de..e3670cbaed 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -7,6 +7,7 @@ #include #include #include "slic3r/GUI/Widgets/StateHandler.hpp" +#include #include #include #include diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 9a4d5f90b0..c446875d1f 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -381,6 +381,17 @@ void WebView::MarkScriptMessageHandlerAdded(wxWebView * webView) if (WebViewRef *ref = webview_ref(webView)) ref->m_script_handler_added = true; } + +bool WebView::NeedsRecreateOnShow() +{ + const bool recreating = Slic3r::GUI::wxGetApp().is_recreating_gui(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": is_recreating_gui = " << recreating; +#ifdef __WIN32__ + return recreating; +#else + return false; +#endif +} #if wxUSE_WEBVIEW_EDGE bool WebView::CheckWebViewRuntime() { diff --git a/src/slic3r/GUI/Widgets/WebView.hpp b/src/slic3r/GUI/Widgets/WebView.hpp index 2dc126643d..0172f3f8ac 100644 --- a/src/slic3r/GUI/Widgets/WebView.hpp +++ b/src/slic3r/GUI/Widgets/WebView.hpp @@ -23,6 +23,10 @@ public: // Marks "wx" as registered so CreateWebView's deferred add skips the duplicate. static void MarkScriptMessageHandlerAdded(wxWebView * webView); + // On Windows, a WebView2 backend created during a GUI rebuild (language switch) can come up + // ignoring every navigation. A panel that gets true here recreates its view on first Show(). + static bool NeedsRecreateOnShow(); + static void RecreateAll(); }; diff --git a/src/slic3r/GUI/WipeTowerDialog.hpp b/src/slic3r/GUI/WipeTowerDialog.hpp index 91944cfc78..6f6af5f59d 100644 --- a/src/slic3r/GUI/WipeTowerDialog.hpp +++ b/src/slic3r/GUI/WipeTowerDialog.hpp @@ -1,8 +1,16 @@ #ifndef _WIPE_TOWER_DIALOG_H_ #define _WIPE_TOWER_DIALOG_H_ +#include +#include +#include +#include #include +#include +#include +#include #include +#include "libslic3r/FlushVolCalc.hpp" #include "libslic3r/PrintConfig.hpp" #include "Widgets/SpinInput.hpp" diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index 48ea425cf0..24abe219bc 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -6,6 +6,7 @@ #include #include #include "slic3r/GUI/Widgets/CheckBox.hpp" +#include #include #include "libslic3r/Config.hpp" #include diff --git a/src/slic3r/GUI/calib_dlg.hpp b/src/slic3r/GUI/calib_dlg.hpp index da6e9ee7c5..81d6b15200 100644 --- a/src/slic3r/GUI/calib_dlg.hpp +++ b/src/slic3r/GUI/calib_dlg.hpp @@ -13,6 +13,7 @@ #include "Widgets/RadioGroup.hpp" #include "GUI_App.hpp" #include "wx/hyperlink.h" +#include #include #include #include diff --git a/src/slic3r/Utils/3DPrinterOS.cpp b/src/slic3r/Utils/3DPrinterOS.cpp old mode 100755 new mode 100644 index 081afb667c..29b6bd63f8 --- a/src/slic3r/Utils/3DPrinterOS.cpp +++ b/src/slic3r/Utils/3DPrinterOS.cpp @@ -1,7 +1,12 @@ #include "3DPrinterOS.hpp" #include +#include "slic3r/GUI/Widgets/DropDown.hpp" +#include +#include +#include #include +#include #include #include #include @@ -11,12 +16,16 @@ #include #include +#include +#include +#include #include #include #include #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "libslic3r/Utils.hpp" #include "slic3r/GUI/I18N.hpp" @@ -30,6 +39,8 @@ #include "Http.hpp" #include +#include +#include using json = nlohmann::json; diff --git a/src/slic3r/Utils/3DPrinterOS.hpp b/src/slic3r/Utils/3DPrinterOS.hpp old mode 100755 new mode 100644 index 8c8e4ca6dc..02cc81ee6f --- a/src/slic3r/Utils/3DPrinterOS.hpp +++ b/src/slic3r/Utils/3DPrinterOS.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_3DPrinterOS_hpp_ #define slic3r_3DPrinterOS_hpp_ +#include #include #include #include diff --git a/src/slic3r/Utils/ASCIIFolding.cpp b/src/slic3r/Utils/ASCIIFolding.cpp index 016c30fcde..acf6f96fc9 100644 --- a/src/slic3r/Utils/ASCIIFolding.cpp +++ b/src/slic3r/Utils/ASCIIFolding.cpp @@ -1,10 +1,13 @@ #include "ASCIIFolding.hpp" +#include +#include #include #include #include #include #include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/AstroBox.cpp b/src/slic3r/Utils/AstroBox.cpp index 61f9f96c33..6904b56920 100644 --- a/src/slic3r/Utils/AstroBox.cpp +++ b/src/slic3r/Utils/AstroBox.cpp @@ -1,6 +1,7 @@ #include "AstroBox.hpp" #include +#include #include #include #include @@ -9,8 +10,11 @@ #include #include +#include #include +#include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI.hpp" diff --git a/src/slic3r/Utils/AstroBox.hpp b/src/slic3r/Utils/AstroBox.hpp index 72ab273228..04bbb00b67 100644 --- a/src/slic3r/Utils/AstroBox.hpp +++ b/src/slic3r/Utils/AstroBox.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_AstroBox_hpp_ #define slic3r_AstroBox_hpp_ +#include #include #include #include diff --git a/src/slic3r/Utils/BBLCloudServiceAgent.cpp b/src/slic3r/Utils/BBLCloudServiceAgent.cpp index 801ad1cf57..8943a01914 100644 --- a/src/slic3r/Utils/BBLCloudServiceAgent.cpp +++ b/src/slic3r/Utils/BBLCloudServiceAgent.cpp @@ -2,12 +2,21 @@ #include "BBLNetworkPlugin.hpp" #include +#include "CloudProvider.hpp" #include "Http.hpp" +#include "bambu_networking.hpp" +#include "ICloudServiceAgent.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include +#include +#include "libslic3r/ProjectTask.hpp" #include #include #include +#include +#include +#include using json = nlohmann::json; diff --git a/src/slic3r/Utils/BBLCloudServiceAgent.hpp b/src/slic3r/Utils/BBLCloudServiceAgent.hpp index 9f03f0b839..8ca07377ee 100644 --- a/src/slic3r/Utils/BBLCloudServiceAgent.hpp +++ b/src/slic3r/Utils/BBLCloudServiceAgent.hpp @@ -1,9 +1,14 @@ #ifndef __BBL_CLOUD_SERVICE_AGENT_HPP__ #define __BBL_CLOUD_SERVICE_AGENT_HPP__ +#include "CloudProvider.hpp" #include "ICloudServiceAgent.hpp" +#include "bambu_networking.hpp" +#include +#include "libslic3r/ProjectTask.hpp" #include #include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/BBLNetworkPlugin.cpp b/src/slic3r/Utils/BBLNetworkPlugin.cpp index d795abf354..94ac57aaf0 100644 --- a/src/slic3r/Utils/BBLNetworkPlugin.cpp +++ b/src/slic3r/Utils/BBLNetworkPlugin.cpp @@ -1,11 +1,22 @@ #include "BBLNetworkPlugin.hpp" #include "NetworkAgent.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include "bambu_networking.hpp" +#include +#include +#include #include "libslic3r/Utils.hpp" #include "slic3r/Utils/FileTransferUtils.hpp" diff --git a/src/slic3r/Utils/BBLNetworkPlugin.hpp b/src/slic3r/Utils/BBLNetworkPlugin.hpp index 3788568e37..8541f90bce 100644 --- a/src/slic3r/Utils/BBLNetworkPlugin.hpp +++ b/src/slic3r/Utils/BBLNetworkPlugin.hpp @@ -3,6 +3,7 @@ #include "bambu_networking.hpp" #include "libslic3r/ProjectTask.hpp" +#include "libslic3r/AppConfig.hpp" #include #include #include diff --git a/src/slic3r/Utils/BBLPrinterAgent.cpp b/src/slic3r/Utils/BBLPrinterAgent.cpp index 4e2015d5d7..0e468b642b 100644 --- a/src/slic3r/Utils/BBLPrinterAgent.cpp +++ b/src/slic3r/Utils/BBLPrinterAgent.cpp @@ -3,6 +3,7 @@ #include "IPrinterAgent.hpp" #include "NetworkAgentFactory.hpp" #include "NetworkAgent.hpp" +#include "bambu_networking.hpp" #include "libslic3r/Utils.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/DeviceCore/DevManager.h" @@ -10,9 +11,14 @@ #include #include #include +#include +#include #include #include #include +#include +#include +#include using json = nlohmann::json; #include diff --git a/src/slic3r/Utils/BBLPrinterAgent.hpp b/src/slic3r/Utils/BBLPrinterAgent.hpp index 4398602976..89315219c0 100644 --- a/src/slic3r/Utils/BBLPrinterAgent.hpp +++ b/src/slic3r/Utils/BBLPrinterAgent.hpp @@ -3,9 +3,12 @@ #include "IPrinterAgent.hpp" #include "ICloudServiceAgent.hpp" +#include "bambu_networking.hpp" +#include #include #include #include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/Bonjour.cpp b/src/slic3r/Utils/Bonjour.cpp index 0bff5b526c..e67d3f0240 100644 --- a/src/slic3r/Utils/Bonjour.cpp +++ b/src/slic3r/Utils/Bonjour.cpp @@ -1,8 +1,29 @@ #include "Bonjour.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/src/slic3r/Utils/Bonjour.hpp b/src/slic3r/Utils/Bonjour.hpp index 3ef8f0e1a2..e267575f74 100644 --- a/src/slic3r/Utils/Bonjour.hpp +++ b/src/slic3r/Utils/Bonjour.hpp @@ -1,8 +1,16 @@ #ifndef slic3r_Bonjour_hpp_ #define slic3r_Bonjour_hpp_ +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include #include @@ -13,6 +21,8 @@ #include #include #include +#include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 462f8c2712..82686cb7c7 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -6,6 +6,7 @@ #include "NetworkAgent.hpp" #include "../GUI/Jobs/ProgressIndicator.hpp" #include "../GUI/PartPlate.hpp" +#include "json_diff.hpp" #include "libslic3r/CutUtils.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Utils.hpp" @@ -22,6 +23,41 @@ #include "../GUI/DeviceCore/DevStorage.h" #include "libslic3r/FlushVolCalc.hpp" #include "../GUI/Plater.hpp" +#include +#include "slic3r/GUI/Jobs/Worker.hpp" +#include +#include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Flow.hpp" +#include +#include "libslic3r/ParameterUtils.hpp" +#include +#include +#include +#include "libslic3r/calib.hpp" +#include +#include "libslic3r/CommonDefs.hpp" +#include +#include +#include "libslic3r/Point.hpp" +#include "libslic3r/Geometry.hpp" +#include "libslic3r/Format/bbs_3mf.hpp" +#include "libslic3r/Semver.hpp" +#include +#include "libslic3r/BoundingBox.hpp" +#include +#include "libslic3r/libslic3r.h" +#include "slic3r/GUI/DeviceCore/DevDefs.h" +#include "libslic3r/PrintBase.hpp" +#include "libslic3r/GCode/ThumbnailData.hpp" +#include "libslic3r/ProjectTask.hpp" +#include "slic3r/GUI/3DScene.hpp" +#include "libslic3r/Color.hpp" +#include "slic3r/GUI/GLShader.hpp" +#include "slic3r/GUI/OpenGLManager.hpp" +#include +#include "slic3r/GUI/Jobs/PrintJob.hpp" namespace Slic3r { namespace GUI { diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index 1060a7d3d9..00b9e0020c 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -3,6 +3,11 @@ #include "../GUI/DeviceManager.hpp" #include "../GUI/Jobs/PrintJob.hpp" #include "slic3r/GUI/Jobs/Worker.hpp" +#include "libslic3r/PrintConfig.hpp" +#include +#include +#include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/ColorSpaceConvert.cpp b/src/slic3r/Utils/ColorSpaceConvert.cpp index 176bd29304..63ebc6b7b8 100644 --- a/src/slic3r/Utils/ColorSpaceConvert.cpp +++ b/src/slic3r/Utils/ColorSpaceConvert.cpp @@ -2,6 +2,12 @@ #include #include +#include +#include +#include +#include +#include +#include #include #include diff --git a/src/slic3r/Utils/CrealityHostDiscovery.cpp b/src/slic3r/Utils/CrealityHostDiscovery.cpp index a3256794e2..556309ef30 100644 --- a/src/slic3r/Utils/CrealityHostDiscovery.cpp +++ b/src/slic3r/Utils/CrealityHostDiscovery.cpp @@ -4,9 +4,13 @@ #include "Http.hpp" #include +#include #include #include +#include +#include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/CrealityPrint.cpp b/src/slic3r/Utils/CrealityPrint.cpp index 323db56ff6..20e702ba54 100644 --- a/src/slic3r/Utils/CrealityPrint.cpp +++ b/src/slic3r/Utils/CrealityPrint.cpp @@ -1,6 +1,20 @@ #include "CrealityPrint.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -16,8 +30,11 @@ #include #include +#include +#include #include +#include "PrintHost.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI_App.hpp" @@ -37,6 +54,7 @@ #include #include +#include using json = nlohmann::json; using std::to_string; diff --git a/src/slic3r/Utils/CrealityPrintAgent.cpp b/src/slic3r/Utils/CrealityPrintAgent.cpp index 4730903c59..10f6a51c5d 100644 --- a/src/slic3r/Utils/CrealityPrintAgent.cpp +++ b/src/slic3r/Utils/CrealityPrintAgent.cpp @@ -1,16 +1,23 @@ #include "CrealityPrintAgent.hpp" #include "CrealityPrint.hpp" +#include "MoonrakerPrinterAgent.hpp" +#include "IPrinterAgent.hpp" #include "libslic3r/PresetBundle.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI_App.hpp" #include +#include "libslic3r/Config.hpp" +#include #include #include #include #include #include +#include +#include +#include using json = nlohmann::json; diff --git a/src/slic3r/Utils/CrealityPrintAgent.hpp b/src/slic3r/Utils/CrealityPrintAgent.hpp index cf22d104ec..3b925c5d21 100644 --- a/src/slic3r/Utils/CrealityPrintAgent.hpp +++ b/src/slic3r/Utils/CrealityPrintAgent.hpp @@ -1,6 +1,7 @@ #ifndef __CREALITY_PRINT_AGENT_HPP__ #define __CREALITY_PRINT_AGENT_HPP__ +#include "IPrinterAgent.hpp" #include "MoonrakerPrinterAgent.hpp" #include diff --git a/src/slic3r/Utils/Duet.cpp b/src/slic3r/Utils/Duet.cpp index e26a493131..592e198808 100644 --- a/src/slic3r/Utils/Duet.cpp +++ b/src/slic3r/Utils/Duet.cpp @@ -1,6 +1,7 @@ #include "Duet.hpp" #include +#include #include #include #include @@ -8,14 +9,17 @@ #include #include +#include #include #include #include #include #include +#include #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/ESP3D.cpp b/src/slic3r/Utils/ESP3D.cpp index 5c10862118..0fc28cfcaf 100644 --- a/src/slic3r/Utils/ESP3D.cpp +++ b/src/slic3r/Utils/ESP3D.cpp @@ -12,14 +12,17 @@ #include #include +#include #include #include #include #include #include +#include #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/ElegooLink.cpp b/src/slic3r/Utils/ElegooLink.cpp index 64ff4a9455..fb74a384d1 100644 --- a/src/slic3r/Utils/ElegooLink.cpp +++ b/src/slic3r/Utils/ElegooLink.cpp @@ -1,8 +1,19 @@ #include "ElegooLink.hpp" #include +#include "libslic3r/Utils.hpp" +#include +#include +#include +#include +#include +#include +#include "libslic3r/PrintConfig.hpp" +#include #include #include +#include +#include #include #include #include @@ -20,8 +31,15 @@ #include +#include +#include +#include +#include #include +#include "OctoPrint.hpp" +#include "PrintHost.hpp" +#include "WebSocketClient.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI_App.hpp" diff --git a/src/slic3r/Utils/ElegooLink.hpp b/src/slic3r/Utils/ElegooLink.hpp index a60d2de1b3..9072fd5c78 100644 --- a/src/slic3r/Utils/ElegooLink.hpp +++ b/src/slic3r/Utils/ElegooLink.hpp @@ -1,6 +1,9 @@ #ifndef slic3r_ElegooLink_hpp_ #define slic3r_ElegooLink_hpp_ +#include +#include +#include #include #include #include diff --git a/src/slic3r/Utils/EmbossStyleManager.cpp b/src/slic3r/Utils/EmbossStyleManager.cpp index 5e777e2f29..5f03bd5df3 100644 --- a/src/slic3r/Utils/EmbossStyleManager.cpp +++ b/src/slic3r/Utils/EmbossStyleManager.cpp @@ -1,4 +1,19 @@ #include "EmbossStyleManager.hpp" +#include +#include +#include "libslic3r/TextConfiguration.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/Emboss.hpp" +#include "libslic3r/Point.hpp" +#include +#include +#include +#include +#include "libslic3r/EmbossShape.hpp" #include #include // Imgui texture #include // ImTextCharFromUtf8 @@ -12,6 +27,13 @@ #include #include +#include +#include +#include +#include "slic3r/GUI/GUI_Utils.hpp" +#include "slic3r/GUI/Jobs/Worker.hpp" +#include +#include "slic3r/GUI/OpenGLManager.hpp" using namespace Slic3r; using namespace Slic3r::Emboss; diff --git a/src/slic3r/Utils/EmbossStyleManager.hpp b/src/slic3r/Utils/EmbossStyleManager.hpp index 171f6fb1aa..76be39ac04 100644 --- a/src/slic3r/Utils/EmbossStyleManager.hpp +++ b/src/slic3r/Utils/EmbossStyleManager.hpp @@ -1,11 +1,15 @@ #ifndef slic3r_EmbossStyleManager_hpp_ #define slic3r_EmbossStyleManager_hpp_ +#include +#include +#include "libslic3r/Point.hpp" #include #include #include #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/FileHelp.cpp b/src/slic3r/Utils/FileHelp.cpp index bd67dab46f..12c1d5728f 100644 --- a/src/slic3r/Utils/FileHelp.cpp +++ b/src/slic3r/Utils/FileHelp.cpp @@ -1,6 +1,11 @@ #include "FileHelp.hpp" +#include #include +#include +#include #include +#include +#include namespace Slic3r { namespace Utils { diff --git a/src/slic3r/Utils/FileTransferUtils.cpp b/src/slic3r/Utils/FileTransferUtils.cpp index 822ccdf09d..e56cdc1551 100644 --- a/src/slic3r/Utils/FileTransferUtils.cpp +++ b/src/slic3r/Utils/FileTransferUtils.cpp @@ -1,3 +1,9 @@ +#include +#include +#include +#include +#include +#include #include #include #include "FileTransferUtils.hpp" diff --git a/src/slic3r/Utils/FixModelByCgal.cpp b/src/slic3r/Utils/FixModelByCgal.cpp index 9d973844bb..237a4b9dc6 100644 --- a/src/slic3r/Utils/FixModelByCgal.cpp +++ b/src/slic3r/Utils/FixModelByCgal.cpp @@ -1,14 +1,26 @@ #include "FixModelByCgal.hpp" +#include #include #include #include #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include "libslic3r/Exception.hpp" #include #include +#include "slic3r/GUI/Widgets/ProgressDialog.hpp" +#include #include #include +#include #include +#include #include "libslic3r/MeshBoolean.hpp" #include "libslic3r/Model.hpp" diff --git a/src/slic3r/Utils/FixModelByCgal.hpp b/src/slic3r/Utils/FixModelByCgal.hpp index 61c8c91087..03bec43f47 100644 --- a/src/slic3r/Utils/FixModelByCgal.hpp +++ b/src/slic3r/Utils/FixModelByCgal.hpp @@ -2,6 +2,7 @@ #define slic3r_GUI_Utils_FixModelByCgal_hpp_ #include +#include #include "../GUI/Widgets/ProgressDialog.hpp" namespace Slic3r { diff --git a/src/slic3r/Utils/FlashAir.cpp b/src/slic3r/Utils/FlashAir.cpp index f2d66fd012..557604cffc 100644 --- a/src/slic3r/Utils/FlashAir.cpp +++ b/src/slic3r/Utils/FlashAir.cpp @@ -7,14 +7,17 @@ #include #include +#include #include #include #include #include #include +#include #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/Flashforge.cpp b/src/slic3r/Utils/Flashforge.cpp index a042a889ae..5f639c3e5f 100644 --- a/src/slic3r/Utils/Flashforge.cpp +++ b/src/slic3r/Utils/Flashforge.cpp @@ -1,8 +1,22 @@ #include "Flashforge.hpp" #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include "libslic3r/Config.hpp" +#include +#include #include #include #include @@ -16,11 +30,14 @@ #include #include +#include +#include #include #include #include #include #include +#include #include #include @@ -28,6 +45,7 @@ #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/FontConfigHelp.cpp b/src/slic3r/Utils/FontConfigHelp.cpp index 15beca07ba..f3280ad83d 100644 --- a/src/slic3r/Utils/FontConfigHelp.cpp +++ b/src/slic3r/Utils/FontConfigHelp.cpp @@ -1,4 +1,11 @@ #include "FontConfigHelp.hpp" +#include +#include +#include +#include +#include +#include +#include #ifdef EXIST_FONT_CONFIG_INCLUDE diff --git a/src/slic3r/Utils/FontConfigHelp.hpp b/src/slic3r/Utils/FontConfigHelp.hpp index d2d7738767..ca69b7719e 100644 --- a/src/slic3r/Utils/FontConfigHelp.hpp +++ b/src/slic3r/Utils/FontConfigHelp.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_FontConfigHelp_hpp_ #define slic3r_FontConfigHelp_hpp_ +#include #ifdef __linux__ #define EXIST_FONT_CONFIG_INCLUDE #endif diff --git a/src/slic3r/Utils/HexFile.cpp b/src/slic3r/Utils/HexFile.cpp index a13fcab02b..76e1f998bf 100644 --- a/src/slic3r/Utils/HexFile.cpp +++ b/src/slic3r/Utils/HexFile.cpp @@ -1,9 +1,15 @@ #include "HexFile.hpp" +#include +#include +#include +#include #include #include #include #include +#include +#include namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index 363ca0ecf6..552c0b6a39 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -1,8 +1,23 @@ #include "Http.hpp" +#include "libslic3r_version.h" +#include #include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include "libslic3r/Exception.hpp" +#include +#include #include #include #include @@ -14,6 +29,7 @@ #include #include +#include #ifdef OPENSSL_CERT_OVERRIDE #include diff --git a/src/slic3r/Utils/Http.hpp b/src/slic3r/Utils/Http.hpp index a44a95e605..d8fa012124 100644 --- a/src/slic3r/Utils/Http.hpp +++ b/src/slic3r/Utils/Http.hpp @@ -1,8 +1,10 @@ #ifndef __Http_hpp__ #define __Http_hpp__ +#include #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/InstanceID.cpp b/src/slic3r/Utils/InstanceID.cpp index d4a903e276..d683138e2e 100644 --- a/src/slic3r/Utils/InstanceID.cpp +++ b/src/slic3r/Utils/InstanceID.cpp @@ -1,7 +1,10 @@ #include "InstanceID.hpp" #include +#include +#include #include +#include #include #include #include diff --git a/src/slic3r/Utils/MKS.cpp b/src/slic3r/Utils/MKS.cpp index ced7af9c9f..6a27c7c7ce 100644 --- a/src/slic3r/Utils/MKS.cpp +++ b/src/slic3r/Utils/MKS.cpp @@ -12,14 +12,18 @@ #include #include +#include #include #include #include #include #include +#include #include #include +#include "TCPConsole.hpp" +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/MeshInspect.cpp b/src/slic3r/Utils/MeshInspect.cpp index 0a60358278..dd8e5c88a0 100644 --- a/src/slic3r/Utils/MeshInspect.cpp +++ b/src/slic3r/Utils/MeshInspect.cpp @@ -3,11 +3,17 @@ #include "libslic3r/LayOnFace.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/BoundingBox.hpp" +#include #include #include #include #include +#include +#include +#include namespace Slic3r { namespace MeshInspect { diff --git a/src/slic3r/Utils/MeshInspect.hpp b/src/slic3r/Utils/MeshInspect.hpp index 0f53b41c4a..b908d568ba 100644 --- a/src/slic3r/Utils/MeshInspect.hpp +++ b/src/slic3r/Utils/MeshInspect.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include diff --git a/src/slic3r/Utils/Moonraker.cpp b/src/slic3r/Utils/Moonraker.cpp index 73fdb8486a..f8692a8bb8 100644 --- a/src/slic3r/Utils/Moonraker.cpp +++ b/src/slic3r/Utils/Moonraker.cpp @@ -1,12 +1,17 @@ #include "Moonraker.hpp" +#include #include #include #include #include #include +#include +#include +#include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI.hpp" diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp index 19537f1ccf..1738598b96 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp @@ -1,6 +1,7 @@ #include "MoonrakerPrinterAgent.hpp" #include "Http.hpp" #include "IPrinterAgent.hpp" +#include "bambu_networking.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/GUI_App.hpp" @@ -11,18 +12,44 @@ #include "../GUI/DeviceCore/DevFirmware.h" #include "nlohmann/json.hpp" #include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include #include #include #include #include #include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include namespace { diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.hpp b/src/slic3r/Utils/MoonrakerPrinterAgent.hpp index b468172c06..431afc0083 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.hpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.hpp @@ -3,7 +3,11 @@ #include "IPrinterAgent.hpp" #include "ICloudServiceAgent.hpp" +#include "bambu_networking.hpp" +#include +#include +#include #include #include #include @@ -11,6 +15,7 @@ #include #include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 1f7705658e..4e5154fd42 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -1,11 +1,24 @@ #include "NetworkAgent.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/ProjectTask.hpp" #include #include #include +#include +#include +#include +#include "CloudProvider.hpp" +#include "ICloudServiceAgent.hpp" +#include "ICameraSignalingChannel.hpp" #include "IPrinterAgent.hpp" #include "BBLNetworkPlugin.hpp" +#include "bambu_networking.hpp" namespace Slic3r { diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index f93178db8b..c7813f2bb7 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -1,12 +1,15 @@ #ifndef __NETWORK_Agent_HPP__ #define __NETWORK_Agent_HPP__ +#include "CloudProvider.hpp" +#include "ICameraSignalingChannel.hpp" #include "bambu_networking.hpp" #include "libslic3r/ProjectTask.hpp" #include "ICloudServiceAgent.hpp" #include "IPrinterAgent.hpp" +#include #include #include #include diff --git a/src/slic3r/Utils/NetworkAgentFactory.cpp b/src/slic3r/Utils/NetworkAgentFactory.cpp index e2e58b7510..3d87a3eec9 100644 --- a/src/slic3r/Utils/NetworkAgentFactory.cpp +++ b/src/slic3r/Utils/NetworkAgentFactory.cpp @@ -1,4 +1,5 @@ #include "NetworkAgentFactory.hpp" +#include "CloudProvider.hpp" #include "IPrinterAgent.hpp" #include "ICloudServiceAgent.hpp" #include "BBLPrinterAgent.hpp" @@ -13,13 +14,18 @@ #include #include #include +#include #include +#include #include #include #include #include #include +#include +#include #include +#include namespace Slic3r { namespace { diff --git a/src/slic3r/Utils/NetworkAgentFactory.hpp b/src/slic3r/Utils/NetworkAgentFactory.hpp index a055b19493..0053a42466 100644 --- a/src/slic3r/Utils/NetworkAgentFactory.hpp +++ b/src/slic3r/Utils/NetworkAgentFactory.hpp @@ -1,6 +1,7 @@ #ifndef __NETWORK_AGENT_FACTORY_HPP__ #define __NETWORK_AGENT_FACTORY_HPP__ +#include "CloudProvider.hpp" #include "ICloudServiceAgent.hpp" #include "IPrinterAgent.hpp" #include "NetworkAgent.hpp" @@ -11,6 +12,7 @@ #include #include #include +#include #include namespace Slic3r { diff --git a/src/slic3r/Utils/Obico.cpp b/src/slic3r/Utils/Obico.cpp index 92d748b496..9dabd91467 100644 --- a/src/slic3r/Utils/Obico.cpp +++ b/src/slic3r/Utils/Obico.cpp @@ -1,6 +1,8 @@ #include "Obico.hpp" #include +#include "libslic3r/Exception.hpp" +#include #include #include #include @@ -14,8 +16,12 @@ #include #include +#include +#include #include +#include +#include "PrintHost.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI_App.hpp" diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index fa57b7b527..a39b300d79 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -1,6 +1,10 @@ #include "OctoPrint.hpp" #include +#include +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Exception.hpp" #include #include #include @@ -14,8 +18,14 @@ #include +#include +#include +#include +#include #include +#include +#include "PrintHost.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI_App.hpp" diff --git a/src/slic3r/Utils/OctoPrint.hpp b/src/slic3r/Utils/OctoPrint.hpp index ad7e8c411e..b2dbe11cff 100644 --- a/src/slic3r/Utils/OctoPrint.hpp +++ b/src/slic3r/Utils/OctoPrint.hpp @@ -1,6 +1,7 @@ #ifndef slic3r_OctoPrint_hpp_ #define slic3r_OctoPrint_hpp_ +#include #include #include #include diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 1618bff548..2cebdb8ab9 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -1,21 +1,37 @@ #include "OrcaCloudServiceAgent.hpp" +#include "CloudProvider.hpp" #include "Http.hpp" +#include "bambu_networking.hpp" +#include "ICloudServiceAgent.hpp" #include "libslic3r/Utils.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r/AppConfig.hpp" +#include #include +#include +#include #include #include +#include #include +#include #include #include #include +#include +#include #include +#include #include +#include #include +#include +#include "libslic3r/Preset.hpp" +#include "libslic3r/ProjectTask.hpp" #include +#include #include #include #include @@ -32,7 +48,11 @@ #include #include +#include +#include +#include #include +#include #include #include #include diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp index 7e060da84a..458aa55fcd 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp @@ -1,9 +1,12 @@ #ifndef __ORCA_CLOUD_SERVICE_AGENT_HPP__ #define __ORCA_CLOUD_SERVICE_AGENT_HPP__ +#include "CloudProvider.hpp" #include "ICameraSignalingChannel.hpp" #include "ICloudServiceAgent.hpp" +#include "bambu_networking.hpp" #include +#include "libslic3r/ProjectTask.hpp" #include #include #include @@ -13,6 +16,7 @@ #include #include #include +#include #include #include diff --git a/src/slic3r/Utils/OrcaPrinterAgent.cpp b/src/slic3r/Utils/OrcaPrinterAgent.cpp index 987cc0efdb..cb8b38acc8 100644 --- a/src/slic3r/Utils/OrcaPrinterAgent.cpp +++ b/src/slic3r/Utils/OrcaPrinterAgent.cpp @@ -1,6 +1,11 @@ #include "OrcaPrinterAgent.hpp" #include "IPrinterAgent.hpp" #include "NetworkAgentFactory.hpp" +#include +#include +#include +#include +#include "bambu_networking.hpp" namespace Slic3r { diff --git a/src/slic3r/Utils/OrcaPrinterAgent.hpp b/src/slic3r/Utils/OrcaPrinterAgent.hpp index 7d2a75fe0f..a56b2c8dda 100644 --- a/src/slic3r/Utils/OrcaPrinterAgent.hpp +++ b/src/slic3r/Utils/OrcaPrinterAgent.hpp @@ -3,6 +3,7 @@ #include "IPrinterAgent.hpp" #include "ICloudServiceAgent.hpp" +#include "bambu_networking.hpp" #include #include #include diff --git a/src/slic3r/Utils/PaintCLI.cpp b/src/slic3r/Utils/PaintCLI.cpp index d99dc0b450..2bf2b9728a 100644 --- a/src/slic3r/Utils/PaintCLI.cpp +++ b/src/slic3r/Utils/PaintCLI.cpp @@ -5,9 +5,13 @@ #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/TriangleSelector.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/BoundingBox.hpp" +#include #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 5bbe779970..1df0edf8fa 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1,12 +1,23 @@ #include "PresetUpdater.hpp" #include +#include +#include +#include #include +#include #include #include #include +#include #include #include +#include "libslic3r/Exception.hpp" +#include +#include +#include "libslic3r/AppConfig.hpp" +#include "libslic3r/Preset.hpp" +#include "libslic3r/Config.hpp" #include #include #include @@ -24,8 +35,10 @@ #include #include +#include #include +#include "json_diff.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/format.hpp" #include "libslic3r/Utils.hpp" diff --git a/src/slic3r/Utils/PresetUpdater.hpp b/src/slic3r/Utils/PresetUpdater.hpp index ccb0902fd5..22571e52d9 100644 --- a/src/slic3r/Utils/PresetUpdater.hpp +++ b/src/slic3r/Utils/PresetUpdater.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include diff --git a/src/slic3r/Utils/PrintHost.cpp b/src/slic3r/Utils/PrintHost.cpp index 2eeb78a975..2b3c4d181d 100644 --- a/src/slic3r/Utils/PrintHost.cpp +++ b/src/slic3r/Utils/PrintHost.cpp @@ -1,5 +1,17 @@ #include "PrintHost.hpp" +#include +#include "libslic3r/Config.hpp" +#include +#include +#include "slic3r/GUI/Gizmos/GLGizmoBase.hpp" +#include +#include +#include +#include +#include +#include "libslic3r/LifecycleEvents.hpp" +#include "slic3r/GUI/GUI_App.hpp" #include #include #include @@ -11,6 +23,7 @@ #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/PrintHost.hpp b/src/slic3r/Utils/PrintHost.hpp index cf197ede07..771eb7732a 100644 --- a/src/slic3r/Utils/PrintHost.hpp +++ b/src/slic3r/Utils/PrintHost.hpp @@ -1,12 +1,14 @@ #ifndef slic3r_PrintHost_hpp_ #define slic3r_PrintHost_hpp_ +#include #include #include #include #include #include +#include #include #include diff --git a/src/slic3r/Utils/Process.cpp b/src/slic3r/Utils/Process.cpp index 96da521114..150e838489 100644 --- a/src/slic3r/Utils/Process.cpp +++ b/src/slic3r/Utils/Process.cpp @@ -1,5 +1,6 @@ #include "Process.hpp" +#include #include #include "../GUI/GUI.hpp" @@ -13,6 +14,11 @@ #include #include +#include +#include +#include +#include +#include // For starting another OrcaSlicer instance on OSX. // Fails to compile on Windows on the build server. diff --git a/src/slic3r/Utils/QidiPrinterAgent.cpp b/src/slic3r/Utils/QidiPrinterAgent.cpp index 4a90ec3771..06499e1092 100644 --- a/src/slic3r/Utils/QidiPrinterAgent.cpp +++ b/src/slic3r/Utils/QidiPrinterAgent.cpp @@ -1,13 +1,22 @@ #include "QidiPrinterAgent.hpp" #include "Http.hpp" +#include "MoonrakerPrinterAgent.hpp" +#include "IPrinterAgent.hpp" #include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "nlohmann/json.hpp" #include +#include +#include #include #include +#include "libslic3r/Preset.hpp" +#include #include +#include +#include +#include using json = nlohmann::json; diff --git a/src/slic3r/Utils/QidiPrinterAgent.hpp b/src/slic3r/Utils/QidiPrinterAgent.hpp index ce7b4cda0d..5f4cfc3a7e 100644 --- a/src/slic3r/Utils/QidiPrinterAgent.hpp +++ b/src/slic3r/Utils/QidiPrinterAgent.hpp @@ -1,6 +1,7 @@ #ifndef __QIDI_PRINTER_AGENT_HPP__ #define __QIDI_PRINTER_AGENT_HPP__ +#include "IPrinterAgent.hpp" #include "MoonrakerPrinterAgent.hpp" #include diff --git a/src/slic3r/Utils/RaycastManager.cpp b/src/slic3r/Utils/RaycastManager.cpp index 62c7a922d7..dba5ae1a54 100644 --- a/src/slic3r/Utils/RaycastManager.cpp +++ b/src/slic3r/Utils/RaycastManager.cpp @@ -1,5 +1,17 @@ #include "RaycastManager.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/AABBMesh.hpp" +#include +#include "libslic3r/Point.hpp" +#include +#include +#include +#include +#include +#include "slic3r/GUI/SceneRaycaster.hpp" +#include "slic3r/GUI/3DScene.hpp" #include +#include #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/Camera.hpp" diff --git a/src/slic3r/Utils/RaycastManager.hpp b/src/slic3r/Utils/RaycastManager.hpp index 4e143ba5dd..0c62ecaacc 100644 --- a/src/slic3r/Utils/RaycastManager.hpp +++ b/src/slic3r/Utils/RaycastManager.hpp @@ -1,8 +1,13 @@ #ifndef slic3r_RaycastManager_hpp_ #define slic3r_RaycastManager_hpp_ +#include +#include +#include #include // unique_ptr #include +#include +#include #include "libslic3r/AABBMesh.hpp" // Structure to cast rays #include "libslic3r/Point.hpp" // Transform3d #include "libslic3r/ObjectID.hpp" diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index a524f29b71..ae269cac4f 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -1,6 +1,9 @@ #include "Repetier.hpp" #include +#include +#include "libslic3r/Exception.hpp" +#include #include #include #include @@ -10,9 +13,13 @@ #include #include +#include +#include #include +#include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/GUI.hpp" diff --git a/src/slic3r/Utils/Serial.cpp b/src/slic3r/Utils/Serial.cpp index f8c03ceb26..2b64330826 100644 --- a/src/slic3r/Utils/Serial.cpp +++ b/src/slic3r/Utils/Serial.cpp @@ -3,7 +3,19 @@ #include "libslic3r/Exception.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include diff --git a/src/slic3r/Utils/Serial.hpp b/src/slic3r/Utils/Serial.hpp index 8bad75b315..c5c4d19fc5 100644 --- a/src/slic3r/Utils/Serial.hpp +++ b/src/slic3r/Utils/Serial.hpp @@ -1,6 +1,9 @@ #ifndef slic3r_GUI_Utils_Serial_hpp_ #define slic3r_GUI_Utils_Serial_hpp_ +#include +#include +#include #include #include #include diff --git a/src/slic3r/Utils/SimplyPrint.cpp b/src/slic3r/Utils/SimplyPrint.cpp index a3edfd98ee..5c68878986 100644 --- a/src/slic3r/Utils/SimplyPrint.cpp +++ b/src/slic3r/Utils/SimplyPrint.cpp @@ -1,10 +1,36 @@ #include "SimplyPrint.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include +#include "slic3r/GUI/Jobs/OAuthJob.hpp" +#include +#include +#include +#include "PrintHost.hpp" #include "nlohmann/json.hpp" #include "libslic3r/Utils.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/SimplyPrint.hpp b/src/slic3r/Utils/SimplyPrint.hpp index 3804324724..83ff64378e 100644 --- a/src/slic3r/Utils/SimplyPrint.hpp +++ b/src/slic3r/Utils/SimplyPrint.hpp @@ -3,6 +3,11 @@ #include "PrintHost.hpp" #include "slic3r/GUI/Jobs/OAuthJob.hpp" +#include +#include +#include +#include +#include namespace Slic3r { diff --git a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp index 6039eb260f..a237d1b2b1 100644 --- a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp +++ b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp @@ -1,10 +1,17 @@ #include "SnapmakerPrinterAgent.hpp" #include "Http.hpp" +#include "MoonrakerPrinterAgent.hpp" +#include "IPrinterAgent.hpp" #include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "nlohmann/json.hpp" #include +#include +#include +#include "libslic3r/Preset.hpp" +#include +#include using json = nlohmann::json; diff --git a/src/slic3r/Utils/SnapmakerPrinterAgent.hpp b/src/slic3r/Utils/SnapmakerPrinterAgent.hpp index d49fe21239..39b642081b 100644 --- a/src/slic3r/Utils/SnapmakerPrinterAgent.hpp +++ b/src/slic3r/Utils/SnapmakerPrinterAgent.hpp @@ -1,5 +1,6 @@ #pragma once +#include "IPrinterAgent.hpp" #include "MoonrakerPrinterAgent.hpp" #include diff --git a/src/slic3r/Utils/TCPConsole.cpp b/src/slic3r/Utils/TCPConsole.cpp index 25802e3908..78d4624abc 100644 --- a/src/slic3r/Utils/TCPConsole.cpp +++ b/src/slic3r/Utils/TCPConsole.cpp @@ -1,14 +1,21 @@ +#include +#include #include +#include #include #include #include #include #include #include +#include #include #include #include +#include +#include +#include #include #include #include diff --git a/src/slic3r/Utils/TCPConsole.hpp b/src/slic3r/Utils/TCPConsole.hpp index e94e130a9e..4ec766faa4 100644 --- a/src/slic3r/Utils/TCPConsole.hpp +++ b/src/slic3r/Utils/TCPConsole.hpp @@ -1,6 +1,9 @@ #ifndef slic3r_Utils_TCPConsole_hpp_ #define slic3r_Utils_TCPConsole_hpp_ +#include +#include +#include #include #include #include @@ -8,6 +11,7 @@ #include #include #include "SerialMessage.hpp" +#include "SerialMessageType.hpp" namespace Slic3r { namespace Utils { diff --git a/src/slic3r/Utils/UltiMaker.cpp b/src/slic3r/Utils/UltiMaker.cpp index badb69d209..fefd8ec786 100644 --- a/src/slic3r/Utils/UltiMaker.cpp +++ b/src/slic3r/Utils/UltiMaker.cpp @@ -1,6 +1,10 @@ #include "UltiMaker.hpp" #include +#include +#include +#include +#include #include #include #include @@ -8,14 +12,20 @@ #include #include +#include +#include +#include +#include #include #include #include #include #include +#include #include #include +#include "PrintHost.hpp" #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/I18N.hpp" diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index 8e7bd703c3..2cdefefbb4 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -1,9 +1,18 @@ #include "UndoRedo.hpp" #include +#include +#include +#include +#include #include #include +#include +#include "libslic3r/Exception.hpp" #include +#include +#include +#include #include #include #include @@ -14,6 +23,8 @@ #include #include #include +#include +#include #define CEREAL_FUTURE_EXPERIMENTAL #include diff --git a/src/slic3r/Utils/UndoRedo.hpp b/src/slic3r/Utils/UndoRedo.hpp index 9042d60a4b..4a5aaca9c1 100644 --- a/src/slic3r/Utils/UndoRedo.hpp +++ b/src/slic3r/Utils/UndoRedo.hpp @@ -2,8 +2,11 @@ #define slic3r_Utils_UndoRedo_hpp_ #include +#include +#include #include #include +#include #include #include diff --git a/src/slic3r/Utils/WebSocketClient.hpp b/src/slic3r/Utils/WebSocketClient.hpp index 2660231794..f85c3e15fa 100644 --- a/src/slic3r/Utils/WebSocketClient.hpp +++ b/src/slic3r/Utils/WebSocketClient.hpp @@ -1,9 +1,18 @@ #ifndef _WEB_SOCKET_CLIENT_HPP_ #define _WEB_SOCKET_CLIENT_HPP_ +#include +#include #include +#include +#include +#include #include #include #include +#include +#include +#include +#include #include #include #include diff --git a/src/slic3r/Utils/WxFontUtils.cpp b/src/slic3r/Utils/WxFontUtils.cpp index a536e65912..4d28fa54c0 100644 --- a/src/slic3r/Utils/WxFontUtils.cpp +++ b/src/slic3r/Utils/WxFontUtils.cpp @@ -1,6 +1,15 @@ #include "WxFontUtils.hpp" #include +#include #include +#include +#include "libslic3r/Emboss.hpp" +#include +#include "libslic3r/TextConfiguration.hpp" +#include +#include +#include +#include #include "libslic3r/Utils.hpp" #if defined(__APPLE__) diff --git a/src/slic3r/Utils/WxFontUtils.hpp b/src/slic3r/Utils/WxFontUtils.hpp index 51c8605ff0..7a9448fbe9 100644 --- a/src/slic3r/Utils/WxFontUtils.hpp +++ b/src/slic3r/Utils/WxFontUtils.hpp @@ -1,8 +1,10 @@ #ifndef slic3r_WxFontUtils_hpp_ #define slic3r_WxFontUtils_hpp_ +#include "libslic3r/TextConfiguration.hpp" #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index c514daffff..30c33c6c73 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -1,6 +1,7 @@ #ifndef __BAMBU_NETWORKING_HPP__ #define __BAMBU_NETWORKING_HPP__ +#include #include #include #include diff --git a/src/slic3r/Utils/minilzo_extension.cpp b/src/slic3r/Utils/minilzo_extension.cpp index 07031cd1af..eca2ee0a7f 100644 --- a/src/slic3r/Utils/minilzo_extension.cpp +++ b/src/slic3r/Utils/minilzo_extension.cpp @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp b/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp index df1b495bff..a35aceafeb 100644 --- a/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp +++ b/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp @@ -8,8 +8,16 @@ #include "slic3r/GUI/Widgets/Label.hpp" #include "slic3r/GUI/Widgets/LabeledStaticBox.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include +#include wxString CustomWidgetsPlugin::GetName() const { diff --git a/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp b/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp index 083ed8a74c..1430677a7d 100644 --- a/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp +++ b/src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp @@ -1,6 +1,10 @@ #pragma once +#include #include +#include +#include +#include class CustomWidgetsPlugin : public wxInspector::wxInspectorPlugin { diff --git a/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp b/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp index f52a5d4313..ee81e3e7fa 100644 --- a/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp +++ b/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp @@ -2,8 +2,15 @@ #include "slic3r/GUI/GUI_Utils.hpp" // DPIFrame, DPIDialog, DPIAware

+#include +#include +#include +#include +#include +#include #include #include +#include namespace { diff --git a/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp b/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp index 5d78342967..d1df7fe4aa 100644 --- a/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp +++ b/src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp @@ -1,6 +1,10 @@ #pragma once +#include #include +#include +#include +#include class DPIAwarePlugin : public wxInspector::wxInspectorPlugin { diff --git a/src/slic3r/plugin/CloudPluginService.cpp b/src/slic3r/plugin/CloudPluginService.cpp index 6b72da3293..b6af332dbc 100644 --- a/src/slic3r/plugin/CloudPluginService.cpp +++ b/src/slic3r/plugin/CloudPluginService.cpp @@ -4,9 +4,13 @@ #include "slic3r/Utils/Http.hpp" #include +#include +#include #include #include #include +#include +#include #include #include #include diff --git a/src/slic3r/plugin/PluginAuditManager.cpp b/src/slic3r/plugin/PluginAuditManager.cpp index 4d69a4f761..bd75ad2459 100644 --- a/src/slic3r/plugin/PluginAuditManager.cpp +++ b/src/slic3r/plugin/PluginAuditManager.cpp @@ -3,24 +3,33 @@ #include "../Utils/OrcaCloudServiceAgent.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/libslic3r.h" // GCODEVIEWER_APP_KEY, and SLIC3R_APP_KEY via libslic3r_version.h +#include "libslic3r_version.h" #include +#include +#include #include #include #include #include #include +#include +#include #include #include #include #include +#include #include #include #include #include +#include #include #include +#include +#include namespace Slic3r { diff --git a/src/slic3r/plugin/PluginAuditManager.hpp b/src/slic3r/plugin/PluginAuditManager.hpp index 153f9d6107..76ac5cdd18 100644 --- a/src/slic3r/plugin/PluginAuditManager.hpp +++ b/src/slic3r/plugin/PluginAuditManager.hpp @@ -2,6 +2,7 @@ #define slic3r_PluginAuditManager_hpp_ // Via pybind11 so this file requests the same python3xx.lib as everything else. +#include #include #include #include diff --git a/src/slic3r/plugin/PluginBindingUtils.hpp b/src/slic3r/plugin/PluginBindingUtils.hpp index 52050ed561..7572777c43 100644 --- a/src/slic3r/plugin/PluginBindingUtils.hpp +++ b/src/slic3r/plugin/PluginBindingUtils.hpp @@ -1,8 +1,11 @@ #pragma once +#include "libslic3r/libslic3r.h" #include #include #include "libslic3r/Config.hpp" // ConfigBase #include "libslic3r/Point.hpp" // Point/Point3 packing asserts, Vec3d, Transform3d +#include +#include #include #include #include diff --git a/src/slic3r/plugin/PluginConfig.cpp b/src/slic3r/plugin/PluginConfig.cpp index 14d24fabe1..685d295206 100644 --- a/src/slic3r/plugin/PluginConfig.cpp +++ b/src/slic3r/plugin/PluginConfig.cpp @@ -1,24 +1,38 @@ #include "PluginConfig.hpp" #include +#include #include #include #include +#include #include +#include "libslic3r/Preset.hpp" #include #include +#include +#include +#include +#include "libslic3r/Utils.hpp" +#include "libslic3r/libslic3r.h" #include #include #include #include +#include "slic3r/plugin/PluginDescriptor.hpp" #include #include #include #include #include +#include +#include +#include +#include #include +#include #include namespace Slic3r { diff --git a/src/slic3r/plugin/PluginConfig.hpp b/src/slic3r/plugin/PluginConfig.hpp index 523173af68..8f39b4a40e 100644 --- a/src/slic3r/plugin/PluginConfig.hpp +++ b/src/slic3r/plugin/PluginConfig.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include diff --git a/src/slic3r/plugin/PluginDescriptor.hpp b/src/slic3r/plugin/PluginDescriptor.hpp index b0d2d214c3..9e55a89e59 100644 --- a/src/slic3r/plugin/PluginDescriptor.hpp +++ b/src/slic3r/plugin/PluginDescriptor.hpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include diff --git a/src/slic3r/plugin/PluginFsUtils.cpp b/src/slic3r/plugin/PluginFsUtils.cpp index 4d6aabe3d3..e3b1bc3bee 100644 --- a/src/slic3r/plugin/PluginFsUtils.cpp +++ b/src/slic3r/plugin/PluginFsUtils.cpp @@ -4,16 +4,24 @@ #include "libslic3r/miniz_extension.hpp" #include +#include +#include +#include +#include #include #include #include "PluginAuditManager.hpp" #include "PythonInterpreter.hpp" +#include +#include #include #include #include +#include +#include "slic3r/plugin/PluginDescriptor.hpp" #include #include #include diff --git a/src/slic3r/plugin/PluginFsUtils.hpp b/src/slic3r/plugin/PluginFsUtils.hpp index 5b62e9f7f1..80174a68bd 100644 --- a/src/slic3r/plugin/PluginFsUtils.hpp +++ b/src/slic3r/plugin/PluginFsUtils.hpp @@ -1,6 +1,7 @@ #pragma once #include "PluginDescriptor.hpp" +#include #include #include @@ -9,6 +10,7 @@ #include #include +#include #include #define PLUGIN_SUBSCRIBED_DIR "_subscribed" diff --git a/src/slic3r/plugin/PluginHooks.cpp b/src/slic3r/plugin/PluginHooks.cpp index 2d84df5fdb..36c7f9292d 100644 --- a/src/slic3r/plugin/PluginHooks.cpp +++ b/src/slic3r/plugin/PluginHooks.cpp @@ -13,7 +13,10 @@ #include +#include +#include #include +#include "slic3r/plugin/PluginDescriptor.hpp" #include #include diff --git a/src/slic3r/plugin/PluginLoader.cpp b/src/slic3r/plugin/PluginLoader.cpp index 0c45564f1b..9da76b9109 100644 --- a/src/slic3r/plugin/PluginLoader.cpp +++ b/src/slic3r/plugin/PluginLoader.cpp @@ -11,9 +11,26 @@ #include "libslic3r/Utils.hpp" #include +#include +#include #include +#include +#include +#include +#include #include #include +#include "slic3r/plugin/PluginDescriptor.hpp" +#include +#include +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include +#include +#include +#include +#include +#include #ifdef _WIN32 #include #endif diff --git a/src/slic3r/plugin/PluginManager.cpp b/src/slic3r/plugin/PluginManager.cpp index 022f85eb1f..c064622b17 100644 --- a/src/slic3r/plugin/PluginManager.cpp +++ b/src/slic3r/plugin/PluginManager.cpp @@ -1,8 +1,14 @@ #include "PluginManager.hpp" +#include +#include +#include #include +#include +#include "libslic3r/LifecycleEvents.hpp" #include #include +#include #include #include "PluginFsUtils.hpp" @@ -21,14 +27,19 @@ #include #include #include +#include "slic3r/plugin/CloudPluginService.hpp" #include #include #include #include #include +#include #include +#include #include #include +#include +#include namespace Slic3r { namespace { diff --git a/src/slic3r/plugin/PluginManager.hpp b/src/slic3r/plugin/PluginManager.hpp index 891f787bf2..bd7a495a67 100644 --- a/src/slic3r/plugin/PluginManager.hpp +++ b/src/slic3r/plugin/PluginManager.hpp @@ -1,9 +1,11 @@ #ifndef slic3r_PluginManager_hpp_ #define slic3r_PluginManager_hpp_ +#include #include #include +#include #include #include #include @@ -13,9 +15,11 @@ #include #include #include +#include "slic3r/plugin/PluginFsUtils.hpp" #include #include #include +#include #include #include diff --git a/src/slic3r/plugin/PluginResolver.cpp b/src/slic3r/plugin/PluginResolver.cpp index 6e72929c63..6b8ca9a417 100644 --- a/src/slic3r/plugin/PluginResolver.cpp +++ b/src/slic3r/plugin/PluginResolver.cpp @@ -11,9 +11,15 @@ #include "../GUI/NotificationManager.hpp" #include +#include #include +#include "libslic3r/Preset.hpp" #include +#include #include +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include #include #include diff --git a/src/slic3r/plugin/PyPluginTrampoline.hpp b/src/slic3r/plugin/PyPluginTrampoline.hpp index 4c77f1ba9c..915c578353 100644 --- a/src/slic3r/plugin/PyPluginTrampoline.hpp +++ b/src/slic3r/plugin/PyPluginTrampoline.hpp @@ -1,17 +1,22 @@ #ifndef slic3r_PyPluginTrampoline_hpp_ #define slic3r_PyPluginTrampoline_hpp_ +#include "libslic3r/LifecycleEvents.hpp" #include #include #include #include +#include #include "PythonPluginInterface.hpp" #include "PythonInterpreter.hpp" #include "PluginFsUtils.hpp" #include "PluginAuditManager.hpp" +#include +#include +#include // Trampoline variants of pybind11's override macros. Every C++->Python plugin call crosses a // trampoline method, so this single boundary is where we (1) log the full Python traceback and diff --git a/src/slic3r/plugin/PythonInterpreter.cpp b/src/slic3r/plugin/PythonInterpreter.cpp index d82bf52a13..6d1afc1ba1 100644 --- a/src/slic3r/plugin/PythonInterpreter.cpp +++ b/src/slic3r/plugin/PythonInterpreter.cpp @@ -2,9 +2,15 @@ #include "GeneratedConfig.hpp" #include "libslic3r/Utils.hpp" #include "PluginAuditManager.hpp" +#include +#include #include +#include +#include +#include #include #include "PluginFsUtils.hpp" +#include #include @@ -16,7 +22,10 @@ #include #include #include +#include #include +#include +#include #include namespace Slic3r { diff --git a/src/slic3r/plugin/PythonInterpreter.hpp b/src/slic3r/plugin/PythonInterpreter.hpp index e15aa91598..2c499283cc 100644 --- a/src/slic3r/plugin/PythonInterpreter.hpp +++ b/src/slic3r/plugin/PythonInterpreter.hpp @@ -2,6 +2,7 @@ #define slic3r_PythonInterpreter_hpp_ // Via pybind11 so this file requests the same python3xx.lib as everything else. +#include #include #include #include diff --git a/src/slic3r/plugin/PythonPluginBridge.cpp b/src/slic3r/plugin/PythonPluginBridge.cpp index a88695005c..6cf747810f 100644 --- a/src/slic3r/plugin/PythonPluginBridge.cpp +++ b/src/slic3r/plugin/PythonPluginBridge.cpp @@ -3,15 +3,19 @@ #include #include #include +#include "libslic3r/LifecycleEvents.hpp" #include #include #include +#include "slic3r/plugin/PythonPluginInterface.hpp" #include #include #include #include #include +#include +#include #include "PythonInterpreter.hpp" #include "PluginFsUtils.hpp" @@ -23,6 +27,8 @@ #include "pluginTypes/pages/PagesPluginCapability.hpp" #include "pluginTypes/script/ScriptPluginCapability.hpp" #include "pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp" +#include +#include namespace py = pybind11; diff --git a/src/slic3r/plugin/host/PluginHost.cpp b/src/slic3r/plugin/host/PluginHost.cpp index 2830d6f276..ae56bc575c 100644 --- a/src/slic3r/plugin/host/PluginHost.cpp +++ b/src/slic3r/plugin/host/PluginHost.cpp @@ -1,10 +1,12 @@ #include "PluginHost.hpp" #include "PluginHostBindings.hpp" #include "PluginHostUi.hpp" +#include #include #include #include +#include namespace Slic3r { diff --git a/src/slic3r/plugin/host/PluginHostApp.cpp b/src/slic3r/plugin/host/PluginHostApp.cpp index 75acd4cc7b..668e99c7ff 100644 --- a/src/slic3r/plugin/host/PluginHostApp.cpp +++ b/src/slic3r/plugin/host/PluginHostApp.cpp @@ -1,4 +1,5 @@ #include "PluginHostBindings.hpp" +#include #include #include @@ -8,6 +9,8 @@ #include #include +#include +#include namespace py = pybind11; diff --git a/src/slic3r/plugin/host/PluginHostGeometry.cpp b/src/slic3r/plugin/host/PluginHostGeometry.cpp index 646dffb5d4..14db01cc4c 100644 --- a/src/slic3r/plugin/host/PluginHostGeometry.cpp +++ b/src/slic3r/plugin/host/PluginHostGeometry.cpp @@ -1,10 +1,18 @@ #include "PluginHostBindings.hpp" +#include +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" +#include #include #include // offset/offset_ex/union_ex/diff_ex/intersection_ex #include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" #include #include diff --git a/src/slic3r/plugin/host/PluginHostMesh.cpp b/src/slic3r/plugin/host/PluginHostMesh.cpp index 28da5c3afc..8799278bd5 100644 --- a/src/slic3r/plugin/host/PluginHostMesh.cpp +++ b/src/slic3r/plugin/host/PluginHostMesh.cpp @@ -1,11 +1,18 @@ #include "PluginHostBindings.hpp" #include "PluginHostMesh.hpp" +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Point.hpp" +#include #include #include #include +#include #include namespace py = pybind11; diff --git a/src/slic3r/plugin/host/PluginHostModel.cpp b/src/slic3r/plugin/host/PluginHostModel.cpp index 3da1c2ae6f..357e37808d 100644 --- a/src/slic3r/plugin/host/PluginHostModel.cpp +++ b/src/slic3r/plugin/host/PluginHostModel.cpp @@ -1,7 +1,11 @@ #include "PluginHostBindings.hpp" #include "PluginHostMesh.hpp" +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" +#include #include #include diff --git a/src/slic3r/plugin/host/PluginHostPresets.cpp b/src/slic3r/plugin/host/PluginHostPresets.cpp index fffe9e64cf..6e10e3f282 100644 --- a/src/slic3r/plugin/host/PluginHostPresets.cpp +++ b/src/slic3r/plugin/host/PluginHostPresets.cpp @@ -1,9 +1,14 @@ #include "PluginHostBindings.hpp" +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" +#include #include #include +#include #include #include diff --git a/src/slic3r/plugin/host/PluginHostSlicing.cpp b/src/slic3r/plugin/host/PluginHostSlicing.cpp index 30e7b45138..fb2c02eaac 100644 --- a/src/slic3r/plugin/host/PluginHostSlicing.cpp +++ b/src/slic3r/plugin/host/PluginHostSlicing.cpp @@ -1,4 +1,7 @@ #include "PluginHostBindings.hpp" +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" #include "libslic3r/BoundingBox.hpp" @@ -10,8 +13,12 @@ #include "libslic3r/Layer.hpp" // LayerRegion, Layer, SupportLayer #include "libslic3r/Print.hpp" // PrintRegion, PrintObject, Print +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Model.hpp" #include #include +#include #include namespace py = pybind11; diff --git a/src/slic3r/plugin/host/PluginHostUi.cpp b/src/slic3r/plugin/host/PluginHostUi.cpp index ed501f0249..54de1df0d6 100644 --- a/src/slic3r/plugin/host/PluginHostUi.cpp +++ b/src/slic3r/plugin/host/PluginHostUi.cpp @@ -1,9 +1,14 @@ #include "PluginHostUi.hpp" +#include +#include +#include #include "slic3r/plugin/PluginAuditManager.hpp" #include "slic3r/plugin/PythonInterpreter.hpp" // PythonGILState #include "slic3r/plugin/PluginFsUtils.hpp" // json_to_py / py_to_json +#include +#include #include #include #include @@ -18,8 +23,14 @@ #include +#include +#include #include #include +#include +#include +#include +#include #include #include diff --git a/src/slic3r/plugin/host/PluginPages.cpp b/src/slic3r/plugin/host/PluginPages.cpp index eb8b3332b9..36b4cd10b4 100644 --- a/src/slic3r/plugin/host/PluginPages.cpp +++ b/src/slic3r/plugin/host/PluginPages.cpp @@ -1,6 +1,7 @@ #include "PluginPages.hpp" #include "libslic3r/AppConfig.hpp" +#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/Notebook.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/Widgets/Button.hpp" @@ -9,16 +10,30 @@ #include +#include #include #include +#include +#include +#include #include +#include "slic3r/plugin/pluginTypes/pages/PagesPluginCapability.hpp" +#include "slic3r/GUI/WebPanel.hpp" +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" #include +#include +#include +#include #include +#include #include #include #include +#include +#include namespace Slic3r { namespace { @@ -169,8 +184,10 @@ void PluginPages::initialize(Notebook* parent) void PluginPages::shutdown() { - while (!m_pages.empty()) - remove_page(m_pages.begin()->first); + // Removing the selected tab selects the tab to its left. In tab order that is a built-in tab, + // never an unbuilt plugin page that is removed next and would be built only to be destroyed. + for (const PluginCapabilityId& id : std::vector(m_order)) + remove_page(id); m_parent = nullptr; } @@ -211,8 +228,7 @@ bool PluginPages::create_page(const PluginCapabilityId& id) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to get icon for plugin " << id.plugin_key; } - auto* page = new PluginPage(m_parent, std::move(capability)); - + wxBitmap bitmap; if (!icon.empty()) { try { boost::filesystem::path icon_path(icon); @@ -220,7 +236,7 @@ bool PluginPages::create_page(const PluginCapabilityId& id) if (extension == ".svg" || extension == ".png") icon_path.replace_extension(); - page->set_icon(create_scaled_bitmap(icon_path.string(), m_parent, 20)); + bitmap = create_scaled_bitmap(icon_path.string(), m_parent, 20); } catch (const std::exception& error) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to load icon for plugin " << id.plugin_key << ": " << error.what(); } catch (...) { @@ -228,7 +244,15 @@ bool PluginPages::create_page(const PluginCapabilityId& id) } } - m_pages.emplace(id, page); + // Built the first time its tab is shown, so a language switch never creates the page's browser + // while the main window is being rebuilt. Never prebuilt: the idle queue cannot drop a page + // that remove_page() destroys. + auto* page = new GUI::LazyPage(m_parent, GUI::into_u8(page_tab_id(id)), -1, + [capability = std::move(capability)](wxWindow* parent) { + return new PluginPage(parent, capability); + }); + + m_pages.emplace(id, Page{page, bitmap}); m_order.push_back(id); return true; } @@ -257,16 +281,10 @@ void PluginPages::on_plugin_register(const std::string& plugin_key) void PluginPages::on_plugin_deregister(const std::string& plugin_key) { - for (auto it = m_pages.begin(); it != m_pages.end();) { - if (it->first.plugin_key != plugin_key) { - ++it; - continue; - } - - const PluginCapabilityId id = it->first; - ++it; - remove_page(id); - } + // In tab order, as in shutdown(). + for (const PluginCapabilityId& id : std::vector(m_order)) + if (id.plugin_key == plugin_key) + remove_page(id); } void PluginPages::remove_page(const PluginCapabilityId& id) @@ -275,8 +293,10 @@ void PluginPages::remove_page(const PluginCapabilityId& id) if (it == m_pages.end()) return; - PluginPage* page = it->second; - page->detach_capability(); + GUI::LazyPage* page = it->second.page; + // Only a built page has installed a message sender on the capability. + if (PluginPage* built = page->get()) + built->detach_capability(); m_pages.erase(it); m_order.erase(std::remove(m_order.begin(), m_order.end(), id), m_order.end()); @@ -334,26 +354,27 @@ void PluginPages::relayout() bool up_to_date = page_count >= tab_ids.size(); for (size_t i = 0; up_to_date && i < tab_ids.size(); ++i) up_to_date = m_parent->GetPageName(page_count - tab_ids.size() + i) == page_tab_id(tab_ids[i]); - for (const auto& [id, page] : m_pages) { + for (const auto& [id, entry] : m_pages) { if (!up_to_date) break; const bool wanted = std::find(tab_ids.begin(), tab_ids.end(), id) != tab_ids.end(); - up_to_date = (m_parent->FindPage(page) != wxNOT_FOUND) == wanted; + up_to_date = entry.page->in_book() == wanted; } if (!up_to_date) { const wxString id_to_reselect = m_parent->GetSelectedPageName(); - for (const auto& [id, page] : m_pages) { - const int idx = m_parent->FindPage(page); + // In tab order, as in shutdown(). + for (const auto& id : m_order) { + const int idx = m_parent->FindPage(m_pages.at(id).page); if (idx != wxNOT_FOUND) m_parent->RemovePage(idx); } for (const auto& id : tab_ids) { - PluginPage* page = m_pages.at(id); - m_parent->InsertPage(m_parent->GetPageCount(), page_tab_id(id), page, wxString::FromUTF8(id.name), "", - false, page->icon()); + const Page& entry = m_pages.at(id); + m_parent->InsertPage(m_parent->GetPageCount(), page_tab_id(id), entry.page, wxString::FromUTF8(id.name), "", + false, entry.icon); } if (!id_to_reselect.empty()) diff --git a/src/slic3r/plugin/host/PluginPages.hpp b/src/slic3r/plugin/host/PluginPages.hpp index 59d34fe9ff..90d8c28a03 100644 --- a/src/slic3r/plugin/host/PluginPages.hpp +++ b/src/slic3r/plugin/host/PluginPages.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -12,6 +13,7 @@ #include #include +#include #include class Notebook; @@ -28,8 +30,6 @@ public: void detach_capability(); void push_message(const std::string& message); - void set_icon(const wxBitmap& icon) { m_icon = icon; } - const wxBitmap& icon() const { return m_icon; } protected: std::optional page_html() override; @@ -40,7 +40,6 @@ private: std::shared_ptr m_cap; std::shared_ptr> m_lifetime; - wxBitmap m_icon; }; class PluginPages @@ -72,7 +71,13 @@ private: void show_overflow_menu(); static wxString page_tab_id(const PluginCapabilityId& id); - std::map m_pages; + struct Page + { + GUI::LazyPage* page{nullptr}; + wxBitmap icon; + }; + + std::map m_pages; std::vector m_order; Notebook* m_parent{nullptr}; diff --git a/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapability.cpp b/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapability.cpp index e009f4426f..e6ab45246b 100644 --- a/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapability.cpp +++ b/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapability.cpp @@ -2,10 +2,17 @@ #include "PagesPluginCapabilityTrampoline.hpp" #include "../../PluginFsUtils.hpp" +#include +#include #include +#include +#include +#include #include +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include #include namespace py = pybind11; diff --git a/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp b/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp index f6e13c981b..24b98bea24 100644 --- a/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp +++ b/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp @@ -3,8 +3,14 @@ #include "PagesPluginCapability.hpp" #include "../../PluginFsUtils.hpp" #include "../../PyPluginTrampoline.hpp" +#include +#include #include +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include "slic3r/plugin/PythonInterpreter.hpp" +#include namespace Slic3r { diff --git a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp index d0c88404fe..eac19199bf 100644 --- a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp +++ b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp @@ -2,11 +2,16 @@ #include "PrinterAgentPluginCapabilityTrampoline.hpp" #include "IPrinterAgent.hpp" +#include +#include "slic3r/Utils/bambu_networking.hpp" +#include #include #include #include +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" #include namespace py = pybind11; diff --git a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.hpp b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.hpp index d33cee7afe..e106a35f52 100644 --- a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.hpp +++ b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.hpp @@ -4,6 +4,8 @@ #include "../../PythonPluginInterface.hpp" #include "IPrinterAgent.hpp" +#include +#include "slic3r/Utils/bambu_networking.hpp" #include #include diff --git a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapabilityTrampoline.hpp b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapabilityTrampoline.hpp index 2e15523430..790f6e3ac6 100644 --- a/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapabilityTrampoline.hpp +++ b/src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapabilityTrampoline.hpp @@ -5,9 +5,16 @@ #include "../../PyPluginTrampoline.hpp" #include "IPrinterAgent.hpp" +#include "slic3r/Utils/bambu_networking.hpp" #include "pybind11/pybind11.h" +#include +#include +#include +#include #include +#include "slic3r/plugin/PythonInterpreter.hpp" #include +#include #include #include diff --git a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.cpp b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.cpp index 712ba9b653..f9ff379cf8 100644 --- a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.cpp +++ b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.cpp @@ -3,8 +3,10 @@ #include "ScriptPluginCapabilityTrampoline.hpp" #include +#include #include #include +#include "slic3r/plugin/PythonPluginInterface.hpp" namespace py = pybind11; diff --git a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.hpp b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.hpp index fb1319e560..59055d7c8f 100644 --- a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.hpp +++ b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapability.hpp @@ -2,6 +2,7 @@ #define slic3r_ScriptPluginCapability_hpp_ #include "../../PythonPluginInterface.hpp" +#include namespace Slic3r { class ScriptPluginCapability : public PluginCapabilityInterface diff --git a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapabilityTrampoline.hpp b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapabilityTrampoline.hpp index 62958a89d9..dc90001c57 100644 --- a/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapabilityTrampoline.hpp +++ b/src/slic3r/plugin/pluginTypes/script/ScriptPluginCapabilityTrampoline.hpp @@ -3,6 +3,8 @@ #include "ScriptPluginCapability.hpp" #include "../../PyPluginTrampoline.hpp" +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include namespace Slic3r { class PyScriptPluginCapabilityTrampoline : public PyPluginCommonTrampoline diff --git a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.cpp b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.cpp index d2e630242d..ed2a6aeecf 100644 --- a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.cpp +++ b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.cpp @@ -1,7 +1,14 @@ #include "SlicingPipelinePluginCapability.hpp" #include "SlicingPipelinePluginCapabilityTrampoline.hpp" +#include +#include +#include #include "slic3r/plugin/PluginBindingUtils.hpp" // config_value_or_none #include "libslic3r/libslic3r.h" // unscale<>, live SCALING_FACTOR +#include "libslic3r/Print.hpp" +#include +#include "slic3r/plugin/PythonPluginInterface.hpp" +#include namespace py = pybind11; namespace Slic3r { diff --git a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp index da0dbcbcbd..6bad90817f 100644 --- a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp +++ b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapability.hpp @@ -1,6 +1,7 @@ #pragma once #include "slic3r/plugin/PythonPluginInterface.hpp" #include "libslic3r/Print.hpp" // SlicingPipelineStepPlugin, Print, PrintObject +#include "libslic3r/PrintConfig.hpp" #include #include #include diff --git a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapabilityTrampoline.hpp b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapabilityTrampoline.hpp index 5c9d527e42..82312c4200 100644 --- a/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapabilityTrampoline.hpp +++ b/src/slic3r/plugin/pluginTypes/slicingPipeline/SlicingPipelinePluginCapabilityTrampoline.hpp @@ -1,8 +1,10 @@ #pragma once #include "SlicingPipelinePluginCapability.hpp" +#include #include "slic3r/plugin/PyPluginTrampoline.hpp" #include "slic3r/plugin/PluginAuditManager.hpp" #include +#include "slic3r/plugin/PythonPluginInterface.hpp" namespace Slic3r { class PySlicingPipelinePluginCapabilityTrampoline : public PyPluginCommonTrampoline { diff --git a/tests/cli/test_cli_project_missing_keys.sh b/tests/cli/test_cli_project_missing_keys.sh index 4c55709ea0..f20a2eb822 100644 --- a/tests/cli/test_cli_project_missing_keys.sh +++ b/tests/cli/test_cli_project_missing_keys.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash -# End-to-end check that the CLI loads a project's printer and process settings as the GUI does. +# End-to-end check that the CLI loads a project's printer, process and filament settings as the GUI does. # # The GUI takes every key a project does not list as changed from the project's current system preset: # keys saved before an option existed, and keys holding an older system value. Keys the project lists # in different_settings_to_system keep the project's value. A project is exported from the shipped -# Bambu Lab P1S presets; one printer key and one process key are removed, one printer key and one -# process key are changed without being listed, one key is changed and listed, and it is sliced again. +# Bambu Lab P1S presets with two filaments; one printer key and one process key are removed, one printer +# key, one process key and two filament keys (one per filament, one per extruder variant) are changed +# without being listed, one process key and the first filament's density are changed and listed, and it +# is sliced again: as is, with --uptodate, and with --load-filaments replacing only the second filament. # # usage: test_cli_project_missing_keys.sh set -u @@ -45,7 +47,7 @@ slice() { slice base "$WORK/cube.stl" \ --load-settings "$PROFILES/machine/Bambu Lab P1S 0.4 nozzle.json;$PROFILES/process/0.20mm Standard @BBL X1C.json" \ - --load-filaments "$PROFILES/filament/Bambu PLA Basic @BBL P1S 0.4 nozzle.json" + --load-filaments "$PROFILES/filament/Bambu PLA Basic @BBL P1S 0.4 nozzle.json;$PROFILES/filament/Bambu PLA Basic @BBL P1S 0.4 nozzle.json" # The removed keys, with their option defaults from PrintConfig.cpp; stale keys changed without being # listed as different, which must come back with the system value; and a listed key the project keeps. @@ -67,30 +69,47 @@ with zipfile.ZipFile(src) as zin, zipfile.ZipFile(dst, "w", zipfile.ZIP_DEFLATED for key in ("top_shell_layers", "extruder_clearance_height_to_rod"): expected[key] = config[key] config[key] = str(int(float(config[key])) + 1) + for key in ("filament_cost", "filament_max_volumetric_speed"): + expected[key] = config[key] + config[key] = [str(float(v) + 1) for v in config[key]] expected["wall_loops"] = str(int(config["wall_loops"]) + 1) config["wall_loops"] = expected["wall_loops"] + expected["filament_density"] = [str(float(config["filament_density"][0]) + 1)] + config["filament_density"][1:] + config["filament_density"] = [expected["filament_density"][0]] + [str(float(v) + 1) for v in config["filament_density"][1:]] + # One entry for the process, one per filament, one for the printer. different = config["different_settings_to_system"] different[0] = ";".join([k for k in different[0].split(";") if k] + ["wall_loops"]) + different[1] = ";".join([k for k in different[1].split(";") if k] + ["filament_density"]) data = json.dumps(config, indent=4) zout.writestr(item, data) with open(dst + ".expected.json", "w") as f: json.dump(expected, f) EOF -slice project "$WORK/old.3mf" - -"$PY" - "$WORK/project/out.3mf" "$WORK/old.3mf.expected.json" <<'EOF' +check() { + if ! "$PY" - "$WORK/$1/out.3mf" "$WORK/old.3mf.expected.json" "$1" <<'EOF' import json, sys, zipfile with zipfile.ZipFile(sys.argv[1]) as z: config = json.loads(z.read("Metadata/project_settings.config")) with open(sys.argv[2]) as f: expected = json.load(f) -errors = ["%s is %r, want %r" % (key, config.get(key), want) for key, want in expected.items() if config.get(key) != want] +errors = ["%s: %s is %r, want %r" % (sys.argv[3], key, config.get(key), want) for key, want in expected.items() if config.get(key) != want] for e in errors: print("FAIL: " + e) sys.exit(1 if errors else 0) EOF -status=$? -[ "$status" -eq 0 ] || { tail -n 40 "$WORK/project/log"; exit 1; } + then + tail -n 40 "$WORK/$1/log" + exit 1 + fi +} + +slice project "$WORK/old.3mf" +check project +slice uptodate "$WORK/old.3mf" --uptodate +check uptodate +# The replaced second filament takes the system values the refresh would have given it. +slice partial "$WORK/old.3mf" --load-filaments ";$PROFILES/filament/Bambu PLA Basic @BBL P1S 0.4 nozzle.json" +check partial echo "PASS" diff --git a/tests/fff_print/test_cooling.cpp b/tests/fff_print/test_cooling.cpp index a21ff236ce..4ae9649197 100644 --- a/tests/fff_print/test_cooling.cpp +++ b/tests/fff_print/test_cooling.cpp @@ -1,10 +1,16 @@ #include +#include #include "test_helpers.hpp" #include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/libslic3r.h" #include #include +#include #include using namespace Slic3r; diff --git a/tests/fff_print/test_extrusion_entity.cpp b/tests/fff_print/test_extrusion_entity.cpp index 57bc7e81e6..5b18b3ece5 100644 --- a/tests/fff_print/test_extrusion_entity.cpp +++ b/tests/fff_print/test_extrusion_entity.cpp @@ -1,7 +1,12 @@ +#include #include #include +#include +#include +#include +#include #include "libslic3r/ExtrusionEntityCollection.hpp" #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/Point.hpp" diff --git a/tests/fff_print/test_extrusion_processor.cpp b/tests/fff_print/test_extrusion_processor.cpp index 47f9a62ecf..1f55c1b5c1 100644 --- a/tests/fff_print/test_extrusion_processor.cpp +++ b/tests/fff_print/test_extrusion_processor.cpp @@ -1,6 +1,13 @@ #include +#include +#include +#include +#include +#include +#include #include "libslic3r/AABBTreeLines.hpp" +#include "libslic3r/GCode.hpp" #include "libslic3r/GCode/ExtrusionProcessor.hpp" #include "libslic3r/GCodeReader.hpp" #include "libslic3r/TriangleMesh.hpp" @@ -9,7 +16,17 @@ #include #include +#include +#include +#include +#include "libslic3r/Line.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/Model.hpp" #include +#include #include using namespace Slic3r; @@ -524,6 +541,187 @@ TEST_CASE("A wall is left whole where neither its speed nor its cooling changes" REQUIRE(points.size() == 3); } +namespace { + +// The caged overhang box, sliced, and a layer on its slope. +struct SlicedCage +{ + Print print; + Model model; + const PrintObject *object{nullptr}; + const Layer *layer{nullptr}; + + explicit SlicedCage(const DynamicPrintConfig &config = caged_overhang_config("classic")) + { + init_print(std::vector{caged_overhang_mesh()}, print, model, config, nullptr, false); + print.process(); + object = print.objects().front(); + layer = object->get_layer(int(std::lround((caged_slope_z_min + caged_slope_z_max) / 2. / caged_layer_height))); + } +}; + +using Walls = std::vector>; + +// Estimates every wall of `layer` against whatever layer `estimator` was last prepared with before it. +Walls estimate_walls(ExtrusionQualityEstimator &estimator, const PrintObject *object, const Layer &layer) +{ + const ConfigOptionPercents overlaps({90, 75, 50, 25, 13, 0}); + const ConfigOptionFloatsOrPercents speeds({FloatOrPercent{100, true}, FloatOrPercent{50, true}, FloatOrPercent{30, true}, + FloatOrPercent{20, true}, FloatOrPercent{10, true}, FloatOrPercent{5, true}}); + Walls walls; + estimator.set_current_object(object); + for (const LayerRegion *region : layer.regions()) + for_each_extrusion_path(region->perimeters, [&](const ExtrusionPath &path) { + if (is_perimeter(path.role())) + walls.push_back(estimator.estimate_extrusion_quality(path, overlaps, speeds, caged_outer_wall_speed, caged_outer_wall_speed, + true, 0.5f)); + }); + return walls; +} + +uint32_t float_bits(float value) +{ + uint32_t bits; + std::memcpy(&bits, &value, sizeof(bits)); + return bits; +} + +bool same_point(const ProcessedPoint &a, const ProcessedPoint &b) +{ + return a.p == b.p && float_bits(a.speed) == float_bits(b.speed) && float_bits(a.overlap) == float_bits(b.overlap); +} + +// Requires the walls to match point for point, bit for bit. +void check_identical(const Walls &actual, const Walls &expected) +{ + REQUIRE(actual.size() == expected.size()); + for (size_t wall = 0; wall < actual.size(); ++wall) { + INFO("wall " << wall); + REQUIRE(actual[wall].size() == expected[wall].size()); + for (size_t i = 0; i < actual[wall].size(); ++i) { + const ProcessedPoint &a = actual[wall][i]; + const ProcessedPoint &e = expected[wall][i]; + INFO("point " << i << ": speed " << a.speed << " vs " << e.speed << ", overlap " << a.overlap << " vs " << e.overlap); + CHECK(a.p == e.p); + CHECK(float_bits(a.speed) == float_bits(e.speed)); + CHECK(float_bits(a.overlap) == float_bits(e.overlap)); + } + } +} + +bool any_difference(const Walls &a, const Walls &b) +{ + return !std::equal(a.begin(), a.end(), b.begin(), b.end(), [](const std::vector &wa, const std::vector &wb) { + return std::equal(wa.begin(), wa.end(), wb.begin(), wb.end(), same_point); + }); +} + +bool any_slowed(const Walls &walls) +{ + return std::any_of(walls.begin(), walls.end(), [](const std::vector &wall) { + return std::any_of(wall.begin(), wall.end(), [](const ProcessedPoint &point) { return point.speed < caged_outer_wall_speed; }); + }); +} + +} // namespace + +TEST_CASE("Overhang data computed ahead of the generator gives the same wall speeds", "[ExtrusionProcessor]") +{ + const SlicedCage cage; + REQUIRE(cage.layer->lower_layer != nullptr); + + ExtrusionQualityEstimator queried; + queried.prepare_for_new_layer(cage.object, cage.layer->lower_layer); + queried.prepare_for_new_layer(cage.object, cage.layer); + const Walls expected = estimate_walls(queried, cage.object, *cage.layer); + REQUIRE(any_slowed(expected)); + + ExtrusionQualityEstimator precomputed; + precomputed.prepare_for_new_layer(cage.object, cage.layer->lower_layer); + precomputed.set_precomputed_layers({precompute_overhang_layer(cage.object, *cage.layer)}); + precomputed.prepare_for_new_layer(cage.object, cage.layer); + check_identical(estimate_walls(precomputed, cage.object, *cage.layer), expected); +} + +TEST_CASE("Overhang distances measured against another layer than the previous one are not used", "[ExtrusionProcessor]") +{ + const SlicedCage cage; + const Layer *two_below = cage.layer->lower_layer->lower_layer; + REQUIRE(two_below != nullptr); + + ExtrusionQualityEstimator queried; + queried.prepare_for_new_layer(cage.object, two_below); + queried.prepare_for_new_layer(cage.object, cage.layer); + const Walls expected = estimate_walls(queried, cage.object, *cage.layer); + ExtrusionQualityEstimator one_below; + one_below.prepare_for_new_layer(cage.object, cage.layer->lower_layer); + one_below.prepare_for_new_layer(cage.object, cage.layer); + REQUIRE(any_difference(estimate_walls(one_below, cage.object, *cage.layer), expected)); + + ExtrusionQualityEstimator precomputed; + precomputed.prepare_for_new_layer(cage.object, two_below); + precomputed.set_precomputed_layers({precompute_overhang_layer(cage.object, *cage.layer)}); + precomputed.prepare_for_new_layer(cage.object, cage.layer); + check_identical(estimate_walls(precomputed, cage.object, *cage.layer), expected); +} + +TEST_CASE("Overhang data computed for another layer is not used", "[ExtrusionProcessor]") +{ + const SlicedCage cage; + const Layer *one_below = cage.layer->lower_layer; + REQUIRE(one_below != nullptr); + REQUIRE(one_below->lower_layer != nullptr); + + ExtrusionQualityEstimator queried; + queried.prepare_for_new_layer(cage.object, one_below); + queried.prepare_for_new_layer(cage.object, cage.layer); + const Walls expected = estimate_walls(queried, cage.object, *cage.layer); + ExtrusionQualityEstimator two_below; + two_below.prepare_for_new_layer(cage.object, one_below->lower_layer); + two_below.prepare_for_new_layer(cage.object, cage.layer); + REQUIRE(any_difference(estimate_walls(two_below, cage.object, *cage.layer), expected)); + + ExtrusionQualityEstimator precomputed; + precomputed.set_precomputed_layers({precompute_overhang_layer(cage.object, *one_below)}); + precomputed.prepare_for_new_layer(cage.object, one_below); + precomputed.prepare_for_new_layer(cage.object, cage.layer); + check_identical(estimate_walls(precomputed, cage.object, *cage.layer), expected); +} + +TEST_CASE("Precomputed overhang data has the curled-line tree exactly when a region slows down for curled perimeters", "[ExtrusionProcessor]") +{ + const bool slowdown = GENERATE(false, true); + DynamicPrintConfig config = caged_overhang_config("classic"); + config.set_deserialize_strict("slowdown_for_curled_perimeters", slowdown ? "1" : "0"); + const SlicedCage cage(config); + + GCode::LayerToPrint layer; + layer.object_layer = cage.layer; + layer.original_object = cage.object; + const std::vector precomputed = precompute_overhang_layers({layer}, false); + REQUIRE(precomputed.size() == 1); + CHECK((precomputed.front().lower_curled_lines != nullptr) == slowdown); +} + +TEST_CASE("Caged external overhangs are slowed when printed by object or through the pressure equalizer", "[ExtrusionProcessor]") +{ + const auto [key, value] = GENERATE(table({ + {"print_sequence", "by object"}, + {"max_volumetric_extrusion_rate_slope", "10"}, + })); + INFO(key << " = " << value); + DynamicPrintConfig config = caged_overhang_config("classic"); + config.set_deserialize_strict(key, value); + Print print; + Model model; + init_print(std::vector{caged_overhang_mesh()}, print, model, config, nullptr, false); + + const std::vector feed_rates = caged_slope_feed_rates(gcode(print)); + info_feed_rates("caged slope", feed_rates); + REQUIRE_FALSE(feed_rates.empty()); + REQUIRE(*std::max_element(feed_rates.begin(), feed_rates.end()) < caged_slow_speed * MM_PER_MIN); +} + TEST_CASE("Benchmark caged overhang interior sampling", "[ExtrusionProcessor][!benchmark]"){ const char* wall_generator = GENERATE("classic", "arachne"); diff --git a/tests/fff_print/test_fill.cpp b/tests/fff_print/test_fill.cpp index 0efaba023d..7247503824 100644 --- a/tests/fff_print/test_fill.cpp +++ b/tests/fff_print/test_fill.cpp @@ -2,13 +2,35 @@ #include #include +#include +#include #include +#include "libslic3r/Fill/FillBase.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include "libslic3r/Model.hpp" #include +#include +#include #include #include #include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/AABBTreeLines.hpp" #include "libslic3r/Fill/Fill.hpp" diff --git a/tests/fff_print/test_flow.cpp b/tests/fff_print/test_flow.cpp index 6025bb9b56..f0579c675f 100644 --- a/tests/fff_print/test_flow.cpp +++ b/tests/fff_print/test_flow.cpp @@ -1,8 +1,11 @@ #include +#include #include #include +#include +#include #include "test_helpers.hpp" // get access to init_print, etc #include "libslic3r/Config.hpp" diff --git a/tests/fff_print/test_gcode_timing.cpp b/tests/fff_print/test_gcode_timing.cpp index 8c08fc4f03..45a71cdd92 100644 --- a/tests/fff_print/test_gcode_timing.cpp +++ b/tests/fff_print/test_gcode_timing.cpp @@ -1,5 +1,9 @@ #include +#include +#include +#include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/GCode/GCodeProcessor.hpp" #include "libslic3r/MultiNozzleUtils.hpp" @@ -8,9 +12,13 @@ #include "test_utils.hpp" #include +#include #include #include +#include "libslic3r/ExtrusionEntity.hpp" +#include #include +#include #include #include #include diff --git a/tests/fff_print/test_gcodeprocessor.cpp b/tests/fff_print/test_gcodeprocessor.cpp index 402a4757e1..eeca017220 100644 --- a/tests/fff_print/test_gcodeprocessor.cpp +++ b/tests/fff_print/test_gcodeprocessor.cpp @@ -1,8 +1,15 @@ #include +#include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/Utils.hpp" +#include "test_utils.hpp" + +#include +#include #include #include @@ -77,3 +84,90 @@ TEST_CASE("Reserved keyword detection reports every offending line", "[GCodeProc CHECK(tags.empty()); } } + +namespace { + +// Closed outer-wall squares, each after a fast travel and before an inner-wall move, so the processor +// records seams and inserts actual speed moves. virtual_moves adds a VG1 move after each square. +void process_squares(int squares, GCodeProcessorResult &result, bool virtual_moves = false) +{ + std::ostringstream gcode; + gcode << "M83\nG90\n"; + for (int i = 0; i < squares; ++i) { + gcode << "G1 X10 Y10 Z" << 0.2 * (i + 1) << " F12000\n" + << "; FEATURE: Outer wall\n" + << "G1 X50 Y10 E2 F3000\nG1 X50 Y50 E2\nG1 X10 Y50 E2\nG1 X10 Y10 E2\n" + << "; FEATURE: Inner wall\n" + << "G1 X12 Y12 E0.1\nG1 X30 Y12 E1\n"; + if (virtual_moves) + gcode << "VG1 X20 Y30 F12000\n"; + } + FullPrintConfig config; + config.gcode_flavor.value = gcfMarlinFirmware; + // s_IsBBLPrinter selects the "; FEATURE: " role tags this G-code uses. + const bool was_bbl_printer = GCodeProcessor::s_IsBBLPrinter; + const ScopeGuard restore_bbl_printer([was_bbl_printer] { GCodeProcessor::s_IsBBLPrinter = was_bbl_printer; }); + GCodeProcessor::s_IsBBLPrinter = true; + ScopedTemporaryFile temp(".gcode"); + std::ofstream(temp.string()) << gcode.str(); + GCodeProcessor processor; + processor.apply_config(config); + processor.process_file(temp.string()); + result = std::move(processor.extract_result()); +} + +bool is_block_move(const GCodeProcessorResult::MoveVertex &move) +{ + return !move.internal_only && (move.type == EMoveType::Extrude || move.type == EMoveType::Travel); +} + +} // namespace + +TEST_CASE("Actual speed moves are inserted on their block's segment just before its move", "[GCodeProcessor]") +{ + // 60 squares take several planner passes, which remap the blocks kept between passes. + const int squares = GENERATE(10, 60); + const bool virtual_moves = GENERATE(false, true); + GCodeProcessorResult result; + process_squares(squares, result, virtual_moves); + const auto &moves = result.moves; + constexpr size_t normal = size_t(PrintEstimatedStatistics::ETimeMode::Normal); + + size_t inserted = 0; + for (size_t i = 1; i < moves.size(); ++i) { + if (!moves[i].internal_only) + continue; + ++inserted; + // Inserted moves have zero time, but a VG1 block's time is written to whatever move its move_id names. + if (!virtual_moves) + CHECK(moves[i].time[normal] == 0.f); + size_t block = i + 1; + while (block < moves.size() && moves[block].internal_only) + ++block; + size_t previous = i - 1; + while (previous > 0 && moves[previous].internal_only) + --previous; + REQUIRE(block < moves.size()); + CHECK(moves[block].gcode_id == moves[i].gcode_id); + const Vec3f segment = moves[block].position - moves[previous].position; + const Vec3f offset = moves[i].position - moves[previous].position; + CHECK(segment.cross(offset).norm() / segment.norm() < 1e-3f); + } + REQUIRE(inserted > 0); +} + +TEST_CASE("A seam takes the actual speed of the move it follows", "[GCodeProcessor]") +{ + GCodeProcessorResult result; + // 10 squares fit in one planner pass, so the seam's move and the block after it are timed together. + process_squares(10, result); + const auto &moves = result.moves; + + size_t seams = 0; + for (size_t i = 1; i < moves.size(); ++i) + if (moves[i].type == EMoveType::Seam && is_block_move(moves[i - 1])) { + ++seams; + CHECK_THAT(moves[i].actual_feedrate, Catch::Matchers::WithinAbs(moves[i - 1].actual_feedrate, 1e-4)); + } + REQUIRE(seams > 0); +} diff --git a/tests/fff_print/test_gcodewriter.cpp b/tests/fff_print/test_gcodewriter.cpp index bee7a3909a..4502864a5f 100644 --- a/tests/fff_print/test_gcodewriter.cpp +++ b/tests/fff_print/test_gcodewriter.cpp @@ -1,14 +1,28 @@ +#include #include #include #include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Extruder.hpp" +#include "libslic3r/libslic3r.h" #include #include #include #include #include +#include #include +#include +#include +#include +#include +#include +#include #include "nlohmann/json.hpp" #include "libslic3r/GCodeReader.hpp" diff --git a/tests/fff_print/test_helpers.cpp b/tests/fff_print/test_helpers.cpp index 585132bc6e..eeb201bc71 100644 --- a/tests/fff_print/test_helpers.cpp +++ b/tests/fff_print/test_helpers.cpp @@ -1,5 +1,6 @@ #include "test_helpers.hpp" +#include #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Config.hpp" @@ -7,11 +8,23 @@ #include "libslic3r/Format/OBJ.hpp" #include "libslic3r/Format/STL.hpp" +#include #include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Exception.hpp" +#include "libslic3r/PrintConfig.hpp" +#include +#include "libslic3r/Point.hpp" +#include +#include +#include #include #include #include +#include +#include +#include #include "test_utils.hpp" diff --git a/tests/fff_print/test_helpers.hpp b/tests/fff_print/test_helpers.hpp index 1dee775092..3b852a8c4a 100644 --- a/tests/fff_print/test_helpers.hpp +++ b/tests/fff_print/test_helpers.hpp @@ -8,6 +8,10 @@ #include "libslic3r/Print.hpp" #include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/PrintConfig.hpp" +#include #include #include #include diff --git a/tests/fff_print/test_mixed_filament.cpp b/tests/fff_print/test_mixed_filament.cpp index 25b426c210..bfa8985fd4 100644 --- a/tests/fff_print/test_mixed_filament.cpp +++ b/tests/fff_print/test_mixed_filament.cpp @@ -1,5 +1,16 @@ +#include #include +#include "libslic3r/PrintConfig.hpp" +#include +#include +#include "libslic3r/Model.hpp" +#include +#include "libslic3r/Config.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/PrintBase.hpp" +#include +#include #include "libslic3r/GCode/ToolOrdering.hpp" #include "libslic3r/MultiNozzleUtils.hpp" #include "libslic3r/Print.hpp" diff --git a/tests/fff_print/test_model.cpp b/tests/fff_print/test_model.cpp index 27bf539373..9e2c0790b3 100644 --- a/tests/fff_print/test_model.cpp +++ b/tests/fff_print/test_model.cpp @@ -1,10 +1,17 @@ +#include #include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/Model.hpp" #include "libslic3r/ModelArrange.hpp" #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/PrintConfig.hpp" +#include +#include "libslic3r/Point.hpp" +#include #include "test_helpers.hpp" #include "test_utils.hpp" diff --git a/tests/fff_print/test_multifilament.cpp b/tests/fff_print/test_multifilament.cpp index 7837f26cc8..56e7e02a99 100644 --- a/tests/fff_print/test_multifilament.cpp +++ b/tests/fff_print/test_multifilament.cpp @@ -1,5 +1,8 @@ #include +#include +#include +#include #include "libslic3r/GCode/GCodeProcessor.hpp" #include "libslic3r/GCodeReader.hpp" @@ -12,9 +15,15 @@ #include #include #include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Print.hpp" #include #include #include +#include #include #include #include @@ -1416,6 +1425,47 @@ TEST_CASE("Each filament sets the pressure advance of its extruder variant", "[M } } +// A two-extruder printer, Standard nozzle on extruder 1 and High Flow on extruder 2, whose per-variant arrays +// hold filament 1 Standard, filament 1 High Flow, filament 2 Standard and filament 2 High Flow. +static DynamicPrintConfig two_extruder_pressure_advance_config(const std::string &filament_map, const std::string &adaptive_pressure_advance, + int wall_filament, int infill_filament) +{ + DynamicPrintConfig config = multifilament_config(2, { + { "gcode_flavor", "klipper" }, + { "single_extruder_multi_material", 0 }, + { "nozzle_diameter", "0.4,0.4" }, + { "extruder_printable_height", "0,0" }, + { "printer_extruder_id", "1,2" }, + { "printer_extruder_variant", "Direct Drive Standard;Direct Drive High Flow" }, + { "extruder_variant_list", "Direct Drive Standard;Direct Drive High Flow" }, + { "filament_map", filament_map }, + { "filament_extruder_variant", "Direct Drive Standard;Direct Drive High Flow;Direct Drive Standard;Direct Drive High Flow" }, + { "filament_self_index", "1,1,2,2" }, + { "enable_pressure_advance", "1,1,1,1" }, + { "pressure_advance", "0.021,0.037,0.043,0.049" }, + { "adaptive_pressure_advance", adaptive_pressure_advance }, + { "sparse_infill_filament_id", infill_filament }, + { "internal_solid_filament_id", infill_filament }, + { "top_surface_filament_id", infill_filament }, + { "bottom_surface_filament_id", infill_filament }, + { "outer_wall_filament_id", wall_filament }, + { "inner_wall_filament_id", wall_filament }, + { "enable_prime_tower", 0 }, + { "skirt_loops", 0 }, + { "brim_type", "no_brim" }, + // custom G-code indexes the per-filament arrays by filament + { "machine_start_gcode", "; start pressure advance {pressure_advance[initial_extruder]}" }, + }); + config.option("adaptive_pressure_advance_model")->values = { + constant_pressure_advance_model("0.012"), constant_pressure_advance_model("0.034"), + constant_pressure_advance_model("0.056"), constant_pressure_advance_model("0.078") }; + config.option("extruder_type", true)->values = { etDirectDrive, etDirectDrive }; + config.option("nozzle_volume_type", true)->values = { nvtStandard, nvtHighFlow }; + // print each filament on the extruder filament_map gives it + config.option>("filament_map_mode", true)->value = fmmManual; + return config; +} + // On a printer with two extruders, a filament takes the pressure advance of the variant of the extruder // it is mapped to, whichever filament and extruder that is. TEST_CASE("Each filament sets the pressure advance of its extruder variant on a two-extruder printer", "[MultiFilament]") @@ -1431,42 +1481,8 @@ TEST_CASE("Each filament sets the pressure advance of its extruder variant on a // the other filament goes on the other extruder const std::string filament_map = filament == 1 ? std::to_string(extruder) + "," + std::to_string(3 - extruder) : std::to_string(3 - extruder) + "," + std::to_string(extruder); - DynamicPrintConfig config = multifilament_config(2, { - { "gcode_flavor", "klipper" }, - { "single_extruder_multi_material", 0 }, - { "nozzle_diameter", "0.4,0.4" }, - { "extruder_printable_height", "0,0" }, - // extruder 1 has a Standard nozzle, extruder 2 a High Flow one - { "printer_extruder_id", "1,2" }, - { "printer_extruder_variant", "Direct Drive Standard;Direct Drive High Flow" }, - { "extruder_variant_list", "Direct Drive Standard;Direct Drive High Flow" }, - { "filament_map", filament_map }, - // both filaments define Standard and High Flow - { "filament_extruder_variant", "Direct Drive Standard;Direct Drive High Flow;Direct Drive Standard;Direct Drive High Flow" }, - { "filament_self_index", "1,1,2,2" }, - { "enable_pressure_advance", "1,1,1,1" }, - { "pressure_advance", "0.021,0.037,0.043,0.049" }, - { "adaptive_pressure_advance", adaptive ? "1,1,1,1" : "0,0,0,0" }, - { "sparse_infill_filament_id", filament }, - { "internal_solid_filament_id", filament }, - { "top_surface_filament_id", filament }, - { "bottom_surface_filament_id", filament }, - { "outer_wall_filament_id", filament }, - { "inner_wall_filament_id", filament }, - { "enable_prime_tower", 0 }, - { "skirt_loops", 0 }, - { "brim_type", "no_brim" }, - // custom G-code indexes the per-filament arrays by filament - { "machine_start_gcode", "; start pressure advance {pressure_advance[initial_extruder]}" }, - }); - config.option("adaptive_pressure_advance_model")->values = { - constant_pressure_advance_model("0.012"), constant_pressure_advance_model("0.034"), - constant_pressure_advance_model("0.056"), constant_pressure_advance_model("0.078") }; - config.option("extruder_type", true)->values = { etDirectDrive, etDirectDrive }; - config.option("nozzle_volume_type", true)->values = { nvtStandard, nvtHighFlow }; - // keep the mapping above rather than grouping the filaments automatically - config.option>("filament_map_mode", true)->value = fmmManual; - const std::string gcode = slice({ cube(20) }, config); + const std::string gcode = slice({ cube(20) }, + two_extruder_pressure_advance_config(filament_map, adaptive ? "1,1,1,1" : "0,0,0,0", filament, filament)); std::set expected{ pressure_advance }; if (adaptive) @@ -1476,6 +1492,82 @@ TEST_CASE("Each filament sets the pressure advance of its extruder variant on a } } +// Filament 1 prints the walls on extruder 1 (variant index 0), filament 2 the infill on extruder 2 (variant index 3). +TEST_CASE("Adaptive pressure advance on one extruder leaves the other extruder's pressure advance alone", "[MultiFilament]") +{ + auto [adaptive, expected] = GENERATE(table>({ + { "1,0,0,0", { "0.021", "0.049", "0.012" } }, + { "0,0,0,1", { "0.021", "0.049", "0.078" } }, + })); + DYNAMIC_SECTION("adaptive " << adaptive) { + const std::string gcode = slice({ cube(20) }, two_extruder_pressure_advance_config("1,2", adaptive, 1, 2)); + CHECK(pressure_advance_values(gcode) == expected); + } +} + +// The pressure advance values a Klipper G-code sets while `tool` is active, in order, without repeating the value already set. +static std::vector pressure_advance_sequence(const std::string &gcode, int tool) +{ + const std::string token = "SET_PRESSURE_ADVANCE ADVANCE="; + std::vector values; + int current_tool = 0; + std::istringstream stream(gcode); + for (std::string line; std::getline(stream, line);) { + if (line.size() > 1 && line[0] == 'T' && std::isdigit((unsigned char) line[1])) + current_tool = std::stoi(line.substr(1)); + else if (current_tool == tool && line.rfind(token, 0) == 0) { + std::string value = line.substr(token.size(), line.find(';') - token.size()); + if (values.empty() || values.back() != value) + values.push_back(std::move(value)); + } + } + return values; +} + +TEST_CASE("Adaptive pressure advance predicts the same values after layers only a non-adaptive extruder prints", "[MultiFilament]") +{ + auto slice_with = [](const std::string &adaptive) { + DynamicPrintConfig config = two_extruder_pressure_advance_config("1,2", adaptive, 1, 1); + config.set_deserialize_strict({ + { "print_sequence", "by object" }, + // extruder 2 moves at one speed on its first layer, so no G1 F follows its first PA_CHANGE tag + { "filament_max_volumetric_speed", "100" }, + { "slow_down_for_layer_cooling", "0" }, + { "travel_speed", "120,40" }, + { "retraction_speed", "30,40" }, + { "deretraction_speed", "30,40" }, + { "initial_layer_speed", "30,40" }, + { "initial_layer_infill_speed", "60,40" }, + }); + auto &models = config.option("adaptive_pressure_advance_model")->values; + // with adaptive pressure advance on, filament 1 gets PA_CHANGE tags on every layer but keeps its pressure advance + models[0] = constant_pressure_advance_model("0.021"); + // a prediction that rises with flow, so it depends on the print speed + models[3] = "0.01,1,1000\n0.09,40,1000\n0.01,1,100000\n0.09,40,100000"; + return slice_with_object_overrides({ cube(20), cube(20) }, config, + { {}, { { "outer_wall_filament_id", 2 }, { "inner_wall_filament_id", 2 }, { "sparse_infill_filament_id", 2 }, + { "internal_solid_filament_id", 2 }, { "top_surface_filament_id", 2 }, { "bottom_surface_filament_id", 2 } } }); + }; + const std::vector expected = pressure_advance_sequence(slice_with("1,0,0,1"), 1); + REQUIRE(expected.size() > 2); + CHECK(pressure_advance_sequence(slice_with("0,0,0,1"), 1) == expected); +} + +TEST_CASE("Adaptive pressure advance on an unused extruder variant leaves the G-code unchanged", "[MultiFilament]") +{ + const std::string adaptive = GENERATE("0,1,0,0", "0,0,1,0"); + DYNAMIC_SECTION("adaptive " << adaptive) { + // the time and object ids differ between any two slices, and the config block lists the setting itself + auto masked = [](const std::string &gcode) { + return std::regex_replace(gcode.substr(0, gcode.find("; CONFIG_BLOCK_START")), std::regex("; generated by .*| id:\\d+"), ""); + }; + const std::string reference = masked(slice({ cube(20) }, two_extruder_pressure_advance_config("1,2", "0,0,0,0", 1, 2))); + const std::string gcode = masked(slice({ cube(20) }, two_extruder_pressure_advance_config("1,2", adaptive, 1, 2))); + REQUIRE(reference.find("SET_PRESSURE_ADVANCE") != std::string::npos); + CHECK(gcode == reference); + } +} + // The speeds, in percent, a G-code turns a fan on at: the part cooling fan for `M106 S`, the auxiliary // fan for `M106 P2 S`. static std::set fan_speeds(const std::string &gcode, const std::string &command) diff --git a/tests/fff_print/test_perimeters.cpp b/tests/fff_print/test_perimeters.cpp index 459ba0a178..6ab3473e3c 100644 --- a/tests/fff_print/test_perimeters.cpp +++ b/tests/fff_print/test_perimeters.cpp @@ -1,5 +1,10 @@ #include +#include +#include +#include +#include +#include #include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/ExtrusionEntityCollection.hpp" #include "libslic3r/Layer.hpp" @@ -10,8 +15,15 @@ #include #include +#include "libslic3r/PrintConfig.hpp" +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Point.hpp" #include #include +#include #include #include "test_helpers.hpp" diff --git a/tests/fff_print/test_precise_seam.cpp b/tests/fff_print/test_precise_seam.cpp index d324a91626..0dd422f0f5 100644 --- a/tests/fff_print/test_precise_seam.cpp +++ b/tests/fff_print/test_precise_seam.cpp @@ -1,9 +1,24 @@ #include +#include +#include +#include +#include +#include #include "test_helpers.hpp" #include "libslic3r/GCode/PreciseSeam.hpp" #include +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/Layer.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/GCode/SeamPlacer.hpp" +#include using namespace Slic3r; diff --git a/tests/fff_print/test_print.cpp b/tests/fff_print/test_print.cpp index 4176256021..9417934276 100644 --- a/tests/fff_print/test_print.cpp +++ b/tests/fff_print/test_print.cpp @@ -8,6 +8,20 @@ #include #endif +#include +#include +#include +#include +#include +#include "libslic3r/PrintConfig.hpp" +#include +#include "libslic3r/Surface.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintBase.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include + #include #include "libslic3r/libslic3r.h" diff --git a/tests/fff_print/test_printobject.cpp b/tests/fff_print/test_printobject.cpp index a373a1ad39..6671dabc4b 100644 --- a/tests/fff_print/test_printobject.cpp +++ b/tests/fff_print/test_printobject.cpp @@ -1,5 +1,11 @@ +#include #include +#include +#include +#include +#include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/Print.hpp" #include "libslic3r/Layer.hpp" @@ -10,7 +16,20 @@ #include "test_helpers.hpp" #include +#include #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Geometry.hpp" +#include "libslic3r/Surface.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/BoundingBox.hpp" #include #include #include diff --git a/tests/fff_print/test_seam_placer.cpp b/tests/fff_print/test_seam_placer.cpp index 81b7cd806c..40bbbdd117 100644 --- a/tests/fff_print/test_seam_placer.cpp +++ b/tests/fff_print/test_seam_placer.cpp @@ -1,5 +1,10 @@ #include +#include +#include +#include +#include +#include #include "test_helpers.hpp" #include "libslic3r/GCode/SeamPlacer.hpp" #include "libslic3r/Layer.hpp" @@ -7,6 +12,16 @@ #include #include +#include "libslic3r/Model.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/libslic3r.h" using namespace Slic3r; diff --git a/tests/fff_print/test_skirt_brim.cpp b/tests/fff_print/test_skirt_brim.cpp index 17a79a7828..d04b32361e 100644 --- a/tests/fff_print/test_skirt_brim.cpp +++ b/tests/fff_print/test_skirt_brim.cpp @@ -1,5 +1,11 @@ +#include #include +#include +#include +#include +#include +#include #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/Geometry.hpp" @@ -9,6 +15,16 @@ #include #include +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polyline.hpp" +#include +#include "libslic3r/Model.hpp" +#include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/libslic3r.h" +#include #include "test_helpers.hpp" // get access to init_print, etc diff --git a/tests/fff_print/test_slicing_pipeline_hook.cpp b/tests/fff_print/test_slicing_pipeline_hook.cpp index d7ebd1fd60..8b328e5dde 100644 --- a/tests/fff_print/test_slicing_pipeline_hook.cpp +++ b/tests/fff_print/test_slicing_pipeline_hook.cpp @@ -1,4 +1,14 @@ #include +#include "libslic3r/Config.hpp" +#include "libslic3r/Model.hpp" +#include +#include +#include "libslic3r/Surface.hpp" +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/ExtrusionEntity.hpp" #include "libslic3r/PrintConfig.hpp" #include "test_helpers.hpp" using namespace Slic3r; diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index 97a9cea9e1..d311130094 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -1,12 +1,28 @@ +#include #include +#include +#include +#include +#include +#include #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Layer.hpp" #include +#include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/PrintBase.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/PrintConfig.hpp" #include +#include #include #include +#include +#include +#include #include #include "test_helpers.hpp" // get access to init_print, etc diff --git a/tests/fff_print/test_texture_displacement.cpp b/tests/fff_print/test_texture_displacement.cpp index 459a42d185..87047af618 100644 --- a/tests/fff_print/test_texture_displacement.cpp +++ b/tests/fff_print/test_texture_displacement.cpp @@ -1,10 +1,22 @@ +#include +#include #include +#include +#include #include +#include #include #include +#include +#include +#include +#include +#include "libslic3r/PrintConfig.hpp" +#include +#include #include "libslic3r/Model.hpp" #include "libslic3r/PNGReadWrite.hpp" #include "libslic3r/Print.hpp" diff --git a/tests/fff_print/test_tree_support.cpp b/tests/fff_print/test_tree_support.cpp index fbb40bb8f3..677cf4359f 100644 --- a/tests/fff_print/test_tree_support.cpp +++ b/tests/fff_print/test_tree_support.cpp @@ -1,7 +1,15 @@ #include #include +#include +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/libslic3r.h" +#include +#include #include "libslic3r/Layer.hpp" #include "libslic3r/TriangleMesh.hpp" diff --git a/tests/fff_print/test_trianglemesh.cpp b/tests/fff_print/test_trianglemesh.cpp index b21f6299fd..722732e207 100644 --- a/tests/fff_print/test_trianglemesh.cpp +++ b/tests/fff_print/test_trianglemesh.cpp @@ -1,5 +1,6 @@ #include +#include #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/TriangleMeshSlicer.hpp" #include "libslic3r/Point.hpp" @@ -8,8 +9,14 @@ #include "libslic3r/libslic3r.h" #include +#include +#include +#include #include #include +#include +#include +#include "libslic3r/ExPolygon.hpp" //#include "test_options.hpp" #include "test_helpers.hpp" diff --git a/tests/fff_print/test_wipe.cpp b/tests/fff_print/test_wipe.cpp index 46ee0d6441..63cd847ccb 100644 --- a/tests/fff_print/test_wipe.cpp +++ b/tests/fff_print/test_wipe.cpp @@ -2,11 +2,27 @@ #include #include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/ExtrusionEntity.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/calib.hpp" +#include "libslic3r/ExtrusionEntityCollection.hpp" #include #include #include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/GCode/GCodeProcessor.hpp" #include "libslic3r/GCodeReader.hpp" #include "libslic3r/PrintConfig.hpp" diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index 014eab6f8b..da3cbe2502 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -1,8 +1,23 @@ +#include #include +#include "libslic3r/Config.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Point.hpp" +#include "libslic3r/Polygon.hpp" +#include +#include "libslic3r/Model.hpp" +#include "libslic3r/Print.hpp" #include #include +#include +#include +#include +#include +#include +#include +#include #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" diff --git a/tests/filament_group/fg_test_evaluator.hpp b/tests/filament_group/fg_test_evaluator.hpp index 00a2e1a6f5..ceec7cf154 100644 --- a/tests/filament_group/fg_test_evaluator.hpp +++ b/tests/filament_group/fg_test_evaluator.hpp @@ -2,13 +2,18 @@ #define FG_TEST_EVALUATOR_HPP #include "fg_test_serialization.hpp" +#include #include #include #include #include +#include +#include #include +#include #include +#include namespace Slic3r { namespace FGTest { diff --git a/tests/filament_group/fg_test_serialization.hpp b/tests/filament_group/fg_test_serialization.hpp index 5f59da619c..fa0ab3c9ff 100644 --- a/tests/filament_group/fg_test_serialization.hpp +++ b/tests/filament_group/fg_test_serialization.hpp @@ -1,6 +1,7 @@ #ifndef FG_TEST_SERIALIZATION_HPP #define FG_TEST_SERIALIZATION_HPP +#include #include #include #include @@ -10,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/tests/filament_group/fg_test_utils.hpp b/tests/filament_group/fg_test_utils.hpp index 2d2864bf10..b493e44607 100644 --- a/tests/filament_group/fg_test_utils.hpp +++ b/tests/filament_group/fg_test_utils.hpp @@ -2,9 +2,16 @@ #define FG_TEST_UTILS_HPP #include "fg_test_serialization.hpp" +#include "libslic3r/FilamentGroupUtils.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/FilamentGroup.hpp" +#include #include #include #include +#include +#include +#include namespace Slic3r { namespace FGTest { diff --git a/tests/filament_group/filament_group_regression_main.cpp b/tests/filament_group/filament_group_regression_main.cpp index b2cc4bd178..c8933e6b6e 100644 --- a/tests/filament_group/filament_group_regression_main.cpp +++ b/tests/filament_group/filament_group_regression_main.cpp @@ -11,13 +11,19 @@ #include +#include +#include +#include +#include #include "fg_test_serialization.hpp" #include "fg_test_evaluator.hpp" #include "fg_test_utils.hpp" +#include #include #include #include +#include "libslic3r/FilamentGroup.hpp" #include #include #include diff --git a/tests/libnest2d/libnest2d_test_utils.hpp b/tests/libnest2d/libnest2d_test_utils.hpp index 55f184f60c..b9f8510a8a 100644 --- a/tests/libnest2d/libnest2d_test_utils.hpp +++ b/tests/libnest2d/libnest2d_test_utils.hpp @@ -8,7 +8,10 @@ // it here and include this header from every libnest2d test file. #include +#include +#include "libnest2d/common.hpp" +#include "libnest2d/geometry_traits_nfp.hpp" #include #include diff --git a/tests/libnest2d/libnest2d_tests.cpp b/tests/libnest2d/libnest2d_tests.cpp index 1657d45601..f5e3263b89 100644 --- a/tests/libnest2d/libnest2d_tests.cpp +++ b/tests/libnest2d/libnest2d_tests.cpp @@ -1,5 +1,10 @@ #include +#include "libnest2d/libnest2d.hpp" +#include +#include +#include "libnest2d/nester.hpp" +#include #include "libnest2d_test_utils.hpp" using namespace libnest2d; diff --git a/tests/libnest2d/printer_parts.hpp b/tests/libnest2d/printer_parts.hpp index 075e32a837..07a3e9153d 100644 --- a/tests/libnest2d/printer_parts.hpp +++ b/tests/libnest2d/printer_parts.hpp @@ -1,6 +1,7 @@ #ifndef PRINTER_PARTS_H #define PRINTER_PARTS_H +#include "libnest2d/backends/libslic3r/geometries.hpp" #include #include diff --git a/tests/libnest2d/test_geometry.cpp b/tests/libnest2d/test_geometry.cpp index 9c58a299e4..e32c47042a 100644 --- a/tests/libnest2d/test_geometry.cpp +++ b/tests/libnest2d/test_geometry.cpp @@ -1,5 +1,24 @@ +#include +#include +#include #include +#include +#include "libnest2d/libnest2d.hpp" +#include "libnest2d/geometry_traits.hpp" +#include "libnest2d/backends/libslic3r/geometries.hpp" +#include "libnest2d/common.hpp" +#include +#include +#include "libnest2d/placers/nfpplacer.hpp" +#include +#include +#include +#include +#include "libnest2d/utils/rotcalipers.hpp" +#include +#include +#include #include "libnest2d_test_utils.hpp" #include "printer_parts.hpp" diff --git a/tests/libnest2d/test_nfp.cpp b/tests/libnest2d/test_nfp.cpp index 1b5c5d3a1c..fdb43f7bfa 100644 --- a/tests/libnest2d/test_nfp.cpp +++ b/tests/libnest2d/test_nfp.cpp @@ -1,5 +1,17 @@ +#include #include +#include "libnest2d/libnest2d.hpp" +#include +#include "libnest2d/geometry_traits.hpp" +#include "libnest2d/backends/libslic3r/geometries.hpp" +#include "libnest2d/geometry_traits_nfp.hpp" +#include "libnest2d/utils/boost_alg.hpp" +#include "libnest2d/placers/nfpplacer.hpp" +#include +#include +#include +#include #include "libnest2d_test_utils.hpp" using namespace libnest2d; diff --git a/tests/libnest2d/test_nfp_placer.cpp b/tests/libnest2d/test_nfp_placer.cpp index 4446333f5d..02b711ec9d 100644 --- a/tests/libnest2d/test_nfp_placer.cpp +++ b/tests/libnest2d/test_nfp_placer.cpp @@ -1,5 +1,13 @@ #include +#include "libnest2d/libnest2d.hpp" +#include +#include +#include "libnest2d/geometry_traits.hpp" +#include "libnest2d/common.hpp" +#include +#include +#include #include "libnest2d_test_utils.hpp" using namespace libnest2d; diff --git a/tests/libslic3r/libslic3r_tests.cpp b/tests/libslic3r/libslic3r_tests.cpp index a46b69d124..178a869648 100644 --- a/tests/libslic3r/libslic3r_tests.cpp +++ b/tests/libslic3r/libslic3r_tests.cpp @@ -1,5 +1,10 @@ #include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include #include "libslic3r/Utils.hpp" #define NANOSVG_IMPLEMENTATION #include "nanosvg/nanosvg.h" diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 2a510c37a6..b0063f09db 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -1,4 +1,9 @@ +#include +#include +#include +#include +#include #include "libslic3r/Model.hpp" #include "libslic3r/Format/3mf.hpp" #include "libslic3r/Format/bbs_3mf.hpp" @@ -15,6 +20,15 @@ #include "test_utils.hpp" +#include "libslic3r/Config.hpp" +#include "libslic3r/Geometry.hpp" +#include +#include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/TriangleSelector.hpp" +#include +#include +#include #include #include @@ -26,8 +40,12 @@ #include #include #include +#include +#include #include // for std::enable_if_t #include // for typeid +#include +#include namespace Catch { template diff --git a/tests/libslic3r/test_aabbindirect.cpp b/tests/libslic3r/test_aabbindirect.cpp index 122e4756f1..e97b8d193b 100644 --- a/tests/libslic3r/test_aabbindirect.cpp +++ b/tests/libslic3r/test_aabbindirect.cpp @@ -1,8 +1,13 @@ #include +#include +#include #include "test_utils.hpp" +#include +#include #include #include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_appconfig.cpp b/tests/libslic3r/test_appconfig.cpp index d3811c9827..3eb35d7490 100644 --- a/tests/libslic3r/test_appconfig.cpp +++ b/tests/libslic3r/test_appconfig.cpp @@ -1,5 +1,6 @@ #include +#include #include "libslic3r/AppConfig.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_arachne_walls.cpp b/tests/libslic3r/test_arachne_walls.cpp index 2b6580ed11..be4df5d3b1 100644 --- a/tests/libslic3r/test_arachne_walls.cpp +++ b/tests/libslic3r/test_arachne_walls.cpp @@ -17,6 +17,9 @@ #include +#include +#include +#include #include "libslic3r/Arachne/WallToolPaths.hpp" #include "libslic3r/Arachne/SkeletalTrapezoidation.hpp" #include "libslic3r/Arachne/utils/ExtrusionLine.hpp" @@ -31,6 +34,14 @@ #include #include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include "libslic3r/Arachne/utils/ExtrusionJunction.hpp" +#include "libslic3r/PerimeterGenerator.hpp" +#include "libslic3r/PrintConfig.hpp" using namespace Slic3r; using namespace Slic3r::Arachne; diff --git a/tests/libslic3r/test_arrange.cpp b/tests/libslic3r/test_arrange.cpp index 3906cba8ba..2f8df3166a 100644 --- a/tests/libslic3r/test_arrange.cpp +++ b/tests/libslic3r/test_arrange.cpp @@ -1,5 +1,19 @@ +#include #include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Config.hpp" +#include +#include +#include +#include +#include +#include +#include +#include #include "libslic3r/Arrange.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ClipperUtils.hpp" diff --git a/tests/libslic3r/test_bambu_networking.cpp b/tests/libslic3r/test_bambu_networking.cpp index 5cf55030f8..ec16e96c19 100644 --- a/tests/libslic3r/test_bambu_networking.cpp +++ b/tests/libslic3r/test_bambu_networking.cpp @@ -1,5 +1,6 @@ #include +#include #include "slic3r/Utils/bambu_networking.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_buildvolume.cpp b/tests/libslic3r/test_buildvolume.cpp index b2e8040d68..3438f7517f 100644 --- a/tests/libslic3r/test_buildvolume.cpp +++ b/tests/libslic3r/test_buildvolume.cpp @@ -1,5 +1,10 @@ #include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include #include "libslic3r/BuildVolume.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_caddocument.cpp b/tests/libslic3r/test_caddocument.cpp index d69ada09b6..afb4acf409 100644 --- a/tests/libslic3r/test_caddocument.cpp +++ b/tests/libslic3r/test_caddocument.cpp @@ -1,4 +1,23 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/TriangleMesh.hpp" +#include +#include // Substring assertions, spelled so this file compiles UNCHANGED on both forks. // Catch2 v2 (Snapmaker) spells it Matchers::Contains; v3 (orca_cad / mainline) spells it diff --git a/tests/libslic3r/test_calib.cpp b/tests/libslic3r/test_calib.cpp index 0092a7dedd..81fa59ff93 100644 --- a/tests/libslic3r/test_calib.cpp +++ b/tests/libslic3r/test_calib.cpp @@ -1,9 +1,13 @@ #include #include +#include "libslic3r/CustomGCode.hpp" #include #include +#include +#include +#include #include "libslic3r/calib.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/TriangleMesh.hpp" diff --git a/tests/libslic3r/test_clipper_offset.cpp b/tests/libslic3r/test_clipper_offset.cpp index ecf14a60c8..7a816a2174 100644 --- a/tests/libslic3r/test_clipper_offset.cpp +++ b/tests/libslic3r/test_clipper_offset.cpp @@ -1,8 +1,15 @@ #include +#include #include #include +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/Polygon.hpp" +#include +#include +#include #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ExPolygon.hpp" #include "libslic3r/SVG.hpp" diff --git a/tests/libslic3r/test_clipper_utils.cpp b/tests/libslic3r/test_clipper_utils.cpp index ddec07089b..3b32bba7cf 100644 --- a/tests/libslic3r/test_clipper_utils.cpp +++ b/tests/libslic3r/test_clipper_utils.cpp @@ -1,9 +1,17 @@ +#include #include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Polyline.hpp" +#include +#include "libslic3r/libslic3r.h" #include #include #include +#include +#include +#include #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ExPolygon.hpp" #include "libslic3r/SVG.hpp" diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index 6b44baf97b..400ee389ff 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -1,5 +1,10 @@ #include +#include +#include +#include +#include +#include #include "libslic3r/PrintConfig.hpp" #include "libslic3r/PrintConfigConstants.hpp" #include "libslic3r/LocalesUtils.hpp" @@ -13,9 +18,16 @@ #include #include +#include "libslic3r/Config.hpp" +#include +#include +#include #include +#include #include +#include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_config_variant_expansion.cpp b/tests/libslic3r/test_config_variant_expansion.cpp index f30ad985e3..240a6e25fa 100644 --- a/tests/libslic3r/test_config_variant_expansion.cpp +++ b/tests/libslic3r/test_config_variant_expansion.cpp @@ -1,5 +1,15 @@ #include +#include "libslic3r/Config.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "libslic3r/PrintConfig.hpp" #include "libslic3r/Preset.hpp" diff --git a/tests/libslic3r/test_drc.cpp b/tests/libslic3r/test_drc.cpp index 917fd5c714..06a329e4e3 100644 --- a/tests/libslic3r/test_drc.cpp +++ b/tests/libslic3r/test_drc.cpp @@ -1,12 +1,21 @@ #include +#include #include "libslic3r/Format/DRC.hpp" #include "libslic3r/TriangleMesh.hpp" #include +#include +#include +#include +#include #include +#include +#include #include +#include +#include #include "test_utils.hpp" diff --git a/tests/libslic3r/test_elephant_foot_compensation.cpp b/tests/libslic3r/test_elephant_foot_compensation.cpp index ab9700a305..6388dab184 100644 --- a/tests/libslic3r/test_elephant_foot_compensation.cpp +++ b/tests/libslic3r/test_elephant_foot_compensation.cpp @@ -2,7 +2,11 @@ #include #include +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/libslic3r.h" +#include #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ElephantFootCompensation.hpp" #include "libslic3r/ExPolygon.hpp" diff --git a/tests/libslic3r/test_filament_mixer.cpp b/tests/libslic3r/test_filament_mixer.cpp index ade0c910dc..f43a8e7588 100644 --- a/tests/libslic3r/test_filament_mixer.cpp +++ b/tests/libslic3r/test_filament_mixer.cpp @@ -1,5 +1,13 @@ #include +#include +#include +#include "libslic3r/Config.hpp" +#include +#include +#include +#include +#include #include "libslic3r/FilamentMixer.hpp" #include "libslic3r/PrintConfig.hpp" diff --git a/tests/libslic3r/test_fill_corner_smoothing.cpp b/tests/libslic3r/test_fill_corner_smoothing.cpp index a9e752f250..ebad09e9e5 100644 --- a/tests/libslic3r/test_fill_corner_smoothing.cpp +++ b/tests/libslic3r/test_fill_corner_smoothing.cpp @@ -2,8 +2,12 @@ #include #include +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/Polygon.hpp" #include +#include #include "libslic3r/Fill/FillCornerSmoothing.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/libslic3r.h" diff --git a/tests/libslic3r/test_fill_plane_path.cpp b/tests/libslic3r/test_fill_plane_path.cpp index 7fc7f4a6b0..e28d74b4fc 100644 --- a/tests/libslic3r/test_fill_plane_path.cpp +++ b/tests/libslic3r/test_fill_plane_path.cpp @@ -2,9 +2,18 @@ #include #include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/Fill/FillBase.hpp" +#include +#include +#include "libslic3r/Config.hpp" #include #include +#include +#include +#include #include "libslic3r/Fill/FillPlanePath.hpp" #include "libslic3r/PrintConfig.hpp" diff --git a/tests/libslic3r/test_geometry.cpp b/tests/libslic3r/test_geometry.cpp index b4bbe86cc6..6f12b1113a 100644 --- a/tests/libslic3r/test_geometry.cpp +++ b/tests/libslic3r/test_geometry.cpp @@ -1,5 +1,8 @@ +#include #include +#include +#include #include "libslic3r/Point.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Polygon.hpp" @@ -17,7 +20,14 @@ #include "../libnest2d/printer_parts.hpp" +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include #include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_hollowing.cpp b/tests/libslic3r/test_hollowing.cpp index dc39b47373..6e1baef4cc 100644 --- a/tests/libslic3r/test_hollowing.cpp +++ b/tests/libslic3r/test_hollowing.cpp @@ -1,7 +1,10 @@ #include #include #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/libslic3r.h" +#include #include "libslic3r/SLA/Hollowing.hpp" #include "test_utils.hpp" diff --git a/tests/libslic3r/test_indexed_triangle_set.cpp b/tests/libslic3r/test_indexed_triangle_set.cpp index 43116936d3..c65bf589a8 100644 --- a/tests/libslic3r/test_indexed_triangle_set.cpp +++ b/tests/libslic3r/test_indexed_triangle_set.cpp @@ -1,8 +1,17 @@ +#include +#include +#include #include #include +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include #include #include +#include +#include +#include #include "libslic3r/TriangleMesh.hpp" #include "test_utils.hpp" diff --git a/tests/libslic3r/test_instance_lock.cpp b/tests/libslic3r/test_instance_lock.cpp index 207dd77173..5ee14c665f 100644 --- a/tests/libslic3r/test_instance_lock.cpp +++ b/tests/libslic3r/test_instance_lock.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -6,6 +7,7 @@ #include +#include #include "libslic3r/InstanceLock.hpp" #include "test_utils.hpp" diff --git a/tests/libslic3r/test_lay_on_face.cpp b/tests/libslic3r/test_lay_on_face.cpp index 60226a9aab..76a197efe7 100644 --- a/tests/libslic3r/test_lay_on_face.cpp +++ b/tests/libslic3r/test_lay_on_face.cpp @@ -1,5 +1,15 @@ #include +#include "libslic3r/Point.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include +#include #include "libslic3r/LayOnFace.hpp" #include "libslic3r/Model.hpp" diff --git a/tests/libslic3r/test_locales_utils.cpp b/tests/libslic3r/test_locales_utils.cpp index 6f1528649d..7de755e15c 100644 --- a/tests/libslic3r/test_locales_utils.cpp +++ b/tests/libslic3r/test_locales_utils.cpp @@ -1,7 +1,9 @@ #include #include +#include +#include #include "libslic3r/LocalesUtils.hpp" using namespace Slic3r; @@ -67,3 +69,22 @@ TEST_CASE("a setter nested in another sets C again when the locale changed betwe CHECK_FALSE(is_decimal_separator_point()); } } + +TEST_CASE("atof_decimal_point parses what atof parses in the C locale", "[LocalesUtils]") +{ + const auto [text, value] = GENERATE(table({ + { "5", 5. }, + { " 12.5", 12.5 }, + { "\t+3", 3. }, + { "\r\n7", 7. }, + { "-1.25", -1.25 }, + { "1e2", 100. }, + { ".5", 0.5 }, + { "12.5;comment", 12.5 }, + { "+-5", 0. }, + { "", 0. }, + { "abc", 0. }, + })); + INFO(text); + CHECK_THAT(atof_decimal_point(text), Catch::Matchers::WithinAbs(value, 1e-12)); +} diff --git a/tests/libslic3r/test_marchingsquares.cpp b/tests/libslic3r/test_marchingsquares.cpp index 9a11f49faa..e9d0f8ebc2 100644 --- a/tests/libslic3r/test_marchingsquares.cpp +++ b/tests/libslic3r/test_marchingsquares.cpp @@ -2,6 +2,28 @@ #define NOMINMAX #endif +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Polygon.hpp" +#include +#include +#include "libslic3r/SLA/RasterBase.hpp" +#include +#include +#include +#include +#include "libslic3r/ExPolygon.hpp" +#include +#include +#include +#include +#include "libslic3r/TriangleMesh.hpp" +#include +#include + #include #include "test_utils.hpp" diff --git a/tests/libslic3r/test_meshboolean.cpp b/tests/libslic3r/test_meshboolean.cpp index b7208349cc..4c0faa1bb0 100644 --- a/tests/libslic3r/test_meshboolean.cpp +++ b/tests/libslic3r/test_meshboolean.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include "test_utils.hpp" #include diff --git a/tests/libslic3r/test_minimum_spanning_tree.cpp b/tests/libslic3r/test_minimum_spanning_tree.cpp index 5f9998171c..b6685b0d1e 100644 --- a/tests/libslic3r/test_minimum_spanning_tree.cpp +++ b/tests/libslic3r/test_minimum_spanning_tree.cpp @@ -1,7 +1,11 @@ #include #include +#include +#include +#include +#include #include "libslic3r/MinimumSpanningTree.hpp" #include "libslic3r/Point.hpp" diff --git a/tests/libslic3r/test_miniz_extension.cpp b/tests/libslic3r/test_miniz_extension.cpp index ff3274a886..3a10a8eb8e 100644 --- a/tests/libslic3r/test_miniz_extension.cpp +++ b/tests/libslic3r/test_miniz_extension.cpp @@ -1,5 +1,12 @@ +#include +#include +#include +#include #include +#include +#include +#include #include "libslic3r/miniz_extension.hpp" #include "test_utils.hpp" @@ -7,8 +14,11 @@ #include #include +#include #include +#include #include +#include #include #include #include diff --git a/tests/libslic3r/test_model.cpp b/tests/libslic3r/test_model.cpp index 3a580e3be2..24d690ac9e 100644 --- a/tests/libslic3r/test_model.cpp +++ b/tests/libslic3r/test_model.cpp @@ -1,5 +1,10 @@ #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/Point.hpp" +#include #include "libslic3r/Model.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_multimaterial_segmentation.cpp b/tests/libslic3r/test_multimaterial_segmentation.cpp index 271b9d5660..065a143ce1 100644 --- a/tests/libslic3r/test_multimaterial_segmentation.cpp +++ b/tests/libslic3r/test_multimaterial_segmentation.cpp @@ -3,6 +3,12 @@ // MultiMaterialSegmentation.hpp declares boost::polygon traits for ColoredLine, so its // geometry/boost dependencies must be included first. #include +#include +#include +#include +#include +#include +#include #include "libslic3r/Line.hpp" #include "libslic3r/Flow.hpp" #include "libslic3r/MultiMaterialSegmentation.hpp" diff --git a/tests/libslic3r/test_mutable_polygon.cpp b/tests/libslic3r/test_mutable_polygon.cpp index 906dffe50a..a233454427 100644 --- a/tests/libslic3r/test_mutable_polygon.cpp +++ b/tests/libslic3r/test_mutable_polygon.cpp @@ -1,5 +1,9 @@ #include +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/Polygon.hpp" +#include #include "libslic3r/Point.hpp" #include "libslic3r/MutablePolygon.hpp" diff --git a/tests/libslic3r/test_mutable_priority_queue.cpp b/tests/libslic3r/test_mutable_priority_queue.cpp index db7124df78..67191793da 100644 --- a/tests/libslic3r/test_mutable_priority_queue.cpp +++ b/tests/libslic3r/test_mutable_priority_queue.cpp @@ -1,8 +1,15 @@ +#include #include #include +#include +#include +#include +#include #include +#include +#include #include "libslic3r/MutablePriorityQueue.hpp" // based on https://raw.githubusercontent.com/rollbear/prio_queue/master/self_test.cpp diff --git a/tests/libslic3r/test_nozzle_volume_type.cpp b/tests/libslic3r/test_nozzle_volume_type.cpp index 99ad375f93..289133bb03 100644 --- a/tests/libslic3r/test_nozzle_volume_type.cpp +++ b/tests/libslic3r/test_nozzle_volume_type.cpp @@ -1,5 +1,9 @@ #include +#include +#include "libslic3r/Config.hpp" +#include +#include #include "libslic3r/PrintConfig.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_obj.cpp b/tests/libslic3r/test_obj.cpp index 2cbf57ff04..abab016b2a 100644 --- a/tests/libslic3r/test_obj.cpp +++ b/tests/libslic3r/test_obj.cpp @@ -1,9 +1,16 @@ +#include #include +#include +#include +#include #include "libslic3r/TriangleMesh.hpp" #include "libslic3r/Format/OBJ.hpp" #include +#include +#include "libslic3r/Point.hpp" +#include #include "test_utils.hpp" diff --git a/tests/libslic3r/test_optimizers.cpp b/tests/libslic3r/test_optimizers.cpp index 8783ac1428..232481f23c 100644 --- a/tests/libslic3r/test_optimizers.cpp +++ b/tests/libslic3r/test_optimizers.cpp @@ -1,9 +1,13 @@ #include +#include #include "test_utils.hpp" +#include #include #include +#include "libslic3r/Optimize/Optimizer.hpp" +#include "libslic3r/libslic3r.h" void check_opt_result(double score, double ref, double abs_err, double rel_err) { diff --git a/tests/libslic3r/test_ordering_strategies.cpp b/tests/libslic3r/test_ordering_strategies.cpp index ddbca07ae6..f6e0cd94f2 100644 --- a/tests/libslic3r/test_ordering_strategies.cpp +++ b/tests/libslic3r/test_ordering_strategies.cpp @@ -1,4 +1,12 @@ +#include #include +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include #define SLIC3R_TEST_HARNESS diff --git a/tests/libslic3r/test_parallel_resolve.cpp b/tests/libslic3r/test_parallel_resolve.cpp index 76811f1475..4e7e52dca2 100644 --- a/tests/libslic3r/test_parallel_resolve.cpp +++ b/tests/libslic3r/test_parallel_resolve.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -9,6 +10,7 @@ #include #include +#include #include "libslic3r/ParallelResolve.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_placeholder_parser.cpp b/tests/libslic3r/test_placeholder_parser.cpp index 4a95156c34..0a490a6bdd 100644 --- a/tests/libslic3r/test_placeholder_parser.cpp +++ b/tests/libslic3r/test_placeholder_parser.cpp @@ -1,5 +1,12 @@ #include +#include +#include +#include "libslic3r/Config.hpp" +#include +#include +#include +#include #include "libslic3r/PlaceholderParser.hpp" #include "libslic3r/PrintConfig.hpp" diff --git a/tests/libslic3r/test_polygon.cpp b/tests/libslic3r/test_polygon.cpp index feae4ff50c..08fd21d3c0 100644 --- a/tests/libslic3r/test_polygon.cpp +++ b/tests/libslic3r/test_polygon.cpp @@ -1,5 +1,9 @@ +#include #include +#include +#include "libslic3r/libslic3r.h" +#include #include "libslic3r/Point.hpp" #include "libslic3r/Polygon.hpp" diff --git a/tests/libslic3r/test_precise_seam_3mf.cpp b/tests/libslic3r/test_precise_seam_3mf.cpp index 6449236744..cda140ebce 100644 --- a/tests/libslic3r/test_precise_seam_3mf.cpp +++ b/tests/libslic3r/test_precise_seam_3mf.cpp @@ -1,5 +1,10 @@ #include +#include +#include +#include +#include +#include #include "test_utils.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/PrintConfig.hpp" @@ -12,7 +17,13 @@ #include #include +#include "libslic3r/Config.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include +#include "libslic3r/Geometry.hpp" +#include #include +#include #include using namespace Slic3r; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 8e5f456699..deba00a453 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1,9 +1,19 @@ +#include +#include +#include +#include #include #include #include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/PresetBundle.hpp" #include "libslic3r/IMEXHelpers.hpp" #include "libslic3r/ParallelResolve.hpp" @@ -18,6 +28,19 @@ #include #include #include +#include +#include +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Preset.hpp" +#include +#include "libslic3r/Config.hpp" +#include +#include "libslic3r/libslic3r.h" +#include "libslic3r/PublishSettings.hpp" +#include +#include "libslic3r/TriangleSelector.hpp" +#include +#include #ifndef _WIN32 #include // geteuid @@ -5815,6 +5838,131 @@ TEST_CASE("A system preset no vendor lists is not resolved", "[Preset][Bundle]") namespace { +// Writes each vendor's preset cache into dir, then deletes its profile JSONs: what a release build installs. +void reduce_vendors_to_caches(const fs::path &dir, const std::vector &vendor_ids) +{ + const std::string lib(PresetBundle::ORCA_FILAMENT_LIBRARY); + PresetBundle library; + if (fs::exists(dir / (lib + ".json"))) { + library.set_generate_vendor_caches(true); + library.load_vendor_configs_from_json(dir.string(), lib, PresetBundle::LoadSystem, + ForwardCompatibilitySubstitutionRule::EnableSilent); + } + for (const std::string &vendor_id : vendor_ids) { + if (vendor_id == lib) + continue; + PresetBundle writer; + writer.set_generate_vendor_caches(true); + writer.load_vendor_configs_from_json(dir.string(), vendor_id, PresetBundle::LoadSystem, + ForwardCompatibilitySubstitutionRule::EnableSilent, &library); + } + for (const std::string &vendor_id : vendor_ids) { + REQUIRE(fs::exists(dir / (vendor_id + ".opc"))); + fs::remove(dir / (vendor_id + ".json")); + fs::remove_all(dir / vendor_id); + } +} + +// The filament library with one abstract base filament, and an "Acme" vendor whose one filament inherits it. +void write_library_and_acme_filament(const fs::path &root) +{ + const std::string lib(PresetBundle::ORCA_FILAMENT_LIBRARY); + fs::create_directories(root / lib / "filament"); + std::ofstream((root / (lib + ".json")).string()) + << R"({"version":"1.0.0","name":")" << lib << R"(",)" + << R"("filament_list":[{"name":"Generic PLA","sub_path":"filament/generic_pla.json"}]})"; + std::ofstream((root / lib / "filament" / "generic_pla.json").string()) + << R"({"type":"filament","name":"Generic PLA","from":"system","instantiation":"false","filament_id":"GFL99","filament_cost":"27"})"; + fs::create_directories(root / "Acme" / "filament"); + std::ofstream((root / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","filament_list":[{"name":"Acme PLA","sub_path":"filament/pla.json"}]})"; + std::ofstream((root / "Acme" / "filament" / "pla.json").string()) + << R"({"type":"filament","name":"Acme PLA","from":"system","instantiation":"true","inherits":"Generic PLA"})"; +} + +} // namespace + +TEST_CASE("A read-only load resolves a user preset against vendors installed as their cache alone", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir temp_dir; + const fs::path data = temp_dir.path() / "data"; + const fs::path system = data / PRESET_SYSTEM_DIR; + ScopedDataDir scoped_data(data); + ScopedResourcesDir scoped_resources(temp_dir.path() / "resources"); + write_acme_printer_vendor(system, 33.); + reduce_vendors_to_caches(system, {"Acme"}); + + fs::create_directories(data / PRESET_USER_DIR / DEFAULT_USER_FOLDER_NAME / PRESET_PRINTER_NAME); + std::ofstream((data / PRESET_USER_DIR / DEFAULT_USER_FOLDER_NAME / PRESET_PRINTER_NAME / "My Acme.json").string()) + << R"({"type":"machine","name":"My Acme","from":"User","version":"2.3.0.0","inherits":"Acme Printer","printable_height":"123"})"; + + AppConfig app_config; + PresetBundle bundle; + std::string errors; + bundle.load_presets(app_config, ForwardCompatibilitySubstitutionRule::EnableSilent, PresetBundle::PresetPreferences(), + &errors, true); + CHECK(errors.empty()); + const Preset *preset = bundle.printers.find_preset("My Acme"); + REQUIRE(preset != nullptr); + CHECK_THAT(preset->config.opt_float("printable_height"), Catch::Matchers::WithinAbs(123., 1e-6)); + CHECK_THAT(preset->config.opt_float("extruder_clearance_dist_to_rod"), Catch::Matchers::WithinAbs(33., 1e-6)); +} + +TEST_CASE("A read-only load writes no preset cache", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir temp_dir; + const fs::path system = temp_dir.path() / "data" / PRESET_SYSTEM_DIR; + ScopedDataDir scoped_data(temp_dir.path() / "data"); + ScopedResourcesDir scoped_resources(temp_dir.path() / "resources"); + write_acme_printer_vendor(system, 33.); + + AppConfig app_config; + PresetBundle bundle; + std::string errors; + bundle.load_presets(app_config, ForwardCompatibilitySubstitutionRule::EnableSilent, PresetBundle::PresetPreferences(), + &errors, true); + CHECK(errors.empty()); + CHECK(bundle.printers.find_preset("Acme Printer") != nullptr); + CHECK_FALSE(fs::exists(system / "Acme.opc")); +} + +TEST_CASE("A vendor updated over the air resolves against the library installed as its cache alone", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir temp_dir; + const fs::path system = temp_dir.path() / "data" / PRESET_SYSTEM_DIR; + ScopedDataDir scoped_data(temp_dir.path() / "data"); + ScopedResourcesDir scoped_resources(temp_dir.path() / "resources"); + // System presets are found by name through the bundled profiles. + write_library_and_acme_filament(temp_dir.path() / "resources" / PRESET_PROFILES_DIR); + // The release install, then an update that brings Acme back as JSONs while the library stays a cache. + write_library_and_acme_filament(system); + reduce_vendors_to_caches(system, {PresetBundle::ORCA_FILAMENT_LIBRARY, "Acme"}); + write_library_and_acme_filament(temp_dir.path() / "update"); + fs::copy_file(temp_dir.path() / "update" / "Acme.json", system / "Acme.json"); + fs::create_directories(system / "Acme" / "filament"); + fs::copy_file(temp_dir.path() / "update" / "Acme" / "filament" / "pla.json", system / "Acme" / "filament" / "pla.json"); + + SECTION("by name") { + PresetBundle bundle; + DynamicPrintConfig config; + std::string error; + REQUIRE(bundle.resolve_system_preset(config, Preset::TYPE_FILAMENT, "Acme PLA", + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK_THAT(config.opt("filament_cost")->values.front(), Catch::Matchers::WithinAbs(27., 1e-6)); + } + SECTION("by its source file") { + PresetBundle bundle; + DynamicPrintConfig config; + config.option(BBL_JSON_KEY_INHERITS, true)->value = "Generic PLA"; + std::string error; + REQUIRE(bundle.resolve_preset_config(config, Preset::TYPE_FILAMENT, (system / "Acme" / "filament" / "pla.json").string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK_THAT(config.opt("filament_cost")->values.front(), Catch::Matchers::WithinAbs(27., 1e-6)); + } +} + +namespace { + // A default preset config for type, built the way PresetBundle builds its default presets. DynamicPrintConfig external_default_config(Preset::Type type) { diff --git a/tests/libslic3r/test_preset_diff.cpp b/tests/libslic3r/test_preset_diff.cpp index 22255c049e..036e2aa922 100644 --- a/tests/libslic3r/test_preset_diff.cpp +++ b/tests/libslic3r/test_preset_diff.cpp @@ -1,9 +1,15 @@ #include +#include +#include #include "libslic3r/Preset.hpp" #include "libslic3r/PrintConfig.hpp" #include +#include "libslic3r/Config.hpp" +#include +#include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_preset_options.cpp b/tests/libslic3r/test_preset_options.cpp index 1763f5fbc7..cf878ca9f8 100644 --- a/tests/libslic3r/test_preset_options.cpp +++ b/tests/libslic3r/test_preset_options.cpp @@ -16,10 +16,14 @@ #include +#include +#include #include "libslic3r/Preset.hpp" #include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Config.hpp" #include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_preset_setting_id.cpp b/tests/libslic3r/test_preset_setting_id.cpp index 5c06335381..0b5736ad26 100644 --- a/tests/libslic3r/test_preset_setting_id.cpp +++ b/tests/libslic3r/test_preset_setting_id.cpp @@ -1,5 +1,8 @@ #include +#include +#include +#include #include "libslic3r/Preset.hpp" using namespace Slic3r; diff --git a/tests/libslic3r/test_sketchconstraints.cpp b/tests/libslic3r/test_sketchconstraints.cpp index d0c5844b40..2142398e68 100644 --- a/tests/libslic3r/test_sketchconstraints.cpp +++ b/tests/libslic3r/test_sketchconstraints.cpp @@ -1,4 +1,11 @@ #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include +#include +#include +#include +#include +#include +#include #include "libslic3r/CAD/SketchConstraints.hpp" #include "libslic3r/CAD/SketchEngine.hpp" diff --git a/tests/libslic3r/test_sketchedit.cpp b/tests/libslic3r/test_sketchedit.cpp index 634e743b99..b289b71e69 100644 --- a/tests/libslic3r/test_sketchedit.cpp +++ b/tests/libslic3r/test_sketchedit.cpp @@ -1,9 +1,16 @@ +#include +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include +#include +#include #include "libslic3r/CAD/SketchEngine.hpp" #include #include #include #include +#include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_sketchimport.cpp b/tests/libslic3r/test_sketchimport.cpp index 3e3f7c906e..3e6636fd7d 100644 --- a/tests/libslic3r/test_sketchimport.cpp +++ b/tests/libslic3r/test_sketchimport.cpp @@ -1,10 +1,16 @@ +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include +#include +#include #include "libslic3r/CAD/SketchImport.hpp" #include "libslic3r/Utils.hpp" // resources_dir #include "test_utils.hpp" // ScopedTemporaryFile +#include #include +#include "libslic3r/Point.hpp" #include using namespace Slic3r; diff --git a/tests/libslic3r/test_sketchinference.cpp b/tests/libslic3r/test_sketchinference.cpp index cbdd90628b..6ff9768b8f 100644 --- a/tests/libslic3r/test_sketchinference.cpp +++ b/tests/libslic3r/test_sketchinference.cpp @@ -1,4 +1,9 @@ +#include +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include "libslic3r/CAD/SketchEngine.hpp" +#include "libslic3r/Point.hpp" +#include using Catch::Approx; // v3 scopes Approx into the Catch namespace; v2 had it at global scope #include "libslic3r/CAD/SketchInference.hpp" diff --git a/tests/libslic3r/test_sketchprofile.cpp b/tests/libslic3r/test_sketchprofile.cpp index 7f455eb936..6c33599847 100644 --- a/tests/libslic3r/test_sketchprofile.cpp +++ b/tests/libslic3r/test_sketchprofile.cpp @@ -9,11 +9,19 @@ // So these cases assert the loop, not the coordinates. That is the invariant every sketch // operation has to preserve and the only one that predicts whether the GUI can build a solid // out of the result. +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include +#include +#include #include "libslic3r/CAD/SketchEngine.hpp" #include #include #include +#include "libslic3r/Point.hpp" +#include +#include +#include using namespace Slic3r; using Catch::Matchers::WithinAbs; diff --git a/tests/libslic3r/test_slvs_constraints.cpp b/tests/libslic3r/test_slvs_constraints.cpp index 6dfac07348..4f5c27ba7d 100644 --- a/tests/libslic3r/test_slvs_constraints.cpp +++ b/tests/libslic3r/test_slvs_constraints.cpp @@ -1,4 +1,9 @@ +#include +#include #include // mainline OrcaSlicer ships Catch2 v3 (v2 was catch2/catch.hpp) +#include "libslic3r/Point.hpp" +#include +#include using Catch::Approx; // v3 scopes Approx into the Catch namespace; v2 had it at global scope #include "libslic3r/CAD/SketchSolver.hpp" diff --git a/tests/libslic3r/test_step.cpp b/tests/libslic3r/test_step.cpp index a2aa7218f1..3635c977dd 100644 --- a/tests/libslic3r/test_step.cpp +++ b/tests/libslic3r/test_step.cpp @@ -1,7 +1,11 @@ #include #include +#include +#include +#include +#include #include "libslic3r/Model.hpp" #include "libslic3r/Format/STEP.hpp" #include "test_utils.hpp" diff --git a/tests/libslic3r/test_stl.cpp b/tests/libslic3r/test_stl.cpp index a8addeca16..0223392c3f 100644 --- a/tests/libslic3r/test_stl.cpp +++ b/tests/libslic3r/test_stl.cpp @@ -1,5 +1,8 @@ #include +#include +#include "libslic3r/Point.hpp" +#include #include "libslic3r/Model.hpp" #include "libslic3r/Format/STL.hpp" diff --git a/tests/libslic3r/test_texture_displacement.cpp b/tests/libslic3r/test_texture_displacement.cpp index 04713d3fd9..1d9a89481b 100644 --- a/tests/libslic3r/test_texture_displacement.cpp +++ b/tests/libslic3r/test_texture_displacement.cpp @@ -1,6 +1,29 @@ #ifndef NOMINMAX #define NOMINMAX #endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libslic3r/Point.hpp" +#include +#include +#include +#include +#include "libslic3r/TextureBake/TextureBakeDisplace.hpp" +#include "libslic3r/TextureBake/TextureBakeIndex.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include #include #include diff --git a/tests/libslic3r/test_timeutils.cpp b/tests/libslic3r/test_timeutils.cpp index 221dd07d81..213b5e6788 100644 --- a/tests/libslic3r/test_timeutils.cpp +++ b/tests/libslic3r/test_timeutils.cpp @@ -1,10 +1,13 @@ #include +#include #include "libslic3r/Time.hpp" +#include #include #include #include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_toolordering_nozzle_group.cpp b/tests/libslic3r/test_toolordering_nozzle_group.cpp index 837b66287a..7c41b2315e 100644 --- a/tests/libslic3r/test_toolordering_nozzle_group.cpp +++ b/tests/libslic3r/test_toolordering_nozzle_group.cpp @@ -1,5 +1,9 @@ +#include #include +#include +#include +#include #include "libslic3r/FilamentGroupUtils.hpp" #include "libslic3r/MultiNozzleUtils.hpp" #include "libslic3r/PrintConfig.hpp" @@ -11,7 +15,11 @@ #include "test_utils.hpp" #include +#include "libslic3r/Config.hpp" +#include "libslic3r/GCode/ToolOrderUtils.hpp" +#include "libslic3r/PrintBase.hpp" #include +#include #include #include #include diff --git a/tests/libslic3r/test_triangle_selector.cpp b/tests/libslic3r/test_triangle_selector.cpp index c207ee66ad..9886308bdd 100644 --- a/tests/libslic3r/test_triangle_selector.cpp +++ b/tests/libslic3r/test_triangle_selector.cpp @@ -1,9 +1,16 @@ #include +#include +#include +#include #include "libslic3r/TriangleSelector.hpp" #include "libslic3r/TriangleMesh.hpp" #include +#include "libslic3r/libslic3r.h" +#include +#include +#include using namespace Slic3r; diff --git a/tests/libslic3r/test_utils.cpp b/tests/libslic3r/test_utils.cpp index ad5110aa5e..49161d5d6c 100644 --- a/tests/libslic3r/test_utils.cpp +++ b/tests/libslic3r/test_utils.cpp @@ -1,5 +1,14 @@ +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/Utils.hpp" #include "test_utils.hpp" @@ -8,10 +17,14 @@ #include #include +#include #include +#include +#include #include #include #include +#include #ifndef _WIN32 #include // getuid @@ -496,3 +509,15 @@ TEST_CASE("is_safe_to_open_file_name rejects programs and anything it does not k INFO(unsafe); CHECK_FALSE(is_safe_to_open_file_name(unsafe)); } + +TEST_CASE("ascii_iequals compares ASCII letters regardless of case", "[Utils]") { + CHECK(ascii_iequals("set_velocity_limit", "SET_VELOCITY_LIMIT")); + CHECK(ascii_iequals("G28", "g28")); + CHECK(ascii_iequals("", "")); + CHECK_FALSE(ascii_iequals("G28", "G29")); + CHECK_FALSE(ascii_iequals("G2", "G28")); + CHECK_FALSE(ascii_iequals("G28", "G2")); + // Non-letters 0x20 apart are not equal. + CHECK_FALSE(ascii_iequals("[", "{")); + CHECK_FALSE(ascii_iequals("@", "`")); +} diff --git a/tests/libslic3r/test_vendor_cache.cpp b/tests/libslic3r/test_vendor_cache.cpp index be8b97943c..b78ce77e1f 100644 --- a/tests/libslic3r/test_vendor_cache.cpp +++ b/tests/libslic3r/test_vendor_cache.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include @@ -5,19 +7,32 @@ #include #include #include +#include #include #include #include +#include +#include +#include "libslic3r/Semver.hpp" +#include "libslic3r/Config.hpp" #include #include #include #include #include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include #include "libslic3r/PresetBundle.hpp" #include "libslic3r/PresetCacheFormat.hpp" #include "libslic3r/Preset.hpp" diff --git a/tests/libslic3r/test_voronoi.cpp b/tests/libslic3r/test_voronoi.cpp index b86f448c02..b512fe38fe 100644 --- a/tests/libslic3r/test_voronoi.cpp +++ b/tests/libslic3r/test_voronoi.cpp @@ -1,6 +1,14 @@ +#include #include +#include #include "test_utils.hpp" +#include "libslic3r/Geometry/Voronoi.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include +#include +#include "libslic3r/BoundingBox.hpp" #include #include #include @@ -9,8 +17,11 @@ #include #include +#include "libslic3r/libslic3r.h" +#include #include #include +#include // #define VORONOI_DEBUG_OUT diff --git a/tests/libslic3r/test_wipe_path.cpp b/tests/libslic3r/test_wipe_path.cpp index b637ad2b87..731a8626d4 100644 --- a/tests/libslic3r/test_wipe_path.cpp +++ b/tests/libslic3r/test_wipe_path.cpp @@ -1,5 +1,10 @@ #include +#include +#include +#include +#include +#include #include "libslic3r/GCode/WipePathHelpers.hpp" #include "libslic3r/AABBTreeLines.hpp" #include "libslic3r/Polyline.hpp" @@ -9,7 +14,12 @@ #include #include +#include "libslic3r/ExtrusionEntity.hpp" +#include #include +#include +#include +#include using namespace Slic3r; using Slic3r::AABBTreeLines::LinesDistancer; diff --git a/tests/libslic3r/test_wipe_tower.cpp b/tests/libslic3r/test_wipe_tower.cpp index 6f6daa74b8..9c64ae1b53 100644 --- a/tests/libslic3r/test_wipe_tower.cpp +++ b/tests/libslic3r/test_wipe_tower.cpp @@ -1,7 +1,17 @@ #include #include +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/WipeTower.hpp" diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp index db11db3e74..1c91fadae2 100644 --- a/tests/libslic3r/test_wipe_tower_estimate.cpp +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -1,5 +1,10 @@ +#include #include +#include +#include +#include +#include #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/WipeTower.hpp" @@ -9,8 +14,14 @@ #include "libslic3r/FilamentMixer.hpp" #include +#include "libslic3r/Config.hpp" +#include +#include "libslic3r/Polygon.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" #include #include +#include using namespace Slic3r; using Catch::Matchers::WithinAbs; diff --git a/tests/sla_print/sla_print_tests.cpp b/tests/sla_print/sla_print_tests.cpp index 308925a163..e095c0543a 100644 --- a/tests/sla_print/sla_print_tests.cpp +++ b/tests/sla_print/sla_print_tests.cpp @@ -1,14 +1,34 @@ +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/SLA/IndexedMesh.hpp" +#include "libslic3r/SLA/SupportTree.hpp" +#include "libslic3r/SLA/SupportPointGenerator.hpp" +#include "libslic3r/MTUtils.hpp" +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/Point.hpp" +#include +#include "libslic3r/SLA/Pad.hpp" +#include "libslic3r/SLA/RasterBase.hpp" +#include "libslic3r/SLA/AGGRaster.hpp" +#include +#include "libslic3r/SLA/SupportTreeBuilder.hpp" +#include "libslic3r/Execution/Execution.hpp" +#include "libslic3r/Execution/ExecutionTBB.hpp" #include #include #include #include #include +#include +#include #include "sla_test_utils.hpp" +#include "test_utils.hpp" #include #include #include +#include namespace { diff --git a/tests/sla_print/sla_raycast_tests.cpp b/tests/sla_print/sla_raycast_tests.cpp index 8a520a241f..e050e35845 100644 --- a/tests/sla_print/sla_raycast_tests.cpp +++ b/tests/sla_print/sla_raycast_tests.cpp @@ -1,8 +1,15 @@ +#include #include +#include +#include #include "test_utils.hpp" +#include "libslic3r/Point.hpp" +#include +#include #include #include +#include #include "sla_test_utils.hpp" diff --git a/tests/sla_print/sla_supptgen_tests.cpp b/tests/sla_print/sla_supptgen_tests.cpp index 32f049d78e..091bfa2d66 100644 --- a/tests/sla_print/sla_supptgen_tests.cpp +++ b/tests/sla_print/sla_supptgen_tests.cpp @@ -1,8 +1,21 @@ +#include #include +#include #include "test_utils.hpp" +#include +#include #include #include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/libslic3r.h" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/SLA/SpatIndex.hpp" +#include +#include "libslic3r/SLA/SupportPointGenerator.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/SLA/Hollowing.hpp" #include "sla_test_utils.hpp" diff --git a/tests/sla_print/sla_test_utils.cpp b/tests/sla_print/sla_test_utils.cpp index 8951bb3853..2a769692c8 100644 --- a/tests/sla_print/sla_test_utils.cpp +++ b/tests/sla_print/sla_test_utils.cpp @@ -1,8 +1,39 @@ #include "sla_test_utils.hpp" +#include +#include +#include #include "libslic3r/TriangleMeshSlicer.hpp" #include "libslic3r/SLA/AGGRaster.hpp" +#include "test_utils.hpp" +#include +#include +#include +#include #include +#include +#include "libslic3r/SLA/SupportTree.hpp" +#include "libslic3r/SLA/Hollowing.hpp" +#include +#include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Polygon.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/libslic3r.h" +#include +#include "libslic3r/SVG.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/MTUtils.hpp" +#include "libslic3r/SLA/IndexedMesh.hpp" +#include "libslic3r/SLA/SupportPointGenerator.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" +#include "libslic3r/SLA/SupportTreeBuildsteps.hpp" +#include +#include "libslic3r/SLA/SupportTreeBuilder.hpp" +#include "libslic3r/SLA/Pad.hpp" +#include "libslic3r/SLA/ConcaveHull.hpp" +#include "libslic3r/SLA/RasterBase.hpp" +#include "libslic3r/BoundingBox.hpp" void test_support_model_collision(const std::string &obj_filename, const sla::SupportTreeConfig &input_supportcfg, diff --git a/tests/sla_print/sla_test_utils.hpp b/tests/sla_print/sla_test_utils.hpp index 1d27030c9d..03d4bfd3c9 100644 --- a/tests/sla_print/sla_test_utils.hpp +++ b/tests/sla_print/sla_test_utils.hpp @@ -2,11 +2,26 @@ #define SLA_TEST_UTILS_HPP #include +#include #include "test_utils.hpp" // Debug +#include +#include +#include +#include #include +#include +#include "libslic3r/SLA/SupportTree.hpp" +#include "libslic3r/SLA/Hollowing.hpp" +#include +#include +#include +#include "libslic3r/SLA/RasterBase.hpp" +#include "libslic3r/SLA/SupportPoint.hpp" #include +#include +#include #include "libslic3r/libslic3r.h" #include "libslic3r/Format/OBJ.hpp" diff --git a/tests/slic3rutils/plugin_test_utils.hpp b/tests/slic3rutils/plugin_test_utils.hpp index cbdcf1ff95..133a5aac9e 100644 --- a/tests/slic3rutils/plugin_test_utils.hpp +++ b/tests/slic3rutils/plugin_test_utils.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include diff --git a/tests/slic3rutils/python_test_support.hpp b/tests/slic3rutils/python_test_support.hpp index 29747a88c4..e9b0aaac8d 100644 --- a/tests/slic3rutils/python_test_support.hpp +++ b/tests/slic3rutils/python_test_support.hpp @@ -4,7 +4,9 @@ // interpreter (test_plugin_host_api.cpp, test_slicing_pipeline_bindings.cpp, ...). #include #include +#include #include +#include #include #include #include diff --git a/tests/slic3rutils/slic3rutils_tests_main.cpp b/tests/slic3rutils/slic3rutils_tests_main.cpp index 176e34a5df..f8d2b4fac5 100644 --- a/tests/slic3rutils/slic3rutils_tests_main.cpp +++ b/tests/slic3rutils/slic3rutils_tests_main.cpp @@ -1,5 +1,6 @@ #include +#include #include "slic3r/Utils/Http.hpp" TEST_CASE("Check SSL certificates paths", "[Http][NotWorking]") { diff --git a/tests/slic3rutils/test_action_source.cpp b/tests/slic3rutils/test_action_source.cpp index 8dc4404419..315721ca9b 100644 --- a/tests/slic3rutils/test_action_source.cpp +++ b/tests/slic3rutils/test_action_source.cpp @@ -1,11 +1,15 @@ +#include +#include #include +#include #include "slic3r/GUI/ActionRegistry.hpp" #include "slic3r/GUI/NativeCommands.hpp" #include "slic3r/GUI/SettingsIndex.hpp" #include +#include "libslic3r/Config.hpp" #include #include #include diff --git a/tests/slic3rutils/test_bambu_filament_ids.cpp b/tests/slic3rutils/test_bambu_filament_ids.cpp index 5f6215d7ca..7d9e0df1f1 100644 --- a/tests/slic3rutils/test_bambu_filament_ids.cpp +++ b/tests/slic3rutils/test_bambu_filament_ids.cpp @@ -2,7 +2,9 @@ #include #include #include +#include +#include #include "libslic3r/Utils.hpp" #include "slic3r/Utils/BBLPrinterAgent.hpp" #include "slic3r/Utils/OrcaPrinterAgent.hpp" diff --git a/tests/slic3rutils/test_creality_cfs_match.cpp b/tests/slic3rutils/test_creality_cfs_match.cpp index 06606684b7..6b8faf4b79 100644 --- a/tests/slic3rutils/test_creality_cfs_match.cpp +++ b/tests/slic3rutils/test_creality_cfs_match.cpp @@ -1,4 +1,6 @@ +#include #include +#include #include "libslic3r/Preset.hpp" #include "libslic3r/PresetBundle.hpp" diff --git a/tests/slic3rutils/test_dev_mapping.cpp b/tests/slic3rutils/test_dev_mapping.cpp index 658117d2e4..4e32bcc20d 100644 --- a/tests/slic3rutils/test_dev_mapping.cpp +++ b/tests/slic3rutils/test_dev_mapping.cpp @@ -13,6 +13,12 @@ #include #endif +#include +#include "slic3r/GUI/DeviceCore/DevDefs.h" +#include "libslic3r/ProjectTask.hpp" +#include +#include + #include #include diff --git a/tests/slic3rutils/test_device_manager_integration.cpp b/tests/slic3rutils/test_device_manager_integration.cpp index 2b042d4f8e..7e58dc7696 100644 --- a/tests/slic3rutils/test_device_manager_integration.cpp +++ b/tests/slic3rutils/test_device_manager_integration.cpp @@ -1,8 +1,11 @@ +#include #include #include #include #include +#include "slic3r/Utils/IPrinterAgent.hpp" +#include "slic3r/Utils/CloudProvider.hpp" #include #include #include diff --git a/tests/slic3rutils/test_device_progress.cpp b/tests/slic3rutils/test_device_progress.cpp index 96dead46f0..3d42b012a2 100644 --- a/tests/slic3rutils/test_device_progress.cpp +++ b/tests/slic3rutils/test_device_progress.cpp @@ -12,6 +12,9 @@ #include #endif +#include +#include "libslic3r/ProjectTask.hpp" + #include #include diff --git a/tests/slic3rutils/test_filament_bitmap_utils.cpp b/tests/slic3rutils/test_filament_bitmap_utils.cpp index 997a119521..df5bba0567 100644 --- a/tests/slic3rutils/test_filament_bitmap_utils.cpp +++ b/tests/slic3rutils/test_filament_bitmap_utils.cpp @@ -11,6 +11,12 @@ #include #endif +#include +#include "libslic3r/Config.hpp" +#include +#include +#include + #include #include diff --git a/tests/slic3rutils/test_file_url.cpp b/tests/slic3rutils/test_file_url.cpp index 484067b57e..f22b21612a 100644 --- a/tests/slic3rutils/test_file_url.cpp +++ b/tests/slic3rutils/test_file_url.cpp @@ -1,10 +1,13 @@ #include #include +#include #include "slic3r/GUI/GUI.hpp" #include +#include +#include #include using namespace Slic3r::GUI; diff --git a/tests/slic3rutils/test_lazy.cpp b/tests/slic3rutils/test_lazy.cpp index c04a27e9d1..156c478791 100644 --- a/tests/slic3rutils/test_lazy.cpp +++ b/tests/slic3rutils/test_lazy.cpp @@ -2,9 +2,12 @@ #include #include +#include "slic3r/GUI/StagedBuild.hpp" #include +#include #include +#include #include "slic3r/GUI/Lazy.hpp" using Slic3r::GUI::Lazy; diff --git a/tests/slic3rutils/test_network_versions.cpp b/tests/slic3rutils/test_network_versions.cpp index 349082a965..bfddcb5423 100644 --- a/tests/slic3rutils/test_network_versions.cpp +++ b/tests/slic3rutils/test_network_versions.cpp @@ -1,8 +1,13 @@ +#include #include #include #include +#include +#include "libslic3r/AppConfig.hpp" +#include +#include #include "libslic3r/Utils.hpp" #include "slic3r/Utils/bambu_networking.hpp" diff --git a/tests/slic3rutils/test_orca_cloud_agent.cpp b/tests/slic3rutils/test_orca_cloud_agent.cpp index 5f325751cb..8657310f27 100644 --- a/tests/slic3rutils/test_orca_cloud_agent.cpp +++ b/tests/slic3rutils/test_orca_cloud_agent.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include @@ -6,6 +8,7 @@ #include #include +#include #include "slic3r/Utils/OrcaCloudServiceAgent.hpp" #include "test_utils.hpp" diff --git a/tests/slic3rutils/test_plugin_audit.cpp b/tests/slic3rutils/test_plugin_audit.cpp index 71ce692671..ca8c46fabd 100644 --- a/tests/slic3rutils/test_plugin_audit.cpp +++ b/tests/slic3rutils/test_plugin_audit.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include @@ -5,6 +7,8 @@ #include #include // secret_constants::USER_SECRET_FILENAME +#include +#include "libslic3r_version.h" #include "plugin_test_utils.hpp" #include diff --git a/tests/slic3rutils/test_plugin_capabilities_in_use.cpp b/tests/slic3rutils/test_plugin_capabilities_in_use.cpp index 16ba6e91ac..e33c9980dd 100644 --- a/tests/slic3rutils/test_plugin_capabilities_in_use.cpp +++ b/tests/slic3rutils/test_plugin_capabilities_in_use.cpp @@ -1,5 +1,7 @@ +#include #include +#include "libslic3r/Config.hpp" #include #include #include diff --git a/tests/slic3rutils/test_plugin_capability_config.cpp b/tests/slic3rutils/test_plugin_capability_config.cpp index 39ecd1002d..34c380bba9 100644 --- a/tests/slic3rutils/test_plugin_capability_config.cpp +++ b/tests/slic3rutils/test_plugin_capability_config.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -7,7 +8,11 @@ #include #include +#include #include "plugin_test_utils.hpp" +#include +#include +#include #include #include diff --git a/tests/slic3rutils/test_plugin_cloud_metadata.cpp b/tests/slic3rutils/test_plugin_cloud_metadata.cpp index 241ef3ed90..09ac877eca 100644 --- a/tests/slic3rutils/test_plugin_cloud_metadata.cpp +++ b/tests/slic3rutils/test_plugin_cloud_metadata.cpp @@ -1,5 +1,8 @@ +#include +#include #include +#include #include #include #include @@ -8,6 +11,8 @@ #include #include +#include +#include #include "plugin_test_utils.hpp" #include diff --git a/tests/slic3rutils/test_plugin_config.cpp b/tests/slic3rutils/test_plugin_config.cpp index 99de5e53db..ac7bae36be 100644 --- a/tests/slic3rutils/test_plugin_config.cpp +++ b/tests/slic3rutils/test_plugin_config.cpp @@ -1,15 +1,20 @@ +#include +#include #include +#include #include #include #include +#include #include "plugin_test_utils.hpp" #include #include #include +#include "slic3r/plugin/PythonPluginInterface.hpp" #include using namespace Slic3r; diff --git a/tests/slic3rutils/test_plugin_host_api.cpp b/tests/slic3rutils/test_plugin_host_api.cpp index 0283bb5744..7919b273db 100644 --- a/tests/slic3rutils/test_plugin_host_api.cpp +++ b/tests/slic3rutils/test_plugin_host_api.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -8,7 +9,13 @@ #include #include +#include +#include +#include +#include #include "plugin_test_utils.hpp" +#include +#include #include "python_test_support.hpp" #include @@ -16,6 +23,7 @@ #include +#include #include namespace py = pybind11; diff --git a/tests/slic3rutils/test_plugin_install.cpp b/tests/slic3rutils/test_plugin_install.cpp index ae16703fa6..539bd917e0 100644 --- a/tests/slic3rutils/test_plugin_install.cpp +++ b/tests/slic3rutils/test_plugin_install.cpp @@ -1,10 +1,16 @@ +#include +#include #include +#include #include #include #include #include +#include +#include +#include #include "plugin_test_utils.hpp" #include diff --git a/tests/slic3rutils/test_plugin_lifecycle.cpp b/tests/slic3rutils/test_plugin_lifecycle.cpp index d90a166835..0c0399e2d3 100644 --- a/tests/slic3rutils/test_plugin_lifecycle.cpp +++ b/tests/slic3rutils/test_plugin_lifecycle.cpp @@ -1,13 +1,19 @@ +#include +#include #include +#include #include #include +#include #include #include #include #include #include +#include +#include #include "plugin_test_utils.hpp" #include @@ -17,8 +23,10 @@ #include #include #include +#include "slic3r/plugin/PythonPluginInterface.hpp" #include #include +#include #include using namespace Slic3r; diff --git a/tests/slic3rutils/test_plugin_printer_agent.cpp b/tests/slic3rutils/test_plugin_printer_agent.cpp index c1bba8a88e..50570f8712 100644 --- a/tests/slic3rutils/test_plugin_printer_agent.cpp +++ b/tests/slic3rutils/test_plugin_printer_agent.cpp @@ -1,5 +1,6 @@ #include +#include "slic3r/Utils/bambu_networking.hpp" #include #include #include @@ -12,7 +13,11 @@ #include #include +#include #include "plugin_test_utils.hpp" +#include +#include +#include namespace py = pybind11; using namespace Slic3r; diff --git a/tests/slic3rutils/test_plugin_sort.cpp b/tests/slic3rutils/test_plugin_sort.cpp index 58db799dd8..8af2ce3b5b 100644 --- a/tests/slic3rutils/test_plugin_sort.cpp +++ b/tests/slic3rutils/test_plugin_sort.cpp @@ -1,7 +1,10 @@ +#include #include #include +#include "slic3r/GUI/PluginSource.hpp" +#include "slic3r/GUI/PluginStatus.hpp" #include #include diff --git a/tests/slic3rutils/test_plugin_status.cpp b/tests/slic3rutils/test_plugin_status.cpp index c51c54c6c6..ab206c22ce 100644 --- a/tests/slic3rutils/test_plugin_status.cpp +++ b/tests/slic3rutils/test_plugin_status.cpp @@ -1,3 +1,4 @@ +#include #include #include diff --git a/tests/slic3rutils/test_prebuild_queue.cpp b/tests/slic3rutils/test_prebuild_queue.cpp index 8cc5444345..dc797ca60a 100644 --- a/tests/slic3rutils/test_prebuild_queue.cpp +++ b/tests/slic3rutils/test_prebuild_queue.cpp @@ -1,8 +1,10 @@ #include +#include "slic3r/GUI/Lazy.hpp" #include #include +#include #include "slic3r/GUI/PrebuildQueue.hpp" using Slic3r::GUI::LazyBase; diff --git a/tests/slic3rutils/test_precise_seam_plugin.cpp b/tests/slic3rutils/test_precise_seam_plugin.cpp index 244a4c3405..0375b96b9e 100644 --- a/tests/slic3rutils/test_precise_seam_plugin.cpp +++ b/tests/slic3rutils/test_precise_seam_plugin.cpp @@ -1,7 +1,11 @@ #include +#include #include "libslic3r/Model.hpp" #include "libslic3r/TriangleMesh.hpp" +#include +#include +#include #include "python_test_support.hpp" #include diff --git a/tests/slic3rutils/test_printer_agent.cpp b/tests/slic3rutils/test_printer_agent.cpp index 1418001205..8113326cc2 100644 --- a/tests/slic3rutils/test_printer_agent.cpp +++ b/tests/slic3rutils/test_printer_agent.cpp @@ -1,8 +1,14 @@ #include +#include +#include "slic3r/Utils/ICloudServiceAgent.hpp" +#include "slic3r/Utils/IPrinterAgent.hpp" #include #include +#include +#include +#include #include "python_test_support.hpp" #include diff --git a/tests/slic3rutils/test_printhost.cpp b/tests/slic3rutils/test_printhost.cpp index c4df56ebb6..c7ce9dccaa 100644 --- a/tests/slic3rutils/test_printhost.cpp +++ b/tests/slic3rutils/test_printhost.cpp @@ -3,10 +3,18 @@ #include #include #include +#include #include #include +#include +#include +#include +#include +#include +#include +#include #include "libslic3r/LifecycleEvents.hpp" #include "slic3r/Utils/PrintHost.hpp" #include "slic3r/Utils/Flashforge.hpp" diff --git a/tests/slic3rutils/test_scene_raycaster.cpp b/tests/slic3rutils/test_scene_raycaster.cpp index d51671e5c5..a1be46f216 100644 --- a/tests/slic3rutils/test_scene_raycaster.cpp +++ b/tests/slic3rutils/test_scene_raycaster.cpp @@ -11,6 +11,16 @@ #include #endif +#include +#include "slic3r/GUI/MeshUtils.hpp" +#include "libslic3r/Point.hpp" +#include +#include +#include +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/Geometry.hpp" +#include + #include #include "slic3r/GUI/Camera.hpp" diff --git a/tests/slic3rutils/test_shortcuts.cpp b/tests/slic3rutils/test_shortcuts.cpp index 350e87f48a..ed7975b1e5 100644 --- a/tests/slic3rutils/test_shortcuts.cpp +++ b/tests/slic3rutils/test_shortcuts.cpp @@ -1,10 +1,16 @@ #include #include +#include #include "libslic3r/AppConfig.hpp" #include "slic3r/GUI/KeyChord.hpp" #include "slic3r/GUI/Shortcuts.hpp" +#include +#include +#include +#include +#include #include using namespace Slic3r; diff --git a/tests/slic3rutils/test_slicing_pipeline_bindings.cpp b/tests/slic3rutils/test_slicing_pipeline_bindings.cpp index 5e819c09e0..7552fe15af 100644 --- a/tests/slic3rutils/test_slicing_pipeline_bindings.cpp +++ b/tests/slic3rutils/test_slicing_pipeline_bindings.cpp @@ -1,4 +1,18 @@ #include +#include +#include +#include +#include "libslic3r/libslic3r.h" +#include +#include +#include +#include "libslic3r/Config.hpp" +#include "libslic3r/Print.hpp" +#include +#include "libslic3r/SurfaceCollection.hpp" +#include "libslic3r/Polygon.hpp" +#include +#include #include "slic3r/plugin/PythonPluginInterface.hpp" using namespace Slic3r; diff --git a/tests/slic3rutils/test_slicing_pipeline_config.cpp b/tests/slic3rutils/test_slicing_pipeline_config.cpp index 37984cff34..1e8e728f4d 100644 --- a/tests/slic3rutils/test_slicing_pipeline_config.cpp +++ b/tests/slic3rutils/test_slicing_pipeline_config.cpp @@ -1,13 +1,26 @@ +#include +#include #include +#include +#include +#include "libslic3r/Print.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Config.hpp" #include #include +#include "slic3r/plugin/PluginFsUtils.hpp" #include #include #include +#include +#include #include "fff_print/test_helpers.hpp" #include "plugin_test_utils.hpp" +#include +#include #include #include diff --git a/tests/slic3rutils/test_staged_build.cpp b/tests/slic3rutils/test_staged_build.cpp index 3afcd9e5fc..df56d0c6e7 100644 --- a/tests/slic3rutils/test_staged_build.cpp +++ b/tests/slic3rutils/test_staged_build.cpp @@ -2,6 +2,7 @@ #include +#include #include "slic3r/GUI/StagedBuild.hpp" using Slic3r::GUI::StagedBuild; diff --git a/tests/slic3rutils/test_user_manager.cpp b/tests/slic3rutils/test_user_manager.cpp index cfccebe1cc..3c60552f22 100644 --- a/tests/slic3rutils/test_user_manager.cpp +++ b/tests/slic3rutils/test_user_manager.cpp @@ -2,6 +2,8 @@ #include +#include +#include #include "slic3r/GUI/UserManager.hpp" using namespace Slic3r; diff --git a/tests/slic3rutils/test_web_media_controller.cpp b/tests/slic3rutils/test_web_media_controller.cpp index cdf756ca3a..fdf271fe10 100644 --- a/tests/slic3rutils/test_web_media_controller.cpp +++ b/tests/slic3rutils/test_web_media_controller.cpp @@ -1,7 +1,15 @@ +#include #include #include +#include +#include +#include +#include +#include +#include "slic3r/Utils/IPrinterAgent.hpp" +#include #include #include diff --git a/tests/test_utils.hpp b/tests/test_utils.hpp index 0b04e6ad11..d0817ce128 100644 --- a/tests/test_utils.hpp +++ b/tests/test_utils.hpp @@ -1,6 +1,9 @@ #ifndef SLIC3R_TEST_UTILS #define SLIC3R_TEST_UTILS +#include +#include +#include "libslic3r/BoundingBox.hpp" #include #include #include