QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RViewportData.h
Go to the documentation of this file.
1
20#ifndef RVIEWPORTDATA_H
21#define RVIEWPORTDATA_H
22
23#include "core_global.h"
24
25#include "RBox.h"
26#include "REntityData.h"
27#include "RPoint.h"
28#include "RVector.h"
29#include "RLine.h"
30
31class RBox;
32class RDocument;
33class REntityData;
34class RLine;
35class RObject;
36class RPoint;
37class RPolyline;
38class RRefPoint;
39class RShape;
40class RVector;
41class RViewportData;
42class RViewportEntity;
43
44
54
55 friend class RViewportEntity;
56
57protected:
58 RViewportData(RDocument* document, const RViewportData& data);
59
60public:
61 enum Status {
62 Off = 0x20000
63 };
64
65public:
67// RViewportData(const RVector& center, double width, double height, double scale,
68// const RVector& viewCenter,
69// const RVector& viewTarget);
70
71 virtual RS::EntityType getType() const {
72 return RS::EntityViewport;
73 }
74
75 bool isValid() const {
76 return RPoint::isValid();
77 }
78 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
79 return REntityData::getEndPoints(queryBox, subEntityIds);
80 }
81 virtual void setZ(double z) {
82 RPoint::setZ(z);
83 }
84 virtual QList<RVector> getMiddlePoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
85 return REntityData::getMiddlePoints(queryBox, subEntityIds);
86 }
87 virtual QList<RVector> getCenterPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
88 return REntityData::getCenterPoints(queryBox, subEntityIds);
89 }
90 virtual QList<RVector> getArcReferencePoints(const RBox& queryBox = RDEFAULT_RBOX) const {
92 }
93 virtual QList<RVector> getPointsWithDistanceToEnd(double distance, int from = RS::FromAny, const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
94 return REntityData::getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
95 }
96 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 {
97 return REntityData::getIntersectionPoints(other, limited, same, queryBox, ignoreComplex, entityIds);
98 }
99 virtual QList<RVector> getIntersectionPoints(const RShape& shape, bool limited = true, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const {
100 return REntityData::getIntersectionPoints(shape, limited, queryBox, ignoreComplex);
101 }
102 virtual RVector getVectorTo(const RVector& point, bool limited=true, double strictRange = RMAXDOUBLE) const {
103 return REntityData::getVectorTo(point, limited, strictRange);
104 }
105 virtual bool intersectsWith(const RShape& shape) const {
106 return REntityData::intersectsWith(shape);
107 }
108 virtual bool move(const RVector& offset) {
109 return RPoint::move(offset);
110 }
111 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
112 return RPoint::rotate(rotation, center);
113 }
114 virtual bool mirror(const RLine& axis) {
115 return RPoint::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 RPoint::stretch(area, offset);
128 }
129
130 virtual RBox getBoundingBox(bool ignoreEmpty) const;
131
132 virtual void to2D();
133
134 virtual RBox getBoundingBox() const {
135 return getBoundingBox(false);
136 }
137
138 virtual RShape* castToShape() {
139 return this;
140 }
141
142 int getViewportId() const {
143 return viewportId;
144 }
145
146 void setViewportId(int id) {
147 viewportId = id;
148 }
149
150 int getStatus() const {
151 return status;
152 }
153
154 void setStatus(int s) {
155 status = s;
156 }
157
159 return position;
160 }
161
162 void setCenter(const RVector& c) {
163 position = c;
164 }
165
167 return viewCenter;
168 }
169
170 void setViewCenter(const RVector& c) {
171 viewCenter = c;
172 }
173
175 return viewTarget;
176 }
177
178 void setViewTarget(const RVector& t) {
179 viewTarget = t;
180 }
181
182 double getWidth() const {
183 return width;
184 }
185
186 void setWidth(double w) {
187 width = w;
188 }
189
190 double getHeight() const {
191 return height;
192 }
193
194 void setHeight(double h) {
195 height = h;
196 }
197
198 double getScale() const {
199 return scaleFactor;
200 }
201
202 void setScale(double s) {
203 scaleFactor = s;
204 }
205
206 double getRotation() const {
207 return rotation;
208 }
209
210 void setRotation(double r) {
211 rotation = r;
212 }
213
214 bool isOverall() const {
215 return overall;
216 }
217
218 void setOverall(bool on) {
219 overall = on;
220 }
221
222 bool isOff() const {
223 return testStatusFlag(Off);
224 }
225
226 void setOff(bool v) {
227 setStatusFlag(Off, v);
228 }
229
230 RVector getViewOffset() const;
231
232 virtual QList<RRefPoint> getInternalReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop, QList<RObject::Id>* subEntityIds = NULL) const;
233 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
234
235 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
236
237 virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const;
238
239 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const;
240
241 QList<RLine> getEdges() const;
242
243 virtual bool scale(const RVector& scaleFactors, const RVector& center);
244
245 QList<RObject::Id> getFrozenLayerIds() const {
246 return frozenLayerIds;
247 }
248
249 void setFrozenLayerIds(const QList<RObject::Id>& layerIds) {
250 frozenLayerIds = layerIds;
251 }
252
253protected:
254 void setStatusFlag(Status s, bool on) {
255 if (on) {
256 status |= s;
257 } else {
258 status &= ~s;
259 }
260 }
261
262 bool testStatusFlag(Status s) const {
263 return (status & s) == s;
264 }
265
266private:
269 double width;
270 double height;
272 double rotation;
273
276
277 QList<RObject::Id> frozenLayerIds;
278
280};
281
285Q_DECLARE_METATYPE(QSharedPointer<RViewportData>)
287
288#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
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 QList< RRefPoint > getInternalReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop, QList< RObject::Id > *subEntityIds=NULL) const
Can be overwritten to return internal, resolved reference points.
Definition REntityData.cpp:157
virtual void to2D()
Definition REntityData.cpp:342
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 bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition REntityData.cpp:695
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition REntityData.h:111
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:551
Low-level mathematical representation of a line.
Definition RLine.h:41
Abstract base class for all objects.
Definition RObject.h:64
Low-level mathematical representation of a point.
Definition RPoint.h:40
RVector position
Getter function for this property: getPosition Setter function for this property: setPosition
Definition RPoint.h:113
virtual bool move(const RVector &offset)
Definition RPoint.cpp:125
virtual bool mirror(const RLine &axis)
Definition RPoint.cpp:146
virtual void setZ(double z)
Definition RPoint.cpp:62
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RPoint.cpp:133
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
@ EntityViewport
Viewport.
Definition RS.h:277
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 isValid() const
Definition RShape.h:92
virtual bool stretch(const RBox &area, const RVector &offset)
Definition RShape.cpp:1741
Represents a 3d vector (x/y/z).
Definition RVector.h:47
Stores and manages all data that defines the geometry and appearance of a viewport entity.
Definition RViewportData.h:53
double rotation
Definition RViewportData.h:272
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition RViewportData.h:99
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 RViewportData.h:96
RVector getViewTarget() const
Definition RViewportData.h:174
double getHeight() const
Definition RViewportData.h:190
void setRotation(double r)
Definition RViewportData.h:210
RVector getCenter() const
Definition RViewportData.h:158
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition RViewportData.h:90
void setViewTarget(const RVector &t)
Definition RViewportData.h:178
bool isValid() const
Definition RViewportData.h:75
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RViewportData.h:87
double getWidth() const
Definition RViewportData.h:182
void setWidth(double w)
Definition RViewportData.h:186
virtual bool intersectsWith(const RShape &shape) const
Definition RViewportData.h:105
RVector viewCenter
Definition RViewportData.h:274
virtual bool flipVertical()
Definition RViewportData.h:123
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition RViewportData.h:108
void setOff(bool v)
Definition RViewportData.h:226
void setOverall(bool on)
Definition RViewportData.h:218
void setScale(double s)
Definition RViewportData.h:202
virtual bool mirror(const RLine &axis)
Definition RViewportData.h:114
virtual bool flipHorizontal()
Definition RViewportData.h:120
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RViewportData.h:78
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition RViewportData.h:126
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RViewportData.h:84
QList< RObject::Id > getFrozenLayerIds() const
Definition RViewportData.h:245
void setStatusFlag(Status s, bool on)
Definition RViewportData.h:254
double getRotation() const
Definition RViewportData.h:206
RVector viewTarget
Definition RViewportData.h:275
bool overall
Definition RViewportData.h:279
bool isOff() const
Definition RViewportData.h:222
void setCenter(const RVector &c)
Definition RViewportData.h:162
void setViewportId(int id)
Definition RViewportData.h:146
void setHeight(double h)
Definition RViewportData.h:194
Status
Definition RViewportData.h:61
virtual RShape * castToShape()
Definition RViewportData.h:138
double scaleFactor
Definition RViewportData.h:271
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition RViewportData.h:102
virtual void setZ(double z)
Definition RViewportData.h:81
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition RViewportData.h:117
double getScale() const
Definition RViewportData.h:198
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition RViewportData.h:111
double width
Definition RViewportData.h:269
int getViewportId() const
Definition RViewportData.h:142
int status
Definition RViewportData.h:268
bool testStatusFlag(Status s) const
Definition RViewportData.h:262
int getStatus() const
Definition RViewportData.h:150
virtual RS::EntityType getType() const
Definition RViewportData.h:71
RVector getViewCenter() const
Definition RViewportData.h:166
virtual RBox getBoundingBox() const
Definition RViewportData.h:134
void setFrozenLayerIds(const QList< RObject::Id > &layerIds)
Definition RViewportData.h:249
QList< RObject::Id > frozenLayerIds
Definition RViewportData.h:277
bool isOverall() const
Definition RViewportData.h:214
void setStatus(int s)
Definition RViewportData.h:154
int viewportId
Definition RViewportData.h:267
void setViewCenter(const RVector &c)
Definition RViewportData.h:170
double height
Definition RViewportData.h:270
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition RViewportData.h:93
Viewport entity.
Definition RViewportEntity.h:38
#define QCADCORE_EXPORT
Definition core_global.h:10
char s
Definition opennurbs_string.cpp:32
#define NULL
Definition opennurbs_system.h:256