72 lines
1.1 KiB
C
72 lines
1.1 KiB
C
|
/*
|
||
|
* 4tech reusable platform layer interface
|
||
|
* by Allen Webster
|
||
|
* 20.08.2015
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
// TOP
|
||
|
|
||
|
#if FTECH_ALLOW_ASSERT
|
||
|
#include <assert.h>
|
||
|
#define _Assert assert
|
||
|
#else
|
||
|
#define _Assert(x)
|
||
|
#endif
|
||
|
|
||
|
#define SOFTWARE_RENDER 0
|
||
|
#define OPENGL_RENDER 1
|
||
|
|
||
|
#if FTECH_GL_RENDER
|
||
|
#define RENDER_MODE OPENGL_RENDER
|
||
|
#endif
|
||
|
|
||
|
#if FTECH_SOFT_RENDER
|
||
|
#define RENDER_MODE SOFTWARE_RENDER
|
||
|
#endif
|
||
|
|
||
|
#ifndef RENDER_MODE
|
||
|
#error render mode not set
|
||
|
#endif
|
||
|
|
||
|
struct Mouse_State{
|
||
|
bool32 in_window;
|
||
|
i32 x, y;
|
||
|
bool32 l, r;
|
||
|
bool32 pl, pr;
|
||
|
i16 wheel;
|
||
|
};
|
||
|
|
||
|
struct Memory{
|
||
|
void *mem;
|
||
|
i32 size;
|
||
|
};
|
||
|
|
||
|
struct Render_Target{
|
||
|
i32 w, h;
|
||
|
};
|
||
|
|
||
|
struct App_Step_Data{
|
||
|
Memory memory;
|
||
|
Render_Target render_target;
|
||
|
Mouse_State mouse;
|
||
|
};
|
||
|
|
||
|
enum App_Mouse_Cursor{
|
||
|
APP_MOUSE_CURSOR_UNSET,
|
||
|
APP_MOUSE_CURSOR_IBEAM,
|
||
|
APP_MOUSE_CURSOR_ARROW,
|
||
|
APP_MOUSE_CURSOR_LEFTRIGHT,
|
||
|
APP_MOUSE_CURSOR_UPDOWN
|
||
|
};
|
||
|
|
||
|
struct App_Step_Out{
|
||
|
App_Mouse_Cursor mouse_cursor;
|
||
|
};
|
||
|
|
||
|
#define APP_STEP_SIG(name) void name(App_Step_Data *step, App_Step_Out *out)
|
||
|
APP_STEP_SIG(app_step);
|
||
|
|
||
|
// BOTTOM
|
||
|
|