diff --git a/src/libslic3r/Arrange/OutlineCaching.cpp b/src/libslic3r/Arrange/OutlineCaching.cpp deleted file mode 100644 index cb94d1c615..0000000000 --- a/src/libslic3r/Arrange/OutlineCaching.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "OutlineCaching.hpp" - -namespace Slic3r { namespace arr2 { - -const CacheEntryFull *OutlineCache::full_outline(const ObjectID &id) -{ - const CacheEntryFull *ret = nullptr; - - auto it = m_cache_full.find(id.id); - if (it != m_cache_full.end()) - ret = &(it->second); - - return ret; -} - -void OutlineCache::set_full_outline(const ObjectID &id, ExPolygons outline, std::any ctx) -{ - m_cache_full[id.id] = CacheEntryFull{std::move(outline), std::move(ctx)}; -} - -}} // namespace Slic3r::arr2 diff --git a/src/libslic3r/Arrange/OutlineCaching.hpp b/src/libslic3r/Arrange/OutlineCaching.hpp deleted file mode 100644 index e0c0e6b1f4..0000000000 --- a/src/libslic3r/Arrange/OutlineCaching.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef OUTLINECACHING_HPP -#define OUTLINECACHING_HPP - -#include -#include - -#include "libslic3r/ObjectID.hpp" -#include "libslic3r/ExPolygon.hpp" - -namespace Slic3r { namespace arr2 { - -struct CacheEntryConvex { Polygon outline; std::any context; }; -struct CacheEntryFull -{ - ExPolygons outline; - std::any context; - - CacheEntryFull() = default; - CacheEntryFull(ExPolygons outl, std::any ctx) - : outline{std::move(outl)}, context{std::move(ctx)} - {} -}; - -class OutlineCache -{ - std::unordered_map m_cache_full; - std::unordered_map m_cache_convex; - -public: - const CacheEntryFull * full_outline(const ObjectID &id); - - void set_full_outline(const ObjectID &id, ExPolygons outline, std::any ctx); -}; - -}} // namespace Slic3r::arr2 - -#endif // OUTLINECACHING_HPP diff --git a/src/libslic3r/Arrange/SceneBuilder.cpp b/src/libslic3r/Arrange/SceneBuilder.cpp index 40208d0a30..b80f48a436 100644 --- a/src/libslic3r/Arrange/SceneBuilder.cpp +++ b/src/libslic3r/Arrange/SceneBuilder.cpp @@ -852,34 +852,6 @@ std::unique_ptr VirtualBedHandler::create(const ExtendedBed & return ret; } -template -ExPolygons OutlineCachingArrangeable::full_outline() const -{ - auto *entry = m_cache->full_outline(m_arrbl.id()); - auto [inst, pos] = find_instance_by_id(m_mdl, m_arrbl.id()); - - ExPolygons outline; - - if (inst) { - Transform3d trafo = inst->get_matrix_no_offset(); - - if (!entry) { - outline = m_arrbl.full_outline(); - m_cache->set_full_outline(this->id().id, outline, - std::any{inst->get_matrix_no_offset()}); - } else { - auto *ctxtrafo = std::any_cast(&(entry->context)); - if (ctxtrafo && ctxtrafo->isApprox(trafo)) - outline = entry->outline; - } - } - - return outline; -} - -template class OutlineCachingArrangeable; -template class OutlineCachingArrangeable; - }} // namespace Slic3r::arr2 #endif // SCENEBUILDER_CPP diff --git a/src/libslic3r/Arrange/SceneBuilder.hpp b/src/libslic3r/Arrange/SceneBuilder.hpp index 1589062836..226934245d 100644 --- a/src/libslic3r/Arrange/SceneBuilder.hpp +++ b/src/libslic3r/Arrange/SceneBuilder.hpp @@ -2,7 +2,6 @@ #define SCENEBUILDER_HPP #include "Scene.hpp" -#include "OutlineCaching.hpp" #include "Core/ArrangeItemTraits.hpp" @@ -215,7 +214,6 @@ protected: AnyPtr m_sla_print; AnyPtr m_fff_print; - AnyPtr m_outline_cache; void set_brim_and_skirt(); @@ -645,99 +643,6 @@ public: void apply_duplicates(); }; -template -class OutlineCachingArrangeable: public Arrangeable -{ - ArrblSubclass &m_arrbl; - Model &m_mdl; - mutable OutlineCache *m_cache; - -public: - OutlineCachingArrangeable(ArrblSubclass &arrbl, - Model &mdl, - OutlineCache *cache) - : m_arrbl{arrbl}, m_mdl{mdl}, m_cache{cache} - {} - - ObjectID id() const override { return m_arrbl.id(); } - ObjectID geometry_id() const override { return m_arrbl.geometry_id(); } - - ExPolygons full_outline() const override; - Polygon convex_outline() const override { return m_arrbl.convex_outline(); } - - ExPolygons full_envelope() const override { return m_arrbl.full_envelope(); } - Polygon convex_envelope() const override { return m_arrbl.convex_envelope(); } - - void transform(const Vec2d &transl, double rot) override - { - if constexpr (!std::is_const_v) - m_arrbl.transform(transl, rot); - } - - bool is_printable() const override { return m_arrbl.is_printable(); } - bool is_selected() const override { return m_arrbl.is_selected(); } - int priority() const override { return m_arrbl.priority(); } - void imbue_data(AnyWritable &datastore) const override { m_arrbl.imbue_data(datastore); } - int get_bed_index() const override { return m_arrbl.get_bed_index(); } - bool assign_bed(int bed_idx) override - { - bool ret = false; - - if constexpr (!std::is_const_v) - ret = m_arrbl.assign_bed(bed_idx); - - return ret; - } -}; - -extern template class OutlineCachingArrangeable; -extern template class OutlineCachingArrangeable; - -class OutlineCachingArrangeableModel: public ArrangeableModel { - ArrangeableSlicerModel &m_amodel; - mutable AnyPtr m_cache; - -public: - OutlineCachingArrangeableModel(ArrangeableSlicerModel &amodel, - AnyPtr cache) - : m_amodel{amodel}, m_cache{std::move(cache)} - {} - - void for_each_arrangeable(std::function fn) override - { - m_amodel.for_each_arrangeable([this, &fn](Arrangeable &arrbl){ - OutlineCachingArrangeable oc_arrbl{arrbl, m_amodel.get_model(), m_cache.get()}; - fn (oc_arrbl); - }); - } - void for_each_arrangeable(std::function fn) const override - { - m_amodel.for_each_arrangeable([this, &fn](Arrangeable &arrbl){ - OutlineCachingArrangeable oc_arrbl{arrbl, m_amodel.get_model(), m_cache.get()}; - fn (oc_arrbl); - }); - } - void visit_arrangeable(const ObjectID &id, std::function fn) const override - { - m_amodel.visit_arrangeable(id, [this, &fn](Arrangeable &arrbl){ - OutlineCachingArrangeable oc_arrbl{arrbl, m_amodel.get_model(), m_cache.get()}; - fn (oc_arrbl); - }); - } - void visit_arrangeable(const ObjectID &id, std::function fn) override - { - m_amodel.visit_arrangeable(id, [this, &fn](Arrangeable &arrbl) { - OutlineCachingArrangeable oc_arrbl{arrbl, m_amodel.get_model(), m_cache.get()}; - fn (oc_arrbl); - }); - } - - ObjectID add_arrangeable(const ObjectID &prototype_id) override - { - return m_amodel.add_arrangeable(prototype_id); - } -}; - } // namespace arr2 } // namespace Slic3r diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 97d753c939..75cef23e6d 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -232,8 +232,6 @@ set(SLIC3R_SOURCES Arrange/Scene.cpp Arrange/SceneBuilder.hpp Arrange/SceneBuilder.cpp - Arrange/OutlineCaching.hpp - Arrange/OutlineCaching.cpp Arrange/Tasks/ArrangeTask.hpp Arrange/Tasks/ArrangeTaskImpl.hpp Arrange/Tasks/FillBedTask.hpp