1#![deny(unsafe_code)]
8
9mod dugong;
10mod engine;
11mod family;
12mod freeform;
13mod mind_map;
14mod preset;
15mod projection;
16mod tidy_tree;
17
18pub use dugong::{
19 DugongLayoutEngine, layout_graph_to_transaction_with_dugong, layout_graph_with_dugong,
20};
21pub use engine::{
22 DUGONG_LAYOUT_ENGINE_ID, LayoutContext, LayoutDirection, LayoutEdgeRoute, LayoutEngine,
23 LayoutEngineId, LayoutEngineRegistry, LayoutEngineRequest, LayoutError, LayoutNodePosition,
24 LayoutOptions, LayoutRequest, LayoutResult, LayoutScope, LayoutSpacing,
25 MIND_MAP_FREEFORM_LAYOUT_ENGINE_ID, MIND_MAP_RADIAL_LAYOUT_ENGINE_ID,
26 TIDY_TREE_LAYOUT_ENGINE_ID, layout_graph_to_transaction_with_engine, layout_graph_with_engine,
27};
28pub use family::{
29 LAYERED_DAG_LAYOUT_FAMILY_ID, LayoutEngineCapability, LayoutEngineMetadata, LayoutFamilyId,
30 LayoutFamilyMetadata, MIND_MAP_LAYOUT_FAMILY_ID,
31};
32pub use freeform::{
33 MindMapFreeformLayoutEngine, layout_graph_to_transaction_with_mind_map_freeform,
34 layout_graph_with_mind_map_freeform,
35};
36pub use mind_map::{
37 MindMapRadialLayoutEngine, layout_graph_to_transaction_with_mind_map_radial,
38 layout_graph_with_mind_map_radial,
39};
40pub use preset::LayoutPresetBuilder;
41pub use tidy_tree::{
42 TidyTreeLayoutEngine, layout_graph_to_transaction_with_tidy_tree, layout_graph_with_tidy_tree,
43};
44
45pub fn builtin_layout_engine_registry() -> LayoutEngineRegistry {
47 let mut registry = LayoutEngineRegistry::new();
48 let inserted_layered_family = registry.insert_family(LayoutFamilyMetadata::layered_dag());
49 debug_assert!(
50 inserted_layered_family.is_ok(),
51 "built-in layered DAG layout family should be unique"
52 );
53 let inserted_mind_map_family = registry.insert_family(LayoutFamilyMetadata::mind_map());
54 debug_assert!(
55 inserted_mind_map_family.is_ok(),
56 "built-in mind-map layout family should be unique"
57 );
58 let inserted_dugong = registry.insert(DugongLayoutEngine);
59 debug_assert!(
60 inserted_dugong.is_ok(),
61 "built-in dugong engine should be unique"
62 );
63 let inserted_dugong_metadata = registry.insert_metadata(LayoutEngineMetadata::dugong());
64 debug_assert!(
65 inserted_dugong_metadata.is_ok(),
66 "built-in dugong metadata should be unique"
67 );
68 let inserted_tidy_tree = registry.insert(TidyTreeLayoutEngine);
69 debug_assert!(
70 inserted_tidy_tree.is_ok(),
71 "built-in tidy tree engine should be unique"
72 );
73 let inserted_tidy_tree_metadata = registry.insert_metadata(LayoutEngineMetadata::tidy_tree());
74 debug_assert!(
75 inserted_tidy_tree_metadata.is_ok(),
76 "built-in tidy tree metadata should be unique"
77 );
78 let inserted_mind_map = registry.insert(MindMapRadialLayoutEngine);
79 debug_assert!(
80 inserted_mind_map.is_ok(),
81 "built-in mind-map engine should be unique"
82 );
83 let inserted_mind_map_metadata =
84 registry.insert_metadata(LayoutEngineMetadata::mind_map_radial());
85 debug_assert!(
86 inserted_mind_map_metadata.is_ok(),
87 "built-in radial mind-map metadata should be unique"
88 );
89 let inserted_freeform = registry.insert(MindMapFreeformLayoutEngine);
90 debug_assert!(
91 inserted_freeform.is_ok(),
92 "built-in freeform engine should be unique"
93 );
94 let inserted_freeform_metadata =
95 registry.insert_metadata(LayoutEngineMetadata::mind_map_freeform());
96 debug_assert!(
97 inserted_freeform_metadata.is_ok(),
98 "built-in freeform mind-map metadata should be unique"
99 );
100 registry
101}
102
103#[cfg(test)]
104mod tests;