From a7e50b7a9831f94fca4f328ec000b674d12cbf39 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 9 Jun 2022 16:24:29 +0200 Subject: [PATCH] Generalize BoostAdapter for all Vec<> types and move out of SLA --- src/libslic3r/{SLA => }/BoostAdapter.hpp | 46 ++++++------------------ src/libslic3r/CMakeLists.txt | 2 +- src/libslic3r/SLA/Clustering.cpp | 2 +- src/libslic3r/SLA/Pad.cpp | 2 +- src/libslic3r/SLA/SpatIndex.cpp | 2 +- 5 files changed, 14 insertions(+), 40 deletions(-) rename src/libslic3r/{SLA => }/BoostAdapter.hpp (67%) diff --git a/src/libslic3r/SLA/BoostAdapter.hpp b/src/libslic3r/BoostAdapter.hpp similarity index 67% rename from src/libslic3r/SLA/BoostAdapter.hpp rename to src/libslic3r/BoostAdapter.hpp index 13e0465b1..3144ae201 100644 --- a/src/libslic3r/SLA/BoostAdapter.hpp +++ b/src/libslic3r/BoostAdapter.hpp @@ -38,54 +38,28 @@ template struct access { } }; -// For Vec2d /////////////////////////////////////////////////////////////////// +// For Vec /////////////////////////////////////////////////////////////// -template<> struct tag { +template struct tag> { using type = point_tag; }; -template<> struct coordinate_type { - using type = double; +template struct coordinate_type> { + using type = T; }; -template<> struct coordinate_system { +template struct coordinate_system> { using type = cs::cartesian; }; -template<> struct dimension: boost::mpl::int_<2> {}; +template struct dimension>: boost::mpl::int_ {}; -template struct access { - static inline double get(Slic3r::Vec2d const& a) { +template struct access, d> { + static inline T get(Slic3r::Vec const& a) { return a(d); } - static inline void set(Slic3r::Vec2d& a, double const& value) { - a(d) = value; - } -}; - -// For Vec3d /////////////////////////////////////////////////////////////////// - -template<> struct tag { - using type = point_tag; -}; - -template<> struct coordinate_type { - using type = double; -}; - -template<> struct coordinate_system { - using type = cs::cartesian; -}; - -template<> struct dimension: boost::mpl::int_<3> {}; - -template struct access { - static inline double get(Slic3r::Vec3d const& a) { - return a(d); - } - - static inline void set(Slic3r::Vec3d& a, double const& value) { + static inline void set(Slic3r::Vec& a, T const& value) { a(d) = value; } }; @@ -129,6 +103,6 @@ template<> struct range_value> { using type = Slic3r::Vec2d; }; -} +} // namespace boost #endif // SLABOOSTADAPTER_HPP diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 6710fa3c0..6758b8e7b 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -29,6 +29,7 @@ set(SLIC3R_SOURCES Brim.hpp BuildVolume.cpp BuildVolume.hpp + BoostAdapter.hpp clipper.cpp clipper.hpp ClipperUtils.cpp @@ -292,7 +293,6 @@ set(SLIC3R_SOURCES # SLA/SupportTreeIGL.cpp SLA/Rotfinder.hpp SLA/Rotfinder.cpp - SLA/BoostAdapter.hpp SLA/SpatIndex.hpp SLA/SpatIndex.cpp SLA/RasterBase.hpp diff --git a/src/libslic3r/SLA/Clustering.cpp b/src/libslic3r/SLA/Clustering.cpp index 41ff1d4f0..23aefbdfd 100644 --- a/src/libslic3r/SLA/Clustering.cpp +++ b/src/libslic3r/SLA/Clustering.cpp @@ -2,7 +2,7 @@ #include "boost/geometry/index/rtree.hpp" #include -#include +#include namespace Slic3r { namespace sla { diff --git a/src/libslic3r/SLA/Pad.cpp b/src/libslic3r/SLA/Pad.cpp index b92862439..b04c3f219 100644 --- a/src/libslic3r/SLA/Pad.cpp +++ b/src/libslic3r/SLA/Pad.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include //#include #include diff --git a/src/libslic3r/SLA/SpatIndex.cpp b/src/libslic3r/SLA/SpatIndex.cpp index d95ba55be..1af9d29bb 100644 --- a/src/libslic3r/SLA/SpatIndex.cpp +++ b/src/libslic3r/SLA/SpatIndex.cpp @@ -1,7 +1,7 @@ #include "SpatIndex.hpp" // for concave hull merging decisions -#include +#include #ifdef _MSC_VER #pragma warning(push)