diff options
Diffstat (limited to 'x11/kdelibs3/patches/patch-de')
-rw-r--r-- | x11/kdelibs3/patches/patch-de | 85 |
1 files changed, 80 insertions, 5 deletions
diff --git a/x11/kdelibs3/patches/patch-de b/x11/kdelibs3/patches/patch-de index f418e9fb07d..9ea9ac8d8b0 100644 --- a/x11/kdelibs3/patches/patch-de +++ b/x11/kdelibs3/patches/patch-de @@ -1,13 +1,88 @@ -$NetBSD: patch-de,v 1.1.2.2 2005/04/16 19:47:33 salo Exp $ +$NetBSD: patch-de,v 1.1.2.3 2005/05/01 22:06:21 salo Exp $ ---- kimgio/xview.cpp.orig 2003-09-07 14:17:55.000000000 +0200 -+++ kimgio/xview.cpp 2005-04-13 23:34:18.000000000 +0200 -@@ -60,6 +60,8 @@ +--- kimgio/xview.cpp.orig 2003-09-08 00:17:55.000000000 +1200 ++++ kimgio/xview.cpp +@@ -7,12 +7,16 @@ + + #include <stdio.h> + #include <string.h> ++#include <stdlib.h> + #include <qimage.h> + + #include "xview.h" + + #define BUFSIZE 1024 + ++static const int b_255_3[]= {0,85,170,255}, // index*255/3 ++ rg_255_7[]={0,36,72,109,145,182,218,255}; // index *255/7 ++ + void kimgio_xv_read( QImageIO *_imageio ) + { + int x=-1; +@@ -48,10 +52,14 @@ void kimgio_xv_read( QImageIO *_imageio + sscanf(str, "%d %d %d", &x, &y, &maxval); + + if (maxval != 255) return; ++ int blocksize = x*y; ++ if(x < 0 || y < 0 || blocksize < x || blocksize < y) ++ return; + + // now follows a binary block of x*y bytes. +- int blocksize = x*y; +- char *block = new char[ blocksize ]; ++ char *block = (char*) malloc(blocksize); ++ if(!block) ++ return; + + if (iodev->readBlock(block, blocksize) != blocksize ) + { +@@ -60,6 +68,10 @@ void kimgio_xv_read( QImageIO *_imageio // Create the image QImage image( x, y, 8, maxval + 1, QImage::BigEndian ); -+ if( image.isNull()) ++ if( image.isNull()) { ++ free(block); + return; ++ } // how do the color handling? they are absolute 24bpp // or at least can be calculated as such. +@@ -67,29 +79,9 @@ void kimgio_xv_read( QImageIO *_imageio + + for ( int j = 0; j < 256; j++ ) + { +-// ----------- OLIVER EIDEN +-// That is the old-code ! +-/* r = ((int) ((j >> 5) & 0x07)) << 5; +- g = ((int) ((j >> 2) & 0x07)) << 5; +- b = ((int) ((j >> 0) & 0x03)) << 6;*/ +- +- +-// That is the code-how xv, decode 3-3-2 pixmaps, it is slighly different, +-// but yields much better visuals results +-/* r = (((int) ((j >> 5) & 0x07)) *255) / 7; +- g = (((int) ((j >> 2) & 0x07)) *255) / 7; +- b = (((int) ((j >> 0) & 0x03)) *255) / 3;*/ +- +-// This is the same as xv, with multiplications/divisions replaced by indexing +- +-// Look-up table to avoid multiplications and divisons +- static int b_255_3[]= {0,85,170,255}, // index*255/3 +- rg_255_7[]={0,36,72,109,145,182,218,255}; // index *255/7 +- + r = rg_255_7[((j >> 5) & 0x07)]; + g = rg_255_7[((j >> 2) & 0x07)]; + b = b_255_3[((j >> 0) & 0x03)]; +-// --------------- + image.setColor( j, qRgb( r, g, b ) ); + } + +@@ -102,7 +94,7 @@ void kimgio_xv_read( QImageIO *_imageio + _imageio->setImage( image ); + _imageio->setStatus( 0 ); + +- delete [] block; ++ free(block); + return; + } + |