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::Language;
6 use crate::Matrix;
7 use glib::translate::*;
8 use glib::value::FromValue;
9 use glib::value::ToValue;
10 use glib::StaticType;
11 use glib::Type;
12 use std::fmt;
13 
14 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
15 #[non_exhaustive]
16 #[doc(alias = "PangoAlignment")]
17 pub enum Alignment {
18     #[doc(alias = "PANGO_ALIGN_LEFT")]
19     Left,
20     #[doc(alias = "PANGO_ALIGN_CENTER")]
21     Center,
22     #[doc(alias = "PANGO_ALIGN_RIGHT")]
23     Right,
24     #[doc(hidden)]
25     __Unknown(i32),
26 }
27 
28 impl fmt::Display for Alignment {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result29     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
30         write!(
31             f,
32             "Alignment::{}",
33             match *self {
34                 Self::Left => "Left",
35                 Self::Center => "Center",
36                 Self::Right => "Right",
37                 _ => "Unknown",
38             }
39         )
40     }
41 }
42 
43 #[doc(hidden)]
44 impl IntoGlib for Alignment {
45     type GlibType = ffi::PangoAlignment;
46 
into_glib(self) -> ffi::PangoAlignment47     fn into_glib(self) -> ffi::PangoAlignment {
48         match self {
49             Self::Left => ffi::PANGO_ALIGN_LEFT,
50             Self::Center => ffi::PANGO_ALIGN_CENTER,
51             Self::Right => ffi::PANGO_ALIGN_RIGHT,
52             Self::__Unknown(value) => value,
53         }
54     }
55 }
56 
57 #[doc(hidden)]
58 impl FromGlib<ffi::PangoAlignment> for Alignment {
from_glib(value: ffi::PangoAlignment) -> Self59     unsafe fn from_glib(value: ffi::PangoAlignment) -> Self {
60         match value {
61             ffi::PANGO_ALIGN_LEFT => Self::Left,
62             ffi::PANGO_ALIGN_CENTER => Self::Center,
63             ffi::PANGO_ALIGN_RIGHT => Self::Right,
64             value => Self::__Unknown(value),
65         }
66     }
67 }
68 
69 impl StaticType for Alignment {
static_type() -> Type70     fn static_type() -> Type {
71         unsafe { from_glib(ffi::pango_alignment_get_type()) }
72     }
73 }
74 
75 impl glib::value::ValueType for Alignment {
76     type Type = Self;
77 }
78 
79 unsafe impl<'a> FromValue<'a> for Alignment {
80     type Checker = glib::value::GenericValueTypeChecker<Self>;
81 
from_value(value: &'a glib::Value) -> Self82     unsafe fn from_value(value: &'a glib::Value) -> Self {
83         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
84     }
85 }
86 
87 impl ToValue for Alignment {
to_value(&self) -> glib::Value88     fn to_value(&self) -> glib::Value {
89         let mut value = glib::Value::for_value_type::<Self>();
90         unsafe {
91             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
92         }
93         value
94     }
95 
value_type(&self) -> glib::Type96     fn value_type(&self) -> glib::Type {
97         Self::static_type()
98     }
99 }
100 
101 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
102 #[non_exhaustive]
103 #[doc(alias = "PangoAttrType")]
104 pub enum AttrType {
105     #[doc(alias = "PANGO_ATTR_INVALID")]
106     Invalid,
107     #[doc(alias = "PANGO_ATTR_LANGUAGE")]
108     Language,
109     #[doc(alias = "PANGO_ATTR_FAMILY")]
110     Family,
111     #[doc(alias = "PANGO_ATTR_STYLE")]
112     Style,
113     #[doc(alias = "PANGO_ATTR_WEIGHT")]
114     Weight,
115     #[doc(alias = "PANGO_ATTR_VARIANT")]
116     Variant,
117     #[doc(alias = "PANGO_ATTR_STRETCH")]
118     Stretch,
119     #[doc(alias = "PANGO_ATTR_SIZE")]
120     Size,
121     #[doc(alias = "PANGO_ATTR_FONT_DESC")]
122     FontDesc,
123     #[doc(alias = "PANGO_ATTR_FOREGROUND")]
124     Foreground,
125     #[doc(alias = "PANGO_ATTR_BACKGROUND")]
126     Background,
127     #[doc(alias = "PANGO_ATTR_UNDERLINE")]
128     Underline,
129     #[doc(alias = "PANGO_ATTR_STRIKETHROUGH")]
130     Strikethrough,
131     #[doc(alias = "PANGO_ATTR_RISE")]
132     Rise,
133     #[doc(alias = "PANGO_ATTR_SHAPE")]
134     Shape,
135     #[doc(alias = "PANGO_ATTR_SCALE")]
136     Scale,
137     #[doc(alias = "PANGO_ATTR_FALLBACK")]
138     Fallback,
139     #[doc(alias = "PANGO_ATTR_LETTER_SPACING")]
140     LetterSpacing,
141     #[doc(alias = "PANGO_ATTR_UNDERLINE_COLOR")]
142     UnderlineColor,
143     #[doc(alias = "PANGO_ATTR_STRIKETHROUGH_COLOR")]
144     StrikethroughColor,
145     #[doc(alias = "PANGO_ATTR_ABSOLUTE_SIZE")]
146     AbsoluteSize,
147     #[doc(alias = "PANGO_ATTR_GRAVITY")]
148     Gravity,
149     #[doc(alias = "PANGO_ATTR_GRAVITY_HINT")]
150     GravityHint,
151     #[doc(alias = "PANGO_ATTR_FONT_FEATURES")]
152     FontFeatures,
153     #[doc(alias = "PANGO_ATTR_FOREGROUND_ALPHA")]
154     ForegroundAlpha,
155     #[doc(alias = "PANGO_ATTR_BACKGROUND_ALPHA")]
156     BackgroundAlpha,
157     #[doc(alias = "PANGO_ATTR_ALLOW_BREAKS")]
158     AllowBreaks,
159     #[doc(alias = "PANGO_ATTR_SHOW")]
160     Show,
161     #[doc(alias = "PANGO_ATTR_INSERT_HYPHENS")]
162     InsertHyphens,
163     #[doc(alias = "PANGO_ATTR_OVERLINE")]
164     Overline,
165     #[doc(alias = "PANGO_ATTR_OVERLINE_COLOR")]
166     OverlineColor,
167     #[doc(hidden)]
168     __Unknown(i32),
169 }
170 
171 impl AttrType {
172     #[doc(alias = "pango_attr_type_get_name")]
173     #[doc(alias = "get_name")]
name(self) -> Option<glib::GString>174     pub fn name(self) -> Option<glib::GString> {
175         unsafe { from_glib_none(ffi::pango_attr_type_get_name(self.into_glib())) }
176     }
177 }
178 
179 impl fmt::Display for AttrType {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result180     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
181         write!(
182             f,
183             "AttrType::{}",
184             match *self {
185                 Self::Invalid => "Invalid",
186                 Self::Language => "Language",
187                 Self::Family => "Family",
188                 Self::Style => "Style",
189                 Self::Weight => "Weight",
190                 Self::Variant => "Variant",
191                 Self::Stretch => "Stretch",
192                 Self::Size => "Size",
193                 Self::FontDesc => "FontDesc",
194                 Self::Foreground => "Foreground",
195                 Self::Background => "Background",
196                 Self::Underline => "Underline",
197                 Self::Strikethrough => "Strikethrough",
198                 Self::Rise => "Rise",
199                 Self::Shape => "Shape",
200                 Self::Scale => "Scale",
201                 Self::Fallback => "Fallback",
202                 Self::LetterSpacing => "LetterSpacing",
203                 Self::UnderlineColor => "UnderlineColor",
204                 Self::StrikethroughColor => "StrikethroughColor",
205                 Self::AbsoluteSize => "AbsoluteSize",
206                 Self::Gravity => "Gravity",
207                 Self::GravityHint => "GravityHint",
208                 Self::FontFeatures => "FontFeatures",
209                 Self::ForegroundAlpha => "ForegroundAlpha",
210                 Self::BackgroundAlpha => "BackgroundAlpha",
211                 Self::AllowBreaks => "AllowBreaks",
212                 Self::Show => "Show",
213                 Self::InsertHyphens => "InsertHyphens",
214                 Self::Overline => "Overline",
215                 Self::OverlineColor => "OverlineColor",
216                 _ => "Unknown",
217             }
218         )
219     }
220 }
221 
222 #[doc(hidden)]
223 impl IntoGlib for AttrType {
224     type GlibType = ffi::PangoAttrType;
225 
into_glib(self) -> ffi::PangoAttrType226     fn into_glib(self) -> ffi::PangoAttrType {
227         match self {
228             Self::Invalid => ffi::PANGO_ATTR_INVALID,
229             Self::Language => ffi::PANGO_ATTR_LANGUAGE,
230             Self::Family => ffi::PANGO_ATTR_FAMILY,
231             Self::Style => ffi::PANGO_ATTR_STYLE,
232             Self::Weight => ffi::PANGO_ATTR_WEIGHT,
233             Self::Variant => ffi::PANGO_ATTR_VARIANT,
234             Self::Stretch => ffi::PANGO_ATTR_STRETCH,
235             Self::Size => ffi::PANGO_ATTR_SIZE,
236             Self::FontDesc => ffi::PANGO_ATTR_FONT_DESC,
237             Self::Foreground => ffi::PANGO_ATTR_FOREGROUND,
238             Self::Background => ffi::PANGO_ATTR_BACKGROUND,
239             Self::Underline => ffi::PANGO_ATTR_UNDERLINE,
240             Self::Strikethrough => ffi::PANGO_ATTR_STRIKETHROUGH,
241             Self::Rise => ffi::PANGO_ATTR_RISE,
242             Self::Shape => ffi::PANGO_ATTR_SHAPE,
243             Self::Scale => ffi::PANGO_ATTR_SCALE,
244             Self::Fallback => ffi::PANGO_ATTR_FALLBACK,
245             Self::LetterSpacing => ffi::PANGO_ATTR_LETTER_SPACING,
246             Self::UnderlineColor => ffi::PANGO_ATTR_UNDERLINE_COLOR,
247             Self::StrikethroughColor => ffi::PANGO_ATTR_STRIKETHROUGH_COLOR,
248             Self::AbsoluteSize => ffi::PANGO_ATTR_ABSOLUTE_SIZE,
249             Self::Gravity => ffi::PANGO_ATTR_GRAVITY,
250             Self::GravityHint => ffi::PANGO_ATTR_GRAVITY_HINT,
251             Self::FontFeatures => ffi::PANGO_ATTR_FONT_FEATURES,
252             Self::ForegroundAlpha => ffi::PANGO_ATTR_FOREGROUND_ALPHA,
253             Self::BackgroundAlpha => ffi::PANGO_ATTR_BACKGROUND_ALPHA,
254             Self::AllowBreaks => ffi::PANGO_ATTR_ALLOW_BREAKS,
255             Self::Show => ffi::PANGO_ATTR_SHOW,
256             Self::InsertHyphens => ffi::PANGO_ATTR_INSERT_HYPHENS,
257             Self::Overline => ffi::PANGO_ATTR_OVERLINE,
258             Self::OverlineColor => ffi::PANGO_ATTR_OVERLINE_COLOR,
259             Self::__Unknown(value) => value,
260         }
261     }
262 }
263 
264 #[doc(hidden)]
265 impl FromGlib<ffi::PangoAttrType> for AttrType {
from_glib(value: ffi::PangoAttrType) -> Self266     unsafe fn from_glib(value: ffi::PangoAttrType) -> Self {
267         match value {
268             ffi::PANGO_ATTR_INVALID => Self::Invalid,
269             ffi::PANGO_ATTR_LANGUAGE => Self::Language,
270             ffi::PANGO_ATTR_FAMILY => Self::Family,
271             ffi::PANGO_ATTR_STYLE => Self::Style,
272             ffi::PANGO_ATTR_WEIGHT => Self::Weight,
273             ffi::PANGO_ATTR_VARIANT => Self::Variant,
274             ffi::PANGO_ATTR_STRETCH => Self::Stretch,
275             ffi::PANGO_ATTR_SIZE => Self::Size,
276             ffi::PANGO_ATTR_FONT_DESC => Self::FontDesc,
277             ffi::PANGO_ATTR_FOREGROUND => Self::Foreground,
278             ffi::PANGO_ATTR_BACKGROUND => Self::Background,
279             ffi::PANGO_ATTR_UNDERLINE => Self::Underline,
280             ffi::PANGO_ATTR_STRIKETHROUGH => Self::Strikethrough,
281             ffi::PANGO_ATTR_RISE => Self::Rise,
282             ffi::PANGO_ATTR_SHAPE => Self::Shape,
283             ffi::PANGO_ATTR_SCALE => Self::Scale,
284             ffi::PANGO_ATTR_FALLBACK => Self::Fallback,
285             ffi::PANGO_ATTR_LETTER_SPACING => Self::LetterSpacing,
286             ffi::PANGO_ATTR_UNDERLINE_COLOR => Self::UnderlineColor,
287             ffi::PANGO_ATTR_STRIKETHROUGH_COLOR => Self::StrikethroughColor,
288             ffi::PANGO_ATTR_ABSOLUTE_SIZE => Self::AbsoluteSize,
289             ffi::PANGO_ATTR_GRAVITY => Self::Gravity,
290             ffi::PANGO_ATTR_GRAVITY_HINT => Self::GravityHint,
291             ffi::PANGO_ATTR_FONT_FEATURES => Self::FontFeatures,
292             ffi::PANGO_ATTR_FOREGROUND_ALPHA => Self::ForegroundAlpha,
293             ffi::PANGO_ATTR_BACKGROUND_ALPHA => Self::BackgroundAlpha,
294             ffi::PANGO_ATTR_ALLOW_BREAKS => Self::AllowBreaks,
295             ffi::PANGO_ATTR_SHOW => Self::Show,
296             ffi::PANGO_ATTR_INSERT_HYPHENS => Self::InsertHyphens,
297             ffi::PANGO_ATTR_OVERLINE => Self::Overline,
298             ffi::PANGO_ATTR_OVERLINE_COLOR => Self::OverlineColor,
299             value => Self::__Unknown(value),
300         }
301     }
302 }
303 
304 impl StaticType for AttrType {
static_type() -> Type305     fn static_type() -> Type {
306         unsafe { from_glib(ffi::pango_attr_type_get_type()) }
307     }
308 }
309 
310 impl glib::value::ValueType for AttrType {
311     type Type = Self;
312 }
313 
314 unsafe impl<'a> FromValue<'a> for AttrType {
315     type Checker = glib::value::GenericValueTypeChecker<Self>;
316 
from_value(value: &'a glib::Value) -> Self317     unsafe fn from_value(value: &'a glib::Value) -> Self {
318         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
319     }
320 }
321 
322 impl ToValue for AttrType {
to_value(&self) -> glib::Value323     fn to_value(&self) -> glib::Value {
324         let mut value = glib::Value::for_value_type::<Self>();
325         unsafe {
326             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
327         }
328         value
329     }
330 
value_type(&self) -> glib::Type331     fn value_type(&self) -> glib::Type {
332         Self::static_type()
333     }
334 }
335 
336 #[cfg_attr(feature = "v1_44", deprecated = "Since 1.44")]
337 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
338 #[non_exhaustive]
339 #[doc(alias = "PangoBidiType")]
340 pub enum BidiType {
341     #[doc(alias = "PANGO_BIDI_TYPE_L")]
342     L,
343     #[doc(alias = "PANGO_BIDI_TYPE_LRE")]
344     Lre,
345     #[doc(alias = "PANGO_BIDI_TYPE_LRO")]
346     Lro,
347     #[doc(alias = "PANGO_BIDI_TYPE_R")]
348     R,
349     #[doc(alias = "PANGO_BIDI_TYPE_AL")]
350     Al,
351     #[doc(alias = "PANGO_BIDI_TYPE_RLE")]
352     Rle,
353     #[doc(alias = "PANGO_BIDI_TYPE_RLO")]
354     Rlo,
355     #[doc(alias = "PANGO_BIDI_TYPE_PDF")]
356     Pdf,
357     #[doc(alias = "PANGO_BIDI_TYPE_EN")]
358     En,
359     #[doc(alias = "PANGO_BIDI_TYPE_ES")]
360     Es,
361     #[doc(alias = "PANGO_BIDI_TYPE_ET")]
362     Et,
363     #[doc(alias = "PANGO_BIDI_TYPE_AN")]
364     An,
365     #[doc(alias = "PANGO_BIDI_TYPE_CS")]
366     Cs,
367     #[doc(alias = "PANGO_BIDI_TYPE_NSM")]
368     Nsm,
369     #[doc(alias = "PANGO_BIDI_TYPE_BN")]
370     Bn,
371     #[doc(alias = "PANGO_BIDI_TYPE_B")]
372     B,
373     #[doc(alias = "PANGO_BIDI_TYPE_S")]
374     S,
375     #[doc(alias = "PANGO_BIDI_TYPE_WS")]
376     Ws,
377     #[doc(alias = "PANGO_BIDI_TYPE_ON")]
378     On,
379     #[doc(hidden)]
380     __Unknown(i32),
381 }
382 
383 impl BidiType {
384     #[doc(alias = "pango_bidi_type_for_unichar")]
for_unichar(ch: char) -> BidiType385     pub fn for_unichar(ch: char) -> BidiType {
386         unsafe { from_glib(ffi::pango_bidi_type_for_unichar(ch.into_glib())) }
387     }
388 }
389 
390 impl fmt::Display for BidiType {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result391     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
392         write!(
393             f,
394             "BidiType::{}",
395             match *self {
396                 Self::L => "L",
397                 Self::Lre => "Lre",
398                 Self::Lro => "Lro",
399                 Self::R => "R",
400                 Self::Al => "Al",
401                 Self::Rle => "Rle",
402                 Self::Rlo => "Rlo",
403                 Self::Pdf => "Pdf",
404                 Self::En => "En",
405                 Self::Es => "Es",
406                 Self::Et => "Et",
407                 Self::An => "An",
408                 Self::Cs => "Cs",
409                 Self::Nsm => "Nsm",
410                 Self::Bn => "Bn",
411                 Self::B => "B",
412                 Self::S => "S",
413                 Self::Ws => "Ws",
414                 Self::On => "On",
415                 _ => "Unknown",
416             }
417         )
418     }
419 }
420 
421 #[doc(hidden)]
422 impl IntoGlib for BidiType {
423     type GlibType = ffi::PangoBidiType;
424 
into_glib(self) -> ffi::PangoBidiType425     fn into_glib(self) -> ffi::PangoBidiType {
426         match self {
427             Self::L => ffi::PANGO_BIDI_TYPE_L,
428             Self::Lre => ffi::PANGO_BIDI_TYPE_LRE,
429             Self::Lro => ffi::PANGO_BIDI_TYPE_LRO,
430             Self::R => ffi::PANGO_BIDI_TYPE_R,
431             Self::Al => ffi::PANGO_BIDI_TYPE_AL,
432             Self::Rle => ffi::PANGO_BIDI_TYPE_RLE,
433             Self::Rlo => ffi::PANGO_BIDI_TYPE_RLO,
434             Self::Pdf => ffi::PANGO_BIDI_TYPE_PDF,
435             Self::En => ffi::PANGO_BIDI_TYPE_EN,
436             Self::Es => ffi::PANGO_BIDI_TYPE_ES,
437             Self::Et => ffi::PANGO_BIDI_TYPE_ET,
438             Self::An => ffi::PANGO_BIDI_TYPE_AN,
439             Self::Cs => ffi::PANGO_BIDI_TYPE_CS,
440             Self::Nsm => ffi::PANGO_BIDI_TYPE_NSM,
441             Self::Bn => ffi::PANGO_BIDI_TYPE_BN,
442             Self::B => ffi::PANGO_BIDI_TYPE_B,
443             Self::S => ffi::PANGO_BIDI_TYPE_S,
444             Self::Ws => ffi::PANGO_BIDI_TYPE_WS,
445             Self::On => ffi::PANGO_BIDI_TYPE_ON,
446             Self::__Unknown(value) => value,
447         }
448     }
449 }
450 
451 #[doc(hidden)]
452 impl FromGlib<ffi::PangoBidiType> for BidiType {
from_glib(value: ffi::PangoBidiType) -> Self453     unsafe fn from_glib(value: ffi::PangoBidiType) -> Self {
454         match value {
455             ffi::PANGO_BIDI_TYPE_L => Self::L,
456             ffi::PANGO_BIDI_TYPE_LRE => Self::Lre,
457             ffi::PANGO_BIDI_TYPE_LRO => Self::Lro,
458             ffi::PANGO_BIDI_TYPE_R => Self::R,
459             ffi::PANGO_BIDI_TYPE_AL => Self::Al,
460             ffi::PANGO_BIDI_TYPE_RLE => Self::Rle,
461             ffi::PANGO_BIDI_TYPE_RLO => Self::Rlo,
462             ffi::PANGO_BIDI_TYPE_PDF => Self::Pdf,
463             ffi::PANGO_BIDI_TYPE_EN => Self::En,
464             ffi::PANGO_BIDI_TYPE_ES => Self::Es,
465             ffi::PANGO_BIDI_TYPE_ET => Self::Et,
466             ffi::PANGO_BIDI_TYPE_AN => Self::An,
467             ffi::PANGO_BIDI_TYPE_CS => Self::Cs,
468             ffi::PANGO_BIDI_TYPE_NSM => Self::Nsm,
469             ffi::PANGO_BIDI_TYPE_BN => Self::Bn,
470             ffi::PANGO_BIDI_TYPE_B => Self::B,
471             ffi::PANGO_BIDI_TYPE_S => Self::S,
472             ffi::PANGO_BIDI_TYPE_WS => Self::Ws,
473             ffi::PANGO_BIDI_TYPE_ON => Self::On,
474             value => Self::__Unknown(value),
475         }
476     }
477 }
478 
479 impl StaticType for BidiType {
static_type() -> Type480     fn static_type() -> Type {
481         unsafe { from_glib(ffi::pango_bidi_type_get_type()) }
482     }
483 }
484 
485 impl glib::value::ValueType for BidiType {
486     type Type = Self;
487 }
488 
489 unsafe impl<'a> FromValue<'a> for BidiType {
490     type Checker = glib::value::GenericValueTypeChecker<Self>;
491 
from_value(value: &'a glib::Value) -> Self492     unsafe fn from_value(value: &'a glib::Value) -> Self {
493         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
494     }
495 }
496 
497 impl ToValue for BidiType {
to_value(&self) -> glib::Value498     fn to_value(&self) -> glib::Value {
499         let mut value = glib::Value::for_value_type::<Self>();
500         unsafe {
501             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
502         }
503         value
504     }
505 
value_type(&self) -> glib::Type506     fn value_type(&self) -> glib::Type {
507         Self::static_type()
508     }
509 }
510 
511 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
512 #[non_exhaustive]
513 #[doc(alias = "PangoCoverageLevel")]
514 pub enum CoverageLevel {
515     #[doc(alias = "PANGO_COVERAGE_NONE")]
516     None,
517     #[doc(alias = "PANGO_COVERAGE_FALLBACK")]
518     Fallback,
519     #[doc(alias = "PANGO_COVERAGE_APPROXIMATE")]
520     Approximate,
521     #[doc(alias = "PANGO_COVERAGE_EXACT")]
522     Exact,
523     #[doc(hidden)]
524     __Unknown(i32),
525 }
526 
527 impl fmt::Display for CoverageLevel {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result528     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
529         write!(
530             f,
531             "CoverageLevel::{}",
532             match *self {
533                 Self::None => "None",
534                 Self::Fallback => "Fallback",
535                 Self::Approximate => "Approximate",
536                 Self::Exact => "Exact",
537                 _ => "Unknown",
538             }
539         )
540     }
541 }
542 
543 #[doc(hidden)]
544 impl IntoGlib for CoverageLevel {
545     type GlibType = ffi::PangoCoverageLevel;
546 
into_glib(self) -> ffi::PangoCoverageLevel547     fn into_glib(self) -> ffi::PangoCoverageLevel {
548         match self {
549             Self::None => ffi::PANGO_COVERAGE_NONE,
550             Self::Fallback => ffi::PANGO_COVERAGE_FALLBACK,
551             Self::Approximate => ffi::PANGO_COVERAGE_APPROXIMATE,
552             Self::Exact => ffi::PANGO_COVERAGE_EXACT,
553             Self::__Unknown(value) => value,
554         }
555     }
556 }
557 
558 #[doc(hidden)]
559 impl FromGlib<ffi::PangoCoverageLevel> for CoverageLevel {
from_glib(value: ffi::PangoCoverageLevel) -> Self560     unsafe fn from_glib(value: ffi::PangoCoverageLevel) -> Self {
561         match value {
562             ffi::PANGO_COVERAGE_NONE => Self::None,
563             ffi::PANGO_COVERAGE_FALLBACK => Self::Fallback,
564             ffi::PANGO_COVERAGE_APPROXIMATE => Self::Approximate,
565             ffi::PANGO_COVERAGE_EXACT => Self::Exact,
566             value => Self::__Unknown(value),
567         }
568     }
569 }
570 
571 impl StaticType for CoverageLevel {
static_type() -> Type572     fn static_type() -> Type {
573         unsafe { from_glib(ffi::pango_coverage_level_get_type()) }
574     }
575 }
576 
577 impl glib::value::ValueType for CoverageLevel {
578     type Type = Self;
579 }
580 
581 unsafe impl<'a> FromValue<'a> for CoverageLevel {
582     type Checker = glib::value::GenericValueTypeChecker<Self>;
583 
from_value(value: &'a glib::Value) -> Self584     unsafe fn from_value(value: &'a glib::Value) -> Self {
585         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
586     }
587 }
588 
589 impl ToValue for CoverageLevel {
to_value(&self) -> glib::Value590     fn to_value(&self) -> glib::Value {
591         let mut value = glib::Value::for_value_type::<Self>();
592         unsafe {
593             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
594         }
595         value
596     }
597 
value_type(&self) -> glib::Type598     fn value_type(&self) -> glib::Type {
599         Self::static_type()
600     }
601 }
602 
603 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
604 #[non_exhaustive]
605 #[doc(alias = "PangoDirection")]
606 pub enum Direction {
607     #[doc(alias = "PANGO_DIRECTION_LTR")]
608     Ltr,
609     #[doc(alias = "PANGO_DIRECTION_RTL")]
610     Rtl,
611     #[doc(alias = "PANGO_DIRECTION_TTB_LTR")]
612     TtbLtr,
613     #[doc(alias = "PANGO_DIRECTION_TTB_RTL")]
614     TtbRtl,
615     #[doc(alias = "PANGO_DIRECTION_WEAK_LTR")]
616     WeakLtr,
617     #[doc(alias = "PANGO_DIRECTION_WEAK_RTL")]
618     WeakRtl,
619     #[doc(alias = "PANGO_DIRECTION_NEUTRAL")]
620     Neutral,
621     #[doc(hidden)]
622     __Unknown(i32),
623 }
624 
625 impl fmt::Display for Direction {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result626     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
627         write!(
628             f,
629             "Direction::{}",
630             match *self {
631                 Self::Ltr => "Ltr",
632                 Self::Rtl => "Rtl",
633                 Self::TtbLtr => "TtbLtr",
634                 Self::TtbRtl => "TtbRtl",
635                 Self::WeakLtr => "WeakLtr",
636                 Self::WeakRtl => "WeakRtl",
637                 Self::Neutral => "Neutral",
638                 _ => "Unknown",
639             }
640         )
641     }
642 }
643 
644 #[doc(hidden)]
645 impl IntoGlib for Direction {
646     type GlibType = ffi::PangoDirection;
647 
into_glib(self) -> ffi::PangoDirection648     fn into_glib(self) -> ffi::PangoDirection {
649         match self {
650             Self::Ltr => ffi::PANGO_DIRECTION_LTR,
651             Self::Rtl => ffi::PANGO_DIRECTION_RTL,
652             Self::TtbLtr => ffi::PANGO_DIRECTION_TTB_LTR,
653             Self::TtbRtl => ffi::PANGO_DIRECTION_TTB_RTL,
654             Self::WeakLtr => ffi::PANGO_DIRECTION_WEAK_LTR,
655             Self::WeakRtl => ffi::PANGO_DIRECTION_WEAK_RTL,
656             Self::Neutral => ffi::PANGO_DIRECTION_NEUTRAL,
657             Self::__Unknown(value) => value,
658         }
659     }
660 }
661 
662 #[doc(hidden)]
663 impl FromGlib<ffi::PangoDirection> for Direction {
from_glib(value: ffi::PangoDirection) -> Self664     unsafe fn from_glib(value: ffi::PangoDirection) -> Self {
665         match value {
666             ffi::PANGO_DIRECTION_LTR => Self::Ltr,
667             ffi::PANGO_DIRECTION_RTL => Self::Rtl,
668             ffi::PANGO_DIRECTION_TTB_LTR => Self::TtbLtr,
669             ffi::PANGO_DIRECTION_TTB_RTL => Self::TtbRtl,
670             ffi::PANGO_DIRECTION_WEAK_LTR => Self::WeakLtr,
671             ffi::PANGO_DIRECTION_WEAK_RTL => Self::WeakRtl,
672             ffi::PANGO_DIRECTION_NEUTRAL => Self::Neutral,
673             value => Self::__Unknown(value),
674         }
675     }
676 }
677 
678 impl StaticType for Direction {
static_type() -> Type679     fn static_type() -> Type {
680         unsafe { from_glib(ffi::pango_direction_get_type()) }
681     }
682 }
683 
684 impl glib::value::ValueType for Direction {
685     type Type = Self;
686 }
687 
688 unsafe impl<'a> FromValue<'a> for Direction {
689     type Checker = glib::value::GenericValueTypeChecker<Self>;
690 
from_value(value: &'a glib::Value) -> Self691     unsafe fn from_value(value: &'a glib::Value) -> Self {
692         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
693     }
694 }
695 
696 impl ToValue for Direction {
to_value(&self) -> glib::Value697     fn to_value(&self) -> glib::Value {
698         let mut value = glib::Value::for_value_type::<Self>();
699         unsafe {
700             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
701         }
702         value
703     }
704 
value_type(&self) -> glib::Type705     fn value_type(&self) -> glib::Type {
706         Self::static_type()
707     }
708 }
709 
710 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
711 #[non_exhaustive]
712 #[doc(alias = "PangoEllipsizeMode")]
713 pub enum EllipsizeMode {
714     #[doc(alias = "PANGO_ELLIPSIZE_NONE")]
715     None,
716     #[doc(alias = "PANGO_ELLIPSIZE_START")]
717     Start,
718     #[doc(alias = "PANGO_ELLIPSIZE_MIDDLE")]
719     Middle,
720     #[doc(alias = "PANGO_ELLIPSIZE_END")]
721     End,
722     #[doc(hidden)]
723     __Unknown(i32),
724 }
725 
726 impl fmt::Display for EllipsizeMode {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result727     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
728         write!(
729             f,
730             "EllipsizeMode::{}",
731             match *self {
732                 Self::None => "None",
733                 Self::Start => "Start",
734                 Self::Middle => "Middle",
735                 Self::End => "End",
736                 _ => "Unknown",
737             }
738         )
739     }
740 }
741 
742 #[doc(hidden)]
743 impl IntoGlib for EllipsizeMode {
744     type GlibType = ffi::PangoEllipsizeMode;
745 
into_glib(self) -> ffi::PangoEllipsizeMode746     fn into_glib(self) -> ffi::PangoEllipsizeMode {
747         match self {
748             Self::None => ffi::PANGO_ELLIPSIZE_NONE,
749             Self::Start => ffi::PANGO_ELLIPSIZE_START,
750             Self::Middle => ffi::PANGO_ELLIPSIZE_MIDDLE,
751             Self::End => ffi::PANGO_ELLIPSIZE_END,
752             Self::__Unknown(value) => value,
753         }
754     }
755 }
756 
757 #[doc(hidden)]
758 impl FromGlib<ffi::PangoEllipsizeMode> for EllipsizeMode {
from_glib(value: ffi::PangoEllipsizeMode) -> Self759     unsafe fn from_glib(value: ffi::PangoEllipsizeMode) -> Self {
760         match value {
761             ffi::PANGO_ELLIPSIZE_NONE => Self::None,
762             ffi::PANGO_ELLIPSIZE_START => Self::Start,
763             ffi::PANGO_ELLIPSIZE_MIDDLE => Self::Middle,
764             ffi::PANGO_ELLIPSIZE_END => Self::End,
765             value => Self::__Unknown(value),
766         }
767     }
768 }
769 
770 impl StaticType for EllipsizeMode {
static_type() -> Type771     fn static_type() -> Type {
772         unsafe { from_glib(ffi::pango_ellipsize_mode_get_type()) }
773     }
774 }
775 
776 impl glib::value::ValueType for EllipsizeMode {
777     type Type = Self;
778 }
779 
780 unsafe impl<'a> FromValue<'a> for EllipsizeMode {
781     type Checker = glib::value::GenericValueTypeChecker<Self>;
782 
from_value(value: &'a glib::Value) -> Self783     unsafe fn from_value(value: &'a glib::Value) -> Self {
784         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
785     }
786 }
787 
788 impl ToValue for EllipsizeMode {
to_value(&self) -> glib::Value789     fn to_value(&self) -> glib::Value {
790         let mut value = glib::Value::for_value_type::<Self>();
791         unsafe {
792             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
793         }
794         value
795     }
796 
value_type(&self) -> glib::Type797     fn value_type(&self) -> glib::Type {
798         Self::static_type()
799     }
800 }
801 
802 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
803 #[non_exhaustive]
804 #[doc(alias = "PangoGravity")]
805 pub enum Gravity {
806     #[doc(alias = "PANGO_GRAVITY_SOUTH")]
807     South,
808     #[doc(alias = "PANGO_GRAVITY_EAST")]
809     East,
810     #[doc(alias = "PANGO_GRAVITY_NORTH")]
811     North,
812     #[doc(alias = "PANGO_GRAVITY_WEST")]
813     West,
814     #[doc(alias = "PANGO_GRAVITY_AUTO")]
815     Auto,
816     #[doc(hidden)]
817     __Unknown(i32),
818 }
819 
820 impl Gravity {
821     #[doc(alias = "pango_gravity_get_for_matrix")]
822     #[doc(alias = "get_for_matrix")]
for_matrix(matrix: Option<&Matrix>) -> Gravity823     pub fn for_matrix(matrix: Option<&Matrix>) -> Gravity {
824         unsafe { from_glib(ffi::pango_gravity_get_for_matrix(matrix.to_glib_none().0)) }
825     }
826 
827     #[doc(alias = "pango_gravity_get_for_script")]
828     #[doc(alias = "get_for_script")]
for_script(script: Script, base_gravity: Gravity, hint: GravityHint) -> Gravity829     pub fn for_script(script: Script, base_gravity: Gravity, hint: GravityHint) -> Gravity {
830         unsafe {
831             from_glib(ffi::pango_gravity_get_for_script(
832                 script.into_glib(),
833                 base_gravity.into_glib(),
834                 hint.into_glib(),
835             ))
836         }
837     }
838 
839     #[doc(alias = "pango_gravity_get_for_script_and_width")]
840     #[doc(alias = "get_for_script_and_width")]
for_script_and_width( script: Script, wide: bool, base_gravity: Gravity, hint: GravityHint, ) -> Gravity841     pub fn for_script_and_width(
842         script: Script,
843         wide: bool,
844         base_gravity: Gravity,
845         hint: GravityHint,
846     ) -> Gravity {
847         unsafe {
848             from_glib(ffi::pango_gravity_get_for_script_and_width(
849                 script.into_glib(),
850                 wide.into_glib(),
851                 base_gravity.into_glib(),
852                 hint.into_glib(),
853             ))
854         }
855     }
856 
857     #[doc(alias = "pango_gravity_to_rotation")]
to_rotation(self) -> f64858     pub fn to_rotation(self) -> f64 {
859         unsafe { ffi::pango_gravity_to_rotation(self.into_glib()) }
860     }
861 }
862 
863 impl fmt::Display for Gravity {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result864     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
865         write!(
866             f,
867             "Gravity::{}",
868             match *self {
869                 Self::South => "South",
870                 Self::East => "East",
871                 Self::North => "North",
872                 Self::West => "West",
873                 Self::Auto => "Auto",
874                 _ => "Unknown",
875             }
876         )
877     }
878 }
879 
880 #[doc(hidden)]
881 impl IntoGlib for Gravity {
882     type GlibType = ffi::PangoGravity;
883 
into_glib(self) -> ffi::PangoGravity884     fn into_glib(self) -> ffi::PangoGravity {
885         match self {
886             Self::South => ffi::PANGO_GRAVITY_SOUTH,
887             Self::East => ffi::PANGO_GRAVITY_EAST,
888             Self::North => ffi::PANGO_GRAVITY_NORTH,
889             Self::West => ffi::PANGO_GRAVITY_WEST,
890             Self::Auto => ffi::PANGO_GRAVITY_AUTO,
891             Self::__Unknown(value) => value,
892         }
893     }
894 }
895 
896 #[doc(hidden)]
897 impl FromGlib<ffi::PangoGravity> for Gravity {
from_glib(value: ffi::PangoGravity) -> Self898     unsafe fn from_glib(value: ffi::PangoGravity) -> Self {
899         match value {
900             ffi::PANGO_GRAVITY_SOUTH => Self::South,
901             ffi::PANGO_GRAVITY_EAST => Self::East,
902             ffi::PANGO_GRAVITY_NORTH => Self::North,
903             ffi::PANGO_GRAVITY_WEST => Self::West,
904             ffi::PANGO_GRAVITY_AUTO => Self::Auto,
905             value => Self::__Unknown(value),
906         }
907     }
908 }
909 
910 impl StaticType for Gravity {
static_type() -> Type911     fn static_type() -> Type {
912         unsafe { from_glib(ffi::pango_gravity_get_type()) }
913     }
914 }
915 
916 impl glib::value::ValueType for Gravity {
917     type Type = Self;
918 }
919 
920 unsafe impl<'a> FromValue<'a> for Gravity {
921     type Checker = glib::value::GenericValueTypeChecker<Self>;
922 
from_value(value: &'a glib::Value) -> Self923     unsafe fn from_value(value: &'a glib::Value) -> Self {
924         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
925     }
926 }
927 
928 impl ToValue for Gravity {
to_value(&self) -> glib::Value929     fn to_value(&self) -> glib::Value {
930         let mut value = glib::Value::for_value_type::<Self>();
931         unsafe {
932             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
933         }
934         value
935     }
936 
value_type(&self) -> glib::Type937     fn value_type(&self) -> glib::Type {
938         Self::static_type()
939     }
940 }
941 
942 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
943 #[non_exhaustive]
944 #[doc(alias = "PangoGravityHint")]
945 pub enum GravityHint {
946     #[doc(alias = "PANGO_GRAVITY_HINT_NATURAL")]
947     Natural,
948     #[doc(alias = "PANGO_GRAVITY_HINT_STRONG")]
949     Strong,
950     #[doc(alias = "PANGO_GRAVITY_HINT_LINE")]
951     Line,
952     #[doc(hidden)]
953     __Unknown(i32),
954 }
955 
956 impl fmt::Display for GravityHint {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result957     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
958         write!(
959             f,
960             "GravityHint::{}",
961             match *self {
962                 Self::Natural => "Natural",
963                 Self::Strong => "Strong",
964                 Self::Line => "Line",
965                 _ => "Unknown",
966             }
967         )
968     }
969 }
970 
971 #[doc(hidden)]
972 impl IntoGlib for GravityHint {
973     type GlibType = ffi::PangoGravityHint;
974 
into_glib(self) -> ffi::PangoGravityHint975     fn into_glib(self) -> ffi::PangoGravityHint {
976         match self {
977             Self::Natural => ffi::PANGO_GRAVITY_HINT_NATURAL,
978             Self::Strong => ffi::PANGO_GRAVITY_HINT_STRONG,
979             Self::Line => ffi::PANGO_GRAVITY_HINT_LINE,
980             Self::__Unknown(value) => value,
981         }
982     }
983 }
984 
985 #[doc(hidden)]
986 impl FromGlib<ffi::PangoGravityHint> for GravityHint {
from_glib(value: ffi::PangoGravityHint) -> Self987     unsafe fn from_glib(value: ffi::PangoGravityHint) -> Self {
988         match value {
989             ffi::PANGO_GRAVITY_HINT_NATURAL => Self::Natural,
990             ffi::PANGO_GRAVITY_HINT_STRONG => Self::Strong,
991             ffi::PANGO_GRAVITY_HINT_LINE => Self::Line,
992             value => Self::__Unknown(value),
993         }
994     }
995 }
996 
997 impl StaticType for GravityHint {
static_type() -> Type998     fn static_type() -> Type {
999         unsafe { from_glib(ffi::pango_gravity_hint_get_type()) }
1000     }
1001 }
1002 
1003 impl glib::value::ValueType for GravityHint {
1004     type Type = Self;
1005 }
1006 
1007 unsafe impl<'a> FromValue<'a> for GravityHint {
1008     type Checker = glib::value::GenericValueTypeChecker<Self>;
1009 
from_value(value: &'a glib::Value) -> Self1010     unsafe fn from_value(value: &'a glib::Value) -> Self {
1011         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1012     }
1013 }
1014 
1015 impl ToValue for GravityHint {
to_value(&self) -> glib::Value1016     fn to_value(&self) -> glib::Value {
1017         let mut value = glib::Value::for_value_type::<Self>();
1018         unsafe {
1019             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1020         }
1021         value
1022     }
1023 
value_type(&self) -> glib::Type1024     fn value_type(&self) -> glib::Type {
1025         Self::static_type()
1026     }
1027 }
1028 
1029 #[cfg(any(feature = "v1_46", feature = "dox"))]
1030 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1031 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1032 #[non_exhaustive]
1033 #[doc(alias = "PangoOverline")]
1034 pub enum Overline {
1035     #[doc(alias = "PANGO_OVERLINE_NONE")]
1036     None,
1037     #[doc(alias = "PANGO_OVERLINE_SINGLE")]
1038     Single,
1039     #[doc(hidden)]
1040     __Unknown(i32),
1041 }
1042 
1043 #[cfg(any(feature = "v1_46", feature = "dox"))]
1044 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1045 impl fmt::Display for Overline {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1046     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1047         write!(
1048             f,
1049             "Overline::{}",
1050             match *self {
1051                 Self::None => "None",
1052                 Self::Single => "Single",
1053                 _ => "Unknown",
1054             }
1055         )
1056     }
1057 }
1058 
1059 #[cfg(any(feature = "v1_46", feature = "dox"))]
1060 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1061 #[doc(hidden)]
1062 impl IntoGlib for Overline {
1063     type GlibType = ffi::PangoOverline;
1064 
into_glib(self) -> ffi::PangoOverline1065     fn into_glib(self) -> ffi::PangoOverline {
1066         match self {
1067             Self::None => ffi::PANGO_OVERLINE_NONE,
1068             Self::Single => ffi::PANGO_OVERLINE_SINGLE,
1069             Self::__Unknown(value) => value,
1070         }
1071     }
1072 }
1073 
1074 #[cfg(any(feature = "v1_46", feature = "dox"))]
1075 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1076 #[doc(hidden)]
1077 impl FromGlib<ffi::PangoOverline> for Overline {
from_glib(value: ffi::PangoOverline) -> Self1078     unsafe fn from_glib(value: ffi::PangoOverline) -> Self {
1079         match value {
1080             ffi::PANGO_OVERLINE_NONE => Self::None,
1081             ffi::PANGO_OVERLINE_SINGLE => Self::Single,
1082             value => Self::__Unknown(value),
1083         }
1084     }
1085 }
1086 
1087 #[cfg(any(feature = "v1_46", feature = "dox"))]
1088 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1089 impl StaticType for Overline {
static_type() -> Type1090     fn static_type() -> Type {
1091         unsafe { from_glib(ffi::pango_overline_get_type()) }
1092     }
1093 }
1094 
1095 #[cfg(any(feature = "v1_46", feature = "dox"))]
1096 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1097 impl glib::value::ValueType for Overline {
1098     type Type = Self;
1099 }
1100 
1101 #[cfg(any(feature = "v1_46", feature = "dox"))]
1102 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1103 unsafe impl<'a> FromValue<'a> for Overline {
1104     type Checker = glib::value::GenericValueTypeChecker<Self>;
1105 
from_value(value: &'a glib::Value) -> Self1106     unsafe fn from_value(value: &'a glib::Value) -> Self {
1107         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1108     }
1109 }
1110 
1111 #[cfg(any(feature = "v1_46", feature = "dox"))]
1112 #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_46")))]
1113 impl ToValue for Overline {
to_value(&self) -> glib::Value1114     fn to_value(&self) -> glib::Value {
1115         let mut value = glib::Value::for_value_type::<Self>();
1116         unsafe {
1117             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1118         }
1119         value
1120     }
1121 
value_type(&self) -> glib::Type1122     fn value_type(&self) -> glib::Type {
1123         Self::static_type()
1124     }
1125 }
1126 
1127 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1128 #[non_exhaustive]
1129 #[doc(alias = "PangoRenderPart")]
1130 pub enum RenderPart {
1131     #[doc(alias = "PANGO_RENDER_PART_FOREGROUND")]
1132     Foreground,
1133     #[doc(alias = "PANGO_RENDER_PART_BACKGROUND")]
1134     Background,
1135     #[doc(alias = "PANGO_RENDER_PART_UNDERLINE")]
1136     Underline,
1137     #[doc(alias = "PANGO_RENDER_PART_STRIKETHROUGH")]
1138     Strikethrough,
1139     #[doc(alias = "PANGO_RENDER_PART_OVERLINE")]
1140     Overline,
1141     #[doc(hidden)]
1142     __Unknown(i32),
1143 }
1144 
1145 impl fmt::Display for RenderPart {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1146     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1147         write!(
1148             f,
1149             "RenderPart::{}",
1150             match *self {
1151                 Self::Foreground => "Foreground",
1152                 Self::Background => "Background",
1153                 Self::Underline => "Underline",
1154                 Self::Strikethrough => "Strikethrough",
1155                 Self::Overline => "Overline",
1156                 _ => "Unknown",
1157             }
1158         )
1159     }
1160 }
1161 
1162 #[doc(hidden)]
1163 impl IntoGlib for RenderPart {
1164     type GlibType = ffi::PangoRenderPart;
1165 
into_glib(self) -> ffi::PangoRenderPart1166     fn into_glib(self) -> ffi::PangoRenderPart {
1167         match self {
1168             Self::Foreground => ffi::PANGO_RENDER_PART_FOREGROUND,
1169             Self::Background => ffi::PANGO_RENDER_PART_BACKGROUND,
1170             Self::Underline => ffi::PANGO_RENDER_PART_UNDERLINE,
1171             Self::Strikethrough => ffi::PANGO_RENDER_PART_STRIKETHROUGH,
1172             Self::Overline => ffi::PANGO_RENDER_PART_OVERLINE,
1173             Self::__Unknown(value) => value,
1174         }
1175     }
1176 }
1177 
1178 #[doc(hidden)]
1179 impl FromGlib<ffi::PangoRenderPart> for RenderPart {
from_glib(value: ffi::PangoRenderPart) -> Self1180     unsafe fn from_glib(value: ffi::PangoRenderPart) -> Self {
1181         match value {
1182             ffi::PANGO_RENDER_PART_FOREGROUND => Self::Foreground,
1183             ffi::PANGO_RENDER_PART_BACKGROUND => Self::Background,
1184             ffi::PANGO_RENDER_PART_UNDERLINE => Self::Underline,
1185             ffi::PANGO_RENDER_PART_STRIKETHROUGH => Self::Strikethrough,
1186             ffi::PANGO_RENDER_PART_OVERLINE => Self::Overline,
1187             value => Self::__Unknown(value),
1188         }
1189     }
1190 }
1191 
1192 impl StaticType for RenderPart {
static_type() -> Type1193     fn static_type() -> Type {
1194         unsafe { from_glib(ffi::pango_render_part_get_type()) }
1195     }
1196 }
1197 
1198 impl glib::value::ValueType for RenderPart {
1199     type Type = Self;
1200 }
1201 
1202 unsafe impl<'a> FromValue<'a> for RenderPart {
1203     type Checker = glib::value::GenericValueTypeChecker<Self>;
1204 
from_value(value: &'a glib::Value) -> Self1205     unsafe fn from_value(value: &'a glib::Value) -> Self {
1206         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1207     }
1208 }
1209 
1210 impl ToValue for RenderPart {
to_value(&self) -> glib::Value1211     fn to_value(&self) -> glib::Value {
1212         let mut value = glib::Value::for_value_type::<Self>();
1213         unsafe {
1214             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1215         }
1216         value
1217     }
1218 
value_type(&self) -> glib::Type1219     fn value_type(&self) -> glib::Type {
1220         Self::static_type()
1221     }
1222 }
1223 
1224 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1225 #[non_exhaustive]
1226 #[doc(alias = "PangoScript")]
1227 pub enum Script {
1228     #[doc(alias = "PANGO_SCRIPT_INVALID_CODE")]
1229     InvalidCode,
1230     #[doc(alias = "PANGO_SCRIPT_COMMON")]
1231     Common,
1232     #[doc(alias = "PANGO_SCRIPT_INHERITED")]
1233     Inherited,
1234     #[doc(alias = "PANGO_SCRIPT_ARABIC")]
1235     Arabic,
1236     #[doc(alias = "PANGO_SCRIPT_ARMENIAN")]
1237     Armenian,
1238     #[doc(alias = "PANGO_SCRIPT_BENGALI")]
1239     Bengali,
1240     #[doc(alias = "PANGO_SCRIPT_BOPOMOFO")]
1241     Bopomofo,
1242     #[doc(alias = "PANGO_SCRIPT_CHEROKEE")]
1243     Cherokee,
1244     #[doc(alias = "PANGO_SCRIPT_COPTIC")]
1245     Coptic,
1246     #[doc(alias = "PANGO_SCRIPT_CYRILLIC")]
1247     Cyrillic,
1248     #[doc(alias = "PANGO_SCRIPT_DESERET")]
1249     Deseret,
1250     #[doc(alias = "PANGO_SCRIPT_DEVANAGARI")]
1251     Devanagari,
1252     #[doc(alias = "PANGO_SCRIPT_ETHIOPIC")]
1253     Ethiopic,
1254     #[doc(alias = "PANGO_SCRIPT_GEORGIAN")]
1255     Georgian,
1256     #[doc(alias = "PANGO_SCRIPT_GOTHIC")]
1257     Gothic,
1258     #[doc(alias = "PANGO_SCRIPT_GREEK")]
1259     Greek,
1260     #[doc(alias = "PANGO_SCRIPT_GUJARATI")]
1261     Gujarati,
1262     #[doc(alias = "PANGO_SCRIPT_GURMUKHI")]
1263     Gurmukhi,
1264     #[doc(alias = "PANGO_SCRIPT_HAN")]
1265     Han,
1266     #[doc(alias = "PANGO_SCRIPT_HANGUL")]
1267     Hangul,
1268     #[doc(alias = "PANGO_SCRIPT_HEBREW")]
1269     Hebrew,
1270     #[doc(alias = "PANGO_SCRIPT_HIRAGANA")]
1271     Hiragana,
1272     #[doc(alias = "PANGO_SCRIPT_KANNADA")]
1273     Kannada,
1274     #[doc(alias = "PANGO_SCRIPT_KATAKANA")]
1275     Katakana,
1276     #[doc(alias = "PANGO_SCRIPT_KHMER")]
1277     Khmer,
1278     #[doc(alias = "PANGO_SCRIPT_LAO")]
1279     Lao,
1280     #[doc(alias = "PANGO_SCRIPT_LATIN")]
1281     Latin,
1282     #[doc(alias = "PANGO_SCRIPT_MALAYALAM")]
1283     Malayalam,
1284     #[doc(alias = "PANGO_SCRIPT_MONGOLIAN")]
1285     Mongolian,
1286     #[doc(alias = "PANGO_SCRIPT_MYANMAR")]
1287     Myanmar,
1288     #[doc(alias = "PANGO_SCRIPT_OGHAM")]
1289     Ogham,
1290     #[doc(alias = "PANGO_SCRIPT_OLD_ITALIC")]
1291     OldItalic,
1292     #[doc(alias = "PANGO_SCRIPT_ORIYA")]
1293     Oriya,
1294     #[doc(alias = "PANGO_SCRIPT_RUNIC")]
1295     Runic,
1296     #[doc(alias = "PANGO_SCRIPT_SINHALA")]
1297     Sinhala,
1298     #[doc(alias = "PANGO_SCRIPT_SYRIAC")]
1299     Syriac,
1300     #[doc(alias = "PANGO_SCRIPT_TAMIL")]
1301     Tamil,
1302     #[doc(alias = "PANGO_SCRIPT_TELUGU")]
1303     Telugu,
1304     #[doc(alias = "PANGO_SCRIPT_THAANA")]
1305     Thaana,
1306     #[doc(alias = "PANGO_SCRIPT_THAI")]
1307     Thai,
1308     #[doc(alias = "PANGO_SCRIPT_TIBETAN")]
1309     Tibetan,
1310     #[doc(alias = "PANGO_SCRIPT_CANADIAN_ABORIGINAL")]
1311     CanadianAboriginal,
1312     #[doc(alias = "PANGO_SCRIPT_YI")]
1313     Yi,
1314     #[doc(alias = "PANGO_SCRIPT_TAGALOG")]
1315     Tagalog,
1316     #[doc(alias = "PANGO_SCRIPT_HANUNOO")]
1317     Hanunoo,
1318     #[doc(alias = "PANGO_SCRIPT_BUHID")]
1319     Buhid,
1320     #[doc(alias = "PANGO_SCRIPT_TAGBANWA")]
1321     Tagbanwa,
1322     #[doc(alias = "PANGO_SCRIPT_BRAILLE")]
1323     Braille,
1324     #[doc(alias = "PANGO_SCRIPT_CYPRIOT")]
1325     Cypriot,
1326     #[doc(alias = "PANGO_SCRIPT_LIMBU")]
1327     Limbu,
1328     #[doc(alias = "PANGO_SCRIPT_OSMANYA")]
1329     Osmanya,
1330     #[doc(alias = "PANGO_SCRIPT_SHAVIAN")]
1331     Shavian,
1332     #[doc(alias = "PANGO_SCRIPT_LINEAR_B")]
1333     LinearB,
1334     #[doc(alias = "PANGO_SCRIPT_TAI_LE")]
1335     TaiLe,
1336     #[doc(alias = "PANGO_SCRIPT_UGARITIC")]
1337     Ugaritic,
1338     #[doc(alias = "PANGO_SCRIPT_NEW_TAI_LUE")]
1339     NewTaiLue,
1340     #[doc(alias = "PANGO_SCRIPT_BUGINESE")]
1341     Buginese,
1342     #[doc(alias = "PANGO_SCRIPT_GLAGOLITIC")]
1343     Glagolitic,
1344     #[doc(alias = "PANGO_SCRIPT_TIFINAGH")]
1345     Tifinagh,
1346     #[doc(alias = "PANGO_SCRIPT_SYLOTI_NAGRI")]
1347     SylotiNagri,
1348     #[doc(alias = "PANGO_SCRIPT_OLD_PERSIAN")]
1349     OldPersian,
1350     #[doc(alias = "PANGO_SCRIPT_KHAROSHTHI")]
1351     Kharoshthi,
1352     #[doc(alias = "PANGO_SCRIPT_UNKNOWN")]
1353     Unknown,
1354     #[doc(alias = "PANGO_SCRIPT_BALINESE")]
1355     Balinese,
1356     #[doc(alias = "PANGO_SCRIPT_CUNEIFORM")]
1357     Cuneiform,
1358     #[doc(alias = "PANGO_SCRIPT_PHOENICIAN")]
1359     Phoenician,
1360     #[doc(alias = "PANGO_SCRIPT_PHAGS_PA")]
1361     PhagsPa,
1362     #[doc(alias = "PANGO_SCRIPT_NKO")]
1363     Nko,
1364     #[doc(alias = "PANGO_SCRIPT_KAYAH_LI")]
1365     KayahLi,
1366     #[doc(alias = "PANGO_SCRIPT_LEPCHA")]
1367     Lepcha,
1368     #[doc(alias = "PANGO_SCRIPT_REJANG")]
1369     Rejang,
1370     #[doc(alias = "PANGO_SCRIPT_SUNDANESE")]
1371     Sundanese,
1372     #[doc(alias = "PANGO_SCRIPT_SAURASHTRA")]
1373     Saurashtra,
1374     #[doc(alias = "PANGO_SCRIPT_CHAM")]
1375     Cham,
1376     #[doc(alias = "PANGO_SCRIPT_OL_CHIKI")]
1377     OlChiki,
1378     #[doc(alias = "PANGO_SCRIPT_VAI")]
1379     Vai,
1380     #[doc(alias = "PANGO_SCRIPT_CARIAN")]
1381     Carian,
1382     #[doc(alias = "PANGO_SCRIPT_LYCIAN")]
1383     Lycian,
1384     #[doc(alias = "PANGO_SCRIPT_LYDIAN")]
1385     Lydian,
1386     #[doc(alias = "PANGO_SCRIPT_BATAK")]
1387     Batak,
1388     #[doc(alias = "PANGO_SCRIPT_BRAHMI")]
1389     Brahmi,
1390     #[doc(alias = "PANGO_SCRIPT_MANDAIC")]
1391     Mandaic,
1392     #[doc(alias = "PANGO_SCRIPT_CHAKMA")]
1393     Chakma,
1394     #[doc(alias = "PANGO_SCRIPT_MEROITIC_CURSIVE")]
1395     MeroiticCursive,
1396     #[doc(alias = "PANGO_SCRIPT_MEROITIC_HIEROGLYPHS")]
1397     MeroiticHieroglyphs,
1398     #[doc(alias = "PANGO_SCRIPT_MIAO")]
1399     Miao,
1400     #[doc(alias = "PANGO_SCRIPT_SHARADA")]
1401     Sharada,
1402     #[doc(alias = "PANGO_SCRIPT_SORA_SOMPENG")]
1403     SoraSompeng,
1404     #[doc(alias = "PANGO_SCRIPT_TAKRI")]
1405     Takri,
1406     #[doc(alias = "PANGO_SCRIPT_BASSA_VAH")]
1407     BassaVah,
1408     #[doc(alias = "PANGO_SCRIPT_CAUCASIAN_ALBANIAN")]
1409     CaucasianAlbanian,
1410     #[doc(alias = "PANGO_SCRIPT_DUPLOYAN")]
1411     Duployan,
1412     #[doc(alias = "PANGO_SCRIPT_ELBASAN")]
1413     Elbasan,
1414     #[doc(alias = "PANGO_SCRIPT_GRANTHA")]
1415     Grantha,
1416     #[doc(alias = "PANGO_SCRIPT_KHOJKI")]
1417     Khojki,
1418     #[doc(alias = "PANGO_SCRIPT_KHUDAWADI")]
1419     Khudawadi,
1420     #[doc(alias = "PANGO_SCRIPT_LINEAR_A")]
1421     LinearA,
1422     #[doc(alias = "PANGO_SCRIPT_MAHAJANI")]
1423     Mahajani,
1424     #[doc(alias = "PANGO_SCRIPT_MANICHAEAN")]
1425     Manichaean,
1426     #[doc(alias = "PANGO_SCRIPT_MENDE_KIKAKUI")]
1427     MendeKikakui,
1428     #[doc(alias = "PANGO_SCRIPT_MODI")]
1429     Modi,
1430     #[doc(alias = "PANGO_SCRIPT_MRO")]
1431     Mro,
1432     #[doc(alias = "PANGO_SCRIPT_NABATAEAN")]
1433     Nabataean,
1434     #[doc(alias = "PANGO_SCRIPT_OLD_NORTH_ARABIAN")]
1435     OldNorthArabian,
1436     #[doc(alias = "PANGO_SCRIPT_OLD_PERMIC")]
1437     OldPermic,
1438     #[doc(alias = "PANGO_SCRIPT_PAHAWH_HMONG")]
1439     PahawhHmong,
1440     #[doc(alias = "PANGO_SCRIPT_PALMYRENE")]
1441     Palmyrene,
1442     #[doc(alias = "PANGO_SCRIPT_PAU_CIN_HAU")]
1443     PauCinHau,
1444     #[doc(alias = "PANGO_SCRIPT_PSALTER_PAHLAVI")]
1445     PsalterPahlavi,
1446     #[doc(alias = "PANGO_SCRIPT_SIDDHAM")]
1447     Siddham,
1448     #[doc(alias = "PANGO_SCRIPT_TIRHUTA")]
1449     Tirhuta,
1450     #[doc(alias = "PANGO_SCRIPT_WARANG_CITI")]
1451     WarangCiti,
1452     #[doc(alias = "PANGO_SCRIPT_AHOM")]
1453     Ahom,
1454     #[doc(alias = "PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS")]
1455     AnatolianHieroglyphs,
1456     #[doc(alias = "PANGO_SCRIPT_HATRAN")]
1457     Hatran,
1458     #[doc(alias = "PANGO_SCRIPT_MULTANI")]
1459     Multani,
1460     #[doc(alias = "PANGO_SCRIPT_OLD_HUNGARIAN")]
1461     OldHungarian,
1462     #[doc(alias = "PANGO_SCRIPT_SIGNWRITING")]
1463     Signwriting,
1464     #[doc(hidden)]
1465     __Unknown(i32),
1466 }
1467 
1468 impl Script {
1469     #[cfg_attr(feature = "v1_44", deprecated = "Since 1.44")]
1470     #[doc(alias = "pango_script_for_unichar")]
for_unichar(ch: char) -> Script1471     pub fn for_unichar(ch: char) -> Script {
1472         unsafe { from_glib(ffi::pango_script_for_unichar(ch.into_glib())) }
1473     }
1474 
1475     #[doc(alias = "pango_script_get_sample_language")]
1476     #[doc(alias = "get_sample_language")]
sample_language(self) -> Option<Language>1477     pub fn sample_language(self) -> Option<Language> {
1478         unsafe { from_glib_full(ffi::pango_script_get_sample_language(self.into_glib())) }
1479     }
1480 }
1481 
1482 impl fmt::Display for Script {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1483     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1484         write!(
1485             f,
1486             "Script::{}",
1487             match *self {
1488                 Self::InvalidCode => "InvalidCode",
1489                 Self::Common => "Common",
1490                 Self::Inherited => "Inherited",
1491                 Self::Arabic => "Arabic",
1492                 Self::Armenian => "Armenian",
1493                 Self::Bengali => "Bengali",
1494                 Self::Bopomofo => "Bopomofo",
1495                 Self::Cherokee => "Cherokee",
1496                 Self::Coptic => "Coptic",
1497                 Self::Cyrillic => "Cyrillic",
1498                 Self::Deseret => "Deseret",
1499                 Self::Devanagari => "Devanagari",
1500                 Self::Ethiopic => "Ethiopic",
1501                 Self::Georgian => "Georgian",
1502                 Self::Gothic => "Gothic",
1503                 Self::Greek => "Greek",
1504                 Self::Gujarati => "Gujarati",
1505                 Self::Gurmukhi => "Gurmukhi",
1506                 Self::Han => "Han",
1507                 Self::Hangul => "Hangul",
1508                 Self::Hebrew => "Hebrew",
1509                 Self::Hiragana => "Hiragana",
1510                 Self::Kannada => "Kannada",
1511                 Self::Katakana => "Katakana",
1512                 Self::Khmer => "Khmer",
1513                 Self::Lao => "Lao",
1514                 Self::Latin => "Latin",
1515                 Self::Malayalam => "Malayalam",
1516                 Self::Mongolian => "Mongolian",
1517                 Self::Myanmar => "Myanmar",
1518                 Self::Ogham => "Ogham",
1519                 Self::OldItalic => "OldItalic",
1520                 Self::Oriya => "Oriya",
1521                 Self::Runic => "Runic",
1522                 Self::Sinhala => "Sinhala",
1523                 Self::Syriac => "Syriac",
1524                 Self::Tamil => "Tamil",
1525                 Self::Telugu => "Telugu",
1526                 Self::Thaana => "Thaana",
1527                 Self::Thai => "Thai",
1528                 Self::Tibetan => "Tibetan",
1529                 Self::CanadianAboriginal => "CanadianAboriginal",
1530                 Self::Yi => "Yi",
1531                 Self::Tagalog => "Tagalog",
1532                 Self::Hanunoo => "Hanunoo",
1533                 Self::Buhid => "Buhid",
1534                 Self::Tagbanwa => "Tagbanwa",
1535                 Self::Braille => "Braille",
1536                 Self::Cypriot => "Cypriot",
1537                 Self::Limbu => "Limbu",
1538                 Self::Osmanya => "Osmanya",
1539                 Self::Shavian => "Shavian",
1540                 Self::LinearB => "LinearB",
1541                 Self::TaiLe => "TaiLe",
1542                 Self::Ugaritic => "Ugaritic",
1543                 Self::NewTaiLue => "NewTaiLue",
1544                 Self::Buginese => "Buginese",
1545                 Self::Glagolitic => "Glagolitic",
1546                 Self::Tifinagh => "Tifinagh",
1547                 Self::SylotiNagri => "SylotiNagri",
1548                 Self::OldPersian => "OldPersian",
1549                 Self::Kharoshthi => "Kharoshthi",
1550                 Self::Unknown => "Unknown",
1551                 Self::Balinese => "Balinese",
1552                 Self::Cuneiform => "Cuneiform",
1553                 Self::Phoenician => "Phoenician",
1554                 Self::PhagsPa => "PhagsPa",
1555                 Self::Nko => "Nko",
1556                 Self::KayahLi => "KayahLi",
1557                 Self::Lepcha => "Lepcha",
1558                 Self::Rejang => "Rejang",
1559                 Self::Sundanese => "Sundanese",
1560                 Self::Saurashtra => "Saurashtra",
1561                 Self::Cham => "Cham",
1562                 Self::OlChiki => "OlChiki",
1563                 Self::Vai => "Vai",
1564                 Self::Carian => "Carian",
1565                 Self::Lycian => "Lycian",
1566                 Self::Lydian => "Lydian",
1567                 Self::Batak => "Batak",
1568                 Self::Brahmi => "Brahmi",
1569                 Self::Mandaic => "Mandaic",
1570                 Self::Chakma => "Chakma",
1571                 Self::MeroiticCursive => "MeroiticCursive",
1572                 Self::MeroiticHieroglyphs => "MeroiticHieroglyphs",
1573                 Self::Miao => "Miao",
1574                 Self::Sharada => "Sharada",
1575                 Self::SoraSompeng => "SoraSompeng",
1576                 Self::Takri => "Takri",
1577                 Self::BassaVah => "BassaVah",
1578                 Self::CaucasianAlbanian => "CaucasianAlbanian",
1579                 Self::Duployan => "Duployan",
1580                 Self::Elbasan => "Elbasan",
1581                 Self::Grantha => "Grantha",
1582                 Self::Khojki => "Khojki",
1583                 Self::Khudawadi => "Khudawadi",
1584                 Self::LinearA => "LinearA",
1585                 Self::Mahajani => "Mahajani",
1586                 Self::Manichaean => "Manichaean",
1587                 Self::MendeKikakui => "MendeKikakui",
1588                 Self::Modi => "Modi",
1589                 Self::Mro => "Mro",
1590                 Self::Nabataean => "Nabataean",
1591                 Self::OldNorthArabian => "OldNorthArabian",
1592                 Self::OldPermic => "OldPermic",
1593                 Self::PahawhHmong => "PahawhHmong",
1594                 Self::Palmyrene => "Palmyrene",
1595                 Self::PauCinHau => "PauCinHau",
1596                 Self::PsalterPahlavi => "PsalterPahlavi",
1597                 Self::Siddham => "Siddham",
1598                 Self::Tirhuta => "Tirhuta",
1599                 Self::WarangCiti => "WarangCiti",
1600                 Self::Ahom => "Ahom",
1601                 Self::AnatolianHieroglyphs => "AnatolianHieroglyphs",
1602                 Self::Hatran => "Hatran",
1603                 Self::Multani => "Multani",
1604                 Self::OldHungarian => "OldHungarian",
1605                 Self::Signwriting => "Signwriting",
1606                 _ => "Unknown",
1607             }
1608         )
1609     }
1610 }
1611 
1612 #[doc(hidden)]
1613 impl IntoGlib for Script {
1614     type GlibType = ffi::PangoScript;
1615 
into_glib(self) -> ffi::PangoScript1616     fn into_glib(self) -> ffi::PangoScript {
1617         match self {
1618             Self::InvalidCode => ffi::PANGO_SCRIPT_INVALID_CODE,
1619             Self::Common => ffi::PANGO_SCRIPT_COMMON,
1620             Self::Inherited => ffi::PANGO_SCRIPT_INHERITED,
1621             Self::Arabic => ffi::PANGO_SCRIPT_ARABIC,
1622             Self::Armenian => ffi::PANGO_SCRIPT_ARMENIAN,
1623             Self::Bengali => ffi::PANGO_SCRIPT_BENGALI,
1624             Self::Bopomofo => ffi::PANGO_SCRIPT_BOPOMOFO,
1625             Self::Cherokee => ffi::PANGO_SCRIPT_CHEROKEE,
1626             Self::Coptic => ffi::PANGO_SCRIPT_COPTIC,
1627             Self::Cyrillic => ffi::PANGO_SCRIPT_CYRILLIC,
1628             Self::Deseret => ffi::PANGO_SCRIPT_DESERET,
1629             Self::Devanagari => ffi::PANGO_SCRIPT_DEVANAGARI,
1630             Self::Ethiopic => ffi::PANGO_SCRIPT_ETHIOPIC,
1631             Self::Georgian => ffi::PANGO_SCRIPT_GEORGIAN,
1632             Self::Gothic => ffi::PANGO_SCRIPT_GOTHIC,
1633             Self::Greek => ffi::PANGO_SCRIPT_GREEK,
1634             Self::Gujarati => ffi::PANGO_SCRIPT_GUJARATI,
1635             Self::Gurmukhi => ffi::PANGO_SCRIPT_GURMUKHI,
1636             Self::Han => ffi::PANGO_SCRIPT_HAN,
1637             Self::Hangul => ffi::PANGO_SCRIPT_HANGUL,
1638             Self::Hebrew => ffi::PANGO_SCRIPT_HEBREW,
1639             Self::Hiragana => ffi::PANGO_SCRIPT_HIRAGANA,
1640             Self::Kannada => ffi::PANGO_SCRIPT_KANNADA,
1641             Self::Katakana => ffi::PANGO_SCRIPT_KATAKANA,
1642             Self::Khmer => ffi::PANGO_SCRIPT_KHMER,
1643             Self::Lao => ffi::PANGO_SCRIPT_LAO,
1644             Self::Latin => ffi::PANGO_SCRIPT_LATIN,
1645             Self::Malayalam => ffi::PANGO_SCRIPT_MALAYALAM,
1646             Self::Mongolian => ffi::PANGO_SCRIPT_MONGOLIAN,
1647             Self::Myanmar => ffi::PANGO_SCRIPT_MYANMAR,
1648             Self::Ogham => ffi::PANGO_SCRIPT_OGHAM,
1649             Self::OldItalic => ffi::PANGO_SCRIPT_OLD_ITALIC,
1650             Self::Oriya => ffi::PANGO_SCRIPT_ORIYA,
1651             Self::Runic => ffi::PANGO_SCRIPT_RUNIC,
1652             Self::Sinhala => ffi::PANGO_SCRIPT_SINHALA,
1653             Self::Syriac => ffi::PANGO_SCRIPT_SYRIAC,
1654             Self::Tamil => ffi::PANGO_SCRIPT_TAMIL,
1655             Self::Telugu => ffi::PANGO_SCRIPT_TELUGU,
1656             Self::Thaana => ffi::PANGO_SCRIPT_THAANA,
1657             Self::Thai => ffi::PANGO_SCRIPT_THAI,
1658             Self::Tibetan => ffi::PANGO_SCRIPT_TIBETAN,
1659             Self::CanadianAboriginal => ffi::PANGO_SCRIPT_CANADIAN_ABORIGINAL,
1660             Self::Yi => ffi::PANGO_SCRIPT_YI,
1661             Self::Tagalog => ffi::PANGO_SCRIPT_TAGALOG,
1662             Self::Hanunoo => ffi::PANGO_SCRIPT_HANUNOO,
1663             Self::Buhid => ffi::PANGO_SCRIPT_BUHID,
1664             Self::Tagbanwa => ffi::PANGO_SCRIPT_TAGBANWA,
1665             Self::Braille => ffi::PANGO_SCRIPT_BRAILLE,
1666             Self::Cypriot => ffi::PANGO_SCRIPT_CYPRIOT,
1667             Self::Limbu => ffi::PANGO_SCRIPT_LIMBU,
1668             Self::Osmanya => ffi::PANGO_SCRIPT_OSMANYA,
1669             Self::Shavian => ffi::PANGO_SCRIPT_SHAVIAN,
1670             Self::LinearB => ffi::PANGO_SCRIPT_LINEAR_B,
1671             Self::TaiLe => ffi::PANGO_SCRIPT_TAI_LE,
1672             Self::Ugaritic => ffi::PANGO_SCRIPT_UGARITIC,
1673             Self::NewTaiLue => ffi::PANGO_SCRIPT_NEW_TAI_LUE,
1674             Self::Buginese => ffi::PANGO_SCRIPT_BUGINESE,
1675             Self::Glagolitic => ffi::PANGO_SCRIPT_GLAGOLITIC,
1676             Self::Tifinagh => ffi::PANGO_SCRIPT_TIFINAGH,
1677             Self::SylotiNagri => ffi::PANGO_SCRIPT_SYLOTI_NAGRI,
1678             Self::OldPersian => ffi::PANGO_SCRIPT_OLD_PERSIAN,
1679             Self::Kharoshthi => ffi::PANGO_SCRIPT_KHAROSHTHI,
1680             Self::Unknown => ffi::PANGO_SCRIPT_UNKNOWN,
1681             Self::Balinese => ffi::PANGO_SCRIPT_BALINESE,
1682             Self::Cuneiform => ffi::PANGO_SCRIPT_CUNEIFORM,
1683             Self::Phoenician => ffi::PANGO_SCRIPT_PHOENICIAN,
1684             Self::PhagsPa => ffi::PANGO_SCRIPT_PHAGS_PA,
1685             Self::Nko => ffi::PANGO_SCRIPT_NKO,
1686             Self::KayahLi => ffi::PANGO_SCRIPT_KAYAH_LI,
1687             Self::Lepcha => ffi::PANGO_SCRIPT_LEPCHA,
1688             Self::Rejang => ffi::PANGO_SCRIPT_REJANG,
1689             Self::Sundanese => ffi::PANGO_SCRIPT_SUNDANESE,
1690             Self::Saurashtra => ffi::PANGO_SCRIPT_SAURASHTRA,
1691             Self::Cham => ffi::PANGO_SCRIPT_CHAM,
1692             Self::OlChiki => ffi::PANGO_SCRIPT_OL_CHIKI,
1693             Self::Vai => ffi::PANGO_SCRIPT_VAI,
1694             Self::Carian => ffi::PANGO_SCRIPT_CARIAN,
1695             Self::Lycian => ffi::PANGO_SCRIPT_LYCIAN,
1696             Self::Lydian => ffi::PANGO_SCRIPT_LYDIAN,
1697             Self::Batak => ffi::PANGO_SCRIPT_BATAK,
1698             Self::Brahmi => ffi::PANGO_SCRIPT_BRAHMI,
1699             Self::Mandaic => ffi::PANGO_SCRIPT_MANDAIC,
1700             Self::Chakma => ffi::PANGO_SCRIPT_CHAKMA,
1701             Self::MeroiticCursive => ffi::PANGO_SCRIPT_MEROITIC_CURSIVE,
1702             Self::MeroiticHieroglyphs => ffi::PANGO_SCRIPT_MEROITIC_HIEROGLYPHS,
1703             Self::Miao => ffi::PANGO_SCRIPT_MIAO,
1704             Self::Sharada => ffi::PANGO_SCRIPT_SHARADA,
1705             Self::SoraSompeng => ffi::PANGO_SCRIPT_SORA_SOMPENG,
1706             Self::Takri => ffi::PANGO_SCRIPT_TAKRI,
1707             Self::BassaVah => ffi::PANGO_SCRIPT_BASSA_VAH,
1708             Self::CaucasianAlbanian => ffi::PANGO_SCRIPT_CAUCASIAN_ALBANIAN,
1709             Self::Duployan => ffi::PANGO_SCRIPT_DUPLOYAN,
1710             Self::Elbasan => ffi::PANGO_SCRIPT_ELBASAN,
1711             Self::Grantha => ffi::PANGO_SCRIPT_GRANTHA,
1712             Self::Khojki => ffi::PANGO_SCRIPT_KHOJKI,
1713             Self::Khudawadi => ffi::PANGO_SCRIPT_KHUDAWADI,
1714             Self::LinearA => ffi::PANGO_SCRIPT_LINEAR_A,
1715             Self::Mahajani => ffi::PANGO_SCRIPT_MAHAJANI,
1716             Self::Manichaean => ffi::PANGO_SCRIPT_MANICHAEAN,
1717             Self::MendeKikakui => ffi::PANGO_SCRIPT_MENDE_KIKAKUI,
1718             Self::Modi => ffi::PANGO_SCRIPT_MODI,
1719             Self::Mro => ffi::PANGO_SCRIPT_MRO,
1720             Self::Nabataean => ffi::PANGO_SCRIPT_NABATAEAN,
1721             Self::OldNorthArabian => ffi::PANGO_SCRIPT_OLD_NORTH_ARABIAN,
1722             Self::OldPermic => ffi::PANGO_SCRIPT_OLD_PERMIC,
1723             Self::PahawhHmong => ffi::PANGO_SCRIPT_PAHAWH_HMONG,
1724             Self::Palmyrene => ffi::PANGO_SCRIPT_PALMYRENE,
1725             Self::PauCinHau => ffi::PANGO_SCRIPT_PAU_CIN_HAU,
1726             Self::PsalterPahlavi => ffi::PANGO_SCRIPT_PSALTER_PAHLAVI,
1727             Self::Siddham => ffi::PANGO_SCRIPT_SIDDHAM,
1728             Self::Tirhuta => ffi::PANGO_SCRIPT_TIRHUTA,
1729             Self::WarangCiti => ffi::PANGO_SCRIPT_WARANG_CITI,
1730             Self::Ahom => ffi::PANGO_SCRIPT_AHOM,
1731             Self::AnatolianHieroglyphs => ffi::PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS,
1732             Self::Hatran => ffi::PANGO_SCRIPT_HATRAN,
1733             Self::Multani => ffi::PANGO_SCRIPT_MULTANI,
1734             Self::OldHungarian => ffi::PANGO_SCRIPT_OLD_HUNGARIAN,
1735             Self::Signwriting => ffi::PANGO_SCRIPT_SIGNWRITING,
1736             Self::__Unknown(value) => value,
1737         }
1738     }
1739 }
1740 
1741 #[doc(hidden)]
1742 impl FromGlib<ffi::PangoScript> for Script {
from_glib(value: ffi::PangoScript) -> Self1743     unsafe fn from_glib(value: ffi::PangoScript) -> Self {
1744         match value {
1745             ffi::PANGO_SCRIPT_INVALID_CODE => Self::InvalidCode,
1746             ffi::PANGO_SCRIPT_COMMON => Self::Common,
1747             ffi::PANGO_SCRIPT_INHERITED => Self::Inherited,
1748             ffi::PANGO_SCRIPT_ARABIC => Self::Arabic,
1749             ffi::PANGO_SCRIPT_ARMENIAN => Self::Armenian,
1750             ffi::PANGO_SCRIPT_BENGALI => Self::Bengali,
1751             ffi::PANGO_SCRIPT_BOPOMOFO => Self::Bopomofo,
1752             ffi::PANGO_SCRIPT_CHEROKEE => Self::Cherokee,
1753             ffi::PANGO_SCRIPT_COPTIC => Self::Coptic,
1754             ffi::PANGO_SCRIPT_CYRILLIC => Self::Cyrillic,
1755             ffi::PANGO_SCRIPT_DESERET => Self::Deseret,
1756             ffi::PANGO_SCRIPT_DEVANAGARI => Self::Devanagari,
1757             ffi::PANGO_SCRIPT_ETHIOPIC => Self::Ethiopic,
1758             ffi::PANGO_SCRIPT_GEORGIAN => Self::Georgian,
1759             ffi::PANGO_SCRIPT_GOTHIC => Self::Gothic,
1760             ffi::PANGO_SCRIPT_GREEK => Self::Greek,
1761             ffi::PANGO_SCRIPT_GUJARATI => Self::Gujarati,
1762             ffi::PANGO_SCRIPT_GURMUKHI => Self::Gurmukhi,
1763             ffi::PANGO_SCRIPT_HAN => Self::Han,
1764             ffi::PANGO_SCRIPT_HANGUL => Self::Hangul,
1765             ffi::PANGO_SCRIPT_HEBREW => Self::Hebrew,
1766             ffi::PANGO_SCRIPT_HIRAGANA => Self::Hiragana,
1767             ffi::PANGO_SCRIPT_KANNADA => Self::Kannada,
1768             ffi::PANGO_SCRIPT_KATAKANA => Self::Katakana,
1769             ffi::PANGO_SCRIPT_KHMER => Self::Khmer,
1770             ffi::PANGO_SCRIPT_LAO => Self::Lao,
1771             ffi::PANGO_SCRIPT_LATIN => Self::Latin,
1772             ffi::PANGO_SCRIPT_MALAYALAM => Self::Malayalam,
1773             ffi::PANGO_SCRIPT_MONGOLIAN => Self::Mongolian,
1774             ffi::PANGO_SCRIPT_MYANMAR => Self::Myanmar,
1775             ffi::PANGO_SCRIPT_OGHAM => Self::Ogham,
1776             ffi::PANGO_SCRIPT_OLD_ITALIC => Self::OldItalic,
1777             ffi::PANGO_SCRIPT_ORIYA => Self::Oriya,
1778             ffi::PANGO_SCRIPT_RUNIC => Self::Runic,
1779             ffi::PANGO_SCRIPT_SINHALA => Self::Sinhala,
1780             ffi::PANGO_SCRIPT_SYRIAC => Self::Syriac,
1781             ffi::PANGO_SCRIPT_TAMIL => Self::Tamil,
1782             ffi::PANGO_SCRIPT_TELUGU => Self::Telugu,
1783             ffi::PANGO_SCRIPT_THAANA => Self::Thaana,
1784             ffi::PANGO_SCRIPT_THAI => Self::Thai,
1785             ffi::PANGO_SCRIPT_TIBETAN => Self::Tibetan,
1786             ffi::PANGO_SCRIPT_CANADIAN_ABORIGINAL => Self::CanadianAboriginal,
1787             ffi::PANGO_SCRIPT_YI => Self::Yi,
1788             ffi::PANGO_SCRIPT_TAGALOG => Self::Tagalog,
1789             ffi::PANGO_SCRIPT_HANUNOO => Self::Hanunoo,
1790             ffi::PANGO_SCRIPT_BUHID => Self::Buhid,
1791             ffi::PANGO_SCRIPT_TAGBANWA => Self::Tagbanwa,
1792             ffi::PANGO_SCRIPT_BRAILLE => Self::Braille,
1793             ffi::PANGO_SCRIPT_CYPRIOT => Self::Cypriot,
1794             ffi::PANGO_SCRIPT_LIMBU => Self::Limbu,
1795             ffi::PANGO_SCRIPT_OSMANYA => Self::Osmanya,
1796             ffi::PANGO_SCRIPT_SHAVIAN => Self::Shavian,
1797             ffi::PANGO_SCRIPT_LINEAR_B => Self::LinearB,
1798             ffi::PANGO_SCRIPT_TAI_LE => Self::TaiLe,
1799             ffi::PANGO_SCRIPT_UGARITIC => Self::Ugaritic,
1800             ffi::PANGO_SCRIPT_NEW_TAI_LUE => Self::NewTaiLue,
1801             ffi::PANGO_SCRIPT_BUGINESE => Self::Buginese,
1802             ffi::PANGO_SCRIPT_GLAGOLITIC => Self::Glagolitic,
1803             ffi::PANGO_SCRIPT_TIFINAGH => Self::Tifinagh,
1804             ffi::PANGO_SCRIPT_SYLOTI_NAGRI => Self::SylotiNagri,
1805             ffi::PANGO_SCRIPT_OLD_PERSIAN => Self::OldPersian,
1806             ffi::PANGO_SCRIPT_KHAROSHTHI => Self::Kharoshthi,
1807             ffi::PANGO_SCRIPT_UNKNOWN => Self::Unknown,
1808             ffi::PANGO_SCRIPT_BALINESE => Self::Balinese,
1809             ffi::PANGO_SCRIPT_CUNEIFORM => Self::Cuneiform,
1810             ffi::PANGO_SCRIPT_PHOENICIAN => Self::Phoenician,
1811             ffi::PANGO_SCRIPT_PHAGS_PA => Self::PhagsPa,
1812             ffi::PANGO_SCRIPT_NKO => Self::Nko,
1813             ffi::PANGO_SCRIPT_KAYAH_LI => Self::KayahLi,
1814             ffi::PANGO_SCRIPT_LEPCHA => Self::Lepcha,
1815             ffi::PANGO_SCRIPT_REJANG => Self::Rejang,
1816             ffi::PANGO_SCRIPT_SUNDANESE => Self::Sundanese,
1817             ffi::PANGO_SCRIPT_SAURASHTRA => Self::Saurashtra,
1818             ffi::PANGO_SCRIPT_CHAM => Self::Cham,
1819             ffi::PANGO_SCRIPT_OL_CHIKI => Self::OlChiki,
1820             ffi::PANGO_SCRIPT_VAI => Self::Vai,
1821             ffi::PANGO_SCRIPT_CARIAN => Self::Carian,
1822             ffi::PANGO_SCRIPT_LYCIAN => Self::Lycian,
1823             ffi::PANGO_SCRIPT_LYDIAN => Self::Lydian,
1824             ffi::PANGO_SCRIPT_BATAK => Self::Batak,
1825             ffi::PANGO_SCRIPT_BRAHMI => Self::Brahmi,
1826             ffi::PANGO_SCRIPT_MANDAIC => Self::Mandaic,
1827             ffi::PANGO_SCRIPT_CHAKMA => Self::Chakma,
1828             ffi::PANGO_SCRIPT_MEROITIC_CURSIVE => Self::MeroiticCursive,
1829             ffi::PANGO_SCRIPT_MEROITIC_HIEROGLYPHS => Self::MeroiticHieroglyphs,
1830             ffi::PANGO_SCRIPT_MIAO => Self::Miao,
1831             ffi::PANGO_SCRIPT_SHARADA => Self::Sharada,
1832             ffi::PANGO_SCRIPT_SORA_SOMPENG => Self::SoraSompeng,
1833             ffi::PANGO_SCRIPT_TAKRI => Self::Takri,
1834             ffi::PANGO_SCRIPT_BASSA_VAH => Self::BassaVah,
1835             ffi::PANGO_SCRIPT_CAUCASIAN_ALBANIAN => Self::CaucasianAlbanian,
1836             ffi::PANGO_SCRIPT_DUPLOYAN => Self::Duployan,
1837             ffi::PANGO_SCRIPT_ELBASAN => Self::Elbasan,
1838             ffi::PANGO_SCRIPT_GRANTHA => Self::Grantha,
1839             ffi::PANGO_SCRIPT_KHOJKI => Self::Khojki,
1840             ffi::PANGO_SCRIPT_KHUDAWADI => Self::Khudawadi,
1841             ffi::PANGO_SCRIPT_LINEAR_A => Self::LinearA,
1842             ffi::PANGO_SCRIPT_MAHAJANI => Self::Mahajani,
1843             ffi::PANGO_SCRIPT_MANICHAEAN => Self::Manichaean,
1844             ffi::PANGO_SCRIPT_MENDE_KIKAKUI => Self::MendeKikakui,
1845             ffi::PANGO_SCRIPT_MODI => Self::Modi,
1846             ffi::PANGO_SCRIPT_MRO => Self::Mro,
1847             ffi::PANGO_SCRIPT_NABATAEAN => Self::Nabataean,
1848             ffi::PANGO_SCRIPT_OLD_NORTH_ARABIAN => Self::OldNorthArabian,
1849             ffi::PANGO_SCRIPT_OLD_PERMIC => Self::OldPermic,
1850             ffi::PANGO_SCRIPT_PAHAWH_HMONG => Self::PahawhHmong,
1851             ffi::PANGO_SCRIPT_PALMYRENE => Self::Palmyrene,
1852             ffi::PANGO_SCRIPT_PAU_CIN_HAU => Self::PauCinHau,
1853             ffi::PANGO_SCRIPT_PSALTER_PAHLAVI => Self::PsalterPahlavi,
1854             ffi::PANGO_SCRIPT_SIDDHAM => Self::Siddham,
1855             ffi::PANGO_SCRIPT_TIRHUTA => Self::Tirhuta,
1856             ffi::PANGO_SCRIPT_WARANG_CITI => Self::WarangCiti,
1857             ffi::PANGO_SCRIPT_AHOM => Self::Ahom,
1858             ffi::PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS => Self::AnatolianHieroglyphs,
1859             ffi::PANGO_SCRIPT_HATRAN => Self::Hatran,
1860             ffi::PANGO_SCRIPT_MULTANI => Self::Multani,
1861             ffi::PANGO_SCRIPT_OLD_HUNGARIAN => Self::OldHungarian,
1862             ffi::PANGO_SCRIPT_SIGNWRITING => Self::Signwriting,
1863             value => Self::__Unknown(value),
1864         }
1865     }
1866 }
1867 
1868 impl StaticType for Script {
static_type() -> Type1869     fn static_type() -> Type {
1870         unsafe { from_glib(ffi::pango_script_get_type()) }
1871     }
1872 }
1873 
1874 impl glib::value::ValueType for Script {
1875     type Type = Self;
1876 }
1877 
1878 unsafe impl<'a> FromValue<'a> for Script {
1879     type Checker = glib::value::GenericValueTypeChecker<Self>;
1880 
from_value(value: &'a glib::Value) -> Self1881     unsafe fn from_value(value: &'a glib::Value) -> Self {
1882         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1883     }
1884 }
1885 
1886 impl ToValue for Script {
to_value(&self) -> glib::Value1887     fn to_value(&self) -> glib::Value {
1888         let mut value = glib::Value::for_value_type::<Self>();
1889         unsafe {
1890             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1891         }
1892         value
1893     }
1894 
value_type(&self) -> glib::Type1895     fn value_type(&self) -> glib::Type {
1896         Self::static_type()
1897     }
1898 }
1899 
1900 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1901 #[non_exhaustive]
1902 #[doc(alias = "PangoStretch")]
1903 pub enum Stretch {
1904     #[doc(alias = "PANGO_STRETCH_ULTRA_CONDENSED")]
1905     UltraCondensed,
1906     #[doc(alias = "PANGO_STRETCH_EXTRA_CONDENSED")]
1907     ExtraCondensed,
1908     #[doc(alias = "PANGO_STRETCH_CONDENSED")]
1909     Condensed,
1910     #[doc(alias = "PANGO_STRETCH_SEMI_CONDENSED")]
1911     SemiCondensed,
1912     #[doc(alias = "PANGO_STRETCH_NORMAL")]
1913     Normal,
1914     #[doc(alias = "PANGO_STRETCH_SEMI_EXPANDED")]
1915     SemiExpanded,
1916     #[doc(alias = "PANGO_STRETCH_EXPANDED")]
1917     Expanded,
1918     #[doc(alias = "PANGO_STRETCH_EXTRA_EXPANDED")]
1919     ExtraExpanded,
1920     #[doc(alias = "PANGO_STRETCH_ULTRA_EXPANDED")]
1921     UltraExpanded,
1922     #[doc(hidden)]
1923     __Unknown(i32),
1924 }
1925 
1926 impl fmt::Display for Stretch {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1927     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1928         write!(
1929             f,
1930             "Stretch::{}",
1931             match *self {
1932                 Self::UltraCondensed => "UltraCondensed",
1933                 Self::ExtraCondensed => "ExtraCondensed",
1934                 Self::Condensed => "Condensed",
1935                 Self::SemiCondensed => "SemiCondensed",
1936                 Self::Normal => "Normal",
1937                 Self::SemiExpanded => "SemiExpanded",
1938                 Self::Expanded => "Expanded",
1939                 Self::ExtraExpanded => "ExtraExpanded",
1940                 Self::UltraExpanded => "UltraExpanded",
1941                 _ => "Unknown",
1942             }
1943         )
1944     }
1945 }
1946 
1947 #[doc(hidden)]
1948 impl IntoGlib for Stretch {
1949     type GlibType = ffi::PangoStretch;
1950 
into_glib(self) -> ffi::PangoStretch1951     fn into_glib(self) -> ffi::PangoStretch {
1952         match self {
1953             Self::UltraCondensed => ffi::PANGO_STRETCH_ULTRA_CONDENSED,
1954             Self::ExtraCondensed => ffi::PANGO_STRETCH_EXTRA_CONDENSED,
1955             Self::Condensed => ffi::PANGO_STRETCH_CONDENSED,
1956             Self::SemiCondensed => ffi::PANGO_STRETCH_SEMI_CONDENSED,
1957             Self::Normal => ffi::PANGO_STRETCH_NORMAL,
1958             Self::SemiExpanded => ffi::PANGO_STRETCH_SEMI_EXPANDED,
1959             Self::Expanded => ffi::PANGO_STRETCH_EXPANDED,
1960             Self::ExtraExpanded => ffi::PANGO_STRETCH_EXTRA_EXPANDED,
1961             Self::UltraExpanded => ffi::PANGO_STRETCH_ULTRA_EXPANDED,
1962             Self::__Unknown(value) => value,
1963         }
1964     }
1965 }
1966 
1967 #[doc(hidden)]
1968 impl FromGlib<ffi::PangoStretch> for Stretch {
from_glib(value: ffi::PangoStretch) -> Self1969     unsafe fn from_glib(value: ffi::PangoStretch) -> Self {
1970         match value {
1971             ffi::PANGO_STRETCH_ULTRA_CONDENSED => Self::UltraCondensed,
1972             ffi::PANGO_STRETCH_EXTRA_CONDENSED => Self::ExtraCondensed,
1973             ffi::PANGO_STRETCH_CONDENSED => Self::Condensed,
1974             ffi::PANGO_STRETCH_SEMI_CONDENSED => Self::SemiCondensed,
1975             ffi::PANGO_STRETCH_NORMAL => Self::Normal,
1976             ffi::PANGO_STRETCH_SEMI_EXPANDED => Self::SemiExpanded,
1977             ffi::PANGO_STRETCH_EXPANDED => Self::Expanded,
1978             ffi::PANGO_STRETCH_EXTRA_EXPANDED => Self::ExtraExpanded,
1979             ffi::PANGO_STRETCH_ULTRA_EXPANDED => Self::UltraExpanded,
1980             value => Self::__Unknown(value),
1981         }
1982     }
1983 }
1984 
1985 impl StaticType for Stretch {
static_type() -> Type1986     fn static_type() -> Type {
1987         unsafe { from_glib(ffi::pango_stretch_get_type()) }
1988     }
1989 }
1990 
1991 impl glib::value::ValueType for Stretch {
1992     type Type = Self;
1993 }
1994 
1995 unsafe impl<'a> FromValue<'a> for Stretch {
1996     type Checker = glib::value::GenericValueTypeChecker<Self>;
1997 
from_value(value: &'a glib::Value) -> Self1998     unsafe fn from_value(value: &'a glib::Value) -> Self {
1999         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2000     }
2001 }
2002 
2003 impl ToValue for Stretch {
to_value(&self) -> glib::Value2004     fn to_value(&self) -> glib::Value {
2005         let mut value = glib::Value::for_value_type::<Self>();
2006         unsafe {
2007             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2008         }
2009         value
2010     }
2011 
value_type(&self) -> glib::Type2012     fn value_type(&self) -> glib::Type {
2013         Self::static_type()
2014     }
2015 }
2016 
2017 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2018 #[non_exhaustive]
2019 #[doc(alias = "PangoStyle")]
2020 pub enum Style {
2021     #[doc(alias = "PANGO_STYLE_NORMAL")]
2022     Normal,
2023     #[doc(alias = "PANGO_STYLE_OBLIQUE")]
2024     Oblique,
2025     #[doc(alias = "PANGO_STYLE_ITALIC")]
2026     Italic,
2027     #[doc(hidden)]
2028     __Unknown(i32),
2029 }
2030 
2031 impl fmt::Display for Style {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2032     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2033         write!(
2034             f,
2035             "Style::{}",
2036             match *self {
2037                 Self::Normal => "Normal",
2038                 Self::Oblique => "Oblique",
2039                 Self::Italic => "Italic",
2040                 _ => "Unknown",
2041             }
2042         )
2043     }
2044 }
2045 
2046 #[doc(hidden)]
2047 impl IntoGlib for Style {
2048     type GlibType = ffi::PangoStyle;
2049 
into_glib(self) -> ffi::PangoStyle2050     fn into_glib(self) -> ffi::PangoStyle {
2051         match self {
2052             Self::Normal => ffi::PANGO_STYLE_NORMAL,
2053             Self::Oblique => ffi::PANGO_STYLE_OBLIQUE,
2054             Self::Italic => ffi::PANGO_STYLE_ITALIC,
2055             Self::__Unknown(value) => value,
2056         }
2057     }
2058 }
2059 
2060 #[doc(hidden)]
2061 impl FromGlib<ffi::PangoStyle> for Style {
from_glib(value: ffi::PangoStyle) -> Self2062     unsafe fn from_glib(value: ffi::PangoStyle) -> Self {
2063         match value {
2064             ffi::PANGO_STYLE_NORMAL => Self::Normal,
2065             ffi::PANGO_STYLE_OBLIQUE => Self::Oblique,
2066             ffi::PANGO_STYLE_ITALIC => Self::Italic,
2067             value => Self::__Unknown(value),
2068         }
2069     }
2070 }
2071 
2072 impl StaticType for Style {
static_type() -> Type2073     fn static_type() -> Type {
2074         unsafe { from_glib(ffi::pango_style_get_type()) }
2075     }
2076 }
2077 
2078 impl glib::value::ValueType for Style {
2079     type Type = Self;
2080 }
2081 
2082 unsafe impl<'a> FromValue<'a> for Style {
2083     type Checker = glib::value::GenericValueTypeChecker<Self>;
2084 
from_value(value: &'a glib::Value) -> Self2085     unsafe fn from_value(value: &'a glib::Value) -> Self {
2086         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2087     }
2088 }
2089 
2090 impl ToValue for Style {
to_value(&self) -> glib::Value2091     fn to_value(&self) -> glib::Value {
2092         let mut value = glib::Value::for_value_type::<Self>();
2093         unsafe {
2094             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2095         }
2096         value
2097     }
2098 
value_type(&self) -> glib::Type2099     fn value_type(&self) -> glib::Type {
2100         Self::static_type()
2101     }
2102 }
2103 
2104 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2105 #[non_exhaustive]
2106 #[doc(alias = "PangoTabAlign")]
2107 pub enum TabAlign {
2108     #[doc(alias = "PANGO_TAB_LEFT")]
2109     Left,
2110     #[doc(hidden)]
2111     __Unknown(i32),
2112 }
2113 
2114 impl fmt::Display for TabAlign {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2115     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2116         write!(
2117             f,
2118             "TabAlign::{}",
2119             match *self {
2120                 Self::Left => "Left",
2121                 _ => "Unknown",
2122             }
2123         )
2124     }
2125 }
2126 
2127 #[doc(hidden)]
2128 impl IntoGlib for TabAlign {
2129     type GlibType = ffi::PangoTabAlign;
2130 
into_glib(self) -> ffi::PangoTabAlign2131     fn into_glib(self) -> ffi::PangoTabAlign {
2132         match self {
2133             Self::Left => ffi::PANGO_TAB_LEFT,
2134             Self::__Unknown(value) => value,
2135         }
2136     }
2137 }
2138 
2139 #[doc(hidden)]
2140 impl FromGlib<ffi::PangoTabAlign> for TabAlign {
from_glib(value: ffi::PangoTabAlign) -> Self2141     unsafe fn from_glib(value: ffi::PangoTabAlign) -> Self {
2142         match value {
2143             ffi::PANGO_TAB_LEFT => Self::Left,
2144             value => Self::__Unknown(value),
2145         }
2146     }
2147 }
2148 
2149 impl StaticType for TabAlign {
static_type() -> Type2150     fn static_type() -> Type {
2151         unsafe { from_glib(ffi::pango_tab_align_get_type()) }
2152     }
2153 }
2154 
2155 impl glib::value::ValueType for TabAlign {
2156     type Type = Self;
2157 }
2158 
2159 unsafe impl<'a> FromValue<'a> for TabAlign {
2160     type Checker = glib::value::GenericValueTypeChecker<Self>;
2161 
from_value(value: &'a glib::Value) -> Self2162     unsafe fn from_value(value: &'a glib::Value) -> Self {
2163         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2164     }
2165 }
2166 
2167 impl ToValue for TabAlign {
to_value(&self) -> glib::Value2168     fn to_value(&self) -> glib::Value {
2169         let mut value = glib::Value::for_value_type::<Self>();
2170         unsafe {
2171             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2172         }
2173         value
2174     }
2175 
value_type(&self) -> glib::Type2176     fn value_type(&self) -> glib::Type {
2177         Self::static_type()
2178     }
2179 }
2180 
2181 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2182 #[non_exhaustive]
2183 #[doc(alias = "PangoUnderline")]
2184 pub enum Underline {
2185     #[doc(alias = "PANGO_UNDERLINE_NONE")]
2186     None,
2187     #[doc(alias = "PANGO_UNDERLINE_SINGLE")]
2188     Single,
2189     #[doc(alias = "PANGO_UNDERLINE_DOUBLE")]
2190     Double,
2191     #[doc(alias = "PANGO_UNDERLINE_LOW")]
2192     Low,
2193     #[doc(alias = "PANGO_UNDERLINE_ERROR")]
2194     Error,
2195     #[doc(alias = "PANGO_UNDERLINE_SINGLE_LINE")]
2196     SingleLine,
2197     #[doc(alias = "PANGO_UNDERLINE_DOUBLE_LINE")]
2198     DoubleLine,
2199     #[doc(alias = "PANGO_UNDERLINE_ERROR_LINE")]
2200     ErrorLine,
2201     #[doc(hidden)]
2202     __Unknown(i32),
2203 }
2204 
2205 impl fmt::Display for Underline {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2206     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2207         write!(
2208             f,
2209             "Underline::{}",
2210             match *self {
2211                 Self::None => "None",
2212                 Self::Single => "Single",
2213                 Self::Double => "Double",
2214                 Self::Low => "Low",
2215                 Self::Error => "Error",
2216                 Self::SingleLine => "SingleLine",
2217                 Self::DoubleLine => "DoubleLine",
2218                 Self::ErrorLine => "ErrorLine",
2219                 _ => "Unknown",
2220             }
2221         )
2222     }
2223 }
2224 
2225 #[doc(hidden)]
2226 impl IntoGlib for Underline {
2227     type GlibType = ffi::PangoUnderline;
2228 
into_glib(self) -> ffi::PangoUnderline2229     fn into_glib(self) -> ffi::PangoUnderline {
2230         match self {
2231             Self::None => ffi::PANGO_UNDERLINE_NONE,
2232             Self::Single => ffi::PANGO_UNDERLINE_SINGLE,
2233             Self::Double => ffi::PANGO_UNDERLINE_DOUBLE,
2234             Self::Low => ffi::PANGO_UNDERLINE_LOW,
2235             Self::Error => ffi::PANGO_UNDERLINE_ERROR,
2236             Self::SingleLine => ffi::PANGO_UNDERLINE_SINGLE_LINE,
2237             Self::DoubleLine => ffi::PANGO_UNDERLINE_DOUBLE_LINE,
2238             Self::ErrorLine => ffi::PANGO_UNDERLINE_ERROR_LINE,
2239             Self::__Unknown(value) => value,
2240         }
2241     }
2242 }
2243 
2244 #[doc(hidden)]
2245 impl FromGlib<ffi::PangoUnderline> for Underline {
from_glib(value: ffi::PangoUnderline) -> Self2246     unsafe fn from_glib(value: ffi::PangoUnderline) -> Self {
2247         match value {
2248             ffi::PANGO_UNDERLINE_NONE => Self::None,
2249             ffi::PANGO_UNDERLINE_SINGLE => Self::Single,
2250             ffi::PANGO_UNDERLINE_DOUBLE => Self::Double,
2251             ffi::PANGO_UNDERLINE_LOW => Self::Low,
2252             ffi::PANGO_UNDERLINE_ERROR => Self::Error,
2253             ffi::PANGO_UNDERLINE_SINGLE_LINE => Self::SingleLine,
2254             ffi::PANGO_UNDERLINE_DOUBLE_LINE => Self::DoubleLine,
2255             ffi::PANGO_UNDERLINE_ERROR_LINE => Self::ErrorLine,
2256             value => Self::__Unknown(value),
2257         }
2258     }
2259 }
2260 
2261 impl StaticType for Underline {
static_type() -> Type2262     fn static_type() -> Type {
2263         unsafe { from_glib(ffi::pango_underline_get_type()) }
2264     }
2265 }
2266 
2267 impl glib::value::ValueType for Underline {
2268     type Type = Self;
2269 }
2270 
2271 unsafe impl<'a> FromValue<'a> for Underline {
2272     type Checker = glib::value::GenericValueTypeChecker<Self>;
2273 
from_value(value: &'a glib::Value) -> Self2274     unsafe fn from_value(value: &'a glib::Value) -> Self {
2275         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2276     }
2277 }
2278 
2279 impl ToValue for Underline {
to_value(&self) -> glib::Value2280     fn to_value(&self) -> glib::Value {
2281         let mut value = glib::Value::for_value_type::<Self>();
2282         unsafe {
2283             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2284         }
2285         value
2286     }
2287 
value_type(&self) -> glib::Type2288     fn value_type(&self) -> glib::Type {
2289         Self::static_type()
2290     }
2291 }
2292 
2293 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2294 #[non_exhaustive]
2295 #[doc(alias = "PangoVariant")]
2296 pub enum Variant {
2297     #[doc(alias = "PANGO_VARIANT_NORMAL")]
2298     Normal,
2299     #[doc(alias = "PANGO_VARIANT_SMALL_CAPS")]
2300     SmallCaps,
2301     #[doc(hidden)]
2302     __Unknown(i32),
2303 }
2304 
2305 impl fmt::Display for Variant {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2306     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2307         write!(
2308             f,
2309             "Variant::{}",
2310             match *self {
2311                 Self::Normal => "Normal",
2312                 Self::SmallCaps => "SmallCaps",
2313                 _ => "Unknown",
2314             }
2315         )
2316     }
2317 }
2318 
2319 #[doc(hidden)]
2320 impl IntoGlib for Variant {
2321     type GlibType = ffi::PangoVariant;
2322 
into_glib(self) -> ffi::PangoVariant2323     fn into_glib(self) -> ffi::PangoVariant {
2324         match self {
2325             Self::Normal => ffi::PANGO_VARIANT_NORMAL,
2326             Self::SmallCaps => ffi::PANGO_VARIANT_SMALL_CAPS,
2327             Self::__Unknown(value) => value,
2328         }
2329     }
2330 }
2331 
2332 #[doc(hidden)]
2333 impl FromGlib<ffi::PangoVariant> for Variant {
from_glib(value: ffi::PangoVariant) -> Self2334     unsafe fn from_glib(value: ffi::PangoVariant) -> Self {
2335         match value {
2336             ffi::PANGO_VARIANT_NORMAL => Self::Normal,
2337             ffi::PANGO_VARIANT_SMALL_CAPS => Self::SmallCaps,
2338             value => Self::__Unknown(value),
2339         }
2340     }
2341 }
2342 
2343 impl StaticType for Variant {
static_type() -> Type2344     fn static_type() -> Type {
2345         unsafe { from_glib(ffi::pango_variant_get_type()) }
2346     }
2347 }
2348 
2349 impl glib::value::ValueType for Variant {
2350     type Type = Self;
2351 }
2352 
2353 unsafe impl<'a> FromValue<'a> for Variant {
2354     type Checker = glib::value::GenericValueTypeChecker<Self>;
2355 
from_value(value: &'a glib::Value) -> Self2356     unsafe fn from_value(value: &'a glib::Value) -> Self {
2357         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2358     }
2359 }
2360 
2361 impl ToValue for Variant {
to_value(&self) -> glib::Value2362     fn to_value(&self) -> glib::Value {
2363         let mut value = glib::Value::for_value_type::<Self>();
2364         unsafe {
2365             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2366         }
2367         value
2368     }
2369 
value_type(&self) -> glib::Type2370     fn value_type(&self) -> glib::Type {
2371         Self::static_type()
2372     }
2373 }
2374 
2375 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2376 #[non_exhaustive]
2377 #[doc(alias = "PangoWeight")]
2378 pub enum Weight {
2379     #[doc(alias = "PANGO_WEIGHT_THIN")]
2380     Thin,
2381     #[doc(alias = "PANGO_WEIGHT_ULTRALIGHT")]
2382     Ultralight,
2383     #[doc(alias = "PANGO_WEIGHT_LIGHT")]
2384     Light,
2385     #[doc(alias = "PANGO_WEIGHT_SEMILIGHT")]
2386     Semilight,
2387     #[doc(alias = "PANGO_WEIGHT_BOOK")]
2388     Book,
2389     #[doc(alias = "PANGO_WEIGHT_NORMAL")]
2390     Normal,
2391     #[doc(alias = "PANGO_WEIGHT_MEDIUM")]
2392     Medium,
2393     #[doc(alias = "PANGO_WEIGHT_SEMIBOLD")]
2394     Semibold,
2395     #[doc(alias = "PANGO_WEIGHT_BOLD")]
2396     Bold,
2397     #[doc(alias = "PANGO_WEIGHT_ULTRABOLD")]
2398     Ultrabold,
2399     #[doc(alias = "PANGO_WEIGHT_HEAVY")]
2400     Heavy,
2401     #[doc(alias = "PANGO_WEIGHT_ULTRAHEAVY")]
2402     Ultraheavy,
2403     #[doc(hidden)]
2404     __Unknown(i32),
2405 }
2406 
2407 impl fmt::Display for Weight {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2408     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2409         write!(
2410             f,
2411             "Weight::{}",
2412             match *self {
2413                 Self::Thin => "Thin",
2414                 Self::Ultralight => "Ultralight",
2415                 Self::Light => "Light",
2416                 Self::Semilight => "Semilight",
2417                 Self::Book => "Book",
2418                 Self::Normal => "Normal",
2419                 Self::Medium => "Medium",
2420                 Self::Semibold => "Semibold",
2421                 Self::Bold => "Bold",
2422                 Self::Ultrabold => "Ultrabold",
2423                 Self::Heavy => "Heavy",
2424                 Self::Ultraheavy => "Ultraheavy",
2425                 _ => "Unknown",
2426             }
2427         )
2428     }
2429 }
2430 
2431 #[doc(hidden)]
2432 impl IntoGlib for Weight {
2433     type GlibType = ffi::PangoWeight;
2434 
into_glib(self) -> ffi::PangoWeight2435     fn into_glib(self) -> ffi::PangoWeight {
2436         match self {
2437             Self::Thin => ffi::PANGO_WEIGHT_THIN,
2438             Self::Ultralight => ffi::PANGO_WEIGHT_ULTRALIGHT,
2439             Self::Light => ffi::PANGO_WEIGHT_LIGHT,
2440             Self::Semilight => ffi::PANGO_WEIGHT_SEMILIGHT,
2441             Self::Book => ffi::PANGO_WEIGHT_BOOK,
2442             Self::Normal => ffi::PANGO_WEIGHT_NORMAL,
2443             Self::Medium => ffi::PANGO_WEIGHT_MEDIUM,
2444             Self::Semibold => ffi::PANGO_WEIGHT_SEMIBOLD,
2445             Self::Bold => ffi::PANGO_WEIGHT_BOLD,
2446             Self::Ultrabold => ffi::PANGO_WEIGHT_ULTRABOLD,
2447             Self::Heavy => ffi::PANGO_WEIGHT_HEAVY,
2448             Self::Ultraheavy => ffi::PANGO_WEIGHT_ULTRAHEAVY,
2449             Self::__Unknown(value) => value,
2450         }
2451     }
2452 }
2453 
2454 #[doc(hidden)]
2455 impl FromGlib<ffi::PangoWeight> for Weight {
from_glib(value: ffi::PangoWeight) -> Self2456     unsafe fn from_glib(value: ffi::PangoWeight) -> Self {
2457         match value {
2458             ffi::PANGO_WEIGHT_THIN => Self::Thin,
2459             ffi::PANGO_WEIGHT_ULTRALIGHT => Self::Ultralight,
2460             ffi::PANGO_WEIGHT_LIGHT => Self::Light,
2461             ffi::PANGO_WEIGHT_SEMILIGHT => Self::Semilight,
2462             ffi::PANGO_WEIGHT_BOOK => Self::Book,
2463             ffi::PANGO_WEIGHT_NORMAL => Self::Normal,
2464             ffi::PANGO_WEIGHT_MEDIUM => Self::Medium,
2465             ffi::PANGO_WEIGHT_SEMIBOLD => Self::Semibold,
2466             ffi::PANGO_WEIGHT_BOLD => Self::Bold,
2467             ffi::PANGO_WEIGHT_ULTRABOLD => Self::Ultrabold,
2468             ffi::PANGO_WEIGHT_HEAVY => Self::Heavy,
2469             ffi::PANGO_WEIGHT_ULTRAHEAVY => Self::Ultraheavy,
2470             value => Self::__Unknown(value),
2471         }
2472     }
2473 }
2474 
2475 impl StaticType for Weight {
static_type() -> Type2476     fn static_type() -> Type {
2477         unsafe { from_glib(ffi::pango_weight_get_type()) }
2478     }
2479 }
2480 
2481 impl glib::value::ValueType for Weight {
2482     type Type = Self;
2483 }
2484 
2485 unsafe impl<'a> FromValue<'a> for Weight {
2486     type Checker = glib::value::GenericValueTypeChecker<Self>;
2487 
from_value(value: &'a glib::Value) -> Self2488     unsafe fn from_value(value: &'a glib::Value) -> Self {
2489         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2490     }
2491 }
2492 
2493 impl ToValue for Weight {
to_value(&self) -> glib::Value2494     fn to_value(&self) -> glib::Value {
2495         let mut value = glib::Value::for_value_type::<Self>();
2496         unsafe {
2497             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2498         }
2499         value
2500     }
2501 
value_type(&self) -> glib::Type2502     fn value_type(&self) -> glib::Type {
2503         Self::static_type()
2504     }
2505 }
2506 
2507 #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2508 #[non_exhaustive]
2509 #[doc(alias = "PangoWrapMode")]
2510 pub enum WrapMode {
2511     #[doc(alias = "PANGO_WRAP_WORD")]
2512     Word,
2513     #[doc(alias = "PANGO_WRAP_CHAR")]
2514     Char,
2515     #[doc(alias = "PANGO_WRAP_WORD_CHAR")]
2516     WordChar,
2517     #[doc(hidden)]
2518     __Unknown(i32),
2519 }
2520 
2521 impl fmt::Display for WrapMode {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result2522     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2523         write!(
2524             f,
2525             "WrapMode::{}",
2526             match *self {
2527                 Self::Word => "Word",
2528                 Self::Char => "Char",
2529                 Self::WordChar => "WordChar",
2530                 _ => "Unknown",
2531             }
2532         )
2533     }
2534 }
2535 
2536 #[doc(hidden)]
2537 impl IntoGlib for WrapMode {
2538     type GlibType = ffi::PangoWrapMode;
2539 
into_glib(self) -> ffi::PangoWrapMode2540     fn into_glib(self) -> ffi::PangoWrapMode {
2541         match self {
2542             Self::Word => ffi::PANGO_WRAP_WORD,
2543             Self::Char => ffi::PANGO_WRAP_CHAR,
2544             Self::WordChar => ffi::PANGO_WRAP_WORD_CHAR,
2545             Self::__Unknown(value) => value,
2546         }
2547     }
2548 }
2549 
2550 #[doc(hidden)]
2551 impl FromGlib<ffi::PangoWrapMode> for WrapMode {
from_glib(value: ffi::PangoWrapMode) -> Self2552     unsafe fn from_glib(value: ffi::PangoWrapMode) -> Self {
2553         match value {
2554             ffi::PANGO_WRAP_WORD => Self::Word,
2555             ffi::PANGO_WRAP_CHAR => Self::Char,
2556             ffi::PANGO_WRAP_WORD_CHAR => Self::WordChar,
2557             value => Self::__Unknown(value),
2558         }
2559     }
2560 }
2561 
2562 impl StaticType for WrapMode {
static_type() -> Type2563     fn static_type() -> Type {
2564         unsafe { from_glib(ffi::pango_wrap_mode_get_type()) }
2565     }
2566 }
2567 
2568 impl glib::value::ValueType for WrapMode {
2569     type Type = Self;
2570 }
2571 
2572 unsafe impl<'a> FromValue<'a> for WrapMode {
2573     type Checker = glib::value::GenericValueTypeChecker<Self>;
2574 
from_value(value: &'a glib::Value) -> Self2575     unsafe fn from_value(value: &'a glib::Value) -> Self {
2576         from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2577     }
2578 }
2579 
2580 impl ToValue for WrapMode {
to_value(&self) -> glib::Value2581     fn to_value(&self) -> glib::Value {
2582         let mut value = glib::Value::for_value_type::<Self>();
2583         unsafe {
2584             glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2585         }
2586         value
2587     }
2588 
value_type(&self) -> glib::Type2589     fn value_type(&self) -> glib::Type {
2590         Self::static_type()
2591     }
2592 }
2593