#pragma once //全局类型定义 using namespace std;/*使用标准库的名字空间*/ //STL 标准头文件 #include #include #include #include #include #include #include #include #include #include //屏蔽编译警告 #pragma warning(disable : 4800) #pragma warning(disable : 4244) #pragma warning(disable : 4996) #pragma warning(disable : 4018) #define PI 3.14159265358979323846 //#define COORD_EPS 0.001 //坐标误差精度(0.001 表示在坐标比较中,两个点的距离小于1um 就认为是相等) #define COORD_EPS 0.00001 #define RGB_WHITE RGB(255,255,255) //白色 #define RGB_BLACK RGB(0,0,0) //黑色 #define RGB_GREEN RGB(0,255,0) //绿色 #define RGB_GREEN1 RGB(29,241,135) //绿色 #define RGB_RED RGB(255,0,0) //红色 #define RGB_PINK RGB(255,55,120) //粉红色 #define RGB_PINK1 RGB(231,61,175) //粉红色 #define RGB_YELLOW RGB(255,255,0) //黄色 #define RGB_BLUE RGB(0,0,255) //蓝色 #define RGB_BLUE1 RGB(153,217,234) //天蓝色 #define RGB_NODE_BLUE RGB(0,63,255) //节点蓝色 #define RGB_PURPLE RGB(163,73,164) //紫色 #define RGB_GRAY RGB(240,240,240) //灰色 #define RGB_GRAY1 RGB(160,160,160) //灰色 #define STR_NULL "" #define STR_INPUT_ERROR "无效指令: " #define STR_INPUT_SYMBOL '>' //鼠标工具的类型 enum MOUSE_TOOL { _TOOL_POINT=0, _TOOL_RECT, _TOOL_LINE, _TOOL_PLINE,//多线段 _TOOL_CIRCLE, _TOOL_MOVE, _TOOL_MOVE2,//指定基点移动 _TOOL_ROTATO, _TOOL_COPY, _TOOL_MEASURE,//测量 _TOOL_ZOOM,//缩放 _TOOL_CUT,//修剪 _TOOL_ADD_NODE,//添加节点 _TOOL_DEL_NODE,//删除节点 _TOOL_BREAK_NODE,//打断节点 _TOOL_MOVE_NODE,//移动节点 _TOOL_TEXT,//文字 _TOOL_BARCODE,//条码 _TOOL_ONE_POINT,//一个点 _TOOL_STRETCH,//拉伸工具 _TOOL_PT_MOVE_TO_CCD,//设置特定用途的点 _TOOL_SET_MARK_PT,//手动指定定位点 }; enum OBJ_TYPE { _TYPE_BASE = 0, _TYPE_PLINE,//多线段1 _TYPE_POINT,//点2 _TYPE_CIRCLE,//圆3 _TYPE_COMPOSITE,//一般组合类型4 _TYPE_TXT,//字符串5 _TYPE_BARCODE,//条码6 _TYPE_STR,//string 7 _TYPE_CHAR,//字符8 }; enum X_OR_Y { _X=0, _Y, _XY, }; enum CATCH_PT_TYPE//抓取点的类型 { _CATCH_NODE = 0,//结点 _CATCH_INTERSECT,//线段的交点 _CATCH_ORTHO,//正交 _CATCH_CUT_TRACK,//元件切割道交点 }; enum STATUS//鼠标工具的状态值,用于确定每一步做什么事情 { _STATUS_1 = 0, _STATUS_2, _STATUS_3, _STATUS_4, _STATUS_5, _STATUS_6, _STATUS_END }; enum OBJ_OP_TYPR { _OP_MOVE = 0, _OP_ROTATO, _OP_MIRROR, _OP_STRETCH,//拉伸 _OP_REVERSE,//反转数据点 _OP_SCALE,//按比例缩放 }; inline bool IsDbEqual(double a,double b) { if((abs(a-b))=B) { pt.y = (T+B)/2; } return pt; } inline DbSize DbRect::GetSize() { DbSize size; size.w = R - L; size.h = T - B; if(size.w<0) size.w = 0; if(size.h<0) size.h = 0; return size; } //底部中心点 inline Dbxy DbRect::GetBottomCenterPt() { Dbxy pt; pt.x = (L+R)/2; pt.y = B; return pt; } inline double DbRect::Width() { return R-L; } inline double DbRect::Height() { return T-B; } #endif //封装所有对象操作的参数,便于统一发送格式 struct SObjOperatePar{ SObjOperatePar() { MoveX = MoveY = 0; Angle = 0; OldSize = NewSize = Diff = 0; Scale = 1; } OBJ_OP_TYPR OpType;//操作类型 X_OR_Y xy;//标识xy 方向 Dbxy BasePt;//基准点 double MoveX;//移动量 double MoveY; double Angle;//360 度角 double OldSize; double NewSize; double Diff; double Scale;//缩放比例 }; typedef pair PointType; //创建圆的参数 class CCirclePar { public: CCirclePar(void) { Radius = 1; DEdgeCnt = 32; bMerge = true; StartAng = 0; EndAng = 360; } public: Dbxy CenterPt;//圆心 double Radius;//半径 int DEdgeCnt;//边数 bool bMerge;//是否合并 double StartAng;//起始角度360 度角 double EndAng;//结束角度 };