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
52