From 59aee065f110bab91f83cbdfe7b15529413dad58 Mon Sep 17 00:00:00 2001 From: Jaex Date: Mon, 14 Aug 2017 11:06:12 +0300 Subject: [PATCH] Added IsValid method to CursorData --- ShareX.HelpersLib/CursorData.cs | 19 +++++++++++-------- ShareX.ScreenCaptureLib/Screenshot.cs | 2 +- .../Screenshot_Transparent.cs | 10 +++++----- ShareX/CaptureHelpers/CaptureRegion.cs | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/ShareX.HelpersLib/CursorData.cs b/ShareX.HelpersLib/CursorData.cs index 71a2cacae..872cef71c 100644 --- a/ShareX.HelpersLib/CursorData.cs +++ b/ShareX.HelpersLib/CursorData.cs @@ -35,6 +35,8 @@ public class CursorData : IDisposable public bool IsVisible { get; private set; } public Point Position { get; private set; } + public bool IsValid => Handle != IntPtr.Zero && IsVisible; + public CursorData() { UpdateCursorData(); @@ -73,14 +75,14 @@ public void UpdateCursorData() } } - public void DrawCursorToImage(Image img) + public void DrawCursor(Image img) { - DrawCursorToImage(img, Point.Empty); + DrawCursor(img, Point.Empty); } - public void DrawCursorToImage(Image img, Point cursorOffset) + public void DrawCursor(Image img, Point cursorOffset) { - if (Handle != IntPtr.Zero) + if (IsValid) { Point drawPosition = new Point(Position.X - cursorOffset.X, Position.Y - cursorOffset.Y); @@ -92,16 +94,17 @@ public void DrawCursorToImage(Image img, Point cursorOffset) } } - public void DrawCursorToHandle(IntPtr hdcDest) + public void DrawCursor(IntPtr hdcDest) { - DrawCursorToHandle(hdcDest, Point.Empty); + DrawCursor(hdcDest, Point.Empty); } - public void DrawCursorToHandle(IntPtr hdcDest, Point cursorOffset) + public void DrawCursor(IntPtr hdcDest, Point cursorOffset) { - if (Handle != IntPtr.Zero) + if (IsValid) { Point drawPosition = new Point(Position.X - cursorOffset.X, Position.Y - cursorOffset.Y); + NativeMethods.DrawIconEx(hdcDest, drawPosition.X, drawPosition.Y, Handle, 0, 0, 0, IntPtr.Zero, NativeConstants.DI_NORMAL); } } diff --git a/ShareX.ScreenCaptureLib/Screenshot.cs b/ShareX.ScreenCaptureLib/Screenshot.cs index 090153b4e..e3f0678f0 100644 --- a/ShareX.ScreenCaptureLib/Screenshot.cs +++ b/ShareX.ScreenCaptureLib/Screenshot.cs @@ -135,7 +135,7 @@ private Image CaptureRectangleNative(IntPtr handle, Rectangle rect, bool capture { using (CursorData cursorData = new CursorData()) { - cursorData.DrawCursorToHandle(hdcDest, cursorOffset); + cursorData.DrawCursor(hdcDest, cursorOffset); } } catch (Exception e) diff --git a/ShareX.ScreenCaptureLib/Screenshot_Transparent.cs b/ShareX.ScreenCaptureLib/Screenshot_Transparent.cs index b2c02f06c..3c6f2db8f 100644 --- a/ShareX.ScreenCaptureLib/Screenshot_Transparent.cs +++ b/ShareX.ScreenCaptureLib/Screenshot_Transparent.cs @@ -47,7 +47,7 @@ public Image CaptureWindowTransparent(IntPtr handle) } Bitmap whiteBackground = null, blackBackground = null, whiteBackground2 = null; - CursorData cursor = null; + CursorData cursorData = null; bool isTransparent = false, isTaskbarHide = false; try @@ -61,7 +61,7 @@ public Image CaptureWindowTransparent(IntPtr handle) { try { - cursor = new CursorData(); + cursorData = new CursorData(); } catch (Exception e) { @@ -119,10 +119,10 @@ public Image CaptureWindowTransparent(IntPtr handle) transparentImage = whiteBackground2; } - if (cursor != null && cursor.IsVisible) + if (cursorData != null && cursorData.IsValid) { Point cursorOffset = CaptureHelpers.ScreenToClient(rect.Location); - cursor.DrawCursorToImage(transparentImage, cursorOffset); + cursorData.DrawCursor(transparentImage, cursorOffset); } if (isTransparent) @@ -147,7 +147,7 @@ public Image CaptureWindowTransparent(IntPtr handle) if (whiteBackground != null) whiteBackground.Dispose(); if (blackBackground != null) blackBackground.Dispose(); if (isTransparent && whiteBackground2 != null) whiteBackground2.Dispose(); - if (cursor != null) cursor.Dispose(); + if (cursorData != null) cursorData.Dispose(); } } diff --git a/ShareX/CaptureHelpers/CaptureRegion.cs b/ShareX/CaptureHelpers/CaptureRegion.cs index a588f8b06..326091b0f 100644 --- a/ShareX/CaptureHelpers/CaptureRegion.cs +++ b/ShareX/CaptureHelpers/CaptureRegion.cs @@ -94,7 +94,7 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings) form.Prepare(img); - if (cursorData != null && cursorData.IsVisible) + if (cursorData != null && cursorData.IsValid) { form.AddCursor(cursorData.Handle, cursorData.Position); }