Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGLH2PolyPainter.h
Go to the documentation of this file.
1 #ifndef ROOT_TGLH2PolyPainter
2 #define ROOT_TGLH2PolyPainter
3 
4 #include <vector>
5 #include <list>
6 
7 #include "TGLPlotPainter.h"
8 #include "TGLPadUtils.h"
9 #include "TString.h"
10 
11 class TMultiGraph;
12 class TGraph;
13 
14 class TGLH2PolyPainter : public TGLPlotPainter {
15 public:
16  TGLH2PolyPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord);
17 
18  char *GetPlotInfo(Int_t px, Int_t py);
19  Bool_t InitGeometry();
20  void StartPan(Int_t px, Int_t py);
21  void Pan(Int_t px, Int_t py);
22  void AddOption(const TString &stringOption);
23  void ProcessEvent(Int_t event, Int_t px, Int_t py);
24 
25 private:
26  //Overriders
27  void InitGL()const;
28  void DeInitGL()const;
29  void DrawPlot()const;
30  //Aux. functions.
31  //Draw edges of a bin.
32  void DrawExtrusion()const;
33  void DrawExtrusion(const TGraph *polygon, Double_t zMin, Double_t zMax, Int_t nBin)const;
34  void DrawExtrusion(const TMultiGraph *polygon, Double_t zMin, Double_t zMax, Int_t nBin)const;
35 
36  //Draw caps for a bin.
37  typedef std::list<Rgl::Pad::Tesselation_t>::const_iterator CIter_t;
38  void DrawCaps()const;
39  void DrawCap(CIter_t cap, Int_t bin, bool bottomCap)const;
40  //
41  Bool_t CacheGeometry();
42  Bool_t BuildTesselation(Rgl::Pad::Tesselator & tess, const TGraph *g, Double_t z);
43  Bool_t BuildTesselation(Rgl::Pad::Tesselator & tess, const TMultiGraph *mg, Double_t z);
44  Bool_t UpdateGeometry();
45  //Find the color in palette using bin content.
46  void SetBinColor(Int_t bin)const;
47 
48  //Empty overriders.
49  void DrawSectionXOZ()const;
50  void DrawSectionYOZ()const;
51  void DrawSectionXOY()const;
52  void DrawPalette()const;
53  void DrawPaletteAxis()const;
54 
55  //Aux. staff.
56  void FillTemporaryPolygon(const Double_t *xs, const Double_t *ys, Double_t z, Int_t n)const;
57  void MakePolygonCCW()const;
58  Bool_t ClampZ(Double_t &zVal)const;
59 
60  TString fBinInfo; //Used by GetPlotInfo.
61 
62  std::vector<Int_t> fBinColors;
63 
64  mutable std::vector<Double_t> fPolygon; //Temporary array for polygon's vertices.
65  std::list<Rgl::Pad::Tesselation_t> fCaps;//Caps for all bins.
66 
67  Bool_t fZLog;//Change in logZ updates only bin heights.
68  Double_t fZMin;
69 
70  ClassDef(TGLH2PolyPainter, 0); //Painter class for TH2Poly.
71 };
72 
73 #endif