#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 */
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 {
/* 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 */
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 */
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 */
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 */
cairo_t *cr; /* drawin context */
cairo_font_options_t *font_options; /* cairo font options */
cairo_antialias_t graph_antialias; /* antialiasing for the graph */
+
+ info_t *grinfo; /* root pointer to extra graph info */
+ info_t *grinfo_current; /* pointing to current entry */
} image_desc_t;
/* Prototypes */
enum tmt_en,
long);
int print_calc(
- image_desc_t *,
- char ***);
+ image_desc_t *);
int leg_place(
image_desc_t *,
int *);
int lazy_check(
image_desc_t *);
int graph_paint(
- image_desc_t *,
- char ***);
+ image_desc_t *);
int gdes_alloc(
image_desc_t *);
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(
const void *);
int graph_size_location(
image_desc_t *,
- int
- );
+ int);
/* create a new line */
double *y);
#endif
+
+void grinfo_push(
+ image_desc_t *im,
+ char *key,
+ enum info_type type,
+ infoval value);