Logo ROOT   6.10/09
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 class TGLPlotCamera;
21 class TAxis;
22 class TH1;
23 
24 /*
25  TGLLegoPainter. The concrete implementation of abstract TGLPlotPainter.
26 */
27 
29 private:
30 
31  enum ELegoType {
35  };
36  //Bars, cylinders or textured bars.
39  Rgl::Range_t fMinMaxVal;//For texture coordinates generation.
40 
41  std::vector<Rgl::Range_t> fXEdges;
42  std::vector<Rgl::Range_t> fYEdges;
43 
44  typedef std::pair<Double_t, Double_t> CosSin_t;
45  std::vector<CosSin_t> fCosSinTableX;
46  std::vector<CosSin_t> fCosSinTableY;
50 
52  mutable std::vector<Double_t> fColorLevels;
53 
56 
57 public:
58  TGLLegoPainter(TH1 *hist, TGLPlotCamera *camera, TGLPlotCoordinates *coord);
59 
60  //TGLPlotPainter's final-overriders
61  char *GetPlotInfo(Int_t px, Int_t py);
63  void StartPan(Int_t px, Int_t py);
64  void Pan(Int_t px, Int_t py);
65  void AddOption(const TString &stringOption);
66  void ProcessEvent(Int_t event, Int_t px, Int_t py);
67 
68 private:
69  //Auxilary functions.
74  //Overriders
75  void InitGL()const;
76  void DeInitGL()const;
77 
78  void DrawPlot()const;
79 
80  void DrawLegoCartesian()const;
81  void DrawLegoPolar()const;
82  void DrawLegoCylindrical()const;
83  void DrawLegoSpherical()const;
84 
85  void SetLegoColor()const;
86 
87  void DrawSectionXOZ()const;
88  void DrawSectionYOZ()const;
89  void DrawSectionXOY()const;
90 
91  Bool_t ClampZ(Double_t &zVal)const;
92  Bool_t PreparePalette()const;
93 
94  void DrawPalette()const;
95  void DrawPaletteAxis()const;
96 
97  ClassDef(TGLLegoPainter, 0)//Lego painter
98 };
99 
100 #endif
ELegoType fLegoType
Camera for TGLPlotPainter and sub-classes.
Definition: TGLPlotCamera.h:21
void DrawLegoSpherical() const
Lego in spherical system.
std::vector< Rgl::Range_t > fXEdges
Plot-painter implementing LEGO rendering of TH2 histograms in cartesian, polar, cylindrical and spher...
std::pair< Double_t, Double_t > Range_t
Definition: TGLUtil.h:1193
Rgl::Range_t fMinMaxVal
Bool_t InitGeometryCylindrical()
Geometry for lego in cylindrical coords.
Basic string class.
Definition: TString.h:129
int Int_t
Definition: RtypesCore.h:41
void DeInitGL() const
Return some gl states to original values.
void StartPan(Int_t px, Int_t py)
User clicks on a lego with middle mouse button (middle for pad).
void InitGL() const
Initialize some gl state variables.
bool Bool_t
Definition: RtypesCore.h:59
void ProcessEvent(Int_t event, Int_t px, Int_t py)
Remove all sections and repaint.
void AddOption(const TString &stringOption)
Parse additional options.
Wrapper class for GLU quadric shape drawing object.
Definition: TGLQuadric.h:27
std::vector< CosSin_t > fCosSinTableY
Bool_t InitGeometryPolar()
Geometry for lego in polar coords.
#define ClassDef(name, id)
Definition: Rtypes.h:297
void DrawSectionYOZ() const
YOZ plane parallel section.
void DrawPalette() const
Draw.
TGLLegoPainter(const TGLLegoPainter &)
std::vector< Double_t > fColorLevels
void SetLegoColor() const
Set lego&#39;s color.
void DrawLegoCylindrical() const
Lego in cylindrical system.
std::vector< CosSin_t > fCosSinTableX
Bool_t InitGeometry()
Select method.
void DrawLegoCartesian() const
Lego in cartesian system.
std::pair< Double_t, Double_t > CosSin_t
void DrawSectionXOY() const
Empty. No such sections for lego.
Class to manage histogram axis.
Definition: TAxis.h:30
Helper class for plot-painters holding information about axis ranges, numbers of bins and flags if ce...
char * GetPlotInfo(Int_t px, Int_t py)
Obtain bin&#39;s info (i, j, value).
Base class for plot-painters that provide GL rendering of various 2D and 3D histograms, functions and parametric surfaces.
void DrawLegoPolar() const
Lego in polar system.
double Double_t
Definition: RtypesCore.h:55
The TH1 histogram class.
Definition: TH1.h:56
Bool_t ClampZ(Double_t &zVal) const
Clamp z value.
std::vector< Rgl::Range_t > fYEdges
TGLLevelPalette fPalette
TGLLegoPainter & operator=(const TGLLegoPainter &)
Bool_t PreparePalette() const
Initialize color palette.
TGLQuadric fQuadric
Bool_t InitGeometrySpherical()
Geometry for lego in spherical coords.
void DrawPlot() const
Select method corresponding to coordinate system.
void DrawSectionXOZ() const
XOZ plane parallel section.
void Pan(Int_t px, Int_t py)
Move lego or section.
Bool_t InitGeometryCartesian()
Geometry for lego in cartesian coords.
void DrawPaletteAxis() const
Draw. Palette. Axis.