gsk4/auto/
render_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, RenderNodeType};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9    #[doc(alias = "GskRenderNode")]
10    pub struct RenderNode(Shared<ffi::GskRenderNode>);
11
12    match fn {
13        ref => |ptr| ffi::gsk_render_node_ref(ptr),
14        unref => |ptr| ffi::gsk_render_node_unref(ptr),
15    }
16}
17
18impl StaticType for RenderNode {
19    fn static_type() -> glib::Type {
20        unsafe { from_glib(ffi::gsk_render_node_get_type()) }
21    }
22}
23
24impl RenderNode {
25    pub const NONE: Option<&'static RenderNode> = None;
26
27    #[doc(alias = "gsk_render_node_draw")]
28    pub fn draw(&self, cr: &cairo::Context) {
29        unsafe {
30            ffi::gsk_render_node_draw(
31                self.as_ref().to_glib_none().0,
32                mut_override(cr.to_glib_none().0),
33            );
34        }
35    }
36
37    #[doc(alias = "gsk_render_node_get_bounds")]
38    #[doc(alias = "get_bounds")]
39    pub fn bounds(&self) -> graphene::Rect {
40        unsafe {
41            let mut bounds = graphene::Rect::uninitialized();
42            ffi::gsk_render_node_get_bounds(
43                self.as_ref().to_glib_none().0,
44                bounds.to_glib_none_mut().0,
45            );
46            bounds
47        }
48    }
49
50    #[doc(alias = "gsk_render_node_get_node_type")]
51    #[doc(alias = "get_node_type")]
52    pub fn node_type(&self) -> RenderNodeType {
53        unsafe {
54            from_glib(ffi::gsk_render_node_get_node_type(const_override(
55                self.as_ref().to_glib_none().0,
56            )))
57        }
58    }
59
60    #[cfg(feature = "v4_16")]
61    #[cfg_attr(docsrs, doc(cfg(feature = "v4_16")))]
62    #[doc(alias = "gsk_render_node_get_opaque_rect")]
63    #[doc(alias = "get_opaque_rect")]
64    pub fn opaque_rect(&self) -> Option<graphene::Rect> {
65        unsafe {
66            let mut out_opaque = graphene::Rect::uninitialized();
67            let ret = from_glib(ffi::gsk_render_node_get_opaque_rect(
68                self.as_ref().to_glib_none().0,
69                out_opaque.to_glib_none_mut().0,
70            ));
71            if ret {
72                Some(out_opaque)
73            } else {
74                None
75            }
76        }
77    }
78
79    #[doc(alias = "gsk_render_node_serialize")]
80    pub fn serialize(&self) -> glib::Bytes {
81        unsafe {
82            from_glib_full(ffi::gsk_render_node_serialize(
83                self.as_ref().to_glib_none().0,
84            ))
85        }
86    }
87
88    #[doc(alias = "gsk_render_node_write_to_file")]
89    pub fn write_to_file(&self, filename: impl AsRef<std::path::Path>) -> Result<(), glib::Error> {
90        unsafe {
91            let mut error = std::ptr::null_mut();
92            let is_ok = ffi::gsk_render_node_write_to_file(
93                self.as_ref().to_glib_none().0,
94                filename.as_ref().to_glib_none().0,
95                &mut error,
96            );
97            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
98            if error.is_null() {
99                Ok(())
100            } else {
101                Err(from_glib_full(error))
102            }
103        }
104    }
105}