orca/src/app/app_internal.h

92 lines
1.7 KiB
C
Raw Normal View History

2023-03-05 15:05:43 +00:00
/************************************************************//**
*
* @file: app_internal.h
2023-03-05 15:05:43 +00:00
* @author: Martin Fouilleul
* @date: 23/12/2022
* @revision:
*
*****************************************************************/
#ifndef __APP_INTERNAL_H_
#define __APP_INTERNAL_H_
2023-03-05 15:05:43 +00:00
#include"app.h"
2023-03-05 15:05:43 +00:00
This commit restructures the codebase to melt the milepost platform layer into the main orca codebase. Here's a list of commits squashed in this update: - move angle files to ext/ and pull includes/libs from there when needed - remove milepost/ext/angle_headers - Collapsed milepost/ext into ext - Collapse milepost/scripts into scripts/ - collapse milepost/resources into resources/. WARN: this temporarily breaks milepost's native examples - collapse milepost/test into test/ - renamed test/ to tests/ - build milepost directly into build/bin - remove unused GLES and KHR folders from sdk/ - reorganizing milepost directory tree into app, graphics, platfrom, ui, util - collapse milepost/src to src/ - Move all native examples to sketches/ and remove milepost repo - Moving sketches resources into their own shared folder separate from the runtime's resource folder - Moving all binding code to src/wasmbind - Moving all binding code to src/wasmbind - pong: fix typo in error log - fixing log parameter order - add error logs to mg_image_create_* - Fix build scripts on windows - fixed include mistake after rebase - collapsing milepost.{h|c|m} to orca.{h|c|m} and moving from sdk/ to src/ - rename orca_app.h/main.c to runtime.h/c - collapsed sdk/ to src/ - put old sdk files into their respective dirs - renamed canvas_api.json to surface_api.json - moved all stb headers in ext/stb/ - remove unused OpenSansLatinSubset.ttf font - moving cstdlib to src/wasmlibc and removing some duplicates with src/platform - move libc stdarg and string functions from platform/ to wasmlibc/ - rename wasmlibc to libc-shim to reflect non-completeness - Expose abort/assert variadic functions and macros to orca apps, and forward libc-shim abort/assert to these - move Orca API runtime implementations to runtime_xxx - fix missing math constants when including math.h with msvc in graphics_common.c - Change name of runtime to orca_runtime. When bundling on Windows, change name of runtime executable to the name of the app.
2023-08-09 11:06:32 +00:00
#include"platform/platform.h"
#include"util/ringbuffer.h"
2023-03-05 15:05:43 +00:00
#if OC_PLATFORM_WINDOWS
2023-03-05 15:05:43 +00:00
#include"win32_app.h"
#elif OC_PLATFORM_MACOS
2023-03-05 15:05:43 +00:00
#include"osx_app.h"
#else
#error "platform not supported yet"
#endif
//---------------------------------------------------------------
// Window structure
//---------------------------------------------------------------
typedef struct oc_frame_stats
2023-03-05 15:05:43 +00:00
{
f64 start;
f64 workTime;
f64 remainingTime;
f64 targetFramePeriod;
} oc_frame_stats;
2023-03-05 15:05:43 +00:00
typedef struct oc_window_data
2023-03-05 15:05:43 +00:00
{
oc_list_elt freeListElt;
2023-03-05 15:05:43 +00:00
u32 generation;
oc_window_style style;
2023-03-05 15:05:43 +00:00
bool shouldClose; //TODO could be in status flags
bool hidden;
bool minimized;
OC_PLATFORM_WINDOW_DATA
} oc_window_data;
2023-03-05 15:05:43 +00:00
//---------------------------------------------------------------
// Global App State
//---------------------------------------------------------------
typedef struct oc_key_utf8
{
u8 labelLen;
char label[8];
} oc_key_utf8;
enum { OC_APP_MAX_WINDOWS = 128 };
2023-03-05 15:05:43 +00:00
typedef struct oc_app
2023-03-05 15:05:43 +00:00
{
bool init;
bool shouldQuit;
bool minimized;
oc_str8 pendingPathDrop;
oc_arena eventArena;
2023-03-05 15:05:43 +00:00
oc_ringbuffer eventQueue;
2023-03-05 15:05:43 +00:00
oc_frame_stats frameStats;
2023-03-05 15:05:43 +00:00
oc_window_data windowPool[OC_APP_MAX_WINDOWS];
oc_list windowFreeList;
2023-03-05 15:05:43 +00:00
oc_live_resize_callback liveResizeCallback;
2023-03-05 15:05:43 +00:00
void* liveResizeData;
oc_key_utf8 keyLabels[512];
2023-03-05 15:05:43 +00:00
int keyCodes[512];
int nativeKeys[OC_KEY_COUNT];
2023-03-05 15:05:43 +00:00
OC_PLATFORM_APP_DATA
} oc_app;
2023-03-05 15:05:43 +00:00
#endif // __APP_INTERNAL_H_