Atlas - SDL_cocoawindow.h
Home / ext / SDL2 / src / video / cocoa Lines: 1 | Size: 6286 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 Simple DirectMedia Layer 3 Copyright (C) 1997-2018 Sam Lantinga <[email protected]> 4 5 This software is provided 'as-is', without any express or implied 6 warranty. In no event will the authors be held liable for any damages 7 arising from the use of this software. 8 9 Permission is granted to anyone to use this software for any purpose, 10 including commercial applications, and to alter it and redistribute it 11 freely, subject to the following restrictions: 12 13 1. The origin of this software must not be misrepresented; you must not 14 claim that you wrote the original software. If you use this software 15 in a product, an acknowledgment in the product documentation would be 16 appreciated but is not required. 17 2. Altered source versions must be plainly marked as such, and must not be 18 misrepresented as being the original software. 19 3. This notice may not be removed or altered from any source distribution. 20*/ 21#include "../../SDL_internal.h" 22 23#ifndef SDL_cocoawindow_h_ 24#define SDL_cocoawindow_h_ 25 26#import <Cocoa/Cocoa.h> 27 28#if SDL_VIDEO_OPENGL_EGL 29#include "../SDL_egl_c.h" 30#endif 31 32typedef struct SDL_WindowData SDL_WindowData; 33 34typedef enum 35{ 36 PENDING_OPERATION_NONE, 37 PENDING_OPERATION_ENTER_FULLSCREEN, 38 PENDING_OPERATION_LEAVE_FULLSCREEN, 39 PENDING_OPERATION_MINIMIZE 40} PendingWindowOperation; 41 42@interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> { 43 SDL_WindowData *_data; 44 BOOL observingVisible; 45 BOOL wasCtrlLeft; 46 BOOL wasVisible; 47 BOOL isFullscreenSpace; 48 BOOL inFullscreenTransition; 49 PendingWindowOperation pendingWindowOperation; 50 BOOL isMoving; 51 int pendingWindowWarpX, pendingWindowWarpY; 52 BOOL isDragAreaRunning; 53} 54 55-(void) listen:(SDL_WindowData *) data; 56-(void) pauseVisibleObservation; 57-(void) resumeVisibleObservation; 58-(BOOL) setFullscreenSpace:(BOOL) state; 59-(BOOL) isInFullscreenSpace; 60-(BOOL) isInFullscreenSpaceTransition; 61-(void) addPendingWindowOperation:(PendingWindowOperation) operation; 62-(void) close; 63 64-(BOOL) isMoving; 65-(void) setPendingMoveX:(int)x Y:(int)y; 66-(void) windowDidFinishMoving; 67 68/* Window delegate functionality */ 69-(BOOL) windowShouldClose:(id) sender; 70-(void) windowDidExpose:(NSNotification *) aNotification; 71-(void) windowDidMove:(NSNotification *) aNotification; 72-(void) windowDidResize:(NSNotification *) aNotification; 73-(void) windowDidMiniaturize:(NSNotification *) aNotification; 74-(void) windowDidDeminiaturize:(NSNotification *) aNotification; 75-(void) windowDidBecomeKey:(NSNotification *) aNotification; 76-(void) windowDidResignKey:(NSNotification *) aNotification; 77-(void) windowDidChangeBackingProperties:(NSNotification *) aNotification; 78-(void) windowWillEnterFullScreen:(NSNotification *) aNotification; 79-(void) windowDidEnterFullScreen:(NSNotification *) aNotification; 80-(void) windowWillExitFullScreen:(NSNotification *) aNotification; 81-(void) windowDidExitFullScreen:(NSNotification *) aNotification; 82-(NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions; 83 84/* See if event is in a drag area, toggle on window dragging. */ 85-(BOOL) processHitTest:(NSEvent *)theEvent; 86 87/* Window event handling */ 88-(void) mouseDown:(NSEvent *) theEvent; 89-(void) rightMouseDown:(NSEvent *) theEvent; 90-(void) otherMouseDown:(NSEvent *) theEvent; 91-(void) mouseUp:(NSEvent *) theEvent; 92-(void) rightMouseUp:(NSEvent *) theEvent; 93-(void) otherMouseUp:(NSEvent *) theEvent; 94-(void) mouseMoved:(NSEvent *) theEvent; 95-(void) mouseDragged:(NSEvent *) theEvent; 96-(void) rightMouseDragged:(NSEvent *) theEvent; 97-(void) otherMouseDragged:(NSEvent *) theEvent; 98-(void) scrollWheel:(NSEvent *) theEvent; 99-(void) touchesBeganWithEvent:(NSEvent *) theEvent; 100-(void) touchesMovedWithEvent:(NSEvent *) theEvent; 101-(void) touchesEndedWithEvent:(NSEvent *) theEvent; 102-(void) touchesCancelledWithEvent:(NSEvent *) theEvent; 103 104/* Touch event handling */ 105-(void) handleTouches:(NSTouchPhase) phase withEvent:(NSEvent*) theEvent; 106 107@end 108/* *INDENT-ON* */ 109 110@class SDLOpenGLContext; 111 112struct SDL_WindowData 113{ 114 SDL_Window *window; 115 NSWindow *nswindow; 116 NSMutableArray *nscontexts; 117 SDL_bool created; 118 SDL_bool inWindowMove; 119 Cocoa_WindowListener *listener; 120 struct SDL_VideoData *videodata; 121#if SDL_VIDEO_OPENGL_EGL 122 EGLSurface egl_surface; 123#endif 124}; 125 126extern int Cocoa_CreateWindow(_THIS, SDL_Window * window); 127extern int Cocoa_CreateWindowFrom(_THIS, SDL_Window * window, 128 const void *data); 129extern void Cocoa_SetWindowTitle(_THIS, SDL_Window * window); 130extern void Cocoa_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon); 131extern void Cocoa_SetWindowPosition(_THIS, SDL_Window * window); 132extern void Cocoa_SetWindowSize(_THIS, SDL_Window * window); 133extern void Cocoa_SetWindowMinimumSize(_THIS, SDL_Window * window); 134extern void Cocoa_SetWindowMaximumSize(_THIS, SDL_Window * window); 135extern int Cocoa_SetWindowOpacity(_THIS, SDL_Window * window, float opacity); 136extern void Cocoa_ShowWindow(_THIS, SDL_Window * window); 137extern void Cocoa_HideWindow(_THIS, SDL_Window * window); 138extern void Cocoa_RaiseWindow(_THIS, SDL_Window * window); 139extern void Cocoa_MaximizeWindow(_THIS, SDL_Window * window); 140extern void Cocoa_MinimizeWindow(_THIS, SDL_Window * window); 141extern void Cocoa_RestoreWindow(_THIS, SDL_Window * window); 142extern void Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered); 143extern void Cocoa_SetWindowResizable(_THIS, SDL_Window * window, SDL_bool resizable); 144extern void Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen); 145extern int Cocoa_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp); 146extern int Cocoa_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp); 147extern void Cocoa_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed); 148extern void Cocoa_DestroyWindow(_THIS, SDL_Window * window); 149extern SDL_bool Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info); 150extern int Cocoa_SetWindowHitTest(SDL_Window *window, SDL_bool enabled); 151extern void Cocoa_AcceptDragAndDrop(SDL_Window * window, SDL_bool accept); 152 153#endif /* SDL_cocoawindow_h_ */ 154 155/* vi: set ts=4 sw=4 expandtab: */ 156[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.