summaryrefslogtreecommitdiff
path: root/fitz/res_shade.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2012-01-02 18:22:13 +0000
committerRobin Watts <robin.watts@artifex.com>2012-01-02 18:22:13 +0000
commitb7ed90ac050ea30dcab70fe3b49d31398b49699f (patch)
treeaa7e8240801052de140a0e483e38c96bc31f0296 /fitz/res_shade.c
parent7fe9ac6fa15b3b36327b7ff8c3d749495fbe9aab (diff)
downloadmupdf-b7ed90ac050ea30dcab70fe3b49d31398b49699f.tar.xz
Bound shades by the supplied bbox.
Fix a 'TODO'. When asking for the bounds of a shading, simply convert the shadings bbox and intersect with that.
Diffstat (limited to 'fitz/res_shade.c')
-rw-r--r--fitz/res_shade.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/fitz/res_shade.c b/fitz/res_shade.c
index d619dc18..0be4ba7c 100644
--- a/fitz/res_shade.c
+++ b/fitz/res_shade.c
@@ -27,7 +27,7 @@ fz_rect
fz_bound_shade(fz_shade *shade, fz_matrix ctm)
{
float *v;
- fz_rect r;
+ fz_rect r, s;
fz_point p;
int i, ncomp, nvert;
@@ -36,10 +36,11 @@ fz_bound_shade(fz_shade *shade, fz_matrix ctm)
nvert = shade->mesh_len / ncomp;
v = shade->mesh;
+ s = fz_transform_rect(ctm, shade->bbox);
if (shade->type == FZ_LINEAR)
- return fz_infinite_rect;
+ return fz_intersect_rect(s, fz_infinite_rect);
if (shade->type == FZ_RADIAL)
- return fz_infinite_rect;
+ return fz_intersect_rect(s, fz_infinite_rect);
if (nvert == 0)
return fz_empty_rect;
@@ -63,7 +64,7 @@ fz_bound_shade(fz_shade *shade, fz_matrix ctm)
if (p.y > r.y1) r.y1 = p.y;
}
- return r;
+ return fz_intersect_rect(s, r);
}
void