X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.h;h=954b856c6407ef580552d9efd153bbbd8f4046a9;hb=afcd0eb5b0e71964e9c5691b4a9794c2f4059928;hp=fa0915289c7df6ec1422f230f786d36e176b9320;hpb=a98fc4d8a1733d6be8eb5d52430491de5305d88b;p=rrdtool.git diff --git a/src/rrd_graph.h b/src/rrd_graph.h index fa09152..954b856 100644 --- a/src/rrd_graph.h +++ b/src/rrd_graph.h @@ -7,7 +7,13 @@ /* this may configure __EXTENSIONS__ without which pango will fail to compile so load this early */ +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#include "../win32/config.h" +#else +#ifdef HAVE_CONFIG_H #include "../rrd_config.h" +#endif +#endif #include #include @@ -54,7 +60,7 @@ enum grc_en { GRC_CANVAS = 0, GRC_BACK, GRC_SHADEA, GRC_SHADEB, enum gf_en { GF_PRINT = 0, GF_GPRINT, GF_COMMENT, GF_HRULE, GF_VRULE, GF_LINE, GF_AREA,GF_GRAD, GF_STACK, GF_TICK, GF_TEXTALIGN, GF_DEF, GF_CDEF, GF_VDEF, GF_SHIFT, - GF_XPORT + GF_XPORT, GF_XAXIS, GF_YAXIS }; enum txa_en { TXA_LEFT = 0, TXA_RIGHT, TXA_CENTER, TXA_JUSTIFIED }; @@ -86,11 +92,16 @@ enum text_prop_en { enum legend_pos{ NORTH = 0, WEST, SOUTH, EAST }; enum legend_direction { TOP_DOWN = 0, BOTTOM_UP }; -enum gfx_if_en { IF_PNG = 0, IF_SVG, IF_EPS, IF_PDF }; +enum gfx_if_en { IF_PNG = 0, IF_SVG, IF_EPS, IF_PDF, + IF_XML=128, IF_CSV=129, IF_TSV=130, IF_SSV=131, IF_JSON=132, + IF_XMLENUM=133, IF_JSONTIME=134 +}; 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_type_en {GTYPE_TIME=0,GTYPE_XY=1}; + /* cairo color components */ typedef struct gfx_color_t { double red; @@ -99,6 +110,37 @@ typedef struct gfx_color_t { double alpha; } gfx_color_t; +typedef struct keyvalue_t { + char* key; + char* value; + int pos; + int flag; +} keyvalue_t; + +typedef struct keyint_t { + char*key; + int value; +} keyint_t; + +typedef struct parsedargs_t { + char *arg; /* copy of the parsed string - rewritten*/ + const char *arg_orig; /* original argument */ + int kv_cnt; /* number of key/value arguments */ + keyvalue_t *kv_args; /* key value arguments */ +} parsedargs_t; +void initParsedArguments(parsedargs_t*); +void freeParsedArguments(parsedargs_t*); +int addToArguments(parsedargs_t*, char*, char*, int); +int parseArguments(const char*, parsedargs_t*); +void dumpKeyValue(char* ,keyvalue_t*); +void dumpArguments(parsedargs_t*); +char* getKeyValueArgument(const char*, int, parsedargs_t*); +int getMappedKeyValueArgument(const char*,int, parsedargs_t*, + int*,keyint_t**); +int getLong(const char*,long *,char**,int); +int getDouble(const char*,double *,char**); +keyvalue_t* getFirstUnusedArgument(int, parsedargs_t*); +char* checkUnusedValues(parsedargs_t*); typedef struct text_prop_t { double size; @@ -112,6 +154,7 @@ typedef struct vdef_t { double param; /* parameter for function, if applicable */ double val; /* resulting value */ time_t when; /* timestamp, if applicable */ + int never; /* boolean, indicate that when value mean never */ } vdef_t; typedef struct xlab_t { @@ -149,6 +192,8 @@ typedef struct ylab_t { #define FMT_LEG_LEN 2000 #endif +# define MAX_AXIS 4 + typedef struct graph_desc_t { enum gf_en gf; /* graphing function */ int stack; /* boolean */ @@ -171,6 +216,7 @@ typedef struct graph_desc_t { time_t xrule; /* time for x rule line and for VDEF */ vdef_t vf; /* instruction for VDEF function */ rpnp_t *rpnp; /* instructions for CDEF function */ + char *rpn; /* string representation of rpn */ /* SHIFT implementation */ int shidx; /* gdes reference for offset (-1 --> constant) */ @@ -196,13 +242,17 @@ typedef struct graph_desc_t { double offset; /* dash offset along the line */ enum txa_en txtalign; /* change default alignment strategy for text */ + + /* the axis to use for this graph in x and y*/ + int xaxisidx; + int yaxisidx; } graph_desc_t; typedef struct image_desc_t { /* configuration of graph */ - char graphfile[MAXPATH]; /* filename for graphic */ + enum gfx_type_en graph_type; /* type of the graph */ 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 */ @@ -292,6 +342,8 @@ enum gf_en gf_conv( char *); enum gfx_if_en if_conv( char *); +enum gfx_type_en type_conv( + char *); enum tmt_en tmt_conv( char *); enum grc_en grc_conv( @@ -362,6 +414,17 @@ int lazy_check( image_desc_t *); int graph_paint( image_desc_t *); +int graph_paint_timestring( + image_desc_t *,int,int); +int graph_paint_xy( + image_desc_t *,int,int); +int rrd_graph_xport( + image_desc_t *); + +int graph_cairo_setup( + image_desc_t *); +int graph_cairo_finish( + image_desc_t *); int gdes_alloc( image_desc_t *); @@ -372,6 +435,10 @@ int scan_for_col( void rrd_graph_init( image_desc_t *); +void time_clean( + char *result, + char *format); + void rrd_graph_options( int, char **, @@ -506,3 +573,5 @@ void grinfo_push( image_desc_t *im, char *key, rrd_info_type_t type, rrd_infoval_t value); + +