using PaintDotNet.Annotation.Command;
using PaintDotNet.Annotation.Enum;
using System.Windows.Forms;
namespace PaintDotNet.Annotation
{
///
/// 工具
///
public abstract class ToolObject : Tool
{
private Cursor cursor;
///
/// Tool cursor.
///
protected Cursor Cursor
{
get
{
return cursor;
}
set
{
cursor = value;
}
}
///
/// Left mouse is released.
/// New object is created and resized.
///
///
///
public static void OnMouseUpTwo(ISurfaceBox surfacebox, MouseEventArgs e)
{
// TODO ZYH 这里需要处理连续绘制
//surfacebox.ActiveTool = DrawToolType.Pointer;
if (surfacebox.GraphicsList!=null && surfacebox.GraphicsList.Count>0)
{
//重新处理外接矩形,否则会有负值
surfacebox.GraphicsList[0].Normalize();
surfacebox.AddCommandToHistory(new CommandAdd(surfacebox.GraphicsList[0]));
//surfacebox.Capture = false;
surfacebox.Refresh();
surfacebox.GraphicsList.Dirty = true;
}
OnMouseUpOne(surfacebox, e);
}
///
/// Add new object to draw area.
/// Function is called when user left-clicks draw area,
/// and one of ToolObject-derived tools is active.
///
///
///
protected static void AddNewObject(ISurfaceBox drawArea, DrawObject o)
{
drawArea.GraphicsList.UnselectAll();
o.Selected = true;
drawArea.GraphicsList.Add(o);
drawArea.GraphicsList.OnSelectChanged();
//drawArea.Capture = true;
drawArea.Refresh();
drawArea.SetDirty();
}
protected static void RemoveOldObject(ISurfaceBox drawArea, DrawObject o)
{
drawArea.GraphicsList.RemoveObj(o);
drawArea.GraphicsList.OnSelectChanged();
drawArea.ResetUndoManager();
drawArea.Refresh();
drawArea.SetDirty();
}
protected static void AddNewObjectForView(ISurfaceBox drawArea, DrawObject o)
{
drawArea.GraphicsList.UnselectAll();
o.Selected = true;
drawArea.GraphicsList.Add(o);
//drawArea.GraphicsList.OnSelectChanged();
//drawArea.Capture = true;
drawArea.Refresh();
drawArea.SetDirty();
}
public static void OnMouseNotLeftDown(ISurfaceBox surfacebox, DrawObject o)
{
if (surfacebox.ContinuousDrawingLabel() && o == null)
{
surfacebox.ActiveTool = DrawToolType.Pointer;
surfacebox.SetContinuousDrawingLabel(false);
}
}
}
}