Esempio n. 1
0
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;
        }
    }
}