Author: jghali
Date: Sat Sep 12 20:59:12 2020
New Revision: 24010

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24010
Log:
Preparation for PDF-based printing support: move print preview generation code 
out of print preview dialog

Added:
    trunk/Scribus/scribus/printpreviewcreator.cpp
    trunk/Scribus/scribus/printpreviewcreator.h
    trunk/Scribus/scribus/printpreviewcreator_gdi.cpp
    trunk/Scribus/scribus/printpreviewcreator_gdi.h
    trunk/Scribus/scribus/printpreviewcreator_pdf.cpp
    trunk/Scribus/scribus/printpreviewcreator_pdf.h
    trunk/Scribus/scribus/printpreviewcreator_ps.cpp
    trunk/Scribus/scribus/printpreviewcreator_ps.h
    trunk/Scribus/scribus/printpreviewcreatorfactory.cpp
    trunk/Scribus/scribus/printpreviewcreatorfactory.h
Modified:
    trunk/Scribus/scribus/CMakeLists.txt
    
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
    trunk/Scribus/scribus/plugins/scriptplugin/objprinter.cpp
    trunk/Scribus/scribus/plugins/scriptplugin_py2x/objprinter.cpp
    trunk/Scribus/scribus/scprintengine_gdi.cpp
    trunk/Scribus/scribus/scprintengine_pdf.h
    trunk/Scribus/scribus/scprintengine_ps.cpp
    trunk/Scribus/scribus/scribusstructs.h
    trunk/Scribus/scribus/ui/outputpreview_pdf.cpp
    trunk/Scribus/scribus/ui/outputpreview_ps.cpp
    trunk/Scribus/scribus/ui/outputpreview_ps.h
    trunk/Scribus/scribus/ui/printdialog.cpp
    trunk/Scribus/scribus/ui/printpreview.cpp
    trunk/Scribus/scribus/ui/printpreview.h
    trunk/Scribus/scribus/util_printer.cpp
    trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj
    trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters
    trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj
    trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj.filters
    trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj
    trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj.filters

Modified: trunk/Scribus/scribus/CMakeLists.txt
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/CMakeLists.txt
==============================================================================
--- trunk/Scribus/scribus/CMakeLists.txt        (original)
+++ trunk/Scribus/scribus/CMakeLists.txt        Sat Sep 12 20:59:12 2020
@@ -707,6 +707,10 @@
        prefsmanager.cpp
        prefsreader.cpp
        prefstable.cpp
+       printpreviewcreator.cpp
+       printpreviewcreator_pdf.cpp
+       printpreviewcreator_ps.cpp
+       printpreviewcreatorfactory.cpp
        pslib.cpp
        qtiocompressor.cpp
        rawimage.cpp
@@ -1106,6 +1110,7 @@
 if(WIN32)
        set(SCRIBUS_MOC_WIN32_ONLY_CLASSES scprintengine_gdi.h)
        set(SCRIBUS_WIN32_ONLY_SOURCES
+               printpreviewcreator_gdi.cpp
                scpainterex_cairo.cpp
                scprintengine_gdi.cpp
                )

Modified: 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
==============================================================================
--- 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
 (original)
+++ 
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
 Sat Sep 12 20:59:12 2020
@@ -1111,8 +1111,8 @@
        docu.writeAttribute("registrationMarks", 
static_cast<int>(m_Doc->Print_Options.registrationMarks));
        docu.writeAttribute("colorMarks", 
static_cast<int>(m_Doc->Print_Options.colorMarks));
        docu.writeAttribute("includePDFMarks", 
static_cast<int>(m_Doc->Print_Options.includePDFMarks));
-       docu.writeAttribute("PSLevel", (m_Doc->Print_Options.prnEngine < 
WindowsGDI) ? m_Doc->Print_Options.prnEngine : PostScript3);
-       docu.writeAttribute("PDLanguage" , m_Doc->Print_Options.prnEngine);
+       docu.writeAttribute("PSLevel", (int) ((m_Doc->Print_Options.prnEngine < 
PrintEngine::WindowsGDI) ? m_Doc->Print_Options.prnEngine : 
PrintEngine::PostScript3));
+       docu.writeAttribute("PrintEngine" , (int) 
m_Doc->Print_Options.prnEngine);
        docu.writeAttribute("markLength" , m_Doc->Print_Options.markLength);
        docu.writeAttribute("markOffset" , m_Doc->Print_Options.markOffset);
        docu.writeAttribute("BleedTop"   , m_Doc->Print_Options.bleeds.top());

Modified: trunk/Scribus/scribus/plugins/scriptplugin/objprinter.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/plugins/scriptplugin/objprinter.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin/objprinter.cpp   (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin/objprinter.cpp   Sat Sep 12 
20:59:12 2020
@@ -469,7 +469,7 @@
                return nullptr;
        }
 
-       if (options.prnEngine == PostScript1 || options.prnEngine == 
PostScript2)
+       if (options.prnEngine == PrintEngine::PostScript1 || options.prnEngine 
== PrintEngine::PostScript2)
        {
                if (ScCore->haveGS())
                {
@@ -477,7 +477,7 @@
                        QStringList opts;
                        opts.append( 
QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(currentDoc->pageWidth())) );
                        opts.append( 
QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(currentDoc->pageHeight())) );
-                       convertPS2PS(fna, fna+".tmp", opts, options.prnEngine);
+                       convertPS2PS(fna, fna + ".tmp", opts, (int) 
options.prnEngine);
                        moveFile( fna + ".tmp", fna );
                }
                else

Modified: trunk/Scribus/scribus/plugins/scriptplugin_py2x/objprinter.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/plugins/scriptplugin_py2x/objprinter.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin_py2x/objprinter.cpp      
(original)
+++ trunk/Scribus/scribus/plugins/scriptplugin_py2x/objprinter.cpp      Sat Sep 
12 20:59:12 2020
@@ -469,7 +469,7 @@
                return nullptr;
        }
 
-       if (options.prnEngine == PostScript1 || options.prnEngine == 
PostScript2)
+       if (options.prnEngine == PrintEngine::PostScript1 || options.prnEngine 
== PrintEngine::PostScript2)
        {
                if (ScCore->haveGS())
                {
@@ -477,7 +477,7 @@
                        QStringList opts;
                        opts.append( 
QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(currentDoc->pageWidth())) );
                        opts.append( 
QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(currentDoc->pageHeight())) );
-                       convertPS2PS(fna, fna+".tmp", opts, options.prnEngine);
+                       convertPS2PS(fna, fna + ".tmp", opts, (int) 
options.prnEngine);
                        moveFile( fna + ".tmp", fna );
                }
                else

Modified: trunk/Scribus/scribus/scprintengine_gdi.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/scprintengine_gdi.cpp
==============================================================================
--- trunk/Scribus/scribus/scprintengine_gdi.cpp (original)
+++ trunk/Scribus/scribus/scprintengine_gdi.cpp Sat Sep 12 20:59:12 2020
@@ -216,7 +216,7 @@
        // Test printer for PostScript support and
        // choose appropriate page printing function
        bool psPrint  = isPostscriptPrinter(printerDC);
-       bool useGDI   = (!psPrint || m_forceGDI || (options.prnEngine == 
WindowsGDI));
+       bool useGDI   = (!psPrint || m_forceGDI || (options.prnEngine == 
PrintEngine::WindowsGDI));
        printPageFunc = (useGDI) ? &ScPrintEngine_GDI::printPage_GDI : 
&ScPrintEngine_GDI::printPage_PS;
 
        // Setup document infos structure
@@ -442,7 +442,7 @@
        delete dd;
        if (ret != 0) return false;
 
-       if (options.prnEngine == PostScript1 || options.prnEngine == 
PostScript2)
+       if (options.prnEngine == PrintEngine::PostScript1 || options.prnEngine 
== PrintEngine::PostScript2)
        {
                QString tmp;
                QStringList opts;
@@ -451,7 +451,7 @@
                opts.append( 
QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(m_doc.pageHeight())));
                if (QFile::exists(tempFilePath2))
                        QFile::remove(tempFilePath2);
-               ret = convertPS2PS(tempFilePath, tempFilePath2, opts, 
options.prnEngine);
+               ret = convertPS2PS(tempFilePath, tempFilePath2, opts, (int) 
options.prnEngine);
                if (ret == 0)
                {
                        QFile::remove(tempFilePath);

Modified: trunk/Scribus/scribus/scprintengine_pdf.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/scprintengine_pdf.h
==============================================================================
--- trunk/Scribus/scribus/scprintengine_pdf.h   (original)
+++ trunk/Scribus/scribus/scprintengine_pdf.h   Sat Sep 12 20:59:12 2020
@@ -12,6 +12,8 @@
 
 class ScPrintEngine_PDF : public ScPrintEngine
 {
+       friend class PrintPreviewCreator_PDF;
+
 public:
        ScPrintEngine_PDF(ScribusDoc& doc);
        ~ScPrintEngine_PDF() {}

Modified: trunk/Scribus/scribus/scprintengine_ps.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/scprintengine_ps.cpp
==============================================================================
--- trunk/Scribus/scribus/scprintengine_ps.cpp  (original)
+++ trunk/Scribus/scribus/scprintengine_ps.cpp  Sat Sep 12 20:59:12 2020
@@ -42,14 +42,14 @@
                m_errorMessage = dd->errorMessage();
                return false;
        }
-       if (options.prnEngine != PostScript3 && ScCore->haveGS())
+       if (options.prnEngine != PrintEngine::PostScript3 && ScCore->haveGS())
        {
                // use gs to convert our PS to a lower version
                QString tmp;
                QStringList opts;
                opts.append( 
QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(m_doc.pageWidth())) );
                opts.append( 
QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(m_doc.pageHeight())) );
-               convertPS2PS(filename, filename + ".tmp", opts, 
options.prnEngine);
+               convertPS2PS(filename, filename + ".tmp", opts, (int) 
options.prnEngine);
                moveFile(filename + ".tmp", filename);
        }
        if (options.toFile)

Modified: trunk/Scribus/scribus/scribusstructs.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/scribusstructs.h
==============================================================================
--- trunk/Scribus/scribus/scribusstructs.h      (original)
+++ trunk/Scribus/scribus/scribusstructs.h      Sat Sep 12 20:59:12 2020
@@ -212,12 +212,13 @@
        int menuPos;
 };
 
-enum PrintEngine
+enum class PrintEngine
 {
        PostScript1 = 1,
        PostScript2 = 2,
        PostScript3 = 3,
-       WindowsGDI  = 4
+       WindowsGDI  = 4,
+       PDF         = 5
 };
 typedef QMap<QString, PrintEngine> PrintEngineMap;
 
@@ -241,7 +242,7 @@
        bool colorMarks { false };
        bool includePDFMarks { true };
        int  copies { 1 };
-       PrintEngine prnEngine { PostScript3 };
+       PrintEngine prnEngine { PrintEngine::PostScript3 };
        double markLength { 20.0 };
        double markOffset { 0.0 };
        MarginStruct bleeds;

Modified: trunk/Scribus/scribus/ui/outputpreview_pdf.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/outputpreview_pdf.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/outputpreview_pdf.cpp      (original)
+++ trunk/Scribus/scribus/ui/outputpreview_pdf.cpp      Sat Sep 12 20:59:12 2020
@@ -59,7 +59,7 @@
                QStringList spots = usedSpots.keys();
 
                m_inkMax = (spots.count() + 4) * 255;
-               m_optionsUi->coverThresholdValue->setMaximum(m_inkMax * 100.0);
+               m_optionsUi->coverThresholdValue->setMaximum((spots.count() + 
4) * 100.0);
 
                m_optionsUi->inkTable->setColumnCount(2);
                m_optionsUi->inkTable->setRowCount(4 + spots.count());
@@ -205,6 +205,8 @@
 
        connect(m_optionsUi->antiAliasing, SIGNAL(clicked()), this, 
SLOT(redisplay()));
        connect(m_optionsUi->showTransparency, SIGNAL(clicked()), this, 
SLOT(redisplay()));
+
+       connect(m_optionsUi->coverThresholdValue, SIGNAL(valueChanged(double)), 
this, SLOT(toggleCMYK_Colour()));
 }
 
 OutputPreview_PDF::~OutputPreview_PDF()

Modified: trunk/Scribus/scribus/ui/outputpreview_ps.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/outputpreview_ps.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/outputpreview_ps.cpp       (original)
+++ trunk/Scribus/scribus/ui/outputpreview_ps.cpp       Sat Sep 12 20:59:12 2020
@@ -66,7 +66,7 @@
                QStringList spots = usedSpots.keys();
 
                m_inkMax = (spots.count() + 4) * 255;
-               m_optionsUi->coverThresholdValue->setMaximum(m_inkMax * 100.0);
+               m_optionsUi->coverThresholdValue->setMaximum((spots.count() + 
4) * 100.0);
 
                m_optionsUi->inkTable->setColumnCount(2);
                m_optionsUi->inkTable->setRowCount(4 + spots.count());
@@ -189,7 +189,7 @@
 
        if (m_printOptions.firstUse)
                PrinterUtil::getDefaultPrintOptions(m_printOptions, 
m_doc->bleedsVal());
-       m_printOptions.prnEngine = PostScript3;
+       m_printOptions.prnEngine = PrintEngine::PostScript3;
        m_printOptions.outputSeparations = false;
        m_printOptions.separationName = "All";
        m_printOptions.allSeparations = QStringList();
@@ -227,6 +227,8 @@
 
        connect(m_optionsUi->antiAliasing, SIGNAL(clicked()), this, 
SLOT(redisplay()));
        connect(m_optionsUi->showTransparency, SIGNAL(clicked()), this, 
SLOT(redisplay()));
+
+       connect(m_optionsUi->coverThresholdValue, SIGNAL(valueChanged(double)), 
this, SLOT(toggleCMYK_Colour()));
 }
 
 OutputPreview_PS::~OutputPreview_PS()
@@ -575,7 +577,7 @@
        delete psLib;
 
        // TODO : Postscript level < 3
-       if (success && (m_printOptions.prnEngine != PostScript3))
+       if (success && (m_printOptions.prnEngine != PrintEngine::PostScript3))
        {
                // use gs to convert our PS to a lower version
                QStringList opts;
@@ -588,7 +590,7 @@
                opts.append( 
QString("-dDEVICEHEIGHTPOINTS=%1").arg(QString::number(pageHeight)) );
 
                QString outFileName = ScPaths::tempFileDir() + "/"  + 
m_tempBaseName + ".ps" + QString::number((int) m_printOptions.prnEngine);
-               success = (convertPS2PS(psFileName, outFileName, opts, 
m_printOptions.prnEngine) == 0);
+               success = (convertPS2PS(psFileName, outFileName, opts, (int) 
m_printOptions.prnEngine) == 0);
                if (!success)
                        return false;
                success &= QFile::remove(psFileName);

Modified: trunk/Scribus/scribus/ui/outputpreview_ps.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/outputpreview_ps.h
==============================================================================
--- trunk/Scribus/scribus/ui/outputpreview_ps.h (original)
+++ trunk/Scribus/scribus/ui/outputpreview_ps.h Sat Sep 12 20:59:12 2020
@@ -54,7 +54,7 @@
        bool m_haveTiffSep { false };
        int  m_gsVersion { 0 };
 
-       // PDF export options
+       // PS export options
        int  m_psLevel;
        int  m_colorOutputMode { 0 };
        bool m_cmykPreviewMode { false };

Modified: trunk/Scribus/scribus/ui/printdialog.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/printdialog.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/printdialog.cpp    (original)
+++ trunk/Scribus/scribus/ui/printdialog.cpp    Sat Sep 12 20:59:12 2020
@@ -310,7 +310,7 @@
 
 void PrintDialog::selectEngine(const QString& eng)
 {
-       prefs->set("CurrentPrnEngine", 
m_printEngineMap[printEngines->currentText()]);
+       prefs->set("CurrentPrnEngine", (int) 
m_printEngineMap[printEngines->currentText()]);
        bool psSupported = outputToFile();
        psSupported |= (eng == CommonStrings::trPostScript1);
        psSupported |= (eng == CommonStrings::trPostScript2);
@@ -365,7 +365,7 @@
        refreshPrintEngineBox();
 
        prefs->set("CurrentPrn", prn);
-       prefs->set("CurrentPrnEngine", 
m_printEngineMap[printEngines->currentText()]);
+       prefs->set("CurrentPrnEngine", (int) 
m_printEngineMap[printEngines->currentText()]);
        
        bool ps1Supported = 
m_printEngineMap.contains(CommonStrings::trPostScript1);
        bool ps2Supported = 
m_printEngineMap.contains(CommonStrings::trPostScript2);
@@ -727,7 +727,7 @@
                printEngines->setCurrentIndex(itemIndex);
        else if (printEngines->count() > 0)
        {
-               pdlString = m_printEngineMap.key(PostScript3, "");
+               pdlString = m_printEngineMap.key(PrintEngine::PostScript3, "");
                itemIndex = printEngines->findText(pdlString);
                if (itemIndex >= 0)
                        printEngines->setCurrentIndex(itemIndex);

Modified: trunk/Scribus/scribus/ui/printpreview.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/printpreview.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/printpreview.cpp   (original)
+++ trunk/Scribus/scribus/ui/printpreview.cpp   Sat Sep 12 20:59:12 2020
@@ -55,6 +55,8 @@
 #include "prefsfile.h"
 #include "prefsmanager.h"
 #include "prefstable.h"
+#include "printpreviewcreator.h"
+#include "printpreviewcreatorfactory.h"
 #include "pslib.h"
 #include "sccolor.h"
 #include "sccolorengine.h"
@@ -92,6 +94,8 @@
        havePngAlpha = ScCore->havePNGAlpha();
        haveTiffSep  = postscriptPreview ? ScCore->haveTIFFSep() : false;
        getNumericGSVersion(m_gsVersion);
+
+       m_previewCreator = PrintPreviewCreatorFactory::create(docu, 
postscriptPreview ? PrintEngine::PostScript3 : PrintEngine::WindowsGDI);
 
        PLayout = new QVBoxLayout(this);
        PLayout->setMargin(0);
@@ -134,8 +138,7 @@
                doc->getUsedColors(usedSpots, true);
                QStringList spots = usedSpots.keys();
 
-               inkTable = new QTableWidget(spots.count()+4, 2, devTitle );
-               m_inkMax = (spots.count() + 4) * 255;
+               inkTable = new QTableWidget(spots.count() + 4, 2, devTitle );
                inkTable->setHorizontalHeaderItem(0, new 
QTableWidgetItem(IconManager::instance().loadIcon("16/show-object.png"), ""));
                inkTable->setHorizontalHeaderItem(1, new QTableWidgetItem( 
tr("Separation Name")));
                QHeaderView *header = inkTable->horizontalHeader();
@@ -292,7 +295,7 @@
        setValues();
        previewLabel = new QLabel(this);
        previewLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
-       previewLabel->setPixmap(CreatePreview(doc->currentPage()->pageNr(), 
72));
+       previewLabel->setPixmap(createPreview(doc->currentPage()->pageNr(), 
72));
        previewLabel->resize(previewLabel->pixmap()->size());
        previewArea->setWidget(previewLabel);
        int w = previewLabel->width() + tbWidth + 50;
@@ -340,6 +343,12 @@
                for (uint i = 0; i < d.count(); i++)
                        QFile::remove(tempFileDir + "/" + d[i]);
        }
+
+       if (m_previewCreator)
+       {
+               delete m_previewCreator;
+               m_previewCreator = nullptr;
+       }
 }
 
 void PrintPreview::setValues()
@@ -375,14 +384,14 @@
        int n = num-1;
        if (n == m_currentPage)
                return;
-       QPixmap previewPix = CreatePreview(n, qRound(72 * scaleFactor));
+       QPixmap previewPix = createPreview(n, qRound(72 * scaleFactor));
        previewLabel->setPixmap(previewPix);
        previewLabel->resize(previewPix.size());
 }
 
 void PrintPreview::redisplay()
 {
-       QPixmap previewPix = CreatePreview(m_currentPage, qRound(72 * 
scaleFactor));
+       QPixmap previewPix = createPreview(m_currentPage, qRound(72 * 
scaleFactor));
        previewLabel->setPixmap(previewPix);
        previewLabel->resize(previewPix.size());
 }
@@ -410,7 +419,7 @@
                        coverThresholdValue->setEnabled(false);
        }
        if (enableCMYK->isChecked())
-               previewLabel->setPixmap(CreatePreview(m_currentPage, qRound(72 
* scaleFactor)));
+               previewLabel->setPixmap(createPreview(m_currentPage, qRound(72 
* scaleFactor)));
        previewLabel->resize(previewLabel->pixmap()->size());
 }
 
@@ -424,7 +433,7 @@
        ((QCheckBox*)(inkTable->cellWidget(row, 0)))->setChecked(true);
 
        if (enableCMYK->isChecked())
-               previewLabel->setPixmap(CreatePreview(m_currentPage, qRound(72 
* scaleFactor)));
+               previewLabel->setPixmap(createPreview(m_currentPage, qRound(72 
* scaleFactor)));
        previewLabel->resize(previewLabel->pixmap()->size());
 }
 
@@ -437,7 +446,7 @@
                sepIt.value()->setChecked(true);
 
        if (enableCMYK->isChecked())
-               previewLabel->setPixmap(CreatePreview(m_currentPage, qRound(72 
* scaleFactor)));
+               previewLabel->setPixmap(createPreview(m_currentPage, qRound(72 
* scaleFactor)));
        previewLabel->resize(previewLabel->pixmap()->size());
 }
 
@@ -473,37 +482,17 @@
        redisplay();
 }
 
-int PrintPreview::RenderPreview(int pageIndex, int res)
+QPixmap PrintPreview::createPreview(int pageIndex, int res)
 {
        int ret = -1;
-       QString cmd1;
-#if defined _WIN32
-       if (!postscriptPreview)
-       {
-               QImage image;
-               ScPage* page;
-               ScPrintEngine_GDI winPrint(*doc);
-               PrintOptions options;
-               page = doc->Pages->at(pageIndex);
-               options.copies = 1;
-               options.doGCR = false;
-               options.mirrorH = mirrorHor->isChecked();
-               options.mirrorV = mirrorVert->isChecked();
-               options.outputSeparations = false;
-               options.pageNumbers.push_back(pageIndex);
-               options.prnEngine = WindowsGDI;
-               options.separationName = "All";
-               options.toFile = false;
-               options.useColor = !useGray->isChecked();
-               options.useSpotColors = false;
-               bool done = winPrint.gdiPrintPreview(page, &image, options, res 
/ 72.0);
-               if (done)
-                       image.save( ScPaths::tempFileDir() + "/sc.png", "PNG" );
-               return (done ? 0 : 1);
-       }
-#endif
-       // Recreate Postscript-File only when the actual Page has changed
-       if ((pageIndex != m_currentPage)  || (enableGCR->isChecked() != 
m_useGCR)  || (useGray->isChecked() != m_useGray)
+       QPixmap pixmap;
+       double b = doc->Pages->at(pageIndex)->width() * res / 72.0;
+       double h = doc->Pages->at(pageIndex)->height() * res / 72.0;
+
+       qApp->setOverrideCursor(QCursor(Qt::WaitCursor));
+
+       // Recreate Postscript-File only when necessary
+       if ((pageIndex != m_currentPage)  || (enableGCR->isChecked() != 
m_useGCR) || (useGray->isChecked() != m_useGray)
                || (mirrorHor->isChecked() != m_mirrorH) || 
(mirrorVert->isChecked() != m_mirrorV) || (clipMargins->isChecked() != 
m_clipToMargins)
                || (spotColors->isChecked() != m_convertSpots))
        {
@@ -527,611 +516,32 @@
                options.markLength = 20.0;
                options.markOffset = 0.0;
                options.bleeds.set(0, 0, 0, 0);
-               PSLib *dd = new PSLib(doc, options, PSLib::OutputPS, 
&doc->PageColors);
-               if (!dd)
-                       return ret;
-               ret = dd->createPS(ScPaths::tempFileDir() + "/tmp.ps");
-               delete dd;
-               if (ret != 0) return 1;
-       }
-       QStringList args;
-       QString tmp, tmp2, tmp3;
-       double b = doc->Pages->at(pageIndex)->width() * res / 72.0;
-       double h = doc->Pages->at(pageIndex)->height() * res / 72.0;
-       if (doc->Pages->at(pageIndex)->orientation() == 1)
-               std::swap(b, h);
-       args.append( "-q" );
-       args.append( "-dNOPAUSE" );
-       args.append( "-dPARANOIDSAFER" );
-       args.append( QString("-r%1").arg(tmp.setNum(res)) );
-       args.append( QString("-g%1x%2").arg(tmp2.setNum(qRound(b)), 
tmp3.setNum(qRound(h))) );
-       if (enableCMYK->isChecked())
-       {
-               if (haveTiffSep)
-                       args.append( "-sDEVICE=tiffsep" );
-               else
-                       return 1;
-       }
-       else
-       {
-               if (showTransparency->isChecked() && havePngAlpha)
-                       args.append("-sDEVICE=pngalpha");
-               else
-                       args.append("-sDEVICE=tiff24nc");       
-       }
-       if (antiAliasing->isChecked())
-       {
-               args.append( "-dTextAlphaBits=4" );
-               args.append( "-dGraphicsAlphaBits=4" );
-       }
-       if ((doc->HasCMS) && (m_gsVersion >= 900))
-       {
-               args.append("-sDefaultCMYKProfile=" + 
QDir::toNativeSeparators(doc->DocPrinterProf.profilePath()));
-               if (enableCMYK->isChecked())
-                       args.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(doc->DocPrinterProf.profilePath()));
-               else
-                       args.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(doc->DocDisplayProf.profilePath()));
-       }
-       else if (ScCore->haveCMS() && (m_gsVersion >= 900))
-       {
-               args.append("-sDefaultCMYKProfile=" + 
QDir::toNativeSeparators(ScCore->defaultCMYKProfile.profilePath()));
-               if (enableCMYK->isChecked())
-                       args.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(ScCore->defaultCMYKProfile.profilePath()));
-               else
-                       args.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(ScCore->defaultRGBProfile.profilePath()));
-       }
-       // Add any extra font paths being used by Scribus to gs's font search 
path
-       PrefsContext *pc = prefsManager.prefsFile->getContext("Fonts");
-       PrefsTable *extraFonts = pc->getTable("ExtraFontDirs");
-       const char sep = ScPaths::envPathSeparator;
-       if (extraFonts->getRowCount() >= 1)
-               cmd1 = 
QString("-sFONTPATH=%1").arg(QDir::toNativeSeparators(extraFonts->get(0,0)));
-       for (int i = 1; i < extraFonts->getRowCount(); ++i)
-               cmd1 += 
QString("%1%2").arg(sep).arg(QDir::toNativeSeparators(extraFonts->get(i,0)));
-       if (!cmd1.isEmpty())
-               args.append( cmd1 );
-       // then add any final args and call gs
-       if (enableCMYK->isChecked())
-               args.append( 
QString("-sOutputFile=%1").arg(QDir::toNativeSeparators(ScPaths::tempFileDir() 
+ "/sc.tif")) );
-       else if ((showTransparency->isChecked() && havePngAlpha) || 
!postscriptPreview)
-               args.append( 
QString("-sOutputFile=%1").arg(QDir::toNativeSeparators(ScPaths::tempFileDir() 
+ "/sc.png")) );
-       else
-               
args.append(QString("-sOutputFile=%1").arg(QDir::toNativeSeparators(ScPaths::tempFileDir()
 + "/sc.tif")));
-       args.append( QDir::toNativeSeparators(ScPaths::tempFileDir() + 
"/tmp.ps") );
-       args.append( "-c" );
-       args.append( "showpage" );
-       args.append( "-c" );
-       args.append( "quit" );
-       ret = System(getShortPathName(prefsManager.ghostscriptExecutable()), 
args);
-       return ret;
-}
-
-int PrintPreview::RenderPreviewSep(int pageIndex, int res)
-{
-       int ret = -1;
-       QString cmd;
-       QStringList args, args1, args2, args3;
-       // Recreate Postscript-File only when the actual Page has changed
-       if ((pageIndex != m_currentPage)  || (enableGCR->isChecked() != 
m_useGCR) || (useGray->isChecked() != m_useGray)
-               || (mirrorHor->isChecked() != m_mirrorH) || 
(mirrorVert->isChecked() != m_mirrorV) || (clipMargins->isChecked() != 
m_clipToMargins)
-               || (spotColors->isChecked() != m_convertSpots))
-       {
-               PrintOptions options;
-               options.pageNumbers.push_back(pageIndex + 1);
-               options.outputSeparations = false;
-               options.separationName = "All";
-               options.allSeparations = QStringList();
-               options.useSpotColors = !spotColors->isChecked();
-               options.useColor = !useGray->isChecked();
-               options.mirrorH = mirrorHor->isChecked();
-               options.mirrorV = mirrorVert->isChecked();
-               options.doGCR = enableGCR->isChecked();
-               options.setDevParam = false;
-               options.doClip = clipMargins->isChecked();
-               options.cropMarks = false;
-               options.bleedMarks = false;
-               options.registrationMarks = false;
-               options.colorMarks = false;
-               options.includePDFMarks = false;
-               options.markLength = 20.0;
-               options.markOffset = 0.0;
-               options.bleeds.set(0, 0, 0, 0);
-               PSLib *dd = new PSLib(doc, options, PSLib::OutputPS, 
&doc->PageColors);
-               if (!dd)
-                       return -1;
-               ret = dd->createPS(ScPaths::tempFileDir() + "/tmp.ps");
-               delete dd;
-               if (ret != 0) return 1;
-       }
-       QString tmp, tmp2, tmp3;
-       double b = doc->Pages->at(pageIndex)->width() * res / 72.0;
-       double h = doc->Pages->at(pageIndex)->height() * res / 72.0;
-       if (doc->Pages->at(pageIndex)->orientation() == 1)
-               std::swap(b, h);
-
-       args1.append( "-q" );
-       args1.append( "-dNOPAUSE" );
-       args1.append( "-dPARANOIDSAFER" );
-       args1.append( QString("-r%1").arg(tmp.setNum(res)) );
-       args1.append( QString("-g%1x%2").arg(tmp2.setNum(qRound(b)), 
tmp3.setNum(qRound(h))) );
-       if (antiAliasing->isChecked())
-       {
-               args1.append("-dTextAlphaBits=4");
-               args1.append("-dGraphicsAlphaBits=4");
-       }
-       if ((doc->HasCMS) && (m_gsVersion >= 900))
-       {
-               args1.append("-sDefaultCMYKProfile=" + 
QDir::toNativeSeparators(doc->DocPrinterProf.profilePath()));
-               args1.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(doc->DocPrinterProf.profilePath()));
-       }
-       else if (ScCore->haveCMS() && (m_gsVersion >= 900))
-       {
-               args.append("-sDefaultCMYKProfile=" + 
QDir::toNativeSeparators(ScCore->defaultCMYKProfile.profilePath()));
-               args.append("-sOutputICCProfile=" + 
QDir::toNativeSeparators(ScCore->defaultCMYKProfile.profilePath()));
-       }
-       // Add any extra font paths being used by Scribus to gs's font search 
path
-       PrefsContext *pc = prefsManager.prefsFile->getContext("Fonts");
-       PrefsTable *extraFonts = pc->getTable("ExtraFontDirs");
-       const char sep = ScPaths::envPathSeparator;
-       if (extraFonts->getRowCount() >= 1)
-               cmd = 
QString("-sFONTPATH=%1").arg(QDir::toNativeSeparators(extraFonts->get(0,0)));
-       for (int i = 1; i < extraFonts->getRowCount(); ++i)
-               cmd += 
QString("%1%2").arg(sep).arg(QDir::toNativeSeparators(extraFonts->get(i,0)));
-       if (!cmd.isEmpty())
-               args1.append(cmd);
-       args1.append( 
QString("-sOutputFile=%1").arg(QDir::toNativeSeparators(ScPaths::tempFileDir() 
+ "/sc.tif")) );
-
-       args2.append( QDir::toNativeSeparators(ScPaths::tempFileDir() + 
"/tmp.ps") );
-       args2.append("-c");
-       args2.append("quit");
-
-       ColorList usedSpots;
-       doc->getUsedColors(usedSpots, true);
-       QStringList spots = usedSpots.keys();
-       args3.append( "-sDEVICE=tiffsep" );
-
-//     args3.append( "-c" );
-       cmd = "<< /SeparationColorNames ";
-       QString allSeps ="[ /Cyan /Magenta /Yellow /Black ";
-       for (int sp = 0; sp < spots.count(); ++sp)
-       {
-               allSeps += "(" + spots[sp] + ") ";
-       }
-       allSeps += "]";
-       cmd += allSeps + " /SeparationOrder [ /Cyan /Magenta /Yellow /Black] >> 
setpagedevice";
-       QFile fx(QDir::toNativeSeparators(ScPaths::tempFileDir() + "/sep.ps"));
-       if (fx.open(QIODevice::WriteOnly))
-       {
-               QTextStream tsx(&fx);
-               tsx << cmd;
-               fx.close();
-       }
-//     args3.append("-f");
-//     args3.append(QDir::toNativeSeparators(ScPaths::getTempFileDir() + 
"/sep.ps"));
-//     args3.append(cmd);
-
-//     args3.append("-f");
-       QString gsExe(getShortPathName(prefsManager.ghostscriptExecutable()));
-       ret = System(gsExe, args1 + args3 + args2, ScPaths::tempFileDir() + 
"/sc.tif.txt" );
-
-       QFile sepInfo(QDir::toNativeSeparators(ScPaths::tempFileDir() + 
"/sc.tif.txt"));
-       sepsToFileNum.clear();
-       if (sepInfo.open(QIODevice::ReadOnly))
-       {
-               QString Sname;
-               QTextStream tsC(&sepInfo);
-               int counter = 0;
-               while (!tsC.atEnd())
+               m_previewCreator->setPrintOptions(options);
+       }
+
+       m_previewCreator->setPreviewResolution(res);
+       m_previewCreator->setAntialisingEnabled(antiAliasing->isChecked());
+       m_previewCreator->setShowTransparency(showTransparency->isChecked());
+       
+       SeparationPreviewCreator* sepPreviewCreator = 
dynamic_cast<SeparationPreviewCreator*>(m_previewCreator);
+       if (sepPreviewCreator)
+       {
+               
sepPreviewCreator->setSeparationPreviewEnabled(enableCMYK->isChecked());
+               
sepPreviewCreator->setShowInkCoverage(enableInkCover->isChecked());
+               
sepPreviewCreator->setInkCoverageThreshold(coverThresholdValue->value());
+
+               QStringList separationNames = 
sepPreviewCreator->separationNames();
+               for (int i = 0; i < separationNames.count(); ++i)
                {
-                       Sname = tsC.readLine();
-                       QString tt = 
Sname.remove("%%SeparationName:").trimmed();
-                       if (!tt.isEmpty())
-                       {
-                               sepsToFileNum.insert(tt, counter);
-                               counter++;
-                       }
+                       const QString& separationName = separationNames.at(i);
+                       const QCheckBox* checkBox = 
flagsVisible.value(separationName, nullptr);
+                       if (checkBox)
+                               
sepPreviewCreator->setSeparationVisible(separationName, checkBox->isChecked());
                }
        }
-       sepInfo.close();
-       QString currSeps = "";
-       uint spc = 0;
-       for (int sp = 0; sp < spots.count(); ++sp)
-       {
-               currSeps += "("+spots[sp]+") ";
-               spc++;
-               if (sp > 6)
-               {
-                       args3.clear();
-                       args3.append("-sDEVICE=tiffsep");
-                       QFile 
fx(QDir::toNativeSeparators(ScPaths::tempFileDir() + "/sep.ps"));
-                       if (fx.open(QIODevice::WriteOnly))
-                       {
-                               QTextStream tsx(&fx);
-                               tsx << QString("<< /SeparationColorNames " + 
allSeps + " /SeparationOrder [ " + currSeps + " ] >> setpagedevice");
-                               fx.close();
-                       }
-                       args3.append("-f");
-                       
args3.append(QDir::toNativeSeparators(ScPaths::tempFileDir() + "/sep.ps"));
-       //              args3.append("-c");
-       //              args3.append("<< /SeparationColorNames "+allSeps+" 
/SeparationOrder [ "+currSeps+" ] >> setpagedevice");
-       //              args3.append("-f");
-                       ret = System(gsExe, args1 + args3 + args2);
-                       currSeps = "";
-                       spc = 0;
-               }
-       }
-       if (spc != 0)
-       {
-               args3.clear();
-               args3.append("-sDEVICE=tiffsep");
-               QFile fx(QDir::toNativeSeparators(ScPaths::tempFileDir() + 
"/sep.ps"));
-               if (fx.open(QIODevice::WriteOnly))
-               {
-                       QTextStream tsx(&fx);
-                       tsx << QString("<< /SeparationColorNames " + allSeps+" 
/SeparationOrder [ " + currSeps + " ] >> setpagedevice");
-                       fx.close();
-               }
-               args3.append("-f");
-               args3.append(QDir::toNativeSeparators(ScPaths::tempFileDir() + 
"/sep.ps"));
-       //      args3.append("-c");
-       //      args3.append("<< /SeparationColorNames "+allSeps+" 
/SeparationOrder [ "+currSeps+" ] >> setpagedevice");
-       //      args3.append("-f");
-               ret = System(gsExe, args1 + args3 + args2);
-       }
-       return ret;
-}
-
-// this should move to scimage.cpp!
-void PrintPreview::blendImages(QImage &target, ScImage &scsource, ScColor col)
-{
-       QImage source = scsource.qImage(); // FIXME: this will not work once 
qImage always returns ARGB!
-       
-       //FIXME: if source and target have different sizesomething went wrong.
-       // eg. loadPicture() failed and returned a 1x1 image
-       CMYKColor cmykValues;
-       int h = qMin(target.height(), source.height());
-       int w = qMin(target.width(), source.width());
-       int cyan, c, m, yc, k, cc, mm, yy, kk;
-       ScColorEngine::getCMYKValues(col, doc, cmykValues);
-       cmykValues.getValues(c, m, yc, k);
-       for (int y = 0; y < h; ++y )
-       {
-               QRgb *p = (QRgb *) target.scanLine(y);
-               QRgb *pq = (QRgb *) source.scanLine(y);
-               for (int x = 0; x < w; ++x )
-               {
-                       cyan = 255 - qRed(*pq);
-                       if (cyan != 0)
-                       {
-                               (c == 0) ? cc = qRed(*p) : cc = qMin(c * cyan / 
255 + qRed(*p), 255);
-                               (m == 0) ? mm = qGreen(*p) : mm = qMin(m * cyan 
/ 255 + qGreen(*p), 255);
-                               (yc == 0) ? yy = qBlue(*p) : yy = qMin(yc * 
cyan / 255 + qBlue(*p), 255);
-                               (k == 0) ? kk = qAlpha(*p) : kk = qMin(k * cyan 
/ 255 + qAlpha(*p), 255);
-                               *p = qRgba(cc, mm, yy, kk);
-                       }
-                       p++;
-                       pq++;
-               }
-       }
-}
-
-void PrintPreview::blendImagesSumUp(QImage &target, ScImage &scsource)
-{
-       QImage source = scsource.qImage(); // FIXME: this will not work once 
qImage always returns ARGB!
-       //FIXME: if source and target have different sizesomething went wrong.
-       // eg. loadPicture() failed and returned a 1x1 image
-       int h = qMin(target.height(), source.height());
-       int w = qMin(target.width(), source.width());
-       int cyan;
-       for (int y = 0; y < h; ++y )
-       {
-               uint *p = (QRgb *) target.scanLine(y);
-               QRgb *pq = (QRgb *) source.scanLine(y);
-               for (int x = 0; x < w; ++x )
-               {
-                       cyan = 255 - qRed(*pq);
-                       if (cyan != 0)
-                       {
-                               *p += cyan;
-                       }
-                       p++;
-                       pq++;
-               }
-       }
-}
-
-QPixmap PrintPreview::CreatePreview(int pageIndex, int res)
-{
-       int ret = -1;
-       QPixmap pixmap;
-       double b = doc->Pages->at(pageIndex)->width() * res / 72.0;
-       double h = doc->Pages->at(pageIndex)->height() * res / 72.0;
-
-       qApp->setOverrideCursor(QCursor(Qt::WaitCursor));
-
-       if ((pageIndex != m_currentPage) || (enableCMYK->isChecked() != 
m_colorMode) || (m_scaleMode != scaleBox->currentIndex())
-               || (antiAliasing->isChecked() != m_useAntialiasing) || 
(((showTransparency->isChecked() != m_showTransparency) || 
(enableGCR->isChecked() != m_useGCR))
-                       && (!enableCMYK->isChecked()))
-                        || (useGray->isChecked() != m_useGray) || 
(mirrorHor->isChecked() != m_mirrorH) || (mirrorVert->isChecked() != m_mirrorV)
-                        || (clipMargins->isChecked() != m_clipToMargins) || 
(spotColors->isChecked() != m_convertSpots))
-       {
-               if (!enableCMYK->isChecked() || (!haveTiffSep))
-               {
-                       ret = RenderPreview(pageIndex, res);
-                       if (ret > 0)
-                       {
-                               imageLoadError(pixmap, pageIndex);
-                               return pixmap;
-                       }
-               }
-       }
-       QImage image;
-       if (enableCMYK->isChecked())
-       {
-               bool loaderror;
-               int cyan, magenta, yellow, black;
-               if (haveTiffSep)
-               {
-                       if ((pageIndex != m_currentPage) || 
(enableCMYK->isChecked() != m_colorMode) || (m_scaleMode != 
scaleBox->currentIndex())
-                || (antiAliasing->isChecked() != m_useAntialiasing) || 
(showTransparency->isChecked() != m_showTransparency) || 
(enableGCR->isChecked() != m_useGCR)
-                || (useGray->isChecked() != m_useGray)  || 
(mirrorHor->isChecked() != m_mirrorH)|| (mirrorVert->isChecked() != m_mirrorV)
-                || (clipMargins->isChecked() != m_clipToMargins) || 
(spotColors->isChecked() != m_convertSpots))
-                       {
-                               ret = RenderPreviewSep(pageIndex, res);
-                               if (ret > 0)
-                               {
-                                       imageLoadError(pixmap, pageIndex);
-                                       return pixmap;
-                               }
-                       }
-                       ScImage im;
-                       bool mode;
-                       int w = qRound(b);
-                       int h2 = qRound(h);
-                       if (doc->Pages->at(pageIndex)->orientation() == 1)
-                               std::swap(w, h2);
-                       image = QImage(w, h2, QImage::Format_ARGB32);
-                       image.fill(qRgba(0, 0, 0, 0));
-
-                       CMSettings cms(doc, "", Intent_Perceptual);
-                       cms.allowColorManagement(false);
-                       if (flagsVisible["Cyan"]->isChecked())
-                       {
-                               if (m_gsVersion < 854)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.tif.Cyan.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else if (m_gsVersion <= 905)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.Cyan.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc(Cyan).tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               if (!loaderror)
-                               {
-                                       imageLoadError(pixmap, pageIndex);
-                                       return pixmap;
-                               }
-                               if (enableInkCover->isChecked())
-                                       blendImagesSumUp(image, im);
-                               else
-                                       blendImages(image, im, ScColor(255, 0, 
0, 0));
-                       }
-                       if (flagsVisible["Magenta"]->isChecked())
-                       {
-                               if (m_gsVersion < 854)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.tif.Magenta.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else if (m_gsVersion <= 905)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.Magenta.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc(Magenta).tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               if (!loaderror)
-                               {
-                                       imageLoadError(pixmap, pageIndex);
-                                       return pixmap;
-                               }
-                               if (enableInkCover->isChecked())
-                                       blendImagesSumUp(image, im);
-                               else
-                                       blendImages(image, im, ScColor(0, 255, 
0, 0));
-                       }
-                       if (flagsVisible["Yellow"]->isChecked())
-                       {
-                               if (m_gsVersion < 854)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.tif.Yellow.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else if (m_gsVersion <= 905)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.Yellow.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc(Yellow).tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               if (!loaderror)
-                               {
-                                       imageLoadError(pixmap, pageIndex);
-                                       return pixmap;
-                               }
-                               if (enableInkCover->isChecked())
-                                       blendImagesSumUp(image, im);
-                               else
-                                       blendImages(image, im, ScColor(0, 0, 
255, 0));
-                       }
-                       if (!sepsToFileNum.isEmpty())
-                       {
-                               QMap<QString, int>::Iterator sepit;
-                               for (sepit = sepsToFileNum.begin(); sepit != 
sepsToFileNum.end(); ++sepit)
-                               {
-                                       const QCheckBox* checkBox = 
flagsVisible.value(sepit.key(), nullptr);
-                                       if (checkBox && checkBox->isChecked())
-                                       {
-                                               QString fnam;
-                                               if (m_gsVersion < 854)
-                                                       fnam = 
QString(ScPaths::tempFileDir() + "/sc.tif.s%1.tif").arg(sepit.value());
-                                               else if (m_gsVersion <= 905)
-                                                       fnam = 
QString(ScPaths::tempFileDir() + "/sc.s%1.tif").arg(sepit.value());
-                                               else
-                                                       fnam = 
QString(ScPaths::tempFileDir() + "/sc(%1).tif").arg(sepit.key());
-                                               if (!im.loadPicture(fnam, 1, 
cms, ScImage::RGBData, 72, &mode))
-                                               {
-                                                       imageLoadError(pixmap, 
pageIndex);
-                                                       return pixmap;
-                                               }
-                                               if (enableInkCover->isChecked())
-                                                       blendImagesSumUp(image, 
im);
-                                               else
-                                                       blendImages(image, im, 
doc->PageColors[sepit.key()]);
-                                       }
-                               }
-                       }
-                       if (flagsVisible["Black"]->isChecked())
-                       {
-                               CMSettings cms(doc, "", Intent_Perceptual);
-                               cms.allowColorManagement(false);
-                               if (m_gsVersion < 854)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.tif.Black.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else if (m_gsVersion <= 905)
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc.Black.tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               else
-                                       loaderror = 
im.loadPicture(ScPaths::tempFileDir() + "/sc(Black).tif", 1, cms, 
ScImage::RGBData, 72, &mode);
-                               if (!loaderror)
-                               {
-                                       imageLoadError(pixmap, pageIndex);
-                                       return pixmap;
-                               }
-                               if (enableInkCover->isChecked())
-                                       blendImagesSumUp(image, im);
-                               else
-                                       blendImages(image, im, ScColor(0, 0, 0, 
255));
-                       }
-                       if (enableInkCover->isChecked())
-                       {
-                               uint limitVal = (coverThresholdValue->value() * 
255) / 100;
-                               for (int yi = 0; yi < h2; ++yi)
-                               {
-                                       QRgb *q = (QRgb*) image.scanLine(yi);
-                                       for (int xi = 0; xi < w; ++xi)
-                                       {
-                                               uint greyVal = *q;
-                                               if (greyVal != 0)
-                                               {
-                                                       if (limitVal == 0)
-                                                       {
-                                                               QColor tmpC;
-                                                               
tmpC.setHsv((greyVal * 359) / m_inkMax, 255, 255);
-                                                               *q = 
tmpC.rgba();
-                                                       }
-                                                       else
-                                                       {
-                                                               int col = 
qMin(255 - static_cast<int>(((greyVal * 128) / m_inkMax) * 2), 255);
-                                                               if ((*q > 0) && 
(*q < limitVal))
-                                                                       *q = 
qRgba(col, col, col, 255);
-                                                               else
-                                                                       *q = 
qRgba(col, 0, 0, 255);
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       if 
(!showTransparency->isChecked())
-                                                               *q = qRgba(255, 
255, 255, 255);
-                                               }
-                                               q++;
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               if (doc->HasCMS || ScCore->haveCMS())
-                               {
-                                       QRgb alphaFF = qRgba(0,0,0,255);
-                                       QRgb alphaOO = qRgba(255,255,255,0);
-                                       ScColorMgmtEngine engine = 
doc->colorEngine;
-                                       ScColorProfile cmykProfile = 
doc->HasCMS ? doc->DocPrinterProf : ScCore->defaultCMYKProfile;
-                                       ScColorProfile rgbProfile  = 
doc->HasCMS ? doc->DocDisplayProf : ScCore->defaultRGBProfile;
-                                       ScColorTransform transCMYK = 
engine.createTransform(cmykProfile, Format_YMCK_8, rgbProfile, Format_BGRA_8, 
Intent_Relative_Colorimetric, 0);
-                                       for (int yi = 0; yi < h2; ++yi)
-                                       {
-                                               uchar* ptr = image.scanLine( yi 
);
-                                               transCMYK.apply(ptr, ptr, 
image.width());
-                                               QRgb *q = (QRgb *) ptr;
-                                               for (int xi = 0; xi < 
image.width(); xi++, q++)
-                                               {
-                                                       if 
(showTransparency->isChecked())
-                                                       {
-                                                               cyan = qRed(*q);
-                                                               magenta = 
qGreen(*q);
-                                                               yellow = 
qBlue(*q);
-                                                               if      ((cyan 
== 255) && (magenta == 255) && (yellow == 255))
-                                                                       *q = 
alphaOO;
-                                                               else
-                                                                       *q |= 
alphaFF;
-                                                       }
-                                                       else
-                                                               *q |= alphaFF;
-                                               }
-                                       }
-                               }
-                               else
-                               {
-                                       for (int yi = 0; yi < h2; ++yi)
-                                       {
-                                               QRgb *q = (QRgb*) 
image.scanLine(yi);
-                                               for (int xi = 0; xi < w; ++xi)
-                                               {
-                                                       cyan = qRed(*q);
-                                                       magenta = qGreen(*q);
-                                                       yellow = qBlue(*q);
-                                                       black = qAlpha(*q);
-                                                       if ((cyan != 0) || 
(magenta != 0) || (yellow != 0 ) || (black != 0))
-                                                               *q = qRgba(255 
- qMin(255, cyan+black), 255 - qMin(255, magenta+black), 255 - qMin(255, 
yellow+black), 255);
-                                                       else
-                                                       {
-                                                               if 
(!showTransparency->isChecked())
-                                                                       *q = 
qRgba(255, 255, 255, 255);
-                                                       }
-                                                       q++;
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-       else
-       {
-               QString previewFile;
-               if ((showTransparency->isChecked() && havePngAlpha) || 
!postscriptPreview)
-                       previewFile = ScPaths::tempFileDir() + "/sc.png";
-               else
-                       previewFile = ScPaths::tempFileDir() + "/sc.tif";
-               if (!image.load(previewFile))
-               {
-                       imageLoadError(pixmap, pageIndex);
-                       return pixmap;
-               }
-               image = image.convertToFormat(QImage::Format_ARGB32);
-               if ((showTransparency->isChecked()) && (havePngAlpha))
-               {
-                       int wi = image.width();
-                       int hi = image.height();
-                       for (int yi = 0; yi < hi; ++yi)
-                       {
-                               QRgb *s = (QRgb*) image.scanLine(yi);
-                               for (int xi = 0; xi < wi; ++xi)
-                               {
-                                       if ((*s) == 0xffffffff)
-                                               (*s) &= 0x00ffffff;
-                                       s++;
-                               }
-                       }
-               }
-       }
-       const ScPage* page = doc->Pages->at(pageIndex);
-       if ((page->orientation() == 1) && (image.width() < image.height()))
-               image = image.transformed( QMatrix(0, 1, -1, 0, 0, 0) );
-       if (showTransparency->isChecked())
-       {
-               pixmap = QPixmap(image.width(), image.height());
-               QPainter p;
-               QBrush b(QColor(205,205,205), 
IconManager::instance().loadPixmap("testfill.png"));
-               p.begin(&pixmap);
-               p.fillRect(0, 0, image.width(), image.height(), b);
-               p.drawImage(0, 0, image);
-               p.end();
-       }
-       else
-               pixmap = QPixmap::fromImage(image);
+
+       pixmap = m_previewCreator->createPreview(pageIndex);
+
        qApp->restoreOverrideCursor();
        getUserSelection(pageIndex);
        return pixmap;
@@ -1146,7 +556,7 @@
                return true;
        else if (printerName.isEmpty())
                return PrinterUtil::isPostscriptPrinter( 
ScPrintEngine_GDI::getDefaultPrinter() );
-       else if (engine >= PostScript1 && engine <= PostScript3)
+       else if (engine >= PrintEngine::PostScript1 && engine <= 
PrintEngine::PostScript3)
                return PrinterUtil::isPostscriptPrinter( printerName );
        return false;
 #else
@@ -1171,13 +581,6 @@
        m_useGray = useGray->isChecked();
 }
 
-void PrintPreview::imageLoadError(QPixmap &pixmap, int page)
-{
-       pixmap = QPixmap(1,1);
-       qApp->restoreOverrideCursor();
-       getUserSelection(page);
-}
-
 void PrintPreview::resizeEvent(QResizeEvent * event)
 {
        QDialog::resizeEvent(event);

Modified: trunk/Scribus/scribus/ui/printpreview.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/ui/printpreview.h
==============================================================================
--- trunk/Scribus/scribus/ui/printpreview.h     (original)
+++ trunk/Scribus/scribus/ui/printpreview.h     Sat Sep 12 20:59:12 2020
@@ -25,6 +25,7 @@
 #include "scribusstructs.h"
 
 class PageSelector;
+class PrintPreviewCreator;
 class ScribusDoc;
 class ScribusView;
 class ScImage;
@@ -58,17 +59,6 @@
 
        double inkCoverageThreshold() const { return 
coverThresholdValue->value(); }
 
-       /*!
-       \author Franz Schmid
-       \brief Renders the Preview to a file on Disk
-       \param pageIndex int page number
-       \param res int resolution
-       \retval int Flag indicating error
-       */
-       int RenderPreview(int pageIndex, int res);
-       int RenderPreviewSep(int pageIndex, int res);
-       void blendImages(QImage &target, ScImage &source, ScColor col);
-       void blendImagesSumUp(QImage &target, ScImage &scsource);
        static bool usePostscriptPreview(const QString& printerName, 
PrintEngine engine);
        /*!
        \author Franz Schmid
@@ -77,7 +67,7 @@
        \param res int resolution
        \retval pixmap QPixmap print preview
        */
-       QPixmap CreatePreview(int pageIndex, int res);
+       QPixmap createPreview(int pageIndex, int res);
 
 public slots:
        /*!
@@ -119,14 +109,14 @@
        bool havePngAlpha { false };
        bool haveTiffSep { false };
        bool postscriptPreview { true };
-       QMap<QString, int> sepsToFileNum;
        QMap<QString, QCheckBox*> flagsVisible;
        QTableWidget* inkTable { nullptr };
+
+       PrintPreviewCreator* m_previewCreator { nullptr };
 
        int m_currentPage { -1 };
        int m_scaleMode { 1 };
        int m_gsVersion { 0 };
-       int m_inkMax { 1020 }; // 4 * 255
        bool m_colorMode { false };
        bool m_useAntialiasing { false };
        bool m_showTransparency { false };
@@ -174,7 +164,6 @@
 
        void setValues();
        void getUserSelection(int);
-       void imageLoadError(QPixmap &, int);
 
        //! \brief repaint sample on the dialog change
        void resizeEvent(QResizeEvent * event) override;

Modified: trunk/Scribus/scribus/util_printer.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/scribus/util_printer.cpp
==============================================================================
--- trunk/Scribus/scribus/util_printer.cpp      (original)
+++ trunk/Scribus/scribus/util_printer.cpp      Sat Sep 12 20:59:12 2020
@@ -42,7 +42,7 @@
        if ((selectedSep < 0) || (selectedSep > 4))
                selectedSep = 0;
        options.separationName = spots.at(selectedSep);
-       options.prnEngine = (PrintEngine) prnPrefs->getInt("PSLevel", 
PostScript3);
+       options.prnEngine = (PrintEngine) prnPrefs->getInt("PSLevel", (int) 
PrintEngine::PostScript3);
        options.mirrorH = prnPrefs->getBool("MirrorH", false);
        options.mirrorV = prnPrefs->getBool("MirrorV", false);
        options.setDevParam = prnPrefs->getBool("doDev", false);
@@ -152,12 +152,12 @@
        if (!toFile)
        {
 #if defined(_WIN32)
-               return WindowsGDI;
+               return PrintEngine::WindowsGDI;
 #else
-               return PostScript3;
-#endif
-       }
-       return PostScript3;
+               return PrintEngine::PostScript3;
+#endif
+       }
+       return PrintEngine::PostScript3;
 }
 
 PrintEngineMap PrinterUtil::getPrintEngineSupport(const QString& printerName, 
bool toFile)
@@ -167,14 +167,14 @@
        {
                if (ScCore->haveGS())
                {
-                       prnMap.insert(CommonStrings::trPostScript1, 
PostScript1);
-                       prnMap.insert(CommonStrings::trPostScript2, 
PostScript2);
+                       prnMap.insert(CommonStrings::trPostScript1, 
PrintEngine::PostScript1);
+                       prnMap.insert(CommonStrings::trPostScript2, 
PrintEngine::PostScript2);
                }
-               prnMap.insert(CommonStrings::trPostScript3, PostScript3);
+               prnMap.insert(CommonStrings::trPostScript3, 
PrintEngine::PostScript3);
        }
 #if defined(_WIN32)
        if (!toFile)
-               prnMap.insert(CommonStrings::trWindowsGDI, WindowsGDI);
+               prnMap.insert(CommonStrings::trWindowsGDI, 
PrintEngine::WindowsGDI);
 #endif
        return prnMap;
 }
@@ -182,11 +182,11 @@
 bool PrinterUtil::checkPrintEngineSupport(const QString& printerName, 
PrintEngine engine, bool toFile)
 {
        bool psSupported = toFile || 
PrinterUtil::isPostscriptPrinter(printerName);
-       if (psSupported && (engine >= PostScript1 && engine <= PostScript3))
+       if (psSupported && (engine >= PrintEngine::PostScript1 && engine <= 
PrintEngine::PostScript3))
                return true;
-       if (!psSupported && (engine >= PostScript1 && engine <= PostScript3))
-               return false;
-       if (engine == WindowsGDI)
+       if (!psSupported && (engine >= PrintEngine::PostScript1 && engine <= 
PrintEngine::PostScript3))
+               return false;
+       if (engine == PrintEngine::WindowsGDI)
        {
 #if defined(_WIN32)
                return true; //WindowsGDI

Modified: trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj
==============================================================================
--- trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj   (original)
+++ trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj   Sat Sep 12 
20:59:12 2020
@@ -346,6 +346,11 @@
     <ClInclude Include="..\..\..\scribus\pdfstructs.h" />
     <ClInclude Include="..\..\..\scribus\pdfversion.h" />
     <ClInclude Include="..\..\..\scribus\pdfwriter.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h" />
     <ClInclude Include="..\..\..\scribus\sccolorstructs.h" />
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h" />
     <ClInclude Include="..\..\..\scribus\styles\cellstyle.h" />
@@ -889,6 +894,11 @@
     <ClCompile 
Include="..\..\..\scribus\palettes\paletteloader_swatchbook.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfversion.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfwriter.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp" />
     <ClCompile Include="..\..\..\scribus\qtiocompressor.cpp" />
     <ClCompile 
Include="..\..\..\scribus\imagedataloaders\scimgdataloader_ora.cpp" />
     <ClCompile Include="..\..\..\scribus\sccolorstructs.cpp" />

Modified: trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters
==============================================================================
--- trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters   
(original)
+++ trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters   Sat Sep 
12 20:59:12 2020
@@ -809,6 +809,21 @@
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\scribus\desaxe\digester.cpp">
@@ -2519,6 +2534,21 @@
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\..\scribus\scprintengine_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>

Modified: trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj
==============================================================================
--- trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj   (original)
+++ trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj   Sat Sep 12 
20:59:12 2020
@@ -346,6 +346,11 @@
     <ClInclude Include="..\..\..\scribus\pdfstructs.h" />
     <ClInclude Include="..\..\..\scribus\pdfversion.h" />
     <ClInclude Include="..\..\..\scribus\pdfwriter.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h" />
     <ClInclude Include="..\..\..\scribus\sccolorstructs.h" />
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h" />
     <ClInclude Include="..\..\..\scribus\styles\cellstyle.h" />
@@ -889,6 +894,11 @@
     <ClCompile 
Include="..\..\..\scribus\palettes\paletteloader_swatchbook.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfversion.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfwriter.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp" />
     <ClCompile Include="..\..\..\scribus\qtiocompressor.cpp" />
     <ClCompile 
Include="..\..\..\scribus\imagedataloaders\scimgdataloader_ora.cpp" />
     <ClCompile Include="..\..\..\scribus\sccolorstructs.cpp" />

Modified: trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj.filters
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj.filters
==============================================================================
--- trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj.filters   
(original)
+++ trunk/Scribus/win32/msvc2017/scribus-main/Scribus.vcxproj.filters   Sat Sep 
12 20:59:12 2020
@@ -809,6 +809,21 @@
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\scribus\desaxe\digester.cpp">
@@ -2519,6 +2534,21 @@
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\..\scribus\scprintengine_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>

Modified: trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj
==============================================================================
--- trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj   (original)
+++ trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj   Sat Sep 12 
20:59:12 2020
@@ -347,6 +347,11 @@
     <ClInclude Include="..\..\..\scribus\pdfstructs.h" />
     <ClInclude Include="..\..\..\scribus\pdfversion.h" />
     <ClInclude Include="..\..\..\scribus\pdfwriter.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h" />
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h" />
     <ClInclude Include="..\..\..\scribus\sccolorstructs.h" />
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h" />
     <ClInclude Include="..\..\..\scribus\styles\cellstyle.h" />
@@ -890,6 +895,11 @@
     <ClCompile 
Include="..\..\..\scribus\palettes\paletteloader_swatchbook.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfversion.cpp" />
     <ClCompile Include="..\..\..\scribus\pdfwriter.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp" />
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp" />
     <ClCompile Include="..\..\..\scribus\qtiocompressor.cpp" />
     <ClCompile 
Include="..\..\..\scribus\imagedataloaders\scimgdataloader_ora.cpp" />
     <ClCompile Include="..\..\..\scribus\sccolorstructs.cpp" />

Modified: trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj.filters
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24010&path=/trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj.filters
==============================================================================
--- trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj.filters   
(original)
+++ trunk/Scribus/win32/msvc2019/scribus-main/Scribus.vcxproj.filters   Sat Sep 
12 20:59:12 2020
@@ -809,6 +809,21 @@
     <ClInclude Include="..\..\..\scribus\scprintengine_pdf.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_gdi.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_pdf.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreator_ps.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\scribus\printpreviewcreatorfactory.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\scribus\desaxe\digester.cpp">
@@ -2519,6 +2534,21 @@
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\..\scribus\scprintengine_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_gdi.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_pdf.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreator_ps.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\scribus\printpreviewcreatorfactory.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to