1
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#ifndef SkOSWindow_MacCocoa_DEFINED
10#define SkOSWindow_MacCocoa_DEFINED
11
12#include "SkWindow.h"
13
14class SkOSWindow : public SkWindow {
15public:
16    SkOSWindow(void* hwnd);
17    ~SkOSWindow();
18    void*   getHWND() const { return fHWND; }
19
20    virtual bool onDispatchClick(int x, int y, Click::State state,
21                                 void* owner, unsigned modi);
22    enum SkBackEndTypes {
23        kNone_BackEndType,
24#if SK_SUPPORT_GPU
25        kNativeGL_BackEndType,
26#endif
27#if SK_ANGLE
28        kANGLE_BackEndType,
29#endif // SK_ANGLE
30#if SK_COMMAND_BUFFER
31        kCommandBufferES2_BackEndType,
32#endif // SK_COMMAND_BUFFER
33    };
34
35    void    detach();
36    bool    attach(SkBackEndTypes attachType, int msaaSampleCount, AttachmentInfo*);
37    void    present();
38
39    bool    makeFullscreen();
40    void    closeWindow();
41    void    setVsync(bool);
42protected:
43    // overrides from SkEventSink
44    virtual bool onEvent(const SkEvent& evt);
45    // overrides from SkWindow
46    virtual void onHandleInval(const SkIRect&);
47    // overrides from SkView
48    virtual void onAddMenu(const SkOSMenu*);
49    virtual void onUpdateMenu(const SkOSMenu*);
50    virtual void onSetTitle(const char[]);
51
52private:
53    void*   fHWND;
54    bool    fInvalEventIsPending;
55    void*   fNotifier;
56#if SK_SUPPORT_GPU
57    void*   fGLContext;
58#endif
59    typedef SkWindow INHERITED;
60};
61
62#endif
63