X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_gfx.h;fp=src%2Frrd_gfx.h;h=c3cd1e3972b44a25e8dc573b3399aabfd8e280e5;hb=37de076da2c2a0a786a41366de07fb3e1c18cdc5;hp=dacdd694c9206801ff9f8cd677f22241e1bee9c4;hpb=70d51a41b12b440fc2d55faa1958bdc9b4aaeff6;p=rrdtool.git diff --git a/src/rrd_gfx.h b/src/rrd_gfx.h index dacdd69..c3cd1e3 100644 --- a/src/rrd_gfx.h +++ b/src/rrd_gfx.h @@ -4,64 +4,35 @@ * rrd_gfx.h generic graphics adapter library ****************************************************************************/ -#ifndef RRD_GFX_H +#ifndef RRD_GFX_H #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 +#define y0 cairo_y0 +#define y1 cairo_y1 +#define index cairo_index +#include +#include +#include +#include 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; -} gfx_node_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 */ - 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); + +/* cairo color components */ +typedef struct gfx_color_t { + double red; + double green; + double blue; + double alpha; +} gfx_color_t; + /* create a new line */ -gfx_node_t *gfx_new_line( - gfx_canvas_t *canvas, +void gfx_line( + cairo_t * cr, double X0, double Y0, double X1, @@ -69,8 +40,8 @@ gfx_node_t *gfx_new_line( double width, gfx_color_t color); -gfx_node_t *gfx_new_dashed_line( - gfx_canvas_t *canvas, +void gfx_dashed_line( + cairo_t * cr, double X0, double Y0, double X1, @@ -81,8 +52,8 @@ gfx_node_t *gfx_new_dashed_line( double dash_off); /* create a new area */ -gfx_node_t *gfx_new_area( - gfx_canvas_t *canvas, +void gfx_new_area( + cairo_t * cr, double X0, double Y0, double X1, @@ -92,19 +63,19 @@ gfx_node_t *gfx_new_area( gfx_color_t color); /* add a point to a line or to an area */ -int gfx_add_point( - gfx_node_t *node, +void gfx_add_point( + cairo_t * cr, 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); + cairo_t * cr); /* create a text node */ -gfx_node_t *gfx_new_text( - gfx_canvas_t *canvas, +void gfx_text( + cairo_t * cr, double x, double y, gfx_color_t color, @@ -114,70 +85,27 @@ gfx_node_t *gfx_new_text( double angle, enum gfx_h_align_en h_align, enum gfx_v_align_en v_align, - char *text); + const char *text); /* measure width of a text string */ double gfx_get_text_width( - gfx_canvas_t *canvas, + cairo_t * cr, 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); - -/* free memory used by nodes this will also remove memory required for - node chain and associated material */ -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( - 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); - -/* EPS support */ -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); + char *text); + +/* convert color */ +gfx_color_t gfx_hex_to_col( + long unsigned int); +void gfx_line_fit( + cairo_t *, + double *, + double *); +void gfx_area_fit( + cairo_t *, + double *, + double *); #endif