diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index adfd0729157..ec59235b1cc 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -26,19 +26,16 @@ pub struct CSSStyleDeclaration { owner: JS, } -macro_rules! css_getter( - ( $idlattr:ident, $cssprop:expr ) => ( - fn $idlattr(self) -> DOMString { - self.GetPropertyValue($cssprop.to_string()) - } - ); -) - -macro_rules! css_setter( - ( $fnname:ident, $cssprop:expr ) => ( - fn $fnname(self, value: DOMString) { - self.SetPropertyValue($cssprop.to_string(), value).unwrap(); - } +macro_rules! css_properties( + ( $([$getter:ident, $setter:ident, $cssprop:expr]),* ) => ( + $( + fn $getter(self) -> DOMString { + self.GetPropertyValue($cssprop.to_string()) + } + fn $setter(self, value: DOMString) { + self.SetPropertyValue($cssprop.to_string(), value).unwrap(); + } + )* ); ) @@ -255,212 +252,77 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> { rval } - css_getter!(Color, "color") - css_setter!(SetColor, "color") - - css_getter!(Background, "background") - css_setter!(SetBackground, "background") - - css_getter!(BackgroundColor, "background-color") - css_setter!(SetBackgroundColor, "background-color") - - css_getter!(BackgroundPosition, "background-position") - css_setter!(SetBackgroundPosition, "background-position") - - css_getter!(BackgroundImage, "background-image") - css_setter!(SetBackgroundImage, "background-image") - - css_getter!(BackgroundRepeat, "background-repeat") - css_setter!(SetBackgroundRepeat, "background-repeat") - - css_getter!(BackgroundAttachment, "background-attachment") - css_setter!(SetBackgroundAttachment, "background-attachment") - - css_getter!(Border, "border") - css_setter!(SetBorder, "border") - - css_getter!(BorderColor, "border-color") - css_setter!(SetBorderColor, "border-color") - - css_getter!(BorderStyle, "border-style") - css_setter!(SetBorderStyle, "border-style") - - css_getter!(BorderWidth, "border-width") - css_setter!(SetBorderWidth, "border-width") - - css_getter!(BorderBottom, "border-bottom") - css_setter!(SetBorderBottom, "border-bottom") - - css_getter!(BorderBottomColor, "border-bottom-color") - css_setter!(SetBorderBottomColor, "border-bottom-color") - - css_getter!(BorderBottomStyle, "border-bottom-style") - css_setter!(SetBorderBottomStyle, "border-bottom-style") - - css_getter!(BorderBottomWidth, "border-bottom-width") - css_setter!(SetBorderBottomWidth, "border-bottom-width") - - css_getter!(BorderLeft, "border-left") - css_setter!(SetBorderLeft, "border-left") - - css_getter!(BorderLeftColor, "border-left-color") - css_setter!(SetBorderLeftColor, "border-left-color") - - css_getter!(BorderLeftStyle, "border-left-style") - css_setter!(SetBorderLeftStyle, "border-left-style") - - css_getter!(BorderLeftWidth, "border-left-width") - css_setter!(SetBorderLeftWidth, "border-left-width") - - css_getter!(BorderRight, "border-right") - css_setter!(SetBorderRight, "border-right") - - css_getter!(BorderRightColor, "border-right-color") - css_setter!(SetBorderRightColor, "border-right-color") - - css_getter!(BorderRightStyle, "border-right-style") - css_setter!(SetBorderRightStyle, "border-right-style") - - css_getter!(BorderRightWidth, "border-right-width") - css_setter!(SetBorderRightWidth, "border-right-width") - - css_getter!(BorderTop, "border-top") - css_setter!(SetBorderTop, "border-top") - - css_getter!(BorderTopColor, "border-top-color") - css_setter!(SetBorderTopColor, "border-top-color") - - css_getter!(BorderTopStyle, "border-top-style") - css_setter!(SetBorderTopStyle, "border-top-style") - - css_getter!(BorderTopWidth, "border-top-width") - css_setter!(SetBorderTopWidth, "border-top-width") - - css_getter!(Content, "content") - css_setter!(SetContent, "content") - - css_getter!(Display, "display") - css_setter!(SetDisplay, "display") - - css_getter!(Width, "width") - css_setter!(SetWidth, "width") - - css_getter!(MinWidth, "min-width") - css_setter!(SetMinWidth, "min-width") - - css_getter!(MaxWidth, "max-width") - css_setter!(SetMaxWidth, "max-width") - - css_getter!(Height, "height") - css_setter!(SetHeight, "height") - - css_getter!(MinHeight, "min-height") - css_setter!(SetMinHeight, "min-height") - - css_getter!(MaxHeight, "max-height") - css_setter!(SetMaxHeight, "max-height") - - css_getter!(Clear, "clear") - css_setter!(SetClear, "clear") - - css_getter!(Direction, "direction") - css_setter!(SetDirection, "direction") - - css_getter!(LineHeight, "line-height") - css_setter!(SetLineHeight, "line-height") - - css_getter!(VerticalAlign, "vertical-align") - css_setter!(SetVerticalAlign, "vertical-align") - - css_getter!(Visibility, "visibility") - css_setter!(SetVisibility, "visibility") - - css_getter!(Overflow, "overflow") - css_setter!(SetOverflow, "overflow") - - css_getter!(TableLayout, "table-layout") - css_setter!(SetTableLayout, "table-layout") - - css_getter!(WhiteSpace, "white-space") - css_setter!(SetWhiteSpace, "white-space") - - css_getter!(WritingMode, "writing-mode") - css_setter!(SetWritingMode, "writing-mode") - - css_getter!(TextAlign, "text-align") - css_setter!(SetTextAlign, "text-align") - - css_getter!(TextDecoration, "text-decoration") - css_setter!(SetTextDecoration, "text-decoration") - - css_getter!(TextOrientation, "text-orientation") - css_setter!(SetTextOrientation, "text-orientation") - - css_getter!(Font, "font") - css_setter!(SetFont, "font") - - css_getter!(FontFamily, "font-family") - css_setter!(SetFontFamily, "font-family") - - css_getter!(FontSize, "font-size") - css_setter!(SetFontSize, "font-size") - - css_getter!(FontStyle, "font-style") - css_setter!(SetFontStyle, "font-style") - - css_getter!(FontVariant, "font-variant") - css_setter!(SetFontVariant, "font-variant") - - css_getter!(FontWeight, "font-weight") - css_setter!(SetFontWeight, "font-weight") - - css_getter!(Margin, "margin") - css_setter!(SetMargin, "margin") - - css_getter!(MarginBottom, "margin-bottom") - css_setter!(SetMarginBottom, "margin-bottom") - - css_getter!(MarginLeft, "margin-left") - css_setter!(SetMarginLeft, "margin-left") - - css_getter!(MarginRight, "margin-right") - css_setter!(SetMarginRight, "margin-right") - - css_getter!(MarginTop, "margin-top") - css_setter!(SetMarginTop, "margin-top") - - css_getter!(Padding, "padding") - css_setter!(SetPadding, "padding") - - css_getter!(PaddingBottom, "padding-bottom") - css_setter!(SetPaddingBottom, "padding-bottom") - - css_getter!(PaddingLeft, "padding-left") - css_setter!(SetPaddingLeft, "padding-left") - - css_getter!(PaddingRight, "padding-right") - css_setter!(SetPaddingRight, "padding-right") - - css_getter!(PaddingTop, "padding-top") - css_setter!(SetPaddingTop, "padding-top") - - css_getter!(Position, "position") - css_setter!(SetPosition, "position") - - css_getter!(Top, "top") - css_setter!(SetTop, "top") - - css_getter!(Bottom, "bottom") - css_setter!(SetBottom, "bottom") - - css_getter!(Left, "left") - css_setter!(SetLeft, "left") - - css_getter!(Right, "right") - css_setter!(SetRight, "right") - - css_getter!(ZIndex, "z-index") - css_setter!(SetZIndex, "z-index") + css_properties!( + [Color, SetColor, "color"], + [Background, SetBackground, "background"], + [BackgroundColor, SetBackgroundColor, "background-color"], + [BackgroundPosition, SetBackgroundPosition, "background-position"], + [BackgroundImage, SetBackgroundImage, "background-image"], + [BackgroundRepeat, SetBackgroundRepeat, "background-repeat"], + [BackgroundAttachment, SetBackgroundAttachment, "background-attachment"], + [Border, SetBorder, "border"], + [BorderColor, SetBorderColor, "border-color"], + [BorderStyle, SetBorderStyle, "border-style"], + [BorderWidth, SetBorderWidth, "border-width"], + [BorderBottom, SetBorderBottom, "border-bottom"], + [BorderBottomColor, SetBorderBottomColor, "border-bottom-color"], + [BorderBottomStyle, SetBorderBottomStyle, "border-bottom-style"], + [BorderBottomWidth, SetBorderBottomWidth, "border-bottom-width"], + [BorderLeft, SetBorderLeft, "border-left"], + [BorderLeftColor, SetBorderLeftColor, "border-left-color"], + [BorderLeftStyle, SetBorderLeftStyle, "border-left-style"], + [BorderLeftWidth, SetBorderLeftWidth, "border-left-width"], + [BorderRight, SetBorderRight, "border-right"], + [BorderRightColor, SetBorderRightColor, "border-right-color"], + [BorderRightStyle, SetBorderRightStyle, "border-right-style"], + [BorderRightWidth, SetBorderRightWidth, "border-right-width"], + [BorderTop, SetBorderTop, "border-top"], + [BorderTopColor, SetBorderTopColor, "border-top-color"], + [BorderTopStyle, SetBorderTopStyle, "border-top-style"], + [BorderTopWidth, SetBorderTopWidth, "border-top-width"], + [Content, SetContent, "content"], + [Display, SetDisplay, "display"], + [Width, SetWidth, "width"], + [MinWidth, SetMinWidth, "min-width"], + [MaxWidth, SetMaxWidth, "max-width"], + [Height, SetHeight, "height"], + [MinHeight, SetMinHeight, "min-height"], + [MaxHeight, SetMaxHeight, "max-height"], + [Clear, SetClear, "clear"], + [Direction, SetDirection, "direction"], + [LineHeight, SetLineHeight, "line-height"], + [VerticalAlign, SetVerticalAlign, "vertical-align"], + [Visibility, SetVisibility, "visibility"], + [Overflow, SetOverflow, "overflow"], + [TableLayout, SetTableLayout, "table-layout"], + [WhiteSpace, SetWhiteSpace, "white-space"], + [WritingMode, SetWritingMode, "writing-mode"], + [TextAlign, SetTextAlign, "text-align"], + [TextDecoration, SetTextDecoration, "text-decoration"], + [TextOrientation, SetTextOrientation, "text-orientation"], + [Font, SetFont, "font"], + [FontFamily, SetFontFamily, "font-family"], + [FontSize, SetFontSize, "font-size"], + [FontStyle, SetFontStyle, "font-style"], + [FontVariant, SetFontVariant, "font-variant"], + [FontWeight, SetFontWeight, "font-weight"], + [Margin, SetMargin, "margin"], + [MarginBottom, SetMarginBottom, "margin-bottom"], + [MarginLeft, SetMarginLeft, "margin-left"], + [MarginRight, SetMarginRight, "margin-right"], + [MarginTop, SetMarginTop, "margin-top"], + [Padding, SetPadding, "padding"], + [PaddingBottom, SetPaddingBottom, "padding-bottom"], + [PaddingLeft, SetPaddingLeft, "padding-left"], + [PaddingRight, SetPaddingRight, "padding-right"], + [PaddingTop, SetPaddingTop, "padding-top"], + [Position, SetPosition, "position"], + [Bottom, SetBottom, "bottom"], + [Left, SetLeft, "left"], + [Right, SetRight, "right"], + [Top, SetTop, "top"], + [ZIndex, SetZIndex, "z-index"] + ) } impl Reflectable for CSSStyleDeclaration { diff --git a/components/style/properties/common_types.rs b/components/style/properties/common_types.rs index 3d3fd9294e8..9dcd65d6fc5 100644 --- a/components/style/properties/common_types.rs +++ b/components/style/properties/common_types.rs @@ -21,6 +21,7 @@ pub mod specified { use cssparser::ast::*; use parsing_utils::{mod, BufferedIter, ParserIter}; use super::{Au, CSSFloat}; + #[deriving(Clone, PartialEq)] pub struct CSSColor { pub parsed: cssparser::Color, diff --git a/components/style/properties/mod.rs.mako b/components/style/properties/mod.rs.mako index d1301681449..8b7abd23ecf 100644 --- a/components/style/properties/mod.rs.mako +++ b/components/style/properties/mod.rs.mako @@ -3045,9 +3045,7 @@ pub fn cascade(applicable_declarations: &[DeclarationBlock], DeclaredValue::SpecifiedValue(ref specified_value) => specified_value.parsed, DeclaredValue::Initial => longhands::color::get_initial_value(), DeclaredValue::Inherit => inherited_style.get_color().color.clone(), - }; -//get_specified!(get_color, color, value); } PropertyDeclaration::DisplayDeclaration(ref value) => { context.display = get_specified!(get_box, display, value);