From 62080827940c4c179e3c3193b96fb2076ee545a1 Mon Sep 17 00:00:00 2001 From: losinshi Date: Wed, 13 Sep 2006 14:16:52 +0000 Subject: [PATCH] Working on charts (now it can generate empty transparent images) git-svn-id: file:///home/jan/tmp/wetterstation/trunk@86 dd492736-c11a-0410-ad51-8c26713eaf7f --- cronjob/chart/Makefile | 5 +++-- cronjob/chart/chart.c | 2 ++ cronjob/chart/image_file/image_config.c | 7 ++++-- cronjob/chart/image_file/image_draw.c | 29 ++++++++++++++++++++----- cronjob/chart/image_file/image_file.c | 8 ++++--- cronjob/chart/image_file/testimage.conf | 4 ++-- 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/cronjob/chart/Makefile b/cronjob/chart/Makefile index 5d24c32..9e40aa6 100644 --- a/cronjob/chart/Makefile +++ b/cronjob/chart/Makefile @@ -3,6 +3,7 @@ LD = gcc RM = rm CFLAGS = -c LDFLAS = -o +LD_LIBS = -lefence -lm -lpq -lgd -lpng -lz -lfreetype #INCL = -I$$(pg_config --includedir) BIN_NAME = chart @@ -24,8 +25,8 @@ all: $(BIN_NAME) # Binary Linken $(BIN_NAME): $(OBJS) - @ echo Linke: $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql -lm -lpq $(LDFLAS) $(BIN_NAME) $(OBJS) - @ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql -lefence -lm -lpq $(LDFLAS) $(BIN_NAME) $(OBJS) + @ echo Linke: $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql $(LD_LIBS) $(LDFLAS) $(BIN_NAME) $(OBJS) + @ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql $(LD_LIBS) $(LDFLAS) $(BIN_NAME) $(OBJS) @ echo Binary $(BIN_NAME) ist fertig! # Abhängigkeiten diff --git a/cronjob/chart/chart.c b/cronjob/chart/chart.c index 55c431b..33d94a5 100644 --- a/cronjob/chart/chart.c +++ b/cronjob/chart/chart.c @@ -107,6 +107,8 @@ int main(int argc, char *argv[]){ if(walk_image_cfg_list()) wait_for_childs(NULL); + DEBUGOUT1("\n-------------------------------------------------------------------\nEnde\n"); + return EXIT_SUCCESS; } diff --git a/cronjob/chart/image_file/image_config.c b/cronjob/chart/image_file/image_config.c index e64e5c4..0781300 100644 --- a/cronjob/chart/image_file/image_config.c +++ b/cronjob/chart/image_file/image_config.c @@ -69,13 +69,16 @@ static int read_color(const char *line, void *arg){ tmp->b = strtol(strncpy(buff, line+3, 2), NULL, 16); tmp->g = strtol(strncpy(buff, line+6, 2), NULL, 16); tmp->alpha = strtol(strncpy(buff, line+9, 2), NULL, 16); - + DEBUGOUT5(" Farbe gelesen: rot:%2x gelb:%2x gruen:%2x mit alpha:%2x\n", tmp->r, tmp->b, tmp->g, tmp->alpha) ; } } *col = tmp; - + + free(buff); + + return 1; } /* Ein Interval einlesen. diff --git a/cronjob/chart/image_file/image_draw.c b/cronjob/chart/image_file/image_draw.c index a2e614d..81f658f 100644 --- a/cronjob/chart/image_file/image_draw.c +++ b/cronjob/chart/image_file/image_draw.c @@ -1,19 +1,36 @@ #include +#include #include "image_draw.h" #include "image_data.h" +#include "image_common.h" -static void create_image(); +typedef int color; + + +static gdImagePtr create_image(); static void draw_image(); -static void write_image(); +static void write_image_png(gdImagePtr, FILE *); int draw_to_file(FILE *fd){ + gdImagePtr img = create_image(); draw_image(); + write_image_png(img, fd); } -static void create_image(){ +static gdImagePtr create_image(){ + gdImagePtr new_img = NULL; + color back; + img_color_ptr back_p = img_cfg.bg_color; + new_img = gdImageCreateTrueColor(img_cfg.width, img_cfg.height); + gdImageAlphaBlending(new_img, 0); + back = gdImageColorAllocateAlpha( new_img, back_p->r, back_p->g, back_p->b, back_p->alpha ); + gdImageFilledRectangle(new_img, 0,0,img_cfg.width, img_cfg.height, back); + gdImageAlphaBlending(new_img, 1); + + return new_img; } static void draw_image(){ @@ -21,6 +38,8 @@ static void draw_image(){ } -static void write_image(){ - +static void write_image_png(gdImagePtr img, FILE *fd){ + gdImageAlphaBlending(img, 0); + gdImageSaveAlpha(img, 1); + gdImagePng(img, fd); } diff --git a/cronjob/chart/image_file/image_file.c b/cronjob/chart/image_file/image_file.c index 845ddf3..6e2a1fc 100644 --- a/cronjob/chart/image_file/image_file.c +++ b/cronjob/chart/image_file/image_file.c @@ -92,9 +92,10 @@ static int check_file_interval(){ DEBUGOUT3("Datei '%s' ist %d Sek. alt \n", img_cfg.file_name, diff_sek); DEBUGOUT2("Sie soll aller %d Sek. neu generiert werden \n", img_cfg.gen_interval); - if(diff_sek > img_cfg.gen_interval) - DEBUGOUT1("Sie muss neu generiert werden!\n"); + if(diff_sek > img_cfg.gen_interval){ + DEBUGOUT1("Sie muss neu generiert werden!\n"); return 1; + } } else { exit_error(ERROR_STAT); @@ -104,5 +105,6 @@ static int check_file_interval(){ } static void regenerate_image(){ - draw_to_file(NULL); + FILE *fd = fopen(img_cfg.file_name, "wb"); + draw_to_file(fd); } diff --git a/cronjob/chart/image_file/testimage.conf b/cronjob/chart/image_file/testimage.conf index fbc2fc3..e1eb0d9 100644 --- a/cronjob/chart/image_file/testimage.conf +++ b/cronjob/chart/image_file/testimage.conf @@ -3,7 +3,7 @@ headline Testbild manual_table no manual_table_name auss2_data table_field temp -gen_interval 15m +gen_interval 15 show_interval 1h label_interval 10m label_sum no @@ -11,4 +11,4 @@ width 400 height 250 sensor_id 1 -bg_color 10:2c:30:00 #test +bg_color 60:30:50:af #test