1///////////////////////////////////////////////////////////////////////////////
2// Name:        wx/cocoa/NSView.h
3// Purpose:     wxCocoaNSView class
4// Author:      David Elliott
5// Modified by:
6// Created:     2003/02/15
7// RCS-ID:      $Id: NSView.h 51576 2008-02-06 20:10:07Z DE $
8// Copyright:   (c) 2003 David Elliott
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef __WX_COCOA_NSVIEW_H__
13#define __WX_COCOA_NSVIEW_H__
14
15#include "wx/hashmap.h"
16#include "wx/cocoa/ObjcAssociate.h"
17
18#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
19typedef struct CGRect NSRect;
20#else
21typedef struct _NSRect NSRect;
22#endif
23
24struct objc_object;
25
26class wxWindow;
27
28WX_DECLARE_OBJC_HASHMAP(NSView);
29class wxCocoaNSView
30{
31/* NSView is a rather special case and requires some extra attention */
32    WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSView)
33public:
34    void AssociateNSView(WX_NSView cocoaNSView);
35    void DisassociateNSView(WX_NSView cocoaNSView);
36protected:
37    static struct objc_object *sm_cocoaObserver;
38public:
39    virtual wxWindow* GetWxWindow() const
40    {   return NULL; }
41    virtual void Cocoa_FrameChanged(void) = 0;
42#if wxUSE_ABI_INCOMPATIBLE_FEATURES
43    virtual void Cocoa_synthesizeMouseMoved(void) = 0;
44#endif
45    virtual bool Cocoa_acceptsFirstMouse(bool &acceptsFirstMouse, WX_NSEvent theEvent)
46    {   return false; }
47    virtual bool Cocoa_drawRect(const NSRect &rect)
48    {   return false; }
49    virtual bool Cocoa_mouseDown(WX_NSEvent theEvent)
50    {   return false; }
51    virtual bool Cocoa_mouseDragged(WX_NSEvent theEvent)
52    {   return false; }
53    virtual bool Cocoa_mouseUp(WX_NSEvent theEvent)
54    {   return false; }
55    virtual bool Cocoa_mouseMoved(WX_NSEvent theEvent)
56    {   return false; }
57    virtual bool Cocoa_mouseEntered(WX_NSEvent theEvent)
58    {   return false; }
59    virtual bool Cocoa_mouseExited(WX_NSEvent theEvent)
60    {   return false; }
61    virtual bool Cocoa_rightMouseDown(WX_NSEvent theEvent)
62    {   return false; }
63    virtual bool Cocoa_rightMouseDragged(WX_NSEvent theEvent)
64    {   return false; }
65    virtual bool Cocoa_rightMouseUp(WX_NSEvent theEvent)
66    {   return false; }
67    virtual bool Cocoa_otherMouseDown(WX_NSEvent theEvent)
68    {   return false; }
69    virtual bool Cocoa_otherMouseDragged(WX_NSEvent theEvent)
70    {   return false; }
71    virtual bool Cocoa_otherMouseUp(WX_NSEvent theEvent)
72    {   return false; }
73    virtual bool Cocoa_resetCursorRects()
74    {   return false; }
75#if wxUSE_ABI_INCOMPATIBLE_FEATURES
76    virtual bool Cocoa_viewDidMoveToWindow()
77    {   return false; }
78    virtual bool Cocoa_viewWillMoveToWindow(WX_NSWindow newWindow)
79    {   return false; }
80#endif
81    virtual ~wxCocoaNSView() { }
82};
83
84#endif
85    // __WX_COCOA_NSVIEW_H__
86