diff options
author | pylbrecht <palbrecht@mailbox.org> | 2019-11-16 19:17:42 +0100 |
---|---|---|
committer | pylbrecht <palbrecht@mailbox.org> | 2019-12-17 19:51:59 +0100 |
commit | 16f06f24c5d4d9dc0c8797f0661575db346a85fc (patch) | |
tree | 868529139d4922340226d73599cd7ca8fdd436b5 /components/canvas/raqote_backend.rs | |
parent | d87e5d831ba2032c65173f5a7a92316d539a36b0 (diff) | |
download | servo-16f06f24c5d4d9dc0c8797f0661575db346a85fc.tar.gz servo-16f06f24c5d4d9dc0c8797f0661575db346a85fc.zip |
Add check for handling equal radial gradients
Diffstat (limited to 'components/canvas/raqote_backend.rs')
-rw-r--r-- | components/canvas/raqote_backend.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs index c958695acf1..ec0061a24bf 100644 --- a/components/canvas/raqote_backend.rs +++ b/components/canvas/raqote_backend.rs @@ -677,9 +677,16 @@ impl<'a> ToRaqoteSource<'a> for FillOrStrokeStyle { }, RadialGradient(style) => { let stops = style.stops.into_iter().map(|s| s.to_raqote()).collect(); - let gradient = raqote::Gradient { stops }; + let mut gradient = raqote::Gradient { stops }; let center1 = Point2D::new(style.x0 as f32, style.y0 as f32); let center2 = Point2D::new(style.x1 as f32, style.y1 as f32); + let equal_centers = center1 == center2; + let equal_radius = style.r0 == style.r1; + if equal_centers && equal_radius { + // TODO + // hack to make Pattern::is_zero_size_gradient() return true + gradient.stops.clear(); + } Some(raqote::Source::new_two_circle_radial_gradient( gradient, center1, |