OrcaSlicer latest
OrcaSlicer
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

Enumerator
Up 
Down 
221 {
222 Up,
223 Down
224 };
@ Down
Definition TriangleMeshSlicer.cpp:681
@ Up
Definition TriangleMeshSlicer.cpp:679

◆ LinkQuality

enum class Slic3r::SegmentIntersection::LinkQuality : uint8_t
strong
Enumerator
Invalid 
Valid 
TooLong 
189 : uint8_t {
190 Invalid,
191 Valid,
192 // Valid link, but too long to be followed.
193 TooLong,
194 };
@ Valid
Definition Auxiliary.hpp:87
@ Invalid
Definition BuildVolume.hpp:21

◆ LinkType

enum class Slic3r::SegmentIntersection::LinkType : uint8_t
strong
Enumerator
Horizontal 
Up 
Down 
Phony 
178 : uint8_t {
179 // Horizontal link (left or right).
181 // Vertical link, up.
182 Up,
183 // Vertical link, down.
184 Down,
185 // Phony intersection point has no link.
186 Phony,
187 };
@ Horizontal
Definition SketchEngine.hpp:101

◆ SegmentIntersectionType

Enumerator
UNKNOWN 
OUTER_LOW 
OUTER_HIGH 
INNER_LOW 
INNER_HIGH 
169 : char {
170 UNKNOWN,
171 OUTER_LOW,
173 INNER_LOW,
175 };
@ OUTER_HIGH
Definition FillRectilinear.cpp:172
@ INNER_HIGH
Definition FillRectilinear.cpp:174
@ INNER_LOW
Definition FillRectilinear.cpp:173
@ UNKNOWN
Definition FillRectilinear.cpp:170
@ OUTER_LOW
Definition FillRectilinear.cpp:171

◆ Side

Enumerator
Left 
Right 
217 {
218 Left,
219 Right
220 };
@ Right
Definition GLToolbar.hpp:462
@ Left
Definition GLToolbar.hpp:462

Member Function Documentation

◆ has_horizontal()

bool Slic3r::SegmentIntersection::has_horizontal ( Side side) const
inline
228{ return side == Side::Left ? this->has_left_horizontal() : this->has_right_horizontal(); }
@ Left
Definition FillRectilinear.cpp:218
bool has_right_horizontal() const
Definition FillRectilinear.cpp:227
bool has_left_horizontal() const
Definition FillRectilinear.cpp:226

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:197
@ Horizontal
Definition FillRectilinear.cpp:180

References Horizontal.

Referenced by has_horizontal(), left_horizontal(), Slic3r::pinch_contours_insert_phony_outer_intersections(), 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
233{ return this->has_left_vertical_up() || this->has_left_vertical_down(); }
bool has_left_vertical_up() const
Definition FillRectilinear.cpp:230
bool has_left_vertical_down() const
Definition FillRectilinear.cpp:231

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
232{ return dir == Direction::Up ? this->has_left_vertical_up() : this->has_left_vertical_down(); }
@ Up
Definition FillRectilinear.cpp:222

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

Referenced by Slic3r::connect_segment_intersections_by_contours(), and Slic3r::pinch_contours_insert_phony_outer_intersections().

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
231{ return this->prev_on_contour_type == LinkType::Down; }
@ Down
Definition FillRectilinear.cpp:184

References Down.

Referenced by has_left_vertical(), has_left_vertical(), has_left_vertical_outside(), has_vertical_down(), left_vertical(), left_vertical_down(), Slic3r::validate_segment_intersection_connectivity(), 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
234{ return this->is_low() ? this->has_left_vertical_down() : this->has_left_vertical_up(); }
bool is_low() const
Definition FillRectilinear.cpp:214

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
230{ return this->prev_on_contour_type == LinkType::Up; }
@ Up
Definition FillRectilinear.cpp:182

References 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(), Slic3r::validate_segment_intersection_connectivity(), 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:198

References Horizontal.

Referenced by has_horizontal(), Slic3r::pinch_contours_insert_phony_outer_intersections(), 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
239{ return this->has_right_vertical_up() || this->has_right_vertical_down(); }
bool has_right_vertical_up() const
Definition FillRectilinear.cpp:236
bool has_right_vertical_down() const
Definition FillRectilinear.cpp:237

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
238{ 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(), and Slic3r::pinch_contours_insert_phony_outer_intersections().

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
237{ return this->next_on_contour_type == LinkType::Down; }

References Down.

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

Here is the caller graph for this function:

◆ has_right_vertical_outside()

bool Slic3r::SegmentIntersection::has_right_vertical_outside ( ) const
inline
240{ 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
236{ return this->next_on_contour_type == LinkType::Up; }

References Up.

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

Here is the caller graph for this function:

◆ has_vertical() [1/3]

bool Slic3r::SegmentIntersection::has_vertical ( ) const
inline
242{ return this->has_left_vertical() || this->has_right_vertical(); }
bool has_left_vertical() const
Definition FillRectilinear.cpp:233
bool has_right_vertical() const
Definition FillRectilinear.cpp:239

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
246{ return dir == Direction::Up ? this->has_vertical_up() : this->has_vertical_down(); }
bool has_vertical_down() const
Definition FillRectilinear.cpp:245
bool has_vertical_up() const
Definition FillRectilinear.cpp:244

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
243{ return side == Side::Left ? this->has_left_vertical() : this->has_right_vertical(); }
bool has_right_vertical(Direction dir) const
Definition FillRectilinear.cpp:238

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
245{ 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
244{ 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
250{ return side == Side::Left ? this->left_horizontal() : this->right_horizontal(); }
int right_horizontal() const
Definition FillRectilinear.cpp:249
int left_horizontal() const
Definition FillRectilinear.cpp:248

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
251 {
252 assert(this->has_horizontal(side));
253 return side == Side::Left ? this->prev_on_contour_quality : this->next_on_contour_quality;
254 }
LinkQuality prev_on_contour_quality
Definition FillRectilinear.cpp:199
LinkQuality next_on_contour_quality
Definition FillRectilinear.cpp:200
bool has_horizontal(Side side) const
Definition FillRectilinear.cpp:228

References has_horizontal(), and Left.

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
215{ return type == INNER_HIGH || type == OUTER_HIGH; }
SegmentIntersectionType type
Definition FillRectilinear.cpp:176

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
213{ 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
248{ return this->has_left_horizontal() ? this->prev_on_contour : -1; }
int32_t prev_on_contour
Definition FillRectilinear.cpp:160

References has_left_horizontal().

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
259{ return this->has_left_vertical() ? this->prev_on_contour : -1; }

References has_left_vertical().

Here is the call graph for this function:

◆ left_vertical() [2/2]

int Slic3r::SegmentIntersection::left_vertical ( Direction dir) const
inline
258{ 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(), 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
257{ return this->has_left_vertical_down() ? this->prev_on_contour : -1; }

References has_left_vertical_down().

Referenced by left_vertical_outside(), Slic3r::validate_segment_intersection_connectivity(), 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
260{ return this->is_low() ? this->left_vertical_down() : this->left_vertical_up(); }
int left_vertical_up() const
Definition FillRectilinear.cpp:256
int left_vertical_down() const
Definition FillRectilinear.cpp:257

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
256{ return this->has_left_vertical_up() ? this->prev_on_contour : -1; }

References has_left_vertical_up().

Referenced by left_vertical_outside(), Slic3r::validate_segment_intersection_connectivity(), 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
294 {
295 assert(pos_q > 0);
296 assert(other.pos_q > 0);
297 if (pos_p == 0 || other.pos_p == 0) {
298 // Because the denominators are positive and one of the nominators is zero,
299 // following simple statement holds.
300 return pos_p < other.pos_p;
301 } else {
302 // None of the nominators is zero.
303 int sign1 = (pos_p > 0) ? 1 : -1;
304 int sign2 = (other.pos_p > 0) ? 1 : -1;
305 int signs = sign1 * sign2;
306 assert(signs == 1 || signs == -1);
307 if (signs < 0) {
308 // The nominators have different signs.
309 return sign1 < 0;
310 } else {
311 // The nominators have the same sign.
312 // Absolute values
313 uint64_t p1, p2;
314 if (sign1 > 0) {
315 p1 = uint64_t(pos_p);
316 p2 = uint64_t(other.pos_p);
317 } else {
318 p1 = uint64_t(- pos_p);
319 p2 = uint64_t(- other.pos_p);
320 };
321 // Multiply low and high 32bit words of p1 by other_pos.q
322 // 32bit x 32bit => 64bit
323 // l_hi and l_lo overlap by 32 bits.
324 uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q);
325 uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q);
326 l_hi += (l_lo >> 32);
327 uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q);
328 uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q);
329 r_hi += (r_lo >> 32);
330 // Compare the high 64 bits.
331 if (l_hi == r_hi) {
332 // Compare the low 32 bits.
333 l_lo &= 0xffffffffll;
334 r_lo &= 0xffffffffll;
335 return (sign1 < 0) ? (l_lo > r_lo) : (l_lo < r_lo);
336 }
337 return (sign1 < 0) ? (l_hi > r_hi) : (l_hi < r_hi);
338 }
339 }
340 }
uint32_t pos_q
Definition FillRectilinear.cpp:145
int64_t pos_p
Definition FillRectilinear.cpp:144

References pos_p, and pos_q.

◆ operator==()

bool Slic3r::SegmentIntersection::operator== ( const SegmentIntersection & other) const
inline
343 {
344 assert(pos_q > 0);
345 assert(other.pos_q > 0);
346 if (pos_p == 0 || other.pos_p == 0) {
347 // Because the denominators are positive and one of the nominators is zero,
348 // following simple statement holds.
349 return pos_p == other.pos_p;
350 }
351
352 // None of the nominators is zero, none of the denominators is zero.
353 bool positive = pos_p > 0;
354 if (positive != (other.pos_p > 0))
355 return false;
356 // The nominators have the same sign.
357 // Absolute values
358 uint64_t p1 = positive ? uint64_t(pos_p) : uint64_t(- pos_p);
359 uint64_t p2 = positive ? uint64_t(other.pos_p) : uint64_t(- other.pos_p);
360 // Multiply low and high 32bit words of p1 by other_pos.q
361 // 32bit x 32bit => 64bit
362 // l_hi and l_lo overlap by 32 bits.
363 uint64_t l_lo = (p1 & 0xffffffffll) * uint64_t(other.pos_q);
364 uint64_t r_lo = (p2 & 0xffffffffll) * uint64_t(pos_q);
365 if (l_lo != r_lo)
366 return false;
367 uint64_t l_hi = (p1 >> 32) * uint64_t(other.pos_q);
368 uint64_t r_hi = (p2 >> 32) * uint64_t(pos_q);
369 return l_hi + (l_lo >> 32) == r_hi + (r_lo >> 32);
370 }

References pos_p, and pos_q.

◆ pos()

coord_t Slic3r::SegmentIntersection::pos ( ) const
inline
147 {
148 // Division rounds both positive and negative down to zero.
149 // Add half of q for an arithmetic rounding effect.
150 int64_t p = pos_p;
151 if (p < 0)
152 p -= int64_t(pos_q>>1);
153 else
154 p += int64_t(pos_q>>1);
155 return coord_t(p / int64_t(pos_q));
156 }
int64_t coord_t
Definition libslic3r.h:48

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
249{ return this->has_right_horizontal() ? this->next_on_contour : -1; }
int32_t next_on_contour
Definition FillRectilinear.cpp:163

References has_right_horizontal().

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
264{ return this->has_right_vertical() ? this->next_on_contour : -1; }

References has_right_vertical().

Here is the call graph for this function:

◆ right_vertical() [2/2]

int Slic3r::SegmentIntersection::right_vertical ( Direction dir) const
inline
263{ 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(), 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
262{ return this->has_right_vertical_down() ? this->next_on_contour : -1; }

References has_right_vertical_down().

Referenced by right_vertical_outside(), Slic3r::validate_segment_intersection_connectivity(), 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
265{ return this->is_low() ? this->right_vertical_down() : this->right_vertical_up(); }
int right_vertical_up() const
Definition FillRectilinear.cpp:261
int right_vertical_down() const
Definition FillRectilinear.cpp:262

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
261{ return this->has_right_vertical_up() ? this->next_on_contour : -1; }

References has_right_vertical_up().

Referenced by right_vertical_outside(), Slic3r::validate_segment_intersection_connectivity(), 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
278 {
279// assert(! this->has_left_vertical_down() || ! this->has_right_vertical_down());
280 return this->has_left_vertical_down() ? this->left_vertical_down() : this->right_vertical_down();
281 }

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
268{ 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
282 {
284 }

References has_left_vertical_down().

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
285{ return this->is_low() ? this->vertical_down() : this->vertical_up(); }
int vertical_up(Side side) const
Definition FillRectilinear.cpp:267
int vertical_down() const
Definition FillRectilinear.cpp:278

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
269{ return side == Side::Left ? this->left_vertical_outside() : this->right_vertical_outside(); }
int right_vertical_outside() const
Definition FillRectilinear.cpp:265
int left_vertical_outside() const
Definition FillRectilinear.cpp:260

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
286{ return this->is_low() ? this->vertical_down_quality() : this->vertical_up_quality(); }
LinkQuality vertical_up_quality() const
Definition FillRectilinear.cpp:274
LinkQuality vertical_down_quality() const
Definition FillRectilinear.cpp:282

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
271 {
272 return this->has_left_vertical_up() ? this->left_vertical_up() : this->right_vertical_up();
273 }

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
267{ 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
274 {
276 }

References has_left_vertical_up().

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

int64_t Slic3r::SegmentIntersection::pos_p { 0 }

◆ 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: