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"
|
||||
)}
|
||||
|
||||
// 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
|
||||
// https://www.w3.org/TR/cssom-view-1/
|
||||
${helpers.single_keyword(
|
||||
|
|
|
@ -68,7 +68,7 @@ pub use self::list::Quotes;
|
|||
pub use self::motion::{OffsetPath, OffsetRotate};
|
||||
pub use self::outline::OutlineStyle;
|
||||
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::resolution::Resolution;
|
||||
pub use self::svg::MozContextProperties;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
use crate::values::computed::{Integer, LengthPercentage, Percentage};
|
||||
use crate::values::generics::position::Position as GenericPosition;
|
||||
use crate::values::generics::position::PositionOrAuto as GenericPositionOrAuto;
|
||||
use crate::values::generics::position::ZIndex as GenericZIndex;
|
||||
pub use crate::values::specified::position::{GridAutoFlow, GridTemplateAreas};
|
||||
use crate::Zero;
|
||||
|
@ -18,6 +19,9 @@ use style_traits::{CssWriter, ToCss};
|
|||
/// The computed value of a CSS `<position>`
|
||||
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.
|
||||
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.
|
||||
#[derive(
|
||||
Animate,
|
||||
|
|
|
@ -69,7 +69,7 @@ pub use self::list::Quotes;
|
|||
pub use self::motion::{OffsetPath, OffsetRotate};
|
||||
pub use self::outline::OutlineStyle;
|
||||
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::rect::NonNegativeLengthOrNumberRect;
|
||||
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::{Context, Percentage, ToComputedValue};
|
||||
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::specified::{AllowQuirks, Integer, LengthPercentage};
|
||||
use crate::Atom;
|
||||
|
@ -26,6 +27,9 @@ use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss};
|
|||
/// The specified value of a CSS `<position>`
|
||||
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.
|
||||
pub type HorizontalPosition = PositionComponent<HorizontalPositionKeyword>;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue