ROOT logo
// @(#)root/gl:$Id: TGLOverlayButton.h 26367 2008-11-21 18:08:30Z matevz $
// Author: Bertrand Bellenot 2008

/*************************************************************************
 * 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_TGLOverlayButton
#define ROOT_TGLOverlayButton

#ifndef ROOT_TGLOverlay
#include "TGLOverlay.h"
#endif
#ifndef ROOT_TGLFontManager
#include "TGLFontManager.h"
#endif
#ifndef ROOT_TGLViewerBase
#include "TGLViewerBase.h"
#endif
#ifndef ROOT_TQObject
#include "TQObject.h"
#endif

class TString;

class TGLOverlayButton : public TGLOverlayElement,
                         public TQObject
{

private:
   TGLOverlayButton(const TGLOverlayButton&);            // Not implemented
   TGLOverlayButton& operator=(const TGLOverlayButton&); // Not implemented

protected:

   TString           fText;         // button text
   Int_t             fActiveID;     // active item identifier
   Pixel_t           fBackColor;    // button background color
   Pixel_t           fTextColor;    // text color
   Float_t           fNormAlpha;    // button alpha value (transparency) in normal state
   Float_t           fHighAlpha;    // button alpha value (transparency) in highlight state

   Float_t           fPosX;         // button x position
   Float_t           fPosY;         // button y position
   Float_t           fWidth;        // button width
   Float_t           fHeight;       // button height

   mutable TGLFont   fFont;         // font used to render text

public:
   TGLOverlayButton(TGLViewerBase *parent, const char *text, Float_t posx,
                    Float_t posy, Float_t width, Float_t height);
   virtual ~TGLOverlayButton() { }

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

   virtual void         Render(TGLRnrCtx& rnrCtx);
   virtual void         ResetState() { fActiveID = -1; }

   virtual const char  *GetText() const { return fText.Data(); }
   virtual Pixel_t      GetBackColor() const { return fBackColor; }
   virtual Pixel_t      GetTextColor() const { return fTextColor; }
   virtual void         SetText(const char *text) { fText = text; }
   virtual void         SetPosition(Float_t x, Float_t y) { fPosX = x; fPosY = y; }
   virtual void         SetSize(Float_t w, Float_t h) { fWidth = w; fHeight = h; }
   virtual void         SetAlphaValues(Float_t norm, Float_t high) { fNormAlpha = norm; fHighAlpha = high; }
   virtual void         SetBackColor(Pixel_t col) { fBackColor = col; }
   virtual void         SetTextColor(Pixel_t col) { fTextColor = col; }

   virtual void         Clicked(TGLViewerBase *viewer); // *SIGNAL*

   ClassDef(TGLOverlayButton, 0); // GL-overlay button.
};

#endif

 TGLOverlayButton.h:1
 TGLOverlayButton.h:2
 TGLOverlayButton.h:3
 TGLOverlayButton.h:4
 TGLOverlayButton.h:5
 TGLOverlayButton.h:6
 TGLOverlayButton.h:7
 TGLOverlayButton.h:8
 TGLOverlayButton.h:9
 TGLOverlayButton.h:10
 TGLOverlayButton.h:11
 TGLOverlayButton.h:12
 TGLOverlayButton.h:13
 TGLOverlayButton.h:14
 TGLOverlayButton.h:15
 TGLOverlayButton.h:16
 TGLOverlayButton.h:17
 TGLOverlayButton.h:18
 TGLOverlayButton.h:19
 TGLOverlayButton.h:20
 TGLOverlayButton.h:21
 TGLOverlayButton.h:22
 TGLOverlayButton.h:23
 TGLOverlayButton.h:24
 TGLOverlayButton.h:25
 TGLOverlayButton.h:26
 TGLOverlayButton.h:27
 TGLOverlayButton.h:28
 TGLOverlayButton.h:29
 TGLOverlayButton.h:30
 TGLOverlayButton.h:31
 TGLOverlayButton.h:32
 TGLOverlayButton.h:33
 TGLOverlayButton.h:34
 TGLOverlayButton.h:35
 TGLOverlayButton.h:36
 TGLOverlayButton.h:37
 TGLOverlayButton.h:38
 TGLOverlayButton.h:39
 TGLOverlayButton.h:40
 TGLOverlayButton.h:41
 TGLOverlayButton.h:42
 TGLOverlayButton.h:43
 TGLOverlayButton.h:44
 TGLOverlayButton.h:45
 TGLOverlayButton.h:46
 TGLOverlayButton.h:47
 TGLOverlayButton.h:48
 TGLOverlayButton.h:49
 TGLOverlayButton.h:50
 TGLOverlayButton.h:51
 TGLOverlayButton.h:52
 TGLOverlayButton.h:53
 TGLOverlayButton.h:54
 TGLOverlayButton.h:55
 TGLOverlayButton.h:56
 TGLOverlayButton.h:57
 TGLOverlayButton.h:58
 TGLOverlayButton.h:59
 TGLOverlayButton.h:60
 TGLOverlayButton.h:61
 TGLOverlayButton.h:62
 TGLOverlayButton.h:63
 TGLOverlayButton.h:64
 TGLOverlayButton.h:65
 TGLOverlayButton.h:66
 TGLOverlayButton.h:67
 TGLOverlayButton.h:68
 TGLOverlayButton.h:69
 TGLOverlayButton.h:70
 TGLOverlayButton.h:71
 TGLOverlayButton.h:72
 TGLOverlayButton.h:73
 TGLOverlayButton.h:74
 TGLOverlayButton.h:75
 TGLOverlayButton.h:76
 TGLOverlayButton.h:77
 TGLOverlayButton.h:78
 TGLOverlayButton.h:79
 TGLOverlayButton.h:80
 TGLOverlayButton.h:81
 TGLOverlayButton.h:82