Skip to content

Commit

Permalink
AnyImageConveter: prepare for multi-level image conversion.
Browse files Browse the repository at this point in the history
No formats / plugins implemeneting this yet, so just a dummy
implementation and tests.
  • Loading branch information
mosra committed Jul 26, 2021
1 parent 008583d commit 11268c6
Show file tree
Hide file tree
Showing 3 changed files with 325 additions and 2 deletions.
62 changes: 61 additions & 1 deletion src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,13 @@ ImageConverterFeatures AnyImageConverter::doFeatures() const {
ImageConverterFeature::Convert3DToFile|
ImageConverterFeature::ConvertCompressed1DToFile|
ImageConverterFeature::ConvertCompressed2DToFile|
ImageConverterFeature::ConvertCompressed3DToFile;
ImageConverterFeature::ConvertCompressed3DToFile|
ImageConverterFeature::ConvertLevels1DToFile|
ImageConverterFeature::ConvertLevels2DToFile|
ImageConverterFeature::ConvertLevels3DToFile|
ImageConverterFeature::ConvertCompressedLevels1DToFile|
ImageConverterFeature::ConvertCompressedLevels2DToFile|
ImageConverterFeature::ConvertCompressedLevels3DToFile;
}

bool AnyImageConverter::doConvertToFile(const ImageView1D&, const Containers::StringView filename) {
Expand Down Expand Up @@ -161,6 +167,60 @@ bool AnyImageConverter::doConvertToFile(const CompressedImageView3D&, const Cont
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const ImageView1D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level 1D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 1D image";
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const ImageView2D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level 2D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 2D image";
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const ImageView3D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level 3D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 3D image";
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const CompressedImageView1D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level compressed 1D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 1D image";
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const CompressedImageView2D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level compressed 2D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 2D image";
return false;
}

bool AnyImageConverter::doConvertToFile(Containers::ArrayView<const CompressedImageView3D>, const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());

/* No file formats to store multi-level compressed 3D data yet */

Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 3D image";
return false;
}

}}

CORRADE_PLUGIN_REGISTER(AnyImageConverter, Magnum::Trade::AnyImageConverter,
Expand Down
6 changes: 6 additions & 0 deletions src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ class MAGNUM_ANYIMAGECONVERTER_EXPORT AnyImageConverter: public AbstractImageCon
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(const CompressedImageView1D& image, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(const CompressedImageView2D& image, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(const CompressedImageView3D& image, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const ImageView1D> imageLevels, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const ImageView2D> imageLevels, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const ImageView3D> imageLevels, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const CompressedImageView1D> imageLevels, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const CompressedImageView2D> imageLevels, Containers::StringView filename) override;
MAGNUM_ANYIMAGECONVERTER_LOCAL bool doConvertToFile(Containers::ArrayView<const CompressedImageView3D> imageLevels, Containers::StringView filename) override;
};

}}
Expand Down
Loading

0 comments on commit 11268c6

Please sign in to comment.