diff --git a/libxisf.h b/libxisf.h index 1caffc5..13d2cac 100644 --- a/libxisf.h +++ b/libxisf.h @@ -160,6 +160,8 @@ public: static PixelStorage pixelStorageEnum(const QString &storage); static QString pixelStorageString(PixelStorage storage); static SampleFormat sampleFormatEnum(const QString &format); + template + static SampleFormat sampleFormatEnum(); static QString sampleFormatString(SampleFormat format); static ColorSpace colorSpaceEnum(const QString &colorSpace); static QString colorSpaceString(ColorSpace colorSpace); @@ -302,6 +304,19 @@ public: const char* what() const noexcept { return _msg.c_str(); } }; +template +Image::SampleFormat Image::sampleFormatEnum() +{ + if(std::is_same::value)return Image::UInt8; + if(std::is_same::value)return Image::UInt16; + if(std::is_same::value)return Image::UInt32; + if(std::is_same::value)return Image::UInt64; + if(std::is_same::value)return Image::Float32; + if(std::is_same::value)return Image::Float64; + if(std::is_same::value)return Image::Complex32; + if(std::is_same::value)return Image::Complex64; +} + } Q_DECLARE_METATYPE(LibXISF::Boolean); diff --git a/test/benchmark.cpp b/test/benchmark.cpp index 1d77525..e4715ba 100644 --- a/test/benchmark.cpp +++ b/test/benchmark.cpp @@ -11,10 +11,10 @@ void benchmarkType(float avg, float stdDev) std::mt19937 gen; std::normal_distribution normalDist {avg, stdDev}; - Image image(2048, 2048); + Image image(2048, 2048, 1, Image::sampleFormatEnum()); UInt32 pixels = 2048*2048; UInt32 size = pixels*sizeof(T); - T *ptr = (T*)image.imageData(); + T *ptr = image.imageData(); for(UInt32 i=0; i < pixels; i++) { ptr[i] = normalDist(gen);