ddt  1.0.0
ddtPanningWidget.hpp
Go to the documentation of this file.
1 
21 #ifndef DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
22 #define DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
23 
24 #include <QtUiPlugin/QDesignerExportWidget>
25 
27 
32 class QDESIGNER_WIDGET_EXPORT DdtPanningWidget : public DdtWidget {
33  Q_OBJECT
34  Q_PROPERTY(bool ShowAxes READ get_show_axes WRITE set_show_axes)
35 
36  public:
41  explicit DdtPanningWidget(QWidget* parent = nullptr);
42 
47 
53  void set_show_axes(const bool show);
54 
59  bool get_show_axes() const;
60 
65  void set_rotation_deg(const float rotation);
66 
72  float get_rotation_deg() const;
73 
74  protected:
78  bool show_axes;
79 
87  int show_status = 1;
88 
92  float rotation_deg;
93 
97  float zoom_factor;
98 
103 
109 
114 
119 
124 
129  int origin_x;
130 
135  int origin_y;
136 
140  QRubberBand* rubberband;
141 
148  bool eventFilter(QObject* obj, QEvent* event);
149 
150  private:
151  void CreateWidget();
152 
153  void OnMouseMoveEvent(QMouseEvent* m);
154  void OnMousePressEvent(QMouseEvent* m);
155  void OnMouseReleaseEvent(QMouseEvent* m);
156 
157  void UpdateSelectionRectangle(const bool externally_triggered = false);
158  void ValidateSelectionRectangle();
159 
160  int PanWindowWidth() const;
161  int PanWindowHeight() const;
162 
163  void DrawImage();
164 
165  QTransform image_transform;
166 
167  int start_drag_x;
168  int start_drag_y;
169 
170  const int SHOW_NONE = 0;
171  const int SHOW_COMPASS_AND_XY = 1;
172  const int SHOW_COMPASS_ONLY = 2;
173  const int SHOW_XY_ONLY = 3;
174  const int SHOW_MAX = 4;
175 
176  signals:
184  void UpdatePosition(double scroll_fraction_x, double scroll_fraction_y);
185 
186  public slots:
187  // Image Widget interface
194  void SetImage(const QImage* const image, const QTransform& transform,
195  const double rotation);
196 
205  void ImageWidgetViewChanged(const QRectF& visible_image_rect,
206  const int current_image_width,
207  const int current_image_height);
208 
213  void ClearMagnifiedImage();
214 };
215 
216 #endif // DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
217 
Definition: ddtPanningWidget.hpp:32
float zoom_factor
Definition: ddtPanningWidget.hpp:97
QImage preview_image
Definition: ddtPanningWidget.hpp:113
bool show_axes
Definition: ddtPanningWidget.hpp:78
QRect max_selection_rectangle
Definition: ddtPanningWidget.hpp:123
void UpdatePosition(double scroll_fraction_x, double scroll_fraction_y)
QRubberBand * rubberband
Definition: ddtPanningWidget.hpp:140
bool mouse_drag_active
Definition: ddtPanningWidget.hpp:102
float rotation_deg
Definition: ddtPanningWidget.hpp:92
int origin_y
Definition: ddtPanningWidget.hpp:135
QRect selection_rectangle
Definition: ddtPanningWidget.hpp:118
QLabel * preview_image_label
Definition: ddtPanningWidget.hpp:108
int origin_x
Definition: ddtPanningWidget.hpp:129
The DdtWidget class Use as wrapper class for new widgets.
Definition: ddtWidget.hpp:28
DDT Widgets. Base class for the DDT widgets. Base class for the DDT widgets.