From eaf8d7cdc87b3f20edc76c1cc31b23c0f403d795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 12 Apr 2022 22:32:05 +0200 Subject: [PATCH] [wip] Trade: rebuild AbstractImageConverter around ImageData. And not views, as ImageData contains extra metadata. Currently just the importer state, but eventually that will be changed to a generic key/value store for stuff like color correction, EXIF, gamma, etc., and if the plugin interfaces would consume only views (which don't and won't have such key/value data), the data would get lost. A similar approach is being taken with the AbstractSceneConverter. TODO: implement this to be more than just a TODO --- src/Magnum/Trade/AbstractImageConverter.cpp | 6 ++++++ src/Magnum/Trade/AbstractImageConverter.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/Magnum/Trade/AbstractImageConverter.cpp b/src/Magnum/Trade/AbstractImageConverter.cpp index bfcc85b76..1c4c80795 100644 --- a/src/Magnum/Trade/AbstractImageConverter.cpp +++ b/src/Magnum/Trade/AbstractImageConverter.cpp @@ -272,6 +272,8 @@ Containers::Optional AbstractImageConverter::convert(const ImageDat #ifndef CORRADE_NO_ASSERT namespace { +/** @todo reuse from AbstractSceneConverter when both take ImageData and not + views */ template class View> bool checkImageValidity(const char* const messagePrefix, const View& image) { /* At some point there might be a file format that allows zero-sized images, but so far I don't know about any. When such format appears, @@ -539,6 +541,8 @@ AbstractImageConverter::convertToData(const ImageData3D& image) { #ifndef CORRADE_NO_ASSERT namespace { +/** @todo reuse from AbstractSceneConverter when both take ImageData and not + views */ template bool checkImageValidity(const char* const messagePrefix, const Containers::ArrayView> imageLevels) { CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image has to be specified", false); @@ -562,6 +566,8 @@ template bool checkImageValidity(const char* const messa return true; } +/** @todo reuse from AbstractSceneConverter when both take ImageData and not + views */ template bool checkImageValidity(const char* const messagePrefix, const Containers::ArrayView> imageLevels) { CORRADE_ASSERT(!imageLevels.isEmpty(), messagePrefix << "at least one image has to be specified", false); diff --git a/src/Magnum/Trade/AbstractImageConverter.h b/src/Magnum/Trade/AbstractImageConverter.h index fce1d5e72..cc7205d3f 100644 --- a/src/Magnum/Trade/AbstractImageConverter.h +++ b/src/Magnum/Trade/AbstractImageConverter.h @@ -1015,6 +1015,8 @@ class MAGNUM_TRADE_EXPORT AbstractImageConverter: public PluginManager::Abstract #endif convertToData(const CompressedImageView3D& image); + /** @todo with extras, this all needs to take a Data */ + /** * @brief Convert a 1D image data to a raw data * @m_since_latest