Add convenience Read methods
This commit is contained in:
@@ -90,15 +90,14 @@ namespace openVulkanoCpp
|
|||||||
PfmHeader header;
|
PfmHeader header;
|
||||||
std::unique_ptr<float[]> image;
|
std::unique_ptr<float[]> image;
|
||||||
|
|
||||||
static PfmImage ReadImage(std::istream& inStream)
|
void Read(std::istream& inStream)
|
||||||
{
|
{
|
||||||
PfmImage image;
|
inStream >> header;
|
||||||
inStream >> image.header;
|
size_t size = header.GetElementCount();
|
||||||
size_t size = image.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++)
|
for(size_t i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
size_t idx = i * sizeof(float);
|
size_t idx = i * sizeof(float);
|
||||||
@@ -106,8 +105,14 @@ namespace openVulkanoCpp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
image.image = std::make_unique<float[]>(size);
|
image = std::make_unique<float[]>(size);
|
||||||
inStream.read(reinterpret_cast<char*>(image.image.get()), size);
|
inStream.read(reinterpret_cast<char*>(image.get()), size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static PfmImage ReadImage(std::istream& inStream)
|
||||||
|
{
|
||||||
|
PfmImage image;
|
||||||
|
image.Read(inStream);
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -109,17 +109,22 @@ namespace openVulkanoCpp
|
|||||||
PnmHeader header;
|
PnmHeader header;
|
||||||
std::unique_ptr<char[]> image;
|
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)
|
static PnmImage ReadImage(std::istream& inStream)
|
||||||
{
|
{
|
||||||
PnmImage image;
|
PnmImage image;
|
||||||
inStream >> image.header;
|
image.Read(inStream);
|
||||||
|
|
||||||
// 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);
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user