Main Page   Class Hierarchy   Compound List   File List   Compound Members  

referenc.h

00001 
00002 
00003 /*
00004 Program REFERENC.H
00005 Purpose defines GDSII refence structure type (header)
00006 Programmers     R. Spekreijse & N. Noorlander
00007 Last Update     9-4-1998, M. Reemst
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 //forward declaration
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                 // public member functions
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                 // constructors and destructors
00123                 StructureReference();
00124                 ~StructureReference();
00125 
00126       void OWrite(Driver_out& where);
00127       void DoWrite(DrawDriver& dr);
00128 
00129                 TYPE                                            GetType() {return SREF;};
00130 
00131                 // public memberfunctions
00132                 BoundingBox&          CalcBoundingBox();
00133 
00134                 // operators
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 -- -- . -- Main Page