Author: matt
Date: 2007-12-20 08:32:56 -0800 (Thu, 20 Dec 2007)
New Revision: 6006
Log:
Fixed 16 bit PNM image support (STR #1847)

Modified:
   branches/branch-1.1/CHANGES
   branches/branch-1.1/src/Fl_PNM_Image.cxx

Modified: branches/branch-1.1/CHANGES
===================================================================
--- branches/branch-1.1/CHANGES 2007-12-20 16:22:53 UTC (rev 6005)
+++ branches/branch-1.1/CHANGES 2007-12-20 16:32:56 UTC (rev 6006)
@@ -5,6 +5,7 @@
          STR #1639, STR #1645, STR #1644, STR #1792, STR #1793,
          STR #1742, STR #1777, STR #1794, STR #1827, STR #1843,
          STR #1796)
+       - Fixed 16 bit PNM image support (STR #1847)
        - Fixed exposure event on zero size windows (STR #1824)
        - Fixed overlay offset for OS X Quartz (STR #1729)
        - gl_font() support for Xft+X11 (STR #1809)

Modified: branches/branch-1.1/src/Fl_PNM_Image.cxx
===================================================================
--- branches/branch-1.1/src/Fl_PNM_Image.cxx    2007-12-20 16:22:53 UTC (rev 
6005)
+++ branches/branch-1.1/src/Fl_PNM_Image.cxx    2007-12-20 16:32:56 UTC (rev 
6006)
@@ -155,21 +155,29 @@
             }
           }
           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;
     }
   }
 

_______________________________________________
fltk-commit mailing list
fltk-commit@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to