* Ignore Clipper, libpng, mcut and Boost.Polygon Internals in clang-tidy
Each only works through a wrapper or umbrella header: libslic3r/clipper.hpp or clipper_z.hpp configure Clipper before including it, png.h pulls in libpng's config headers, and Boost.Polygon's headers only compile through polygon.hpp or voronoi.hpp.
* Ignore minilzo's Config Headers in clang-tidy
lzoconf.h and lzodefs.h are internal to minilzo.h, which is what the code includes.
* Add Missing Includes Across the Remaining Sources and Tests
Covers src/slic3r/Utils, src/slic3r/plugin, src/slic3r/Config, src/libvgcode, src/dev-utils, src/OrcaSlicer.cpp and tests/, the directories left after src/slic3r/GUI and src/libslic3r. Generated with clang-tidy misc-include-cleaner. libvgcode's own headers are included by relative path as in the rest of that library, and Catch2 and pybind11 with angle brackets as elsewhere in the repo.
* Make the GUI and Test Headers Compile on Their Own
Each now includes, or forward-declares, what it uses instead of relying on what its includers happened to include first. Headers that only compile on one platform, or that nothing built includes, are left alone.
* Keep Windows and nanosvg Setup Ahead of the Added Includes
OrcaSlicer.cpp and several tests set _WIN32_WINNT, WIN32_LEAN_AND_MEAN or NOMINMAX before including Windows.h, and the profile validator defines NANOSVG_IMPLEMENTATION before any libslic3r header. The added includes had landed above those blocks, which broke the Windows build.
* Add the GUI Includes the First Pass Missed
Covers headers that only became editable once they compiled on their own, and wx symbols whose suggested header changed as the clang-tidy ignore list grew after the src/slic3r/GUI pass.
* Keep the Added Test Includes Below the NOMINMAX Guard
test_marchingsquares.cpp and test_texture_displacement.cpp had includes inside #ifndef NOMINMAX, which the tests inherit as defined on Windows from libslic3r, so those were skipped there. .clang-tidy also ignores the MSVC STL and UCRT internals, Boost.Multiprecision's fwd.hpp and CPython's Windows include directory, as in #16068.
* fix: tray_exist_bits != tray_exist_bits comparison
* fix: title == GetTitle() == title comparison
* fix: possibly dangling reference to a temporary
```
OrcaSlicer/src/libslic3r/calib.cpp:456:17: warning: possibly dangling reference to a temporary [-Wdangling-reference]
456 | const auto &w = bed_ext.size().x();
OrcaSlicer/src/libslic3r/calib.cpp:456:45: note: the temporary was destroyed at the end of the full expression ‘((Eigen::DenseCoeffsBase<Eigen::Matrix<double, 2, 1, 2>, 1>*)(& Slic3r::BoundingBoxBase<PointClass>::size() const [with PointClass = Eigen::Matrix<double, 2, 1, 2>]()))->Eigen::DenseCoeffsBase<Eigen::Matrix<double, 2, 1, 2>, 1>::x()’
456 | const auto &w = bed_ext.size().x();
```
* fix: mixup of | and ||
in this case I think it actually does not change the semantics it just means that both comparison have to be evaluated.
* fix: multi-character character constants need "
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp:392: warning: multi-character character constant [-Wmultichar]
392 | if (auto n = tunnel.find_first_of('/_'); n != std::string::npos)
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp: In member function ‘void Slic3r::GUI::MediaPlayCtrl::Stop(const wxString&)’:
OrcaSlicer/src/slic3r/GUI/MediaPlayCtrl.cpp:392: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘12127’ to ‘95’ [-Woverflow]
* fix: missing paranthesis - skips null check
* NFC: Remove this check it can never be false
* NFC: fix warning: statement has no effect
* Fix calls to depreciated wxPen constructor
* Fix use of wxTimerEvent
* Fix unrecognized character escape sequence
* Fix signed/unsigned mismatch
At least as much as possible without significantly altering parts of the application
* Clean unreferenced variables
* fix mistyped namespace selector
* Update deprecated calls
* Fix preprocessor statement
* Remove empty switch statements
* Change int vector used as bool to bool vector
* Remove empty control statements and related unused code
* Change multi character constant to string constant
* Fix discarded return value
json::parse was being called on the object, rather than statically like it should be. Also, the value was not being captured.
* Rename ICON_SIZE def used by MultiMachine
By having the definition in the header, it causes issues when other files define ICON_SIZE. By renaming it to MM_ICON_SIZE, this lessens the issue. It would probably be ideal to have the definitions in the respective .cpp that use them, but it would make it less convenient to update the values if needed in the future.
* Remove unused includes
* Fix linux/macOS compilation
* Hide unused-function errors on non-Windows systems
* Disable signed/unsigned comparison mismatch error
* Remove/Disable more unused variables
Still TODO: check double for loop in Print.cpp
* Remove unused variable that was missed
* Remove unused variables in libraries in the src folder
* Apply temporary fix for subobject linkage error
* Remove/Disable last set of unused variables reported by GCC
* remove redundant for loop
* fix misspelled ifdef check
* Update message on dialog
* Fix hard-coded platform specific modifier keys
* Remove duplicate for loop
* Disable -Wmisleading-indentation warning
* disable -Wswitch warning
* Remove unused local typedefs
* Fix -Wunused-value
* Fix pragma error on Windows from subobject linkage fix
* Fix -Waddress
* Fix null conversions (-Wconversion-null)
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>