skia_safe/modules/svg/
fe.rs

1mod blend;
2mod color_matrix;
3mod component_transfer;
4mod composite;
5mod displacement_map;
6mod flood;
7mod gaussian_blur;
8mod image;
9mod light_source;
10pub mod lighting;
11mod merge;
12pub mod morphology;
13mod offset;
14mod turbulence;
15mod types;
16
17pub use self::{
18    blend::*, color_matrix::*, component_transfer::*, composite::*, displacement_map::*, flood::*,
19    gaussian_blur::*, image::*, light_source::*, lighting::Diffuse as DiffuseLighting,
20    lighting::Lighting, lighting::Specular as SpecularLighting, merge::*, morphology::Morphology,
21    offset::*, turbulence::*, types::*,
22};
23
24use super::{DebugAttributes, Length, NodeSubtype};
25use crate::prelude::*;
26use skia_bindings as sb;
27
28pub type Fe = RCHandle<sb::SkSVGFe>;
29
30impl NodeSubtype for sb::SkSVGFe {
31    type Base = sb::SkSVGContainer;
32}
33
34impl DebugAttributes for Fe {
35    const NAME: &'static str = "Fe";
36
37    fn _dbg(&self, builder: &mut std::fmt::DebugStruct) {
38        self.as_base()._dbg(
39            builder
40                .field("input", self.input())
41                .field("result", self.result())
42                .field("x", &self.x())
43                .field("y", &self.y())
44                .field("width", &self.width())
45                .field("height", &self.height()),
46        );
47    }
48}
49
50impl Fe {
51    // TODO: Wrap IsFilterEffect (via typed)
52    // TODO: Wrap makeImageFilter()
53    // TODO: Wrap resolveFilterSubregion()
54    // TODO: Wrap resolveColorSpace()
55    // TODO: Wrap applyProperties()
56
57    skia_svg_macros::attrs! {
58        SkSVGFe => {
59            "in" as input: Input [get(value) => Input::from_native_ref(value), set(value) => value.into_native()],
60            result: crate::interop::String [get(value) => crate::interop::String::from_native_ref(value), set(value) => value.into_native()],
61            x?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
62            y?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
63            width?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()],
64            height?: Length [get(value) => value.map(Length::from_native_ref), set(value) => value.into_native()]
65        }
66    }
67}