Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGWin32GL.h
Go to the documentation of this file.
1 // @(#)root/win32gdk:$Id$
2 // Author: Valeriy Onuchin 05/08/04
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, 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_TGWin32GL
13 #define ROOT_TGWin32GL
14 
15 
16 #include "TVirtualGL.h"
17 #include "TVirtualViewer3D.h"
18 
19 
20 class TGWin32GLManager : public TGLManager {
21 private:
22  class TGWin32GLImpl;
23  TGWin32GLImpl *fPimpl;
24 
25 public:
26  TGWin32GLManager();
27  ~TGWin32GLManager();
28 
29  //All public functions are TGLManager's final-overriders
30 
31  //index returned can be used as a result of gVirtualX->InitWindow
32  Int_t InitGLWindow(Window_t winID);
33  //winInd is the index, returned by InitGLWindow
34  Int_t CreateGLContext(Int_t winInd);
35 
36  //[ Off-screen rendering part
37  //create DIB section to read GL buffer into it,
38  //ctxInd is the index, returned by CreateGLContext
39  Bool_t AttachOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h);
40  Bool_t ResizeOffScreenDevice(Int_t devInd, Int_t x, Int_t y, UInt_t w, UInt_t h);
41  //analog of gVirtualX->SelectWindow(fPixmapID) => gVirtualGL->SelectOffScreenDevice(fPixmapID)
42  void SelectOffScreenDevice(Int_t devInd);
43  //Index of DIB, valid for gVirtualX
44  Int_t GetVirtualXInd(Int_t devInd);
45  //copy DIB into window directly/by pad
46  void MarkForDirectCopy(Int_t devInd, Bool_t);
47  //Off-screen device holds sizes for glViewport
48  void ExtractViewport(Int_t devInd, Int_t *vp);
49  //Read GL buffer into DIB
50  void ReadGLBuffer(Int_t devInd);
51  //]
52 
53  //Make the gl context current
54  Bool_t MakeCurrent(Int_t devInd);
55  //Swap buffers or "blits" DIB
56  void Flush(Int_t ctxInd);
57  //Generic function for gl context and off-screen device deletion
58  void DeleteGLContext(Int_t devInd);
59 
60  //functions to switch between threads in win32
61  //used by viewer
62  Bool_t SelectManip(TVirtualGLManip *manip, const TGLCamera *camera, const TGLRect *rect, const TGLBoundingBox *sceneBox);
63 
64  Bool_t PlotSelected(TVirtualGLPainter *plot, Int_t px, Int_t py);
65  char *GetPlotInfo(TVirtualGLPainter *plot, Int_t px, Int_t py);
66 
67  void PaintSingleObject(TVirtualGLPainter *);
68  void PanObject(TVirtualGLPainter *o, Int_t x, Int_t y);
69  void PrintViewer(TVirtualViewer3D *vv);
70 
71  Bool_t HighColorFormat(Int_t ctx);
72 
73 private:
74  struct TGLContext;
75  Bool_t CreateDIB(TGLContext &ctx)const;
76 
77  TGWin32GLManager(const TGWin32GLManager &);
78  TGWin32GLManager &operator = (const TGWin32GLManager &);
79 
80  ClassDef(TGWin32GLManager, 0)
81 };
82 
83 #endif