gsk4/auto/
text_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;
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9    #[doc(alias = "GskTextNode")]
10    pub struct TextNode(Shared<ffi::GskTextNode>);
11
12    match fn {
13        ref => |ptr| ffi::gsk_render_node_ref(ptr as *mut ffi::GskRenderNode),
14        unref => |ptr| ffi::gsk_render_node_unref(ptr as *mut ffi::GskRenderNode),
15    }
16}
17
18impl StaticType for TextNode {
19    fn static_type() -> glib::Type {
20        unsafe { from_glib(ffi::gsk_text_node_get_type()) }
21    }
22}
23
24impl TextNode {
25    #[doc(alias = "gsk_text_node_new")]
26    pub fn new(
27        font: &impl IsA<pango::Font>,
28        glyphs: &pango::GlyphString,
29        color: &gdk::RGBA,
30        offset: &graphene::Point,
31    ) -> Option<TextNode> {
32        assert_initialized_main_thread!();
33        unsafe {
34            from_glib_full(ffi::gsk_text_node_new(
35                font.as_ref().to_glib_none().0,
36                mut_override(glyphs.to_glib_none().0),
37                color.to_glib_none().0,
38                offset.to_glib_none().0,
39            ))
40        }
41    }
42
43    #[doc(alias = "gsk_text_node_get_color")]
44    #[doc(alias = "get_color")]
45    pub fn color(&self) -> gdk::RGBA {
46        unsafe { from_glib_none(ffi::gsk_text_node_get_color(self.to_glib_none().0)) }
47    }
48
49    #[doc(alias = "gsk_text_node_get_font")]
50    #[doc(alias = "get_font")]
51    pub fn font(&self) -> pango::Font {
52        unsafe { from_glib_none(ffi::gsk_text_node_get_font(self.to_glib_none().0)) }
53    }
54
55    #[doc(alias = "gsk_text_node_get_glyphs")]
56    #[doc(alias = "get_glyphs")]
57    pub fn glyphs(&self) -> Vec<pango::GlyphInfo> {
58        unsafe {
59            let mut n_glyphs = std::mem::MaybeUninit::uninit();
60            let ret = FromGlibContainer::from_glib_none_num(
61                ffi::gsk_text_node_get_glyphs(self.to_glib_none().0, n_glyphs.as_mut_ptr()),
62                n_glyphs.assume_init() as _,
63            );
64            ret
65        }
66    }
67
68    #[doc(alias = "gsk_text_node_get_num_glyphs")]
69    #[doc(alias = "get_num_glyphs")]
70    pub fn num_glyphs(&self) -> u32 {
71        unsafe { ffi::gsk_text_node_get_num_glyphs(self.to_glib_none().0) }
72    }
73
74    #[doc(alias = "gsk_text_node_get_offset")]
75    #[doc(alias = "get_offset")]
76    pub fn offset(&self) -> graphene::Point {
77        unsafe { from_glib_none(ffi::gsk_text_node_get_offset(self.to_glib_none().0)) }
78    }
79
80    #[cfg(feature = "v4_2")]
81    #[cfg_attr(docsrs, doc(cfg(feature = "v4_2")))]
82    #[doc(alias = "gsk_text_node_has_color_glyphs")]
83    pub fn has_color_glyphs(&self) -> bool {
84        unsafe { from_glib(ffi::gsk_text_node_has_color_glyphs(self.to_glib_none().0)) }
85    }
86}