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 
5 use crate::Analysis;
6 use crate::AttrIterator;
7 use crate::AttrList;
8 use crate::Context;
9 use crate::Direction;
10 use crate::GlyphString;
11 use crate::Item;
12 use crate::Rectangle;
13 use crate::Stretch;
14 use crate::Style;
15 use crate::Variant;
16 use crate::Weight;
17 use glib::translate::*;
18 use std::mem;
19 use std::ptr;
20 
21 //#[cfg_attr(feature = "v1_44", deprecated = "Since 1.44")]
22 //#[doc(alias = "pango_break")]
23 //#[doc(alias = "break")]
24 //pub fn break_(text: &str, analysis: &mut Analysis, attrs: /*Ignored*/&[&LogAttr]) {
25 //    unsafe { TODO: call ffi:pango_break() }
26 //}
27 
28 //#[doc(alias = "pango_default_break")]
29 //pub fn default_break(text: &str, analysis: Option<&mut Analysis>, attrs: /*Ignored*/&mut LogAttr, attrs_len: i32) {
30 //    unsafe { TODO: call ffi:pango_default_break() }
31 //}
32 
33 #[doc(alias = "pango_extents_to_pixels")]
extents_to_pixels(inclusive: Option<&Rectangle>, nearest: Option<&Rectangle>)34 pub fn extents_to_pixels(inclusive: Option<&Rectangle>, nearest: Option<&Rectangle>) {
35     unsafe {
36         ffi::pango_extents_to_pixels(
37             mut_override(inclusive.to_glib_none().0),
38             mut_override(nearest.to_glib_none().0),
39         );
40     }
41 }
42 
43 #[doc(alias = "pango_find_base_dir")]
find_base_dir(text: &str) -> Direction44 pub fn find_base_dir(text: &str) -> Direction {
45     let length = text.len() as i32;
46     unsafe { from_glib(ffi::pango_find_base_dir(text.to_glib_none().0, length)) }
47 }
48 
49 #[doc(alias = "pango_find_paragraph_boundary")]
find_paragraph_boundary(text: &str) -> (i32, i32)50 pub fn find_paragraph_boundary(text: &str) -> (i32, i32) {
51     let length = text.len() as i32;
52     unsafe {
53         let mut paragraph_delimiter_index = mem::MaybeUninit::uninit();
54         let mut next_paragraph_start = mem::MaybeUninit::uninit();
55         ffi::pango_find_paragraph_boundary(
56             text.to_glib_none().0,
57             length,
58             paragraph_delimiter_index.as_mut_ptr(),
59             next_paragraph_start.as_mut_ptr(),
60         );
61         let paragraph_delimiter_index = paragraph_delimiter_index.assume_init();
62         let next_paragraph_start = next_paragraph_start.assume_init();
63         (paragraph_delimiter_index, next_paragraph_start)
64     }
65 }
66 
67 //#[doc(alias = "pango_get_log_attrs")]
68 //#[doc(alias = "get_log_attrs")]
69 //pub fn log_attrs(text: &str, level: i32, language: &mut Language, log_attrs: /*Ignored*/&[&LogAttr]) {
70 //    unsafe { TODO: call ffi:pango_get_log_attrs() }
71 //}
72 
73 #[doc(alias = "pango_is_zero_width")]
is_zero_width(ch: char) -> bool74 pub fn is_zero_width(ch: char) -> bool {
75     unsafe { from_glib(ffi::pango_is_zero_width(ch.into_glib())) }
76 }
77 
78 #[doc(alias = "pango_itemize")]
itemize( context: &Context, text: &str, start_index: i32, length: i32, attrs: &AttrList, cached_iter: Option<&AttrIterator>, ) -> Vec<Item>79 pub fn itemize(
80     context: &Context,
81     text: &str,
82     start_index: i32,
83     length: i32,
84     attrs: &AttrList,
85     cached_iter: Option<&AttrIterator>,
86 ) -> Vec<Item> {
87     unsafe {
88         FromGlibPtrContainer::from_glib_full(ffi::pango_itemize(
89             context.to_glib_none().0,
90             text.to_glib_none().0,
91             start_index,
92             length,
93             attrs.to_glib_none().0,
94             mut_override(cached_iter.to_glib_none().0),
95         ))
96     }
97 }
98 
99 #[doc(alias = "pango_itemize_with_base_dir")]
itemize_with_base_dir( context: &Context, base_dir: Direction, text: &str, start_index: i32, length: i32, attrs: &AttrList, cached_iter: Option<&AttrIterator>, ) -> Vec<Item>100 pub fn itemize_with_base_dir(
101     context: &Context,
102     base_dir: Direction,
103     text: &str,
104     start_index: i32,
105     length: i32,
106     attrs: &AttrList,
107     cached_iter: Option<&AttrIterator>,
108 ) -> Vec<Item> {
109     unsafe {
110         FromGlibPtrContainer::from_glib_full(ffi::pango_itemize_with_base_dir(
111             context.to_glib_none().0,
112             base_dir.into_glib(),
113             text.to_glib_none().0,
114             start_index,
115             length,
116             attrs.to_glib_none().0,
117             mut_override(cached_iter.to_glib_none().0),
118         ))
119     }
120 }
121 
122 //#[doc(alias = "pango_markup_parser_finish")]
123 //pub fn markup_parser_finish(context: /*Ignored*/&glib::MarkupParseContext) -> Result<(AttrList, glib::GString, char), glib::Error> {
124 //    unsafe { TODO: call ffi:pango_markup_parser_finish() }
125 //}
126 
127 //#[doc(alias = "pango_markup_parser_new")]
128 //pub fn markup_parser_new(accel_marker: char) -> /*Ignored*/Option<glib::MarkupParseContext> {
129 //    unsafe { TODO: call ffi:pango_markup_parser_new() }
130 //}
131 
132 #[doc(alias = "pango_parse_markup")]
parse_markup( markup_text: &str, accel_marker: char, ) -> Result<(AttrList, glib::GString, char), glib::Error>133 pub fn parse_markup(
134     markup_text: &str,
135     accel_marker: char,
136 ) -> Result<(AttrList, glib::GString, char), glib::Error> {
137     let length = markup_text.len() as i32;
138     unsafe {
139         let mut attr_list = ptr::null_mut();
140         let mut text = ptr::null_mut();
141         let mut accel_char = mem::MaybeUninit::uninit();
142         let mut error = ptr::null_mut();
143         let _ = ffi::pango_parse_markup(
144             markup_text.to_glib_none().0,
145             length,
146             accel_marker.into_glib(),
147             &mut attr_list,
148             &mut text,
149             accel_char.as_mut_ptr(),
150             &mut error,
151         );
152         let accel_char = accel_char.assume_init();
153         if error.is_null() {
154             Ok((
155                 from_glib_full(attr_list),
156                 from_glib_full(text),
157                 std::convert::TryFrom::try_from(accel_char)
158                     .expect("conversion from an invalid Unicode value attempted"),
159             ))
160         } else {
161             Err(from_glib_full(error))
162         }
163     }
164 }
165 
166 #[doc(alias = "pango_parse_stretch")]
parse_stretch(str: &str, warn: bool) -> Option<Stretch>167 pub fn parse_stretch(str: &str, warn: bool) -> Option<Stretch> {
168     unsafe {
169         let mut stretch = mem::MaybeUninit::uninit();
170         let ret = from_glib(ffi::pango_parse_stretch(
171             str.to_glib_none().0,
172             stretch.as_mut_ptr(),
173             warn.into_glib(),
174         ));
175         let stretch = stretch.assume_init();
176         if ret {
177             Some(from_glib(stretch))
178         } else {
179             None
180         }
181     }
182 }
183 
184 #[doc(alias = "pango_parse_style")]
parse_style(str: &str, warn: bool) -> Option<Style>185 pub fn parse_style(str: &str, warn: bool) -> Option<Style> {
186     unsafe {
187         let mut style = mem::MaybeUninit::uninit();
188         let ret = from_glib(ffi::pango_parse_style(
189             str.to_glib_none().0,
190             style.as_mut_ptr(),
191             warn.into_glib(),
192         ));
193         let style = style.assume_init();
194         if ret {
195             Some(from_glib(style))
196         } else {
197             None
198         }
199     }
200 }
201 
202 #[doc(alias = "pango_parse_variant")]
parse_variant(str: &str, warn: bool) -> Option<Variant>203 pub fn parse_variant(str: &str, warn: bool) -> Option<Variant> {
204     unsafe {
205         let mut variant = mem::MaybeUninit::uninit();
206         let ret = from_glib(ffi::pango_parse_variant(
207             str.to_glib_none().0,
208             variant.as_mut_ptr(),
209             warn.into_glib(),
210         ));
211         let variant = variant.assume_init();
212         if ret {
213             Some(from_glib(variant))
214         } else {
215             None
216         }
217     }
218 }
219 
220 #[doc(alias = "pango_parse_weight")]
parse_weight(str: &str, warn: bool) -> Option<Weight>221 pub fn parse_weight(str: &str, warn: bool) -> Option<Weight> {
222     unsafe {
223         let mut weight = mem::MaybeUninit::uninit();
224         let ret = from_glib(ffi::pango_parse_weight(
225             str.to_glib_none().0,
226             weight.as_mut_ptr(),
227             warn.into_glib(),
228         ));
229         let weight = weight.assume_init();
230         if ret {
231             Some(from_glib(weight))
232         } else {
233             None
234         }
235     }
236 }
237 
238 #[doc(alias = "pango_quantize_line_geometry")]
quantize_line_geometry(thickness: &mut i32, position: &mut i32)239 pub fn quantize_line_geometry(thickness: &mut i32, position: &mut i32) {
240     unsafe {
241         ffi::pango_quantize_line_geometry(thickness, position);
242     }
243 }
244 
245 #[doc(alias = "pango_shape")]
shape(text: &str, analysis: &Analysis, glyphs: &mut GlyphString)246 pub fn shape(text: &str, analysis: &Analysis, glyphs: &mut GlyphString) {
247     let length = text.len() as i32;
248     unsafe {
249         ffi::pango_shape(
250             text.to_glib_none().0,
251             length,
252             analysis.to_glib_none().0,
253             glyphs.to_glib_none_mut().0,
254         );
255     }
256 }
257 
258 //#[cfg(any(feature = "v1_44", feature = "dox"))]
259 //#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_44")))]
260 //#[doc(alias = "pango_tailor_break")]
261 //pub fn tailor_break(text: &str, analysis: &mut Analysis, offset: i32, log_attrs: /*Ignored*/&[&LogAttr]) {
262 //    unsafe { TODO: call ffi:pango_tailor_break() }
263 //}
264 
265 #[doc(alias = "pango_unichar_direction")]
unichar_direction(ch: char) -> Direction266 pub fn unichar_direction(ch: char) -> Direction {
267     unsafe { from_glib(ffi::pango_unichar_direction(ch.into_glib())) }
268 }
269 
270 #[doc(alias = "pango_units_from_double")]
units_from_double(d: f64) -> i32271 pub fn units_from_double(d: f64) -> i32 {
272     unsafe { ffi::pango_units_from_double(d) }
273 }
274 
275 #[doc(alias = "pango_units_to_double")]
units_to_double(i: i32) -> f64276 pub fn units_to_double(i: i32) -> f64 {
277     unsafe { ffi::pango_units_to_double(i) }
278 }
279 
280 #[doc(alias = "pango_version")]
version() -> i32281 pub fn version() -> i32 {
282     unsafe { ffi::pango_version() }
283 }
284 
285 #[doc(alias = "pango_version_check")]
version_check( required_major: i32, required_minor: i32, required_micro: i32, ) -> Option<glib::GString>286 pub fn version_check(
287     required_major: i32,
288     required_minor: i32,
289     required_micro: i32,
290 ) -> Option<glib::GString> {
291     unsafe {
292         from_glib_none(ffi::pango_version_check(
293             required_major,
294             required_minor,
295             required_micro,
296         ))
297     }
298 }
299 
300 #[doc(alias = "pango_version_string")]
version_string() -> Option<glib::GString>301 pub fn version_string() -> Option<glib::GString> {
302     unsafe { from_glib_none(ffi::pango_version_string()) }
303 }
304