Linien-/Random-Editor: Strich-Segmente, Vollinie, Random-Kontrollen; Weight raus

Linien-Editor: Umschalter Vollinie (dash null) / Strich mit editierbarer
Segment-Liste (mm, alternierend Strich/Luecke, hinzufuegen/entfernen), Live-
Vorschau. Das Strichstaerken-Feld ist aus dem Linien-Editor entfernt —
LineStyle.weight ist @deprecated (bleibt Render-Fallback), die echte
per-Element-Aufloesung (Attribut->Ebene->Default) folgt separat.

Random-Schraffur: additive HatchStyle-Parameter seed/density/lengthMin/Max +
Neu-wuerfeln-Button (neuer Seed nur zur Editzeit). buildRandomHatchRuns mischt
den expliziten Seed in den Hash und nutzt Dichte/Laenge — Determinismus
gewahrt (gleicher Seed+Flaeche => gleiche Streuung), ueber alle Renderpfade
konsistent, da alle aus derselben Funktion ziehen. resolveHatch/HatchRender
reichen die Parameter rein additiv durch. 2 neue Tests.
This commit is contained in:
2026-07-04 00:53:19 +02:00
parent 87ef7988d1
commit 07475cbe6c
8 changed files with 248 additions and 54 deletions
+10
View File
@@ -561,6 +561,16 @@ export const en: Record<TranslationKey, string> = {
"resources.field.rotation": "Rotation °",
"resources.field.amplitude": "Amplitude",
"resources.field.wavelength": "Wavelength",
"resources.field.density": "Density",
"resources.field.lengthMin": "Length min (mm)",
"resources.field.lengthMax": "Length max (mm)",
"resources.random.reroll": "Re-roll",
"resources.stroke.solid": "Solid",
"resources.stroke.dash": "Dash",
"resources.dash.segments": "Segments (mm)",
"resources.dash.hint": "Alternating dash/gap in mm (e.g. 1, 2 = 1 mm dash, 2 mm gap).",
"resources.dash.add": "Segment",
"resources.dash.remove": "Remove segment",
"resources.hatchKind.vector": "Vector",
"resources.hatchKind.image": "Image",
"resources.lines.parallel": "Parallel",