/*! Creates an ImageHeader from the given \a resource. */ ImageHeader ImageHeader::fromImageResource(const ImageResource &resource) { ImageHeader result; if (resource.isNull()) return result; result.setType(resource.type()); switch (resource.type()) { case ImageResource::Type::Image: result.setWidth(resource.image().width()); result.setHeight(resource.image().height()); result.setDepth(1); result.setImageFormat(resource.image().format()); break; case ImageResource::Type::CubeTexture: result.setWidth(resource.cubeTexture().width()); result.setHeight(resource.cubeTexture().height()); result.setDepth(resource.cubeTexture().depth()); result.setImageFormat(resource.cubeTexture().format()); break; case ImageResource::Type::VolumeTexture: result.setWidth(resource.volumeTexture().width()); result.setHeight(resource.volumeTexture().height()); result.setDepth(resource.volumeTexture().depth()); result.setImageFormat(resource.volumeTexture().format()); break; default: break; } return result; }
int main(int argc, char *argv[]) { ImageIO reader("texture.dds"); const auto result = reader.read(); // if (!result.first) ... const auto &contents = result.second; for (int index = 0; index < contents.header().imageCount(); ++index) { // read array for (int level = 0; level < contents.header().mipmapCount(); ++level) { // read mipmaps ImageResource resource = contents.resource(index, level); if (resource.type() == ImageResource::Type::Image) { const QImage image = resource.image(); // ... } else if (resource.type() == ImageResource::Type::CubeTexture) { CubeTexture texture = resource.cubeTexture(); // ... } else if (resource.type() == ImageResource::Type::VolumeTexture) { VolumeTexture texture = resource.volumeTexture(); // ... } } } ImageExifMeta exif = contents.exifMeta(); if (!exif.isEmpty()) { // ... } return 0; }