00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ELEMENT_H
00010 #define ELEMENT_H
00011
00012 #ifdef __GNUG__
00013 #pragma interface
00014 #endif
00015
00016 enum SelectType { DESELECT, SELECT, SELECTALL, DESELECTALL,QUERY };
00017 enum TYPE {NON,BOUNDARY,PATH,TEXT,SREF,AREF,ARCSEG,BOX,CIRCLE,IMAGE,SLINE};
00018 enum EleFlags{ELE_NON=0x0000,ELE_SELECTED=0x0001,ELE_GR_A=0x0002,ELE_GR_B=0x0004,
00019 ELE_GR_C=0x0008,ELE_GR_AB=0x0006,ELE_FILLED=0x0010,ELE_ALL=0xFFFF};
00020 enum PATHTYPE {PATH_END_SQAURE,PATH_END_ROUND,PATH_END_SQAURE_EXT};
00021
00022 #include "misc.h"
00023 #include "bbox.h"
00024
00025 class wxPropertySheet;
00026
00027 class DrawDriver;
00028 class Driver_out;
00029
00030
00031 typedef struct element_bitflags
00032 {
00033
00034 #if wxBYTE_ORDER == wxLITTLE_ENDIAN
00035 unsigned m_select : 1;
00036 unsigned m_group_a: 1;
00037 unsigned m_group_b: 1;
00038 unsigned m_group_c: 1;
00039 unsigned m_filled : 1;
00040 unsigned m_template:1 ;
00041 unsigned m_external :1 ;
00042 unsigned m_used :1 ;
00043 unsigned reserved : 8;
00044 #else
00045 unsigned reserved : 8;
00046 unsigned m_used :1 ;
00047 unsigned m_external :1 ;
00048 unsigned m_template:1 ;
00049 unsigned m_filled : 1;
00050 unsigned m_group_c: 1;
00051 unsigned m_group_b: 1;
00052 unsigned m_group_a: 1;
00053 unsigned m_select : 1;
00054 #endif
00055 } element_bitflags;
00056
00057 class Structure;
00058
00060
00069 class Element
00070 {
00071 public:
00072 Element();
00073
00074 virtual ~Element();
00075
00076 Element& operator=(Element &other);
00077
00078 void Write(Driver_out& dr);
00079 virtual void OWrite(Driver_out& dr)=0;
00080
00081 virtual void Write(DrawDriver& dr);
00082 virtual void DoWrite(DrawDriver& dr)=0;
00083
00084 virtual Element* Duplicate()=0;
00085
00087 virtual BoundingBox& CalcBoundingBox()=0;
00089 virtual BoundingBox& GetBoundingBox()=0;
00091 virtual void Transform( wxTransformMatrix* _Matrix)=0;
00092
00094 virtual TYPE GetType()=0;
00096 virtual bool Select(Point*)=0;
00099 virtual bool Select(BoundingBox*,wxTransformMatrix*)=0;
00100
00102 void SetFilled(bool);
00104 bool GetFilled();
00106 void SetSelect(bool);
00108 bool GetSelect();
00110 bool GetGroupA();
00112 bool GetGroupB();
00114 bool GetGroupC();
00116 void SetGroupA(bool value);
00118 void SetGroupB(bool value);
00120 void SetGroupC(bool value);
00122 void SetFlags(short int which);
00124 void ClearFlags(short int which);
00126 short int GetFlags();
00128 virtual wxPropertySheet* HasPropList();
00130 virtual wxPropertySheet* GetPropList();
00132 virtual void UpdatePropList();
00134 void AddProperty(const wxString& name,const wxString& type,const wxString& value);
00136 void SetStamp(long event);
00138 long GetStamp();
00139
00140 virtual Structure* GetStructure(){return 0;};
00141
00142 void SetTemplate(bool b = true);
00143 void SetExternal(bool b = true);
00144 void SetUsed(bool b = true);
00145
00146 bool GetTemplate();
00147 bool GetExternal();
00148 bool GetUsed();
00149
00150 protected:
00152 long m_stamp;
00154 union {
00155 short int _all;
00156 element_bitflags bits;
00157 } bit_flags;
00159 wxPropertySheet* m_wxpropsheet;
00161 BoundingBox m_boundingbox;
00162
00163 };
00164 #endif
00165
element.h Source File -- Thu Nov 28 21:24:56 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . --