X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_graph.h;h=25e9db227c03fa3ca242cd5e83ef23ae413742db;hp=8d5dc35cae9421998a60eadef125f2760fb6385f;hb=8106f1070a0affaa20c495fc9c38f192b199e8b7;hpb=1bf4194f061e0000eff34e71e6c46c7f72eb252f diff --git a/src/rrd_graph.h b/src/rrd_graph.h index 8d5dc35..25e9db2 100644 --- a/src/rrd_graph.h +++ b/src/rrd_graph.h @@ -1,12 +1,28 @@ #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 + +#ifdef HAVE_LIBGEN_H +/* for basename */ +# include +#endif + #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]" +#ifdef WIN32 +# include +# define MAXPATH MAX_PATH +#endif #define ALTYGRID 0x01 /* use alternative y grid algorithm */ #define ALTAUTOSCALE 0x02 /* use alternative algorithm to find lower and upper bounds */ @@ -20,7 +36,8 @@ #define FORCE_UNITS 0x100 /* mask for all FORCE_UNITS_* flags */ #define FORCE_UNITS_SI 0x100 /* force use of SI units in Y axis (no effect in linear graph, SI instead of E in log graph) */ -#define FULL_SIZE_MODE 0x200 /* -width and -height indicate the total size of the image */ +#define FULL_SIZE_MODE 0x200 /* -width and -height indicate the total size of the image */ +#define NO_RRDTOOL_TAG 0x400 /* disable the rrdtool tag */ enum tmt_en { TMT_SECOND = 0, TMT_MINUTE, TMT_HOUR, TMT_DAY, TMT_WEEK, TMT_MONTH, TMT_YEAR @@ -34,18 +51,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 +71,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 +136,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 +156,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 +182,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 +197,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 */ @@ -170,6 +208,10 @@ typedef struct image_desc_t { double grid_dash_on, grid_dash_off; xlab_t xlab_user; /* user defined labeling for xaxis */ char xlab_form[210]; /* format for the label on the xaxis */ + double second_axis_scale; /* relative to the first axis (0 to disable) */ + double second_axis_shift; /* how much is it shifted vs the first axis */ + char second_axis_legend[210]; /* label to put on the seond axis */ + char second_axis_format[210]; /* format for the numbers on the scond axis */ double ygridstep; /* user defined step for y grid */ int ylabfact; /* every how many y grid shall a label be written ? */ @@ -184,19 +226,22 @@ typedef struct image_desc_t { grindlines falls in integer pixel values */ char *imginfo; /* construct an