blob: 6ce898321fd70ecf711518408688d034bf1c4cd4 [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
yangsu@google.coma8540412011-08-30 14:40:49 +00009#ifndef SkOSWindow_MacCocoa_DEFINED
10#define SkOSWindow_MacCocoa_DEFINED
epoger@google.comec3ed6a2011-07-28 14:26:00 +000011
reed@android.com8a1c16f2008-12-17 15:59:43 +000012#include "SkWindow.h"
13
14class SkOSWindow : public SkWindow {
15public:
16 SkOSWindow(void* hwnd);
yangsu@google.coma8540412011-08-30 14:40:49 +000017 ~SkOSWindow();
reed@android.com8a1c16f2008-12-17 15:59:43 +000018 void* getHWND() const { return fHWND; }
bsalomon@google.com11959252012-04-06 20:13:38 +000019
rmistry@google.comfbfcd562012-08-23 18:09:54 +000020 virtual bool onDispatchClick(int x, int y, Click::State state,
reed@google.com4d5c26d2013-01-08 16:17:50 +000021 void* owner, unsigned modi);
robertphillips@google.comb442a6d2012-04-02 19:24:21 +000022 enum SkBackEndTypes {
23 kNone_BackEndType,
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000024#if SK_SUPPORT_GPU
robertphillips@google.comb442a6d2012-04-02 19:24:21 +000025 kNativeGL_BackEndType,
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000026#endif
hendrikw9a740412015-10-28 08:42:29 -070027#if SK_ANGLE
28 kANGLE_BackEndType,
29#endif // SK_ANGLE
hendrikwb1ac52f2015-10-01 18:29:34 -070030#if SK_COMMAND_BUFFER
31 kCommandBuffer_BackEndType,
32#endif // SK_COMMAND_BUFFER
robertphillips@google.comb442a6d2012-04-02 19:24:21 +000033 };
34
35 void detach();
bsalomon@google.com64cc8102013-03-05 20:06:05 +000036 bool attach(SkBackEndTypes attachType, int msaaSampleCount, AttachmentInfo*);
robertphillips@google.comb442a6d2012-04-02 19:24:21 +000037 void present();
bsalomon@google.com11959252012-04-06 20:13:38 +000038
bsalomon241b56d2015-06-18 11:49:42 -070039 bool makeFullscreen();
40 void closeWindow();
41 void setVsync(bool);
reed@android.com8a1c16f2008-12-17 15:59:43 +000042protected:
reed@android.com6efdc472008-12-19 18:24:35 +000043 // overrides from SkEventSink
44 virtual bool onEvent(const SkEvent& evt);
reed@android.com8a1c16f2008-12-17 15:59:43 +000045 // overrides from SkWindow
46 virtual void onHandleInval(const SkIRect&);
47 // overrides from SkView
48 virtual void onAddMenu(const SkOSMenu*);
yangsu@google.coma8540412011-08-30 14:40:49 +000049 virtual void onUpdateMenu(const SkOSMenu*);
reed@android.com8a1c16f2008-12-17 15:59:43 +000050 virtual void onSetTitle(const char[]);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000051
reed@android.com8a1c16f2008-12-17 15:59:43 +000052private:
53 void* fHWND;
yangsu@google.coma8540412011-08-30 14:40:49 +000054 bool fInvalEventIsPending;
55 void* fNotifier;
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000056#if SK_SUPPORT_GPU
yangsu@google.coma8540412011-08-30 14:40:49 +000057 void* fGLContext;
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000058#endif
reed@android.com8a1c16f2008-12-17 15:59:43 +000059 typedef SkWindow INHERITED;
60};
61
caryclark@google.com4ee8aea2011-11-23 14:54:19 +000062#endif