OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::TriangleSelector::Triangle Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/TriangleSelector.hpp>

Collaboration diagram for Slic3r::TriangleSelector::Triangle:

Public Member Functions

 Triangle (int a, int b, int c, int source_triangle, const EnforcerBlockerType init_state)
void set_division (int sides_to_split, int special_side_idx)
void set_state (EnforcerBlockerType type)
EnforcerBlockerType get_state () const
void select_by_seed_fill ()
void unselect_by_seed_fill ()
bool is_selected_by_seed_fill () const
bool valid () const noexcept
bool is_split () const noexcept
int number_of_split_sides () const noexcept
int special_side () const noexcept

Public Attributes

std::array< int, 3 > verts_idxs
int source_triangle
std::array< int, 4 > children

Private Attributes

friend TriangleSelector
char number_of_splits { 0 }
char special_side_idx { 0 }
bool m_selected_by_seed_fill: 1
bool m_valid: 1
EnforcerBlockerType state

Detailed Description

Constructor & Destructor Documentation

◆ Triangle()

Slic3r::TriangleSelector::Triangle::Triangle ( int a,
int b,
int c,
int source_triangle,
const EnforcerBlockerType init_state )
inline
455 : verts_idxs{a, b, c},
457 state{init_state}
458 {
459 // Initialize bit fields. Default member initializers are not supported by C++17.
461 m_valid = true;
462 }
int source_triangle
Definition TriangleSelector.hpp:467
bool m_selected_by_seed_fill
Definition TriangleSelector.hpp:501
bool m_valid
Definition TriangleSelector.hpp:503
std::array< int, 3 > verts_idxs
Definition TriangleSelector.hpp:464
EnforcerBlockerType state
Definition TriangleSelector.hpp:511

References m_selected_by_seed_fill, m_valid, source_triangle, state, and verts_idxs.

Member Function Documentation

◆ get_state()

EnforcerBlockerType Slic3r::TriangleSelector::Triangle::get_state ( ) const
inline
477{ assert(! is_split()); return state; }
bool is_split() const noexcept
Definition TriangleSelector.hpp:488

References is_split(), and state.

Referenced by Slic3r::TriangleSelector::get_facets_strict_recursive(), Slic3r::TriangleSelector::remap_painting(), Slic3r::TriangleSelector::select_triangle_recursive(), Slic3r::TriangleSelector::serialize(), and Slic3r::TriangleSelector::split_triangle().

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

◆ is_selected_by_seed_fill()

bool Slic3r::TriangleSelector::Triangle::is_selected_by_seed_fill ( ) const
inline
483{ assert(! is_split()); return m_selected_by_seed_fill; }

References is_split(), and m_selected_by_seed_fill.

Referenced by Slic3r::TriangleSelector::get_seed_fill_contour_recursive().

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

◆ is_split()

bool Slic3r::TriangleSelector::Triangle::is_split ( ) const
inlinenoexcept

◆ number_of_split_sides()

◆ select_by_seed_fill()

void Slic3r::TriangleSelector::Triangle::select_by_seed_fill ( )
inline
480{ assert(! is_split()); m_selected_by_seed_fill = true; }

References is_split(), and m_selected_by_seed_fill.

Here is the call graph for this function:

◆ set_division()

void Slic3r::TriangleSelector::Triangle::set_division ( int sides_to_split,
int special_side_idx )
183{
184 assert(sides_to_split >= 0 && sides_to_split <= 3);
185 assert(special_side_idx >= 0 && special_side_idx < 3);
186 assert(sides_to_split == 1 || sides_to_split == 2 || special_side_idx == 0);
187 this->number_of_splits = char(sides_to_split);
189}
char special_side_idx
Definition TriangleSelector.hpp:500

References number_of_splits, and special_side_idx.

Referenced by Slic3r::TriangleSelector::split_triangle(), and Slic3r::TriangleSelector::undivide_triangle().

Here is the caller graph for this function:

◆ set_state()

void Slic3r::TriangleSelector::Triangle::set_state ( EnforcerBlockerType type)
inline
476{ assert(!is_split()); state = type; }

References is_split(), and state.

Referenced by Slic3r::TriangleSelector::remove_useless_children(), and Slic3r::TriangleSelector::select_triangle_recursive().

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

◆ special_side()

int Slic3r::TriangleSelector::Triangle::special_side ( ) const
inlinenoexcept
490{ assert(is_split()); return special_side_idx; }

References is_split(), and special_side_idx.

Referenced by Slic3r::TriangleSelector::child_neighbors(), Slic3r::TriangleSelector::child_neighbors_propagated(), Slic3r::TriangleSelector::neighbor_child(), Slic3r::TriangleSelector::perform_split(), Slic3r::TriangleSelector::serialize(), Slic3r::TriangleSelector::triangle_midpoint(), and Slic3r::TriangleSelector::triangle_subtriangles().

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

◆ unselect_by_seed_fill()

void Slic3r::TriangleSelector::Triangle::unselect_by_seed_fill ( )
inline
481{ assert(! is_split()); m_selected_by_seed_fill = false; }

References is_split(), and m_selected_by_seed_fill.

Here is the call graph for this function:

◆ valid()

bool Slic3r::TriangleSelector::Triangle::valid ( ) const
inlinenoexcept

Member Data Documentation

◆ children

◆ m_selected_by_seed_fill

bool Slic3r::TriangleSelector::Triangle::m_selected_by_seed_fill
private

◆ m_valid

bool Slic3r::TriangleSelector::Triangle::m_valid
private

◆ number_of_splits

char Slic3r::TriangleSelector::Triangle::number_of_splits { 0 }
private
496{ 0 };

Referenced by number_of_split_sides(), and set_division().

◆ source_triangle

◆ special_side_idx

char Slic3r::TriangleSelector::Triangle::special_side_idx { 0 }
private
500{ 0 };

Referenced by set_division(), and special_side().

◆ state

EnforcerBlockerType Slic3r::TriangleSelector::Triangle::state
private

Referenced by Triangle(), get_state(), and set_state().

◆ TriangleSelector

friend Slic3r::TriangleSelector::Triangle::TriangleSelector
private

◆ verts_idxs


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