31#ifndef PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED
32#define PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED
53 template<
typename pixel >
60 template<
class reader >
77#ifdef DEBUG_EXPAND_8_16
78 printf(
"row: width=%d, bytes=%d, channels=%d\n",
88#ifdef DEBUG_EXPAND_8_16
94#ifdef DEBUG_EXPAND_8_16
106 template<
class reader >
111#ifdef PNG_READ_16_TO_8_SUPPORTED
114 throw error(
"expected 8-bit data but found 16-bit; recompile with PNG_READ_16_TO_8_SUPPORTED");
119#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
122 traits::get_channels());
124 throw error(
"expected 16-bit data but found 8-bit; recompile with PNG_READ_USER_TRANSFORM_SUPPORTED");
129 template<
class reader >
137#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
140 throw error(
"alpha channel unexpected; recompile with PNG_READ_STRIP_ALPHA_SUPPORTED");
145#if defined(PNG_tRNS_SUPPORTED) && defined(PNG_READ_EXPAND_SUPPORTED)
152#if defined(PNG_READ_FILLER_SUPPORTED) && !defined(PNG_1_0_X)
155 throw error(
"expected alpha channel but none found; recompile with PNG_READ_FILLER_SUPPORTED and be sure to use libpng > 1.0.x");
160 template<
class reader >
169#ifdef PNG_READ_EXPAND_SUPPORTED
173 throw error(
"indexed colors unexpected; recompile with PNG_READ_EXPAND_SUPPORTED");
178 throw error(
"conversion to indexed colors is unsupported (yet)");
185#ifdef PNG_READ_PACK_SUPPORTED
191 throw error(
"cannot convert to indexed colors with bit-depth < 8");
196 template<
class reader >
204#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
207 throw error(
"grayscale data expected; recompile with PNG_READ_RGB_TO_GRAY_SUPPORTED");
212#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
215 throw error(
"expected RGB data; recompile with PNG_READ_GRAY_TO_RGB_SUPPORTED");
220 template<
class reader >
228#ifdef PNG_READ_EXPAND_SUPPORTED
231 throw error(
"convert_color_space: expected 8-bit data; recompile with PNG_READ_EXPAND_SUPPORTED");
255 template<
typename pixel >
Exception class to represent runtime errors related to png++ operation.
Definition error.hpp:59
void drop_palette()
Removes all entries from the palette.
Definition image_info.hpp:155
The 8-bit Indexed (colormap) pixel type.
Definition index_pixel.hpp:45
bool has_chunk(chunk id)
Definition io_base.hpp:192
int get_bit_depth() const
Definition io_base.hpp:150
info & get_info()
Definition io_base.hpp:87
void set_color_type(color_type color_space)
Definition io_base.hpp:145
void set_tRNS_to_alpha() const
Definition io_base.hpp:212
void set_gray_to_rgb() const
Definition io_base.hpp:228
void set_palette_to_rgb() const
Definition io_base.hpp:206
void set_packing() const
Definition io_base.hpp:320
void set_strip_alpha() const
Definition io_base.hpp:266
void set_bit_depth(int bit_depth)
Definition io_base.hpp:155
color_type get_color_type() const
Definition io_base.hpp:140
void set_rgb_to_gray(rgb_to_gray_error_action error_action=rgb_to_gray_silent, double red_weight=-1.0, double green_weight=-1.0) const
Definition io_base.hpp:236
void set_user_transform_info(void *info, int bit_depth, int channels)
Definition io_base.hpp:409
void set_gray_1_2_4_to_8() const
Definition io_base.hpp:200
void set_add_alpha(uint_32 filler, filler_type type) const
Definition io_base.hpp:301
void set_read_user_transform(png_user_transform_ptr transform_fn)
Definition io_base.hpp:400
void set_strip_16() const
Definition io_base.hpp:392
The PNG reader class template. This is the low-level reading interface–use image class or consumer cl...
Definition reader.hpp:67
@ filler_after
Definition types.hpp:69
@ color_type_gray
Definition types.hpp:49
@ color_type_palette
Definition types.hpp:50
@ color_mask_alpha
Definition types.hpp:63
@ color_mask_rgb
Definition types.hpp:62
@ color_mask_palette
Definition types.hpp:60
@ chunk_tRNS
Definition types.hpp:104
IO transformation class template. Converts image color space.
Definition convert_color_space.hpp:257
IO transformation class template. Converts image color space.
Definition convert_color_space.hpp:55
basic_alpha_pixel_traits< component_type > alpha_traits
Definition convert_color_space.hpp:58
static void handle_16(reader &io)
Definition convert_color_space.hpp:107
static void expand_8_to_16(png_struct *, png_row_info *row_info, byte *row)
Definition convert_color_space.hpp:74
static void handle_palette(reader &io)
Definition convert_color_space.hpp:161
pixel_traits< pixel > traits
Definition convert_color_space.hpp:56
static void handle_rgb(reader &io)
Definition convert_color_space.hpp:197
void operator()(reader &io) const
Definition convert_color_space.hpp:61
static void dump_row(byte const *row, uint_32 width)
Definition convert_color_space.hpp:95
traits::component_type component_type
Definition convert_color_space.hpp:57
static void handle_gray(reader &io)
Definition convert_color_space.hpp:221
static void handle_alpha(reader &io, uint_32 filler)
Definition convert_color_space.hpp:130