Index: Sources/JPEG/provider_jpeg.cpp
===================================================================
RCS file: /var/lib/cvs/Libs/ClanLib-0.6/Sources/JPEG/provider_jpeg.cpp,v
retrieving revision 1.10
diff -u -r1.10 provider_jpeg.cpp
--- Sources/JPEG/provider_jpeg.cpp	22 Jan 2002 10:29:33 -0000	1.10
+++ Sources/JPEG/provider_jpeg.cpp	23 Apr 2003 17:41:15 -0000
@@ -17,6 +17,7 @@
 #include "API/JPEG/provider_jpeg.h"
 #include "provider_jpeg_generic.h"
 #include "API/Display/Display/surface.h"
+#include "API/Core/IOData/cl_endian.h"
 #include "API/Display/Display/res_surface.h"
 
 CL_Surface *CL_JPEGProvider::create(
Index: Sources/JPEG/provider_jpeg_generic.cpp
===================================================================
RCS file: /var/lib/cvs/Libs/ClanLib-0.6/Sources/JPEG/provider_jpeg_generic.cpp,v
retrieving revision 1.6
diff -u -r1.6 provider_jpeg_generic.cpp
--- Sources/JPEG/provider_jpeg_generic.cpp	1 Nov 2001 13:56:51 -0000	1.6
+++ Sources/JPEG/provider_jpeg_generic.cpp	23 Apr 2003 17:41:15 -0000
@@ -120,12 +120,24 @@
 		{
 			jpeg_read_scanlines(&cinfo, buffer, 1);
 		
-			for(unsigned int i=0; i < get_pitch(); i += 3)
-			{
-				image[pitch * (cinfo.output_scanline - 1) + i + 0] = buffer[0][i + 2];
-				image[pitch * (cinfo.output_scanline - 1) + i + 1] = buffer[0][i + 1];
-				image[pitch * (cinfo.output_scanline - 1) + i + 2] = buffer[0][i + 0];
-			}
+                        if (CL_Endian::is_system_big())
+                        {
+                                for(unsigned int i=0; i < get_pitch(); i += 3)
+                                {
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 2] = buffer[0][i + 2];
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 1] = buffer[0][i + 1];
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 0] = buffer[0][i + 0];
+                                }
+                        }
+                        else
+                        {
+                                for(unsigned int i=0; i < get_pitch(); i += 3)
+                                {
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 0] = buffer[0][i + 2];
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 1] = buffer[0][i + 1];
+                                        image[pitch * (cinfo.output_scanline - 1) + i + 2] = buffer[0][i + 0];
+                                }
+                        }
 		}
 	}
 	// Greyscale Image
@@ -135,12 +147,24 @@
 		{
 			jpeg_read_scanlines(&cinfo, buffer, 1);
 			
-			for(int i=0; i < width; i += 1)
-			{
-				image[pitch * (cinfo.output_scanline - 1) + 3*i + 0] = buffer[0][i];
-				image[pitch * (cinfo.output_scanline - 1) + 3*i + 1] = buffer[0][i];
-				image[pitch * (cinfo.output_scanline - 1) + 3*i + 2] = buffer[0][i];
-			}			
+                        if (CL_Endian::is_system_big())
+                        {
+                                for(int i=0; i < width; i += 1)
+                                {
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 2] = buffer[0][i];
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 1] = buffer[0][i];
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 0] = buffer[0][i];
+                                }
+                        }
+			else
+                        {
+                                for(int i=0; i < width; i += 1)
+                                {
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 0] = buffer[0][i];
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 1] = buffer[0][i];
+                                        image[pitch * (cinfo.output_scanline - 1) + 3*i + 2] = buffer[0][i];
+                                }
+                        }
 		}
 	}
 	else
Index: Sources/PNG/provider_png.cpp
===================================================================
RCS file: /var/lib/cvs/Libs/ClanLib-0.6/Sources/PNG/provider_png.cpp,v
retrieving revision 1.29
diff -u -r1.29 provider_png.cpp
--- Sources/PNG/provider_png.cpp	23 Mar 2002 07:09:26 -0000	1.29
+++ Sources/PNG/provider_png.cpp	23 Apr 2003 17:41:16 -0000
@@ -26,6 +26,7 @@
 #include "API/Display/Display/res_surface.h"
 #include "API/Core/Resources/resourceoptions.h"
 #include "API/Core/System/error.h" 
+#include "API/Core/IOData/cl_endian.h"
 #include "API/PNG/provider_png.h"
 
 // Workaround for a VC bug
@@ -220,23 +221,49 @@
 
 	if (!ignore_alphachannel)
 	{
-		for (int i = 0; i < pitch * height; i += 4)
-		{
-			image[i + 0] = tmp_image[i + 3];
-			image[i + 1] = tmp_image[i + 2];
-			image[i + 2] = tmp_image[i + 1];
-			image[i + 3] = tmp_image[i + 0];
-		}
+                if (CL_Endian::is_system_big())
+                {
+                        for (int i = 0; i < pitch * height; i += 4)
+                        {
+                                image[i + 3] = tmp_image[i + 3];
+                                image[i + 2] = tmp_image[i + 2];
+                                image[i + 1] = tmp_image[i + 1];
+                                image[i + 0] = tmp_image[i + 0];
+                        }
+                }
+                else
+                {
+                        for (int i = 0; i < pitch * height; i += 4)
+                        {
+                                image[i + 0] = tmp_image[i + 3];
+                                image[i + 1] = tmp_image[i + 2];
+                                image[i + 2] = tmp_image[i + 1];
+                                image[i + 3] = tmp_image[i + 0];
+                        }
+                }
 	}
 	else
 	{
-		for (int i = 0; i < pitch * height; i += 4)
-		{
-			image[i + 0] = 255;
-			image[i + 1] = tmp_image[i + 2];
-			image[i + 2] = tmp_image[i + 1];
-			image[i + 3] = tmp_image[i + 0];
-		}
+                if (CL_Endian::is_system_big())
+                {
+                        for (int i = 0; i < pitch * height; i += 4)
+                        {
+                                image[i + 3] = 255;
+                                image[i + 2] = tmp_image[i + 2];
+                                image[i + 1] = tmp_image[i + 1];
+                                image[i + 0] = tmp_image[i + 0];
+                        }
+                }
+                else
+                {
+                        for (int i = 0; i < pitch * height; i += 4)
+                        {
+                                image[i + 0] = 255;
+                                image[i + 1] = tmp_image[i + 2];
+                                image[i + 2] = tmp_image[i + 1];
+                                image[i + 3] = tmp_image[i + 0];
+                        }
+                }
 	}
 
 	delete[] tmp_image;
@@ -265,13 +292,26 @@
 	delete[] row_pointers;
 
 	image = new unsigned char[height * pitch];
-	// Coverting the data in the tmp buffer to our final data
-	for (int i = 0; i < rowbytes * height; i++)
-	{
-		image[3*i + 0] = tmp_image[i];
-		image[3*i + 1] = tmp_image[i];
-		image[3*i + 2] = tmp_image[i];
-	}
+
+        if (CL_Endian::is_system_big())
+        {
+                // Coverting the data in the tmp buffer to our final data
+                for (int i = 0; i < rowbytes * height; i++)
+                {
+                        image[3*i + 2] = tmp_image[i];
+                        image[3*i + 1] = tmp_image[i];
+                        image[3*i + 0] = tmp_image[i];
+                }
+        }
+        else
+        {
+                for (int i = 0; i < rowbytes * height; i++)
+                {
+                        image[3*i + 0] = tmp_image[i];
+                        image[3*i + 1] = tmp_image[i];
+                        image[3*i + 2] = tmp_image[i];
+                }
+        }
 	delete[] tmp_image;
 }
 
@@ -298,25 +338,52 @@
 
 	// Creating the final image out of tmp_image
 	image = new unsigned char[width * pitch];
+
 	if (!ignore_alphachannel)
 	{
-		for (int i = 0; i < rowbytes * height; i += 2)
-		{
-			image[2*i + 0] = tmp_image[i + 1];
-			image[2*i + 1] = tmp_image[i + 0];
-			image[2*i + 2] = tmp_image[i + 0];
-			image[2*i + 3] = tmp_image[i + 0];
-		}
+                if (CL_Endian::is_system_big())
+                {
+                        for (int i = 0; i < rowbytes * height; i += 2)
+                        {
+                                image[2*i + 3] = tmp_image[i + 1];
+                                image[2*i + 2] = tmp_image[i + 0];
+                                image[2*i + 1] = tmp_image[i + 0];
+                                image[2*i + 0] = tmp_image[i + 0];
+                        }
+                }
+                else
+                {
+                        for (int i = 0; i < rowbytes * height; i += 2)
+                        {
+                                image[2*i + 0] = tmp_image[i + 1];
+                                image[2*i + 1] = tmp_image[i + 0];
+                                image[2*i + 2] = tmp_image[i + 0];
+                                image[2*i + 3] = tmp_image[i + 0];
+                        }
+                }
 	} 
 	else
 	{
-		for (int i = 0; i < rowbytes * height; i += 2)
-		{
-			image[2*i + 0] = 255;
-			image[2*i + 1] = tmp_image[i + 0];
-			image[2*i + 2] = tmp_image[i + 0];
-			image[2*i + 3] = tmp_image[i + 0];
-		}
+                if (CL_Endian::is_system_big())
+                {
+                        for (int i = 0; i < rowbytes * height; i += 2)
+                        {
+                                image[2*i + 3] = 255;
+                                image[2*i + 2] = tmp_image[i + 0];
+                                image[2*i + 1] = tmp_image[i + 0];
+                                image[2*i + 0] = tmp_image[i + 0];
+                        }
+                }
+                else
+                {
+                        for (int i = 0; i < rowbytes * height; i += 2)
+                        {
+                                image[2*i + 0] = 255;
+                                image[2*i + 1] = tmp_image[i + 0];
+                                image[2*i + 2] = tmp_image[i + 0];
+                                image[2*i + 3] = tmp_image[i + 0];
+                        }
+                }
 	}
 
 	delete[] tmp_image;
