25 png(std::span<std::byte const> bytes);
32 i32x4 extent()
const noexcept {
33 return i32x4{width, height};
54 int compression_method = 0;
55 int filter_method = 0;
56 int interlace_method = 0;
61 int samples_per_pixel = 0;
62 int bits_per_pixel = 0;
63 int bytes_per_pixel = 0;
64 int bytes_per_line = 0;
75 void read_header(std::span<std::byte const> bytes,
ssize_t &offset);
76 void read_chunks(std::span<std::byte const> bytes,
ssize_t &offset);
77 void read_IHDR(std::span<std::byte const> bytes);
78 void read_cHRM(std::span<std::byte const> bytes);
79 void read_gAMA(std::span<std::byte const> bytes);
80 void read_iBIT(std::span<std::byte const> bytes);
81 void read_iCCP(std::span<std::byte const> bytes);
82 void read_sRGB(std::span<std::byte const> bytes);
83 void generate_sRGB_transfer_function()
noexcept;
84 void generate_Rec2100_transfer_function()
noexcept;
85 void generate_gamma_transfer_function(
float gamma)
noexcept;
87 void unfilter_lines(
bstring &image_data)
const;
88 void unfilter_line(std::span<uint8_t> line, std::span<uint8_t const> prev_line)
const;
89 void unfilter_line_sub(std::span<uint8_t> line, std::span<uint8_t const> prev_line)
const noexcept;
90 void unfilter_line_up(std::span<uint8_t> line, std::span<uint8_t const> prev_line)
const noexcept;
91 void unfilter_line_average(std::span<uint8_t> line, std::span<uint8_t const> prev_line)
const noexcept;
92 void unfilter_line_paeth(std::span<uint8_t> line, std::span<uint8_t const> prev_line)
const noexcept;
95 i32x4 extract_pixel_from_line(std::span<std::byte const> bytes,
int x)
const noexcept;