X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.h;h=8b86e864667e67f3897625742ceb84cf45aed9e6;hb=6d9b8ecd5a3e2f9ce9df0f46d0818bc36a93ec5c;hp=2c9309beef93057ae9d79f5652ba05a752fe4e19;hpb=dd86fdf1b4d99437b9aa19934e02230c090cc1d5;p=rrdtool.git diff --git a/src/rrd_graph.h b/src/rrd_graph.h index 2c9309b..8b86e86 100644 --- a/src/rrd_graph.h +++ b/src/rrd_graph.h @@ -1,12 +1,19 @@ #ifndef _RRD_GRAPH_H #define _RRD_GRAPH_H +#define y0 cairo_y0 +#define y1 cairo_y1 +#define index cairo_index + +#include +#include +#include +#include +#include + #include "rrd_tool.h" #include "rrd_rpncalc.h" -#include "rrd_gfx.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 */ @@ -34,18 +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, -#ifdef WITH_PIECHART - GF_PART, -#endif 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 */ @@ -54,17 +61,35 @@ 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 }; + +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 }; + +/* cairo color components */ +typedef struct gfx_color_t { + double red; + double green; + double blue; + double alpha; +} gfx_color_t; + + typedef struct text_prop_t { double size; char font[1024]; + PangoFontDescription *font_desc; } text_prop_t; @@ -101,7 +126,6 @@ typedef struct ylab_t { int lfac[4]; /* associated label spacing */ } ylab_t; - /* this structure describes the elements which can make up a graph. because they are quite diverse, not all elements will use all the possible parts of the structure. */ @@ -122,7 +146,7 @@ typedef struct graph_desc_t { long ds; /* data source number */ enum cf_en cf; /* consolidation function */ enum cf_en cf_reduce; /* consolidation function for reduce_data() */ - gfx_color_t col; /* graph color */ + struct gfx_color_t col; /* graph color */ char format[FMT_LEG_LEN + 5]; /* format for PRINT AND GPRINT */ char legend[FMT_LEG_LEN + 5]; /* legend */ int strftm; /* should the VDEF legend be formated with strftime */ @@ -148,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 { @@ -155,12 +187,8 @@ 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 */ -#ifdef WITH_PIECHART - long piesize; /* size of the piechart */ -#endif - gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */ + struct gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */ text_prop_t text_prop[TEXT_PROP_LAST]; /* text properties */ char ylegend[210]; /* legend along the yaxis */ char title[210]; /* title for graph */ @@ -184,19 +212,22 @@ typedef struct image_desc_t { grindlines falls in integer pixel values */ char *imginfo; /* construct an