HeightfieldData::HeightfieldData(Bitstream& in, int bytes, bool color) : _encoded(in.readAligned(bytes)) { QImage image = QImage::fromData(_encoded).convertToFormat(QImage::Format_RGB888); if (color) { _contents.resize(image.width() * image.height() * BYTES_PER_PIXEL); memcpy(_contents.data(), image.constBits(), _contents.size()); } else { _contents.resize(image.width() * image.height()); char* dest = _contents.data(); for (const uchar* src = image.constBits(), *end = src + _contents.size() * BYTES_PER_PIXEL; src != end; src += BYTES_PER_PIXEL) { *dest++ = *src; } } }