]> git.pld-linux.org Git - packages/inkscape.git/blame - poppler0.69.patch
- fix building with poppler 0.69
[packages/inkscape.git] / poppler0.69.patch
CommitLineData
f3dc1445
JR
1commit 402c0274420fe39fd2f3393bc7d8d8879d436358
2Author: Thomas Holder <thomas@thomas-holder.de>
3Date: Fri Sep 28 18:05:30 2018 +0000
4
5 fix 1789208 poppler 0.69
6
7diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake
8index 40ca7aa65c..9457d58df0 100644
9--- a/CMakeScripts/DefineDependsandFlags.cmake
10+++ b/CMakeScripts/DefineDependsandFlags.cmake
11@@ -126,18 +126,6 @@ if(ENABLE_POPPLER)
12 set(HAVE_POPPLER_GLIB ON)
13 endif()
14 endif()
15- if(POPPLER_VERSION VERSION_GREATER "0.26.0" OR
16- POPPLER_VERSION VERSION_EQUAL "0.26.0")
17- set(POPPLER_EVEN_NEWER_COLOR_SPACE_API ON)
18- endif()
19- if(POPPLER_VERSION VERSION_GREATER "0.29.0" OR
20- POPPLER_VERSION VERSION_EQUAL "0.29.0")
21- set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON)
22- endif()
23- if(POPPLER_VERSION VERSION_GREATER "0.58.0" OR
24- POPPLER_VERSION VERSION_EQUAL "0.58.0")
25- set(POPPLER_NEW_OBJECT_API ON)
26- endif()
27 else()
28 set(ENABLE_POPPLER_CAIRO OFF)
29 endif()
30diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp
31index fa9942230b..21a91fa34f 100644
32--- a/src/extension/internal/pdfinput/pdf-input.cpp
33+++ b/src/extension/internal/pdfinput/pdf-input.cpp
34@@ -804,7 +804,7 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
35 dlg->getImportSettings(prefs);
36
37 // Apply crop settings
38- PDFRectangle *clipToBox = NULL;
39+ _POPPLER_CONST PDFRectangle *clipToBox = nullptr;
40 double crop_setting;
41 sp_repr_get_double(prefs, "cropTo", &crop_setting);
42
43diff --git a/src/extension/internal/pdfinput/pdf-input.h b/src/extension/internal/pdfinput/pdf-input.h
44index ddcb8f222b..88a894f1c0 100644
45--- a/src/extension/internal/pdfinput/pdf-input.h
46+++ b/src/extension/internal/pdfinput/pdf-input.h
47@@ -15,6 +15,7 @@
48 #endif
49
50 #ifdef HAVE_POPPLER
51+#include "poppler-transition-api.h"
52
53 #include <gtkmm/dialog.h>
54
55diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
56index a3a8ff25a6..96313e1f19 100644
57--- a/src/extension/internal/pdfinput/pdf-parser.cpp
58+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
59@@ -291,8 +291,8 @@ PdfParser::PdfParser(XRef *xrefA,
60 int /*pageNum*/,
61 int rotate,
62 Dict *resDict,
63- PDFRectangle *box,
64- PDFRectangle *cropBox) :
65+ _POPPLER_CONST PDFRectangle *box,
66+ _POPPLER_CONST PDFRectangle *cropBox) :
67 xref(xrefA),
68 builder(builderA),
69 subPage(gFalse),
70@@ -314,7 +314,7 @@ PdfParser::PdfParser(XRef *xrefA,
71 builder->setDocumentSize(Inkscape::Util::Quantity::convert(state->getPageWidth(), "pt", "px"),
72 Inkscape::Util::Quantity::convert(state->getPageHeight(), "pt", "px"));
73
74- double *ctm = state->getCTM();
75+ const double *ctm = state->getCTM();
76 double scaledCTM[6];
77 for (int i = 0; i < 6; ++i) {
78 baseMatrix[i] = ctm[i];
79@@ -349,7 +349,7 @@ PdfParser::PdfParser(XRef *xrefA,
80 PdfParser::PdfParser(XRef *xrefA,
81 Inkscape::Extension::Internal::SvgBuilder *builderA,
82 Dict *resDict,
83- PDFRectangle *box) :
84+ _POPPLER_CONST PDFRectangle *box) :
85 xref(xrefA),
86 builder(builderA),
87 subPage(gTrue),
88@@ -568,7 +568,7 @@ const char *PdfParser::getPreviousOperator(unsigned int look_back) {
89
90 void PdfParser::execOp(Object *cmd, Object args[], int numArgs) {
91 PdfOperator *op;
92- char *name;
93+ const char *name;
94 Object *argPtr;
95 int i;
96
97@@ -616,7 +616,7 @@ void PdfParser::execOp(Object *cmd, Object args[], int numArgs) {
98 (this->*op->func)(argPtr, numArgs);
99 }
100
101-PdfOperator* PdfParser::findOp(char *name) {
102+PdfOperator* PdfParser::findOp(const char *name) {
103 int a = -1;
104 int b = numOps;
105 int cmp = -1;
106@@ -1748,7 +1748,7 @@ void PdfParser::doShadingPatternFillFallback(GfxShadingPattern *sPat,
107 GBool stroke, GBool eoFill) {
108 GfxShading *shading;
109 GfxPath *savedPath;
110- double *ctm, *btm, *ptm;
111+ const double *ctm, *btm, *ptm;
112 double m[6], ictm[6], m1[6];
113 double xMin, yMin, xMax, yMax;
114 double det;
115@@ -1990,7 +1990,7 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading,
116 GfxColor color0M, color1M, colorM0, colorM1, colorMM;
117 GfxColor colors2[4];
118 double functionColorDelta = colorDeltas[pdfFunctionShading-1];
119- double *matrix;
120+ const double *matrix;
121 double xM, yM;
122 int nComps, i, j;
123
124@@ -2170,7 +2170,7 @@ void PdfParser::doPatchMeshShFill(GfxPatchMeshShading *shading) {
125 }
126 }
127
128-void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) {
129+void PdfParser::fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth) {
130 GfxPatch patch00 = blankPatch();
131 GfxPatch patch01 = blankPatch();
132 GfxPatch patch10 = blankPatch();
133@@ -2591,7 +2591,7 @@ void PdfParser::doShowText(GooString *s) {
134 double x, y, dx, dy, tdx, tdy;
135 double originX, originY, tOriginX, tOriginY;
136 double oldCTM[6], newCTM[6];
137- double *mat;
138+ const double *mat;
139 Object charProc;
140 Dict *resDict;
141 Parser *oldParser;
142@@ -3665,7 +3665,6 @@ void PdfParser::opBeginImage(Object /*args*/[], int /*numArgs*/)
143 Stream *PdfParser::buildImageStream() {
144 Object dict;
145 Object obj;
146- char *key;
147 Stream *str;
148
149 // build dictionary
150@@ -3683,26 +3682,17 @@ Stream *PdfParser::buildImageStream() {
151 obj.free();
152 #endif
153 } else {
154- key = copyString(obj.getName());
155-#if defined(POPPLER_NEW_OBJECT_API)
156- obj = parser->getObj();
157-#else
158- obj.free();
159- parser->getObj(&obj);
160-#endif
161- if (obj.isEOF() || obj.isError()) {
162- gfree(key);
163+ Object obj2;
164+ _POPPLER_CALL(obj2, parser->getObj);
165+ if (obj2.isEOF() || obj2.isError()) {
166+ _POPPLER_FREE(obj);
167 break;
168 }
169-#if defined(POPPLER_NEW_OBJECT_API)
170- dict.dictAdd(key, std::move(obj));
171+ _POPPLER_DICTADD(dict, obj.getName(), obj2);
172+ _POPPLER_FREE(obj);
173+ _POPPLER_FREE(obj2);
174 }
175- obj = parser->getObj();
176-#else
177- dict.dictAdd(key, &obj);
178- }
179- parser->getObj(&obj);
180-#endif
181+ _POPPLER_CALL(obj, parser->getObj);
182 }
183 if (obj.isEOF()) {
184 error(errSyntaxError, getPos(), "End of file in inline image");
185diff --git a/src/extension/internal/pdfinput/pdf-parser.h b/src/extension/internal/pdfinput/pdf-parser.h
186index b27a29cfbf..17eb025468 100644
187--- a/src/extension/internal/pdfinput/pdf-parser.h
188+++ b/src/extension/internal/pdfinput/pdf-parser.h
189@@ -9,6 +9,7 @@
190 #define PDF_PARSER_H
191
192 #ifdef HAVE_POPPLER
193+#include "poppler-transition-api.h"
194
195 #ifdef USE_GCC_PRAGMAS
196 #pragma interface
197@@ -128,11 +129,14 @@ public:
198
199 // Constructor for regular output.
200 PdfParser(XRef *xrefA, SvgBuilder *builderA, int pageNum, int rotate,
201- Dict *resDict, PDFRectangle *box, PDFRectangle *cropBox);
202+ Dict *resDict,
203+ _POPPLER_CONST PDFRectangle *box,
204+ _POPPLER_CONST PDFRectangle *cropBox);
205
206 // Constructor for a sub-page object.
207 PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *builderA,
208- Dict *resDict, PDFRectangle *box);
209+ Dict *resDict,
210+ _POPPLER_CONST PDFRectangle *box);
211
212 virtual ~PdfParser();
213
214@@ -186,7 +190,7 @@ private:
215
216 void go(GBool topLevel);
217 void execOp(Object *cmd, Object args[], int numArgs);
218- PdfOperator *findOp(char *name);
219+ PdfOperator *findOp(const char *name);
220 GBool checkArg(Object *arg, TchkType type);
221 int getPos();
222
223@@ -257,7 +261,7 @@ private:
224 double x2, double y2, GfxColor *color2,
225 int nComps, int depth);
226 void doPatchMeshShFill(GfxPatchMeshShading *shading);
227- void fillPatch(GfxPatch *patch, int nComps, int depth);
228+ void fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth);
229 void doEndPath();
230
231 // path clipping operators
232diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
233new file mode 100644
234index 0000000000..898e64bf2b
235--- /dev/null
236+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
237@@ -0,0 +1,39 @@
238+#ifndef SEEN_POPPLER_TRANSITION_API_H
239+#define SEEN_POPPLER_TRANSITION_API_H
240+
241+#include <glib/poppler-features.h>
242+
243+#if POPPLER_CHECK_VERSION(0,70,0)
244+#define _POPPLER_CONST const
245+#else
246+#define _POPPLER_CONST
247+#endif
248+
249+#if POPPLER_CHECK_VERSION(0,69,0)
250+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(key, std::move(obj))
251+#elif POPPLER_CHECK_VERSION(0,58,0)
252+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), std::move(obj))
253+#else
254+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), &obj)
255+#endif
256+
257+#if POPPLER_CHECK_VERSION(0,58,0)
258+#define POPPLER_NEW_OBJECT_API
259+#define _POPPLER_FREE(obj)
260+#define _POPPLER_CALL(ret, func) (ret = func())
261+#define _POPPLER_CALL_ARGS(ret, func, ...) (ret = func(__VA_ARGS__))
262+#else
263+#define _POPPLER_FREE(obj) (obj).free()
264+#define _POPPLER_CALL(ret, func) (*func(&ret))
265+#define _POPPLER_CALL_ARGS(ret, func, ...) (*func(__VA_ARGS__, &ret))
266+#endif
267+
268+#if POPPLER_CHECK_VERSION(0, 29, 0)
269+#define POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API
270+#endif
271+
272+#if POPPLER_CHECK_VERSION(0, 25, 0)
273+#define POPPLER_EVEN_NEWER_COLOR_SPACE_API
274+#endif
275+
276+#endif
277diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
278index 9d0df7c04d..a59397a100 100644
279--- a/src/extension/internal/pdfinput/svg-builder.cpp
280+++ b/src/extension/internal/pdfinput/svg-builder.cpp
281@@ -625,7 +625,7 @@ gchar *SvgBuilder::_createPattern(GfxPattern *pattern, GfxState *state, bool is_
282 if ( pattern != nullptr ) {
283 if ( pattern->getType() == 2 ) { // Shading pattern
284 GfxShadingPattern *shading_pattern = static_cast<GfxShadingPattern *>(pattern);
285- double *ptm;
286+ const double *ptm;
287 double m[6] = {1, 0, 0, 1, 0, 0};
288 double det;
289
290@@ -672,7 +672,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
291
292 Inkscape::XML::Node *pattern_node = _xml_doc->createElement("svg:pattern");
293 // Set pattern transform matrix
294- double *p2u = tiling_pattern->getMatrix();
295+ const double *p2u = tiling_pattern->getMatrix();
296 double m[6] = {1, 0, 0, 1, 0, 0};
297 double det;
298 det = _ttm[0] * _ttm[3] - _ttm[1] * _ttm[2]; // see LP Bug 1168908
299@@ -698,7 +698,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
300 pattern_node->setAttribute("patternUnits", "userSpaceOnUse");
301 // Set pattern tiling
302 // FIXME: don't ignore XStep and YStep
303- double *bbox = tiling_pattern->getBBox();
304+ const double *bbox = tiling_pattern->getBBox();
305 sp_repr_set_svg_double(pattern_node, "x", 0.0);
306 sp_repr_set_svg_double(pattern_node, "y", 0.0);
307 sp_repr_set_svg_double(pattern_node, "width", bbox[2] - bbox[0]);
308@@ -751,7 +751,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
309 */
310 gchar *SvgBuilder::_createGradient(GfxShading *shading, double *matrix, bool for_shading) {
311 Inkscape::XML::Node *gradient;
312- Function *func;
313+ _POPPLER_CONST Function *func;
314 int num_funcs;
315 bool extend0, extend1;
316
317@@ -865,7 +865,7 @@ static bool svgGetShadingColorRGB(GfxShading *shading, double offset, GfxRGB *re
318
319 #define INT_EPSILON 8
320 bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
321- Function *func) {
322+ _POPPLER_CONST Function *func) {
323 int type = func->getType();
324 if ( type == 0 || type == 2 ) { // Sampled or exponential function
325 GfxRGB stop1, stop2;
326@@ -877,9 +877,9 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh
327 _addStopToGradient(gradient, 1.0, &stop2, 1.0);
328 }
329 } else if ( type == 3 ) { // Stitching
330- StitchingFunction *stitchingFunc = static_cast<StitchingFunction*>(func);
331- double *bounds = stitchingFunc->getBounds();
332- double *encode = stitchingFunc->getEncode();
333+ auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func);
334+ const double *bounds = stitchingFunc->getBounds();
335+ const double *encode = stitchingFunc->getEncode();
336 int num_funcs = stitchingFunc->getNumFuncs();
337
338 // Add stops from all the stitched functions
339@@ -890,7 +890,7 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh
340 svgGetShadingColorRGB(shading, bounds[i + 1], &color);
341 // Add stops
342 if (stitchingFunc->getFunc(i)->getType() == 2) { // process exponential fxn
343- double expE = (static_cast<ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE();
344+ double expE = (static_cast<_POPPLER_CONST ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE();
345 if (expE > 1.0) {
346 expE = (bounds[i + 1] - bounds[i])/expE; // approximate exponential as a single straight line at x=1
347 if (encode[2*i] == 0) { // normal sequence
348@@ -1148,7 +1148,7 @@ void SvgBuilder::updateFont(GfxState *state) {
349 Inkscape::CSSOStringStream os_font_size;
350 double css_font_size = _font_scaling * state->getFontSize();
351 if ( font->getType() == fontType3 ) {
352- double *font_matrix = font->getFontMatrix();
353+ const double *font_matrix = font->getFontMatrix();
354 if ( font_matrix[0] != 0.0 ) {
355 css_font_size *= font_matrix[3] / font_matrix[0];
356 }
357@@ -1193,7 +1193,7 @@ void SvgBuilder::updateTextPosition(double tx, double ty) {
358 void SvgBuilder::updateTextMatrix(GfxState *state) {
359 _flushText();
360 // Update text matrix
361- double *text_matrix = state->getTextMat();
362+ const double *text_matrix = state->getTextMat();
363 double w_scale = sqrt( text_matrix[0] * text_matrix[0] + text_matrix[2] * text_matrix[2] );
364 double h_scale = sqrt( text_matrix[1] * text_matrix[1] + text_matrix[3] * text_matrix[3] );
365 double max_scale;
366diff --git a/src/extension/internal/pdfinput/svg-builder.h b/src/extension/internal/pdfinput/svg-builder.h
367index 729cdc944c..7fdb0b5fcd 100644
368--- a/src/extension/internal/pdfinput/svg-builder.h
369+++ b/src/extension/internal/pdfinput/svg-builder.h
370@@ -15,6 +15,7 @@
371 #endif
372
373 #ifdef HAVE_POPPLER
374+#include "poppler-transition-api.h"
375
376 class SPDocument;
377 namespace Inkscape {
378@@ -174,7 +175,7 @@ private:
379 void _addStopToGradient(Inkscape::XML::Node *gradient, double offset,
380 GfxRGB *color, double opacity);
381 bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
382- Function *func);
383+ _POPPLER_CONST Function *func);
384 gchar *_createTilingPattern(GfxTilingPattern *tiling_pattern, GfxState *state,
385 bool is_stroke=false);
386 // Image/mask creation
This page took 0.065505 seconds and 4 git commands to generate.