diff options
author | Pyfisch <pyfisch@gmail.com> | 2017-04-30 22:36:45 +0200 |
---|---|---|
committer | Pyfisch <pyfisch@gmail.com> | 2017-04-30 22:36:45 +0200 |
commit | b230be8aaf318fb754cf58e5cd243087df2f7e0f (patch) | |
tree | b34e4fa58d26ce019a8fc6a41f6eb28fcc03ddb6 /components/layout/webrender_helpers.rs | |
parent | a956e3fd529715cc0ac39b23910f19e092c7c5a9 (diff) | |
download | servo-b230be8aaf318fb754cf58e5cd243087df2f7e0f.tar.gz servo-b230be8aaf318fb754cf58e5cd243087df2f7e0f.zip |
Implement radial gradients for borders.
The property border-image-outset is not yet implemented.
Note: Also support repeating-linear-gradients for borders.
Diffstat (limited to 'components/layout/webrender_helpers.rs')
-rw-r--r-- | components/layout/webrender_helpers.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/components/layout/webrender_helpers.rs b/components/layout/webrender_helpers.rs index 70479d43837..d498bc6067f 100644 --- a/components/layout/webrender_helpers.rs +++ b/components/layout/webrender_helpers.rs @@ -352,15 +352,35 @@ impl WebRenderDisplayItemConverter for DisplayItem { } } BorderDetails::Gradient(ref gradient) => { + let extend_mode = if gradient.gradient.repeating { + ExtendMode::Repeat + } else { + ExtendMode::Clamp + }; webrender_traits::BorderDetails::Gradient(webrender_traits::GradientBorder { gradient: builder.create_gradient( gradient.gradient.start_point.to_pointf(), gradient.gradient.end_point.to_pointf(), gradient.gradient.stops.clone(), - ExtendMode::Clamp), + extend_mode), outset: gradient.outset, }) } + BorderDetails::RadialGradient(ref gradient) => { + let extend_mode = if gradient.gradient.repeating { + ExtendMode::Repeat + } else { + ExtendMode::Clamp + }; + webrender_traits::BorderDetails::RadialGradient(webrender_traits::RadialGradientBorder { + gradient: builder.create_radial_gradient( + gradient.gradient.center.to_pointf(), + gradient.gradient.radius.to_sizef(), + gradient.gradient.stops.clone(), + extend_mode), + outset: gradient.outset, + }) + } }; builder.push_border(rect, clip, widths, details); |