Create node inside ShapeManager

This commit is contained in:
Jaex 2016-08-17 09:35:38 +03:00
parent 168e57c96b
commit c5a68e9945
3 changed files with 16 additions and 55 deletions

View file

@ -46,6 +46,7 @@ public abstract class BaseRegionForm : Form
public Rectangle ScreenRectangle0Based { get; private set; } public Rectangle ScreenRectangle0Based { get; private set; }
public RegionResult Result { get; private set; } public RegionResult Result { get; private set; }
public int MonitorIndex { get; set; } public int MonitorIndex { get; set; }
public List<DrawableObject> DrawableObjects { get; private set; }
protected Image backgroundImage; protected Image backgroundImage;
protected TextureBrush darkBackgroundBrush, lightBackgroundBrush; protected TextureBrush darkBackgroundBrush, lightBackgroundBrush;
@ -56,7 +57,6 @@ public abstract class BaseRegionForm : Form
protected Stopwatch timerStart, timerFPS; protected Stopwatch timerStart, timerFPS;
protected int frameCount; protected int frameCount;
protected bool pause, isKeyAllowed; protected bool pause, isKeyAllowed;
protected List<DrawableObject> drawableObjects;
public BaseRegionForm() public BaseRegionForm()
{ {
@ -67,7 +67,7 @@ public BaseRegionForm()
Icon = ShareXResources.Icon; Icon = ShareXResources.Icon;
Cursor = Helpers.CreateCursor(Resources.Crosshair); Cursor = Helpers.CreateCursor(Resources.Crosshair);
drawableObjects = new List<DrawableObject>(); DrawableObjects = new List<DrawableObject>();
Config = new RegionCaptureOptions(); Config = new RegionCaptureOptions();
timerStart = new Stopwatch(); timerStart = new Stopwatch();
timerFPS = new Stopwatch(); timerFPS = new Stopwatch();
@ -111,7 +111,7 @@ public void Prepare()
Prepare(new Screenshot()); Prepare(new Screenshot());
} }
/// <summary>Must be called before show form</summary> // Must be called before show form
public virtual void Prepare(Screenshot screenshot) public virtual void Prepare(Screenshot screenshot)
{ {
backgroundImage = screenshot.CaptureFullscreen(); backgroundImage = screenshot.CaptureFullscreen();
@ -195,6 +195,7 @@ public void Pause()
public void Resume() public void Resume()
{ {
pause = false; pause = false;
Invalidate(); Invalidate();
} }
@ -280,6 +281,7 @@ public virtual WindowInfo GetWindowInfo()
public void Close(RegionResult result) public void Close(RegionResult result)
{ {
Result = result; Result = result;
Close(); Close();
} }
@ -293,7 +295,7 @@ public void Close(RegionResult result)
InputManager.Update(); InputManager.Update();
DrawableObject[] objects = drawableObjects.OrderByDescending(x => x.Order).ToArray(); DrawableObject[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray();
if (objects.All(x => !x.IsDragging)) if (objects.All(x => !x.IsDragging))
{ {
@ -343,7 +345,7 @@ protected virtual void Draw(Graphics g)
protected void DrawObjects(Graphics g) protected void DrawObjects(Graphics g)
{ {
foreach (DrawableObject drawObject in drawableObjects) foreach (DrawableObject drawObject in DrawableObjects)
{ {
if (drawObject.Visible) if (drawObject.Visible)
{ {
@ -384,13 +386,6 @@ private void DrawFPS(Graphics g)
ImageHelpers.DrawTextWithOutline(g, text, textRectangle.Location, infoFontBig, Color.White, Color.Black); ImageHelpers.DrawTextWithOutline(g, text, textRectangle.Location, infoFontBig, Color.White, Color.Black);
} }
internal NodeObject MakeNode()
{
NodeObject node = new NodeObject();
drawableObjects.Add(node);
return node;
}
public IContainer components = null; public IContainer components = null;
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)

View file

@ -30,53 +30,17 @@ namespace ShareX.ScreenCaptureLib
{ {
public static class InputManager public static class InputManager
{ {
public static Point MousePosition public static Point MousePosition => mouseState.Position;
{
get
{
return mouseState.Position;
}
}
public static Point PreviousMousePosition public static Point PreviousMousePosition => oldMouseState.Position;
{
get
{
return oldMouseState.Position;
}
}
public static Point MousePosition0Based public static Point MousePosition0Based => mouseState.ZeroBasedPosition;
{
get
{
return mouseState.ZeroBasedPosition;
}
}
public static Point PreviousMousePosition0Based public static Point PreviousMousePosition0Based => oldMouseState.ZeroBasedPosition;
{
get
{
return oldMouseState.ZeroBasedPosition;
}
}
public static Point MouseVelocity public static Point MouseVelocity => new Point(MousePosition0Based.X - PreviousMousePosition0Based.X, MousePosition0Based.Y - PreviousMousePosition0Based.Y);
{
get
{
return new Point(MousePosition0Based.X - PreviousMousePosition0Based.X, MousePosition0Based.Y - PreviousMousePosition0Based.Y);
}
}
public static bool IsMouseMoved public static bool IsMouseMoved => MouseVelocity.X != 0 || MouseVelocity.Y != 0;
{
get
{
return MouseVelocity.X != 0 || MouseVelocity.Y != 0;
}
}
private static MouseState mouseState = new MouseState(); private static MouseState mouseState = new MouseState();
private static MouseState oldMouseState; private static MouseState oldMouseState;

View file

@ -206,7 +206,9 @@ public ShapeManager(RectangleRegionForm form)
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
Nodes[i] = form.MakeNode(); NodeObject node = new NodeObject();
form.DrawableObjects.Add(node);
Nodes[i] = node;
} }
Nodes[(int)NodePosition.BottomRight].Order = 10; Nodes[(int)NodePosition.BottomRight].Order = 10;