/**\brief Load image from buffer */ bool Image::Load( char *buf, int bufSize ) { SDL_RWops *rw; SDL_Surface *s = NULL; rw = SDL_RWFromMem( buf, bufSize ); if( !rw ) { LogMsg(WARN, "Image loading failed. Could not create RWops" ); return( false ); } s = IMG_Load_RW( rw, 0 ); SDL_FreeRW(rw); if( !s ) { LogMsg(WARN, "Image loading failed. Could not load image from RWops" ); return( false ); } w = s->w; h = s->h; if( ConvertToTexture( s ) == false ) { LogMsg(WARN, "Failed to load image from buffer" ); SDL_FreeSurface( s ); return( false ); } return( true ); }
ImageCache::ImageCache(char const * filename, SDL_Renderer* renderer) { SDL_Surface* s = nullptr; theTexture = LookupTexture(filename); if (theTexture) { // Texture was already cached LOG_DEBUG() << "Found texture for " << filename << " in cache!"; theTextureData[theTexture].theUserCount++; return; } s = IMG_Load(filename); if (s == nullptr) { LOG_FATAL() << "Error loading image named" << filename << ", error=" << IMG_GetError(); return; } ConvertToTexture(filename, s, renderer); LOG_DEBUG() << "Loaded texture from disk:" << filename; }