summaryrefslogtreecommitdiff
path: root/rsvg-cairo-draw.c
diff options
context:
space:
mode:
authorCaleb Michael Moore <cmoore@src.gnome.org>2005-10-21 17:24:18 +0000
committerCaleb Michael Moore <cmoore@src.gnome.org>2005-10-21 17:24:18 +0000
commit52828443e9e87da833d790ef12bb114cddd3362c (patch)
tree56242d27ffb5a8d453da9e0baae6384e3df7052c /rsvg-cairo-draw.c
parenta5c7e4187cf555e22c26197960c44ebd6f47647d (diff)
downloadlibrsvg-52828443e9e87da833d790ef12bb114cddd3362c.tar.gz
crisper filters
Diffstat (limited to 'rsvg-cairo-draw.c')
-rw-r--r--rsvg-cairo-draw.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
index 24d6b757..220c3ff4 100644
--- a/rsvg-cairo-draw.c
+++ b/rsvg-cairo-draw.c
@@ -195,6 +195,7 @@ _set_source_rsvg_pattern (RsvgDrawingCtx *ctx,
cairo_matrix_t matrix;
int i;
double affine[6], caffine[6], bbwscale, bbhscale, scwscale, schscale;
+ int pw, ph;
rsvg_pattern = &local_pattern;
rsvg_pattern_fix_fallback(rsvg_pattern);
@@ -217,17 +218,15 @@ _set_source_rsvg_pattern (RsvgDrawingCtx *ctx,
scwscale = sqrt(affine[0] * affine[0] + affine[2] * affine[2]);
schscale = sqrt(affine[1] * affine[1] + affine[3] * affine[3]);
- scwscale = (double)((int)(rsvg_pattern->width * bbwscale *
- scwscale)) / (rsvg_pattern->width * bbwscale);
- schscale = (double)((int)(rsvg_pattern->height * bbhscale *
- schscale)) / (rsvg_pattern->height * bbhscale);
+ pw = rsvg_pattern->width * bbwscale * scwscale;
+ ph = rsvg_pattern->height * bbhscale * schscale;
+
+ scwscale = (double)pw / (double)(rsvg_pattern->width * bbwscale);
+ schscale = (double)ph / (double)(rsvg_pattern->height * bbhscale);
surface = cairo_surface_create_similar(cairo_get_target (cr_render),
CAIRO_CONTENT_COLOR_ALPHA,
- rsvg_pattern->width * bbwscale *
- scwscale,
- rsvg_pattern->height * bbhscale *
- schscale);
+ pw, ph);
cr_pattern = cairo_create(surface);