I've ported coot-0.6.2 to be compatible with libpng15, please review
attached patch.

Also available here:

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sci-chemistry/coot/files/0.6.2-libpng15.patch?view=log

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sci-chemistry/coot/files/0.6.2-libpng15.patch?revision=1.1&view=markup

It should be fine with any of libpng 1.2, 1.4 and 1.5

Most of the "porting" was done by mimicing upstream GIMP patch:

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-gfx/gimp/files/gimp-libpng15-v2.diff?view=log

Thanks, Samuli Suominen
--- ccp4mg-utils/ppmutil.cc
+++ ccp4mg-utils/ppmutil.cc
@@ -2494,15 +2494,21 @@
 
   pixels = new unsigned char[width*height*colourspace];
 
+  png_colorp palette;
+  int num_trans;
+#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >=4
+  png_bytep trans_alpha;
+#endif
+
   for (int i=0; i<height; i++){
     if(color_type==PNG_COLOR_TYPE_PALETTE){
       for (int j=0; j<width; j++){
-        pixels[i*width*colourspace+j*colourspace] = png_ptr->palette[row_pointers[i][j]].red;
-        pixels[i*width*colourspace+j*colourspace+1] = png_ptr->palette[row_pointers[i][j]].green;
-        pixels[i*width*colourspace+j*colourspace+2] = png_ptr->palette[row_pointers[i][j]].blue;
-        if(row_pointers[i][j]<png_ptr->num_trans){
+        pixels[i*width*colourspace+j*colourspace] = palette[row_pointers[i][j]].red;
+        pixels[i*width*colourspace+j*colourspace+1] = palette[row_pointers[i][j]].green;
+        pixels[i*width*colourspace+j*colourspace+2] = palette[row_pointers[i][j]].blue;
+        if(row_pointers[i][j]<num_trans){
 #if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >=4
-         pixels[i*width*colourspace+j*colourspace+3] = png_ptr->trans_alpha[row_pointers[i][j]];
+         pixels[i*width*colourspace+j*colourspace+3] = trans_alpha[row_pointers[i][j]];
 #else
          pixels[i*width*colourspace+j*colourspace+3] = png_ptr->trans[row_pointers[i][j]];
 #endif

Reply via email to