From 8ab1e5194fea15a8cd41f816a5311399cb49ce13 Mon Sep 17 00:00:00 2001 From: Karim Date: Sat, 22 Aug 2026 01:20:29 +0200 Subject: [PATCH] Vordergrund wirkt jetzt wirklich auf die Schraffurfarbe (war seit 2026-07-04 hart auf Tinte gezwungen) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nutzer-Report: "Vordergrund funktioniert bei mir jetzt nicht, es ist und bleibt schwarz, idk y. Hintergrund geht." Ursache gefunden: resolveHatch() (plan/generatePlan/shared.ts) zwang `color` schon immer fest auf HATCH_INK, mit explizitem Code-Kommentar "Nutzer-Vorgabe 2026-07-04" -- eine frühere, bewusste Entscheidung, dass Schnitt- UND Ansichtsschraffur IMMER dieselbe dunkle Tinte zeigen, unabhängig vom aufgelösten Vordergrund. Der `_foreground`-Parameter wurde entgegen- genommen, aber nie verwendet (Unterstrich-Präfix als Markierung). Rückfrage gestellt (Entscheidung von 2026-07-04 aufheben oder als gewollt so belassen?) -- Nutzer bestätigt: aufheben. Fix: `color: foreground ?? HATCH_INK` -- ein aufgelöster Vordergrund gewinnt, fehlt er (der heutige Normalfall, da Component.foreground bei den meisten Bauteilen nie gesetzt ist), bleibt es exakt beim bisherigen Verhalten. Betrifft ALLE Aufrufer von resolveHatch (Wand, Decke, Stütze, Drawing2D, Grundriss UND Schnitt) einheitlich, da sie den Vordergrund schon vorher korrekt auflösten und durchreichten -- nur eben verworfen wurde. +2 Tests in structures.column.test.ts (Default bleibt Tinte, expliziter Vordergrund-Override schlägt jetzt durch). tsc/vitest 940/940 grün. --- src/plan/generatePlan.ts | 5 ++-- src/plan/generatePlan/shared.ts | 23 +++++++++---------- .../generatePlan/structures.column.test.ts | 12 ++++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/plan/generatePlan.ts b/src/plan/generatePlan.ts index 546c046..a4e6c03 100644 --- a/src/plan/generatePlan.ts +++ b/src/plan/generatePlan.ts @@ -121,8 +121,9 @@ export function resolveWallSectionStyle(project: Project, wall: Wall): SectionCu wallAngleDeg, resolveForeground(best, wall.foreground, category, wall.foregroundSource), ); - // Poché-Hintergrund neutral (Papier) statt Bauteil-Albedo; Vollmuster → Tinte. - // `hatch.color` ist bereits über {@link resolveHatch} auf HATCH_INK gezwungen. + // Poché-Hintergrund neutral (Papier) statt Bauteil-Albedo; Vollmuster → Tinte + // (unabhängig von `hatch.color`, das jetzt den aufgelösten Vordergrund tragen + // kann, s. {@link resolveHatch}). const solid = hatch.pattern === "solid"; return { fill: solid ? HATCH_INK : HATCH_PAPER, diff --git a/src/plan/generatePlan/shared.ts b/src/plan/generatePlan/shared.ts index 92c9824..35df588 100644 --- a/src/plan/generatePlan/shared.ts +++ b/src/plan/generatePlan/shared.ts @@ -369,20 +369,20 @@ export type Primitive = * {@link HatchRender} auf. Der Linienstil der Musterlinien wird, falls gesetzt, * aus dem Line Manager nachgeschlagen; sonst gilt ein dünner Default. * - * VORDERGRUND (Muster-/Schraffurlinienfarbe bzw. Vollfüllung): AKTUELL fest auf - * {@link HATCH_INK} gezwungen (Nutzer-Vorgabe 2026-07-04) — Schnitt- WIE - * Oberflächen-/Ansichtsschraffur zeigen dieselbe dunkle Tinte, unabhängig von - * Material-/Bauteilfarbe, HatchStyle.color oder einem By-Layer/By-Object- - * Vordergrund-Override. `_foreground` bleibt Teil der Signatur — alle Aufrufer - * reichen weiterhin den über {@link resolveForeground} aufgelösten Bauteil- - * Vordergrund durch (z. B. für eine spätere Wiederherstellung der materialtreuen - * Schraffur) —, fließt aber bewusst nicht mehr in `color` ein. + * VORDERGRUND (Muster-/Schraffurlinienfarbe bzw. Vollfüllung): der über + * {@link resolveForeground} aufgelöste Vordergrund gewinnt, wenn gesetzt (Nach + * Ebene/Nach Bauteil/eigener Wert); OHNE aufgelösten Wert bleibt es bei der + * neutralen Tinte {@link HATCH_INK} (bisheriges Verhalten — 2026-07-04 war die + * Vordergrund-Kette hier noch fest auf HATCH_INK gezwungen, unabhängig vom + * Ergebnis; auf Nutzer-Wunsch wieder aufgehoben, da „Vordergrund" im Attribut- + * Panel sonst wirkungslos bliebe — betrifft nur Elemente mit tatsächlich + * gesetztem Vordergrund, unverändertes Verhalten für alle anderen). */ export function resolveHatch( project: Project, hatchId: string, wallAngleDeg?: number, - _foreground?: string, + foreground?: string, ): HatchRender { const h = getHatch(project, hatchId); const ls = h.lineStyleId ? getLineStyle(project, h.lineStyleId) : null; @@ -399,9 +399,8 @@ export function resolveHatch( pattern: h.pattern, scale: h.scale, angle, - // Fest auf die Monochrom-Tinte gezwungen (siehe JSDoc oben) — weder - // `_foreground` noch `HatchStyle.color` (Material-/Bauteilfarbe) fließen ein. - color: HATCH_INK, + // Aufgelöster Vordergrund gewinnt (s. JSDoc oben), sonst neutrale Tinte. + color: foreground ?? HATCH_INK, lineWeight: ls?.weight ?? 0.13, dash: ls?.dash ?? null, kind: h.kind, diff --git a/src/plan/generatePlan/structures.column.test.ts b/src/plan/generatePlan/structures.column.test.ts index b28d2b6..96457b1 100644 --- a/src/plan/generatePlan/structures.column.test.ts +++ b/src/plan/generatePlan/structures.column.test.ts @@ -116,4 +116,16 @@ describe("addColumnPoche — Attribut-Override greift", () => { ); expect(polygonOf(out).hatch.pattern).toBe("none"); }); + + it("ohne gesetzten Vordergrund: Schraffurfarbe bleibt die neutrale Tinte (Default unverändert)", () => { + const out: Primitive[] = []; + addColumnPoche(out, project(), column(), false, 0.35, category); + expect(polygonOf(out).hatch.color).toBe("#0f0f0f"); + }); + + it("mit explizitem foreground-Override: die Schraffurfarbe wird die Override-Farbe (vorher wirkungslos)", () => { + const out: Primitive[] = []; + addColumnPoche(out, project(), column({ foreground: "#00ff88" }), false, 0.35, category); + expect(polygonOf(out).hatch.color).toBe("#00ff88"); + }); });