00001
00002
00003
00004
00005
00006
00007 #ifndef GEAR_PADROWLAYOUT2D_H
00008 #define GEAR_PADROWLAYOUT2D_H 1
00009
00010 #include <vector>
00011
00012 #include "GEAR.h"
00013
00014 namespace gear {
00015
00025 class PadRowLayout2D {
00026
00027 public:
00029 virtual ~PadRowLayout2D() { ; }
00030
00031
00032
00033 static const int CARTESIAN = 1 ;
00034 static const int POLAR = 2 ;
00035
00036 static const int RECTANGLE = 1 ;
00037 static const int DIAMOND = 2 ;
00038 static const int HEXAGON = 3 ;
00039 static const int CHEVRON = 4 ;
00040
00044 virtual int getPadLayoutType() const = 0;
00045
00049 virtual int getPadShape() const = 0;
00050
00053 virtual int getNPads() const = 0;
00054
00057 virtual int getNRows() const = 0;
00058
00061 virtual double getRowHeight(int rowNumber) const = 0;
00062
00065 virtual double getPadWidth(int padIndex) const = 0;
00066
00069 virtual Point2D getPadCenter(int padIndex) const = 0;
00070
00073 virtual double getPadHeight(int padIndex) const = 0;
00074
00078 virtual const std::vector<int> & getPadsInRow(int rowNumber) const = 0;
00079
00083 virtual const std::vector<double> & getPlaneExtent() const = 0;
00084
00087 virtual int getRowNumber(int padIndex) const = 0;
00088
00091 virtual int getPadNumber(int padIndex) const = 0;
00092
00095 virtual int getPadIndex(int rowNum, int padNum) const = 0;
00096
00100 virtual int getNearestPad(double c0, double c1) const = 0;
00101
00104 virtual int getRightNeighbour(int padIndex) const = 0;
00105
00108 virtual int getLeftNeighbour(int padIndex) const = 0;
00109
00112 virtual bool isInsidePad(double c0, double c1, int padIndex) const = 0;
00113
00116 virtual bool isInsidePad(double c0, double c1) const = 0;
00117 };
00118 }
00119 #endif