From 09fdffc32d954206db53a315a7845e9e694abd91 Mon Sep 17 00:00:00 2001 From: Jaex Date: Tue, 3 May 2016 14:06:15 +0300 Subject: [PATCH] Only allow selection and moving shapes if current shape is same as selected shape that way you can do region capture top of drawings without select drawing shape --- ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs | 2 +- ShareX.ScreenCaptureLib/Shapes/BaseShape.cs | 2 ++ ShareX.ScreenCaptureLib/Shapes/Drawing/RectangleDrawingShape.cs | 2 ++ .../Shapes/Drawing/RoundedRectangleDrawingShape.cs | 2 ++ ShareX.ScreenCaptureLib/Shapes/Region/DiamondRegionShape.cs | 2 ++ ShareX.ScreenCaptureLib/Shapes/Region/EllipseRegionShape.cs | 2 ++ ShareX.ScreenCaptureLib/Shapes/Region/RectangleRegionShape.cs | 2 ++ .../Shapes/Region/RoundedRectangleRegionShape.cs | 2 ++ ShareX.ScreenCaptureLib/Shapes/Region/TriangleRegionShape.cs | 2 ++ 9 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs b/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs index bb1def0ae..a37622155 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs @@ -440,7 +440,7 @@ private void RegionSelection(Point location) PositionOnClick = InputManager.MousePosition0Based; - if (shape != null) // Select area + if (shape != null && shape.ShapeType == CurrentShapeType) // Select area { IsMoving = true; CurrentShape = shape; diff --git a/ShareX.ScreenCaptureLib/Shapes/BaseShape.cs b/ShareX.ScreenCaptureLib/Shapes/BaseShape.cs index 1e12b7e02..0aeee7bc8 100644 --- a/ShareX.ScreenCaptureLib/Shapes/BaseShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/BaseShape.cs @@ -31,6 +31,8 @@ namespace ShareX.ScreenCaptureLib { public abstract class BaseShape { + public abstract ShapeType ShapeType { get; } + public Rectangle Rectangle { get; set; } public BaseShape() diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/RectangleDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/RectangleDrawingShape.cs index 1679ce8a6..13dc0de23 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/RectangleDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/RectangleDrawingShape.cs @@ -34,6 +34,8 @@ namespace ShareX.ScreenCaptureLib { public class RectangleDrawingShape : BaseDrawingShape { + public override ShapeType ShapeType { get; } = ShapeType.DrawingRectangle; + public override void Draw(Graphics g) { if (FillColor != Color.Transparent) diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/RoundedRectangleDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/RoundedRectangleDrawingShape.cs index 2dd05af83..9760e17f8 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/RoundedRectangleDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/RoundedRectangleDrawingShape.cs @@ -34,6 +34,8 @@ namespace ShareX.ScreenCaptureLib { public class RoundedRectangleDrawingShape : BaseDrawingShape { + public override ShapeType ShapeType { get; } = ShapeType.DrawingRoundedRectangle; + public float Radius { get; set; } public override void Draw(Graphics g) diff --git a/ShareX.ScreenCaptureLib/Shapes/Region/DiamondRegionShape.cs b/ShareX.ScreenCaptureLib/Shapes/Region/DiamondRegionShape.cs index 2b7ef5506..b965b0e49 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Region/DiamondRegionShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Region/DiamondRegionShape.cs @@ -35,6 +35,8 @@ namespace ShareX.ScreenCaptureLib { public class DiamondRegionShape : BaseRegionShape { + public override ShapeType ShapeType { get; } = ShapeType.RegionDiamond; + public override void AddShapePath(GraphicsPath gp, Rectangle rect) { gp.AddDiamond(rect); diff --git a/ShareX.ScreenCaptureLib/Shapes/Region/EllipseRegionShape.cs b/ShareX.ScreenCaptureLib/Shapes/Region/EllipseRegionShape.cs index 24aaf1ac6..915ed1c0b 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Region/EllipseRegionShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Region/EllipseRegionShape.cs @@ -34,6 +34,8 @@ namespace ShareX.ScreenCaptureLib { public class EllipseRegionShape : BaseRegionShape { + public override ShapeType ShapeType { get; } = ShapeType.RegionEllipse; + public override void AddShapePath(GraphicsPath gp, Rectangle rect) { gp.AddEllipse(rect); diff --git a/ShareX.ScreenCaptureLib/Shapes/Region/RectangleRegionShape.cs b/ShareX.ScreenCaptureLib/Shapes/Region/RectangleRegionShape.cs index 0c60cc260..0c47036c2 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Region/RectangleRegionShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Region/RectangleRegionShape.cs @@ -34,6 +34,8 @@ namespace ShareX.ScreenCaptureLib { public class RectangleRegionShape : BaseRegionShape { + public override ShapeType ShapeType { get; } = ShapeType.RegionRectangle; + public override void AddShapePath(GraphicsPath gp, Rectangle rect) { gp.AddRectangle(rect); diff --git a/ShareX.ScreenCaptureLib/Shapes/Region/RoundedRectangleRegionShape.cs b/ShareX.ScreenCaptureLib/Shapes/Region/RoundedRectangleRegionShape.cs index 99abfc639..a57b0ca83 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Region/RoundedRectangleRegionShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Region/RoundedRectangleRegionShape.cs @@ -35,6 +35,8 @@ namespace ShareX.ScreenCaptureLib { public class RoundedRectangleRegionShape : BaseRegionShape { + public override ShapeType ShapeType { get; } = ShapeType.RegionRoundedRectangle; + public float Radius { get; set; } public override void AddShapePath(GraphicsPath gp, Rectangle rect) diff --git a/ShareX.ScreenCaptureLib/Shapes/Region/TriangleRegionShape.cs b/ShareX.ScreenCaptureLib/Shapes/Region/TriangleRegionShape.cs index 7fe61f4be..544b596ff 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Region/TriangleRegionShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Region/TriangleRegionShape.cs @@ -35,6 +35,8 @@ namespace ShareX.ScreenCaptureLib { public class TriangleRegionShape : BaseRegionShape { + public override ShapeType ShapeType { get; } = ShapeType.RegionTriangle; + public TriangleAngle Angle { get; set; } public override void AddShapePath(GraphicsPath gp, Rectangle rect)