Welcome to mirror list, hosted at ThFree Co, Russian Federation.

PolylineCollection.hpp « libslic3r « src « xs - github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 87fc1985b8e25f224be79bb4bd68c0d64c11da68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef slic3r_PolylineCollection_hpp_
#define slic3r_PolylineCollection_hpp_

#include "libslic3r.h"
#include "Polyline.hpp"

namespace Slic3r {

class PolylineCollection
{
    static Polylines _chained_path_from(
        const Polylines &src,
        Point start_near,
        bool no_reverse, 
        bool move_from_src);

public:
    Polylines polylines;
    void chained_path(PolylineCollection* retval, bool no_reverse = false) const
    	{ retval->polylines = chained_path(this->polylines, no_reverse); }
    void chained_path_from(Point start_near, PolylineCollection* retval, bool no_reverse = false) const
    	{ retval->polylines = chained_path_from(this->polylines, start_near, no_reverse); }
    Point leftmost_point() const
    	{ return leftmost_point(polylines); }
    void append(const Polylines &polylines)
        { this->polylines.insert(this->polylines.end(), polylines.begin(), polylines.end()); }

	static Point     leftmost_point(const Polylines &polylines);
	static Polylines chained_path(Polylines &&src, bool no_reverse = false) {
        return (src.empty() || src.front().points.empty()) ?
            Polylines() :
            _chained_path_from(src, src.front().first_point(), no_reverse, true);
    }
	static Polylines chained_path_from(Polylines &&src, Point start_near, bool no_reverse = false)
        { return _chained_path_from(src, start_near, no_reverse, true); }
    static Polylines chained_path(const Polylines &src, bool no_reverse = false) {
        return (src.empty() || src.front().points.empty()) ?
            Polylines() :
            _chained_path_from(src, src.front().first_point(), no_reverse, false);
    }
    static Polylines chained_path_from(const Polylines &src, Point start_near, bool no_reverse = false)
        { return _chained_path_from(src, start_near, no_reverse, false); }
};

}

#endif