diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2013-10-28 20:06:18 -0400 |
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2013-10-28 20:06:18 -0400 |
| commit | 57040ea70e21ea5cfaedfd8a3506362a03562552 (patch) | |
| tree | eb9dc090ab72bea2353de8a940ccdc7ab69d830e /indra/newview/llpreviewtexture.cpp | |
| parent | 8881b47d22a7cd17824e8162e0658af71bbe3dea (diff) | |
| parent | d5877bc365292358eb4c9b8d14d1c8a1237ca5bd (diff) | |
Automated merge with http://bitbucket.org/nat_linden/viewer-maint-3331
Diffstat (limited to 'indra/newview/llpreviewtexture.cpp')
| -rwxr-xr-x | indra/newview/llpreviewtexture.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 91a98792eb..1ed48a978f 100755 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -36,6 +36,7 @@ #include "llfilepicker.h" #include "llfloaterreg.h" #include "llimagetga.h" +#include "llimagepng.h" #include "llinventory.h" #include "llnotificationsutil.h" #include "llresmgr.h" @@ -261,7 +262,7 @@ void LLPreviewTexture::saveAs() LLFilePicker& file_picker = LLFilePicker::instance(); const LLInventoryItem* item = getItem() ; - if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGA, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) ) + if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGAPNG, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) ) { // User canceled or we failed to acquire save file. return; @@ -358,14 +359,27 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success, if( self && final && success ) { - LLPointer<LLImageTGA> image_tga = new LLImageTGA; - if( !image_tga->encode( src ) ) + const U32 ext_length = 3; + std::string extension = self->mSaveFileName.substr( self->mSaveFileName.length() - ext_length); + + // We only support saving in PNG or TGA format + LLPointer<LLImageFormatted> image; + if(extension == "png") + { + image = new LLImagePNG; + } + else if(extension == "tga") + { + image = new LLImageTGA; + } + + if( image && !image->encode( src, 0 ) ) { LLSD args; args["FILE"] = self->mSaveFileName; LLNotificationsUtil::add("CannotEncodeFile", args); } - else if( !image_tga->save( self->mSaveFileName ) ) + else if( image && !image->save( self->mSaveFileName ) ) { LLSD args; args["FILE"] = self->mSaveFileName; |
