X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgdpng.c;h=6b5016621fe64e288f1f8f3985c1d68b7ead5019;hb=849e869484f5ae47713dcc487e3f5a657c50a428;hp=19a89e1130ba503e02a6741d0e2b812a0e7bb7ae;hpb=7f4dd5f9c0f20e4d6690685641a9cd8ea621da51;p=rrdtool.git diff --git a/src/gdpng.c b/src/gdpng.c index 19a89e1..6b50166 100644 --- a/src/gdpng.c +++ b/src/gdpng.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.20 Copyright by Tobi Oetiker, 1997-2007 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * gdpng.c add PNG output routine to gd library *****************************************************************************/ @@ -9,54 +9,56 @@ #include typedef struct _jmpbuf_wrapper { - jmp_buf jmpbuf; + jmp_buf jmpbuf; } jmpbuf_wrapper; static jmpbuf_wrapper gdPngJmpbufStruct; -void gdImagePng(gdImagePtr im, FILE *out) +void gdImagePng( + gdImagePtr im, + FILE * out) { - int i; + int i; png_colorp palette; - png_structp png_write_ptr = - png_create_write_struct(PNG_LIBPNG_VER_STRING, - (png_voidp)NULL, - /* we would need to point to error handlers - here to do it properly */ - (png_error_ptr)NULL, (png_error_ptr)NULL); + png_structp png_write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, + (png_voidp) NULL, + /* we would need to point to error handlers + here to do it properly */ + (png_error_ptr) NULL, + (png_error_ptr) NULL); png_infop info_ptr = png_create_info_struct(png_write_ptr); if (setjmp(gdPngJmpbufStruct.jmpbuf)) { - png_destroy_write_struct(&png_write_ptr, &info_ptr); - return; + png_destroy_write_struct(&png_write_ptr, &info_ptr); + return; } - palette = (png_colorp)png_malloc (png_write_ptr, - im->colorsTotal*sizeof(png_color)); - if (palette == NULL){ - png_destroy_write_struct(&png_write_ptr, &info_ptr); - return; + palette = (png_colorp) png_malloc(png_write_ptr, + im->colorsTotal * sizeof(png_color)); + if (palette == NULL) { + png_destroy_write_struct(&png_write_ptr, &info_ptr); + return; } - - + + png_init_io(png_write_ptr, out); png_set_write_status_fn(png_write_ptr, NULL); - png_set_IHDR(png_write_ptr,info_ptr, - im->sx,im->sy,im->colorsTotal > 16 ? 8:4, - PNG_COLOR_TYPE_PALETTE, - im->interlace ? PNG_INTERLACE_ADAM7: PNG_INTERLACE_NONE , - PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - for(i=0;icolorsTotal;i++){ - palette[i].red = im->red[i]; - palette[i].green = im->green[i]; - palette[i].blue = im->blue[i]; + png_set_IHDR(png_write_ptr, info_ptr, + im->sx, im->sy, im->colorsTotal > 16 ? 8 : 4, + PNG_COLOR_TYPE_PALETTE, + im->interlace ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + for (i = 0; i < im->colorsTotal; i++) { + palette[i].red = im->red[i]; + palette[i].green = im->green[i]; + palette[i].blue = im->blue[i]; } png_set_PLTE(png_write_ptr, info_ptr, palette, im->colorsTotal); /* choose between speed (1) and space (9) optimisation */ /* we want to be fast ... */ - png_set_compression_level(png_write_ptr,1); - png_set_filter(png_write_ptr,PNG_FILTER_TYPE_BASE,PNG_NO_FILTERS); + png_set_compression_level(png_write_ptr, 1); + png_set_filter(png_write_ptr, PNG_FILTER_TYPE_BASE, PNG_NO_FILTERS); /* store file info */ png_write_info(png_write_ptr, info_ptr); png_set_packing(png_write_ptr); @@ -65,7 +67,3 @@ void gdImagePng(gdImagePtr im, FILE *out) png_free(png_write_ptr, palette); png_destroy_write_struct(&png_write_ptr, &info_ptr); } - - - -