144e2a3a727e086d5305dfcfc6f15c35432ddaad
[u/mrichter/AliRoot.git] / EVE / Reve / QuadSet.h
1 // $Header$
2
3 #ifndef REVE_QuadSet_H
4 #define REVE_QuadSet_H
5
6 #include <Gtypes.h>
7 #include <TNamed.h>
8 #include <TAtt3D.h>
9 #include <TAttBBox.h>
10
11 #include <vector>
12
13 class TRandom;
14
15 namespace Reve {
16
17 struct Quad
18 {
19   Float_t  vertices[12];
20   Int_t    color;
21
22   void ColorFromIdx(Color_t ci);
23
24   Quad(Color_t col = 1)
25   { ColorFromIdx(col); }
26
27   Quad(Color_t col, Float_t* p)
28   { ColorFromIdx(col); memcpy(vertices, p, 12*sizeof(Float_t)); }
29
30   Quad(TRandom& rnd, Float_t origin, Float_t size);
31
32   Quad(const Quad& org) { memcpy(this, &org, sizeof(Quad)); }
33
34   virtual ~Quad() {}
35
36   ClassDef(Quad, 1);
37 };
38
39 /**************************************************************************/
40
41 class QuadSet : public TNamed, public TAtt3D, public TAttBBox
42 {
43   friend class QuadSetGL;
44
45   void Init();
46
47 protected:
48   std::vector<Quad> fQuads;
49   Double_t          fMatrix[16];
50   Bool_t            fTrans;
51
52 public:
53   QuadSet(const Text_t* n="QuadSet", const Text_t* t="") : TNamed(n, t)
54   { Init(); }
55   virtual ~QuadSet() {}
56
57   Bool_t GetTrans() const { return fTrans; }
58   void SetTrans(Bool_t t) { fTrans = t; }
59
60   void Test(Int_t nquads);
61
62   virtual void ComputeBBox();
63
64   virtual void Paint(Option_t* option = "");
65
66   ClassDef(QuadSet, 1);
67 };
68
69 } // namespace Reve
70
71 #endif