1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! # Eunoia
//!
//! A Rust library for creating area-proportional Euler and Venn diagrams.
//!
//! Eunoia generates optimal layouts for set visualizations using various geometric shapes
//! (circles, ellipses, rectangles, triangles). The library uses a two-phase optimization
//! approach:
//!
//! 1. **Initial layout**: Multi-dimensional scaling (MDS) to place fixed-size shapes
//! 2. **Refinement**: Comprehensive optimization to minimize loss functions (RegionError or stress)
//!
//! ## Example
//!
//! ```rust
//! use eunoia::{DiagramSpecBuilder, Fitter, InputType};
//! use eunoia::geometry::shapes::Circle;
//!
//! // Build specification (shape-agnostic)
//! let spec = DiagramSpecBuilder::new()
//! .set("A", 5.0)
//! .set("B", 2.0)
//! .intersection(&["A", "B"], 1.0)
//! .input_type(InputType::Exclusive)
//! .build()
//! .expect("Failed to build diagram specification");
//!
//! // Choose shape type when fitting
//! let layout = Fitter::<Circle>::new(&spec).fit().unwrap();
//! ```
// Internal test utilities
// Re-export main API types
pub use DiagramError;
pub use ;
pub use ;