Author: jghali
Date: Sat Oct 20 21:54:37 2018
New Revision: 22738

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22738
Log:
Bump required poppler version to 0.58.0

Modified:
    trunk/Scribus/cmake/modules/FindPOPPLER.cmake
    trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp
    trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp

Modified: trunk/Scribus/cmake/modules/FindPOPPLER.cmake
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22738&path=/trunk/Scribus/cmake/modules/FindPOPPLER.cmake
==============================================================================
--- trunk/Scribus/cmake/modules/FindPOPPLER.cmake       (original)
+++ trunk/Scribus/cmake/modules/FindPOPPLER.cmake       Sat Oct 20 21:54:37 2018
@@ -5,9 +5,9 @@
        set(PKG_POPPLER_LIBRARIES ${_libPopplerLinkDir})
 else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
        include(FindPkgConfig)
-       pkg_search_module(POPPLER libpoppler>=0.19.0 poppler>=0.19.0)
+       pkg_search_module(POPPLER libpoppler>=0.58.0 poppler>=0.58.0)
        if (POPPLER_FOUND)
-               pkg_search_module(POPPLER_CPP REQUIRED libpoppler-cpp>=0.19.0 
poppler-cpp>=0.19.0)
+               pkg_search_module(POPPLER_CPP REQUIRED libpoppler-cpp>=0.58.0 
poppler-cpp>=0.58.0)
        endif(POPPLER_FOUND)
 endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
  

Modified: trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22738&path=/trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp      (original)
+++ trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp      Sat Oct 20 
21:54:37 2018
@@ -5,8 +5,11 @@
 for which a new license (GPL+exception) is in place.
 */
 
+#include <cstdlib>
+
 #include <QByteArray>
 #include <QCursor>
+#include <QDebug>
 #include <QDrag>
 #include <QFile>
 #include <QInputDialog>
@@ -14,8 +17,7 @@
 #include <QMimeData>
 #include <QRegExp>
 #include <QStack>
-#include <QDebug>
-#include "slaoutput.h"
+
 #include <poppler/ErrorCodes.h>
 #include <poppler/GlobalParams.h>
 #include <poppler/OptionalContent.h>
@@ -27,8 +29,8 @@
 #include <poppler/splash/SplashBitmap.h>
 
 #include "importpdf.h"
-
-#include <cstdlib>
+#include "importpdfconfig.h"
+#include "slaoutput.h"
 
 #include "commonstrings.h"
 #include "loadsaveplugin.h"
@@ -59,12 +61,6 @@
 #include "ui/missing.h"
 #include "ui/multiprogressdialog.h"
 #include "ui/propertiespalette.h"
-
-#define POPPLER_VERSION_ENCODE(major, minor, micro) (  \
-         ((major) * 10000)                             \
-       + ((minor) *   100)                             \
-       + ((micro) *     1))
-#define POPPLER_ENCODED_VERSION POPPLER_VERSION_ENCODE(POPPLER_VERSION_MAJOR, 
POPPLER_VERSION_MINOR, POPPLER_VERSION_MICRO)
 
 PdfPlug::PdfPlug(ScribusDoc* doc, int flags)
 {
@@ -518,20 +514,10 @@
                                                        {
                                                                for (int i = 0; 
i < order->getLength (); ++i)
                                                                {
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                                        Object 
orderItem = order->get(i);
-#else
-                                                                       Object 
orderItem;
-                                                                       
order->get(i, &orderItem);
-#endif
                                                                        if 
(orderItem.isDict())
                                                                        {
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
-                                                                               
Object ref = order->getNF(i);           
-#else
-                                                                               
Object ref;
-                                                                               
order->getNF(i, &ref);
-#endif
+                                                                               
Object ref = order->getNF(i);
                                                                                
if (ref.isRef())
                                                                                
{
                                                                                
        OptionalContentGroup *oc = ocg->findOcgByRef(ref.getRef());
@@ -542,9 +528,6 @@
                                                                                
                ocgNames.append(ocgName);
                                                                                
        }
                                                                                
}
-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
-                                                                               
ref.free();
-#endif
                                                                        }
                                                                        else
                                                                        {
@@ -615,8 +598,6 @@
                                        rotate = 0;
                                        if (importerFlags & 
LoadSavePlugin::lfCreateDoc)
                                        {
-// POPPLER_VERSION appeared in 0.19.0 first
-#ifdef POPPLER_VERSION
                                                if (hasOcg)
                                                {
                                                        QString actL = 
m_Doc->activeLayerName();
@@ -641,9 +622,7 @@
                                                        }
                                                        dev->layersSetByOCG = 
true;
                                                }
-#endif
-
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
+
                                                Object info = 
pdfDoc->getDocInfo();
                                                if (info.isDict())
                                                {
@@ -672,41 +651,7 @@
                                                        }
                                                }
                                                info = Object();
-#else
-                                               Object info;
-                                               pdfDoc->getDocInfo(&info);
-                                               if (info.isDict())
-                                               {
-                                                       Object obj;
-                                                       //      GooString *s1;
-                                                       Dict *infoDict = 
info.getDict();
-                                                       if 
(infoDict->lookup((char*)"Title", &obj)->isString())
-                                                       {
-                                                               //              
s1 = obj.getString();
-                                                               
m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString()));
-                                                               obj.free();
-                                                       }
-                                                       if 
(infoDict->lookup((char*)"Author", &obj)->isString())
-                                                       {
-                                                               //              
s1 = obj.getString();
-                                                               
m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString()));
-                                                               obj.free();
-                                                       }
-                                                       if 
(infoDict->lookup((char*)"Subject", &obj)->isString())
-                                                       {
-                                                               //              
s1 = obj.getString();
-                                                               
m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString()));
-                                                               obj.free();
-                                                       }
-                                                       if 
(infoDict->lookup((char*)"Keywords", &obj)->isString())
-                                                       {
-                                                               //              
s1 = obj.getString();
-                                                               
m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString()));
-                                                               obj.free();
-                                                       }
-                                               }
-                                               info.free();
-#endif
+
                                                if (cropped)
                                                {
                                                        QRectF crBox = 
getCBox(contentRect, pageNs[0]);
@@ -822,14 +767,10 @@
                                                                else
                                                                        
pdfDoc->displayPage(dev, pp, hDPI, vDPI, rotate, useMediaBox, crop, printing, 
nullptr, nullptr, dev->annotations_callback, dev);
                                                        }
+
                                                        PDFPresentationData ef;
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                        Object trans = 
pdfDoc->getPage(pp)->getTrans();
                                                        Object *transi = &trans;
-#else
-                                                       Object trans;
-                                                       Object *transi = 
pdfDoc->getPage(pp)->getTrans(&trans);
-#endif
                                                        if (transi->isDict())
                                                        {
                                                                
m_Doc->pdfOptions().PresentMode = true;
@@ -875,51 +816,25 @@
                                                                delete pgTrans;
                                                        }
                                                        
m_Doc->currentPage()->PresentVals = ef;
-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
-                                                       trans.free();
-                                                       transi->free();
-#endif
                                                }
                                                int numjs = 
pdfDoc->getCatalog()->numJS();
                                                if (numjs > 0)
                                                {
                                                        NameTree *jsNameTreeP = 
new NameTree();
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                        Object catDict = 
pdfDoc->getXRef()->getCatalog();
-#else
-                                                       Object catDict;
-                                                       
pdfDoc->getXRef()->getCatalog(&catDict);
-#endif
                                                        if (catDict.isDict())
                                                        {
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                                Object names = 
catDict.dictLookup("Names");
-#else
-                                                               Object names;
-                                                               
catDict.dictLookup("Names", &names);
-#endif
                                                                if 
(names.isDict())
                                                                {
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                                        Object 
obj = names.dictLookup("JavaScript");
                                                                        
jsNameTreeP->init(pdfDoc->getXRef(), &obj);
-#else
-                                                                       Object 
obj;
-                                                                       
names.dictLookup("JavaScript", &obj);
-                                                                       
jsNameTreeP->init(pdfDoc->getXRef(), &obj);
-                                                                       
obj.free();
-#endif
                                                                }
                                                                for (int a = 0; 
a < numjs; a++)
                                                                {
                                                                        
m_Doc->JavaScripts.insert(UnicodeParsedString(jsNameTreeP->getName(a)), 
UnicodeParsedString(pdfDoc->getCatalog()->getJS(a)));
                                                                }
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                                                                names = 
catDict.dictLookup("OpenAction");
-#else
-                                                               names.free();
-                                                               
catDict.dictLookup("OpenAction", &names);
-#endif
                                                                if 
(names.isDict())
                                                                {
                                                                        
LinkAction *linkAction = nullptr;
@@ -940,13 +855,7 @@
                                                                                
}
                                                                        }
                                                                }
-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
-                                                               names.free();
-#endif
-                                                       }
-#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
-                                                       catDict.free();
-#endif
+                                                       }
                                                        delete jsNameTreeP;
                                                }
                                                m_Doc->pdfOptions().Version = 
(PDFOptions::PDFVersion)qMin(15, qMax(13, pdfDoc->getPDFMajorVersion() * 10 + 
pdfDoc->getPDFMinorVersion()));

Modified: trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22738&path=/trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp      (original)
+++ trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp      Sat Oct 20 
21:54:37 2018
@@ -25,7 +25,7 @@
        Object obj1, obj2, obj3;
        fileName = nullptr;
        m_flags = 0;
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
+
        if (actionObj->isDict())
        {
                obj1 = actionObj->dictLookup("F");
@@ -56,38 +56,6 @@
                                m_flags = obj1.getInt();
                }
        }
-#else
-       if (actionObj->isDict())
-       {
-               if (!actionObj->dictLookup("F", &obj1)->isNull())
-               {
-                       if (obj1.isDict())
-                       {
-                               if (!obj1.dictLookup("FS", &obj3)->isNull())
-                               {
-                                       if (obj3.isName())
-                                       {
-                                               char *name = obj3.getName();
-                                               if (!strcmp(name, "URL"))
-                                               {
-                                                       if 
(!obj1.dictLookup("F", &obj2)->isNull())
-                                                               fileName = 
obj2.getString()->copy();
-                                               }
-                                               obj2.free();
-                                       }
-                               }
-                               obj3.free();
-                       }
-               }
-               obj1.free();
-               if (!actionObj->dictLookup("Flags", &obj1)->isNull())
-               {
-                       if (obj1.isNum())
-                               m_flags = obj1.getInt();
-               }
-               obj1.free();
-       }
-#endif
 }
 
 LinkSubmitForm::~LinkSubmitForm()
@@ -99,7 +67,7 @@
 {
        Object obj1, obj3;
        fileName = nullptr;
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
+
        if (actionObj->isDict())
        {
                obj1 = actionObj->dictLookup("F");
@@ -112,20 +80,6 @@
                        }
                }
        }
-#else
-       if (actionObj->isDict())
-       {
-               if (!actionObj->dictLookup("F", &obj1)->isNull())
-               {
-                       if (getFileSpecNameForPlatform(&obj1, &obj3))
-                       {
-                               fileName = obj3.getString()->copy();
-                               obj3.free();
-                       }
-               }
-               obj1.free();
-       }
-#endif
 }
 
 LinkImportData::~LinkImportData()
@@ -324,7 +278,6 @@
        Object obj;
        Ref refa = ano->getRef();
        Object additionalActions;
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
        obj = xref->fetch(refa.num, refa.gen);
        if (obj.isDict())
        {
@@ -344,35 +297,6 @@
                        }
                }
        }
-#else
-       Object *act = xref->fetch(refa.num, refa.gen, &obj);
-       if (act)
-       {
-               if (act->isDict())
-               {
-                       Dict* adic = act->getDict();
-                       adic->lookupNF("A", &additionalActions);
-                       Object additionalActionsObject;
-                       if (additionalActions.fetch(pdfDoc->getXRef(), 
&additionalActionsObject)->isDict())
-                       {
-                               Object actionObject;
-                               additionalActionsObject.dictLookup("S", 
&actionObject);
-                               if (actionObject.isName("ImportData"))
-                               {
-                                       linkAction = new 
LinkImportData(&additionalActionsObject);
-                               }
-                               else if (actionObject.isName("SubmitForm"))
-                               {
-                                       linkAction = new 
LinkSubmitForm(&additionalActionsObject);
-                               }
-                               actionObject.free();
-                       }
-                       additionalActionsObject.free();
-                       additionalActions.free();
-               }
-       }
-       obj.free();
-#endif
        return linkAction;
 }
 
@@ -384,7 +308,6 @@
        Ref refa = ano->getRef();
        Object additionalActions;
 
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
        obj = xref->fetch(refa.num, refa.gen);
        if (obj.isDict())
        {
@@ -398,28 +321,6 @@
                                linkAction = 
LinkAction::parseAction(&actionObject, pdfDoc->getCatalog()->getBaseURI());
                }
        }
-#else
-       Object *act = xref->fetch(refa.num, refa.gen, &obj);
-       if (act)
-       {
-               if (act->isDict())
-               {
-                       Dict* adic = act->getDict();
-                       adic->lookupNF("AA", &additionalActions);
-                       Object additionalActionsObject;
-                       if (additionalActions.fetch(pdfDoc->getXRef(), 
&additionalActionsObject)->isDict())
-                       {
-                               Object actionObject;
-                               if (additionalActionsObject.dictLookup(key, 
&actionObject)->isDict())
-                                       linkAction = 
LinkAction::parseAction(&actionObject, pdfDoc->getCatalog()->getBaseURI());
-                               actionObject.free();
-                       }
-                       additionalActionsObject.free();
-                       additionalActions.free();
-               }
-       }
-       obj.free();
-#endif
        return linkAction;
 }
 
@@ -753,12 +654,7 @@
                        if (apa || !achar)
                        {
                                AnoOutputDev *Adev = new AnoOutputDev(m_doc, 
m_importedColors);
-                               Gfx *gfx;
-#ifdef POPPLER_VERSION
-                               gfx = new Gfx(pdfDoc, Adev, 
pdfDoc->getPage(m_actPage)->getResourceDict(), annota->getRect(), nullptr);
-#else
-                               gfx = new Gfx(xref, Adev, 
pdfDoc->getPage(m_actPage)->getResourceDict(), catalog, annota->getRect(), 
nullptr);
-#endif
+                               Gfx *gfx = new Gfx(pdfDoc, Adev, 
pdfDoc->getPage(m_actPage)->getResourceDict(), annota->getRect(), nullptr);
                                ano->draw(gfx, false);
                                if (!bgFound)
                                        CurrColorFill = Adev->CurrColorFill;
@@ -945,7 +841,6 @@
        {
                Object obj1;
                Ref refa = annota->getRef();
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                obj1 = xref->fetch(refa.num, refa.gen);
                if (obj1.isDict())
                {
@@ -971,43 +866,6 @@
                                m_radioMap.insert(tmTxt, radList);
                        }
                }
-#else
-               Object *act = xref->fetch(refa.num, refa.gen, &obj1);
-               if (act && act->isDict())
-               {
-                       Dict* dict = act->getDict();
-                       Object obj2;
-                       //childs
-                       if (dict->lookup("Kids", &obj2)->isArray())
-                       {
-                               // Load children
-                               QList<int> radList;
-                               for (int i = 0 ; i < obj2.arrayGetLength(); i++)
-                               {
-                                       Object childRef, childObj;
-                                       if (!obj2.arrayGetNF(i, 
&childRef)->isRef())
-                                       {
-                                               childRef.free();
-                                               continue;
-                                       }
-                                       if (!obj2.arrayGet(i, 
&childObj)->isDict())
-                                       {
-                                               childObj.free();
-                                               childRef.free();
-                                               continue;
-                                       }
-                                       const Ref ref = childRef.getRef();
-                                       radList.append(ref.num);
-                                       childObj.free();
-                                       childRef.free();
-                               }
-                               QString tmTxt = 
UnicodeParsedString(annota->getName());
-                               m_radioMap.insert(tmTxt, radList);
-                       }
-                       obj2.free();
-               }
-               obj1.free();
-#endif
        }
        return retVal;
 }
@@ -2348,17 +2206,13 @@
        box.y1 = bbox[1];
        box.x2 = bbox[2];
        box.y2 = bbox[3];
-       double *ctm;
-       ctm = state->getCTM();
+
+       double *ctm = state->getCTM();
        m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
        QTransform mm = QTransform(mat[0], mat[1], mat[2], mat[3], mat[4], 
mat[5]);
        QTransform mmx = mm * m_ctm;
 
-#ifdef POPPLER_VERSION
        gfx = new Gfx(pdfDoc, this, resDict, &box, nullptr);
-#else
-       gfx = new Gfx(xref, this, resDict, catalog, &box, nullptr);
-#endif
        inPattern++;
        gfx->display(str);
        inPattern--;
@@ -3146,7 +3000,6 @@
                }
                else
                {
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                        dictObj = dictRef->fetch(xref);
                        if (!dictObj.isDict())
                                return;
@@ -3162,28 +3015,6 @@
                                        mSte.ocgName = 
UnicodeParsedString(oc->getName());
                                }
                        }
-#else
-                       dictRef->fetch(xref, &dictObj);
-                       if (!dictObj.isDict())
-                       {
-                               dictObj.free();
-                               return;
-                       }
-                       dict = dictObj.getDict();
-                       dict->lookup("Type", &dictType);
-                       if (dictType.isName("OCG"))
-                       {
-                               oc = 
contentConfig->findOcgByRef(dictRef->getRef());
-                               if (oc)
-                               {
-//                                     qDebug() << "Begin OCG Content with 
Name " << UnicodeParsedString(oc->getName());
-                                       
m_doc->setActiveLayer(UnicodeParsedString(oc->getName()));
-                                       mSte.ocgName = 
UnicodeParsedString(oc->getName());
-                               }
-                       }
-                       dictType.free();
-                       dictObj.free();
-#endif
                }
        }
        m_mcStack.push(mSte);
@@ -3204,19 +3035,9 @@
                        if (layersSetByOCG)
                                return;
                        QString lName = QString("Layer_%1").arg(layerNum + 1);
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
                        Object obj = properties->lookup((char*) "Title");
                        if (obj.isString())
                                lName = QString(obj.getString()->getCString());
-#else
-                       Object obj;
-                       if (properties->lookup((char*)"Title", &obj))
-                       {
-                               if (obj.isString())
-                                       lName =  
QString(obj.getString()->getCString());
-                               obj.free();
-                       }
-#endif
                        for (ScLayers::iterator it = m_doc->Layers.begin(); it 
!= m_doc->Layers.end(); ++it)
                        {
                                if (it->Name == lName)
@@ -3229,7 +3050,7 @@
                        if (!firstLayer)
                                currentLayer = m_doc->addLayer(lName, true);
                        firstLayer = false;
-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
+
                        obj = properties->lookup((char*) "Visible");
                        if (obj.isBool())
                                m_doc->setLayerVisible(currentLayer, 
obj.getBool());
@@ -3251,44 +3072,6 @@
                                int b = obj1.getNum() / 256;
                                m_doc->setLayerMarker(currentLayer, QColor(r, 
g, b));
                        }
-#else
-                       if (properties->lookup((char*)"Visible", &obj))
-                       {
-                               if (obj.isBool())
-                                       m_doc->setLayerVisible(currentLayer, 
obj.getBool());
-                               obj.free();
-                       }
-                       if (properties->lookup((char*)"Editable", &obj))
-                       {
-                               if (obj.isBool())
-                                       m_doc->setLayerLocked(currentLayer, 
!obj.getBool());
-                               obj.free();
-                       }
-                       if (properties->lookup((char*)"Printed", &obj))
-                       {
-                               if (obj.isBool())
-                                       m_doc->setLayerPrintable(currentLayer, 
obj.getBool());
-                               obj.free();
-                       }
-                       if (properties->lookup((char*)"Color", &obj))
-                       {
-                               if (obj.isArray())
-                               {
-                                       Object obj1;
-                                       obj.arrayGet(0, &obj1);
-                                       int r = obj1.getNum() / 256;
-                                       obj1.free();
-                                       obj.arrayGet(1, &obj1);
-                                       int g = obj1.getNum() / 256;
-                                       obj1.free();
-                                       obj.arrayGet(2, &obj1);
-                                       int b = obj1.getNum() / 256;
-                                       obj1.free();
-                                       m_doc->setLayerMarker(currentLayer, 
QColor(r, g, b));
-                               }
-                               obj.free();
-                       }
-#endif
                }
        }
 }
@@ -3327,8 +3110,6 @@
        beginMarkedContent(name, properties);
 }
 
-// POPPLER_VERSION appeared in 0.19.0 first
-#ifdef POPPLER_VERSION
 void SlaOutputDev::updateFont(GfxState *state)
 {
        GfxFont *gfxFont;
@@ -3563,214 +3344,6 @@
        if (fontsrc && !fontsrc->isFile)
                fontsrc->unref();
 }
-#else
-void SlaOutputDev::updateFont(GfxState *state)
-{
-       GfxFont *gfxFont;
-       GfxFontType fontType;
-       SplashOutFontFileID *id;
-       SplashFontFile *fontFile;
-       SplashFontSrc *fontsrc = nullptr;
-       FoFiTrueType *ff;
-       Ref embRef;
-       Object refObj, strObj;
-       GooString *fileName;
-       char *tmpBuf;
-       int tmpBufLen;
-       Gushort *codeToGID;
-       DisplayFontParam *dfp;
-       double *textMat;
-       double m11, m12, m21, m22, fontSize;
-       SplashCoord mat[4];
-       int n;
-       int faceIndex = 0;
-       SplashCoord matrix[6];
-
-       m_font = nullptr;
-       fileName = nullptr;
-       tmpBuf = nullptr;
-
-       if (!(gfxFont = state->getFont()))
-               goto err1;
-       fontType = gfxFont->getType();
-       if (fontType == fontType3)
-               goto err1;
-
-  // check the font file cache
-       id = new SplashOutFontFileID(gfxFont->getID());
-       if ((fontFile = m_fontEngine->getFontFile(id)))
-       {
-               delete id;
-       }
-       else
-       {
-               // if there is an embedded font, write it to disk
-               if (gfxFont->getEmbeddedFontID(&embRef))
-               {
-                       tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen);
-                       if (!tmpBuf)
-                               goto err2;
-                       // if there is an external font file, use it
-               }
-               else if (!(fileName = gfxFont->getExtFontFile()))
-               {
-                       // look for a display font mapping or a substitute font
-                       dfp = nullptr;
-                       if (gfxFont->getName())
-                       {
-                               dfp = globalParams->getDisplayFont(gfxFont);
-                       }
-                       if (!dfp)
-                       {
-               //              error(-1, "Couldn't find a font for '%s'", 
gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                               goto err2;
-                       }
-                       switch (dfp->kind)
-                       {
-                               case displayFontT1:
-                                       fileName = dfp->t1.fileName;
-                                       fontType = gfxFont->isCIDFont() ? 
fontCIDType0 : fontType1;
-                                       break;
-                               case displayFontTT:
-                                       fileName = dfp->tt.fileName;
-                                       fontType = gfxFont->isCIDFont() ? 
fontCIDType2 : fontTrueType;
-                                       faceIndex = dfp->tt.faceIndex;
-                                       break;
-                       }
-               }
-               fontsrc = new SplashFontSrc;
-               if (fileName)
-                       fontsrc->setFile(fileName, gFalse);
-               else
-                       fontsrc->setBuf(tmpBuf, tmpBufLen, gTrue);
-               // load the font file
-               switch (fontType)
-               {
-                       case fontType1:
-                               if (!(fontFile = m_fontEngine->loadType1Font( 
id, fontsrc, ((Gfx8BitFont *)gfxFont)->getEncoding())))
-                               {
-                       //              error(-1, "Couldn't create a font for 
'%s'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                                       goto err2;
-                               }
-                               break;
-                       case fontType1C:
-                               if (!(fontFile = m_fontEngine->loadType1CFont( 
id, fontsrc, ((Gfx8BitFont *)gfxFont)->getEncoding())))
-                               {
-               //                      error(-1, "Couldn't create a font for 
'%s'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                                       goto err2;
-                               }
-                               break;
-                       case fontType1COT:
-                               if (!(fontFile = 
m_fontEngine->loadOpenTypeT1CFont( id, fontsrc, ((Gfx8BitFont 
*)gfxFont)->getEncoding())))
-                               {
-               //                      error(-1, "Couldn't create a font for 
'%s'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                                       goto err2;
-                               }
-                               break;
-                       case fontTrueType:
-                       case fontTrueTypeOT:
-                               if (fileName)
-                                       ff = 
FoFiTrueType::load(fileName->getCString());
-                               else
-                                       ff = FoFiTrueType::make(tmpBuf, 
tmpBufLen);
-                               if (ff)
-                               {
-                                       codeToGID = ((Gfx8BitFont 
*)gfxFont)->getCodeToGIDMap(ff);
-                                       n = 256;
-                                       delete ff;
-                               }
-                               else
-                               {
-                                       codeToGID = nullptr;
-                                       n = 0;
-                               }
-                               if (!(fontFile = 
m_fontEngine->loadTrueTypeFont( id, fontsrc, codeToGID, n)))
-                               {
-       //                              error(-1, "Couldn't create a font for 
'%s'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                                       goto err2;
-                               }
-                       break;
-               case fontCIDType0:
-               case fontCIDType0C:
-                       if (!(fontFile = m_fontEngine->loadCIDFont( id, 
fontsrc)))
-                       {
-       //                      error(-1, "Couldn't create a font for '%s'", 
gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                               goto err2;
-                       }
-                       break;
-               case fontCIDType0COT:
-                       if (!(fontFile = m_fontEngine->loadOpenTypeCFFFont( id, 
fontsrc)))
-                       {
-       //                      error(-1, "Couldn't create a font for '%s'", 
gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                               goto err2;
-                       }
-                       break;
-               case fontCIDType2:
-               case fontCIDType2OT:
-                       codeToGID = nullptr;
-                       n = 0;
-                       if (((GfxCIDFont *)gfxFont)->getCIDToGID())
-                       {
-                               n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen();
-                               if (n)
-                               {
-                                       codeToGID = (Gushort *)gmallocn(n, 
sizeof(Gushort));
-                                       memcpy(codeToGID, ((GfxCIDFont 
*)gfxFont)->getCIDToGID(), n * sizeof(Gushort));
-                               }
-                       }
-                       else
-                       {
-                               if (fileName)
-                                       ff = 
FoFiTrueType::load(fileName->getCString());
-                               else
-                                       ff = FoFiTrueType::make(tmpBuf, 
tmpBufLen);
-                               if (!ff)
-                                       goto err2;
-                               codeToGID = ((GfxCIDFont 
*)gfxFont)->getCodeToGIDMap(ff, &n);
-                               delete ff;
-                       }
-                       if (!(fontFile = m_fontEngine->loadTrueTypeFont( id, 
fontsrc, codeToGID, n, faceIndex)))
-                       {
-       //                      error(-1, "Couldn't create a font for '%s'", 
gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)");
-                               goto err2;
-                       }
-                       break;
-               default:
-                       // this shouldn't happen
-                       goto err2;
-               }
-       }
-       // get the font matrix
-       textMat = state->getTextMat();
-       fontSize = state->getFontSize();
-       m11 = textMat[0] * fontSize * state->getHorizScaling();
-       m12 = textMat[1] * fontSize * state->getHorizScaling();
-       m21 = textMat[2] * fontSize;
-       m22 = textMat[3] * fontSize;
-       matrix[0] = 1;
-       matrix[1] = 0;
-       matrix[2] = 0;
-       matrix[3] = 1;
-       matrix[4] = 0;
-       matrix[5] = 0;
-       // create the scaled font
-       mat[0] = m11;
-       mat[1] = -m12;
-       mat[2] = m21;
-       mat[3] = -m22;
-       m_font = m_fontEngine->getFont(fontFile, mat, matrix);
-       if (fontsrc && !fontsrc->isFile)
-               fontsrc->unref();
-       return;
-
-err2:
-       delete id;
-err1:
-       if (fontsrc && !fontsrc->isFile)
-               fontsrc->unref();
-       return;
-}
-#endif
 
 void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, 
double dy, double originX, double originY, CharCode code, int nBytes, Unicode 
*u, int uLen)
 {


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

Reply via email to