Subversion Repositories Scribus

Rev

Rev 6149 | Rev 6401 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4430 cbradney 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
*/
2056 fschmid 7
#include "effectsdialog.h"
8
#include "effectsdialog.moc"
9
#include <qvariant.h>
10
#include <qpushbutton.h>
11
#include <qlabel.h>
12
#include <qlistbox.h>
13
#include <qlayout.h>
14
#include <qtooltip.h>
15
#include <qwhatsthis.h>
16
#include <qimage.h>
2057 fschmid 17
#include <qtextstream.h>
2061 fschmid 18
#include <qwidgetstack.h>
19
#include <qwidget.h>
2082 fschmid 20
#include <qslider.h>
6020 fschmid 21
#include <qpainter.h>
6129 fschmid 22
#include <qtoolbutton.h>
23
#include <qpopupmenu.h>
6089 jghali 24
#include "colorcombo.h"
5781 cbradney 25
#include "cmsettings.h"
3543 avox 26
#include "sccombobox.h"
2057 fschmid 27
#include "scribusdoc.h"
28
#include "shadebutton.h"
2092 fschmid 29
#include "mspinbox.h"
2714 craig 30
#include "page.h"
6125 cbradney 31
#include "colorutil.h"
6129 fschmid 32
#include "curvewidget.h"
2057 fschmid 33
 
2056 fschmid 34
extern QPixmap loadIcon(QString nam);
35
 
2061 fschmid 36
EffectsDialog::EffectsDialog( QWidget* parent, PageItem* item, ScribusDoc* docc ) : QDialog( parent, "EffectsDialog", true, 0 )
2056 fschmid 37
{
2061 fschmid 38
        EffectsDialogLayout = new QHBoxLayout( this, 10, 5, "EffectsDialogLayout");
39
        setCaption( tr( "Image Effects" ) );
2057 fschmid 40
        setIcon(loadIcon("AppIcon.png"));
2061 fschmid 41
        currItem = item;
42
        effectsList = currItem->effectsInUse;
43
        doc = docc;
44
        currentOptions = 0;
45
        bool mode = false;
5959 jghali 46
        CMSettings cms(docc, "", 0);
6193 fschmid 47
/*      if (currItem->pixm.imgInfo.RequestProps.count() != 0)
48
        {
49
                image.imgInfo.RequestProps = currItem->pixm.imgInfo.RequestProps;
50
                image.imgInfo.isRequest = true;
51
        } */
5959 jghali 52
        image.LoadPicture(currItem->Pfile, cms, false, false, ScImage::RGBData, 72, &mode);
2061 fschmid 53
        int ix = image.width();
54
        int iy = image.height();
6011 fschmid 55
        imageScale = 1.0;
2061 fschmid 56
        if ((ix > 220) || (iy > 220))
57
        {
58
                double sx = ix / 220.0;
59
                double sy = iy / 220.0;
60
                if (sy < sx)
61
                        image.createLowRes(sx);
62
                else
63
                        image.createLowRes(sy);
6011 fschmid 64
                imageScale = QMIN(sx, sy);
2061 fschmid 65
        }
66
        layout16 = new QVBoxLayout( 0, 0, 5, "layout16");
67
        pixmapLabel1 = new QLabel( this, "pixmapLabel1" );
68
        pixmapLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, pixmapLabel1->sizePolicy().hasHeightForWidth() ) );
69
        pixmapLabel1->setMinimumSize( QSize( 220, 220 ) );
70
        pixmapLabel1->setMaximumSize( QSize( 220, 220 ) );
71
        pixmapLabel1->setFrameShape( QLabel::StyledPanel );
72
        pixmapLabel1->setFrameShadow( QLabel::Sunken );
73
        pixmapLabel1->setScaledContents( false );
74
        layout16->addWidget( pixmapLabel1 );
75
        textLabel5 = new QLabel( this, "textLabel5" );
76
        textLabel5->setText( tr( "Options:" ) );
77
        layout16->addWidget( textLabel5 );
78
        optionStack = new QWidgetStack( this, "optionStack" );
79
        optionStack->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, optionStack->sizePolicy().hasHeightForWidth() ) );
6129 fschmid 80
        optionStack->setMinimumSize( QSize( 220, 180 ) );
2061 fschmid 81
        optionStack->setFrameShape( QWidgetStack::GroupBoxPanel );
82
        WStackPage = new QWidget( optionStack, "WStackPage" );
83
        optionStack->addWidget( WStackPage, 0 );
84
 
85
        WStackPage_2 = new QWidget( optionStack, "WStackPage_2" );
86
        WStackPageLayout = new QVBoxLayout( WStackPage_2, 5, 5, "WStackPageLayout");
87
        WStackPageLayout->setAlignment( Qt::AlignTop );
88
        layout17 = new QHBoxLayout( 0, 0, 5, "layout7");
89
        textLabel3 = new QLabel( tr( "Color:" ), WStackPage_2, "textLabel3" );
90
        layout17->addWidget( textLabel3 );
91
 
6089 jghali 92
        colData = new ColorCombo(false, WStackPage_2, "colData");
2057 fschmid 93
        ColorList::Iterator it;
94
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 95
                colData->insertSmallItem(doc->PageColors[it.key()], it.key());
2061 fschmid 96
        layout17->addWidget( colData );
97
        WStackPageLayout->addLayout( layout17 );
2057 fschmid 98
 
2061 fschmid 99
        layout19 = new QHBoxLayout( 0, 0, 5, "layout7");
100
        textLabel4 = new QLabel( tr( "Shade:" ), WStackPage_2, "textLabel4" );
101
        layout19->addWidget( textLabel4 );
102
        shade = new ShadeButton(WStackPage_2);
103
        shade->setValue(100);
104
        layout19->addWidget( shade );
105
        WStackPageLayout->addLayout( layout19 );
106
        optionStack->addWidget( WStackPage_2, 1 );
2082 fschmid 107
 
108
        WStackPage_3 = new QWidget( optionStack, "WStackPage_3" );
109
        WStackPage3Layout = new QVBoxLayout( WStackPage_3, 5, 5, "WStackPageLayout");
110
        WStackPage3Layout->setAlignment( Qt::AlignTop );
111
        layout20 = new QHBoxLayout( 0, 0, 5, "layout7");
112
        textLabel6 = new QLabel( tr( "Brightness:" ), WStackPage_3, "textLabel6" );
113
        layout20->addWidget( textLabel6, Qt::AlignLeft );
114
        textLabel7 = new QLabel( "0", WStackPage_3, "textLabel7" );
115
        layout20->addWidget( textLabel7, Qt::AlignRight );
116
        WStackPage3Layout->addLayout( layout20 );
117
        brightnessSlider = new QSlider( WStackPage_3, "Slider1_2" );
118
        brightnessSlider->setMinValue(-255);
119
        brightnessSlider->setMaxValue(255);
120
        brightnessSlider->setValue(0);
121
        brightnessSlider->setOrientation( QSlider::Horizontal );
122
        brightnessSlider->setTickmarks( QSlider::Below );
123
        WStackPage3Layout->addWidget( brightnessSlider );
124
        optionStack->addWidget( WStackPage_3, 2 );
125
 
126
        WStackPage_4 = new QWidget( optionStack, "WStackPage_4" );
127
        WStackPage4Layout = new QVBoxLayout( WStackPage_4, 5, 5, "WStackPageLayout");
128
        WStackPage4Layout->setAlignment( Qt::AlignTop );
129
        layout21 = new QHBoxLayout( 0, 0, 5, "layout7");
130
        textLabel8 = new QLabel( tr( "Contrast:" ), WStackPage_4, "textLabel8" );
131
        layout21->addWidget( textLabel8, Qt::AlignLeft );
132
        textLabel9 = new QLabel( "0", WStackPage_4, "textLabel9" );
133
        layout21->addWidget( textLabel9, Qt::AlignRight );
134
        WStackPage4Layout->addLayout( layout21 );
135
        contrastSlider = new QSlider( WStackPage_4, "Slider2" );
136
        contrastSlider->setMinValue(-127);
137
        contrastSlider->setMaxValue(127);
138
        contrastSlider->setValue(0);
139
        contrastSlider->setOrientation( QSlider::Horizontal );
140
        contrastSlider->setTickmarks( QSlider::Below );
141
        WStackPage4Layout->addWidget( contrastSlider );
142
        optionStack->addWidget( WStackPage_4, 3 );
2092 fschmid 143
 
144
        WStackPage_5 = new QWidget( optionStack, "WStackPage_5" );
145
        WStackPage5Layout = new QVBoxLayout( WStackPage_5, 5, 5, "WStackPageLayout");
146
        WStackPage5Layout->setAlignment( Qt::AlignTop );
147
        layout22 = new QHBoxLayout( 0, 0, 5, "layout7");
148
        textLabel10 = new QLabel( tr( "Radius:" ), WStackPage_5, "textLabel10" );
149
        layout22->addWidget( textLabel10 );
150
        shRadius = new MSpinBox( 0.0, 10.0, WStackPage_5, 1 );
151
        shRadius->setValue(0);
152
        layout22->addWidget( shRadius );
153
        WStackPage5Layout->addLayout( layout22 );
154
        layout23 = new QHBoxLayout( 0, 0, 5, "layout7");
155
        textLabel11 = new QLabel( tr("Value:"), WStackPage_5, "textLabel11" );
156
        layout23->addWidget( textLabel11 );
157
        shValue = new MSpinBox( 0.0, 5.0, WStackPage_5, 1 );
158
        shValue->setValue(1.0);
159
        layout23->addWidget( shValue );
160
        WStackPage5Layout->addLayout( layout23 );
161
        optionStack->addWidget( WStackPage_5, 4 );
2095 fschmid 162
 
163
        WStackPage_6 = new QWidget( optionStack, "WStackPage_6" );
164
        WStackPage6Layout = new QVBoxLayout( WStackPage_6, 5, 5, "WStackPageLayout");
165
        WStackPage6Layout->setAlignment( Qt::AlignTop );
166
        layout24 = new QHBoxLayout( 0, 0, 5, "layout7");
2096 fschmid 167
        textLabel12 = new QLabel( tr( "Radius:" ), WStackPage_6, "textLabel10" );
2095 fschmid 168
        layout24->addWidget( textLabel12 );
6011 fschmid 169
        blRadius = new MSpinBox( 0.0, 30.0, WStackPage_6, 1 );
2095 fschmid 170
        blRadius->setValue(0);
171
        layout24->addWidget( blRadius );
172
        WStackPage6Layout->addLayout( layout24 );
173
        optionStack->addWidget( WStackPage_6, 5 );
2096 fschmid 174
 
175
        WStackPage_7 = new QWidget( optionStack, "WStackPage_4" );
176
        WStackPage7Layout = new QVBoxLayout( WStackPage_7, 5, 5, "WStackPageLayout");
177
        WStackPage7Layout->setAlignment( Qt::AlignTop );
178
        layout26 = new QHBoxLayout( 0, 0, 5, "layout7");
179
        textLabel14 = new QLabel( tr( "Posterize:" ), WStackPage_7, "textLabel8" );
180
        layout26->addWidget( textLabel14, Qt::AlignLeft );
181
        textLabel15 = new QLabel( "0", WStackPage_7, "textLabel9" );
182
        layout26->addWidget( textLabel15, Qt::AlignRight );
183
        WStackPage7Layout->addLayout( layout26 );
184
        solarizeSlider = new QSlider( WStackPage_7, "Slider2" );
185
        solarizeSlider->setMinValue(1);
186
        solarizeSlider->setMaxValue(255);
187
        solarizeSlider->setValue(255);
188
        solarizeSlider->setOrientation( QSlider::Horizontal );
189
        solarizeSlider->setTickmarks( QSlider::Below );
190
        WStackPage7Layout->addWidget( solarizeSlider );
191
        optionStack->addWidget( WStackPage_7, 6 );
6080 fschmid 192
 
193
        WStackPage_8 = new QWidget( optionStack, "WStackPage_8" );
6129 fschmid 194
        WStackPage8Layout = new QGridLayout( WStackPage_8, 1, 1, 4, 5, "WStackPage8Layout");
6080 fschmid 195
        textLabel1d = new QLabel( tr( "Color 1:" ), WStackPage_8, "textLabel1d" );
196
        WStackPage8Layout->addWidget( textLabel1d, 0, 0 );
6089 jghali 197
        colData1 = new ColorCombo(false, WStackPage_8, "colData1");
6080 fschmid 198
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 199
                colData1->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 200
        WStackPage8Layout->addMultiCellWidget( colData1, 0, 0, 1, 2);
6080 fschmid 201
        shade1 = new ShadeButton(WStackPage_8);
202
        shade1->setValue(100);
6129 fschmid 203
        WStackPage8Layout->addWidget( shade1, 1, 1 );
204
        CurveD1 = new CurveWidget( NULL );
205
        CurveD1Pop = new QPopupMenu();
206
        CurveD1Pop->insertItem(CurveD1);
207
        CurveD1Button = new QToolButton( WStackPage_8, "CurveD1Button" );
208
        CurveD1Button->setText( "" );
209
        CurveD1Button->setMaximumSize( QSize( 22, 22 ) );
210
        CurveD1Button->setPixmap(loadIcon("curve.png"));
211
        CurveD1Button->setPopup(CurveD1Pop);
212
        CurveD1Button->setPopupDelay(40);
213
        WStackPage8Layout->addWidget( CurveD1Button, 1, 2 );
214
 
6080 fschmid 215
        textLabel2d = new QLabel( tr( "Color 2:" ), WStackPage_8, "textLabel2d" );
6129 fschmid 216
        WStackPage8Layout->addWidget( textLabel2d, 2, 0 );
6089 jghali 217
        colData2 = new ColorCombo(false, WStackPage_8, "colData2");
6080 fschmid 218
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 219
                colData2->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 220
        WStackPage8Layout->addMultiCellWidget( colData2, 2, 2, 1, 2);
6080 fschmid 221
        shade2 = new ShadeButton(WStackPage_8);
222
        shade2->setValue(100);
6129 fschmid 223
        WStackPage8Layout->addWidget( shade2, 3, 1 );
224
        CurveD2 = new CurveWidget( NULL );
225
        CurveD2Pop = new QPopupMenu();
226
        CurveD2Pop->insertItem(CurveD2);
227
        CurveD2Button = new QToolButton( WStackPage_8, "CurveD2Button" );
228
        CurveD2Button->setText( "" );
229
        CurveD2Button->setMaximumSize( QSize( 22, 22 ) );
230
        CurveD2Button->setPixmap(loadIcon("curve.png"));
231
        CurveD2Button->setPopup(CurveD2Pop);
232
        CurveD2Button->setPopupDelay(40);
233
        WStackPage8Layout->addWidget( CurveD2Button, 3, 2 );
234
        QSpacerItem *spacerD1 = new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding );
235
        WStackPage8Layout->addItem( spacerD1, 4, 0 );
6080 fschmid 236
        optionStack->addWidget( WStackPage_8, 7 );
237
 
238
        WStackPage_9 = new QWidget( optionStack, "WStackPage_9" );
6129 fschmid 239
        WStackPage9Layout = new QGridLayout( WStackPage_9, 1, 1, 4, 5, "WStackPage9Layout");
6080 fschmid 240
        textLabel1t = new QLabel( tr( "Color 1:" ), WStackPage_9, "textLabel1t" );
241
        WStackPage9Layout->addWidget( textLabel1t, 0, 0 );
6089 jghali 242
        colDatat1 = new ColorCombo(false, WStackPage_9, "colDatat1");
6080 fschmid 243
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 244
                colDatat1->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 245
        WStackPage9Layout->addMultiCellWidget( colDatat1, 0, 0, 1, 2 );
6080 fschmid 246
        shadet1 = new ShadeButton(WStackPage_9);
247
        shadet1->setValue(100);
6129 fschmid 248
        WStackPage9Layout->addWidget( shadet1, 1, 1 );
249
        CurveT1 = new CurveWidget( NULL );
250
        CurveT1Pop = new QPopupMenu();
251
        CurveT1Pop->insertItem(CurveT1);
252
        CurveT1Button = new QToolButton( WStackPage_9, "CurveT1Button" );
253
        CurveT1Button->setText( "" );
254
        CurveT1Button->setMaximumSize( QSize( 22, 22 ) );
255
        CurveT1Button->setPixmap(loadIcon("curve.png"));
256
        CurveT1Button->setPopup(CurveT1Pop);
257
        CurveT1Button->setPopupDelay(40);
258
        WStackPage9Layout->addWidget( CurveT1Button, 1, 2 );
6080 fschmid 259
        textLabel2t = new QLabel( tr( "Color 2:" ), WStackPage_9, "textLabel2t" );
6129 fschmid 260
        WStackPage9Layout->addWidget( textLabel2t, 2, 0 );
6089 jghali 261
        colDatat2 = new ColorCombo(false, WStackPage_9, "colDatat2");
6080 fschmid 262
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 263
                colDatat2->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 264
        WStackPage9Layout->addMultiCellWidget( colDatat2, 2, 2, 1, 2 );
6080 fschmid 265
        shadet2 = new ShadeButton(WStackPage_9);
266
        shadet2->setValue(100);
6129 fschmid 267
        WStackPage9Layout->addWidget( shadet2, 3, 1 );
268
        CurveT2 = new CurveWidget( NULL );
269
        CurveT2Pop = new QPopupMenu();
270
        CurveT2Pop->insertItem(CurveT2);
271
        CurveT2Button = new QToolButton( WStackPage_9, "CurveT2Button" );
272
        CurveT2Button->setText( "" );
273
        CurveT2Button->setMaximumSize( QSize( 22, 22 ) );
274
        CurveT2Button->setPixmap(loadIcon("curve.png"));
275
        CurveT2Button->setPopup(CurveT2Pop);
276
        CurveT2Button->setPopupDelay(40);
277
        WStackPage9Layout->addWidget( CurveT2Button, 3, 2 );
6080 fschmid 278
        textLabel3t = new QLabel( tr( "Color 3:" ), WStackPage_9, "textLabel3t" );
6129 fschmid 279
        WStackPage9Layout->addWidget( textLabel3t, 4, 0 );
6089 jghali 280
        colDatat3 = new ColorCombo(false, WStackPage_9, "colDatat3");
6080 fschmid 281
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 282
                colDatat3->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 283
        WStackPage9Layout->addMultiCellWidget( colDatat3, 4, 4, 1, 2 );
6080 fschmid 284
        shadet3 = new ShadeButton(WStackPage_9);
285
        shadet3->setValue(100);
6129 fschmid 286
        WStackPage9Layout->addWidget( shadet3, 5, 1 );
287
        CurveT3 = new CurveWidget( NULL );
288
        CurveT3Pop = new QPopupMenu();
289
        CurveT3Pop->insertItem(CurveT3);
290
        CurveT3Button = new QToolButton( WStackPage_9, "CurveT3Button" );
291
        CurveT3Button->setText( "" );
292
        CurveT3Button->setMaximumSize( QSize( 22, 22 ) );
293
        CurveT3Button->setPixmap(loadIcon("curve.png"));
294
        CurveT3Button->setPopup(CurveT3Pop);
295
        CurveT3Button->setPopupDelay(40);
296
        WStackPage9Layout->addWidget( CurveT3Button, 5, 2 );
6080 fschmid 297
        optionStack->addWidget( WStackPage_9, 8 );
298
 
299
        WStackPage_10 = new QWidget( optionStack, "WStackPage_10" );
6129 fschmid 300
        WStackPage10Layout = new QGridLayout( WStackPage_10, 1, 1, 4, 5, "WStackPage10Layout");
6080 fschmid 301
        textLabel1q = new QLabel( tr( "Color 1:" ), WStackPage_10, "textLabel1q" );
302
        WStackPage10Layout->addWidget( textLabel1q, 0, 0 );
6089 jghali 303
        colDataq1 = new ColorCombo(false, WStackPage_10, "colDataq1");
6080 fschmid 304
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 305
                colDataq1->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 306
        WStackPage10Layout->addMultiCellWidget( colDataq1, 0, 0, 1, 2 );
6080 fschmid 307
        shadeq1 = new ShadeButton(WStackPage_10);
308
        shadeq1->setValue(100);
6129 fschmid 309
        WStackPage10Layout->addWidget( shadeq1, 1, 1 );
310
        CurveQ1 = new CurveWidget( NULL );
311
        CurveQ1Pop = new QPopupMenu();
312
        CurveQ1Pop->insertItem(CurveQ1);
313
        CurveQ1Button = new QToolButton( WStackPage_10, "CurveQ1Button" );
314
        CurveQ1Button->setText( "" );
315
        CurveQ1Button->setMaximumSize( QSize( 22, 22 ) );
316
        CurveQ1Button->setPixmap(loadIcon("curve.png"));
317
        CurveQ1Button->setPopup(CurveQ1Pop);
318
        CurveQ1Button->setPopupDelay(40);
319
        WStackPage10Layout->addWidget( CurveQ1Button, 1, 2 );
6080 fschmid 320
        textLabel2q = new QLabel( tr( "Color 2:" ), WStackPage_10, "textLabel2q" );
6129 fschmid 321
        WStackPage10Layout->addWidget( textLabel2q, 2, 0 );
6089 jghali 322
        colDataq2 = new ColorCombo(false, WStackPage_10, "colDataq2");
6080 fschmid 323
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 324
                colDataq2->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 325
        WStackPage10Layout->addMultiCellWidget( colDataq2, 2, 2, 1, 2 );
6080 fschmid 326
        shadeq2 = new ShadeButton(WStackPage_10);
327
        shadeq2->setValue(100);
6129 fschmid 328
        WStackPage10Layout->addWidget( shadeq2, 3, 1 );
329
        CurveQ2 = new CurveWidget( NULL );
330
        CurveQ2Pop = new QPopupMenu();
331
        CurveQ2Pop->insertItem(CurveQ2);
332
        CurveQ2Button = new QToolButton( WStackPage_10, "CurveQ2Button" );
333
        CurveQ2Button->setText( "" );
334
        CurveQ2Button->setMaximumSize( QSize( 22, 22 ) );
335
        CurveQ2Button->setPixmap(loadIcon("curve.png"));
336
        CurveQ2Button->setPopup(CurveQ2Pop);
337
        CurveQ2Button->setPopupDelay(40);
338
        WStackPage10Layout->addWidget( CurveQ2Button, 3, 2 );
6080 fschmid 339
        textLabel3q = new QLabel( tr( "Color 3:" ), WStackPage_10, "textLabel3q" );
6129 fschmid 340
        WStackPage10Layout->addWidget( textLabel3q, 4, 0 );
6089 jghali 341
        colDataq3 = new ColorCombo(false, WStackPage_10, "colDataq3");
6080 fschmid 342
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 343
                colDataq3->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 344
        WStackPage10Layout->addMultiCellWidget( colDataq3, 4, 4, 1, 2 );
6080 fschmid 345
        shadeq3 = new ShadeButton(WStackPage_10);
346
        shadeq3->setValue(100);
6129 fschmid 347
        WStackPage10Layout->addWidget( shadeq3, 5, 1 );
348
        CurveQ3 = new CurveWidget( NULL );
349
        CurveQ3Pop = new QPopupMenu();
350
        CurveQ3Pop->insertItem(CurveQ3);
351
        CurveQ3Button = new QToolButton( WStackPage_10, "CurveQ3Button" );
352
        CurveQ3Button->setText( "" );
353
        CurveQ3Button->setMaximumSize( QSize( 22, 22 ) );
354
        CurveQ3Button->setPixmap(loadIcon("curve.png"));
355
        CurveQ3Button->setPopup(CurveQ1Pop);
356
        CurveQ3Button->setPopupDelay(40);
357
        WStackPage10Layout->addWidget( CurveQ3Button, 5, 2 );
6080 fschmid 358
        textLabel4q = new QLabel( tr( "Color 4:" ), WStackPage_10, "textLabel4q" );
6129 fschmid 359
        WStackPage10Layout->addWidget( textLabel4q, 6, 0 );
6089 jghali 360
        colDataq4 = new ColorCombo(false, WStackPage_10, "colDataq4");
6080 fschmid 361
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
6089 jghali 362
                colDataq4->insertSmallItem(doc->PageColors[it.key()], it.key());
6129 fschmid 363
        WStackPage10Layout->addMultiCellWidget( colDataq4, 6, 6, 1, 2 );
6080 fschmid 364
        shadeq4 = new ShadeButton(WStackPage_10);
365
        shadeq4->setValue(100);
6129 fschmid 366
        WStackPage10Layout->addWidget( shadeq4, 7, 1 );
367
        CurveQ4 = new CurveWidget( NULL );
368
        CurveQ4Pop = new QPopupMenu();
369
        CurveQ4Pop->insertItem(CurveQ4);
370
        CurveQ4Button = new QToolButton( WStackPage_10, "CurveQ4Button" );
371
        CurveQ4Button->setText( "" );
372
        CurveQ4Button->setMaximumSize( QSize( 22, 22 ) );
373
        CurveQ4Button->setPixmap(loadIcon("curve.png"));
374
        CurveQ4Button->setPopup(CurveQ1Pop);
375
        CurveQ4Button->setPopupDelay(40);
376
        WStackPage10Layout->addWidget( CurveQ4Button, 7, 2 );
6080 fschmid 377
        optionStack->addWidget( WStackPage_10, 9 );
6116 fschmid 378
 
379
        WStackPage_11 = new QWidget( optionStack, "WStackPage_11" );
380
        WStackPage11Layout = new QVBoxLayout( WStackPage_11, 5, 5, "WStackPageLayout");
381
        WStackPage11Layout->setAlignment( Qt::AlignTop );
6129 fschmid 382
        Kdisplay = new CurveWidget(WStackPage_11);
6116 fschmid 383
        WStackPage11Layout->addWidget( Kdisplay );
384
        optionStack->addWidget( WStackPage_11, 10 );
385
 
2061 fschmid 386
        layout16->addWidget( optionStack );
387
        EffectsDialogLayout->addLayout( layout16 );
2057 fschmid 388
 
2061 fschmid 389
        layout18 = new QVBoxLayout( 0, 0, 0, "layout18");
2056 fschmid 390
        layout10 = new QGridLayout( 0, 1, 1, 0, 5, "layout10");
391
        layout2 = new QVBoxLayout( 0, 0, 5, "layout2");
392
        textLabel1 = new QLabel( this, "textLabel1" );
2061 fschmid 393
        textLabel1->setText( tr( "Available Effects" ) );
2056 fschmid 394
        layout2->addWidget( textLabel1 );
395
        availableEffects = new QListBox( this, "availableEffects" );
396
        availableEffects->clear();
2095 fschmid 397
        availableEffects->insertItem( tr("Blur"));
2082 fschmid 398
        availableEffects->insertItem( tr("Brightness"));
399
        availableEffects->insertItem( tr("Colorize"));
6080 fschmid 400
        availableEffects->insertItem( tr("Duotone"));
401
        availableEffects->insertItem( tr("Tritone"));
402
        availableEffects->insertItem( tr("Quadtone"));
2082 fschmid 403
        availableEffects->insertItem( tr("Contrast"));
404
        availableEffects->insertItem( tr("Grayscale"));
6116 fschmid 405
        availableEffects->insertItem( tr("Curves"));
2056 fschmid 406
        availableEffects->insertItem( tr("Invert"));
2096 fschmid 407
        availableEffects->insertItem( tr("Posterize"));
2092 fschmid 408
        availableEffects->insertItem( tr("Sharpen"));
2397 cbradney 409
        availableEffects->setMinimumSize(fontMetrics().width( tr( "Available Effects" ))+40, 180);
2056 fschmid 410
        layout2->addWidget( availableEffects );
411
        layout10->addLayout( layout2, 0, 0 );
412
 
413
        layout1 = new QVBoxLayout( 0, 0, 5, "layout1");
414
        QSpacerItem* spacer1 = new QSpacerItem( 21, 61, QSizePolicy::Minimum, QSizePolicy::Expanding );
415
        layout1->addItem( spacer1 );
416
        toEffects = new QPushButton( this, "toEffects" );
417
        toEffects->setText( tr( ">>" ) );
418
        toEffects->setEnabled(false);
419
        layout1->addWidget( toEffects );
420
        fromEffects = new QPushButton( this, "fromEffects" );
421
        fromEffects->setText( tr( "<<" ) );
422
        fromEffects->setEnabled(false);
423
        layout1->addWidget( fromEffects );
424
        QSpacerItem* spacer2 = new QSpacerItem( 31, 81, QSizePolicy::Minimum, QSizePolicy::Expanding );
425
        layout1->addItem( spacer2 );
426
        layout10->addLayout( layout1, 0, 1 );
427
 
428
        layout8 = new QVBoxLayout( 0, 0, 5, "layout8");
429
        textLabel2 = new QLabel( this, "textLabel2" );
430
        textLabel2->setText( tr( "Effects in use" ) );
431
        layout8->addWidget( textLabel2 );
432
        usedEffects = new QListBox( this, "usedEffects" );
2397 cbradney 433
        usedEffects->setMinimumSize(fontMetrics().width( tr( "Available Effects" ))+40, 180);
2056 fschmid 434
        usedEffects->clear();
2057 fschmid 435
        effectValMap.clear();
2056 fschmid 436
        for (uint a = 0; a < effectsList.count(); ++a)
437
        {
2082 fschmid 438
                if ((*effectsList.at(a)).effectCode == ScImage::EF_INVERT)
2057 fschmid 439
                {
2056 fschmid 440
                        usedEffects->insertItem( tr("Invert"));
2057 fschmid 441
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), "");
442
                }
2082 fschmid 443
                if ((*effectsList.at(a)).effectCode == ScImage::EF_GRAYSCALE)
2057 fschmid 444
                {
2056 fschmid 445
                        usedEffects->insertItem( tr("Grayscale"));
2057 fschmid 446
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), "");
447
                }
2082 fschmid 448
                if ((*effectsList.at(a)).effectCode == ScImage::EF_COLORIZE)
2057 fschmid 449
                {
450
                        usedEffects->insertItem( tr("Colorize"));
451
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
452
                }
2082 fschmid 453
                if ((*effectsList.at(a)).effectCode == ScImage::EF_BRIGHTNESS)
454
                {
455
                        usedEffects->insertItem( tr("Brightness"));
456
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
457
                }
458
                if ((*effectsList.at(a)).effectCode == ScImage::EF_CONTRAST)
459
                {
460
                        usedEffects->insertItem( tr("Contrast"));
461
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
462
                }
2092 fschmid 463
                if ((*effectsList.at(a)).effectCode == ScImage::EF_SHARPEN)
464
                {
465
                        usedEffects->insertItem( tr("Sharpen"));
466
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
467
                }
2095 fschmid 468
                if ((*effectsList.at(a)).effectCode == ScImage::EF_BLUR)
469
                {
470
                        usedEffects->insertItem( tr("Blur"));
471
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
472
                }
2096 fschmid 473
                if ((*effectsList.at(a)).effectCode == ScImage::EF_SOLARIZE)
474
                {
475
                        usedEffects->insertItem( tr("Posterize"));
476
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
477
                }
6080 fschmid 478
                if ((*effectsList.at(a)).effectCode == ScImage::EF_DUOTONE)
479
                {
480
                        usedEffects->insertItem( tr("Duotone"));
481
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
482
                }
483
                if ((*effectsList.at(a)).effectCode == ScImage::EF_TRITONE)
484
                {
485
                        usedEffects->insertItem( tr("Tritone"));
486
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
487
                }
488
                if ((*effectsList.at(a)).effectCode == ScImage::EF_QUADTONE)
489
                {
490
                        usedEffects->insertItem( tr("Quadtone"));
491
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
492
                }
6116 fschmid 493
                if ((*effectsList.at(a)).effectCode == ScImage::EF_GRADUATE)
494
                {
495
                        usedEffects->insertItem( tr("Curves"));
496
                        effectValMap.insert(usedEffects->item(usedEffects->count()-1), (*effectsList.at(a)).effectParameters);
497
                }
2056 fschmid 498
        }
499
        layout8->addWidget( usedEffects );
500
        layout7 = new QHBoxLayout( 0, 0, 5, "layout7");
2061 fschmid 501
        QSpacerItem* spacer4 = new QSpacerItem( 10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum );
502
        layout7->addItem( spacer4 );
2056 fschmid 503
        effectUp = new QPushButton( this, "effectUp" );
504
        effectUp->setText( "" );
505
        effectUp->setPixmap(loadIcon("Raiselayer.png"));
506
        effectUp->setEnabled(false);
507
        layout7->addWidget( effectUp );
508
        effectDown = new QPushButton( this, "effectDown" );
509
        effectDown->setText( "" );
510
        effectDown->setPixmap(loadIcon("Lowerlayer.png"));
511
        effectDown->setEnabled(false);
512
        layout7->addWidget( effectDown );
2061 fschmid 513
        QSpacerItem* spacer5 = new QSpacerItem( 10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum );
514
        layout7->addItem( spacer5 );
2056 fschmid 515
        layout8->addLayout( layout7 );
516
        layout10->addLayout( layout8, 0, 2 );
2061 fschmid 517
        layout18->addLayout( layout10 );
2056 fschmid 518
 
519
        layout9 = new QHBoxLayout( 0, 0, 5, "layout9");
520
        QSpacerItem* spacer3 = new QSpacerItem( 111, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
521
        layout9->addItem( spacer3 );
522
 
523
        okButton = new QPushButton( this, "okButton" );
524
        okButton->setText( tr( "OK" ) );
525
        layout9->addWidget( okButton );
526
 
527
        cancelButton = new QPushButton( this, "cancelButton" );
528
        cancelButton->setText( tr( "Cancel" ) );
529
        layout9->addWidget( cancelButton );
2061 fschmid 530
        layout18->addLayout( layout9 );
531
        EffectsDialogLayout->addLayout( layout18 );
532
        optionStack->raiseWidget(0);
533
        createPreview();
534
        resize( minimumSizeHint() );
2056 fschmid 535
        clearWState( WState_Polished );
536
 
537
        // signals and slots connections
2061 fschmid 538
        connect( okButton, SIGNAL( clicked() ), this, SLOT( leaveOK() ) );
2056 fschmid 539
        connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
540
        connect( usedEffects, SIGNAL( clicked(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
3801 cbradney 541
        connect( usedEffects, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( moveFromEffects() ) );
2056 fschmid 542
        connect( availableEffects, SIGNAL( clicked(QListBoxItem*) ), this, SLOT( selectAvailEffect(QListBoxItem*) ) );
3801 cbradney 543
        connect( availableEffects, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( moveToEffects() ) );
2056 fschmid 544
        connect( toEffects, SIGNAL( clicked() ), this, SLOT( moveToEffects() ) );
545
        connect( fromEffects, SIGNAL( clicked() ), this, SLOT( moveFromEffects() ) );
546
        connect( effectUp, SIGNAL( clicked() ), this, SLOT( moveEffectUp() ) );
547
        connect( effectDown, SIGNAL( clicked() ), this, SLOT( moveEffectDown() ) );
2061 fschmid 548
        connect( colData, SIGNAL(activated(int)), this, SLOT( createPreview()));
549
        connect( shade, SIGNAL(clicked()), this, SLOT(createPreview()));
6080 fschmid 550
        connect( colData1, SIGNAL(activated(int)), this, SLOT( createPreview()));
551
        connect( shade1, SIGNAL(clicked()), this, SLOT(createPreview()));
552
        connect( colData2, SIGNAL(activated(int)), this, SLOT( createPreview()));
553
        connect( shade2, SIGNAL(clicked()), this, SLOT(createPreview()));
554
        connect( colDatat1, SIGNAL(activated(int)), this, SLOT( createPreview()));
555
        connect( shadet1, SIGNAL(clicked()), this, SLOT(createPreview()));
556
        connect( colDatat2, SIGNAL(activated(int)), this, SLOT( createPreview()));
557
        connect( shadet2, SIGNAL(clicked()), this, SLOT(createPreview()));
558
        connect( colDatat3, SIGNAL(activated(int)), this, SLOT( createPreview()));
559
        connect( shadet3, SIGNAL(clicked()), this, SLOT(createPreview()));
560
        connect( colDataq1, SIGNAL(activated(int)), this, SLOT( createPreview()));
561
        connect( shadeq1, SIGNAL(clicked()), this, SLOT(createPreview()));
562
        connect( colDataq2, SIGNAL(activated(int)), this, SLOT( createPreview()));
563
        connect( shadeq2, SIGNAL(clicked()), this, SLOT(createPreview()));
564
        connect( colDataq3, SIGNAL(activated(int)), this, SLOT( createPreview()));
565
        connect( shadeq3, SIGNAL(clicked()), this, SLOT(createPreview()));
566
        connect( colDataq4, SIGNAL(activated(int)), this, SLOT( createPreview()));
567
        connect( shadeq4, SIGNAL(clicked()), this, SLOT(createPreview()));
2082 fschmid 568
        connect( brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(updateBright(int)));
3947 fschmid 569
        connect( brightnessSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2082 fschmid 570
        connect( contrastSlider, SIGNAL(valueChanged(int)), this, SLOT(updateContrast(int)));
3947 fschmid 571
        connect( contrastSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2092 fschmid 572
        connect( shRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
573
        connect( shValue, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
2095 fschmid 574
        connect( blRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
2096 fschmid 575
        connect( solarizeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateSolarize(int)));
3947 fschmid 576
        connect( solarizeSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
6129 fschmid 577
        connect( Kdisplay->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
578
        connect( CurveD1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
579
        connect( CurveD2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
580
        connect( CurveT1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
581
        connect( CurveT2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
582
        connect( CurveT3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
583
        connect( CurveQ1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
584
        connect( CurveQ2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
585
        connect( CurveQ3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
586
        connect( CurveQ4->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
3947 fschmid 587
        tim.start();
2056 fschmid 588
}
589
 
2061 fschmid 590
void EffectsDialog::leaveOK()
591
{
6011 fschmid 592
        saveValues(true);
2061 fschmid 593
        accept();
594
}
595
 
2096 fschmid 596
void EffectsDialog::updateSolarize(int val)
597
{
598
        QString tmp;
599
        tmp.setNum(val);
600
        textLabel15->setText(tmp);
601
        createPreview();
602
}
603
 
2082 fschmid 604
void EffectsDialog::updateContrast(int val)
605
{
606
        QString tmp;
607
        tmp.setNum(val);
608
        textLabel9->setText(tmp);
609
        createPreview();
610
}
611
 
612
void EffectsDialog::updateBright(int val)
613
{
614
        QString tmp;
615
        tmp.setNum(val);
616
        textLabel7->setText(tmp);
617
        createPreview();
618
}
619
 
2061 fschmid 620
void EffectsDialog::createPreview()
621
{
3947 fschmid 622
        if (tim.elapsed() < 50)
623
                return;
5593 avox 624
        ScImage im(image);
6011 fschmid 625
        saveValues(false);
2074 fschmid 626
        im.applyEffect(effectsList, doc->PageColors, false);
6020 fschmid 627
        QPixmap Bild = QPixmap(pixmapLabel1->width(), pixmapLabel1->height());
628
        int x = (pixmapLabel1->width() - im.qImage().width()) / 2;
629
        int y = (pixmapLabel1->height() - im.qImage().height()) / 2;
630
        QPainter p;
631
        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
632
        p.begin(&Bild);
633
        p.fillRect(0, 0, pixmapLabel1->width(), pixmapLabel1->height(), b);
634
        p.drawImage(x, y, im.qImage());
635
        p.end();
636
        pixmapLabel1->setPixmap( Bild );
3947 fschmid 637
        tim.start();
2061 fschmid 638
}
639
 
6011 fschmid 640
void EffectsDialog::saveValues(bool final)
2056 fschmid 641
{
2061 fschmid 642
        if (currentOptions != 0)
643
        {
644
                if (currentOptions->text() == tr("Colorize"))
645
                {
646
                        QString efval = "";
647
                        efval = colData->currentText();
648
                        QString tmp;
649
                        tmp.setNum(shade->getValue());
6011 fschmid 650
                        efval += "\n"+tmp;
2061 fschmid 651
                        effectValMap[currentOptions] = efval;
652
                }
6080 fschmid 653
                if (currentOptions->text() == tr("Duotone"))
654
                {
655
                        QString efval = "";
656
                        efval = colData1->currentText()+"\n";
657
                        efval += colData2->currentText()+"\n";
658
                        QString tmp;
659
                        tmp.setNum(shade1->getValue());
660
                        efval += tmp;
661
                        tmp.setNum(shade2->getValue());
662
                        efval += " "+tmp;
6129 fschmid 663
                        FPointArray Vals = CurveD1->cDisplay->getCurve();
664
                        tmp.setNum(Vals.size());
665
                        efval += " "+tmp;
666
                        for (uint p = 0; p < Vals.size(); p++)
667
                        {
668
                                FPoint pv = Vals.point(p);
669
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
670
                        }
6193 fschmid 671
                        if (CurveD1->cDisplay->isLinear())
672
                                efval += " 1";
673
                        else
674
                                efval += " 0";
6129 fschmid 675
                        Vals = CurveD2->cDisplay->getCurve();
676
                        tmp.setNum(Vals.size());
677
                        efval += " "+tmp;
678
                        for (uint p = 0; p < Vals.size(); p++)
679
                        {
680
                                FPoint pv = Vals.point(p);
681
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
682
                        }
6193 fschmid 683
                        if (CurveD2->cDisplay->isLinear())
684
                                efval += " 1";
685
                        else
686
                                efval += " 0";
6080 fschmid 687
                        effectValMap[currentOptions] = efval;
688
                }
689
                if (currentOptions->text() == tr("Tritone"))
690
                {
691
                        QString efval = "";
692
                        efval = colDatat1->currentText()+"\n";
693
                        efval += colDatat2->currentText()+"\n";
694
                        efval += colDatat3->currentText()+"\n";
695
                        QString tmp;
696
                        tmp.setNum(shadet1->getValue());
697
                        efval += tmp;
698
                        tmp.setNum(shadet2->getValue());
699
                        efval += " "+tmp;
700
                        tmp.setNum(shadet3->getValue());
701
                        efval += " "+tmp;
6129 fschmid 702
                        FPointArray Vals = CurveT1->cDisplay->getCurve();
703
                        tmp.setNum(Vals.size());
704
                        efval += " "+tmp;
705
                        for (uint p = 0; p < Vals.size(); p++)
706
                        {
707
                                FPoint pv = Vals.point(p);
708
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
709
                        }
6193 fschmid 710
                        if (CurveT1->cDisplay->isLinear())
711
                                efval += " 1";
712
                        else
713
                                efval += " 0";
6129 fschmid 714
                        Vals = CurveT2->cDisplay->getCurve();
715
                        tmp.setNum(Vals.size());
716
                        efval += " "+tmp;
717
                        for (uint p = 0; p < Vals.size(); p++)
718
                        {
719
                                FPoint pv = Vals.point(p);
720
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
721
                        }
6193 fschmid 722
                        if (CurveT2->cDisplay->isLinear())
723
                                efval += " 1";
724
                        else
725
                                efval += " 0";
6129 fschmid 726
                        Vals = CurveT3->cDisplay->getCurve();
727
                        tmp.setNum(Vals.size());
728
                        efval += " "+tmp;
729
                        for (uint p = 0; p < Vals.size(); p++)
730
                        {
731
                                FPoint pv = Vals.point(p);
732
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
733
                        }
6193 fschmid 734
                        if (CurveT3->cDisplay->isLinear())
735
                                efval += " 1";
736
                        else
737
                                efval += " 0";
6080 fschmid 738
                        effectValMap[currentOptions] = efval;
739
                }
740
                if (currentOptions->text() == tr("Quadtone"))
741
                {
742
                        QString efval = "";
743
                        efval = colDataq1->currentText()+"\n";
744
                        efval += colDataq2->currentText()+"\n";
745
                        efval += colDataq3->currentText()+"\n";
746
                        efval += colDataq4->currentText()+"\n";
747
                        QString tmp;
748
                        tmp.setNum(shadeq1->getValue());
749
                        efval += tmp;
750
                        tmp.setNum(shadeq2->getValue());
751
                        efval += " "+tmp;
752
                        tmp.setNum(shadeq3->getValue());
753
                        efval += " "+tmp;
754
                        tmp.setNum(shadeq4->getValue());
755
                        efval += " "+tmp;
6129 fschmid 756
                        FPointArray Vals = CurveQ1->cDisplay->getCurve();
757
                        tmp.setNum(Vals.size());
758
                        efval += " "+tmp;
759
                        for (uint p = 0; p < Vals.size(); p++)
760
                        {
761
                                FPoint pv = Vals.point(p);
762
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
763
                        }
6193 fschmid 764
                        if (CurveQ1->cDisplay->isLinear())
765
                                efval += " 1";
766
                        else
767
                                efval += " 0";
6129 fschmid 768
                        Vals = CurveQ2->cDisplay->getCurve();
769
                        tmp.setNum(Vals.size());
770
                        efval += " "+tmp;
771
                        for (uint p = 0; p < Vals.size(); p++)
772
                        {
773
                                FPoint pv = Vals.point(p);
774
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
775
                        }
6193 fschmid 776
                        if (CurveQ2->cDisplay->isLinear())
777
                                efval += " 1";
778
                        else
779
                                efval += " 0";
6129 fschmid 780
                        Vals = CurveQ3->cDisplay->getCurve();
781
                        tmp.setNum(Vals.size());
782
                        efval += " "+tmp;
783
                        for (uint p = 0; p < Vals.size(); p++)
784
                        {
785
                                FPoint pv = Vals.point(p);
786
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
787
                        }
6193 fschmid 788
                        if (CurveQ3->cDisplay->isLinear())
789
                                efval += " 1";
790
                        else
791
                                efval += " 0";
6129 fschmid 792
                        Vals = CurveQ4->cDisplay->getCurve();
793
                        tmp.setNum(Vals.size());
794
                        efval += " "+tmp;
795
                        for (uint p = 0; p < Vals.size(); p++)
796
                        {
797
                                FPoint pv = Vals.point(p);
798
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
799
                        }
6193 fschmid 800
                        if (CurveQ4->cDisplay->isLinear())
801
                                efval += " 1";
802
                        else
803
                                efval += " 0";
6080 fschmid 804
                        effectValMap[currentOptions] = efval;
805
                }
2082 fschmid 806
                if (currentOptions->text() == tr("Brightness"))
807
                {
808
                        QString tmp;
809
                        tmp.setNum(brightnessSlider->value());
810
                        effectValMap[currentOptions] = tmp;
811
                }
812
                if (currentOptions->text() == tr("Contrast"))
813
                {
814
                        QString tmp;
815
                        tmp.setNum(contrastSlider->value());
816
                        effectValMap[currentOptions] = tmp;
817
                }
2092 fschmid 818
                if (currentOptions->text() == tr("Sharpen"))
819
                {
820
                        QString efval = "";
821
                        QString tmp;
822
                        tmp.setNum(shRadius->value());
823
                        efval += tmp;
824
                        tmp.setNum(shValue->value());
825
                        efval += " "+tmp;
826
                        effectValMap[currentOptions] = efval;
827
                }
2095 fschmid 828
                if (currentOptions->text() == tr("Blur"))
829
                {
830
                        QString efval = "";
831
                        QString tmp;
6011 fschmid 832
                        if (final)
833
                                tmp.setNum(blRadius->value());
834
                        else
835
                                tmp.setNum(blRadius->value()/imageScale);
2095 fschmid 836
                        efval += tmp;
6011 fschmid 837
                        tmp.setNum(1.0);
2095 fschmid 838
                        efval += " "+tmp;
839
                        effectValMap[currentOptions] = efval;
840
                }
2096 fschmid 841
                if (currentOptions->text() == tr("Posterize"))
842
                {
843
                        QString tmp;
844
                        tmp.setNum(solarizeSlider->value());
845
                        effectValMap[currentOptions] = tmp;
846
                }
6116 fschmid 847
                if (currentOptions->text() == tr("Curves"))
848
                {
849
                        QString efval = "";
6129 fschmid 850
                        FPointArray Vals = Kdisplay->cDisplay->getCurve();
6116 fschmid 851
                        QString tmp;
852
                        tmp.setNum(Vals.size());
853
                        efval += tmp;
854
                        for (uint p = 0; p < Vals.size(); p++)
855
                        {
856
                                FPoint pv = Vals.point(p);
857
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
858
                        }
6193 fschmid 859
                        if (Kdisplay->cDisplay->isLinear())
860
                                efval += " 1";
861
                        else
862
                                efval += " 0";
6116 fschmid 863
                        effectValMap[currentOptions] = efval;
864
                }
2061 fschmid 865
        }
2056 fschmid 866
        effectsList.clear();
2074 fschmid 867
        struct ScImage::imageEffect ef;
2056 fschmid 868
        for (uint e = 0; e < usedEffects->count(); ++e)
869
        {
870
                if (usedEffects->item(e)->text() == tr("Invert"))
871
                {
2082 fschmid 872
                        ef.effectCode = ScImage::EF_INVERT;
2056 fschmid 873
                        ef.effectParameters = "";
874
                }
875
                if (usedEffects->item(e)->text() == tr("Grayscale"))
876
                {
2082 fschmid 877
                        ef.effectCode = ScImage::EF_GRAYSCALE;
2056 fschmid 878
                        ef.effectParameters = "";
879
                }
2057 fschmid 880
                if (usedEffects->item(e)->text() == tr("Colorize"))
881
                {
2082 fschmid 882
                        ef.effectCode = ScImage::EF_COLORIZE;
2057 fschmid 883
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
884
                }
2082 fschmid 885
                if (usedEffects->item(e)->text() == tr("Brightness"))
886
                {
887
                        ef.effectCode = ScImage::EF_BRIGHTNESS;
888
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
889
                }
890
                if (usedEffects->item(e)->text() == tr("Contrast"))
891
                {
892
                        ef.effectCode = ScImage::EF_CONTRAST;
893
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
894
                }
2092 fschmid 895
                if (usedEffects->item(e)->text() == tr("Sharpen"))
896
                {
897
                        ef.effectCode = ScImage::EF_SHARPEN;
898
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
899
                }
2095 fschmid 900
                if (usedEffects->item(e)->text() == tr("Blur"))
901
                {
902
                        ef.effectCode = ScImage::EF_BLUR;
903
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
904
                }
2096 fschmid 905
                if (usedEffects->item(e)->text() == tr("Posterize"))
906
                {
907
                        ef.effectCode = ScImage::EF_SOLARIZE;
908
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
909
                }
6080 fschmid 910
                if (usedEffects->item(e)->text() == tr("Duotone"))
911
                {
912
                        ef.effectCode = ScImage::EF_DUOTONE;
913
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
914
                }
915
                if (usedEffects->item(e)->text() == tr("Tritone"))
916
                {
917
                        ef.effectCode = ScImage::EF_TRITONE;
918
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
919
                }
920
                if (usedEffects->item(e)->text() == tr("Quadtone"))
921
                {
922
                        ef.effectCode = ScImage::EF_QUADTONE;
923
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
924
                }
6116 fschmid 925
                if (usedEffects->item(e)->text() == tr("Curves"))
926
                {
927
                        ef.effectCode = ScImage::EF_GRADUATE;
928
                        ef.effectParameters = effectValMap[usedEffects->item(e)];
929
                }
2082 fschmid 930
                effectsList.append(ef);
2056 fschmid 931
        }
932
}
933
 
934
void EffectsDialog::moveToEffects()
935
{
936
        usedEffects->insertItem(availableEffects->currentText());
2057 fschmid 937
        if (availableEffects->currentText() == tr("Invert"))
938
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "");
939
        if (availableEffects->currentText() == tr("Grayscale"))
940
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "");
2082 fschmid 941
        if (availableEffects->currentText() == tr("Brightness"))
942
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "0");
943
        if (availableEffects->currentText() == tr("Contrast"))
944
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "0");
2092 fschmid 945
        if (availableEffects->currentText() == tr("Sharpen"))
946
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "0 1");
2095 fschmid 947
        if (availableEffects->currentText() == tr("Blur"))
948
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "0 1");
2096 fschmid 949
        if (availableEffects->currentText() == tr("Posterize"))
950
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "255");
2057 fschmid 951
        if (availableEffects->currentText() == tr("Colorize"))
952
        {
2061 fschmid 953
                ColorList::Iterator it;
954
                it = doc->PageColors.begin();
6011 fschmid 955
                QString efval = it.key()+"\n100";
2057 fschmid 956
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), efval);
957
        }
6080 fschmid 958
        if (availableEffects->currentText() == tr("Duotone"))
959
        {
960
                ColorList::Iterator it;
961
                it = doc->PageColors.begin();
6193 fschmid 962
                QString efval = it.key()+"\n"+it.key()+"\n100 100 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0";
6080 fschmid 963
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), efval);
964
        }
965
        if (availableEffects->currentText() == tr("Tritone"))
966
        {
967
                ColorList::Iterator it;
968
                it = doc->PageColors.begin();
6193 fschmid 969
                QString efval = it.key()+"\n"+it.key()+"\n"+it.key()+"\n100 100 100 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0";
6080 fschmid 970
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), efval);
971
        }
972
        if (availableEffects->currentText() == tr("Quadtone"))
973
        {
974
                ColorList::Iterator it;
975
                it = doc->PageColors.begin();
6193 fschmid 976
                QString efval = it.key()+"\n"+it.key()+"\n"+it.key()+"\n"+it.key()+"\n100 100 100 100 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0 2 0.0 0.0 1.0 1.0 0";
6080 fschmid 977
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), efval);
978
        }
6116 fschmid 979
        if (availableEffects->currentText() == tr("Curves"))
6193 fschmid 980
                effectValMap.insert(usedEffects->item(usedEffects->count()-1), "2 0.0 0.0 1.0 1.0 0");
2075 fschmid 981
        disconnect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2092 fschmid 982
        usedEffects->setCurrentItem(usedEffects->item(usedEffects->count()-1));
2075 fschmid 983
        selectEffect(usedEffects->item(usedEffects->count()-1));
984
        connect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2061 fschmid 985
        createPreview();
2056 fschmid 986
}
987
 
988
void EffectsDialog::moveFromEffects()
989
{
2082 fschmid 990
        disconnect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2057 fschmid 991
        effectValMap.remove(usedEffects->item(usedEffects->currentItem()));
2056 fschmid 992
        usedEffects->removeItem(usedEffects->currentItem());
2061 fschmid 993
        currentOptions = 0;
2056 fschmid 994
        if (usedEffects->count() == 0)
2061 fschmid 995
                fromEffects->setEnabled(false);
996
        if (usedEffects->count() < 2)
2056 fschmid 997
        {
998
                effectUp->setEnabled(false);
999
                effectDown->setEnabled(false);
1000
        }
2082 fschmid 1001
        usedEffects->setSelected(usedEffects->item(usedEffects->currentItem()), true);
2061 fschmid 1002
        selectEffect(usedEffects->item(usedEffects->currentItem()));
1003
        createPreview();
2082 fschmid 1004
        connect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2056 fschmid 1005
}
1006
 
1007
void EffectsDialog::moveEffectUp()
1008
{
2061 fschmid 1009
        int curr = usedEffects->currentItem();
1010
        if (curr == 0)
1011
                return;
1012
        disconnect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
1013
        usedEffects->clearSelection();
1014
        QListBoxItem *it = usedEffects->item(curr);
1015
        usedEffects->takeItem(it);
1016
        usedEffects->insertItem(it, curr-1);
1017
        usedEffects->setCurrentItem(it);
1018
        selectEffect(usedEffects->item(usedEffects->currentItem()));
1019
        createPreview();
1020
        connect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2056 fschmid 1021
}
1022
 
1023
void EffectsDialog::moveEffectDown()
1024
{
2061 fschmid 1025
        int curr = usedEffects->currentItem();
1026
        if (curr == static_cast<int>(usedEffects->count())-1)
1027
                return;
1028
        disconnect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
1029
        usedEffects->clearSelection();
1030
        QListBoxItem *it = usedEffects->item(curr);
1031
        usedEffects->takeItem(it);
1032
        usedEffects->insertItem(it, curr+1);
1033
        usedEffects->setCurrentItem(it);
1034
        selectEffect(usedEffects->item(usedEffects->currentItem()));
1035
        createPreview();
1036
        connect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2056 fschmid 1037
}
1038
 
2061 fschmid 1039
void EffectsDialog::selectEffect(QListBoxItem* c)
2056 fschmid 1040
{
2061 fschmid 1041
        toEffects->setEnabled(false);
1042
        if (currentOptions != 0)
2057 fschmid 1043
        {
2061 fschmid 1044
                if (currentOptions->text() == tr("Colorize"))
2057 fschmid 1045
                {
2061 fschmid 1046
                        QString efval = "";
1047
                        efval = colData->currentText();
2057 fschmid 1048
                        QString tmp;
2061 fschmid 1049
                        tmp.setNum(shade->getValue());
6011 fschmid 1050
                        efval += "\n"+tmp;
2061 fschmid 1051
                        effectValMap[currentOptions] = efval;
2057 fschmid 1052
                }
2082 fschmid 1053
                if (currentOptions->text() == tr("Brightness"))
1054
                {
1055
                        QString tmp;
1056
                        tmp.setNum(brightnessSlider->value());
1057
                        effectValMap[currentOptions] = tmp;
1058
                }
1059
                if (currentOptions->text() == tr("Contrast"))
1060
                {
1061
                        QString tmp;
1062
                        tmp.setNum(contrastSlider->value());
1063
                        effectValMap[currentOptions] = tmp;
1064
                }
2092 fschmid 1065
                if (currentOptions->text() == tr("Sharpen"))
1066
                {
1067
                        QString efval = "";
1068
                        QString tmp;
1069
                        tmp.setNum(shRadius->value());
1070
                        efval += tmp;
1071
                        tmp.setNum(shValue->value());
1072
                        efval += " "+tmp;
1073
                        effectValMap[currentOptions] = efval;
1074
                }
2095 fschmid 1075
                if (currentOptions->text() == tr("Blur"))
1076
                {
1077
                        QString efval = "";
1078
                        QString tmp;
1079
                        tmp.setNum(blRadius->value());
1080
                        efval += tmp;
6011 fschmid 1081
                        tmp.setNum(1.0);
2095 fschmid 1082
                        efval += " "+tmp;
1083
                        effectValMap[currentOptions] = efval;
1084
                }
2096 fschmid 1085
                if (currentOptions->text() == tr("Posterize"))
1086
                {
1087
                        QString tmp;
1088
                        tmp.setNum(solarizeSlider->value());
1089
                        effectValMap[currentOptions] = tmp;
1090
                }
6080 fschmid 1091
                if (currentOptions->text() == tr("Duotone"))
1092
                {
1093
                        QString efval = "";
1094
                        efval = colData1->currentText()+"\n";
1095
                        efval += colData2->currentText()+"\n";
1096
                        QString tmp;
1097
                        tmp.setNum(shade1->getValue());
1098
                        efval += tmp;
1099
                        tmp.setNum(shade2->getValue());
1100
                        efval += " "+tmp;
6129 fschmid 1101
                        FPointArray Vals = CurveD1->cDisplay->getCurve();
1102
                        tmp.setNum(Vals.size());
1103
                        efval += " "+tmp;
1104
                        for (uint p = 0; p < Vals.size(); p++)
1105
                        {
1106
                                FPoint pv = Vals.point(p);
1107
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1108
                        }
6193 fschmid 1109
                        if (CurveD1->cDisplay->isLinear())
1110
                                efval += " 1";
1111
                        else
1112
                                efval += " 0";
6129 fschmid 1113
                        Vals = CurveD2->cDisplay->getCurve();
1114
                        tmp.setNum(Vals.size());
1115
                        efval += " "+tmp;
1116
                        for (uint p = 0; p < Vals.size(); p++)
1117
                        {
1118
                                FPoint pv = Vals.point(p);
1119
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1120
                        }
6193 fschmid 1121
                        if (CurveD2->cDisplay->isLinear())
1122
                                efval += " 1";
1123
                        else
1124
                                efval += " 0";
6080 fschmid 1125
                        effectValMap[currentOptions] = efval;
1126
                }
1127
                if (currentOptions->text() == tr("Tritone"))
1128
                {
1129
                        QString efval = "";
1130
                        efval = colDatat1->currentText()+"\n";
1131
                        efval += colDatat2->currentText()+"\n";
1132
                        efval += colDatat3->currentText()+"\n";
1133
                        QString tmp;
1134
                        tmp.setNum(shadet1->getValue());
1135
                        efval += tmp;
1136
                        tmp.setNum(shadet2->getValue());
1137
                        efval += " "+tmp;
1138
                        tmp.setNum(shadet3->getValue());
1139
                        efval += " "+tmp;
6129 fschmid 1140
                        FPointArray Vals = CurveT1->cDisplay->getCurve();
1141
                        tmp.setNum(Vals.size());
1142
                        efval += " "+tmp;
1143
                        for (uint p = 0; p < Vals.size(); p++)
1144
                        {
1145
                                FPoint pv = Vals.point(p);
1146
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1147
                        }
6193 fschmid 1148
                        if (CurveT1->cDisplay->isLinear())
1149
                                efval += " 1";
1150
                        else
1151
                                efval += " 0";
6129 fschmid 1152
                        Vals = CurveT2->cDisplay->getCurve();
1153
                        tmp.setNum(Vals.size());
1154
                        efval += " "+tmp;
1155
                        for (uint p = 0; p < Vals.size(); p++)
1156
                        {
1157
                                FPoint pv = Vals.point(p);
1158
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1159
                        }
6193 fschmid 1160
                        if (CurveT2->cDisplay->isLinear())
1161
                                efval += " 1";
1162
                        else
1163
                                efval += " 0";
6129 fschmid 1164
                        Vals = CurveT3->cDisplay->getCurve();
1165
                        tmp.setNum(Vals.size());
1166
                        efval += " "+tmp;
1167
                        for (uint p = 0; p < Vals.size(); p++)
1168
                        {
1169
                                FPoint pv = Vals.point(p);
1170
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1171
                        }
6193 fschmid 1172
                        if (CurveT3->cDisplay->isLinear())
1173
                                efval += " 1";
1174
                        else
1175
                                efval += " 0";
6080 fschmid 1176
                        effectValMap[currentOptions] = efval;
1177
                }
1178
                if (currentOptions->text() == tr("Quadtone"))
1179
                {
1180
                        QString efval = "";
1181
                        efval = colDataq1->currentText()+"\n";
1182
                        efval += colDataq2->currentText()+"\n";
1183
                        efval += colDataq3->currentText()+"\n";
1184
                        efval += colDataq4->currentText()+"\n";
1185
                        QString tmp;
1186
                        tmp.setNum(shadeq1->getValue());
1187
                        efval += tmp;
1188
                        tmp.setNum(shadeq2->getValue());
1189
                        efval += " "+tmp;
1190
                        tmp.setNum(shadeq3->getValue());
1191
                        efval += " "+tmp;
1192
                        tmp.setNum(shadeq4->getValue());
1193
                        efval += " "+tmp;
6129 fschmid 1194
                        FPointArray Vals = CurveQ1->cDisplay->getCurve();
1195
                        tmp.setNum(Vals.size());
1196
                        efval += " "+tmp;
1197
                        for (uint p = 0; p < Vals.size(); p++)
1198
                        {
1199
                                FPoint pv = Vals.point(p);
1200
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1201
                        }
6193 fschmid 1202
                        if (CurveQ1->cDisplay->isLinear())
1203
                                efval += " 1";
1204
                        else
1205
                                efval += " 0";
6129 fschmid 1206
                        Vals = CurveQ2->cDisplay->getCurve();
1207
                        tmp.setNum(Vals.size());
1208
                        efval += " "+tmp;
1209
                        for (uint p = 0; p < Vals.size(); p++)
1210
                        {
1211
                                FPoint pv = Vals.point(p);
1212
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1213
                        }
6193 fschmid 1214
                        if (CurveQ2->cDisplay->isLinear())
1215
                                efval += " 1";
1216
                        else
1217
                                efval += " 0";
6129 fschmid 1218
                        Vals = CurveQ3->cDisplay->getCurve();
1219
                        tmp.setNum(Vals.size());
1220
                        efval += " "+tmp;
1221
                        for (uint p = 0; p < Vals.size(); p++)
1222
                        {
1223
                                FPoint pv = Vals.point(p);
1224
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1225
                        }
6193 fschmid 1226
                        if (CurveQ3->cDisplay->isLinear())
1227
                                efval += " 1";
1228
                        else
1229
                                efval += " 0";
6129 fschmid 1230
                        Vals = CurveQ4->cDisplay->getCurve();
1231
                        tmp.setNum(Vals.size());
1232
                        efval += " "+tmp;
1233
                        for (uint p = 0; p < Vals.size(); p++)
1234
                        {
1235
                                FPoint pv = Vals.point(p);
1236
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1237
                        }
6193 fschmid 1238
                        if (CurveQ4->cDisplay->isLinear())
1239
                                efval += " 1";
1240
                        else
1241
                                efval += " 0";
6080 fschmid 1242
                        effectValMap[currentOptions] = efval;
1243
                }
6116 fschmid 1244
                if (currentOptions->text() == tr("Curves"))
1245
                {
1246
                        QString efval = "";
6129 fschmid 1247
                        FPointArray Vals = Kdisplay->cDisplay->getCurve();
6116 fschmid 1248
                        QString tmp;
1249
                        tmp.setNum(Vals.size());
1250
                        efval += tmp;
1251
                        for (uint p = 0; p < Vals.size(); p++)
1252
                        {
1253
                                FPoint pv = Vals.point(p);
1254
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1255
                        }
6193 fschmid 1256
                        if (Kdisplay->cDisplay->isLinear())
1257
                                efval += " 1";
1258
                        else
1259
                                efval += " 0";
6116 fschmid 1260
                        effectValMap[currentOptions] = efval;
1261
                }
2057 fschmid 1262
        }
2056 fschmid 1263
        if (c)
1264
        {
1265
                fromEffects->setEnabled(true);
2061 fschmid 1266
                if (usedEffects->count() > 1)
1267
                {
1268
                        effectUp->setEnabled(true);
1269
                        effectDown->setEnabled(true);
1270
                        if (usedEffects->currentItem() == 0)
1271
                                effectUp->setEnabled(false);
1272
                        if (usedEffects->currentItem() == static_cast<int>(usedEffects->count())-1)
1273
                                effectDown->setEnabled(false);
1274
                }
2056 fschmid 1275
                if (c->text() == tr("Grayscale"))
2061 fschmid 1276
                        optionStack->raiseWidget(0);
2056 fschmid 1277
                else if (c->text() == tr("Invert"))
2061 fschmid 1278
                        optionStack->raiseWidget(0);
2057 fschmid 1279
                else if (c->text() == tr("Colorize"))
2061 fschmid 1280
                {
1281
                        disconnect( colData, SIGNAL(activated(int)), this, SLOT( createPreview()));
1282
                        disconnect( shade, SIGNAL(clicked()), this, SLOT(createPreview()));
1283
                        QString tmpstr = effectValMap[c];
1284
                        QString col;
1285
                        int shading;
1286
                        QTextStream fp(&tmpstr, IO_ReadOnly);
6011 fschmid 1287
                        col = fp.readLine();
2061 fschmid 1288
                        fp >> shading;
1289
                        colData->setCurrentText(col);
1290
                        shade->setValue(shading);
1291
                        optionStack->raiseWidget(1);
1292
                        connect( colData, SIGNAL(activated(int)), this, SLOT( createPreview()));
1293
                        connect( shade, SIGNAL(clicked()), this, SLOT(createPreview()));
1294
                }
6080 fschmid 1295
                else if (c->text() == tr("Duotone"))
1296
                {
1297
                        disconnect( colData1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1298
                        disconnect( shade1, SIGNAL(clicked()), this, SLOT(createPreview()));
1299
                        disconnect( colData2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1300
                        disconnect( shade2, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1301
                        disconnect( CurveD1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1302
                        disconnect( CurveD2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1303
                        QString tmpstr = effectValMap[c];
1304
                        QString col1, col2;
1305
                        int shading1, shading2;
1306
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1307
                        col1 = fp.readLine();
1308
                        col2 = fp.readLine();
1309
                        fp >> shading1;
1310
                        fp >> shading2;
1311
                        colData1->setCurrentText(col1);
1312
                        shade1->setValue(shading1);
1313
                        colData2->setCurrentText(col2);
1314
                        shade2->setValue(shading2);
6129 fschmid 1315
                        int numVals;
1316
                        double xval, yval;
1317
                        FPointArray curve;
1318
                        curve.resize(0);
1319
                        fp >> numVals;
1320
                        for (int nv = 0; nv < numVals; nv++)
1321
                        {
1322
                                fp >> xval;
1323
                                fp >> yval;
1324
                                curve.addPoint(xval, yval);
1325
                        }
1326
                        CurveD1->cDisplay->setCurve(curve);
6193 fschmid 1327
                        int lin;
1328
                        fp >> lin;
1329
                        CurveD1->setLinear(lin);
6129 fschmid 1330
                        curve.resize(0);
1331
                        fp >> numVals;
1332
                        for (int nv = 0; nv < numVals; nv++)
1333
                        {
1334
                                fp >> xval;
1335
                                fp >> yval;
1336
                                curve.addPoint(xval, yval);
1337
                        }
1338
                        CurveD2->cDisplay->setCurve(curve);
6193 fschmid 1339
                        fp >> lin;
1340
                        CurveD2->setLinear(lin);
6080 fschmid 1341
                        optionStack->raiseWidget(7);
1342
                        connect( colData1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1343
                        connect( shade1, SIGNAL(clicked()), this, SLOT(createPreview()));
1344
                        connect( colData2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1345
                        connect( shade2, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1346
                        connect( CurveD1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1347
                        connect( CurveD2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1348
                }
1349
                else if (c->text() == tr("Tritone"))
1350
                {
1351
                        disconnect( colDatat1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1352
                        disconnect( shadet1, SIGNAL(clicked()), this, SLOT(createPreview()));
1353
                        disconnect( colDatat2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1354
                        disconnect( shadet2, SIGNAL(clicked()), this, SLOT(createPreview()));
1355
                        disconnect( colDatat3, SIGNAL(activated(int)), this, SLOT( createPreview()));
1356
                        disconnect( shadet3, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1357
                        disconnect( CurveT1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1358
                        disconnect( CurveT2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1359
                        disconnect( CurveT3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1360
                        QString tmpstr = effectValMap[c];
1361
                        QString col1, col2, col3;
1362
                        int shading1, shading2, shading3;
1363
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1364
                        col1 = fp.readLine();
1365
                        col2 = fp.readLine();
1366
                        col3 = fp.readLine();
1367
                        fp >> shading1;
1368
                        fp >> shading2;
1369
                        fp >> shading3;
1370
                        colDatat1->setCurrentText(col1);
1371
                        shadet1->setValue(shading1);
1372
                        colDatat2->setCurrentText(col2);
1373
                        shadet2->setValue(shading2);
1374
                        colDatat3->setCurrentText(col3);
1375
                        shadet3->setValue(shading3);
6129 fschmid 1376
                        int numVals;
1377
                        double xval, yval;
1378
                        FPointArray curve;
1379
                        curve.resize(0);
1380
                        fp >> numVals;
1381
                        for (int nv = 0; nv < numVals; nv++)
1382
                        {
1383
                                fp >> xval;
1384
                                fp >> yval;
1385
                                curve.addPoint(xval, yval);
1386
                        }
1387
                        CurveT1->cDisplay->setCurve(curve);
6193 fschmid 1388
                        int lin;
1389
                        fp >> lin;
1390
                        CurveT1->setLinear(lin);
6129 fschmid 1391
                        curve.resize(0);
1392
                        fp >> numVals;
1393
                        for (int nv = 0; nv < numVals; nv++)
1394
                        {
1395
                                fp >> xval;
1396
                                fp >> yval;
1397
                                curve.addPoint(xval, yval);
1398
                        }
1399
                        CurveT2->cDisplay->setCurve(curve);
6193 fschmid 1400
                        fp >> lin;
1401
                        CurveT2->setLinear(lin);
6129 fschmid 1402
                        curve.resize(0);
1403
                        fp >> numVals;
1404
                        for (int nv = 0; nv < numVals; nv++)
1405
                        {
1406
                                fp >> xval;
1407
                                fp >> yval;
1408
                                curve.addPoint(xval, yval);
1409
                        }
1410
                        CurveT3->cDisplay->setCurve(curve);
6193 fschmid 1411
                        fp >> lin;
1412
                        CurveT3->setLinear(lin);
6080 fschmid 1413
                        optionStack->raiseWidget(8);
1414
                        connect( colDatat1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1415
                        connect( shadet1, SIGNAL(clicked()), this, SLOT(createPreview()));
1416
                        connect( colDatat2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1417
                        connect( shadet2, SIGNAL(clicked()), this, SLOT(createPreview()));
1418
                        connect( colDatat3, SIGNAL(activated(int)), this, SLOT( createPreview()));
1419
                        connect( shadet3, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1420
                        connect( CurveT1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1421
                        connect( CurveT2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1422
                        connect( CurveT3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1423
                }
1424
                else if (c->text() == tr("Quadtone"))
1425
                {
1426
                        disconnect( colDataq1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1427
                        disconnect( shadeq1, SIGNAL(clicked()), this, SLOT(createPreview()));
1428
                        disconnect( colDataq2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1429
                        disconnect( shadeq2, SIGNAL(clicked()), this, SLOT(createPreview()));
1430
                        disconnect( colDataq3, SIGNAL(activated(int)), this, SLOT( createPreview()));
1431
                        disconnect( shadeq3, SIGNAL(clicked()), this, SLOT(createPreview()));
1432
                        disconnect( colDataq4, SIGNAL(activated(int)), this, SLOT( createPreview()));
1433
                        disconnect( shadeq4, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1434
                        disconnect( CurveQ1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1435
                        disconnect( CurveQ2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1436
                        disconnect( CurveQ3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1437
                        disconnect( CurveQ4->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1438
                        QString tmpstr = effectValMap[c];
1439
                        QString col1, col2, col3, col4;
1440
                        int shading1, shading2, shading3, shading4;
1441
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1442
                        col1 = fp.readLine();
1443
                        col2 = fp.readLine();
1444
                        col3 = fp.readLine();
1445
                        col4 = fp.readLine();
1446
                        fp >> shading1;
1447
                        fp >> shading2;
1448
                        fp >> shading3;
1449
                        fp >> shading4;
1450
                        colDataq1->setCurrentText(col1);
1451
                        shadeq1->setValue(shading1);
1452
                        colDataq2->setCurrentText(col2);
1453
                        shadeq2->setValue(shading2);
1454
                        colDataq3->setCurrentText(col3);
1455
                        shadeq3->setValue(shading3);
1456
                        colDataq4->setCurrentText(col4);
1457
                        shadeq4->setValue(shading4);
6129 fschmid 1458
                        int numVals;
1459
                        double xval, yval;
1460
                        FPointArray curve;
1461
                        curve.resize(0);
1462
                        fp >> numVals;
1463
                        for (int nv = 0; nv < numVals; nv++)
1464
                        {
1465
                                fp >> xval;
1466
                                fp >> yval;
1467
                                curve.addPoint(xval, yval);
1468
                        }
1469
                        CurveQ1->cDisplay->setCurve(curve);
6193 fschmid 1470
                        int lin;
1471
                        fp >> lin;
1472
                        CurveQ1->setLinear(lin);
6129 fschmid 1473
                        curve.resize(0);
1474
                        fp >> numVals;
1475
                        for (int nv = 0; nv < numVals; nv++)
1476
                        {
1477
                                fp >> xval;
1478
                                fp >> yval;
1479
                                curve.addPoint(xval, yval);
1480
                        }
1481
                        CurveQ2->cDisplay->setCurve(curve);
6193 fschmid 1482
                        fp >> lin;
1483
                        CurveQ2->setLinear(lin);
6129 fschmid 1484
                        curve.resize(0);
1485
                        fp >> numVals;
1486
                        for (int nv = 0; nv < numVals; nv++)
1487
                        {
1488
                                fp >> xval;
1489
                                fp >> yval;
1490
                                curve.addPoint(xval, yval);
1491
                        }
1492
                        CurveQ3->cDisplay->setCurve(curve);
6193 fschmid 1493
                        fp >> lin;
1494
                        CurveQ3->setLinear(lin);
6129 fschmid 1495
                        curve.resize(0);
1496
                        fp >> numVals;
1497
                        for (int nv = 0; nv < numVals; nv++)
1498
                        {
1499
                                fp >> xval;
1500
                                fp >> yval;
1501
                                curve.addPoint(xval, yval);
1502
                        }
1503
                        CurveQ4->cDisplay->setCurve(curve);
6193 fschmid 1504
                        fp >> lin;
1505
                        CurveQ4->setLinear(lin);
6080 fschmid 1506
                        optionStack->raiseWidget(9);
1507
                        connect( colDataq1, SIGNAL(activated(int)), this, SLOT( createPreview()));
1508
                        connect( shadeq1, SIGNAL(clicked()), this, SLOT(createPreview()));
1509
                        connect( colDataq2, SIGNAL(activated(int)), this, SLOT( createPreview()));
1510
                        connect( shadeq2, SIGNAL(clicked()), this, SLOT(createPreview()));
1511
                        connect( colDataq3, SIGNAL(activated(int)), this, SLOT( createPreview()));
1512
                        connect( shadeq3, SIGNAL(clicked()), this, SLOT(createPreview()));
1513
                        connect( colDataq4, SIGNAL(activated(int)), this, SLOT( createPreview()));
1514
                        connect( shadeq4, SIGNAL(clicked()), this, SLOT(createPreview()));
6129 fschmid 1515
                        connect( CurveQ1->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1516
                        connect( CurveQ2->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1517
                        connect( CurveQ3->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
1518
                        connect( CurveQ4->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6080 fschmid 1519
                }
2082 fschmid 1520
                else if (c->text() == tr("Brightness"))
1521
                {
1522
                        disconnect( brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(updateBright(int)));
3947 fschmid 1523
                        disconnect( brightnessSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2082 fschmid 1524
                        QString tmpstr = effectValMap[c];
1525
                        int brightness;
1526
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1527
                        fp >> brightness;
1528
                        brightnessSlider->setValue(brightness);
1529
                        QString tmp;
1530
                        tmp.setNum(brightness);
1531
                        textLabel7->setText(tmp);
1532
                        optionStack->raiseWidget(2);
1533
                        connect( brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(updateBright(int)));
3947 fschmid 1534
                        connect( brightnessSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2082 fschmid 1535
                }
1536
                else if (c->text() == tr("Contrast"))
1537
                {
1538
                        disconnect( contrastSlider, SIGNAL(valueChanged(int)), this, SLOT(updateContrast(int)));
3947 fschmid 1539
                        disconnect( contrastSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2082 fschmid 1540
                        QString tmpstr = effectValMap[c];
1541
                        int contrast;
1542
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1543
                        fp >> contrast;
1544
                        contrastSlider->setValue(contrast);
1545
                        QString tmp;
1546
                        tmp.setNum(contrast);
1547
                        textLabel9->setText(tmp);
1548
                        optionStack->raiseWidget(3);
1549
                        connect( contrastSlider, SIGNAL(valueChanged(int)), this, SLOT(updateContrast(int)));
3947 fschmid 1550
                        connect( contrastSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2082 fschmid 1551
                }
2092 fschmid 1552
                else if (c->text() == tr("Sharpen"))
1553
                {
1554
                        disconnect( shRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1555
                        disconnect( shValue, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1556
                        QString tmpstr = effectValMap[c];
1557
                        double radius, sigma;
1558
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1559
                        fp >> radius;
1560
                        fp >> sigma;
1561
                        shRadius->setValue(radius);
1562
                        shValue->setValue(sigma);
1563
                        optionStack->raiseWidget(4);
1564
                        connect( shRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1565
                        connect( shValue, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1566
                }
2095 fschmid 1567
                else if (c->text() == tr("Blur"))
1568
                {
1569
                        disconnect( blRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1570
                        QString tmpstr = effectValMap[c];
1571
                        double radius, sigma;
1572
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1573
                        fp >> radius;
1574
                        fp >> sigma;
1575
                        blRadius->setValue(radius);
6116 fschmid 1576
                        //                      blValue->setValue(sigma);
2095 fschmid 1577
                        optionStack->raiseWidget(5);
1578
                        connect( blRadius, SIGNAL(valueChanged(int)), this, SLOT(createPreview()));
1579
                }
2096 fschmid 1580
                else if (c->text() == tr("Posterize"))
1581
                {
1582
                        disconnect( solarizeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateSolarize(int)));
3947 fschmid 1583
                        disconnect( solarizeSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2096 fschmid 1584
                        QString tmpstr = effectValMap[c];
1585
                        int solarize;
1586
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1587
                        fp >> solarize;
1588
                        solarizeSlider->setValue(solarize);
1589
                        QString tmp;
1590
                        tmp.setNum(solarize);
1591
                        textLabel15->setText(tmp);
1592
                        optionStack->raiseWidget(6);
1593
                        connect( solarizeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateSolarize(int)));
3947 fschmid 1594
                        connect( solarizeSlider, SIGNAL(sliderReleased()), this, SLOT(createPreview()));
2096 fschmid 1595
                }
6116 fschmid 1596
                else if (c->text() == tr("Curves"))
1597
                {
6129 fschmid 1598
                        disconnect( Kdisplay->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6116 fschmid 1599
                        QString tmpstr = effectValMap[c];
1600
                        QTextStream fp(&tmpstr, IO_ReadOnly);
1601
                        int numVals;
1602
                        double xval, yval;
1603
                        FPointArray curve;
1604
                        curve.resize(0);
1605
                        fp >> numVals;
1606
                        for (int nv = 0; nv < numVals; nv++)
1607
                        {
1608
                                fp >> xval;
1609
                                fp >> yval;
1610
                                curve.addPoint(xval, yval);
1611
                        }
6129 fschmid 1612
                        Kdisplay->cDisplay->setCurve(curve);
6193 fschmid 1613
                        int lin;
1614
                        fp >> lin;
1615
                        if (lin == 1)
1616
                                Kdisplay->setLinear(true);
1617
                        else
1618
                                Kdisplay->setLinear(false);
6116 fschmid 1619
                        optionStack->raiseWidget(10);
6129 fschmid 1620
                        connect( Kdisplay->cDisplay, SIGNAL(modified()), this, SLOT(createPreview()));
6116 fschmid 1621
                }
2056 fschmid 1622
                else
2061 fschmid 1623
                        optionStack->raiseWidget(0);
1624
                currentOptions = c;
2056 fschmid 1625
        }
2061 fschmid 1626
        else
1627
                optionStack->raiseWidget(0);
2056 fschmid 1628
        disconnect( availableEffects, SIGNAL( clicked(QListBoxItem*) ), this, SLOT( selectAvailEffect(QListBoxItem*) ) );
1629
        availableEffects->clearSelection();
1630
        connect( availableEffects, SIGNAL( clicked(QListBoxItem*) ), this, SLOT( selectAvailEffect(QListBoxItem*) ) );
1631
}
1632
 
1633
void EffectsDialog::selectAvailEffect(QListBoxItem* c)
1634
{
1635
        if (c)
1636
                toEffects->setEnabled(true);
1637
        fromEffects->setEnabled(false);
1638
        effectUp->setEnabled(false);
1639
        effectDown->setEnabled(false);
1640
        disconnect( usedEffects, SIGNAL( selected(QListBoxItem*) ), this, SLOT( selectEffect(QListBoxItem*) ) );
2061 fschmid 1641
        if (currentOptions != 0)
1642
        {
1643
                if (currentOptions->text() == tr("Colorize"))
1644
                {
1645
                        QString efval = "";
1646
                        efval = colData->currentText();
1647
                        QString tmp;
1648
                        tmp.setNum(shade->getValue());
6011 fschmid 1649
                        efval += "\n"+tmp;
2061 fschmid 1650
                        effectValMap[currentOptions] = efval;
1651
                }
2082 fschmid 1652
                if (currentOptions->text() == tr("Brightness"))
1653
                {
1654
                        QString tmp;
1655
                        tmp.setNum(brightnessSlider->value());
1656
                        effectValMap[currentOptions] = tmp;
1657
                }
1658
                if (currentOptions->text() == tr("Contrast"))
1659
                {
1660
                        QString tmp;
1661
                        tmp.setNum(contrastSlider->value());
1662
                        effectValMap[currentOptions] = tmp;
1663
                }
2092 fschmid 1664
                if (currentOptions->text() == tr("Sharpen"))
1665
                {
1666
                        QString efval = "";
1667
                        QString tmp;
1668
                        tmp.setNum(shRadius->value());
1669
                        efval += tmp;
1670
                        tmp.setNum(shValue->value());
1671
                        efval += " "+tmp;
1672
                        effectValMap[currentOptions] = efval;
1673
                }
2095 fschmid 1674
                if (currentOptions->text() == tr("Blur"))
1675
                {
1676
                        QString efval = "";
1677
                        QString tmp;
1678
                        tmp.setNum(blRadius->value());
1679
                        efval += tmp;
6011 fschmid 1680
                        tmp.setNum(1.0);
2095 fschmid 1681
                        efval += " "+tmp;
1682
                        effectValMap[currentOptions] = efval;
1683
                }
2096 fschmid 1684
                if (currentOptions->text() == tr("Posterize"))
1685
                {
1686
                        QString tmp;
1687
                        tmp.setNum(solarizeSlider->value());
1688
                        effectValMap[currentOptions] = tmp;
1689
                }
6080 fschmid 1690
                if (currentOptions->text() == tr("Duotone"))
1691
                {
1692
                        QString efval = "";
1693
                        efval = colData1->currentText()+"\n";
1694
                        efval += colData2->currentText()+"\n";
1695
                        QString tmp;
1696
                        tmp.setNum(shade1->getValue());
1697
                        efval += tmp;
1698
                        tmp.setNum(shade2->getValue());
1699
                        efval += " "+tmp;
6129 fschmid 1700
                        FPointArray Vals = CurveD1->cDisplay->getCurve();
1701
                        tmp.setNum(Vals.size());
1702
                        efval += " "+tmp;
1703
                        for (uint p = 0; p < Vals.size(); p++)
1704
                        {
1705
                                FPoint pv = Vals.point(p);
1706
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1707
                        }
6193 fschmid 1708
                        if (CurveD1->cDisplay->isLinear())
1709
                                efval += " 1";
1710
                        else
1711
                                efval += " 0";
6129 fschmid 1712
                        Vals = CurveD2->cDisplay->getCurve();
1713
                        tmp.setNum(Vals.size());
1714
                        efval += " "+tmp;
1715
                        for (uint p = 0; p < Vals.size(); p++)
1716
                        {
1717
                                FPoint pv = Vals.point(p);
1718
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1719
                        }
6193 fschmid 1720
                        if (CurveD2->cDisplay->isLinear())
1721
                                efval += " 1";
1722
                        else
1723
                                efval += " 0";
6080 fschmid 1724
                        effectValMap[currentOptions] = efval;
1725
                }
1726
                if (currentOptions->text() == tr("Tritone"))
1727
                {
1728
                        QString efval = "";
1729
                        efval = colDatat1->currentText()+"\n";
1730
                        efval += colDatat2->currentText()+"\n";
1731
                        efval += colDatat3->currentText()+"\n";
1732
                        QString tmp;
1733
                        tmp.setNum(shadet1->getValue());
1734
                        efval += tmp;
1735
                        tmp.setNum(shadet2->getValue());
1736
                        efval += " "+tmp;
1737
                        tmp.setNum(shadet3->getValue());
1738
                        efval += " "+tmp;
6129 fschmid 1739
                        FPointArray Vals = CurveT1->cDisplay->getCurve();
1740
                        tmp.setNum(Vals.size());
1741
                        efval += " "+tmp;
1742
                        for (uint p = 0; p < Vals.size(); p++)
1743
                        {
1744
                                FPoint pv = Vals.point(p);
1745
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1746
                        }
6193 fschmid 1747
                        if (CurveT1->cDisplay->isLinear())
1748
                                efval += " 1";
1749
                        else
1750
                                efval += " 0";
6129 fschmid 1751
                        Vals = CurveT2->cDisplay->getCurve();
1752
                        tmp.setNum(Vals.size());
1753
                        efval += " "+tmp;
1754
                        for (uint p = 0; p < Vals.size(); p++)
1755
                        {
1756
                                FPoint pv = Vals.point(p);
1757
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1758
                        }
6193 fschmid 1759
                        if (CurveT2->cDisplay->isLinear())
1760
                                efval += " 1";
1761
                        else
1762
                                efval += " 0";
6129 fschmid 1763
                        Vals = CurveT3->cDisplay->getCurve();
1764
                        tmp.setNum(Vals.size());
1765
                        efval += " "+tmp;
1766
                        for (uint p = 0; p < Vals.size(); p++)
1767
                        {
1768
                                FPoint pv = Vals.point(p);
1769
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1770
                        }
6193 fschmid 1771
                        if (CurveT3->cDisplay->isLinear())
1772
                                efval += " 1";
1773
                        else
1774
                                efval += " 0";
6080 fschmid 1775
                        effectValMap[currentOptions] = efval;
1776
                }
1777
                if (currentOptions->text() == tr("Quadtone"))
1778
                {
1779
                        QString efval = "";
1780
                        efval = colDataq1->currentText()+"\n";
1781
                        efval += colDataq2->currentText()+"\n";
1782
                        efval += colDataq3->currentText()+"\n";
1783
                        efval += colDataq4->currentText()+"\n";
1784
                        QString tmp;
1785
                        tmp.setNum(shadeq1->getValue());
1786
                        efval += tmp;
1787
                        tmp.setNum(shadeq2->getValue());
1788
                        efval += " "+tmp;
1789
                        tmp.setNum(shadeq3->getValue());
1790
                        efval += " "+tmp;
1791
                        tmp.setNum(shadeq4->getValue());
1792
                        efval += " "+tmp;
6129 fschmid 1793
                        FPointArray Vals = CurveQ1->cDisplay->getCurve();
1794
                        tmp.setNum(Vals.size());
1795
                        efval += " "+tmp;
1796
                        for (uint p = 0; p < Vals.size(); p++)
1797
                        {
1798
                                FPoint pv = Vals.point(p);
1799
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1800
                        }
6193 fschmid 1801
                        if (CurveQ1->cDisplay->isLinear())
1802
                                efval += " 1";
1803
                        else
1804
                                efval += " 0";
6129 fschmid 1805
                        Vals = CurveQ2->cDisplay->getCurve();
1806
                        tmp.setNum(Vals.size());
1807
                        efval += " "+tmp;
1808
                        for (uint p = 0; p < Vals.size(); p++)
1809
                        {
1810
                                FPoint pv = Vals.point(p);
1811
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1812
                        }
6193 fschmid 1813
                        if (CurveQ2->cDisplay->isLinear())
1814
                                efval += " 1";
1815
                        else
1816
                                efval += " 0";
6129 fschmid 1817
                        Vals = CurveQ3->cDisplay->getCurve();
1818
                        tmp.setNum(Vals.size());
1819
                        efval += " "+tmp;
1820
                        for (uint p = 0; p < Vals.size(); p++)
1821
                        {
1822
                                FPoint pv = Vals.point(p);
1823
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1824
                        }
6193 fschmid 1825
                        if (CurveQ3->cDisplay->isLinear())
1826
                                efval += " 1";
1827
                        else
1828
                                efval += " 0";
6129 fschmid 1829
                        Vals = CurveQ4->cDisplay->getCurve();
1830
                        tmp.setNum(Vals.size());
1831
                        efval += " "+tmp;
1832
                        for (uint p = 0; p < Vals.size(); p++)
1833
                        {
1834
                                FPoint pv = Vals.point(p);
1835
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1836
                        }
6193 fschmid 1837
                        if (CurveQ4->cDisplay->isLinear())
1838
                                efval += " 1";
1839
                        else
1840
                                efval += " 0";
6080 fschmid 1841
                        effectValMap[currentOptions] = efval;
1842
                }
6116 fschmid 1843
                if (currentOptions->text() == tr("Curves"))
1844
                {
1845
                        QString efval = "";
6129 fschmid 1846
                        FPointArray Vals = Kdisplay->cDisplay->getCurve();
6116 fschmid 1847
                        QString tmp;
1848
                        tmp.setNum(Vals.size());
1849
                        efval += tmp;
1850
                        for (uint p = 0; p < Vals.size(); p++)
1851
                        {
1852
                                FPoint pv = Vals.point(p);
1853
                                efval += QString(" %1 %2").arg(pv.x()).arg(pv.y());
1854
                        }
6193 fschmid 1855
                        if (Kdisplay->cDisplay->isLinear())
1856
                                efval += " 1";