summaryrefslogtreecommitdiff
path: root/textscreen/txt_widget.h
diff options
context:
space:
mode:
authorSimon Howard2006-06-02 19:29:24 +0000
committerSimon Howard2006-06-02 19:29:24 +0000
commit517af9477b7269564f3ba8c0ccc6ef53c78a7abb (patch)
tree1d60d219a7c71b90330baee90acf06a05670fb0f /textscreen/txt_widget.h
parentb3e5170bbba1c3048da86a5291cd45524abfeac2 (diff)
downloadchocolate-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.h20
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 */