From 5855f591b6d509633e3730346e18122768ec6e04 Mon Sep 17 00:00:00 2001 From: Tomas Chvatal Date: Thu, 11 Dec 2008 22:34:18 +0100 Subject: First pass renaming sreen and widgets. --- src/widget/buttonimage.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/widget/buttonimage.c (limited to 'src/widget/buttonimage.c') diff --git a/src/widget/buttonimage.c b/src/widget/buttonimage.c new file mode 100644 index 0000000..1859ef0 --- /dev/null +++ b/src/widget/buttonimage.c @@ -0,0 +1,86 @@ + +#include +#include + +#include "main.h" +#include "interface.h" +#include "font.h" +#include "image.h" + +#include "widget.h" +#include "buttonimage.h" + +widget_t *newWidgetButtonimage(image_t * image, int x, int y, void (*fce_event) (void *)) +{ + widget_buttonimage_t *new; + + new = malloc(sizeof(widget_buttonimage_t)); + new->image = image; + new->w = image->w / 2; + new->h = image->h; + new->active = 0; + new->fce_event = fce_event; + + return newWidget(WIDGET_TYPE_BUTTONIMAGE, x, y, new->w, new->h, new); +} + +void setWidgetButtonimageActive(widget_t * widget, bool_t active) +{ + widget_buttonimage_t *p; + + assert(widget != NULL); + assert(widget->type == WIDGET_TYPE_BUTTONIMAGE); + + p = (widget_buttonimage_t *) widget->private_data; + p->active = active; +} + +void drawWidgetButtonimage(widget_t * widget) +{ + widget_buttonimage_t *p; + + assert(widget != NULL); + assert(widget->type == WIDGET_TYPE_BUTTONIMAGE); + + p = (widget_buttonimage_t *) widget->private_data; + drawImage(p->image, widget->x, widget->y, p->active * p->w, 0, p->w, p->h); +} + +void eventWidgetButtonimage(widget_t * widget) +{ + widget_buttonimage_t *p; + static int time = 0; + int x, y; + + assert(widget != NULL); + assert(widget->type == WIDGET_TYPE_BUTTONIMAGE); + + p = (widget_buttonimage_t *) widget->private_data; + + if (time > 0) { + time--; + return; + } + + getMousePosition(&x, &y); + + if (x >= widget->x && x <= widget->x + p->w && + y >= widget->y && y <= widget->y + p->h && isMouseClicked()) { + time = WIDGET_BUTTONIMAGE_TIME; + p->active = 1; + p->fce_event(widget); + } +} + +void destroyWidgetButtonimage(widget_t * widget) +{ + widget_buttonimage_t *p; + + assert(widget != NULL); + assert(widget->type == WIDGET_TYPE_BUTTONIMAGE); + + p = (widget_buttonimage_t *) widget->private_data; + + free(p); + destroyWidget(widget); +} -- cgit v1.2.3