gstreamer_vulkan/auto/
flags.rs1use crate::ffi;
7use glib::{bitflags::bitflags, prelude::*, translate::*};
8
9bitflags! {
10    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
11    #[doc(alias = "GstVulkanDisplayType")]
12    pub struct VulkanDisplayType: u32 {
13        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_NONE")]
15        const NONE = ffi::GST_VULKAN_DISPLAY_TYPE_NONE as _;
16        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_XCB")]
18        const XCB = ffi::GST_VULKAN_DISPLAY_TYPE_XCB as _;
19        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_WAYLAND")]
21        const WAYLAND = ffi::GST_VULKAN_DISPLAY_TYPE_WAYLAND as _;
22        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_COCOA")]
24        const COCOA = ffi::GST_VULKAN_DISPLAY_TYPE_COCOA as _;
25        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_IOS")]
27        const IOS = ffi::GST_VULKAN_DISPLAY_TYPE_IOS as _;
28        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_WIN32")]
30        const WIN32 = ffi::GST_VULKAN_DISPLAY_TYPE_WIN32 as _;
31        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_ANDROID")]
32        const ANDROID = ffi::GST_VULKAN_DISPLAY_TYPE_ANDROID as _;
33        #[doc(alias = "GST_VULKAN_DISPLAY_TYPE_ANY")]
35        const ANY = ffi::GST_VULKAN_DISPLAY_TYPE_ANY as _;
36    }
37}
38
39impl VulkanDisplayType {
40    #[doc(alias = "gst_vulkan_display_type_to_extension_string")]
41    pub fn to_extension_string(self) -> Option<glib::GString> {
42        assert_initialized_main_thread!();
43        unsafe {
44            from_glib_none(ffi::gst_vulkan_display_type_to_extension_string(
45                self.into_glib(),
46            ))
47        }
48    }
49}
50
51#[doc(hidden)]
52impl IntoGlib for VulkanDisplayType {
53    type GlibType = ffi::GstVulkanDisplayType;
54
55    #[inline]
56    fn into_glib(self) -> ffi::GstVulkanDisplayType {
57        self.bits()
58    }
59}
60
61#[doc(hidden)]
62impl FromGlib<ffi::GstVulkanDisplayType> for VulkanDisplayType {
63    #[inline]
64    unsafe fn from_glib(value: ffi::GstVulkanDisplayType) -> Self {
65        skip_assert_initialized!();
66        Self::from_bits_truncate(value)
67    }
68}
69
70impl StaticType for VulkanDisplayType {
71    #[inline]
72    #[doc(alias = "gst_vulkan_display_type_get_type")]
73    fn static_type() -> glib::Type {
74        unsafe { from_glib(ffi::gst_vulkan_display_type_get_type()) }
75    }
76}
77
78impl glib::HasParamSpec for VulkanDisplayType {
79    type ParamSpec = glib::ParamSpecFlags;
80    type SetValue = Self;
81    type BuilderFn = fn(&str) -> glib::ParamSpecFlagsBuilder<Self>;
82
83    fn param_spec_builder() -> Self::BuilderFn {
84        Self::ParamSpec::builder
85    }
86}
87
88impl glib::value::ValueType for VulkanDisplayType {
89    type Type = Self;
90}
91
92unsafe impl<'a> glib::value::FromValue<'a> for VulkanDisplayType {
93    type Checker = glib::value::GenericValueTypeChecker<Self>;
94
95    #[inline]
96    unsafe fn from_value(value: &'a glib::Value) -> Self {
97        skip_assert_initialized!();
98        from_glib(glib::gobject_ffi::g_value_get_flags(value.to_glib_none().0))
99    }
100}
101
102impl ToValue for VulkanDisplayType {
103    #[inline]
104    fn to_value(&self) -> glib::Value {
105        let mut value = glib::Value::for_value_type::<Self>();
106        unsafe {
107            glib::gobject_ffi::g_value_set_flags(value.to_glib_none_mut().0, self.into_glib());
108        }
109        value
110    }
111
112    #[inline]
113    fn value_type(&self) -> glib::Type {
114        Self::static_type()
115    }
116}
117
118impl From<VulkanDisplayType> for glib::Value {
119    #[inline]
120    fn from(v: VulkanDisplayType) -> Self {
121        skip_assert_initialized!();
122        ToValue::to_value(&v)
123    }
124}