Moved all region capture related helpers to RegionCaptureHelpers class

This commit is contained in:
Jaex 2016-05-15 10:34:02 +03:00
parent 8ddf91f57c
commit 4c3f0efd1f
12 changed files with 129 additions and 140 deletions

View file

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

View file

@ -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;

View file

@ -25,7 +25,7 @@
using System.Drawing;
namespace ShareX
namespace ShareX.ScreenCaptureLib
{
public class PointInfo
{

View file

@ -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;
}
}
}

View file

@ -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" />

View file

@ -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();

View file

@ -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);
}

View file

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

View file

@ -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;

View file

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

View file

@ -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>

View file

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