From af3d7d51a5c76a614035c441a4a9bb56ca71b8db Mon Sep 17 00:00:00 2001 From: losinshi Date: Tue, 2 Jan 2007 05:57:06 +0000 Subject: [PATCH] New feature in chart: average lines git-svn-id: file:///home/jan/tmp/wetterstation/trunk@205 dd492736-c11a-0410-ad51-8c26713eaf7f --- cronjob/chart/definitions.h | 2 + cronjob/chart/image_conf/example.conf | 5 ++ cronjob/chart/image_conf/hum_ex.conf | 5 ++ cronjob/chart/image_conf/press_ex.conf | 5 ++ cronjob/chart/image_conf/rain_ex.conf | 5 ++ cronjob/chart/image_conf/temp_ex.conf | 5 ++ cronjob/chart/image_conf/testimage.conf | 12 ++-- cronjob/chart/image_conf/wind_ex.conf | 5 ++ cronjob/chart/image_file/image_common.h | 2 + cronjob/chart/image_file/image_config.c | 2 + cronjob/chart/image_file/image_data.c | 88 +++++++++++++++++++++++-- cronjob/chart/image_file/image_data.h | 7 ++ cronjob/chart/image_file/image_draw.c | 19 +++++- debian/changelog | 6 ++ 14 files changed, 157 insertions(+), 11 deletions(-) diff --git a/cronjob/chart/definitions.h b/cronjob/chart/definitions.h index c3ef8d8..dd7737b 100644 --- a/cronjob/chart/definitions.h +++ b/cronjob/chart/definitions.h @@ -41,6 +41,7 @@ #define DEFAULT_LABEL_SUM "no" #define DEFAULT_ZERO_MIN "no" #define DEFAULT_AS_BARS "no" +#define DEFAULT_SHOW_AVERAGE "yes" #define DEFAULT_WIDTH "800" #define DEFAULT_HEIGHT "300" #define DEFAULT_SENS_ID "1" @@ -56,6 +57,7 @@ #define DEFAULT_DIA_BG_COLOR "F0:A0:D0:D0" #define DEFAULT_ZERO_LINE_COLOR "BF:80:80:40" #define DEFAULT_DIA_LINE_COLOR "60:30:50:30" +#define DEFAULT_DIA_AV_LINE_COLOR "30:60:50:30" #define DEFAULT_DIA_GRID_X_COLOR "60:60:60:EF" #define DEFAULT_DIA_GRID_Y_COLOR "60:60:60:EF" #define DEFAULT_DIA_BORDER_COLOR "a0:a0:a0:af" diff --git a/cronjob/chart/image_conf/example.conf b/cronjob/chart/image_conf/example.conf index ccd50dc..5fe0b89 100644 --- a/cronjob/chart/image_conf/example.conf +++ b/cronjob/chart/image_conf/example.conf @@ -62,6 +62,10 @@ y_axis_desc Temparatur ( x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average yes + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min no # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_conf/hum_ex.conf b/cronjob/chart/image_conf/hum_ex.conf index ceacea7..fed6c42 100644 --- a/cronjob/chart/image_conf/hum_ex.conf +++ b/cronjob/chart/image_conf/hum_ex.conf @@ -62,6 +62,10 @@ y_axis_desc Luftfeuchte (%) x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average yes + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min no # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_conf/press_ex.conf b/cronjob/chart/image_conf/press_ex.conf index a7d6afd..2e84bb6 100644 --- a/cronjob/chart/image_conf/press_ex.conf +++ b/cronjob/chart/image_conf/press_ex.conf @@ -62,6 +62,10 @@ y_axis_desc Luftdruck (hpa) x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average yes + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min no # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_conf/rain_ex.conf b/cronjob/chart/image_conf/rain_ex.conf index c08719e..a74af10 100644 --- a/cronjob/chart/image_conf/rain_ex.conf +++ b/cronjob/chart/image_conf/rain_ex.conf @@ -62,6 +62,10 @@ y_axis_desc Niederschlag (Liter) x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average no + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min yes # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 30:30:80:50 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_conf/temp_ex.conf b/cronjob/chart/image_conf/temp_ex.conf index 0379291..70c05fb 100644 --- a/cronjob/chart/image_conf/temp_ex.conf +++ b/cronjob/chart/image_conf/temp_ex.conf @@ -62,6 +62,10 @@ y_axis_desc Temparatur ( x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average yes + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min no # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_conf/testimage.conf b/cronjob/chart/image_conf/testimage.conf index ff40799..22dd9cb 100644 --- a/cronjob/chart/image_conf/testimage.conf +++ b/cronjob/chart/image_conf/testimage.conf @@ -5,14 +5,14 @@ manual_table no manual_table_name auss2_data table_field temp #table_field press -gen_interval 10 -show_interval 10d -label_interval 1d -fixed_timepoint yes +gen_interval 1 +show_interval 1y +label_interval 30d +fixed_timepoint no timepoint 2006-12-17-13-00 width 800 height 300 -ensor_id 1 +sensor_id 4 value_koeffizient 0.1 #value_koeffizient 1.0 unit °C @@ -23,6 +23,7 @@ x_format_extra %d.%m.%y| %H:%M zero_min no as_bars no label_sum no +show_average yes @@ -30,6 +31,7 @@ bg_color DF:DF:EF:00 dia_bg_color F0:A0:D0:D0 zero_line_color BF:80:80:40 dia_line_color 60:30:50:30 +dia_av_line_color 50:60:30:D0 dia_grid_x_color 60:60:60:EF dia_grid_y_color 60:60:60:EF dia_border_color a0:a0:a0:af diff --git a/cronjob/chart/image_conf/wind_ex.conf b/cronjob/chart/image_conf/wind_ex.conf index 4362fed..4d6c9e1 100644 --- a/cronjob/chart/image_conf/wind_ex.conf +++ b/cronjob/chart/image_conf/wind_ex.conf @@ -62,6 +62,10 @@ y_axis_desc Windgeschwindigkeit (km/h) x_format %d.%m.%y # 'Normale' Labels x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label +# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll +# Funktioniert NICHT in Verbindung mit Balkendiagrammen +show_average yes + # Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig. # Sonst sollten sie imer auf no stehen! zero_min no # Die Nullinie auf jeden Fall anzeigen @@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten zero_line_color DF:80:80:40 # Farbe der 'Nulllinie' dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie +dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich) diff --git a/cronjob/chart/image_file/image_common.h b/cronjob/chart/image_file/image_common.h index 7e616fd..4ef8a14 100644 --- a/cronjob/chart/image_file/image_common.h +++ b/cronjob/chart/image_file/image_common.h @@ -54,12 +54,14 @@ typedef struct image_cfg { char *x_fmt; /* Formatstring fuer die restlichen Labels */ int zero_min; /* Nullinie auf jeden Fall anzeigen */ int bars; /* Balken malen statt einer Linie */ + int show_average; /* Durchschnittslinie zeichnen */ int dflt_dir; /* Standart - Verzeichnis fuer die Bilder */ /* Farben */ img_color_ptr bg_color; img_color_ptr dia_bg_color; img_color_ptr dia_line_color; + img_color_ptr dia_av_line_color; img_color_ptr dia_grid_x_color; img_color_ptr dia_grid_y_color; img_color_ptr dia_border_color; diff --git a/cronjob/chart/image_file/image_config.c b/cronjob/chart/image_file/image_config.c index 72b1b7a..6c9123c 100644 --- a/cronjob/chart/image_file/image_config.c +++ b/cronjob/chart/image_file/image_config.c @@ -61,6 +61,7 @@ static const config_keyword keywords[] = { {"sensor_id", read_int, &(img_cfg.sens_id), DEFAULT_SENS_ID}, {"zero_min", read_yn, &(img_cfg.zero_min), DEFAULT_ZERO_MIN}, {"as_bars", read_yn, &(img_cfg.bars), DEFAULT_AS_BARS}, + {"show_average", read_yn, &(img_cfg.show_average), DEFAULT_SHOW_AVERAGE}, {"x_axis_desc", read_str, &(img_cfg.x_desc), DEFAULT_X_AX_DESC}, {"y_axis_desc", read_str, &(img_cfg.y_desc), DEFAULT_Y_AX_DESC}, {"x_format", read_fmt_str, &(img_cfg.x_fmt), DEFAULT_X_FORMAT}, @@ -71,6 +72,7 @@ static const config_keyword keywords[] = { {"bg_color", read_color, &(img_cfg.bg_color), DEFAULT_BG_COLOR}, {"dia_bg_color", read_color, &(img_cfg.dia_bg_color), DEFAULT_DIA_BG_COLOR}, {"dia_line_color", read_color, &(img_cfg.dia_line_color), DEFAULT_DIA_LINE_COLOR}, + {"dia_av_line_color", read_color, &(img_cfg.dia_av_line_color), DEFAULT_DIA_AV_LINE_COLOR}, {"dia_grid_x_color", read_color, &(img_cfg.dia_grid_x_color), DEFAULT_DIA_GRID_X_COLOR}, {"dia_grid_y_color", read_color, &(img_cfg.dia_grid_y_color), DEFAULT_DIA_GRID_Y_COLOR}, {"dia_border_color", read_color, &(img_cfg.dia_border_color), DEFAULT_DIA_BORDER_COLOR}, diff --git a/cronjob/chart/image_file/image_data.c b/cronjob/chart/image_file/image_data.c index 858dc0e..4db7202 100644 --- a/cronjob/chart/image_file/image_data.c +++ b/cronjob/chart/image_file/image_data.c @@ -40,10 +40,11 @@ static pix_list_ptr max = NULL; /* Pointer auf Max - Element */ double real_min = 0; /* Realer Max - Wert */ double real_max = 0; /* Realer Min - Wert */ static long base_time; /* Zeit an der 0-Koordinate (lt. Datenbank!) */ +int max_diff = 0; /* Maximaler Abstand, den 2 Werte haben duerfen, ohne das die Linie unterbrochen wird */ /* Funktionsdefinitionen */ -static pix_list_ptr add_pix_value(pix_list_ptr , long, int , int, int ); +static pix_list_ptr add_pix_value(pix_list_ptr , int , int, int ); static char *get_conn_string(); static PGconn *pg_check_connect(char *); static PGresult *pg_check_exec(PGconn *, char *); @@ -297,7 +298,6 @@ pix_list_ptr get_pix_list(int c_width){ int pix_coord; /* x - Koordinate, an die der Wert gehoert */ int i, s, t, u; /* Laufvariable zum durchlaufen des Datenbank-resuls */ long timestamp; - int max_diff; pix_list_ptr list_ptr = NULL; /* Zeiger auf den Anfang der Wertliste */ pix_list_ptr temp_ptr = NULL; /* Zeiger zum durchlaufen der Wertliste */ @@ -347,7 +347,7 @@ pix_list_ptr get_pix_list(int c_width){ pix_coord = floor( ((double)time_temp) * seconds_per_pix) ; /* Listenelement generieren */ - temp_ptr = add_pix_value(temp_ptr, timestamp, pix_coord, atoi( PQgetvalue(res, i, val_field) ) , max_diff); + temp_ptr = add_pix_value(temp_ptr, pix_coord, atoi( PQgetvalue(res, i, val_field) ) , max_diff); /* Rueckgabe- und Max/Min-pointer zuweisen */ if (list_ptr == NULL){ @@ -371,7 +371,7 @@ pix_list_ptr get_pix_list(int c_width){ time_temp = timestamp; } pix_coord = floor( ((double)time_temp) * seconds_per_pix) ; - temp_ptr = add_pix_value(temp_ptr, timestamp, pix_coord, 0 , max_diff); + temp_ptr = add_pix_value(temp_ptr, pix_coord, 0 , max_diff); list_ptr = temp_ptr; min = temp_ptr; max = temp_ptr; @@ -419,7 +419,7 @@ pix_list_ptr get_pix_list(int c_width){ } /* Speichert einen geholten Wert ab */ -static pix_list_ptr add_pix_value(pix_list_ptr ptr, long timestamp, int coord, int value, int max_diff){ +static pix_list_ptr add_pix_value(pix_list_ptr ptr, int coord, int value, int max_diff){ int old_coord; /* Erstes Element */ @@ -464,6 +464,84 @@ static pix_list_ptr add_pix_value(pix_list_ptr ptr, long timestamp, int coord, i } +/* Durchschnittslinie + * reale Werte, eff. Zeichenbreite */ +pix_list_ptr build_average_line(pix_list_ptr real_list, int c_width){ + + int list_count = 0; + int list_offset = 0; + int field_size = c_width; + int i,j,m; + double sum = 0; + double koeff = 0; + double count = 0; + + pix_list_ptr old_temp = real_list; + pix_list_ptr *old_ptr_field = malloc(sizeof(pix_list_ptr) * (field_size)); + pix_list_ptr new_list = NULL; + pix_list_ptr new_list_temp = NULL; + + list_offset = old_temp->x_pix_coord; + + DEBUGOUT2("list_offset %d\n", list_offset); + + for(; old_temp; old_temp = old_temp->next){ + if(list_count >= field_size){ + field_size += c_width; + realloc(old_ptr_field, sizeof(pix_list_ptr) * (field_size)); + } + + DEBUGOUT2("list_count: %d -- ", list_count); + DEBUGOUT2("old_temp->x_pix_coord: %d -- ",old_temp->x_pix_coord); + + while( (list_count + list_offset) > old_temp->x_pix_coord){ + old_ptr_field[list_count] = NULL; + list_count++; + DEBUGOUT1("Fuege Null hinzu\n"); + } + + old_ptr_field[list_count] = old_temp; + DEBUGOUT1("Fuege Wert hinzu\n"); + + list_count++; + } + + for(i = 0; i < list_count; i++){ + if(old_ptr_field[i] != NULL){ + sum = ((double)old_ptr_field[i]->value_sum) / ((double)old_ptr_field[i]->value_count); + count = 1; + for(j = 1; j < 30; j++){ + koeff = 0.9 - (0.01 * (3*j)); + m = 0; + if( (i - j) >= 0){ + if(old_ptr_field[i-j] != NULL){ + sum += (((double)old_ptr_field[i-j]->value_sum) / ((double)old_ptr_field[i-j]->value_count)) * koeff; + m++; + } + } + if( (i + j) < list_count){ + if(old_ptr_field[i+j] != NULL){ + sum += (((double)old_ptr_field[i+j]->value_sum) / ((double)old_ptr_field[i+j]->value_count)) * koeff; + m++; + } + } + count += m * koeff; + + } + new_list_temp = add_pix_value(new_list_temp, old_ptr_field[i]->x_pix_coord, floor(sum / count), max_diff); + + if(new_list == NULL){ + new_list = new_list_temp; + } + + } + } + + free(old_ptr_field); + + return new_list; +} + /* baut den String fuer die Postgres-Verbindung zusammen */ static char *get_conn_string(){ diff --git a/cronjob/chart/image_file/image_data.h b/cronjob/chart/image_file/image_data.h index aa3e9db..acc4dcd 100644 --- a/cronjob/chart/image_file/image_data.h +++ b/cronjob/chart/image_file/image_data.h @@ -50,6 +50,13 @@ typedef struct label_list { */ pix_list_ptr get_pix_list(int ); +/* Baut die Durchschnittslinie. + * 1. Argument: Die Daten der Linie mit den 'realen' Werten + * 2. Argument: die effektive Breite des Bereiches in dem gezeichnet werden soll + * Rueckgabe: die liste mit den Werten + */ +pix_list_ptr build_average_line(pix_list_ptr real_list, int c_width); + /* Max. Wert */ pix_list_ptr get_min_val(); diff --git a/cronjob/chart/image_file/image_draw.c b/cronjob/chart/image_file/image_draw.c index 549caa5..0e7ca7d 100644 --- a/cronjob/chart/image_file/image_draw.c +++ b/cronjob/chart/image_file/image_draw.c @@ -86,6 +86,7 @@ static gdImagePtr draw_image(gdImagePtr img){ /* Werte und Labels */ pix_list_ptr pix_list = NULL; + pix_list_ptr average_pix_list = NULL; label_list_ptr x_labels = NULL; label_list_ptr y_labels = NULL; @@ -117,6 +118,7 @@ static gdImagePtr draw_image(gdImagePtr img){ /* Farben */ color val_line_c = alloc_alpha_color(img, img_cfg.dia_line_color); + color av_line_c = alloc_alpha_color(img, img_cfg.dia_av_line_color); color zero_line_c = alloc_alpha_color(img, img_cfg.zero_line_color); color dia_bg_c = alloc_alpha_color(img, img_cfg.dia_bg_color); color diag_grid_x_c = alloc_alpha_color(img, img_cfg.dia_grid_x_color); @@ -165,7 +167,10 @@ static gdImagePtr draw_image(gdImagePtr img){ gdImageStringFT(img, &brect[0], desc_x_c, IMG_FONT, 9, 0 , (offset_x_left + (dia_width / 2)) - (x_desc_d.width / 2), (img_cfg.height - 5) - x_desc_d.l_b_y, img_cfg.x_desc); /* Werte holen */ - pix_list = get_pix_list(dia_width); + pix_list = get_pix_list(dia_width); + if(!img_cfg.bars && img_cfg.show_average){ + average_pix_list = build_average_line(pix_list, dia_width); + } /* Diagramhintergrund */ gdImageFilledRectangle(img, offset_x_left, offset_y_top, img_cfg.width - offset_x_right, img_cfg.height - offset_y_bottom, dia_bg_c); @@ -181,6 +186,9 @@ static gdImagePtr draw_image(gdImagePtr img){ /* y-Werte skalieren */ zero_line = scale_y_coords(pix_list, dia_height); + if(!img_cfg.bars && img_cfg.show_average){ + scale_y_coords(average_pix_list, dia_height); + } /* Vertikale linien + x - Labels*/ x_labels = get_x_label_list(dia_width); @@ -199,6 +207,15 @@ static gdImagePtr draw_image(gdImagePtr img){ gdImageLine(img, offset_x_left, zero_line + offset_y_top, img_cfg.width - offset_x_right, zero_line + offset_y_top, zero_line_c); + /* Durchschnitts-Werte Zeichnen */ + if(!img_cfg.bars && img_cfg.show_average){ + for (; average_pix_list->next; average_pix_list = average_pix_list->next){ + if(!average_pix_list->next->no_line){ + gdImageLine(img, (offset_x_left + average_pix_list->x_pix_coord), (offset_y_top + average_pix_list->y_pix_coord), (offset_x_left + average_pix_list->next->x_pix_coord), (offset_y_top + average_pix_list->next->y_pix_coord), av_line_c); + } + } + } + /* Werte Zeichnen */ if(!img_cfg.bars){ for (; pix_list->next; pix_list = pix_list->next){ diff --git a/debian/changelog b/debian/changelog index 0d8628a..edc62a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +weatherstation (1.0.6-1) stable; urgency=low + + * New feature added in chart-program: Now it can draw a average.line + + -- Jan Losinski Tue, 2 Jan 2007 06:54:55 +0100 + weatherstation (1.0.5-2) stable; urgency=low * chart-example-configs updated