From 7c7976a82d1091faf61d4d8b932bbc39827adfc7 Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Sat, 26 Aug 2023 15:37:57 -0400 Subject: [PATCH] change mouse cursor when inside crop box --- Program.cs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Program.cs b/Program.cs index aa3c23c..103407f 100644 --- a/Program.cs +++ b/Program.cs @@ -87,14 +87,14 @@ public class Transform { } public interface ITool { - ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform); + ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform, Game game); string Status(); void Draw(UiGeometry geometry, Game game); } public class ViewTool : ITool { - public ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform) { + public ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform, Game game) { return ToolStatus.Active; } @@ -121,13 +121,15 @@ public class CropTool : ITool { mouseDragEnd = new(photo.CropRectangle.Right, photo.CropRectangle.Bottom); } - public ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform) { + public ToolStatus HandleInput(KeyboardState input, MouseState mouse, Transform transform, Game game) { Vector2i mousePosition = (Vector2i) mouse.Position; Vector2i imagePosition = transform.ScreenToImage(mousePosition); + bool mouseInRectangle = photo.CropRectangle.Contains(imagePosition.X, imagePosition.Y); if (mouse.IsButtonPressed(MouseButton.Button1)) { - dragging = photo.CropRectangle.Contains(imagePosition.X, imagePosition.Y); + dragging = mouseInRectangle; } + game.Cursor = mouseInRectangle ? MouseCursor.Default : MouseCursor.Crosshair; if (!dragging) { if (mouse.IsButtonPressed(MouseButton.Button1)) { @@ -169,10 +171,12 @@ public class CropTool : ITool { status = $"({r.Left}, {r.Top}, {r.Right}, {r.Bottom}) {r.Width}x{r.Height}"; if (input.IsKeyPressed(Keys.Enter)) { + game.Cursor = MouseCursor.Default; return ToolStatus.Done; } if (input.IsKeyPressed(Keys.Escape)) { + game.Cursor = MouseCursor.Default; photo.CropRectangle = Rectangle.Empty; return ToolStatus.Canceled; } @@ -437,8 +441,8 @@ public class Game : GameWindow { RenderFrequency = 30; UpdateFrequency = 30; } else { - RenderFrequency = 2; - UpdateFrequency = 2; + RenderFrequency = 5; + UpdateFrequency = 5; } Photo previousPhoto = photos[photoIndex]; @@ -601,7 +605,7 @@ public class Game : GameWindow { } // Delegate input to the active tool. - ToolStatus status = activeTool.HandleInput(KeyboardState, MouseState, transform); + ToolStatus status = activeTool.HandleInput(KeyboardState, MouseState, transform, this); // Change back to the default tool if the active tool is done. if (status != ToolStatus.Active) { @@ -673,7 +677,7 @@ public class Game : GameWindow { false, 5 * sizeof(float), 3 * sizeof(float)); // Load photos from a directory. - // string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\"); + string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\"); // string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\"); // string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\23\"); // string[] files = Directory.GetFiles(@"G:\DCIM\100EOSR6\"); @@ -681,7 +685,7 @@ public class Game : GameWindow { // string[] files = Directory.GetFiles(@"c:\users\colin\desktop\import"); // string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23"); // string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\Germany all\104D7000"); - string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\many-birds\"); + // string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\many-birds\"); for (int i = 0; i < files.Count(); i++) { string file = files[i];