Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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
24class TGLWidget;
25class TGEventHandler;
26
27class TGLWidget : public TGFrame, public TGLPaintDevice
28{
29 friend class TGLContext;
30
31private:
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
45public:
46 static TGLWidget* CreateDummy();
47
48 static TGLWidget* Create(const TGWindow* parent, Bool_t selectInput,
49 Bool_t shareDefault, const TGLPaintDevice *shareDevice,
51
52 static TGLWidget* Create(const TGLFormat &format,
53 const TGWindow* parent, Bool_t selectInput,
54 Bool_t shareDefault, const TGLPaintDevice *shareDevice,
56
57 ~TGLWidget() override;
58
59 virtual void InitGL();
60 virtual void PaintGL();
61
62 Bool_t MakeCurrent() override;
64 void SwapBuffers() override;
65 const TGLContext *GetContext()const override;
66
67 const TGLFormat *GetPixelFormat()const override;
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 override;
74
77
78 Bool_t HandleButton(Event_t *ev) override;
79 Bool_t HandleDoubleClick(Event_t *ev) override;
81 Bool_t HandleKey(Event_t *ev) override;
82 Bool_t HandleMotion(Event_t *ev) override;
84 Bool_t HandleCrossing(Event_t *) override;
85
86 void DoRedraw() override;
87
88private:
89 TGLWidget(const TGLWidget &) = delete;
90 TGLWidget &operator = (const TGLWidget &) = delete;
91
92protected:
93 TGLWidget(Window_t glw, const TGWindow* parent, Bool_t selectInput);
94
95 static Window_t CreateWindow(const TGWindow* parent, const TGLFormat &format,
97 std::pair<void *, void *>& innerData);
98
99 void AddContext(TGLContext *ctx) override;
100 void RemoveContext(TGLContext *ctx) override;
101
102 std::pair<void *, void *> GetInnerData()const;
103
104 ClassDefOverride(TGLWidget, 0); //Window (widget) version of TGLPaintDevice
105};
106
107#endif
Handle_t Window_t
Window handle.
Definition GuiTypes.h:29
bool Bool_t
Definition RtypesCore.h:63
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
Option_t Option_t width
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition TGFrame.h:80
This class encapsulates window-system specific information about a GL-context and alows their proper ...
Definition TGLContext.h:31
Encapsulation of format / contents of an OpenGL buffer.
Definition TGLFormat.h:36
GL window with context.
Definition TGLWidget.h:28
Bool_t fFromInit
Definition TGLWidget.h:39
void AddContext(TGLContext *ctx) override
Register gl-context created for this window.
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
Bool_t HandleConfigureNotify(Event_t *ev) override
Delegate call to the owner.
Bool_t MakeCurrent() override
Make the gl-context current.
Bool_t HandleButton(Event_t *ev) override
Delegate call to the owner.
TGEventHandler * fEventHandler
Definition TGLWidget.h:43
Bool_t HandleDoubleClick(Event_t *ev) override
Delegate call to the owner.
virtual void InitGL()
Call glEnable(... in overrider of InitGL.
std::set< TGLContext * > fValidContexts
Definition TGLWidget.h:41
TGLFormat fGLFormat
Definition TGLWidget.h:37
static TGLWidget * CreateDummy()
Static constructor for creating widget with default pixel format.
Definition TGLWidget.cxx:73
void SwapBuffers() override
Swap buffers.
virtual void PaintGL()
Do actual drawing in overrider of PaintGL.
TGEventHandler * GetEventHandler() const
Definition TGLWidget.h:75
Bool_t HandleFocusChange(Event_t *) override
Delegate call to the owner.
void RemoveContext(TGLContext *ctx) override
Remove context (no real deletion, done by TGLContex dtor).
Bool_t HandleKey(Event_t *ev) override
Delegate call to the owner.
void DoRedraw() override
Delegate call to the owner.
static Window_t CreateWindow(const TGWindow *parent, const TGLFormat &format, UInt_t width, UInt_t height, std::pair< void *, void * > &innerData)
CreateWidget - X11 version.
void SetFormat()
Set pixel format.
std::pair< void *, void * > GetInnerData() const
Dpy*, XVisualInfo *.
std::pair< void *, void * > fInnerData
Definition TGLWidget.h:34
Bool_t HandleMotion(Event_t *ev) override
Delegate call to the owner.
const TGLContext * GetContext() const override
Get gl context.
Bool_t ClearCurrent()
Clear the current gl-context.
Bool_t HandleCrossing(Event_t *) override
Handle mouse crossing event.
void SetEventHandler(TGEventHandler *eh)
Set event-handler. All events are passed to this object.
const TGLFormat * GetPixelFormat() const override
Pixel format.
TGLWidget & operator=(const TGLWidget &)=delete
TGLContext * fGLContext
Definition TGLWidget.h:32
~TGLWidget() override
Destructor. Deletes window ???? and XVisualInfo.
Int_t fWindowIndex
Definition TGLWidget.h:35
void ExtractViewport(Int_t *vp) const override
For camera.
TGLWidget(const TGLWidget &)=delete
ROOT GUI Window base class.
Definition TGWindow.h:23
Event structure.
Definition GuiTypes.h:174