skia_safe/modules/svg/
gradient.rs1mod linear;
2mod radial;
3
4pub use self::{linear::Linear as LinearGradient, radial::Radial as RadialGradient};
5
6use super::{BoundingBoxUnits, DebugAttributes, Iri, NodeSubtype, SpreadMethod};
7use crate::{prelude::*, Matrix};
8use skia_bindings as sb;
9
10pub type Gradient = RCHandle<sb::SkSVGGradient>;
11
12impl NodeSubtype for sb::SkSVGGradient {
13 type Base = sb::SkSVGContainer;
14}
15
16impl DebugAttributes for Gradient {
17 const NAME: &'static str = "Gradient";
18
19 fn _dbg(&self, builder: &mut std::fmt::DebugStruct) {
20 self.as_base()._dbg(
21 builder
22 .field("href", self.href())
23 .field("gradient_transform", self.gradient_transform())
24 .field("spread_method", self.spread_method())
25 .field("gradient_units", self.gradient_units()),
26 );
27 }
28}
29
30impl Gradient {
31 skia_svg_macros::attrs! {
32 SkSVGGradient => {
33 href: Iri [get(value) => Iri::from_native_ref(value), set(value) => value.into_native()],
34 gradient_transform: Matrix [get(value) => Matrix::from_native_ref(value), set(value) => value.into_native()],
35 spread_method: SpreadMethod [get(value) => &value.fType, set(value) => sb::SkSVGSpreadMethod { fType: value }],
36 gradient_units: BoundingBoxUnits [get(value) => &value.fType, set(value) => sb::SkSVGObjectBoundingBoxUnits { fType: value }]
37 }
38 }
39}