You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
7.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GeoSigmaViewer
{
public class DrawTool
{
private Cursor cursor;
protected Drawer drawer;
/// <summary>
/// Tool cursor.
/// </summary>
public Cursor ToolCursor
{
get { return cursor; }
set { cursor=value; }
}
public Drawer SigmaDrawer
{
get { return drawer; }
set { drawer = value; }
}
public DrawItemType ItemType { get; set; }
private bool _EnableEnd = true;
public bool EnableEnd { get { return _EnableEnd; } set { _EnableEnd=value; } }
public virtual void Start()
{
}
public virtual void End()
{
}
public virtual void Execute(string cmdString)
{
}
/// <summary>
/// Left nous button is pressed
/// </summary>
/// <param name="drawArea"></param>
/// <param name="e"></param>
public virtual void OnLButtonDown(Drawer drawArea, MouseEventArgs e)
{
}
public virtual void OnMouseClick(Drawer drawArea, MouseEventArgs e)
{
}
/// <summary>
/// Mouse is moved, left mouse button is pressed or none button is pressed
/// </summary>
/// <param name="drawArea"></param>
/// <param name="e"></param>
public virtual void OnMouseMove(Drawer drawArea, MouseEventArgs e)
{
}
/// <summary>
/// Left mouse button is released
/// </summary>
/// <param name="drawArea"></param>
/// <param name="e"></param>
public virtual void OnLButtonUp(Drawer drawArea, MouseEventArgs e)
{
}
public virtual void Cancel(Drawer drawArea) { }
public virtual void OK(Drawer drawArea) { }
public virtual void EndObject(Drawer drawArea, MouseEventArgs e) { }
//protected Point GetEventPointInArea(WellViewer drawArea, MouseEventArgs e)
//{
// Point p = new Point(Math.Abs(drawArea.AutoScrollPosition.X) + e.X, Math.Abs(drawArea.AutoScrollPosition.Y) + e.Y);
// string status = "X: " + p.X + ", Y: " + p.Y;
// //((MainForm)drawArea.Parent).SetStatusStrip(status);
// return p;
//}
}
public enum DrawToolType
{
Default,
Select,
Pointer,
ViewPan,
ViewWindow,
Connection,
Convexity,
Model,
Fault,
FaultReverse,
Rectangle,
Ellipse,
Curve, //Line,
Arc,
Chord,
Pie,
Polygon,
Proportion, //比例尺
Point,
Text,
Equilateral, //等边多边形
RectangularCSGrid, //直角坐标网
BreakDirect, //直接打断
Break, //打断
Delete, //删除
DeleteIn, //删除区域内元素
DeleteOut, //删除区域外元素
NumberOfDrawTools
}
public enum DrawItemType
{
ITEM_DEFAULT = 999,
ITEM_VIEW_PAN = 1000,
ITEM_VIEW_WINDOW = 1001,
ITEM_STATE =1003, //状态
ITEM_ERASER=1004, //橡皮
ITEM_HYPERLINK=1005, //超级联接
ITEM_SELECT=1006, //元素选择
ITEM_RECTANGLE=1007, //画矩形
ITEM_CIRCLE=1008, //画圆
ITEM_GRID=1009, //坐标网
ITEM_MATRIX_MARK=1010, //矩阵符号
ITEM_CURVE=1011, //曲线
ITEM_LINK_CURVE=1012, //连接曲线
ITEM_SOLID=1013, //填充区域
ITEM_PUT_INTO_CURVE=1014, //内插曲线
ITEM_BREAK_CURVE=1015, //打断曲线
ITEM_IMAGE_TRACE=1016, //图像矢量化
ITEM_EXTEND_CURVE=1017, //曲线延伸
ITEM_TRIM_CURVE=1018, //剪切曲线
ITEM_PROPORTION=1019, //比例尺
ITEM_LINK_POINT=1020, //连接点成曲线
ITEM_2POINT_TO_RECT=1021, //连接两点成矩形
ITEM_3POINT_TO_RGN=1022, //连接三点成四边形
ITEM_ARC=1023, //插入弧、弦、饼
ITEM_EQUILATERAL=1024, //等边多边形
ITEM_IMAGE=1025, //图像
ITEM_MXN=1026, //SEGY类数据
ITEM_INSERT_DRAW=1027, //新符号
ITEM_POINT=1028, //点增加
ITEM_FRAME=1029, //边框
ITEM_TEXT=1030, //文字
ITEM_MESH =1031, //MESH文件
ITEM_ELLIPSE=1032, //椭圆
ITEM_NET=1034, //经纬度网
ITEM_REDUNDANT=1035, //曲线冗余
ITEM_SCALE_EMBELLISH=1036, //放缩比例
ITEM_SCALE_OBJECT=1037, //放缩元素
ITEM_SAVE_TO_MARK=1038, //保存为符号
ITEM_DELETE=1039, //删除
ITEM_FIND=1040, //查找\替换
ITEM_MATH_FIND =1041, //数学发现
ITEM_CLIPBOARD =1042, //剪切板COPY与PAST
ITEM_CURVE_PROCESS=1043, //曲线处理类
ITEM_POINT_PROCESS=1044, //点处理
ITEM_TEXT_EDIT=1045, //对文本数据的批量设置
ITEM_EXPRESSION=1046, //对x,y,z,l进行表达式计算
ITEM_ARC_EDIT=1047, //对弧、弦、饼进行编辑
ITEM_SELECT_ELEMENT=1048, //选择一个元素类
ITEM_SELECT_GOTO=1049, //选择转移
ITEM_CALIBRATE =1050, //校正
ITEM_SECTION=1051, //Section数据
ITEM_CHANGE_COLOR=1052, //改变颜色
ITEM_OPEN_FILE=1053, //打开文件
ITEM_BK_GRID=1054, //背景网格
ITEM_CURVE_EDIT=1055, //曲线编辑
ITEM_POINT_EDIT=1056, //点编辑
ITEM_WMF=1058, //WMF和EMF文件
ITEM_ALIGN=1059, //元素对齐处理
ITEM_CALIBRATE_LINE=1060, //直线校正
ITEM_ROTATE=1061, //旋转
ITEM_TOOLTIP=1062, //信息提示
ITEM_XPOINT_EDIT=1063, //x点编辑
ITEM_OLE=1064, //OLE元素
ITEM_INSERT_TABLE=1065, //插入表格
ITEM_STAT_ELEMENTS=1066, //统计元素
ITEM_MESH_PROCESS=1067, //曲面计算
ITEM_CUT_OUT=1068, //剪裁外部
ITEM_MATRIX_COPY=1069, //矩阵复制
ITEM_CURVE_INNAME=1070, //编辑曲线内部名字
ITEM_CURVE_NAME_AUTO=1071, //根据步长自动设置等值线名称
ITEM_CURVE_NAME_EXPRESSION=1072, //对曲线名称进行表达式运算
ITEM_MAKE_MARK=1073, //符号制作
ITEM_INSERT_OLD=1074, //老符号
ITEM_OTHER=1075, //其它的一些处理
ITEM_GET_RANGE=1076, //拾取区域
ITEM_MARK=1077, //导入编辑
ITEM_BREAK_CURVE_DIRECT=1078, //打断曲线
ITEM_SCALE=1079, //通过定置两条任意曲线拉伸元素
ITEM_CUT_IN=1080, //剪裁内部
ITEM_CURVE_CENTER_NAME=1081, //编辑曲线内部名字
ITEM_COPY_AS_IMAGE=1082, //编辑曲线内部名字
ITEM_SCALE_RULER=1083, //标尺编辑
ITEM_TRACE_TO_LOG=1084, //矢量化数据转换为测井数据
ITEM_CHANGE_LAYER =1085, //改变类别
ITEM_CROSSPOINT_EDIT=1086, //十字点编辑
ITEM_CROSSPOINT=1087, //十字点插入
ITEM_TWOPOINT_EDIT=1088, //分数点编辑
ITEM_TWOPOINT=1089, //分数点插入
ITEM_IMAGE_PROCESS=1090, //图像处理
ITEM_SOLID_LINK =1091, //连接曲线填充区域
ITEM_CURVE_Z_SETTING=1092, //根据步长自动设置曲线Z值
ITEM_BREAK_CONTOUR =1093, //打断等值线(结合逆断层)为了给断层内的等值线上虚线
ITEM_PATH_FILL=1094, //路径充填
ITEM_WELL =1095, //添加井
ITEM_ADD_WELL=1096, //编辑井
ITEM_CHART=1097, //添加图版
ITEM_CHARTEX =1098, //统计图
ITEM_CHARTEX_EDIT=1099,
ITEM_CREATE_CONTOUR=1100 //生成等值线
}
}