Mercurial > sdl-ios-xcode
annotate src/video/cocoa/SDL_cocoawindow.h @ 5254:7a963be087ef
Mostly fixed fullscreen mode on Mac OS X, and you can toggle it on and off.
There are still some problems with the ConvertNSRect() calculations when switching video modes, which causes wierd window positioning issues, and the fullscreen window is still minimized on exit.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 11 Feb 2011 00:25:44 -0800 |
parents | 58265e606e4e |
children | b530ef003506 |
rev | line source |
---|---|
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
3697 | 3 Copyright (C) 1997-2010 Sam Lantinga |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 #ifndef _SDL_cocoawindow_h |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 #define _SDL_cocoawindow_h |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 |
3400
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
27 #import <Cocoa/Cocoa.h> |
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
28 |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 typedef struct SDL_WindowData SDL_WindowData; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
31 /* *INDENT-OFF* */ |
4925
514f811a4887
Removed support for 10.3.9
Sam Lantinga <slouken@libsdl.org>
parents:
4673
diff
changeset
|
32 #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 |
3400
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
33 @interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> { |
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
34 #else |
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
35 @interface Cocoa_WindowListener : NSResponder { |
4ec48602f1db
iPhone interruption patch / SDL 1.3
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
36 #endif |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 SDL_WindowData *_data; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 } |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 -(void) listen:(SDL_WindowData *) data; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 -(void) close; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 /* Window delegate functionality */ |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 -(BOOL) windowShouldClose:(id) sender; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 -(void) windowDidExpose:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 -(void) windowDidMove:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 -(void) windowDidResize:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 -(void) windowDidMiniaturize:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 -(void) windowDidDeminiaturize:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 -(void) windowDidBecomeKey:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 -(void) windowDidResignKey:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 -(void) windowDidHide:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 -(void) windowDidUnhide:(NSNotification *) aNotification; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 /* Window event handling */ |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 -(void) mouseDown:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 -(void) rightMouseDown:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 -(void) otherMouseDown:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 -(void) mouseUp:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 -(void) rightMouseUp:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 -(void) otherMouseUp:(NSEvent *) theEvent; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 -(void) mouseMoved:(NSEvent *) theEvent; |
1957
c7803e4c21d3
Implemented Cocoa mouse wheel events
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
63 -(void) mouseDragged:(NSEvent *) theEvent; |
1958
5fc6fb0fb605
Added right/other drag code for Cocoa windows
Sam Lantinga <slouken@libsdl.org>
parents:
1957
diff
changeset
|
64 -(void) rightMouseDragged:(NSEvent *) theEvent; |
5fc6fb0fb605
Added right/other drag code for Cocoa windows
Sam Lantinga <slouken@libsdl.org>
parents:
1957
diff
changeset
|
65 -(void) otherMouseDragged:(NSEvent *) theEvent; |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 -(void) scrollWheel:(NSEvent *) theEvent; |
4673
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
67 -(void) touchesBeganWithEvent:(NSEvent *) theEvent; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
68 -(void) touchesMovedWithEvent:(NSEvent *) theEvent; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
69 -(void) touchesEndedWithEvent:(NSEvent *) theEvent; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
70 -(void) touchesCancelledWithEvent:(NSEvent *) theEvent; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
71 |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
72 /* Touch event handling */ |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
73 typedef enum { |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
74 COCOA_TOUCH_DOWN, |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
75 COCOA_TOUCH_UP, |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
76 COCOA_TOUCH_MOVE, |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
77 COCOA_TOUCH_CANCELLED |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
78 } cocoaTouchType; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
79 -(void) handleTouches:(cocoaTouchType)type withEvent:(NSEvent*) event; |
c17ac64abb70
Fixed the code so we receive Cocoa touch events
Sam Lantinga <slouken@libsdl.org>
parents:
3697
diff
changeset
|
80 |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
81 @end |
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
82 /* *INDENT-ON* */ |
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
83 |
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
84 struct SDL_WindowData |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 { |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3506
diff
changeset
|
86 SDL_Window *window; |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3506
diff
changeset
|
87 NSWindow *nswindow; |
1951
7177581dc9fa
Initial work on X11 window code in.
Sam Lantinga <slouken@libsdl.org>
parents:
1936
diff
changeset
|
88 SDL_bool created; |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 Cocoa_WindowListener *listener; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 struct SDL_VideoData *videodata; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 }; |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 extern int Cocoa_CreateWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 extern int Cocoa_CreateWindowFrom(_THIS, SDL_Window * window, |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 const void *data); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 extern void Cocoa_SetWindowTitle(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 extern void Cocoa_SetWindowPosition(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 extern void Cocoa_SetWindowSize(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 extern void Cocoa_ShowWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 extern void Cocoa_HideWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 extern void Cocoa_RaiseWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 extern void Cocoa_MaximizeWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 extern void Cocoa_MinimizeWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 extern void Cocoa_RestoreWindow(_THIS, SDL_Window * window); |
5254
7a963be087ef
Mostly fixed fullscreen mode on Mac OS X, and you can toggle it on and off.
Sam Lantinga <slouken@libsdl.org>
parents:
5251
diff
changeset
|
105 extern void Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window); |
1933
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 extern void Cocoa_SetWindowGrab(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 extern void Cocoa_DestroyWindow(_THIS, SDL_Window * window); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 extern SDL_bool Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window, |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 struct SDL_SysWMinfo *info); |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 #endif /* _SDL_cocoawindow_h */ |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 |
7ee5297340f7
Implemented Cocoa window support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
113 /* vi: set ts=4 sw=4 expandtab: */ |