Engauge Digitizer  2
DlgSettingsColorFilter.h
Go to the documentation of this file.
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef DLG_SETTINGS_COLOR_FILTER_H
8 #define DLG_SETTINGS_COLOR_FILTER_H
9 
10 #include "ColorFilterMode.h"
12 #include <QColor>
13 #include <QImage>
14 #include <QPixmap>
15 
16 class DlgFilterThread;
18 class QComboBox;
19 class QGraphicsScene;
20 class QGridLayout;
21 class QLabel;
22 class QRadioButton;
23 class ViewPreview;
24 class ViewProfile;
25 class ViewProfileDivider;
26 class ViewProfileScale;
27 
30 {
31  Q_OBJECT;
32 
33 public:
36  virtual ~DlgSettingsColorFilter();
37 
38  virtual void createOptionalSaveDefault (QHBoxLayout *layout);
39  virtual QWidget *createSubPanel ();
40  virtual void load (CmdMediator &cmdMediator);
41  virtual void setSmallDialogs (bool smallDialogs);
42 
43 public slots:
45  void slotTransferPiece (int xLeft,
46  QImage image);
47 
48 signals:
50  void signalApplyFilter (ColorFilterMode colorFilterMode,
51  double low,
52  double high);
53 
54 private slots:
55  void slotCurveName(const QString &curveName);
56  void slotDividerHigh (double);
57  void slotDividerLow (double);
58  void slotForeground();
59  void slotHue();
60  void slotIntensity();
61  void slotSaturation();
62  void slotValue();
63 
64 protected:
65  virtual void handleOk ();
66 
67 private:
68 
69  void createControls (QGridLayout *layout, int &row);
70  void createPreview (QGridLayout *layout, int &row);
71  void createProfileAndScale (QGridLayout *layout, int &row);
72  QRgb createThread (); // Returns background color
73  void loadForCurveName();
74  static int PROFILE_HEIGHT_IN_ROWS () { return 6; }
75  static int PROFILE_SCENE_WIDTH () { return 100; }
76  static int PROFILE_SCENE_HEIGHT () { return 100; }
77  void updateHistogram();
78  void updatePreview();
79 
80  QComboBox *m_cmbCurveName;
81 
82  QRadioButton *m_btnIntensity;
83  QRadioButton *m_btnForeground;
84  QRadioButton *m_btnHue;
85  QRadioButton *m_btnSaturation;
86  QRadioButton *m_btnValue;
87 
88  QGraphicsScene *m_sceneProfile;
89  ViewProfile *m_viewProfile;
90  ViewProfileScale *m_scale;
91 
92  QGraphicsScene *m_scenePreview;
93  ViewPreview *m_viewPreview;
94  ViewProfileDivider *m_dividerLow;
95  ViewProfileDivider *m_dividerHigh;
96 
97  // Apply filter parameters to preview image in a separate thread so dragging the dividers in the profile
98  // will not be slowed down by the filter parameter processing
99  DlgFilterThread *m_filterThread;
100 
101  QImage m_imagePreview;
102 
103  DocumentModelColorFilter *m_modelColorFilterBefore;
104  DocumentModelColorFilter *m_modelColorFilterAfter;
105 };
106 
107 #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....
virtual void handleOk()
Process slotOk.
void signalApplyFilter(ColorFilterMode colorFilterMode, double low, double high)
Send filter parameters to DlgFilterThread and DlgFilterWorker for processing.
ColorFilterMode
virtual void setSmallDialogs(bool smallDialogs)
If false then dialogs have a minimum size so all controls are visible.
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:14
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 void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
Command queue stack.
Definition: CmdMediator.h:23
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:15
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:91
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.