Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::SegmentIntersection Struct Reference

Public Types

enum  SegmentIntersectionType : char {
  UNKNOWN , OUTER_LOW , OUTER_HIGH , INNER_LOW ,
  INNER_HIGH
}
 
enum class  LinkType : uint8_t { Horizontal , Up , Down , Phony }
 
enum class  LinkQuality : uint8_t { Invalid , Valid , TooLong }
 
enum class  Side { Left , Right }
 
enum class  Direction { Up , Down }
 

Public Member Functions

coord_t pos () const
 
bool is_inner () const
 
bool is_outer () const
 
bool is_low () const
 
bool is_high () const
 
bool has_left_horizontal () const
 
bool has_right_horizontal () const
 
bool has_horizontal (Side side) const
 
bool has_left_vertical_up () const
 
bool has_left_vertical_down () const
 
bool has_left_vertical (Direction dir) const
 
bool has_left_vertical () const
 
bool has_left_vertical_outside () const
 
bool has_right_vertical_up () const
 
bool has_right_vertical_down () const
 
bool has_right_vertical (Direction dir) const
 
bool has_right_vertical () const
 
bool has_right_vertical_outside () const
 
bool has_vertical () const
 
bool has_vertical (Side side) const
 
bool has_vertical_up () const
 
bool has_vertical_down () const
 
bool has_vertical (Direction dir) const
 
int left_horizontal () const
 
int right_horizontal () const
 
int horizontal (Side side) const
 
LinkQuality horizontal_quality (Side side) const
 
int left_vertical_up () const
 
int left_vertical_down () const
 
int left_vertical (Direction dir) const
 
int left_vertical () const
 
int left_vertical_outside () const
 
int right_vertical_up () const
 
int right_vertical_down () const
 
int right_vertical (Direction dir) const
 
int right_vertical () const
 
int right_vertical_outside () const
 
int vertical_up (Side side) const
 
int vertical_down (Side side) const
 
int vertical_outside (Side side) const
 
int vertical_up () const
 
LinkQuality vertical_up_quality () const
 
int vertical_down () const
 
LinkQuality vertical_down_quality () const
 
int vertical_outside () const
 
LinkQuality vertical_outside_quality () const
 
bool operator< (const SegmentIntersection &other) const
 
bool operator== (const SegmentIntersection &other) const
 

Public Attributes

size_t iContour { 0 }
 
size_t iSegment { 0 }
 
int64_t pos_p { 0 }
 
uint32_t pos_q { 1 }
 
int32_t prev_on_contour { 0 }
 
int32_t next_on_contour { 0 }
 
SegmentIntersectionType type { UNKNOWN }
 
LinkType prev_on_contour_type { LinkType::Horizontal }
 
LinkType next_on_contour_type { LinkType::Horizontal }
 
LinkQuality prev_on_contour_quality { LinkQuality::Valid }
 
LinkQuality next_on_contour_quality { LinkQuality::Valid }
 
bool consumed_vertical_up { false }
 
bool consumed_perimeter_right { false }
 

Detailed Description

Member Enumeration Documentation

◆ Direction

◆ LinkQuality

Enumerator
Invalid 
Valid 
TooLong 
169 : uint8_t {
170 Invalid,
171 Valid,
172 // Valid link, but too long to be followed.
173 TooLong,
174 };
unsigned __int8 uint8_t
Definition unistd.h:77

◆ LinkType

Enumerator
Horizontal 
Up 
Down 
Phony 
158 : uint8_t {
159 // Horizontal link (left or right).
161 // Vertical link, up.
162 Up,
163 // Vertical link, down.
164 Down,
165 // Phony intersection point has no link.
166 Phony,
167 };

◆ SegmentIntersectionType

Enumerator
UNKNOWN 
OUTER_LOW 
OUTER_HIGH 
INNER_LOW 
INNER_HIGH 
149 : char {
150 UNKNOWN,
151 OUTER_LOW,
153 INNER_LOW,
155 };
@ OUTER_HIGH
Definition FillRectilinear.cpp:152
@ INNER_HIGH
Definition FillRectilinear.cpp:154
@ INNER_LOW
Definition FillRectilinear.cpp:153
@ UNKNOWN
Definition FillRectilinear.cpp:150
@ OUTER_LOW
Definition FillRectilinear.cpp:151

◆ Side

Enumerator
Left 
Right 

Member Function Documentation

◆ has_horizontal()

bool Slic3r::SegmentIntersection::has_horizontal ( Side  side) const
inline
208{ return side == Side::Left ? this->has_left_horizontal() : this->has_right_horizontal(); }
bool has_right_horizontal() const
Definition FillRectilinear.cpp:207
bool has_left_horizontal() const
Definition FillRectilinear.cpp:206

References has_left_horizontal(), has_right_horizontal(), and Left.

Referenced by horizontal_quality().

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

◆ has_left_horizontal()

bool Slic3r::SegmentIntersection::has_left_horizontal ( ) const
inline
LinkType prev_on_contour_type
Definition FillRectilinear.cpp:177

References Horizontal, and prev_on_contour_type.

Referenced by has_horizontal(), left_horizontal(), and Slic3r::validate_segment_intersection_connectivity().

+ Here is the caller graph for this function:

◆ has_left_vertical() [1/2]

bool Slic3r::SegmentIntersection::has_left_vertical ( ) const
inline
213{ return this->has_left_vertical_up() || this->has_left_vertical_down(); }
bool has_left_vertical_up() const
Definition FillRectilinear.cpp:210
bool has_left_vertical_down() const
Definition FillRectilinear.cpp:211

References has_left_vertical_down(), and has_left_vertical_up().

Referenced by has_vertical(), has_vertical(), and left_vertical().

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

◆ has_left_vertical() [2/2]

bool Slic3r::SegmentIntersection::has_left_vertical ( Direction  dir) const
inline

References has_left_vertical_down(), has_left_vertical_up(), and Up.

Referenced by Slic3r::connect_segment_intersections_by_contours().

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

◆ has_left_vertical_down()

bool Slic3r::SegmentIntersection::has_left_vertical_down ( ) const
inline
211{ return this->prev_on_contour_type == LinkType::Down; }

References Down, and prev_on_contour_type.

Referenced by has_left_vertical(), has_left_vertical(), has_left_vertical_outside(), has_vertical_down(), left_vertical(), left_vertical_down(), vertical_down(), and vertical_down_quality().

+ Here is the caller graph for this function:

◆ has_left_vertical_outside()

bool Slic3r::SegmentIntersection::has_left_vertical_outside ( ) const
inline
214{ return this->is_low() ? this->has_left_vertical_down() : this->has_left_vertical_up(); }
bool is_low() const
Definition FillRectilinear.cpp:194

References has_left_vertical_down(), has_left_vertical_up(), and is_low().

+ Here is the call graph for this function:

◆ has_left_vertical_up()

bool Slic3r::SegmentIntersection::has_left_vertical_up ( ) const
inline
210{ return this->prev_on_contour_type == LinkType::Up; }

References prev_on_contour_type, and Up.

Referenced by has_left_vertical(), has_left_vertical(), has_left_vertical_outside(), has_vertical_up(), left_vertical(), left_vertical_up(), Slic3r::polylines_from_paths(), Slic3r::traverse_graph_generate_polylines(), vertical_up(), and vertical_up_quality().

+ Here is the caller graph for this function:

◆ has_right_horizontal()

bool Slic3r::SegmentIntersection::has_right_horizontal ( ) const
inline
LinkType next_on_contour_type
Definition FillRectilinear.cpp:178

References Horizontal, and next_on_contour_type.

Referenced by has_horizontal(), right_horizontal(), and Slic3r::validate_segment_intersection_connectivity().

+ Here is the caller graph for this function:

◆ has_right_vertical() [1/2]

bool Slic3r::SegmentIntersection::has_right_vertical ( ) const
inline
219{ return this->has_right_vertical_up() || this->has_right_vertical_down(); }
bool has_right_vertical_up() const
Definition FillRectilinear.cpp:216
bool has_right_vertical_down() const
Definition FillRectilinear.cpp:217

References has_right_vertical_down(), and has_right_vertical_up().

Referenced by has_vertical(), has_vertical(), and right_vertical().

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

◆ has_right_vertical() [2/2]

bool Slic3r::SegmentIntersection::has_right_vertical ( Direction  dir) const
inline
218{ return dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down(); }

References has_right_vertical_down(), has_right_vertical_up(), and Up.

Referenced by Slic3r::connect_segment_intersections_by_contours().

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

◆ has_right_vertical_down()

bool Slic3r::SegmentIntersection::has_right_vertical_down ( ) const
inline
217{ return this->next_on_contour_type == LinkType::Down; }

References Down, and next_on_contour_type.

Referenced by has_right_vertical(), has_right_vertical(), has_right_vertical_outside(), has_vertical_down(), Slic3r::polylines_from_paths(), right_vertical(), right_vertical_down(), and Slic3r::traverse_graph_generate_polylines().

+ Here is the caller graph for this function:

◆ has_right_vertical_outside()

bool Slic3r::SegmentIntersection::has_right_vertical_outside ( ) const
inline
220{ return this->is_low() ? this->has_right_vertical_down() : this->has_right_vertical_up(); }

References has_right_vertical_down(), has_right_vertical_up(), and is_low().

+ Here is the call graph for this function:

◆ has_right_vertical_up()

bool Slic3r::SegmentIntersection::has_right_vertical_up ( ) const
inline
216{ return this->next_on_contour_type == LinkType::Up; }

References next_on_contour_type, and Up.

Referenced by has_right_vertical(), has_right_vertical(), has_right_vertical_outside(), has_vertical_up(), right_vertical(), and right_vertical_up().

+ Here is the caller graph for this function:

◆ has_vertical() [1/3]

bool Slic3r::SegmentIntersection::has_vertical ( ) const
inline
222{ return this->has_left_vertical() || this->has_right_vertical(); }
bool has_left_vertical() const
Definition FillRectilinear.cpp:213
bool has_right_vertical() const
Definition FillRectilinear.cpp:219

References has_left_vertical(), and has_right_vertical().

Referenced by Slic3r::intersection_on_prev_next_vertical_line_valid().

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

◆ has_vertical() [2/3]

bool Slic3r::SegmentIntersection::has_vertical ( Direction  dir) const
inline
226{ return dir == Direction::Up ? this->has_vertical_up() : this->has_vertical_down(); }
bool has_vertical_down() const
Definition FillRectilinear.cpp:225
bool has_vertical_up() const
Definition FillRectilinear.cpp:224

References has_vertical_down(), has_vertical_up(), and Up.

+ Here is the call graph for this function:

◆ has_vertical() [3/3]

bool Slic3r::SegmentIntersection::has_vertical ( Side  side) const
inline
223{ return side == Side::Left ? this->has_left_vertical() : this->has_right_vertical(); }

References has_left_vertical(), has_right_vertical(), and Left.

+ Here is the call graph for this function:

◆ has_vertical_down()

bool Slic3r::SegmentIntersection::has_vertical_down ( ) const
inline
225{ return this->has_left_vertical_down() || this->has_right_vertical_down(); }

References has_left_vertical_down(), and has_right_vertical_down().

Referenced by has_vertical().

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

◆ has_vertical_up()

bool Slic3r::SegmentIntersection::has_vertical_up ( ) const
inline
224{ return this->has_left_vertical_up() || this->has_right_vertical_up(); }

References has_left_vertical_up(), and has_right_vertical_up().

Referenced by has_vertical().

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

◆ horizontal()

int Slic3r::SegmentIntersection::horizontal ( Side  side) const
inline
230{ return side == Side::Left ? this->left_horizontal() : this->right_horizontal(); }
int right_horizontal() const
Definition FillRectilinear.cpp:229
int left_horizontal() const
Definition FillRectilinear.cpp:228

References Left, left_horizontal(), and right_horizontal().

Referenced by Slic3r::intersection_on_prev_next_vertical_line_valid(), Slic3r::overlap_bottom(), and Slic3r::overlap_top().

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

◆ horizontal_quality()

LinkQuality Slic3r::SegmentIntersection::horizontal_quality ( Side  side) const
inline
231 {
232 assert(this->has_horizontal(side));
233 return side == Side::Left ? this->prev_on_contour_quality : this->next_on_contour_quality;
234 }
LinkQuality prev_on_contour_quality
Definition FillRectilinear.cpp:179
LinkQuality next_on_contour_quality
Definition FillRectilinear.cpp:180
bool has_horizontal(Side side) const
Definition FillRectilinear.cpp:208

References has_horizontal(), Left, next_on_contour_quality, and prev_on_contour_quality.

Referenced by Slic3r::intersection_on_prev_next_vertical_line_valid().

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

◆ is_high()

bool Slic3r::SegmentIntersection::is_high ( ) const
inline
195{ return type == INNER_HIGH || type == OUTER_HIGH; }
SegmentIntersectionType type
Definition FillRectilinear.cpp:156

References INNER_HIGH, OUTER_HIGH, and type.

Referenced by Slic3r::montonous_region_path_length(), Slic3r::polylines_from_paths(), and Slic3r::traverse_graph_generate_polylines().

+ Here is the caller graph for this function:

◆ is_inner()

◆ is_low()

◆ is_outer()

bool Slic3r::SegmentIntersection::is_outer ( ) const
inline
193{ return type == OUTER_LOW || type == OUTER_HIGH; }

References OUTER_HIGH, OUTER_LOW, and type.

Referenced by Slic3r::montonous_region_path_length(), Slic3r::polylines_from_paths(), and Slic3r::traverse_graph_generate_polylines().

+ Here is the caller graph for this function:

◆ left_horizontal()

int Slic3r::SegmentIntersection::left_horizontal ( ) const
inline
228{ return this->has_left_horizontal() ? this->prev_on_contour : -1; }
int32_t prev_on_contour
Definition FillRectilinear.cpp:140

References has_left_horizontal(), and prev_on_contour.

Referenced by horizontal(), Slic3r::traverse_graph_generate_polylines(), and Slic3r::validate_segment_intersection_connectivity().

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

◆ left_vertical() [1/2]

int Slic3r::SegmentIntersection::left_vertical ( ) const
inline
239{ return this->has_left_vertical() ? this->prev_on_contour : -1; }

References has_left_vertical(), and prev_on_contour.

+ Here is the call graph for this function:

◆ left_vertical() [2/2]

int Slic3r::SegmentIntersection::left_vertical ( Direction  dir) const
inline
238{ return (dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down()) ? this->prev_on_contour : -1; }

References has_left_vertical_down(), has_left_vertical_up(), prev_on_contour, and Up.

Referenced by Slic3r::connect_segment_intersections_by_contours().

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

◆ left_vertical_down()

int Slic3r::SegmentIntersection::left_vertical_down ( ) const
inline
237{ return this->has_left_vertical_down() ? this->prev_on_contour : -1; }

References has_left_vertical_down(), and prev_on_contour.

Referenced by left_vertical_outside(), vertical_down(), and vertical_down().

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

◆ left_vertical_outside()

int Slic3r::SegmentIntersection::left_vertical_outside ( ) const
inline
240{ return this->is_low() ? this->left_vertical_down() : this->left_vertical_up(); }
int left_vertical_up() const
Definition FillRectilinear.cpp:236
int left_vertical_down() const
Definition FillRectilinear.cpp:237

References is_low(), left_vertical_down(), and left_vertical_up().

Referenced by vertical_outside().

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

◆ left_vertical_up()

int Slic3r::SegmentIntersection::left_vertical_up ( ) const
inline
236{ return this->has_left_vertical_up() ? this->prev_on_contour : -1; }

References has_left_vertical_up(), and prev_on_contour.

Referenced by left_vertical_outside(), vertical_up(), and vertical_up().

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

◆ operator<()

bool Slic3r::SegmentIntersection::operator< ( const SegmentIntersection other) const
inline
274 {
275 assert(pos_q > 0);
276 assert(other.pos_q > 0);
277 if (pos_p == 0 || other.pos_p == 0) {
278 // Because the denominators are positive and one of the nominators is zero,
279 // following simple statement holds.
280 return pos_p < other.pos_p;
281 } else {
282 // None of the nominators is zero.
283 int sign1 = (pos_p > 0) ? 1 : -1;
284 int sign2 = (other.pos_p > 0) ? 1 : -1;
285 int signs = sign1 * sign2;
286 assert(signs == 1 || signs == -1);
287 if (signs < 0) {
288 // The nominators have different signs.
289 return sign1 < 0;
290 } else {
291 // The nominators have the same sign.
292 // Absolute values
293 uint64_t p1, p2;
294 if (sign1 > 0) {
295 p1 = uint64_t(pos_p);
296 p2 = uint64_t(other.pos_p);
297 } else {
298 p1 = uint64_t(- pos_p);
299 p2 = uint64_t(- other.pos_p);
300 };
301 // Multiply low and high 32bit words of p1 by other_pos.q
302 // 32bit x 32bit => 64bit
303 // l_hi and l_lo overlap by 32 bits.
304 uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q);
305 uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q);
306 l_hi += (l_lo >> 32);
307 uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q);
308 uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q);
309 r_hi += (r_lo >> 32);
310 // Compare the high 64 bits.
311 if (l_hi == r_hi) {
312 // Compare the low 32 bits.
313 l_lo &= 0xffffffffll;
314 r_lo &= 0xffffffffll;
315 return (sign1 < 0) ? (l_lo > r_lo) : (l_lo < r_lo);
316 }
317 return (sign1 < 0) ? (l_hi > r_hi) : (l_hi < r_hi);
318 }
319 }
320 }
uint32_t pos_q
Definition FillRectilinear.cpp:125
int64_t pos_p
Definition FillRectilinear.cpp:124
unsigned __int64 uint64_t
Definition unistd.h:80

References pos_p, and pos_q.

◆ operator==()

bool Slic3r::SegmentIntersection::operator== ( const SegmentIntersection other) const
inline
323 {
324 assert(pos_q > 0);
325 assert(other.pos_q > 0);
326 if (pos_p == 0 || other.pos_p == 0) {
327 // Because the denominators are positive and one of the nominators is zero,
328 // following simple statement holds.
329 return pos_p == other.pos_p;
330 }
331
332 // None of the nominators is zero, none of the denominators is zero.
333 bool positive = pos_p > 0;
334 if (positive != (other.pos_p > 0))
335 return false;
336 // The nominators have the same sign.
337 // Absolute values
338 uint64_t p1 = positive ? uint64_t(pos_p) : uint64_t(- pos_p);
339 uint64_t p2 = positive ? uint64_t(other.pos_p) : uint64_t(- other.pos_p);
340 // Multiply low and high 32bit words of p1 by other_pos.q
341 // 32bit x 32bit => 64bit
342 // l_hi and l_lo overlap by 32 bits.
343 uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q);
344 uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q);
345 if (l_lo != r_lo)
346 return false;
347 uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q);
348 uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q);
349 return l_hi + (l_lo >> 32) == r_hi + (r_lo >> 32);
350 }

References pos_p, and pos_q.

◆ pos()

coord_t Slic3r::SegmentIntersection::pos ( ) const
inline
127 {
128 // Division rounds both positive and negative down to zero.
129 // Add half of q for an arithmetic rounding effect.
130 int64_t p = pos_p;
131 if (p < 0)
132 p -= int64_t(pos_q>>1);
133 else
134 p += int64_t(pos_q>>1);
135 return coord_t(p / int64_t(pos_q));
136 }
int32_t coord_t
Definition libslic3r.h:39
__int64 int64_t
Definition unistd.h:76

References pos_p, and pos_q.

Referenced by Slic3r::emit_perimeter_prev_next_segment(), Slic3r::emit_perimeter_segment_on_vertical_line(), Slic3r::measure_perimeter_horizontal_segment_length(), Slic3r::measure_perimeter_segment_on_vertical_line_length(), Slic3r::montonous_region_path_length(), Slic3r::polylines_from_paths(), Slic3r::slice_region_by_vertical_lines(), and Slic3r::traverse_graph_generate_polylines().

+ Here is the caller graph for this function:

◆ right_horizontal()

int Slic3r::SegmentIntersection::right_horizontal ( ) const
inline
229{ return this->has_right_horizontal() ? this->next_on_contour : -1; }
int32_t next_on_contour
Definition FillRectilinear.cpp:143

References has_right_horizontal(), and next_on_contour.

Referenced by horizontal(), Slic3r::montonous_region_path_length(), Slic3r::polylines_from_paths(), Slic3r::traverse_graph_generate_polylines(), and Slic3r::validate_segment_intersection_connectivity().

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

◆ right_vertical() [1/2]

int Slic3r::SegmentIntersection::right_vertical ( ) const
inline
244{ return this->has_right_vertical() ? this->next_on_contour : -1; }

References has_right_vertical(), and next_on_contour.

+ Here is the call graph for this function:

◆ right_vertical() [2/2]

int Slic3r::SegmentIntersection::right_vertical ( Direction  dir) const
inline
243{ return (dir == Direction::Up ? this->has_right_vertical_up() : this->has_right_vertical_down()) ? this->next_on_contour : -1; }

References has_right_vertical_down(), has_right_vertical_up(), next_on_contour, and Up.

Referenced by Slic3r::connect_segment_intersections_by_contours().

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

◆ right_vertical_down()

int Slic3r::SegmentIntersection::right_vertical_down ( ) const
inline
242{ return this->has_right_vertical_down() ? this->next_on_contour : -1; }

References has_right_vertical_down(), and next_on_contour.

Referenced by right_vertical_outside(), vertical_down(), and vertical_down().

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

◆ right_vertical_outside()

int Slic3r::SegmentIntersection::right_vertical_outside ( ) const
inline
245{ return this->is_low() ? this->right_vertical_down() : this->right_vertical_up(); }
int right_vertical_up() const
Definition FillRectilinear.cpp:241
int right_vertical_down() const
Definition FillRectilinear.cpp:242

References is_low(), right_vertical_down(), and right_vertical_up().

Referenced by vertical_outside().

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

◆ right_vertical_up()

int Slic3r::SegmentIntersection::right_vertical_up ( ) const
inline
241{ return this->has_right_vertical_up() ? this->next_on_contour : -1; }

References has_right_vertical_up(), and next_on_contour.

Referenced by right_vertical_outside(), vertical_up(), and vertical_up().

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

◆ vertical_down() [1/2]

int Slic3r::SegmentIntersection::vertical_down ( ) const
inline
258 {
259// assert(! this->has_left_vertical_down() || ! this->has_right_vertical_down());
260 return this->has_left_vertical_down() ? this->left_vertical_down() : this->right_vertical_down();
261 }

References has_left_vertical_down(), left_vertical_down(), and right_vertical_down().

Referenced by vertical_outside().

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

◆ vertical_down() [2/2]

int Slic3r::SegmentIntersection::vertical_down ( Side  side) const
inline
248{ return side == Side::Left ? this->left_vertical_down() : this->right_vertical_down(); }

References Left, left_vertical_down(), and right_vertical_down().

Referenced by Slic3r::montonous_region_path_length(), Slic3r::overlap_top(), Slic3r::polylines_from_paths(), and Slic3r::vertical_run_bottom().

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

◆ vertical_down_quality()

LinkQuality Slic3r::SegmentIntersection::vertical_down_quality ( ) const
inline
262 {
264 }

References has_left_vertical_down(), next_on_contour_quality, and prev_on_contour_quality.

Referenced by Slic3r::montonous_region_path_length(), Slic3r::overlap_top(), Slic3r::polylines_from_paths(), vertical_outside_quality(), and Slic3r::vertical_run_bottom().

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

◆ vertical_outside() [1/2]

int Slic3r::SegmentIntersection::vertical_outside ( ) const
inline
265{ return this->is_low() ? this->vertical_down() : this->vertical_up(); }
int vertical_down() const
Definition FillRectilinear.cpp:258
int vertical_up() const
Definition FillRectilinear.cpp:251

References is_low(), vertical_down(), and vertical_up().

+ Here is the call graph for this function:

◆ vertical_outside() [2/2]

int Slic3r::SegmentIntersection::vertical_outside ( Side  side) const
inline
249{ return side == Side::Left ? this->left_vertical_outside() : this->right_vertical_outside(); }
int right_vertical_outside() const
Definition FillRectilinear.cpp:245
int left_vertical_outside() const
Definition FillRectilinear.cpp:240

References Left, left_vertical_outside(), and right_vertical_outside().

Referenced by Slic3r::traverse_graph_generate_polylines().

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

◆ vertical_outside_quality()

LinkQuality Slic3r::SegmentIntersection::vertical_outside_quality ( ) const
inline
266{ return this->is_low() ? this->vertical_down_quality() : this->vertical_up_quality(); }
LinkQuality vertical_up_quality() const
Definition FillRectilinear.cpp:254
LinkQuality vertical_down_quality() const
Definition FillRectilinear.cpp:262

References is_low(), vertical_down_quality(), and vertical_up_quality().

Referenced by Slic3r::traverse_graph_generate_polylines().

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

◆ vertical_up() [1/2]

int Slic3r::SegmentIntersection::vertical_up ( ) const
inline
251 {
252 return this->has_left_vertical_up() ? this->left_vertical_up() : this->right_vertical_up();
253 }

References has_left_vertical_up(), left_vertical_up(), and right_vertical_up().

Referenced by vertical_outside().

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

◆ vertical_up() [2/2]

int Slic3r::SegmentIntersection::vertical_up ( Side  side) const
inline
247{ return side == Side::Left ? this->left_vertical_up() : this->right_vertical_up(); }

References Left, left_vertical_up(), and right_vertical_up().

Referenced by Slic3r::montonous_region_path_length(), Slic3r::overlap_bottom(), Slic3r::polylines_from_paths(), and Slic3r::vertical_run_top().

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

◆ vertical_up_quality()

LinkQuality Slic3r::SegmentIntersection::vertical_up_quality ( ) const
inline
254 {
256 }

References has_left_vertical_up(), next_on_contour_quality, and prev_on_contour_quality.

Referenced by Slic3r::montonous_region_path_length(), Slic3r::overlap_bottom(), Slic3r::polylines_from_paths(), vertical_outside_quality(), and Slic3r::vertical_run_top().

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

Member Data Documentation

◆ consumed_perimeter_right

bool Slic3r::SegmentIntersection::consumed_perimeter_right { false }

◆ consumed_vertical_up

bool Slic3r::SegmentIntersection::consumed_vertical_up { false }

◆ iContour

◆ iSegment

◆ next_on_contour

◆ next_on_contour_quality

◆ next_on_contour_type

◆ pos_p

◆ pos_q

uint32_t Slic3r::SegmentIntersection::pos_q { 1 }

◆ prev_on_contour

◆ prev_on_contour_quality

◆ prev_on_contour_type

◆ type


The documentation for this struct was generated from the following file: