2026-06-05 13:44:39 +09:00

203 lines
6.9 KiB
C#
Raw Blame History

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;
namespace CoreUnit.Control.UserControl.Canvas
{
public interface ISerialize
{
void GetObjectData(XmlWriter wr);
string GetObjectData();
void AfterSerializedIn();
}
public interface ICanvasOwner
{
void SetPositionInfo(UnitPoint unitpos);
void SetSnapInfo(ISnapPoint snap);
SizeF WorkSize { get; set; }
}
public interface ICanvas
{
IModel DataModel { get; }
UnitPoint ScreenTopLeftToUnitPoint();
UnitPoint ScreenBottomRightToUnitPoint();
PointF ToScreen(UnitPoint unitpoint);
float ToScreen(double unitvalue);
double ToUnit(float screenvalue);
UnitPoint ToUnit(PointF screenpoint);
void Invalidate(bool dostatic);
IDrawObject CurrentObject { get; }
Rectangle ClientRectangle { get; }
Graphics Graphics { get; }
Pen CreatePen(Color color, float unitWidth);
void DrawLine(ICanvas canvas, Pen pen, UnitPoint p1, UnitPoint p2);
void DrawArc(ICanvas canvas, Pen pen, UnitPoint center, float radius, float beginangle, float angle);
void DrawArc(ICanvas canvas, Pen pen, UnitPoint center, UnitPoint start, UnitPoint end, bool clockwise);
void DrawEllipse(ICanvas canvas, Pen pen, UnitPoint center, List<UnitPoint> points, float beginangle, float endangle, float angle);
void DrawLines(ICanvas canvas, Pen pen, List<UnitPoint> points);
void DrawRectangle(ICanvas canvas, Pen pen, RectangleF rect);
float BackgroundSize { get; }
}
public interface IModel
{
float Zoom { get; set; }
ICanvasLayer BackgroundLayer { get; }
ICanvasLayer GridLayer { get; }
ICanvasLayer[] Layers { get; }
ICanvasLayer ActiveLayer { get; set; }
ICanvasLayer GetLayer(int no);
IDrawObject CreateObject(string type, UnitPoint point, ISnapPoint snappoint);
void AddObject(ICanvasLayer layer, IDrawObject drawobject, bool useEventMode = true);
void DeleteObjects(List<IDrawObject> objects, bool useEventMode = true);
void MoveObjects(UnitPoint offset, List<IDrawObject> objects, bool useEventMode = true);
void CopyObjects(UnitPoint offset, List<IDrawObject> objects, bool useEventMode = true);
void MoveNodes(UnitPoint position, List<INodePoint> nodes, bool useEventMode = true);
IEditTool GetEditTool(string id);
void AfterEditObjects(IEditTool edittool);
List<IDrawObject> GetHitObjects(ICanvas canvas, RectangleF selection, bool anyPoint);
List<IDrawObject> GetHitObjects(ICanvas canvas, UnitPoint point);
bool IsSelected(IDrawObject drawobject);
void AddSelectedObject(IDrawObject drawobject);
void RemoveSelectedObject(IDrawObject drawobject);
List<IDrawObject> SelectedObjects { get; }
int SelectedCount { get; }
void ClearSelectedObjects();
List<IDrawObject> SelectedCopyObject { get; set; }
void AddSelectedObjects(List<IDrawObject> objects);
bool IsArrayCopying { get; set; }
int CopyCnt { get; set; }
ISnapPoint SnapPoint(ICanvas canvas, UnitPoint point, Type[] runningsnaptypes, Type usersnaptype);
bool CanUndo();
bool DoUndo();
bool CanRedo();
bool DoRedo();
}
public interface ICanvasLayer
{
int No { get; set; }
void Draw(ICanvas canvas, RectangleF unitrect);
ISnapPoint SnapPoint(ICanvas canvas, UnitPoint point, List<IDrawObject> otherobj);
List<IDrawObject> Objects { get; }
bool Enabled { get; set; }
bool Visible { get; }
SizeF Spacing { get; set; }
Color BackgroundColor { get; set; }
Color FieldColor { get; set; }
}
public interface ISnapPoint
{
IDrawObject Owner { get; }
UnitPoint SnapPoint { get; }
RectangleF BoundingRect { get; }
void Draw(ICanvas canvas);
}
public enum eDrawObjectMouseDown
{
Done, // this draw object is complete
DoneRepeat, // this object is complete, but create new object of same type
Continue, // this object requires additional mouse inputs
}
public interface INodePoint
{
IDrawObject GetClone();
IDrawObject GetOriginal();
void Cancel();
void Finish();
void SetPosition(UnitPoint pos);
void Undo();
void Redo();
void OnKeyDown(ICanvas canvas, KeyEventArgs e);
}
public interface IDrawObject
{
#region <EFBFBD><EFBFBD>ŷ <EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ӽ<EFBFBD>
bool Enabled { get; set; }
#endregion
#region drawing object<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ӽ<EFBFBD>
bool Selected { get; set; }
Color Color { get; set; }
PointF PF1 { get; set; }
PointF PF2 { get; set; }
RectangleF ClientRect { get; }
float Angle { get; set; }
string Type { get; }
int No { get; set; }
PointF MiddlePoint { get; set; }
int ScannerParamID { get; set; }
/*
List<IDrawObject> GroupClass {get; set;}//<2F>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD>.
*/
IDrawObject Clone();
bool PointInObject(ICanvas canvas, UnitPoint point);
bool ObjectInRectangle(ICanvas canvas, RectangleF rect, bool anyPoint);
void Draw(ICanvas canvas, RectangleF unitrect);
RectangleF GetBoundingRect(ICanvas canvas);
void OnMouseMove(ICanvas canvas, UnitPoint point);
eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint);
void OnMouseUp(ICanvas canvas, UnitPoint point, ISnapPoint snappoint);
void OnKeyDown(ICanvas canvas, KeyEventArgs e);
UnitPoint RepeatStartingPoint { get; }
INodePoint NodePoint(ICanvas canvas, UnitPoint point);
ISnapPoint SnapPoint(ICanvas canvas, UnitPoint point, List<IDrawObject> otherobj, Type[] runningsnaptypes, Type usersnaptype);
void Move(UnitPoint offset);
/// <summary>
/// Rotate<74>Լ<EFBFBD><D4BC><EFBFBD> <20><> <20><>ü<EFBFBD><C3BC> ȸ<><C8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ ȸ<><C8B8><EFBFBD><EFBFBD>.
/// </summary>
/// <param name="angle"></param>
void Rotate(float angle, UnitPoint center);
void MakeLength(float distance);
string GetInfoAsString();
#endregion
}
public interface IEditTool
{
IEditTool Clone();
bool SupportSelection { get; }
void SetHitObjects(UnitPoint mousepoint, List<IDrawObject> list);
void OnMouseMove(ICanvas canvas, UnitPoint point);
eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint);
void OnMouseUp(ICanvas canvas, UnitPoint point, ISnapPoint snappoint);
void OnKeyDown(ICanvas canvas, KeyEventArgs e);
void Finished();
void Undo();
void Redo();
}
public interface IEditToolOwner
{
void SetHint(string text);
}
}