dear_implot3d/
flags.rs

1use crate::sys;
2
3bitflags::bitflags! {
4    /// Flags for ImPlot3D plot configuration
5    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
6    pub struct Plot3DFlags: u32 {
7        const NONE        = sys::ImPlot3DFlags_None as u32;
8        const NO_TITLE    = sys::ImPlot3DFlags_NoTitle as u32;
9        const NO_LEGEND   = sys::ImPlot3DFlags_NoLegend as u32;
10        const NO_MOUSE_TXT= sys::ImPlot3DFlags_NoMouseText as u32;
11        const NO_CLIP     = sys::ImPlot3DFlags_NoClip as u32;
12        const NO_MENUS    = sys::ImPlot3DFlags_NoMenus as u32;
13        const CANVAS_ONLY = sys::ImPlot3DFlags_CanvasOnly as u32;
14    }
15}
16
17bitflags::bitflags! {
18    /// Triangle flags
19    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
20    pub struct Triangle3DFlags: u32 {
21        const NONE       = sys::ImPlot3DTriangleFlags_None as u32;
22        const NO_LEGEND  = sys::ImPlot3DTriangleFlags_NoLegend as u32;
23        const NO_FIT     = sys::ImPlot3DTriangleFlags_NoFit as u32;
24        const NO_LINES   = sys::ImPlot3DTriangleFlags_NoLines as u32;
25        const NO_FILL    = sys::ImPlot3DTriangleFlags_NoFill as u32;
26        const NO_MARKERS = sys::ImPlot3DTriangleFlags_NoMarkers as u32;
27    }
28}
29
30bitflags::bitflags! {
31    /// Quad flags
32    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
33    pub struct Quad3DFlags: u32 {
34        const NONE       = sys::ImPlot3DQuadFlags_None as u32;
35        const NO_LEGEND  = sys::ImPlot3DQuadFlags_NoLegend as u32;
36        const NO_FIT     = sys::ImPlot3DQuadFlags_NoFit as u32;
37        const NO_LINES   = sys::ImPlot3DQuadFlags_NoLines as u32;
38        const NO_FILL    = sys::ImPlot3DQuadFlags_NoFill as u32;
39        const NO_MARKERS = sys::ImPlot3DQuadFlags_NoMarkers as u32;
40    }
41}
42
43bitflags::bitflags! {
44    /// Surface flags
45    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
46    pub struct Surface3DFlags: u32 {
47        const NONE       = sys::ImPlot3DSurfaceFlags_None as u32;
48        const NO_LEGEND  = sys::ImPlot3DSurfaceFlags_NoLegend as u32;
49        const NO_FIT     = sys::ImPlot3DSurfaceFlags_NoFit as u32;
50        const NO_LINES   = sys::ImPlot3DSurfaceFlags_NoLines as u32;
51        const NO_FILL    = sys::ImPlot3DSurfaceFlags_NoFill as u32;
52        const NO_MARKERS = sys::ImPlot3DSurfaceFlags_NoMarkers as u32;
53    }
54}
55
56bitflags::bitflags! {
57    /// Mesh flags
58    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
59    pub struct Mesh3DFlags: u32 {
60        const NONE       = sys::ImPlot3DMeshFlags_None as u32;
61        const NO_LEGEND  = sys::ImPlot3DMeshFlags_NoLegend as u32;
62        const NO_FIT     = sys::ImPlot3DMeshFlags_NoFit as u32;
63        const NO_LINES   = sys::ImPlot3DMeshFlags_NoLines as u32;
64        const NO_FILL    = sys::ImPlot3DMeshFlags_NoFill as u32;
65        const NO_MARKERS = sys::ImPlot3DMeshFlags_NoMarkers as u32;
66    }
67}
68
69bitflags::bitflags! {
70    /// Image flags
71    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
72    pub struct Image3DFlags: u32 {
73        const NONE      = sys::ImPlot3DImageFlags_None as u32;
74        const NO_LEGEND = sys::ImPlot3DImageFlags_NoLegend as u32;
75        const NO_FIT    = sys::ImPlot3DImageFlags_NoFit as u32;
76    }
77}
78
79bitflags::bitflags! {
80    /// Item flags (common to plot items)
81    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
82    pub struct Item3DFlags: u32 {
83        const NONE      = sys::ImPlot3DItemFlags_None as u32;
84        const NO_LEGEND = sys::ImPlot3DItemFlags_NoLegend as u32;
85        const NO_FIT    = sys::ImPlot3DItemFlags_NoFit as u32;
86    }
87}
88
89bitflags::bitflags! {
90    /// Scatter flags
91    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
92    pub struct Scatter3DFlags: u32 {
93        const NONE      = sys::ImPlot3DScatterFlags_None as u32;
94        const NO_LEGEND = sys::ImPlot3DScatterFlags_NoLegend as u32;
95        const NO_FIT    = sys::ImPlot3DScatterFlags_NoFit as u32;
96    }
97}
98
99bitflags::bitflags! {
100    /// Line flags
101    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
102    pub struct Line3DFlags: u32 {
103        const NONE      = sys::ImPlot3DLineFlags_None as u32;
104        const NO_LEGEND = sys::ImPlot3DLineFlags_NoLegend as u32;
105        const NO_FIT    = sys::ImPlot3DLineFlags_NoFit as u32;
106        const SEGMENTS  = sys::ImPlot3DLineFlags_Segments as u32;
107        const LOOP      = sys::ImPlot3DLineFlags_Loop as u32;
108        const SKIP_NAN  = sys::ImPlot3DLineFlags_SkipNaN as u32;
109    }
110}
111
112bitflags::bitflags! {
113    /// Axis flags (per-axis)
114    #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
115    pub struct Axis3DFlags: u32 {
116        const NONE           = sys::ImPlot3DAxisFlags_None as u32;
117        const NO_LABEL       = sys::ImPlot3DAxisFlags_NoLabel as u32;
118        const NO_GRID_LINES  = sys::ImPlot3DAxisFlags_NoGridLines as u32;
119        const NO_TICK_MARKS  = sys::ImPlot3DAxisFlags_NoTickMarks as u32;
120        const NO_TICK_LABELS = sys::ImPlot3DAxisFlags_NoTickLabels as u32;
121        const LOCK_MIN       = sys::ImPlot3DAxisFlags_LockMin as u32;
122        const LOCK_MAX       = sys::ImPlot3DAxisFlags_LockMax as u32;
123        const AUTO_FIT       = sys::ImPlot3DAxisFlags_AutoFit as u32;
124        const INVERT         = sys::ImPlot3DAxisFlags_Invert as u32;
125        const PAN_STRETCH    = sys::ImPlot3DAxisFlags_PanStretch as u32;
126        const LOCK           = sys::ImPlot3DAxisFlags_Lock as u32;
127        const NO_DECORATIONS = sys::ImPlot3DAxisFlags_NoDecorations as u32;
128    }
129}
130
131#[repr(i32)]
132#[derive(Copy, Clone, Debug, PartialEq, Eq)]
133pub enum Marker3D {
134    None = sys::ImPlot3DMarker_None,
135    Circle = sys::ImPlot3DMarker_Circle,
136    Square = sys::ImPlot3DMarker_Square,
137    Diamond = sys::ImPlot3DMarker_Diamond,
138    Up = sys::ImPlot3DMarker_Up,
139    Down = sys::ImPlot3DMarker_Down,
140    Left = sys::ImPlot3DMarker_Left,
141    Right = sys::ImPlot3DMarker_Right,
142    Cross = sys::ImPlot3DMarker_Cross,
143    Plus = sys::ImPlot3DMarker_Plus,
144    Asterisk = sys::ImPlot3DMarker_Asterisk,
145}
146/// 3D axis selector (X/Y/Z)
147#[repr(i32)]
148#[derive(Copy, Clone, Debug, PartialEq, Eq)]
149pub enum Axis3D {
150    // Bindgen does not expose ImAxis3D_X/Y/Z enumerators; they map to 0/1/2.
151    X = 0,
152    Y = 1,
153    Z = 2,
154}
155
156/// Condition for setup calls (match ImGuiCond)
157#[repr(i32)]
158#[derive(Copy, Clone, Debug, PartialEq, Eq)]
159#[allow(clippy::unnecessary_cast)] // Cast is necessary on some platforms where bindgen generates u32
160pub enum Plot3DCond {
161    None = sys::ImPlot3DCond_None as i32,
162    Always = sys::ImPlot3DCond_Always as i32,
163    Once = sys::ImPlot3DCond_Once as i32,
164}