Setup window and basic opengl view.

master
Yuval Dolev 2019-12-30 03:21:21 +02:00
parent 50b8a64614
commit 1d6be32462
2 changed files with 50 additions and 24 deletions

View File

@ -84,10 +84,11 @@
//////////////////////////////// ////////////////////////////////
@interface App_Delegate : NSObject<NSApplicationDelegate, NSWindowDelegate> @interface AppDelegate : NSObject<NSApplicationDelegate, NSWindowDelegate>
@end @end
@interface Opengl_View : NSOpenGLView @interface OpenGLView : NSOpenGLView
- (void)requestDisplay;
@end @end
//////////////////////////////// ////////////////////////////////
@ -122,7 +123,7 @@ struct Mac_Vars {
String_Const_u8 binary_path; String_Const_u8 binary_path;
NSWindow* window; NSWindow* window;
Opengl_View* view; OpenGLView* view;
mach_timebase_info_data_t timebase_info; mach_timebase_info_data_t timebase_info;
@ -201,7 +202,7 @@ mac_free_object(Mac_Object *object){
//////////////////////////////// ////////////////////////////////
@implementation App_Delegate @implementation AppDelegate
- (void)applicationDidFinishLaunching:(id)sender{ - (void)applicationDidFinishLaunching:(id)sender{
} }
@ -222,18 +223,18 @@ mac_free_object(Mac_Object *object){
} }
@end @end
@implementation Opengl_View @implementation OpenGLView
- (id)init { - (id)init {
self = [super init]; self = [super init];
return self; return self;
} }
- (void)prepareOpenGL { - (void)prepareOpenGL{
[super prepareOpenGL]; [super prepareOpenGL];
[[self openGLContext] makeCurrentContext]; [[self openGLContext] makeCurrentContext];
} }
- (void)reshape { - (void)reshape{
[super reshape]; [super reshape];
NSRect bounds = [self bounds]; NSRect bounds = [self bounds];
@ -242,35 +243,63 @@ mac_free_object(Mac_Object *object){
// glViewport(0, 0, (GLsizei)bounds.size.width, // glViewport(0, 0, (GLsizei)bounds.size.width,
// (GLsizei)bounds.size.height); // (GLsizei)bounds.size.height);
} }
- (void)requestDisplay{
printf("Display Requested\n");
}
@end @end
//////////////////////////////// ////////////////////////////////
int int
main(int arg_count, char **args){ main(int arg_count, char **args){
block_zero_struct(&mac_vars);
@autoreleasepool{ @autoreleasepool{
// NOTE(yuval): Create NSApplication & Delegate // NOTE(yuval): Create NSApplication & Delegate
NSApplication *app = [NSApplication sharedApplication]; NSApplication *app = [NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
App_Delegate *app_delegate = [[App_Delegate alloc] init]; AppDelegate *app_delegate = [[AppDelegate alloc] init];
[app setDelegate:app_delegate]; [app setDelegate:app_delegate];
[NSApp finishLaunching]; // NOTE(yuval): Create NSWindow
float w = 1280.0f;
float h = 720.0f;
NSRect screen_rect = [[NSScreen mainScreen] frame];
NSRect initial_frame = NSMakeRect((screen_rect.size.width - w) * 0.5f, (screen_rect.size.height - h) * 0.5f, w, h);
NSWindow* window = [[NSWindow alloc] initWithContentRect: initial_frame
styleMask: NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable
backing: NSBackingStoreBuffered
defer: NO];
[window setBackgroundColor: NSColor.blackColor];
[window setDelegate: app_delegate];
[window setTitle: @"4coder"];
[window makeKeyAndOrderFront: nil];
// NOTE(yuval): Create OpenGLView
NSView* content_view = [window contentView];
// TODO(yuval): Finish view setup!
mac_vars.view = [[OpenGLView alloc] init];
[mac_vars.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[mac_vars.view setFrame:[content_view bounds]];
[content_view addSubview:mac_vars.view];
dll_init_sentinel(&mac_vars.free_mac_objects);
dll_init_sentinel(&mac_vars.timer_objects);
Arena test_arena = make_arena_malloc(); Arena test_arena = make_arena_malloc();
File_List list = system_get_file_list(&test_arena, Plat_Handle timer = system_wake_up_timer_create();
string_u8_litexpr("/Users/yuvaldolev/Desktop")); system_wake_up_timer_set(timer, 5000);
// NOTE(yuval): Start the app's run loop
[NSApp run];
for (u32 index = 0; index < list.count; ++index) {
File_Info* info = list.infos[index];
printf("File_Info{file_name:'%.*s', "
"attributes:{size:%llu, last_write_time:%llu, flags:{IsDirectory:%d}}}\n",
(i32)info->file_name.size, info->file_name.str,
info->attributes.size, info->attributes.last_write_time,
((info->attributes.flags & FileAttribute_IsDirectory) != 0));
}
#if 0 #if 0
// NOTE(yuval): Context Setup // NOTE(yuval): Context Setup
@ -279,7 +308,6 @@ main(int arg_count, char **args){
get_base_allocator_system(), get_base_allocator_system(),
get_base_allocator_system()); get_base_allocator_system());
block_zero_struct(&mac_vars);
mac_vars.tctx = &_tctx; mac_vars.tctx = &_tctx;
API_VTable_system system_vtable = {}; API_VTable_system system_vtable = {};

View File

@ -563,9 +563,7 @@ system_condition_variable_free_sig(){
function function
system_memory_allocate_sig(){ system_memory_allocate_sig(){
void* result = 0; void* result = malloc(size);
NotImplemented;
return(result); return(result);
} }