summaryrefslogtreecommitdiff
path: root/poppler
diff options
context:
space:
mode:
authorJeff Muizelaar <jeff@infidigm.net>2006-04-05 17:20:56 +0000
committerJeff Muizelaar <jeff@infidigm.net>2006-04-05 17:20:56 +0000
commit315f8e488d3db848f88a06c7568b6583bbf0e432 (patch)
tree03ed55fa9a68cf27822d7747c398c81d0fd4c8cf /poppler
parent0d311518f678a479c1efeaec15011e0a34de80fc (diff)
2006-04-05 Jeff Muizelaar <jeff@infidigm.net>
* poppler/CairoOutputDev.cc: use a separate matrix for the softmask. fixes #6492.
Diffstat (limited to 'poppler')
-rw-r--r--poppler/CairoOutputDev.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc
index fd00bfcc..6fa5e4ee 100644
--- a/poppler/CairoOutputDev.cc
+++ b/poppler/CairoOutputDev.cc
@@ -594,6 +594,7 @@ void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *s
int alpha, i;
double *ctm;
cairo_matrix_t matrix;
+ cairo_matrix_t maskMatrix;
int is_identity_transform;
buffer = (unsigned char *)gmalloc (width * height * 4);
@@ -636,10 +637,18 @@ void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *s
matrix.x0 = ctm[2] + ctm[4];
matrix.y0 = ctm[3] + ctm[5];
+ maskMatrix.xx = ctm[0] / maskWidth;
+ maskMatrix.xy = -ctm[2] / maskHeight;
+ maskMatrix.yx = ctm[1] / maskWidth;
+ maskMatrix.yy = -ctm[3] / maskHeight;
+ maskMatrix.x0 = ctm[2] + ctm[4];
+ maskMatrix.y0 = ctm[3] + ctm[5];
+
cairo_matrix_invert (&matrix);
+ cairo_matrix_invert (&maskMatrix);
cairo_pattern_set_matrix (pattern, &matrix);
- cairo_pattern_set_matrix (maskPattern, &matrix);
+ cairo_pattern_set_matrix (maskPattern, &maskMatrix);
cairo_pattern_set_filter (pattern, CAIRO_FILTER_BILINEAR);
cairo_set_source (cairo, pattern);