use iced_widget::core::Color;
mod anchor;
mod catalog;
mod defaults;
mod edge;
mod node;
mod pin;
mod ramp;
mod roles;
mod sdf;
pub use anchor::AnchorStyle;
pub use catalog::{
AnchorStyleFn, Catalog, CuttingToolStyleFn, DragEdgeStyleFn, EdgeStyleFn, GraphStyleFn,
MinimapStyleFn, NodeStyleFn, ParticleStyleFn, PinStyleFn, SelectionBoxStyleFn,
};
pub use defaults::{
default_anchor_style, default_cutting_tool_style, default_edge_style, default_graph_style,
default_minimap_style, default_node_style, default_particle_style, default_pin_style,
default_selection_box_style,
};
pub use edge::EdgeStyle;
pub use node::NodeStyle;
pub use pin::PinStyle;
pub use iced_nodegraph_sdf::ColorQuad;
pub(crate) use sdf::EdgeGeometry;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum PinShape {
#[default]
Circle,
Square,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum NodeStatus {
#[default]
Idle,
Selected,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum PinStatus {
#[default]
Idle,
ValidTarget,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum EdgeStatus {
#[default]
Idle,
PendingCut,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum AnchorStatus {
#[default]
Idle,
Hovered,
ValidTarget,
}
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum EdgeCurve {
#[default]
BezierCubic,
Line,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum TilingKind {
#[default]
Grid,
Dots,
Triangles,
Hex,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct TilingBackground {
pub kind: TilingKind,
pub spacing: f32,
pub thickness: f32,
pub color: Color,
}
impl TilingBackground {
pub fn grid(spacing: f32, thickness: f32, color: Color) -> Self {
Self {
kind: TilingKind::Grid,
spacing,
thickness,
color,
}
}
pub fn dots(spacing: f32, radius: f32, color: Color) -> Self {
Self {
kind: TilingKind::Dots,
spacing,
thickness: radius,
color,
}
}
pub fn triangles(spacing: f32, thickness: f32, color: Color) -> Self {
Self {
kind: TilingKind::Triangles,
spacing,
thickness,
color,
}
}
pub fn hex(spacing: f32, thickness: f32, color: Color) -> Self {
Self {
kind: TilingKind::Hex,
spacing,
thickness,
color,
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct GraphStyle {
pub background_color: Color,
pub tiling: Option<TilingBackground>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SelectionBoxStyle {
pub fill: Color,
pub border_color: Color,
pub border_width: f32,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CuttingToolStyle {
pub color: Color,
pub width: f32,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ParticleStyle {
pub color: Color,
pub radius: f32,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct MinimapStyle {
pub background: Color,
pub border_color: Color,
pub border_width: f32,
pub node_color: Color,
pub selected_node_color: Color,
pub viewport_fill: Color,
pub viewport_border_color: Color,
pub viewport_border_width: f32,
}