Browse Source

Fix TGA indexed images loaded with flipped color table

This fixes incorrect color table lookup where red and blue channels were flipped.

(cherry picked from commit d0f0f1f1cb1ef5478b3ac3b00597c8b17974ffc4)
Andrii Doroshenko (Xrayez) 6 years ago
parent
commit
f6c0078264
1 changed files with 4 additions and 2 deletions
  1. 4 2
      modules/tga/image_loader_tga.cpp

+ 4 - 2
modules/tga/image_loader_tga.cpp

@@ -148,9 +148,11 @@ Error ImageLoaderTGA::convert_to_image(Ref<Image> p_image, const uint8_t *p_buff
 					uint8_t a = 0xff;
 
 					if (p_header.color_map_depth == 24) {
-						r = (p_palette[(index * 3) + 0]);
+						// Due to low-high byte order, the color table must be
+						// read in the same order as image data (little endian)
+						r = (p_palette[(index * 3) + 2]);
 						g = (p_palette[(index * 3) + 1]);
-						b = (p_palette[(index * 3) + 2]);
+						b = (p_palette[(index * 3) + 0]);
 					} else {
 						return ERR_INVALID_DATA;
 					}