Files
Server_Monitor/code/platform.h

94 lines
2.1 KiB
C

#ifndef _PIUMA_PLATFORM_H_
#define _PIUMA_PLATFORM_H_
/*
=== PLATFORM INTERFACE ===
Every function or struct must be implemented in the code for each platform
==========================
*/
#include "lib/types.h"
#include "lib/event.h"
// @Feature: Initialization structures with preferred initial state (window resolution, fullcreen)
// Generic platform initialization
void p_init(bool capture_os_signals = false);
void p_deinit();
// Memory
void * p_alloc(u64 size);
void * p_realloc(void *ptr, u64 new_size);
void p_free(void *ptr);
// File IO
#define P_FILE_CREATE_IF_NOT_EXISTS 1
#define P_FILE_READONLY 2
struct p_file; // Defined by specific platform implementation
bool p_file_init(p_file *file, const char *filename, b32 flags = 0);
u64 p_file_size(p_file *file);
bool p_file_read(p_file *file, Buffer *buf, u64 max_size);
bool p_file_write(p_file *file, u8 *data, u64 size);
// @Performance: add append + write at position. Maybe not needed
void p_file_deinit(p_file *file);
// Timers
f64 p_time(); // Returns seconds
void p_wait(f64 milliseconds);
// Windowing
// We suppose we only need 1 window. Every GL command will render to it.
void p_window_open();
void p_window_name(char *name);
void p_window_resize(u32 width, u32 height, bool fullscreen = false);
void p_window_dimensions(u32 *width, u32 *height);
void p_window_close();
// Graphics
void p_graphics_swap_interval(s32 frames); // -1 for Adaptive Sync, 0 for no interval, >0 to wait 'frames' frames between each swap
void p_graphics_swap();
// Input (keyboard / mouse / controller)
void p_mouse_grab(bool grab);
// Events
bool p_next_event(Event *e);
// Audio
struct p_audio_buffer;
typedef void (*p_audio_callback)(p_audio_buffer *);
void p_audio_register_data_callback(p_audio_callback cb);
u32 p_audio_sample_rate();
// Threads
// @Feature: OS threads and syncronization
// Audio structs
struct p_audio_sample
{
f32 left;
f32 right;
};
struct p_audio_buffer
{
p_audio_sample *samples;
u64 size;
};
#if defined(__linux__)
#include "linux_platform.h"
#else
#error "Platform not supported"
#endif
#endif