summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2007-12-20 16:32:56 +0000
committerMatthias Melcher <fltk@matthiasm.com>2007-12-20 16:32:56 +0000
commitf0ccbbabd82b4cd709df809fe30f829b3cd9539f (patch)
tree9764311ca6c36115901275a9349aea8d5855cca0 /src
parent5097f4df5bfbab3710e79b69c77f6504d823c75f (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/Fl_PNM_Image.cxx30
1 files changed, 19 insertions, 11 deletions
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;
}
}