/**************************************************************************** * USB Loader GX Team * gui_banner.cpp * * Shows TPL Banner images ***************************************************************************/ #include "gui_banner.h" GuiBanner::GuiBanner(const char *tplfilepath) { memory = NULL; tplfilesize = 0; width = 0; height = 0; FILE *tplfp = fopen(tplfilepath,"rb"); if(tplfp !=NULL) { unsigned short heighttemp = 0; unsigned short widthtemp = 0; fseek(tplfp , 0x14, SEEK_SET); fread((void*)&heighttemp,1,2,tplfp); fread((void*)&widthtemp,1,2,tplfp); fseek (tplfp , 0 , SEEK_END); tplfilesize = ftell (tplfp); rewind (tplfp); memory = memalign(32, tplfilesize); if(!memory) { fclose(tplfp); return; } fread(memory, 1, tplfilesize, tplfp); fclose(tplfp); TPLFile tplfile; int ret; ret = TPL_OpenTPLFromMemory(&tplfile, memory, tplfilesize); if(ret < 0) { free(memory); memory = NULL; return; } ret = TPL_GetTexture(&tplfile,0,&texObj); if(ret < 0) { free(memory); memory = NULL; return; } TPL_CloseTPLFile(&tplfile); width = widthtemp; height = heighttemp; widescreen = 0; filecheck = true; } else { filecheck = false; fclose(tplfp); } } GuiBanner::GuiBanner(void *mem, u32 len, int w, int h) { if(!mem || !len) return; memory = mem; tplfilesize = len; width = w; height = h; TPLFile tplfile; int ret; ret = TPL_OpenTPLFromMemory(&tplfile, memory, tplfilesize); if(ret < 0) { free(memory); memory = NULL; return; } ret = TPL_GetTexture(&tplfile,0,&texObj); if(ret < 0) { free(memory); memory = NULL; return; } TPL_CloseTPLFile(&tplfile); filecheck = true; } GuiBanner::~GuiBanner() { if(memory != NULL) { free(memory); memory = NULL; } } void GuiBanner::Draw() { LOCK(this); if(!filecheck ||!this->IsVisible()) return; float currScale = this->GetScale(); Menu_DrawTPLImg(this->GetLeft(), this->GetTop(), 0, width, height, &texObj, imageangle, widescreen ? currScale*0.80 : currScale, currScale, this->GetAlpha(), xx1,yy1,xx2,yy2,xx3,yy3,xx4,yy4); this->UpdateEffects(); }