mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Auto merge of #19051 - CYBAI:moz-script-min-size-no-mako, r=emilio,canaltinova
style: Move font -moz-script-min-size outside of mako This is a sub-PR for #19015 r? emilio --- - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #19034 (github issue number if applicable). - [X] These changes do not require tests because _____ <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19051) <!-- Reviewable:end -->
This commit is contained in:
commit
10227e3cd2
6 changed files with 64 additions and 56 deletions
|
@ -1119,6 +1119,7 @@ impl Clone for ${style_struct.gecko_struct_name} {
|
||||||
"LengthOrNormal": impl_style_coord,
|
"LengthOrNormal": impl_style_coord,
|
||||||
"MaxLength": impl_style_coord,
|
"MaxLength": impl_style_coord,
|
||||||
"MozLength": impl_style_coord,
|
"MozLength": impl_style_coord,
|
||||||
|
"MozScriptMinSize": impl_absolute_length,
|
||||||
"NonNegativeLengthOrPercentage": impl_style_coord,
|
"NonNegativeLengthOrPercentage": impl_style_coord,
|
||||||
"NonNegativeNumber": impl_simple,
|
"NonNegativeNumber": impl_simple,
|
||||||
"Number": impl_simple,
|
"Number": impl_simple,
|
||||||
|
|
|
@ -2187,57 +2187,14 @@ ${helpers.single_keyword("-moz-math-variant",
|
||||||
animation_value_type="none",
|
animation_value_type="none",
|
||||||
needs_conversion=True)}
|
needs_conversion=True)}
|
||||||
|
|
||||||
<%helpers:longhand name="-moz-script-min-size" products="gecko" animation_value_type="none"
|
${helpers.predefined_type("-moz-script-min-size",
|
||||||
predefined_type="Length" gecko_ffi_name="mScriptMinSize"
|
"MozScriptMinSize",
|
||||||
spec="Internal (not web-exposed)"
|
"specified::MozScriptMinSize::get_initial_value()",
|
||||||
internal="True">
|
animation_value_type="none",
|
||||||
use gecko_bindings::structs::NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT;
|
products="gecko",
|
||||||
use values::computed::Length;
|
internal=True,
|
||||||
use values::specified::length::{AU_PER_PT, AU_PER_PX, FontBaseSize, NoCalcLength};
|
gecko_ffi_name="mScriptMinSize",
|
||||||
|
spec="Internal (not web-exposed)")}
|
||||||
#[cfg_attr(feature = "gecko", derive(MallocSizeOf))]
|
|
||||||
#[derive(Clone, Debug, PartialEq, ToCss)]
|
|
||||||
pub struct SpecifiedValue(pub NoCalcLength);
|
|
||||||
|
|
||||||
pub mod computed_value {
|
|
||||||
pub type T = ::values::computed::Length;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ToComputedValue for SpecifiedValue {
|
|
||||||
type ComputedValue = computed_value::T;
|
|
||||||
|
|
||||||
fn to_computed_value(&self, cx: &Context) -> Length {
|
|
||||||
// this value is used in the computation of font-size, so
|
|
||||||
// we use the parent size
|
|
||||||
let base_size = FontBaseSize::InheritedStyle;
|
|
||||||
match self.0 {
|
|
||||||
NoCalcLength::FontRelative(value) => {
|
|
||||||
value.to_computed_value(cx, base_size)
|
|
||||||
}
|
|
||||||
NoCalcLength::ServoCharacterWidth(value) => {
|
|
||||||
value.to_computed_value(base_size.resolve(cx))
|
|
||||||
}
|
|
||||||
ref l => {
|
|
||||||
l.to_computed_value(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fn from_computed_value(other: &computed_value::T) -> Self {
|
|
||||||
SpecifiedValue(ToComputedValue::from_computed_value(other))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn get_initial_value() -> computed_value::T {
|
|
||||||
Length::new(NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT as f32 * (AU_PER_PT / AU_PER_PX))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>)
|
|
||||||
-> Result<SpecifiedValue, ParseError<'i>> {
|
|
||||||
debug_assert!(false, "Should be set directly by presentation attributes only.");
|
|
||||||
Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError))
|
|
||||||
}
|
|
||||||
</%helpers:longhand>
|
|
||||||
|
|
||||||
${helpers.predefined_type("-x-text-zoom",
|
${helpers.predefined_type("-x-text-zoom",
|
||||||
"XTextZoom",
|
"XTextZoom",
|
||||||
|
|
|
@ -8,9 +8,11 @@ use app_units::Au;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use style_traits::ToCss;
|
use style_traits::ToCss;
|
||||||
use values::animated::ToAnimatedValue;
|
use values::animated::ToAnimatedValue;
|
||||||
use values::computed::NonNegativeLength;
|
use values::computed::{Context, NonNegativeLength, ToComputedValue};
|
||||||
use values::specified::font as specified;
|
use values::specified::font as specified;
|
||||||
|
use values::specified::length::{FontBaseSize, NoCalcLength};
|
||||||
|
|
||||||
|
pub use values::computed::Length as MozScriptMinSize;
|
||||||
pub use values::specified::font::XTextZoom;
|
pub use values::specified::font::XTextZoom;
|
||||||
|
|
||||||
#[derive(Animate, ComputeSquaredDistance, MallocSizeOf, ToAnimatedZero)]
|
#[derive(Animate, ComputeSquaredDistance, MallocSizeOf, ToAnimatedZero)]
|
||||||
|
@ -94,3 +96,28 @@ impl ToAnimatedValue for FontSize {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ToComputedValue for specified::MozScriptMinSize {
|
||||||
|
type ComputedValue = MozScriptMinSize;
|
||||||
|
|
||||||
|
fn to_computed_value(&self, cx: &Context) -> MozScriptMinSize {
|
||||||
|
// this value is used in the computation of font-size, so
|
||||||
|
// we use the parent size
|
||||||
|
let base_size = FontBaseSize::InheritedStyle;
|
||||||
|
match self.0 {
|
||||||
|
NoCalcLength::FontRelative(value) => {
|
||||||
|
value.to_computed_value(cx, base_size)
|
||||||
|
}
|
||||||
|
NoCalcLength::ServoCharacterWidth(value) => {
|
||||||
|
value.to_computed_value(base_size.resolve(cx))
|
||||||
|
}
|
||||||
|
ref l => {
|
||||||
|
l.to_computed_value(cx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_computed_value(other: &MozScriptMinSize) -> Self {
|
||||||
|
specified::MozScriptMinSize(ToComputedValue::from_computed_value(other))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ pub use self::angle::Angle;
|
||||||
pub use self::background::{BackgroundSize, BackgroundRepeat};
|
pub use self::background::{BackgroundSize, BackgroundRepeat};
|
||||||
pub use self::border::{BorderImageSlice, BorderImageWidth, BorderImageSideWidth};
|
pub use self::border::{BorderImageSlice, BorderImageWidth, BorderImageSideWidth};
|
||||||
pub use self::border::{BorderRadius, BorderCornerRadius, BorderSpacing};
|
pub use self::border::{BorderRadius, BorderCornerRadius, BorderSpacing};
|
||||||
pub use self::font::XTextZoom;
|
pub use self::font::{XTextZoom, MozScriptMinSize};
|
||||||
pub use self::box_::{AnimationIterationCount, AnimationName, ScrollSnapType, VerticalAlign};
|
pub use self::box_::{AnimationIterationCount, AnimationName, ScrollSnapType, VerticalAlign};
|
||||||
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
||||||
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
||||||
|
|
|
@ -12,9 +12,11 @@ use parser::{Parse, ParserContext};
|
||||||
use properties::longhands::system_font::SystemFont;
|
use properties::longhands::system_font::SystemFont;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use style_traits::{ToCss, StyleParseErrorKind, ParseError};
|
use style_traits::{ToCss, StyleParseErrorKind, ParseError};
|
||||||
use values::computed::{font as computed, Context, NonNegativeLength, ToComputedValue};
|
use values::computed::{font as computed, Context, Length, NonNegativeLength, ToComputedValue};
|
||||||
use values::specified::{LengthOrPercentage, NoCalcLength};
|
use values::specified::{LengthOrPercentage, NoCalcLength};
|
||||||
use values::specified::length::FontBaseSize;
|
use values::specified::length::{AU_PER_PT, AU_PER_PX, FontBaseSize};
|
||||||
|
|
||||||
|
const DEFAULT_SCRIPT_MIN_SIZE_PT: u32 = 8;
|
||||||
|
|
||||||
#[derive(Clone, Debug, MallocSizeOf, PartialEq)]
|
#[derive(Clone, Debug, MallocSizeOf, PartialEq)]
|
||||||
/// A specified font-size value
|
/// A specified font-size value
|
||||||
|
@ -391,3 +393,24 @@ impl ToCss for XTextZoom {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "gecko", derive(MallocSizeOf))]
|
||||||
|
#[derive(Clone, Debug, PartialEq, ToCss)]
|
||||||
|
/// Specifies the minimum font size allowed due to changes in scriptlevel.
|
||||||
|
/// Ref: https://wiki.mozilla.org/MathML:mstyle
|
||||||
|
pub struct MozScriptMinSize(pub NoCalcLength);
|
||||||
|
|
||||||
|
impl MozScriptMinSize {
|
||||||
|
#[inline]
|
||||||
|
/// Calculate initial value of -moz-script-min-size.
|
||||||
|
pub fn get_initial_value() -> Length {
|
||||||
|
Length::new(DEFAULT_SCRIPT_MIN_SIZE_PT as f32 * (AU_PER_PT / AU_PER_PX))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Parse for MozScriptMinSize {
|
||||||
|
fn parse<'i, 't>(_: &ParserContext, input: &mut Parser<'i, 't>) -> Result<MozScriptMinSize, ParseError<'i>> {
|
||||||
|
debug_assert!(false, "Should be set directly by presentation attributes only.");
|
||||||
|
Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ pub use self::align::{AlignItems, AlignJustifyContent, AlignJustifySelf, Justify
|
||||||
pub use self::background::{BackgroundRepeat, BackgroundSize};
|
pub use self::background::{BackgroundRepeat, BackgroundSize};
|
||||||
pub use self::border::{BorderCornerRadius, BorderImageSlice, BorderImageWidth};
|
pub use self::border::{BorderCornerRadius, BorderImageSlice, BorderImageWidth};
|
||||||
pub use self::border::{BorderImageSideWidth, BorderRadius, BorderSideWidth, BorderSpacing};
|
pub use self::border::{BorderImageSideWidth, BorderRadius, BorderSideWidth, BorderSpacing};
|
||||||
pub use self::font::XTextZoom;
|
pub use self::font::{XTextZoom, MozScriptMinSize};
|
||||||
pub use self::box_::{AnimationIterationCount, AnimationName, ScrollSnapType, VerticalAlign};
|
pub use self::box_::{AnimationIterationCount, AnimationName, ScrollSnapType, VerticalAlign};
|
||||||
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
||||||
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue