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:
2026-07-20 01:43:22 +03:00
parent 6e0d179be9
commit 2fb47520b3
46 changed files with 4093 additions and 314 deletions
+5
View File
@@ -430,6 +430,7 @@ fn parse_svg_shapes(svg_bytes: &[u8], scale_x: f32, scale_y: f32) -> Vec<VectorS
let h = attrs.get("height").map(|v| parse_svg_float(v, 0.0)).unwrap_or(0.0) * scale_y;
if w > 0.0 && h > 0.0 {
shapes.push(VectorShape::Rect {
name: String::new(),
x1: x, y1: y,
x2: x + w, y2: y + h,
stroke: stroke_width,
@@ -448,6 +449,7 @@ fn parse_svg_shapes(svg_bytes: &[u8], scale_x: f32, scale_y: f32) -> Vec<VectorS
let r = attrs.get("r").map(|v| parse_svg_float(v, 0.0)).unwrap_or(0.0) * scale_x;
if r > 0.0 {
shapes.push(VectorShape::Circle {
name: String::new(),
x1: cx - r, y1: cy - r,
x2: cx + r, y2: cy + r,
stroke: stroke_width,
@@ -466,6 +468,7 @@ fn parse_svg_shapes(svg_bytes: &[u8], scale_x: f32, scale_y: f32) -> Vec<VectorS
let ry = attrs.get("ry").map(|v| parse_svg_float(v, 0.0)).unwrap_or(0.0) * scale_y;
if rx > 0.0 && ry > 0.0 {
shapes.push(VectorShape::Circle {
name: String::new(),
x1: cx - rx, y1: cy - ry,
x2: cx + rx, y2: cy + ry,
stroke: stroke_width,
@@ -483,6 +486,7 @@ fn parse_svg_shapes(svg_bytes: &[u8], scale_x: f32, scale_y: f32) -> Vec<VectorS
let x2 = (attrs.get("x2").map(|v| parse_svg_float(v, 0.0)).unwrap_or(0.0) + tx) * scale_x;
let y2 = (attrs.get("y2").map(|v| parse_svg_float(v, 0.0)).unwrap_or(0.0) + ty) * scale_y;
shapes.push(VectorShape::Line {
name: String::new(),
x1, y1, x2, y2,
stroke: stroke_width,
color: stroke_color,
@@ -506,6 +510,7 @@ fn parse_svg_shapes(svg_bytes: &[u8], scale_x: f32, scale_y: f32) -> Vec<VectorS
}
if pts.len() >= 2 {
shapes.push(VectorShape::FreePath {
name: String::new(),
pts,
closed: tag == "polygon",
stroke: stroke_width,