aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/webrender_helpers.rs
diff options
context:
space:
mode:
authorPyfisch <pyfisch@gmail.com>2017-04-30 22:36:45 +0200
committerPyfisch <pyfisch@gmail.com>2017-04-30 22:36:45 +0200
commitb230be8aaf318fb754cf58e5cd243087df2f7e0f (patch)
treeb34e4fa58d26ce019a8fc6a41f6eb28fcc03ddb6 /components/layout/webrender_helpers.rs
parenta956e3fd529715cc0ac39b23910f19e092c7c5a9 (diff)
downloadservo-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.rs22
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);