31 #ifndef PNGPP_IO_BASE_HPP_INCLUDED
32 #define PNGPP_IO_BASE_HPP_INCLUDED
42 trace_io_transform(
char const* fmt, ...)
44 #ifdef DEBUG_IO_TRANSFORM
47 fprintf(stderr,
"TRANSFORM_IO: ");
48 vfprintf(stderr, fmt, va);
52 #define TRACE_IO_TRANSFORM trace_io_transform
194 return png_get_valid(
m_png,
199 #if defined(PNG_READ_EXPAND_SUPPORTED)
202 TRACE_IO_TRANSFORM(
"png_set_expand_gray_1_2_4_to_8\n");
203 png_set_expand_gray_1_2_4_to_8(
m_png);
208 TRACE_IO_TRANSFORM(
"png_set_palette_to_rgb\n");
209 png_set_palette_to_rgb(
m_png);
214 TRACE_IO_TRANSFORM(
"png_set_tRNS_to_alpha\n");
215 png_set_tRNS_to_alpha(
m_png);
217 #endif // defined(PNG_READ_EXPAND_SUPPORTED)
219 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
222 TRACE_IO_TRANSFORM(
"png_set_bgr\n");
227 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
230 TRACE_IO_TRANSFORM(
"png_set_gray_to_rgb\n");
231 png_set_gray_to_rgb(
m_png);
235 #ifdef PNG_FLOATING_POINT_SUPPORTED
238 double red_weight = -1.0,
239 double green_weight = -1.0)
const
241 TRACE_IO_TRANSFORM(
"png_set_rgb_to_gray: error_action=%d,"
242 " red_weight=%lf, green_weight=%lf\n",
243 error_action, red_weight, green_weight);
245 png_set_rgb_to_gray(
m_png, error_action, red_weight, green_weight);
253 TRACE_IO_TRANSFORM(
"png_set_rgb_to_gray_fixed: error_action=%d,"
254 " red_weight=%d, green_weight=%d\n",
255 error_action, red_weight, green_weight);
257 png_set_rgb_to_gray_fixed(
m_png, error_action,
258 red_weight, green_weight);
260 #endif // PNG_FLOATING_POINT_SUPPORTED
265 #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
268 TRACE_IO_TRANSFORM(
"png_set_strip_alpha\n");
269 png_set_strip_alpha(
m_png);
273 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) \
274 || defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
277 TRACE_IO_TRANSFORM(
"png_set_swap_alpha\n");
278 png_set_swap_alpha(
m_png);
282 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) \
283 || defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
286 TRACE_IO_TRANSFORM(
"png_set_invert_alpha\n");
287 png_set_invert_alpha(
m_png);
291 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
294 TRACE_IO_TRANSFORM(
"png_set_filler: filler=%08x, type=%d\n",
297 png_set_filler(
m_png, filler, type);
300 #if !defined(PNG_1_0_X)
303 TRACE_IO_TRANSFORM(
"png_set_add_alpha: filler=%08x, type=%d\n",
306 png_set_add_alpha(
m_png, filler, type);
309 #endif // PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED
311 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
314 TRACE_IO_TRANSFORM(
"png_set_swap\n");
319 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
322 TRACE_IO_TRANSFORM(
"png_set_packing\n");
323 png_set_packing(
m_png);
327 #if defined(PNG_READ_PACKSWAP_SUPPORTED) \
328 || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
331 TRACE_IO_TRANSFORM(
"png_set_packswap\n");
332 png_set_packswap(
m_png);
336 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
338 byte alpha_bits = 0)
const
340 TRACE_IO_TRANSFORM(
"png_set_shift: red_bits=%d, green_bits=%d,"
341 " blue_bits=%d, alpha_bits=%d\n",
342 red_bits, green_bits, blue_bits, alpha_bits);
347 throw error(
"set_shift: expected RGB or RGBA color type");
351 bits.green = green_bits;
352 bits.blue = blue_bits;
353 bits.alpha = alpha_bits;
354 png_set_shift(
m_png, & bits);
359 TRACE_IO_TRANSFORM(
"png_set_shift: gray_bits=%d, alpha_bits=%d\n",
360 gray_bits, alpha_bits);
365 throw error(
"set_shift: expected Gray or Gray+Alpha"
369 bits.gray = gray_bits;
370 bits.alpha = alpha_bits;
371 png_set_shift(
m_png, & bits);
373 #endif // PNG_READ_SHIFT_SUPPORTED || PNG_WRITE_SHIFT_SUPPORTED
375 #if defined(PNG_READ_INTERLACING_SUPPORTED) \
376 || defined(PNG_WRITE_INTERLACING_SUPPORTED)
379 TRACE_IO_TRANSFORM(
"png_set_interlace_handling\n");
380 return png_set_interlace_handling(
m_png);
384 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
387 TRACE_IO_TRANSFORM(
"png_set_invert_mono\n");
388 png_set_invert_mono(
m_png);
392 #if defined(PNG_READ_16_TO_8_SUPPORTED)
395 TRACE_IO_TRANSFORM(
"png_set_strip_16\n");
396 png_set_strip_16(
m_png);
400 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
403 TRACE_IO_TRANSFORM(
"png_set_read_user_transform_fn\n");
404 png_set_read_user_transform_fn(
m_png, transform_fn);
408 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) \
409 || defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
412 TRACE_IO_TRANSFORM(
"png_set_user_transform_info: bit_depth=%d,"
413 " channels=%d\n", bit_depth, channels);
415 png_set_user_transform_info(
m_png, info, bit_depth, channels);
422 return png_get_io_ptr(
m_png);
450 longjmp(png_jmpbuf(
m_png), -1);
468 #endif // PNGPP_IO_BASE_HPP_INCLUDED