X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_gfx.c;h=93341e709657c8a53dde176dafa16559e2ed47eb;hb=bc35c1638fc82446f3979d6f954a59a8e9333cc9;hp=3ad318a97e226294c94aa019345d72dd3a687c26;hpb=423b8ed6a9020e284c84683f6facbed8c3734db2;p=rrdtool.git diff --git a/src/rrd_gfx.c b/src/rrd_gfx.c index 3ad318a..93341e7 100644 --- a/src/rrd_gfx.c +++ b/src/rrd_gfx.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2.1 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.3 Copyright by Tobi Oetiker, 1997-2005 **************************************************************************** * rrd_gfx.c graphics wrapper for rrdtool **************************************************************************/ @@ -514,12 +514,12 @@ int gfx_render_png (gfx_canvas_t *canvas, unsigned long pys_height = height * canvas->zoom; const int bytes_per_pixel = 4; unsigned long rowstride = pys_width*bytes_per_pixel; /* bytes per pixel */ - art_u8 *buffer = art_new (art_u8, rowstride*pys_height); + /* fill that buffer with out background color */ - gfx_color_t *buffp; - long i; - for (i=0,buffp=(gfx_color_t *)buffer; - itype) { case GFX_LINE: case GFX_AREA: { - ArtVpath *vec,*pvec; + ArtVpath *vec; double dst[6]; - ArtSVP *svp,*svpt; + ArtSVP *svp; art_affine_scale(dst,canvas->zoom,canvas->zoom); vec = art_vpath_affine_transform(node->path,dst); if (node->closed_path) gfx_libart_close_path(node, &vec); /* gfx_round_scaled_coordinates(vec); */ - pvec = art_vpath_perturb(vec); - art_free(vec); + /* pvec = art_vpath_perturb(vec); + art_free(vec); */ if(node->type == GFX_LINE){ - svp = art_svp_vpath_stroke ( pvec, ART_PATH_STROKE_JOIN_ROUND, + svp = art_svp_vpath_stroke ( vec, ART_PATH_STROKE_JOIN_ROUND, ART_PATH_STROKE_CAP_ROUND, node->size*canvas->zoom,4,0.25); } else { - svp = art_svp_from_vpath ( pvec ); - svpt = art_svp_uncross( svp ); - art_svp_free(svp); - svp = art_svp_rewind_uncrossed(svpt,ART_WIND_RULE_NONZERO); - art_svp_free(svpt); + svp = art_svp_from_vpath ( vec ); + /* this takes time and is unnecessary since we make + sure elsewhere that the areas are going clock-whise */ + /* svpt = art_svp_uncross( svp ); + art_svp_free(svp); + svp = art_svp_rewind_uncrossed(svpt,ART_WIND_RULE_NONZERO); + art_svp_free(svpt); + */ } - art_free(pvec); + art_free(vec); /* this is from gnome since libart does not have this yet */ gnome_print_art_rgba_svp_alpha (svp ,0,0, pys_width, pys_height, node->color, buffer, rowstride, NULL); @@ -795,8 +798,9 @@ static int gfx_save_png (art_u8 *buffer, FILE *fp, long width, long height, lon text[0].compression = PNG_TEXT_COMPRESSION_NONE; png_set_text (png_ptr, info_ptr, text, 1); - /* lets make this fast */ - /* png_set_filter(png_ptr,0,PNG_FILTER_NONE); */ + /* lets make this fast while ending up with some increass in image size */ + png_set_filter(png_ptr,0,PNG_FILTER_NONE); + /* png_set_filter(png_ptr,0,PNG_FILTER_SUB); */ png_set_compression_level(png_ptr,1); /* png_set_compression_strategy(png_ptr,Z_HUFFMAN_ONLY); */ /* @@ -1209,7 +1213,7 @@ static void svg_text(FILE *fp, gfx_node_t *node) fputs(",", fp); svg_write_number(fp, y); fputs(") rotate(", fp); - svg_write_number(fp, node->angle); + svg_write_number(fp, -node->angle); fputs(")\"", fp); x = y = 0; svg_close_tag(fp); @@ -1413,7 +1417,7 @@ static int eps_prologue(eps_state *state) gfx_node_t *node; fputs( "%!PS-Adobe-3.0 EPSF-3.0\n" - "%%Creator: RRDtool 1.2.1 Tobias Oetiker, http://tobi.oetiker.ch\n" + "%%Creator: RRDtool 1.2.3 Tobias Oetiker, http://tobi.oetiker.ch\n" /* can't like weird chars here */ "%%Title: (RRDtool output)\n" "%%DocumentData: Clean7Bit\n" @@ -1605,7 +1609,7 @@ static void eps_write_text(eps_state *state, gfx_node_t *node) fputc(' ', fp); svg_write_number(fp, y); fputs(" translate ", fp); - svg_write_number(fp, -node->angle); + svg_write_number(fp, node->angle); fputs(" rotate 0 ", fp); svg_write_number(fp, ydelta); fputs(" moveto ", fp); @@ -1997,7 +2001,7 @@ static void pdf_write_text(pdf_state *state, gfx_node_t *node, } pdf_set_fill_color(s, node->color); if (node->angle != 0) { - double a = 2 * M_PI * -node->angle / 360.0; + double a = 2 * M_PI * node->angle / 360.0; double new_x, new_y; cos_a = cos(a); sin_a = sin(a);