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