Logo ROOT   6.12/07
Reference Guide
TGLWidget.h
Go to the documentation of this file.
1 // @(#)root/gl:$Id$
2 // Author: Timur Pocheptsov, Jun 2007
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_TGLWidget
13 #define ROOT_TGLWidget
14 
15 #include <utility>
16 #include <memory>
17 #include <set>
18 
19 #include "TGLContext.h"
20 #include "TVirtualGL.h"
21 #include "TGLFormat.h"
22 #include "TGFrame.h"
23 
24 class TGLWidget;
25 class TGEventHandler;
26 
27 class TGLWidget : public TGFrame, public TGLPaintDevice
28 {
29  friend class TGLContext;
30 
31 private:
33  //fInnerData is for X11 - <dpy, visualInfo> pair.
34  std::pair<void *, void *> fInnerData;
36 
38  //fFromCtor checks that SetFormat was called only from ctor.
40 
41  std::set<TGLContext *> fValidContexts;
42 
44 
45 public:
46  static TGLWidget* CreateDummy();
47 
48  static TGLWidget* Create(const TGWindow* parent, Bool_t selectInput,
49  Bool_t shareDefault, const TGLPaintDevice *shareDevice,
50  UInt_t width, UInt_t height);
51 
52  static TGLWidget* Create(const TGLFormat &format,
53  const TGWindow* parent, Bool_t selectInput,
54  Bool_t shareDefault, const TGLPaintDevice *shareDevice,
55  UInt_t width, UInt_t height);
56 
57  ~TGLWidget();
58 
59  virtual void InitGL();
60  virtual void PaintGL();
61 
64  void SwapBuffers();
65  const TGLContext *GetContext()const;
66 
67  const TGLFormat *GetPixelFormat()const;
68 
69  //This function is public _ONLY_ for calls
70  //via gInterpreter. Do not call it directly.
71  void SetFormat();
72  //To repaint gl-widget without GUI events.
73  void ExtractViewport(Int_t *vp)const;
74 
77 
85 
86  void DoRedraw();
87 
88 private:
89  TGLWidget(const TGLWidget &); // Not implemented.
90  TGLWidget &operator = (const TGLWidget &); // Not implemented.
91 
92 protected:
93  TGLWidget(Window_t glw, const TGWindow* parent, Bool_t selectInput);
94 
95  static Window_t CreateWindow(const TGWindow* parent, const TGLFormat &format,
96  UInt_t width, UInt_t height,
97  std::pair<void *, void *>& innerData);
98 
99  void AddContext(TGLContext *ctx);
100  void RemoveContext(TGLContext *ctx);
101 
102  std::pair<void *, void *> GetInnerData()const;
103 
104  ClassDef(TGLWidget, 0); //Window (widget) version of TGLPaintDevice
105 };
106 
107 #endif
Bool_t HandleConfigureNotify(Event_t *ev)
Delegate call to the owner.
Definition: TGLWidget.cxx:619
Bool_t HandleKey(Event_t *ev)
Delegate call to the owner.
Definition: TGLWidget.cxx:654
void SetFormat()
Set pixel format.
Definition: TGLWidget.cxx:542
TGLWidget(const TGLWidget &)
void AddContext(TGLContext *ctx)
Register gl-context created for this window.
Definition: TGLWidget.cxx:249
Bool_t HandleFocusChange(Event_t *)
Delegate call to the owner.
Definition: TGLWidget.cxx:638
const TGLFormat * GetPixelFormat() const
Pixel format.
Definition: TGLWidget.cxx:233
Bool_t HandleMotion(Event_t *ev)
Delegate call to the owner.
Definition: TGLWidget.cxx:670
void ExtractViewport(Int_t *vp) const
For camera.
Definition: TGLWidget.cxx:267
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TGLContext * fGLContext
Definition: TGLWidget.h:32
Bool_t HandleCrossing(Event_t *)
Handle mouse crossing event.
Definition: TGLWidget.cxx:566
void DoRedraw()
Delegate call to the owner.
Definition: TGLWidget.cxx:686
static TGLWidget * Create(const TGWindow *parent, Bool_t selectInput, Bool_t shareDefault, const TGLPaintDevice *shareDevice, UInt_t width, UInt_t height)
Static constructor for creating widget with default pixel format.
Definition: TGLWidget.cxx:83
void RemoveContext(TGLContext *ctx)
Remove context (no real deletion, done by TGLContex dtor).
Definition: TGLWidget.cxx:257
static TGLWidget * CreateDummy()
Static constructor for creating widget with default pixel format.
Definition: TGLWidget.cxx:73
#define ClassDef(name, id)
Definition: Rtypes.h:320
virtual void InitGL()
Call glEnable(... in overrider of InitGL.
Definition: TGLWidget.cxx:187
void SetEventHandler(TGEventHandler *eh)
Set event-handler. All events are passed to this object.
Definition: TGLWidget.cxx:558
std::pair< void *, void * > fInnerData
Definition: TGLWidget.h:34
TGEventHandler * GetEventHandler() const
Definition: TGLWidget.h:75
Bool_t HandleButton(Event_t *ev)
Delegate call to the owner.
Definition: TGLWidget.cxx:587
Encapsulation of format / contents of an OpenGL buffer.
Definition: TGLFormat.h:35
void SwapBuffers()
Swap buffers.
Definition: TGLWidget.cxx:217
Bool_t HandleDoubleClick(Event_t *ev)
Delegate call to the owner.
Definition: TGLWidget.cxx:603
const TGLContext * GetContext() const
Get gl context.
Definition: TGLWidget.cxx:225
TGLFormat fGLFormat
Definition: TGLWidget.h:37
unsigned int UInt_t
Definition: RtypesCore.h:42
GL window with context.
Definition: TGLWidget.h:27
~TGLWidget()
Destructor. Deletes window ???? and XVisualInfo.
Definition: TGLWidget.cxx:162
Bool_t MakeCurrent()
Make the gl-context current.
Definition: TGLWidget.cxx:201
This class encapsulates window-system specific information about a GL-context and alows their proper ...
Definition: TGLContext.h:30
Bool_t ClearCurrent()
Clear the current gl-context.
Definition: TGLWidget.cxx:209
TGEventHandler * fEventHandler
Definition: TGLWidget.h:43
Bool_t fFromInit
Definition: TGLWidget.h:39
static Window_t CreateWindow(const TGWindow *parent, const TGLFormat &format, UInt_t width, UInt_t height, std::pair< void *, void *> &innerData)
CreateWidget - X11 version.
Definition: TGLWidget.cxx:499
Handle_t Window_t
Definition: GuiTypes.h:28
Int_t fWindowIndex
Definition: TGLWidget.h:35
TGLWidget & operator=(const TGLWidget &)
virtual void PaintGL()
Do actual drawing in overrider of PaintGL.
Definition: TGLWidget.cxx:194
std::pair< void *, void * > GetInnerData() const
Dpy*, XVisualInfo *.
Definition: TGLWidget.cxx:241
std::set< TGLContext * > fValidContexts
Definition: TGLWidget.h:41