in cpp/spectrum/plugins/png/LibPngCompressor.cpp [129:164]
void LibPngCompressor::ensureHeaderIsWritten(
const std::uint16_t colorType,
const bool swapAlpha) {
SPECTRUM_ENFORCE_IF_NOT(!writtenLastScanline);
if (isHeaderWritten) {
return;
}
if (setjmp(png_jmpbuf(libPngWriteStruct))) {
throwError(__PRETTY_FUNCTION__, __LINE__, "png_set_IHDR");
}
png_set_IHDR(
libPngWriteStruct,
libPngInfoStruct,
_options.imageSpecification.size.width,
_options.imageSpecification.size.height,
8,
colorType,
_options.configuration.png.useInterlacing() ? PNG_INTERLACE_ADAM7
: PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_DEFAULT,
PNG_FILTER_TYPE_DEFAULT);
if (swapAlpha) {
png_set_swap_alpha(libPngWriteStruct);
}
isHeaderWritten = true;
if (setjmp(png_jmpbuf(libPngWriteStruct))) {
throwError(__PRETTY_FUNCTION__, __LINE__, "png_write_info");
}
png_write_info(libPngWriteStruct, libPngInfoStruct);
}