From d1a701a7f771bf9e6e2f1f148b2d6238ecacc6e7 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 28 Mar 2026 16:16:00 -0400 Subject: [PATCH] refactor: move shared GetRectangle to Action base class Both ActionSelect and ActionZoomWindow had identical 29-line GetRectangle methods; consolidate into the common base class. Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Actions/Action.cs | 15 ++++++++++++++ OpenNest/Actions/ActionSelect.cs | 31 +--------------------------- OpenNest/Actions/ActionZoomWindow.cs | 31 +--------------------------- 3 files changed, 17 insertions(+), 60 deletions(-) diff --git a/OpenNest/Actions/Action.cs b/OpenNest/Actions/Action.cs index c602942..16bbcdd 100644 --- a/OpenNest/Actions/Action.cs +++ b/OpenNest/Actions/Action.cs @@ -1,4 +1,6 @@ using OpenNest.Controls; +using OpenNest.Geometry; +using System.Drawing; namespace OpenNest.Actions { @@ -11,6 +13,19 @@ namespace OpenNest.Actions this.plateView = plateView; } + protected RectangleF GetRectangle(Vector worldPt1, Vector worldPt2) + { + var pt1 = plateView.PointWorldToGraph(worldPt1); + var pt2 = plateView.PointWorldToGraph(worldPt2); + + var x = pt1.X < pt2.X ? pt1.X : pt2.X; + var y = pt1.Y < pt2.Y ? pt1.Y : pt2.Y; + var w = System.Math.Abs(pt2.X - pt1.X); + var h = System.Math.Abs(pt2.Y - pt1.Y); + + return new RectangleF(x, y, w, h); + } + public virtual bool SurvivesPlateChange => false; public virtual void OnPlateChanged() { } diff --git a/OpenNest/Actions/ActionSelect.cs b/OpenNest/Actions/ActionSelect.cs index a0a268d..4a789b8 100644 --- a/OpenNest/Actions/ActionSelect.cs +++ b/OpenNest/Actions/ActionSelect.cs @@ -212,36 +212,7 @@ namespace OpenNest.Actions } } - private RectangleF GetRectangle() - { - var rect = new RectangleF(); - var pt1 = plateView.PointWorldToGraph(Point1); - var pt2 = plateView.PointWorldToGraph(Point2); - - if (pt1.X < pt2.X) - { - rect.X = pt1.X; - rect.Width = pt2.X - pt1.X; - } - else - { - rect.X = pt2.X; - rect.Width = pt1.X - pt2.X; - } - - if (pt1.Y < pt2.Y) - { - rect.Y = pt1.Y; - rect.Height = pt2.Y - pt1.Y; - } - else - { - rect.Y = pt2.Y; - rect.Height = pt1.Y - pt2.Y; - } - - return rect; - } + private RectangleF GetRectangle() => GetRectangle(Point1, Point2); public SelectionType SelectionType { diff --git a/OpenNest/Actions/ActionZoomWindow.cs b/OpenNest/Actions/ActionZoomWindow.cs index e9843f0..a279f15 100644 --- a/OpenNest/Actions/ActionZoomWindow.cs +++ b/OpenNest/Actions/ActionZoomWindow.cs @@ -166,36 +166,7 @@ namespace OpenNest.Actions plateView.Refresh(); } - private RectangleF GetRectangle() - { - var rect = new RectangleF(); - var pt1 = plateView.PointWorldToGraph(Point1); - var pt2 = plateView.PointWorldToGraph(Point2); - - if (pt1.X < pt2.X) - { - rect.X = pt1.X; - rect.Width = pt2.X - pt1.X; - } - else - { - rect.X = pt2.X; - rect.Width = pt1.X - pt2.X; - } - - if (pt1.Y < pt2.Y) - { - rect.Y = pt1.Y; - rect.Height = pt2.Y - pt1.Y; - } - else - { - rect.Y = pt2.Y; - rect.Height = pt1.Y - pt2.Y; - } - - return rect; - } + private RectangleF GetRectangle() => GetRectangle(Point1, Point2); public enum Status {