skia_safe/modules/svg/
pattern.rs

1use super::{DebugAttributes, Iri, Length, NodeSubtype};
2use crate::{impl_default_make, prelude::*, Matrix};
3use skia_bindings as sb;
4
5pub type Pattern = RCHandle<sb::SkSVGPattern>;
6
7impl NodeSubtype for sb::SkSVGPattern {
8    type Base = sb::SkSVGContainer;
9}
10
11impl_default_make!(Pattern, sb::C_SkSVGPattern_Make);
12
13impl DebugAttributes for Pattern {
14    const NAME: &'static str = "Pattern";
15
16    fn _dbg(&self, builder: &mut std::fmt::DebugStruct) {
17        self.as_base()._dbg(builder);
18
19        builder
20            .field("href", &self.href())
21            .field("x", &self.x())
22            .field("y", &self.y())
23            .field("width", &self.width())
24            .field("height", &self.height())
25            .field("pattern_transform", &self.pattern_transform());
26    }
27}
28
29impl Pattern {
30    skia_svg_macros::attrs! {
31        SkSVGPattern => {
32            href: Iri [get(value) => Iri::from_native_ref(value), set(value) => value.into_native()],
33            x?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
34            y?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
35            width?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
36            height?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
37            pattern_transform?: Matrix [get(value) => value.map(Matrix::from_native_ref), set(value) => value.into_native()]
38        }
39    }
40}