1use crate::ffi;
6#[cfg(feature = "v4_14")]
7#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
8use glib::{bitflags::bitflags, prelude::*, translate::*};
9
10#[cfg(feature = "v4_14")]
11bitflags! {
12 #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
13 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
14 #[doc(alias = "GskPathForeachFlags")]
15 pub struct PathForeachFlags: u32 {
16 #[doc(alias = "GSK_PATH_FOREACH_ALLOW_ONLY_LINES")]
17 const ONLY_LINES = ffi::GSK_PATH_FOREACH_ALLOW_ONLY_LINES as _;
18 #[doc(alias = "GSK_PATH_FOREACH_ALLOW_QUAD")]
19 const QUAD = ffi::GSK_PATH_FOREACH_ALLOW_QUAD as _;
20 #[doc(alias = "GSK_PATH_FOREACH_ALLOW_CUBIC")]
21 const CUBIC = ffi::GSK_PATH_FOREACH_ALLOW_CUBIC as _;
22 #[doc(alias = "GSK_PATH_FOREACH_ALLOW_CONIC")]
23 const CONIC = ffi::GSK_PATH_FOREACH_ALLOW_CONIC as _;
24 }
25}
26
27#[cfg(feature = "v4_14")]
28#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
29#[doc(hidden)]
30impl IntoGlib for PathForeachFlags {
31 type GlibType = ffi::GskPathForeachFlags;
32
33 #[inline]
34 fn into_glib(self) -> ffi::GskPathForeachFlags {
35 self.bits()
36 }
37}
38
39#[cfg(feature = "v4_14")]
40#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
41#[doc(hidden)]
42impl FromGlib<ffi::GskPathForeachFlags> for PathForeachFlags {
43 #[inline]
44 unsafe fn from_glib(value: ffi::GskPathForeachFlags) -> Self {
45 skip_assert_initialized!();
46 Self::from_bits_truncate(value)
47 }
48}
49
50#[cfg(feature = "v4_14")]
51#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
52impl StaticType for PathForeachFlags {
53 #[inline]
54 #[doc(alias = "gsk_path_foreach_flags_get_type")]
55 fn static_type() -> glib::Type {
56 unsafe { from_glib(ffi::gsk_path_foreach_flags_get_type()) }
57 }
58}
59
60#[cfg(feature = "v4_14")]
61#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
62impl glib::HasParamSpec for PathForeachFlags {
63 type ParamSpec = glib::ParamSpecFlags;
64 type SetValue = Self;
65 type BuilderFn = fn(&str) -> glib::ParamSpecFlagsBuilder<Self>;
66
67 fn param_spec_builder() -> Self::BuilderFn {
68 Self::ParamSpec::builder
69 }
70}
71
72#[cfg(feature = "v4_14")]
73#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
74impl glib::value::ValueType for PathForeachFlags {
75 type Type = Self;
76}
77
78#[cfg(feature = "v4_14")]
79#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
80unsafe impl<'a> glib::value::FromValue<'a> for PathForeachFlags {
81 type Checker = glib::value::GenericValueTypeChecker<Self>;
82
83 #[inline]
84 unsafe fn from_value(value: &'a glib::Value) -> Self {
85 skip_assert_initialized!();
86 from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0))
87 }
88}
89
90#[cfg(feature = "v4_14")]
91#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
92impl ToValue for PathForeachFlags {
93 #[inline]
94 fn to_value(&self) -> glib::Value {
95 let mut value = glib::Value::for_value_type::<Self>();
96 unsafe {
97 glib::gobject_ffi::g_value_set_flags(value.to_glib_none_mut().0, self.into_glib());
98 }
99 value
100 }
101
102 #[inline]
103 fn value_type(&self) -> glib::Type {
104 Self::static_type()
105 }
106}
107
108#[cfg(feature = "v4_14")]
109#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
110impl From<PathForeachFlags> for glib::Value {
111 #[inline]
112 fn from(v: PathForeachFlags) -> Self {
113 skip_assert_initialized!();
114 ToValue::to_value(&v)
115 }
116}