nixpkgs/pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch
2023-01-08 00:06:56 +00:00

94 lines
3.4 KiB
Diff

diff --git a/plug-ins/pdf/pdf-import.cpp b/plug-ins/pdf/pdf-import.cpp
index 189737908..a2a479693 100644
--- a/plug-ins/pdf/pdf-import.cpp
+++ b/plug-ins/pdf/pdf-import.cpp
@@ -152,12 +152,12 @@ public :
void
updateLineDash (GfxState *state)
{
- double *dashPattern;
- int dashLength;
- double dashStart;
-
- state->getLineDash (&dashPattern, &dashLength, &dashStart);
- this->dash_length = dashLength ? dashPattern[0] * scale : 1.0;
+ const double *dashPattern=NULL;
+ int dashLength=0;
+ double dashStart=0;
+ const std::vector<double> &dash = state->getLineDash(&dashStart); // > Poppler 22.09 ...
+ dashPattern = dash.data();
+ dashLength = dash.size();
if (dashLength == 0)
this->line_style = DIA_LINE_STYLE_SOLID;
@@ -318,10 +318,11 @@ public :
//FIXME: Dia is really unhappy about zero size fonts
if (!(state->getFontSize() > 0.0))
return;
- GfxFont *f = state->getFont();
+ const std::shared_ptr<GfxFont> f = state->getFont(); // poppler 22.05 ... header changed
+ gconstpointer f1 = &f; // GLib typedef const void * gconstpointer;
// instead of building the same font over and over again
- if (g_hash_table_lookup (this->font_map, f)) {
+ if (g_hash_table_lookup (this->font_map, f1)) {
++font_map_hits;
return;
}
@@ -333,8 +334,9 @@ public :
gchar *family = g_strdup (f->getFamily() ? f->getFamily()->c_str() : "sans");
// we are (not anymore) building the same font over and over again
+ f1 = &f;
g_print ("Font 0x%x: '%s' size=%g (* %g)\n",
- GPOINTER_TO_INT (f), family, state->getTransformedFontSize(), scale);
+ GPOINTER_TO_INT (f1), family, state->getTransformedFontSize(), scale);
// now try to make a fontname Dia/Pango can cope with
// strip style postfix - we already have extracted the style bits above
@@ -354,7 +356,9 @@ public :
fsize *= fabs(fm[3] / fm[0]);
font = dia_font_new (family, style, fsize * scale / 0.8);
- g_hash_table_insert (this->font_map, f, font);
+ f1 = &f;
+ gpointer f2 = (gpointer)f1; // GLib typedef void* gpointer;
+ g_hash_table_insert (this->font_map, f2, font);
g_free (family);
}
void updateTextShift(GfxState *state, double shift)
@@ -721,11 +725,12 @@ DiaOutputDev::drawString(GfxState *state, GooString *s)
return;
if (!(state->getFontSize() > 0.0))
return;
- font = (DiaFont *)g_hash_table_lookup (this->font_map, state->getFont());
+ gconstpointer f_1 = &state->getFont();
+ font = (DiaFont *)g_hash_table_lookup (this->font_map, f_1);
// we have to decode the string data first
{
- GfxFont *f = state->getFont();
+ const std::shared_ptr<GfxFont> f = state->getFont();
const char *p = s->c_str();
CharCode code;
int j = 0, m, n;
@@ -870,8 +875,8 @@ import_pdf(const gchar *filename, DiagramData *dia, DiaContext *ctx, void* user_
std::unique_ptr<PDFDoc> doc;
GooString *fileName = new GooString(filename);
// no passwords yet
- GooString *ownerPW = NULL;
- GooString *userPW = NULL;
+ const std::optional<GooString> ownerPW;
+ const std::optional<GooString> userPW;
gboolean ret = FALSE;
// without this we will get strange crashes (at least with /O2 build)
@@ -899,6 +904,7 @@ import_pdf(const gchar *filename, DiagramData *dia, DiaContext *ctx, void* user_
delete diaOut;
ret = TRUE;
}
+ doc.reset();
delete fileName;
return ret;