1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 #ifndef EFFECTSDIALOG_H
8 #define EFFECTSDIALOG_H
9 
10 #include <QDialog>
11 #include <QMap>
12 #include <QElapsedTimer>
13 
14 #include "scribusapi.h"
15 #include "scimage.h"
16 
17 class QComboBox;
18 class QGridLayout;
19 class QGroupBox;
20 class QHBoxLayout;
21 class QLabel;
22 class QListWidget;
23 class QListWidgetItem;
24 class QMenu;
25 class QPushButton;
26 class QSlider;
27 class QSpacerItem;
28 class QStackedWidget;
29 class QToolButton;
30 class QVBoxLayout;
31 class QWidget;
32 class QWidgetAction;
33 
34 class ColorCombo;
35 class CurveWidget;
36 class PageItem;
37 class ScribusDoc;
38 class ScrSpinBox;
39 class ShadeButton;
40 
41 class SCRIBUS_API EffectsDialog : public QDialog
42 {
43 	Q_OBJECT
44 
45 public:
46 	EffectsDialog( QWidget* parent, PageItem* item, ScribusDoc* docc );
~EffectsDialog()47 	~EffectsDialog() {};
48 	void selectEffectHelper(bool final = false);
49 	void setItemSelectable(QListWidget* widget, int itemNr, bool enable);
50 
51 	QLabel* pixmapLabel1;
52 	QLabel* textLabel1;
53 	QLabel* textLabel2;
54 	QLabel* textLabel3;
55 	QLabel* textLabel4;
56 	QLabel* textLabel5;
57 	QLabel* textLabel6;
58 	QLabel* textLabel7;
59 	QLabel* textLabel8;
60 	QLabel* textLabel9;
61 	QLabel* textLabel10;
62 	QLabel* textLabel11;
63 	QLabel* textLabel12;
64 	QLabel* textLabel14;
65 	QLabel* textLabel15;
66 	QStackedWidget* optionStack;
67 	QWidget* WStackPage;
68 	QWidget* WStackPage_2;
69 	ColorCombo* colData;
70 	ShadeButton *shade;
71 	QWidget* WStackPage_3;
72 	QSlider* brightnessSlider;
73 	QWidget* WStackPage_4;
74 	QSlider* contrastSlider;
75 	QWidget* WStackPage_5;
76 	ScrSpinBox* shRadius;
77 	ScrSpinBox* shValue;
78 	QWidget* WStackPage_6;
79 	ScrSpinBox* blRadius;
80 	QWidget* WStackPage_7;
81 	QSlider* solarizeSlider;
82 	QWidget* WStackPage_8;
83 	QLabel* textLabel1d;
84 	ColorCombo* colData1;
85 	ShadeButton *shade1;
86 	CurveWidget *CurveD1;
87 	QToolButton *CurveD1Button;
88 	QMenu *CurveD1Pop;
89 	QWidgetAction* CurveD1Act;
90 	QLabel* textLabel2d;
91 	ColorCombo* colData2;
92 	ShadeButton *shade2;
93 	CurveWidget *CurveD2;
94 	QToolButton *CurveD2Button;
95 	QMenu *CurveD2Pop;
96 	QWidgetAction* CurveD2Act;
97 
98 	QWidget* WStackPage_9;
99 	QLabel* textLabel1t;
100 	ColorCombo* colDatat1;
101 	ShadeButton *shadet1;
102 	CurveWidget *CurveT1;
103 	QToolButton *CurveT1Button;
104 	QMenu *CurveT1Pop;
105 	QWidgetAction* CurveT1Act;
106 	QLabel* textLabel2t;
107 	ColorCombo* colDatat2;
108 	ShadeButton *shadet2;
109 	CurveWidget *CurveT2;
110 	QToolButton *CurveT2Button;
111 	QMenu *CurveT2Pop;
112 	QWidgetAction* CurveT2Act;
113 	QLabel* textLabel3t;
114 	ColorCombo* colDatat3;
115 	ShadeButton *shadet3;
116 	CurveWidget *CurveT3;
117 	QToolButton *CurveT3Button;
118 	QMenu *CurveT3Pop;
119 	QWidgetAction* CurveT3Act;
120 
121 	QWidget* WStackPage_10;
122 	QLabel* textLabel1q;
123 	ColorCombo* colDataq1;
124 	ShadeButton *shadeq1;
125 	CurveWidget *CurveQ1;
126 	QToolButton *CurveQ1Button;
127 	QMenu *CurveQ1Pop;
128 	QWidgetAction* CurveQ1Act;
129 	QLabel* textLabel2q;
130 	ColorCombo* colDataq2;
131 	ShadeButton *shadeq2;
132 	CurveWidget *CurveQ2;
133 	QToolButton *CurveQ2Button;
134 	QMenu *CurveQ2Pop;
135 	QWidgetAction* CurveQ2Act;
136 	QLabel* textLabel3q;
137 	ColorCombo* colDataqc3;
138 	ShadeButton *shadeqc3;
139 	CurveWidget *CurveQc3;
140 	QToolButton *CurveQc3Button;
141 	QMenu *CurveQc3Pop;
142 	QWidgetAction* CurveQc3Act;
143 	QLabel* textLabel4q;
144 	ColorCombo* colDataq4;
145 	ShadeButton *shadeq4;
146 	CurveWidget *CurveQ4;
147 	QToolButton *CurveQ4Button;
148 	QMenu *CurveQ4Pop;
149 	QWidgetAction* CurveQ4Act;
150 
151 	QWidget* WStackPage_11;
152 	CurveWidget *Kdisplay;
153 
154 	QListWidget* usedEffects;
155 	QPushButton* effectUp;
156 	QPushButton* effectDown;
157 	QPushButton* toEffects;
158 	QPushButton* fromEffects;
159 	QListWidget* availableEffects;
160 	QPushButton* okButton;
161 	QPushButton* cancelButton;
162 	QListWidgetItem* currentOptions;
163 
164 	QGroupBox *groupBox;
165 	QSpacerItem* spacer;
166 	QSpacerItem* spacer3;
167 
168 	ScImageEffectList effectsList;
169 
170 public slots:
171 	virtual void leaveOK();
172 	virtual void updateSolarize(int val);
173 	virtual void updateContrast(int val);
174 	virtual void updateBright(int val);
175 	virtual void createPreview();
176 	virtual void saveValues(bool final);
177 	virtual void moveToEffects();
178 	virtual void moveFromEffects();
179 	virtual void moveEffectUp();
180 	virtual void moveEffectDown();
181 	virtual void selectEffect(QListWidgetItem* c);
182 	virtual void selectAvailEffect(QListWidgetItem* c);
183 	virtual void selectAvailEffectDbl(QListWidgetItem* c);
184 
185 protected:
186 	ScribusDoc* m_doc {nullptr};
187 	PageItem* m_item {nullptr};
188 
189 	ScImage m_image;
190 	double  m_imageScale;
191 
192 	QElapsedTimer m_time;
193 	QMap<QListWidgetItem*, QString> m_effectValMap;
194 
195 	QGridLayout* layoutGrid;
196 	QVBoxLayout* EffectsDialogLayout;
197 	QVBoxLayout* WStackPageLayout;
198 	QVBoxLayout* WStackPage3Layout;
199 	QHBoxLayout* layout20;
200 	QVBoxLayout* WStackPage4Layout;
201 	QHBoxLayout* layout21;
202 	QVBoxLayout* WStackPage5Layout;
203 	QHBoxLayout* layout22;
204 	QHBoxLayout* layout23;
205 	QVBoxLayout* WStackPage6Layout;
206 	QHBoxLayout* layout24;
207 	QVBoxLayout* WStackPage7Layout;
208 	QGridLayout* WStackPage8Layout;
209 	QGridLayout* WStackPage9Layout;
210 	QGridLayout* WStackPage10Layout;
211 	QVBoxLayout* WStackPage11Layout;
212 	QHBoxLayout* layout26;
213 	QHBoxLayout* layout17;
214 	QHBoxLayout* layout19;
215 	QVBoxLayout* layout8;
216 	QHBoxLayout* layout7;
217 	QHBoxLayout* layoutDialogButtonBox;
218 };
219 
220 #endif // EFFECTSDIALOG_H
221