Files
DOSSIER-STANDALONE/src-tauri/render2d/Cargo.toml
T
karim 0337422ae6 Echte Fonts im nativen 2D: glyphon-Glyphenatlas statt Browser-Overlay
Raumstempel-Text rendert jetzt im nativen wgpu-Fenster mit echten
TrueType-Glyphen (Inter, Systemfonts via cosmic-text) ueber einen
GPU-Glyphen-Atlas — im selben 4x-MSAA-Pass nach der Geometrie.
Schriftgroesse in Papier-mm (gleiche Formel wie Strichbreiten, skaliert
mit dem Zoom); die Bridge flacht Rich-Text-Stempel + Zusatzzeilen
zeilenweise auf serde-kompatible texts ab (Layout wie der SVG-Pfad).
2026-07-02 20:28:40 +02:00

64 lines
2.9 KiB
TOML

[package]
name = "render2d"
version = "0.1.0"
edition = "2021"
description = "Nativer wgpu-2D-Renderer fuer den CAD-Grundriss (Tessellierung + Pipelines)"
# Bewusst NICHT Teil des src-tauri-Workspaces: die Tessellierungs-Bibliothek soll
# unabhaengig von Tauri baubar/testbar bleiben (headless, ohne Webview-Toolchain).
# Ausschluss laeuft ueber `exclude = ["render2d"]` im uebergeordneten
# src-tauri/Cargo.toml. Standalone (`cd render2d && cargo test/build`) bildet die
# Crate automatisch ihren eigenen Ein-Paket-Workspace (eigene Cargo.lock).
#
# KEIN eigener `[workspace]`-Block hier: sobald `cad-tauri` render2d per Pfad als
# (optionale) Abhaengigkeit einbindet (Feature `native2d`), wuerde ein zweiter
# Workspace-Root INNERHALB des src-tauri-Baums Cargo mit "multiple workspace
# roots" abbrechen. Der Parent-`exclude` haelt die Crate trotzdem eigenstaendig.
[features]
# Standard: nur die reine Tessellierung + Szene + Ortho-Matrix + WGSL-Quellen.
# Diese Schicht ist serde-only, hat keine GPU-Abhaengigkeit und ist headless
# vollstaendig per `cargo test` pruefbar.
default = []
# GPU-Pipelines (wgpu). Baut auch headless (wgpu laedt Vulkan/GL erst zur
# Laufzeit dynamisch), rendert aber nur mit einer aktiven Grafik-Session.
# glyphon = GPU-Glyphen-Atlas fuer ECHTE TrueType-Schrift (cosmic-text) —
# gehoert bewusst in die GPU-Schicht, die serde-only-Default-Schicht bleibt fontfrei.
render = ["dep:wgpu", "dep:bytemuck", "dep:pollster", "dep:glyphon"]
# Fenster-Spike (winit) inkl. lauffaehigem Binary. Braucht Wayland/X11 + eine
# Display-Session zur visuellen Verifikation.
window = ["render", "dep:winit", "dep:env_logger"]
[dependencies]
serde = { version = "1", features = ["derive"] }
# --- GPU (nur mit Feature "render") ------------------------------------------
# Standard-Features von wgpu (wgsl, webgpu, dx12, metal). Die Linux-Backends
# Vulkan/GLES aktiviert wgpu selbst ueber seine target-spezifischen Defaults —
# es gibt in wgpu 22 keine expliziten `vulkan`/`gles`-Feature-Namen.
wgpu = { version = "22", optional = true }
bytemuck = { version = "1", optional = true, features = ["derive"] }
pollster = { version = "0.3", optional = true }
# Echte TrueType-Glyphen ueber einen GPU-Atlas (cosmic-text + etagere). Version
# an wgpu gekoppelt: die 0.6er-Reihe ist die zu wgpu 22 passende.
glyphon = { version = "0.6", optional = true }
# --- Fenster (nur mit Feature "window") --------------------------------------
winit = { version = "0.30", optional = true }
env_logger = { version = "0.11", optional = true }
[dev-dependencies]
serde_json = "1"
# naga validiert die WGSL-Quellen headless (Parser + Validator) im Test, ohne
# GPU/Display. Version an wgpu 22 gekoppelt (transitiv ohnehin vorhanden).
naga = { version = "22", features = ["wgsl-in"] }
# Der Fenster-Spike ist nur mit Feature "window" verfuegbar; ohne das Feature
# wird das Binary aus dem Build ausgeschlossen (required-features).
[[bin]]
name = "spike"
path = "src/bin/spike.rs"
required-features = ["window"]