aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/views/mac/skia_mac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/mac/skia_mac.mm')
-rw-r--r--src/views/mac/skia_mac.mm116
1 files changed, 108 insertions, 8 deletions
diff --git a/src/views/mac/skia_mac.mm b/src/views/mac/skia_mac.mm
index c20a402c89..ea3b75c87a 100644
--- a/src/views/mac/skia_mac.mm
+++ b/src/views/mac/skia_mac.mm
@@ -6,19 +6,119 @@
* found in the LICENSE file.
*/
+#include <crt_externs.h>
#import <Cocoa/Cocoa.h>
#include "SkApplication.h"
+#include "SkNSView.h"
+
+@interface MainView : SkNSView {
+}
+- (id)initWithFrame: (NSRect)frame ;
+- (void)dealloc;
+- (void)begin;
+@end
+
+@implementation MainView : SkNSView
+
+- (id)initWithFrame: (NSRect)frame {
+ self = [super initWithFrame:frame];
+ return self;
+}
+
+- (void)dealloc {
+ delete fWind;
+ [super dealloc];
+}
+
+- (void)begin {
+ fWind = create_sk_window(self, *_NSGetArgc(), *_NSGetArgv());
+ [self setUpWindow];
+}
+@end
+
+@interface AppDelegate : NSObject<NSApplicationDelegate, NSWindowDelegate> {
+}
+- (id)init;
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication;
+@end
+
+#
+@implementation AppDelegate : NSObject
+- (id)init {
+ self = [super init];
+ return self;
+}
+
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
+ return TRUE;
+}
+@end
int main(int argc, char *argv[]) {
signal(SIGPIPE, SIG_IGN);
- /*NSAutoreleasePool* pool = */ [[NSAutoreleasePool alloc] init];
- application_init();
- int retVal = NSApplicationMain(argc, (const char **)argv);
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-#if 0
- // we don't expect NSApplicationMain to return. See our applicationShouldTerminate handler.
- application_term();
+ NSApplication* app = [NSApplication sharedApplication];
+
+ NSUInteger windowStyle = (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask);
+
+ NSRect windowRect = NSMakeRect(100, 100, 1000, 1000);
+ NSWindow* window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:windowStyle backing:NSBackingStoreBuffered defer:NO];
+
+ NSRect rect = [NSWindow contentRectForFrameRect:windowRect styleMask:windowStyle];
+ MainView* customView = [[MainView alloc] initWithFrame:rect];
+ [customView setTranslatesAutoresizingMaskIntoConstraints:NO];
+ NSView* contentView = window.contentView;
+ [contentView addSubview:customView];
+ NSDictionary *views = NSDictionaryOfVariableBindings(customView);
+
+ [contentView addConstraints:
+ [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[customView]|"
+ options:0
+ metrics:nil
+ views:views]];
+
+ [contentView addConstraints:
+ [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[customView]|"
+ options:0
+ metrics:nil
+ views:views]];
+
+ [customView begin];
+ [customView release];
+
+ [window makeKeyAndOrderFront:NSApp];
+
+ AppDelegate * appDelegate = [[[AppDelegate alloc] init] autorelease];
+
+ app.delegate = appDelegate;
+
+ NSMenu* menu=[[NSMenu alloc] initWithTitle:@"AMainMenu"];
+ NSMenuItem* item;
+ NSMenu* subMenu;
+
+ //Create the application menu.
+ item=[[NSMenuItem alloc] initWithTitle:@"Apple" action:NULL keyEquivalent:@""];
+ [menu addItem:item];
+ subMenu=[[NSMenu alloc] initWithTitle:@"Apple"];
+ [menu setSubmenu:subMenu forItem:item];
+ [item release];
+ item=[[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
+ [subMenu addItem:item];
+ [item release];
+ [subMenu release];
+
+ //Add the menu to the app.
+ [app setMenu:menu];
+
+ [app setActivationPolicy:NSApplicationActivationPolicyRegular];
+
+ [app run];
+
+ [menu release];
+ [appDelegate release];
+ [window release];
[pool release];
-#endif
- return retVal;
+
+ return EXIT_SUCCESS;
}