fix issues with grayscale pfm files

This commit is contained in:
David Rose 2012-06-19 06:01:06 +00:00
parent c64a59d62e
commit 5a5a6387bd

View File

@ -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); int num_channels = get_num_channels();
for (int yi = 0; yi < get_y_size(); ++yi) { pnmimage.clear(get_x_size(), get_y_size(), num_channels, PGM_MAXMAXVAL);
for (int xi = 0; xi < get_x_size(); ++xi) { if (num_channels == 1) {
LPoint3 point = get_point(xi, yi); for (int yi = 0; yi < get_y_size(); ++yi) {
pnmimage.set_xel(xi, yi, point[0], point[1], point[2]); 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;