egui_graphs 0.30.0

Interactive graph visualization widget for rust powered by egui
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadPan {
    pub diff: [f32; 2],
    pub new_pan: [f32; 2],
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadZoom {
    pub diff: f32,
    pub new_zoom: f32,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeMove {
    pub id: usize,
    pub diff: [f32; 2],
    pub new_pos: [f32; 2],
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeDragStart {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeDragEnd {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeSelect {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeDeselect {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeClick {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeDoubleClick {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeHoverEnter {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadNodeHoverLeave {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadEdgeClick {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadEdgeSelect {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PayloadEdgeDeselect {
    pub id: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum Event {
    Pan(PayloadPan),
    Zoom(PayloadZoom),
    NodeMove(PayloadNodeMove),
    NodeDragStart(PayloadNodeDragStart),
    NodeDragEnd(PayloadNodeDragEnd),
    NodeSelect(PayloadNodeSelect),
    NodeDeselect(PayloadNodeDeselect),
    NodeClick(PayloadNodeClick),
    NodeDoubleClick(PayloadNodeDoubleClick),
    NodeHoverEnter(PayloadNodeHoverEnter),
    NodeHoverLeave(PayloadNodeHoverLeave),
    EdgeClick(PayloadEdgeClick),
    EdgeSelect(PayloadEdgeSelect),
    EdgeDeselect(PayloadEdgeDeselect),
}