ddt  1.0.0
ddtGraphicalElement.hpp
Go to the documentation of this file.
1 
20 #ifndef DDT_DATAVISUALISATION_DDTGRAPHCIS_GRAPHICALELEMENT_HPP
21 #define DDT_DATAVISUALISATION_DDTGRAPHCIS_GRAPHICALELEMENT_HPP
22 
23 #include <math.h>
24 #include <QGraphicsObject>
25 #include <QGraphicsSceneHoverEvent>
26 #include <QGraphicsSceneMouseEvent>
27 #include <QPainter>
28 
29 #include "ddt/ddtCornergrabber.hpp"
31 
32 /*
33  * Overlay type enumerator
34  */
84 };
85 
89 class DdtGraphicalElement : public QGraphicsItem {
90  public:
98  explicit DdtGraphicalElement(
100  const QString obj_name = "", const QString elem_name = "");
101 
106 
110  virtual void DrawElement(QPainter *painter) = 0;
111 
116  virtual QRectF boundingRect() const override;
117 
123  virtual QRectF RotateBoundingBox(QRectF const &original_bounding_box) const;
124 
131  void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
132  QWidget *widget) override;
133 
137  void DrawBoundingBox(QPainter *painter) const;
138 
143 
147  virtual void HighlightSelectedElement(QPainter *painter) const;
148 
152  virtual bool IsHidden();
153 
157  virtual float ScaleThreshold();
158 
162  virtual void SetShowFlag(bool show);
163 
167  virtual DdtOverlayType GetType();
168 
172  virtual QString GetTypeString();
173 
177  virtual QString GetTag();
178 
185  virtual void SetTransform(QTransform const &transform);
186 
190  void SetIsEditable(const bool editable);
191 
195  void SetItemIsSelected(const bool is_selected);
196 
200  void SetIsHovering(const bool item_is_hovering);
201 
206  bool GetIsEditable() const;
207 
212  bool GetItemIsSelected() const;
213 
218  QString GetObjectName() const;
219 
224  QString GetElementName() const;
225 
230  bool GetIsHovering() const;
231 
237 
241  const int LIGHTER_FACTOR = 200;
242 
247  const int SCALE_DIFFERENCE_FACTOR = 20;
248 
249  protected:
250  void mouseMoveEvent(QGraphicsSceneMouseEvent *const event) override;
251  void mousePressEvent(QGraphicsSceneMouseEvent *const event) override;
252  bool HandleEvent(CornerGrabber *const corner, QEvent *const event) const;
253 
258 
263 
267  QPointF location;
268 
272  QPointF drag_start;
273 
277  qreal corner_size;
278 
283 
284  /*
285  * Name of the overlay object this element belongs to.
286  */
287  QString object_name;
288 
292  QString element_name;
293 
294  private:
295  void Initialize();
296 
297  bool item_is_selected;
298  bool is_editable;
299 };
300 
301 #endif // DDT_DATAVISUALISATION_DDTGRAPHCIS_GRAPHICALELEMENT_HPP
302 
Definition: ddtCornergrabber.hpp:42
Definition: ddtGraphicalElementProperties.hpp:29
Definition: ddtGraphicalElement.hpp:89
bool is_hovering
Definition: ddtGraphicalElement.hpp:282
void SetItemIsSelected(const bool is_selected)
Definition: ddtGraphicalElement.cpp:244
void SetIsEditable(const bool editable)
Definition: ddtGraphicalElement.cpp:240
void EditElementProperties(const DdtGraphicalElementProperties &properties)
Definition: ddtGraphicalElement.cpp:150
bool GetIsHovering() const
Definition: ddtGraphicalElement.cpp:256
QPointF drag_start
Definition: ddtGraphicalElement.hpp:272
qreal corner_size
Definition: ddtGraphicalElement.hpp:277
virtual QRectF RotateBoundingBox(QRectF const &original_bounding_box) const
Definition: ddtGraphicalElement.cpp:106
QPointF location
Definition: ddtGraphicalElement.hpp:267
virtual void SetShowFlag(bool show)
Definition: ddtGraphicalElement.cpp:167
virtual QString GetTypeString()
Definition: ddtGraphicalElement.cpp:187
virtual QString GetTag()
Definition: ddtGraphicalElement.cpp:235
DdtGraphicalElementProperties element_properties
Definition: ddtGraphicalElement.hpp:257
virtual void HighlightSelectedElement(QPainter *painter) const
Definition: ddtGraphicalElement.cpp:75
const int LIGHTER_FACTOR
Definition: ddtGraphicalElement.hpp:241
virtual ~DdtGraphicalElement()
void mouseMoveEvent(QGraphicsSceneMouseEvent *const event) override
Definition: ddtGraphicalElement.cpp:301
void mousePressEvent(QGraphicsSceneMouseEvent *const event) override
Definition: ddtGraphicalElement.cpp:291
bool GetIsEditable() const
Definition: ddtGraphicalElement.cpp:252
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition: ddtGraphicalElement.cpp:42
DdtOverlayType element_type
Definition: ddtGraphicalElement.hpp:262
virtual void SetTransform(QTransform const &transform)
Definition: ddtGraphicalElement.cpp:312
const DdtGraphicalElementProperties & GetElementProperties()
Definition: ddtGraphicalElement.cpp:163
const int SCALE_DIFFERENCE_FACTOR
Definition: ddtGraphicalElement.hpp:247
bool HandleEvent(CornerGrabber *const corner, QEvent *const event) const
Definition: ddtGraphicalElement.cpp:258
virtual DdtOverlayType GetType()
Definition: ddtGraphicalElement.cpp:182
virtual void DrawElement(QPainter *painter)=0
QString GetObjectName() const
Definition: ddtGraphicalElement.cpp:317
QString element_name
Definition: ddtGraphicalElement.hpp:292
void DrawBoundingBox(QPainter *painter) const
Definition: ddtGraphicalElement.cpp:49
virtual bool IsHidden()
Definition: ddtGraphicalElement.cpp:172
QString object_name
Definition: ddtGraphicalElement.hpp:287
DdtGraphicalElement(DdtGraphicalElementProperties const &element_properties, const QString obj_name="", const QString elem_name="")
Definition: ddtGraphicalElement.cpp:24
QString GetElementName() const
Definition: ddtGraphicalElement.cpp:319
virtual float ScaleThreshold()
Definition: ddtGraphicalElement.cpp:177
virtual QRectF boundingRect() const override
Definition: ddtGraphicalElement.cpp:104
void SetIsHovering(const bool item_is_hovering)
Definition: ddtGraphicalElement.cpp:248
bool GetItemIsSelected() const
Definition: ddtGraphicalElement.cpp:254
Corner grabber for resizable graphical elements. Class for the corners of resizable graphical element...
DDT Graphics. Class for common properties of graphical elements like line width, colour etc....
DdtOverlayType
Definition: ddtGraphicalElement.hpp:35
@ DDT_OVERLAY_PICK_MARKER
Definition: ddtGraphicalElement.hpp:83
@ DDT_OVERLAY_REF_LINE
Definition: ddtGraphicalElement.hpp:67
@ DDT_OVERLAY_LINE
Definition: ddtGraphicalElement.hpp:59
@ DDT_OVERLAY_ALL
Definition: ddtGraphicalElement.hpp:39
@ DDT_OVERLAY_IMAGE
Definition: ddtGraphicalElement.hpp:79
@ DDT_OVERLAY_TEXT
Definition: ddtGraphicalElement.hpp:55
@ DDT_OVERLAY_RECTANGLE
Definition: ddtGraphicalElement.hpp:47
@ DDT_OVERLAY_ELLIPSE
Definition: ddtGraphicalElement.hpp:43
@ DDT_OVERLAY_STAT_RECTANGLE
Definition: ddtGraphicalElement.hpp:71
@ DDT_OVERLAY_CROSS
Definition: ddtGraphicalElement.hpp:51
@ DDT_OVERLAY_SLIT
Definition: ddtGraphicalElement.hpp:63
@ DDT_OVERLAY_COMPASS
Definition: ddtGraphicalElement.hpp:75