cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

testnativecocoa.m (1159B)


      1
      2#include "testnative.h"
      3
      4#ifdef TEST_NATIVE_COCOA
      5
      6#include <Cocoa/Cocoa.h>
      7
      8static void *CreateWindowCocoa(int w, int h);
      9static void DestroyWindowCocoa(void *window);
     10
     11NativeWindowFactory CocoaWindowFactory = {
     12    "cocoa",
     13    CreateWindowCocoa,
     14    DestroyWindowCocoa
     15};
     16
     17static 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
     42static 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