Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3165 fschmid 1
/***************************************************************************
2
                          preview.cpp  -  description
3
                             -------------------
4
    begin                : Sun Jun 1 08:00:00 CEST 2003
5
    copyright            : (C) 2003 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
17
#include "preview.h"
18
#include "preview.moc"
19
#include <qimage.h>
20
#include <cstdlib>
21
#include <qcursor.h>
22
#include <qpainter.h>
23
#include <qcolor.h>
24
#include <qtooltip.h>
25
#include <qfile.h>
3172 subik 26
#include <qspinbox.h>
3165 fschmid 27
#include "pslib.h"
28
#include "checkDocument.h"
29
#include "prefsfile.h"
30
#include "prefscontext.h"
31
#include "prefstable.h"
32
#include "util.h"
3167 fschmid 33
#include "scribusview.h"
34
#include "scribusdoc.h"
3165 fschmid 35
 
36
/*!
37
 \fn PPreview::PPreview( QWidget* parent, ScribusApp *pl)
38
 \author Franz Schmid
39
 \date
40
 \brief Create the Print Preview window
41
 \param parent QWidget *
3167 fschmid 42
 \param vin ScribusView *
43
 \param docu ScribusDoc *
44
 \param pngAlpha int
3165 fschmid 45
 \retval PPreview window
46
 */
3169 fschmid 47
PPreview::PPreview( QWidget* parent, ScribusView *vin, ScribusDoc *docu, int pngAlpha, int tiffSep) : QDialog( parent, "Preview", true, 0 )
3165 fschmid 48
{
49
        prefsManager=PrefsManager::instance();
50
        QString tmp;
51
        setCaption( tr("Print Preview"));
3167 fschmid 52
        doc = docu;
53
        view = vin;
54
        HavePngAlpha = pngAlpha;
3169 fschmid 55
        HaveTiffSep = tiffSep;
3165 fschmid 56
        APage = -1;
3167 fschmid 57
        MPage = doc->pageCount;
3165 fschmid 58
        CMode = false;
59
        TxtAl = false;
60
        GrAl = false;
61
        Trans = false;
62
        GMode = true;
3172 subik 63
        scaleFactor = 1.0;
3173 fschmid 64
        SMode = 1;
3172 subik 65
 
3165 fschmid 66
        setIcon(loadIcon("AppIcon.png"));
67
        PLayout = new QVBoxLayout(this, 0, 0, "PLayout");
68
 
69
        Layout1 = new QHBoxLayout;
70
        Layout1->setSpacing(5);
71
        Layout1->setMargin(5);
72
        PGSel = new PageSelector(this, MPage);
3167 fschmid 73
        Layout1->addWidget(PGSel, Qt::AlignTop);
3165 fschmid 74
 
75
        Layout2 = new QVBoxLayout();
76
        Layout2->setSpacing(0);
77
        Layout2->setMargin(0);
78
        AliasText = new QCheckBox(this, "TextAntiAlias");
79
        AliasText->setText( tr("Anti-alias &Text"));
80
        AliasText->setChecked(prefsManager->appPrefs.PrPr_AlphaText);
81
        Layout2->addWidget(AliasText);
82
        AliasGr = new QCheckBox(this, "GraphicsAntiAlias");
83
        AliasGr->setText( tr("Anti-alias &Graphics"));
84
        AliasGr->setChecked(prefsManager->appPrefs.PrPr_AlphaGraphics);
85
        Layout2->addWidget(AliasGr);
86
        Layout1->addLayout(Layout2);
87
 
88
        Layout3 = new QVBoxLayout();
89
        Layout3->setSpacing(0);
90
        Layout3->setMargin(0);
91
        AliasTr = new QCheckBox(this, "DisplayTransparency");
92
        AliasTr->setText( tr("Display Trans&parency"));
93
        AliasTr->setChecked(prefsManager->appPrefs.PrPr_Transparency);
94
        Layout3->addWidget(AliasTr);
95
        EnableGCR = new QCheckBox(this, "DisplayGCR");
96
        EnableGCR->setText( tr("&Under Color Removal"));
97
        EnableGCR->setChecked(prefsManager->appPrefs.Gcr_Mode);
98
        Layout3->addWidget(EnableGCR);
99
        Layout1->addLayout(Layout3);
100
 
101
        Layout4 = new QVBoxLayout();
102
        Layout4->setSpacing(0);
103
        Layout4->setMargin(0);
104
        EnableCMYK = new QCheckBox(this, "DisplayCMYK");
105
        EnableCMYK->setText( tr("&Display CMYK"));
106
        EnableCMYK->setChecked(prefsManager->appPrefs.PrPr_Mode);
107
        Layout4->addWidget(EnableCMYK);
108
        Layout5 = new QHBoxLayout();
109
        Layout5->setSpacing(0);
110
        Layout5->setMargin(0);
111
        EnableCMYK_C = new QCheckBox(this, "DisplayCMYK_C");
112
        EnableCMYK_C->setText( tr("&C"));
113
        EnableCMYK_C->setChecked(prefsManager->appPrefs.PrPr_C);
114
        Layout5->addWidget(EnableCMYK_C);
115
        EnableCMYK_M = new QCheckBox(this, "DisplayCMYK_M");
116
        EnableCMYK_M->setText( tr("&M"));
117
        EnableCMYK_M->setChecked(prefsManager->appPrefs.PrPr_M);
118
        Layout5->addWidget(EnableCMYK_M);
119
        EnableCMYK_Y = new QCheckBox(this, "DisplayCMYK_Y");
120
        EnableCMYK_Y->setText( tr("&Y"));
121
        EnableCMYK_Y->setChecked(prefsManager->appPrefs.PrPr_Y);
122
        Layout5->addWidget(EnableCMYK_Y);
123
        EnableCMYK_K = new QCheckBox(this, "DisplayCMYK_K");
124
        EnableCMYK_K->setText( tr("&K"));
125
        EnableCMYK_K->setChecked(prefsManager->appPrefs.PrPr_K);
126
        Layout5->addWidget(EnableCMYK_K);
127
        Layout4->addLayout(Layout5);
128
        Layout1->addLayout(Layout4);
129
 
130
        PLayout->addLayout(Layout1);
131
 
132
        Anzeige = new QScrollView(this);
133
        PLayout->addWidget(Anzeige);
3168 fschmid 134
        Layout6 = new QHBoxLayout();
135
        Layout6->setSpacing(0);
136
        Layout6->setMargin(0);
3172 subik 137
        /* scaling */
138
        scaleLabel = new QLabel(tr("Scaling:"), this, "scaleLabel");
3173 fschmid 139
        scaleBox = new QComboBox( true, this, "unitSwitcher" );
140
        scaleBox->setEditable(false);
141
        scaleBox->setFocusPolicy(QWidget::NoFocus);
142
        scaleBox->insertItem("50%");
143
        scaleBox->insertItem("100%");
144
        scaleBox->insertItem("150%");
145
        scaleBox->insertItem("200%");
146
        scaleBox->setCurrentItem(1);
3172 subik 147
        Layout6->addWidget(scaleLabel);
148
        Layout6->addWidget(scaleBox);
3168 fschmid 149
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
150
        Layout6->addItem( spacer );
3230 fschmid 151
        printButton = new QPushButton( tr("Print..."), this, "printButton" );
152
        Layout6->addWidget( printButton );
3168 fschmid 153
        PLayout->addLayout(Layout6);
3173 fschmid 154
        Anz = new QLabel(Anzeige->viewport());
155
        Anz->setPixmap(CreatePreview(0, 72));
156
        Anzeige->addChild(Anz, 0, 0);
3172 subik 157
 
3165 fschmid 158
        int w = Anz->width() + 20;
159
        resize(QMIN(QApplication::desktop()->width(),w), 500);
160
        if (!PrefsManager::instance()->appPrefs.PrPr_Mode)
161
        {
162
                EnableCMYK_C->setEnabled(false);
163
                EnableCMYK_M->setEnabled(false);
164
                EnableCMYK_Y->setEnabled(false);
165
                EnableCMYK_K->setEnabled(false);
166
        }
3172 subik 167
        // tooltips
168
        QToolTip::add( AliasText, "<qt>" + tr( "Provides a more pleasant view of text items in the viewer, at the expense of a slight slowdown in previewing. This only affects Type 1 fonts" ) + "</qt>" );
169
        QToolTip::add( AliasGr, "<qt>" + tr( "Provides a more pleasant view of TrueType Fonts, OpenType Fonts, EPS, PDF and vector graphics in the preview, at the expense of a slight slowdown in previewing" ) + "</qt>" );
170
        QToolTip::add( AliasTr, "<qt>" + tr( "Shows transparency and transparent items in your document. Requires Ghostscript 7.07 or later" ) + "</qt>");
171
        QToolTip::add( EnableCMYK, "<qt>" + tr( "Gives a print preview using simulations of generic CMYK inks, instead of RGB colors" ) + "</qt>");
3165 fschmid 172
        QToolTip::add( EnableCMYK_C, tr( "Enable/disable the C (Cyan) ink plate" ) );
173
        QToolTip::add( EnableCMYK_M, tr( "Enable/disable the M (Magenta) ink plate" ) );
174
        QToolTip::add( EnableCMYK_Y, tr( "Enable/disable the Y (Yellow) ink plate" ) );
175
        QToolTip::add( EnableCMYK_K, tr( "Enable/disable the K (Black) ink plate" ) );
3172 subik 176
        QToolTip::add( EnableGCR, "<qt>" + tr( "A way of switching off some of the gray shades which are composed of cyan, yellow and magenta and using black instead. UCR most affects parts of images which are neutral and/or dark tones which are close to the gray. Use of this may improve printing some images and some experimentation and testing is need on a case by case basis. UCR reduces the possibility of over saturation with CMY inks." ) + "</qt>" );
3173 fschmid 177
        QToolTip::add(scaleBox, "<qt>" + tr("Resize the scale of the page.") + "</qt>");
3165 fschmid 178
        //signals and slots
179
        connect(AliasText, SIGNAL(clicked()), this, SLOT(ToggleTextAA()));
180
        connect(AliasGr, SIGNAL(clicked()), this, SLOT(ToggleGr()));
181
        connect(AliasTr, SIGNAL(clicked()), this, SLOT(ToggleTr()));
182
        connect(EnableCMYK, SIGNAL(clicked()), this, SLOT(ToggleCMYK()));
183
        connect(EnableGCR, SIGNAL(clicked()), this, SLOT(ToggleGCR()));
184
        connect(EnableCMYK_C, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
185
        connect(EnableCMYK_M, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
186
        connect(EnableCMYK_Y, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
187
        connect(EnableCMYK_K, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
188
        connect(PGSel, SIGNAL(GotoPage(int)), this, SLOT(ToSeite(int)));
3168 fschmid 189
        connect(printButton, SIGNAL(clicked()), this, SIGNAL(doPrint()));
3173 fschmid 190
        connect(scaleBox, SIGNAL(activated(int)), this, SLOT(scaleBox_valueChanged(int)));
3165 fschmid 191
}
192
 
193
/*!
194
 \fn void PPreview::ToSeite(int num)
195
 \author Franz Schmid
196
 \date
197
 \brief Jump to newly selected page and create the new preview
198
 \param num int Page Number
199
 \retval None
200
 */
201
void PPreview::ToSeite(int num)
202
{
203
        int n = num-1;
204
        if (n == APage)
205
                return;
3173 fschmid 206
        Anz->setPixmap(CreatePreview(n, qRound(72 * scaleFactor)));
3165 fschmid 207
}
208
 
209
/*!
210
 \fn void PPreview::ToggleTextAA()
211
 \author Franz Schmid
212
 \date
213
 \brief Toggle Text anti-aliasing and create the new preview
214
 \param None
215
 \retval None
216
 */
217
void PPreview::ToggleTextAA()
218
{
3173 fschmid 219
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 220
}
221
 
222
/*!
223
 \fn void PPreview::ToggleGr()
224
 \author Franz Schmid
225
 \date
226
 \brief Toggle Graphics anti-aliasing and create the new preview
227
 \param None
228
 \retval None
229
 */
230
void PPreview::ToggleGr()
231
{
3173 fschmid 232
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 233
}
234
 
235
/*!
236
 \fn void PPreview::ToggleTr()
237
 \author Franz Schmid
238
 \date
239
 \brief Toggle transparency and create the new preview
240
 \param None
241
 \retval None
242
 */
243
void PPreview::ToggleTr()
244
{
3173 fschmid 245
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 246
}
247
 
248
/*!
249
 \fn void PPreview::ToggleCMYK()
250
 \author Craig Bradney
251
 \date
252
 \brief When CMYK preview is toggled, (dis)enable the CMYK controls and create the new preview
253
 \param None
254
 \retval None
255
 */
256
void PPreview::ToggleCMYK()
257
{
258
        bool c = EnableCMYK->isChecked() ? true : false;
259
        EnableCMYK_C->setEnabled(c);
260
        EnableCMYK_M->setEnabled(c);
261
        EnableCMYK_Y->setEnabled(c);
262
        EnableCMYK_K->setEnabled(c);
3173 fschmid 263
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 264
}
265
 
266
void PPreview::ToggleGCR()
267
{
3173 fschmid 268
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 269
}
270
/*!
271
 \fn void PPreview::ToggleCMYK_Colour()
272
 \author Craig Bradney
273
 \date
274
 \brief If CMYK preview is enabled, create a new preview with the new CMYK plate settings
275
 \param None
276
 \retval None
277
 */
278
void PPreview::ToggleCMYK_Colour()
279
{
280
        if (EnableCMYK->isChecked())
3173 fschmid 281
                Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3165 fschmid 282
}
283
 
284
/*!
3172 subik 285
\fn void PPreview::scaleBox_valueChanged(int value)
286
\author Petr Vanek
287
\date 09/03/2005
288
\brief Recompute scaling factor of the preview image
289
\param value spinbox value from signal
290
 */
291
void PPreview::scaleBox_valueChanged(int value)
292
{
3173 fschmid 293
        switch (value)
294
        {
295
                case 0:
296
                        scaleFactor = 0.5;
297
                        break;
298
                case 1:
299
                        scaleFactor = 1.0;
300
                        break;
301
                case 2:
302
                        scaleFactor = 1.5;
303
                        break;
304
                case 3:
305
                        scaleFactor = 2.0;
306
                        break;
307
                default:
308
                        scaleFactor = 1.0;
309
                        break;
310
        }
311
        Anz->setPixmap(CreatePreview(APage, qRound(72 * scaleFactor)));
3172 subik 312
}
313
 
314
/*!
3165 fschmid 315
 \fn void PPreview::RenderPreview(int Seite, int Res)
316
 \author Franz Schmid
317
 \date
318
 \brief Renders the Preview to a file on Disk
319
 \param Seite int page number
320
 \param Res int
321
 \retval bool Flag indicating succsess
322
 */
323
int PPreview::RenderPreview(int Seite, int Res)
324
{
325
        bool ret = -1;
326
        QString cmd1, cmd2, cmd3;
327
        QMap<QString,QFont> ReallyUsed;
328
        // Recreate Postscript-File only when the actual Page has changed
329
        if ((Seite != APage)  || (EnableGCR->isChecked() != GMode))
330
        {
331
                ReallyUsed.clear();
3167 fschmid 332
                doc->getUsedFonts(&ReallyUsed);
333
                PSLib *dd = new PSLib(true, prefsManager->appPrefs.AvailFonts, ReallyUsed, doc->PageColors, false, true);
3165 fschmid 334
                if (dd != NULL)
335
                {
3167 fschmid 336
                        dd->PS_set_file(prefsManager->preferencesLocation()+"/tmp.ps");
3165 fschmid 337
                        std::vector<int> pageNs;
338
                        pageNs.push_back(Seite+1);
339
                        QStringList spots;
3167 fschmid 340
                        dd->CreatePS(doc, view, pageNs, false, tr("All"), spots, true, false, false, false, EnableGCR->isChecked(), false);
3165 fschmid 341
                        delete dd;
342
                }
343
                else
344
                        return ret;
345
        }
346
        QString tmp, tmp2, tmp3;
3200 cbradney 347
        double b = doc->Pages.at(Seite)->width() * Res / 72.0;
348
        double h = doc->Pages.at(Seite)->height() * Res / 72.0;
3165 fschmid 349
        cmd1 = getShortPathName(prefsManager->ghostscriptExecutable());
3173 fschmid 350
        cmd1 += " -q -dNOPAUSE -r"+tmp.setNum(qRound(Res))+" -g"+tmp2.setNum(qRound(b))+"x"+tmp3.setNum(qRound(h));
3165 fschmid 351
        if (EnableCMYK->isChecked())
3169 fschmid 352
        {
353
                if (HaveTiffSep == 0)
354
                        cmd1 += " -sDEVICE=tiffsep";
355
                else
356
                        cmd1 += " -sDEVICE=bitcmyk -dGrayValues=256";
357
        }
3165 fschmid 358
        else
359
        {
3167 fschmid 360
                if ((!AliasTr->isChecked()) || (HavePngAlpha != 0))
3165 fschmid 361
                        cmd1 += " -sDEVICE=png16m";
362
                else
363
                        cmd1 += " -sDEVICE=pngalpha";
364
        }
365
        if (AliasText->isChecked())
366
                cmd1 += " -dTextAlphaBits=4";
367
        if (AliasGr->isChecked())
368
                cmd1 += " -dGraphicsAlphaBits=4";
369
        // Add any extra font paths being used by Scribus to gs's font search path
370
        PrefsContext *pc = prefsManager->prefsFile->getContext("Fonts");
371
        PrefsTable *extraFonts = pc->getTable("ExtraFontDirs");
372
#ifndef _WIN32
373
        if (extraFonts->getRowCount() >= 1)
374
                cmd1 += QString(" -sFONTPATH='%1'").arg(extraFonts->get(0,0));
375
        for (int i = 1; i < extraFonts->getRowCount(); ++i)
376
                cmd1 += QString(":'%1'").arg(extraFonts->get(i,0));
377
#else
378
        if (extraFonts->getRowCount() >= 1)
379
                cmd1 += QString(" -sFONTPATH=\"%1\"").arg(extraFonts->get(0,0));
380
        for (int i = 1; i < extraFonts->getRowCount(); ++i)
381
                cmd1 += QString(";\"%1\"").arg(extraFonts->get(i,0));
382
#endif
383
        // then add any final args and call gs
3169 fschmid 384
        if ((EnableCMYK->isChecked()) && (HaveTiffSep == 0))
385
                cmd1 += " -sOutputFile=\"" + QDir::convertSeparators(prefsManager->preferencesLocation()+"/sc.tif") + "\" ";
386
        else
387
                cmd1 += " -sOutputFile=\"" + QDir::convertSeparators(prefsManager->preferencesLocation()+"/sc.png") + "\" ";
3167 fschmid 388
        cmd2 = "\"" + QDir::convertSeparators(prefsManager->preferencesLocation()+"/tmp.ps") + "\"";
3165 fschmid 389
        cmd3 = " -c showpage -c quit";
390
        ret = system(cmd1 + cmd2 + cmd3);
391
        return ret;
392
}
393
 
394
/*!
395
 \fn QPixmap PPreview::CreatePreview(int Seite, int Res)
396
 \author Franz Schmid
397
 \date
398
 \brief Creates the Preview of the Actual Page
399
 \param Seite int page number
400
 \param Res int
401
 \retval Bild QPixmap print preview
402
 */
403
QPixmap PPreview::CreatePreview(int Seite, int Res)
404
{
405
        int ret = -1;
406
        QPixmap Bild;
3200 cbradney 407
        double b = doc->Pages.at(Seite)->width() * Res / 72.0;
408
        double h = doc->Pages.at(Seite)->height() * Res / 72.0;
3165 fschmid 409
        qApp->setOverrideCursor(QCursor(waitCursor), true);
3173 fschmid 410
        if ((Seite != APage) || (EnableCMYK->isChecked() != CMode) || (SMode != scaleBox->currentItem())
3165 fschmid 411
                || (AliasText->isChecked() != TxtAl) || (AliasGr->isChecked() != GrAl) || (EnableGCR->isChecked() != GMode)
412
                || ((AliasTr->isChecked() != Trans) && (!EnableCMYK->isChecked())))
413
        {
414
                ret = RenderPreview(Seite, Res);
415
                if (ret != 0)
416
                {
417
                        Bild.resize(1,1);
418
                        qApp->setOverrideCursor(QCursor(arrowCursor), true);
419
                        return Bild;
420
                }
421
        }
422
        APage = Seite;
423
        CMode = EnableCMYK->isChecked();
424
        TxtAl = AliasText->isChecked();
425
        GrAl = AliasGr->isChecked();
426
        Trans = AliasTr->isChecked();
427
        GMode = EnableGCR->isChecked();
3173 fschmid 428
        SMode = scaleBox->currentItem();
3165 fschmid 429
        QImage image;
430
        if (EnableCMYK->isChecked())
431
        {
432
                int cyan, magenta, yellow, black, alpha;
433
                uint *p;
3169 fschmid 434
                if (HaveTiffSep == 0)
3165 fschmid 435
                {
3169 fschmid 436
                        ScImage im;
437
                        bool mode;
438
                        if (im.LoadPicture(prefsManager->preferencesLocation()+"/sc.tif", "", 0, false, false, 3, 72, &mode))
3165 fschmid 439
                        {
3173 fschmid 440
                                int w = im.width();
441
                                int w2 = 4*w;
442
                                int h2 = im.height();
443
                                image = QImage(w, h2, 32);
3169 fschmid 444
                                for (int y=0; y < h2; ++y )
3165 fschmid 445
                                {
3169 fschmid 446
                                        p = (uint *)image.scanLine( y );
447
                                        QRgb *pq = (QRgb *)im.scanLine( y );
448
                                        for (int x=0; x < w2; x += 4 )
449
                                        {
450
                                                cyan = qRed(*pq);
451
                                                magenta = qGreen(*pq);
452
                                                yellow =  qBlue(*pq);
453
                                                black =  qAlpha(*pq);
454
                                                if (!EnableCMYK_C->isChecked())
455
                                                        cyan = 0;
456
                                                if (!EnableCMYK_M->isChecked())
457
                                                        magenta = 0;
458
                                                if (!EnableCMYK_Y->isChecked())
459
                                                        yellow = 0;
460
                                                if (!EnableCMYK_K->isChecked())
461
                                                        black = 0;
462
                                                if (AliasTr->isChecked() && ((cyan == 0) && (magenta == 0) && (yellow == 0 ) && (black == 0)))
463
                                                        alpha = 0;
464
                                                else
465
                                                        alpha = 255;
466
                                                *p = qRgba(255-QMIN(255, cyan+black), 255-QMIN(255,magenta+black), 255-QMIN(255,yellow+black), alpha);
467
                                                p++;
468
                                                pq++;
469
                                        }
3165 fschmid 470
                                }
471
                        }
472
                }
3169 fschmid 473
                else
474
                {
3173 fschmid 475
                        int w = qRound(b);
476
                        int w2 = 4*w;
477
                        int h2 = qRound(h);
478
                        image = QImage(w, h2, 32);
3169 fschmid 479
                        QByteArray imgc(w2);
480
                        QFile f(prefsManager->preferencesLocation()+"/sc.png");
481
                        if (f.open(IO_ReadOnly))
482
                        {
483
                                for (int y=0; y < h2; ++y )
484
                                {
485
                                        p = (uint *)image.scanLine( y );
486
                                        f.readBlock(imgc.data(), w2);
487
                                        for (int x=0; x < w2; x += 4 )
488
                                        {
489
                                                cyan = uchar(imgc[x]);
490
                                                magenta = uchar(imgc[x + 1]);
491
                                                yellow = uchar(imgc[x + 2]);
492
                                                black = uchar(imgc[x + 3]);
493
                                                if (!EnableCMYK_C->isChecked())
494
                                                        cyan = 0;
495
                                                if (!EnableCMYK_M->isChecked())
496
                                                        magenta = 0;
497
                                                if (!EnableCMYK_Y->isChecked())
498
                                                        yellow = 0;
499
                                                if (!EnableCMYK_K->isChecked())
500
                                                        black = 0;
501
                                                if (AliasTr->isChecked() && ((cyan == 0) && (magenta == 0) && (yellow == 0 ) && (black == 0)))
502
                                                        alpha = 0;
503
                                                else
504
                                                        alpha = 255;
505
                                                *p = qRgba(255-QMIN(255, cyan+black), 255-QMIN(255,magenta+black), 255-QMIN(255,yellow+black), alpha);
506
                                                p++;
507
                                        }
508
                                }
509
                                f.close();
510
                        }
511
                }
3165 fschmid 512
        }
513
        else
514
        {
3167 fschmid 515
                image.load(prefsManager->preferencesLocation()+"/sc.png");
3165 fschmid 516
                image = image.convertDepth(32);
3167 fschmid 517
                if ((AliasTr->isChecked()) && (HavePngAlpha == 0))
3165 fschmid 518
                {
519
                        int wi = image.width();
520
                        int hi = image.height();
521
                        for( int yi=0; yi < hi; ++yi )
522
                        {
523
                                QRgb *s = (QRgb*)(image.scanLine( yi ));
524
                                for(int xi=0; xi < wi; ++xi )
525
                                {
526
                                        if((*s) == 0xffffffff)
527
                                                (*s) &= 0x00ffffff;
528
                                        s++;
529
                                }
530
                        }
531
                }
532
        }
533
        image.setAlphaBuffer(true);
534
        if (AliasTr->isChecked())
535
        {
536
                Bild = QPixmap(image.width(), image.height());
537
                QPainter p;
538
                QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
539
                p.begin(&Bild);
540
                p.fillRect(0, 0, image.width(), image.height(), b);
541
                p.drawImage(0, 0, image);
542
                p.end();
543
        }
544
        else
545
                Bild.convertFromImage(image);
546
        qApp->setOverrideCursor(QCursor(arrowCursor), true);
547
        return Bild;
548
}
549