Support line-height in geckolib

This commit is contained in:
Matt Brubeck 2016-05-25 17:23:57 -07:00
parent bf3c437683
commit 1389fbe6ff
3 changed files with 50 additions and 1 deletions

View file

@ -719,12 +719,29 @@ fn static_assert() {
</%self:impl_trait>
<%self:impl_trait style_struct_name="InheritedText"
skip_longhands="text-align">
skip_longhands="text-align line-height">
<% text_align_keyword = Keyword("text-align", "start end left right center justify -moz-center -moz-left " +
"-moz-right match-parent") %>
<%call expr="impl_keyword('text_align', 'mTextAlign', text_align_keyword, need_clone=False)"></%call>
fn set_line_height(&mut self, v: longhands::line_height::computed_value::T) {
use style::properties::longhands::line_height::computed_value::T;
// FIXME: Align binary representations and ditch |match| for cast + static_asserts
match v {
T::Normal => self.gecko.mLineHeight.set_normal(),
T::Length(val) => self.gecko.mLineHeight.set_coord(val),
T::Number(val) => self.gecko.mLineHeight.set_factor(val),
T::MozBlockHeight =>
self.gecko.mLineHeight.set_enum(structs::NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT as i32),
}
}
fn copy_line_height_from(&mut self, other: &Self) {
debug_assert_unit_is_safe_to_copy(self.gecko.mLineHeight.mUnit);
self.gecko.mLineHeight.mUnit = other.gecko.mLineHeight.mUnit;
self.gecko.mLineHeight.mValue = other.gecko.mLineHeight.mValue;
}
</%self:impl_trait>
<%self:impl_trait style_struct_name="Text"

View file

@ -11,10 +11,12 @@ use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto, Leng
pub trait StyleCoordHelpers {
fn set<T: ToGeckoStyleCoord>(&mut self, val: T);
fn set_auto(&mut self);
fn set_normal(&mut self);
fn set_coord(&mut self, val: Au);
fn set_int(&mut self, val: i32);
fn set_enum(&mut self, val: i32);
fn set_percent(&mut self, val: f32);
fn set_factor(&mut self, val: f32);
}
impl StyleCoordHelpers for nsStyleCoord {
@ -27,6 +29,11 @@ impl StyleCoordHelpers for nsStyleCoord {
unsafe { *self.mValue.mInt.as_mut() = 0; }
}
fn set_normal(&mut self) {
self.mUnit = nsStyleUnit::eStyleUnit_Normal;
unsafe { *self.mValue.mInt.as_mut() = 0; }
}
fn set_coord(&mut self, val: Au) {
self.mUnit = nsStyleUnit::eStyleUnit_Coord;
unsafe { *self.mValue.mInt.as_mut() = val.0; }
@ -46,6 +53,11 @@ impl StyleCoordHelpers for nsStyleCoord {
self.mUnit = nsStyleUnit::eStyleUnit_Enumerated;
unsafe { *self.mValue.mInt.as_mut() = val; }
}
fn set_factor(&mut self, val: f32) {
self.mUnit = nsStyleUnit::eStyleUnit_Factor;
unsafe { *self.mValue.mFloat.as_mut() = val; }
}
}
pub trait ToGeckoStyleCoord {