#ifndef PLATFORM
#define PLATFORM

#include <stdint.h>
#include <stdbool.h>

typedef struct Color {
	uint8_t r, g, b;
} Color;

#define WHITE ((Color){255,255,255})
#define BLACK ((Color){0,0,0})

typedef enum Key {
	Key_backspace,
	Key_ctrl,
	Key_enter,
	Key_h,
	Key_n,
	Key_p,
	Key_y,
	Count_Key
} Key;

bool KeyIsDown(Key key);
bool KeyIsUp(Key key);
bool KeyIsJustPressedOrRepeat(Key key);
bool KeyIsJustPressed(Key key);
bool KeyIsJustReleased(Key key);
bool InputGetNextPrintable(char const *out_key);

typedef struct Screen {
	void *handle;
} Screen;

typedef struct Window {
	int width;
	int height;
	void *handle;
	Screen screen;
} Window;

Screen ScreenGetFocused();
int ScreenGetWidth(Screen screen);
int ScreenGetHeight(Screen screen);
// Make a window specifically suitable for tools like launchers.
// Always on top, not resizable, closes on lost focus.
Window ScreenMakeStaticWindow(int x, int y, int pixel_width, int pixel_height);
void WindowClear(Color color);

#endif /* PLATFORM */
