Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TGLOverlay.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:  Matevz Tadel, Feb 2007
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2004, 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_TGLOverlay_H
0013 #define ROOT_TGLOverlay_H
0014 
0015 #include <GuiTypes.h>
0016 
0017 class TGLRnrCtx;
0018 class TGLOvlSelectRecord;
0019 
0020 #include <list>
0021 
0022 class TGLOverlayElement
0023 {
0024 public:
0025    enum ERole  { kUser, kViewer, kAnnotation, kAll };
0026 
0027    enum EState { kInvisible = 1, kDisabled = 2, kActive = 4,
0028                  kAllVisible = kDisabled | kActive };
0029 
0030 private:
0031    TGLOverlayElement(const TGLOverlayElement&) = delete;
0032    TGLOverlayElement& operator=(const TGLOverlayElement&) = delete;
0033 
0034 protected:
0035    ERole   fRole;
0036    EState  fState;
0037 
0038    void ProjectionMatrixPushIdentity();
0039 
0040 public:
0041    TGLOverlayElement(ERole r=kUser, EState s=kActive) :
0042       fRole(r), fState(s) {}
0043    virtual ~TGLOverlayElement() {}
0044 
0045    virtual Bool_t MouseEnter(TGLOvlSelectRecord& selRec);
0046    virtual Bool_t MouseStillInside(TGLOvlSelectRecord& selRec);
0047    virtual Bool_t Handle(TGLRnrCtx& rnrCtx, TGLOvlSelectRecord& selRec,
0048                          Event_t* event);
0049    virtual void   MouseLeave();
0050 
0051    virtual void Render(TGLRnrCtx& rnrCtx) = 0;
0052 
0053    ERole   GetRole() const  { return fRole; }
0054    void    SetRole(ERole r) { fRole = r; }
0055 
0056    EState  GetState() const   { return fState; }
0057    void    SetState(EState s) { fState = s; }
0058 
0059    void    SetBinaryState(Bool_t s) { SetState(s ? kActive : kInvisible); }
0060 
0061    ClassDef(TGLOverlayElement, 0) // Base class for GL overlay elements.
0062 };
0063 
0064 
0065 class TGLOverlayList
0066 {
0067 private:
0068    TGLOverlayList(const TGLOverlayList&) = delete;
0069    TGLOverlayList& operator=(const TGLOverlayList&) = delete;
0070 
0071 protected:
0072    std::list<TGLOverlayElement*> fElements;
0073 
0074 public:
0075    TGLOverlayList() : fElements() {}
0076    virtual ~TGLOverlayList() {}
0077 
0078    // void AddElement(TGLOverlayElement* element);
0079    // void RemoveElement(TGLOverlayElement* element);
0080 
0081    // TGLOverlayElement* SelectElement(TGLSelectRecord& selRec, Int_t nameOff);
0082 
0083    ClassDef(TGLOverlayList, 0) // Collection of overlay elements to draw/select together.
0084 };
0085 
0086 
0087 #endif