Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
DlgSettingsColorFilter.h
1 #ifndef DLG_SETTINGS_COLOR_FILTER_H
2 #define DLG_SETTINGS_COLOR_FILTER_H
3 
4 #include "ColorFilterMode.h"
5 #include "DlgSettingsAbstractBase.h"
6 #include <QColor>
7 #include <QImage>
8 #include <QPixmap>
9 
10 class DlgFilterThread;
12 class QComboBox;
13 class QGraphicsScene;
14 class QGridLayout;
15 class QLabel;
16 class QRadioButton;
17 class ViewPreview;
18 class ViewProfile;
19 class ViewProfileDivider;
20 class ViewProfileScale;
21 
24 {
25  Q_OBJECT;
26 
27 public:
30  virtual ~DlgSettingsColorFilter();
31 
32  virtual QWidget *createSubPanel ();
33  virtual void load (CmdMediator &cmdMediator);
34 
35 public slots:
37  void slotTransferPiece (int xLeft,
38  QImage image);
39 
40 signals:
42  void signalApplyFilter (ColorFilterMode colorFilterMode,
43  double low,
44  double high);
45 
46 private slots:
47  void slotCurveName(const QString &curveName);
48  void slotDividerHigh (double);
49  void slotDividerLow (double);
50  void slotForeground();
51  void slotHue();
52  void slotIntensity();
53  void slotSaturation();
54  void slotValue();
55 
56 protected:
57  virtual void handleOk ();
58 
59 private:
60 
61  void createControls (QGridLayout *layout, int &row);
62  void createPreview (QGridLayout *layout, int &row);
63  void createProfileAndScale (QGridLayout *layout, int &row);
64  QRgb createThread (); // Returns background color
65  void loadForCurveName();
66  static int PROFILE_HEIGHT_IN_ROWS () { return 6; }
67  static int PROFILE_SCENE_WIDTH () { return 100; }
68  static int PROFILE_SCENE_HEIGHT () { return 100; }
69  void updateHistogram();
70  void updatePreview();
71 
72  QComboBox *m_cmbCurveName;
73 
74  QRadioButton *m_btnIntensity;
75  QRadioButton *m_btnForeground;
76  QRadioButton *m_btnHue;
77  QRadioButton *m_btnSaturation;
78  QRadioButton *m_btnValue;
79 
80  QGraphicsScene *m_sceneProfile;
81  ViewProfile *m_viewProfile;
82  ViewProfileScale *m_scale;
83 
84  QGraphicsScene *m_scenePreview;
85  ViewPreview *m_viewPreview;
86  ViewProfileDivider *m_dividerLow;
87  ViewProfileDivider *m_dividerHigh;
88 
89  // Apply filter parameters to preview image in a separate thread so dragging the dividers in the profile
90  // will not be slowed down by the filter parameter processing
91  DlgFilterThread *m_filterThread;
92 
93  QImage m_imagePreview;
94 
95  DocumentModelColorFilter *m_modelColorFilterBefore;
96  DocumentModelColorFilter *m_modelColorFilterAfter;
97 };
98 
99 #endif // DLG_SETTINGS_COLOR_FILTER_H
void slotTransferPiece(int xLeft, QImage image)
Receive processed piece of preview image, to be inserted at xLeft to xLeft+pixmap.width().
virtual void handleOk()
Process slotOk.
void signalApplyFilter(ColorFilterMode colorFilterMode, double low, double high)
Send filter parameters to DlgFilterThread and DlgFilterWorker for processing.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
Dialog for editing filtering settings.
Class that modifies QGraphicsView to automatically expand/shrink the view to fit the window...
Definition: ViewPreview.h:8
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Linear horizontal scale, with the spectrum reflecting the active filter parameter.
Divider that can be dragged, in a dialog QGraphicsView.
Class for processing new filter settings. This is based on http://blog.debao.me/2013/08/how-to-use-qt...
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
Command queue stack.
Definition: CmdMediator.h:16
DlgSettingsColorFilter(MainWindow &mainWindow)
Single constructor.
Abstract base class for all Settings dialogs.
Class that modifies QGraphicsView to present a two-dimensional profile, with movable dividers for sel...
Definition: ViewProfile.h:9
MainWindow & mainWindow()
Get method for MainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:60
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.