From c68df329f2483d8fc9b75488c695787cd18c20a4 Mon Sep 17 00:00:00 2001 From: oroborus Date: Sat, 16 Aug 2008 21:00:29 +0000 Subject: - vsetky widegety pouzivaju widget_t ( priparava na kontajner s widgetmi ) git-svn-id: http://opensvn.csie.org/tuxanci_ng@201 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/widget/widget_buttonimage.c | 55 ++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 11 deletions(-) (limited to 'src/widget/widget_buttonimage.c') diff --git a/src/widget/widget_buttonimage.c b/src/widget/widget_buttonimage.c index 6dfbe66..27e94a3 100644 --- a/src/widget/widget_buttonimage.c +++ b/src/widget/widget_buttonimage.c @@ -1,37 +1,61 @@ #include +#include + #include "main.h" #include "interface.h" #include "font.h" #include "image.h" + +#include "widget.h" #include "widget_buttonimage.h" -widget_buttonimage_t* newWidgetButtonimage(image_t *image, int x, int y, void (*fce_event)(void *)) +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->x = x; - new->y = y; new->w = image->w/2; new->h = image->h; new->active = 0; new->fce_event = fce_event; - return new; + return newWidget(WIDGET_TYPE_BUTTONIMAGE, x, y, new->w, new->h, new); } -void drawWidgetButtonimage(widget_buttonimage_t *p) +void setWidgetButtonimageActive(widget_t *widget, bool_t active) { - drawImage(p->image, p->x, p->y, p->active*p->w, 0, p->w, p->h); + widget_buttonimage_t *p; + + assert( widget != NULL ); + assert( widget->type == WIDGET_TYPE_BUTTONIMAGE ); + + p = (widget_buttonimage_t *)widget->private_data; + p->active = active; } -void eventWidgetButtonimage(widget_buttonimage_t *p) +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--; @@ -40,16 +64,25 @@ void eventWidgetButtonimage(widget_buttonimage_t *p) getMousePosition(&x, &y); - if( x >= p->x && x <= p->x+p->w && - y >= p->y && y <= p->y+p->h && + if( x >= widget->x && x <= widget->x+p->w && + y >= widget->y && y <= widget->y+p->h && isMouseClicked() ) { time = WIDGET_BUTTONIMAGE_TIME; - p->fce_event(p); + p->active = 1; + p->fce_event(widget); } } -void destroyWidgetButtonimage(widget_buttonimage_t *p) +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