From 978ddf539803405ab8fed17e21014ee1ae69fac8 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Thu, 18 May 2006 18:48:24 +0000 Subject: Initial working text-mode GUI framework. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 480 --- textscreen/txt_button.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 textscreen/txt_button.c (limited to 'textscreen/txt_button.c') diff --git a/textscreen/txt_button.c b/textscreen/txt_button.c new file mode 100644 index 00000000..93af5297 --- /dev/null +++ b/textscreen/txt_button.c @@ -0,0 +1,69 @@ + +#include + +#include "txt_button.h" +#include "txt_io.h" +#include "txt_main.h" +#include "txt_widget.h" +#include "txt_window.h" + +static int TXT_ButtonSizeCalc(txt_widget_t *widget) +{ + txt_button_t *button = (txt_button_t *) widget; + + // Minimum width is the string length + two spaces for padding + + return strlen(button->label) + 2; +} + +static void TXT_ButtonDrawer(txt_widget_t *widget, int w, int selected) +{ + txt_button_t *button = (txt_button_t *) widget; + int i; + + TXT_BGColor(TXT_COLOR_BLUE, 0); + TXT_FGColor(TXT_COLOR_BRIGHT_WHITE); + TXT_PutChar(' '); + + if (selected) + { + TXT_BGColor(TXT_COLOR_GREY, 0); + } + + for (i=0; ilabel); ++i) + { + TXT_PutChar(button->label[i]); + } + + for (i=strlen(button->label); i < w-2; ++i) + { + TXT_PutChar(' '); + } +} + +static void TXT_ButtonDestructor(txt_widget_t *widget) +{ + txt_button_t *button = (txt_button_t *) widget; + + free(button->label); +} + +txt_widget_class_t txt_button_class = +{ + TXT_ButtonSizeCalc, + TXT_ButtonDrawer, + TXT_ButtonDestructor, +}; + +txt_button_t *TXT_NewButton(char *label) +{ + txt_button_t *button; + + button = malloc(sizeof(txt_button_t)); + + button->widget.widget_class = &txt_button_class; + button->label = strdup(label); + + return button; +} + -- cgit v1.2.3