mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Support line-height in geckolib
This commit is contained in:
parent
bf3c437683
commit
1389fbe6ff
3 changed files with 50 additions and 1 deletions
|
@ -15,6 +15,9 @@
|
||||||
#[derive(Debug, Clone, PartialEq, Copy, HeapSizeOf)]
|
#[derive(Debug, Clone, PartialEq, Copy, HeapSizeOf)]
|
||||||
pub enum SpecifiedValue {
|
pub enum SpecifiedValue {
|
||||||
Normal,
|
Normal,
|
||||||
|
% if product == "gecko":
|
||||||
|
MozBlockHeight,
|
||||||
|
% endif
|
||||||
Number(CSSFloat),
|
Number(CSSFloat),
|
||||||
LengthOrPercentage(specified::LengthOrPercentage),
|
LengthOrPercentage(specified::LengthOrPercentage),
|
||||||
}
|
}
|
||||||
|
@ -23,6 +26,9 @@
|
||||||
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
|
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
|
||||||
match *self {
|
match *self {
|
||||||
SpecifiedValue::Normal => dest.write_str("normal"),
|
SpecifiedValue::Normal => dest.write_str("normal"),
|
||||||
|
% if product == "gecko":
|
||||||
|
SpecifiedValue::MozBlockHeight => dest.write_str("-moz-block-height"),
|
||||||
|
% endif
|
||||||
SpecifiedValue::LengthOrPercentage(value) => value.to_css(dest),
|
SpecifiedValue::LengthOrPercentage(value) => value.to_css(dest),
|
||||||
SpecifiedValue::Number(number) => write!(dest, "{}", number),
|
SpecifiedValue::Number(number) => write!(dest, "{}", number),
|
||||||
}
|
}
|
||||||
|
@ -42,6 +48,11 @@
|
||||||
Token::Ident(ref value) if value.eq_ignore_ascii_case("normal") => {
|
Token::Ident(ref value) if value.eq_ignore_ascii_case("normal") => {
|
||||||
Ok(SpecifiedValue::Normal)
|
Ok(SpecifiedValue::Normal)
|
||||||
}
|
}
|
||||||
|
% if product == "gecko":
|
||||||
|
Token::Ident(ref value) if value.eq_ignore_ascii_case("-moz-block-height") => {
|
||||||
|
Ok(SpecifiedValue::MozBlockHeight)
|
||||||
|
}
|
||||||
|
% endif
|
||||||
_ => Err(()),
|
_ => Err(()),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -53,6 +64,9 @@
|
||||||
#[derive(PartialEq, Copy, Clone, HeapSizeOf, Debug)]
|
#[derive(PartialEq, Copy, Clone, HeapSizeOf, Debug)]
|
||||||
pub enum T {
|
pub enum T {
|
||||||
Normal,
|
Normal,
|
||||||
|
% if product == "gecko":
|
||||||
|
MozBlockHeight,
|
||||||
|
% endif
|
||||||
Length(Au),
|
Length(Au),
|
||||||
Number(CSSFloat),
|
Number(CSSFloat),
|
||||||
}
|
}
|
||||||
|
@ -61,6 +75,9 @@
|
||||||
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
|
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
|
||||||
match *self {
|
match *self {
|
||||||
computed_value::T::Normal => dest.write_str("normal"),
|
computed_value::T::Normal => dest.write_str("normal"),
|
||||||
|
% if product == "gecko":
|
||||||
|
computed_value::T::MozBlockHeight => dest.write_str("-moz-block-height"),
|
||||||
|
% endif
|
||||||
computed_value::T::Length(length) => length.to_css(dest),
|
computed_value::T::Length(length) => length.to_css(dest),
|
||||||
computed_value::T::Number(number) => write!(dest, "{}", number),
|
computed_value::T::Number(number) => write!(dest, "{}", number),
|
||||||
}
|
}
|
||||||
|
@ -76,6 +93,9 @@
|
||||||
fn to_computed_value<Cx: TContext>(&self, context: &Cx) -> computed_value::T {
|
fn to_computed_value<Cx: TContext>(&self, context: &Cx) -> computed_value::T {
|
||||||
match *self {
|
match *self {
|
||||||
SpecifiedValue::Normal => computed_value::T::Normal,
|
SpecifiedValue::Normal => computed_value::T::Normal,
|
||||||
|
% if product == "gecko":
|
||||||
|
SpecifiedValue::MozBlockHeight => computed_value::T::MozBlockHeight,
|
||||||
|
% endif
|
||||||
SpecifiedValue::Number(value) => computed_value::T::Number(value),
|
SpecifiedValue::Number(value) => computed_value::T::Number(value),
|
||||||
SpecifiedValue::LengthOrPercentage(value) => {
|
SpecifiedValue::LengthOrPercentage(value) => {
|
||||||
match value {
|
match value {
|
||||||
|
|
|
@ -719,12 +719,29 @@ fn static_assert() {
|
||||||
</%self:impl_trait>
|
</%self:impl_trait>
|
||||||
|
|
||||||
<%self:impl_trait style_struct_name="InheritedText"
|
<%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 " +
|
<% text_align_keyword = Keyword("text-align", "start end left right center justify -moz-center -moz-left " +
|
||||||
"-moz-right match-parent") %>
|
"-moz-right match-parent") %>
|
||||||
<%call expr="impl_keyword('text_align', 'mTextAlign', text_align_keyword, need_clone=False)"></%call>
|
<%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>
|
||||||
|
|
||||||
<%self:impl_trait style_struct_name="Text"
|
<%self:impl_trait style_struct_name="Text"
|
||||||
|
|
|
@ -11,10 +11,12 @@ use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto, Leng
|
||||||
pub trait StyleCoordHelpers {
|
pub trait StyleCoordHelpers {
|
||||||
fn set<T: ToGeckoStyleCoord>(&mut self, val: T);
|
fn set<T: ToGeckoStyleCoord>(&mut self, val: T);
|
||||||
fn set_auto(&mut self);
|
fn set_auto(&mut self);
|
||||||
|
fn set_normal(&mut self);
|
||||||
fn set_coord(&mut self, val: Au);
|
fn set_coord(&mut self, val: Au);
|
||||||
fn set_int(&mut self, val: i32);
|
fn set_int(&mut self, val: i32);
|
||||||
fn set_enum(&mut self, val: i32);
|
fn set_enum(&mut self, val: i32);
|
||||||
fn set_percent(&mut self, val: f32);
|
fn set_percent(&mut self, val: f32);
|
||||||
|
fn set_factor(&mut self, val: f32);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StyleCoordHelpers for nsStyleCoord {
|
impl StyleCoordHelpers for nsStyleCoord {
|
||||||
|
@ -27,6 +29,11 @@ impl StyleCoordHelpers for nsStyleCoord {
|
||||||
unsafe { *self.mValue.mInt.as_mut() = 0; }
|
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) {
|
fn set_coord(&mut self, val: Au) {
|
||||||
self.mUnit = nsStyleUnit::eStyleUnit_Coord;
|
self.mUnit = nsStyleUnit::eStyleUnit_Coord;
|
||||||
unsafe { *self.mValue.mInt.as_mut() = val.0; }
|
unsafe { *self.mValue.mInt.as_mut() = val.0; }
|
||||||
|
@ -46,6 +53,11 @@ impl StyleCoordHelpers for nsStyleCoord {
|
||||||
self.mUnit = nsStyleUnit::eStyleUnit_Enumerated;
|
self.mUnit = nsStyleUnit::eStyleUnit_Enumerated;
|
||||||
unsafe { *self.mValue.mInt.as_mut() = val; }
|
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 {
|
pub trait ToGeckoStyleCoord {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue