style/values/computed/
svg.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5//! Computed types for SVG properties.
6
7use crate::values::computed::color::Color;
8use crate::values::computed::url::ComputedUrl;
9use crate::values::computed::{LengthPercentage, NonNegativeLengthPercentage, Opacity};
10use crate::values::generics::svg as generic;
11use crate::Zero;
12
13pub use crate::values::specified::{DProperty, MozContextProperties, SVGPaintOrder, VectorEffect};
14
15/// Computed SVG Paint value
16pub type SVGPaint = generic::GenericSVGPaint<Color, ComputedUrl>;
17
18/// Computed SVG Paint Kind value
19pub type SVGPaintKind = generic::GenericSVGPaintKind<Color, ComputedUrl>;
20
21impl SVGPaint {
22    /// Opaque black color
23    pub const BLACK: Self = Self {
24        kind: generic::SVGPaintKind::Color(Color::BLACK),
25        fallback: generic::SVGPaintFallback::Unset,
26    };
27}
28
29/// <length> | <percentage> | <number> | context-value
30pub type SVGLength = generic::GenericSVGLength<LengthPercentage>;
31
32impl SVGLength {
33    /// `0px`
34    pub fn zero() -> Self {
35        generic::SVGLength::LengthPercentage(LengthPercentage::zero())
36    }
37}
38
39/// An non-negative wrapper of SVGLength.
40pub type SVGWidth = generic::GenericSVGLength<NonNegativeLengthPercentage>;
41
42impl SVGWidth {
43    /// `1px`.
44    pub fn one() -> Self {
45        use crate::values::generics::NonNegative;
46        generic::SVGLength::LengthPercentage(NonNegative(LengthPercentage::one()))
47    }
48}
49
50/// [ <length> | <percentage> | <number> ]# | context-value
51pub type SVGStrokeDashArray = generic::GenericSVGStrokeDashArray<NonNegativeLengthPercentage>;
52
53impl Default for SVGStrokeDashArray {
54    fn default() -> Self {
55        generic::SVGStrokeDashArray::Values(Default::default())
56    }
57}
58
59/// <opacity-value> | context-fill-opacity | context-stroke-opacity
60pub type SVGOpacity = generic::GenericSVGOpacity<Opacity>;
61
62impl Default for SVGOpacity {
63    fn default() -> Self {
64        generic::SVGOpacity::Opacity(1.)
65    }
66}