Summary
Centralize the geometry for the shared ruler zero corner so drawing, resizing, alignment, and grouping all use the same definitions.
Implementation Notes
- Model four zero-corner states: top-left, top-right, bottom-left, bottom-right.
- Derive each ruler’s zero point, growth direction, tick/label side, resize-handle side, and frame placement from that model.
- Prefer pure helper functions/types that are easy to unit test.
- Avoid scattering left/right/top/bottom conditionals through controller and view code.
Acceptance Criteria
- A single helper layer can answer zero point, tick side, growth direction, resize side, and frame placement for both orientations.
- Tests cover all four zero-corner states.
- Existing default top-left behavior is represented without special casing outside the helper layer.
Summary
Centralize the geometry for the shared ruler zero corner so drawing, resizing, alignment, and grouping all use the same definitions.
Implementation Notes
Acceptance Criteria