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