|  | 
 | /* | 
 |  * Copyright 2006 The Android Open Source Project | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 |  | 
 | #ifndef SkOSWindow_Win_DEFINED | 
 | #define SkOSWindow_Win_DEFINED | 
 |  | 
 | #include "SkWindow.h" | 
 |  | 
 | #if SK_ANGLE | 
 | #include "EGL/egl.h" | 
 | #endif | 
 |  | 
 | class SkOSWindow : public SkWindow { | 
 | public: | 
 |     SkOSWindow(void* hwnd); | 
 |     virtual ~SkOSWindow(); | 
 |  | 
 |     void*   getHWND() const { return fHWND; } | 
 |     void    setSize(int width, int height); | 
 |     void    updateSize(); | 
 |  | 
 |     static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay); | 
 |  | 
 |     enum SkBackEndTypes { | 
 |         kNone_BackEndType, | 
 | #if SK_SUPPORT_GPU | 
 |         kNativeGL_BackEndType, | 
 | #if SK_ANGLE | 
 |         kANGLE_BackEndType, | 
 | #endif // SK_ANGLE | 
 | #endif // SK_SUPPORT_GPU | 
 |     }; | 
 |  | 
 |     struct AttachmentInfo { | 
 |         int fSampleCount; | 
 |         int fStencilBits; | 
 |     }; | 
 |  | 
 |     bool attach(SkBackEndTypes attachType, int msaaSampleCount, AttachmentInfo*); | 
 |     void detach(); | 
 |     void present(); | 
 |  | 
 |     bool wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); | 
 |     static bool QuitOnDeactivate(HWND hWnd); | 
 |  | 
 |     enum { | 
 |         SK_WM_SkEvent = WM_APP + 1000, | 
 |         SK_WM_SkTimerID = 0xFFFF    // just need a non-zero value | 
 |     }; | 
 |  | 
 | protected: | 
 |     virtual bool quitOnDeactivate() { return true; } | 
 |  | 
 |     // overrides from SkWindow | 
 |     virtual void onHandleInval(const SkIRect&); | 
 |     // overrides from SkView | 
 |     virtual void onAddMenu(const SkOSMenu*); | 
 |  | 
 |     virtual void onSetTitle(const char title[]); | 
 |  | 
 | private: | 
 |     void*               fHWND; | 
 |  | 
 |     void                doPaint(void* ctx); | 
 |  | 
 | #if SK_SUPPORT_GPU | 
 |     void*               fHGLRC; | 
 | #if SK_ANGLE | 
 |     EGLDisplay          fDisplay; | 
 |     EGLContext          fContext; | 
 |     EGLSurface          fSurface; | 
 |     EGLConfig           fConfig; | 
 | #endif // SK_ANGLE | 
 | #endif // SK_SUPPORT_GPU | 
 |  | 
 |     HMENU               fMBar; | 
 |  | 
 |     SkBackEndTypes      fAttached; | 
 |  | 
 | #if SK_SUPPORT_GPU | 
 |     bool attachGL(int msaaSampleCount, AttachmentInfo* info); | 
 |     void detachGL(); | 
 |     void presentGL(); | 
 |  | 
 | #if SK_ANGLE | 
 |     bool attachANGLE(int msaaSampleCount, AttachmentInfo* info); | 
 |     void detachANGLE(); | 
 |     void presentANGLE(); | 
 | #endif // SK_ANGLE | 
 | #endif // SK_SUPPORT_GPU | 
 |  | 
 |     typedef SkWindow INHERITED; | 
 | }; | 
 |  | 
 | #endif |