From 4ba7427682d1166e8510103fb8f75a9436090bd2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Thu, 6 Sep 2012 18:55:56 +0200 Subject: [PATCH] - rel 12; patches from fc --- inkscape-0.48.1-libpng15.patch | 40 -- inkscape-0.48.2-gcc47.patch | 22 + inkscape-0.48.2-png-write.patch | 31 ++ inkscape-0.48.2-png.patch | 23 + inkscape-0.48.2-poppler_020.patch | 683 +++++++++++++++++++++++++ inkscape-0.48.2-types.patch | 17 + inkscape-poppler.patch | 811 ------------------------------ inkscape.spec | 16 +- 8 files changed, 787 insertions(+), 856 deletions(-) delete mode 100644 inkscape-0.48.1-libpng15.patch create mode 100644 inkscape-0.48.2-gcc47.patch create mode 100644 inkscape-0.48.2-png-write.patch create mode 100644 inkscape-0.48.2-png.patch create mode 100644 inkscape-0.48.2-poppler_020.patch create mode 100644 inkscape-0.48.2-types.patch delete mode 100644 inkscape-poppler.patch diff --git a/inkscape-0.48.1-libpng15.patch b/inkscape-0.48.1-libpng15.patch deleted file mode 100644 index e24913e..0000000 --- a/inkscape-0.48.1-libpng15.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- inkscape-0.48.1/src/extension/internal/pdfinput/svg-builder.cpp -+++ inkscape-0.48.1-mod//src/extension/internal/pdfinput/svg-builder.cpp -@@ -1443,7 +1443,7 @@ - return NULL; - } - // Set error handler -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &info_ptr); - return NULL; - } ---- inkscape-0.48.1/src/helper/png-write.cpp -+++ inkscape-0.48.1-mod//src/helper/png-write.cpp -@@ -165,7 +165,7 @@ - /* Set error handling. REQUIRED if you aren't supplying your own - * error hadnling functions in the png_create_write_struct() call. - */ -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - /* If we get here, we had a problem reading the file */ - fclose(fp); - png_destroy_write_struct(&png_ptr, &info_ptr); ---- inkscape-0.48.1/src/sp-image.cpp -+++ inkscape-0.48.1-mod//src/sp-image.cpp -@@ -386,9 +386,13 @@ - - #if defined(PNG_iCCP_SUPPORTED) - { -- char* name = 0; -+ png_charp name = 0; - int compression_type = 0; -- char* profile = 0; -+#if (PNG_LIBPNG_VER < 10500) -+ png_charp profile = 0; -+#else -+ png_bytep profile = 0; -+#endif - png_uint_32 proflen = 0; - if ( png_get_iCCP(pngPtr, infoPtr, &name, &compression_type, &profile, &proflen) ) { - // g_message("Found an iCCP chunk named [%s] with %d bytes and comp %d", name, proflen, compression_type); diff --git a/inkscape-0.48.2-gcc47.patch b/inkscape-0.48.2-gcc47.patch new file mode 100644 index 0000000..cca69c6 --- /dev/null +++ b/inkscape-0.48.2-gcc47.patch @@ -0,0 +1,22 @@ +http://bazaar.launchpad.net/~inkscape.dev/inkscape/trunk/revision/10398 + +=== modified file 'src/graphlayout.cpp' +--- src/graphlayout.cpp 2010-12-12 08:40:34 +0000 ++++ src/graphlayout.cpp 2011-07-02 12:08:37 +0000 +@@ -156,11 +156,12 @@ + ++i) + { + SPItem *iu=*i; +- map::iterator i=nodelookup.find(iu->getId()); +- if(i==nodelookup.end()) { ++ map::iterator i_iter=nodelookup.find(iu->getId()); ++ map::iterator i_iter_end=nodelookup.end(); ++ if(i_iter==i_iter_end) { + continue; + } +- unsigned u=i->second; ++ unsigned u=i_iter->second; + GSList *nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom); + list connectors; + + diff --git a/inkscape-0.48.2-png-write.patch b/inkscape-0.48.2-png-write.patch new file mode 100644 index 0000000..055067f --- /dev/null +++ b/inkscape-0.48.2-png-write.patch @@ -0,0 +1,31 @@ +From: inkscape upstream +Fix compilation against libpng-1.5 + +=== modified file 'src/extension/internal/pdfinput/svg-builder.cpp' +--- src/extension/internal/pdfinput/svg-builder.cpp 2011-10-27 04:55:51 +0000 ++++ src/extension/internal/pdfinput/svg-builder.cpp 2011-10-29 20:34:00 +0000 +@@ -1481,7 +1481,7 @@ + return NULL; + } + // Set error handler +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + return NULL; + } + +=== modified file 'src/helper/png-write.cpp' +--- src/helper/png-write.cpp 2011-08-07 10:53:12 +0000 ++++ src/helper/png-write.cpp 2011-10-29 20:34:00 +0000 +@@ -166,8 +166,8 @@ + /* Set error handling. REQUIRED if you aren't supplying your own + * error hadnling functions in the png_create_write_struct() call. + */ +- if (setjmp(png_ptr->jmpbuf)) { +- /* If we get here, we had a problem reading the file */ ++ if (setjmp(png_jmpbuf(png_ptr))) { ++ // If we get here, we had a problem reading the file + fclose(fp); + png_destroy_write_struct(&png_ptr, &info_ptr); + return false; + diff --git a/inkscape-0.48.2-png.patch b/inkscape-0.48.2-png.patch new file mode 100644 index 0000000..0e17d2b --- /dev/null +++ b/inkscape-0.48.2-png.patch @@ -0,0 +1,23 @@ +From: inkscape upstream +Fix compilation against libpng-1.5 + +=== modified file 'src/sp-image.cpp' +--- src/sp-image.cpp 2011-02-21 07:59:34 +0000 ++++ src/sp-image.cpp 2011-02-21 08:57:28 +0000 +@@ -387,9 +387,13 @@ + + #if defined(PNG_iCCP_SUPPORTED) + { +- char* name = 0; ++ png_charp name = 0; + int compression_type = 0; +- char* profile = 0; ++#if (PNG_LIBPNG_VER < 10500) ++ png_charp profile = 0; ++#else ++ png_bytep profile = 0; ++#endif + png_uint_32 proflen = 0; + if ( png_get_iCCP(pngPtr, infoPtr, &name, &compression_type, &profile, &proflen) ) { + // g_message("Found an iCCP chunk named [%s] with %d bytes and comp %d", name, proflen, compression_type); + diff --git a/inkscape-0.48.2-poppler_020.patch b/inkscape-0.48.2-poppler_020.patch new file mode 100644 index 0000000..427d436 --- /dev/null +++ b/inkscape-0.48.2-poppler_020.patch @@ -0,0 +1,683 @@ +diff -up inkscape-0.48.2/configure.ac.poppler_020 inkscape-0.48.2/configure.ac +--- inkscape-0.48.2/configure.ac.poppler_020 2011-07-08 14:23:16.270623076 -0500 ++++ inkscape-0.48.2/configure.ac 2012-06-23 12:01:38.918678539 -0500 +@@ -623,6 +623,12 @@ if test "x$popplernew" = "xyes"; then + AC_DEFINE(POPPLER_NEW_GFXFONT, 1, [Use GfxFont from Poppler >= 0.8.3]) + fi + ++PKG_CHECK_MODULES(POPPLER_NEWERRORAPI, poppler >= 0.20.0, popplernewerror=yes, popplernewerror=no) ++if test "x$popplernewerror" = "xyes"; then ++ AC_DEFINE(POPPLER_NEW_ERRORAPI, 1, [Use new error API from Poppler >= 0.20.0]) ++fi ++ ++ + ink_svd_CPPFLAGS=$CPPFLAGS + ink_svd_LIBS=$LIBS + CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS" +diff -up inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp.poppler_020 inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp +--- inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp.poppler_020 2011-07-08 13:25:09.468790000 -0500 ++++ inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp 2012-06-23 12:08:49.285298266 -0500 +@@ -367,15 +367,23 @@ void PdfParser::parse(Object *obj, GBool + for (i = 0; i < obj->arrayGetLength(); ++i) { + obj->arrayGet(i, &obj2); + if (!obj2.isStream()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errInternal, -1, "Weird page contents"); ++#else + error(-1, const_cast("Weird page contents")); ++#endif + obj2.free(); + return; + } + obj2.free(); + } + } else if (!obj->isStream()) { +- error(-1, const_cast("Weird page contents")); +- return; ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errInternal, -1, "Weird page contents"); ++#else ++ error(-1, const_cast("Weird page contents")); ++#endif ++ return; + } + parser = new Parser(xref, new Lexer(xref, obj), gFalse); + go(topLevel); +@@ -419,7 +427,11 @@ void PdfParser::go(GBool topLevel) { + + // too many arguments - something is wrong + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Too many args in content stream"); ++#else + error(getPos(), const_cast("Too many args in content stream")); ++#endif + if (printCommands) { + printf("throwing away arg: "); + obj.print(stdout); +@@ -436,7 +448,11 @@ void PdfParser::go(GBool topLevel) { + + // args at end with no command + if (numArgs > 0) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Leftover args in content stream"); ++#else + error(getPos(), const_cast("Leftover args in content stream")); ++#endif + if (printCommands) { + printf("%d leftovers:", numArgs); + for (i = 0; i < numArgs; ++i) { +@@ -502,7 +518,11 @@ void PdfParser::execOp(Object *cmd, Obje + name = cmd->getCmd(); + if (!(op = findOp(name))) { + if (ignoreUndef == 0) ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Unknown operator '{0:s}'", name); ++#else + error(getPos(), const_cast("Unknown operator '%s'"), name); ++#endif + return; + } + +@@ -510,26 +530,42 @@ void PdfParser::execOp(Object *cmd, Obje + argPtr = args; + if (op->numArgs >= 0) { + if (numArgs < op->numArgs) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Too few ({0:d}) args to '{1:d}' operator", numArgs, name); ++#else + error(getPos(), const_cast("Too few (%d) args to '%s' operator"), numArgs, name); ++#endif + return; + } + if (numArgs > op->numArgs) { + #if 0 ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Too many ({0:d}) args to '{1:s}' operator", numArgs, name); ++#else + error(getPos(), "Too many (%d) args to '%s' operator", numArgs, name); + #endif ++#endif + argPtr += numArgs - op->numArgs; + numArgs = op->numArgs; + } + } else { + if (numArgs > -op->numArgs) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Too many ({0:d}) args to '{1:s}' operator", ++#else + error(getPos(), const_cast("Too many (%d) args to '%s' operator"), ++#endif + numArgs, name); + return; + } + } + for (i = 0; i < numArgs; ++i) { + if (!checkArg(&argPtr[i], op->tchk[i])) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Arg #{0:d} to '{1:s}' operator is wrong type ({2:s})", ++#else + error(getPos(), const_cast("Arg #%d to '%s' operator is wrong type (%s)"), ++#endif + i, name, argPtr[i].getTypeName()); + return; + } +@@ -690,7 +726,11 @@ void PdfParser::opSetExtGState(Object ar + return; + } + if (!obj1.isDict()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "ExtGState '{0:s}' is wrong type"), args[0].getName(); ++#else + error(getPos(), const_cast("ExtGState '%s' is wrong type"), args[0].getName()); ++#endif + obj1.free(); + return; + } +@@ -705,7 +745,11 @@ void PdfParser::opSetExtGState(Object ar + if (state->parseBlendMode(&obj2, &mode)) { + state->setBlendMode(mode); + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid blend mode in ExtGState"); ++#else + error(getPos(), const_cast("Invalid blend mode in ExtGState")); ++#endif + } + } + obj2.free(); +@@ -764,7 +808,11 @@ void PdfParser::opSetExtGState(Object ar + state->setTransfer(funcs); + } + } else if (!obj2.isNull()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid transfer function in ExtGState"); ++#else + error(getPos(), const_cast("Invalid transfer function in ExtGState")); ++#endif + } + obj2.free(); + +@@ -784,8 +832,11 @@ void PdfParser::opSetExtGState(Object ar + funcs[0] = Function::parse(&obj3); + if (funcs[0]->getInputSize() != 1 || + funcs[0]->getOutputSize() != 1) { +- error(getPos(), +- const_cast("Invalid transfer function in soft mask in ExtGState")); ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid transfer function in soft mask in ExtGState"); ++#else ++ error(getPos(), const_cast("Invalid transfer function in soft mask in ExtGState")); ++#endif + delete funcs[0]; + funcs[0] = NULL; + } +@@ -809,7 +860,7 @@ void PdfParser::opSetExtGState(Object ar + blendingColorSpace = NULL; + isolated = knockout = gFalse; + if (!obj4.dictLookup(const_cast("CS"), &obj5)->isNull()) { +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + blendingColorSpace = GfxColorSpace::parse(&obj5, NULL); + #else + blendingColorSpace = GfxColorSpace::parse(&obj5); +@@ -840,15 +891,27 @@ void PdfParser::opSetExtGState(Object ar + delete funcs[0]; + } + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); ++#else + error(getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); ++#endif + } + obj4.free(); + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); ++#else + error(getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); ++#endif + } + obj3.free(); + } else if (!obj2.isNull()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState"); ++#else + error(getPos(), const_cast("Invalid soft mask in ExtGState")); ++#endif + } + } + obj2.free(); +@@ -876,7 +939,11 @@ void PdfParser::doSoftMask(Object *str, + // check form type + dict->lookup(const_cast("FormType"), &obj1); + if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Unknown form type"); ++#else + error(getPos(), const_cast("Unknown form type")); ++#endif + } + obj1.free(); + +@@ -884,7 +951,11 @@ void PdfParser::doSoftMask(Object *str, + dict->lookup(const_cast("BBox"), &obj1); + if (!obj1.isArray()) { + obj1.free(); ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Bad form bounding box"); ++#else + error(getPos(), const_cast("Bad form bounding box")); ++#endif + return; + } + for (i = 0; i < 4; ++i) { +@@ -1012,7 +1083,7 @@ void PdfParser::opSetFillColorSpace(Obje + + state->setFillPattern(NULL); + res->lookupColorSpace(args[0].getName(), &obj); +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + if (obj.isNull()) { + colorSpace = GfxColorSpace::parse(&args[0], NULL); + } else { +@@ -1032,7 +1103,11 @@ void PdfParser::opSetFillColorSpace(Obje + state->setFillColor(&color); + builder->updateStyle(state); + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Bad color space (fill)"); ++#else + error(getPos(), const_cast("Bad color space (fill)")); ++#endif + } + } + +@@ -1043,7 +1118,7 @@ void PdfParser::opSetStrokeColorSpace(Ob + + state->setStrokePattern(NULL); + res->lookupColorSpace(args[0].getName(), &obj); +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + if (obj.isNull()) { + colorSpace = GfxColorSpace::parse(&args[0], NULL); + } else { +@@ -1063,7 +1138,11 @@ void PdfParser::opSetStrokeColorSpace(Ob + state->setStrokeColor(&color); + builder->updateStyle(state); + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Bad color space (stroke)"); ++#else + error(getPos(), const_cast("Bad color space (stroke)")); ++#endif + } + } + +@@ -1072,7 +1151,11 @@ void PdfParser::opSetFillColor(Object ar + int i; + + if (numArgs != state->getFillColorSpace()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'sc' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'sc' command")); ++#endif + return; + } + state->setFillPattern(NULL); +@@ -1088,7 +1171,11 @@ void PdfParser::opSetStrokeColor(Object + int i; + + if (numArgs != state->getStrokeColorSpace()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SC' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'SC' command")); ++#endif + return; + } + state->setStrokePattern(NULL); +@@ -1109,7 +1196,11 @@ void PdfParser::opSetFillColorN(Object a + if (!((GfxPatternColorSpace *)state->getFillColorSpace())->getUnder() || + numArgs - 1 != ((GfxPatternColorSpace *)state->getFillColorSpace()) + ->getUnder()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'scn' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'scn' command")); ++#endif + return; + } + for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) { +@@ -1120,7 +1211,7 @@ void PdfParser::opSetFillColorN(Object a + state->setFillColor(&color); + builder->updateStyle(state); + } +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + if (args[numArgs-1].isName() && + (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) { + state->setFillPattern(pattern); +@@ -1136,7 +1227,11 @@ void PdfParser::opSetFillColorN(Object a + + } else { + if (numArgs != state->getFillColorSpace()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'scn' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'scn' command")); ++#endif + return; + } + state->setFillPattern(NULL); +@@ -1161,7 +1256,11 @@ void PdfParser::opSetStrokeColorN(Object + ->getUnder() || + numArgs - 1 != ((GfxPatternColorSpace *)state->getStrokeColorSpace()) + ->getUnder()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SCN' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); ++#endif + return; + } + for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) { +@@ -1172,7 +1271,7 @@ void PdfParser::opSetStrokeColorN(Object + state->setStrokeColor(&color); + builder->updateStyle(state); + } +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + if (args[numArgs-1].isName() && + (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) { + state->setStrokePattern(pattern); +@@ -1188,7 +1287,11 @@ void PdfParser::opSetStrokeColorN(Object + + } else { + if (numArgs != state->getStrokeColorSpace()->getNComps()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SCN' command"); ++#else + error(getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); ++#endif + return; + } + state->setStrokePattern(NULL); +@@ -1212,7 +1315,11 @@ void PdfParser::opMoveTo(Object args[], + + void PdfParser::opLineTo(Object args[], int numArgs) { + if (!state->isCurPt()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No current point in lineto"); ++#else + error(getPos(), const_cast("No current point in lineto")); ++#endif + return; + } + state->lineTo(args[0].getNum(), args[1].getNum()); +@@ -1222,7 +1329,11 @@ void PdfParser::opCurveTo(Object args[], + double x1, y1, x2, y2, x3, y3; + + if (!state->isCurPt()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No current point in curveto"); ++#else + error(getPos(), const_cast("No current point in curveto")); ++#endif + return; + } + x1 = args[0].getNum(); +@@ -1238,7 +1349,11 @@ void PdfParser::opCurveTo1(Object args[] + double x1, y1, x2, y2, x3, y3; + + if (!state->isCurPt()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No current point in curveto1"); ++#else + error(getPos(), const_cast("No current point in curveto1")); ++#endif + return; + } + x1 = state->getCurX(); +@@ -1254,7 +1369,11 @@ void PdfParser::opCurveTo2(Object args[] + double x1, y1, x2, y2, x3, y3; + + if (!state->isCurPt()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No current point in curveto2"); ++#else + error(getPos(), const_cast("No current point in curveto2")); ++#endif + return; + } + x1 = args[0].getNum(); +@@ -1282,7 +1401,11 @@ void PdfParser::opRectangle(Object args[ + + void PdfParser::opClosePath(Object args[], int numArgs) { + if (!state->isCurPt()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No current point in closepath"); ++#else + error(getPos(), const_cast("No current point in closepath")); ++#endif + return; + } + state->closePath(); +@@ -1440,7 +1563,11 @@ void PdfParser::doPatternFillFallback(GB + doShadingPatternFillFallback((GfxShadingPattern *)pattern, gFalse, eoFill); + break; + default: ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errUnimplemented, getPos(), "Unimplemented pattern type (%d) in fill", ++#else + error(getPos(), const_cast("Unimplemented pattern type (%d) in fill"), ++#endif + pattern->getType()); + break; + } +@@ -1459,7 +1586,11 @@ void PdfParser::doPatternStrokeFallback( + doShadingPatternFillFallback((GfxShadingPattern *)pattern, gTrue, gFalse); + break; + default: ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errUnimplemented, getPos(), "Unimplemented pattern type ({0:d}) in stroke", ++#else + error(getPos(), const_cast("Unimplemented pattern type (%d) in stroke"), ++#endif + pattern->getType()); + break; + } +@@ -1579,7 +1710,7 @@ void PdfParser::opShFill(Object args[], + double *matrix = NULL; + GBool savedState = gFalse; + +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + if (!(shading = res->lookupShading(args[0].getName(), NULL))) { + return; + } +@@ -2156,7 +2287,11 @@ void PdfParser::opTextNextLine(Object ar + + void PdfParser::opShowText(Object args[], int numArgs) { + if (!state->getFont()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No font in show"); ++#else + error(getPos(), const_cast("No font in show")); ++#endif + return; + } + if (fontChanged) { +@@ -2170,7 +2305,11 @@ void PdfParser::opMoveShowText(Object ar + double tx, ty; + + if (!state->getFont()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No font in move/show"); ++#else + error(getPos(), const_cast("No font in move/show")); ++#endif + return; + } + if (fontChanged) { +@@ -2188,7 +2327,11 @@ void PdfParser::opMoveSetShowText(Object + double tx, ty; + + if (!state->getFont()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No font in move/set/show"); ++#else + error(getPos(), const_cast("No font in move/set/show")); ++#endif + return; + } + if (fontChanged) { +@@ -2211,7 +2354,11 @@ void PdfParser::opShowSpaceText(Object a + int i; + + if (!state->getFont()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "No font in show/space"); ++#else + error(getPos(), const_cast("No font in show/space")); ++#endif + return; + } + if (fontChanged) { +@@ -2236,7 +2383,11 @@ void PdfParser::opShowSpaceText(Object a + } else if (obj.isString()) { + doShowText(obj.getString()); + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Element of show/space array must be number or string"); ++#else + error(getPos(), const_cast("Element of show/space array must be number or string")); ++#endif + } + obj.free(); + } +@@ -2334,7 +2485,11 @@ void PdfParser::doShowText(GooString *s) + if (charProc.isStream()) { + //parse(&charProc, gFalse); // TODO: parse into SVG font + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Missing or bad Type3 CharProc entry"); ++#else + error(getPos(), const_cast("Missing or bad Type3 CharProc entry")); ++#endif + } + //out->endType3Char(state); + if (resDict) { +@@ -2410,7 +2565,11 @@ void PdfParser::opXObject(Object args[], + return; + } + if (!obj1.isStream()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "XObject '{0:s}' is wrong type", name); ++#else + error(getPos(), const_cast("XObject '%s' is wrong type"), name); ++#endif + obj1.free(); + return; + } +@@ -2426,9 +2585,17 @@ void PdfParser::opXObject(Object args[], + /* out->psXObject(obj1.getStream(), + obj3.isStream() ? obj3.getStream() : (Stream *)NULL);*/ + } else if (obj2.isName()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName()); ++#else + error(getPos(), const_cast("Unknown XObject subtype '%s'"), obj2.getName()); ++#endif + } else { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "XObject subtype is missing or wrong type"); ++#else + error(getPos(), const_cast("XObject subtype is missing or wrong type")); ++#endif + } + obj2.free(); + obj1.free(); +@@ -2559,7 +2726,7 @@ void PdfParser::doImage(Object *ref, Str + } + } + if (!obj1.isNull()) { +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + colorSpace = GfxColorSpace::parse(&obj1, NULL); + #else + colorSpace = GfxColorSpace::parse(&obj1); +@@ -2648,7 +2815,7 @@ void PdfParser::doImage(Object *ref, Str + obj2.free(); + } + } +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + maskColorSpace = GfxColorSpace::parse(&obj1, NULL); + #else + maskColorSpace = GfxColorSpace::parse(&obj1); +@@ -2758,7 +2925,11 @@ void PdfParser::doImage(Object *ref, Str + err2: + obj1.free(); + err1: ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Bad image parameters"); ++#else + error(getPos(), const_cast("Bad image parameters")); ++#endif + } + + void PdfParser::doForm(Object *str) { +@@ -2783,7 +2954,11 @@ void PdfParser::doForm(Object *str) { + // check form type + dict->lookup(const_cast("FormType"), &obj1); + if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Unknown form type"); ++#else + error(getPos(), const_cast("Unknown form type")); ++#endif + } + obj1.free(); + +@@ -2791,7 +2966,11 @@ void PdfParser::doForm(Object *str) { + dict->lookup(const_cast("BBox"), &bboxObj); + if (!bboxObj.isArray()) { + bboxObj.free(); ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Bad form bounding box"); ++#else + error(getPos(), const_cast("Bad form bounding box")); ++#endif + return; + } + for (i = 0; i < 4; ++i) { +@@ -2827,7 +3006,7 @@ void PdfParser::doForm(Object *str) { + if (obj1.dictLookup(const_cast("S"), &obj2)->isName(const_cast("Transparency"))) { + transpGroup = gTrue; + if (!obj1.dictLookup(const_cast("CS"), &obj3)->isNull()) { +-#ifdef POPPLER_NEW_COLOR_SPACE_API ++#if defined(POPPLER_NEW_COLOR_SPACE_API) || defined(POPPLER_NEW_ERRORAPI) + blendingColorSpace = GfxColorSpace::parse(&obj3, NULL); + #else + blendingColorSpace = GfxColorSpace::parse(&obj3); +@@ -2990,7 +3169,11 @@ Stream *PdfParser::buildImageStream() { + parser->getObj(&obj); + while (!obj.isCmd(const_cast("ID")) && !obj.isEOF()) { + if (!obj.isName()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "Inline image dictionary key must be a name object"); ++#else + error(getPos(), const_cast("Inline image dictionary key must be a name object")); ++#endif + obj.free(); + } else { + key = copyString(obj.getName()); +@@ -3005,7 +3188,11 @@ Stream *PdfParser::buildImageStream() { + parser->getObj(&obj); + } + if (obj.isEOF()) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errSyntaxError, getPos(), "End of file in inline image"); ++#else + error(getPos(), const_cast("End of file in inline image")); ++#endif + obj.free(); + dict.free(); + return NULL; +@@ -3020,11 +3207,19 @@ Stream *PdfParser::buildImageStream() { + } + + void PdfParser::opImageData(Object args[], int numArgs) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errInternal, getPos(), "Internal: got 'ID' operator"); ++#else + error(getPos(), const_cast("Internal: got 'ID' operator")); ++#endif + } + + void PdfParser::opEndImage(Object args[], int numArgs) { ++#ifdef POPPLER_NEW_ERRORAPI ++ error(errInternal, getPos(), "Internal: got 'EI' operator"); ++#else + error(getPos(), const_cast("Internal: got 'EI' operator")); ++#endif + } + + //------------------------------------------------------------------------ +diff -up inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp.poppler_020 inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp +--- inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp.poppler_020 2012-06-23 12:01:38.912678613 -0500 ++++ inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp 2012-06-23 12:01:38.920678513 -0500 +@@ -961,9 +961,7 @@ void SvgBuilder::updateFont(GfxState *st + _font_style = sp_repr_css_attr_new(); + GfxFont *font = state->getFont(); + // Store original name +- if (font->getOrigName()) { +- _font_specification = font->getOrigName()->getCString(); +- } else if (font->getName()) { ++ if (font->getName()) { + _font_specification = font->getName()->getCString(); + } else { + _font_specification = (char*) "Arial"; diff --git a/inkscape-0.48.2-types.patch b/inkscape-0.48.2-types.patch new file mode 100644 index 0000000..ad761e3 --- /dev/null +++ b/inkscape-0.48.2-types.patch @@ -0,0 +1,17 @@ +From: Lubomir Rintel + +https://bugzilla.redhat.com/show_bug.cgi?id=458845 + +Index: inkscape-0.48.2/inkscape.desktop.in +=================================================================== +--- inkscape-0.48.2.orig/inkscape.desktop.in ++++ inkscape-0.48.2/inkscape.desktop.in +@@ -6,7 +6,7 @@ _X-GNOME-FullName=Inkscape Vector Graphi + _Comment=Create and edit Scalable Vector Graphics images + Type=Application + Categories=Graphics;VectorGraphics;GTK; +-MimeType=image/svg+xml;image/svg+xml-compressed;application/vnd.corel-draw;application/pdf;application/postscript;image/x-eps;application/illustrator; ++MimeType=image/svg+xml;image/svg+xml-compressed;application/vnd.corel-draw;application/pdf;application/postscript;image/x-eps;application/illustrator;image/cgm;image/x-wmf;application/x-xccx;application/x-xcgm;application/x-xcdt;application/x-xsk1;application/x-xcmx;image/x-xcdr; + Exec=inkscape %F + TryExec=inkscape + Terminal=false diff --git a/inkscape-poppler.patch b/inkscape-poppler.patch deleted file mode 100644 index 3fcf114..0000000 --- a/inkscape-poppler.patch +++ /dev/null @@ -1,811 +0,0 @@ ---- inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp 2011-07-08 20:25:09.000000000 +0200 -+++ inkscape-0.48.2/src/extension/internal/pdfinput/pdf-parser.cpp 2012-05-27 02:17:07.253947245 +0200 -@@ -19,7 +19,7 @@ - #endif - - extern "C" { -- -+ - #include - #include - #include -@@ -298,7 +298,7 @@ - // do not clip if it's not needed - if (cropBox->x1 != 0.0 || cropBox->y1 != 0.0 || - cropBox->x2 != state->getPageWidth() || cropBox->y2 != state->getPageHeight()) { -- -+ - state->moveTo(cropBox->x1, cropBox->y1); - state->lineTo(cropBox->x2, cropBox->y1); - state->lineTo(cropBox->x2, cropBox->y2); -@@ -331,7 +331,7 @@ - state = new GfxState(72, 72, box, 0, gFalse); - clipHistory = new ClipHistoryEntry(); - setDefaultApproximationPrecision(); -- -+ - fontChanged = gFalse; - clip = clipNone; - ignoreUndef = 0; -@@ -367,14 +367,14 @@ - for (i = 0; i < obj->arrayGetLength(); ++i) { - obj->arrayGet(i, &obj2); - if (!obj2.isStream()) { -- error(-1, const_cast("Weird page contents")); -+ error(errInternal, -1, const_cast("Weird page contents")); - obj2.free(); - return; - } - obj2.free(); - } - } else if (!obj->isStream()) { -- error(-1, const_cast("Weird page contents")); -+ error(errInternal, -1, const_cast("Weird page contents")); - return; - } - parser = new Parser(xref, new Lexer(xref, obj), gFalse); -@@ -419,7 +419,7 @@ - - // too many arguments - something is wrong - } else { -- error(getPos(), const_cast("Too many args in content stream")); -+ error(errInternal, getPos(), const_cast("Too many args in content stream")); - if (printCommands) { - printf("throwing away arg: "); - obj.print(stdout); -@@ -436,7 +436,7 @@ - - // args at end with no command - if (numArgs > 0) { -- error(getPos(), const_cast("Leftover args in content stream")); -+ error(errInternal, getPos(), const_cast("Leftover args in content stream")); - if (printCommands) { - printf("%d leftovers:", numArgs); - for (i = 0; i < numArgs; ++i) { -@@ -502,7 +502,7 @@ - name = cmd->getCmd(); - if (!(op = findOp(name))) { - if (ignoreUndef == 0) -- error(getPos(), const_cast("Unknown operator '%s'"), name); -+ error(errInternal, getPos(), const_cast("Unknown operator '%s'"), name); - return; - } - -@@ -510,26 +510,26 @@ - argPtr = args; - if (op->numArgs >= 0) { - if (numArgs < op->numArgs) { -- error(getPos(), const_cast("Too few (%d) args to '%s' operator"), numArgs, name); -+ error(errInternal, getPos(), const_cast("Too few (%d) args to '%s' operator"), numArgs, name); - return; - } - if (numArgs > op->numArgs) { - #if 0 -- error(getPos(), "Too many (%d) args to '%s' operator", numArgs, name); -+ error(errInternal, getPos(), "Too many (%d) args to '%s' operator", numArgs, name); - #endif - argPtr += numArgs - op->numArgs; - numArgs = op->numArgs; - } - } else { - if (numArgs > -op->numArgs) { -- error(getPos(), const_cast("Too many (%d) args to '%s' operator"), -+ error(errInternal, getPos(), const_cast("Too many (%d) args to '%s' operator"), - numArgs, name); - return; - } - } - for (i = 0; i < numArgs; ++i) { - if (!checkArg(&argPtr[i], op->tchk[i])) { -- error(getPos(), const_cast("Arg #%d to '%s' operator is wrong type (%s)"), -+ error(errInternal, getPos(), const_cast("Arg #%d to '%s' operator is wrong type (%s)"), - i, name, argPtr[i].getTypeName()); - return; - } -@@ -690,7 +690,7 @@ - return; - } - if (!obj1.isDict()) { -- error(getPos(), const_cast("ExtGState '%s' is wrong type"), args[0].getName()); -+ error(errInternal, getPos(), const_cast("ExtGState '%s' is wrong type"), args[0].getName()); - obj1.free(); - return; - } -@@ -705,7 +705,7 @@ - if (state->parseBlendMode(&obj2, &mode)) { - state->setBlendMode(mode); - } else { -- error(getPos(), const_cast("Invalid blend mode in ExtGState")); -+ error(errInternal, getPos(), const_cast("Invalid blend mode in ExtGState")); - } - } - obj2.free(); -@@ -764,7 +764,7 @@ - state->setTransfer(funcs); - } - } else if (!obj2.isNull()) { -- error(getPos(), const_cast("Invalid transfer function in ExtGState")); -+ error(errInternal, getPos(), const_cast("Invalid transfer function in ExtGState")); - } - obj2.free(); - -@@ -784,7 +784,7 @@ - funcs[0] = Function::parse(&obj3); - if (funcs[0]->getInputSize() != 1 || - funcs[0]->getOutputSize() != 1) { -- error(getPos(), -+ error(errInternal, getPos(), - const_cast("Invalid transfer function in soft mask in ExtGState")); - delete funcs[0]; - funcs[0] = NULL; -@@ -809,11 +809,7 @@ - blendingColorSpace = NULL; - isolated = knockout = gFalse; - if (!obj4.dictLookup(const_cast("CS"), &obj5)->isNull()) { --#ifdef POPPLER_NEW_COLOR_SPACE_API - blendingColorSpace = GfxColorSpace::parse(&obj5, NULL); --#else -- blendingColorSpace = GfxColorSpace::parse(&obj5); --#endif - } - obj5.free(); - if (obj4.dictLookup(const_cast("I"), &obj5)->isBool()) { -@@ -840,15 +836,15 @@ - delete funcs[0]; - } - } else { -- error(getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); -+ error(errInternal, getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); - } - obj4.free(); - } else { -- error(getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); -+ error(errInternal, getPos(), const_cast("Invalid soft mask in ExtGState - missing group")); - } - obj3.free(); - } else if (!obj2.isNull()) { -- error(getPos(), const_cast("Invalid soft mask in ExtGState")); -+ error(errInternal, getPos(), const_cast("Invalid soft mask in ExtGState")); - } - } - obj2.free(); -@@ -876,7 +872,7 @@ - // check form type - dict->lookup(const_cast("FormType"), &obj1); - if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { -- error(getPos(), const_cast("Unknown form type")); -+ error(errInternal, getPos(), const_cast("Unknown form type")); - } - obj1.free(); - -@@ -884,7 +880,7 @@ - dict->lookup(const_cast("BBox"), &obj1); - if (!obj1.isArray()) { - obj1.free(); -- error(getPos(), const_cast("Bad form bounding box")); -+ error(errInternal, getPos(), const_cast("Bad form bounding box")); - return; - } - for (i = 0; i < 4; ++i) { -@@ -1012,19 +1008,11 @@ - - state->setFillPattern(NULL); - res->lookupColorSpace(args[0].getName(), &obj); --#ifdef POPPLER_NEW_COLOR_SPACE_API - if (obj.isNull()) { - colorSpace = GfxColorSpace::parse(&args[0], NULL); - } else { - colorSpace = GfxColorSpace::parse(&obj, NULL); - } --#else -- if (obj.isNull()) { -- colorSpace = GfxColorSpace::parse(&args[0]); -- } else { -- colorSpace = GfxColorSpace::parse(&obj); -- } --#endif - obj.free(); - if (colorSpace) { - state->setFillColorSpace(colorSpace); -@@ -1032,7 +1020,7 @@ - state->setFillColor(&color); - builder->updateStyle(state); - } else { -- error(getPos(), const_cast("Bad color space (fill)")); -+ error(errInternal, getPos(), const_cast("Bad color space (fill)")); - } - } - -@@ -1043,19 +1031,11 @@ - - state->setStrokePattern(NULL); - res->lookupColorSpace(args[0].getName(), &obj); --#ifdef POPPLER_NEW_COLOR_SPACE_API - if (obj.isNull()) { - colorSpace = GfxColorSpace::parse(&args[0], NULL); - } else { - colorSpace = GfxColorSpace::parse(&obj, NULL); - } --#else -- if (obj.isNull()) { -- colorSpace = GfxColorSpace::parse(&args[0]); -- } else { -- colorSpace = GfxColorSpace::parse(&obj); -- } --#endif - obj.free(); - if (colorSpace) { - state->setStrokeColorSpace(colorSpace); -@@ -1063,7 +1043,7 @@ - state->setStrokeColor(&color); - builder->updateStyle(state); - } else { -- error(getPos(), const_cast("Bad color space (stroke)")); -+ error(errInternal, getPos(), const_cast("Bad color space (stroke)")); - } - } - -@@ -1072,7 +1052,7 @@ - int i; - - if (numArgs != state->getFillColorSpace()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'sc' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'sc' command")); - return; - } - state->setFillPattern(NULL); -@@ -1088,7 +1068,7 @@ - int i; - - if (numArgs != state->getStrokeColorSpace()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'SC' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'SC' command")); - return; - } - state->setStrokePattern(NULL); -@@ -1109,7 +1089,7 @@ - if (!((GfxPatternColorSpace *)state->getFillColorSpace())->getUnder() || - numArgs - 1 != ((GfxPatternColorSpace *)state->getFillColorSpace()) - ->getUnder()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'scn' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'scn' command")); - return; - } - for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) { -@@ -1120,23 +1100,15 @@ - state->setFillColor(&color); - builder->updateStyle(state); - } --#ifdef POPPLER_NEW_COLOR_SPACE_API - if (args[numArgs-1].isName() && - (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) { - state->setFillPattern(pattern); - builder->updateStyle(state); - } --#else -- if (args[numArgs-1].isName() && -- (pattern = res->lookupPattern(args[numArgs-1].getName()))) { -- state->setFillPattern(pattern); -- builder->updateStyle(state); -- } --#endif - - } else { - if (numArgs != state->getFillColorSpace()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'scn' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'scn' command")); - return; - } - state->setFillPattern(NULL); -@@ -1161,7 +1133,7 @@ - ->getUnder() || - numArgs - 1 != ((GfxPatternColorSpace *)state->getStrokeColorSpace()) - ->getUnder()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); - return; - } - for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) { -@@ -1172,23 +1144,15 @@ - state->setStrokeColor(&color); - builder->updateStyle(state); - } --#ifdef POPPLER_NEW_COLOR_SPACE_API - if (args[numArgs-1].isName() && - (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) { - state->setStrokePattern(pattern); - builder->updateStyle(state); - } --#else -- if (args[numArgs-1].isName() && -- (pattern = res->lookupPattern(args[numArgs-1].getName()))) { -- state->setStrokePattern(pattern); -- builder->updateStyle(state); -- } --#endif - - } else { - if (numArgs != state->getStrokeColorSpace()->getNComps()) { -- error(getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); -+ error(errInternal, getPos(), const_cast("Incorrect number of arguments in 'SCN' command")); - return; - } - state->setStrokePattern(NULL); -@@ -1212,7 +1176,7 @@ - - void PdfParser::opLineTo(Object args[], int numArgs) { - if (!state->isCurPt()) { -- error(getPos(), const_cast("No current point in lineto")); -+ error(errInternal, getPos(), const_cast("No current point in lineto")); - return; - } - state->lineTo(args[0].getNum(), args[1].getNum()); -@@ -1222,7 +1186,7 @@ - double x1, y1, x2, y2, x3, y3; - - if (!state->isCurPt()) { -- error(getPos(), const_cast("No current point in curveto")); -+ error(errInternal, getPos(), const_cast("No current point in curveto")); - return; - } - x1 = args[0].getNum(); -@@ -1238,7 +1202,7 @@ - double x1, y1, x2, y2, x3, y3; - - if (!state->isCurPt()) { -- error(getPos(), const_cast("No current point in curveto1")); -+ error(errInternal, getPos(), const_cast("No current point in curveto1")); - return; - } - x1 = state->getCurX(); -@@ -1254,7 +1218,7 @@ - double x1, y1, x2, y2, x3, y3; - - if (!state->isCurPt()) { -- error(getPos(), const_cast("No current point in curveto2")); -+ error(errInternal, getPos(), const_cast("No current point in curveto2")); - return; - } - x1 = args[0].getNum(); -@@ -1282,7 +1246,7 @@ - - void PdfParser::opClosePath(Object args[], int numArgs) { - if (!state->isCurPt()) { -- error(getPos(), const_cast("No current point in closepath")); -+ error(errInternal, getPos(), const_cast("No current point in closepath")); - return; - } - state->closePath(); -@@ -1298,7 +1262,7 @@ - - void PdfParser::opStroke(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in stroke")); -+ //error(errInternal, getPos(), const_cast("No path in stroke")); - return; - } - if (state->isPath()) { -@@ -1314,7 +1278,7 @@ - - void PdfParser::opCloseStroke(Object * /*args[]*/, int /*numArgs*/) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in closepath/stroke")); -+ //error(errInternal, getPos(), const_cast("No path in closepath/stroke")); - return; - } - state->closePath(); -@@ -1331,7 +1295,7 @@ - - void PdfParser::opFill(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in fill")); -+ //error(errInternal, getPos(), const_cast("No path in fill")); - return; - } - if (state->isPath()) { -@@ -1347,7 +1311,7 @@ - - void PdfParser::opEOFill(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in eofill")); -+ //error(errInternal, getPos(), const_cast("No path in eofill")); - return; - } - if (state->isPath()) { -@@ -1363,7 +1327,7 @@ - - void PdfParser::opFillStroke(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in fill/stroke")); -+ //error(errInternal, getPos(), const_cast("No path in fill/stroke")); - return; - } - if (state->isPath()) { -@@ -1376,7 +1340,7 @@ - - void PdfParser::opCloseFillStroke(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in closepath/fill/stroke")); -+ //error(errInternal, getPos(), const_cast("No path in closepath/fill/stroke")); - return; - } - if (state->isPath()) { -@@ -1388,7 +1352,7 @@ - - void PdfParser::opEOFillStroke(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in eofill/stroke")); -+ //error(errInternal, getPos(), const_cast("No path in eofill/stroke")); - return; - } - if (state->isPath()) { -@@ -1399,7 +1363,7 @@ - - void PdfParser::opCloseEOFillStroke(Object args[], int numArgs) { - if (!state->isCurPt()) { -- //error(getPos(), const_cast("No path in closepath/eofill/stroke")); -+ //error(errInternal, getPos(), const_cast("No path in closepath/eofill/stroke")); - return; - } - if (state->isPath()) { -@@ -1440,7 +1404,7 @@ - doShadingPatternFillFallback((GfxShadingPattern *)pattern, gFalse, eoFill); - break; - default: -- error(getPos(), const_cast("Unimplemented pattern type (%d) in fill"), -+ error(errInternal, getPos(), const_cast("Unimplemented pattern type (%d) in fill"), - pattern->getType()); - break; - } -@@ -1459,7 +1423,7 @@ - doShadingPatternFillFallback((GfxShadingPattern *)pattern, gTrue, gFalse); - break; - default: -- error(getPos(), const_cast("Unimplemented pattern type (%d) in stroke"), -+ error(errInternal, getPos(), const_cast("Unimplemented pattern type (%d) in stroke"), - pattern->getType()); - break; - } -@@ -1579,15 +1543,9 @@ - double *matrix = NULL; - GBool savedState = gFalse; - --#ifdef POPPLER_NEW_COLOR_SPACE_API - if (!(shading = res->lookupShading(args[0].getName(), NULL))) { - return; - } --#else -- if (!(shading = res->lookupShading(args[0].getName()))) { -- return; -- } --#endif - - // save current graphics state - if (shading->getType() != 2 && shading->getType() != 3) { -@@ -1768,14 +1726,14 @@ - colors2[2] = colorM0; - colors2[3] = colorMM; - doFunctionShFill1(shading, x0, y0, xM, yM, colors2, depth + 1); -- -+ - // lower-left sub-rectangle - colors2[0] = color0M; - colors2[1] = colors[1]; - colors2[2] = colorMM; - colors2[3] = colorM1; - doFunctionShFill1(shading, x0, yM, xM, y1, colors2, depth + 1); -- -+ - // upper-right sub-rectangle - colors2[0] = colorM0; - colors2[1] = colorMM; -@@ -2156,7 +2114,7 @@ - - void PdfParser::opShowText(Object args[], int numArgs) { - if (!state->getFont()) { -- error(getPos(), const_cast("No font in show")); -+ error(errInternal, getPos(), const_cast("No font in show")); - return; - } - if (fontChanged) { -@@ -2170,7 +2128,7 @@ - double tx, ty; - - if (!state->getFont()) { -- error(getPos(), const_cast("No font in move/show")); -+ error(errInternal, getPos(), const_cast("No font in move/show")); - return; - } - if (fontChanged) { -@@ -2188,7 +2146,7 @@ - double tx, ty; - - if (!state->getFont()) { -- error(getPos(), const_cast("No font in move/set/show")); -+ error(errInternal, getPos(), const_cast("No font in move/set/show")); - return; - } - if (fontChanged) { -@@ -2211,7 +2169,7 @@ - int i; - - if (!state->getFont()) { -- error(getPos(), const_cast("No font in show/space")); -+ error(errInternal, getPos(), const_cast("No font in show/space")); - return; - } - if (fontChanged) { -@@ -2236,7 +2194,7 @@ - } else if (obj.isString()) { - doShowText(obj.getString()); - } else { -- error(getPos(), const_cast("Element of show/space array must be number or string")); -+ error(errInternal, getPos(), const_cast("Element of show/space array must be number or string")); - } - obj.free(); - } -@@ -2248,7 +2206,7 @@ - * The `POPPLER_NEW_GFXFONT' stuff is for the change to GfxFont's getNextChar() call. - * Thanks to tsdgeos for the fix. - * Miklos, does this look ok? -- */ -+ */ - - void PdfParser::doShowText(GooString *s) { - GfxFont *font; -@@ -2334,7 +2292,7 @@ - if (charProc.isStream()) { - //parse(&charProc, gFalse); // TODO: parse into SVG font - } else { -- error(getPos(), const_cast("Missing or bad Type3 CharProc entry")); -+ error(errInternal, getPos(), const_cast("Missing or bad Type3 CharProc entry")); - } - //out->endType3Char(state); - if (resDict) { -@@ -2366,7 +2324,7 @@ - u, (int)(sizeof(u) / sizeof(Unicode)), &uLen, - #endif - &dx, &dy, &originX, &originY); -- -+ - if (wMode) { - dx *= state->getFontSize(); - dy = dy * state->getFontSize() + state->getCharSpace(); -@@ -2410,7 +2368,7 @@ - return; - } - if (!obj1.isStream()) { -- error(getPos(), const_cast("XObject '%s' is wrong type"), name); -+ error(errInternal, getPos(), const_cast("XObject '%s' is wrong type"), name); - obj1.free(); - return; - } -@@ -2426,9 +2384,9 @@ - /* out->psXObject(obj1.getStream(), - obj3.isStream() ? obj3.getStream() : (Stream *)NULL);*/ - } else if (obj2.isName()) { -- error(getPos(), const_cast("Unknown XObject subtype '%s'"), obj2.getName()); -+ error(errInternal, getPos(), const_cast("Unknown XObject subtype '%s'"), obj2.getName()); - } else { -- error(getPos(), const_cast("XObject subtype is missing or wrong type")); -+ error(errInternal, getPos(), const_cast("XObject subtype is missing or wrong type")); - } - obj2.free(); - obj1.free(); -@@ -2559,11 +2517,7 @@ - } - } - if (!obj1.isNull()) { --#ifdef POPPLER_NEW_COLOR_SPACE_API - colorSpace = GfxColorSpace::parse(&obj1, NULL); --#else -- colorSpace = GfxColorSpace::parse(&obj1); --#endif - } else if (csMode == streamCSDeviceGray) { - colorSpace = new GfxDeviceGrayColorSpace(); - } else if (csMode == streamCSDeviceRGB) { -@@ -2648,11 +2602,7 @@ - obj2.free(); - } - } --#ifdef POPPLER_NEW_COLOR_SPACE_API - maskColorSpace = GfxColorSpace::parse(&obj1, NULL); --#else -- maskColorSpace = GfxColorSpace::parse(&obj1); --#endif - obj1.free(); - if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) { - goto err1; -@@ -2758,7 +2708,7 @@ - err2: - obj1.free(); - err1: -- error(getPos(), const_cast("Bad image parameters")); -+ error(errInternal, getPos(), const_cast("Bad image parameters")); - } - - void PdfParser::doForm(Object *str) { -@@ -2783,7 +2733,7 @@ - // check form type - dict->lookup(const_cast("FormType"), &obj1); - if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { -- error(getPos(), const_cast("Unknown form type")); -+ error(errInternal, getPos(), const_cast("Unknown form type")); - } - obj1.free(); - -@@ -2791,7 +2741,7 @@ - dict->lookup(const_cast("BBox"), &bboxObj); - if (!bboxObj.isArray()) { - bboxObj.free(); -- error(getPos(), const_cast("Bad form bounding box")); -+ error(errInternal, getPos(), const_cast("Bad form bounding box")); - return; - } - for (i = 0; i < 4; ++i) { -@@ -2827,11 +2777,7 @@ - if (obj1.dictLookup(const_cast("S"), &obj2)->isName(const_cast("Transparency"))) { - transpGroup = gTrue; - if (!obj1.dictLookup(const_cast("CS"), &obj3)->isNull()) { --#ifdef POPPLER_NEW_COLOR_SPACE_API - blendingColorSpace = GfxColorSpace::parse(&obj3, NULL); --#else -- blendingColorSpace = GfxColorSpace::parse(&obj3); --#endif - } - obj3.free(); - if (obj1.dictLookup(const_cast("I"), &obj3)->isBool()) { -@@ -2967,7 +2913,7 @@ - // display the image - if (str) { - doImage(NULL, str, gTrue); -- -+ - // skip 'EI' tag - c1 = str->getUndecodedStream()->getChar(); - c2 = str->getUndecodedStream()->getChar(); -@@ -2990,7 +2936,7 @@ - parser->getObj(&obj); - while (!obj.isCmd(const_cast("ID")) && !obj.isEOF()) { - if (!obj.isName()) { -- error(getPos(), const_cast("Inline image dictionary key must be a name object")); -+ error(errInternal, getPos(), const_cast("Inline image dictionary key must be a name object")); - obj.free(); - } else { - key = copyString(obj.getName()); -@@ -3005,7 +2951,7 @@ - parser->getObj(&obj); - } - if (obj.isEOF()) { -- error(getPos(), const_cast("End of file in inline image")); -+ error(errInternal, getPos(), const_cast("End of file in inline image")); - obj.free(); - dict.free(); - return NULL; -@@ -3020,11 +2966,11 @@ - } - - void PdfParser::opImageData(Object args[], int numArgs) { -- error(getPos(), const_cast("Internal: got 'ID' operator")); -+ error(errInternal, getPos(), const_cast("Internal: got 'ID' operator")); - } - - void PdfParser::opEndImage(Object args[], int numArgs) { -- error(getPos(), const_cast("Internal: got 'EI' operator")); -+ error(errInternal, getPos(), const_cast("Internal: got 'EI' operator")); - } - - //------------------------------------------------------------------------ ---- inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp 2012-05-27 01:55:07.000000000 +0200 -+++ inkscape-0.48.2/src/extension/internal/pdfinput/svg-builder.cpp 2012-05-27 02:18:01.410549224 +0200 -@@ -1,6 +1,6 @@ - /** \file - * Native PDF import using libpoppler. -- * -+ * - * Authors: - * miklos erdelyi - * -@@ -14,7 +14,7 @@ - # include - #endif - --#include -+#include - - #ifdef HAVE_POPPLER - -@@ -74,7 +74,7 @@ - - /** - * \class SvgBuilder -- * -+ * - */ - - SvgBuilder::SvgBuilder(SPDocument *document, gchar *docname, XRef *xref) { -@@ -398,7 +398,7 @@ - Inkscape::CSSOStringStream os_opacity; - os_opacity << state->getFillOpacity(); - sp_repr_css_set_property(css, "fill-opacity", os_opacity.str().c_str()); -- -+ - // Fill rule - sp_repr_css_set_property(css, "fill-rule", even_odd ? "evenodd" : "nonzero"); - } -@@ -414,7 +414,7 @@ - } else { - sp_repr_css_set_property(css, "fill", "none"); - } -- -+ - if (stroke) { - _setStrokeStyle(css, state); - } else { -@@ -865,7 +865,7 @@ - - /* - MatchingChars -- Count for how many characters s1 matches sp taking into account -+ Count for how many characters s1 matches sp taking into account - that a space in sp may be removed or replaced by some other tokens - specified in the code. (Bug LP #179589) - */ -@@ -898,16 +898,16 @@ - { - double bestMatch = 0; - std::string bestFontname = "Arial"; -- -+ - for (guint i = 0; i < _availableFontNames.size(); i++) { - std::string fontname = _availableFontNames[i]; -- -+ - // At least the first word of the font name should match. - guint minMatch = fontname.find(" "); - if (minMatch == std::string::npos) { - minMatch = fontname.length(); - } -- -+ - int Match = MatchingChars(PDFname, fontname); - if (Match >= minMatch) { - double relMatch = (float)Match / (fontname.length() + PDFname.length()); -@@ -961,9 +961,7 @@ - _font_style = sp_repr_css_attr_new(); - GfxFont *font = state->getFont(); - // Store original name -- if (font->getOrigName()) { -- _font_specification = font->getOrigName()->getCString(); -- } else if (font->getName()) { -+ if (font->getName()) { - _font_specification = font->getName()->getCString(); - } else { - _font_specification = (char*) "Arial"; -@@ -992,7 +990,7 @@ - // Font family - if (font->getFamily()) { // if font family is explicitly given use it. - sp_repr_css_set_property(_font_style, "font-family", font->getFamily()->getCString()); -- } else { -+ } else { - int attr_value = 1; - sp_repr_get_int(_preferences, "localFonts", &attr_value); - if (attr_value != 0) { -@@ -1250,7 +1248,7 @@ - break; - } else { - tspan_node = _xml_doc->createElement("svg:tspan"); -- -+ - /////// - // Create a font specification string and save the attribute in the style - PangoFontDescription *descr = pango_font_description_from_string(glyph.font_specification); -@@ -1734,7 +1732,7 @@ - Inkscape::GC::release(image_node); - } - } -- -+ - void SvgBuilder::addSoftMaskedImage(GfxState *state, Stream *str, int width, int height, - GfxImageColorMap *color_map, - Stream *mask_str, int mask_width, int mask_height, diff --git a/inkscape.spec b/inkscape.spec index f5c8395..0722c08 100644 --- a/inkscape.spec +++ b/inkscape.spec @@ -16,16 +16,19 @@ Summary: Scalable vector graphics editor Summary(pl.UTF-8): Edytor skalowalnej grafiki wektorowej Name: inkscape Version: 0.48.2 -Release: 11 +Release: 12 License: GPL v2+, LGPL v2.1+ Group: X11/Applications/Graphics Source0: http://downloads.sourceforge.net/inkscape/%{name}-%{version}%{beta}.tar.bz2 # Source0-md5: f60b98013bd1121b2cc301f3485076ba # workaround for https://bugs.launchpad.net/inkscape/+bug/487038 Patch0: %{name}-ldl.patch -Patch1: %{name}-0.48.1-libpng15.patch -Patch2: inkscape-0.48.2-glib.patch -Patch3: inkscape-poppler.patch +Patch1: %{name}-0.48.2-types.patch +Patch2: %{name}-0.48.2-glib.patch +Patch3: %{name}-0.48.2-png.patch +Patch4: %{name}-0.48.2-png-write.patch +Patch5: %{name}-0.48.2-gcc47.patch +Patch6: %{name}-0.48.2-poppler_020.patch URL: http://www.inkscape.org/ BuildRequires: ImageMagick-c++-devel BuildRequires: aspell-devel @@ -82,7 +85,10 @@ dwuwymiarowej grafiki wektorowej. %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 +%patch3 -p0 +%patch4 -p0 +%patch5 -p0 +%patch6 -p1 %{__rm} po/en_US@piglatin.po %{__sed} -i -e 's|en_US@piglatin||' configure.ac -- 2.44.0