diff --git a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs index 03efa755f..19a96f22e 100644 --- a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs @@ -248,7 +248,7 @@ public virtual Image GetResultImage() { using (Image img = GetOutputImage()) { - return RegionCaptureHelpers.GetRegionImage(img, regionFillPath, regionDrawPath, Config); + return RegionCaptureHelpers.ApplyRegionPathToImage(img, regionFillPath, regionDrawPath, Config); } } else if (Result == RegionResult.Fullscreen) diff --git a/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs index 0c2766a49..133156f39 100644 --- a/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/ScrollingCaptureForm.cs @@ -124,7 +124,7 @@ private void SelectHandle() { Thread.Sleep(250); - SimpleWindowInfo simpleWindowInfo = GetWindowInfo(); + SimpleWindowInfo simpleWindowInfo = RegionCaptureHelpers.GetWindowInfo(); if (simpleWindowInfo != null) { @@ -161,7 +161,7 @@ private void SelectRectangle() Rectangle rect; - if (RegionCaptureHelpers.SelectRegion(out rect)) + if (RegionCaptureHelpers.GetRectangleRegion(out rect)) { selectedRectangle = rect; lblSelectedRectangle.Text = selectedRectangle.ToString(); @@ -185,26 +185,6 @@ private void btnCapture_Click(object sender, EventArgs e) } } - private SimpleWindowInfo GetWindowInfo() - { - using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.OneClick)) - { - form.Config.UseDimming = false; - form.Config.ShowMagnifier = false; - form.Config.ShowTips = false; - - form.Prepare(); - form.ShowDialog(); - - if (form.Result == RegionResult.Region) - { - return form.SelectedWindow; - } - } - - return null; - } - private void StartCapture() { isCapturing = true; diff --git a/ShareX/PointInfo.cs b/ShareX.ScreenCaptureLib/RegionHelpers/PointInfo.cs similarity index 97% rename from ShareX/PointInfo.cs rename to ShareX.ScreenCaptureLib/RegionHelpers/PointInfo.cs index be5d79c03..f26fe2b64 100644 --- a/ShareX/PointInfo.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/PointInfo.cs @@ -25,7 +25,7 @@ using System.Drawing; -namespace ShareX +namespace ShareX.ScreenCaptureLib { public class PointInfo { diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/ShapeCaptureHelpers.cs b/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs similarity index 65% rename from ShareX.ScreenCaptureLib/RegionHelpers/ShapeCaptureHelpers.cs rename to ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs index bc07efc37..a15d4e6c8 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/ShapeCaptureHelpers.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs @@ -33,7 +33,119 @@ namespace ShareX.ScreenCaptureLib { public static class RegionCaptureHelpers { - public static Image GetRegionImage(Image backgroundImage, GraphicsPath regionFillPath, GraphicsPath regionDrawPath, SurfaceOptions options) + public static Image GetRegionImage() + { + using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Default)) + { + form.Config.ShowTips = false; + + form.Prepare(); + form.ShowDialog(); + + return form.GetResultImage(); + } + } + + public static bool GetRectangleRegion(out Rectangle rect) + { + using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Default)) + { + form.Config.ShowTips = false; + + form.Prepare(); + form.ShowDialog(); + + if (form.Result == RegionResult.Region) + { + if (form.ShapeManager.IsCurrentRegionValid) + { + rect = CaptureHelpers.ClientToScreen(form.ShapeManager.CurrentRectangle); + return true; + } + } + else if (form.Result == RegionResult.Fullscreen) + { + rect = CaptureHelpers.GetScreenBounds(); + return true; + } + else if (form.Result == RegionResult.Monitor) + { + Screen[] screens = Screen.AllScreens; + + if (form.MonitorIndex < screens.Length) + { + Screen screen = screens[form.MonitorIndex]; + rect = screen.Bounds; + return true; + } + } + else if (form.Result == RegionResult.ActiveMonitor) + { + rect = CaptureHelpers.GetActiveScreenBounds(); + return true; + } + } + + rect = Rectangle.Empty; + return false; + } + + public static PointInfo GetPointInfo() + { + using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.ScreenColorPicker)) + { + form.Config.DetectWindows = false; + form.Config.ShowTips = false; + form.Config.UseDimming = false; + + form.Prepare(); + form.ShowDialog(); + + if (form.Result == RegionResult.Region) + { + PointInfo pointInfo = new PointInfo(); + pointInfo.Position = form.CurrentPosition; + pointInfo.Color = form.CurrentColor; + return pointInfo; + } + } + + return null; + } + + public static SimpleWindowInfo GetWindowInfo() + { + using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.OneClick)) + { + form.Config.UseDimming = false; + form.Config.ShowMagnifier = false; + form.Config.ShowTips = false; + + form.Prepare(); + form.ShowDialog(); + + if (form.Result == RegionResult.Region) + { + return form.SelectedWindow; + } + } + + return null; + } + + public static void ShowScreenRuler() + { + using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Ruler)) + { + form.Config.QuickCrop = false; + form.Config.ShowTips = false; + + form.Prepare(); + form.ShowDialog(); + } + } + + public static Image ApplyRegionPathToImage(Image backgroundImage, GraphicsPath regionFillPath, GraphicsPath regionDrawPath, SurfaceOptions options) { if (backgroundImage != null && regionFillPath != null) { @@ -75,56 +187,5 @@ private static void MoveGraphicsPath(GraphicsPath gp, int x, int y) gp.Transform(matrix); } } - - public static bool SelectRegion(out Rectangle rect, SurfaceOptions options = null) - { - using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Default)) - { - if (options != null) - { - form.Config = options; - } - - form.Config.DetectWindows = true; - form.Config.QuickCrop = true; - form.Config.ShowTips = false; - - form.Prepare(); - form.ShowDialog(); - - if (form.Result == RegionResult.Region) - { - if (form.ShapeManager.IsCurrentRegionValid) - { - rect = CaptureHelpers.ClientToScreen(form.ShapeManager.CurrentRectangle); - return true; - } - } - else if (form.Result == RegionResult.Fullscreen) - { - rect = CaptureHelpers.GetScreenBounds(); - return true; - } - else if (form.Result == RegionResult.Monitor) - { - Screen[] screens = Screen.AllScreens; - - if (form.MonitorIndex < screens.Length) - { - Screen screen = screens[form.MonitorIndex]; - rect = screen.Bounds; - return true; - } - } - else if (form.Result == RegionResult.ActiveMonitor) - { - rect = CaptureHelpers.GetActiveScreenBounds(); - return true; - } - } - - rect = Rectangle.Empty; - return false; - } } } \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj index 9c0057a31..4561105b0 100644 --- a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj +++ b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj @@ -80,6 +80,7 @@ + @@ -132,7 +133,7 @@ - + diff --git a/ShareX/Forms/AutoCaptureForm.cs b/ShareX/Forms/AutoCaptureForm.cs index aa0a8989d..ac3ca1494 100644 --- a/ShareX/Forms/AutoCaptureForm.cs +++ b/ShareX/Forms/AutoCaptureForm.cs @@ -126,7 +126,7 @@ private void SelectRegion(TaskSettings taskSettings) { Rectangle rect; - if (TaskHelpers.SelectRegion(out rect, taskSettings)) + if (RegionCaptureHelpers.GetRectangleRegion(out rect)) { Program.Settings.AutoCaptureRegion = rect; UpdateRegion(); diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index fba4224f7..3e2485192 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -1052,7 +1052,7 @@ private void tsmiQRCode_Click(object sender, EventArgs e) private void tsmiRuler_Click(object sender, EventArgs e) { - TaskHelpers.OpenRuler(); + RegionCaptureHelpers.ShowScreenRuler(); } private void tsmiAutomate_Click(object sender, EventArgs e) @@ -1867,7 +1867,7 @@ private void ExecuteJob(TaskSettings taskSettings, HotkeyType job) TaskHelpers.OpenQRCode(); break; case HotkeyType.Ruler: - TaskHelpers.OpenRuler(); + RegionCaptureHelpers.ShowScreenRuler(); break; case HotkeyType.Automate: TaskHelpers.StartAutomate(); @@ -2212,7 +2212,7 @@ private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = tr { using (Image screenshot = Screenshot.CaptureFullscreen()) { - return RegionCaptureHelpers.GetRegionImage(screenshot, BaseRegionForm.LastRegionFillPath, BaseRegionForm.LastRegionDrawPath, taskSettings.CaptureSettings.SurfaceOptions); + return RegionCaptureHelpers.ApplyRegionPathToImage(screenshot, BaseRegionForm.LastRegionFillPath, BaseRegionForm.LastRegionDrawPath, taskSettings.CaptureSettings.SurfaceOptions); } }, CaptureType.LastRegion, taskSettings, autoHideForm); } diff --git a/ShareX/Forms/ScreenColorPicker.cs b/ShareX/Forms/ScreenColorPicker.cs index f09426b45..9ba699413 100644 --- a/ShareX/Forms/ScreenColorPicker.cs +++ b/ShareX/Forms/ScreenColorPicker.cs @@ -25,6 +25,7 @@ using ShareX.HelpersLib; using ShareX.Properties; +using ShareX.ScreenCaptureLib; using System; using System.Drawing; using System.Threading; @@ -120,7 +121,7 @@ private void btnPipette_Click(object sender, EventArgs e) Hide(); Thread.Sleep(250); - PointInfo pointInfo = TaskHelpers.SelectPointColor(); + PointInfo pointInfo = RegionCaptureHelpers.GetPointInfo(); if (pointInfo != null) { diff --git a/ShareX/Forms/TaskSettingsForm.cs b/ShareX/Forms/TaskSettingsForm.cs index 8ba007ce9..97cbd3c9d 100644 --- a/ShareX/Forms/TaskSettingsForm.cs +++ b/ShareX/Forms/TaskSettingsForm.cs @@ -804,7 +804,7 @@ private void btnCaptureCustomRegionSelectRectangle_Click(object sender, EventArg { Rectangle rect; - if (TaskHelpers.SelectRegion(out rect, TaskSettings)) + if (RegionCaptureHelpers.GetRectangleRegion(out rect)) { nudCaptureCustomRegionX.Value = rect.X; nudCaptureCustomRegionY.Value = rect.Y; diff --git a/ShareX/ScreenRecordManager.cs b/ShareX/ScreenRecordManager.cs index 8a707c373..cb17fd03a 100644 --- a/ShareX/ScreenRecordManager.cs +++ b/ShareX/ScreenRecordManager.cs @@ -126,7 +126,7 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t switch (startMethod) { case ScreenRecordStartMethod.Region: - TaskHelpers.SelectRegion(out captureRectangle, taskSettings); + RegionCaptureHelpers.GetRectangleRegion(out captureRectangle); break; case ScreenRecordStartMethod.ActiveWindow: if (taskSettings.CaptureSettings.CaptureClientArea) diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj index 0e21569f3..0966bec97 100644 --- a/ShareX/ShareX.csproj +++ b/ShareX/ShareX.csproj @@ -258,7 +258,6 @@ MainForm.cs - True True diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index bad8dcfec..c37b2fef9 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -311,47 +311,6 @@ private static void AddExternalProgramFromRegistry(TaskSettings taskSettings, st } } - public static bool SelectRegion(out Rectangle rect, TaskSettings taskSettings) - { - return RegionCaptureHelpers.SelectRegion(out rect, taskSettings.CaptureSettings.SurfaceOptions); - } - - public static PointInfo SelectPointColor() - { - using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.ScreenColorPicker)) - { - form.Config.DetectWindows = false; - form.Config.ShowTips = false; - form.Config.UseDimming = false; - - form.Prepare(); - form.ShowDialog(); - - if (form.Result == RegionResult.Region) - { - PointInfo pointInfo = new PointInfo(); - pointInfo.Position = form.CurrentPosition; - pointInfo.Color = form.CurrentColor; - return pointInfo; - } - } - - return null; - } - - public static Image GetRegionImage() - { - using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Default)) - { - form.Config.ShowTips = false; - - form.Prepare(); - form.ShowDialog(); - - return form.GetResultImage(); - } - } - public static Icon GetProgressIcon(int percentage) { using (Bitmap bmp = new Bitmap(16, 16)) @@ -529,7 +488,7 @@ public static void OpenScreenColorPicker(TaskSettings taskSettings = null) { if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); - PointInfo pointInfo = SelectPointColor(); + PointInfo pointInfo = RegionCaptureHelpers.GetPointInfo(); if (pointInfo != null) { @@ -552,18 +511,6 @@ public static void OpenScreenColorPicker(TaskSettings taskSettings = null) } } - public static void OpenRuler() - { - using (RectangleRegionForm form = new RectangleRegionForm(RectangleRegionMode.Ruler)) - { - form.Config.QuickCrop = false; - form.Config.ShowTips = false; - - form.Prepare(); - form.ShowDialog(); - } - } - public static void OpenAutomate() { AutomateForm form = AutomateForm.GetInstance(Program.Settings.AutomateScripts); @@ -724,7 +671,7 @@ public static void OpenQRCode() public static void OpenOCR() { - using (Image img = GetRegionImage()) + using (Image img = RegionCaptureHelpers.GetRegionImage()) { if (img != null) {