QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RCircleData.h
Go to the documentation of this file.
1
20#ifndef RCIRCLEDATA_H
21#define RCIRCLEDATA_H
22
23#include "entity_global.h"
24
25#include "RBox.h"
26#include "REntityData.h"
27#include "RVector.h"
28#include "RCircle.h"
29
30class RDocument;
31class REntity;
32class RLine;
33class RPolyline;
34class RRefPoint;
35
45
46 friend class RCircleEntity;
47
48protected:
49 RCircleData(RDocument* document, const RCircleData& data);
50
51public:
53 RCircleData(const RCircle& circle);
54 RCircleData(const RVector& center, double radius);
55
56 virtual RS::EntityType getType() const {
57 return RS::EntityCircle;
58 }
60 return *this;
61 }
62
63 bool isValid() const {
64 return RCircle::isValid();
65 }
66 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
67 return REntityData::getEndPoints(queryBox, subEntityIds);
68 }
69 virtual void setZ(double z) {
71 }
72 virtual void to2D() {
74 }
75 virtual RBox getBoundingBox(bool ignoreEmpty=false) const {
77 }
78 virtual QList<RVector> getMiddlePoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
79 return REntityData::getMiddlePoints(queryBox, subEntityIds);
80 }
81 virtual QList<RVector> getCenterPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
82 return REntityData::getCenterPoints(queryBox, subEntityIds);
83 }
84 virtual QList<RVector> getArcReferencePoints(const RBox& queryBox = RDEFAULT_RBOX) const {
86 }
87 virtual QList<RVector> getPointsWithDistanceToEnd(double distance, int from = RS::FromAny, const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
88 return REntityData::getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
89 }
90 virtual QList<RVector> getIntersectionPoints(const REntityData& other, bool limited = true, bool same = false, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true, QList<QPair<RObject::Id, RObject::Id> >* entityIds = NULL) const {
91 return REntityData::getIntersectionPoints(other, limited, same, queryBox, ignoreComplex, entityIds);
92 }
93 virtual QList<RVector> getIntersectionPoints(const RShape& shape, bool limited = true, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const {
94 return REntityData::getIntersectionPoints(shape, limited, queryBox, ignoreComplex);
95 }
96 virtual RVector getVectorTo(const RVector& point, bool limited=true, double strictRange = RMAXDOUBLE) const {
97 return REntityData::getVectorTo(point, limited, strictRange);
98 }
99 virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const {
100 return REntityData::getDistanceTo(point, limited, range, draft, strictRange);
101 }
102 virtual bool intersectsWith(const RShape& shape) const {
103 return REntityData::intersectsWith(shape);
104 }
105 virtual bool move(const RVector& offset) {
106 return RCircle::move(offset);
107 }
108 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
109 return RCircle::rotate(rotation, center);
110 }
111 virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR) {
112 return RCircle::scale(scaleFactors, center);
113 }
114 virtual bool mirror(const RLine& axis) {
115 return RCircle::mirror(axis);
116 }
117 virtual bool mirror(const RVector& axis1, const RVector& axis2) {
118 return REntityData::mirror(axis1, axis2);
119 }
120 virtual bool flipHorizontal() {
122 }
123 virtual bool flipVertical() {
125 }
126 virtual bool stretch(const RPolyline& area, const RVector& offset) {
127 return RCircle::stretch(area, offset);
128 }
129
131 return RCircle::getCenter();
132 }
133 double getRadius() const {
134 return RCircle::getRadius();
135 }
136
137 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
138
139 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
140
141 virtual RShape* castToShape() {
142 return this;
143 }
144
145 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const {
146 Q_UNUSED(queryBox)
147 Q_UNUSED(ignoreComplex)
148 Q_UNUSED(segment)
149 Q_UNUSED(entityIds)
150
151 return QList<QSharedPointer<RShape> >() <<
152 QSharedPointer<RShape>(new RCircle(*this));
153 }
154
155};
156
160Q_DECLARE_METATYPE(QSharedPointer<RCircleData>)
161
162#endif
#define RDEFAULT_RBOX
Definition RBox.h:35
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_RVECTOR
Definition RVector.h:38
Represents a box e.g.
Definition RBox.h:46
Stores and manages all data that defines the geometry and appearance of a circle entity.
Definition RCircleData.h:44
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition RCircleData.h:126
virtual bool flipHorizontal()
Definition RCircleData.h:120
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RCircleData.h:78
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RCircleData.h:66
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition RCircleData.h:105
virtual QList< RVector > getIntersectionPoints(const REntityData &other, bool limited=true, bool same=false, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
Definition RCircleData.h:90
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition RCircleData.h:84
virtual RShape * castToShape()
Definition RCircleData.h:141
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RCircleData.h:87
virtual void setZ(double z)
Definition RCircleData.h:69
virtual bool mirror(const RLine &axis)
Definition RCircleData.h:114
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition RCircleData.h:93
RCircle getCircle()
Definition RCircleData.h:59
virtual RS::EntityType getType() const
Definition RCircleData.h:56
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RCircleData.h:108
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition RCircleData.h:99
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RCircleData.h:96
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RCircleData.h:81
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition RCircleData.h:111
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition RCircleData.h:75
double getRadius() const
Definition RCircleData.h:133
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition RCircleData.h:117
RVector getCenter() const
Definition RCircleData.h:130
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition RCircleData.h:145
virtual bool intersectsWith(const RShape &shape) const
Definition RCircleData.h:102
bool isValid() const
Definition RCircleData.h:63
virtual bool flipVertical()
Definition RCircleData.h:123
virtual void to2D()
Definition RCircleData.h:72
Circle entity.
Definition RCircleEntity.h:38
Low-level mathematical representation of a circle.
Definition RCircle.h:41
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition RCircle.cpp:246
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RCircle.cpp:238
RVector getCenter() const
Definition RCircle.cpp:103
virtual bool move(const RVector &offset)
Definition RCircle.cpp:230
double getRadius() const
Definition RCircle.cpp:111
virtual bool mirror(const RLine &axis)
Definition RCircle.cpp:255
RCircle()
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RCircle.cpp:31
virtual void setZ(double z)
Definition RCircle.cpp:91
virtual bool isValid() const
Definition RCircle.h:65
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Base class for all entity data classes.
Definition REntityData.h:65
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:443
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:413
virtual bool flipHorizontal()
Definition REntityData.cpp:729
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:299
virtual QList< RVector > getIntersectionPoints(const REntityData &other, bool limited=true, bool same=false, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
Definition REntityData.cpp:601
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)=0
Moves the given reference point to the given target point or does nothing if this entity has no refer...
virtual bool intersectsWith(const RShape &shape) const
Definition REntityData.cpp:582
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:487
virtual bool flipVertical()
Definition REntityData.cpp:733
virtual bool mirror(const RLine &axis)
Definition REntityData.cpp:715
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition REntityData.cpp:474
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REntityData.cpp:313
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:383
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:551
Base class for all entity classes.
Definition REntity.h:63
Low-level mathematical representation of a line.
Definition RLine.h:41
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
Represents a reference point of an entity.
Definition RRefPoint.h:18
@ FromAny
Start or end.
Definition RS.h:374
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityCircle
Circle.
Definition RS.h:254
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
Interface for geometrical shape classes.
Definition RShape.h:72
virtual bool stretch(const RBox &area, const RVector &offset)
Definition RShape.cpp:1741
virtual void to2D()
Flattens this shape to the X/Y plane.
Definition RShape.h:158
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define QCADENTITY_EXPORT
Definition entity_global.h:10
#define NULL
Definition opennurbs_system.h:256