gsk4/auto/
blend_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, BlendMode, RenderNode};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9    /// A render node applying a blending function between its two child nodes.
10    #[doc(alias = "GskBlendNode")]
11    pub struct BlendNode(Shared<ffi::GskBlendNode>);
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 BlendNode {
20    fn static_type() -> glib::Type {
21        unsafe { from_glib(ffi::gsk_blend_node_get_type()) }
22    }
23}
24
25impl BlendNode {
26    /// Creates a [`RenderNode`][crate::RenderNode] that will use @blend_mode to blend the @top
27    /// node onto the @bottom node.
28    /// ## `bottom`
29    /// The bottom node to be drawn
30    /// ## `top`
31    /// The node to be blended onto the @bottom node
32    /// ## `blend_mode`
33    /// The blend mode to use
34    ///
35    /// # Returns
36    ///
37    /// A new [`RenderNode`][crate::RenderNode]
38    #[doc(alias = "gsk_blend_node_new")]
39    pub fn new(
40        bottom: impl AsRef<RenderNode>,
41        top: impl AsRef<RenderNode>,
42        blend_mode: BlendMode,
43    ) -> BlendNode {
44        skip_assert_initialized!();
45        unsafe {
46            from_glib_full(ffi::gsk_blend_node_new(
47                bottom.as_ref().to_glib_none().0,
48                top.as_ref().to_glib_none().0,
49                blend_mode.into_glib(),
50            ))
51        }
52    }
53
54    /// Retrieves the blend mode used by @self.
55    ///
56    /// # Returns
57    ///
58    /// the blend mode
59    #[doc(alias = "gsk_blend_node_get_blend_mode")]
60    #[doc(alias = "get_blend_mode")]
61    pub fn blend_mode(&self) -> BlendMode {
62        unsafe { from_glib(ffi::gsk_blend_node_get_blend_mode(self.to_glib_none().0)) }
63    }
64
65    /// Retrieves the bottom [`RenderNode`][crate::RenderNode] child of the @self.
66    ///
67    /// # Returns
68    ///
69    /// the bottom child node
70    #[doc(alias = "gsk_blend_node_get_bottom_child")]
71    #[doc(alias = "get_bottom_child")]
72    pub fn bottom_child(&self) -> RenderNode {
73        unsafe { from_glib_none(ffi::gsk_blend_node_get_bottom_child(self.to_glib_none().0)) }
74    }
75
76    /// Retrieves the top [`RenderNode`][crate::RenderNode] child of the @self.
77    ///
78    /// # Returns
79    ///
80    /// the top child node
81    #[doc(alias = "gsk_blend_node_get_top_child")]
82    #[doc(alias = "get_top_child")]
83    pub fn top_child(&self) -> RenderNode {
84        unsafe { from_glib_none(ffi::gsk_blend_node_get_top_child(self.to_glib_none().0)) }
85    }
86}