pango/auto/
context.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::{
6    ffi, Direction, Font, FontDescription, FontFamily, FontMap, FontMetrics, Fontset, Gravity,
7    GravityHint, Language, Matrix,
8};
9use glib::{prelude::*, translate::*};
10
11glib::wrapper! {
12    #[doc(alias = "PangoContext")]
13    pub struct Context(Object<ffi::PangoContext, ffi::PangoContextClass>);
14
15    match fn {
16        type_ => || ffi::pango_context_get_type(),
17    }
18}
19
20impl Context {
21    #[doc(alias = "pango_context_new")]
22    pub fn new() -> Context {
23        unsafe { from_glib_full(ffi::pango_context_new()) }
24    }
25
26    #[doc(alias = "pango_context_changed")]
27    pub fn changed(&self) {
28        unsafe {
29            ffi::pango_context_changed(self.to_glib_none().0);
30        }
31    }
32
33    #[doc(alias = "pango_context_get_base_dir")]
34    #[doc(alias = "get_base_dir")]
35    pub fn base_dir(&self) -> Direction {
36        unsafe { from_glib(ffi::pango_context_get_base_dir(self.to_glib_none().0)) }
37    }
38
39    #[doc(alias = "pango_context_get_base_gravity")]
40    #[doc(alias = "get_base_gravity")]
41    pub fn base_gravity(&self) -> Gravity {
42        unsafe { from_glib(ffi::pango_context_get_base_gravity(self.to_glib_none().0)) }
43    }
44
45    #[doc(alias = "pango_context_get_font_description")]
46    #[doc(alias = "get_font_description")]
47    pub fn font_description(&self) -> Option<FontDescription> {
48        unsafe {
49            from_glib_none(ffi::pango_context_get_font_description(
50                self.to_glib_none().0,
51            ))
52        }
53    }
54
55    #[doc(alias = "pango_context_get_font_map")]
56    #[doc(alias = "get_font_map")]
57    pub fn font_map(&self) -> Option<FontMap> {
58        unsafe { from_glib_none(ffi::pango_context_get_font_map(self.to_glib_none().0)) }
59    }
60
61    #[doc(alias = "pango_context_get_gravity")]
62    #[doc(alias = "get_gravity")]
63    pub fn gravity(&self) -> Gravity {
64        unsafe { from_glib(ffi::pango_context_get_gravity(self.to_glib_none().0)) }
65    }
66
67    #[doc(alias = "pango_context_get_gravity_hint")]
68    #[doc(alias = "get_gravity_hint")]
69    pub fn gravity_hint(&self) -> GravityHint {
70        unsafe { from_glib(ffi::pango_context_get_gravity_hint(self.to_glib_none().0)) }
71    }
72
73    #[doc(alias = "pango_context_get_language")]
74    #[doc(alias = "get_language")]
75    pub fn language(&self) -> Option<Language> {
76        unsafe { from_glib_none(ffi::pango_context_get_language(self.to_glib_none().0)) }
77    }
78
79    #[doc(alias = "pango_context_get_matrix")]
80    #[doc(alias = "get_matrix")]
81    pub fn matrix(&self) -> Option<Matrix> {
82        unsafe { from_glib_none(ffi::pango_context_get_matrix(self.to_glib_none().0)) }
83    }
84
85    #[doc(alias = "pango_context_get_metrics")]
86    #[doc(alias = "get_metrics")]
87    pub fn metrics(
88        &self,
89        desc: Option<&FontDescription>,
90        language: Option<&Language>,
91    ) -> FontMetrics {
92        unsafe {
93            from_glib_full(ffi::pango_context_get_metrics(
94                self.to_glib_none().0,
95                desc.to_glib_none().0,
96                mut_override(language.to_glib_none().0),
97            ))
98        }
99    }
100
101    #[cfg(feature = "v1_44")]
102    #[cfg_attr(docsrs, doc(cfg(feature = "v1_44")))]
103    #[doc(alias = "pango_context_get_round_glyph_positions")]
104    #[doc(alias = "get_round_glyph_positions")]
105    pub fn is_round_glyph_positions(&self) -> bool {
106        unsafe {
107            from_glib(ffi::pango_context_get_round_glyph_positions(
108                self.to_glib_none().0,
109            ))
110        }
111    }
112
113    #[doc(alias = "pango_context_get_serial")]
114    #[doc(alias = "get_serial")]
115    pub fn serial(&self) -> u32 {
116        unsafe { ffi::pango_context_get_serial(self.to_glib_none().0) }
117    }
118
119    #[doc(alias = "pango_context_list_families")]
120    pub fn list_families(&self) -> Vec<FontFamily> {
121        unsafe {
122            let mut families = std::ptr::null_mut();
123            let mut n_families = std::mem::MaybeUninit::uninit();
124            ffi::pango_context_list_families(
125                self.to_glib_none().0,
126                &mut families,
127                n_families.as_mut_ptr(),
128            );
129            FromGlibContainer::from_glib_container_num(families, n_families.assume_init() as _)
130        }
131    }
132
133    #[doc(alias = "pango_context_load_font")]
134    pub fn load_font(&self, desc: &FontDescription) -> Option<Font> {
135        unsafe {
136            from_glib_full(ffi::pango_context_load_font(
137                self.to_glib_none().0,
138                desc.to_glib_none().0,
139            ))
140        }
141    }
142
143    #[doc(alias = "pango_context_load_fontset")]
144    pub fn load_fontset(&self, desc: &FontDescription, language: &Language) -> Option<Fontset> {
145        unsafe {
146            from_glib_full(ffi::pango_context_load_fontset(
147                self.to_glib_none().0,
148                desc.to_glib_none().0,
149                mut_override(language.to_glib_none().0),
150            ))
151        }
152    }
153
154    #[doc(alias = "pango_context_set_base_dir")]
155    pub fn set_base_dir(&self, direction: Direction) {
156        unsafe {
157            ffi::pango_context_set_base_dir(self.to_glib_none().0, direction.into_glib());
158        }
159    }
160
161    #[doc(alias = "pango_context_set_base_gravity")]
162    pub fn set_base_gravity(&self, gravity: Gravity) {
163        unsafe {
164            ffi::pango_context_set_base_gravity(self.to_glib_none().0, gravity.into_glib());
165        }
166    }
167
168    #[doc(alias = "pango_context_set_font_description")]
169    pub fn set_font_description(&self, desc: Option<&FontDescription>) {
170        unsafe {
171            ffi::pango_context_set_font_description(self.to_glib_none().0, desc.to_glib_none().0);
172        }
173    }
174
175    #[doc(alias = "pango_context_set_font_map")]
176    pub fn set_font_map(&self, font_map: Option<&impl IsA<FontMap>>) {
177        unsafe {
178            ffi::pango_context_set_font_map(
179                self.to_glib_none().0,
180                font_map.map(|p| p.as_ref()).to_glib_none().0,
181            );
182        }
183    }
184
185    #[doc(alias = "pango_context_set_gravity_hint")]
186    pub fn set_gravity_hint(&self, hint: GravityHint) {
187        unsafe {
188            ffi::pango_context_set_gravity_hint(self.to_glib_none().0, hint.into_glib());
189        }
190    }
191
192    #[doc(alias = "pango_context_set_language")]
193    pub fn set_language(&self, language: Option<&Language>) {
194        unsafe {
195            ffi::pango_context_set_language(
196                self.to_glib_none().0,
197                mut_override(language.to_glib_none().0),
198            );
199        }
200    }
201
202    #[doc(alias = "pango_context_set_matrix")]
203    pub fn set_matrix(&self, matrix: Option<&Matrix>) {
204        unsafe {
205            ffi::pango_context_set_matrix(self.to_glib_none().0, matrix.to_glib_none().0);
206        }
207    }
208
209    #[cfg(feature = "v1_44")]
210    #[cfg_attr(docsrs, doc(cfg(feature = "v1_44")))]
211    #[doc(alias = "pango_context_set_round_glyph_positions")]
212    pub fn set_round_glyph_positions(&self, round_positions: bool) {
213        unsafe {
214            ffi::pango_context_set_round_glyph_positions(
215                self.to_glib_none().0,
216                round_positions.into_glib(),
217            );
218        }
219    }
220}
221
222impl Default for Context {
223    fn default() -> Self {
224        Self::new()
225    }
226}