diff options
author | Simon Howard | 2006-06-02 19:29:24 +0000 |
---|---|---|
committer | Simon Howard | 2006-06-02 19:29:24 +0000 |
commit | 517af9477b7269564f3ba8c0ccc6ef53c78a7abb (patch) | |
tree | 1d60d219a7c71b90330baee90acf06a05670fb0f /textscreen/txt_widget.h | |
parent | b3e5170bbba1c3048da86a5291cd45524abfeac2 (diff) | |
download | chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.tar.gz chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.tar.bz2 chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.zip |
textscreen: Rejig how the entire drawing process works. Add a recursive
layout method that assigns the position and size of widgets for the whole
window before drawing. Add another method that responds to mouse button
presses. Allow windows to have no title bar by specifying NULL as the
title.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 547
Diffstat (limited to 'textscreen/txt_widget.h')
-rw-r--r-- | textscreen/txt_widget.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/textscreen/txt_widget.h b/textscreen/txt_widget.h index 46fd3745..ee18fd14 100644 --- a/textscreen/txt_widget.h +++ b/textscreen/txt_widget.h @@ -48,11 +48,13 @@ typedef struct txt_widget_class_s txt_widget_class_t; typedef struct txt_widget_s txt_widget_t; typedef struct txt_callback_table_s txt_callback_table_t; -typedef void (*TxtWidgetSizeCalc)(TXT_UNCAST_ARG(widget), int *w, int *h); -typedef void (*TxtWidgetDrawer)(TXT_UNCAST_ARG(widget), int w, int selected); +typedef void (*TxtWidgetSizeCalc)(TXT_UNCAST_ARG(widget)); +typedef void (*TxtWidgetDrawer)(TXT_UNCAST_ARG(widget), int selected); typedef void (*TxtWidgetDestroy)(TXT_UNCAST_ARG(widget)); typedef int (*TxtWidgetKeyPress)(TXT_UNCAST_ARG(widget), int key); typedef void (*TxtWidgetSignalFunc)(TXT_UNCAST_ARG(widget), void *user_data); +typedef void (*TxtMousePressFunc)(TXT_UNCAST_ARG(widget), int x, int y, int b); +typedef void (*TxtWidgetLayoutFunc)(TXT_UNCAST_ARG(widget)); struct txt_widget_class_s { @@ -60,6 +62,8 @@ struct txt_widget_class_s TxtWidgetDrawer drawer; TxtWidgetKeyPress key_press; TxtWidgetDestroy destructor; + TxtMousePressFunc mouse_press; + TxtWidgetLayoutFunc layout; }; struct txt_widget_s @@ -69,17 +73,25 @@ struct txt_widget_s int selectable; int visible; txt_horiz_align_t align; + + // These are set automatically when the window is drawn and should + // not be set manually. + + int x, y; + int w, h; }; void TXT_InitWidget(TXT_UNCAST_ARG(widget), txt_widget_class_t *widget_class); -void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget), int *w, int *h); -void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int w, int selected); +void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget)); +void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int selected); void TXT_SignalConnect(TXT_UNCAST_ARG(widget), char *signal_name, TxtWidgetSignalFunc func, void *user_data); void TXT_EmitSignal(TXT_UNCAST_ARG(widget), char *signal_name); int TXT_WidgetKeyPress(TXT_UNCAST_ARG(widget), int key); +void TXT_WidgetMousePress(TXT_UNCAST_ARG(widget), int x, int y, int b); void TXT_DestroyWidget(TXT_UNCAST_ARG(widget)); void TXT_SetWidgetAlign(TXT_UNCAST_ARG(widget), txt_horiz_align_t horiz_align); +void TXT_LayoutWidget(TXT_UNCAST_ARG(widget)); #endif /* #ifndef TXT_WIDGET_H */ |