lexsdl 0.3.0

A wrapper for SDL2 to abstract away annoying parts
#include"LEXSDL.h"
#include"LEXSDL_internal.h"

/* Inits */

int LEXSDL_Init(uint32_t flags){
	int error = 0;
	if(flags != 0)
		error = SDL_Init(flags);
	else
		error = SDL_Init(LEXSDL_INITFLAGS);
	
	/* Setup Calls*/
	if(LEXSDL_SetupEvents())
		return -1;
	
	return error;
}

int LEXSDL_InitIMG(int flags){
	if(flags == 0)
		flags = LEXSDL_IMAGEINITFLAGS;
	
	if(IMG_Init(flags) == flags)
		return 0;
	
	return -1;
}



/* Termination */

void LEXSDL_Terminate(void){
	// Destroy textures LEXSDL has knowledge of
	for(int i = 0; i < (int)LEXSDLDATA.texturesQuantity; i++){
		SDL_DestroyTexture(LEXSDLDATA.textures[i]);
	}
	
	// free the *textures array
	if(LEXSDLDATA.textures)
		free(LEXSDLDATA.textures);
	
	// free the sprites array
	if(LEXSDLDATA.sprites)
		free(LEXSDLDATA.sprites);
	
	LEXSDLDATA.keyboardState = NULL;
	
	// clean the internal state to avoid posible bugs.
	LEXSDLINTERNAL_CleanState();
	
	// Destroy SDL renderer and window
	SDL_DestroyRenderer(LEXSDLDATA.renderer);
	SDL_DestroyWindow(LEXSDLDATA.window);
}

void LEXSDL_Quit(void){
	// quit SDL_image and SDL
	IMG_Quit();
	SDL_Quit();
}