mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-01 04:30:49 +12:00
Moved all region capture related helpers to RegionCaptureHelpers class
This commit is contained in:
parent
8ddf91f57c
commit
4c3f0efd1f
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
using System.Drawing;
|
||||
|
||||
namespace ShareX
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
{
|
||||
public class PointInfo
|
||||
{
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -80,6 +80,7 @@
|
|||
</Compile>
|
||||
<Compile Include="RectangleAnnotateOptions.cs" />
|
||||
<Compile Include="RegionHelpers\ColorBlinkAnimation.cs" />
|
||||
<Compile Include="RegionHelpers\PointInfo.cs" />
|
||||
<Compile Include="Shapes\BaseShape.cs" />
|
||||
<Compile Include="Shapes\Drawing\ArrowDrawingShape.cs" />
|
||||
<Compile Include="Shapes\Drawing\BaseDrawingShape.cs" />
|
||||
|
@ -132,7 +133,7 @@
|
|||
<Compile Include="RegionHelpers\MouseState.cs" />
|
||||
<Compile Include="RegionHelpers\NodeObject.cs" />
|
||||
<Compile Include="RegionHelpers\ResizeManager.cs" />
|
||||
<Compile Include="RegionHelpers\ShapeCaptureHelpers.cs" />
|
||||
<Compile Include="RegionHelpers\RegionCaptureHelpers.cs" />
|
||||
<Compile Include="ScrollingCaptureOptions.cs" />
|
||||
<Compile Include="Shapes\Region\RoundedRectangleRegionShape.cs" />
|
||||
<Compile Include="SimpleWindowInfo.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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -258,7 +258,6 @@
|
|||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ImageTag.cs" />
|
||||
<Compile Include="PointInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue