// @(#)root/eve:$Id$
// Author: Alja Mrak-Tadel 2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TEveCaloLegoOverlay
#define ROOT_TEveCaloLegoOverlay

#include "TGLCameraOverlay.h"
#include "TEveElement.h"

class TEveCaloLego;

class TEveCaloLegoOverlay : public TGLCameraOverlay
{
private:
   TEveCaloLegoOverlay(const TEveCaloLegoOverlay&);            // Not implemented
   TEveCaloLegoOverlay& operator=(const TEveCaloLegoOverlay&); // Not implemented

   Bool_t SetSliderVal(Event_t* event,TGLRnrCtx& rnrCtx );


protected:
   void   RenderLogaritmicScales(TGLRnrCtx& rnrCtx);
   void   RenderPaletteScales(TGLRnrCtx& rnrCtx);
   void   RenderPlaneInterface(TGLRnrCtx& rnrCtx);
   void   RenderHeader(TGLRnrCtx& rnrCtx);

   TEveCaloLego*  fCalo; // model

   // 2D scales
   Bool_t         fShowScales;
   Color_t        fScaleColor;
   Char_t         fScaleTransparency; //transaprency in %
   Double_t       fScaleCoordX;
   Double_t       fScaleCoordY;
   Double_t       fScaleW;
   Double_t       fScaleH;
   Double_t       fCellX;
   Double_t       fCellY;

   Color_t        fFrameColor;
   Char_t         fFrameLineTransp;
   Char_t         fFrameBgTransp;

   // move of scales
   Int_t             fMouseX, fMouseY; //! last mouse position
   Bool_t            fInDrag;

   // text top right corner
   TString        fHeaderTxt;
   Bool_t         fHeaderSelected;

   // plane ojects
   TAxis         *fPlaneAxis;
   Color_t        fAxisPlaneColor;
   Bool_t         fShowPlane;
   // plane state
   Float_t        fMenuW;
   Float_t        fButtonW;
   Bool_t         fShowSlider;
   Float_t        fSliderH;    // slider height in % of viewport
   Float_t        fSliderPosY; // y position of slider bottom up
   Float_t        fSliderVal;
   // plane event-handling
   Int_t          fActiveID;
   Color_t        fActiveCol;


public:
   TEveCaloLegoOverlay();
   virtual ~TEveCaloLegoOverlay(){}

   //rendering
   virtual  void   Render(TGLRnrCtx& rnrCtx);

   // event handling
   virtual  Bool_t MouseEnter(TGLOvlSelectRecord& selRec);
   virtual  Bool_t Handle(TGLRnrCtx& rnrCtx, TGLOvlSelectRecord& selRec, Event_t* event);
   virtual  void   MouseLeave();


   TEveCaloLego* GetCaloLego() {return fCalo;}
   void          SetCaloLego(TEveCaloLego* c) {fCalo = c;}

   void          SetShowPlane (Bool_t x) { fShowPlane = x; }
   Bool_t        GetShowPlane() const { return fShowPlane; }

   void          SetHeaderTxt(const char *txt) {fHeaderTxt = txt; }
   const char*   GetHeaderTxt() const { return fHeaderTxt; }

   void          SetShowScales(Bool_t x) { fShowScales = x;}
   void          SetScaleColorTransparency(Color_t colIdx, Char_t transp);
   void          SetScalePosition(Double_t x, Double_t y);

   void          SetFrameAttribs(Color_t frameCol, Char_t lineTransp, Char_t bgTransp);

   ClassDef(TEveCaloLegoOverlay, 0); // GL-overaly control GUI for TEveCaloLego.
};

#endif
 TEveCaloLegoOverlay.h:1
 TEveCaloLegoOverlay.h:2
 TEveCaloLegoOverlay.h:3
 TEveCaloLegoOverlay.h:4
 TEveCaloLegoOverlay.h:5
 TEveCaloLegoOverlay.h:6
 TEveCaloLegoOverlay.h:7
 TEveCaloLegoOverlay.h:8
 TEveCaloLegoOverlay.h:9
 TEveCaloLegoOverlay.h:10
 TEveCaloLegoOverlay.h:11
 TEveCaloLegoOverlay.h:12
 TEveCaloLegoOverlay.h:13
 TEveCaloLegoOverlay.h:14
 TEveCaloLegoOverlay.h:15
 TEveCaloLegoOverlay.h:16
 TEveCaloLegoOverlay.h:17
 TEveCaloLegoOverlay.h:18
 TEveCaloLegoOverlay.h:19
 TEveCaloLegoOverlay.h:20
 TEveCaloLegoOverlay.h:21
 TEveCaloLegoOverlay.h:22
 TEveCaloLegoOverlay.h:23
 TEveCaloLegoOverlay.h:24
 TEveCaloLegoOverlay.h:25
 TEveCaloLegoOverlay.h:26
 TEveCaloLegoOverlay.h:27
 TEveCaloLegoOverlay.h:28
 TEveCaloLegoOverlay.h:29
 TEveCaloLegoOverlay.h:30
 TEveCaloLegoOverlay.h:31
 TEveCaloLegoOverlay.h:32
 TEveCaloLegoOverlay.h:33
 TEveCaloLegoOverlay.h:34
 TEveCaloLegoOverlay.h:35
 TEveCaloLegoOverlay.h:36
 TEveCaloLegoOverlay.h:37
 TEveCaloLegoOverlay.h:38
 TEveCaloLegoOverlay.h:39
 TEveCaloLegoOverlay.h:40
 TEveCaloLegoOverlay.h:41
 TEveCaloLegoOverlay.h:42
 TEveCaloLegoOverlay.h:43
 TEveCaloLegoOverlay.h:44
 TEveCaloLegoOverlay.h:45
 TEveCaloLegoOverlay.h:46
 TEveCaloLegoOverlay.h:47
 TEveCaloLegoOverlay.h:48
 TEveCaloLegoOverlay.h:49
 TEveCaloLegoOverlay.h:50
 TEveCaloLegoOverlay.h:51
 TEveCaloLegoOverlay.h:52
 TEveCaloLegoOverlay.h:53
 TEveCaloLegoOverlay.h:54
 TEveCaloLegoOverlay.h:55
 TEveCaloLegoOverlay.h:56
 TEveCaloLegoOverlay.h:57
 TEveCaloLegoOverlay.h:58
 TEveCaloLegoOverlay.h:59
 TEveCaloLegoOverlay.h:60
 TEveCaloLegoOverlay.h:61
 TEveCaloLegoOverlay.h:62
 TEveCaloLegoOverlay.h:63
 TEveCaloLegoOverlay.h:64
 TEveCaloLegoOverlay.h:65
 TEveCaloLegoOverlay.h:66
 TEveCaloLegoOverlay.h:67
 TEveCaloLegoOverlay.h:68
 TEveCaloLegoOverlay.h:69
 TEveCaloLegoOverlay.h:70
 TEveCaloLegoOverlay.h:71
 TEveCaloLegoOverlay.h:72
 TEveCaloLegoOverlay.h:73
 TEveCaloLegoOverlay.h:74
 TEveCaloLegoOverlay.h:75
 TEveCaloLegoOverlay.h:76
 TEveCaloLegoOverlay.h:77
 TEveCaloLegoOverlay.h:78
 TEveCaloLegoOverlay.h:79
 TEveCaloLegoOverlay.h:80
 TEveCaloLegoOverlay.h:81
 TEveCaloLegoOverlay.h:82
 TEveCaloLegoOverlay.h:83
 TEveCaloLegoOverlay.h:84
 TEveCaloLegoOverlay.h:85
 TEveCaloLegoOverlay.h:86
 TEveCaloLegoOverlay.h:87
 TEveCaloLegoOverlay.h:88
 TEveCaloLegoOverlay.h:89
 TEveCaloLegoOverlay.h:90
 TEveCaloLegoOverlay.h:91
 TEveCaloLegoOverlay.h:92
 TEveCaloLegoOverlay.h:93
 TEveCaloLegoOverlay.h:94
 TEveCaloLegoOverlay.h:95
 TEveCaloLegoOverlay.h:96
 TEveCaloLegoOverlay.h:97
 TEveCaloLegoOverlay.h:98
 TEveCaloLegoOverlay.h:99
 TEveCaloLegoOverlay.h:100
 TEveCaloLegoOverlay.h:101
 TEveCaloLegoOverlay.h:102
 TEveCaloLegoOverlay.h:103
 TEveCaloLegoOverlay.h:104
 TEveCaloLegoOverlay.h:105
 TEveCaloLegoOverlay.h:106
 TEveCaloLegoOverlay.h:107