00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TVirtualGL
00013 #define ROOT_TVirtualGL
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef ROOT_TNamed
00032 #include "TNamed.h"
00033 #endif
00034 #ifndef ROOT_GuiTypes
00035 #include "GuiTypes.h"
00036 #endif
00037 #ifndef ROOT_GLConstants
00038 #include "GLConstants.h"
00039 #endif
00040
00041 class TVirtualViewer3D;
00042 class TPoints3DABC;
00043 class TGLViewer;
00044 class TGLCamera;
00045 class TGLManip;
00046 class TGLBoundingBox;
00047 class TGLRect;
00048
00049
00050
00051 class TVirtualGLPainter {
00052 public:
00053 virtual ~TVirtualGLPainter(){}
00054
00055 virtual void Paint() = 0;
00056 virtual void Pan(Int_t px, Int_t py) = 0;
00057 virtual Bool_t PlotSelected(Int_t px, Int_t py) = 0;
00058
00059 virtual char *GetPlotInfo(Int_t px, Int_t py) = 0;
00060
00061 ClassDef(TVirtualGLPainter, 0);
00062 };
00063
00064
00065 class TVirtualGLManip {
00066 public:
00067 virtual ~TVirtualGLManip(){}
00068 virtual Bool_t Select(const TGLCamera & camera, const TGLRect & rect, const TGLBoundingBox & sceneBox) = 0;
00069
00070 ClassDef(TVirtualGLManip, 0);
00071 };
00072
00073
00074
00075
00076 class TGLManager : public TNamed {
00077 public:
00078 TGLManager();
00079
00080
00081 virtual Int_t InitGLWindow(Window_t winID) = 0;
00082
00083 virtual Int_t CreateGLContext(Int_t winInd) = 0;
00084
00085
00086
00087
00088 virtual Bool_t AttachOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h) = 0;
00089 virtual Bool_t ResizeOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h) = 0;
00090
00091 virtual void SelectOffScreenDevice(Int_t ctxInd) = 0;
00092
00093 virtual Int_t GetVirtualXInd(Int_t ctxInd) = 0;
00094
00095 virtual void MarkForDirectCopy(Int_t ctxInd, Bool_t) = 0;
00096
00097 virtual void ExtractViewport(Int_t ctxInd, Int_t *vp) = 0;
00098
00099 virtual void ReadGLBuffer(Int_t ctxInd) = 0;
00100
00101
00102
00103 virtual Bool_t MakeCurrent(Int_t ctxInd) = 0;
00104
00105 virtual void Flush(Int_t ctxInd) = 0;
00106
00107 virtual void DeleteGLContext(Int_t ctxInd) = 0;
00108
00109
00110 virtual Bool_t SelectManip(TVirtualGLManip *manip, const TGLCamera *camera, const TGLRect *rect, const TGLBoundingBox *sceneBox) = 0;
00111
00112 virtual void PaintSingleObject(TVirtualGLPainter *) = 0;
00113 virtual void PanObject(TVirtualGLPainter *o, Int_t x, Int_t y) = 0;
00114
00115 virtual void PrintViewer(TVirtualViewer3D *vv) = 0;
00116
00117 virtual Bool_t PlotSelected(TVirtualGLPainter *plot, Int_t px, Int_t py) = 0;
00118 virtual char *GetPlotInfo(TVirtualGLPainter *plot, Int_t px, Int_t py) = 0;
00119
00120 virtual Bool_t HighColorFormat(Int_t ctxInd) = 0;
00121
00122 static TGLManager *&Instance();
00123
00124 private:
00125 TGLManager(const TGLManager &);
00126 TGLManager &operator = (const TGLManager &);
00127
00128 ClassDef(TGLManager, 0)
00129 };
00130
00131 class TGLContext;
00132 class TGLFormat;
00133
00134 class TGLPaintDevice {
00135 friend class TGLContext;
00136 public:
00137 virtual ~TGLPaintDevice(){}
00138 virtual Bool_t MakeCurrent() = 0;
00139 virtual void SwapBuffers() = 0;
00140 virtual const TGLFormat *GetPixelFormat()const = 0;
00141 virtual const TGLContext *GetContext()const = 0;
00142 virtual void ExtractViewport(Int_t *vp)const = 0;
00143
00144 private:
00145 virtual void AddContext(TGLContext *ctx) = 0;
00146 virtual void RemoveContext(TGLContext *ctx) = 0;
00147
00148 ClassDef(TGLPaintDevice, 0)
00149 };
00150
00151 #ifndef __CINT__
00152 #define gGLManager (TGLManager::Instance())
00153 R__EXTERN TGLManager *(*gPtr2GLManager)();
00154 #endif
00155
00156 #endif