OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::CommonGizmosDataPool Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Gizmos/GLGizmosCommon.hpp>

Collaboration diagram for Slic3r::GUI::CommonGizmosDataPool:

Public Member Functions

 CommonGizmosDataPool (GLCanvas3D *canvas)
void update (CommonGizmosDataID required)
CommonGizmosDataObjects::SelectionInfo * selection_info () const
CommonGizmosDataObjects::InstancesHider * instances_hider () const
CommonGizmosDataObjects::Raycaster * raycaster_ptr ()
CommonGizmosDataObjects::Raycaster * raycaster () const
CommonGizmosDataObjects::ObjectClipper * object_clipper () const
GLCanvas3D * get_canvas () const

Private Member Functions

bool check_dependencies (CommonGizmosDataID required) const

Private Attributes

std::map< CommonGizmosDataID, std::unique_ptr< CommonGizmosDataBase > > m_data
GLCanvas3D * m_canvas

Detailed Description

Constructor & Destructor Documentation

◆ CommonGizmosDataPool()

Slic3r::GUI::CommonGizmosDataPool::CommonGizmosDataPool ( GLCanvas3D * canvas)
explicit
31 : m_canvas(canvas)
32{
33 using c = CommonGizmosDataID;
34 m_data[c::SelectionInfo].reset( new SelectionInfo(this));
35 m_data[c::InstancesHider].reset( new InstancesHider(this));
36// m_data[c::HollowedMesh].reset( new HollowedMesh(this));
37 m_data[c::Raycaster].reset( new Raycaster(this));
38 m_data[c::ObjectClipper].reset( new ObjectClipper(this));
39 // m_data[c::SupportsClipper].reset( new SupportsClipper(this));
40
41}
std::map< CommonGizmosDataID, std::unique_ptr< CommonGizmosDataBase > > m_data
Definition GLGizmosCommon.hpp:106
GLCanvas3D * m_canvas
Definition GLGizmosCommon.hpp:107
CommonGizmosDataID
Definition GLGizmosCommon.hpp:72
@ SelectionInfo
Definition GLGizmosCommon.hpp:74
@ Raycaster
Definition GLGizmosCommon.hpp:76
@ InstancesHider
Definition GLGizmosCommon.hpp:75
@ ObjectClipper
Definition GLGizmosCommon.hpp:77

References Slic3r::GUI::InstancesHider, m_canvas, m_data, Slic3r::GUI::ObjectClipper, Slic3r::GUI::Raycaster, and Slic3r::GUI::SelectionInfo.

Member Function Documentation

◆ check_dependencies()

bool Slic3r::GUI::CommonGizmosDataPool::check_dependencies ( CommonGizmosDataID required) const
private
95{
96 // This should iterate over currently required data. Each of them should
97 // be asked about its dependencies and it must check that all dependencies
98 // are also in required and before the current one.
99 for (auto& [id, data] : m_data) {
100 // in case we don't use this, the deps are irrelevant
101 if (! (int(required) & int(CommonGizmosDataID(id))))
102 continue;
103
104
105 CommonGizmosDataID deps = data->get_dependencies();
106 assert(int(deps) == (int(deps) & int(required)));
107 }
108
109
110 return true;
111}

References m_data.

Referenced by update().

Here is the caller graph for this function:

◆ get_canvas()

◆ instances_hider()

InstancesHider * Slic3r::GUI::CommonGizmosDataPool::instances_hider ( ) const
66{
68 assert(inst_hider);
69 return inst_hider->is_valid() ? inst_hider : nullptr;
70}
id get(id object, const void *key)
Definition MacIME.mm:22

References Slic3r::GUI::InstancesHider, Slic3r::GUI::CommonGizmosDataBase::is_valid(), and m_data.

Here is the call graph for this function:

◆ object_clipper()

ObjectClipper * Slic3r::GUI::CommonGizmosDataPool::object_clipper ( ) const
84{
86 // ObjectClipper is used from outside the gizmos to report current clipping plane.
87 // This function can be called when oc is nullptr.
88 return (oc && oc->is_valid()) ? oc : nullptr;
89}

References Slic3r::GUI::CommonGizmosDataBase::is_valid(), m_data, and Slic3r::GUI::ObjectClipper.

Referenced by Slic3r::GUI::CommonGizmosDataObjects::InstancesHider::render_cut().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ raycaster()

Raycaster * Slic3r::GUI::CommonGizmosDataPool::raycaster ( ) const
77{
79 assert(rc);
80 return rc->is_valid() ? rc : nullptr;
81}

References Slic3r::GUI::CommonGizmosDataBase::is_valid(), m_data, and Slic3r::GUI::Raycaster.

Here is the call graph for this function:

◆ raycaster_ptr()

CommonGizmosDataObjects::Raycaster * Slic3r::GUI::CommonGizmosDataPool::raycaster_ptr ( )
72 {
73 return dynamic_cast<Raycaster *>(m_data.at(CommonGizmosDataID::Raycaster).get());
74}

References m_data, and Slic3r::GUI::Raycaster.

◆ selection_info()

SelectionInfo * Slic3r::GUI::CommonGizmosDataPool::selection_info ( ) const
58{
60 assert(sel_info);
61 return sel_info->is_valid() ? sel_info : nullptr;
62}

References Slic3r::GUI::CommonGizmosDataBase::is_valid(), m_data, and Slic3r::GUI::SelectionInfo.

Referenced by Slic3r::GUI::CommonGizmosDataObjects::InstancesHider::on_update(), Slic3r::GUI::CommonGizmosDataObjects::ObjectClipper::on_update(), Slic3r::GUI::CommonGizmosDataObjects::Raycaster::on_update(), Slic3r::GUI::CommonGizmosDataObjects::InstancesHider::render_cut(), Slic3r::GUI::CommonGizmosDataObjects::ObjectClipper::render_cut(), and Slic3r::GUI::CommonGizmosDataObjects::ObjectClipper::set_position_by_ratio().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void Slic3r::GUI::CommonGizmosDataPool::update ( CommonGizmosDataID required)
44{
45 assert(check_dependencies(required));
46 for (auto& [id, data] : m_data) {
47 if (int(required) & int(CommonGizmosDataID(id)))
48 data->update();
49 else
50 if (data->is_valid())
51 data->release();
52
53 }
54}
bool check_dependencies(CommonGizmosDataID required) const
Definition GLGizmosCommon.cpp:94

References check_dependencies(), and m_data.

Here is the call graph for this function:

Member Data Documentation

◆ m_canvas

GLCanvas3D* Slic3r::GUI::CommonGizmosDataPool::m_canvas
private

Referenced by CommonGizmosDataPool(), and get_canvas().

◆ m_data

std::map<CommonGizmosDataID, std::unique_ptr<CommonGizmosDataBase> > Slic3r::GUI::CommonGizmosDataPool::m_data
private

The documentation for this class was generated from the following files: