Logo ROOT  
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
11class TMultiGraph;
12class TGraph;
13
15public:
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
25private:
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
#define g(i)
Definition: RSha256.hxx:105
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
#define ClassDef(name, id)
Definition: Rtypes.h:326
Paint TH2Poly.
void DrawPlot() const
Draw extruded polygons and plot's frame.
void DrawSectionYOZ() const
No sections.
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 DrawCaps() const
Caps on bins.
void DrawSectionXOZ() const
No sections.
void MakePolygonCCW() const
Code taken from the original TH2Poly.
void Pan(Int_t px, Int_t py)
Mouse events handler.
char * GetPlotInfo(Int_t px, Int_t py)
Show number of bin and bin contents, if bin is under the cursor.
std::list< Rgl::Pad::Tesselation_t > fCaps
void InitGL() const
Initialize some gl state variables.
Bool_t BuildTesselation(Rgl::Pad::Tesselator &tess, const TGraph *g, Double_t z)
Tesselate a polygon described by TGraph.
std::list< Rgl::Pad::Tesselation_t >::const_iterator CIter_t
void DrawSectionXOY() const
No sections.
void DrawPaletteAxis() const
Not yet.
void DrawCap(CIter_t cap, Int_t bin, bool bottomCap) const
Draw a cap on top of a bin.
TGLH2PolyPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord)
Ctor.
void DrawPalette() const
Not yet.
Bool_t UpdateGeometry()
Update cap's z-coordinates for all caps.
void DeInitGL() const
Return some gl states to original values.
std::vector< Double_t > fPolygon
Bool_t ClampZ(Double_t &zVal) const
Clamp z value.
Bool_t CacheGeometry()
Cache all data for TH2Poly object.
void SetBinColor(Int_t bin) const
Set bin's color.
void ProcessEvent(Int_t event, Int_t px, Int_t py)
No events.
void DrawExtrusion() const
Extruded part of bins.
std::vector< Int_t > fBinColors
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 InitGeometry()
Tesselate polygons, if not done yet.
Camera for TGLPlotPainter and sub-classes.
Definition: TGLPlotCamera.h:22
Helper class for plot-painters holding information about axis ranges, numbers of bins and flags if ce...
Base class for plot-painters that provide GL rendering of various 2D and 3D histograms,...
A Graph is a graphics object made of two arrays X and Y with npoints each.
Definition: TGraph.h:41
The TH1 histogram class.
Definition: TH1.h:56
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition: TMultiGraph.h:35
Basic string class.
Definition: TString.h:131
const Int_t n
Definition: legend1.C:16
static constexpr double mg