X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_gfx.h;h=dacdd694c9206801ff9f8cd677f22241e1bee9c4;hp=2b05335d1c3179d1dceaaafec2a6a9933272b194;hb=657d850f957a2dd703e3aab2d7cde4b0f9711c15;hpb=35f5945e114df7324be00de01bcde77e096a2373 diff --git a/src/rrd_gfx.h b/src/rrd_gfx.h index 2b05335..dacdd69 100644 --- a/src/rrd_gfx.h +++ b/src/rrd_gfx.h @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2.0 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 **************************************************************************** * rrd_gfx.h generic graphics adapter library ****************************************************************************/ @@ -8,117 +8,176 @@ #define RRD_GFX_H #define LIBART_COMPILATION +#define y0 libart_y0 +#define y1 libart_y1 +#define gamma libart_gamma #include #include #include "art_rgba_svp.h" +#undef gamma +#undef y0 +#undef y1 -enum gfx_if_en {IF_PNG=0,IF_SVG,IF_EPS,IF_PDF}; -enum gfx_en { GFX_LINE=0,GFX_AREA,GFX_TEXT }; -enum gfx_h_align_en { GFX_H_NULL=0, GFX_H_LEFT, GFX_H_RIGHT, GFX_H_CENTER }; -enum gfx_v_align_en { GFX_V_NULL=0, GFX_V_TOP, GFX_V_BOTTOM, GFX_V_CENTER }; + +enum gfx_if_en { IF_PNG = 0, IF_SVG, IF_EPS, IF_PDF }; +enum gfx_en { GFX_LINE = 0, GFX_AREA, GFX_TEXT }; +enum gfx_h_align_en { GFX_H_NULL = 0, GFX_H_LEFT, GFX_H_RIGHT, GFX_H_CENTER }; +enum gfx_v_align_en { GFX_V_NULL = 0, GFX_V_TOP, GFX_V_BOTTOM, GFX_V_CENTER }; +enum gfx_aa_type_en { AA_NORMAL = 0, AA_LIGHT, AA_NONE }; typedef unsigned long gfx_color_t; -typedef struct gfx_node_t { - enum gfx_en type; /* type of graph element */ - gfx_color_t color; /* color of element 0xRRGGBBAA alpha 0xff is solid*/ - double size; /* font size, line width */ - double dash_on, dash_off; /* dash line fragments lengths */ - int closed_path; - int points; - int points_max; - char *filename; /* font or image filename */ - char *text; - ArtVpath *path; /* path */ - double x,y; /* position */ - double angle; /* text angle */ - enum gfx_h_align_en halign; /* text alignement */ - enum gfx_v_align_en valign; /* text alignement */ - double tabwidth; - struct gfx_node_t *next; +typedef struct gfx_node_t { + enum gfx_en type; /* type of graph element */ + gfx_color_t color; /* color of element 0xRRGGBBAA alpha 0xff is solid */ + double size; /* font size, line width */ + double dash_on, dash_off; /* dash line fragments lengths */ + int closed_path; + int points; + int points_max; + char *filename; /* font or image filename */ + char *text; + ArtVpath *path; /* path */ + double x, y; /* position */ + double angle; /* text angle */ + enum gfx_h_align_en halign; /* text alignement */ + enum gfx_v_align_en valign; /* text alignement */ + double tabwidth; + struct gfx_node_t *next; } gfx_node_t; -typedef struct gfx_canvas_t -{ +typedef struct gfx_canvas_t { struct gfx_node_t *firstnode; struct gfx_node_t *lastnode; - enum gfx_if_en imgformat; /* image format */ - int interlaced; /* will the graph be interlaced? */ - double zoom; /* zoom for graph */ + enum gfx_if_en imgformat; /* image format */ + int interlaced; /* will the graph be interlaced? */ + double zoom; /* zoom for graph */ + double font_aa_threshold; /* no anti-aliasing for sizes <= */ + enum gfx_aa_type_en aa_type; /* anti-aliasing type (normal/light/none) */ } gfx_canvas_t; -gfx_canvas_t *gfx_new_canvas (void); +gfx_canvas_t *gfx_new_canvas( + void); /* create a new line */ -gfx_node_t *gfx_new_line (gfx_canvas_t *canvas, - double X0, double Y0, - double X1, double Y1, - double width, gfx_color_t color); - -gfx_node_t *gfx_new_dashed_line (gfx_canvas_t *canvas, - double X0, double Y0, - double X1, double Y1, - double width, gfx_color_t color, - double dash_on, double dash_off); +gfx_node_t *gfx_new_line( + gfx_canvas_t *canvas, + double X0, + double Y0, + double X1, + double Y1, + double width, + gfx_color_t color); + +gfx_node_t *gfx_new_dashed_line( + gfx_canvas_t *canvas, + double X0, + double Y0, + double X1, + double Y1, + double width, + gfx_color_t color, + double dash_on, + double dash_off); /* create a new area */ -gfx_node_t *gfx_new_area (gfx_canvas_t *canvas, - double X0, double Y0, - double X1, double Y1, - double X2, double Y2, - gfx_color_t color); +gfx_node_t *gfx_new_area( + gfx_canvas_t *canvas, + double X0, + double Y0, + double X1, + double Y1, + double X2, + double Y2, + gfx_color_t color); /* add a point to a line or to an area */ -int gfx_add_point (gfx_node_t *node, double x, double y); +int gfx_add_point( + gfx_node_t *node, + double x, + double y); /* close current path so it ends at the same point as it started */ -void gfx_close_path (gfx_node_t *node); +void gfx_close_path( + gfx_node_t *node); /* create a text node */ -gfx_node_t *gfx_new_text (gfx_canvas_t *canvas, - double x, double y, gfx_color_t color, - char* font, double size, - double tabwidth, double angle, - enum gfx_h_align_en h_align, - enum gfx_v_align_en v_align, - char* text); +gfx_node_t *gfx_new_text( + gfx_canvas_t *canvas, + double x, + double y, + gfx_color_t color, + char *font, + double size, + double tabwidth, + double angle, + enum gfx_h_align_en h_align, + enum gfx_v_align_en v_align, + char *text); /* measure width of a text string */ -double gfx_get_text_width ( gfx_canvas_t *canvas, - double start, char* font, double size, - double tabwidth, char* text, int rotation); +double gfx_get_text_width( + gfx_canvas_t *canvas, + double start, + char *font, + double size, + double tabwidth, + char *text, + int rotation); /* save image to file */ -int gfx_render (gfx_canvas_t *canvas, - art_u32 width, art_u32 height, - gfx_color_t background, FILE *fo); +int gfx_render( + gfx_canvas_t *canvas, + art_u32 width, + art_u32 height, + gfx_color_t background, + FILE * fo); /* free memory used by nodes this will also remove memory required for node chain and associated material */ -int gfx_destroy (gfx_canvas_t *canvas); +int gfx_destroy( + gfx_canvas_t *canvas); /* PNG support*/ -int gfx_render_png (gfx_canvas_t *canvas, - art_u32 width, art_u32 height, - gfx_color_t background, FILE *fo); -double gfx_get_text_width_libart ( double start, char* font, double size, - double tabwidth, char* text, int rotation); +int gfx_render_png( + gfx_canvas_t *canvas, + art_u32 width, + art_u32 height, + gfx_color_t background, + FILE * fo); +double gfx_get_text_width_libart( + gfx_canvas_t *canvas, + double start, + char *font, + double size, + double tabwidth, + char *text, + int rotation); /* SVG support */ -int gfx_render_svg (gfx_canvas_t *canvas, - art_u32 width, art_u32 height, - gfx_color_t background, FILE *fo); +int gfx_render_svg( + gfx_canvas_t *canvas, + art_u32 width, + art_u32 height, + gfx_color_t background, + FILE * fo); /* EPS support */ -int gfx_render_eps (gfx_canvas_t *canvas, - art_u32 width, art_u32 height, - gfx_color_t background, FILE *fo); +int gfx_render_eps( + gfx_canvas_t *canvas, + art_u32 width, + art_u32 height, + gfx_color_t background, + FILE * fo); /* PDF support */ -int gfx_render_pdf (gfx_canvas_t *canvas, - art_u32 width, art_u32 height, - gfx_color_t background, FILE *fo); +int gfx_render_pdf( + gfx_canvas_t *canvas, + art_u32 width, + art_u32 height, + gfx_color_t background, + FILE * fo); #endif