Vordergrund wirkt jetzt wirklich auf die Schraffurfarbe (war seit
2026-07-04 hart auf Tinte gezwungen) 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.
This commit is contained in:
@@ -121,8 +121,9 @@ export function resolveWallSectionStyle(project: Project, wall: Wall): SectionCu
|
|||||||
wallAngleDeg,
|
wallAngleDeg,
|
||||||
resolveForeground(best, wall.foreground, category, wall.foregroundSource),
|
resolveForeground(best, wall.foreground, category, wall.foregroundSource),
|
||||||
);
|
);
|
||||||
// Poché-Hintergrund neutral (Papier) statt Bauteil-Albedo; Vollmuster → Tinte.
|
// Poché-Hintergrund neutral (Papier) statt Bauteil-Albedo; Vollmuster → Tinte
|
||||||
// `hatch.color` ist bereits über {@link resolveHatch} auf HATCH_INK gezwungen.
|
// (unabhängig von `hatch.color`, das jetzt den aufgelösten Vordergrund tragen
|
||||||
|
// kann, s. {@link resolveHatch}).
|
||||||
const solid = hatch.pattern === "solid";
|
const solid = hatch.pattern === "solid";
|
||||||
return {
|
return {
|
||||||
fill: solid ? HATCH_INK : HATCH_PAPER,
|
fill: solid ? HATCH_INK : HATCH_PAPER,
|
||||||
|
|||||||
@@ -369,20 +369,20 @@ export type Primitive =
|
|||||||
* {@link HatchRender} auf. Der Linienstil der Musterlinien wird, falls gesetzt,
|
* {@link HatchRender} auf. Der Linienstil der Musterlinien wird, falls gesetzt,
|
||||||
* aus dem Line Manager nachgeschlagen; sonst gilt ein dünner Default.
|
* aus dem Line Manager nachgeschlagen; sonst gilt ein dünner Default.
|
||||||
*
|
*
|
||||||
* VORDERGRUND (Muster-/Schraffurlinienfarbe bzw. Vollfüllung): AKTUELL fest auf
|
* VORDERGRUND (Muster-/Schraffurlinienfarbe bzw. Vollfüllung): der über
|
||||||
* {@link HATCH_INK} gezwungen (Nutzer-Vorgabe 2026-07-04) — Schnitt- WIE
|
* {@link resolveForeground} aufgelöste Vordergrund gewinnt, wenn gesetzt (Nach
|
||||||
* Oberflächen-/Ansichtsschraffur zeigen dieselbe dunkle Tinte, unabhängig von
|
* Ebene/Nach Bauteil/eigener Wert); OHNE aufgelösten Wert bleibt es bei der
|
||||||
* Material-/Bauteilfarbe, HatchStyle.color oder einem By-Layer/By-Object-
|
* neutralen Tinte {@link HATCH_INK} (bisheriges Verhalten — 2026-07-04 war die
|
||||||
* Vordergrund-Override. `_foreground` bleibt Teil der Signatur — alle Aufrufer
|
* Vordergrund-Kette hier noch fest auf HATCH_INK gezwungen, unabhängig vom
|
||||||
* reichen weiterhin den über {@link resolveForeground} aufgelösten Bauteil-
|
* Ergebnis; auf Nutzer-Wunsch wieder aufgehoben, da „Vordergrund" im Attribut-
|
||||||
* Vordergrund durch (z. B. für eine spätere Wiederherstellung der materialtreuen
|
* Panel sonst wirkungslos bliebe — betrifft nur Elemente mit tatsächlich
|
||||||
* Schraffur) —, fließt aber bewusst nicht mehr in `color` ein.
|
* gesetztem Vordergrund, unverändertes Verhalten für alle anderen).
|
||||||
*/
|
*/
|
||||||
export function resolveHatch(
|
export function resolveHatch(
|
||||||
project: Project,
|
project: Project,
|
||||||
hatchId: string,
|
hatchId: string,
|
||||||
wallAngleDeg?: number,
|
wallAngleDeg?: number,
|
||||||
_foreground?: string,
|
foreground?: string,
|
||||||
): HatchRender {
|
): HatchRender {
|
||||||
const h = getHatch(project, hatchId);
|
const h = getHatch(project, hatchId);
|
||||||
const ls = h.lineStyleId ? getLineStyle(project, h.lineStyleId) : null;
|
const ls = h.lineStyleId ? getLineStyle(project, h.lineStyleId) : null;
|
||||||
@@ -399,9 +399,8 @@ export function resolveHatch(
|
|||||||
pattern: h.pattern,
|
pattern: h.pattern,
|
||||||
scale: h.scale,
|
scale: h.scale,
|
||||||
angle,
|
angle,
|
||||||
// Fest auf die Monochrom-Tinte gezwungen (siehe JSDoc oben) — weder
|
// Aufgelöster Vordergrund gewinnt (s. JSDoc oben), sonst neutrale Tinte.
|
||||||
// `_foreground` noch `HatchStyle.color` (Material-/Bauteilfarbe) fließen ein.
|
color: foreground ?? HATCH_INK,
|
||||||
color: HATCH_INK,
|
|
||||||
lineWeight: ls?.weight ?? 0.13,
|
lineWeight: ls?.weight ?? 0.13,
|
||||||
dash: ls?.dash ?? null,
|
dash: ls?.dash ?? null,
|
||||||
kind: h.kind,
|
kind: h.kind,
|
||||||
|
|||||||
@@ -116,4 +116,16 @@ describe("addColumnPoche — Attribut-Override greift", () => {
|
|||||||
);
|
);
|
||||||
expect(polygonOf(out).hatch.pattern).toBe("none");
|
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");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user