6d4aeb4377
GitOrigin-RevId: 0f213d0fee84280d8c3a97f7469b988d6fe5fcdf
93 lines
3.4 KiB
Diff
93 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;
|