Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TGLPlotBox.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/gl:$Id$
0002 // Author:  Timur Pocheptsov  31/08/2006
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TGLPlotFrame
0013 #define ROOT_TGLPlotFrame
0014 
0015 #include <vector>
0016 
0017 #include "Rtypes.h"
0018 #include "TGLUtil.h"
0019 
0020 class TColor;
0021 
0022 /*
0023    TGLPlotBox draws a box behind a plot.
0024 */
0025 
0026 class TGLPlotBox {
0027 private:
0028    const TColor          *fFrameColor;
0029    const Bool_t           fXOYSelectable;
0030    const Bool_t           fXOZSelectable;
0031    const Bool_t           fYOZSelectable;
0032 
0033    Bool_t                 fSelectablePairs[4][2];
0034 
0035    TGLVertex3             f3DBox[8];
0036    mutable TGLVertex3     f2DBox[8];
0037    mutable TGLVertex3     f2DBoxU[8];
0038    mutable Int_t          fFrontPoint;
0039 
0040    //The sizes of a "unit" cube.
0041    Double_t               fRangeXU;
0042    Double_t               fRangeYU;
0043    Double_t               fRangeZU;
0044 
0045    Bool_t                 fDrawBack;
0046    Bool_t                 fDrawFront;
0047 
0048 public:
0049 
0050    TGLPlotBox(Bool_t xoySelectable, Bool_t xozSelectable, Bool_t yozSelectable);
0051    //ClassDef macro adds some virtual functions,
0052    //so, to supress g++ warnings virtual destructor declared.
0053    virtual ~TGLPlotBox();
0054 
0055    void DrawBox(Int_t selectedPart, Bool_t selectionPass,
0056                 const std::vector<Double_t> &zLevels,
0057                 Bool_t highColor)const;
0058 
0059    void SetPlotBox(const Rgl::Range_t &xRange,
0060                    const Rgl::Range_t &yRange,
0061                    const Rgl::Range_t &zRange);
0062    void SetPlotBox(const Rgl::Range_t &xRange, Double_t rangeXU,
0063                    const Rgl::Range_t &yRange, Double_t rangeYU,
0064                    const Rgl::Range_t &zRange, Double_t rangeZU);
0065 
0066    void SetFrameColor(const TColor *color);
0067 
0068    Int_t FindFrontPoint()const;
0069    Int_t GetFrontPoint()const;
0070 
0071    const TGLVertex3 *Get3DBox()const;
0072    const TGLVertex3 *Get2DBox()const;
0073 
0074    static const Int_t    fgFramePlanes[][4];
0075    static const Int_t    fgBackPairs[][2];
0076    static const Int_t    fgFrontPairs[][2];
0077    static const Double_t fgNormals[][3];
0078 
0079    void SetDrawFront(Bool_t d) {fDrawFront = d;}
0080    Bool_t GetDrawFront() const {return fDrawFront;}
0081 
0082    void SetDrawBack(Bool_t d) {fDrawBack = d;}
0083    Bool_t GetDrawBack() const {return fDrawBack;}
0084 
0085 private:
0086    void DrawBack(Int_t selectedPart, Bool_t selectionPass, const std::vector<Double_t> &zLevels, Bool_t highColor)const;
0087    void DrawFront()const;
0088    void DrawBackPlane(Int_t plane, Bool_t selectionPass,
0089                       const std::vector<Double_t> &zLevels)const;
0090 
0091    ClassDef(TGLPlotBox, 0)//Back box for plot.
0092 };
0093 
0094 #endif