diff options
author | Dom Lachowicz <doml@src.gnome.org> | 2004-05-15 13:04:46 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2004-05-15 13:04:46 +0000 |
commit | 71ae961e7cf8a3152973d2e305c09b4eac79a802 (patch) | |
tree | 3537e9ace3d7e88de7aa7add7a90b4185a873596 | |
parent | b4223e3d71d75aff09a5ada8b95c8cd37974fdfd (diff) | |
download | librsvg-71ae961e7cf8a3152973d2e305c09b4eac79a802.tar.gz |
backport a bugfix
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | rsvg.c | 39 |
2 files changed, 34 insertions, 9 deletions
@@ -1,3 +1,7 @@ +2004-05-15 Caleb Moore <c.moore@student.unsw.edu.au> + + * rsvg.c: fixed a bug causing defaults to be messed up when a radial gradient is based on a linear gradient and vice versa + == librsvg 2.6.5 == * configure.in: Bump version @@ -502,10 +502,20 @@ rsvg_start_linear_gradient (RsvgHandle *ctx, const xmlChar **atts) /* gradient inherits parent/cloned information unless it's explicity gotten */ grad->obj_bbox = (cloned && !got_bbox) ? grad->obj_bbox : obj_bbox; - grad->x1 = (cloned && !got_x1) ? grad->x1 : x1; - grad->y1 = (cloned && !got_y1) ? grad->y1 : y1; - grad->x2 = (cloned && !got_x2) ? grad->x2 : x2; - grad->y2 = (cloned && !got_y2) ? grad->y1 : y2; + if (!shallow_cloned) + { + grad->x1 = (cloned && !got_x1) ? grad->x1 : x1; + grad->y1 = (cloned && !got_y1) ? grad->y1 : y1; + grad->x2 = (cloned && !got_x2) ? grad->x2 : x2; + grad->y2 = (cloned && !got_y2) ? grad->y1 : y2; + } + else + { + grad->x1 = x1; + grad->y1 = y1; + grad->x2 = x2; + grad->y2 = y2; + } grad->spread = (cloned && !got_spread) ? grad->spread : spread; } @@ -646,11 +656,22 @@ rsvg_start_radial_gradient (RsvgHandle *ctx, const xmlChar **atts, const char * /* gradient inherits parent/cloned information unless it's explicity gotten */ grad->obj_bbox = (cloned && !got_bbox) ? grad->obj_bbox : obj_bbox; - grad->cx = (cloned && !got_cx) ? grad->cx : cx; - grad->cy = (cloned && !got_cy) ? grad->cy : cy; - grad->r = (cloned && !got_r) ? grad->r : r; - grad->fx = (cloned && !got_fx) ? grad->fx : fx; - grad->fy = (cloned && !got_fy) ? grad->fy : fy; + if (!shallow_cloned) + { + grad->cx = (cloned && !got_cx) ? grad->cx : cx; + grad->cy = (cloned && !got_cy) ? grad->cy : cy; + grad->r = (cloned && !got_r) ? grad->r : r; + grad->fx = (cloned && !got_fx) ? grad->fx : fx; + grad->fy = (cloned && !got_fy) ? grad->fy : fy; + } + else + { + grad->cx = cx; + grad->cy = cy; + grad->r = r; + grad->fx = fx; + grad->fy = fy; + } grad->spread = (cloned && !got_spread) ? grad->spread : spread; } |