skia_safe/modules/svg/fe/
component_transfer.rs1use super::{DebugAttributes, NodeSubtype};
2use crate::{impl_default_make, prelude::*, scalar};
3use skia_bindings as sb;
4
5pub type FuncKind = sb::SkSVGFeFuncType;
6variant_name!(FuncKind::Identity);
7
8pub type Func = RCHandle<sb::SkSVGFeFunc>;
9
10impl NodeSubtype for sb::SkSVGFeFunc {
11 type Base = sb::SkSVGFe;
12}
13
14impl DebugAttributes for Func {
15 const NAME: &'static str = "FeFunc";
16
17 fn _dbg(&self, builder: &mut std::fmt::DebugStruct) {
18 self.as_base()._dbg(
19 builder
20 .field("amplitude", &self.amplitude())
21 .field("exponent", &self.exponent())
22 .field("intercept", &self.intercept())
23 .field("offset", &self.offset())
24 .field("slope", &self.slope())
25 .field("table_values", &self.table_values())
26 .field("kind", self.kind()),
27 );
28 }
29}
30
31impl Func {
32 pub fn func_a() -> Self {
33 Self::from_ptr(unsafe { sb::C_SkSVGFeFunc_MakeFuncA() }).unwrap()
34 }
35
36 pub fn func_r() -> Self {
37 Self::from_ptr(unsafe { sb::C_SkSVGFeFunc_MakeFuncR() }).unwrap()
38 }
39
40 pub fn func_g() -> Self {
41 Self::from_ptr(unsafe { sb::C_SkSVGFeFunc_MakeFuncG() }).unwrap()
42 }
43
44 pub fn func_b() -> Self {
45 Self::from_ptr(unsafe { sb::C_SkSVGFeFunc_MakeFuncB() }).unwrap()
46 }
47
48 pub fn table_values(&self) -> &[scalar] {
49 unsafe {
50 safer::from_raw_parts(
51 sb::C_SkSVGFeFunc_getTableValues(self.native()),
52 sb::C_SkSVGFeFunc_getTableValuesCount(self.native()),
53 )
54 }
55 }
56
57 skia_svg_macros::attrs! {
60 SkSVGFeFunc => {
61 *amplitude: scalar [get(value) => value, set(value) => value],
62 *exponent: scalar [get(value) => value, set(value) => value],
63 *intercept: scalar [get(value) => value, set(value) => value],
64 *offset: scalar [get(value) => value, set(value) => value],
65 *slope: scalar [get(value) => value, set(value) => value],
66 "type" as kind: FuncKind [get(value) => value, set(value) => value]
67 }
68 }
69}
70
71pub type ComponentTransfer = RCHandle<sb::SkSVGFeComponentTransfer>;
72
73impl NodeSubtype for sb::SkSVGFeComponentTransfer {
74 type Base = sb::SkSVGFe;
75}
76
77impl_default_make!(ComponentTransfer, sb::C_SkSVGFeComponentTransfer_Make);
78
79impl DebugAttributes for ComponentTransfer {
80 const NAME: &'static str = "FeComponentTransfer";
81
82 fn _dbg(&self, builder: &mut std::fmt::DebugStruct) {
83 self.as_base()._dbg(builder);
84 }
85}