mod cell_impl;
mod colorbits_impl;
mod diagram_cell_impl;
mod diagram_edge_impl;
mod diagram_impl;
mod diagram_vertex_impl;
mod edge_impl;
mod iterator_impl;
mod trait_impl;
mod vertex_impl;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone, Hash, PartialEq, Eq, Default)]
pub struct SourceIndex(pub(crate) u32);
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone, Hash, PartialEq, Eq, Default)]
pub struct CellIndex(u32);
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone, Hash, PartialEq, PartialOrd, Eq, Default)]
pub struct EdgeIndex(pub(crate) u32);
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone, Hash, PartialEq, Eq, Default)]
pub struct VertexIndex(u32);
pub type ColorType = u32;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone, PartialEq, Eq)]
pub(crate) struct ColorBits(pub ColorType);
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum SourceCategory {
SinglePoint,
SegmentStart,
SegmentEnd,
Segment,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone)]
pub struct Cell {
id_: CellIndex,
source_index_: SourceIndex,
incident_edge_: Option<EdgeIndex>,
color_: ColorType,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone)]
pub struct Vertex {
pub(crate) id_: VertexIndex,
pub(crate) x_: f64,
pub(crate) y_: f64,
pub(crate) incident_edge_: Option<EdgeIndex>,
pub(crate) color_: ColorType,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Copy, Clone)]
pub struct Edge {
id_: EdgeIndex,
cell_: Option<CellIndex>,
vertex_: Option<VertexIndex>,
twin_: Option<EdgeIndex>,
next_ccw_: Option<EdgeIndex>,
prev_ccw_: Option<EdgeIndex>,
color_: ColorType,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Default, Debug)]
pub struct Diagram {
cells_: Vec<Cell>, vertices_: Vec<Vertex>, edges_: Vec<Edge>, }