diff --git a/build_internal_libraries_as_static.patch b/build_internal_libraries_as_static.patch new file mode 100644 index 0000000..5780a92 --- /dev/null +++ b/build_internal_libraries_as_static.patch @@ -0,0 +1,11 @@ +--- inkscape-0.92.3/CMakeScripts/HelperMacros.cmake_orig 2018-04-24 21:00:20.000562424 +0200 ++++ inkscape-0.92.3/CMakeScripts/HelperMacros.cmake 2018-04-24 21:00:30.300534272 +0200 +@@ -29,7 +29,7 @@ + name + sources) + +- add_library(${name} ${sources}) ++ add_library(${name} STATIC ${sources}) + + # works fine without having the includes + # listed is helpful for IDE's (QtCreator/MSVC) diff --git a/fix_install_targets.patch b/fix_install_targets.patch new file mode 100644 index 0000000..31b9c8e --- /dev/null +++ b/fix_install_targets.patch @@ -0,0 +1,25 @@ +--- inkscape-0.92.3/CMakeScripts/HelperMacros.cmake_orig 2018-04-24 21:28:19.299976294 +0200 ++++ inkscape-0.92.3/CMakeScripts/HelperMacros.cmake 2018-04-24 21:00:30.300534272 +0200 +@@ -37,7 +37,7 @@ + + # static libraries are probably not useful on Windows + # (if we ever build shared libraries those would use the RUNTIME target and we might have to revisit this) +- if(NOT WIN32) ++ if(0) + install(TARGETS ${name} + LIBRARY DESTINATION lib/inkscape + ARCHIVE DESTINATION lib/inkscape +--- inkscape-0.92.3/src/CMakeLists.txt_orig 2018-04-24 21:21:17.069106797 +0200 ++++ inkscape-0.92.3/src/CMakeLists.txt 2018-04-24 21:26:42.844223886 +0200 +@@ -575,9 +575,8 @@ + inkscape_base + inkscape + inkview +- RUNTIME DESTINATION bin +- LIBRARY DESTINATION lib/inkscape +- ARCHIVE DESTINATION lib/inkscape) ++ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + else() + install(TARGETS + inkscape_base diff --git a/inkscape-0.92.2.tar.bz2 b/inkscape-0.92.2.tar.bz2 deleted file mode 100644 index 90bc41b..0000000 --- a/inkscape-0.92.2.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a628d0e04c254e9840947e6d866974f92c68ae31631a38b94d9b65e5cd84cfd3 -size 31224100 diff --git a/inkscape-0.92.3.tar.bz2 b/inkscape-0.92.3.tar.bz2 new file mode 100644 index 0000000..6f59fb7 --- /dev/null +++ b/inkscape-0.92.3.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:063296c05a65d7a92a0f627485b66221487acfc64a24f712eb5237c4bd7816b2 +size 31606442 diff --git a/inkscape-poppler058-fix.patch b/inkscape-poppler058-fix.patch deleted file mode 100644 index f6e6f06..0000000 --- a/inkscape-poppler058-fix.patch +++ /dev/null @@ -1,1459 +0,0 @@ -From 93ccf03162cd2e46d962822d5507865f3451168c Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Wed, 6 Sep 2017 15:05:31 +0200 -Subject: [PATCH] adapt to poppler 0.58 - ---- - CMakeScripts/DefineDependsandFlags.cmake | 4 ++++ - config.h.cmake | 3 +++ - src/extension/internal/pdfinput/pdf-input.cpp | 6 ++++++ - src/extension/internal/pdfinput/pdf-parser.cpp | 521 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 534 insertions(+) - -diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake -index 836cfd9..c33a3bf 100644 ---- a/CMakeScripts/DefineDependsandFlags.cmake -+++ b/CMakeScripts/DefineDependsandFlags.cmake -@@ -124,6 +124,10 @@ if(ENABLE_POPPLER) - POPPLER_VERSION VERSION_EQUAL "0.29.0") - set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON) - endif() -+ if(POPPLER_VERSION VERSION_GREATER "0.58.0" OR -+ POPPLER_VERSION VERSION_EQUAL "0.58.0") -+ set(POPPLER_NEW_OBJECT_API ON) -+ endif() - else() - set(ENABLE_POPPLER_CAIRO OFF) - endif() -diff --git a/config.h.cmake b/config.h.cmake -index 00d6fb8..7af7da8 100644 ---- a/config.h.cmake -+++ b/config.h.cmake -@@ -149,6 +149,9 @@ - /* Use color space API from Poppler >= 0.29.0 */ - #cmakedefine POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API 1 - -+/* Use object API from Poppler >= 0.58.0 */ -+#cmakedefine POPPLER_NEW_OBJECT_API 1 -+ - /* Define to 1 if you have the `pow' function. */ - #cmakedefine HAVE_POW 1 - -diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp -index c1940b1..e311562 100644 ---- a/src/extension/internal/pdfinput/pdf-input.cpp -+++ b/src/extension/internal/pdfinput/pdf-input.cpp -@@ -840,14 +840,20 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { - } - - // Parse the document structure -+#if defined(POPPLER_NEW_OBJECT_API) -+ Object obj = page->getContents(); -+#else - Object obj; - page->getContents(&obj); -+#endif - if (!obj.isNull()) { - pdf_parser->parse(&obj); - } - - // Cleanup -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - delete pdf_parser; - delete builder; - g_free(docname); -diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp -index 5ede59b..604b7f8 100644 ---- a/src/extension/internal/pdfinput/pdf-parser.cpp -+++ b/src/extension/internal/pdfinput/pdf-parser.cpp -@@ -414,13 +414,21 @@ void PdfParser::parse(Object *obj, GBool topLevel) { - - if (obj->isArray()) { - for (int i = 0; i < obj->arrayGetLength(); ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj->arrayGet(i); -+#else - obj->arrayGet(i, &obj2); -+#endif - if (!obj2.isStream()) { - error(errInternal, -1, "Weird page contents"); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - return; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } - } else if (!obj->isStream()) { - error(errInternal, -1, "Weird page contents"); -@@ -439,7 +447,11 @@ void PdfParser::go(GBool /*topLevel*/) - - // scan a sequence of objects - int numArgs = 0; -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = parser->getObj(); -+#else - parser->getObj(&obj); -+#endif - while (!obj.isEOF()) { - - // got a command - execute it -@@ -457,14 +469,20 @@ void PdfParser::go(GBool /*topLevel*/) - // Run the operation - execOp(&obj, args, numArgs); - -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); - for (int i = 0; i < numArgs; ++i) - args[i].free(); -+#endif - numArgs = 0; - - // got an argument - save it - } else if (numArgs < maxArgs) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ args[numArgs++] = std::move(obj); -+#else - args[numArgs++] = obj; -+#endif - - // too many arguments - something is wrong - } else { -@@ -475,13 +493,21 @@ void PdfParser::go(GBool /*topLevel*/) - printf("\n"); - fflush(stdout); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - } - - // grab the next object -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = parser->getObj(); -+#else - parser->getObj(&obj); -+#endif - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - - // args at end with no command - if (numArgs > 0) { -@@ -495,8 +521,10 @@ void PdfParser::go(GBool /*topLevel*/) - printf("\n"); - fflush(stdout); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - for (int i = 0; i < numArgs; ++i) - args[i].free(); -+#endif - } - } - -@@ -692,9 +720,13 @@ void PdfParser::opSetDash(Object args[], int /*numArgs*/) - if (length != 0) { - dash = (double *)gmallocn(length, sizeof(double)); - for (int i = 0; i < length; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ dash[i] = a->get(i).getNum(); -+#else - Object obj; - dash[i] = a->get(i, &obj)->getNum(); - obj.free(); -+#endif - } - } - state->setLineDash(dash, length, args[1].getNum()); -@@ -744,12 +776,18 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - GBool haveBackdropColor = gFalse; - GBool alpha = gFalse; - -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj1 = res->lookupGState(args[0].getName())).isNull()) { -+#else - if (!res->lookupGState(args[0].getName(), &obj1)) { -+#endif - return; - } - if (!obj1.isDict()) { - error(errSyntaxError, getPos(), "ExtGState '{0:s}' is wrong type"), args[0].getName(); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - return; - } - if (printCommands) { -@@ -759,7 +797,11 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - } - - // transparency support: blend mode, fill/stroke opacity -+#if defined(POPPLER_NEW_OBJECT_API) -+ if (!((obj2 = obj1.dictLookup(const_cast("BM"))).isNull())) { -+#else - if (!obj1.dictLookup(const_cast("BM"), &obj2)->isNull()) { -+#endif - GfxBlendMode mode = gfxBlendNormal; - if (state->parseBlendMode(&obj2, &mode)) { - state->setBlendMode(mode); -@@ -767,40 +809,71 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - error(errSyntaxError, getPos(), "Invalid blend mode in ExtGState"); - } - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj2 = obj1.dictLookup(const_cast("ca"))).isNum()) { -+#else - obj2.free(); - if (obj1.dictLookup(const_cast("ca"), &obj2)->isNum()) { -+#endif - state->setFillOpacity(obj2.getNum()); - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj2 = obj1.dictLookup(const_cast("CA"))).isNum()) { -+#else - obj2.free(); - if (obj1.dictLookup(const_cast("CA"), &obj2)->isNum()) { -+#endif - state->setStrokeOpacity(obj2.getNum()); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - - // fill/stroke overprint - GBool haveFillOP = gFalse; -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((haveFillOP = (obj2 = obj1.dictLookup(const_cast("op"))).isBool())) { -+#else - if ((haveFillOP = (obj1.dictLookup(const_cast("op"), &obj2)->isBool()))) { -+#endif - state->setFillOverprint(obj2.getBool()); - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj2 = obj1.dictLookup(const_cast("OP"))).isBool()) { -+#else - obj2.free(); - if (obj1.dictLookup(const_cast("OP"), &obj2)->isBool()) { -+#endif - state->setStrokeOverprint(obj2.getBool()); - if (!haveFillOP) { - state->setFillOverprint(obj2.getBool()); - } - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - - // stroke adjust -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj2 = obj1.dictLookup(const_cast("SA"))).isBool()) { -+#else - if (obj1.dictLookup(const_cast("SA"), &obj2)->isBool()) { -+#endif - state->setStrokeAdjust(obj2.getBool()); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - - // transfer function -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj2 = obj1.dictLookup(const_cast("TR2"))).isNull()) { -+ obj2 = obj1.dictLookup(const_cast("TR")); -+#else - if (obj1.dictLookup(const_cast("TR2"), &obj2)->isNull()) { - obj2.free(); - obj1.dictLookup(const_cast("TR"), &obj2); -+#endif - } - if (obj2.isName(const_cast("Default")) || - obj2.isName(const_cast("Identity"))) { -@@ -809,9 +882,15 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - } else if (obj2.isArray() && obj2.arrayGetLength() == 4) { - int pos = 4; - for (int i = 0; i < 4; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj3 = obj2.arrayGet(i); -+#else - obj2.arrayGet(i, &obj3); -+#endif - funcs[i] = Function::parse(&obj3); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj3.free(); -+#endif - if (!funcs[i]) { - pos = i; - break; -@@ -828,21 +907,37 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - } else if (!obj2.isNull()) { - error(errSyntaxError, getPos(), "Invalid transfer function in ExtGState"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - - // soft mask -+#if defined(POPPLER_NEW_OBJECT_API) -+ if (!((obj2 = obj1.dictLookup(const_cast("SMask"))).isNull())) { -+#else - if (!obj1.dictLookup(const_cast("SMask"), &obj2)->isNull()) { -+#endif - if (obj2.isName(const_cast("None"))) { - builder->clearSoftMask(state); - } else if (obj2.isDict()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj3 = obj2.dictLookup(const_cast("S"))).isName(const_cast("Alpha"))) { -+#else - if (obj2.dictLookup(const_cast("S"), &obj3)->isName(const_cast("Alpha"))) { -+#endif - alpha = gTrue; - } else { // "Luminosity" - alpha = gFalse; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj3.free(); -+#endif - funcs[0] = NULL; -+#if defined(POPPLER_NEW_OBJECT_API) -+ if (!((obj3 = obj2.dictLookup(const_cast("TR"))).isNull())) { -+#else - if (!obj2.dictLookup(const_cast("TR"), &obj3)->isNull()) { -+#endif - funcs[0] = Function::parse(&obj3); - if (funcs[0]->getInputSize() != 1 || - funcs[0]->getOutputSize() != 1) { -@@ -851,26 +946,45 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - funcs[0] = NULL; - } - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((haveBackdropColor = (obj3 = obj2.dictLookup(const_cast("BC"))).isArray())) { -+#else - obj3.free(); - if ((haveBackdropColor = obj2.dictLookup(const_cast("BC"), &obj3)->isArray())) { -+#endif - for (int i = 0; i < gfxColorMaxComps; ++i) { - backdropColor.c[i] = 0; - } - for (int i = 0; i < obj3.arrayGetLength() && i < gfxColorMaxComps; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj4 = obj3.arrayGet(i); -+#else - obj3.arrayGet(i, &obj4); -+#endif - if (obj4.isNum()) { - backdropColor.c[i] = dblToCol(obj4.getNum()); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj4.free(); -+#endif - } - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj3 = obj2.dictLookup(const_cast("G"))).isStream()) { -+ if ((obj4 = obj3.streamGetDict()->lookup(const_cast("Group"))).isDict()) { -+#else - obj3.free(); - if (obj2.dictLookup(const_cast("G"), &obj3)->isStream()) { - if (obj3.streamGetDict()->lookup(const_cast("Group"), &obj4)->isDict()) { -+#endif - GfxColorSpace *blendingColorSpace = 0; - GBool isolated = gFalse; - GBool knockout = gFalse; -+#if defined(POPPLER_NEW_OBJECT_API) -+ if (!((obj5 = obj4.dictLookup(const_cast("CS"))).isNull())) { -+#else - if (!obj4.dictLookup(const_cast("CS"), &obj5)->isNull()) { -+#endif - #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) - blendingColorSpace = GfxColorSpace::parse(NULL, &obj5, NULL, NULL); - #elif defined(POPPLER_EVEN_NEWER_COLOR_SPACE_API) -@@ -879,15 +993,25 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - blendingColorSpace = GfxColorSpace::parse(&obj5, NULL); - #endif - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj5 = obj4.dictLookup(const_cast("I"))).isBool()) { -+#else - obj5.free(); - if (obj4.dictLookup(const_cast("I"), &obj5)->isBool()) { -+#endif - isolated = obj5.getBool(); - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj5 = obj4.dictLookup(const_cast("K"))).isBool()) { -+#else - obj5.free(); - if (obj4.dictLookup(const_cast("K"), &obj5)->isBool()) { -+#endif - knockout = obj5.getBool(); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj5.free(); -+#endif - if (!haveBackdropColor) { - if (blendingColorSpace) { - blendingColorSpace->getDefaultColor(&backdropColor); -@@ -906,18 +1030,24 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) - } else { - error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj4.free(); -+#endif - } else { - error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj3.free(); -+#endif - } else if (!obj2.isNull()) { - error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState"); - } - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); - - obj1.free(); -+#endif - } - - void PdfParser::doSoftMask(Object *str, GBool alpha, -@@ -938,43 +1068,79 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, - dict = str->streamGetDict(); - - // check form type -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("FormType")); -+#else - dict->lookup(const_cast("FormType"), &obj1); -+#endif - if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { - error(errSyntaxError, getPos(), "Unknown form type"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // get bounding box -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("BBox")); -+#else - dict->lookup(const_cast("BBox"), &obj1); -+#endif - if (!obj1.isArray()) { -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - error(errSyntaxError, getPos(), "Bad form bounding box"); - return; - } - for (i = 0; i < 4; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj1.arrayGet(i); -+#else - obj1.arrayGet(i, &obj2); -+#endif - bbox[i] = obj2.getNum(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ } -+#else - obj2.free(); - } - obj1.free(); -+#endif - - // get matrix -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Matrix")); -+#else - dict->lookup(const_cast("Matrix"), &obj1); -+#endif - if (obj1.isArray()) { - for (i = 0; i < 6; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj1.arrayGet(i); -+#else - obj1.arrayGet(i, &obj2); -+#endif - m[i] = obj2.getNum(); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } - } else { - m[0] = 1; m[1] = 0; - m[2] = 0; m[3] = 1; - m[4] = 0; m[5] = 0; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // get resources -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Resources")); -+#else - dict->lookup(const_cast("Resources"), &obj1); -+#endif - resDict = obj1.isDict() ? obj1.getDict() : (Dict *)NULL; - - // draw it -@@ -987,7 +1153,9 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, - if (blendingColorSpace) { - delete blendingColorSpace; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - } - - void PdfParser::opSetRenderingIntent(Object /*args*/[], int /*numArgs*/) -@@ -1084,7 +1252,11 @@ void PdfParser::opSetFillColorSpace(Object args[], int /*numArgs*/) - Object obj; - - state->setFillPattern(NULL); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = res->lookupColorSpace(args[0].getName()); -+#else - res->lookupColorSpace(args[0].getName(), &obj); -+#endif - - GfxColorSpace *colorSpace = 0; - #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) -@@ -1106,7 +1278,9 @@ void PdfParser::opSetFillColorSpace(Object args[], int /*numArgs*/) - colorSpace = GfxColorSpace::parse(&obj, NULL); - } - #endif -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - if (colorSpace) { - GfxColor color; - state->setFillColorSpace(colorSpace); -@@ -1125,7 +1299,11 @@ void PdfParser::opSetStrokeColorSpace(Object args[], int /*numArgs*/) - GfxColorSpace *colorSpace = 0; - - state->setStrokePattern(NULL); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = res->lookupColorSpace(args[0].getName()); -+#else - res->lookupColorSpace(args[0].getName(), &obj); -+#endif - #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) - if (obj.isNull()) { - colorSpace = GfxColorSpace::parse(NULL, &args[0], NULL, NULL); -@@ -1145,7 +1323,9 @@ void PdfParser::opSetStrokeColorSpace(Object args[], int /*numArgs*/) - colorSpace = GfxColorSpace::parse(&obj, NULL); - } - #endif -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - if (colorSpace) { - GfxColor color; - state->setStrokeColorSpace(colorSpace); -@@ -2375,7 +2555,11 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/) - wMode = state->getFont()->getWMode(); - a = args[0].getArray(); - for (int i = 0; i < a->getLength(); ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = a->get(i); -+#else - a->get(i, &obj); -+#endif - if (obj.isNum()) { - // this uses the absolute value of the font size to match - // Acrobat's behavior -@@ -2392,7 +2576,9 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/) - } else { - error(errSyntaxError, getPos(), "Element of show/space array must be number or string"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - } - } - -@@ -2465,7 +2651,11 @@ void PdfParser::doShowText(GooString *s) { - //out->updateCTM(state, 1, 0, 0, 1, 0, 0); - if (0){ /*!out->beginType3Char(state, curX + riseX, curY + riseY, tdx, tdy, - code, u, uLen)) {*/ -+#if defined(POPPLER_NEW_OBJECT_API) -+ charProc = ((Gfx8BitFont *)font)->getCharProc(code); -+#else - ((Gfx8BitFont *)font)->getCharProc(code, &charProc); -+#endif - if ((resDict = ((Gfx8BitFont *)font)->getResources())) { - pushResources(resDict); - } -@@ -2478,7 +2668,9 @@ void PdfParser::doShowText(GooString *s) { - if (resDict) { - popResources(); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - charProc.free(); -+#endif - } - restoreState(); - // GfxState::restore() does *not* restore the current position, -@@ -2541,23 +2733,43 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) - Object obj1, obj2, obj3, refObj; - - char *name = args[0].getName(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj1 = res->lookupXObject(name)).isNull()) { -+#else - if (!res->lookupXObject(name, &obj1)) { -+#endif - return; - } - if (!obj1.isStream()) { - error(errSyntaxError, getPos(), "XObject '{0:s}' is wrong type", name); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - return; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj1.streamGetDict()->lookup(const_cast("Subtype")); -+#else - obj1.streamGetDict()->lookup(const_cast("Subtype"), &obj2); -+#endif - if (obj2.isName(const_cast("Image"))) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ refObj = res->lookupXObjectNF(name); -+#else - res->lookupXObjectNF(name, &refObj); -+#endif - doImage(&refObj, obj1.getStream(), gFalse); -+#if !defined(POPPLER_NEW_OBJECT_API) - refObj.free(); -+#endif - } else if (obj2.isName(const_cast("Form"))) { - doForm(&obj1); - } else if (obj2.isName(const_cast("PS"))) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj3 = obj1.streamGetDict()->lookup(const_cast("Level1")); -+#else - obj1.streamGetDict()->lookup(const_cast("Level1"), &obj3); -+#endif - /* out->psXObject(obj1.getStream(), - obj3.isStream() ? obj3.getStream() : (Stream *)NULL);*/ - } else if (obj2.isName()) { -@@ -2565,8 +2777,10 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) - } else { - error(errSyntaxError, getPos(), "XObject subtype is missing or wrong type"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); - obj1.free(); -+#endif - } - - void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) -@@ -2593,10 +2807,18 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - dict = str->getDict(); - - // get size -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Width")); -+#else - dict->lookup(const_cast("Width"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("W")); -+#else - obj1.free(); - dict->lookup(const_cast("W"), &obj1); -+#endif - } - if (obj1.isInt()){ - width = obj1.getInt(); -@@ -2607,11 +2829,19 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - else { - goto err2; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Height")); -+#else - obj1.free(); - dict->lookup(const_cast("Height"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("H")); -+#else - obj1.free(); - dict->lookup(const_cast("H"), &obj1); -+#endif - } - if (obj1.isInt()) { - height = obj1.getInt(); -@@ -2622,26 +2852,46 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - else { - goto err2; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // image interpolation -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup("Interpolate"); -+#else - dict->lookup("Interpolate", &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup("I"); -+#else - obj1.free(); - dict->lookup("I", &obj1); -+#endif - } - if (obj1.isBool()) - interpolate = obj1.getBool(); - else - interpolate = gFalse; -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - maskInterpolate = gFalse; - - // image or mask? -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("ImageMask")); -+#else - dict->lookup(const_cast("ImageMask"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("IM")); -+#else - obj1.free(); - dict->lookup(const_cast("IM"), &obj1); -+#endif - } - mask = gFalse; - if (obj1.isBool()) { -@@ -2650,14 +2900,24 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - else if (!obj1.isNull()) { - goto err2; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // bit depth - if (bits == 0) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("BitsPerComponent")); -+#else - dict->lookup(const_cast("BitsPerComponent"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("BPC")); -+#else - obj1.free(); - dict->lookup(const_cast("BPC"), &obj1); -+#endif - } - if (obj1.isInt()) { - bits = obj1.getInt(); -@@ -2666,7 +2926,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } else { - goto err2; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - } - - // display a mask -@@ -2676,21 +2938,37 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - goto err1; - } - invert = gFalse; -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Decode")); -+#else - dict->lookup(const_cast("Decode"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("D")); -+#else - obj1.free(); - dict->lookup(const_cast("D"), &obj1); -+#endif - } - if (obj1.isArray()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj1.arrayGet(0); -+#else - obj1.arrayGet(0, &obj2); -+#endif - if (obj2.isInt() && obj2.getInt() == 1) { - invert = gTrue; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } else if (!obj1.isNull()) { - goto err2; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // draw it - builder->addImageMask(state, str, width, height, invert, interpolate); -@@ -2698,18 +2976,36 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } else { - // get color space and color map - GfxColorSpace *colorSpace; -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("ColorSpace")); -+#else - dict->lookup(const_cast("ColorSpace"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("CS")); -+#else - obj1.free(); - dict->lookup(const_cast("CS"), &obj1); -+#endif - } - if (obj1.isName()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = res->lookupColorSpace(obj1.getName()); -+#else - res->lookupColorSpace(obj1.getName(), &obj2); -+#endif - if (!obj2.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = std::move(obj2); -+#else - obj1.free(); - obj1 = obj2; -+#endif - } else { -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } - } - if (!obj1.isNull()) { -@@ -2729,17 +3025,29 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } else { - colorSpace = NULL; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - if (!colorSpace) { - goto err1; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("Decode")); -+#else - dict->lookup(const_cast("Decode"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("D")); -+#else - obj1.free(); - dict->lookup(const_cast("D"), &obj1); -+#endif - } - GfxImageColorMap *colorMap = new GfxImageColorMap(bits, &obj1, colorSpace); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - if (!colorMap->isOk()) { - delete colorMap; - goto err1; -@@ -2753,8 +3061,13 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - int maskHeight = 0; - maskInvert = gFalse; - GfxImageColorMap *maskColorMap = NULL; -+#if defined(POPPLER_NEW_OBJECT_API) -+ maskObj = dict->lookup(const_cast("Mask")); -+ smaskObj = dict->lookup(const_cast("SMask")); -+#else - dict->lookup(const_cast("Mask"), &maskObj); - dict->lookup(const_cast("SMask"), &smaskObj); -+#endif - Dict* maskDict; - if (smaskObj.isStream()) { - // soft mask -@@ -2763,58 +3076,108 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } - maskStr = smaskObj.getStream(); - maskDict = smaskObj.streamGetDict(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Width")); -+#else - maskDict->lookup(const_cast("Width"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("W")); -+#else - obj1.free(); - maskDict->lookup(const_cast("W"), &obj1); -+#endif - } - if (!obj1.isInt()) { - goto err2; - } - maskWidth = obj1.getInt(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Height")); -+#else - obj1.free(); - maskDict->lookup(const_cast("Height"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("H")); -+#else - obj1.free(); - maskDict->lookup(const_cast("H"), &obj1); -+#endif - } - if (!obj1.isInt()) { - goto err2; - } - maskHeight = obj1.getInt(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("BitsPerComponent")); -+#else - obj1.free(); - maskDict->lookup(const_cast("BitsPerComponent"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("BPC")); -+#else - obj1.free(); - maskDict->lookup(const_cast("BPC"), &obj1); -+#endif - } - if (!obj1.isInt()) { - goto err2; - } - int maskBits = obj1.getInt(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Interpolate")); -+#else - obj1.free(); - maskDict->lookup("Interpolate", &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("I")); -+#else - obj1.free(); - maskDict->lookup("I", &obj1); -+#endif - } - if (obj1.isBool()) - maskInterpolate = obj1.getBool(); - else - maskInterpolate = gFalse; -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("ColorSpace")); -+#else - obj1.free(); - maskDict->lookup(const_cast("ColorSpace"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("CS")); -+#else - obj1.free(); - maskDict->lookup(const_cast("CS"), &obj1); -+#endif - } - if (obj1.isName()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = res->lookupColorSpace(obj1.getName()); -+#else - res->lookupColorSpace(obj1.getName(), &obj2); -+#endif - if (!obj2.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = std::move(obj2); -+#else - obj1.free(); - obj1 = obj2; -+#endif - } else { -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } - } - #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) -@@ -2824,17 +3187,29 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - #else - GfxColorSpace *maskColorSpace = GfxColorSpace::parse(&obj1, NULL); - #endif -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) { - goto err1; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Decode")); -+#else - maskDict->lookup(const_cast("Decode"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("D")); -+#else - obj1.free(); - maskDict->lookup(const_cast("D"), &obj1); -+#endif - } - maskColorMap = new GfxImageColorMap(maskBits, &obj1, maskColorSpace); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - if (!maskColorMap->isOk()) { - delete maskColorMap; - goto err1; -@@ -2845,9 +3220,15 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - // color key mask - int i; - for (i = 0; i < maskObj.arrayGetLength() && i < 2*gfxColorMaxComps; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskObj.arrayGet(i); -+#else - maskObj.arrayGet(i, &obj1); -+#endif - maskColors[i] = obj1.getInt(); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - } - haveColorKeyMask = gTrue; - } else if (maskObj.isStream()) { -@@ -2857,61 +3238,111 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } - maskStr = maskObj.getStream(); - maskDict = maskObj.streamGetDict(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Width")); -+#else - maskDict->lookup(const_cast("Width"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("W")); -+#else - obj1.free(); - maskDict->lookup(const_cast("W"), &obj1); -+#endif - } - if (!obj1.isInt()) { - goto err2; - } - maskWidth = obj1.getInt(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Height")); -+#else - obj1.free(); - maskDict->lookup(const_cast("Height"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("H")); -+#else - obj1.free(); - maskDict->lookup(const_cast("H"), &obj1); -+#endif - } - if (!obj1.isInt()) { - goto err2; - } - maskHeight = obj1.getInt(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("ImageMask")); -+#else - obj1.free(); - maskDict->lookup(const_cast("ImageMask"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("IM")); -+#else - obj1.free(); - maskDict->lookup(const_cast("IM"), &obj1); -+#endif - } - if (!obj1.isBool() || !obj1.getBool()) { - goto err2; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup("Interpolate"); -+#else - obj1.free(); - maskDict->lookup("Interpolate", &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup("I"); -+#else - obj1.free(); - maskDict->lookup("I", &obj1); -+#endif - } - if (obj1.isBool()) - maskInterpolate = obj1.getBool(); - else - maskInterpolate = gFalse; -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - maskInvert = gFalse; -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("Decode")); -+#else - maskDict->lookup(const_cast("Decode"), &obj1); -+#endif - if (obj1.isNull()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = maskDict->lookup(const_cast("D")); -+#else - obj1.free(); - maskDict->lookup(const_cast("D"), &obj1); -+#endif - } - if (obj1.isArray()) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj2 = obj1.arrayGet(0); -+#else - obj1.arrayGet(0, &obj2); -+#endif - if (obj2.isInt() && obj2.getInt() == 1) { - maskInvert = gTrue; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj2.free(); -+#endif - } else if (!obj1.isNull()) { - goto err2; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - haveExplicitMask = gTrue; - } - -@@ -2929,14 +3360,18 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) - } - delete colorMap; - -+#if !defined(POPPLER_NEW_OBJECT_API) - maskObj.free(); - smaskObj.free(); -+#endif - } - - return; - - err2: -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - err1: - error(errSyntaxError, getPos(), "Bad image parameters"); - } -@@ -2961,52 +3396,97 @@ void PdfParser::doForm(Object *str) { - dict = str->streamGetDict(); - - // check form type -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = dict->lookup(const_cast("FormType")); -+#else - dict->lookup(const_cast("FormType"), &obj1); -+#endif - if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { - error(errSyntaxError, getPos(), "Unknown form type"); - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - - // get bounding box -+#if defined(POPPLER_NEW_OBJECT_API) -+ bboxObj = dict->lookup(const_cast("BBox")); -+#else - dict->lookup(const_cast("BBox"), &bboxObj); -+#endif - if (!bboxObj.isArray()) { -+#if !defined(POPPLER_NEW_OBJECT_API) - bboxObj.free(); -+#endif - error(errSyntaxError, getPos(), "Bad form bounding box"); - return; - } - for (i = 0; i < 4; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = bboxObj.arrayGet(i); -+#else - bboxObj.arrayGet(i, &obj1); -+#endif - bbox[i] = obj1.getNum(); -+#if defined(POPPLER_NEW_OBJECT_API) -+ } -+#else - obj1.free(); - } - bboxObj.free(); -+#endif - - // get matrix -+#if defined(POPPLER_NEW_OBJECT_API) -+ matrixObj = dict->lookup(const_cast("Matrix")); -+#else - dict->lookup(const_cast("Matrix"), &matrixObj); -+#endif - if (matrixObj.isArray()) { - for (i = 0; i < 6; ++i) { -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj1 = matrixObj.arrayGet(i); -+#else - matrixObj.arrayGet(i, &obj1); -+#endif - m[i] = obj1.getNum(); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj1.free(); -+#endif - } - } else { - m[0] = 1; m[1] = 0; - m[2] = 0; m[3] = 1; - m[4] = 0; m[5] = 0; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - matrixObj.free(); -+#endif - - // get resources -+#if defined(POPPLER_NEW_OBJECT_API) -+ resObj = dict->lookup(const_cast("Resources")); -+#else - dict->lookup(const_cast("Resources"), &resObj); -+#endif - resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL; - - // check for a transparency group - transpGroup = isolated = knockout = gFalse; - blendingColorSpace = NULL; -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj1 = dict->lookup(const_cast("Group"))).isDict()) { -+ if ((obj2 = obj1.dictLookup(const_cast("S"))).isName(const_cast("Transparency"))) { -+#else - if (dict->lookup(const_cast("Group"), &obj1)->isDict()) { - if (obj1.dictLookup(const_cast("S"), &obj2)->isName(const_cast("Transparency"))) { -+#endif - transpGroup = gTrue; -+#if defined(POPPLER_NEW_OBJECT_API) -+ if (!((obj3 = obj1.dictLookup(const_cast("CS"))).isNull())) { -+#else - if (!obj1.dictLookup(const_cast("CS"), &obj3)->isNull()) { -+#endif - #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) - blendingColorSpace = GfxColorSpace::parse(NULL, &obj3, NULL, NULL); - #elif defined(POPPLER_EVEN_NEWER_COLOR_SPACE_API) -@@ -3015,19 +3495,32 @@ void PdfParser::doForm(Object *str) { - blendingColorSpace = GfxColorSpace::parse(&obj3, NULL); - #endif - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj3 = obj1.dictLookup(const_cast("I"))).isBool()) { -+#else - obj3.free(); - if (obj1.dictLookup(const_cast("I"), &obj3)->isBool()) { -+#endif - isolated = obj3.getBool(); - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ if ((obj3 = obj1.dictLookup(const_cast("K"))).isBool()) { -+#else - obj3.free(); - if (obj1.dictLookup(const_cast("K"), &obj3)->isBool()) { -+#endif - knockout = obj3.getBool(); - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ } -+ } -+#else - obj3.free(); - } - obj2.free(); - } - obj1.free(); -+#endif - - // draw it - ++formDepth; -@@ -3038,7 +3531,9 @@ void PdfParser::doForm(Object *str) { - if (blendingColorSpace) { - delete blendingColorSpace; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - resObj.free(); -+#endif - } - - void PdfParser::doForm1(Object *str, Dict *resDict, double *matrix, double *bbox, -@@ -3166,35 +3661,61 @@ Stream *PdfParser::buildImageStream() { - Stream *str; - - // build dictionary -+#if defined(POPPLER_NEW_OBJECT_API) -+ dict = Object(new Dict(xref)); -+ obj = parser->getObj(); -+#else - dict.initDict(xref); - parser->getObj(&obj); -+#endif - while (!obj.isCmd(const_cast("ID")) && !obj.isEOF()) { - if (!obj.isName()) { - error(errSyntaxError, getPos(), "Inline image dictionary key must be a name object"); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - } else { - key = copyString(obj.getName()); -+#if defined(POPPLER_NEW_OBJECT_API) -+ obj = parser->getObj(); -+#else - obj.free(); - parser->getObj(&obj); -+#endif - if (obj.isEOF() || obj.isError()) { - gfree(key); - break; - } -+#if defined(POPPLER_NEW_OBJECT_API) -+ dict.dictAdd(key, std::move(obj)); -+ } -+ obj = parser->getObj(); -+#else - dict.dictAdd(key, &obj); - } - parser->getObj(&obj); -+#endif - } - if (obj.isEOF()) { - error(errSyntaxError, getPos(), "End of file in inline image"); -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); - dict.free(); -+#endif - return NULL; - } -+#if !defined(POPPLER_NEW_OBJECT_API) - obj.free(); -+#endif - - // make stream -+#if defined(POPPLER_NEW_OBJECT_API) -+ str = new EmbedStream(parser->getStream(), dict.copy(), gFalse, 0); -+ str = str->addFilters(dict.getDict()); -+#else - str = new EmbedStream(parser->getStream(), &dict, gFalse, 0); - str = str->addFilters(&dict); -+#endif - - return str; - } --- -libgit2 0.26.0 - - -From 59a7e9551fbe8fae9ff755eae2fa09f31f020f91 Mon Sep 17 00:00:00 2001 -From: Tim Sheridan -Date: Fri, 15 Sep 2017 21:00:10 +0100 -Subject: [PATCH] Adapt to poppler 0.58.0 in autotools build - ---- - build-x64-gtk3.xml | 1 + - build-x64.xml | 1 + - build.xml | 1 + - configure.ac | 5 +++++ - 4 files changed, 8 insertions(+) - -diff --git a/build-x64-gtk3.xml b/build-x64-gtk3.xml -index 29ade0e..769f168 100644 ---- a/build-x64-gtk3.xml -+++ b/build-x64-gtk3.xml -@@ -393,6 +393,7 @@ - -DPOPPLER_NEW_ERRORAPI - -DPOPPLER_EVEN_NEWER_COLOR_SPACE_API - -DPOPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API -+ -DPOPPLER_NEW_OBJECT_API - - -DGLIBMM_DISABLE_DEPRECATED - -DG_DISABLE_DEPRECATED -diff --git a/build-x64.xml b/build-x64.xml -index 7176723..abe230d 100644 ---- a/build-x64.xml -+++ b/build-x64.xml -@@ -388,6 +388,7 @@ - -DPOPPLER_NEW_ERRORAPI - -DPOPPLER_EVEN_NEWER_COLOR_SPACE_API - -DPOPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API -+ -DPOPPLER_NEW_OBJECT_API - - -DGLIBMM_DISABLE_DEPRECATED - -DG_DISABLE_DEPRECATED -diff --git a/build.xml b/build.xml -index 90ba74d..1070aa9 100644 ---- a/build.xml -+++ b/build.xml -@@ -388,6 +388,7 @@ - -DPOPPLER_NEW_ERRORAPI - -DPOPPLER_EVEN_NEWER_COLOR_SPACE_API - -DPOPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API -+ -DPOPPLER_NEW_OBJECT_API - - -DGLIBMM_DISABLE_DEPRECATED - -DG_DISABLE_DEPRECATED -diff --git a/configure.ac b/configure.ac -index 2454012..ff55553 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -454,6 +454,11 @@ if test "x$popplernewernewcolorspaceapi" = "xyes"; then - AC_DEFINE(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API, 1, [Use even newer new color space API from Poppler >= 0.29.0]) - fi - -+PKG_CHECK_MODULES(POPPLER_NEW_OBJECT_API, poppler >= 0.58.0, popplernewobjectapi=yes, popplernewobjectapi=no) -+if test "x$popplernewobjectapi" = "xyes"; then -+ AC_DEFINE(POPPLER_NEW_OBJECT_API, 1, [Use new object API from Poppler >= 0.58.0]) -+fi -+ - CPPFLAGS=$ink_svd_CPPFLAGS - LIBS=$ink_svd_LIBS - --- -libgit2 0.26.0 - diff --git a/inkscape.changes b/inkscape.changes index 010a0a9..b17fe43 100644 --- a/inkscape.changes +++ b/inkscape.changes @@ -1,3 +1,34 @@ +------------------------------------------------------------------- +Wed Apr 25 02:38:43 UTC 2018 - stefan.bruens@rwth-aachen.de + +- Omit translations from appdata on Leap 42.x/SLE12, merging + translations in XML requires msgfmt >= 0.19.7 + +------------------------------------------------------------------- +Tue Apr 24 17:41:35 UTC 2018 - stefan.bruens@rwth-aachen.de + +- Update to 0.92.3, a stability and bugfix release + * new CLI options --export-area-{drawing,page}, --export-margin + * Text tool, switching between RTL/LTR writing + * Circle/Ellipse tool, toolbar fields for Rx, Ry radius + * PDF+LaTeX export, basic linespacing support + * Preferences option for number of rendering tiles + * Various bug fixes, for details see: + https://inkscape.org/en/release/0.92.3/ +- Drop obsolete inkscape-poppler058-fix.patch +- Use cmake instead of autoconf + * Add build_internal_libraries_as_static.patch + * Add fix_install_targets.patch +- Spec file cleanup + * Remove conditionals for EOLed distributions + * Remove ghostscript-fonts-std dependency + * Add libjpeg build dependency + * Do not package extension unittests + * Move all extensions with ghostscript or pstoedit dependency + to extensions-extra subpackage +- Correct License, original inkscape code is GPL-2.0 or later, but + the binary contains code from Gimp (GPL-3.0), see COPYING + ------------------------------------------------------------------- Wed Mar 7 11:41:05 UTC 2018 - guoyunhebrave@gmail.com diff --git a/inkscape.spec b/inkscape.spec index 5411437..2eca764 100644 --- a/inkscape.spec +++ b/inkscape.spec @@ -1,7 +1,7 @@ # # spec file for package inkscape # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,29 +17,30 @@ Name: inkscape -Version: 0.92.2 +Version: 0.92.3 Release: 0 Summary: Vector Illustration Program -License: GPL-2.0 and LGPL-2.1 +License: GPL-3.0 Group: Productivity/Graphics/Vector Editors Url: http://www.inkscape.org/ -Source: https://inkscape.global.ssl.fastly.net/media/resources/file/%{name}-%{version}.tar.bz2 +Source: https://media.inkscape.org/dl/resources/file/%{name}-%{version}.tar.bz2 # openSUSE palette file Source1: openSUSE.gpl Source2: inkscape-split-extensions-extra.sh # PATCH-FIX-OPENSUSE inkscape-packages.patch sbrabec@suse.cz -- Suggest packages instead of compilation from source. Patch0: inkscape-packages.patch -# PATCH-FIX-UPSTREAM inkscape-poppler058-fix.patch lp#1715820 zaitor@opensuse.org -- Adapt to poppler 0.58 -Patch1: inkscape-poppler058-fix.patch +# PATCH-FIX-OPENSUSE build_internal_libraries_as_static.patch -- Avoid problems with dynamic library default from %%cmake macro +Patch1: build_internal_libraries_as_static.patch +# PATCH-FIX-OPENSUSE fix_install_targets.patch -- use correct libdir etc. +Patch2: fix_install_targets.patch -BuildRequires: autoconf -BuildRequires: automake BuildRequires: gtkspell-devel %if 0%{?suse_version} > 1325 BuildRequires: libboost_headers-devel %else BuildRequires: boost-devel %endif +BuildRequires: cmake BuildRequires: fdupes BuildRequires: gc-devel BuildRequires: gcc-c++ @@ -61,17 +62,13 @@ BuildRequires: python-gtk-devel BuildRequires: python2-xml BuildRequires: update-desktop-files BuildRequires: pkgconfig(dbus-glib-1) -BuildRequires: pkgconfig(libexif) -%if 0%{?suse_version} > 1310 BuildRequires: pkgconfig(libcdr-0.1) -BuildRequires: pkgconfig(libvisio-0.1) -%endif +BuildRequires: pkgconfig(libexif) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(librevenge-0.0) +BuildRequires: pkgconfig(libvisio-0.1) BuildRequires: pkgconfig(libwpg-0.3) -Requires: %{_bindir}/gs -Requires: ghostscript-fonts-std -Requires: gzip -Requires: pstoedit Requires: python-gtk Recommends: %{name}-lang Recommends: python-lxml @@ -79,7 +76,7 @@ Recommends: python-scour BuildRoot: %{_tmppath}/%{name}-%{version}-build %description -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %package extensions-extra Summary: Vector Illustration Program - Extra Extensions @@ -91,17 +88,17 @@ Requires: python-lxml Requires: python-xml # for cdr and wmf modules Recommends: yudit +# dxf_output.inx, eqtexsvg.inx: +Requires: pstoedit Enhances: %{name} # python-xml is already likely installed, so the big dependency is python-lxml. Hence this supplements. Supplements: packageand(%{name}:python-lxml) -# Package in openSUSE <= 11.0 and SLED <= 10 -Provides: %{name}:%{_datadir}/inkscape/extensions/inkex.py %description extensions-extra Extra extensions for Inkscape. Recommended for everybody who wants to use Inkscape. -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %package extensions-dia Summary: Vector Illustration Program - Dia Import Extension @@ -110,13 +107,11 @@ Requires: %{name} = %{version} Requires: dia Enhances: %{name} Supplements: packageand(%{name}:dia) -# Package in openSUSE <= 11.0 and SLED <= 10 -Provides: %{name}:%{_datadir}/inkscape/extensions/dia.inx %description extensions-dia Dia import extension for Inkscape. -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %package extensions-fig Summary: Vector Illustration Program - Fig Import Extension @@ -125,30 +120,25 @@ Requires: %{name} = %{version} Requires: transfig Enhances: %{name} Supplements: packageand(%{name}:transfig) -# Package in openSUSE <= 11.0 and SLED <= 10 -Provides: %{name}:%{_datadir}/inkscape/extensions/fig_input.inx %description extensions-fig Fig family (XFig, Figurine, JFig, WinFig,...) import extension for Inkscape. -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %package extensions-gimp Summary: Vector Illustration Program - The GIMP Extensions Group: Productivity/Graphics/Vector Editors Requires: %{name} = %{version} -Requires: gimp-2.0 +Requires: gimp Enhances: %{name} Supplements: packageand(%{name}:gimp) -Supplements: packageand(%{name}:gimp-2.0) -# Package in openSUSE <= 11.0 and SLED <= 10 -Provides: %{name}:%{_datadir}/inkscape/extensions/gimp_xcf.inx %description extensions-gimp The GIMP import and export extensions for Inkscape. -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %package extensions-skencil Summary: Vector Illustration Program - Skencil Import Extension @@ -157,13 +147,11 @@ Requires: %{name} = %{version} Requires: skencil Enhances: %{name} Supplements: packageand(%{name}:skencil) -# Package in openSUSE <= 11.0 and SLED <= 10 -Provides: %{name}:%{_datadir}/inkscape/extensions/sk_input.inx %description extensions-skencil Skencil import extension for Inkscape. -Inkscape is a vector illustration program for the GNOME desktop. +Inkscape is a professional vector graphics editor. %lang_package @@ -171,27 +159,30 @@ Inkscape is a vector illustration program for the GNOME desktop. %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %build -./autogen.sh -RPM_OPT_FLAGS="%{optflags}" %ifarch %{arm} export LDFLAGS+="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif -export CFLAGS="%{optflags} -fno-strict-aliasing" -# This (-std=c++11) is still needed with gcc6 until this is fixed: -# https://bugs.launchpad.net/inkscape/+bug/1488079 -export CXXFLAGS="%{optflags} -std=c++11 -fno-strict-aliasing" +%cmake +%{make_jobs} -%configure\ - --enable-lcms \ - --enable-poppler-cairo \ - --disable-strict-build - -make %{?_smp_mflags} +# Unmangle XML and merge translations +# Currently missing from CMake build (https://bugs.launchpad.net/inkscape/+bug/1710337) +(cd .. +sed -ie 's:<_:<:g; s:= 1500 +msgfmt --xml -d ./po/ --template inkscape.appdata.xml.in -o inkscape.appdata.xml +%else +cp inkscape.appdata.xml.in inkscape.appdata.xml +%endif +) %install -make DESTDIR=%{buildroot} install %{?_smp_mflags} +%cmake_install + rm -rf %{buildroot}%{_datadir}/locale/en_US@piglatin rm -rf %{buildroot}%{_datadir}/inkscape/filters/filters.svg.h rm -rf %{buildroot}%{_datadir}/inkscape/patterns/patterns.svg.h @@ -205,6 +196,8 @@ rm -rf %{buildroot}%{_datadir}/inkscape/extensions/genpofiles.sh rm -rf %{buildroot}%{_datadir}/inkscape/extensions/simplepath.rb # only required on Windows rm -rf %{buildroot}%{_datadir}/inkscape/extensions/print_win32_vector.* +# packaging/distribution info +rm -rf %{buildroot}%{_datadir}/inkscape/extensions/README install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/inkscape/palettes @@ -212,22 +205,27 @@ install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/inkscape/palettes %find_lang %{name} %{?no_lang_C} +# split extensions bash %{SOURCE2} %{buildroot}%{_datadir}/inkscape/extensions "%%{_datadir}/inkscape/extensions/" sed -i -e "1 s,#! */usr/bin/env python,#!/usr/bin/python2," %{buildroot}%{_datadir}/inkscape/extensions/*.py -# Localized man pages -for man in %{buildroot}%{_mandir}/*/man1/*; do - LOCALE=`echo $man | sed "s:.*%{_mandir}/\([^/]*\)/man1/.*:\1:g"` +# Localized man pages, correct install path +for man in %{buildroot}%{_mandir}/man1/inkscape.*.1; do + LOCALE=`echo $man | sed "s:.*%{_mandir}/man1/.*\.\([a-zA-Z_]\+\)\.1:\1:g"` + mkdir -m755 -p %{buildroot}%{_mandir}/$LOCALE/man1 + mv $man %{buildroot}%{_mandir}/$LOCALE/man1/%{name}.1 echo "%%lang($LOCALE) %%dir %%{_mandir}/$LOCALE" >> %{name}.man-lang.tmp echo "%%lang($LOCALE) %%dir %%{_mandir}/$LOCALE/man1" >> %{name}.man-lang.tmp - echo "%%lang($LOCALE) %%doc /${man##%{buildroot}}*" >> %{name}.man-lang.tmp + echo "%%lang($LOCALE) %%doc %%{_mandir}/$LOCALE/man1/inkscape.1*" >> %{name}.man-lang.tmp done sort -u %{name}.man-lang.tmp > %{name}.man-lang rm %{name}.man-lang.tmp -%fdupes %{buildroot} -%if 0%{?suse_version} > 1130 +# Install appdata +install -D -m 0644 inkscape.appdata.xml %{buildroot}%{_datadir}/metainfo/inkscape.appdata.xml + +%fdupes %{buildroot} %post %desktop_database_post @@ -236,7 +234,6 @@ rm %{name}.man-lang.tmp %postun %desktop_database_postun %icon_theme_cache_postun -%endif # We can't really move the localized manpages to the lang package, since they'd # create a conflict between the lang subpackage and bundles @@ -244,10 +241,11 @@ rm %{name}.man-lang.tmp %files -f inkscape.lst -f %{name}.man-lang %defattr(-,root,root) %{_bindir}/* +%{_libdir}/libinkscape_base.so %{_datadir}/applications/inkscape.desktop %{_datadir}/icons/hicolor/*/apps/inkscape.png -%dir %{_datadir}/appdata -%{_datadir}/appdata/inkscape.appdata.xml +%dir %{_datadir}/metainfo +%{_datadir}/metainfo/inkscape.appdata.xml %dir %{_datadir}/inkscape %{_datadir}/inkscape/[cf-z]* %{_datadir}/inkscape/examples @@ -256,7 +254,6 @@ rm %{name}.man-lang.tmp %{_datadir}/inkscape/extensions/xaml2svg %{_datadir}/inkscape/extensions/*.xsl* %{_datadir}/inkscape/extensions/colors.xml -%{_datadir}/inkscape/extensions/ps2* %{_datadir}/inkscape/extensions/Poly3DObjects/ %{_datadir}/inkscape/extensions/alphabet_soup/ %{_datadir}/inkscape/extensions/inkweb.js @@ -268,29 +265,34 @@ rm %{name}.man-lang.tmp %{_datadir}/inkscape/extensions/ink2canvas/* %{_datadir}/inkscape/extensions/inkscape.extension.rng %{_datadir}/inkscape/extensions/seamless_pattern.svg -%{_datadir}/inkscape/extensions/test -%{_datadir}/inkscape/extensions/test/svg %{_datadir}/inkscape/attributes/ %{_datadir}/inkscape/branding/ %doc %{_mandir}/man?/*.* # exclude extensions that go in other packages: %exclude %{_datadir}/inkscape/extensions/Barcode +%exclude %{_datadir}/inkscape/extensions/ps2pdf-ext.py +%exclude %{_datadir}/inkscape/extensions/ps_input.inx +%exclude %{_datadir}/inkscape/extensions/eps_input.inx %exclude %{_datadir}/inkscape/extensions/cdr* %exclude %{_datadir}/inkscape/extensions/wmf* %exclude %{_datadir}/inkscape/extensions/dia* %exclude %{_datadir}/inkscape/extensions/fig* %exclude %{_datadir}/inkscape/extensions/*gimp* %exclude %{_datadir}/inkscape/extensions/sk* +%exclude %{_datadir}/inkscape/extensions/*dxf* # this one is in extras, manually added there due to large dependencies on ghostscript %exclude %{_datadir}/inkscape/extensions/ps2pdf-ext.py %files extensions-extra -f inkscape-extensions-extra.lst %defattr(-,root,root) %{_datadir}/inkscape/extensions/Barcode -%{_datadir}/inkscape/extensions/cdr* # ps2pdf-ext is a wrapper around ps2pdf binary (part of ghostscript) +%{_datadir}/inkscape/extensions/ps_input.inx +%{_datadir}/inkscape/extensions/eps_input.inx %{_datadir}/inkscape/extensions/ps2pdf-ext.py -%{_datadir}/inkscape/extensions/wmf* +# ps2dxf is a wrapper around pstoedit +%{_datadir}/inkscape/extensions/dxf_output.inx +%{_datadir}/inkscape/extensions/ps2dxf.sh # This extensions seems erronous being copied in here too. %exclude %{_datadir}/inkscape/extensions/*gimp* %exclude %{_datadir}/inkscape/extensions/sk*