summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: adab745)
raw | patch | inline | side by side (parent: adab745)
author | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 10 Apr 2005 11:29:16 +0000 (11:29 +0000) | ||
committer | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 10 Apr 2005 11:29:16 +0000 (11:29 +0000) |
program/src/rrd_gfx.c | patch | blob | history | |
program/src/rrd_graph.c | patch | blob | history | |
program/src/rrd_graph_helper.c | patch | blob | history |
diff --git a/program/src/rrd_gfx.c b/program/src/rrd_gfx.c
index 8686d3dba0223dedcccde9e102dcfd49e913b886..9d5943cdd463953e414463614b509a8dfa32d4d9 100644 (file)
--- a/program/src/rrd_gfx.c
+++ b/program/src/rrd_gfx.c
art_vpath_add_point (vec, &points, &points_max, ART_END, 0, 0);
}
-static void gfx_round_scaled_coordinates(ArtVpath *vec)
-{
- while (vec->code != ART_END) {
- vec->x = floor(vec->x - LINEOFFSET + 0.5) + LINEOFFSET;
- vec->y = floor(vec->y - LINEOFFSET + 0.5) + LINEOFFSET;
- vec++;
- }
-}
/* find bbox of a string */
static void compute_string_bbox(gfx_string string) {
(char *)node->filename,
0,
&face );
- if ( error ) break;
-
+ if ( error ) {
+ rrd_set_error("faild to load %s",node->filename);
+ break;
+ }
error = FT_Set_Char_Size(face, /* handle to face object */
(long)(node->size*64),
(long)(node->size*64),
index 4b9cb6c9a27a764bb08b950f273cca1a794dbaf1..67fce90cb304134558c3ffb80c348ad71323d852 100644 (file)
--- a/program/src/rrd_graph.c
+++ b/program/src/rrd_graph.c
}
} /* for */
-
- if (im->gdes[i].col != 0x0){
+
+ /* *******************************************************
+ ___
+ | | ___
+ ____| | | |
+ | |___|
+ -------|---------------------------------------
+
+ if we know the value of y at time t was a then
+ we draw a square from t-1 to t with the value a.
+
+ ********************************************************* */
+ if (im->gdes[i].col != 0x0){
/* GF_LINE and friend */
if(stack_gf == GF_LINE ){
node = NULL;
for(ii=1;ii<im->xsize;ii++){
- if ( ! isnan(im->gdes[i].p_data[ii-1])
- && ! isnan(im->gdes[i].p_data[ii])){
- if (node == NULL){
- node = gfx_new_line(im->canvas,
- ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii-1]),
+ if (isnan(im->gdes[i].p_data[ii])){
+ node = NULL;
+ continue;
+ }
+ if ( node == NULL ) {
+ node = gfx_new_line(im->canvas,
+ ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii]),
ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]),
im->gdes[i].linewidth,
im->gdes[i].col);
- } else {
- gfx_add_point(node,ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]));
- }
- } else {
- node = NULL;
- }
+ } else {
+ gfx_add_point(node,ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii]));
+ gfx_add_point(node,ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]));
+ };
+
}
} else {
- int area_start=-1;
- node = NULL;
for(ii=1;ii<im->xsize;ii++){
- /* open an area */
- if ( ! isnan(im->gdes[i].p_data[ii-1])
- && ! isnan(im->gdes[i].p_data[ii])){
- if (node == NULL){
- float ybase = 0.0;
-/*
- if (im->gdes[i].gf == GF_STACK) {
-*/
- if ( (im->gdes[i].gf == GF_STACK)
- || (im->gdes[i].stack) ) {
-
- ybase = ytr(im,lastgdes->p_data[ii-1]);
- } else {
- ybase = ytr(im,areazero);
- }
- area_start = ii-1;
- node = gfx_new_area(im->canvas,
- ii-1+im->xorigin,ybase,
- ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii-1]),
- ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]),
- im->gdes[i].col
- );
- } else {
- gfx_add_point(node,ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]));
- }
+ /* keep things simple for now, just draw these bars
+ do not try to build a big and complex area */
+ float ybase;
+ if ( isnan(im->gdes[i].p_data[ii]) ) {
+ continue;
+ }
+ if ( im->gdes[i].stack ) {
+ ybase = ytr(im,lastgdes->p_data[ii]);
+ } else {
+ ybase = ytr(im,areazero);
}
-
- if ( node != NULL && (ii+1==im->xsize || isnan(im->gdes[i].p_data[ii]) )){
- /* GF_AREA STACK type*/
-/*
- if (im->gdes[i].gf == GF_STACK ) {
-*/
- if ( (im->gdes[i].gf == GF_STACK)
- || (im->gdes[i].stack) ) {
- int iii;
- for (iii=ii-1;iii>area_start;iii--){
- gfx_add_point(node,iii+im->xorigin,ytr(im,lastgdes->p_data[iii]));
- }
- } else {
- gfx_add_point(node,ii+im->xorigin,ytr(im,areazero));
- };
- node=NULL;
- };
+ if ( ybase == im->gdes[i].p_data[ii] ){
+ continue;
+ }
+ node = gfx_new_area(im->canvas,
+ ii-1+im->xorigin,ybase,
+ ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii]),
+ ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]),
+ im->gdes[i].col
+ );
+ gfx_add_point(node,ii+im->xorigin,ybase);
}
} /* else GF_LINE */
} /* if color != 0x0 */
/* make sure we do not run into trouble when stacking on NaN */
for(ii=0;ii<im->xsize;ii++){
if (isnan(im->gdes[i].p_data[ii])) {
- if (lastgdes && (im->gdes[i].gf == GF_STACK)) {
+ if (lastgdes && (im->gdes[i].stack)) {
im->gdes[i].p_data[ii] = lastgdes->p_data[ii];
} else {
im->gdes[i].p_data[ii] = ytr(im,areazero);
index bb6415de3f963b5fcbee6d7ad555449318a5a9b1..3ab6a5be1ea0d77dd431a78aed3d183877864041 100644 (file)
@@ -370,6 +370,10 @@ rrd_parse_PVHLAST(char *line, unsigned int *eaten, graph_desc_t *gdp, image_desc
return 1;
}
}
+ /* have simpler code in the drawing section */
+ if ( gdp->gf == GF_STACK ){
+ gdp->stack=1;
+ }
return 0;
}
case GF_COMMENT: /* text */
if (rrd_parse_legend(argv[i],&eaten,gdp)) return;
break;
+ case GF_STACK: /* vname-or-value[#color[:legend]] */
#ifdef WITH_PIECHART
case GF_PART: /* value[#color[:legend]] */
#endif
case GF_HRULE: /* value#color[:legend] */
case GF_LINE: /* vname-or-value[#color[:legend]][:STACK] */
case GF_AREA: /* vname-or-value[#color[:legend]][:STACK] */
- case GF_STACK: /* vname-or-value[#color[:legend]] */
case GF_TICK: /* vname#color[:num[:legend]] */
if (rrd_parse_PVHLAST(argv[i],&eaten,gdp,im)) return;
break;