1#![allow(clippy::unnecessary_cast)]
2use crate::sys;
3
4#[repr(i32)]
5#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
6pub enum PinShape {
7 Circle = sys::ImNodesPinShape_Circle as i32,
8 CircleFilled = sys::ImNodesPinShape_CircleFilled as i32,
9 Triangle = sys::ImNodesPinShape_Triangle as i32,
10 TriangleFilled = sys::ImNodesPinShape_TriangleFilled as i32,
11 Quad = sys::ImNodesPinShape_Quad as i32,
12 QuadFilled = sys::ImNodesPinShape_QuadFilled as i32,
13}
14
15bitflags::bitflags! {
16 #[derive(Default)]
17 pub struct AttributeFlags: i32 {
18 const NONE = sys::ImNodesAttributeFlags_None as i32;
19 const ENABLE_LINK_DETACH_WITH_DRAG_CLICK = sys::ImNodesAttributeFlags_EnableLinkDetachWithDragClick as i32;
20 const ENABLE_LINK_CREATION_ON_SNAP = sys::ImNodesAttributeFlags_EnableLinkCreationOnSnap as i32;
21 }
22}
23
24bitflags::bitflags! {
25 #[derive(Default)]
26 pub struct StyleFlags: i32 {
27 const NONE = sys::ImNodesStyleFlags_None as i32;
28 const NODE_OUTLINE = sys::ImNodesStyleFlags_NodeOutline as i32;
29 const GRID_LINES = sys::ImNodesStyleFlags_GridLines as i32;
30 const GRID_LINES_PRIMARY = sys::ImNodesStyleFlags_GridLinesPrimary as i32;
31 const GRID_SNAPPING = sys::ImNodesStyleFlags_GridSnapping as i32;
32 }
33}
34
35#[repr(u32)]
36#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
37pub enum MiniMapLocation {
38 BottomLeft = sys::ImNodesMiniMapLocation_BottomLeft as u32,
39 BottomRight = sys::ImNodesMiniMapLocation_BottomRight as u32,
40 TopLeft = sys::ImNodesMiniMapLocation_TopLeft as u32,
41 TopRight = sys::ImNodesMiniMapLocation_TopRight as u32,
42}
43
44#[derive(Copy, Clone, Debug)]
46pub struct LinkCreated {
47 pub start_attr: i32,
48 pub end_attr: i32,
49 pub from_snap: bool,
50}
51
52#[derive(Copy, Clone, Debug)]
53pub struct LinkCreatedEx {
54 pub start_node: i32,
55 pub start_attr: i32,
56 pub end_node: i32,
57 pub end_attr: i32,
58 pub from_snap: bool,
59}
60#[repr(i32)]
61#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
62pub enum StyleVar {
63 GridSpacing = sys::ImNodesStyleVar_GridSpacing as i32,
64 NodeCornerRounding = sys::ImNodesStyleVar_NodeCornerRounding as i32,
65 NodePadding = sys::ImNodesStyleVar_NodePadding as i32,
66 NodeBorderThickness = sys::ImNodesStyleVar_NodeBorderThickness as i32,
67 LinkThickness = sys::ImNodesStyleVar_LinkThickness as i32,
68 LinkLineSegmentsPerLength = sys::ImNodesStyleVar_LinkLineSegmentsPerLength as i32,
69 LinkHoverDistance = sys::ImNodesStyleVar_LinkHoverDistance as i32,
70 PinCircleRadius = sys::ImNodesStyleVar_PinCircleRadius as i32,
71 PinQuadSideLength = sys::ImNodesStyleVar_PinQuadSideLength as i32,
72 PinTriangleSideLength = sys::ImNodesStyleVar_PinTriangleSideLength as i32,
73 PinLineThickness = sys::ImNodesStyleVar_PinLineThickness as i32,
74 PinHoverRadius = sys::ImNodesStyleVar_PinHoverRadius as i32,
75 PinOffset = sys::ImNodesStyleVar_PinOffset as i32,
76 MiniMapPadding = sys::ImNodesStyleVar_MiniMapPadding as i32,
77 MiniMapOffset = sys::ImNodesStyleVar_MiniMapOffset as i32,
78}