Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}