ddt  1.0.0
ddtGraphicsView.hpp
Go to the documentation of this file.
1 
21 #ifndef DATAVISUALISATION_WIDGETSDIALOGS_SRC_INCLUDE_DDT_WIDGETS_DDTGRAPHICSVIEW_HPP_
22 #define DATAVISUALISATION_WIDGETSDIALOGS_SRC_INCLUDE_DDT_WIDGETS_DDTGRAPHICSVIEW_HPP_
23 
24 #include <QtWidgets>
25 
32 #include "ddt/ddtLogger.hpp"
38 #include "ddt/imageHandling.hpp"
39 
42 
43 class DdtImageWidget;
44 
48 typedef struct SlitConfiguration {
52  double config_slit_x;
56  double config_slit_y;
73 
75 
80 class DdtGraphicsView : public QGraphicsView {
81  Q_OBJECT
82 
83  public:
88  explicit DdtGraphicsView(QWidget* parent = nullptr);
89 
93  ~DdtGraphicsView() override;
94 
100  void SetConvertPixelToDegrees(const double conv_pixel_degrees);
101 
106  void SetDrawMode(const QString mode);
107 
112  QString GetDrawMode() const;
113 
118  void SetDrawSlitLine(const bool draw_line);
119 
127  void SetStatisticRect(const double x1, const double y1, const double x2,
128  const double y2);
129 
134  void SetOverlayImageFile(const QString filename);
135 
141 
146  void AddSlitElementToScene();
147 
153 
159 
163  void UpdateAllStatistics();
164 
168  void UpdateCursorInfo();
169 
170  public slots:
175  void ClearTextItemFocus();
176 
177  private slots:
181  void HandleText();
182 
183  protected:
188  void mouseMoveEvent(QMouseEvent* event) override;
189 
194  void mousePressEvent(QMouseEvent* event) override;
195 
200  void mouseReleaseEvent(QMouseEvent* event) override;
201 
206  void mouseDoubleClickEvent(QMouseEvent* event) override;
207 
212  void keyPressEvent(QKeyEvent* event) override;
213 
218  void wheelEvent(QWheelEvent* event) override;
219 
226  void drawForeground(QPainter* painter, const QRectF& rect) override;
227 
231  bool IsHandleGraphicalElement() const;
232 
237  void AddTextItem();
238 
239  signals:
246  void CursorPosition(double x, double y, bool mouse_clicked);
247 
256  void GraphicalElement(double x1, double y1, double x2, double y2,
257  QString draw_mode);
258 
259  void GraphicalTextElement(double x1, double y1, double x2, double y2,
260  QString draw_mode, QString text);
261 
262  void StatisticRectangle(double x1, double y1, double x2, double y2);
263 
264  void SlitElement(double target_x, double target_y, double slit_x,
265  double slit_y, double x_offset, double y_offset);
266 
270  void CalculateHistogramReferenceLine(const QPointF p1, const QPointF p2);
271 
275  void CalculateDistanceLine(const QPointF p1, const QPointF p2);
276 
281 
286 
292  void LayerIncrement(const int inc);
293 
299  void LayerDecrement(const int dec);
300 
301  private:
305  DdtImageWidget* parent;
306 
310  bool drawing_enabled = false;
311 
316  QString draw_mode = "none";
317 
322  QPointF orig_point;
323 
328  QPointF cur_point;
329 
333  double convert_pixel_to_degrees = 0.0;
334 
335  DdtGraphicsTextItem* text_item = nullptr;
336  QString current_text = "";
337  QPointF current_text_pos;
338 
339  DdtGraphicalElementStatRectangle* statistic_rect = nullptr;
340  DdtGraphicalElementSlit* slit_element = nullptr;
341  DdtGraphicalElementRefLine* ref_line_element = nullptr;
342  DdtGraphicalElementRefLine* dist_line_element = nullptr;
343  bool draw_slit_line = false;
344  bool slit_config_read = false;
345 
346  // Configurable properties of slit overlay
347  SlitConfiguration slit_config;
348 
349  QString overlay_image_file;
350 
351  std::unique_ptr<DdtGraphicsViewDraw> graphics_view_draw =
352  std::unique_ptr<DdtGraphicsViewDraw>(new DdtGraphicsViewDraw());
353 
360  void DrawSlit(QPainter& painter, const QPointF start);
361 
366  void ReadSlitParameter(const std::string config_file, double* const slit_x,
367  double* const slit_y, double* const slit_size_x,
368  double* const slit_size_y, double* const slit_angle,
369  QString* const slit_color) const;
373  void CreateSlit(const QColor line_color, const double slit_x,
374  const double slit_y, const double slit_size_x,
375  const double slit_size_y, const double slit_angle);
376 
380  std::string GetConfigPath() const;
381 };
382 
383 #endif /* DATAVISUALISATION_WIDGETSDIALOGS_SRC_INCLUDE_DDT_WIDGETS_DDTGRAPHICSVIEW_HPP_ \
384  */
385 
Definition: ddtGraphicalElementRefLine.hpp:29
Definition: ddtGraphicalElementSlit.hpp:27
Definition: ddtGraphicalElementStatRectangle.hpp:28
Definition: ddtGraphicsTextItem.hpp:29
Definition: ddtGraphicsViewDraw.hpp:36
Definition: ddtGraphicsView.hpp:80
void AddReferenceLineElementToScene()
Definition: ddtGraphicsView.cpp:150
bool IsHandleGraphicalElement() const
Definition: ddtGraphicsView.cpp:394
void mouseMoveEvent(QMouseEvent *event) override
Definition: ddtGraphicsView.cpp:212
void AddDistanceLineElementToScene()
Definition: ddtGraphicsView.cpp:159
void MouseIncrementScale()
void UpdateAllStatistics()
Definition: ddtGraphicsView.cpp:168
void SetDrawSlitLine(const bool draw_line)
Definition: ddtGraphicsView.cpp:104
void keyPressEvent(QKeyEvent *event) override
Definition: ddtGraphicsView.cpp:435
void mouseReleaseEvent(QMouseEvent *event) override
Definition: ddtGraphicsView.cpp:311
void mousePressEvent(QMouseEvent *event) override
Definition: ddtGraphicsView.cpp:241
~DdtGraphicsView() override
void mouseDoubleClickEvent(QMouseEvent *event) override
Definition: ddtGraphicsView.cpp:480
void SetStatisticRect(const double x1, const double y1, const double x2, const double y2)
Definition: ddtGraphicsView.cpp:109
void ClearTextItemFocus()
Definition: ddtGraphicsView.cpp:428
void GraphicalTextElement(double x1, double y1, double x2, double y2, QString draw_mode, QString text)
void SetOverlayImageFile(const QString filename)
Definition: ddtGraphicsView.cpp:127
void UpdateCursorInfo()
Definition: ddtGraphicsView.cpp:205
void MouseDecrementScale()
void SetDrawMode(const QString mode)
Definition: ddtGraphicsView.cpp:52
void AddSlitElementToScene()
Definition: ddtGraphicsView.cpp:143
void SlitElement(double target_x, double target_y, double slit_x, double slit_y, double x_offset, double y_offset)
void drawForeground(QPainter *painter, const QRectF &rect) override
Definition: ddtGraphicsView.cpp:496
void StatisticRectangle(double x1, double y1, double x2, double y2)
void GraphicalElement(double x1, double y1, double x2, double y2, QString draw_mode)
void CalculateHistogramReferenceLine(const QPointF p1, const QPointF p2)
void CalculateDistanceLine(const QPointF p1, const QPointF p2)
QString GetDrawMode() const
Definition: ddtGraphicsView.cpp:101
void wheelEvent(QWheelEvent *event) override
Definition: ddtGraphicsView.cpp:485
DdtGraphicsView(QWidget *parent=nullptr)
Definition: ddtGraphicsView.cpp:37
void SetConvertPixelToDegrees(const double conv_pixel_degrees)
Definition: ddtGraphicsView.cpp:42
void CursorPosition(double x, double y, bool mouse_clicked)
void LayerIncrement(const int inc)
void LayerDecrement(const int dec)
void AddStatisticRectToScene()
Definition: ddtGraphicsView.cpp:133
void AddTextItem()
Definition: ddtGraphicsView.cpp:524
Definition: ddtImageWidget.hpp:52
DDT Dialogs. Factory class for the DDT dialogs. Factory class for the DDT dialogs.
DDT Dialog IDs. ID values for all used dialogs. IDs for the used dialogs.
DDT Dialogs. Base class for the DDT dialogs. Base class for the DDT dialogs.
DDT Graphics. Class for images. Class for the Graphical Elements - Image.
DDT Graphics. Class for common properties of graphical elements like line width, colour etc....
DDT Graphics. Class for reference line elements. Class for the Graphical Elements - Reference Line.
DDT Graphics. Class for slit elements. Class for the Graphical Elements - Slit.
DDT Graphics. Class for rectangles for statistics. Class for the Graphical Elements - Statistics Rect...
DDT Utils. Helper classes for DDT Datavisualisation. Utilities for the DDT Datavisualisation.
DDT Widgets. Helper class for the graphics display of the DDT Image Widget. Helper class for the Grap...
struct SlitConfiguration SlitConfiguration
DDT Widgets. Class for the DDT Image Widget. Class for the Image Widget. The widget is used to displa...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
DDT Graphics. Class for the rendering of graphical elements into the view. Class for the Graphical Ov...
DDT Widgets. Base class for rendering plugins. Base class for rendering plugins.
Image Handling class, offers access to image handling functions. This file is part of the DDT Image H...
Definition: ddtGraphicsView.hpp:48
double config_slit_size_y
Definition: ddtGraphicsView.hpp:64
double config_slit_size_x
Definition: ddtGraphicsView.hpp:60
double config_slit_y
Definition: ddtGraphicsView.hpp:56
QString config_slit_color
Definition: ddtGraphicsView.hpp:72
double config_slit_angle
Definition: ddtGraphicsView.hpp:68
double config_slit_x
Definition: ddtGraphicsView.hpp:52
string p1
Definition: testCommandLineParser.cpp:358
string p2
Definition: testCommandLineParser.cpp:359