Add convenience Read methods
This commit is contained in:
@@ -90,15 +90,14 @@ namespace openVulkanoCpp
|
||||
PfmHeader header;
|
||||
std::unique_ptr<float[]> image;
|
||||
|
||||
static PfmImage ReadImage(std::istream& inStream)
|
||||
void Read(std::istream& inStream)
|
||||
{
|
||||
PfmImage image;
|
||||
inStream >> image.header;
|
||||
size_t size = image.header.GetElementCount();
|
||||
inStream >> header;
|
||||
size_t size = header.GetElementCount();
|
||||
|
||||
if (Utils::IsLittleEndian() != image.header.littleEndian)
|
||||
if (Utils::IsLittleEndian() != header.littleEndian)
|
||||
{
|
||||
char* data = reinterpret_cast<char*>(image.image.get());
|
||||
char* data = reinterpret_cast<char*>(image.get());
|
||||
for(size_t i = 0; i < size; i++)
|
||||
{
|
||||
size_t idx = i * sizeof(float);
|
||||
@@ -106,8 +105,14 @@ namespace openVulkanoCpp
|
||||
}
|
||||
}
|
||||
|
||||
image.image = std::make_unique<float[]>(size);
|
||||
inStream.read(reinterpret_cast<char*>(image.image.get()), size);
|
||||
image = std::make_unique<float[]>(size);
|
||||
inStream.read(reinterpret_cast<char*>(image.get()), size);
|
||||
}
|
||||
|
||||
static PfmImage ReadImage(std::istream& inStream)
|
||||
{
|
||||
PfmImage image;
|
||||
image.Read(inStream);
|
||||
return image;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -109,17 +109,22 @@ namespace openVulkanoCpp
|
||||
PnmHeader header;
|
||||
std::unique_ptr<char[]> image;
|
||||
|
||||
void Read(std::istream& inStream)
|
||||
{
|
||||
inStream >> header;
|
||||
|
||||
// TODO handle ascii mode
|
||||
if (header.ascii) throw std::runtime_error("ascii mode not supported!");
|
||||
|
||||
size_t size = header.GetImageSize();
|
||||
image = std::make_unique<char[]>(size);
|
||||
inStream.read(image.get(), size);
|
||||
}
|
||||
|
||||
static PnmImage ReadImage(std::istream& inStream)
|
||||
{
|
||||
PnmImage image;
|
||||
inStream >> image.header;
|
||||
|
||||
// TODO handle ascii mode
|
||||
if (image.header.ascii) throw std::runtime_error("ascii mode not supported!");
|
||||
|
||||
size_t size = image.header.GetImageSize();
|
||||
image.image = std::make_unique<char[]>(size);
|
||||
inStream.read(image.image.get(), size);
|
||||
image.Read(inStream);
|
||||
return image;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user