ddt  0.1
ddtPanningWidget.hpp
Go to the documentation of this file.
1 // @copyright
2 // (c) Copyright ESO 2020
3 // All Rights Reserved
4 // ESO (eso.org) is an Intergovernmental Organization, and therefore special
5 // legal conditions apply.
6 //
7 // @file ddtPanningWidget.hpp
8 // @brief DDT Widgets. Class for the DDT Panning Widget.
9 //
10 // Class for the Panning Widget. The widget is used to display a thumbnail image
11 // of the image displayed in the connected Image Widget and allow to move a pan
12 // rectangle to select the current view.
13 //
14 // @author Carsten Mannel, CGI
15 // @since 2020/02/05
16 //
17 
18 #ifndef DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
19 #define DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
20 
21 #include <QtUiPlugin/QDesignerExportWidget>
22 
24 
29 class QDESIGNER_WIDGET_EXPORT DdtPanningWidget : public DdtWidget {
30  Q_OBJECT
31  Q_PROPERTY(bool ShowAxes READ get_show_axes WRITE set_show_axes)
32 
33  public:
38  explicit DdtPanningWidget(QWidget* parent = nullptr);
39 
44 
51  void set_show_axes(bool show_axes);
52 
57  bool get_show_axes();
58 
59  protected:
63  bool show_axes;
64 
68  float zoom_factor;
69 
74 
80 
84  QImage preview_image;
85 
90 
95 
100  int origin_x;
101 
106  int origin_y;
107 
111  QRubberBand* rubberband;
112 
119  bool eventFilter(QObject* obj, QEvent* event);
120 
121  private:
122  void CreateWidget();
123 
124  void OnMouseMoveEvent(QMouseEvent* m);
125  void OnMousePressEvent(QMouseEvent* m);
126  void OnMouseReleaseEvent(QMouseEvent* m);
127 
128  void UpdateSelectionRectangle(bool externally_triggered = false);
129  void ValidateSelectionRectangle();
130 
131  int PanWindowWidth();
132  int PanWindowHeight();
133 
134  int start_drag_x;
135  int start_drag_y;
136 
137  signals:
145  void UpdatePosition(double scroll_fraction_x, double scroll_fraction_y);
146 
147  public slots:
148  // Image Widget interface
153  void SetImage(QImage* image);
154 
163  void ImageWidgetViewChanged(QRectF visible_image_rect,
164  int current_image_width,
165  int current_image_height);
166 };
167 
168 #endif // DDT_DATAVISUALISATION_DDTWIDGETS_PANNINGWIDGET_HPP
DdtPanningWidget
Definition: ddtPanningWidget.hpp:29
DdtPanningWidget::preview_image_label
QLabel * preview_image_label
Definition: ddtPanningWidget.hpp:79
DdtPanningWidget::show_axes
bool show_axes
Definition: ddtPanningWidget.hpp:63
DdtPanningWidget::origin_x
int origin_x
Definition: ddtPanningWidget.hpp:100
DdtPanningWidget::selection_rectangle
QRect selection_rectangle
Definition: ddtPanningWidget.hpp:89
DdtWidget
The DdtWidget class Use as wrapper class for new widgets.
Definition: ddtWidget.hpp:23
DdtPanningWidget::zoom_factor
float zoom_factor
Definition: ddtPanningWidget.hpp:68
DdtPanningWidget::origin_y
int origin_y
Definition: ddtPanningWidget.hpp:106
DdtPanningWidget::preview_image
QImage preview_image
Definition: ddtPanningWidget.hpp:84
DdtPanningWidget::~DdtPanningWidget
~DdtPanningWidget()
DdtPanningWidget::mouse_drag_active
bool mouse_drag_active
Definition: ddtPanningWidget.hpp:73
DdtPanningWidget::rubberband
QRubberBand * rubberband
Definition: ddtPanningWidget.hpp:111
DdtPanningWidget::max_selection_rectangle
QRect max_selection_rectangle
Definition: ddtPanningWidget.hpp:94
DdtPanningWidget::UpdatePosition
void UpdatePosition(double scroll_fraction_x, double scroll_fraction_y)
ddtWidget.hpp