diff options
author | Dzmitry Malyshau <kvark@mozilla.com> | 2017-05-05 15:23:41 -0400 |
---|---|---|
committer | Dzmitry Malyshau <kvark@mozilla.com> | 2017-05-16 11:08:32 -0400 |
commit | d04a64394efb40adeadf0dd950247d2a08ba13b0 (patch) | |
tree | d11e0fa61b195b6c40949968190e4700f90d6fde /components/layout/webrender_helpers.rs | |
parent | 0388e11db2532d41a71e184cb2a1f46e5107b8f5 (diff) | |
download | servo-d04a64394efb40adeadf0dd950247d2a08ba13b0.tar.gz servo-d04a64394efb40adeadf0dd950247d2a08ba13b0.zip |
Using TransformStyle::Preserve3D
Diffstat (limited to 'components/layout/webrender_helpers.rs')
-rw-r--r-- | components/layout/webrender_helpers.rs | 27 |
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(), |