From cbd43f7acc3466f26ff978af666d851c89d1b661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Thu, 3 Nov 2016 00:24:41 +0300 Subject: [PATCH] Implement gecko glue for border-image-repeat --- components/style/properties/gecko.mako.rs | 24 ++++++++++++++++++- .../style/properties/longhand/border.mako.rs | 4 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 24e15a1e1a3..7514cbff90d 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -640,7 +640,7 @@ fn static_assert() { ["border-{0}-radius".format(x.ident.replace("_", "-")) for x in CORNERS]) %> <%self:impl_trait style_struct_name="Border" - skip_longhands="${skip_border_longhands} border-image-source border-image-outset" + skip_longhands="${skip_border_longhands} border-image-source border-image-outset border-image-repeat" skip_additionals="*"> % for side in SIDES: @@ -703,6 +703,28 @@ fn static_assert() { .copy_from(&other.gecko.mBorderImageOutset.data_at(${side.index})); % endfor } + + pub fn set_border_image_repeat(&mut self, v: longhands::border_image_repeat::computed_value::T) { + use properties::longhands::border_image_repeat::computed_value::RepeatKeyword; + use gecko_bindings::structs::{NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH, NS_STYLE_BORDER_IMAGE_REPEAT_REPEAT}; + use gecko_bindings::structs::{NS_STYLE_BORDER_IMAGE_REPEAT_ROUND, NS_STYLE_BORDER_IMAGE_REPEAT_SPACE}; + + % for i, side in enumerate(["H", "V"]): + let k = match v.${i} { + RepeatKeyword::Stretch => NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH, + RepeatKeyword::Repeat => NS_STYLE_BORDER_IMAGE_REPEAT_REPEAT, + RepeatKeyword::Round => NS_STYLE_BORDER_IMAGE_REPEAT_ROUND, + RepeatKeyword::Space => NS_STYLE_BORDER_IMAGE_REPEAT_SPACE, + }; + + self.gecko.mBorderImageRepeat${side} = k as u8; + % endfor + } + + pub fn copy_border_image_repeat_from(&mut self, other: &Self) { + self.gecko.mBorderImageRepeatH = other.gecko.mBorderImageRepeatH; + self.gecko.mBorderImageRepeatV = other.gecko.mBorderImageRepeatV; + } <% skip_margin_longhands = " ".join(["margin-%s" % x.ident for x in SIDES]) %> diff --git a/components/style/properties/longhand/border.mako.rs b/components/style/properties/longhand/border.mako.rs index eb55e539e9d..703eb991604 100644 --- a/components/style/properties/longhand/border.mako.rs +++ b/components/style/properties/longhand/border.mako.rs @@ -309,7 +309,7 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", // https://drafts.csswg.org/css-backgrounds-3/#border-image-repeat -<%helpers:longhand name="border-image-repeat" products="none" animatable="False"> +<%helpers:longhand name="border-image-repeat" products="gecko" animatable="False"> use cssparser::ToCss; use std::fmt; use values::LocalToCss; @@ -318,7 +318,7 @@ ${helpers.single_keyword("-moz-float-edge", "content-box margin-box", impl NoViewportPercentage for SpecifiedValue {} pub mod computed_value { - use super::RepeatKeyword; + pub use super::RepeatKeyword; use values::computed; #[derive(Debug, Clone, PartialEq)]