[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Fwd: Patch for kpixmapio.cpp
From:       Geert Jansen <g.t.jansen () stud ! tue ! nl>
Date:       2000-09-06 18:12:06
[Download RAW message or body]

Hi,

this patch fixes a problem with 555 bit packing in KPixmapIO. The patch is 
correct. If nobody objects, I will apply it tonight.

Greetings,
Geert

----------  Forwarded Message  ----------
Subject: Patch for kpixmapio.cpp
Date: Wed, 6 Sep 2000 11:33:49 +0000
From: Josef Weidendorfer <Josef.Weidendorfer@informatik.tu-muenchen.de>
To: Geert Jansen <jansen@kde.org>


Hello,

can you forward the following patch for reviewing to kde-core-devel or
review it
yourself and commit ?

I have a RIVA 128 (NVIDEA) Chip and Konsole Transparency was not working
with 16Bit-Depth.
2 Reasons: Wrong recognition of mode AND wrong bitshifting. The
following fixes it.

PS: I'm not sure KPixmapIO does the right thing in 16-Bit modes, as it
simply truncates
low bits of the color values and does no dithering. The resulting images
look ugly, as
one sees that one doesn't have truecolor ;-)

Greetings,
Josef


--- kpixmapio.cpp.old   Wed Sep  6 11:15:45 2000
+++ kpixmapio.cpp       Wed Sep  6 11:20:11 2000
@@ -131,7 +131,7 @@
     else if ((bpp == 17) && (red_shift == 11) && (green_shift == 5) &&
            (blue_shift == 0))
        d->byteorder = bo16_BGR_565;
-    else if ((bpp == 16) && (red_shift == 10) && (green_shift == 5) &&
+    else if ((bpp == 17) && (red_shift == 10) && (green_shift == 5) &&
            (blue_shift == 0))
        d->byteorder = bo16_BGR_555;
     else if ((bpp == 8) || (bpp == 9))
@@ -566,10 +566,10 @@
                for (x=0; x<width/2; x++)
                {
                    pixel = *src++;
-                   val = ((pixel & 0xf80000) >> 9) | ((pixel & 0xf800)

>> 5) |

+                   val = ((pixel & 0xf80000) >> 9) | ((pixel & 0xf800)

>> 6) |

                             ((pixel & 0xff) >> 3);
                    pixel = *src++;
-                   val |= (((pixel & 0xf80000) >> 9) | ((pixel &
0xf800) >> 5) |
+                   val |= (((pixel & 0xf80000) >> 9) | ((pixel &
0xf800) >> 6) |
                            ((pixel & 0xff) >> 3)) << 16;
                    *dst++ = val;
                }
@@ -577,7 +577,7 @@
                {
                    pixel = *src++;
                    *((Q_INT16 *)dst) = ((pixel & 0xf80000) >> 9) |
-                           ((pixel & 0xf800) >> 5) | ((pixel & 0xff) >>
3);
+                           ((pixel & 0xf800) >> 6) | ((pixel & 0xff) >>
3);
                }
            }
        } else
@@ -592,10 +592,10 @@
                for (x=0; x<width/2; x++)
                {
                    pixel = clut[*src++];
-                   val = ((pixel & 0xf80000) >> 9) | ((pixel & 0xf800)

>> 5) |

+                   val = ((pixel & 0xf80000) >> 9) | ((pixel & 0xf800)

>> 6) |

                            ((pixel & 0xff) >> 3);
                    pixel = clut[*src++];
-                   val |= (((pixel & 0xf80000) >> 9) | ((pixel &
0xf800) >> 5) |
+                   val |= (((pixel & 0xf80000) >> 9) | ((pixel &
0xf800) >> 6) |
                            ((pixel & 0xff) >> 3)) << 16;
                    *dst++ = val;
                }
@@ -603,7 +603,7 @@
                {
                    pixel = clut[*src++];
                    *((Q_INT16 *)dst) = ((pixel & 0xf80000) >> 9) |
-                           ((pixel & 0xf800) >> 5) | ((pixel & 0xff) >>
3);
+                           ((pixel & 0xf800) >> 6) | ((pixel & 0xff) >>
3);
                }
            }
        }



--
Josef Weidendorfer
TUM: Josef.Weidendorfer@in.tum.de, 089/289-25357
BMW: Josef.Weidendorfer@bmw.de, 089/382-40787

-------------------------------------------------------

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic