Subversion Repositories Scribus

Rev

Rev 2142 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23 Franz 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>
213 Franz 21
#include <qcursor.h>
214 Franz 22
#include <qpainter.h>
23
#include <qcolor.h>
249 Franz 24
#include <qtooltip.h>
910 fschmid 25
#include <qfile.h>
26
#include "libpostscript/pslib.h"
1208 cbradney 27
#include "scraction.h"
28
#include "menumanager.h"
1284 fschmid 29
#include "checkDocument.h"
1549 subik 30
#include "pluginmanager.h"
23 Franz 31
 
32
extern QPixmap loadIcon(QString nam);
203 Franz 33
extern void ReOrderText(ScribusDoc *doc, ScribusView *view);
269 Franz 34
ScribusApp* Carrier;
35
QWidget* par;
358 Franz 36
 
202 Franz 37
/*!
38
 \fn QString Name()
39
 \author Franz Schmid
40
 \date
41
 \brief Returns name of plugin
42
 \param None
43
 \retval QString containing name of plugin: Print Preview
44
 */
1552 subik 45
QString name()
23 Franz 46
{
2187 cbradney 47
        return QObject::tr("Print Previe&w");
23 Franz 48
}
49
 
202 Franz 50
/*!
51
 \fn int Type()
52
 \author Franz Schmid
53
 \date
54
 \brief Returns type of plugin
55
 \param None
56
 \retval int containing type of plugin (1: Extra, 2: Import, 3: Export, 4: )
57
 */
1552 subik 58
PluginManager::PluginType type()
23 Franz 59
{
1552 subik 60
        return PluginManager::Standard;
23 Franz 61
}
62
 
512 fschmid 63
int ID()
64
{
65
        return 5;
66
}
67
 
1208 cbradney 68
QString actionName()
69
{
70
        return "PrintPreview";
71
}
72
 
73
QString actionKeySequence()
74
{
75
        return "Ctrl+Alt+P"; // KDE/X swallows Ctrl+Shift+P ???
76
}
77
 
78
QString actionMenu()
79
{
80
        return "File";
81
}
82
 
83
QString actionMenuAfterName()
84
{
85
        return "Print";
86
}
87
 
88
bool actionEnabledOnStartup()
89
{
90
        return false;
91
}
92
/*
269 Franz 93
void InitPlug(QWidget *d, ScribusApp *plug)
94
{
95
        Carrier = plug;
96
        par = d;
97
        Tes = new MenuPreview(d);
1208 cbradney 98
        int id = plug->fileMenu->insertItem(QObject::tr("Print Previe&w"), -1, plug->fileMenu->indexOf(plug->M_FilePrint)+1);
351 Franz 99
        plug->fileMenu->setAccel(Qt::CTRL+Qt::SHIFT+Qt::Key_P, id);
269 Franz 100
        plug->fileMenu->connectItem(id, Tes, SLOT(RunPreview()));
270 Franz 101
        plug->fileMenu->setItemEnabled(id, 0);
102
        plug->MenuItemsFile.append(id);
365 Franz 103
        plug->SetKeyEntry(18, QObject::tr("Print Preview"), id, Qt::CTRL+Qt::SHIFT+Qt::Key_P);
269 Franz 104
}
1208 cbradney 105
*/
1552 subik 106
void cleanUpPlug()
358 Franz 107
{}
269 Franz 108
 
202 Franz 109
/*!
110
 \fn void Run(QWidget *d, ScribusApp *plug)
111
 \author Franz Schmid
112
 \date
113
 \brief Run the print preview
114
 \param d QWidget *
115
 \param plug ScribusApp *
116
 \retval None
117
 */
1549 subik 118
 
1552 subik 119
void run(QWidget *d, ScribusApp *plug)
1208 cbradney 120
{
121
        Carrier = plug;
122
        par = d;
123
        Tes = new MenuPreview(d);
124
        Tes->RunPreview();
125
}
269 Franz 126
 
127
void MenuPreview::RunPreview()
128
{
129
        if (Carrier->HaveDoc)
213 Franz 130
        {
1549 subik 131
                Carrier->pluginManager->dllReturn = "";
358 Franz 132
                PPreview *dia = new PPreview(par, Carrier);
1549 subik 133
                if (Carrier->pluginManager->dllReturn != "")
1298 fschmid 134
                {
135
                        delete dia;
136
                        return;
137
                }
358 Franz 138
                dia->exec();
1549 subik 139
                Carrier->pluginManager->dllReturn = "";
269 Franz 140
                Carrier->Prefs.PrPr_Mode = dia->EnableCMYK->isChecked();
141
                Carrier->Prefs.PrPr_AlphaText = dia->AliasText->isChecked();
142
                Carrier->Prefs.PrPr_AlphaGraphics = dia->AliasGr->isChecked();
143
                Carrier->Prefs.PrPr_Transparency = dia->AliasTr->isChecked();
144
                Carrier->Prefs.PrPr_C = dia->EnableCMYK_C->isChecked();
145
                Carrier->Prefs.PrPr_M = dia->EnableCMYK_M->isChecked();
146
                Carrier->Prefs.PrPr_Y = dia->EnableCMYK_Y->isChecked();
147
                Carrier->Prefs.PrPr_K = dia->EnableCMYK_K->isChecked();
344 Franz 148
                Carrier->Prefs.Gcr_Mode = dia->EnableGCR->isChecked();
358 Franz 149
                delete dia;
269 Franz 150
                system("rm -f "+Carrier->PrefsPfad+"/tmp.ps");
151
                system("rm -f "+Carrier->PrefsPfad+"/sc.png");
358 Franz 152
        }
23 Franz 153
}
154
 
202 Franz 155
/*!
156
 \fn PPreview::PPreview( QWidget* parent, ScribusApp *pl)
157
 \author Franz Schmid
158
 \date
159
 \brief Create the Print Preview window
160
 \param parent QWidget *
161
 \param pl ScribusApp *
162
 \retval PPreview window
163
 */
23 Franz 164
PPreview::PPreview( QWidget* parent, ScribusApp *pl) : QDialog( parent, "Preview", true, 0 )
165
{
166
        QString tmp;
112 Franz 167
        setCaption( tr("Print Preview"));
23 Franz 168
        app = pl;
213 Franz 169
        APage = -1;
2142 cbradney 170
        MPage = app->doc->pageCount;
213 Franz 171
        CMode = false;
172
        TxtAl = false;
173
        GrAl = false;
214 Franz 174
        Trans = false;
344 Franz 175
        GMode = true;
83 Franz 176
        setIcon(loadIcon("AppIcon.png"));
189 Franz 177
        PLayout = new QVBoxLayout(this, 0, 0, "PLayout");
358 Franz 178
 
23 Franz 179
        Layout1 = new QHBoxLayout;
358 Franz 180
        Layout1->setSpacing(5);
181
        Layout1->setMargin(5);
199 Franz 182
        PGSel = new PageSelector(this, MPage);
183
        Layout1->addWidget(PGSel);
358 Franz 184
 
185
        Layout2 = new QVBoxLayout();
186
        Layout2->setSpacing(0);
23 Franz 187
        Layout2->setMargin(0);
188
        AliasText = new QCheckBox(this, "TextAntiAlias");
340 Franz 189
        AliasText->setText( tr("Anti-alias &Text"));
213 Franz 190
        AliasText->setChecked(app->Prefs.PrPr_AlphaText);
23 Franz 191
        Layout2->addWidget(AliasText);
192
        AliasGr = new QCheckBox(this, "GraphicsAntiAlias");
340 Franz 193
        AliasGr->setText( tr("Anti-alias &Graphics"));
213 Franz 194
        AliasGr->setChecked(app->Prefs.PrPr_AlphaGraphics);
23 Franz 195
        Layout2->addWidget(AliasGr);
358 Franz 196
        Layout1->addLayout(Layout2);
197
 
198
        Layout3 = new QVBoxLayout();
199
        Layout3->setSpacing(0);
200
        Layout3->setMargin(0);
189 Franz 201
        AliasTr = new QCheckBox(this, "DisplayTransparency");
340 Franz 202
        AliasTr->setText( tr("Display Trans&parency"));
213 Franz 203
        AliasTr->setChecked(app->Prefs.PrPr_Transparency);
358 Franz 204
        Layout3->addWidget(AliasTr);
205
        EnableGCR = new QCheckBox(this, "DisplayGCR");
206
        EnableGCR->setText( tr("&Under Color Removal"));
207
        EnableGCR->setChecked(app->Prefs.Gcr_Mode);
208
        Layout3->addWidget(EnableGCR);
209
        Layout1->addLayout(Layout3);
210
 
211
        Layout4 = new QVBoxLayout();
212
        Layout4->setSpacing(0);
213
        Layout4->setMargin(0);
190 Franz 214
        EnableCMYK = new QCheckBox(this, "DisplayCMYK");
340 Franz 215
        EnableCMYK->setText( tr("&Display CMYK"));
213 Franz 216
        EnableCMYK->setChecked(app->Prefs.PrPr_Mode);
358 Franz 217
        Layout4->addWidget(EnableCMYK);
218
        Layout5 = new QHBoxLayout();
219
        Layout5->setSpacing(0);
220
        Layout5->setMargin(0);
189 Franz 221
        EnableCMYK_C = new QCheckBox(this, "DisplayCMYK_C");
340 Franz 222
        EnableCMYK_C->setText( tr("&C"));
213 Franz 223
        EnableCMYK_C->setChecked(app->Prefs.PrPr_C);
358 Franz 224
        Layout5->addWidget(EnableCMYK_C);
189 Franz 225
        EnableCMYK_M = new QCheckBox(this, "DisplayCMYK_M");
340 Franz 226
        EnableCMYK_M->setText( tr("&M"));
213 Franz 227
        EnableCMYK_M->setChecked(app->Prefs.PrPr_M);
358 Franz 228
        Layout5->addWidget(EnableCMYK_M);
189 Franz 229
        EnableCMYK_Y = new QCheckBox(this, "DisplayCMYK_Y");
340 Franz 230
        EnableCMYK_Y->setText( tr("&Y"));
213 Franz 231
        EnableCMYK_Y->setChecked(app->Prefs.PrPr_Y);
358 Franz 232
        Layout5->addWidget(EnableCMYK_Y);
189 Franz 233
        EnableCMYK_K = new QCheckBox(this, "DisplayCMYK_K");
340 Franz 234
        EnableCMYK_K->setText( tr("&K"));
213 Franz 235
        EnableCMYK_K->setChecked(app->Prefs.PrPr_K);
358 Franz 236
        Layout5->addWidget(EnableCMYK_K);
237
        Layout4->addLayout(Layout5);
238
        Layout1->addLayout(Layout4);
239
 
240
        PLayout->addLayout(Layout1);
241
 
242
        Anzeige = new QScrollView(this);
243
        Anz = new QLabel(Anzeige->viewport());
244
        Anz->setPixmap(CreatePreview(0, 72));
245
        Anzeige->addChild(Anz, 0, 0);
246
        PLayout->addWidget(Anzeige);
247
        int w = Anz->width() + 20;
248
        resize(QMIN(QApplication::desktop()->width(),w), 500);
219 Franz 249
        if (!app->Prefs.PrPr_Mode)
250
        {
251
                EnableCMYK_C->setEnabled(false);
252
                EnableCMYK_M->setEnabled(false);
253
                EnableCMYK_Y->setEnabled(false);
254
                EnableCMYK_K->setEnabled(false);
255
        }
249 Franz 256
        //tooltips
358 Franz 257
        QToolTip::add( AliasText, tr( "Provides a more pleasant view of text items in the viewer, at the expense\n"
258
                                              "of a slight slowdown in previewing. This only affects Type 1 fonts" ) );
874 cbradney 259
        QToolTip::add( AliasGr, tr( "Provides a more pleasant view of TrueType Fonts, OpenType Fonts, EPS, PDF and\n"
358 Franz 260
                                               "vector graphics in the preview, at the expense of a slight slowdown in previewing" ) );
249 Franz 261
        QToolTip::add( AliasTr, tr( "Shows transparency and transparent items in your document. Requires Ghostscript 7.07 or later" ) );
262
        QToolTip::add( EnableCMYK, tr( "Gives a print preview using simulations of generic CMYK inks, instead of RGB colors" ) );
263
        QToolTip::add( EnableCMYK_C, tr( "Enable/disable the C (Cyan) ink plate" ) );
264
        QToolTip::add( EnableCMYK_M, tr( "Enable/disable the M (Magenta) ink plate" ) );
265
        QToolTip::add( EnableCMYK_Y, tr( "Enable/disable the Y (Yellow) ink plate" ) );
266
        QToolTip::add( EnableCMYK_K, tr( "Enable/disable the K (Black) ink plate" ) );
700 cbradney 267
        QToolTip::add( EnableGCR, tr( "A way of switching off some of the gray shades which are composed\n"
358 Franz 268
                                                     "of cyan, yellow and magenta and using black instead.\n"
269
                                                 "UCR most affects parts of images which are neutral and/or dark tones\n"
270
                                                 "which are close to the gray. Use of this may improve printing some images\n"
271
                                                 "and some experimentation and testing is need on a case by case basis.\n"
272
                                                 "UCR reduces the possibility of over saturation with CMY inks." ) );
249 Franz 273
        //signals and slots
23 Franz 274
        connect(AliasText, SIGNAL(clicked()), this, SLOT(ToggleTextAA()));
189 Franz 275
        connect(AliasGr, SIGNAL(clicked()), this, SLOT(ToggleGr()));
276
        connect(AliasTr, SIGNAL(clicked()), this, SLOT(ToggleTr()));
190 Franz 277
        connect(EnableCMYK, SIGNAL(clicked()), this, SLOT(ToggleCMYK()));
344 Franz 278
        connect(EnableGCR, SIGNAL(clicked()), this, SLOT(ToggleGCR()));
189 Franz 279
        connect(EnableCMYK_C, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
280
        connect(EnableCMYK_M, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
281
        connect(EnableCMYK_Y, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
190 Franz 282
        connect(EnableCMYK_K, SIGNAL(clicked()), this, SLOT(ToggleCMYK_Colour()));
199 Franz 283
        connect(PGSel, SIGNAL(GotoPage(int)), this, SLOT(ToSeite(int)));
23 Franz 284
}
285
 
202 Franz 286
/*!
287
 \fn void PPreview::ToSeite(int num)
288
 \author Franz Schmid
289
 \date
290
 \brief Jump to newly selected page and create the new preview
291
 \param num int Page Number
292
 \retval None
293
 */
23 Franz 294
void PPreview::ToSeite(int num)
295
{
199 Franz 296
        int n = num-1;
297
        if (n == APage)
23 Franz 298
                return;
199 Franz 299
        Anz->setPixmap(CreatePreview(n, 72));
23 Franz 300
}
301
 
202 Franz 302
/*!
303
 \fn void PPreview::ToggleTextAA()
304
 \author Franz Schmid
305
 \date
306
 \brief Toggle Text anti-aliasing and create the new preview
307
 \param None
308
 \retval None
309
 */
23 Franz 310
void PPreview::ToggleTextAA()
311
{
312
        Anz->setPixmap(CreatePreview(APage, 72));
313
}
314
 
202 Franz 315
/*!
316
 \fn void PPreview::ToggleGr()
317
 \author Franz Schmid
318
 \date
319
 \brief Toggle Graphics anti-aliasing and create the new preview
320
 \param None
321
 \retval None
322
 */
189 Franz 323
void PPreview::ToggleGr()
324
{
325
        Anz->setPixmap(CreatePreview(APage, 72));
326
}
327
 
202 Franz 328
/*!
329
 \fn void PPreview::ToggleTr()
330
 \author Franz Schmid
331
 \date
332
 \brief Toggle transparency and create the new preview
333
 \param None
334
 \retval None
335
 */
189 Franz 336
void PPreview::ToggleTr()
337
{
338
        Anz->setPixmap(CreatePreview(APage, 72));
339
}
340
 
202 Franz 341
/*!
342
 \fn void PPreview::ToggleCMYK()
343
 \author Craig Bradney
344
 \date
345
 \brief When CMYK preview is toggled, (dis)enable the CMYK controls and create the new preview
346
 \param None
347
 \retval None
348
 */
189 Franz 349
void PPreview::ToggleCMYK()
350
{
351
        bool c = EnableCMYK->isChecked() ? true : false;
352
        EnableCMYK_C->setEnabled(c);
353
        EnableCMYK_M->setEnabled(c);
354
        EnableCMYK_Y->setEnabled(c);
355
        EnableCMYK_K->setEnabled(c);
356
        Anz->setPixmap(CreatePreview(APage, 72));
357
}
358
 
344 Franz 359
void PPreview::ToggleGCR()
360
{
361
        Anz->setPixmap(CreatePreview(APage, 72));
362
}
202 Franz 363
/*!
364
 \fn void PPreview::ToggleCMYK_Colour()
365
 \author Craig Bradney
366
 \date
367
 \brief If CMYK preview is enabled, create a new preview with the new CMYK plate settings
368
 \param None
369
 \retval None
370
 */
189 Franz 371
void PPreview::ToggleCMYK_Colour()
372
{
373
        if (EnableCMYK->isChecked())
374
                Anz->setPixmap(CreatePreview(APage, 72));
375
}
376
 
202 Franz 377
/*!
213 Franz 378
 \fn void PPreview::RenderPreview(int Seite, int Res)
202 Franz 379
 \author Franz Schmid
380
 \date
213 Franz 381
 \brief Renders the Preview to a file on Disk
202 Franz 382
 \param Seite int page number
383
 \param Res int
213 Franz 384
 \retval bool Flag indicating succsess
202 Franz 385
 */
213 Franz 386
int PPreview::RenderPreview(int Seite, int Res)
23 Franz 387
{
213 Franz 388
        bool ret = -1;
23 Franz 389
        QString cmd1, cmd2, tmp, tmp2, tmp3;
390
        QMap<QString,QFont> ReallyUsed;
358 Franz 391
        // Recreate Postscript-File only when the actual Page has changed
344 Franz 392
        if ((Seite != APage)  || (EnableGCR->isChecked() != GMode))
189 Franz 393
        {
1284 fschmid 394
                if (app->doc->checkerProfiles[app->doc->curCheckProfile].autoCheck)
395
                {
396
                        app->scanDocument();
397
                        if ((app->doc->docItemErrors.count() != 0) || (app->doc->masterItemErrors.count() != 0))
398
                        {
399
                                if (app->doc->checkerProfiles[app->doc->curCheckProfile].ignoreErrors)
400
                                {
401
                                        qApp->setOverrideCursor(QCursor(ArrowCursor), true);
402
                                        int t = QMessageBox::warning(this, tr("Warning"),
403
                                                                                                tr("Detected some Errors.\nConsider using the Preflight Checker to correct them"),
404
                                                                                                tr("Abort"), tr("Ignore"), 0, 0, 0);
405
                                        if (t == 0)
406
                                        {
1549 subik 407
                                                app->pluginManager->dllReturn = "Failed";
1284 fschmid 408
                                                return ret;
409
                                        }
410
                                }
411
                                else
412
                                {
1545 cbradney 413
                                        app->docCheckerPalette->buildErrorList(app->doc);
414
                                        app->docCheckerPalette->show();
1284 fschmid 415
                                        app->scrActions["toolsPreflightVerifier"]->setOn(true);
1549 subik 416
                                        app->pluginManager->dllReturn = "Failed";
1284 fschmid 417
                                        return ret;
418
                                }
419
                        }
420
                }
213 Franz 421
                ReallyUsed.clear();
422
                app->GetUsedFonts(&ReallyUsed);
423
                PSLib *dd = app->getPSDriver(true, app->Prefs.AvailFonts, ReallyUsed, app->doc->PageColors, false);
424
                if (dd != NULL)
425
                {
426
                        dd->PS_set_file(app->PrefsPfad+"/tmp.ps");
328 Franz 427
                        std::vector<int> pageNs;
428
                        pageNs.push_back(Seite+1);
1861 fschmid 429
                        dd->CreatePS(app->doc, app->view, pageNs, false, tr("All"), true, false, false, false, EnableGCR->isChecked(), false);
213 Franz 430
                        delete dd;
431
                        app->closePSDriver();
432
                }
433
                else
434
                        return ret;
189 Franz 435
        }
2142 cbradney 436
        double b = app->doc->pageWidth * Res / 72;
437
        double h = app->doc->pageHeight * Res / 72;
269 Franz 438
        cmd1 = app->Prefs.gs_exe;
439
        cmd1 += " -q -dNOPAUSE -r"+tmp.setNum(Res)+" -g"+tmp2.setNum(qRound(b))+"x"+tmp3.setNum(qRound(h));
190 Franz 440
        if (EnableCMYK->isChecked())
441
                cmd1 += " -sDEVICE=bitcmyk -dGrayValues=256";
442
        else
358 Franz 443
        {
214 Franz 444
                if ((!AliasTr->isChecked()) || (app->HavePngAlpha != 0))
445
                        cmd1 += " -sDEVICE=png16m";
446
                else
447
                        cmd1 += " -sDEVICE=pngalpha";
358 Franz 448
        }
23 Franz 449
        if (AliasText->isChecked())
450
                cmd1 += " -dTextAlphaBits=4";
451
        if (AliasGr->isChecked())
452
                cmd1 += " -dGraphicsAlphaBits=4";
453
        cmd1 += " -sOutputFile="+app->PrefsPfad+"/sc.png ";
454
        cmd2 = " -c showpage -c quit";
455
        ret = system(cmd1 + app->PrefsPfad+"/tmp.ps" + cmd2);
213 Franz 456
        return ret;
457
}
458
 
459
/*!
460
 \fn QPixmap PPreview::CreatePreview(int Seite, int Res)
461
 \author Franz Schmid
462
 \date
463
 \brief Creates the Preview of the Actual Page
464
 \param Seite int page number
465
 \param Res int
466
 \retval Bild QPixmap print preview
467
 */
468
QPixmap PPreview::CreatePreview(int Seite, int Res)
469
{
470
        int ret = -1;
471
        QPixmap Bild;
2142 cbradney 472
        double b = app->doc->pageWidth * Res / 72;
473
        double h = app->doc->pageHeight * Res / 72;
213 Franz 474
        qApp->setOverrideCursor(QCursor(waitCursor), true);
358 Franz 475
        if ((Seite != APage) || (EnableCMYK->isChecked() != CMode)
476
                || (AliasText->isChecked() != TxtAl) || (AliasGr->isChecked() != GrAl) || (EnableGCR->isChecked() != GMode)
477
                || ((AliasTr->isChecked() != Trans) && (!EnableCMYK->isChecked())))
189 Franz 478
        {
213 Franz 479
                ret = RenderPreview(Seite, Res);
480
                if (ret != 0)
189 Franz 481
                {
213 Franz 482
                        Bild.resize(1,1);
483
                        qApp->setOverrideCursor(QCursor(arrowCursor), true);
484
                        return Bild;
485
                }
486
        }
487
        APage = Seite;
488
        CMode = EnableCMYK->isChecked();
489
        TxtAl = AliasText->isChecked();
490
        GrAl = AliasGr->isChecked();
214 Franz 491
        Trans = AliasTr->isChecked();
344 Franz 492
        GMode = EnableGCR->isChecked();
213 Franz 493
        QImage image;
494
        if (EnableCMYK->isChecked())
495
        {
496
                int w = qRound(b);
497
                int w2 = 4*w;
498
                int h2 = qRound(h);
499
                int cyan, magenta, yellow, black, alpha;
500
                uint *p;
501
                QByteArray imgc(w2);
502
                image = QImage(w, h2, 32);
503
                QFile f(app->PrefsPfad+"/sc.png");
504
                if (f.open(IO_ReadOnly))
505
                {
358 Franz 506
                        for (int y=0; y < h2; ++y )
189 Franz 507
                        {
190 Franz 508
                                p = (uint *)image.scanLine( y );
213 Franz 509
                                f.readBlock(imgc.data(), w2);
358 Franz 510
                                for (int x=0; x < w2; x += 4 )
189 Franz 511
                                {
213 Franz 512
                                        cyan = uchar(imgc[x]);
513
                                        magenta = uchar(imgc[x + 1]);
514
                                        yellow = uchar(imgc[x + 2]);
515
                                        black = uchar(imgc[x + 3]);
191 Franz 516
                                        if (!EnableCMYK_C->isChecked())
517
                                                cyan = 0;
518
                                        if (!EnableCMYK_M->isChecked())
519
                                                magenta = 0;
520
                                        if (!EnableCMYK_Y->isChecked())
521
                                                yellow = 0;
522
                                        if (!EnableCMYK_K->isChecked())
523
                                                black = 0;
213 Franz 524
                                        if (AliasTr->isChecked() && ((cyan == 0) && (magenta == 0) && (yellow == 0 ) && (black == 0)))
525
                                                alpha = 0;
526
                                        else
527
                                                alpha = 255;
528
                                        *p = qRgba(255-QMIN(255, cyan+black), 255-QMIN(255,magenta+black), 255-QMIN(255,yellow+black), alpha);
191 Franz 529
                                        p++;
189 Franz 530
                                }
531
                        }
213 Franz 532
                        f.close();
189 Franz 533
                }
213 Franz 534
        }
535
        else
536
        {
537
                image.load(app->PrefsPfad+"/sc.png");
538
                image = image.convertDepth(32);
214 Franz 539
                if ((AliasTr->isChecked()) && (app->HavePngAlpha == 0))
190 Franz 540
                {
213 Franz 541
                        int wi = image.width();
542
                        int hi = image.height();
358 Franz 543
                        for( int yi=0; yi < hi; ++yi )
213 Franz 544
                        {
545
                                QRgb *s = (QRgb*)(image.scanLine( yi ));
546
                                for(int xi=0; xi < wi; ++xi )
547
                                {
548
                                        if((*s) == 0xffffffff)
549
                                                (*s) &= 0x00ffffff;
550
                                        s++;
551
                                }
358 Franz 552
                        }
190 Franz 553
                }
213 Franz 554
        }
555
        image.setAlphaBuffer(true);
214 Franz 556
        if (AliasTr->isChecked())
557
        {
558
                Bild = QPixmap(image.width(), image.height());
559
                QPainter p;
560
                QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
561
                p.begin(&Bild);
562
                p.fillRect(0, 0, image.width(), image.height(), b);
563
                p.drawImage(0, 0, image);
564
                p.end();
565
        }
566
        else
358 Franz 567
                Bild.convertFromImage(image);
213 Franz 568
        qApp->setOverrideCursor(QCursor(arrowCursor), true);
23 Franz 569
        return Bild;
570
}
571