feat(svg-editor): implement interactive SVG node editor with parsing and editing capabilities
feat(debug-logger): add DebugSignalLogger plugin for event logging and inspection feat(plugins): introduce built-in plugins module and integrate debug logger feat(plugin-integration): create integration layer for mapping Iced Messages to CoreEvents feat(plugin-registry): establish PluginRegistry for managing plugins and event dispatching
This commit is contained in:
@@ -300,6 +300,8 @@ fn default_hardness() -> f32 {
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
pub enum VectorShape {
|
||||
Line {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -318,6 +320,8 @@ pub enum VectorShape {
|
||||
hardness: f32,
|
||||
},
|
||||
Rect {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -336,6 +340,8 @@ pub enum VectorShape {
|
||||
hardness: f32,
|
||||
},
|
||||
Circle {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -354,6 +360,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Arrow {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -374,6 +382,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Star {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -395,6 +405,8 @@ pub enum VectorShape {
|
||||
inner_radius: f32,
|
||||
},
|
||||
Polygon {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -415,6 +427,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Rhombus {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -433,6 +447,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Cylinder {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -451,6 +467,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Heart {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -469,6 +487,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Bubble {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -487,6 +507,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Gear {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -505,6 +527,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Cross {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -523,6 +547,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Crescent {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -541,6 +567,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Bolt {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -559,6 +587,8 @@ pub enum VectorShape {
|
||||
},
|
||||
#[serde(skip_serializing)]
|
||||
Arrow4 {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -576,6 +606,8 @@ pub enum VectorShape {
|
||||
hardness: f32,
|
||||
},
|
||||
SvgShape {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
x1: f32,
|
||||
y1: f32,
|
||||
x2: f32,
|
||||
@@ -595,6 +627,8 @@ pub enum VectorShape {
|
||||
hardness: f32,
|
||||
},
|
||||
FreePath {
|
||||
#[serde(default)]
|
||||
name: String,
|
||||
pts: Vec<[f32; 2]>,
|
||||
closed: bool,
|
||||
stroke: f32,
|
||||
@@ -2410,6 +2444,50 @@ impl VectorShape {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn name(&self) -> String {
|
||||
match self {
|
||||
VectorShape::Line { name, .. }
|
||||
| VectorShape::Rect { name, .. }
|
||||
| VectorShape::Circle { name, .. }
|
||||
| VectorShape::Arrow { name, .. }
|
||||
| VectorShape::Star { name, .. }
|
||||
| VectorShape::Polygon { name, .. }
|
||||
| VectorShape::Rhombus { name, .. }
|
||||
| VectorShape::Cylinder { name, .. }
|
||||
| VectorShape::Heart { name, .. }
|
||||
| VectorShape::Bubble { name, .. }
|
||||
| VectorShape::Gear { name, .. }
|
||||
| VectorShape::Cross { name, .. }
|
||||
| VectorShape::Crescent { name, .. }
|
||||
| VectorShape::Bolt { name, .. }
|
||||
| VectorShape::Arrow4 { name, .. }
|
||||
| VectorShape::SvgShape { name, .. }
|
||||
| VectorShape::FreePath { name, .. } => name.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_name(&mut self, new_name: String) {
|
||||
match self {
|
||||
VectorShape::Line { name, .. }
|
||||
| VectorShape::Rect { name, .. }
|
||||
| VectorShape::Circle { name, .. }
|
||||
| VectorShape::Arrow { name, .. }
|
||||
| VectorShape::Star { name, .. }
|
||||
| VectorShape::Polygon { name, .. }
|
||||
| VectorShape::Rhombus { name, .. }
|
||||
| VectorShape::Cylinder { name, .. }
|
||||
| VectorShape::Heart { name, .. }
|
||||
| VectorShape::Bubble { name, .. }
|
||||
| VectorShape::Gear { name, .. }
|
||||
| VectorShape::Cross { name, .. }
|
||||
| VectorShape::Crescent { name, .. }
|
||||
| VectorShape::Bolt { name, .. }
|
||||
| VectorShape::Arrow4 { name, .. }
|
||||
| VectorShape::SvgShape { name, .. }
|
||||
| VectorShape::FreePath { name, .. } => *name = new_name,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn angle(&self) -> f32 {
|
||||
match self {
|
||||
VectorShape::Line { angle, .. }
|
||||
|
||||
Reference in New Issue
Block a user