Commit 722e1213 authored by Patrick Storz's avatar Patrick Storz 🦄

Modified fix for compatibility with poppler 0.64

This is slightly uglier than a600c643
but avoids duplicating strings (which is unnecessary and leaked memory).

It's also closer to what upstream intended with the changes in 0.64.
parent f8fb46e9
Pipeline #29413672 failed with stages
in 44 minutes and 54 seconds
......@@ -32,6 +32,7 @@
#include "pdf-parser.h"
#include "util/units.h"
#include "glib/poppler-features.h"
#include "goo/gmem.h"
#include "goo/GooString.h"
#include "GlobalParams.h"
......@@ -2577,7 +2578,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,7 +2595,11 @@ void PdfParser::doShowText(const GooString *s) {
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();
......@@ -2626,7 +2635,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,
......@@ -2681,7 +2690,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,
......@@ -2727,7 +2736,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
......
......@@ -25,6 +25,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"
......@@ -287,7 +288,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);
......
......@@ -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 = nullptr;
char *font_style = nullptr;
char *font_style_lowercase = nullptr;
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;
......
......@@ -80,7 +80,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
};
/**
......@@ -202,7 +202,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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment