aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/webrender_helpers.rs
diff options
context:
space:
mode:
authorDzmitry Malyshau <kvark@mozilla.com>2017-05-05 15:23:41 -0400
committerDzmitry Malyshau <kvark@mozilla.com>2017-05-16 11:08:32 -0400
commitd04a64394efb40adeadf0dd950247d2a08ba13b0 (patch)
treed11e0fa61b195b6c40949968190e4700f90d6fde /components/layout/webrender_helpers.rs
parent0388e11db2532d41a71e184cb2a1f46e5107b8f5 (diff)
downloadservo-d04a64394efb40adeadf0dd950247d2a08ba13b0.tar.gz
servo-d04a64394efb40adeadf0dd950247d2a08ba13b0.zip
Using TransformStyle::Preserve3D
Diffstat (limited to 'components/layout/webrender_helpers.rs')
-rw-r--r--components/layout/webrender_helpers.rs27
1 files changed, 20 insertions, 7 deletions
diff --git a/components/layout/webrender_helpers.rs b/components/layout/webrender_helpers.rs
index ca7cdb27a3f..537d5f04267 100644
--- a/components/layout/webrender_helpers.rs
+++ b/components/layout/webrender_helpers.rs
@@ -12,7 +12,7 @@ use euclid::{Point2D, Rect, SideOffsets2D, Size2D};
use gfx::display_list::{BorderDetails, BorderRadii, BoxShadowClipMode, ClippingRegion};
use gfx::display_list::{DisplayItem, DisplayList, DisplayListTraversal, StackingContextType};
use msg::constellation_msg::PipelineId;
-use style::computed_values::{image_rendering, mix_blend_mode};
+use style::computed_values::{image_rendering, mix_blend_mode, transform_style};
use style::computed_values::filter::{self, Filter};
use style::values::computed::BorderStyle;
use webrender_traits::{self, DisplayListBuilder, ExtendMode};
@@ -146,12 +146,12 @@ impl ToBorderRadius for BorderRadii<Au> {
}
}
-trait ToBlendMode {
- fn to_blend_mode(&self) -> webrender_traits::MixBlendMode;
+pub trait ToMixBlendMode {
+ fn to_mix_blend_mode(&self) -> webrender_traits::MixBlendMode;
}
-impl ToBlendMode for mix_blend_mode::T {
- fn to_blend_mode(&self) -> webrender_traits::MixBlendMode {
+impl ToMixBlendMode for mix_blend_mode::T {
+ fn to_mix_blend_mode(&self) -> webrender_traits::MixBlendMode {
match *self {
mix_blend_mode::T::normal => webrender_traits::MixBlendMode::Normal,
mix_blend_mode::T::multiply => webrender_traits::MixBlendMode::Multiply,
@@ -211,6 +211,19 @@ impl ToFilterOps for filter::T {
}
}
+pub trait ToTransformStyle {
+ fn to_transform_style(&self) -> webrender_traits::TransformStyle;
+}
+
+impl ToTransformStyle for transform_style::T {
+ fn to_transform_style(&self) -> webrender_traits::TransformStyle {
+ match *self {
+ transform_style::T::auto | transform_style::T::flat => webrender_traits::TransformStyle::Flat,
+ transform_style::T::preserve_3d => webrender_traits::TransformStyle::Preserve3D,
+ }
+ }
+}
+
impl WebRenderDisplayListConverter for DisplayList {
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder {
let traversal = DisplayListTraversal::new(self);
@@ -464,9 +477,9 @@ impl WebRenderDisplayItemConverter for DisplayItem {
builder.push_stacking_context(stacking_context.scroll_policy,
stacking_context.bounds.to_rectf(),
transform,
- webrender_traits::TransformStyle::Flat,
+ stacking_context.transform_style,
perspective,
- stacking_context.blend_mode.to_blend_mode(),
+ stacking_context.mix_blend_mode,
stacking_context.filters.to_filter_ops());
}
DisplayItem::PopStackingContext(_) => builder.pop_stacking_context(),