00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef REFERENC_H
00011 #define REFERENC_H
00012
00013 #ifdef __GNUG__
00014 #pragma interface
00015 #endif
00016
00017 class DrawDriver;
00018 class Driver_out;
00019
00020 #include "misc.h"
00021 #include "point.h"
00022 #include "bbox.h"
00023 #include "element.h"
00024
00025
00026 class Structure;
00027
00029
00037 class Reference : public Element
00038 {
00039 public:
00040 Reference();
00041 Reference(Structure*);
00042 ~Reference();
00043
00044 virtual BoundingBox& CalcBoundingBox()=0;
00045 virtual BoundingBox& GetBoundingBox();
00046
00047 virtual void Flatten(Structure* _Top,wxTransformMatrix* _Matrix,bool srefSelected,EleFlags refgroup,bool deep )=0;
00048
00049 Structure* GetStructure();
00050 void SetStructure(Structure*);
00051 void SetStructureReferenceName(const wxString&);
00052 const wxString& GetStructureReferenceName();
00053 void GetPoint(Point& offsetpoint);
00054 void SetPoint(Point& offsetpoint);
00055
00056 wxTransformMatrix* GetRelativeMatrix();
00057 void SetRelativeMatrix(wxTransformMatrix*);
00058 void CalculateRelativeMatrices();
00059
00060 void SetReferencesNr();
00061 void SetExplodeReferencesNr();
00062 wxPropertySheet* GetPropList();
00063 void UpdatePropList();
00064 virtual void CalcArea(double* area,EleFlags mask)=0;
00065
00066 protected:
00067 Structure* _structure;
00068 wxString _structurereferencename;
00069 wxTransformMatrix* _relative_matrix;
00070 };
00071
00073
00077 class ArrayReference : public Reference
00078 {
00079 public:
00080 ArrayReference();
00081 ~ArrayReference();
00082
00083 void OWrite(Driver_out& where);
00084 void DoWrite(DrawDriver& dr);
00085
00086 TYPE GetType() {return AREF;};
00087 void SetHorzSpace(Point *hor_space);
00088 void SetVertSpace(Point *vert_space);
00089 Point* GetHorzPoint();
00090 Point* GetVertPoint();
00091
00092
00093 int GetRows();
00094 void SetRows(int i);
00095 int GetColumns();
00096 void SetColumns(int i);
00097 BoundingBox& CalcBoundingBox();
00098 ArrayReference& operator=(ArrayReference&);
00099 Element* Duplicate();
00100 void Transform(wxTransformMatrix* _Matrix);
00101 void CalcArea(double* area,EleFlags mask);
00102 void Flatten(Structure* _Top,wxTransformMatrix* _Matrix,bool srefSelected,EleFlags refgroup,bool deep );
00103
00104
00105 protected:
00106 bool Select(Point*);
00107 bool Select(BoundingBox*,wxTransformMatrix*);
00108 int m_columns;
00109 int m_rows;
00110 Point* _horpoint;
00111 Point* _verpoint;
00112 };
00113
00115
00119 class StructureReference : public Reference
00120 {
00121 public:
00122
00123 StructureReference();
00124 ~StructureReference();
00125
00126 void OWrite(Driver_out& where);
00127 void DoWrite(DrawDriver& dr);
00128
00129 TYPE GetType() {return SREF;};
00130
00131
00132 BoundingBox& CalcBoundingBox();
00133
00134
00135 StructureReference& operator=(StructureReference&);
00136 Element* Duplicate();
00137 void Transform(wxTransformMatrix* _Matrix);
00138 void Flatten(Structure* _Top,wxTransformMatrix* _Matrix,bool srefSelected,EleFlags refgroup,bool deep );
00139 void CalcArea(double* area,EleFlags mask);
00140
00141
00142 protected:
00143 bool Select(Point*);
00144 bool Select(BoundingBox*,wxTransformMatrix*);
00145
00146 };
00147
00148 #endif
referenc.h Source File -- Thu Nov 28 21:24:56 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . --