mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
stylo: Refactor generic font handling into a method
This commit is contained in:
parent
7e273d6c9b
commit
6dbca89ff5
2 changed files with 46 additions and 23 deletions
|
@ -221,6 +221,9 @@ impl ${style_struct.gecko_struct_name} {
|
|||
pub fn gecko(&self) -> &${style_struct.gecko_ffi_name} {
|
||||
&self.gecko
|
||||
}
|
||||
pub fn gecko_mut(&mut self) -> &mut ${style_struct.gecko_ffi_name} {
|
||||
&mut self.gecko
|
||||
}
|
||||
}
|
||||
</%def>
|
||||
|
||||
|
@ -1587,7 +1590,6 @@ fn static_assert() {
|
|||
|
||||
pub fn set_font_family(&mut self, v: longhands::font_family::computed_value::T) {
|
||||
use properties::longhands::font_family::computed_value::FontFamily;
|
||||
use gecko_bindings::structs::FontFamilyType;
|
||||
|
||||
let list = &mut self.gecko.mFont.fontlist;
|
||||
unsafe { Gecko_FontFamilyList_Clear(list); }
|
||||
|
@ -1600,28 +1602,7 @@ fn static_assert() {
|
|||
unsafe { Gecko_FontFamilyList_AppendNamed(list, f.name.as_ptr(), f.quoted); }
|
||||
}
|
||||
FontFamily::Generic(ref name) => {
|
||||
let (family_type, generic) =
|
||||
if name == &atom!("serif") {
|
||||
(FontFamilyType::eFamily_serif,
|
||||
structs::kGenericFont_serif)
|
||||
} else if name == &atom!("sans-serif") {
|
||||
(FontFamilyType::eFamily_sans_serif,
|
||||
structs::kGenericFont_sans_serif)
|
||||
} else if name == &atom!("cursive") {
|
||||
(FontFamilyType::eFamily_cursive,
|
||||
structs::kGenericFont_cursive)
|
||||
} else if name == &atom!("fantasy") {
|
||||
(FontFamilyType::eFamily_fantasy,
|
||||
structs::kGenericFont_fantasy)
|
||||
} else if name == &atom!("monospace") {
|
||||
(FontFamilyType::eFamily_monospace,
|
||||
structs::kGenericFont_monospace)
|
||||
} else if name == &atom!("-moz-fixed") {
|
||||
(FontFamilyType::eFamily_moz_fixed,
|
||||
structs::kGenericFont_moz_fixed)
|
||||
} else {
|
||||
panic!("Unknown generic font family")
|
||||
};
|
||||
let (family_type, generic) = FontFamily::generic(name);
|
||||
if v.0.len() == 1 {
|
||||
self.gecko.mGenericID = generic;
|
||||
}
|
||||
|
|
|
@ -191,6 +191,33 @@
|
|||
quoted: false,
|
||||
}))
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
/// Return the generic ID for a given generic font name
|
||||
pub fn generic(name: &Atom) -> (::gecko_bindings::structs::FontFamilyType, u8) {
|
||||
use gecko_bindings::structs::{self, FontFamilyType};
|
||||
if *name == atom!("serif") {
|
||||
(FontFamilyType::eFamily_serif,
|
||||
structs::kGenericFont_serif)
|
||||
} else if *name == atom!("sans-serif") {
|
||||
(FontFamilyType::eFamily_sans_serif,
|
||||
structs::kGenericFont_sans_serif)
|
||||
} else if *name == atom!("cursive") {
|
||||
(FontFamilyType::eFamily_cursive,
|
||||
structs::kGenericFont_cursive)
|
||||
} else if *name == atom!("fantasy") {
|
||||
(FontFamilyType::eFamily_fantasy,
|
||||
structs::kGenericFont_fantasy)
|
||||
} else if *name == atom!("monospace") {
|
||||
(FontFamilyType::eFamily_monospace,
|
||||
structs::kGenericFont_monospace)
|
||||
} else if *name == atom!("-moz-fixed") {
|
||||
(FontFamilyType::eFamily_moz_fixed,
|
||||
structs::kGenericFont_moz_fixed)
|
||||
} else {
|
||||
panic!("Unknown generic {}", name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for FamilyName {
|
||||
|
@ -260,6 +287,21 @@
|
|||
System(SystemFont),
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl SpecifiedValue {
|
||||
/// Return the generic ID if it is a single generic font
|
||||
pub fn single_generic(&self) -> Option<u8> {
|
||||
if let SpecifiedValue::Values(ref values) = *self {
|
||||
if values.len() == 1 {
|
||||
if let FontFamily::Generic(ref name) = values[0] {
|
||||
return Some(FontFamily::generic(name).1);
|
||||
}
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
impl ToComputedValue for SpecifiedValue {
|
||||
type ComputedValue = computed_value::T;
|
||||
fn to_computed_value(&self, _cx: &Context) -> Self::ComputedValue {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue