diff options
| -rw-r--r-- | indra/newview/llfloatersimplesnapshot.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.h | 7 | 
3 files changed, 21 insertions, 7 deletions
| diff --git a/indra/newview/llfloatersimplesnapshot.cpp b/indra/newview/llfloatersimplesnapshot.cpp index cf596fd82f..757ac605e3 100644 --- a/indra/newview/llfloatersimplesnapshot.cpp +++ b/indra/newview/llfloatersimplesnapshot.cpp @@ -386,7 +386,7 @@ void LLFloaterSimpleSnapshot::uploadThumbnail(const std::string &file_path, cons      // generate a temp texture file for coroutine      std::string temp_file = gDirUtilp->getTempFilename();      U32 codec = LLImageBase::getCodecFromExtension(gDirUtilp->getExtension(file_path)); -    if (!LLViewerTextureList::createUploadFile(file_path, temp_file, codec, THUMBNAIL_SNAPSHOT_DIM_MAX, THUMBNAIL_SNAPSHOT_DIM_MIN)) +    if (!LLViewerTextureList::createUploadFile(file_path, temp_file, codec, THUMBNAIL_SNAPSHOT_DIM_MAX, THUMBNAIL_SNAPSHOT_DIM_MIN, true))      {          LLSD notif_args;          notif_args["REASON"] = LLImage::getLastError().c_str(); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 60c7fb6b8c..d10e1ea8c9 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1290,7 +1290,8 @@ BOOL LLViewerTextureList::createUploadFile(const std::string& filename,  										 const std::string& out_filename,  										 const U8 codec,  										 const S32 max_image_dimentions, -										 const S32 min_image_dimentions) +										 const S32 min_image_dimentions, +										 bool force_square)  {	      LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;  	// Load the image @@ -1329,7 +1330,7 @@ BOOL LLViewerTextureList::createUploadFile(const std::string& filename,          return FALSE;      }  	// Convert to j2c (JPEG2000) and save the file locally -	LLPointer<LLImageJ2C> compressedImage = convertToUploadFile(raw_image, max_image_dimentions); +	LLPointer<LLImageJ2C> compressedImage = convertToUploadFile(raw_image, max_image_dimentions, force_square);  	if (compressedImage.isNull())  	{  		image->setLastError("Couldn't convert the image to jpeg2000."); @@ -1354,10 +1355,20 @@ BOOL LLViewerTextureList::createUploadFile(const std::string& filename,  }  // note: modifies the argument raw_image!!!! -LLPointer<LLImageJ2C> LLViewerTextureList::convertToUploadFile(LLPointer<LLImageRaw> raw_image, const S32 max_image_dimentions) +LLPointer<LLImageJ2C> LLViewerTextureList::convertToUploadFile(LLPointer<LLImageRaw> raw_image, const S32 max_image_dimentions, bool force_square)  {  	LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; -	raw_image->biasedScaleToPowerOfTwo(max_image_dimentions); +    if (force_square) +    { +        S32 biggest_side = llmax(raw_image->getWidth(), raw_image->getHeight()); +        S32 square_size = raw_image->biasedDimToPowerOfTwo(biggest_side, max_image_dimentions); + +        raw_image->scale(square_size, square_size); +    } +    else +    { +        raw_image->biasedScaleToPowerOfTwo(max_image_dimentions); +    }  	LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C();  	if (gSavedSettings.getBOOL("LosslessJ2CUpload") && diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index eac26ab0eb..8fc65fc9ce 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -96,8 +96,11 @@ public:                                   const std::string& out_filename,                                   const U8 codec,                                   const S32 max_image_dimentions = LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT, -                                 const S32 min_image_dimentions = 0); -	static LLPointer<LLImageJ2C> convertToUploadFile(LLPointer<LLImageRaw> raw_image, const S32 max_image_dimentions = LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT); +                                 const S32 min_image_dimentions = 0, +                                 bool force_square = false); +	static LLPointer<LLImageJ2C> convertToUploadFile(LLPointer<LLImageRaw> raw_image, +                                                     const S32 max_image_dimentions = LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT, +                                                     bool force_square = false);  	static void processImageNotInDatabase( LLMessageSystem *msg, void **user_data );  public: | 
