昵称:烦夫子
类别:界面/平面设计师
年龄:38
现所在地:北京
主页浏览总数:24255
总积分:89
文章数:88
作品数:70
// Object.h: interface for the Object class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_OBJECT_H__03101BD5_CD5E_4313_BC87_02BF49AC3214__INCLUDED_)
#define AFX_OBJECT_H__03101BD5_CD5E_4313_BC87_02BF49AC3214__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/***************************对 像基类****************************/
#include "vector.h"
#include "vectorRun.h"
typedef long HRESULT;
#define DEF_EXPORT _declspec(dllexport)
class Object; //申明对像类
typedef Object *PObject; //指向对像的接口指针
class DEF_EXPORT Object
{
protected:
int num; //子元素的数目
PObject *data; //对象接口
public:
Object *parent; //指向父对象的指针
Vector MinP; //最小值范围
Vector MaxP; //最大范围
COLORREF color; //对象颜色
int linetype; //线型
int linewidth; //线宽
int plottype; //绘图类型
//对像重绘模式 正常 选择 灰色 擦除,,,
enum DrawMode {DNormal, DSelected, DGray, DErase};
//对像矩阵变换模式 比例打印 正常
enum TransformFuncMode {PrintTrans, NullTrans};
enum ObjType {TObject, TPline,TPlineArray, TText, TTextArray, TPolyreg, TPolyregArray,
TBSpline, TBSplineArray, TShape, TShapeArray, TSymbol, TSymbolArray,
TRing, TRingArray, TPoint2D, TPoint2DArray, TLabel, TLabelArray,TPattern, TOther};
ObjType name; //对象名
public:
Object (const Object *parent); //构造函数
virtual ~Object (); //析造函数
virtual void Flush (); //释放全部内存空间
virtual int IsLeaf () const; //对象名称
virtual BOOL IncreaseSpace (int add); //为对象分配内存空间,指定对象
virtual void DecreaseSpace (int del); //释放对象占用的内存空间
virtual int Del (Object* aObject); //删除一个数据对象
virtual int Replace (Object* oldObject, Object* newObject); //以新对象更换老对象
virtual Object* Duplicate (Object* aObject);
virtual BOOL Insert (Object* aObject, int pos); //在指定位置插入一个对象
virtual BOOL Add (Object* aObject); //在尾部加入一个对象
virtual void Swap(int iFrom, int iTo); //两数据对象进行交换
virtual int GetNum () const; //得到对象数量
virtual long GetSize () const; //得到对象大小
virtual int GetIndex (const Object *cur) const; //得到当前对象的索引号
virtual void GetMinMax (); //得到最大最小值,对象范围
virtual void GetMinMax (Vector& minp, Vector& maxp);
virtual Object * GetNewObject () const; //得到新对象
virtual Object * GetObject (int index) const; //得到对象,按指定的索引号
virtual Object * GetPrevious (const Object *cur) const; //得到当前对象的前一个对象
virtual Object * GetNext (const Object *cur) const; //得到下一个对象
public:
//绘制对像
virtual void Draw (CDC* dc, float scale, DrawMode mode, int dispmode) const;
virtual void FastDraw (CDC* dc, float scale, DrawMode mode, TransformFuncMode f) const;
//矩阵变换
virtual void TransformData (TransformFunc f);
public:
virtual void SetObjType(ObjType objtype); //设置对像类型
virtual void GetObjType(ObjType& objtype) const; //得到对像类型
//得到对象属性,线型,线宽,刀笔设置
virtual void GetProp(int& t,int& wd, COLORREF& c, int& plottype) const;
//设置对象属性
virtual void SetProp(int t,int wd, COLORREF c, int plottype);
//绘图模式色彩设置
virtual COLORREF GetColor (DrawMode mode);
public:
//重载操作符
virtual Object& ōperator = (const Object& aObject);
virtual Object& operator += (Object& aObject);
virtual BOOL ōperator == (const Object& aObject);
virtual BOOL operator ^ (const Object& aObject);
};
#endif // !defined(AFX_OBJECT_H__03101BD5_CD5E_4313_BC87_02BF49AC3214__INCLUDED_)