diff --git a/openVulkanoCpp/IO/Files/Pfm.hpp b/openVulkanoCpp/IO/Files/Pfm.hpp index d768d49..e55af44 100644 --- a/openVulkanoCpp/IO/Files/Pfm.hpp +++ b/openVulkanoCpp/IO/Files/Pfm.hpp @@ -84,16 +84,22 @@ namespace openVulkanoCpp { return GetElementCount() * sizeof(float); } + }; - static std::pair> ReadImage(std::istream& inStream) + struct PfmImage + { + PfmHeader header; + std::unique_ptr image; + + static PfmImage ReadImage(std::istream& inStream) { - std::pair> image; - inStream >> image.first; - size_t size = image.first.GetElementCount(); + PfmImage image; + inStream >> image.header; + size_t size = image.header.GetElementCount(); - if (Utils::IsLittleEndian() != image.first.littleEndian) + if (Utils::IsLittleEndian() != image.header.littleEndian) { - char* data = reinterpret_cast(image.second.get()); + char* data = reinterpret_cast(image.image.get()); for(size_t i = 0; i < size; i++) { size_t idx = i * sizeof(float); @@ -101,9 +107,9 @@ namespace openVulkanoCpp } } - image.second = std::make_unique(size); - inStream.read(reinterpret_cast(image.second.get()), size); + image.image = std::make_unique(size); + inStream.read(reinterpret_cast(image.image.get()), size); return image; - }; + } }; } \ No newline at end of file diff --git a/openVulkanoCpp/IO/Files/Pnm.hpp b/openVulkanoCpp/IO/Files/Pnm.hpp index bd8a606..e402c1b 100644 --- a/openVulkanoCpp/IO/Files/Pnm.hpp +++ b/openVulkanoCpp/IO/Files/Pnm.hpp @@ -103,19 +103,25 @@ namespace openVulkanoCpp } return size; } + }; - static std::pair> ReadImage(std::istream& inStream) + struct PnmImage + { + PnmHeader header; + std::unique_ptr image; + + static PnmImage ReadImage(std::istream& inStream) { - std::pair> image; - inStream >> image.first; + PnmImage image; + inStream >> image.header; // TODO handle ascii mode - if (image.first.ascii) throw std::runtime_error("ascii mode not supported!"); + if (image.header.ascii) throw std::runtime_error("ascii mode not supported!"); - size_t size = image.first.GetImageSize(); - image.second = std::make_unique(size); - inStream.read(image.second.get(), size); + size_t size = image.header.GetImageSize(); + image.image = std::make_unique(size); + inStream.read(image.image.get(), size); return image; - }; + } }; }