stylo: Support most MathML presentation attributes

This commit is contained in:
Manish Goregaokar 2017-04-10 15:28:48 +08:00 committed by Manish Goregaokar
parent 2e22a006db
commit 1ea8175163
3 changed files with 23 additions and 13 deletions

View file

@ -225,7 +225,8 @@ ${helpers.single_keyword("font-style",
gecko_constant_prefix="NS_FONT_STYLE",
gecko_ffi_name="mFont.style",
spec="https://drafts.csswg.org/css-fonts/#propdef-font-style",
animation_type="none")}
animation_type="none",
needs_conversion=True)}
${helpers.single_keyword("font-variant",
"normal small-caps",
@ -292,19 +293,24 @@ ${helpers.single_keyword("font-variant-caps",
_ => Err(())
}
}).or_else(|()| {
match try!(input.expect_integer()) {
100 => Ok(SpecifiedValue::Weight100),
200 => Ok(SpecifiedValue::Weight200),
300 => Ok(SpecifiedValue::Weight300),
400 => Ok(SpecifiedValue::Weight400),
500 => Ok(SpecifiedValue::Weight500),
600 => Ok(SpecifiedValue::Weight600),
700 => Ok(SpecifiedValue::Weight700),
800 => Ok(SpecifiedValue::Weight800),
900 => Ok(SpecifiedValue::Weight900),
SpecifiedValue::from_int(input.expect_integer()?)
})
}
impl SpecifiedValue {
pub fn from_int(kw: i32) -> Result<Self, ()> {
match kw {
% for weight in range(100, 901, 100):
${weight} => Ok(SpecifiedValue::Weight${weight}),
% endfor
_ => Err(())
}
})
}
pub fn from_gecko_keyword(kw: u32) -> Self {
Self::from_int(kw as i32).expect("Found unexpected value in style
struct for font-weight property")
}
}
/// Used in @font-face, where relative keywords are not allowed.

View file

@ -24,7 +24,8 @@ ${helpers.single_keyword("writing-mode",
spec="https://drafts.csswg.org/css-writing-modes/#propdef-writing-mode")}
${helpers.single_keyword("direction", "ltr rtl", need_clone=True, animation_type="none",
spec="https://drafts.csswg.org/css-writing-modes/#propdef-direction")}
spec="https://drafts.csswg.org/css-writing-modes/#propdef-direction",
needs_conversion=True)}
<%helpers:single_keyword_computed
name="text-orientation"

View file

@ -1327,6 +1327,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetKeywordValue(declarations:
let prop = match_wrap_declared! { long,
MozUserModify => longhands::_moz_user_modify::SpecifiedValue::from_gecko_keyword(value),
// TextEmphasisPosition => FIXME implement text-emphasis-position
Direction => longhands::direction::SpecifiedValue::from_gecko_keyword(value),
Display => longhands::display::SpecifiedValue::from_gecko_keyword(value),
Float => longhands::float::SpecifiedValue::from_gecko_keyword(value),
VerticalAlign => longhands::vertical_align::SpecifiedValue::from_gecko_keyword(value),
@ -1337,6 +1338,8 @@ pub extern "C" fn Servo_DeclarationBlock_SetKeywordValue(declarations:
// We rely on Gecko passing in font-size values (0...7) here.
longhands::font_size::SpecifiedValue::from_html_size(value as u8)
},
FontStyle => longhands::font_style::SpecifiedValue::from_gecko_keyword(value),
FontWeight => longhands::font_weight::SpecifiedValue::from_gecko_keyword(value),
ListStyleType => longhands::list_style_type::SpecifiedValue::from_gecko_keyword(value),
MozMathVariant => longhands::_moz_math_variant::SpecifiedValue::from_gecko_keyword(value),
WhiteSpace => longhands::white_space::SpecifiedValue::from_gecko_keyword(value),