blob: bd6b4bd84ff4cd0f3889c1af7453c21216269207 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com8a1c16f2008-12-17 15:59:43 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2006 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com8a1c16f2008-12-17 15:59:43 +000010#ifndef SkOSWindow_Win_DEFINED
11#define SkOSWindow_Win_DEFINED
12
13#include "SkWindow.h"
14
15class SkOSWindow : public SkWindow {
16public:
17 SkOSWindow(void* hwnd);
reed@android.comf2b98d62010-12-20 18:26:13 +000018 virtual ~SkOSWindow();
reed@android.com8a1c16f2008-12-17 15:59:43 +000019
20 void* getHWND() const { return fHWND; }
21 void setSize(int width, int height);
22 void updateSize();
23
24 static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay);
reed@android.comf2b98d62010-12-20 18:26:13 +000025
bsalomon@google.com498a6232011-03-10 18:24:15 +000026 bool attachGL();
reed@android.comf2b98d62010-12-20 18:26:13 +000027 void detachGL();
28 void presentGL();
29
30 bool attachD3D9();
31 void detachD3D9();
32 void presentD3D9();
33
34 void* d3d9Device() { return fD3D9Device; }
reed@android.com8a1c16f2008-12-17 15:59:43 +000035
reed@android.come191b162009-12-18 21:33:39 +000036 bool wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
37 static bool QuitOnDeactivate(HWND hWnd);
reed@android.com8a1c16f2008-12-17 15:59:43 +000038
39 enum {
40 SK_WM_SkEvent = WM_APP + 1000,
41 SK_WM_SkTimerID = 0xFFFF // just need a non-zero value
42 };
43
44protected:
45 virtual bool quitOnDeactivate() { return true; }
46
47 // overrides from SkWindow
48 virtual void onHandleInval(const SkIRect&);
49 // overrides from SkView
50 virtual void onAddMenu(const SkOSMenu*);
51
reed@android.comf2b98d62010-12-20 18:26:13 +000052 virtual void onSetTitle(const char title[]);
53
reed@android.com8a1c16f2008-12-17 15:59:43 +000054private:
reed@android.comf2b98d62010-12-20 18:26:13 +000055 void* fHWND;
56
57 void doPaint(void* ctx);
reed@android.com8a1c16f2008-12-17 15:59:43 +000058
reed@android.comf2b98d62010-12-20 18:26:13 +000059 void* fHGLRC;
reed@android.com8a1c16f2008-12-17 15:59:43 +000060
reed@android.comf2b98d62010-12-20 18:26:13 +000061 bool fGLAttached;
reed@android.com8a1c16f2008-12-17 15:59:43 +000062
reed@android.comf2b98d62010-12-20 18:26:13 +000063 void* fD3D9Device;
64 bool fD3D9Attached;
65
66 HMENU fMBar;
67
68 typedef SkWindow INHERITED;
reed@android.com8a1c16f2008-12-17 15:59:43 +000069};
70
71#endif
72