Skip to main content

dear_imgui_rs/widget/table/
flags.rs

1use crate::sys;
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5bitflags::bitflags! {
6    /// Flags for table rows
7    #[repr(transparent)]
8    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
9    pub struct TableRowFlags: i32 {
10        /// No flags
11        const NONE = 0;
12        /// Identify header row (set default background color + width of all columns)
13        const HEADERS = sys::ImGuiTableRowFlags_Headers as i32;
14    }
15}
16
17#[cfg(feature = "serde")]
18impl Serialize for TableRowFlags {
19    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
20    where
21        S: serde::Serializer,
22    {
23        serializer.serialize_i32(self.bits())
24    }
25}
26
27#[cfg(feature = "serde")]
28impl<'de> Deserialize<'de> for TableRowFlags {
29    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
30    where
31        D: serde::Deserializer<'de>,
32    {
33        let bits = i32::deserialize(deserializer)?;
34        Ok(TableRowFlags::from_bits_retain(bits))
35    }
36}
37
38/// Target for table background colors.
39#[repr(i32)]
40#[derive(Copy, Clone, Debug, PartialEq, Eq)]
41#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
42pub enum TableBgTarget {
43    /// No background target
44    None = sys::ImGuiTableBgTarget_None as i32,
45    /// First alternating row background
46    RowBg0 = sys::ImGuiTableBgTarget_RowBg0 as i32,
47    /// Second alternating row background
48    RowBg1 = sys::ImGuiTableBgTarget_RowBg1 as i32,
49    /// Cell background
50    CellBg = sys::ImGuiTableBgTarget_CellBg as i32,
51}