mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
style: Define path() for clip-path.
For now, |clip-path: path()| is chrome-only, and not for shape-outside, so we only implement the parser for clip-path. Besides, I didn't put path() in BasicShape because path() doesn't use the reference box to resolve the percentage or keywords (i.e. SVG path only accept floating point or integer number as the css pixel value). Therefore, I add it into ShapeSource, instead of BasicShape. Differential Revision: https://phabricator.services.mozilla.com/D3633
This commit is contained in:
parent
a92f9c105a
commit
bb65d1fb6d
4 changed files with 143 additions and 29 deletions
|
@ -12,6 +12,7 @@ use values::distance::{ComputeSquaredDistance, SquaredDistance};
|
|||
use values::generics::border::BorderRadius;
|
||||
use values::generics::position::Position;
|
||||
use values::generics::rect::Rect;
|
||||
use values::specified::SVGPathData;
|
||||
|
||||
/// A clipping shape, for `clip-path`.
|
||||
pub type ClippingShape<BasicShape, Url> = ShapeSource<BasicShape, GeometryBox, Url>;
|
||||
|
@ -54,6 +55,9 @@ pub enum ShapeSource<BasicShape, ReferenceBox, ImageOrUrl> {
|
|||
#[animation(error)]
|
||||
Box(ReferenceBox),
|
||||
#[animation(error)]
|
||||
#[css(function)]
|
||||
Path(Path),
|
||||
#[animation(error)]
|
||||
None,
|
||||
}
|
||||
|
||||
|
@ -144,6 +148,19 @@ pub enum FillRule {
|
|||
Evenodd,
|
||||
}
|
||||
|
||||
/// The path function defined in css-shape-2.
|
||||
///
|
||||
/// https://drafts.csswg.org/css-shapes-2/#funcdef-path
|
||||
#[css(comma)]
|
||||
#[derive(Clone, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss)]
|
||||
pub struct Path {
|
||||
/// The filling rule for the svg path.
|
||||
#[css(skip_if = "fill_is_default")]
|
||||
pub fill: FillRule,
|
||||
/// The svg path data.
|
||||
pub path: SVGPathData,
|
||||
}
|
||||
|
||||
// FIXME(nox): Implement ComputeSquaredDistance for T types and stop
|
||||
// using PartialEq here, this will let us derive this impl.
|
||||
impl<B, T, U> ComputeSquaredDistance for ShapeSource<B, T, U>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue