summaryrefslogtreecommitdiff
path: root/indra/newview/llviewertexturelist.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-09-09 00:00:22 +0300
committerakleshchev <117672381+akleshchev@users.noreply.github.com>2023-09-10 21:49:00 +0300
commitcfb69846f1e8309ed86d4a18eb26a889f6dbaccc (patch)
treecb5507d1d5a8600f312d3b25d404fd2c50384050 /indra/newview/llviewertexturelist.cpp
parent46425b2e49377acc186e41c67a793f7f6b7f583b (diff)
SL-20261 Allow and resize existing textures as necessary for thumbnails
Diffstat (limited to 'indra/newview/llviewertexturelist.cpp')
-rw-r--r--indra/newview/llviewertexturelist.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index d10e1ea8c9..f9fe8054a4 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1285,6 +1285,45 @@ void LLViewerTextureList::decodeAllImages(F32 max_time)
<< LL_ENDL;
}
+bool LLViewerTextureList::createUploadFile(LLPointer<LLImageRaw> raw_image,
+ const std::string& out_filename,
+ const S32 max_image_dimentions,
+ const S32 min_image_dimentions)
+{
+ LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
+
+ // make a copy, since convertToUploadFile scales raw image
+ LLPointer<LLImageRaw> scale_image = new LLImageRaw(
+ raw_image->getData(),
+ raw_image->getWidth(),
+ raw_image->getHeight(),
+ raw_image->getComponents());
+
+ LLPointer<LLImageJ2C> compressedImage = LLViewerTextureList::convertToUploadFile(scale_image, max_image_dimentions);
+ if (compressedImage->getWidth() < min_image_dimentions || compressedImage->getHeight() < min_image_dimentions)
+ {
+ std::string reason = llformat("Images below %d x %d pixels are not allowed. Actual size: %d x %dpx",
+ min_image_dimentions,
+ min_image_dimentions,
+ compressedImage->getWidth(),
+ compressedImage->getHeight());
+ compressedImage->setLastError(reason);
+ return false;
+ }
+ if (compressedImage.isNull())
+ {
+ compressedImage->setLastError("Couldn't convert the image to jpeg2000.");
+ LL_INFOS() << "Couldn't convert to j2c, file : " << out_filename << LL_ENDL;
+ return false;
+ }
+ if (!compressedImage->save(out_filename))
+ {
+ compressedImage->setLastError("Couldn't create the jpeg2000 image for upload.");
+ LL_INFOS() << "Couldn't create output file : " << out_filename << LL_ENDL;
+ return false;
+ }
+ return true;
+}
BOOL LLViewerTextureList::createUploadFile(const std::string& filename,
const std::string& out_filename,