// // main_macos.mm // Kraken Engine // // Copyright 2024 Kearwood Gilbert. All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, are // permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, this list of // conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright notice, this list // of conditions and the following disclaimer in the documentation and/or other materials // provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY KEARWOOD GILBERT ''AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KEARWOOD GILBERT OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // The views and conclusions contained in the software and documentation are those of the // authors and should not be interpreted as representing official policies, either expressed // or implied, of Kearwood Gilbert. // #import "Cocoa/Cocoa.h" #import "QuartzCore/CAMetalLayer.h" #include "kraken.h" #include "harness.h" using namespace kraken; int main(int argc, const char * argv[]) { @autoreleasepool { [NSApplication sharedApplication]; // // Create a window: // // Style flags: NSUInteger windowStyle = NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask; NSRect windowRect = NSMakeRect(0, 0, 640, 480); NSWindow * window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:windowStyle backing:NSBackingStoreBuffered defer:NO]; [window autorelease]; // Window controller: NSWindowController * windowController = [[NSWindowController alloc] initWithWindow:window]; [windowController autorelease]; NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 640, 480)]; view.wantsLayer = YES; view.layer = [CAMetalLayer layer]; view.layer.backgroundColor = [[NSColor purpleColor] CGColor]; if (!test_init(static_cast(view.layer))) { return 1; } [window.contentView addSubview:view]; [window orderFrontRegardless]; [NSApp run]; } return 0; }