QCAD
Open Source 2D CAD
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 "RDocument.h"
27 #include "REntity.h"
28 #include "RPoint.h"
29 #include "RVector.h"
30 #include "RLine.h"
31 
40 class QCADCORE_EXPORT RViewportData: public REntityData, protected RPoint {
41 
42  friend class RViewportEntity;
43 
44 protected:
46 
47 public:
48  enum Status {
49  Off = 0x20000
50  };
51 
52 public:
53  RViewportData();
54 // RViewportData(const RVector& center, double width, double height, double scale,
55 // const RVector& viewCenter,
56 // const RVector& viewTarget);
57 
58  virtual RS::EntityType getType() const {
59  return RS::EntityViewport;
60  }
61 
62  virtual RBox getBoundingBox(bool ignoreEmpty) const;
63 
64  virtual void to2D();
65 
66  virtual RBox getBoundingBox() const {
67  return getBoundingBox(false);
68  }
69 
70  virtual RShape* castToShape() {
71  return this;
72  }
73 
74  int getViewportId() const {
75  return viewportId;
76  }
77 
78  void setViewportId(int id) {
79  viewportId = id;
80  }
81 
82  int getStatus() const {
83  return status;
84  }
85 
86  void setStatus(int s) {
87  status = s;
88  }
89 
90  RVector getCenter() const {
91  return position;
92  }
93 
94  void setCenter(const RVector& c) {
95  position = c;
96  }
97 
99  return viewCenter;
100  }
101 
102  void setViewCenter(const RVector& c) {
103  viewCenter = c;
104  }
105 
107  return viewTarget;
108  }
109 
110  void setViewTarget(const RVector& t) {
111  viewTarget = t;
112  }
113 
114  double getWidth() const {
115  return width;
116  }
117 
118  void setWidth(double w) {
119  width = w;
120  }
121 
122  double getHeight() const {
123  return height;
124  }
125 
126  void setHeight(double h) {
127  height = h;
128  }
129 
130  double getScale() const {
131  return scaleFactor;
132  }
133 
134  void setScale(double s) {
135  scaleFactor = s;
136  }
137 
138  double getRotation() const {
139  return rotation;
140  }
141 
142  void setRotation(double r) {
143  rotation = r;
144  }
145 
146  bool isOverall() const {
147  return overall;
148  }
149 
150  void setOverall(bool on) {
151  overall = on;
152  }
153 
154  bool isOff() const {
155  return testStatusFlag(Off);
156  }
157 
158  void setOff(bool v) {
159  setStatusFlag(Off, v);
160  }
161 
162  RVector getViewOffset() const;
163 
164  virtual QList<RRefPoint> getInternalReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
165  virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
166 
167  virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
168 
169  virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const;
170 
171  virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false) const;
172 
173  QList<RLine> getEdges() const;
174 
175  virtual bool scale(const RVector& scaleFactors, const RVector& center);
176 
177 protected:
178  void setStatusFlag(Status s, bool on) {
179  if (on) {
180  status |= s;
181  } else {
182  status &= ~s;
183  }
184  }
185 
186  bool testStatusFlag(Status s) const {
187  return (status & s) == s;
188  }
189 
190 private:
192  int status;
193  double width;
194  double height;
195  double scaleFactor;
196  double rotation;
197 
200 
201  bool overall;
202 };
203 
207 Q_DECLARE_METATYPE(QSharedPointer<RViewportData>)
209 
210 #endif
RViewportEntity::getViewOffset
RVector getViewOffset() const
Definition: RViewportEntity.h:189
REntity.h
RViewportData::scaleFactor
double scaleFactor
Definition: RViewportData.h:195
RViewportData::viewTarget
RVector viewTarget
Definition: RViewportData.h:199
RViewportEntity::data
RViewportData data
Definition: RViewportEntity.h:205
RViewportData::getScale
double getScale() const
Definition: RViewportData.h:130
REntityData::getBoundingBox
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition: REntityData.cpp:303
RBox.h
RPoint
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RPoint.h:38
RViewportData::viewportId
int viewportId
Definition: RViewportData.h:191
RVector
Represents a 3d vector (x/y/z).
Definition: RVector.h:46
RViewportData::height
double height
Definition: RViewportData.h:194
RViewportData::castToShape
virtual RShape * castToShape()
Definition: RViewportData.h:70
RViewportData::getHeight
double getHeight() const
Definition: RViewportData.h:122
REntityData::getInternalReferencePoints
virtual QList< RRefPoint > getInternalReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const
Can be overwritten to return internal, resolved reference points.
Definition: REntityData.h:322
RViewportData::getViewTarget
RVector getViewTarget() const
Definition: RViewportData.h:106
RS::EntityType
EntityType
Entity types used for property handling / filtering.
Definition: RS.h:125
RViewportData
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RViewportData.h:40
RLine.h
RObject::document
RDocument * document
Definition: RObject.h:341
RViewportData::setOff
void setOff(bool v)
Definition: RViewportData.h:158
RViewportData::isOverall
bool isOverall() const
Definition: RViewportData.h:146
RViewportData::status
int status
Definition: RViewportData.h:192
RViewportData::Status
Status
Definition: RViewportData.h:48
RShape
Interface for geometrical shape classes.
Definition: RShape.h:72
RPoint.h
RDocument.h
RViewportData::setOverall
void setOverall(bool on)
Definition: RViewportData.h:150
RVector.h
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(RMath *)
RViewportData::width
double width
Definition: RViewportData.h:193
REntityData::getReferencePoints
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
RViewportData::getType
virtual RS::EntityType getType() const
Definition: RViewportData.h:58
REntityData
Base class for all entity data classes.
Definition: REntityData.h:67
RViewportData::setStatusFlag
void setStatusFlag(Status s, bool on)
Definition: RViewportData.h:178
RViewportData::setCenter
void setCenter(const RVector &c)
Definition: RViewportData.h:94
RViewportData::setViewportId
void setViewportId(int id)
Definition: RViewportData.h:78
RViewportData::setScale
void setScale(double s)
Definition: RViewportData.h:134
RViewportData::setViewTarget
void setViewTarget(const RVector &t)
Definition: RViewportData.h:110
RViewportData::setViewCenter
void setViewCenter(const RVector &c)
Definition: RViewportData.h:102
core_global.h
RViewportData::testStatusFlag
bool testStatusFlag(Status s) const
Definition: RViewportData.h:186
RDocument
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition: RDocument.h:72
RViewportData::setRotation
void setRotation(double r)
Definition: RViewportData.h:142
RMAXDOUBLE
#define RMAXDOUBLE
Definition: RMath.h:63
RViewportData::getRotation
double getRotation() const
Definition: RViewportData.h:138
REntityData::scale
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition: REntityData.cpp:591
RViewportData::setStatus
void setStatus(int s)
Definition: RViewportData.h:86
RViewportData::getCenter
RVector getCenter() const
Definition: RViewportData.h:90
RViewportEntity
Viewport entity.
Definition: RViewportEntity.h:38
RViewportData::getStatus
int getStatus() const
Definition: RViewportData.h:82
RPoint::position
RVector position
Getter function for this property: getPosition Setter function for this property: setPosition
Definition: RPoint.h:97
REntityData::to2D
virtual void to2D()
Definition: REntityData.cpp:332
RViewportData::overall
bool overall
Definition: RViewportData.h:201
RViewportData::getWidth
double getWidth() const
Definition: RViewportData.h:114
RViewportData::rotation
double rotation
Definition: RViewportData.h:196
RS::ProjectionRenderingHint
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition: RS.h:185
RDEFAULT_RBOX
#define RDEFAULT_RBOX
Definition: RBox.h:32
RViewportData::getViewportId
int getViewportId() const
Definition: RViewportData.h:74
REntityData::getShapes
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false) const
Definition: REntityData.h:113
RS::RenderTop
@ RenderTop
Definition: RS.h:186
RBox
Represents a box e.g.
Definition: RBox.h:43
RViewportData::viewCenter
RVector viewCenter
Definition: RViewportData.h:198
REntityData::getDistanceTo
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition: REntityData.cpp:289
RViewportData::isOff
bool isOff() const
Definition: RViewportData.h:154
RViewportData::getBoundingBox
virtual RBox getBoundingBox() const
Definition: RViewportData.h:66
RViewportData::getViewCenter
RVector getViewCenter() const
Definition: RViewportData.h:98
RS::EntityViewport
@ EntityViewport
Viewport.
Definition: RS.h:173
QCADCORE_EXPORT
#define QCADCORE_EXPORT
Definition: core_global.h:10
REntityData::moveReferencePoint
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...
RViewportData::setWidth
void setWidth(double w)
Definition: RViewportData.h:118
RViewportData::setHeight
void setHeight(double h)
Definition: RViewportData.h:126