#2955: Support old resize node style

This commit is contained in:
Jaex 2018-08-23 13:20:55 +03:00
parent ccf5a4b1e5
commit dcbe2ab4fe
6 changed files with 73 additions and 4 deletions

View file

@ -64,6 +64,7 @@ public class RegionCaptureOptions
public int MagnifierPixelCount = 15; // Must be odd number like 11, 13, 15 etc. public int MagnifierPixelCount = 15; // Must be odd number like 11, 13, 15 etc.
public int MagnifierPixelSize = 10; public int MagnifierPixelSize = 10;
public bool ShowCrosshair = false; public bool ShowCrosshair = false;
public bool UseSimpleNodeDesign = true;
public bool EnableAnimations = true; public bool EnableAnimations = true;
public bool IsFixedSize = false; public bool IsFixedSize = false;
public Size FixedSize = new Size(250, 250); public Size FixedSize = new Size(250, 250);

View file

@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3) #endregion License Information (GPL v3)
using ShareX.HelpersLib; using ShareX.HelpersLib;
using System;
using System.Drawing; using System.Drawing;
namespace ShareX.ScreenCaptureLib namespace ShareX.ScreenCaptureLib
@ -50,7 +51,33 @@ public Point Position
public int Size { get; set; } public int Size { get; set; }
public NodeShape Shape { get; set; } public bool AutoSetSize { get; set; } = true;
private NodeShape shape;
public NodeShape Shape
{
get
{
return shape;
}
set
{
shape = value;
if (AutoSetSize)
{
if (shape == NodeShape.CustomNode && CustomNodeImage != null)
{
Size = Math.Max(CustomNodeImage.Width, CustomNodeImage.Height);
}
else
{
Size = DefaultSize;
}
}
}
}
public Image CustomNodeImage { get; private set; } public Image CustomNodeImage { get; private set; }
@ -58,14 +85,12 @@ public ResizeNode(int x = 0, int y = 0)
{ {
Shape = NodeShape.Square; Shape = NodeShape.Square;
Position = new Point(x, y); Position = new Point(x, y);
Size = DefaultSize;
} }
public void SetCustomNode(Image customNodeImage) public void SetCustomNode(Image customNodeImage)
{ {
Shape = NodeShape.CustomNode;
CustomNodeImage = customNodeImage; CustomNodeImage = customNodeImage;
Size = CustomNodeImage.Width; Shape = NodeShape.CustomNode;
} }
public override void OnDraw(Graphics g) public override void OnDraw(Graphics g)
@ -78,6 +103,7 @@ public override void OnDraw(Graphics g)
g.DrawRectangle(Pens.White, rect.Offset(-1)); g.DrawRectangle(Pens.White, rect.Offset(-1));
g.DrawRectangle(Pens.Black, rect); g.DrawRectangle(Pens.Black, rect);
break; break;
default:
case NodeShape.Circle: case NodeShape.Circle:
g.DrawEllipse(Pens.White, rect.Offset(-1)); g.DrawEllipse(Pens.White, rect.Offset(-1));
g.DrawEllipse(Pens.Black, rect); g.DrawEllipse(Pens.Black, rect);

View file

@ -109,8 +109,34 @@ public virtual bool Intersects(Point position)
return Rectangle.Contains(position); return Rectangle.Contains(position);
} }
internal void ChangeNodeShape(NodeShape nodeShape)
{
foreach (ResizeNode node in Manager.ResizeNodes)
{
node.Shape = nodeShape;
}
}
protected virtual void UseSimpleNodeShape()
{
ChangeNodeShape(NodeShape.Square);
}
protected void UpdateNodeShape()
{
if (Options.UseSimpleNodeDesign)
{
UseSimpleNodeShape();
}
else
{
ChangeNodeShape(NodeShape.CustomNode);
}
}
public virtual void ShowNodes() public virtual void ShowNodes()
{ {
UpdateNodeShape();
Manager.NodesVisible = true; Manager.NodesVisible = true;
} }

View file

@ -42,6 +42,11 @@ public class LineDrawingShape : BaseDrawingShape
public override bool IsValidShape => Rectangle.Width > 1 || Rectangle.Height > 1; public override bool IsValidShape => Rectangle.Width > 1 || Rectangle.Height > 1;
protected override void UseSimpleNodeShape()
{
ChangeNodeShape(NodeShape.Circle);
}
private void AdjustPoints(int centerPointCount) private void AdjustPoints(int centerPointCount)
{ {
Point[] newPoints = new Point[2 + centerPointCount]; Point[] newPoints = new Point[2 + centerPointCount];

View file

@ -63,6 +63,12 @@ public override void OnCreated()
TailPosition = Rectangle.Location.Add(0, Rectangle.Height + 30); TailPosition = Rectangle.Location.Add(0, Rectangle.Height + 30);
} }
protected override void UseSimpleNodeShape()
{
ChangeNodeShape(NodeShape.Square);
Manager.ResizeNodes[(int)NodePosition.Extra].Shape = NodeShape.Circle;
}
public override void OnNodeVisible() public override void OnNodeVisible()
{ {
base.OnNodeVisible(); base.OnNodeVisible();

View file

@ -57,6 +57,11 @@ public Point LastPosition
private List<Point> points = new List<Point>(); private List<Point> points = new List<Point>();
private bool isPolygonMode; private bool isPolygonMode;
protected override void UseSimpleNodeShape()
{
ChangeNodeShape(NodeShape.Circle);
}
public override void OnUpdate() public override void OnUpdate()
{ {
if (Manager.IsCreating) if (Manager.IsCreating)