cocoa: fill a bunch of no-brainer functions, i haven't actually tested this yet and won't until I get home but I assume the worst case scenario is that I fucked up the syntax
This commit is contained in:
parent
eb50af2b81
commit
ca4adf5f39
3 changed files with 80 additions and 31 deletions
|
|
@ -1,27 +0,0 @@
|
||||||
/*!
|
|
||||||
* @file Mw/LowLevel/AppKit.h
|
|
||||||
* @brief Work in progress AppKit Backend
|
|
||||||
* @warning This is used internally.
|
|
||||||
*/
|
|
||||||
#ifndef __MW_LOWLEVEL_APPKIT_H__
|
|
||||||
#define __MW_LOWLEVEL_APPKIT_H__
|
|
||||||
|
|
||||||
#include <Mw/MachDep.h>
|
|
||||||
#include <Mw/TypeDefs.h>
|
|
||||||
#include <Mw/LowLevel.h>
|
|
||||||
|
|
||||||
MWDECL int MwLLAppKitCallInit(void);
|
|
||||||
|
|
||||||
struct _MwLLAppKit {
|
|
||||||
struct _MwLLCommon common;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MwLLAppKitColor {
|
|
||||||
struct _MwLLCommonColor common;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MwLLAppKitPixmap {
|
|
||||||
struct _MwLLCommonPixmap common;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -23,6 +23,7 @@ struct _MwLLCocoaColor {
|
||||||
|
|
||||||
struct _MwLLCocoaPixmap {
|
struct _MwLLCocoaPixmap {
|
||||||
struct _MwLLCommonPixmap common;
|
struct _MwLLCommonPixmap common;
|
||||||
|
void* real;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,44 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
#include <AppKit/NSEvent.h>
|
#import <AppKit/NSEvent.h>
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
#include <Mw/Milsko.h>
|
#include <Mw/Milsko.h>
|
||||||
|
|
||||||
#include "../../external/stb_ds.h"
|
#include "../../external/stb_ds.h"
|
||||||
|
|
||||||
|
@interface MilskoCocoaPixmap : NSObject {
|
||||||
|
NSImage *image;
|
||||||
|
}
|
||||||
|
+ (MilskoCocoaPixmap*)newWithWidth:(int)width
|
||||||
|
height:(int)height;
|
||||||
|
- (void)updateWithData(void *);
|
||||||
|
- (void)destroy;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MilskoCocoaPixmap
|
||||||
|
|
||||||
|
+ (MilskoCocoaPixmap*)newWithWidth:(int)width
|
||||||
|
height:(int)height {
|
||||||
|
MilskoCocoaPixmap * p = [MilskoCocoaPixmap alloc];
|
||||||
|
NSSize sz;
|
||||||
|
|
||||||
|
sz.width = width;
|
||||||
|
sz.height = height;
|
||||||
|
|
||||||
|
p->image = [NSImage initWithSize:sz];
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
- (void)updateWithData(void *) {
|
||||||
|
}
|
||||||
|
- (void)destroy {
|
||||||
|
[self->image dealloc];
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface MilskoCocoa : NSObject {
|
@interface MilskoCocoa : NSObject {
|
||||||
NSApplication *application;
|
NSApplication *application;
|
||||||
NSWindow *window;
|
NSWindow *window;
|
||||||
|
|
@ -101,10 +132,24 @@
|
||||||
- (void)lineWithPoints:(MwPoint *)points color:(MwLLColor)color {
|
- (void)lineWithPoints:(MwPoint *)points color:(MwLLColor)color {
|
||||||
};
|
};
|
||||||
- (void)getX:(int *)x Y:(int *)y W:(unsigned int *)w H:(unsigned int *)h {
|
- (void)getX:(int *)x Y:(int *)y W:(unsigned int *)w H:(unsigned int *)h {
|
||||||
|
NSRect frame = self->window->frame;
|
||||||
|
|
||||||
|
*x = frame.origin.x;
|
||||||
|
*y = frame.origin.y;
|
||||||
|
*w = frame.size.x;
|
||||||
|
*h = frame.size.y;
|
||||||
};
|
};
|
||||||
- (void)setX:(int)x Y:(int)y {
|
- (void)setX:(int)x Y:(int)y {
|
||||||
|
NSPoint p;
|
||||||
|
p.x = x;
|
||||||
|
p.y = y;
|
||||||
|
[self->window setFrameTopLeftPoint p];
|
||||||
};
|
};
|
||||||
- (void)setW:(int)w H:(int)h {
|
- (void)setW:(int)w H:(int)h {
|
||||||
|
NSSize s;
|
||||||
|
s.w = w;
|
||||||
|
s.h = h;
|
||||||
|
[self->window setFrameSize s];
|
||||||
};
|
};
|
||||||
- (int)pending {
|
- (int)pending {
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -122,6 +167,9 @@
|
||||||
[pool release];
|
[pool release];
|
||||||
};
|
};
|
||||||
- (void)setTitle:(const char *)title {
|
- (void)setTitle:(const char *)title {
|
||||||
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
[self->window setTitleWithRepresentedFilename:[NSString stringWithUTF8String:title]];
|
||||||
|
[pool release];
|
||||||
};
|
};
|
||||||
- (void)drawPixmap:(MwLLPixmap)pixmap rect:(MwRect *)rect {
|
- (void)drawPixmap:(MwLLPixmap)pixmap rect:(MwRect *)rect {
|
||||||
};
|
};
|
||||||
|
|
@ -143,10 +191,21 @@
|
||||||
MaxY:(int)maxy {
|
MaxY:(int)maxy {
|
||||||
};
|
};
|
||||||
- (void)makeBorderless:(int)toggle {
|
- (void)makeBorderless:(int)toggle {
|
||||||
|
NSWindowStyleMask mask = self->window.styleMask;
|
||||||
|
if(mask & NSBorderlessWindowMask) {
|
||||||
|
mask ^= NSBorderlessWindowMask;
|
||||||
|
mask |= NSTitledWindowMask;
|
||||||
|
} else {
|
||||||
|
mask |= NSBorderlessWindowMask;
|
||||||
|
mask ^= NSTitledWindowMask;
|
||||||
|
}
|
||||||
|
[self->window setStyleMask:mask];
|
||||||
};
|
};
|
||||||
- (void)focus {
|
- (void)focus {
|
||||||
|
[self->window makeMainWindow];
|
||||||
};
|
};
|
||||||
- (void)grabPointer:(int)toggle {
|
- (void)grabPointer:(int)toggle {
|
||||||
|
/* MacOS didn't have a "pointer grab" function until 10.13.2 so I need to do this manually */
|
||||||
};
|
};
|
||||||
- (void)setClipboard:(const char *)text {
|
- (void)setClipboard:(const char *)text {
|
||||||
};
|
};
|
||||||
|
|
@ -155,8 +214,16 @@
|
||||||
- (void)makeToolWindow {
|
- (void)makeToolWindow {
|
||||||
};
|
};
|
||||||
- (void)getCursorCoord:(MwPoint *)point {
|
- (void)getCursorCoord:(MwPoint *)point {
|
||||||
|
NSPoint p = self->window->mouseLocation;
|
||||||
|
point->x = p.x;
|
||||||
|
point->y = p.y;
|
||||||
};
|
};
|
||||||
- (void)getScreenSize:(MwRect *)rect {
|
- (void)getScreenSize:(MwRect *)rect {
|
||||||
|
NSScreen * screen = self->window->screen;
|
||||||
|
rect->x = screen->frame.origin.x;
|
||||||
|
rect->y = screen->frame.origin.y;
|
||||||
|
rect->width = screen->frame.size.x;
|
||||||
|
rect->height = screen->frame.size.y;
|
||||||
};
|
};
|
||||||
- (void)destroy {
|
- (void)destroy {
|
||||||
[self->window dealloc];
|
[self->window dealloc];
|
||||||
|
|
@ -185,7 +252,6 @@ static void MwLLDestroyImpl(MwLL handle) {
|
||||||
MilskoCocoa *h = handle->cocoa.real;
|
MilskoCocoa *h = handle->cocoa.real;
|
||||||
|
|
||||||
[h destroy];
|
[h destroy];
|
||||||
[h dealloc];
|
|
||||||
|
|
||||||
MwLLDestroyCommon(handle);
|
MwLLDestroyCommon(handle);
|
||||||
|
|
||||||
|
|
@ -267,13 +333,22 @@ static MwLLPixmap MwLLCreatePixmapImpl(MwLL handle, unsigned char *data,
|
||||||
r->common.width = width;
|
r->common.width = width;
|
||||||
r->common.height = height;
|
r->common.height = height;
|
||||||
|
|
||||||
|
r->cocoa.real = [MilskoCocoaPixmap newWithWidth:width height:height];
|
||||||
|
|
||||||
MwLLPixmapUpdate(r);
|
MwLLPixmapUpdate(r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLPixmapUpdateImpl(MwLLPixmap r) { (void)r; }
|
static void MwLLPixmapUpdateImpl(MwLLPixmap pixmap) {
|
||||||
|
MilskoCocoaPixmap *p = pixmap->cocoa.real;
|
||||||
|
[p updateWithData:pixmap->common.raw];
|
||||||
|
}
|
||||||
|
|
||||||
static void MwLLDestroyPixmapImpl(MwLLPixmap pixmap) { free(pixmap); }
|
static void MwLLDestroyPixmapImpl(MwLLPixmap pixmap) {
|
||||||
|
MilskoCocoaPixmap *p = pixmap->cocoa.real;
|
||||||
|
[p destroy];
|
||||||
|
free(pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
static void MwLLDrawPixmapImpl(MwLL handle, MwRect *rect, MwLLPixmap pixmap) {
|
static void MwLLDrawPixmapImpl(MwLL handle, MwRect *rect, MwLLPixmap pixmap) {
|
||||||
MilskoCocoa *h = handle->cocoa.real;
|
MilskoCocoa *h = handle->cocoa.real;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue