From 8104bd36269af3329d37e45d9172c82c341e9ae0 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 28 Mar 2026 14:36:10 -0400 Subject: [PATCH] feat: rotate bend labels parallel to bend line and center them Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Controls/EntityView.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/OpenNest/Controls/EntityView.cs b/OpenNest/Controls/EntityView.cs index 2d22e6b..26c97ff 100644 --- a/OpenNest/Controls/EntityView.cs +++ b/OpenNest/Controls/EntityView.cs @@ -277,7 +277,19 @@ namespace OpenNest.Controls if (!string.IsNullOrEmpty(bend.NoteText)) { var mid = new PointF((pt1.X + pt2.X) / 2f, (pt1.Y + pt2.Y) / 2f); - g.DrawString(bend.NoteText, noteFont, isSelected ? selectedNoteBrush : noteBrush, mid.X + 4, mid.Y + 4); + var angle = (float)(System.Math.Atan2(pt2.Y - pt1.Y, pt2.X - pt1.X) * 180.0 / System.Math.PI); + + // Keep text readable (not upside-down) + if (angle > 90f) angle -= 180f; + else if (angle < -90f) angle += 180f; + + var textSize = g.MeasureString(bend.NoteText, noteFont); + var state = g.Save(); + g.TranslateTransform(mid.X, mid.Y); + g.RotateTransform(angle); + g.DrawString(bend.NoteText, noteFont, isSelected ? selectedNoteBrush : noteBrush, + -textSize.Width / 2f, -textSize.Height); + g.Restore(state); } } }