gsk4/auto/
mask_node.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::{ffi, MaskMode, RenderNode};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9    /// A render node masking one child node with another.
10    #[doc(alias = "GskMaskNode")]
11    pub struct MaskNode(Shared<ffi::GskMaskNode>);
12
13    match fn {
14        ref => |ptr| ffi::gsk_render_node_ref(ptr as *mut ffi::GskRenderNode),
15        unref => |ptr| ffi::gsk_render_node_unref(ptr as *mut ffi::GskRenderNode),
16    }
17}
18
19impl StaticType for MaskNode {
20    fn static_type() -> glib::Type {
21        unsafe { from_glib(ffi::gsk_mask_node_get_type()) }
22    }
23}
24
25impl MaskNode {
26    /// Creates a [`RenderNode`][crate::RenderNode] that will mask a given node by another.
27    ///
28    /// The @mask_mode determines how the 'mask values' are derived from
29    /// the colors of the @mask. Applying the mask consists of multiplying
30    /// the 'mask value' with the alpha of the source.
31    /// ## `source`
32    /// The source node to be drawn
33    /// ## `mask`
34    /// The node to be used as mask
35    /// ## `mask_mode`
36    /// The mask mode to use
37    ///
38    /// # Returns
39    ///
40    /// A new [`RenderNode`][crate::RenderNode]
41    #[doc(alias = "gsk_mask_node_new")]
42    pub fn new(
43        source: impl AsRef<RenderNode>,
44        mask: impl AsRef<RenderNode>,
45        mask_mode: MaskMode,
46    ) -> MaskNode {
47        skip_assert_initialized!();
48        unsafe {
49            from_glib_full(ffi::gsk_mask_node_new(
50                source.as_ref().to_glib_none().0,
51                mask.as_ref().to_glib_none().0,
52                mask_mode.into_glib(),
53            ))
54        }
55    }
56
57    /// Retrieves the mask [`RenderNode`][crate::RenderNode] child of the @self.
58    ///
59    /// # Returns
60    ///
61    /// the mask child node
62    #[doc(alias = "gsk_mask_node_get_mask")]
63    #[doc(alias = "get_mask")]
64    pub fn mask(&self) -> RenderNode {
65        unsafe { from_glib_none(ffi::gsk_mask_node_get_mask(self.to_glib_none().0)) }
66    }
67
68    /// Retrieves the mask mode used by @self.
69    ///
70    /// # Returns
71    ///
72    /// the mask mode
73    #[doc(alias = "gsk_mask_node_get_mask_mode")]
74    #[doc(alias = "get_mask_mode")]
75    pub fn mask_mode(&self) -> MaskMode {
76        unsafe { from_glib(ffi::gsk_mask_node_get_mask_mode(self.to_glib_none().0)) }
77    }
78
79    /// Retrieves the source [`RenderNode`][crate::RenderNode] child of the @self.
80    ///
81    /// # Returns
82    ///
83    /// the source child node
84    #[doc(alias = "gsk_mask_node_get_source")]
85    #[doc(alias = "get_source")]
86    pub fn source(&self) -> RenderNode {
87        unsafe { from_glib_none(ffi::gsk_mask_node_get_source(self.to_glib_none().0)) }
88    }
89}