Position spur label in the wider area of the trapezoid

Center text at vertical midpoint, shifted right toward the wider end
where there's more horizontal space. Uses 55% of the mid-height width
as center position and 85% as available width.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
igurielidze 2026-03-30 21:31:11 +04:00
parent 6b94339af2
commit 35aa0bf7dc
2 changed files with 11 additions and 10 deletions

View File

@ -556,12 +556,14 @@ function drawConveyanceLabel(ctx: CanvasRenderingContext2D, sym: PlacedSymbol) {
let cx: number, cy: number, availW: number, availH: number; let cx: number, cy: number, availW: number, availH: number;
if (isSpurType(sym.symbolId)) { if (isSpurType(sym.symbolId)) {
const w2 = sym.w2 ?? sym.w; const w2 = sym.w2 ?? sym.w;
// Position text toward the wider end where there's more room // Spur trapezoid: top edge = w2, bottom edge = w, left edge vertical.
const t = 0.65; // At vertical center, right edge is at (w2+w)/2.
const widthAtT = w2 + t * (sym.w - w2); // Place text centered in the wider rectangular region.
cx = sym.x + widthAtT / 2; const midRightEdge = (w2 + sym.w) / 2;
cy = sym.y + sym.h * t; // Use inner 70% of that width, shifted right (toward wide end)
availW = widthAtT - pad * 2; cx = sym.x + midRightEdge * 0.55;
cy = sym.y + sym.h / 2;
availW = midRightEdge * 0.85 - pad * 2;
availH = sym.h - pad * 2; availH = sym.h - pad * 2;
} else { } else {
cx = sym.x + sym.w / 2; cx = sym.x + sym.w / 2;

View File

@ -44,10 +44,9 @@ function emitConveyanceLabelInner(lines: string[], sym: PlacedSymbol) {
textRotDeg = (textRotRad * 180) / Math.PI; textRotDeg = (textRotRad * 180) / Math.PI;
} else if (isSpurType(sym.symbolId)) { } else if (isSpurType(sym.symbolId)) {
const w2 = sym.w2 ?? sym.w; const w2 = sym.w2 ?? sym.w;
const t = 0.65; const midRightEdge = (w2 + sym.w) / 2;
const widthAtT = w2 + t * (sym.w - w2); labelCx = sym.x + midRightEdge * 0.55;
labelCx = sym.x + widthAtT / 2; labelCy = sym.y + sym.h / 2;
labelCy = sym.y + sym.h * t;
availH = sym.h - 4; availH = sym.h - 4;
} else if (isInductionType(sym.symbolId)) { } else if (isInductionType(sym.symbolId)) {
const stripTopY = sym.y + sym.h * INDUCTION_CONFIG.stripTopFrac; const stripTopY = sym.y + sym.h * INDUCTION_CONFIG.stripTopFrac;