poppler/CairoOutputDev.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
New commits: commit 4f71d64c69500ed78daf4d797c8af6cfbd3d970e Author: Carlos Garcia Campos <carlo...@gnome.org> Date: Wed Apr 21 11:44:49 2010 +0200 [cairo] Fix pattern size when bbox is not at 0,0 diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc index 845bf9d..768fbba 100644 --- a/poppler/CairoOutputDev.cc +++ b/poppler/CairoOutputDev.cc @@ -716,14 +716,18 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Object *str, cairo_matrix_t matrix; cairo_t *old_cairo; double xMin, yMin, xMax, yMax; + double width, height; - if (xStep != bbox[2] || yStep != bbox[3]) + width = bbox[2] - bbox[0]; + height = bbox[3] - bbox[1]; + + if (xStep != width || yStep != height) return gFalse; /* TODO: implement the other cases here too */ surface = cairo_surface_create_similar (cairo_get_target (cairo), CAIRO_CONTENT_COLOR_ALPHA, - bbox[2], bbox[3]); + width, height); if (cairo_surface_status (surface)) return gFalse; @@ -746,6 +750,9 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Object *str, state->getUserClipBBox(&xMin, &yMin, &xMax, &yMax); cairo_rectangle (cairo, xMin, yMin, xMax - xMin, yMax - yMin); + cairo_matrix_init_scale (&matrix, (int)width / width, (int)height / height); + cairo_pattern_set_matrix (pattern, &matrix); + cairo_matrix_init (&matrix, mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); cairo_transform (cairo, &matrix); cairo_set_source (cairo, pattern); _______________________________________________ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler