#ifndef ROOT_TGOSXGL #define ROOT_TGOSXGL #include #include "TVirtualGL.h" // //TGLManager is a legacy interface (gl-context/window management): //at some point we had to use OpenGL in our TCanvas/TPad classes which do not //have direct access to low-level APIs + on Windows we had quite tricky //mt-problems to deal with. // class TGOSXGLManager : public TGLManager { public: TGOSXGLManager(); ~TGOSXGLManager(); //TGLManager's final-overriders (window + context management): Int_t InitGLWindow(Window_t winID); Int_t CreateGLContext(Int_t winInd); void DeleteGLContext(Int_t devInd); Bool_t MakeCurrent(Int_t devInd); void Flush(Int_t ctxInd); //In case of Cocoa 'VirtulXInd' == devInd (again, legacy). Int_t GetVirtualXInd(Int_t devInd); //These are empty overriders, we do not have/use off-screen renreding in TCanvas/TPad anymore //(before we had 1) non-hardware glpixmaps/DIB sections and later 2) a hack with double buffer). Bool_t AttachOffScreenDevice(Int_t ctxInd, Int_t x, Int_t y, UInt_t w, UInt_t h); Bool_t ResizeOffScreenDevice(Int_t devInd, Int_t x, Int_t y, UInt_t w, UInt_t h); void SelectOffScreenDevice(Int_t devInd); void MarkForDirectCopy(Int_t devInd, Bool_t); void ExtractViewport(Int_t devInd, Int_t *vp); void ReadGLBuffer(Int_t devInd); //Used by our OpenGL viewer. //In the past we had to implement this functions to deal with mt-issues on Windows. Bool_t SelectManip(TVirtualGLManip *manip, const TGLCamera *camera, const TGLRect *rect, const TGLBoundingBox *sceneBox); Bool_t PlotSelected(TVirtualGLPainter *plot, Int_t px, Int_t py); char *GetPlotInfo(TVirtualGLPainter *plot, Int_t px, Int_t py); void PaintSingleObject(TVirtualGLPainter *); void PanObject(TVirtualGLPainter *o, Int_t x, Int_t y); void PrintViewer(TVirtualViewer3D *vv); Bool_t HighColorFormat(Int_t /*ctxInd*/){return kFALSE;} private: typedef std::map CtxToWindowMap_t; CtxToWindowMap_t fCtxToWin; TGOSXGLManager(const TGOSXGLManager &); TGOSXGLManager &operator = (const TGOSXGLManager &); ClassDef(TGOSXGLManager, 0) //Cocoa specific version of TGLManager. }; #endif