Logo ROOT   6.12/07
Reference Guide
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 
15 public:
16  TGLH2PolyPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord);
17 
18  char *GetPlotInfo(Int_t px, Int_t py);
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  //
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.
69 
70  ClassDef(TGLH2PolyPainter, 0); //Painter class for TH2Poly.
71 };
72 
73 #endif
Camera for TGLPlotPainter and sub-classes.
Definition: TGLPlotCamera.h:21
char * GetPlotInfo(Int_t px, Int_t py)
Show number of bin and bin contents, if bin is under the cursor.
void DrawPaletteAxis() const
Not yet.
void DrawPlot() const
Draw extruded polygons and plot&#39;s frame.
std::vector< Int_t > fBinColors
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition: TMultiGraph.h:35
Bool_t ClampZ(Double_t &zVal) const
Clamp z value.
Basic string class.
Definition: TString.h:125
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TGLH2PolyPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord)
Ctor.
static constexpr double mg
void MakePolygonCCW() const
Code taken from the original TH2Poly.
Bool_t CacheGeometry()
Cache all data for TH2Poly object.
#define ClassDef(name, id)
Definition: Rtypes.h:320
void DrawSectionXOZ() const
No sections.
std::list< Rgl::Pad::Tesselation_t >::const_iterator CIter_t
void DrawCaps() const
Caps on bins.
Paint TH2Poly.
void DrawSectionXOY() const
No sections.
void DeInitGL() const
Return some gl states to original values.
void DrawCap(CIter_t cap, Int_t bin, bool bottomCap) const
Draw a cap on top of a bin.
Bool_t UpdateGeometry()
Update cap&#39;s z-coordinates for all caps.
void StartPan(Int_t px, Int_t py)
User clicks on a lego with middle mouse button (middle for pad).
void AddOption(const TString &stringOption)
No additional options.
Bool_t BuildTesselation(Rgl::Pad::Tesselator &tess, const TGraph *g, Double_t z)
Tesselate a polygon described by TGraph.
Helper class for plot-painters holding information about axis ranges, numbers of bins and flags if ce...
void FillTemporaryPolygon(const Double_t *xs, const Double_t *ys, Double_t z, Int_t n) const
Since I probably have to re-orient polygon, I need a temporary polygon.
void Pan(Int_t px, Int_t py)
Mouse events handler.
Base class for plot-painters that provide GL rendering of various 2D and 3D histograms, functions and parametric surfaces.
std::vector< Double_t > fPolygon
double Double_t
Definition: RtypesCore.h:55
Bool_t InitGeometry()
Tesselate polygons, if not done yet.
The TH1 histogram class.
Definition: TH1.h:56
void DrawSectionYOZ() const
No sections.
you should not use this method at all Int_t Int_t z
Definition: TRolke.cxx:630
void SetBinColor(Int_t bin) const
Set bin&#39;s color.
void InitGL() const
Initialize some gl state variables.
void ProcessEvent(Int_t event, Int_t px, Int_t py)
No events.
A Graph is a graphics object made of two arrays X and Y with npoints each.
Definition: TGraph.h:41
void DrawExtrusion() const
Extruded part of bins.
std::list< Rgl::Pad::Tesselation_t > fCaps
void DrawPalette() const
Not yet.
const Int_t n
Definition: legend1.C:16
static constexpr double g