skia2/include/views/SkOSWindow_Win.h
bsalomon 4999616c3a Remove command buffer sample app support.
This hasn't compiled for months. We are deemphasizing SampleApp in favor of viewer. Windowed command buffer is not currently something we currently plan to maintain.

TBR=reed@google.com

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2061233002

Review-Url: https://codereview.chromium.org/2061233002
2016-06-14 09:43:52 -07:00

136 lines
3.2 KiB
C++

/*
* 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 "../private/SkTHash.h"
#include "SkWindow.h"
#include <functional>
#if SK_ANGLE
#include "EGL/egl.h"
#endif
class SkOSWindow : public SkWindow {
public:
struct WindowInit {
const TCHAR* fClass;
HINSTANCE fInstance;
};
SkOSWindow(const void* winInit);
virtual ~SkOSWindow();
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
};
bool attach(SkBackEndTypes attachType, int msaaSampleCount, bool deepColor, AttachmentInfo*);
void release();
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
};
bool makeFullscreen();
void setVsync(bool);
void closeWindow();
static SkOSWindow* GetOSWindowForHWND(void* hwnd) {
SkOSWindow** win = gHwndToOSWindowMap.find(hwnd);
if (!win) {
return NULL;
}
return *win;
}
// Iterates f over all the SkOSWindows and their corresponding HWNDs.
// The void* argument to f is a HWND.
static void ForAllWindows(const std::function<void(void*, SkOSWindow**)>& f) {
gHwndToOSWindowMap.foreach(f);
}
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:
static SkTHashMap<void*, SkOSWindow*> gHwndToOSWindowMap;
WindowInit fWinInit;
void* fHWND;
void doPaint(void* ctx);
#if SK_SUPPORT_GPU
void* fHGLRC;
#if SK_ANGLE
EGLDisplay fDisplay;
EGLContext fContext;
EGLSurface fSurface;
EGLConfig fConfig;
SkAutoTUnref<const GrGLInterface> fANGLEInterface;
#endif // SK_ANGLE
#endif // SK_SUPPORT_GPU
bool fFullscreen;
struct SavedWindowState {
bool fZoomed;
LONG fStyle;
LONG fExStyle;
RECT fRect;
LONG fScreenWidth;
LONG fScreenHeight;
LONG fScreenBits;
void* fHWND;
} fSavedWindowState;
HMENU fMBar;
SkBackEndTypes fAttached;
void updateSize();
#if SK_SUPPORT_GPU
bool attachGL(int msaaSampleCount, bool deepColor, 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