1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
use glib::{bitflags::bitflags, prelude::*, translate::*};
#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
use std::fmt;

#[cfg(feature = "v4_14")]
bitflags! {
    /// Flags that can be passed to gsk_path_foreach() to influence what
    /// kinds of operations the path is decomposed into.
    ///
    /// By default, [`Path::foreach()`][crate::Path::foreach()] will only emit a path with all
    /// operations flattened to straight lines to allow for maximum compatibility.
    /// The only operations emitted will be `GSK_PATH_MOVE`, `GSK_PATH_LINE` and
    /// `GSK_PATH_CLOSE`.
    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
    #[doc(alias = "GskPathForeachFlags")]
    pub struct PathForeachFlags: u32 {
        /// The default behavior, only allow lines.
        #[doc(alias = "GSK_PATH_FOREACH_ALLOW_ONLY_LINES")]
        const ONLY_LINES = ffi::GSK_PATH_FOREACH_ALLOW_ONLY_LINES as _;
        /// Allow emission of `GSK_PATH_QUAD` operations
        #[doc(alias = "GSK_PATH_FOREACH_ALLOW_QUAD")]
        const QUAD = ffi::GSK_PATH_FOREACH_ALLOW_QUAD as _;
        /// Allow emission of `GSK_PATH_CUBIC` operations.
        #[doc(alias = "GSK_PATH_FOREACH_ALLOW_CUBIC")]
        const CUBIC = ffi::GSK_PATH_FOREACH_ALLOW_CUBIC as _;
        /// Allow emission of `GSK_PATH_CONIC` operations.
        #[doc(alias = "GSK_PATH_FOREACH_ALLOW_CONIC")]
        const CONIC = ffi::GSK_PATH_FOREACH_ALLOW_CONIC as _;
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl fmt::Display for PathForeachFlags {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        <Self as fmt::Debug>::fmt(self, f)
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
#[doc(hidden)]
impl IntoGlib for PathForeachFlags {
    type GlibType = ffi::GskPathForeachFlags;

    #[inline]
    fn into_glib(self) -> ffi::GskPathForeachFlags {
        self.bits()
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
#[doc(hidden)]
impl FromGlib<ffi::GskPathForeachFlags> for PathForeachFlags {
    #[inline]
    unsafe fn from_glib(value: ffi::GskPathForeachFlags) -> Self {
        skip_assert_initialized!();
        Self::from_bits_truncate(value)
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl StaticType for PathForeachFlags {
    #[inline]
    fn static_type() -> glib::Type {
        unsafe { from_glib(ffi::gsk_path_foreach_flags_get_type()) }
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl glib::HasParamSpec for PathForeachFlags {
    type ParamSpec = glib::ParamSpecFlags;
    type SetValue = Self;
    type BuilderFn = fn(&str) -> glib::ParamSpecFlagsBuilder<Self>;

    fn param_spec_builder() -> Self::BuilderFn {
        |name| Self::ParamSpec::builder(name)
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl glib::value::ValueType for PathForeachFlags {
    type Type = Self;
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
unsafe impl<'a> glib::value::FromValue<'a> for PathForeachFlags {
    type Checker = glib::value::GenericValueTypeChecker<Self>;

    #[inline]
    unsafe fn from_value(value: &'a glib::Value) -> Self {
        skip_assert_initialized!();
        from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0))
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl ToValue for PathForeachFlags {
    #[inline]
    fn to_value(&self) -> glib::Value {
        let mut value = glib::Value::for_value_type::<Self>();
        unsafe {
            glib::gobject_ffi::g_value_set_flags(value.to_glib_none_mut().0, self.into_glib());
        }
        value
    }

    #[inline]
    fn value_type(&self) -> glib::Type {
        Self::static_type()
    }
}

#[cfg(feature = "v4_14")]
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
impl From<PathForeachFlags> for glib::Value {
    #[inline]
    fn from(v: PathForeachFlags) -> Self {
        skip_assert_initialized!();
        ToValue::to_value(&v)
    }
}