surface get_no_cache(const std::string& key) { std::string fname = path + key; #if defined(__ANDROID__) if(fname[0] == '.' && fname[1] == '/') { fname = fname.substr(2); } SDL_RWops *rw = sys::read_sdl_rw_from_asset(module::map_file(fname).c_str()); surface surf; if(rw) { surf = surface(IMG_Load_RW(rw,1)); } else { surf = surface(IMG_Load(module::map_file(fname).c_str())); } #else surface surf = surface(IMG_Load(module::map_file(fname).c_str())); #endif // ANDROID //std::cerr << "loading image '" << fname << "'\n"; if(surf.get() == false || surf->w == 0) { std::cerr << "failed to load image '" << key << "'\n"; throw load_image_error(); } //std::cerr << "IMAGE SIZE: " << (surf->w*surf->h) << "\n"; return surf; }
surface get_no_cache(data_blob_ptr blob) { ASSERT_LOG(blob != NULL, "Invalid data_blob in surface::get_no_cache"); surface surf = surface(IMG_Load_RW(blob->get_rw_ops(), 0)); if(surf.get() == false || surf->w == 0) { std::cerr << "failed to load image '" << (*blob)() << "'\n"; throw load_image_error(); } return surf; }
surface get_no_cache(const std::string& key, std::string* full_filename) { std::string fname = path + key; #if defined(__ANDROID__) if(fname[0] == '.' && fname[1] == '/') { fname = fname.substr(2); } SDL_RWops *rw = sys::read_sdl_rw_from_asset(module::map_file(fname).c_str()); surface surf; if(rw) { surf = surface(IMG_Load_RW(rw,1)); } else { surf = surface(IMG_Load(module::map_file(fname).c_str())); } #else surface surf; if(key.empty() == false && key[0] == '#') { const std::string fname = std::string(preferences::user_data_path()) + "/tmp_images/" + std::string(key.begin()+1, key.end()); surf = surface(IMG_Load(fname.c_str())); if(full_filename) { *full_filename = fname; } } else if(sys::file_exists(key)) { surf = surface(IMG_Load(key.c_str())); if(full_filename) { *full_filename = key; } } else { surf = surface(IMG_Load(module::map_file(fname).c_str())); if(full_filename) { *full_filename = module::map_file(fname); } } #endif // ANDROID //std::cerr << "loading image '" << fname << "'\n"; if(surf.get() == false || surf->w == 0) { if(key != "") { std::cerr << "failed to load image '" << key << "'\n"; } throw load_image_error(); } //std::cerr << "IMAGE SIZE: " << (surf->w*surf->h) << "\n"; return surf; }