fix all is blue issue on ppc machines
diff --git a/ChangeLog b/ChangeLog
index 6c10d85..af1b1e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-21 Albert Astals Cid <aacid@kde.org>
+
+ * qt4/src/poppler-page.cc:
+ * qt/src/poppler-page.cc: Swap byte order on bigendian machines.
+ Thanks a lot to Jonathan Riddell <jr@jriddell.org> for letting me use
+ his minimac for testing
+
2006-05-19 Kristian Høgsberg <krh@redhat.com>
* glib/poppler-action.h:
diff --git a/qt/poppler-page.cc b/qt/poppler-page.cc
index d0395aa..c40337a 100644
--- a/qt/poppler-page.cc
+++ b/qt/poppler-page.cc
@@ -77,6 +77,23 @@
int bw = output_dev->getBitmap()->getWidth();
int bh = output_dev->getBitmap()->getHeight();
SplashColorPtr dataPtr = output_dev->getBitmap()->getDataPtr();
+
+ if (QImage::BigEndian == QImage::systemByteOrder())
+ {
+ uchar c;
+ int count = bw * bh * 4;
+ for (int k = 0; k < count; k += 4)
+ {
+ c = dataPtr[k];
+ dataPtr[k] = dataPtr[k+3];
+ dataPtr[k+3] = c;
+
+ c = dataPtr[k+1];
+ dataPtr[k+1] = dataPtr[k+2];
+ dataPtr[k+2] = c;
+ }
+ }
+
// construct a qimage SHARING the raw bitmap data in memory
QImage img( dataPtr, bw, bh, 32, 0, 0, QImage::IgnoreEndian );
img = img.copy();
diff --git a/qt4/src/poppler-page.cc b/qt4/src/poppler-page.cc
index 9777153..5191556 100644
--- a/qt4/src/poppler-page.cc
+++ b/qt4/src/poppler-page.cc
@@ -69,6 +69,23 @@
int bh = bitmap->getHeight();
SplashColorPtr dataPtr = output_dev->getBitmap()->getDataPtr();
+
+ if (QSysInfo::BigEndian == QSysInfo::ByteOrder)
+ {
+ uchar c;
+ int count = bw * bh * 4;
+ for (int k = 0; k < count; k += 4)
+ {
+ c = dataPtr[k];
+ dataPtr[k] = dataPtr[k+3];
+ dataPtr[k+3] = c;
+
+ c = dataPtr[k+1];
+ dataPtr[k+1] = dataPtr[k+2];
+ dataPtr[k+2] = c;
+ }
+ }
+
// construct a qimage SHARING the raw bitmap data in memory
QImage img( dataPtr, bw, bh, QImage::Format_ARGB32 );
img = img.copy();