Merge from EVE-dev.
[u/mrichter/AliRoot.git] / EVE / Alieve / TPCSector2DGL.h
1 // $Header$
2
3 #ifndef ALIEVE_TPCSector2DGL_H
4 #define ALIEVE_TPCSector2DGL_H
5
6 #include <TGLObject.h>
7
8 #include <Alieve/TPCSector2D.h>
9 #include <Alieve/TPCSectorData.h>
10
11
12 namespace Alieve {
13
14 class TPCSector2DGL : public TGLObject
15 {
16 protected:
17   virtual void DirectDraw(const TGLDrawFlags & flags) const;
18
19   void LoadPadrow(TPCSectorData::RowIterator& iter, Int_t row, Int_t off) const;
20   void CreateTexture() const;
21
22   void DisplayTexture(const TPCSectorData::SegmentInfo& seg,
23                       Int_t startCol, Int_t startRow) const;
24   void DisplayQuads(const TPCSectorData::SegmentInfo& seg,
25                     Int_t startCol, Int_t startRow) const;
26   void DisplayNamedQuads(const TPCSectorData::SegmentInfo& seg,
27                          Int_t startCol, Int_t startRow) const;
28   void DisplayFrame() const;
29
30   UChar_t* GetRowCol(Int_t row, Int_t col) const;
31
32   TPCSector2D*                 fSector;
33   mutable TPCSectorData*       fSectorData;
34
35   mutable UChar_t*             fImage;
36   mutable UInt_t               fTexture;
37   mutable UInt_t               fRTS;
38  
39 public:
40   TPCSector2DGL();
41   virtual ~TPCSector2DGL();
42
43   virtual Bool_t SetModel(TObject* obj); 
44   virtual void   SetBBox();
45   virtual Bool_t SupportsSecondarySelect() const { return kTRUE; }
46
47   static void TraceStepsUp  (const TPCSectorData::SegmentInfo& s);
48   static void TraceStepsDown(const TPCSectorData::SegmentInfo& s);
49
50   static const Int_t fgkTextureWidth;
51   static const Int_t fgkTextureHeight;
52   static const Int_t fgkTextureByteSize;
53
54 }; // endclass TPCSector2D_GL_Rnr
55   
56
57 inline UChar_t* TPCSector2DGL::GetRowCol(Int_t row, Int_t col) const
58 {
59   return fImage + 4*(row*fgkTextureWidth + col);
60 }
61
62
63 }
64
65 #endif