summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/Palm2QImage.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/Palm2QImage.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/Palm2QImage.cpp74
1 files changed, 46 insertions, 28 deletions
diff --git a/noncore/apps/opie-reader/Palm2QImage.cpp b/noncore/apps/opie-reader/Palm2QImage.cpp
index ef88cc5..9603877 100644
--- a/noncore/apps/opie-reader/Palm2QImage.cpp
+++ b/noncore/apps/opie-reader/Palm2QImage.cpp
@@ -4,3 +4,5 @@
#include <string.h>
-#include <unistd.h> /* for link */
+#ifndef WINDOWS
+#include <unistd.h> /* for link */
+#endif
#include <sys/types.h>
@@ -141,4 +143,3 @@ QImage* Palm2QImage
#if 0
- qDebug ("Palm image is %dx%d, %d bpp, version %d, flags 0x%x, compression %d",
- width, height, bits_per_pixel, version, flags, compression_type);
+// qDebug ("Palm image is %dx%d, %d bpp, version %d, flags 0x%x, compression %d", width, height, bits_per_pixel, version, flags, compression_type);
#endif
@@ -146,3 +147,3 @@ QImage* Palm2QImage
if (compression_type == PALM_COMPRESSION_PACKBITS) {
- qDebug ("Image uses packbits compression; not yet supported");
+// qDebug ("Image uses packbits compression; not yet supported");
return NULL;
@@ -151,3 +152,3 @@ QImage* Palm2QImage
(compression_type != PALM_COMPRESSION_SCANLINE)) {
- qDebug ("Image uses unknown compression, code 0x%x", compression_type);
+// qDebug ("Image uses unknown compression, code 0x%x", compression_type);
return NULL;
@@ -169,3 +170,3 @@ QImage* Palm2QImage
if (flags & PALM_HAS_COLORMAP_FLAG) {
- qDebug("Palm images with custom colormaps are not currently supported.\n");
+// qDebug("Palm images with custom colormaps are not currently supported.\n");
return NULL;
@@ -188,5 +189,5 @@ QImage* Palm2QImage
palm_blue_bits = palmimage[18];
+// qDebug("Bits:%d, %d, %d", palm_red_bits, palm_green_bits, palm_blue_bits);
if (palm_blue_bits > 8 || palm_green_bits > 8 || palm_red_bits > 8) {
- qDebug("Can't handle this format DirectColor image -- too wide in some color (%d:%d:%d)\n",
- palm_red_bits, palm_green_bits, palm_blue_bits);
+// qDebug("Can't handle this format DirectColor image -- too wide in some color (%d:%d:%d)\n", palm_red_bits, palm_green_bits, palm_blue_bits);
return NULL;
@@ -194,4 +195,3 @@ QImage* Palm2QImage
if (bits_per_pixel > (8 * sizeof(unsigned long))) {
- qDebug ("Can't handle this format DirectColor image -- too many bits per pixel (%d)\n",
- bits_per_pixel);
+// qDebug ("Can't handle this format DirectColor image -- too many bits per pixel (%d)\n", bits_per_pixel);
return NULL;
@@ -200,3 +200,3 @@ QImage* Palm2QImage
} else {
- qDebug("Unknown bits-per-pixel of %d encountered.\n", bits_per_pixel);
+// qDebug("Unknown bits-per-pixel of %d encountered.\n", bits_per_pixel);
return NULL;
@@ -204,3 +204,7 @@ QImage* Palm2QImage
- QImage* qimage = new QImage(width, height, 16);
+#ifdef WINDOWS
+ QImage* qimage = new QImage(width, height, 32);
+#else
+ QImage* qimage = new QImage(width, height, 16);
+#endif
@@ -211,2 +215,3 @@ QImage* Palm2QImage
for (i=0, palm_ptr = imagedatastart , x_ptr = imagedata; i < height; ++i) {
+// qDebug("inval:%x palm_ptr:%x x_ptr:%x bpr:%x", inval, palm_ptr, x_ptr, bytes_per_row);
@@ -233,4 +238,15 @@ QImage* Palm2QImage
} else if (((flags & PALM_IS_COMPRESSED_FLAG) &&
- (compression_type == PALM_COMPRESSION_NONE)) ||
- (flags && PALM_IS_COMPRESSED_FLAG) == 0) {
+ (compression_type == PALM_COMPRESSION_NONE)) ||
+ ((flags & PALM_IS_COMPRESSED_FLAG) == 0))
+ {
+ memcpy (rowbuf, palm_ptr, bytes_per_row);
+ palm_ptr += bytes_per_row;
+ }
+ else {
+ qDebug("Case 4");
+ qDebug("Is compressed:%s", ((flags & PALM_IS_COMPRESSED_FLAG) == 0) ? "false" : "true");
+ qDebug("Has colourmap:%s", ((flags & PALM_HAS_COLORMAP_FLAG) == 0) ? "false" : "true");
+ qDebug("Has transparency:%s", ((flags & PALM_HAS_TRANSPARENCY_FLAG) == 0) ? "false" : "true");
+ qDebug("Direct colour:%s", ((flags & PALM_DIRECT_COLOR_FLAG) == 0) ? "false" : "true");
+ qDebug("four byte field:%s", ((flags & PALM_4_BYTE_FIELD_FLAG) == 0) ? "false" : "true");
memcpy (rowbuf, palm_ptr, bytes_per_row);
@@ -238,3 +254,2 @@ QImage* Palm2QImage
}
-
/* next, write it to the GDK bitmap */
@@ -259,14 +274,15 @@ QImage* Palm2QImage
for (inbyte = rowbuf, j = 0; j < width; ++j) {
- inval = (inbyte[0] << 8) | inbyte[1];
-#if 0
- qDebug ("pixel is %d,%d (%02x:%02x:%02x)",
+ inval = ((unsigned short)inbyte[0] << (unsigned short)8) | inbyte[1];
+
+/*
+ qDebug ("pixel is %d,%d (%d:%d:%d)",
j, i,
- (inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1),
- (inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1),
- (inval >> 0) & ((1 << palm_blue_bits) - 1));
-#endif
+ ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits),
+ ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits),
+ ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits));
+*/
QRgb colour = qRgb(
- (inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1),
- (inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1),
- (inval >> 0) & ((1 << palm_blue_bits) - 1));
+ ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits),
+ ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits),
+ ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits));
qimage->setPixel(j, i, colour);
@@ -283,8 +299,10 @@ QImage* Palm2QImage
-QPixmap* hRule(int w, int h, unsigned char r, unsigned char g, unsigned char b)
+QImage* hRule(int w, int h, unsigned char r, unsigned char g, unsigned char b)
{
-// qDebug("hrule [%d, %d]", w, h);
+//// qDebug("hrule [%d, %d]", w, h);
QPixmap* qimage = new QPixmap(w, h);
qimage->fill(QColor(r,g,b));
- return qimage;
+ QImage* ret = new QImage(qimage->convertToImage());
+ delete qimage;
+ return ret;
}