Bill Meltsner avatar Bill Meltsner committed 3076402

added TGA alpha support as per Boolsheet's patch in issue #156

Comments (0)

Files changed (2)

   * Added filter modes for ImageFonts.
   * Added dead key support by using "unknown" key with correct unicode value.
   * Added 0 width and height in love.conf. (for current desktop resolution)
+  * Added alpha support when encoding TGA images.
 
   * Fixed a lot of bugs regarding zero characters in threads.
   * Fixed handling of a directory named "love" in current directory.

src/modules/image/devil/ImageData.cpp

 			case EncodedImageData::FORMAT_TGA:
 			default: // TGA is the default format
 				headerLen = 18;
-				bpp = 3;
+				bpp = 4;
 				size = h * w * bpp;
 				data = new ILubyte[size + headerLen];
 				// here's the header for the Targa file format.
 				data[14] = h & 255; // least significant byte of height
 				data[15] = h >> 8; // most significant byte of height
 				data[16] = bpp * 8; // bits per pixel
-				data[17] = 0; // descriptor bits
+				data[17] = 0x20; // descriptor bits (flip bits: 0x10 horizontal, 0x20 vertical)
 				// header done. write the pixel data to TGA:
 				data += headerLen;
-				ilCopyPixels(0,0,0,w,h,1,IL_BGR,IL_UNSIGNED_BYTE,data); // convert the pixels to BGR (remember, little-endian) and copy them to data
+				ilCopyPixels(0,0,0,w,h,1,IL_BGRA,IL_UNSIGNED_BYTE,data); // convert the pixels to BGRA (remember, little-endian) and copy them to data
 
-				// It's Targa, so we have to flip the image.
-				row = w * bpp;
-				ILubyte * temp = new ILubyte[row];
-				ILubyte * src = data - row;
-				ILubyte * dst = data + size;
-				for (int i = 0; i < (h >> 1); i++) {
-					memcpy(temp,src+=row,row);
-					memcpy(src,dst-=row,row);
-					memcpy(dst,temp,row);
-				}
 				data -= headerLen;
-				delete [] temp;
 		}
 		return new EncodedImageData(data, f, size + headerLen, freeData);
 	}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.