pub mod layout; use crate::layout::add_border_segments::BorderTypeName; use graphlib_rust::Edge; use ordered_hashmap::OrderedHashMap; #[allow(dead_code)] #[derive(Debug, Clone, Default)] pub struct GraphNode { pub x: f32, pub y: f32, pub width: f32, pub height: f32, pub class: Option, pub label: Option, pub padding: Option, pub padding_x: Option, pub padding_y: Option, pub rx: Option, pub ry: Option, pub shape: Option, pub dummy: Option, pub rank: Option, pub min_rank: Option, pub max_rank: Option, pub order: Option, pub border_top: Option, pub border_bottom: Option, pub border_left: Option>, pub border_right: Option>, pub border_left_: Option, pub border_right_: Option, pub low: Option, pub lim: Option, pub parent: Option, pub e: Option, pub edge_label: Option, pub edge_obj: Option, pub labelpos: Option, pub border_type: Option, pub self_edges: Vec<(Edge, GraphEdge)>, } #[derive(Debug, Clone, Default)] pub struct GraphEdgePoint { pub x: f32, pub y: f32, } #[allow(dead_code)] #[derive(Debug, Clone)] pub struct GraphEdge { pub forward_name: Option, pub reversed: Option, pub minlen: Option, pub weight: Option, pub width: Option, pub height: Option, pub label_rank: Option, pub labeloffset: Option, pub labelpos: Option, pub nesting_edge: Option, pub cutvalue: Option, pub points: Option>, pub x: f32, pub y: f32, } #[allow(dead_code)] #[derive(Debug, Clone)] pub struct GraphConfig { pub width: f32, pub height: f32, pub nodesep: Option, // default 50 pub edgesep: Option, // default 20 pub ranksep: Option, // default 50 pub marginx: Option, // default 0 pub marginy: Option, // default 0 pub rankdir: Option, // lr, lr, tb, bt // default tb pub acyclicer: Option, // greedy, dfs, unknown-should-still-work pub ranker: Option, // "longest-path", "tight-tree", "network-simplex", "unknown-should-still-work" pub align: Option, pub nesting_root: Option, // id of dummy nesting root pub root: Option, pub node_rank_factor: Option, // default 0 pub dummy_chains: Option>, } impl Default for GraphConfig { fn default() -> Self { Self { width: 0.0, height: 0.0, nodesep: Some(50.0), edgesep: Some(20.0), ranksep: Some(50.0), marginx: None, marginy: None, rankdir: Some("tb".to_string()), acyclicer: None, ranker: None, align: None, nesting_root: None, root: None, node_rank_factor: None, dummy_chains: None, } } } impl Default for GraphEdge { fn default() -> Self { Self { forward_name: None, reversed: None, minlen: Some(1.0), weight: Some(1.0), width: Some(0.0), height: Some(0.0), label_rank: None, labeloffset: Some(0.0), labelpos: Some("r".to_string()), nesting_edge: None, cutvalue: None, points: None, x: 0.0, y: 0.0, } } }