소스 검색

fix issues with grayscale pfm files

David Rose 13 년 전
부모
커밋
5a5a6387bd
1개의 변경된 파일16개의 추가작업 그리고 6개의 파일을 삭제
  1. 16 6
      panda/src/grutil/pfmFile.cxx

+ 16 - 6
panda/src/grutil/pfmFile.cxx

@@ -109,7 +109,7 @@ clear(int x_size, int y_size, int num_channels) {
   _x_size = x_size;
   _x_size = x_size;
   _y_size = y_size;
   _y_size = y_size;
   _scale = 1.0;
   _scale = 1.0;
-  _num_channels = _num_channels;
+  _num_channels = num_channels;
 
 
   _table.clear();
   _table.clear();
   int size = _x_size * _y_size;
   int size = _x_size * _y_size;
@@ -417,11 +417,21 @@ store(PNMImage &pnmimage) const {
     return false;
     return false;
   }
   }
 
 
-  pnmimage.clear(get_x_size(), get_y_size(), get_num_channels(), PGM_MAXMAXVAL);
-  for (int yi = 0; yi < get_y_size(); ++yi) {
-    for (int xi = 0; xi < get_x_size(); ++xi) {
-      LPoint3 point = get_point(xi, yi);
-      pnmimage.set_xel(xi, yi, point[0], point[1], point[2]);
+  int num_channels = get_num_channels();
+  pnmimage.clear(get_x_size(), get_y_size(), num_channels, PGM_MAXMAXVAL);
+  if (num_channels == 1) {
+    for (int yi = 0; yi < get_y_size(); ++yi) {
+      for (int xi = 0; xi < get_x_size(); ++xi) {
+        LPoint3 point = get_point(xi, yi);
+        pnmimage.set_gray(xi, yi, point[0]);
+      }
+    }
+  } else {
+    for (int yi = 0; yi < get_y_size(); ++yi) {
+      for (int xi = 0; xi < get_x_size(); ++xi) {
+        LPoint3 point = get_point(xi, yi);
+        pnmimage.set_xel(xi, yi, point[0], point[1], point[2]);
+      }
     }
     }
   }
   }
   return true;
   return true;