/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkNativeGLContext_DEFINED #define SkNativeGLContext_DEFINED #include "SkGLContextHelper.h" #if defined(SK_BUILD_FOR_MAC) #include #elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL) #include #include #elif defined(SK_BUILD_FOR_UNIX) #include #include #elif defined(SK_BUILD_FOR_WIN32) #include #include #endif class SkNativeGLContext : public SkGLContextHelper { public: SkNativeGLContext(); virtual ~SkNativeGLContext(); virtual void makeCurrent() const SK_OVERRIDE; virtual void swapBuffers() const SK_OVERRIDE; class AutoContextRestore { public: AutoContextRestore(); ~AutoContextRestore(); private: #if defined(SK_BUILD_FOR_MAC) CGLContextObj fOldCGLContext; #elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL) EGLContext fOldEGLContext; EGLDisplay fOldDisplay; EGLSurface fOldSurface; #elif defined(SK_BUILD_FOR_UNIX) GLXContext fOldGLXContext; Display* fOldDisplay; GLXDrawable fOldDrawable; #elif defined(SK_BUILD_FOR_WIN32) HDC fOldHDC; HGLRC fOldHGLRC; #elif defined(SK_BUILD_FOR_IOS) void* fEAGLContext; #endif }; protected: virtual const GrGLInterface* createGLContext() SK_OVERRIDE; virtual void destroyGLContext() SK_OVERRIDE; private: #if defined(SK_BUILD_FOR_MAC) CGLContextObj fContext; #elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL) EGLContext fContext; EGLDisplay fDisplay; EGLSurface fSurface; #elif defined(SK_BUILD_FOR_UNIX) GLXContext fContext; Display* fDisplay; Pixmap fPixmap; GLXPixmap fGlxPixmap; #elif defined(SK_BUILD_FOR_WIN32) HWND fWindow; HDC fDeviceContext; HGLRC fGlRenderContext; static ATOM gWC; #elif defined(SK_BUILD_FOR_IOS) void* fEAGLContext; #endif }; #endif