--- console/f1tattoo/f1tattoo.cpp +++ console/f1tattoo/f1tattoo.cpp @@ -96,6 +96,10 @@ int c; int32_t r,g,b; + png_colorp palette; + int num_palette; + png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette); + if (fread(header, 1, 8, fp) < 8) { printf("Error reading PNG header\n"); fclose(fp); @@ -129,9 +133,9 @@ png_read_info(png_ptr, info_ptr); - printf("Image size: %ld x %ld\n", info_ptr->width, info_ptr->height); + printf("Image size: %ld x %ld\n", png_get_image_width(png_ptr, info_ptr), png_get_image_height(png_ptr, info_ptr)); - if (info_ptr->width != 3744U || info_ptr->height != rows ) { + if (png_get_image_width(png_ptr, info_ptr) != 3744U || png_get_image_height(png_ptr, info_ptr) != rows ) { printf("Image should be 3744 x %d", rows); return 1; } @@ -143,14 +147,14 @@ number_of_passes = png_set_interlace_handling(png_ptr); png_read_update_info(png_ptr, info_ptr); - printf("Color type: [%d] ", info_ptr->color_type); - switch (info_ptr->color_type) { + printf("Color type: [%d] ", png_get_color_type(png_ptr, info_ptr)); + switch (png_get_color_type(png_ptr, info_ptr)) { case PNG_COLOR_TYPE_GRAY: printf("PNG_COLOR_TYPE_GRAY\n"); break; case PNG_COLOR_TYPE_PALETTE: printf("PNG_COLOR_TYPE_PALETTE\n"); - if (!(info_ptr->valid & PNG_INFO_PLTE)) { + if (!(png_get_valid(png_ptr,info_ptr,PNG_INFO_PLTE))) { printf("PNG color type is indexed, but no palette found!"); goto err_read_png; } @@ -168,49 +172,49 @@ printf("unlnown PNG color type!\n"); goto err_read_png; } - printf("Bit depth : %d\n", info_ptr->bit_depth); - if (info_ptr->bit_depth != 8) { + printf("Bit depth : %d\n", png_get_bit_depth(png_ptr, info_ptr)); + if (png_get_bit_depth(png_ptr, info_ptr) != 8) { printf("Unsupported bit depth!\n"); goto err_read_png; } - if (info_ptr->valid & PNG_INFO_PLTE) { - printf("Palette : %d colors\n", info_ptr->num_palette); + if (png_get_valid(png_ptr,info_ptr,PNG_INFO_PLTE)) { + printf("Palette : %d colors\n", num_palette); } else { printf("Palette : NO\n"); } - printf("ROW bytes : %ld\n", info_ptr->rowbytes); + printf("ROW bytes : %ld\n", png_get_rowbytes(png_ptr, info_ptr)); raw_row_pointer = buf; - png_row_pointer = (png_byte*) malloc(info_ptr->rowbytes); + png_row_pointer = (png_byte*) malloc(png_get_rowbytes(png_ptr, info_ptr)); for (row=0; rowwidth < 3744U) + if (png_get_image_width(png_ptr, info_ptr) < 3744U) memset(raw_row_pointer, 0, 3744); - switch (info_ptr->color_type) { + switch (png_get_color_type(png_ptr, info_ptr)) { case PNG_COLOR_TYPE_GRAY: - for (col=0; colwidth; col++) { + for (col=0; colwidth; col++) { + for (col=0; colpalette[c].red; - g = info_ptr->palette[c].green; - b = info_ptr->palette[c].blue; + r = palette[c].red; + g = palette[c].green; + b = palette[c].blue; c = (r*11 + g*16 + b*5) / 32; raw_row_pointer[col] = c ^ 0xFF; } break; case PNG_COLOR_TYPE_RGB: - for (col=0; colwidth; col++) { + for (col=0; colwidth; col++) { + for (col=0; colwidth; col++) { + for (col=0; col