Logo ROOT  
Reference Guide
TGLLegoPainter.h
Go to the documentation of this file.
1// @(#)root/gl:$Id$
2// Author: Timur Pocheptsov 14/06/2006
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGLLegoPainter
13#define ROOT_TGLLegoPainter
14
15#include "TGLPlotPainter.h"
16#include "TGLQuadric.h"
17#include "TGLUtil.h"
18#include "TString.h"
19
20#include <vector>
21#include <utility>
22
23class TGLPlotCamera;
24class TAxis;
25class TH1;
26
27/*
28 TGLLegoPainter. The concrete implementation of abstract TGLPlotPainter.
29*/
30
32private:
33
34 enum ELegoType {
38 };
39 //Bars, cylinders or textured bars.
42 Rgl::Range_t fMinMaxVal;//For texture coordinates generation.
43
44 std::vector<Rgl::Range_t> fXEdges;
45 std::vector<Rgl::Range_t> fYEdges;
46
47 typedef std::pair<Double_t, Double_t> CosSin_t;
48 std::vector<CosSin_t> fCosSinTableX;
49 std::vector<CosSin_t> fCosSinTableY;
53
55 mutable std::vector<Double_t> fColorLevels;
56
59
60public:
61 TGLLegoPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord);
62
63 //TGLPlotPainter's final-overriders
64 char *GetPlotInfo(Int_t px, Int_t py);
66 void StartPan(Int_t px, Int_t py);
67 void Pan(Int_t px, Int_t py);
68 void AddOption(const TString &stringOption);
69 void ProcessEvent(Int_t event, Int_t px, Int_t py);
70
71private:
72 //Auxilary functions.
77 //Overriders
78 void InitGL()const;
79 void DeInitGL()const;
80
81 void DrawPlot()const;
82
83 void DrawLegoCartesian()const;
84 void DrawLegoPolar()const;
85 void DrawLegoCylindrical()const;
86 void DrawLegoSpherical()const;
87
88 void SetLegoColor()const;
89
90 void DrawSectionXOZ()const;
91 void DrawSectionYOZ()const;
92 void DrawSectionXOY()const;
93
94 Bool_t ClampZ(Double_t &zVal)const;
96
97 void DrawPalette()const;
98 void DrawPaletteAxis()const;
99
100 ClassDef(TGLLegoPainter, 0)//Lego painter
101};
102
103#endif
int Int_t
Definition: RtypesCore.h:45
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
#define ClassDef(name, id)
Definition: Rtypes.h:325
Class to manage histogram axis.
Definition: TAxis.h:30
Plot-painter implementing LEGO rendering of TH2 histograms in cartesian, polar, cylindrical and spher...
Bool_t InitGeometryCartesian()
Geometry for lego in cartesian coords.
Bool_t PreparePalette() const
Initialize color palette.
void DrawLegoSpherical() const
Lego in spherical system.
std::vector< Rgl::Range_t > fXEdges
Bool_t InitGeometryCylindrical()
Geometry for lego in cylindrical coords.
void ProcessEvent(Int_t event, Int_t px, Int_t py)
Remove all sections and repaint.
TGLLevelPalette fPalette
void DrawLegoPolar() const
Lego in polar system.
void DrawSectionXOZ() const
XOZ plane parallel section.
Bool_t ClampZ(Double_t &zVal) const
Clamp z value.
void InitGL() const
Initialize some gl state variables.
Bool_t InitGeometrySpherical()
Geometry for lego in spherical coords.
TGLLegoPainter & operator=(const TGLLegoPainter &)
TGLQuadric fQuadric
TGLLegoPainter(const TGLLegoPainter &)
void DrawPalette() const
Draw.
void DrawSectionYOZ() const
YOZ plane parallel section.
void DrawLegoCartesian() const
Lego in cartesian system.
void SetLegoColor() const
Set lego's color.
Bool_t InitGeometry()
Select method.
void DrawSectionXOY() const
Empty. No such sections for lego.
void StartPan(Int_t px, Int_t py)
User clicks on a lego with middle mouse button (middle for pad).
std::vector< Rgl::Range_t > fYEdges
void DeInitGL() const
Return some gl states to original values.
std::vector< CosSin_t > fCosSinTableX
std::pair< Double_t, Double_t > CosSin_t
Rgl::Range_t fMinMaxVal
void DrawLegoCylindrical() const
Lego in cylindrical system.
char * GetPlotInfo(Int_t px, Int_t py)
Obtain bin's info (i, j, value).
std::vector< CosSin_t > fCosSinTableY
void DrawPlot() const
Select method corresponding to coordinate system.
Bool_t InitGeometryPolar()
Geometry for lego in polar coords.
ELegoType fLegoType
void AddOption(const TString &stringOption)
Parse additional options.
void DrawPaletteAxis() const
Draw. Palette. Axis.
std::vector< Double_t > fColorLevels
void Pan(Int_t px, Int_t py)
Move lego or section.
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,...
Wrapper class for GLU quadric shape drawing object.
Definition: TGLQuadric.h:28
TH1 is the base class of all histogram classes in ROOT.
Definition: TH1.h:58
Basic string class.
Definition: TString.h:136
std::pair< Double_t, Double_t > Range_t
Definition: TGLUtil.h:1195