00001
00002
00003
00004
00005
00006
00007 #ifndef DLG_SETTINGS_COLOR_FILTER_H
00008 #define DLG_SETTINGS_COLOR_FILTER_H
00009
00010 #include "ColorFilterMode.h"
00011 #include "DlgSettingsAbstractBase.h"
00012 #include <QColor>
00013 #include <QImage>
00014 #include <QPixmap>
00015
00016 class DlgFilterThread;
00017 class DocumentModelColorFilter;
00018 class QComboBox;
00019 class QGraphicsScene;
00020 class QGridLayout;
00021 class QLabel;
00022 class QRadioButton;
00023 class ViewPreview;
00024 class ViewProfile;
00025 class ViewProfileDivider;
00026 class ViewProfileScale;
00027
00029 class DlgSettingsColorFilter : public DlgSettingsAbstractBase
00030 {
00031 Q_OBJECT;
00032
00033 public:
00035 DlgSettingsColorFilter(MainWindow &mainWindow);
00036 virtual ~DlgSettingsColorFilter();
00037
00038 virtual void createOptionalSaveDefault (QHBoxLayout *layout);
00039 virtual QWidget *createSubPanel ();
00040 virtual void load (CmdMediator &cmdMediator);
00041
00042 public slots:
00044 void slotTransferPiece (int xLeft,
00045 QImage image);
00046
00047 signals:
00049 void signalApplyFilter (ColorFilterMode colorFilterMode,
00050 double low,
00051 double high);
00052
00053 private slots:
00054 void slotCurveName(const QString &curveName);
00055 void slotDividerHigh (double);
00056 void slotDividerLow (double);
00057 void slotForeground();
00058 void slotHue();
00059 void slotIntensity();
00060 void slotSaturation();
00061 void slotValue();
00062
00063 protected:
00064 virtual void handleOk ();
00065
00066 private:
00067
00068 void createControls (QGridLayout *layout, int &row);
00069 void createPreview (QGridLayout *layout, int &row);
00070 void createProfileAndScale (QGridLayout *layout, int &row);
00071 QRgb createThread ();
00072 void loadForCurveName();
00073 static int PROFILE_HEIGHT_IN_ROWS () { return 6; }
00074 static int PROFILE_SCENE_WIDTH () { return 100; }
00075 static int PROFILE_SCENE_HEIGHT () { return 100; }
00076 void updateHistogram();
00077 void updatePreview();
00078
00079 QComboBox *m_cmbCurveName;
00080
00081 QRadioButton *m_btnIntensity;
00082 QRadioButton *m_btnForeground;
00083 QRadioButton *m_btnHue;
00084 QRadioButton *m_btnSaturation;
00085 QRadioButton *m_btnValue;
00086
00087 QGraphicsScene *m_sceneProfile;
00088 ViewProfile *m_viewProfile;
00089 ViewProfileScale *m_scale;
00090
00091 QGraphicsScene *m_scenePreview;
00092 ViewPreview *m_viewPreview;
00093 ViewProfileDivider *m_dividerLow;
00094 ViewProfileDivider *m_dividerHigh;
00095
00096
00097
00098 DlgFilterThread *m_filterThread;
00099
00100 QImage m_imagePreview;
00101
00102 DocumentModelColorFilter *m_modelColorFilterBefore;
00103 DocumentModelColorFilter *m_modelColorFilterAfter;
00104 };
00105
00106 #endif // DLG_SETTINGS_COLOR_FILTER_H