2022-08-14 16:19:40 +00:00
|
|
|
/************************************************************//**
|
|
|
|
*
|
|
|
|
* @file: osx_app.h
|
|
|
|
* @author: Martin Fouilleul
|
|
|
|
* @date: 12/02/2021
|
|
|
|
* @revision:
|
|
|
|
*
|
|
|
|
*****************************************************************/
|
|
|
|
#ifndef __OSX_APP_H_
|
|
|
|
#define __OSX_APP_H_
|
|
|
|
|
|
|
|
#include"mp_app.h"
|
|
|
|
#include"graphics.h"
|
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
#ifdef __OBJC__
|
|
|
|
#import<Cocoa/Cocoa.h>
|
|
|
|
#else
|
|
|
|
#define NSWindow void
|
|
|
|
#define NSView void
|
|
|
|
#define NSObject void
|
|
|
|
#define NSTimer void
|
|
|
|
#define NSCursor void
|
2023-02-21 12:40:30 +00:00
|
|
|
#define CALayer void
|
2023-03-03 10:50:12 +00:00
|
|
|
#define CAContext void
|
2022-12-24 14:33:32 +00:00
|
|
|
#endif
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
#include<Carbon/Carbon.h>
|
|
|
|
|
|
|
|
typedef struct osx_window_data
|
|
|
|
{
|
2022-08-14 16:19:40 +00:00
|
|
|
NSWindow* nsWindow;
|
|
|
|
NSView* nsView;
|
|
|
|
NSObject* nsWindowDelegate;
|
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
} osx_window_data;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
#define MP_PLATFORM_WINDOW_DATA osx_window_data osx;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
const u32 MP_APP_MAX_VIEWS = 128;
|
|
|
|
|
|
|
|
typedef struct osx_app_data
|
2022-08-14 16:19:40 +00:00
|
|
|
{
|
2022-12-24 14:33:32 +00:00
|
|
|
NSTimer* frameTimer;
|
|
|
|
NSCursor* cursor;
|
|
|
|
|
|
|
|
TISInputSourceRef kbLayoutInputSource;
|
|
|
|
void* kbLayoutUnicodeData;
|
|
|
|
id kbLayoutListener;
|
|
|
|
|
|
|
|
} osx_app_data;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
#define MP_PLATFORM_APP_DATA osx_app_data osx;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-03-03 10:50:12 +00:00
|
|
|
//-----------------------------------------------
|
|
|
|
// Surface layer
|
|
|
|
//-----------------------------------------------
|
|
|
|
#ifdef __OBJC__
|
|
|
|
//NOTE: these private interfaces for surface sharing need to be declared explicitly here
|
|
|
|
typedef uint32_t CGSConnectionID;
|
|
|
|
CGSConnectionID CGSMainConnectionID(void);
|
|
|
|
|
|
|
|
typedef uint32_t CAContextID;
|
|
|
|
|
|
|
|
@interface CAContext : NSObject
|
|
|
|
{
|
|
|
|
}
|
|
|
|
+ (id)contextWithCGSConnection:(CAContextID)contextId options:(NSDictionary*)optionsDict;
|
|
|
|
@property(readonly) CAContextID contextId;
|
|
|
|
@property(retain) CALayer *layer;
|
|
|
|
@end
|
|
|
|
|
|
|
|
@interface CALayerHost : CALayer
|
|
|
|
{
|
|
|
|
}
|
|
|
|
@property CAContextID contextId;
|
|
|
|
@end
|
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct mp_layer
|
|
|
|
{
|
|
|
|
CALayer* caLayer;
|
|
|
|
CAContext* caContext;
|
|
|
|
} mp_layer;
|
|
|
|
|
2022-08-14 16:19:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
#endif //__OSX_APP_H_
|