From 1881a06c40ad2f1bd7fa731b36e1360328fe67a7 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 16 Jul 2018 09:12:18 +1000 Subject: [PATCH] Updates for WR gradient API change. --- Cargo.lock | 4 +- .../layout/display_list/webrender_helpers.rs | 61 +++++++++++++------ 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8ecdf79d8a..33b30266953 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3521,7 +3521,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.57.2" -source = "git+https://github.com/servo/webrender#a30fd2286f424e528e3bde502d1a11ed5ef7ec31" +source = "git+https://github.com/servo/webrender#c540acf0990f8a0cbf9429e7085c7cc3b6901add" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3556,7 +3556,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.57.2" -source = "git+https://github.com/servo/webrender#a30fd2286f424e528e3bde502d1a11ed5ef7ec31" +source = "git+https://github.com/servo/webrender#c540acf0990f8a0cbf9429e7085c7cc3b6901add" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index d056d8c4655..987259ed5b9 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -9,6 +9,7 @@ use display_list::items::{BorderDetails, ClipScrollNode, ClipScrollNodeIndex, ClipScrollNodeType}; use display_list::items::{DisplayItem, DisplayList, StackingContextType}; +use euclid::SideOffsets2D; use msg::constellation_msg::PipelineId; use webrender_api::{self, ClipAndScrollInfo, ClipId, DisplayListBuilder, GlyphRasterSpace}; use webrender_api::LayoutPoint; @@ -132,30 +133,50 @@ impl WebRenderDisplayItemConverter for DisplayItem { BorderDetails::Normal(ref border) => { webrender_api::BorderDetails::Normal(*border) }, - BorderDetails::Image(ref image) => webrender_api::BorderDetails::NinePatch(*image), + BorderDetails::Image(ref image) => { + webrender_api::BorderDetails::NinePatch(*image) + } BorderDetails::Gradient(ref gradient) => { - webrender_api::BorderDetails::Gradient(webrender_api::GradientBorder { - gradient: builder.create_gradient( - gradient.gradient.start_point, - gradient.gradient.end_point, - gradient.gradient.stops.clone(), - gradient.gradient.extend_mode, - ), + let wr_gradient = builder.create_gradient( + gradient.gradient.start_point, + gradient.gradient.end_point, + gradient.gradient.stops.clone(), + gradient.gradient.extend_mode, + ); + + let details = webrender_api::NinePatchBorder { + source: webrender_api::NinePatchBorderSource::Gradient(wr_gradient), + width: 0, + height: 0, + slice: SideOffsets2D::zero(), + fill: false, + repeat_horizontal: webrender_api::RepeatMode::Stretch, + repeat_vertical: webrender_api::RepeatMode::Stretch, outset: gradient.outset, - }) + }; + + webrender_api::BorderDetails::NinePatch(details) }, BorderDetails::RadialGradient(ref gradient) => { - webrender_api::BorderDetails::RadialGradient( - webrender_api::RadialGradientBorder { - gradient: builder.create_radial_gradient( - gradient.gradient.center, - gradient.gradient.radius, - gradient.gradient.stops.clone(), - gradient.gradient.extend_mode, - ), - outset: gradient.outset, - }, - ) + let wr_gradient = builder.create_radial_gradient( + gradient.gradient.center, + gradient.gradient.radius, + gradient.gradient.stops.clone(), + gradient.gradient.extend_mode, + ); + + let details = webrender_api::NinePatchBorder { + source: webrender_api::NinePatchBorderSource::RadialGradient(wr_gradient), + width: 0, + height: 0, + slice: SideOffsets2D::zero(), + fill: false, + repeat_horizontal: webrender_api::RepeatMode::Stretch, + repeat_vertical: webrender_api::RepeatMode::Stretch, + outset: gradient.outset, + }; + + webrender_api::BorderDetails::NinePatch(details) }, };