#ifndef MR4TH_OSW_WIN32_H
#define MR4TH_OSW_WIN32_H

////////////////////////////////
// Types: OSW Win32

typedef struct OSW_W32_Ctx{
  int dummy;
} OSW_W32_Ctx;

////////////////////////////////
// Win32 Implementation: OSW Types

struct OSW_Window{
  OSW_WindowBase base;
  HWND hwnd;
  RectS32 mmbox;
  WINDOWPLACEMENT placement;
  RectS32 border_size;
  B8 is_visible;
  B8 is_maximized;
  B8 is_minimized;
  B8 is_resizable;
  B8 is_fullscreen;
  B8 has_custom_border;
};

////////////////////////////////
// Functions: OSW Win32

MR4TH_SYMBOL_STATIC void        osw_w32__update_window_visibility(OSW_Window *window);
MR4TH_SYMBOL_STATIC OSW_Window* osw_w32__window_from_hwnd(HWND hwnd);
MR4TH_SYMBOL_STATIC LRESULT     osw_w32__window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);


#endif //MR4TH_OSW_WIN32_H
