1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
9a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com#ifndef SkOSWindow_MacCocoa_DEFINED
10a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com#define SkOSWindow_MacCocoa_DEFINED
11ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkWindow.h"
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkOSWindow : public SkWindow {
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkOSWindow(void* hwnd);
17a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com    ~SkOSWindow();
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void*   getHWND() const { return fHWND; }
191195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com
20fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com    virtual bool onDispatchClick(int x, int y, Click::State state,
214d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com                                 void* owner, unsigned modi);
22b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com    enum SkBackEndTypes {
23b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com        kNone_BackEndType,
24cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#if SK_SUPPORT_GPU
25b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com        kNativeGL_BackEndType,
26cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif
27b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com    };
28b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com
2964cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com    struct AttachmentInfo {
3064cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com        int fSampleCount;
3164cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com        int fStencilBits;
3264cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com    };
3364cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com
34b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com    void    detach();
3564cc810ad165724f9c666a75bd52e41c67f13564bsalomon@google.com    bool    attach(SkBackEndTypes attachType, int msaaSampleCount, AttachmentInfo*);
36b442a6d5726569364e15c3056bbfb59b9b6e38cerobertphillips@google.com    void    present();
371195925b05ee9d666ea8a8f68fde5d8ca7e49b04bsalomon@google.com
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
396efdc47afc8bb24603fc0d15146ada609b728f2freed@android.com    // overrides from SkEventSink
406efdc47afc8bb24603fc0d15146ada609b728f2freed@android.com    virtual bool onEvent(const SkEvent& evt);
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // overrides from SkWindow
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void onHandleInval(const SkIRect&);
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // overrides from SkView
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void onAddMenu(const SkOSMenu*);
45a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com    virtual void onUpdateMenu(const SkOSMenu*);
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void onSetTitle(const char[]);
47fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void*   fHWND;
50a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com    bool    fInvalEventIsPending;
51a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com    void*   fNotifier;
52cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#if SK_SUPPORT_GPU
53a8540416f65b55aadbe68cdef9fece5a23257d5eyangsu@google.com    void*   fGLContext;
54cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com#endif
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkWindow INHERITED;
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
584ee8aea2a77d2d22d56afe68699179e5a02ac4f4caryclark@google.com#endif
59