LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
lcadviewer.h
Go to the documentation of this file.
1 #pragma once
2 #include <map>
3 #include <QWidget>
4 
5 #include "cad/document/document.h"
6 #include "cad/dochelpers/entitycontainer.h"
7 #include "drawitems/lcvdrawitem.h"
8 
9 #include "events/mousemoveevent.h"
10 
11 #include <cad/events/addentityevent.h>
12 #include <cad/events/removeentityevent.h>
13 
14 #include <events/drawevent.h>
15 #include <events/mousereleaseevent.h>
16 #include <events/selecteditemsevent.h>
17 
18 #include <managers/dragmanager.h>
19 
20 #include "documentcanvas.h"
21 
22 #include "painters/createpainter.h"
23 
24 namespace LCViewer {
25 class SnapManager;
26 struct MouseEvent {
27  enum Modifier {
28  NoModifer = 0,
29  SHIFT = 1,
30  META = 2,
31  CTRL = 4,
32  ALT = 8,
34  };
35 
36  enum Button {
37  NoButton = 0,
41  };
42 
43  enum Type {
44  move = 1,
45  scroll = 2,
46  click = 3,
47  release = 4,
48  drag = 5
49  };
50 
51 
52 
54  unsigned int buttons;
55  unsigned int modifiers;
56  int mouseX;
57  int mouseY;
58  int scale;
59 };
60 
61 class LCADViewer : public QWidget {
62  Q_OBJECT
63 
64  public:
65  LCADViewer(QWidget* parent = 0);
66  ~LCADViewer();
67 
68  void setDocument(std::shared_ptr<lc::Document> document);
69  void setSnapManager(std::shared_ptr<SnapManager> snapmanager);
70  void setDragManager(DragManager_SPtr dragManager);
71  std::shared_ptr<DocumentCanvas> documentCanvas() const;
72  void autoScale() const {
73  documentCanvas()->autoScale(*_documentPainter);
74  }
75 
76  void setOperationActive(bool operationActive);
77 
78  const std::shared_ptr<DocumentCanvas>& docCanvas() const;
79 
80  protected:
81  void paintEvent(QPaintEvent*);
82  virtual void mousePressEvent(QMouseEvent* event);
83  virtual void mouseMoveEvent(QMouseEvent* event);
84  virtual void mouseReleaseEvent(QMouseEvent* event);
85  virtual void wheelEvent(QWheelEvent* event);
86  virtual void keyPressEvent(QKeyEvent* event);
87  virtual void keyReleaseEvent(QKeyEvent* event);
88  virtual void resizeEvent(QResizeEvent * event);
89 
90  public:
91  signals:
92  void mouseMoveEvent();
93  void mousePressEvent();
94  void mouseReleaseEvent();
95  void drawEvent(const DrawEvent&);
96  void selectedItemsEvent(const SelectedItemsEvent&);
97  public slots:
98  void setVerticalOffset(int v);
99  void setHorizontalOffset(int v);
100 
101  private:
102  void createPainters(unsigned int width, unsigned int height);
103  void deletePainters();
104  void updateBackground();
105  void updateDocument();
106 
107  void on_commitProcessEvent(const lc::CommitProcessEvent&);
108 
109  /* for panning */
111  // For selection
113  std::shared_ptr<DocumentCanvas> _docCanvas;
115 
117 
118  std::map<LcPainter*, QImage*> imagemaps;
119 
120  double _scale;
121  double _zoomMin;
122  double _zoomMax;
123  int v_ = 0;
124  int h_ = 0;
125 
126 
127  // When set to true, the line width on screen will scale with the zoom factor
129 
130  //
132 
133 
134  // Entity container that track's all entities within the document
135  std::shared_ptr<lc::Document> _document;
136  std::shared_ptr<SnapManager> _snapManager;
137  DragManager_SPtr _dragManager;
138 
139  LcPainter* _backgroundPainter;
140  LcPainter* _documentPainter;
141  LcPainter* _foregroundPainter;
142 };
143 }
void on_commitProcessEvent(const lc::CommitProcessEvent &)
Definition: lcadviewer.cpp:53
void selectedItemsEvent(const SelectedItemsEvent &)
virtual void wheelEvent(QWheelEvent *event)
Definition: lcadviewer.cpp:115
std::shared_ptr< SnapManager > _snapManager
Definition: lcadviewer.h:136
DragManager_SPtr _dragManager
Definition: lcadviewer.h:137
LCADViewer(QWidget *parent=0)
Definition: lcadviewer.cpp:7
void autoScale() const
Definition: lcadviewer.h:72
virtual void keyReleaseEvent(QKeyEvent *event)
Definition: lcadviewer.cpp:86
void drawEvent(const DrawEvent &)
unsigned int buttons
Definition: lcadviewer.h:54
void createPainters(unsigned int width, unsigned int height)
Definition: lcadviewer.cpp:271
void setDocument(std::shared_ptr< lc::Document > document)
Definition: lcadviewer.cpp:30
void setVerticalOffset(int v)
Definition: lcadviewer.cpp:133
virtual void resizeEvent(QResizeEvent *event)
Definition: lcadviewer.cpp:106
virtual void keyPressEvent(QKeyEvent *event)
Definition: lcadviewer.cpp:64
void setDragManager(DragManager_SPtr dragManager)
Definition: lcadviewer.cpp:48
const std::shared_ptr< DocumentCanvas > & docCanvas() const
Definition: lcadviewer.cpp:306
std::shared_ptr< DocumentCanvas > _docCanvas
Definition: lcadviewer.h:113
LcPainter * _foregroundPainter
Definition: lcadviewer.h:141
void setSnapManager(std::shared_ptr< SnapManager > snapmanager)
Definition: lcadviewer.cpp:44
std::shared_ptr< lc::Document > _document
Definition: lcadviewer.h:135
std::map< LcPainter *, QImage * > imagemaps
Definition: lcadviewer.h:118
void paintEvent(QPaintEvent *)
Definition: lcadviewer.cpp:254
LcPainter * _backgroundPainter
Definition: lcadviewer.h:139
std::shared_ptr< DocumentCanvas > documentCanvas() const
Definition: lcadviewer.cpp:242
void setHorizontalOffset(int v)
Definition: lcadviewer.cpp:145
void setOperationActive(bool operationActive)
Definition: lcadviewer.cpp:246
unsigned int modifiers
Definition: lcadviewer.h:55
LcPainter * _documentPainter
Definition: lcadviewer.h:140