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.

280 lines
9.3 KiB
C++

//////////////////////////////////////////////////////////////////////////////
//文件: Item.h
//主要功能:
//
//程序编写: 2006-12-07
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "DrawOperator\xydc.h"
#include "DrawOperator\one.h"
#include "ItemBase.h"
#include "ItemView.h"
#include "ItemPrint.h"
//其它类型
#define ITEM_STATE 1003 //状态
#define ITEM_ERASER 1004 //橡皮
#define ITEM_HYPERLINK 1005 //超级联接
#define ITEM_SELECT 1006 //元素选择
#define ITEM_RECTANGLE 1007 //画矩形
#define ITEM_CIRCLE 1008 //画圆
#define ITEM_GRID 1009 //坐标网
#define ITEM_MATRIX_MARK 1010 //矩阵符号
#define ITEM_CURVE 1011 //曲线
#define ITEM_LINK_CURVE 1012 //连接曲线
#define ITEM_SOLID 1013 //填充区域
#define ITEM_PUT_INTO_CURVE 1014 //内插曲线
#define ITEM_BREAK_CURVE 1015 //打断曲线
#define ITEM_IMAGE_TRACE 1016 //图像矢量化
#define ITEM_EXTEND_CURVE 1017 //曲线延伸
#define ITEM_TRIM_CURVE 1018 //剪切曲线
#define ITEM_PROPORTION 1019 //比例尺
#define ITEM_LINK_POINT 1020 //连接点成曲线
#define ITEM_2POINT_TO_RECT 1021 //连接两点成矩形
#define ITEM_3POINT_TO_RGN 1022 //连接三点成四边形
#define ITEM_ARC 1023 //插入弧、弦、饼
#define ITEM_EQUILATERAL 1024 //等边多边形
#define ITEM_IMAGE 1025 //图像
#define ITEM_MXN 1026 //SEGY类数据
#define ITEM_INSERT_DRAW 1027 //新符号
#define ITEM_POINT 1028 //点增加
#define ITEM_FRAME 1029 //边框
#define ITEM_TEXT 1030 //文字
#define ITEM_MESH 1031 //MESH文件
#define ITEM_ELLIPSE 1032 //椭圆
#define ITEM_NET 1034 //经纬度网
#define ITEM_REDUNDANT 1035 //曲线冗余
#define ITEM_SCALE_EMBELLISH 1036 //放缩比例
#define ITEM_SCALE_OBJECT 1037 //放缩元素
#define ITEM_SAVE_TO_MARK 1038 //保存为符号
#define ITEM_DELETE 1039 //删除
#define ITEM_FIND 1040 //查找\替换
#define ITEM_MATH_FIND 1041 //数学发现
#define ITEM_CLIPBOARD 1042 //剪切板COPY与PAST
#define ITEM_CURVE_PROCESS 1043 //曲线处理类
#define ITEM_POINT_PROCESS 1044 //点处理
#define ITEM_TEXT_EDIT 1045 //对文本数据的批量设置
#define ITEM_EXPRESSION 1046 //对x,y,z,l进行表达式计算
#define ITEM_ARC_EDIT 1047 //对弧、弦、饼进行编辑
#define ITEM_SELECT_ELEMENT 1048 //选择一个元素类
#define ITEM_SELECT_GOTO 1049 //选择转移
#define ITEM_CALIBRATE 1050 //校正
#define ITEM_SECTION 1051 //Section数据
#define ITEM_CHANGE_COLOR 1052 //改变颜色
#define ITEM_OPEN_FILE 1053 //打开文件
#define ITEM_BK_GRID 1054 //背景网格
#define ITEM_CURVE_EDIT 1055 //曲线编辑
#define ITEM_POINT_EDIT 1056 //点编辑
#define ITEM_WMF 1058 //WMF和EMF文件
#define ITEM_ALIGN 1059 //元素对齐处理
#define ITEM_CALIBRATE_LINE 1060 //直线校正
#define ITEM_ROTATE 1061 //旋转
#define ITEM_TOOLTIP 1062 //信息提示
#define ITEM_XPOINT_EDIT 1063 //x点编辑
#define ITEM_OLE 1064 //OLE元素
#define ITEM_INSERT_TABLE 1065 //插入表格
#define ITEM_STAT_ELEMENTS 1066 //统计元素
#define ITEM_MESH_PROCESS 1067 //曲面计算
#define ITEM_CUT_OUT 1068 //剪裁外部
#define ITEM_MATRIX_COPY 1069 //矩阵复制
#define ITEM_CURVE_INNAME 1070 //编辑曲线内部名字
#define ITEM_CURVE_NAME_AUTO 1071 //根据步长自动设置等值线名称
#define ITEM_CURVE_NAME_EXPRESSION 1072 //对曲线名称进行表达式运算
#define ITEM_MAKE_MARK 1073 //符号制作
#define ITEM_INSERT_OLD 1074 //老符号
#define ITEM_OTHER 1075 //其它的一些处理
#define ITEM_GET_RANGE 1076 //拾取区域
#define ITEM_MARK 1077 //导入编辑
#define ITEM_BREAK_CURVE_DIRECT 1078 //打断曲线
#define ITEM_SCALE 1079 //通过定置两条任意曲线拉伸元素
#define ITEM_CUT_IN 1080 //剪裁内部
#define ITEM_CURVE_CENTER_NAME 1081 //编辑曲线内部名字
#define ITEM_COPY_AS_IMAGE 1082 // 拷贝图片
#define ITEM_SCALE_RULER 1083 //标尺编辑
#define ITEM_TRACE_TO_LOG 1084 //矢量化数据转换为测井数据
#define ITEM_CHANGE_LAYER 1085 //改变类别
#define ITEM_CROSSPOINT_EDIT 1086 //十字点编辑
#define ITEM_CROSSPOINT 1087 //十字点插入
#define ITEM_TWOPOINT_EDIT 1088 //分数点编辑
#define ITEM_TWOPOINT 1089 //分数点插入
#define ITEM_IMAGE_PROCESS 1090 //图像处理
#define ITEM_SOLID_LINK 1091 //连接曲线填充区域
#define ITEM_CURVE_Z_SETTING 1092 //根据步长自动设置曲线Z值
#define ITEM_BREAK_CONTOUR 1093 //打断等值线(结合逆断层)为了给断层内的等值线上虚线
#define ITEM_PATH_FILL 1094 //路径充填
#define ITEM_WELL 1095 //添加井
#define ITEM_ADD_WELL 1096 //编辑井
#define ITEM_CHART 1097 //添加图版
#define ITEM_CHARTEX 1098 //统计图
#define ITEM_CHARTEX_EDIT 1099
#define ITEM_CREATE_CONTOUR 1100 // 生成等值线
#define ITEM_SET_CONTOUR_NAME 1101 // 设置等值线名称
//#define ITEM_OILWATER 1098
//#define ITEM_HISTORGRAM 1099
//#define ITEM_RTPORLOG 1100
//#define ITEM_RWASP 1101
//#define ITEM_LIGASCROSS 1102
//#define ITEM_CROSS 1103
#define ITEM_REGIONSELECT 1104
#define ITEM_ADD_FACIES 1105
#define ITEM_ADD_STRATUM 1106 //添加地层对比图
#define ITEM_TURTLE 1107 //绘制龟背图
#define ITEM_SOLID_AUTO 1108 //自动充填
#define ITEM_ADD_STATISPLATE 1109
#define ITEM_PLATE 1110
#define ITEM_PLATEEDIT 1111
#define ITEM_ADD_WELLDATAGRAPH 1112
#define ITEM_WELLDATAGRAPH 1113 //产能柱图
#define ITEM_INSERT_LABEL_RECT 1116 // 插入标注
#define ITEM_LABEL_RECT_EDIT 1117 // 编辑标注
#define ITEM_INSERT_FAULTLINE 1118 // 插入断层
#define ITEM_ATTACH_CURVE 1119 // 绑定曲线,自动修改
#define ITEM_PICK_TWO_CURVE 1120 // 拾取两条曲线计算面积及体积
#define ITEM_BLOCK 1121 //块元素
#define ITEM_WELL_GROUP 1122 // 井组
#define ITEM_WELL_GROUP_EDIT 1123 // 井组
#define ITEM_WELL_BRANCH_CURVE_EDIT 1124 // 井支线编辑
#define ITEM_COPY_AS_IMAGE_EX 1201 // 高级拷贝图片
#define ITEM_COPY_AS_IMAGE_POLYGON 1202 // 多边形拷贝图片
#define ITEM_MEASURE 1203 // 测量
#define ITEM_WELLPOLE 1300
#define ITEM_TRACKIN 1301
#define ITEM_TRACK 1302
//class CDFDrawProDoc;
//class CDFDrawProView;
#include "atltypes.h"
#include "ItemBase.h"
//#include ".\propertygriditemadd.h"
//#include ".\CustomItemCombo.h"
//#include ".\customitemscalewizard.h"
//#include ".\customitemmark.h"
//#include ".\customitemmeshcolor.h"
//#include ".\customitemembellish.h"
//using namespace NOptionItem;
class CSigmaView;
namespace NItem
{
class CItem : public CItemBase
{
public:
CItem(CSigmaDoc * ppDoc);
virtual ~CItem(void);
public:
//属性项
virtual void InitializationMul(void); //初始化参数
static CString m_strLayerMul; //为了多个相同元素的层名
static CHyperlinkMulti* m_pHyperlinkMul;
int GetStatusCode() const;
const char *GetStatusText() const;
CString GetGridItemComboLayer(void);
CSigmaDoc * GetDoc(void);
CSigmaView* GetView(void) { return (CSigmaView*)GetDrawView(); }
virtual void SetPos(POSITION pos);
bool IsEditState(void); //返回true为编辑状态,否则为增加状态
CItem* GetOwner() { return m_pItemOwner; }
void SetOwner(CItem* pItemOwner) { m_pItemOwner = pItemOwner; }
virtual POSITION GetPos(void);
int GetHandleIndex(void);
void SetHandleIndex(int nIndex);
BOOL IsModified(void);
virtual void SetModifiedFlag(BOOL bModified);
int GetSelectSubMenu(void);
//int ShowPropertyPane(int nShow); //返回显示之前的状态(0=Close, 1=Show, 2=Hide)
void DrawCurveHandle(CXyDC* pDC, CCurveEx* pCurve, COLORREF color, int nMode, BOOL bDrawLine, int penWidth=1);
dfPoint GetShiftDownPoint(double begin_x, double begin_y, double end_x, double end_y);
POSITION FindCurve(CCurveEx* pCurve); //发现pDoc->GetDraw()中的曲线
POSITION AddElement(void* pValue, int type, bool bUpdateView=true, bool bWithUndo=true);
POSITION InsertElementBefore(POSITION pos, COne* pNewOne, BOOL bUpdateView=TRUE);
POSITION InsertElementAfter(POSITION pos, void * pElement, int nType, BOOL bUpdateView = TRUE);
POSITION AddTailOne(COne* pOne);
bool IsUpdatePropertyGrid(void);
void SetUpdatePropertyGridState(bool bUpdate);
void SetBackGroundDC(CDC* pDC) { m_pBackGroundDC = pDC; }
void Invalidate(void);
CUnitTransform& GetUnitMode();
int GetUnit(); //获得当前显示单位
CUnitTransform m_unitMode; //根据设置的比例在打印单位与实际单位间变换
CRect m_client;
BOOL IsNestItem() { return m_bNestItem; } //ggff
virtual void SetItem(CItem* pItem) {} //ggff2025
virtual BOOL OnSetCursor(CPoint pt, int& handle) { handle = -1; return FALSE; };
virtual CItem* GetItem(void) { return this; }
virtual void DeleteItem(void) {}
protected:
void DeleteElement(POSITION pos);
//CXTPPropertyGridItem* FindItem(CXTPPropertyGridItem* pItem, UINT nID);
void SetStatusCode(int code);
void SetStatusText(const char * pText);
void ClearStatus();
//当前选择点的索引号,为了编辑曲线....
int m_nCurHandleIndex;
BOOL m_bModifiedFlag; //是否修改了当前的曲线.....
protected:
POSITION position; //是编辑状态,还是增加状态NULL
CItem* m_pItemOwner; //为了调用OnInplaceButtonDown时的归属
CDC* m_pBackGroundDC;
private:
bool bUpdatePropertyGrid; //是否充填属性
int m_nStatusCode;
char *m_pStatusText;
protected:
BOOL m_bNestItem; ////是否嵌套的item //ggff
};
class CItemViewEx :
public CItemView
{
public:
CItemViewEx(void);
CItemViewEx(CSigmaDoc * ppDoc);
virtual ~CItemViewEx(void);
virtual BOOL GetViewRange(CRect8& rect); //获得要全图显示的范围
};
class CItemPrintEx :
public CItemPrint
{
public:
CItemPrintEx(CSigmaDoc * ppDoc);
~CItemPrintEx(void);
virtual void AfterEndPrinting(CDC* pDC, CPrintInfo* pInfo);
};
};
using namespace NItem;