QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RPolylineProxy.h
Go to the documentation of this file.
1
20#ifndef RPOLYLINEPROXY_H
21#define RPOLYLINEPROXY_H
22
23#include "../core_global.h"
24
25#include "RS.h"
26#include "RMath.h"
27
28class RArc;
29class RExporter;
30class RLine;
31class RPainterPath;
32class RPolyline;
33class RVector;
34
35
43public:
44 virtual ~RPolylineProxy() {}
45 virtual RS::Ending getTrimEnd(RPolyline& polyline, const RVector& trimPoint, const RVector& clickPoint) = 0;
46 virtual bool trimStartPoint(RPolyline& polyline, const RVector& trimPoint, const RVector& clickPoint, bool extend = false) = 0;
47 virtual bool trimEndPoint(RPolyline& polyline, const RVector& trimPoint, const RVector& clickPoint, bool extend = false) = 0;
48 virtual bool trimStartPoint(RPolyline& polyline, double trimDist) = 0;
49 virtual bool trimEndPoint(RPolyline& polyline, double trimDist) = 0;
50 virtual bool relocateStartPoint(RPolyline& polyline, const RVector& p) = 0;
51 virtual bool relocateStartPoint(RPolyline& polyline, double dist) = 0;
52 virtual int getSegmentAtDist(const RPolyline& polyline, double dist) = 0;
53
54 virtual QList<RPolyline> renderThickPolyline(const RPolyline& polyline) = 0;
55 virtual QList<QPair<RPolyline, RPolyline> > getLeftRightOutline(const RPolyline& polyline) = 0;
56 virtual QList<RVector> verifyTangency(const RPolyline& polyline, double toleranceMin = RS::AngleTolerance, double toleranceMax = M_PI_4) = 0;
57 virtual double getArea(const RPolyline& polyline, double segmentLength) = 0;
58 virtual RVector getPointInside(const RPolyline& polyline) = 0;
59
60 virtual QList<RPolyline> splitAtDiscontinuities(const RPolyline& polyline, double tolerance) = 0;
61
62 virtual double getBaseAngle(const RPolyline& polyline) = 0;
63 virtual double getWidth(const RPolyline& polyline) = 0;
64 virtual bool setWidth(RPolyline& polyline, double v) = 0;
65 virtual double getHeight(const RPolyline& polyline) = 0;
66 virtual bool setHeight(RPolyline& polyline, double v) = 0;
67
68 virtual QList<RPolyline> morph(const RPolyline& polyline, const RPolyline& target, int steps, RS::Easing easing = RS::Linear, bool zLinear = true, double customFactor = RNANDOUBLE) = 0;
69 virtual RPolyline roundAllCorners(const RPolyline& polyline, double radius) = 0;
70 virtual RPolyline getPolygon(const RPolyline& polyline, double segmentLength) = 0;
71 virtual RPolyline getPolygonHull(const RPolyline& polyline, double angle, double tolerance, bool inner = false) = 0;
72 virtual RVector insertVertexAtDistance(RPolyline& polyline, double dist) = 0;
73
74 virtual bool simplify(RPolyline& polyline, double tolerance) = 0;
75 virtual QList<RPolyline> splitAtSegmentTypeChange(const RPolyline& polyline) = 0;
76 virtual bool insertVerticesAtSelfIntersections(RPolyline& polyline) = 0;
77};
78
79#endif
#define RNANDOUBLE
Definition RMath.h:74
#define M_PI_4
Definition RMath.h:46
Low-level mathematical representation of an arc.
Definition RArc.h:42
Abstract base class for exporters.
Definition RExporter.h:78
Low-level mathematical representation of a line.
Definition RLine.h:41
Extended painter path with a z-level and a pen.
Definition RPainterPath.h:48
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
Proxy for advanced polyline functionality.
Definition RPolylineProxy.h:42
virtual int getSegmentAtDist(const RPolyline &polyline, double dist)=0
virtual RPolyline roundAllCorners(const RPolyline &polyline, double radius)=0
virtual bool relocateStartPoint(RPolyline &polyline, double dist)=0
virtual ~RPolylineProxy()
Definition RPolylineProxy.h:44
virtual bool trimEndPoint(RPolyline &polyline, double trimDist)=0
virtual QList< RPolyline > morph(const RPolyline &polyline, const RPolyline &target, int steps, RS::Easing easing=RS::Linear, bool zLinear=true, double customFactor=RNANDOUBLE)=0
virtual RVector insertVertexAtDistance(RPolyline &polyline, double dist)=0
virtual QList< QPair< RPolyline, RPolyline > > getLeftRightOutline(const RPolyline &polyline)=0
virtual bool trimEndPoint(RPolyline &polyline, const RVector &trimPoint, const RVector &clickPoint, bool extend=false)=0
virtual bool insertVerticesAtSelfIntersections(RPolyline &polyline)=0
virtual QList< RPolyline > splitAtDiscontinuities(const RPolyline &polyline, double tolerance)=0
virtual bool trimStartPoint(RPolyline &polyline, const RVector &trimPoint, const RVector &clickPoint, bool extend=false)=0
virtual bool setHeight(RPolyline &polyline, double v)=0
virtual double getHeight(const RPolyline &polyline)=0
virtual double getWidth(const RPolyline &polyline)=0
virtual RS::Ending getTrimEnd(RPolyline &polyline, const RVector &trimPoint, const RVector &clickPoint)=0
virtual double getArea(const RPolyline &polyline, double segmentLength)=0
virtual QList< RPolyline > splitAtSegmentTypeChange(const RPolyline &polyline)=0
virtual double getBaseAngle(const RPolyline &polyline)=0
virtual bool simplify(RPolyline &polyline, double tolerance)=0
virtual bool relocateStartPoint(RPolyline &polyline, const RVector &p)=0
virtual RPolyline getPolygon(const RPolyline &polyline, double segmentLength)=0
virtual QList< RVector > verifyTangency(const RPolyline &polyline, double toleranceMin=RS::AngleTolerance, double toleranceMax=M_PI_4)=0
virtual bool trimStartPoint(RPolyline &polyline, double trimDist)=0
virtual QList< RPolyline > renderThickPolyline(const RPolyline &polyline)=0
virtual RVector getPointInside(const RPolyline &polyline)=0
virtual bool setWidth(RPolyline &polyline, double v)=0
virtual RPolyline getPolygonHull(const RPolyline &polyline, double angle, double tolerance, bool inner=false)=0
static const double AngleTolerance
Definition RS.h:921
Ending
Entity ending.
Definition RS.h:323
Easing
Definition RS.h:722
@ Linear
Definition RS.h:723
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define QCADCORE_EXPORT
Definition core_global.h:10