Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 511252 Details for
Bug 629752
app-office/scribus-1.5.3 fails with poppler-0.58.0
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
scribus-1.5.3-poppler-0.58.patch
scribus-1.5.3-poppler-0.58.patch (text/plain), 16.66 KB, created by
Andreas Sturmlechner
on 2017-12-20 20:57:34 UTC
(
hide
)
Description:
scribus-1.5.3-poppler-0.58.patch
Filename:
MIME Type:
Creator:
Andreas Sturmlechner
Created:
2017-12-20 20:57:34 UTC
Size:
16.66 KB
patch
obsolete
>From 61186c7ef083046b7e0c908952e8a773e2787d82 Mon Sep 17 00:00:00 2001 >From: Jean Ghali <jghali@libertysurf.fr> >Date: Fri, 8 Sep 2017 16:52:10 +0000 >Subject: [PATCH] #14979: poppler-0.58 breaks build > >git-svn-id: svn://scribus.net/trunk/Scribus@22154 11d20701-8431-0410-a711-e3c959e3b870 >--- > scribus/plugins/import/pdf/importpdf.cpp | 95 +++++++++++++++-- > scribus/plugins/import/pdf/slaoutput.cpp | 174 ++++++++++++++++++++++++++++++- > 2 files changed, 258 insertions(+), 11 deletions(-) > >diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp >index 4c462beadd..1c0bd8a888 100644 >--- a/scribus/plugins/import/pdf/importpdf.cpp >+++ b/scribus/plugins/import/pdf/importpdf.cpp >@@ -22,6 +22,7 @@ for which a new license (GPL+exception) is in place. > #include <poppler/PageTransition.h> > #include <poppler/ViewerPreferences.h> > #include <poppler/poppler-config.h> >+#include <poppler/cpp/poppler-version.h> > #include <poppler/SplashOutputDev.h> > #include <poppler/splash/SplashBitmap.h> > >@@ -59,6 +60,12 @@ for which a new license (GPL+exception) is in place. > #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) > { > tmpSele = new Selection(this, false); >@@ -507,12 +514,20 @@ bool PdfPlug::convert(const QString& fn) > { > 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 > if (ref.isRef()) > { > OptionalContentGroup *oc = ocg->findOcgByRef(ref.getRef()); >@@ -523,7 +538,9 @@ bool PdfPlug::convert(const QString& fn) > ocgNames.append(ocgName); > } > } >+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0) > ref.free(); >+#endif > } > else > { >@@ -597,39 +614,71 @@ bool PdfPlug::convert(const QString& fn) > dev->layersSetByOCG = true; > } > #endif >+ >+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0) >+ Object info = pdfDoc->getDocInfo(); >+ if (info.isDict()) >+ { >+ Object obj; >+ Dict *infoDict = info.getDict(); >+ obj = infoDict->lookup((char*) "Title"); >+ if (obj.isString()) >+ { >+ m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString())); >+ } >+ obj = infoDict->lookup((char*) "Author"); >+ if (obj.isString()) >+ { >+ m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString())); >+ } >+ obj = infoDict->lookup((char*) "Subject"); >+ if (obj.isString()) >+ { >+ m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString())); >+ } >+ obj = infoDict->lookup((char*) "Keywords"); >+ if (obj.isString()) >+ { >+ // s1 = obj.getString(); >+ m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString())); >+ } >+ } >+ info = Object(); >+#else > Object info; > pdfDoc->getDocInfo(&info); > if (info.isDict()) > { > Object obj; >- // GooString *s1; >+ // GooString *s1; > Dict *infoDict = info.getDict(); >- if (infoDict->lookup((char*)"Title", &obj )->isString()) >+ if (infoDict->lookup((char*)"Title", &obj)->isString()) > { >- // s1 = obj.getString(); >+ // s1 = obj.getString(); > m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString())); > obj.free(); > } >- if (infoDict->lookup((char*)"Author", &obj )->isString()) >+ if (infoDict->lookup((char*)"Author", &obj)->isString()) > { >- // s1 = obj.getString(); >+ // s1 = obj.getString(); > m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString())); > obj.free(); > } >- if (infoDict->lookup((char*)"Subject", &obj )->isString()) >+ if (infoDict->lookup((char*)"Subject", &obj)->isString()) > { >- // s1 = obj.getString(); >+ // s1 = obj.getString(); > m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString())); > obj.free(); > } >- if (infoDict->lookup((char*)"Keywords", &obj )->isString()) >+ if (infoDict->lookup((char*)"Keywords", &obj)->isString()) > { >- // s1 = obj.getString(); >+ // s1 = obj.getString(); > m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString())); > obj.free(); > } > } > info.free(); >+#endif > if (cropped) > { > QRectF crBox = getCBox(contentRect, pageNs[0]); >@@ -746,8 +795,13 @@ bool PdfPlug::convert(const QString& fn) > pdfDoc->displayPage(dev, pp, hDPI, vDPI, rotate, useMediaBox, crop, printing, NULL, NULL, 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; >@@ -793,32 +847,51 @@ bool PdfPlug::convert(const QString& fn) > 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 = NULL; >@@ -839,9 +912,13 @@ bool PdfPlug::convert(const QString& fn) > } > } > } >+#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())); >diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp >index 32cfed1012..ffa417a3b6 100644 >--- a/scribus/plugins/import/pdf/slaoutput.cpp >+++ b/scribus/plugins/import/pdf/slaoutput.cpp >@@ -6,6 +6,7 @@ for which a new license (GPL+exception) is in place. > */ > > #include "slaoutput.h" >+#include <poppler/cpp/poppler-version.h> > #include <poppler/GlobalParams.h> > #include <poppler/poppler-config.h> > #include <poppler/FileSpec.h> >@@ -19,11 +20,49 @@ for which a new license (GPL+exception) is in place. > #include "util_math.h" > #include <tiffio.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) >+ > LinkSubmitForm::LinkSubmitForm(Object *actionObj) > { > Object obj1, obj2, obj3; > fileName = NULL; > m_flags = 0; >+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0) >+ if (actionObj->isDict()) >+ { >+ obj1 = actionObj->dictLookup("F"); >+ if (!obj1.isNull()) >+ { >+ if (obj1.isDict()) >+ { >+ obj3 = obj1.dictLookup("FS"); >+ if (!obj3.isNull()) >+ { >+ if (obj3.isName()) >+ { >+ char *name = obj3.getName(); >+ if (!strcmp(name, "URL")) >+ { >+ obj2 = obj1.dictLookup("F"); >+ if (!obj2.isNull()) >+ fileName = obj2.getString()->copy(); >+ } >+ } >+ } >+ } >+ } >+ obj1 = actionObj->dictLookup("Flags"); >+ if (!obj1.isNull()) >+ { >+ if (obj1.isNum()) >+ m_flags = obj1.getInt(); >+ } >+ } >+#else > if (actionObj->isDict()) > { > if (!actionObj->dictLookup("F", &obj1)->isNull()) >@@ -54,6 +93,7 @@ LinkSubmitForm::LinkSubmitForm(Object *actionObj) > } > obj1.free(); > } >+#endif > } > > LinkSubmitForm::~LinkSubmitForm() >@@ -66,11 +106,25 @@ LinkImportData::LinkImportData(Object *actionObj) > { > Object obj1, obj3; > fileName = NULL; >+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0) >+ if (actionObj->isDict()) >+ { >+ obj1 = actionObj->dictLookup("F"); >+ if (!obj1.isNull()) >+ { >+ obj3 = getFileSpecNameForPlatform(&obj1); >+ if (!obj3.isNull()) >+ { >+ fileName = obj3.getString()->copy(); >+ } >+ } >+ } >+#else > if (actionObj->isDict()) > { > if (!actionObj->dictLookup("F", &obj1)->isNull()) > { >- if (getFileSpecNameForPlatform (&obj1, &obj3)) >+ if (getFileSpecNameForPlatform(&obj1, &obj3)) > { > fileName = obj3.getString()->copy(); > obj3.free(); >@@ -78,6 +132,7 @@ LinkImportData::LinkImportData(Object *actionObj) > } > obj1.free(); > } >+#endif > } > > LinkImportData::~LinkImportData() >@@ -256,6 +311,27 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano) > 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()) >+ { >+ Dict* adic = obj.getDict(); >+ additionalActions = adic->lookupNF("A"); >+ Object additionalActionsObject = additionalActions.fetch(pdfDoc->getXRef()); >+ if (additionalActionsObject.isDict()) >+ { >+ Object actionObject = additionalActionsObject.dictLookup("S"); >+ if (actionObject.isName("ImportData")) >+ { >+ linkAction = new LinkImportData(&additionalActionsObject); >+ } >+ else if (actionObject.isName("SubmitForm")) >+ { >+ linkAction = new LinkSubmitForm(&additionalActionsObject); >+ } >+ } >+ } >+#else > Object *act = xref->fetch(refa.num, refa.gen, &obj); > if (act) > { >@@ -283,6 +359,7 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano) > } > } > obj.free(); >+#endif > return linkAction; > } > >@@ -293,6 +370,22 @@ LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *a > 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()) >+ { >+ Dict* adic = obj.getDict(); >+ additionalActions = adic->lookupNF("AA"); >+ Object additionalActionsObject = additionalActions.fetch(pdfDoc->getXRef()); >+ if (additionalActionsObject.isDict()) >+ { >+ Object actionObject = additionalActionsObject.dictLookup(key); >+ if (actionObject.isDict()) >+ linkAction = LinkAction::parseAction(&actionObject, pdfDoc->getCatalog()->getBaseURI()); >+ } >+ } >+#else > Object *act = xref->fetch(refa.num, refa.gen, &obj); > if (act) > { >@@ -313,6 +406,7 @@ LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *a > } > } > obj.free(); >+#endif > return linkAction; > } > >@@ -838,6 +932,33 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota, double xCoor, double yCoor, > { > 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()) >+ { >+ Dict* dict = obj1.getDict(); >+ Object obj2 = dict->lookup("Kids"); >+ //childs >+ if (obj2.isArray()) >+ { >+ // Load children >+ QList<int> radList; >+ for (int i = 0; i < obj2.arrayGetLength(); i++) >+ { >+ Object childRef = obj2.arrayGetNF(i); >+ if (!childRef.isRef()) >+ continue; >+ Object childObj = obj2.arrayGet(i); >+ if (!childObj.isDict()) >+ continue; >+ const Ref ref = childRef.getRef(); >+ radList.append(ref.num); >+ } >+ QString tmTxt = UnicodeParsedString(annota->getName()); >+ m_radioMap.insert(tmTxt, radList); >+ } >+ } >+#else > Object *act = xref->fetch(refa.num, refa.gen, &obj1); > if (act && act->isDict()) > { >@@ -873,6 +994,7 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota, double xCoor, double yCoor, > obj2.free(); > } > obj1.free(); >+#endif > } > return retVal; > } >@@ -3007,6 +3129,23 @@ void SlaOutputDev::beginMarkedContent(char *name, Object *dictRef) > } > else > { >+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0) >+ dictObj = dictRef->fetch(xref); >+ if (!dictObj.isDict()) >+ return; >+ dict = dictObj.getDict(); >+ dictType = dict->lookup("Type"); >+ 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()); >+ } >+ } >+#else > dictRef->fetch(xref, &dictObj); > if (!dictObj.isDict()) > { >@@ -3027,6 +3166,7 @@ void SlaOutputDev::beginMarkedContent(char *name, Object *dictRef) > } > dictType.free(); > dictObj.free(); >+#endif > } > } > m_mcStack.push(mSte); >@@ -3046,14 +3186,20 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict *properties) > { > if (layersSetByOCG) > return; >- Object obj; > 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) >@@ -3066,6 +3212,29 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict *properties) > 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()); >+ obj = properties->lookup((char*) "Editable"); >+ if (obj.isBool()) >+ m_doc->setLayerLocked(currentLayer, !obj.getBool()); >+ obj = properties->lookup((char*) "Printed"); >+ if (obj.isBool()) >+ m_doc->setLayerPrintable(currentLayer, obj.getBool()); >+ obj = properties->lookup((char*)"Color"); >+ if (obj.isArray()) >+ { >+ Object obj1; >+ obj1 = obj.arrayGet(0); >+ int r = obj1.getNum() / 256; >+ obj1 = obj.arrayGet(1); >+ int g = obj1.getNum() / 256; >+ obj1 = obj.arrayGet(2); >+ int b = obj1.getNum() / 256; >+ m_doc->setLayerMarker(currentLayer, QColor(r, g, b)); >+ } >+#else > if (properties->lookup((char*)"Visible", &obj)) > { > if (obj.isBool()) >@@ -3102,6 +3271,7 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict *properties) > } > obj.free(); > } >+#endif > } > } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 629752
:
492106
| 511252