test/testnativecocoa.m
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:09 -0800
changeset 11730 ac6c607e065c
parent 3057 089a77aebb7d
permissions -rw-r--r--
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
     1 
     2 #include "testnative.h"
     3 
     4 #ifdef TEST_NATIVE_COCOA
     5 
     6 #include <Cocoa/Cocoa.h>
     7 
     8 static void *CreateWindowCocoa(int w, int h);
     9 static void DestroyWindowCocoa(void *window);
    10 
    11 NativeWindowFactory CocoaWindowFactory = {
    12     "cocoa",
    13     CreateWindowCocoa,
    14     DestroyWindowCocoa
    15 };
    16 
    17 static void *CreateWindowCocoa(int w, int h)
    18 {
    19     NSAutoreleasePool *pool;
    20     NSWindow *nswindow;
    21     NSRect rect;
    22     unsigned int style;
    23 
    24     pool = [[NSAutoreleasePool alloc] init];
    25 
    26     rect.origin.x = 0;
    27     rect.origin.y = 0;
    28     rect.size.width = w;
    29     rect.size.height = h;
    30     rect.origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - rect.origin.y - rect.size.height;
    31 
    32     style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask);
    33 
    34     nswindow = [[NSWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:FALSE];
    35     [nswindow makeKeyAndOrderFront:nil];
    36 
    37     [pool release];
    38 
    39     return nswindow;
    40 }
    41 
    42 static void DestroyWindowCocoa(void *window)
    43 {
    44     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    45     NSWindow *nswindow = (NSWindow *)window;
    46 
    47     [nswindow close];
    48     [pool release];
    49 }
    50 
    51 #endif