feat: virtuelles Lineal
- Lineal ein-/ausblenden über die Werkzeugleiste oder Taste L (26 cm, mm-/cm-Skala an beiden Kanten, Winkelanzeige) - Fläche ziehen verschiebt, Griff ⟳ dreht; 15°-Schritte rasten ein - Striche, die bis 6 mm neben einer Längskante beginnen, folgen bis zum Abheben exakt der Kante (Stift, Textmarker, Formen); die Tinte liegt um die halbe Strichbreite neben dem Lineal - Lineal bleibt beim Blättern an seiner Stelle; nur seine Fläche und der Griff nehmen Eingaben an, an den Kanten wird gezeichnet Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+19
@@ -309,6 +309,16 @@ fn texture_for(
|
||||
}
|
||||
}
|
||||
|
||||
/// Abbildung Seite ↔ logische Bildschirmpunkte für die Oberfläche (Lineal).
|
||||
fn page_view(canvas: &CanvasState, scale_factor: f32) -> ui::PageView {
|
||||
let origin = canvas.page_to_screen(Vec2::ZERO);
|
||||
let unit = canvas.page_to_screen(Vec2::new(1000.0, 0.0));
|
||||
ui::PageView {
|
||||
origin: egui::pos2(origin[0] / scale_factor, origin[1] / scale_factor),
|
||||
scale: (unit[0] - origin[0]) / 1000.0 / scale_factor,
|
||||
}
|
||||
}
|
||||
|
||||
fn copy_message(count: usize, as_image: bool) -> String {
|
||||
if as_image {
|
||||
format!("{count} Objekt(e) kopiert – auch als Bild für andere Programme")
|
||||
@@ -1246,6 +1256,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
window.request_redraw();
|
||||
}
|
||||
|
||||
// Lineal ein-/ausblenden: L
|
||||
Key::Character(c) if c.eq_ignore_ascii_case("l") && !ctrl => {
|
||||
ui_state.toggle_ruler();
|
||||
canvas.ruler = ui_state.ruler;
|
||||
window.request_redraw();
|
||||
}
|
||||
|
||||
// Bild einfügen: Strg + I
|
||||
Key::Character(c) if c.eq_ignore_ascii_case("i") && ctrl => {
|
||||
ui_state.open_image_picker();
|
||||
@@ -2240,7 +2257,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
// 3. Toolbar & Widgets rendern
|
||||
updater.update();
|
||||
ui_state.page_view = Some(page_view(&canvas, window.scale_factor() as f32));
|
||||
let actions = ui::render_ui(&egui_ctx, &mut ui_state, ¬ebook, autosave.status(), &updater);
|
||||
canvas.ruler = ui_state.ruler;
|
||||
|
||||
// Seite neben der Werkzeugleiste zentrieren (Leistenbreite in physischen Pixeln)
|
||||
let reserved = ui_state.sidebar_reserved_width() * window.scale_factor() as f32;
|
||||
|
||||
Reference in New Issue
Block a user