skia_safe/modules/svg/
pattern.rs1use 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}