summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/easylogo/easylogo.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/easylogo/easylogo.c b/tools/easylogo/easylogo.c
index 59f9ae7..6f2aaa6 100644
--- a/tools/easylogo/easylogo.c
+++ b/tools/easylogo/easylogo.c
@@ -127,6 +127,16 @@ void printlogo_yuyv (unsigned short *data, int w, int h)
}
}
+static inline unsigned short le16_to_cpu (unsigned short val)
+{
+ union {
+ unsigned char pval[2];
+ unsigned short val;
+ } swapped;
+ swapped.val = val;
+ return (swapped.pval[1] << 8) + swapped.pval[0];
+}
+
int image_load_tga (image_t *image, char *filename)
{
FILE *file ;
@@ -140,6 +150,14 @@ int image_load_tga (image_t *image, char *filename)
fread(&header, sizeof(header), 1, file);
+ /* byte swap: tga is little endian, host is ??? */
+ header.ColorMapOrigin = le16_to_cpu (header.ColorMapOrigin);
+ header.ColorMapLenght = le16_to_cpu (header.ColorMapLenght);
+ header.ImageXOrigin = le16_to_cpu (header.ImageXOrigin);
+ header.ImageYOrigin = le16_to_cpu (header.ImageYOrigin);
+ header.ImageWidth = le16_to_cpu (header.ImageWidth);
+ header.ImageHeight = le16_to_cpu (header.ImageHeight);
+
image->width = header.ImageWidth ;
image->height = header.ImageHeight ;