diff options
Diffstat (limited to '')
| -rw-r--r-- | scene/io/resource_format_image.cpp | 147 |
1 files changed, 67 insertions, 80 deletions
diff --git a/scene/io/resource_format_image.cpp b/scene/io/resource_format_image.cpp index 597485cae..37fb26c33 100644 --- a/scene/io/resource_format_image.cpp +++ b/scene/io/resource_format_image.cpp @@ -27,50 +27,49 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "resource_format_image.h" -#include "scene/resources/texture.h" -#include "io/image_loader.h" #include "globals.h" +#include "io/image_loader.h" #include "os/os.h" -RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_original_path, Error *r_error) { +#include "scene/resources/texture.h" +RES ResourceFormatLoaderImage::load(const String &p_path, const String &p_original_path, Error *r_error) { if (r_error) - *r_error=ERR_CANT_OPEN; + *r_error = ERR_CANT_OPEN; - if (p_path.extension()=="cube") { + if (p_path.extension() == "cube") { // open as cubemap txture - CubeMap* ptr = memnew(CubeMap); - Ref<CubeMap> cubemap( ptr ); + CubeMap *ptr = memnew(CubeMap); + Ref<CubeMap> cubemap(ptr); Error err; - FileAccess *f = FileAccess::open(p_path,FileAccess::READ,&err); + FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err); if (err) { - ERR_FAIL_COND_V( err, RES() ); + ERR_FAIL_COND_V(err, RES()); } - String base_path=p_path.substr( 0, p_path.find_last("/")+1 ); + String base_path = p_path.substr(0, p_path.find_last("/") + 1); - for(int i=0;i<6;i++) { + for (int i = 0; i < 6; i++) { String file = f->get_line().strip_edges(); Image image; - Error err = ImageLoader::load_image(base_path+file,&image); - + Error err = ImageLoader::load_image(base_path + file, &image); if (err) { memdelete(f); - ERR_FAIL_COND_V( err, RES() ); + ERR_FAIL_COND_V(err, RES()); } - if (i==0) { + if (i == 0) { //cubemap->create(image.get_width(),image.get_height(),image.get_format(),Texture::FLAGS_DEFAULT|Texture::FLAG_CUBEMAP); } - static const CubeMap::Side cube_side[6]= { + static const CubeMap::Side cube_side[6] = { CubeMap::SIDE_LEFT, CubeMap::SIDE_RIGHT, CubeMap::SIDE_BOTTOM, @@ -79,22 +78,22 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_origin CubeMap::SIDE_BACK }; - cubemap->set_side(cube_side[i],image); + cubemap->set_side(cube_side[i], image); } memdelete(f); cubemap->set_name(p_path.get_file()); if (r_error) - *r_error=OK; + *r_error = OK; return cubemap; } else { // simple image - ImageTexture* ptr = memnew(ImageTexture); - Ref<ImageTexture> texture( ptr ); + ImageTexture *ptr = memnew(ImageTexture); + Ref<ImageTexture> texture(ptr); uint64_t begtime; double total; @@ -102,129 +101,119 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_origin Image image; if (debug_load_times) - begtime=OS::get_singleton()->get_ticks_usec(); + begtime = OS::get_singleton()->get_ticks_usec(); - - Error err = ImageLoader::load_image(p_path,&image); + Error err = ImageLoader::load_image(p_path, &image); if (!err && debug_load_times) { - double total=USEC_TO_SEC((OS::get_singleton()->get_ticks_usec()-begtime)); - print_line("IMAGE: "+itos(image.get_width())+"x"+itos(image.get_height())); - print_line(" -load: "+rtos(total)); + double total = USEC_TO_SEC((OS::get_singleton()->get_ticks_usec() - begtime)); + print_line("IMAGE: " + itos(image.get_width()) + "x" + itos(image.get_height())); + print_line(" -load: " + rtos(total)); } - - ERR_EXPLAIN("Failed loading image: "+p_path); + ERR_EXPLAIN("Failed loading image: " + p_path); ERR_FAIL_COND_V(err, RES()); if (r_error) - *r_error=ERR_FILE_CORRUPT; + *r_error = ERR_FILE_CORRUPT; #ifdef DEBUG_ENABLED #ifdef TOOLS_ENABLED if (max_texture_size && (image.get_width() > max_texture_size || image.get_height() > max_texture_size)) { - if (bool(Globals::get_singleton()->get("debug/max_texture_size_alert"))) { - OS::get_singleton()->alert("Texture is too large: '"+p_path+"', at "+itos(image.get_width())+"x"+itos(image.get_height())+". Max allowed size is: "+itos(max_texture_size)+"x"+itos(max_texture_size)+".","BAD ARTIST, NO COOKIE!"); + OS::get_singleton()->alert("Texture is too large: '" + p_path + "', at " + itos(image.get_width()) + "x" + itos(image.get_height()) + ". Max allowed size is: " + itos(max_texture_size) + "x" + itos(max_texture_size) + ".", "BAD ARTIST, NO COOKIE!"); } - ERR_EXPLAIN("Texture is too large: '"+p_path+"', at "+itos(image.get_width())+"x"+itos(image.get_height())+". Max allowed size is: "+itos(max_texture_size)+"x"+itos(max_texture_size)+"."); + ERR_EXPLAIN("Texture is too large: '" + p_path + "', at " + itos(image.get_width()) + "x" + itos(image.get_height()) + ". Max allowed size is: " + itos(max_texture_size) + "x" + itos(max_texture_size) + "."); ERR_FAIL_V(RES()); } #endif #endif - - uint32_t flags=load_image_flags(p_path); + uint32_t flags = load_image_flags(p_path); if (debug_load_times) - begtime=OS::get_singleton()->get_ticks_usec(); + begtime = OS::get_singleton()->get_ticks_usec(); //print_line("img: "+p_path+" flags: "+itos(flags)); - texture->create_from_image( image,flags ); + texture->create_from_image(image, flags); texture->set_name(p_path.get_file()); - if (debug_load_times) { - total=USEC_TO_SEC(OS::get_singleton()->get_ticks_usec()-begtime); - print_line(" -make texture: "+rtos(total)); + total = USEC_TO_SEC(OS::get_singleton()->get_ticks_usec() - begtime); + print_line(" -make texture: " + rtos(total)); } if (r_error) - *r_error=OK; + *r_error = OK; - return RES( texture ); + return RES(texture); } - - } uint32_t ResourceFormatLoaderImage::load_image_flags(const String &p_path) { - - FileAccess *f2 = FileAccess::open(p_path+".flags",FileAccess::READ); - Map<String,bool> flags_found; + FileAccess *f2 = FileAccess::open(p_path + ".flags", FileAccess::READ); + Map<String, bool> flags_found; if (f2) { - while(!f2->eof_reached()) { + while (!f2->eof_reached()) { String l2 = f2->get_line(); int eqpos = l2.find("="); - if (eqpos!=-1) { - String flag=l2.substr(0,eqpos).strip_edges(); - String val=l2.substr(eqpos+1,l2.length()).strip_edges().to_lower(); - flags_found[flag]=(val=="true" || val=="1")?true:false; + if (eqpos != -1) { + String flag = l2.substr(0, eqpos).strip_edges(); + String val = l2.substr(eqpos + 1, l2.length()).strip_edges().to_lower(); + flags_found[flag] = (val == "true" || val == "1") ? true : false; } } memdelete(f2); } - - uint32_t flags=0; + uint32_t flags = 0; if (flags_found.has("filter")) { if (flags_found["filter"]) - flags|=Texture::FLAG_FILTER; - } else if (bool(GLOBAL_DEF("image_loader/filter",true))) { - flags|=Texture::FLAG_FILTER; + flags |= Texture::FLAG_FILTER; + } else if (bool(GLOBAL_DEF("image_loader/filter", true))) { + flags |= Texture::FLAG_FILTER; } - if (flags_found.has("gen_mipmaps")) { if (flags_found["gen_mipmaps"]) - flags|=Texture::FLAG_MIPMAPS; - } else if (bool(GLOBAL_DEF("image_loader/gen_mipmaps",true))) { - flags|=Texture::FLAG_MIPMAPS; + flags |= Texture::FLAG_MIPMAPS; + } else if (bool(GLOBAL_DEF("image_loader/gen_mipmaps", true))) { + flags |= Texture::FLAG_MIPMAPS; } if (flags_found.has("repeat")) { if (flags_found["repeat"]) - flags|=Texture::FLAG_REPEAT; - } else if (bool(GLOBAL_DEF("image_loader/repeat",true))) { - flags|=Texture::FLAG_REPEAT; + flags |= Texture::FLAG_REPEAT; + } else if (bool(GLOBAL_DEF("image_loader/repeat", true))) { + flags |= Texture::FLAG_REPEAT; } if (flags_found.has("anisotropic")) { if (flags_found["anisotropic"]) - flags|=Texture::FLAG_ANISOTROPIC_FILTER; + flags |= Texture::FLAG_ANISOTROPIC_FILTER; } if (flags_found.has("tolinear")) { if (flags_found["tolinear"]) - flags|=Texture::FLAG_CONVERT_TO_LINEAR; + flags |= Texture::FLAG_CONVERT_TO_LINEAR; } if (flags_found.has("mirroredrepeat")) { if (flags_found["mirroredrepeat"]) - flags|=Texture::FLAG_MIRRORED_REPEAT; + flags |= Texture::FLAG_MIRRORED_REPEAT; } return flags; } -bool ResourceFormatLoaderImage::handles_type(const String& p_type) const { +bool ResourceFormatLoaderImage::handles_type(const String &p_type) const { - return ObjectTypeDB::is_type(p_type,"Texture") || ObjectTypeDB::is_type(p_type,"CubeMap"); + return ObjectTypeDB::is_type(p_type, "Texture") || ObjectTypeDB::is_type(p_type, "CubeMap"); } void ResourceFormatLoaderImage::get_recognized_extensions(List<String> *p_extensions) const { @@ -235,28 +224,26 @@ void ResourceFormatLoaderImage::get_recognized_extensions(List<String> *p_extens String ResourceFormatLoaderImage::get_resource_type(const String &p_path) const { - String ext=p_path.extension().to_lower(); - if (ext=="cube") + String ext = p_path.extension().to_lower(); + if (ext == "cube") return "CubeMap"; List<String> extensions; ImageLoader::get_recognized_extensions(&extensions); - for(List<String>::Element *E=extensions.front();E;E=E->next()) { - if (E->get()==ext) + for (List<String>::Element *E = extensions.front(); E; E = E->next()) { + if (E->get() == ext) return "ImageTexture"; } return ""; } - ResourceFormatLoaderImage::ResourceFormatLoaderImage() { - max_texture_size = GLOBAL_DEF("debug/max_texture_size",0); - GLOBAL_DEF("debug/max_texture_size_alert",false); - debug_load_times=GLOBAL_DEF("debug/image_load_times",false); - GLOBAL_DEF("image_loader/filter",true); - GLOBAL_DEF("image_loader/gen_mipmaps",true); - GLOBAL_DEF("image_loader/repeat",false); - + max_texture_size = GLOBAL_DEF("debug/max_texture_size", 0); + GLOBAL_DEF("debug/max_texture_size_alert", false); + debug_load_times = GLOBAL_DEF("debug/image_load_times", false); + GLOBAL_DEF("image_loader/filter", true); + GLOBAL_DEF("image_loader/gen_mipmaps", true); + GLOBAL_DEF("image_loader/repeat", false); } |
