2023-08-19 12:49:23 +00:00
|
|
|
/************************************************************/ /**
|
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_
|
|
|
|
|
2023-08-19 12:49:23 +00:00
|
|
|
#include "app.h"
|
|
|
|
#include "graphics/graphics.h"
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2022-12-24 14:33:32 +00:00
|
|
|
#ifdef __OBJC__
|
2023-08-19 12:49:23 +00:00
|
|
|
#import <Cocoa/Cocoa.h>
|
2022-12-24 14:33:32 +00:00
|
|
|
#else
|
2023-08-19 12:49:23 +00:00
|
|
|
#define NSWindow void
|
|
|
|
#define NSView void
|
|
|
|
#define NSObject void
|
|
|
|
#define NSTimer void
|
|
|
|
#define NSCursor void
|
|
|
|
#define CALayer void
|
|
|
|
#define CAContext void
|
2022-12-24 14:33:32 +00:00
|
|
|
#endif
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-08-19 12:49:23 +00:00
|
|
|
#include <Carbon/Carbon.h>
|
2022-12-24 14:33:32 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
typedef struct oc_osx_window_data
|
2022-12-24 14:33:32 +00:00
|
|
|
{
|
2023-08-19 12:49:23 +00:00
|
|
|
NSWindow* nsWindow;
|
|
|
|
NSView* nsView;
|
|
|
|
NSObject* nsWindowDelegate;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-08-28 13:48:24 +00:00
|
|
|
oc_list layers;
|
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
} oc_osx_window_data;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
#define OC_PLATFORM_WINDOW_DATA oc_osx_window_data osx;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
const u32 OC_APP_MAX_VIEWS = 128;
|
2022-12-24 14:33:32 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
typedef struct oc_osx_app_data
|
2022-08-14 16:19:40 +00:00
|
|
|
{
|
2023-08-19 12:49:23 +00:00
|
|
|
NSTimer* frameTimer;
|
|
|
|
NSCursor* cursor;
|
2022-12-24 14:33:32 +00:00
|
|
|
|
2023-08-19 12:49:23 +00:00
|
|
|
TISInputSourceRef kbLayoutInputSource;
|
|
|
|
void* kbLayoutUnicodeData;
|
|
|
|
id kbLayoutListener;
|
2022-12-24 14:33:32 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
} oc_osx_app_data;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
#define OC_PLATFORM_APP_DATA oc_osx_app_data osx;
|
2022-08-14 16:19:40 +00:00
|
|
|
|
2023-03-03 10:50:12 +00:00
|
|
|
//-----------------------------------------------
|
|
|
|
// Surface layer
|
|
|
|
//-----------------------------------------------
|
|
|
|
#ifdef __OBJC__
|
2023-08-19 12:49:23 +00:00
|
|
|
//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
|
2023-03-03 10:50:12 +00:00
|
|
|
#endif
|
|
|
|
|
2023-08-14 08:26:11 +00:00
|
|
|
typedef struct oc_layer
|
2023-03-03 10:50:12 +00:00
|
|
|
{
|
2023-08-28 13:48:24 +00:00
|
|
|
oc_window window;
|
|
|
|
oc_list_elt listElt;
|
|
|
|
|
2023-08-19 12:49:23 +00:00
|
|
|
CALayer* caLayer;
|
|
|
|
CAContext* caContext;
|
2023-08-14 08:26:11 +00:00
|
|
|
} oc_layer;
|
2023-03-03 10:50:12 +00:00
|
|
|
|
2022-08-14 16:19:40 +00:00
|
|
|
#endif //__OSX_APP_H_
|