#include "arc/graphics/window.h"

#include "window.h"
#include "arc/std/errno.h"
#include <SDL.h>

void ARC_Window_Create(ARC_Window **window, ARC_WindowInfo *info){
    if(!info){
        arc_errno = ARC_ERRNO_NULL;
        ARC_DEBUG_LOG_ERROR("ARC_Window_Create(**window, NULL)");
        return;
    }

    if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0){
        arc_errno = ARC_ERRNO_INIT;
        printf("Error: initializing SDL\nSDL Error: %s\n", SDL_GetError());
        return;
    }

    *window = (ARC_Window *)SDL_CreateWindow((const char *)info->title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, info->w, info->h, 0);

    if(!*window){
        arc_errno = ARC_ERRNO_NULL;
        ARC_DEBUG_LOG_ERROR_WITH_VARIABLES("SDL_CreateWindow(%s, %d, %d, %d, %d, %x);", info->title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, info->w, info->h, 0);
        free(window);
    }
}

void ARC_Window_Destroy(ARC_Window *window){
    SDL_DestroyWindow((SDL_Window *) window);
}