#ifndef ARC_GRAPHICS_WINDOW_H_
#define ARC_GRAPHICS_WINDOW_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>

/**
 * @note ARC_WindowType is determined by which window backend you are using
*/
typedef struct ARC_WindowType ARC_Window;

/**
 * @note certain parts of ARC_WindowInfo may not be used by your selected backend
*/
typedef struct ARC_WindowInfo {
    char     *title;
    int32_t   w;
    int32_t   h;
} ARC_WindowInfo;

/**
 * @brief creates ARC_Window type
 *
 * @note the parameter data is determined by which graphics library you are using
 *       please refer to the graphics library section to see what needs to be passed
 *
 * @param window ARC_Window to initialize
 * @param info   Info on how to create ARC_Window
 */
void ARC_Window_Create(ARC_Window **window, ARC_WindowInfo *info);

/**
 * @brief destroys ARC_Window type
 */
void ARC_Window_Destroy(ARC_Window *window);

#ifdef __cplusplus
}
#endif

#endif // !ARC_GRAPHICS_WINDOW_H_
