OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::LinesBucket Class Reference

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

Collaboration diagram for Slic3r::LinesBucket:

Public Member Functions

 LinesBucket (ExtrusionLayers &&paths, const void *id, Point offset)
 LinesBucket (LinesBucket &&)=default
std::pair< int, int > curRange () const
bool valid () const
void raise ()
float curBottomZ () const
LineWithIDs curLines () const

Public Attributes

float _curBottomZ = 0.0
unsigned _curPileIdx = 0
ExtrusionLayers _piles
const void * _id
Point _offset

Friends

bool operator> (const LinesBucket &left, const LinesBucket &right)
bool operator< (const LinesBucket &left, const LinesBucket &right)
bool operator== (const LinesBucket &left, const LinesBucket &right)

Detailed Description

Constructor & Destructor Documentation

◆ LinesBucket() [1/2]

Slic3r::LinesBucket::LinesBucket ( ExtrusionLayers && paths,
const void * id,
Point offset )
inline
74: _piles(paths), _id(id), _offset(offset) {}
const void * _id
Definition ConflictChecker.hpp:70
ExtrusionLayers _piles
Definition ConflictChecker.hpp:69
Point _offset
Definition ConflictChecker.hpp:71
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582

References _id, _offset, _piles, and Slic3r::offset().

Referenced by LinesBucket(), operator<, operator==, and operator>.

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

◆ LinesBucket() [2/2]

Slic3r::LinesBucket::LinesBucket ( LinesBucket && )
default

References LinesBucket().

Here is the call graph for this function:

Member Function Documentation

◆ curBottomZ()

float Slic3r::LinesBucket::curBottomZ ( ) const
inline
91{ return _curBottomZ; }
float _curBottomZ
Definition ConflictChecker.hpp:66

References _curBottomZ.

◆ curLines()

LineWithIDs Slic3r::LinesBucket::curLines ( ) const
inline
93 {
94 auto [b, e] = curRange();
95 LineWithIDs lines;
96 for (int i = b; i < e; ++i) {
97 for (const ExtrusionPath &path : _piles[i].paths) {
98 if (path.is_force_no_extrusion() == false) {
99 Polyline check_polyline = path.polyline.to_polyline();
100 check_polyline.translate(_offset);
101 Lines tmpLines = check_polyline.lines();
102 for (const Line &line : tmpLines) { lines.emplace_back(line, _id, path.role()); }
103 }
104 }
105 }
106 return lines;
107 }
std::pair< int, int > curRange() const
Definition ConflictChecker.hpp:77
std::vector< LineWithID > LineWithIDs
Definition ConflictChecker.hpp:33
std::vector< Line > Lines
Definition Line.hpp:20

References _id, _offset, _piles, curRange(), Slic3r::Polyline::lines(), and Slic3r::MultiPoint::translate().

Here is the call graph for this function:

◆ curRange()

std::pair< int, int > Slic3r::LinesBucket::curRange ( ) const
inline
78 {
79 auto begin = std::lower_bound(_piles.begin(), _piles.end(), _piles[_curPileIdx], [](const ExtrusionLayer &l, const ExtrusionLayer &r) { return l.bottom_z < r.bottom_z; });
80 auto end = std::upper_bound(_piles.begin(), _piles.end(), _piles[_curPileIdx], [](const ExtrusionLayer &l, const ExtrusionLayer &r) { return l.bottom_z < r.bottom_z; });
81 return std::make_pair<int, int>(std::distance(_piles.begin(), begin), std::distance(_piles.begin(), end));
82 }
unsigned _curPileIdx
Definition ConflictChecker.hpp:67
T * begin(Slic3r::Mat< N, M, T > &mat)
Definition Point.hpp:838
T * end(Slic3r::Mat< N, M, T > &mat)
Definition Point.hpp:841

References _curPileIdx, and _piles.

Referenced by curLines(), and raise().

Here is the caller graph for this function:

◆ raise()

void Slic3r::LinesBucket::raise ( )
inline
85 {
86 if (!valid()) { return; }
87 auto [b, e] = curRange();
88 _curPileIdx += (e - b);
89 _curBottomZ = _curPileIdx == _piles.size() ? _piles.back().bottom_z : _piles[_curPileIdx].bottom_z;
90 }
bool valid() const
Definition ConflictChecker.hpp:83

References _curBottomZ, _curPileIdx, _piles, curRange(), and valid().

Here is the call graph for this function:

◆ valid()

bool Slic3r::LinesBucket::valid ( ) const
inline
83{ return _curPileIdx < _piles.size(); }

References _curPileIdx, and _piles.

Referenced by raise().

Here is the caller graph for this function:

◆ operator<

bool operator< ( const LinesBucket & left,
const LinesBucket & right )
friend
110{ return left._curBottomZ < right._curBottomZ; }
@ right
Definition MarchingSquares.hpp:190
@ left
Definition MarchingSquares.hpp:188

References LinesBucket().

◆ operator==

bool operator== ( const LinesBucket & left,
const LinesBucket & right )
friend
111{ return left._curBottomZ == right._curBottomZ; }

References LinesBucket().

◆ operator>

bool operator> ( const LinesBucket & left,
const LinesBucket & right )
friend
109{ return left._curBottomZ > right._curBottomZ; }

References LinesBucket().

Member Data Documentation

◆ _curBottomZ

float Slic3r::LinesBucket::_curBottomZ = 0.0

Referenced by curBottomZ(), and raise().

◆ _curPileIdx

unsigned Slic3r::LinesBucket::_curPileIdx = 0

Referenced by curRange(), raise(), and valid().

◆ _id

const void* Slic3r::LinesBucket::_id

Referenced by LinesBucket(), and curLines().

◆ _offset

Point Slic3r::LinesBucket::_offset

Referenced by LinesBucket(), and curLines().

◆ _piles

ExtrusionLayers Slic3r::LinesBucket::_piles

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