From 68b4e0616ab80a32903d0c6ede232e47d4d88382 Mon Sep 17 00:00:00 2001 From: reinelt Date: Wed, 8 Feb 2006 04:55:05 +0000 Subject: [lcd4linux @ 2006-02-08 04:55:03 by reinelt] moved widget registration to drv_generic_graphic git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@635 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- widget_image.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 5 deletions(-) (limited to 'widget_image.c') diff --git a/widget_image.c b/widget_image.c index 7281271..6c510e7 100644 --- a/widget_image.c +++ b/widget_image.c @@ -1,4 +1,4 @@ -/* $Id: widget_image.c,v 1.2 2006/01/23 06:17:18 reinelt Exp $ +/* $Id: widget_image.c,v 1.3 2006/02/08 04:55:05 reinelt Exp $ * * image widget handling * @@ -21,6 +21,9 @@ * * * $Log: widget_image.c,v $ + * Revision 1.3 2006/02/08 04:55:05 reinelt + * moved widget registration to drv_generic_graphic + * * Revision 1.2 2006/01/23 06:17:18 reinelt * timer widget added * @@ -53,11 +56,29 @@ #include "widget.h" #include "widget_image.h" +#ifdef HAVE_GD_GD_H +#include +#define WITH_GD +#else +#ifdef HAVE_GD_H +#include +#define WITH_GD +#endif +#endif + #ifdef WITH_DMALLOC #include #endif -void widget_image_update(void *Self) +static void widget_image_render (WIDGET_IMAGE *Image) +{ + /* try to open file */ + + if (Image->file == NULL || Image->file[0] == '\0') { + } +} + +static void widget_image_update(void *Self) { WIDGET *W = (WIDGET *) Self; WIDGET_IMAGE *Image = W->data; @@ -67,6 +88,16 @@ void widget_image_update(void *Self) if (W->parent == NULL) { /* evaluate expressions */ + if (Image->file) { + free (Image->file); + Image->file = NULL; + } + if (Image->file_tree != NULL) { + Eval(Image->file_tree, &result); + Image->file = strdup(R2S(&result)); + DelResult(&result); + } + Image->update = 0; if (Image->update_tree != NULL) { Eval(Image->update_tree, &result); @@ -84,8 +115,13 @@ void widget_image_update(void *Self) Image->visible = 0; DelResult(&result); } + + /* render image into bitmap */ + widget_image_render(Image); } + error ("Fixme: We are at image_update"); + /* finally, draw it! */ if (W->class->draw) W->class->draw(W); @@ -114,17 +150,28 @@ int widget_image_init(WIDGET * Self) Image = malloc(sizeof(WIDGET_IMAGE)); memset(Image, 0, sizeof(WIDGET_IMAGE)); + /* initial size */ + Image->width = 0; + Image->height = 0; + Image->bitmap = NULL; + Image->file = NULL; + /* get raw expressions (we evaluate them ourselves) */ + Image->file_expr = cfg_get_raw(section, "file", NULL); Image->update_expr = cfg_get_raw(section, "update", NULL); Image->visible_expr = cfg_get_raw(section, "visible", NULL); - /* sanity check */ + /* sanity checks */ + if (Image->file_expr == NULL || *Image->file_expr == '\0') { + error("Warning: Image %s has no file", Self->name); + } if (Image->update_expr == NULL || *Image->update_expr == '\0') { error("Image %s has no update, using '100'", Self->name); Image->update_expr = "100"; } /* compile'em */ + Compile(Image->file_expr, &Image->file_tree); Compile(Image->update_expr, &Image->update_tree); Compile(Image->visible_expr, &Image->visible_tree); @@ -152,10 +199,13 @@ int widget_image_quit(WIDGET * Self) if (Self->parent == NULL) { if (Self->data) { WIDGET_IMAGE *Image = Self->data; - DelTree(Image->update_tree); - DelTree(Image->visible_tree); + if (Image->bitmap) + free(Image->bitmap); if (Image->file) free(Image->file); + DelTree(Image->file_tree); + DelTree(Image->update_tree); + DelTree(Image->visible_tree); free(Self->data); Self->data = NULL; } -- cgit v1.2.3