1use crate::{ffi, Script};
6use glib::translate::*;
7
8glib::wrapper! {
9 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
10 pub struct Language(Boxed<ffi::PangoLanguage>);
11
12 match fn {
13 copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::pango_language_get_type(), ptr as *mut _) as *mut ffi::PangoLanguage,
14 free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::pango_language_get_type(), ptr as *mut _),
15 type_ => || ffi::pango_language_get_type(),
16 }
17}
18
19impl Language {
20 #[doc(alias = "pango_language_get_sample_string")]
21 #[doc(alias = "get_sample_string")]
22 pub fn sample_string(&self) -> glib::GString {
23 unsafe {
24 from_glib_none(ffi::pango_language_get_sample_string(mut_override(
25 self.to_glib_none().0,
26 )))
27 }
28 }
29
30 #[doc(alias = "pango_language_includes_script")]
31 pub fn includes_script(&self, script: Script) -> bool {
32 unsafe {
33 from_glib(ffi::pango_language_includes_script(
34 mut_override(self.to_glib_none().0),
35 script.into_glib(),
36 ))
37 }
38 }
39
40 #[doc(alias = "pango_language_matches")]
41 pub fn matches(&self, range_list: &str) -> bool {
42 unsafe {
43 from_glib(ffi::pango_language_matches(
44 mut_override(self.to_glib_none().0),
45 range_list.to_glib_none().0,
46 ))
47 }
48 }
49
50 #[doc(alias = "pango_language_to_string")]
51 #[doc(alias = "to_string")]
52 pub fn to_str(&self) -> glib::GString {
53 unsafe {
54 from_glib_none(ffi::pango_language_to_string(mut_override(
55 self.to_glib_none().0,
56 )))
57 }
58 }
59
60 #[doc(alias = "pango_language_from_string")]
61 pub fn from_string(language: &str) -> Language {
62 unsafe { from_glib_none(ffi::pango_language_from_string(language.to_glib_none().0)) }
63 }
64
65 #[doc(alias = "pango_language_get_default")]
66 #[doc(alias = "get_default")]
67 #[allow(clippy::should_implement_trait)]
68 pub fn default() -> Language {
69 unsafe { from_glib_none(ffi::pango_language_get_default()) }
70 }
71
72 #[cfg(feature = "v1_48")]
73 #[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
74 #[doc(alias = "pango_language_get_preferred")]
75 #[doc(alias = "get_preferred")]
76 pub fn preferred() -> Vec<Language> {
77 unsafe { FromGlibPtrContainer::from_glib_none(ffi::pango_language_get_preferred()) }
78 }
79}
80
81impl std::fmt::Display for Language {
82 #[inline]
83 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
84 f.write_str(&self.to_str())
85 }
86}