#include"texture.h"

Texture::Texture(){
	//Initialize variables
	szW = 0;
	szH = 0;

	IMG_Init(IMG_INIT_PNG);
	//Set renderer
};

void Texture::setRenderer(SDL_Renderer** render){
	renderer = render;
};

Texture::~Texture(){
	//Deallocate
	//free();
};

void Texture::loadTexture(std::string path){
	//Get rid of preexisting texture
	free();

	//Load image at specified path
	SDL_Surface* loadedSurface = IMG_Load( path.c_str() );

	if(loadedSurface == NULL){
		std::cout << "Couldn't load " << path.c_str() << std::endl;
	}
	else{
		//Create texture from surface pixels
        	texture = SDL_CreateTextureFromSurface
					(*renderer,loadedSurface);

		if(texture == NULL){
			std::cout << "Couldn't to create texture from "
			<< path.c_str() << std::endl;
		}
		else{
			//Get image dimensions
			szW = loadedSurface->w;
			szH = loadedSurface->h;
		}
		//Get rid of old loaded surface
		SDL_FreeSurface(loadedSurface);
	}
};

void Texture::free(){
	//Free texture if it exists
	if(texture != NULL){
		SDL_DestroyTexture(texture);
		texture = NULL;
		szW = 0;
		szH = 0;
	}
};

void Texture::render(SDL_Rect* quad,SDL_Rect* frame){
//void Texture::render(SDL_Rect* quad){
	//Set clip rendering dimensions
	/*if(frame != NULL){
		quad.w = frame->w;
		quad.h = frame->h;
	}*/

	//Render to screen
	SDL_RenderCopy(*renderer,texture,frame,quad);
	//SDL_RenderFillRect(*renderer,quad);
	//std::cout << "ye" << std::endl;
};

void Texture::render(SDL_Rect* quad){
    SDL_Rect frame = {0,0,quad->w,quad->h};

	SDL_RenderCopy(*renderer,texture,&frame,quad);
};

int Texture::getWidth(){
	return szW;
};

int Texture::getHeight(){
	return szH;
};
