P9-03: Text and label compositor rewrite (pin/net/legend/annotation) #51

Closed
opened 2026-02-19 23:28:01 -05:00 by Rbanh · 3 comments
Owner

Scope:

  • Unified text compositor pass with collision classes and priority tiers.
  • Reserve fixed zones for legend + annotations.
  • Enforce min separation for pin labels around dense symbols.
  • Ensure orphan/floating labels cannot be rendered without visible anchor context.

Acceptance:

  • No overlapping pin/net labels in baseline fixtures.
  • Legend and annotation blocks never overlap schematic content.
  • Bus/net labels stay near relevant trunks/junctions.
Scope: - Unified text compositor pass with collision classes and priority tiers. - Reserve fixed zones for legend + annotations. - Enforce min separation for pin labels around dense symbols. - Ensure orphan/floating labels cannot be rendered without visible anchor context. Acceptance: - No overlapping pin/net labels in baseline fixtures. - Legend and annotation blocks never overlap schematic content. - Bus/net labels stay near relevant trunks/junctions.
Rbanh added this to the Phase 9 - Layout & Readability Production Hardening milestone 2026-02-19 23:28:20 -05:00
Author
Owner

Progress push cc20c0c landed.

Renderer improvements:

  • Added per-side pin label spacing resolver to reduce local pin text collisions.
  • Added separate per-side net-label spacing pass for per-pin net labels.
  • Moved annotation text into a dedicated annotation panel layer.
  • Legend now repositions below annotation panel.
  • Expanded blocked regions so net label placement avoids annotation/legend zones.

Validation:

  • npm test passing
  • npm run test:ui passing (baselines updated)
Progress push `cc20c0c` landed. Renderer improvements: - Added per-side pin label spacing resolver to reduce local pin text collisions. - Added separate per-side net-label spacing pass for per-pin net labels. - Moved annotation text into a dedicated annotation panel layer. - Legend now repositions below annotation panel. - Expanded blocked regions so net label placement avoids annotation/legend zones. Validation: - `npm test` passing - `npm run test:ui` passing (baselines updated)
Author
Owner

Follow-up readability patch f0b952e:

  • Net labels now include route-centered candidate anchors (representativePoint) before pin-anchor fallback.
  • Reduces 'floating label' artifacts where labels appeared detached from visible routed segments.

Regression status remains green (npm test, npm run test:ui).

Follow-up readability patch `f0b952e`: - Net labels now include route-centered candidate anchors (`representativePoint`) before pin-anchor fallback. - Reduces 'floating label' artifacts where labels appeared detached from visible routed segments. Regression status remains green (`npm test`, `npm run test:ui`).
Author
Owner

Completed by 1a9c7b5 + prior label-placement commits (cc20c0c, f0b952e).

Delivered:

  • Dedicated annotation panel with blocked collision region.
  • Legend placement below annotation panel.
  • Pin/net label spacing resolver and blocked-zone-aware label picking.
  • Net label anchors prefer routed representative points to avoid floating labels.
  • Annotation word-wrap/dynamic width to prevent text spill into schematic canvas.

Validation:

  • npm test
  • npm run test:ui
  • Render regression hash updated and deterministic.

Marking done against acceptance criteria for non-overlapping baseline text layers.

Completed by `1a9c7b5` + prior label-placement commits (`cc20c0c`, `f0b952e`). Delivered: - Dedicated annotation panel with blocked collision region. - Legend placement below annotation panel. - Pin/net label spacing resolver and blocked-zone-aware label picking. - Net label anchors prefer routed representative points to avoid floating labels. - Annotation word-wrap/dynamic width to prevent text spill into schematic canvas. Validation: - `npm test` - `npm run test:ui` - Render regression hash updated and deterministic. Marking done against acceptance criteria for non-overlapping baseline text layers.
Rbanh closed this issue 2026-02-20 01:06:38 -05:00
Sign in to join this conversation.
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Rbanh/schemeta#51
No description provided.