if (channelType == TYPE_UNORM8) {
os << "255" << "\n";
+ } else {
+ os << "1" << "\n";
}
const unsigned char *row;
* General path for float images.
*/
+ unsigned copyChannels = std::min(channels, outChannels);
+
assert(channelType == TYPE_FLOAT);
for (row = start(); row != end(); row += stride()) {
float *dst = (float *)tmp;
for (unsigned x = 0; x < width; ++x) {
unsigned channel = 0;
- for (; channel < channels; ++channel) {
+ for (; channel < copyChannels; ++channel) {
*dst++ = *src++;
}
- for (; channel < channels; ++channel) {
+ for (; channel < outChannels; ++channel) {
*dst++ = 0;
}
}
bufferSize -= nextBuffer - currentBuffer;
currentBuffer = nextBuffer;
- if (info.channelType == TYPE_UNORM8) {
- // skip over "255\n" at end of header
- nextBuffer = (const char *) memchr((const void *) currentBuffer, '\n', bufferSize) + 1;
- }
+ // skip scale factor / endianness line
+ nextBuffer = (const char *) memchr((const void *) currentBuffer, '\n', bufferSize) + 1;
// return start of image data
return nextBuffer;