00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TEveQuadSet
00013 #define ROOT_TEveQuadSet
00014
00015 #include "TEveDigitSet.h"
00016
00017 class TRandom;
00018
00019 class TEveQuadSet : public TEveDigitSet
00020 {
00021 friend class TEveQuadSetGL;
00022
00023 TEveQuadSet(const TEveQuadSet&);
00024 TEveQuadSet& operator=(const TEveQuadSet&);
00025
00026 public:
00027 enum EQuadType_e {
00028 kQT_Undef,
00029 kQT_FreeQuad,
00030 kQT_RectangleXY,
00031 kQT_RectangleXZ,
00032 kQT_RectangleYZ,
00033 kQT_RectangleXYFixedDim,
00034 kQT_RectangleXYFixedZ,
00035 kQT_RectangleXZFixedY,
00036 kQT_RectangleYZFixedX,
00037 kQT_RectangleXYFixedDimZ,
00038 kQT_RectangleXZFixedDimY,
00039 kQT_RectangleYZFixedDimX,
00040 kQT_Rectangle_End,
00041
00042 kQT_LineXYFixedZ,
00043 kQT_LineXZFixedY,
00044 kQT_Line_End,
00045
00046 kQT_HexagonXY,
00047 kQT_HexagonYX,
00048 kQT_Hexagon_End
00049
00050
00051
00052
00053 };
00054
00055 struct QFreeQuad_t : public DigitBase_t { Float_t fVertices[12]; };
00056
00057 struct QOrigin_t : public DigitBase_t { Float_t fA, fB; };
00058
00059 struct QRectFixDimC_t : public QOrigin_t {};
00060
00061 struct QRectFixDim_t : public QRectFixDimC_t { Float_t fC; };
00062
00063 struct QRectFixC_t : public QRectFixDimC_t { Float_t fW, fH; };
00064
00065 struct QRect_t : public QRectFixDim_t { Float_t fW, fH; };
00066
00067 struct QLineFixC_t : public QOrigin_t { Float_t fDx, fDy; };
00068
00069 struct QHex_t : public QOrigin_t { Float_t fC, fR; };
00070
00071 protected:
00072 EQuadType_e fQuadType;
00073
00074 Float_t fDefWidth;
00075 Float_t fDefHeight;
00076 Float_t fDefCoord;
00077
00078 static Int_t SizeofAtom(EQuadType_e qt);
00079
00080 public:
00081 TEveQuadSet(const char* n="TEveQuadSet", const char* t="");
00082 TEveQuadSet(EQuadType_e quadType, Bool_t valIsCol, Int_t chunkSize,
00083 const char* n="TEveQuadSet", const char* t="");
00084 virtual ~TEveQuadSet() {}
00085
00086 void Reset(EQuadType_e quadType, Bool_t valIsCol, Int_t chunkSize);
00087
00088 Float_t GetDefWidth() const { return fDefWidth; }
00089 Float_t GetDefHeight() const { return fDefHeight; }
00090 Float_t GetDefCoord() const { return fDefCoord; }
00091
00092 void SetDefWidth(Float_t v) { fDefWidth = v; }
00093 void SetDefHeight(Float_t v) { fDefHeight = v; }
00094 void SetDefCoord(Float_t v) { fDefCoord = v; }
00095
00096
00097
00098 void AddQuad(Float_t* verts);
00099
00100 void AddQuad(Float_t a, Float_t b);
00101 void AddQuad(Float_t a, Float_t b, Float_t c);
00102 void AddQuad(Float_t a, Float_t b, Float_t w, Float_t h);
00103 void AddQuad(Float_t a, Float_t b, Float_t c, Float_t w, Float_t h);
00104
00105 void AddLine(Float_t a, Float_t b, Float_t w, Float_t h);
00106
00107 void AddHexagon(Float_t a, Float_t b, Float_t z, Float_t r);
00108
00109
00110 void QuadValue(Int_t value) { DigitValue(value); }
00111 void QuadColor(Color_t ci) { DigitColor(ci); }
00112 void QuadColor(UChar_t r, UChar_t g, UChar_t b, UChar_t a=255) { DigitColor(r, g, b, a); }
00113 void QuadId(TObject* id) { DigitId(id); }
00114
00115
00116
00117
00118
00119 virtual void ComputeBBox();
00120
00121
00122
00123 ClassDef(TEveQuadSet, 0);
00124 };
00125
00126 #endif