diff --git a/turtle-lib/src/drawing.rs b/turtle-lib/src/drawing.rs index fbad8d2..8aca780 100644 --- a/turtle-lib/src/drawing.rs +++ b/turtle-lib/src/drawing.rs @@ -12,54 +12,7 @@ use macroquad::prelude::*; // See https://easings.net/ for visual demonstrations use tween::CubicInOut; -/// Render the entire turtle world -pub(crate) fn render_world(world: &TurtleWorld) { - // Update camera zoom based on current screen size to prevent stretching - let camera = Camera2D { - zoom: vec2(1.0 / screen_width() * 2.0, 1.0 / screen_height() * 2.0), - target: world.camera.target, - ..Default::default() - }; - - // Set camera - set_camera(&camera); - - // Draw all accumulated commands from all turtles - for turtle in &world.turtles { - for cmd in &turtle.commands { - match cmd { - DrawCommand::Mesh { data, source: _ } => { - // Rendering wie bisher - draw_mesh(&data.to_mesh()); - // Hier könnte man das source für Debug/Export loggen - } - DrawCommand::Text { - text, - position, - heading, - font_size, - color, - source: _, - } => { - draw_text_command(text, *position, *heading, *font_size, *color); - // Hier könnte man das source für Debug/Export loggen - } - } - } - } - - // Draw all visible turtles - for turtle in &world.turtles { - if turtle.params.visible { - draw_turtle(&turtle.params); - } - } - - // Reset to default camera - set_default_camera(); -} - -/// Render the turtle world with active tween visualization +/// Render the turtle world with active tween visualization. #[allow(clippy::too_many_lines)] pub(crate) fn render_world_with_tweens(world: &TurtleWorld, zoom_level: f32) { // Update camera zoom based on current screen size to prevent stretching diff --git a/turtle-lib/src/export.rs b/turtle-lib/src/export.rs index 28dae84..2d22678 100644 --- a/turtle-lib/src/export.rs +++ b/turtle-lib/src/export.rs @@ -1,4 +1,4 @@ -//! Export-Backend-Trait und zentrale Export-Typen +//! Export backend trait and core export types. use crate::state::TurtleWorld; use crate::TurtlePlan; @@ -7,14 +7,14 @@ use crate::TurtlePlan; pub enum ExportError { Io(std::io::Error), Format(String), - // Weitere Formate können ergänzt werden + // Additional formats can be added here. } #[derive(Clone, Copy, Debug)] pub enum DrawingFormat { #[cfg(feature = "svg")] Svg, - // Weitere Formate wie Png, Pdf, ... + // Additional formats: Png, Pdf, … } pub(crate) trait DrawingExporter { diff --git a/turtle-lib/src/export_svg.rs b/turtle-lib/src/export_svg.rs index e06d99d..e5815a5 100644 --- a/turtle-lib/src/export_svg.rs +++ b/turtle-lib/src/export_svg.rs @@ -1,4 +1,4 @@ -//! SVG-Export-Backend für TurtleWorld +//! SVG export backend for `TurtleWorld`. #[cfg(feature = "svg")] pub mod svg_export { @@ -42,7 +42,7 @@ pub mod svg_export { DrawCommand::Mesh { source, .. } => { match &source.command { TurtleCommand::Move(_) | TurtleCommand::Goto(_) => { - // Linie als + // Straight line — emit as SVG let start = source.start_position; let end = source.end_position; update_bounds( @@ -78,7 +78,7 @@ pub mod svg_export { ); let center = geom.center; if (angle.value() - 360.0).abs() < 1e-3 { - // Voller Kreis + // Full circle — emit as SVG update_bounds( &mut min_x, &mut max_x, @@ -104,7 +104,7 @@ pub mod svg_export { .set("fill", "none"); doc = doc.add(circle); } else { - // Kreisbogen als + // Partial arc — emit as SVG with A command let start = source.start_position; let end = source.end_position; // For arcs, include the full circle bounds to ensure complete visibility @@ -149,7 +149,7 @@ pub mod svg_export { } } TurtleCommand::EndFill => { - // Fills werden als mit Konturen ausgegeben + // Fill contours — emit as SVG with evenodd fill rule if let Some(contours) = &source.contours { for contour in contours { for point in contour { @@ -187,7 +187,7 @@ pub mod svg_export { doc = doc.add(path); } } else { - // Fallback: Dummy-Polygon + // Fallback: no contour data — emit a dummy polygon update_bounds( &mut min_x, &mut max_x, diff --git a/turtle-lib/src/lib.rs b/turtle-lib/src/lib.rs index c53620e..5f4303c 100644 --- a/turtle-lib/src/lib.rs +++ b/turtle-lib/src/lib.rs @@ -63,7 +63,7 @@ pub(crate) mod tweening; pub use builders::{CurvedMovement, DirectionalMovement, Turnable, TurtlePlan, WithCommands}; pub use commands::{CommandQueue, TurtleCommand}; pub use commands_channel::TurtleCommandSender; -pub use general::{Degrees, Radians, AnimationSpeed, Color, Coordinate, Length, Precision}; +pub use general::{AnimationSpeed, Color, Coordinate, Degrees, Length, Precision, Radians}; pub use shapes::{ShapeType, TurtleShape}; pub mod export; @@ -96,9 +96,7 @@ pub struct TurtleApp { } impl TurtleApp { - /// Exportiere das aktuelle Drawing in das gewünschte Format - #[allow(unused_variables)] - /// Export the current drawing to a file in the specified format + /// Export the current drawing to a file in the specified format. /// /// # Errors /// @@ -116,10 +114,10 @@ impl TurtleApp { let exporter = SvgExporter; exporter.export(&self.world, filename) } - // Weitere Formate können hier ergänzt werden + // Additional formats can be registered here. #[allow(unreachable_patterns)] _ => Err(export::ExportError::Format( - "Export-Format nicht unterstützt".to_string(), + "Unsupported export format".to_string(), )), } }