/* date = May 27th 2022 9:22 pm */

#ifndef WIN32_GFX_IMPL_H
#define WIN32_GFX_IMPL_H

////////////////////////////////
// NOTE(allen): W32 Graphics Types

typedef struct W32_Window{
  struct W32_Window *next;
  HWND wnd;
  WINDOWPLACEMENT place;
  B32 supports_resizing;
  
  // applications
  void *user_data;
  
  // graphics system implementors
  void *equipped_data;
  GFX_WindowReleaseFunc *release_func;
} W32_Window;

#define W32_GRAPHICS_WINDOW_CLASS_NAME L"mr4th-graphics"

////////////////////////////////
// NOTE(allen): W32 Graphics Functions

link_function W32_Window* gfx_w32_window_from_handle(GFX_Window *window);
link_function GFX_Window* gfx_w32_handle_from_hwnd(HWND wnd);

////////////////////////////////
// NOTE(allen): W32 Window Procedure

link_function LRESULT gfx_w32_window_proc(HWND, UINT, WPARAM, LPARAM);

#endif //WIN32_GFX_IMPL_H
