12 #ifndef ROOT_TVirtualGL
13 #define ROOT_TVirtualGL
35 class TVirtualViewer3D;
45 class TVirtualGLPainter {
47 virtual ~TVirtualGLPainter(){}
49 virtual void Paint() = 0;
50 virtual void Pan(Int_t px, Int_t py) = 0;
51 virtual Bool_t PlotSelected(Int_t px, Int_t py) = 0;
53 virtual char *GetPlotInfo(Int_t px, Int_t py) = 0;
55 ClassDef(TVirtualGLPainter, 0);
59 class TVirtualGLManip {
61 virtual ~TVirtualGLManip(){}
62 virtual Bool_t Select(
const TGLCamera & camera,
const TGLRect & rect,
const TGLBoundingBox & sceneBox) = 0;
64 ClassDef(TVirtualGLManip, 0);
70 class TGLManager :
public TNamed {
75 virtual Int_t InitGLWindow(Window_t winID) = 0;
77 virtual Int_t CreateGLContext(Int_t winInd) = 0;
82 virtual Bool_t AttachOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h) = 0;
83 virtual Bool_t ResizeOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h) = 0;
85 virtual void SelectOffScreenDevice(Int_t ctxInd) = 0;
87 virtual Int_t GetVirtualXInd(Int_t ctxInd) = 0;
89 virtual void MarkForDirectCopy(Int_t ctxInd, Bool_t) = 0;
91 virtual void ExtractViewport(Int_t ctxInd, Int_t *vp) = 0;
93 virtual void ReadGLBuffer(Int_t ctxInd) = 0;
97 virtual Bool_t MakeCurrent(Int_t ctxInd) = 0;
99 virtual void Flush(Int_t ctxInd) = 0;
101 virtual void DeleteGLContext(Int_t ctxInd) = 0;
104 virtual Bool_t SelectManip(TVirtualGLManip *manip,
const TGLCamera *camera,
const TGLRect *rect,
const TGLBoundingBox *sceneBox) = 0;
106 virtual void PaintSingleObject(TVirtualGLPainter *) = 0;
107 virtual void PanObject(TVirtualGLPainter *o, Int_t x, Int_t y) = 0;
109 virtual void PrintViewer(TVirtualViewer3D *vv) = 0;
111 virtual Bool_t PlotSelected(TVirtualGLPainter *plot, Int_t px, Int_t py) = 0;
112 virtual char *GetPlotInfo(TVirtualGLPainter *plot, Int_t px, Int_t py) = 0;
114 virtual Bool_t HighColorFormat(Int_t ctxInd) = 0;
116 static TGLManager *&Instance();
119 TGLManager(
const TGLManager &);
120 TGLManager &operator = (
const TGLManager &);
122 ClassDef(TGLManager, 0)
144 class TGLPaintDevice {
145 friend class TGLContext;
147 virtual ~TGLPaintDevice(){}
148 virtual Bool_t MakeCurrent() = 0;
149 virtual void SwapBuffers() = 0;
150 virtual const TGLFormat *GetPixelFormat()
const = 0;
151 virtual const TGLContext *GetContext()
const = 0;
152 virtual void ExtractViewport(Int_t *vp)
const = 0;
155 virtual void AddContext(TGLContext *ctx) = 0;
156 virtual void RemoveContext(TGLContext *ctx) = 0;
158 ClassDef(TGLPaintDevice, 0)
162 #define gGLManager (TGLManager::Instance())
163 R__EXTERN TGLManager *(*gPtr2GLManager)();