canvasnode.h
Go to the documentation of this file.
1 #ifndef CANVASNODE_H
2 #define CANVASNODE_H
3 
4 #include <list>
5 
6 #include "line.h"
7 #include "dnai/focusmanager.h"
8 
9 namespace dnai
10 {
11  namespace views
12  {
13  class CanvasNode : public QQuickItem
14  {
15  Q_OBJECT
16 
17  public:
18  Q_PROPERTY(int gridStep READ gridStep WRITE setGridStep NOTIFY gridStepChanged)
20 
21  Q_PROPERTY(QColor gridColor READ gridColor WRITE setGridColor NOTIFY gridColorChanged)
24 
25  Q_PROPERTY(QQuickItem *content READ content WRITE setContent NOTIFY contentChanged)
26  Q_PROPERTY(bool contextMenu READ contextMenu WRITE setContextMenu NOTIFY contextMenuChanged)
27  Q_PROPERTY(QPoint mousePosition READ mousePosition CONSTANT)
28 
29  Q_PROPERTY(QQuickItem *entry READ entry)
30 
31  explicit CanvasNode(QQuickItem *parent = nullptr);
32  ~CanvasNode();
33 
39 
44  virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
45  void moveCanvas(const QPointF& pos);
46  void zoom(const double& scale, const QPointF& offset);
47 
48  public:
49  int gridStep() const { return m_gridStep; }
50  int accentGridStep() const { return m_accentGridStep; }
51 
52  QColor gridColor() const { return m_gridColor; }
53  QColor accentGridColor() const { return m_accentGridColor; }
54  QColor backgroundColor() const { return m_backgroundColor; }
55  const QPointF &totalOffset() const { return m_totalOffset; }
56  const QPointF &origin() const { return m_origin; }
57  QQuickItem *content() const { return m_content; }
58  bool contextMenu() const { return m_contextMenu; }
59  const QPoint &mousePosition() const { return m_mousePosition; }
60  QQuickItem *entry() const { return m_entry; }
61 
62  public:
63  void setGridStep(int step);
64  void setAccentGridStep(int step);
65  void setGridColor(const QColor &color);
66  void setAccentGridColor(const QColor &color);
67  void setBackgroundColor(const QColor & color);
68  void setContent(QQuickItem *ct);
69  void setContextMenu(bool b);
70  void resetContent();
71  void registerEntry(QQuickItem *entry);
72 
73 
74  signals:
75  void gridStepChanged(int step);
76  void accentGridStepChanged(int step);
77  void gridColorChanged(const QColor &color);
78  void accentGridColorChanged(const QColor &color);
79  void backgroundColorChanged(const QColor &color);
80  void contentChanged(QQuickItem *ct);
81  void contextMenuChanged(bool b);
82 
83 
84  private:
87 
88  QColor m_gridColor;
91  bool m_hasMoved;
92  QPointF m_totalOffset;
95 
96  private:
97  void createGrid();
99  std::list<QSGGeometryNode *> m_lines;
100  QPointF m_offset;
101  QPointF m_gridOffset;
102  QPointF m_origin;
103  QQuickItem *m_content;
104  QQuickItem *m_entry = nullptr;
105 
106  protected:
107  void mousePressEvent(QMouseEvent* event) override;
108  void mouseReleaseEvent(QMouseEvent* event) override;
109  void mouseMoveEvent(QMouseEvent* event) override;
110  void wheelEvent(QWheelEvent *event) override;
111  };
112  }
113 }
114 
115 #endif // CANVASNODE_H
const QPoint & mousePosition() const
Definition: canvasnode.h:59
void contextMenuChanged(bool b)
Definition: moc_canvasnode.cpp:344
void registerEntry(QQuickItem *entry)
Definition: canvasnode.cpp:256
virtual QSGNode * updatePaintNode(QSGNode *, UpdatePaintNodeData *) override
Override updatePaintNode and draw a beautifull canvas.
Definition: canvasnode.cpp:261
bool m_hasMoved
Definition: canvasnode.h:91
QQuickItem * m_content
Definition: canvasnode.h:103
void setContent(QQuickItem *ct)
Definition: canvasnode.cpp:227
void setGridStep(int step)
Definition: canvasnode.cpp:181
int gridStep() const
Definition: canvasnode.h:49
void createGrid()
Definition: canvasnode.cpp:31
QPointF m_origin
Definition: canvasnode.h:102
bool m_contextMenu
Definition: canvasnode.h:93
QPointF m_totalOffset
Definition: canvasnode.h:92
QPointF m_offset
Definition: canvasnode.h:100
Definition: focusmanager.h:8
void backgroundColorChanged(const QColor &color)
Definition: moc_canvasnode.cpp:330
void gridColorChanged(const QColor &color)
Definition: moc_canvasnode.cpp:316
void accentGridStepChanged(int step)
Definition: moc_canvasnode.cpp:309
bool contextMenu() const
Definition: canvasnode.h:58
QColor m_backgroundColor
Definition: canvasnode.h:90
void wheelEvent(QWheelEvent *event) override
Definition: canvasnode.cpp:129
QColor m_accentGridColor
Definition: canvasnode.h:89
void setBackgroundColor(const QColor &color)
Definition: canvasnode.cpp:209
const QPointF & totalOffset() const
Definition: canvasnode.h:55
QQuickItem * content() const
Definition: canvasnode.h:57
void contentChanged(QQuickItem *ct)
Definition: moc_canvasnode.cpp:337
QQuickItem * entry() const
Definition: canvasnode.h:60
void setContextMenu(bool b)
Definition: canvasnode.cpp:236
void zoom(const double &scale, const QPointF &offset)
Definition: canvasnode.cpp:147
void mouseMoveEvent(QMouseEvent *event) override
Definition: canvasnode.cpp:106
void accentGridColorChanged(const QColor &color)
Definition: moc_canvasnode.cpp:323
void moveCanvas(const QPointF &pos)
Definition: canvasnode.cpp:116
void setAccentGridColor(const QColor &color)
Definition: canvasnode.cpp:190
void setGridColor(const QColor &color)
Definition: canvasnode.cpp:200
void setAccentGridStep(int step)
Definition: canvasnode.cpp:171
FocusManager m_focusManager
Definition: canvasnode.h:98
void mousePressEvent(QMouseEvent *event) override
Definition: canvasnode.cpp:83
QColor m_gridColor
Definition: canvasnode.h:88
QQuickItem * m_entry
Definition: canvasnode.h:104
QColor accentGridColor() const
Definition: canvasnode.h:53
Definition: api.h:13
int m_accentGridStep
Definition: canvasnode.h:86
std::list< QSGGeometryNode * > m_lines
Definition: canvasnode.h:99
void gridStepChanged(int step)
Definition: moc_canvasnode.cpp:302
QPoint m_mousePosition
Definition: canvasnode.h:94
int accentGridStep() const
Definition: canvasnode.h:50
Definition: canvasnode.h:13
void resetContent()
Definition: canvasnode.cpp:244
void mouseReleaseEvent(QMouseEvent *event) override
Definition: canvasnode.cpp:95
QPointF m_gridOffset
Definition: canvasnode.h:101
FocusManager & focusManager()
return the focusManager
Definition: canvasnode.h:38
const QPointF & origin() const
Definition: canvasnode.h:56
int m_gridStep
Definition: canvasnode.h:85
QColor backgroundColor() const
Definition: canvasnode.h:54
QColor gridColor() const
Definition: canvasnode.h:52