r23202 by jghali - Refactor ScImgDataLoader_TIFF's getImageData_RGBA()

scribus-commit scribus-commit at lists.scribus.net
Thu Sep 19 16:21:45 UTC 2019


Author: jghali
Date: Thu Sep 19 16:21:45 2019
New Revision: 23202

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23202
Log:
Refactor ScImgDataLoader_TIFF's getImageData_RGBA() 

Modified:
    trunk/Scribus/scribus/imagedataloaders/scimgdataloader_tiff.cpp

Modified: trunk/Scribus/scribus/imagedataloaders/scimgdataloader_tiff.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=23202&path=/trunk/Scribus/scribus/imagedataloaders/scimgdataloader_tiff.cpp
==============================================================================
--- trunk/Scribus/scribus/imagedataloaders/scimgdataloader_tiff.cpp	(original)
+++ trunk/Scribus/scribus/imagedataloaders/scimgdataloader_tiff.cpp	Thu Sep 19 16:21:45 2019
@@ -118,7 +118,7 @@
 
 	do
 	{
-		char *layerName=nullptr;
+		char *layerName = nullptr;
 		TIFFGetField(tif, TIFFTAG_PAGENAME, &layerName);
 		QString name = QString(layerName);
 		if (name.isEmpty())
@@ -353,42 +353,44 @@
 
 bool ScImgDataLoader_TIFF::getImageData_RGBA(TIFF* tif, RawImage *image, uint widtht, uint heightt, uint size, uint16 bitspersample, uint16 samplesperpixel)
 {
-	bool gotData = false;
 	uint32* bits = (uint32 *) _TIFFmalloc(size * sizeof(uint32));
+	if (!bits)
+		return false;
+
 	uint16  extrasamples(0), *extratypes(nullptr);
 	if (!TIFFGetField (tif, TIFFTAG_EXTRASAMPLES, &extrasamples, &extratypes))
 		extrasamples = 0;
-	if (bits)
-	{
-		if (TIFFReadRGBAImage(tif, widtht, heightt, bits, 0))
-		{
-			for (unsigned int y = 0; y < heightt; y++)
-			{
-				memcpy(image->scanLine(heightt - 1 - y), bits + y * widtht, widtht * image->channels());
-				if (QSysInfo::ByteOrder==QSysInfo::BigEndian)
-				{
-					unsigned char *s = image->scanLine( heightt - 1 - y );
-					unsigned char r, g, b, a;
-					for (uint xi=0; xi < widtht; ++xi)
-					{
-						r = s[0];
-						g = s[1];
-						b = s[2];
-						a = s[3];
-						s[0] = a;
-						s[1] = b;
-						s[2] = g;
-						s[3] = r;
-						s += image->channels();
-					}
-				}
-			}
-			if (extrasamples > 0 && extratypes[0] == EXTRASAMPLE_ASSOCALPHA)
-				unmultiplyRGBA(image);
-			gotData = true;
-		}
-		_TIFFfree(bits);
-	}
+	
+	bool gotData = false;
+	if (TIFFReadRGBAImage(tif, widtht, heightt, bits, 0))
+	{
+		for (unsigned int y = 0; y < heightt; y++)
+		{
+			memcpy(image->scanLine(heightt - 1 - y), bits + y * widtht, widtht * image->channels());
+			if (QSysInfo::ByteOrder == QSysInfo::BigEndian)
+			{
+				unsigned char *s = image->scanLine( heightt - 1 - y );
+				unsigned char r, g, b, a;
+				for (uint xi=0; xi < widtht; ++xi)
+				{
+					r = s[0];
+					g = s[1];
+					b = s[2];
+					a = s[3];
+					s[0] = a;
+					s[1] = b;
+					s[2] = g;
+					s[3] = r;
+					s += image->channels();
+				}
+			}
+		}
+		if (extrasamples > 0 && extratypes[0] == EXTRASAMPLE_ASSOCALPHA)
+			unmultiplyRGBA(image);
+		gotData = true;
+	}
+	_TIFFfree(bits);
+
 	return gotData;
 }
 




More information about the scribus-commit mailing list