Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::TriangleSelector::Triangle Class Reference

#include <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 }
 
EnforcerBlockerType state
 
bool m_selected_by_seed_fill: 1
 
bool m_valid: 1
 

Detailed Description

Constructor & Destructor Documentation

◆ Triangle()

Slic3r::TriangleSelector::Triangle::Triangle ( int  a,
int  b,
int  c,
int  source_triangle,
const EnforcerBlockerType  init_state 
)
inline
260 : verts_idxs{a, b, c},
262 state{init_state}
263 {
264 // Initialize bit fields. Default member initializers are not supported by C++17.
266 m_valid = true;
267 }
int source_triangle
Definition TriangleSelector.hpp:272
bool m_selected_by_seed_fill
Definition TriangleSelector.hpp:307
bool m_valid
Definition TriangleSelector.hpp:309
std::array< int, 3 > verts_idxs
Definition TriangleSelector.hpp:269
EnforcerBlockerType state
Definition TriangleSelector.hpp:306

References m_selected_by_seed_fill, and m_valid.

Member Function Documentation

◆ get_state()

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

References is_split(), and state.

Referenced by Slic3r::TriangleSelector::get_facets_strict_recursive(), 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
288{ 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
285{ 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 
)
160{
161 assert(sides_to_split >= 0 && sides_to_split <= 3);
162 assert(special_side_idx >= 0 && special_side_idx < 3);
163 assert(sides_to_split == 1 || sides_to_split == 2 || special_side_idx == 0);
164 this->number_of_splits = char(sides_to_split);
166}
char special_side_idx
Definition TriangleSelector.hpp:305

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
281{ 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
295{ 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
286{ 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

◆ source_triangle

int Slic3r::TriangleSelector::Triangle::source_triangle

◆ special_side_idx

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

Referenced by set_division(), and special_side().

◆ state

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

Referenced by 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: