
#include <SDL/SDL_video.h>

#include <vector>
#include "Interfaz.h"
#include "Layout.h"

itfzContainer * itfz_Init(void) {
    if (SDL_Init(SDL_INIT_EVERYTHING) == -1) {
        printf("Error al iniciar SDL: %s\n", SDL_GetError());
        exit(EXIT_FAILURE);
    }
    SDL_Surface *screen; // Pantalla
    screen = SDL_SetVideoMode(ITFZ_WIDTH, ITFZ_HEIGHT, ITFZ_BPP, SDL_HWSURFACE | (!SDL_RESIZABLE)); // Crea la ventana
    if (screen == NULL) {
        printf("error al setear el modo de video: %s\n", SDL_GetError());
        exit(EXIT_FAILURE);
    }
    if (TTF_Init() < 0) {
        printf("error al iniciar el modulo de fuentes: %s\n", TTF_GetError());
        exit(EXIT_FAILURE);
    }
    if (SDLNet_Init() < 0) {
        fprintf(stderr, "SDLNet_Init: %s\n", SDLNet_GetError());
        exit(EXIT_FAILURE);
    }

    SDL_WM_SetCaption(ITFZ_CAP, ITFZ_CAPMIN); // Setea el titulo    
    atexit(SDL_Quit); // Trigger de salida

    itfz_InitFonts();
    itfzContainer * Contenedor = new itfzContainer(screen, LAY_NUMCOMP); // Crea el contenedor con las pantalla y el minimo de componentes a reservar

    for (int i = 0; i < LAY_NUMCOMP; i++) // LLeno el contenedor segun el layout
        Contenedor->addComponent(ITFZ_LAYOUT[i].objeto, ITFZ_LAYOUT[i].posX, ITFZ_LAYOUT[i].posY, ITFZ_LAYOUT[i].titulo, ITFZ_LAYOUT[i].valuef, ITFZ_LAYOUT[i].values, ITFZ_LAYOUT[i].updateable, ITFZ_LAYOUT[i].ID);
    return (Contenedor);
}
