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)
{