The commit
ec01926e5a9dc16e200060497c43e79a1623698d
"Avoid setting a singular ctm"
introduced a regression in the output when using a ctm.
The attached patch fixes the problem.
>From 172e282ee636818db68d210ed697825355f2ca1a Mon Sep 17 00:00:00 2001
From: Adrian Johnson <[EMAIL PROTECTED]>
Date: Wed, 12 Mar 2008 21:36:26 +1030
Subject: [PATCH] Fix regression in cairo output when transforming ctm
The check for an invertable matrix had the side effect of inverting
the matrix.
Make a copy of the matrix before testing if it is invertable.
---
poppler/CairoOutputDev.cc | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc
index d69013a..57c3ac5 100644
--- a/poppler/CairoOutputDev.cc
+++ b/poppler/CairoOutputDev.cc
@@ -209,7 +209,7 @@ void CairoOutputDev::setDefaultCTM(double *ctm) {
void CairoOutputDev::updateCTM(GfxState *state, double m11, double m12,
double m21, double m22,
double m31, double m32) {
- cairo_matrix_t matrix;
+ cairo_matrix_t matrix, invert_matrix;
matrix.xx = m11;
matrix.yx = m12;
matrix.xy = m21;
@@ -225,8 +225,9 @@ void CairoOutputDev::updateCTM(GfxState *state, double m11, double m12,
*
* Ideally, we could do the cairo_transform
* and then check if anything went wrong and fix it then
- * instead of having to invert the matrix twice. */
- if (cairo_matrix_invert(&matrix)) {
+ * instead of having to invert the matrix. */
+ invert_matrix = matrix;
+ if (cairo_matrix_invert(&invert_matrix)) {
warning("matrix not invertible\n");
return;
}
--
1.5.2.4
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler