From f0ccbbabd82b4cd709df809fe30f829b3cd9539f Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Thu, 20 Dec 2007 16:32:56 +0000 Subject: Fixed 16 bit PNM image support (STR #1847) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@6006 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_PNM_Image.cxx | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/Fl_PNM_Image.cxx b/src/Fl_PNM_Image.cxx index fa5b32b62..d8f221ecf 100644 --- a/src/Fl_PNM_Image.cxx +++ b/src/Fl_PNM_Image.cxx @@ -155,21 +155,29 @@ Fl_PNM_Image::Fl_PNM_Image(const char *name) // I - File to read } } break; - + case 5 : case 6 : + if (maxval < 256) { fread(ptr, w(), d(), fp); - break; - + } else { + for (x = d() * w(); x > 0; x --) { + val = (uchar)getc(fp); + val = (val<<8)|(uchar)getc(fp); + *ptr++ = (255*val)/maxval; + } + } + break; + case 7 : /* XV 3:3:2 thumbnail format */ - for (x = w(); x > 0; x --) { - byte = (uchar)getc(fp); - - *ptr++ = (uchar)(255 * ((byte >> 5) & 7) / 7); - *ptr++ = (uchar)(255 * ((byte >> 2) & 7) / 7); - *ptr++ = (uchar)(255 * (byte & 3) / 3); - } - break; + for (x = w(); x > 0; x --) { + byte = (uchar)getc(fp); + + *ptr++ = (uchar)(255 * ((byte >> 5) & 7) / 7); + *ptr++ = (uchar)(255 * ((byte >> 2) & 7) / 7); + *ptr++ = (uchar)(255 * (byte & 3) / 3); + } + break; } } -- cgit v1.2.3