svg.rs (2097B)
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 7 use crate::values::computed::color::Color; 8 use crate::values::computed::url::ComputedUrl; 9 use crate::values::computed::{LengthPercentage, NonNegativeLengthPercentage, Opacity}; 10 use crate::values::generics::svg as generic; 11 use crate::Zero; 12 13 pub use crate::values::specified::{DProperty, MozContextProperties, SVGPaintOrder, VectorEffect}; 14 15 /// Computed SVG Paint value 16 pub type SVGPaint = generic::GenericSVGPaint<Color, ComputedUrl>; 17 18 /// Computed SVG Paint Kind value 19 pub type SVGPaintKind = generic::GenericSVGPaintKind<Color, ComputedUrl>; 20 21 impl 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 30 pub type SVGLength = generic::GenericSVGLength<LengthPercentage>; 31 32 impl SVGLength { 33 /// `0px` 34 pub fn zero() -> Self { 35 generic::SVGLength::LengthPercentage(LengthPercentage::zero()) 36 } 37 } 38 39 /// An non-negative wrapper of SVGLength. 40 pub type SVGWidth = generic::GenericSVGLength<NonNegativeLengthPercentage>; 41 42 impl 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 51 pub type SVGStrokeDashArray = generic::GenericSVGStrokeDashArray<NonNegativeLengthPercentage>; 52 53 impl 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 60 pub type SVGOpacity = generic::GenericSVGOpacity<Opacity>; 61 62 impl Default for SVGOpacity { 63 fn default() -> Self { 64 generic::SVGOpacity::Opacity(1.) 65 } 66 }