X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.h;h=62765086a69c5d7b4605d38a8037c275507071ce;hb=d49e24866f6f989a0e3a00a29281f1f9a1a1d54c;hp=73c25d864444e132f04f96983039346e4d170de8;hpb=dd0cc409db510efe7cde8d7f0df6ec370be16c60;p=rrdtool.git diff --git a/src/rrd_graph.h b/src/rrd_graph.h index 73c25d8..6276508 100644 --- a/src/rrd_graph.h +++ b/src/rrd_graph.h @@ -14,8 +14,6 @@ #include "rrd_tool.h" #include "rrd_rpncalc.h" -#define MAX_VNAME_LEN 255 -#define DEF_NAM_FMT "%255[-_A-Za-z0-9]" #define ALTYGRID 0x01 /* use alternative y grid algorithm */ #define ALTAUTOSCALE 0x02 /* use alternative algorithm to find lower and upper bounds */ @@ -43,15 +41,18 @@ enum grc_en { GRC_CANVAS = 0, GRC_BACK, GRC_SHADEA, GRC_SHADEB, #define GRIDWIDTH 0.4 enum gf_en { GF_PRINT = 0, GF_GPRINT, GF_COMMENT, GF_HRULE, GF_VRULE, GF_LINE, - GF_AREA, GF_STACK, GF_TICK, + GF_AREA, GF_STACK, GF_TICK, GF_TEXTALIGN, GF_DEF, GF_CDEF, GF_VDEF, GF_SHIFT, GF_XPORT }; +enum txa_en { TXA_LEFT = 0, TXA_RIGHT, TXA_CENTER, TXA_JUSTIFIED }; + enum vdef_op_en { VDEF_MAXIMUM = 0 /* like the MAX in (G)PRINT */ , VDEF_MINIMUM /* like the MIN in (G)PRINT */ , VDEF_AVERAGE /* like the AVERAGE in (G)PRINT */ + , VDEF_STDEV /* the standard deviation */ , VDEF_PERCENT /* Nth percentile */ , VDEF_TOTAL /* average multiplied by time */ , VDEF_FIRST /* first non-unknown value and time */ @@ -60,11 +61,13 @@ enum vdef_op_en { , VDEF_LSLINT /* least squares line y_intercept */ , VDEF_LSLCORREL /* least squares line correlation coefficient */ }; -enum text_prop_en { TEXT_PROP_DEFAULT = 0, /* default settings */ +enum text_prop_en { + TEXT_PROP_DEFAULT = 0, /* default settings */ TEXT_PROP_TITLE, /* properties for the title */ TEXT_PROP_AXIS, /* for the numbers next to the axis */ TEXT_PROP_UNIT, /* for the vertical unit description */ - TEXT_PROP_LEGEND, /* fot the legend below the graph */ + TEXT_PROP_LEGEND, /* for the legend below the graph */ + TEXT_PROP_WATERMARK, /* for the little text to the side of the graph */ TEXT_PROP_LAST }; @@ -86,6 +89,7 @@ typedef struct gfx_color_t { typedef struct text_prop_t { double size; char font[1024]; + PangoFontDescription *font_desc; } text_prop_t; @@ -168,6 +172,14 @@ typedef struct graph_desc_t { rrd_value_t *data; /* the raw data drawn from the rrd */ rrd_value_t *p_data; /* processed data, xsize elments */ double linewidth; /* linewideth */ + + /* dashed line stuff */ + int dash; /* boolean, draw dashed line? */ + double *p_dashes; /* pointer do dash array which keeps the lengths of dashes */ + int ndash; /* number of dash segments */ + double offset; /* dash offset along the line */ + + enum txa_en txtalign; /* change default alignment strategy for text */ } graph_desc_t; typedef struct image_desc_t { @@ -175,7 +187,6 @@ typedef struct image_desc_t { /* configuration of graph */ char graphfile[MAXPATH]; /* filename for graphic */ - FILE *graphhandle; /* FILE to use if filename is "-" */ long xsize, ysize; /* graph area size in pixels */ struct gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */ text_prop_t text_prop[TEXT_PROP_LAST]; /* text properties */ @@ -207,11 +218,14 @@ typedef struct image_desc_t { existing one is out of date */ int slopemode; /* connect the dots of the curve directly, not using a stair */ int logarithmic; /* scale the yaxis logarithmic */ + double force_scale_min; /* Force a scale--min */ + double force_scale_max; /* Force a scale--max */ /* status information */ - + int with_markup; long xorigin, yorigin; /* where is (0,0) of the graph */ long ximg, yimg; /* total size of the image */ + size_t rendered_image_size; double zoom; double magfact; /* numerical magnitude */ long base; /* 1000 or 1024 depending on what we graph */ @@ -224,6 +238,7 @@ typedef struct image_desc_t { int extra_flags; /* flags for boolean options */ /* data elements */ + unsigned char *rendered_image; long prt_c; /* number of print elements */ long gdes_c; /* number of graphics elements */ graph_desc_t *gdes; /* points to an array of graph elements */ @@ -231,6 +246,9 @@ typedef struct image_desc_t { cairo_t *cr; /* drawin context */ cairo_font_options_t *font_options; /* cairo font options */ cairo_antialias_t graph_antialias; /* antialiasing for the graph */ + PangoLayout *layout; /* the pango layout we use for writing fonts */ + rrd_info_t *grinfo; /* root pointer to extra graph info */ + rrd_info_t *grinfo_current; /* pointing to current entry */ } image_desc_t; /* Prototypes */ @@ -294,8 +312,7 @@ time_t find_next_time( enum tmt_en, long); int print_calc( - image_desc_t *, - char ***); + image_desc_t *); int leg_place( image_desc_t *, int *); @@ -314,8 +331,7 @@ void grid_paint( int lazy_check( image_desc_t *); int graph_paint( - image_desc_t *, - char ***); + image_desc_t *); int gdes_alloc( image_desc_t *); @@ -323,17 +339,9 @@ int scan_for_col( const char *const, int, char *const); -int rrd_graph( - int, - char **, - char ***, - int *, - int *, - FILE *, - double *, - double *); void rrd_graph_init( image_desc_t *); + void rrd_graph_options( int, char **, @@ -361,8 +369,7 @@ int vdef_percent_compar( const void *); int graph_size_location( image_desc_t *, - int - ); + int); /* create a new line */ @@ -414,8 +421,7 @@ void gfx_text( double x, double y, gfx_color_t color, - char *font, - double size, + PangoFontDescription *font_desc, double tabwidth, double angle, enum gfx_h_align_en h_align, @@ -426,8 +432,7 @@ void gfx_text( double gfx_get_text_width( image_desc_t *im, double start, - char *font, - double size, + PangoFontDescription *font_desc, double tabwidth, char *text); @@ -447,3 +452,8 @@ void gfx_area_fit( double *y); #endif + +void grinfo_push( + image_desc_t *im, + char *key, + rrd_info_type_t type, rrd_infoval_t value);