11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
20b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
40b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
70b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger */
80b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SkOSWindow_MacCocoa_DEFINED
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SkOSWindow_MacCocoa_DEFINED
110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
120b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkWindow.h"
130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass SkOSWindow : public SkWindow {
150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerpublic:
160b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkOSWindow(void* hwnd);
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    ~SkOSWindow();
180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void*   getHWND() const { return fHWND; }
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual bool onDispatchClick(int x, int y, Click::State state,
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                                 void* owner);
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void    detachGL();
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    bool    attachGL();
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void    presentGL();
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprotected:
270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    // overrides from SkEventSink
280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual bool onEvent(const SkEvent& evt);
290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    // overrides from SkWindow
300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onHandleInval(const SkIRect&);
310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    // overrides from SkView
320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onAddMenu(const SkOSMenu*);
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void onUpdateMenu(const SkOSMenu*);
340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onSetTitle(const char[]);
350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprivate:
370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void*   fHWND;
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    bool    fInvalEventIsPending;
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void*   fNotifier;
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void*   fGLContext;
410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    typedef SkWindow INHERITED;
420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger};
430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
440b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#endif
45