image: write all all components of a ppm
This commit is contained in:
parent
221e658ad4
commit
ecbf774d4a
@ -360,12 +360,14 @@ util::pgm::read (const boost::filesystem::path &path)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
static void
|
static void
|
||||||
write_netpbm (const uint8_t *restrict pixels,
|
write_netpbm (const uint8_t *restrict pixels,
|
||||||
|
size_t components,
|
||||||
size_t width,
|
size_t width,
|
||||||
size_t height,
|
size_t height,
|
||||||
size_t stride,
|
size_t stride,
|
||||||
const boost::filesystem::path &path,
|
const boost::filesystem::path &path,
|
||||||
const char* MAGIC) {
|
const char* MAGIC) {
|
||||||
CHECK (pixels);
|
CHECK (pixels);
|
||||||
|
CHECK_GT (components, 0);
|
||||||
CHECK_GT (width, 0);
|
CHECK_GT (width, 0);
|
||||||
CHECK_GE (stride, width);
|
CHECK_GE (stride, width);
|
||||||
CHECK_GT (height, 0);
|
CHECK_GT (height, 0);
|
||||||
@ -384,7 +386,8 @@ write_netpbm (const uint8_t *restrict pixels,
|
|||||||
// Write the data rows
|
// Write the data rows
|
||||||
for (size_t y = 0; y < height; ++y) {
|
for (size_t y = 0; y < height; ++y) {
|
||||||
for (size_t x = 0; x < width; ++x)
|
for (size_t x = 0; x < width; ++x)
|
||||||
output << pixels[y * stride + x];
|
for (size_t c = 0; c < components; ++c)
|
||||||
|
output << pixels[y * stride + x * components + c];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,7 +410,7 @@ util::pgm::write (const uint8_t *restrict pixels,
|
|||||||
const boost::filesystem::path &path) {
|
const boost::filesystem::path &path) {
|
||||||
// TODO: We should switch between P2 (ascii) and P5 (binary)
|
// TODO: We should switch between P2 (ascii) and P5 (binary)
|
||||||
static const char MAGIC[] = "P5";
|
static const char MAGIC[] = "P5";
|
||||||
write_netpbm (pixels, width, height, stride, path, MAGIC);
|
write_netpbm (pixels, 1, width, height, stride, path, MAGIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -420,7 +423,7 @@ util::ppm::write (const uint8_t *restrict pixels,
|
|||||||
const boost::filesystem::path &path) {
|
const boost::filesystem::path &path) {
|
||||||
// TODO: We should switch between P3 (ascii) and P6 (binary)
|
// TODO: We should switch between P3 (ascii) and P6 (binary)
|
||||||
static const char MAGIC[] = "P6";
|
static const char MAGIC[] = "P6";
|
||||||
write_netpbm (pixels, width, height, stride, path, MAGIC);
|
write_netpbm (pixels, 3, width, height, stride, path, MAGIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user