slouken@1933
|
1 |
/*
|
slouken@5535
|
2 |
Simple DirectMedia Layer
|
slouken@6885
|
3 |
Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
|
slouken@1933
|
4 |
|
slouken@5535
|
5 |
This software is provided 'as-is', without any express or implied
|
slouken@5535
|
6 |
warranty. In no event will the authors be held liable for any damages
|
slouken@5535
|
7 |
arising from the use of this software.
|
slouken@1933
|
8 |
|
slouken@5535
|
9 |
Permission is granted to anyone to use this software for any purpose,
|
slouken@5535
|
10 |
including commercial applications, and to alter it and redistribute it
|
slouken@5535
|
11 |
freely, subject to the following restrictions:
|
slouken@1933
|
12 |
|
slouken@5535
|
13 |
1. The origin of this software must not be misrepresented; you must not
|
slouken@5535
|
14 |
claim that you wrote the original software. If you use this software
|
slouken@5535
|
15 |
in a product, an acknowledgment in the product documentation would be
|
slouken@5535
|
16 |
appreciated but is not required.
|
slouken@5535
|
17 |
2. Altered source versions must be plainly marked as such, and must not be
|
slouken@5535
|
18 |
misrepresented as being the original software.
|
slouken@5535
|
19 |
3. This notice may not be removed or altered from any source distribution.
|
slouken@1933
|
20 |
*/
|
slouken@1933
|
21 |
#include "SDL_config.h"
|
slouken@1933
|
22 |
|
slouken@1933
|
23 |
#ifndef _SDL_cocoawindow_h
|
slouken@1933
|
24 |
#define _SDL_cocoawindow_h
|
slouken@1933
|
25 |
|
slouken@3400
|
26 |
#import <Cocoa/Cocoa.h>
|
slouken@3400
|
27 |
|
slouken@1933
|
28 |
typedef struct SDL_WindowData SDL_WindowData;
|
slouken@1933
|
29 |
|
slouken@7963
|
30 |
typedef enum
|
slouken@7963
|
31 |
{
|
slouken@7963
|
32 |
PENDING_OPERATION_NONE,
|
slouken@7963
|
33 |
PENDING_OPERATION_ENTER_FULLSCREEN,
|
slouken@7963
|
34 |
PENDING_OPERATION_LEAVE_FULLSCREEN,
|
slouken@7963
|
35 |
PENDING_OPERATION_MINIMIZE
|
slouken@7963
|
36 |
} PendingWindowOperation;
|
slouken@7963
|
37 |
|
slouken@5374
|
38 |
@interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> {
|
slouken@1933
|
39 |
SDL_WindowData *_data;
|
jorgen@7090
|
40 |
BOOL observingVisible;
|
slouken@7740
|
41 |
BOOL wasCtrlLeft;
|
jorgen@7090
|
42 |
BOOL wasVisible;
|
slouken@7952
|
43 |
BOOL isFullscreen;
|
slouken@7952
|
44 |
BOOL inFullscreenTransition;
|
slouken@7963
|
45 |
PendingWindowOperation pendingWindowOperation;
|
slouken@1933
|
46 |
}
|
slouken@1933
|
47 |
|
slouken@1933
|
48 |
-(void) listen:(SDL_WindowData *) data;
|
jorgen@7090
|
49 |
-(void) pauseVisibleObservation;
|
jorgen@7090
|
50 |
-(void) resumeVisibleObservation;
|
slouken@7961
|
51 |
-(BOOL) setFullscreenState:(BOOL) state;
|
slouken@7963
|
52 |
-(BOOL) isInFullscreenTransition;
|
slouken@7963
|
53 |
-(void) addPendingWindowOperation:(PendingWindowOperation) operation;
|
slouken@1933
|
54 |
-(void) close;
|
slouken@1933
|
55 |
|
slouken@1933
|
56 |
/* Window delegate functionality */
|
slouken@1933
|
57 |
-(BOOL) windowShouldClose:(id) sender;
|
slouken@1933
|
58 |
-(void) windowDidExpose:(NSNotification *) aNotification;
|
slouken@1933
|
59 |
-(void) windowDidMove:(NSNotification *) aNotification;
|
slouken@1933
|
60 |
-(void) windowDidResize:(NSNotification *) aNotification;
|
slouken@1933
|
61 |
-(void) windowDidMiniaturize:(NSNotification *) aNotification;
|
slouken@1933
|
62 |
-(void) windowDidDeminiaturize:(NSNotification *) aNotification;
|
slouken@1933
|
63 |
-(void) windowDidBecomeKey:(NSNotification *) aNotification;
|
slouken@1933
|
64 |
-(void) windowDidResignKey:(NSNotification *) aNotification;
|
slouken@7952
|
65 |
-(void) windowWillEnterFullScreen:(NSNotification *) aNotification;
|
slouken@7952
|
66 |
-(void) windowDidEnterFullScreen:(NSNotification *) aNotification;
|
slouken@7952
|
67 |
-(void) windowWillExitFullScreen:(NSNotification *) aNotification;
|
slouken@7952
|
68 |
-(void) windowDidExitFullScreen:(NSNotification *) aNotification;
|
slouken@1933
|
69 |
|
slouken@1933
|
70 |
/* Window event handling */
|
slouken@1933
|
71 |
-(void) mouseDown:(NSEvent *) theEvent;
|
slouken@1933
|
72 |
-(void) rightMouseDown:(NSEvent *) theEvent;
|
slouken@1933
|
73 |
-(void) otherMouseDown:(NSEvent *) theEvent;
|
slouken@1933
|
74 |
-(void) mouseUp:(NSEvent *) theEvent;
|
slouken@1933
|
75 |
-(void) rightMouseUp:(NSEvent *) theEvent;
|
slouken@1933
|
76 |
-(void) otherMouseUp:(NSEvent *) theEvent;
|
slouken@1933
|
77 |
-(void) mouseMoved:(NSEvent *) theEvent;
|
slouken@1957
|
78 |
-(void) mouseDragged:(NSEvent *) theEvent;
|
slouken@1958
|
79 |
-(void) rightMouseDragged:(NSEvent *) theEvent;
|
slouken@1958
|
80 |
-(void) otherMouseDragged:(NSEvent *) theEvent;
|
slouken@1933
|
81 |
-(void) scrollWheel:(NSEvent *) theEvent;
|
slouken@4673
|
82 |
-(void) touchesBeganWithEvent:(NSEvent *) theEvent;
|
slouken@4673
|
83 |
-(void) touchesMovedWithEvent:(NSEvent *) theEvent;
|
slouken@4673
|
84 |
-(void) touchesEndedWithEvent:(NSEvent *) theEvent;
|
slouken@4673
|
85 |
-(void) touchesCancelledWithEvent:(NSEvent *) theEvent;
|
slouken@4673
|
86 |
|
slouken@4673
|
87 |
/* Touch event handling */
|
slouken@4673
|
88 |
typedef enum {
|
slouken@4673
|
89 |
COCOA_TOUCH_DOWN,
|
slouken@4673
|
90 |
COCOA_TOUCH_UP,
|
slouken@4673
|
91 |
COCOA_TOUCH_MOVE,
|
slouken@4673
|
92 |
COCOA_TOUCH_CANCELLED
|
slouken@4673
|
93 |
} cocoaTouchType;
|
slouken@4673
|
94 |
-(void) handleTouches:(cocoaTouchType)type withEvent:(NSEvent*) event;
|
slouken@4673
|
95 |
|
slouken@1936
|
96 |
@end
|
slouken@1936
|
97 |
/* *INDENT-ON* */
|
slouken@1936
|
98 |
|
jorgen@7594
|
99 |
@class SDLOpenGLContext;
|
jorgen@7594
|
100 |
|
slouken@1936
|
101 |
struct SDL_WindowData
|
slouken@1933
|
102 |
{
|
slouken@3685
|
103 |
SDL_Window *window;
|
slouken@3685
|
104 |
NSWindow *nswindow;
|
jorgen@7595
|
105 |
NSMutableArray *nscontexts;
|
slouken@1951
|
106 |
SDL_bool created;
|
slouken@1933
|
107 |
Cocoa_WindowListener *listener;
|
slouken@1933
|
108 |
struct SDL_VideoData *videodata;
|
slouken@1933
|
109 |
};
|
slouken@1933
|
110 |
|
slouken@1933
|
111 |
extern int Cocoa_CreateWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
112 |
extern int Cocoa_CreateWindowFrom(_THIS, SDL_Window * window,
|
slouken@1933
|
113 |
const void *data);
|
slouken@1933
|
114 |
extern void Cocoa_SetWindowTitle(_THIS, SDL_Window * window);
|
slouken@5375
|
115 |
extern void Cocoa_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon);
|
slouken@1933
|
116 |
extern void Cocoa_SetWindowPosition(_THIS, SDL_Window * window);
|
slouken@1933
|
117 |
extern void Cocoa_SetWindowSize(_THIS, SDL_Window * window);
|
stopiccot@6681
|
118 |
extern void Cocoa_SetWindowMinimumSize(_THIS, SDL_Window * window);
|
slouken@6788
|
119 |
extern void Cocoa_SetWindowMaximumSize(_THIS, SDL_Window * window);
|
slouken@1933
|
120 |
extern void Cocoa_ShowWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
121 |
extern void Cocoa_HideWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
122 |
extern void Cocoa_RaiseWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
123 |
extern void Cocoa_MaximizeWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
124 |
extern void Cocoa_MinimizeWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
125 |
extern void Cocoa_RestoreWindow(_THIS, SDL_Window * window);
|
icculus@6422
|
126 |
extern void Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered);
|
slouken@5305
|
127 |
extern void Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
|
slouken@5466
|
128 |
extern int Cocoa_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp);
|
slouken@5466
|
129 |
extern int Cocoa_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp);
|
slouken@6662
|
130 |
extern void Cocoa_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed);
|
slouken@1933
|
131 |
extern void Cocoa_DestroyWindow(_THIS, SDL_Window * window);
|
slouken@1933
|
132 |
extern SDL_bool Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window,
|
slouken@1933
|
133 |
struct SDL_SysWMinfo *info);
|
slouken@1933
|
134 |
|
slouken@1933
|
135 |
#endif /* _SDL_cocoawindow_h */
|
slouken@1933
|
136 |
|
slouken@1933
|
137 |
/* vi: set ts=4 sw=4 expandtab: */
|