Skip to content

Commit 99842ef

Browse files
committed
pdftoipe: handle poppler 26.02 matrix API
poppler 26.02 returns `std::array` for text and CTM matrices. Adjust callers to read `data()` when available to keep builds working. Signed-off-by: Rui Chen <rui@chenrui.dev>
1 parent a54985a commit 99842ef

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

pdftoipe/xmloutputdev.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,21 +290,28 @@ void XmlOutputDev::startText(GfxState *state, double x, double y)
290290
double xt, yt;
291291
state->transform(x, y, &xt, &yt);
292292

293-
const double *T = state->getTextMat();
294-
const double *C = state->getCTM();
293+
#if POPPLER_VERSION_AT_LEAST(26, 2, 0)
294+
const auto &T = state->getTextMat();
295+
const auto &C = state->getCTM();
296+
const double *Tp = T.data();
297+
const double *Cp = C.data();
298+
#else
299+
const double *Tp = state->getTextMat();
300+
const double *Cp = state->getCTM();
301+
#endif
295302

296303
/*
297304
fprintf(stderr, "TextMatrix = %g %g %g %g %g %g\n",
298-
T[0], T[1], T[2], T[3], T[4], T[5]);
305+
Tp[0], Tp[1], Tp[2], Tp[3], Tp[4], Tp[5]);
299306
fprintf(stderr, "CTM = %g %g %g %g %g %g\n",
300-
C[0], C[1], C[2], C[3], C[4], C[5]);
307+
Cp[0], Cp[1], Cp[2], Cp[3], Cp[4], Cp[5]);
301308
*/
302309

303310
double M[4];
304-
M[0] = C[0] * T[0] + C[2] * T[1];
305-
M[1] = C[1] * T[0] + C[3] * T[1];
306-
M[2] = C[0] * T[2] + C[2] * T[3];
307-
M[3] = C[1] * T[2] + C[3] * T[3];
311+
M[0] = Cp[0] * Tp[0] + Cp[2] * Tp[1];
312+
M[1] = Cp[1] * Tp[0] + Cp[3] * Tp[1];
313+
M[2] = Cp[0] * Tp[2] + Cp[2] * Tp[3];
314+
M[3] = Cp[1] * Tp[2] + Cp[3] * Tp[3];
308315

309316
GfxRGB rgb;
310317
state->getFillRGB(&rgb);
@@ -349,7 +356,12 @@ void XmlOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
349356

350357
writePSFmt("<image width=\"%d\" height=\"%d\"", width, height);
351358

359+
#if POPPLER_VERSION_AT_LEAST(26, 2, 0)
360+
const auto &matArr = state->getCTM();
361+
const double *mat = matArr.data();
362+
#else
352363
const double *mat = state->getCTM();
364+
#endif
353365
writePSFmt(" rect=\"0 1 1 0\" matrix=\"%g %g %g %g %g %g\"",
354366
mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]);
355367

0 commit comments

Comments
 (0)