Subversion Repositories Scribus

Rev

Rev 5093 | Rev 6106 | 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
*/
3 paul 7
#include "cmykfw.h"
8
#include "cmykfw.moc"
9
#include <qpainter.h>
10
#include <qpopupmenu.h>
11
#include <qcursor.h>
259 Franz 12
#include <qmessagebox.h>
279 Franz 13
#include <qfileinfo.h>
282 Franz 14
#include <qdir.h>
279 Franz 15
#include <cstdlib>
2952 cbradney 16
 
17
#include "commonstrings.h"
3543 avox 18
#include "sccombobox.h"
2688 craig 19
#include "scconfig.h"
1693 craig 20
#include "scpaths.h"
3 paul 21
#ifdef HAVE_CMS
22
extern bool SoftProofing;
23
extern bool Gamut;
24
extern bool CMSuse;
25
#endif
3051 fschmid 26
#include "util.h"
3 paul 27
 
2886 fschmid 28
CMYKChoose::CMYKChoose( QWidget* parent, ScColor orig, QString name, ColorList *Colors, QStringList Cust  )
216 Franz 29
                : QDialog( parent, "fw", true, 0 )
3 paul 30
{
1488 fschmid 31
        if (orig.getColorModel () == colorModelCMYK)
32
                CMYKmode = true;
33
        else
34
                CMYKmode = false;
216 Franz 35
        dynamic = true;
161 Franz 36
        Wsave = false;
259 Franz 37
        EColors = Colors;
279 Franz 38
        CurrSwatch.clear();
3046 fschmid 39
        orig.checkGamut();
3041 fschmid 40
        alertIcon = loadIcon("alert.png");
216 Franz 41
        imageA = QPixmap(50,50);
3046 fschmid 42
        imageA.fill(orig.getRawRGBColor());
3041 fschmid 43
        if (orig.isOutOfGamut())
3046 fschmid 44
                paintAlert(alertIcon,imageA, 2, 2);
216 Franz 45
        imageN = QPixmap(50,50);
3046 fschmid 46
        imageN.fill(orig.getRawRGBColor());
3041 fschmid 47
        if (orig.isOutOfGamut())
3046 fschmid 48
                paintAlert(alertIcon, imageN, 2, 2);
216 Franz 49
        Farbe = orig;
50
        QPixmap image0 = SliderPix(180);
51
        QPixmap image1 = SliderPix(300);
52
        QPixmap image2 = SliderPix(60);
53
        QPixmap image3 = SliderBlack();
54
        int cc, cm, cy, ck;
55
        double ccd, cmd, cyd, ckd;
56
        orig.getCMYK(&cc, &cm, &cy, &ck);
57
        ccd = cc / 2.55;
58
        cmd = cm / 2.55;
59
        cyd = cy / 2.55;
60
        ckd = ck / 2.55;
1488 fschmid 61
        int cr, cg, cb;
62
        double crd, cgd, cbd;
63
        orig.getRGB(&cr, &cg, &cb);
64
        crd = cr / 2.55;
65
        cgd = cg / 2.55;
66
        cbd = cb / 2.55;
216 Franz 67
        resize( 498, 306 );
68
        setCaption( tr( "Edit Color" ) );
69
        setIcon(loadIcon("AppIcon.png"));
70
        CMYKFarbenLayout = new QHBoxLayout( this );
71
        CMYKFarbenLayout->setSpacing( 6 );
72
        CMYKFarbenLayout->setMargin( 11 );
73
        Layout23 = new QVBoxLayout;
74
        Layout23->setSpacing( 7 );
75
        Layout23->setMargin( 0 );
3 paul 76
 
348 Franz 77
        TextLabel1 = new QLabel( tr( "&Name:" ), this, "TextLabel1" );
216 Franz 78
        TextLabel1->setMinimumSize( QSize( 200, 22 ) );
79
        Layout23->addWidget( TextLabel1 );
3 paul 80
 
259 Franz 81
        Farbname = new QLineEdit( this, "Farbname" );
216 Franz 82
        Farbname->setMinimumSize( QSize( 200, 22 ) );
83
        Farbname->setText( name );
348 Franz 84
        TextLabel1->setBuddy( Farbname );
216 Franz 85
        Layout23->addWidget( Farbname );
3 paul 86
 
348 Franz 87
        TextLabel3 = new QLabel( tr( "Color &Model" ), this, "TextLabel3" );
216 Franz 88
        TextLabel3->setMinimumSize( QSize( 100, 22 ) );
89
        Layout23->addWidget( TextLabel3 );
3 paul 90
 
3680 cbradney 91
        ComboBox1 = new ScComboBox( false, this, "ComboBox1" );
216 Franz 92
        ComboBox1->insertItem( tr( "CMYK" ) );
93
        ComboBox1->insertItem( tr( "RGB" ) );
94
        ComboBox1->insertItem( tr( "Web Safe RGB" ) );
1488 fschmid 95
        if (!CMYKmode)
96
                ComboBox1->setCurrentItem( 1 );
348 Franz 97
        TextLabel3->setBuddy( ComboBox1 );
216 Franz 98
        Layout23->addWidget( ComboBox1 );
3057 fschmid 99
 
100
        Separations = new QCheckBox( this, "Separations" );
3080 cbradney 101
        Separations->setText( tr( "Is Spot Color" ) );
3057 fschmid 102
        Separations->setChecked(orig.isSpotColor());
103
        Layout23->addWidget( Separations );
104
 
3060 fschmid 105
        Regist = new QCheckBox( this, "Regist" );
3080 cbradney 106
        Regist->setText( tr( "Is Registration Color" ) );
3060 fschmid 107
        Regist->setChecked(orig.isRegistrationColor());
108
        Layout23->addWidget( Regist );
109
 
110
        QSpacerItem* spacer = new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding );
216 Franz 111
        Layout23->addItem( spacer );
3 paul 112
 
216 Franz 113
        Layout2 = new QGridLayout;
114
        Layout2->setSpacing( 6 );
115
        Layout2->setMargin( 0 );
3 paul 116
 
348 Franz 117
        TextLabel5_2 = new QLabel( tr( "New" ), this, "TextLabel5_2" );
216 Franz 118
        TextLabel5_2->setMinimumSize( QSize( 50, 22 ) );
119
        TextLabel5_2->setMaximumSize( QSize( 100, 22 ) );
3 paul 120
 
216 Franz 121
        Layout2->addWidget( TextLabel5_2, 0, 1 );
3 paul 122
 
348 Franz 123
        OldC = new QLabel( "", this, "OldC" );
216 Franz 124
        OldC->setMinimumSize( QSize( 50, 50 ) );
125
        OldC->setMaximumSize( QSize( 50, 50 ) );
126
        OldC->setFrameShape( QLabel::WinPanel );
127
        OldC->setFrameShadow( QLabel::Sunken );
128
        OldC->setScaledContents( true );
129
        OldC->setAlignment( int( QLabel::AlignCenter ) );
130
        OldC->setPixmap( imageA );
3 paul 131
 
216 Franz 132
        Layout2->addWidget( OldC, 1, 0 );
3 paul 133
 
348 Franz 134
        TextLabel5 = new QLabel( tr( "Old" ), this, "TextLabel5" );
216 Franz 135
        TextLabel5->setMinimumSize( QSize( 50, 22 ) );
136
        TextLabel5->setMaximumSize( QSize( 100, 22 ) );
3 paul 137
 
216 Franz 138
        Layout2->addWidget( TextLabel5, 0, 0 );
3 paul 139
 
348 Franz 140
        NewC = new QLabel( "", this, "NewC" );
216 Franz 141
        NewC->setMinimumSize( QSize( 50, 50 ) );
142
        NewC->setMaximumSize( QSize( 50, 50 ) );
143
        NewC->setFrameShape( QLabel::WinPanel );
144
        NewC->setFrameShadow( QLabel::Sunken );
145
        NewC->setScaledContents( true );
146
        NewC->setAlignment( int( QLabel::AlignCenter ) );
147
        NewC->setPixmap( imageN );
3 paul 148
 
216 Franz 149
        Layout2->addWidget( NewC, 1, 1 );
150
        Layout23->addLayout( Layout2 );
3 paul 151
 
216 Franz 152
        Layout21 = new QHBoxLayout;
153
        Layout21->setSpacing( 20 );
154
        Layout21->setMargin( 10 );
3 paul 155
 
2952 cbradney 156
        Cancel_2 = new QPushButton( CommonStrings::tr_OK, this, "Cancel_2" );
216 Franz 157
        Cancel_2->setDefault( true );
158
        Layout21->addWidget( Cancel_2 );
2952 cbradney 159
        Cancel = new QPushButton( CommonStrings::tr_Cancel, this, "Cancel" );
216 Franz 160
        Layout21->addWidget( Cancel );
161
        Layout23->addLayout( Layout21 );
162
        CMYKFarbenLayout->addLayout( Layout23 );
3 paul 163
 
216 Franz 164
        Frame4 = new QFrame( this, "Frame4" );
165
        Frame4->setFrameShape( QFrame::NoFrame );
166
        Frame4->setFrameShadow( QFrame::Raised );
167
        Frame4Layout = new QVBoxLayout( Frame4 );
168
        Frame4Layout->setSpacing( 6 );
169
        Frame4Layout->setMargin( 0 );
4546 subik 170
 
3680 cbradney 171
        Swatches = new ScComboBox( false, Frame4, "ComboBox1" );
287 Franz 172
        Swatches->insertItem( tr( "HSV-Colormap" ) );
4606 cbradney 173
/*
279 Franz 174
        Swatches->insertItem("X11 RGB-Set");
175
        Swatches->insertItem("X11 Grey-Set");
176
        Swatches->insertItem("Gnome-Set");
177
        Swatches->insertItem("SVG-Set");
1873 mrdocs 178
        Swatches->insertItem("OpenOffice.org-Set");
4606 cbradney 179
*/
180
        csm.findPaletteLocations();
181
        csm.findPalettes();
182
        QStringList allSets(csm.paletteNames());
183
        for ( QStringList::Iterator it = allSets.begin(); it != allSets.end(); ++it )
184
        {
185
                Swatches->insertItem((*it));
186
        }
187
        customSetStartIndex=Swatches->count();
1873 mrdocs 188
 
279 Franz 189
        if (Cust.count() != 0)
190
        {
191
                QStringList realEx;
192
                realEx.clear();
193
                for (uint m = 0; m < Cust.count(); ++m)
194
                {
282 Franz 195
                        QString Cpfad = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus/"+Cust[m]);
279 Franz 196
                        QFileInfo cfi(Cpfad);
197
                        if (cfi.exists())
198
                        {
199
                                Swatches->insertItem(Cust[m]);
200
                                realEx.append(Cust[m]);
201
                        }
202
                }
203
                CColSet = realEx;
204
        }
205
        Frame4Layout->addWidget( Swatches );
4546 subik 206
 
279 Franz 207
        TabStack = new QWidgetStack( Frame4, "TabStack" );
208
        TabStack->setFrameShape( QWidgetStack::NoFrame );
209
 
210
        Frame5a = new QFrame( TabStack, "Frame4" );
211
        Frame5a->setFrameShape( QFrame::NoFrame );
212
        Frame5a->setFrameShadow( QFrame::Raised );
213
        Frame5aLayout = new QHBoxLayout( Frame5a );
214
        Frame5aLayout->setSpacing( 0 );
215
        Frame5aLayout->setMargin( 0 );
216
        Frame5 = new QFrame(Frame5a);
216 Franz 217
        Frame5->setFrameShape( QLabel::WinPanel );
218
        Frame5->setFrameShadow( QLabel::Sunken );
219
        Frame5->setMinimumSize( QSize( 182, 130 ) );
220
        Frame5->setMaximumSize( QSize( 182, 130 ) );
221
        Frame5Layout = new QHBoxLayout( Frame5 );
222
        Frame5Layout->setSpacing( 0 );
223
        Frame5Layout->setMargin( 0 );
224
        ColorMap = new ColorChart( Frame5);
225
        ColorMap->setMinimumSize( QSize( 180, 128 ) );
226
        ColorMap->setMaximumSize( QSize( 180, 128 ) );
227
        Frame5Layout->addWidget( ColorMap );
279 Franz 228
        Frame5aLayout->addWidget( Frame5, 0, AlignCenter);
229
        TabStack->addWidget( Frame5a, 0 );
4546 subik 230
 
279 Franz 231
        ColorSwatch = new QListBox(TabStack, "StyledL");
232
        TabStack->addWidget( ColorSwatch, 1 );
3 paul 233
 
279 Franz 234
        Frame4Layout->addWidget( TabStack );
4546 subik 235
 
287 Franz 236
        Layout2x = new QGridLayout;
237
        Layout2x->setSpacing( 6 );
238
        Layout2x->setMargin( 0 );
279 Franz 239
 
348 Franz 240
        CyanT = new QLabel( tr( "C:" ), Frame4, "Cyant" );
287 Franz 241
        Layout2x->addWidget(CyanT, 0, 0);
3 paul 242
 
216 Franz 243
        Layout1_2 = new QVBoxLayout;
244
        Layout1_2->setSpacing( 0 );
245
        Layout1_2->setMargin( 0 );
3 paul 246
 
216 Franz 247
        CyanP = new QLabel( Frame4, "CyanP" );
248
        CyanP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
249
                                           CyanP->sizePolicy().hasHeightForWidth() ) );
250
        CyanP->setMinimumSize( QSize( 200, 10 ) );
251
        CyanP->setPixmap(image0);
252
        CyanP->setScaledContents( true );
253
        Layout1_2->addWidget( CyanP );
3 paul 254
 
216 Franz 255
        CyanSL = new QSlider( Frame4, "CyanSL" );
256
        CyanSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 257
        CyanSL->setMaxValue( 100 );
216 Franz 258
        CyanSL->setOrientation( QSlider::Horizontal );
259
        CyanSL->setTickmarks( QSlider::NoMarks );
260
        Layout1_2->addWidget( CyanSL );
287 Franz 261
        Layout2x->addLayout(Layout1_2, 0, 1);
3 paul 262
 
226 Franz 263
        CyanSp = new MSpinBox( Frame4, 0 );
216 Franz 264
        CyanSp->setMaxValue( 100 );
265
        CyanSp->setSuffix( tr(" %"));
287 Franz 266
        Layout2x->addWidget(CyanSp, 0, 2);
216 Franz 267
        CyanSp->setValue(ccd);
226 Franz 268
        CyanSL->setValue(qRound(ccd));
3 paul 269
 
348 Franz 270
        MagentaT = new QLabel( tr( "M:" ), Frame4, "Cyant" );
287 Franz 271
        Layout2x->addWidget(MagentaT, 1, 0);
3 paul 272
 
216 Franz 273
        Layout1_2_2 = new QVBoxLayout;
274
        Layout1_2_2->setSpacing( 0 );
275
        Layout1_2_2->setMargin( 0 );
3 paul 276
 
216 Franz 277
        MagentaP = new QLabel( Frame4, "MagentaP" );
278
        MagentaP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
279
                                              MagentaP->sizePolicy().hasHeightForWidth() ) );
280
        MagentaP->setMinimumSize( QSize( 200, 10 ) );
281
        MagentaP->setPixmap(image1);
282
        MagentaP->setScaledContents( true );
283
        Layout1_2_2->addWidget( MagentaP );
3 paul 284
 
216 Franz 285
        MagentaSL = new QSlider( Frame4, "MagentaSL" );
286
        MagentaSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 287
        MagentaSL->setMaxValue( 100 );
216 Franz 288
        MagentaSL->setOrientation( QSlider::Horizontal );
289
        MagentaSL->setTickmarks( QSlider::NoMarks );
290
        Layout1_2_2->addWidget( MagentaSL );
287 Franz 291
        Layout2x->addLayout(Layout1_2_2, 1, 1);
3 paul 292
 
226 Franz 293
        MagentaSp = new MSpinBox( Frame4, 0 );
216 Franz 294
        MagentaSp->setMaxValue( 100 );
295
        MagentaSp->setSuffix( tr(" %"));
287 Franz 296
        Layout2x->addWidget(MagentaSp, 1, 2);
216 Franz 297
        MagentaSp->setValue(cmd);
226 Franz 298
        MagentaSL->setValue(qRound(cmd));
3 paul 299
 
348 Franz 300
        YellowT = new QLabel( tr( "Y:" ), Frame4, "Cyant" );
287 Franz 301
        Layout2x->addWidget(YellowT, 2, 0);
3 paul 302
 
216 Franz 303
        Layout1_2_3 = new QVBoxLayout;
304
        Layout1_2_3->setSpacing( 0 );
305
        Layout1_2_3->setMargin( 0 );
3 paul 306
 
216 Franz 307
        YellowP = new QLabel( Frame4, "YellowP" );
308
        YellowP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
309
                                             YellowP->sizePolicy().hasHeightForWidth() ) );
310
        YellowP->setMinimumSize( QSize( 200, 10 ) );
311
        YellowP->setPixmap(image2);
312
        YellowP->setScaledContents( true );
313
        Layout1_2_3->addWidget( YellowP );
3 paul 314
 
216 Franz 315
        YellowSL = new QSlider( Frame4, "YellowSL" );
316
        YellowSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 317
        YellowSL->setMaxValue( 100 );
216 Franz 318
        YellowSL->setOrientation( QSlider::Horizontal );
319
        YellowSL->setTickmarks( QSlider::NoMarks );
320
        Layout1_2_3->addWidget( YellowSL );
287 Franz 321
        Layout2x->addLayout(Layout1_2_3, 2, 1);
3 paul 322
 
226 Franz 323
        YellowSp = new MSpinBox( Frame4, 0 );
216 Franz 324
        YellowSp->setMaxValue( 100 );
325
        YellowSp->setSuffix( tr(" %"));
287 Franz 326
        Layout2x->addWidget(YellowSp, 2, 2);
216 Franz 327
        YellowSp->setValue(cyd);
226 Franz 328
        YellowSL->setValue(qRound(cyd));
3 paul 329
 
348 Franz 330
        BlackT = new QLabel( tr( "K:" ), Frame4, "Cyant" );
287 Franz 331
        Layout2x->addWidget(BlackT, 3, 0);
3 paul 332
 
216 Franz 333
        Layout1_2_4 = new QVBoxLayout;
334
        Layout1_2_4->setSpacing( 0 );
335
        Layout1_2_4->setMargin( 0 );
3 paul 336
 
216 Franz 337
        BlackP = new QLabel( Frame4, "BlackP" );
338
        BlackP->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5,
339
                                            BlackP->sizePolicy().hasHeightForWidth() ) );
340
        BlackP->setMinimumSize( QSize( 200, 10 ) );
341
        BlackP->setPixmap(image3);
342
        BlackP->setScaledContents( true );
343
        Layout1_2_4->addWidget( BlackP );
3 paul 344
 
216 Franz 345
        BlackSL = new QSlider( Frame4, "BlackSL" );
346
        BlackSL->setMinimumSize( QSize( 200, 16 ) );
226 Franz 347
        BlackSL->setMaxValue( 100 );
216 Franz 348
        BlackSL->setOrientation( QSlider::Horizontal );
349
        BlackSL->setTickmarks( QSlider::NoMarks );
350
        Layout1_2_4->addWidget( BlackSL );
287 Franz 351
        Layout2x->addLayout(Layout1_2_4, 3, 1);
3 paul 352
 
226 Franz 353
        BlackSp = new MSpinBox( Frame4, 0 );
216 Franz 354
        BlackSp->setMaxValue( 100 );
355
        BlackSp->setSuffix( tr(" %"));
287 Franz 356
        Layout2x->addWidget(BlackSp, 3, 2);
216 Franz 357
        BlackSp->setValue(ckd);
226 Franz 358
        BlackSL->setValue(qRound(ckd));
216 Franz 359
        BlackComp = ck;
287 Franz 360
        Frame4Layout->addLayout( Layout2x );
4179 fschmid 361
        QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Minimum, QSizePolicy::Expanding );
362
        Frame4Layout->addItem( spacer2 );
216 Franz 363
        CMYKFarbenLayout->addWidget( Frame4 );
364
        int h, s, v;
365
        orig.getRGBColor().hsv(&h, &s, &v);
366
        ColorMap->drawPalette(v);
367
        ColorMap->setMark(h, s);
344 Franz 368
        Fnam = name;
259 Franz 369
        Farbname->selectAll();
370
        Farbname->setFocus();
279 Franz 371
        TabStack->raiseWidget(0);
4179 fschmid 372
        setFixedSize(minimumSizeHint());
216 Franz 373
        // signals and slots connections
5689 mrdocs 374
         QToolTip::add( Regist, "<qt>" + tr( "Choosing this will enable printing this on all plates. Registration colors are used for printer marks such as crop marks, registration marks and the like. These are not typically used in the layout itself." ) + "</qt>");
375
         QToolTip::add( Separations, "<qt>" + tr( "Choosing this will make this color a spot color, thus creating another spot when creating plates or separations. This is used most often when a logo or other color needs exact representation or cannot be replicated with CMYK inks. Metallic and flourescent inks are good examples which cannot be easily replicated with CMYK inks." ) + "</qt>");
216 Franz 376
        connect( Cancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
259 Franz 377
        connect( Cancel_2, SIGNAL( clicked() ), this, SLOT( Verlassen() ) );
216 Franz 378
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
379
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
380
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
381
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
382
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
383
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
384
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
385
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
386
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
387
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
388
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
389
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
390
        connect( ColorMap, SIGNAL( ColorVal(int, int, bool)), this, SLOT( setColor2(int, int, bool)));
391
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
279 Franz 392
        connect( Swatches, SIGNAL(activated(int)), this, SLOT(SelSwatch(int)));
393
        connect(ColorSwatch, SIGNAL(highlighted(int)), this, SLOT(SelFromSwatch(int)));
3057 fschmid 394
        connect(Separations, SIGNAL(clicked()), this, SLOT(setSpot()));
3060 fschmid 395
        connect(Regist, SIGNAL(clicked()), this, SLOT(setRegist()));
4179 fschmid 396
        layout()->activate();
1488 fschmid 397
        if (!CMYKmode)
398
                SelModel ( tr( "RGB" ));
3 paul 399
}
400
 
401
void CMYKChoose::mouseReleaseEvent(QMouseEvent *m)
402
{
403
        if (m->button() == RightButton)
161 Franz 404
        {
3 paul 405
                QPopupMenu *pmen = new QPopupMenu();
406
                qApp->setOverrideCursor(QCursor(ArrowCursor), true);
112 Franz 407
                int px = pmen->insertItem( tr("Dynamic Color Bars"), this, SLOT(ToggleSL()));
408
                int py = pmen->insertItem( tr("Static Color Bars"), this, SLOT(ToggleSL()));
80 Franz 409
                pmen->setItemChecked((dynamic ? px : py) , true);
3 paul 410
                pmen->exec(QCursor::pos());
411
                delete pmen;
161 Franz 412
        }
3 paul 413
}
414
 
216 Franz 415
void CMYKChoose::SetValueS(int val)
416
{
417
        disconnect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
418
        disconnect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
419
        disconnect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
420
        disconnect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
226 Franz 421
        if (CyanSL == sender())
422
                CyanSp->setValue(val);
423
        if (MagentaSL == sender())
424
                MagentaSp->setValue(val);
425
        if (YellowSL == sender())
426
                YellowSp->setValue(val);
427
        if (BlackSL == sender())
428
                BlackSp->setValue(val);
216 Franz 429
        setColor();
430
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
431
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
432
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
433
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
434
}
435
 
3 paul 436
void CMYKChoose::ToggleSL()
437
{
438
        dynamic = !dynamic;
161 Franz 439
        CyanP->setPixmap(SliderPix(CMYKmode ? 180 : 0));
440
        MagentaP->setPixmap(SliderPix(CMYKmode? 300 : 120));
441
        YellowP->setPixmap(SliderPix(CMYKmode? 60 : 240));
442
        if (CMYKmode)
443
                BlackP->setPixmap(SliderBlack());
3 paul 444
}
445
 
446
QPixmap CMYKChoose::SliderPix(int farbe)
447
{
161 Franz 448
        QPixmap image0 = QPixmap(255,10);
449
        QPainter p;
450
        p.begin(&image0);
451
        p.setPen(NoPen);
3 paul 452
        int r, g, b, c, m, y, k;
453
        QColor tmp;
216 Franz 454
        for (int x = 0; x < 255; x += 5)
455
        {
456
                if (CMYKmode)
259 Franz 457
                {
1488 fschmid 458
                        Farbe.getCMYK(&c, &m, &y, &k);
216 Franz 459
                        if (dynamic)
460
                        {
461
                                switch (farbe)
462
                                {
463
                                case 180:
2886 fschmid 464
                                        tmp = ScColor(x, m, y, k).getRGBColor();
216 Franz 465
                                        break;
466
                                case 300:
2886 fschmid 467
                                        tmp = ScColor(c, x, y, k).getRGBColor();
216 Franz 468
                                        break;
469
                                case 60:
2886 fschmid 470
                                        tmp = ScColor(c, m, x, k).getRGBColor();
216 Franz 471
                                        break;
472
                                }
3 paul 473
                                p.setBrush(tmp);
216 Franz 474
                        }
475
                        else
1488 fschmid 476
                        {
477
                                switch (farbe)
478
                                {
479
                                case 180:
2886 fschmid 480
                                        tmp = ScColor(x, 0, 0, 0).getRGBColor();
1488 fschmid 481
                                        break;
482
                                case 300:
2886 fschmid 483
                                        tmp = ScColor(0, x, 0, 0).getRGBColor();
1488 fschmid 484
                                        break;
485
                                case 60:
2886 fschmid 486
                                        tmp = ScColor(0, 0, x, 0).getRGBColor();
1488 fschmid 487
                                        break;
488
                                }
489
                                p.setBrush(tmp);
490
                        }
259 Franz 491
                }
216 Franz 492
                else
493
                {
1488 fschmid 494
                        Farbe.getRGB(&r, &g, &b);
216 Franz 495
                        if (dynamic)
496
                        {
497
                                switch (farbe)
498
                                {
499
                                case 0:
2886 fschmid 500
                                        tmp = ScColor(x, g, b).getRGBColor();
216 Franz 501
                                        break;
502
                                case 120:
2886 fschmid 503
                                        tmp = ScColor(r, x, b).getRGBColor();
216 Franz 504
                                        break;
505
                                case 240:
2886 fschmid 506
                                        tmp = ScColor(r, g, x).getRGBColor();
216 Franz 507
                                        break;
508
                                }
1488 fschmid 509
                                p.setBrush(tmp);
216 Franz 510
                        }
511
                        else
1488 fschmid 512
                        {
513
                                switch (farbe)
514
                                {
515
                                case 0:
2886 fschmid 516
                                        tmp = ScColor(x, 0, 0).getRGBColor();
1488 fschmid 517
                                        break;
518
                                case 120:
2886 fschmid 519
                                        tmp = ScColor(0, x, 0).getRGBColor();
1488 fschmid 520
                                        break;
521
                                case 240:
2886 fschmid 522
                                        tmp = ScColor(0, 0, x).getRGBColor();
1488 fschmid 523
                                        break;
524
                                }
525
                                p.setBrush(tmp);
526
                        }
216 Franz 527
                }
528
                p.drawRect(x, 0, 5, 10);
161 Franz 529
        }
216 Franz 530
        p.end();
531
        return image0;
3 paul 532
}
533
 
534
QPixmap CMYKChoose::SliderBlack()
535
{
161 Franz 536
        QPixmap image0 = QPixmap(255,10);
537
        QPainter p;
538
        int val = 255;
539
        p.begin(&image0);
540
        p.setPen(NoPen);
541
        int c, m, y, k;
542
        Farbe.getCMYK(&c, &m, &y, &k);
543
        for (int x = 0; x < 255; x += 5)
216 Franz 544
        {
545
                if (dynamic)
2886 fschmid 546
                        p.setBrush(ScColor(c, m, y, x).getRGBColor());
216 Franz 547
                else
2886 fschmid 548
                        p.setBrush(ScColor(0, 0, 0, x).getRGBColor());
216 Franz 549
                p.drawRect(x, 0, 5, 10);
550
                val -= 5;
551
        }
552
        p.end();
553
        return image0;
3 paul 554
}
555
 
279 Franz 556
void CMYKChoose::SelSwatch(int n)
557
{
558
        if (n == 0)
559
                TabStack->raiseWidget(0);
560
        else
561
        {
562
                bool cus = false;
563
                CurrSwatch.clear();
282 Franz 564
                QString Cpfad = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus/"+Swatches->currentText());
4602 cbradney 565
                QString pfadC = ScPaths::instance().libDir()+"swatches/";
4606 cbradney 566
                QString pfadC2 = pfadC + "Scribus_X11.txt";
279 Franz 567
                switch (n)
568
                {
4606 cbradney 569
                        /*
279 Franz 570
                case 1:
4606 cbradney 571
                        pfadC2 = pfadC + "Scribus_X11.txt";
279 Franz 572
                        break;
573
                case 2:
4606 cbradney 574
                        pfadC2 = pfadC + "Scribus_X11Grey.txt";
279 Franz 575
                        break;
576
                case 3:
4606 cbradney 577
                        pfadC2 = pfadC + "Scribus_Gnome.txt";
279 Franz 578
                        break;
579
                case 4:
4606 cbradney 580
                        pfadC2 = pfadC + "Scribus_SVG.txt";
279 Franz 581
                        break;
1967 fschmid 582
                case 5:
4606 cbradney 583
                        pfadC2 = pfadC + "Scribus_OpenOffice.txt";
1967 fschmid 584
                        cus = true;
585
                        break;
4606 cbradney 586
                        */
279 Franz 587
                default:
4606 cbradney 588
                        if (n<customSetStartIndex)
589
                        {
590
                                QString listText=Swatches->text(n);
591
                                if (listText=="Scribus OpenOffice")
592
                                        cus=true;
593
                                pfadC2 = csm.paletteFileFromName(listText);
594
                        }
595
                        else
596
                        {
597
                                pfadC2 = Cpfad;
598
                                cus = true;
599
                        }
279 Franz 600
                        break;
601
                }
602
                if (n != 0)
603
                {
604
                        QFile fiC(pfadC2);
605
                        if (fiC.open(IO_ReadOnly))
606
                        {
607
                                QString ColorEn, Cname;
608
                                int Rval, Gval, Bval, Kval;
609
                                QTextStream tsC(&fiC);
610
                                ColorEn = tsC.readLine();
611
                                while (!tsC.atEnd())
612
                                {
2886 fschmid 613
                                        ScColor tmp;
279 Franz 614
                                        ColorEn = tsC.readLine();
4610 cbradney 615
                                        if (ColorEn.length()>0 && ColorEn[0]==QChar('#'))
616
                                                continue;
279 Franz 617
                                        QTextStream CoE(&ColorEn, IO_ReadOnly);
618
                                        CoE >> Rval;
619
                                        CoE >> Gval;
620
                                        CoE >> Bval;
621
                                        if (cus)
622
                                        {
623
                                                CoE >> Kval;
624
                                                Cname = CoE.read().stripWhiteSpace();
625
                                                tmp.setColor(Rval, Gval, Bval, Kval);
626
                                        }
627
                                        else
628
                                        {
629
                                                Cname = CoE.read().stripWhiteSpace();
630
                                                tmp.setColorRGB(Rval, Gval, Bval);
631
                                        }
4729 subik 632
 
4606 cbradney 633
                                        if ((n<customSetStartIndex) && (Cname.length()==0))
634
                                        {
4608 cbradney 635
                                                if (!cus)
636
                                                        Cname=QString("#%1%2%3").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).upper();
637
                                                else
638
                                                        Cname=QString("#%1%2%3%4").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).arg(Kval,2,16).upper();
4606 cbradney 639
                                                Cname.replace(" ","0");
640
                                        }
641
                                        if (CurrSwatch.contains(Cname))
4608 cbradney 642
                                        {
643
                                                if (tmp==CurrSwatch[Cname])
644
                                                        continue;
4606 cbradney 645
                                                Cname=QString("%1%2").arg(Cname).arg(CurrSwatch.count());
4608 cbradney 646
                                        }
4729 subik 647
 
279 Franz 648
                                        CurrSwatch.insert(Cname, tmp);
649
                                }
650
                                fiC.close();
651
                        }
652
                        else
653
                        {
2886 fschmid 654
                                CurrSwatch.insert("White", ScColor(0, 0, 0, 0));
655
                                CurrSwatch.insert("Black", ScColor(0, 0, 0, 255));
656
                                CurrSwatch.insert("Blue", ScColor(255, 255, 0, 0));
657
                                CurrSwatch.insert("Cyan", ScColor(255, 0, 0, 0));
658
                                CurrSwatch.insert("Green", ScColor(255, 0, 255, 0));
659
                                CurrSwatch.insert("Red", ScColor(0, 255, 255, 0));
660
                                CurrSwatch.insert("Yellow", ScColor(0, 0, 255, 0));
661
                                CurrSwatch.insert("Magenta", ScColor(0, 255, 0, 0));
279 Franz 662
                        }
663
                }
664
                ColorSwatch->clear();
1065 cbradney 665
                ColorList::Iterator it;
279 Franz 666
                QPixmap pm = QPixmap(30, 15);
667
                for (it = CurrSwatch.begin(); it != CurrSwatch.end(); ++it)
668
                {
669
                        pm.fill(CurrSwatch[it.key()].getRGBColor());
670
                        ColorSwatch->insertItem(pm, it.key());
671
                }
672
                ColorSwatch->setSelected(ColorSwatch->currentItem(), false);
673
                TabStack->raiseWidget(1);
674
        }
675
}
676
 
3060 fschmid 677
void CMYKChoose::setRegist()
678
{
679
        disconnect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
680
        if (Regist->isChecked())
681
        {
682
                ComboBox1->setCurrentItem( 0 );
683
                Separations->setChecked(false);
684
                SelModel( tr("CMYK"));
685
        }
686
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
687
}
688
 
3057 fschmid 689
void CMYKChoose::setSpot()
690
{
691
        disconnect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
692
        if (Separations->isChecked())
693
        {
694
                ComboBox1->setCurrentItem( 0 );
3060 fschmid 695
                Regist->setChecked(false);
3057 fschmid 696
                SelModel( tr("CMYK"));
697
        }
698
        connect( ComboBox1, SIGNAL(activated(const QString&)), this, SLOT(SelModel(const QString&)));
699
}
700
 
3 paul 701
void CMYKChoose::SelModel(const QString& mod)
702
{
217 Franz 703
        disconnect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
704
        disconnect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
705
        disconnect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
706
        disconnect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
707
        disconnect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
708
        disconnect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
709
        disconnect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
710
        disconnect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
711
        disconnect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
712
        disconnect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
713
        disconnect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
714
        disconnect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
3 paul 715
        if (mod == tr("CMYK"))
161 Franz 716
        {
3 paul 717
                CMYKmode = true;
718
                Wsave = false;
226 Franz 719
                CyanSL->setMaxValue( 100 );
720
                MagentaSL->setMaxValue( 100 );
721
                YellowSL->setMaxValue( 100 );
722
                CyanSp->setMaxValue( 100 );
723
                MagentaSp->setMaxValue( 100);
724
                YellowSp->setMaxValue( 100 );
217 Franz 725
                CyanSL->setLineStep(1);
726
                MagentaSL->setLineStep(1);
727
                YellowSL->setLineStep(1);
728
                CyanSL->setPageStep(10);
729
                MagentaSL->setPageStep(10);
730
                YellowSL->setPageStep(10);
226 Franz 731
                CyanSp->setDecimals(1);
732
                MagentaSp->setDecimals(1);
733
                YellowSp->setDecimals(1);
734
                CyanSp->setLineStep(1);
735
                MagentaSp->setLineStep(1);
736
                YellowSp->setLineStep(1);
217 Franz 737
                CyanSp->setSuffix( tr(" %"));
738
                MagentaSp->setSuffix( tr(" %"));
739
                YellowSp->setSuffix( tr(" %"));
112 Franz 740
                CyanT->setText( tr("C:"));
741
                MagentaT->setText( tr("M:"));
742
                YellowT->setText( tr("Y:"));
216 Franz 743
                CyanP->setPixmap(SliderPix(180));
744
                MagentaP->setPixmap(SliderPix(300));
745
                YellowP->setPixmap(SliderPix(60));
746
                BlackP->setPixmap(SliderBlack());
4179 fschmid 747
/*              BlackP->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
748
                BlackSL->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
749
                BlackSp->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
750
                BlackT->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); */
216 Franz 751
                BlackP->show();
752
                BlackSL->show();
753
                BlackSp->show();
754
                BlackT->show();
3131 fschmid 755
                Farbe.setColorModel(colorModelCMYK);
216 Franz 756
                setValues();
161 Franz 757
        }
3 paul 758
        else
216 Franz 759
                //      if (mod == tr("RGB"))
161 Franz 760
        {
3 paul 761
                CMYKmode = false;
762
                Wsave = false;
217 Franz 763
                CyanSL->setMaxValue( 255 );
764
                MagentaSL->setMaxValue( 255 );
765
                YellowSL->setMaxValue( 255 );
766
                CyanSL->setLineStep(1);
767
                MagentaSL->setLineStep(1);
768
                YellowSL->setLineStep(1);
769
                CyanSL->setPageStep(1);
770
                MagentaSL->setPageStep(1);
771
                YellowSL->setPageStep(1);
772
                CyanSp->setDecimals(1);
773
                MagentaSp->setDecimals(1);
774
                YellowSp->setDecimals(1);
775
                CyanSp->setLineStep(1);
776
                MagentaSp->setLineStep(1);
777
                YellowSp->setLineStep(1);
778
                CyanSp->setMaxValue( 255 );
779
                MagentaSp->setMaxValue( 255 );
780
                YellowSp->setMaxValue( 255 );
781
                CyanSp->setSuffix("");
782
                MagentaSp->setSuffix("");
783
                YellowSp->setSuffix("");
112 Franz 784
                CyanT->setText( tr("R:"));
785
                MagentaT->setText( tr("G:"));
786
                YellowT->setText( tr("B:"));
216 Franz 787
                CyanP->setPixmap(SliderPix(0));
788
                MagentaP->setPixmap(SliderPix(120));
789
                YellowP->setPixmap(SliderPix(240));
3424 fschmid 790
                Layout2x->setResizeMode(QLayout::Fixed);
4179 fschmid 791
/*              BlackP->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
792
                BlackSL->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
793
                BlackSp->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
794
                BlackT->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored)); */
216 Franz 795
                BlackP->hide();
796
                BlackSL->hide();
797
                BlackSp->hide();
798
                BlackT->hide();
178 Franz 799
                if (mod == tr("Web Safe RGB"))
161 Franz 800
                {
3 paul 801
                        Wsave = true;
217 Franz 802
                        CyanSL->setLineStep(51);
803
                        MagentaSL->setLineStep(51);
804
                        YellowSL->setLineStep(51);
805
                        CyanSL->setPageStep(51);
806
                        MagentaSL->setPageStep(51);
807
                        YellowSL->setPageStep(51);
808
                        CyanSp->setLineStep(51);
809
                        MagentaSp->setLineStep(51);
810
                        YellowSp->setLineStep(51);
161 Franz 811
                }
3131 fschmid 812
                Farbe.setColorModel(colorModelRGB);
216 Franz 813
                setValues();
161 Franz 814
        }
217 Franz 815
        connect( CyanSp, SIGNAL( valueChanged(int) ), CyanSL, SLOT( setValue(int) ) );
816
        connect( MagentaSp, SIGNAL( valueChanged(int) ), MagentaSL, SLOT( setValue(int) ) );
817
        connect( YellowSp, SIGNAL( valueChanged(int) ), YellowSL, SLOT( setValue(int) ) );
818
        connect( BlackSp, SIGNAL( valueChanged(int) ), BlackSL, SLOT( setValue(int) ) );
819
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
820
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
821
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
822
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( SetValueS(int) ) );
823
        connect( CyanSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
824
        connect( MagentaSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
825
        connect( YellowSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
826
        connect( BlackSL, SIGNAL( valueChanged(int) ), this, SLOT( setColor() ) );
3 paul 827
}
828
 
829
void CMYKChoose::setColor()
830
{
217 Franz 831
        int c, m, y, k;
832
        if (CMYKmode)
833
        {
1488 fschmid 834
                c = qRound(CyanSp->value() * 2.55);
835
                m = qRound(MagentaSp->value() * 2.55);
836
                y = qRound(YellowSp->value() * 2.55);
837
                k = qRound(BlackSp->value() * 2.55);
217 Franz 838
        }
839
        else
840
        {
841
                c = qRound(CyanSp->value());
842
                m = qRound(MagentaSp->value());
843
                y = qRound(YellowSp->value());
844
                k = qRound(BlackSp->value());
845
        }
216 Franz 846
        int h, s, v;
847
        BlackComp = k;
3 paul 848
        if (Wsave)
161 Franz 849
        {
3 paul 850
                blockSignals(true);
217 Franz 851
                c = c / 51 * 51;
852
                m = m / 51 * 51;
853
                y = y / 51 * 51;
854
                CyanSp->setValue(c);
855
                MagentaSp->setValue(m);
856
                YellowSp->setValue(y);
857
                CyanSL->setValue(c);
858
                MagentaSL->setValue(m);
859
                YellowSL->setValue(y);
3 paul 860
                blockSignals(false);
161 Franz 861
        }
2886 fschmid 862
        ScColor tmp;
3 paul 863
        if (CMYKmode)
161 Franz 864
        {
1488 fschmid 865
                tmp.setColor(c, m, y, k);
216 Franz 866
                if (dynamic)
867
                {
868
                        CyanP->setPixmap(SliderPix(180));
869
                        MagentaP->setPixmap(SliderPix(300));
870
                        YellowP->setPixmap(SliderPix(60));
871
                        BlackP->setPixmap(SliderBlack());
872
                }
161 Franz 873
        }
3 paul 874
        else
161 Franz 875
        {
1488 fschmid 876
                 tmp.setColorRGB(c, m, y);
3 paul 877
                QColor tmp2 = QColor(c, m, y, QColor::Rgb);
878
                tmp2.hsv(&h, &s, &v);
216 Franz 879
                BlackComp = 255 - v;
880
                if (dynamic)
881
                {
882
                        CyanP->setPixmap(SliderPix(0));
883
                        MagentaP->setPixmap(SliderPix(120));
884
                        YellowP->setPixmap(SliderPix(240));
885
                }
161 Franz 886
        }
3046 fschmid 887
        imageN.fill(tmp.getRawRGBColor());
888
        tmp.checkGamut();
3041 fschmid 889
        if (tmp.isOutOfGamut())
3046 fschmid 890
                paintAlert(alertIcon, imageN, 2, 2);
3 paul 891
        tmp.getRGBColor().hsv(&h, &s, &v);
161 Franz 892
        NewC->setPixmap( imageN );
893
        Farbe = tmp;
894
        ColorMap->drawPalette(v);
216 Franz 895
        ColorMap->setMark(h, s);
3 paul 896
}
897
 
898
void CMYKChoose::setColor2(int h, int s, bool ende)
899
{
900
        QColor tm = QColor(QMAX(QMIN(359,h),0), QMAX(QMIN(255,255-s),0), 255-BlackComp, QColor::Hsv);
901
        int r, g, b;
902
        tm.rgb(&r, &g, &b);
2886 fschmid 903
        ScColor tmp;
1488 fschmid 904
        tmp.fromQColor(tm);
3 paul 905
        if (CMYKmode)
1488 fschmid 906
                tmp.setColorModel(colorModelCMYK);
3046 fschmid 907
        tmp.checkGamut();
908
        imageN.fill(tmp.getRawRGBColor());
3041 fschmid 909
        if (tmp.isOutOfGamut())
3046 fschmid 910
                paintAlert(alertIcon, imageN, 2, 2);
161 Franz 911
        NewC->setPixmap( imageN );
912
        Farbe = tmp;
913
        if (ende)
216 Franz 914
                setValues();
3 paul 915
}
916
 
279 Franz 917
void CMYKChoose::SelFromSwatch(int c)
918
{
2886 fschmid 919
        ScColor tmp = CurrSwatch[ColorSwatch->text(c)];
1488 fschmid 920
        if (CMYKmode)
921
                tmp.setColorModel(colorModelCMYK);
3046 fschmid 922
        tmp.checkGamut();
923
        imageN.fill(tmp.getRawRGBColor());
3041 fschmid 924
        if (tmp.isOutOfGamut())
3046 fschmid 925
                paintAlert(alertIcon, imageN, 2, 2);
279 Franz 926
        NewC->setPixmap( imageN );
927
        Farbe = tmp;
928
        setValues();
929
}
930
 
3 paul 931
void CMYKChoose::setValues()
932
{
933
        if (CMYKmode)
161 Franz 934
        {
216 Franz 935
                int cc, cm, cy, ck;
936
                Farbe.getCMYK(&cc, &cm, &cy, &ck);
937
                CyanSp->setValue(cc / 2.55);
226 Franz 938
                CyanSL->setValue(qRound(cc / 2.55));
216 Franz 939
                MagentaSp->setValue(cm / 2.55);
226 Franz 940
                MagentaSL->setValue(qRound(cm / 2.55));
216 Franz 941
                YellowSp->setValue(cy / 2.55);
226 Franz 942
                YellowSL->setValue(qRound(cy / 2.55));
216 Franz 943
                BlackSp->setValue(ck / 2.55);
226 Franz 944
                BlackSL->setValue(qRound(ck / 2.55));
216 Franz 945
                if (dynamic)
946
                {
947
                        CyanP->setPixmap(SliderPix(180));
948
                        MagentaP->setPixmap(SliderPix(300));
949
                        YellowP->setPixmap(SliderPix(60));
950
                        BlackP->setPixmap(SliderBlack());
951
                }
952
        }
161 Franz 953
        else
216 Franz 954
        {
955
                int r, g, b;
1488 fschmid 956
                Farbe.getRGB(&r, &g, &b);
217 Franz 957
                CyanSp->setValue(static_cast<double>(r));
958
                CyanSL->setValue(r);
959
                MagentaSp->setValue(static_cast<double>(g));
960
                MagentaSL->setValue(g);
961
                YellowSp->setValue(static_cast<double>(b));
962
                YellowSL->setValue(b);
216 Franz 963
                int h, s, v;
1488 fschmid 964
                Farbe.getRGBColor().hsv(&h, &s, &v);
216 Franz 965
                BlackComp = 255 - v;
966
                if (dynamic)
967
                {
968
                        CyanP->setPixmap(SliderPix(0));
969
                        MagentaP->setPixmap(SliderPix(120));
970
                        YellowP->setPixmap(SliderPix(240));
971
                }
972
        }
3 paul 973
}
974
 
975
QColor CMYKChoose::CMYK2RGB(int c, int m, int y, int k)
976
{
1488 fschmid 977
        /* this code should no longer be used */
3 paul 978
        return QColor(255-QMIN(255, c+k), 255-QMIN(255,m+k), 255-QMIN(255,y+k));
979
}
259 Franz 980
 
981
void CMYKChoose::Verlassen()
982
{
494 fschmid 983
        // if condition 10/21/2004 pv #1191 - just be sure that user cannot create "None" color
4729 subik 984
        if (Farbname->text() == CommonStrings::None || Farbname->text() == CommonStrings::NoneColor)
494 fschmid 985
        {
3510 cbradney 986
                QMessageBox::information(this, CommonStrings::trWarning, tr("You cannot create a color named \"%1\".\nIt is a reserved name for transparent color").arg(Farbname->text()), 0);
494 fschmid 987
                Farbname->setFocus();
988
                Farbname->selectAll();
989
                return;
990
        }
344 Franz 991
        if (Fnam != Farbname->text())
259 Franz 992
        {
344 Franz 993
                if (EColors->contains(Farbname->text()))
994
                {
3510 cbradney 995
                        QMessageBox::information(this, CommonStrings::trWarning, tr("Name of the color is not unique"), CommonStrings::tr_OK, 0, 0, 0, QMessageBox::Ok);
344 Franz 996
                        Farbname->selectAll();
997
                        Farbname->setFocus();
998
                        return;
999
                }
1000
                else
1001
                        accept();
259 Franz 1002
        }
1003
        else
1004
                accept();
1005
}