mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
style: Support offset-anchor.
Differential Revision: https://phabricator.services.mozilla.com/D39432
This commit is contained in:
parent
e04273a4d9
commit
33690b9eaf
6 changed files with 57 additions and 2 deletions
|
@ -421,6 +421,19 @@ ${helpers.predefined_type(
|
||||||
servo_restyle_damage="reflow_out_of_flow"
|
servo_restyle_damage="reflow_out_of_flow"
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
// Motion Path Module Level 1
|
||||||
|
${helpers.predefined_type(
|
||||||
|
"offset-anchor",
|
||||||
|
"PositionOrAuto",
|
||||||
|
"computed::PositionOrAuto::auto()",
|
||||||
|
engines="gecko",
|
||||||
|
animation_value_type="none",
|
||||||
|
gecko_pref="layout.css.motion-path.enabled",
|
||||||
|
spec="https://drafts.fxtf.org/motion-1/#offset-anchor-property",
|
||||||
|
servo_restyle_damage="reflow_out_of_flow",
|
||||||
|
boxed=True
|
||||||
|
)}
|
||||||
|
|
||||||
// CSSOM View Module
|
// CSSOM View Module
|
||||||
// https://www.w3.org/TR/cssom-view-1/
|
// https://www.w3.org/TR/cssom-view-1/
|
||||||
${helpers.single_keyword(
|
${helpers.single_keyword(
|
||||||
|
|
|
@ -68,7 +68,7 @@ pub use self::list::Quotes;
|
||||||
pub use self::motion::{OffsetPath, OffsetRotate};
|
pub use self::motion::{OffsetPath, OffsetRotate};
|
||||||
pub use self::outline::OutlineStyle;
|
pub use self::outline::OutlineStyle;
|
||||||
pub use self::percentage::{NonNegativePercentage, Percentage};
|
pub use self::percentage::{NonNegativePercentage, Percentage};
|
||||||
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position, ZIndex};
|
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position, PositionOrAuto, ZIndex};
|
||||||
pub use self::rect::NonNegativeLengthOrNumberRect;
|
pub use self::rect::NonNegativeLengthOrNumberRect;
|
||||||
pub use self::resolution::Resolution;
|
pub use self::resolution::Resolution;
|
||||||
pub use self::svg::MozContextProperties;
|
pub use self::svg::MozContextProperties;
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
use crate::values::computed::{Integer, LengthPercentage, Percentage};
|
use crate::values::computed::{Integer, LengthPercentage, Percentage};
|
||||||
use crate::values::generics::position::Position as GenericPosition;
|
use crate::values::generics::position::Position as GenericPosition;
|
||||||
|
use crate::values::generics::position::PositionOrAuto as GenericPositionOrAuto;
|
||||||
use crate::values::generics::position::ZIndex as GenericZIndex;
|
use crate::values::generics::position::ZIndex as GenericZIndex;
|
||||||
pub use crate::values::specified::position::{GridAutoFlow, GridTemplateAreas};
|
pub use crate::values::specified::position::{GridAutoFlow, GridTemplateAreas};
|
||||||
use crate::Zero;
|
use crate::Zero;
|
||||||
|
@ -18,6 +19,9 @@ use style_traits::{CssWriter, ToCss};
|
||||||
/// The computed value of a CSS `<position>`
|
/// The computed value of a CSS `<position>`
|
||||||
pub type Position = GenericPosition<HorizontalPosition, VerticalPosition>;
|
pub type Position = GenericPosition<HorizontalPosition, VerticalPosition>;
|
||||||
|
|
||||||
|
/// The computed value of an `auto | <position>`
|
||||||
|
pub type PositionOrAuto = GenericPositionOrAuto<Position>;
|
||||||
|
|
||||||
/// The computed value of a CSS horizontal position.
|
/// The computed value of a CSS horizontal position.
|
||||||
pub type HorizontalPosition = LengthPercentage;
|
pub type HorizontalPosition = LengthPercentage;
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,40 @@ impl<H, V> Position<H, V> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A generic type for representing an `Auto | <position>`.
|
||||||
|
/// This is used by <offset-anchor> for now.
|
||||||
|
/// https://drafts.fxtf.org/motion-1/#offset-anchor-property
|
||||||
|
#[derive(
|
||||||
|
Clone,
|
||||||
|
Copy,
|
||||||
|
Debug,
|
||||||
|
MallocSizeOf,
|
||||||
|
Parse,
|
||||||
|
PartialEq,
|
||||||
|
SpecifiedValueInfo,
|
||||||
|
ToComputedValue,
|
||||||
|
ToCss,
|
||||||
|
ToResolvedValue,
|
||||||
|
ToShmem,
|
||||||
|
)]
|
||||||
|
#[repr(C, u8)]
|
||||||
|
pub enum GenericPositionOrAuto<Pos> {
|
||||||
|
/// The <position> value.
|
||||||
|
Position(Pos),
|
||||||
|
/// The keyword `auto`.
|
||||||
|
Auto,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub use self::GenericPositionOrAuto as PositionOrAuto;
|
||||||
|
|
||||||
|
impl<Pos> PositionOrAuto<Pos> {
|
||||||
|
/// Return `auto`.
|
||||||
|
#[inline]
|
||||||
|
pub fn auto() -> Self {
|
||||||
|
PositionOrAuto::Auto
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A generic value for the `z-index` property.
|
/// A generic value for the `z-index` property.
|
||||||
#[derive(
|
#[derive(
|
||||||
Animate,
|
Animate,
|
||||||
|
|
|
@ -69,7 +69,7 @@ pub use self::list::Quotes;
|
||||||
pub use self::motion::{OffsetPath, OffsetRotate};
|
pub use self::motion::{OffsetPath, OffsetRotate};
|
||||||
pub use self::outline::OutlineStyle;
|
pub use self::outline::OutlineStyle;
|
||||||
pub use self::percentage::Percentage;
|
pub use self::percentage::Percentage;
|
||||||
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position};
|
pub use self::position::{GridAutoFlow, GridTemplateAreas, Position, PositionOrAuto};
|
||||||
pub use self::position::{PositionComponent, ZIndex};
|
pub use self::position::{PositionComponent, ZIndex};
|
||||||
pub use self::rect::NonNegativeLengthOrNumberRect;
|
pub use self::rect::NonNegativeLengthOrNumberRect;
|
||||||
pub use self::resolution::Resolution;
|
pub use self::resolution::Resolution;
|
||||||
|
|
|
@ -13,6 +13,7 @@ use crate::str::HTML_SPACE_CHARACTERS;
|
||||||
use crate::values::computed::LengthPercentage as ComputedLengthPercentage;
|
use crate::values::computed::LengthPercentage as ComputedLengthPercentage;
|
||||||
use crate::values::computed::{Context, Percentage, ToComputedValue};
|
use crate::values::computed::{Context, Percentage, ToComputedValue};
|
||||||
use crate::values::generics::position::Position as GenericPosition;
|
use crate::values::generics::position::Position as GenericPosition;
|
||||||
|
use crate::values::generics::position::PositionOrAuto as GenericPositionOrAuto;
|
||||||
use crate::values::generics::position::ZIndex as GenericZIndex;
|
use crate::values::generics::position::ZIndex as GenericZIndex;
|
||||||
use crate::values::specified::{AllowQuirks, Integer, LengthPercentage};
|
use crate::values::specified::{AllowQuirks, Integer, LengthPercentage};
|
||||||
use crate::Atom;
|
use crate::Atom;
|
||||||
|
@ -26,6 +27,9 @@ use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss};
|
||||||
/// The specified value of a CSS `<position>`
|
/// The specified value of a CSS `<position>`
|
||||||
pub type Position = GenericPosition<HorizontalPosition, VerticalPosition>;
|
pub type Position = GenericPosition<HorizontalPosition, VerticalPosition>;
|
||||||
|
|
||||||
|
/// The specified value of an `auto | <position>`.
|
||||||
|
pub type PositionOrAuto = GenericPositionOrAuto<Position>;
|
||||||
|
|
||||||
/// The specified value of a horizontal position.
|
/// The specified value of a horizontal position.
|
||||||
pub type HorizontalPosition = PositionComponent<HorizontalPositionKeyword>;
|
pub type HorizontalPosition = PositionComponent<HorizontalPositionKeyword>;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue