diff options
author | Marius Bakke <mbakke@fastmail.com> | 2019-06-20 23:38:56 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2019-06-20 23:38:56 +0200 |
commit | 6cb1ef9ea28ee14b3bb5442e8af1f54c27802f09 (patch) | |
tree | c2c35f733d250f86eb052d174fcb1c24a54fea79 /gnu/packages/patches/inkscape-poppler-compat3.patch | |
parent | 20e4ee1e3b7044d9f64de02c6237b00e5a57da35 (diff) | |
parent | 010689e7067df1288af29176f4a8639de816b1ef (diff) | |
download | guix-patches-6cb1ef9ea28ee14b3bb5442e8af1f54c27802f09.tar guix-patches-6cb1ef9ea28ee14b3bb5442e8af1f54c27802f09.tar.gz |
Merge branch 'staging' into core-updates
Diffstat (limited to 'gnu/packages/patches/inkscape-poppler-compat3.patch')
-rw-r--r-- | gnu/packages/patches/inkscape-poppler-compat3.patch | 499 |
1 files changed, 0 insertions, 499 deletions
diff --git a/gnu/packages/patches/inkscape-poppler-compat3.patch b/gnu/packages/patches/inkscape-poppler-compat3.patch deleted file mode 100644 index eaaf7d93f1..0000000000 --- a/gnu/packages/patches/inkscape-poppler-compat3.patch +++ /dev/null @@ -1,499 +0,0 @@ -Fix compatibility with Poppler >= 0.69. - -This is a combination of these upstream commits: -https://gitlab.com/inkscape/inkscape/commit/722e121361d0f784083d10e897155b7d4e44e515 -https://gitlab.com/inkscape/inkscape/commit/402c0274420fe39fd2f3393bc7d8d8879d436358 - -...with slight adjustments for the 0.92.3 release tarball. - -diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake ---- a/CMakeScripts/DefineDependsandFlags.cmake -+++ b/CMakeScripts/DefineDependsandFlags.cmake -@@ -116,18 +116,6 @@ if(ENABLE_POPPLER) - set(HAVE_POPPLER_GLIB ON) - endif() - endif() -- if(POPPLER_VERSION VERSION_GREATER "0.26.0" OR -- POPPLER_VERSION VERSION_EQUAL "0.26.0") -- set(POPPLER_EVEN_NEWER_COLOR_SPACE_API ON) -- endif() -- if(POPPLER_VERSION VERSION_GREATER "0.29.0" OR -- 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/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp ---- a/src/extension/internal/pdfinput/pdf-input.cpp -+++ b/src/extension/internal/pdfinput/pdf-input.cpp -@@ -793,7 +793,7 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { - dlg->getImportSettings(prefs); - - // Apply crop settings -- PDFRectangle *clipToBox = NULL; -+ _POPPLER_CONST PDFRectangle *clipToBox = NULL; - double crop_setting; - sp_repr_get_double(prefs, "cropTo", &crop_setting); - -diff --git a/src/extension/internal/pdfinput/pdf-input.h b/src/extension/internal/pdfinput/pdf-input.h ---- a/src/extension/internal/pdfinput/pdf-input.h -+++ b/src/extension/internal/pdfinput/pdf-input.h -@@ -15,6 +15,7 @@ - #endif - - #ifdef HAVE_POPPLER -+#include "poppler-transition-api.h" - - #include <gtkmm/dialog.h> - -diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp ---- a/src/extension/internal/pdfinput/pdf-parser.cpp -+++ b/src/extension/internal/pdfinput/pdf-parser.cpp -@@ -36,6 +36,7 @@ extern "C" { - #include "pdf-parser.h" - #include "util/units.h" - -+#include "glib/poppler-features.h" - #include "goo/gmem.h" - #include "goo/GooString.h" - #include "GlobalParams.h" -@@ -294,8 +295,8 @@ PdfParser::PdfParser(XRef *xrefA, - int /*pageNum*/, - int rotate, - Dict *resDict, -- PDFRectangle *box, -- PDFRectangle *cropBox) : -+ _POPPLER_CONST PDFRectangle *box, -+ _POPPLER_CONST PDFRectangle *cropBox) : - xref(xrefA), - builder(builderA), - subPage(gFalse), -@@ -317,7 +318,7 @@ PdfParser::PdfParser(XRef *xrefA, - builder->setDocumentSize(Inkscape::Util::Quantity::convert(state->getPageWidth(), "pt", "px"), - Inkscape::Util::Quantity::convert(state->getPageHeight(), "pt", "px")); - -- double *ctm = state->getCTM(); -+ const double *ctm = state->getCTM(); - double scaledCTM[6]; - for (int i = 0; i < 6; ++i) { - baseMatrix[i] = ctm[i]; -@@ -352,7 +353,7 @@ PdfParser::PdfParser(XRef *xrefA, - PdfParser::PdfParser(XRef *xrefA, - Inkscape::Extension::Internal::SvgBuilder *builderA, - Dict *resDict, -- PDFRectangle *box) : -+ _POPPLER_CONST PDFRectangle *box) : - xref(xrefA), - builder(builderA), - subPage(gTrue), -@@ -571,7 +572,7 @@ const char *PdfParser::getPreviousOperator(unsigned int look_back) { - - void PdfParser::execOp(Object *cmd, Object args[], int numArgs) { - PdfOperator *op; -- char *name; -+ const char *name; - Object *argPtr; - int i; - -@@ -619,7 +620,7 @@ void PdfParser::execOp(Object *cmd, Object args[], int numArgs) { - (this->*op->func)(argPtr, numArgs); - } - --PdfOperator* PdfParser::findOp(char *name) { -+PdfOperator* PdfParser::findOp(const char *name) { - int a = -1; - int b = numOps; - int cmp = -1; -@@ -1751,7 +1752,7 @@ void PdfParser::doShadingPatternFillFallback(GfxShadingPattern *sPat, - GBool stroke, GBool eoFill) { - GfxShading *shading; - GfxPath *savedPath; -- double *ctm, *btm, *ptm; -+ const double *ctm, *btm, *ptm; - double m[6], ictm[6], m1[6]; - double xMin, yMin, xMax, yMax; - double det; -@@ -1993,7 +1994,7 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading, - GfxColor color0M, color1M, colorM0, colorM1, colorMM; - GfxColor colors2[4]; - double functionColorDelta = colorDeltas[pdfFunctionShading-1]; -- double *matrix; -+ const double *matrix; - double xM, yM; - int nComps, i, j; - -@@ -2173,7 +2174,7 @@ void PdfParser::doPatchMeshShFill(GfxPatchMeshShading *shading) { - } - } - --void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) { -+void PdfParser::fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth) { - GfxPatch patch00 = blankPatch(); - GfxPatch patch01 = blankPatch(); - GfxPatch patch10 = blankPatch(); -@@ -2581,7 +2582,11 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/) - } - } - -+#if POPPLER_CHECK_VERSION(0,64,0) - void PdfParser::doShowText(const GooString *s) { -+#else -+void PdfParser::doShowText(GooString *s) { -+#endif - GfxFont *font; - int wMode; - double riseX, riseY; -@@ -2590,11 +2595,15 @@ void PdfParser::doShowText(const GooString *s) { - double x, y, dx, dy, tdx, tdy; - double originX, originY, tOriginX, tOriginY; - double oldCTM[6], newCTM[6]; -- double *mat; -+ const double *mat; - Object charProc; - Dict *resDict; - Parser *oldParser; -+#if POPPLER_CHECK_VERSION(0,64,0) -+ const char *p; -+#else - char *p; -+#endif - int len, n, uLen; - - font = state->getFont(); -@@ -2630,7 +2639,7 @@ void PdfParser::doShowText(const GooString *s) { - double lineX = state->getLineX(); - double lineY = state->getLineY(); - oldParser = parser; -- p = g_strdup(s->getCString()); -+ p = s->getCString(); - len = s->getLength(); - while (len > 0) { - n = font->getNextChar(p, len, &code, -@@ -2685,7 +2694,7 @@ void PdfParser::doShowText(const GooString *s) { - - } else { - state->textTransformDelta(0, state->getRise(), &riseX, &riseY); -- p = g_strdup(s->getCString()); -+ p = s->getCString(); - len = s->getLength(); - while (len > 0) { - n = font->getNextChar(p, len, &code, -@@ -2731,7 +2740,11 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) - { - Object obj1, obj2, obj3, refObj; - -- char *name = g_strdup(args[0].getName()); -+#if POPPLER_CHECK_VERSION(0,64,0) -+ const char *name = args[0].getName(); -+#else -+ char *name = args[0].getName(); -+#endif - #if defined(POPPLER_NEW_OBJECT_API) - if ((obj1 = res->lookupXObject(name)).isNull()) { - #else -@@ -3656,7 +3669,6 @@ void PdfParser::opBeginImage(Object /*args*/[], int /*numArgs*/) - Stream *PdfParser::buildImageStream() { - Object dict; - Object obj; -- char *key; - Stream *str; - - // build dictionary -@@ -3674,26 +3686,17 @@ Stream *PdfParser::buildImageStream() { - 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); -+ Object obj2; -+ _POPPLER_CALL(obj2, parser->getObj); -+ if (obj2.isEOF() || obj2.isError()) { -+ _POPPLER_FREE(obj); - break; - } --#if defined(POPPLER_NEW_OBJECT_API) -- dict.dictAdd(key, std::move(obj)); -- } -- obj = parser->getObj(); --#else -- dict.dictAdd(key, &obj); -+ _POPPLER_DICTADD(dict, obj.getName(), obj2); -+ _POPPLER_FREE(obj); -+ _POPPLER_FREE(obj2); - } -- parser->getObj(&obj); --#endif -+ _POPPLER_CALL(obj, parser->getObj); - } - if (obj.isEOF()) { - error(errSyntaxError, getPos(), "End of file in inline image"); -diff --git a/src/extension/internal/pdfinput/pdf-parser.h b/src/extension/internal/pdfinput/pdf-parser.h ---- a/src/extension/internal/pdfinput/pdf-parser.h -+++ b/src/extension/internal/pdfinput/pdf-parser.h -@@ -9,6 +9,7 @@ - #define PDF_PARSER_H - - #ifdef HAVE_POPPLER -+#include "poppler-transition-api.h" - - #ifdef USE_GCC_PRAGMAS - #pragma interface -@@ -25,6 +26,7 @@ namespace Inkscape { - // TODO clean up and remove using: - using Inkscape::Extension::Internal::SvgBuilder; - -+#include "glib/poppler-features.h" - #include "goo/gtypes.h" - #include "Object.h" - -@@ -127,11 +129,14 @@ public: - - // Constructor for regular output. - PdfParser(XRef *xrefA, SvgBuilder *builderA, int pageNum, int rotate, -- Dict *resDict, PDFRectangle *box, PDFRectangle *cropBox); -+ Dict *resDict, -+ _POPPLER_CONST PDFRectangle *box, -+ _POPPLER_CONST PDFRectangle *cropBox); - - // Constructor for a sub-page object. - PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *builderA, -- Dict *resDict, PDFRectangle *box); -+ Dict *resDict, -+ _POPPLER_CONST PDFRectangle *box); - - virtual ~PdfParser(); - -@@ -185,7 +190,7 @@ private: - - void go(GBool topLevel); - void execOp(Object *cmd, Object args[], int numArgs); -- PdfOperator *findOp(char *name); -+ PdfOperator *findOp(const char *name); - GBool checkArg(Object *arg, TchkType type); - int getPos(); - -@@ -256,7 +261,7 @@ private: - double x2, double y2, GfxColor *color2, - int nComps, int depth); - void doPatchMeshShFill(GfxPatchMeshShading *shading); -- void fillPatch(GfxPatch *patch, int nComps, int depth); -+ void fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth); - void doEndPath(); - - // path clipping operators -@@ -287,7 +292,12 @@ private: - void opMoveShowText(Object args[], int numArgs); - void opMoveSetShowText(Object args[], int numArgs); - void opShowSpaceText(Object args[], int numArgs); -+#if POPPLER_CHECK_VERSION(0,64,0) - void doShowText(const GooString *s); -+#else -+ void doShowText(GooString *s); -+#endif -+ - - // XObject operators - void opXObject(Object args[], int numArgs); -diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h -new file mode 100644 ---- /dev/null -+++ b/src/extension/internal/pdfinput/poppler-transition-api.h -@@ -0,0 +1,39 @@ -+#ifndef SEEN_POPPLER_TRANSITION_API_H -+#define SEEN_POPPLER_TRANSITION_API_H -+ -+#include <glib/poppler-features.h> -+ -+#if POPPLER_CHECK_VERSION(0,70,0) -+#define _POPPLER_CONST const -+#else -+#define _POPPLER_CONST -+#endif -+ -+#if POPPLER_CHECK_VERSION(0,69,0) -+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(key, std::move(obj)) -+#elif POPPLER_CHECK_VERSION(0,58,0) -+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), std::move(obj)) -+#else -+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), &obj) -+#endif -+ -+#if POPPLER_CHECK_VERSION(0,58,0) -+#define POPPLER_NEW_OBJECT_API -+#define _POPPLER_FREE(obj) -+#define _POPPLER_CALL(ret, func) (ret = func()) -+#define _POPPLER_CALL_ARGS(ret, func, ...) (ret = func(__VA_ARGS__)) -+#else -+#define _POPPLER_FREE(obj) (obj).free() -+#define _POPPLER_CALL(ret, func) (*func(&ret)) -+#define _POPPLER_CALL_ARGS(ret, func, ...) (*func(__VA_ARGS__, &ret)) -+#endif -+ -+#if POPPLER_CHECK_VERSION(0, 29, 0) -+#define POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API -+#endif -+ -+#if POPPLER_CHECK_VERSION(0, 25, 0) -+#define POPPLER_EVEN_NEWER_COLOR_SPACE_API -+#endif -+ -+#endif -diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp ---- a/src/extension/internal/pdfinput/svg-builder.cpp -+++ b/src/extension/internal/pdfinput/svg-builder.cpp -@@ -625,7 +625,7 @@ gchar *SvgBuilder::_createPattern(GfxPattern *pattern, GfxState *state, bool is_ - if ( pattern != NULL ) { - if ( pattern->getType() == 2 ) { // Shading pattern - GfxShadingPattern *shading_pattern = static_cast<GfxShadingPattern *>(pattern); -- double *ptm; -+ const double *ptm; - double m[6] = {1, 0, 0, 1, 0, 0}; - double det; - -@@ -672,7 +672,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern, - - Inkscape::XML::Node *pattern_node = _xml_doc->createElement("svg:pattern"); - // Set pattern transform matrix -- double *p2u = tiling_pattern->getMatrix(); -+ const double *p2u = tiling_pattern->getMatrix(); - double m[6] = {1, 0, 0, 1, 0, 0}; - double det; - det = _ttm[0] * _ttm[3] - _ttm[1] * _ttm[2]; // see LP Bug 1168908 -@@ -698,7 +698,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern, - pattern_node->setAttribute("patternUnits", "userSpaceOnUse"); - // Set pattern tiling - // FIXME: don't ignore XStep and YStep -- double *bbox = tiling_pattern->getBBox(); -+ const double *bbox = tiling_pattern->getBBox(); - sp_repr_set_svg_double(pattern_node, "x", 0.0); - sp_repr_set_svg_double(pattern_node, "y", 0.0); - sp_repr_set_svg_double(pattern_node, "width", bbox[2] - bbox[0]); -@@ -751,7 +751,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern, - */ - gchar *SvgBuilder::_createGradient(GfxShading *shading, double *matrix, bool for_shading) { - Inkscape::XML::Node *gradient; -- Function *func; -+ _POPPLER_CONST Function *func; - int num_funcs; - bool extend0, extend1; - -@@ -865,7 +865,7 @@ static bool svgGetShadingColorRGB(GfxShading *shading, double offset, GfxRGB *re - - #define INT_EPSILON 8 - bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading, -- Function *func) { -+ _POPPLER_CONST Function *func) { - int type = func->getType(); - if ( type == 0 || type == 2 ) { // Sampled or exponential function - GfxRGB stop1, stop2; -@@ -877,9 +877,9 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh - _addStopToGradient(gradient, 1.0, &stop2, 1.0); - } - } else if ( type == 3 ) { // Stitching -- StitchingFunction *stitchingFunc = static_cast<StitchingFunction*>(func); -- double *bounds = stitchingFunc->getBounds(); -- double *encode = stitchingFunc->getEncode(); -+ auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func); -+ const double *bounds = stitchingFunc->getBounds(); -+ const double *encode = stitchingFunc->getEncode(); - int num_funcs = stitchingFunc->getNumFuncs(); - - // Add stops from all the stitched functions -@@ -890,7 +890,7 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh - svgGetShadingColorRGB(shading, bounds[i + 1], &color); - // Add stops - if (stitchingFunc->getFunc(i)->getType() == 2) { // process exponential fxn -- double expE = (static_cast<ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE(); -+ double expE = (static_cast<_POPPLER_CONST ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE(); - if (expE > 1.0) { - expE = (bounds[i + 1] - bounds[i])/expE; // approximate exponential as a single straight line at x=1 - if (encode[2*i] == 0) { // normal sequence -@@ -1020,9 +1020,9 @@ void SvgBuilder::updateFont(GfxState *state) { - GfxFont *font = state->getFont(); - // Store original name - if (font->getName()) { -- _font_specification = g_strdup(font->getName()->getCString()); -+ _font_specification = font->getName()->getCString(); - } else { -- _font_specification = (char*) "Arial"; -+ _font_specification = "Arial"; - } - - // Prune the font name to get the correct font family name -@@ -1030,7 +1030,7 @@ void SvgBuilder::updateFont(GfxState *state) { - char *font_family = NULL; - char *font_style = NULL; - char *font_style_lowercase = NULL; -- char *plus_sign = strstr(_font_specification, "+"); -+ const char *plus_sign = strstr(_font_specification, "+"); - if (plus_sign) { - font_family = g_strdup(plus_sign + 1); - _font_specification = plus_sign + 1; -@@ -1148,7 +1148,7 @@ void SvgBuilder::updateFont(GfxState *state) { - Inkscape::CSSOStringStream os_font_size; - double css_font_size = _font_scaling * state->getFontSize(); - if ( font->getType() == fontType3 ) { -- double *font_matrix = font->getFontMatrix(); -+ const double *font_matrix = font->getFontMatrix(); - if ( font_matrix[0] != 0.0 ) { - css_font_size *= font_matrix[3] / font_matrix[0]; - } -@@ -1193,7 +1193,7 @@ void SvgBuilder::updateTextPosition(double tx, double ty) { - void SvgBuilder::updateTextMatrix(GfxState *state) { - _flushText(); - // Update text matrix -- double *text_matrix = state->getTextMat(); -+ const double *text_matrix = state->getTextMat(); - double w_scale = sqrt( text_matrix[0] * text_matrix[0] + text_matrix[2] * text_matrix[2] ); - double h_scale = sqrt( text_matrix[1] * text_matrix[1] + text_matrix[3] * text_matrix[3] ); - double max_scale; -diff --git a/src/extension/internal/pdfinput/svg-builder.h b/src/extension/internal/pdfinput/svg-builder.h ---- a/src/extension/internal/pdfinput/svg-builder.h -+++ b/src/extension/internal/pdfinput/svg-builder.h -@@ -15,6 +15,7 @@ - #endif - - #ifdef HAVE_POPPLER -+#include "poppler-transition-api.h" - - class SPDocument; - namespace Inkscape { -@@ -80,7 +81,7 @@ struct SvgGlyph { - bool style_changed; // Set to true if style has to be reset - SPCSSAttr *style; - int render_mode; // Text render mode -- char *font_specification; // Pointer to current font specification -+ const char *font_specification; // Pointer to current font specification - }; - - /** -@@ -174,7 +175,7 @@ private: - void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, - GfxRGB *color, double opacity); - bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading, -- Function *func); -+ _POPPLER_CONST Function *func); - gchar *_createTilingPattern(GfxTilingPattern *tiling_pattern, GfxState *state, - bool is_stroke=false); - // Image/mask creation -@@ -202,7 +203,7 @@ private: - - SPCSSAttr *_font_style; // Current font style - GfxFont *_current_font; -- char *_font_specification; -+ const char *_font_specification; - double _font_scaling; - bool _need_font_update; - Geom::Affine _text_matrix; |