8
png_read_info (png_ptr, info_ptr);
{ 
    png_byte color_type = info_ptr->color_type;
    png_byte bit_depth  = info_ptr->bit_depth;
    ...

For last 2 lines I get

error: dereferencing pointer to incomplete type

What's wrong? In libpng 1.4 this was always ok.

Shahbaz
  • 46,337
  • 19
  • 116
  • 182
askovpen
  • 2,438
  • 22
  • 37

2 Answers2

20

The png_info struct was removed from the png.h in 1.5.0 and now you should use this pointer with the png_get_* and png_set_* functions.

As specified in libpng manual:

The png_info structure is designed to provide information about the PNG file. At one time, the fields of png_info were intended to be directly accessible to the user. However, this tended to cause problems with applications using dynamically loaded libraries, and as a result a set of interface functions for png_info (the png_get_*() and png_set_*() functions) was developed, and direct access to the png_info fields was deprecated..

For example:

png_uint_32 height;
height = png_get_image_height( png_ptr,  info_ptr);
MByD
  • 135,866
  • 28
  • 264
  • 277
  • don't exists functions `png_get_width`, `png_get_height`. how to get `info_ptr->height`, `info_ptr->width`? – askovpen May 11 '12 at 05:38
1

If you are trying to set contents of info_ptr which is no longer directly accessible, use png_set_IHDR()

As specified in libpng manual

Nalin
  • 135
  • 7