QCAD
Open Source 2D CAD
RImageData.h
Go to the documentation of this file.
1 
20 #ifndef RIMAGEDATA_H
21 #define RIMAGEDATA_H
22 
23 #include "entity_global.h"
24 
25 #include "RBox.h"
26 #include "RDocument.h"
27 #include "REntity.h"
28 #include "RLine.h"
29 #include "RPainterPath.h"
30 #include "RPoint.h"
31 #include "RVector.h"
32 
42 
43  friend class RImageEntity;
44 
45 protected:
47 
48 public:
49  RImageData();
50  RImageData(const RImageData& other);
51  RImageData(const QString& fileName,
52  const RVector& insertionPoint,
53  const RVector& uVector,
54  const RVector& vVector,
55  int brightness,
56  int contrast,
57  int fade);
58  virtual ~RImageData();
59 
60  virtual RS::EntityType getType() const {
61  return RS::EntityImage;
62  }
63  RImageData& operator=(const RImageData& other);
64 
65  virtual RBox getBoundingBox(bool ignoreEmpty=false) const;
66 
67  virtual RVector getPointOnEntity() const;
68  virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const;
69  virtual bool intersectsWith(const RShape& shape) const;
70 
71  virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
72 
73  virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
74 
75  virtual bool move(const RVector& offset);
76  virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR);
77  virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR);
78  virtual bool mirror(const RLine& axis);
79 
80  virtual RShape* castToShape() {
81  return NULL;
82  }
83 
84  virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false) const;
85 
86  QString getFileName() const {
87  return fileName;
88  }
89  void setFileName(const QString& fn) {
90  fileName = fn;
91  }
92 
94  return insertionPoint;
95  }
96  void setInsertionPoint(const RVector& ip) {
97  insertionPoint = ip;
98  }
99  double getAngle() const {
100  return uVector.getAngle();
101  }
102  void setAngle(double a) {
103  uVector.setAngle(a);
104  vVector.setAngle(a + M_PI/2.0);
105  }
106  RVector getUVector() const {
107  return uVector;
108  }
109  void setUVector(const RVector& v) {
110  uVector = v;
111  }
112  RVector getVVector() const {
113  return vVector;
114  }
115  void setVVector(const RVector& v) {
116  vVector = v;
117  }
118  void setWidth(double w, bool keepRatio=false);
119  void setHeight(double h, bool keepRatio=false);
120  double getWidth() const;
121  double getHeight() const;
122  int getPixelWidth() const;
123  int getPixelHeight() const;
124  //RVector getScaleFactor() const {
125  // return scaleFactor;
126  //}
127  int getBrightness() const {
128  return brightness;
129  }
130  void setBrightness(int v) {
131  brightness = v;
132  }
133  int getContrast() const {
134  return contrast;
135  }
136  void setContrast(int v) {
137  contrast = v;
138  }
139  int getFade() const {
140  return fade;
141  }
142  void setFade(int v) {
143  fade = v;
144  }
145  QImage getImage() const;
146 
147  void load() const;
148  void reload();
149 
150  RVector getScaleVector() const;
151  RVector mapToImage(const RVector& v) const;
152  RVector mapFromImage(const RVector& v) const;
153 
154  QList<RVector> getCornersPx() const;
155  QList<RVector> getCorners() const;
156  QList<RLine> getEdges() const;
157 
158 private:
159  mutable QString fileName;
164  int contrast;
165  int fade;
166  mutable QImage image;
167 };
168 
172 Q_DECLARE_METATYPE(QSharedPointer<RImageData>)
173 
174 #endif
RImageData::getInsertionPoint
RVector getInsertionPoint() const
Definition: RImageData.h:93
REntity.h
RImageData::getFade
int getFade() const
Definition: RImageData.h:139
M_PI
#define M_PI
Defines common DXF codes and constants.
Definition: dl_codes.h:55
RImageData::image
QImage image
Definition: RImageData.h:166
RImageData::castToShape
virtual RShape * castToShape()
Definition: RImageData.h:80
REntityData::getBoundingBox
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition: REntityData.cpp:303
RBox.h
RImageEntity::setWidth
void setWidth(double w, bool keepRatio=false)
Definition: RImageEntity.h:139
RImageData::setAngle
void setAngle(double a)
Definition: RImageData.h:102
RImageData::insertionPoint
RVector insertionPoint
Definition: RImageData.h:160
RVector
Represents a 3d vector (x/y/z).
Definition: RVector.h:46
REntityData::intersectsWith
virtual bool intersectsWith(const RShape &shape) const
Definition: REntityData.cpp:499
RImageData::contrast
int contrast
Definition: RImageData.h:164
RS::EntityType
EntityType
Entity types used for property handling / filtering.
Definition: RS.h:125
RImageData
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RImageData.h:41
RS::EntityImage
@ EntityImage
Image.
Definition: RS.h:170
RImageEntity::data
RImageData data
Definition: RImageEntity.h:171
RLine.h
RObject::document
RDocument * document
Definition: RObject.h:341
RImageEntity::getPixelWidth
int getPixelWidth() const
Definition: RImageEntity.h:159
RImageEntity::getHeight
double getHeight() const
Definition: RImageEntity.h:155
RImageData::fileName
QString fileName
Definition: RImageData.h:159
QCADENTITY_EXPORT
#define QCADENTITY_EXPORT
Definition: entity_global.h:10
RImageData::fade
int fade
Definition: RImageData.h:165
RLine
Low-level mathematical representation of a line.
Definition: RLine.h:41
RImageData::getBrightness
int getBrightness() const
Definition: RImageData.h:127
RShape
Interface for geometrical shape classes.
Definition: RShape.h:72
RPoint.h
RDEFAULT_RVECTOR
#define RDEFAULT_RVECTOR
Definition: RVector.h:37
RImageEntity::setHeight
void setHeight(double h, bool keepRatio=false)
Definition: RImageEntity.h:143
RDocument.h
RImageData::vVector
RVector vVector
Definition: RImageData.h:162
RImageData::setFileName
void setFileName(const QString &fn)
Definition: RImageData.h:89
RVector.h
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(RMath *)
RImageData::setFade
void setFade(int v)
Definition: RImageData.h:142
REntityData::getReferencePoints
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
RImageData::setContrast
void setContrast(int v)
Definition: RImageData.h:136
RImageEntity::getPixelHeight
int getPixelHeight() const
Definition: RImageEntity.h:163
REntityData
Base class for all entity data classes.
Definition: REntityData.h:67
RImageData::setVVector
void setVVector(const RVector &v)
Definition: RImageData.h:115
RImageData::getType
virtual RS::EntityType getType() const
Definition: RImageData.h:60
RImageData::getFileName
QString getFileName() const
Definition: RImageData.h:86
RImageData::getUVector
RVector getUVector() const
Definition: RImageData.h:106
RDocument
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition: RDocument.h:72
REntityData::move
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition: REntityData.cpp:571
RMAXDOUBLE
#define RMAXDOUBLE
Definition: RMath.h:63
REntityData::scale
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition: REntityData.cpp:591
REntityData::mirror
virtual bool mirror(const RLine &axis)
Definition: REntityData.cpp:611
RImageData::setInsertionPoint
void setInsertionPoint(const RVector &ip)
Definition: RImageData.h:96
REntityData::rotate
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition: REntityData.cpp:581
RImageData::getVVector
RVector getVVector() const
Definition: RImageData.h:112
RImageData::getContrast
int getContrast() const
Definition: RImageData.h:133
RImageData::setBrightness
void setBrightness(int v)
Definition: RImageData.h:130
RS::ProjectionRenderingHint
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition: RS.h:185
RDEFAULT_RBOX
#define RDEFAULT_RBOX
Definition: RBox.h:32
REntityData::getPointOnEntity
virtual RVector getPointOnEntity() const
Definition: REntityData.cpp:362
RImageData::uVector
RVector uVector
Definition: RImageData.h:161
RImageData::brightness
int brightness
Definition: RImageData.h:163
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
RImageEntity::getWidth
double getWidth() const
Definition: RImageEntity.h:151
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
entity_global.h
RPainterPath.h
RImageEntity
Point entity.
Definition: RImageEntity.h:38
RImageData::getAngle
double getAngle() const
Definition: RImageData.h:99
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...
RImageData::setUVector
void setUVector(const RVector &v)
Definition: RImageData.h:109