-/***********************************************************
-* Artsoft Retro-Game Library *
-*----------------------------------------------------------*
-* (c) 1994-2006 Artsoft Entertainment *
-* Holger Schemel *
-* Detmolder Strasse 189 *
-* 33604 Bielefeld *
-* Germany *
-* e-mail: info@artsoft.org *
-*----------------------------------------------------------*
-* gadgets.h *
-***********************************************************/
+// ============================================================================
+// Artsoft Retro-Game Library
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+// Holger Schemel
+// info@artsoft.org
+// http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// gadgets.h
+// ============================================================================
#ifndef GADGETS_H
#define GADGETS_H
#define GDI_ACTIVE 45
#define GDI_DIRECT_DRAW 46
+/* gadget deactivation hack */
+#define GDI_ACTIVE_POS(a) ((a) < 0 ? POS_OFFSCREEN : (a))
+
+
typedef void (*gadget_function)(void *);
struct GadgetBorder
struct GadgetEvent
{
- unsigned long type; /* event type */
+ unsigned int type; /* event type */
int button; /* button number for button events */
int x, y; /* gadget position at event time */
boolean off_borders; /* mouse pointer outside gadget? */
struct GadgetTextButton
{
- char value[MAX_GADGET_TEXTSIZE]; /* text written on the button */
+ char value[MAX_GADGET_TEXTSIZE + 1]; /* text written on the button */
int size; /* maximal size of button text */
};
struct GadgetTextInput
{
- char value[MAX_GADGET_TEXTSIZE]; /* text string in input field */
- char last_value[MAX_GADGET_TEXTSIZE]; /* last text string in input field */
+ char value[MAX_GADGET_TEXTSIZE + 1]; /* text string in input field */
+ char last_value[MAX_GADGET_TEXTSIZE + 1];/* last text string in input field */
int cursor_position; /* actual text cursor position */
int number_value; /* integer value, if numeric */
int number_min; /* minimal allowed numeric value */
struct GadgetTextArea
{
- char value[MAX_GADGET_TEXTSIZE]; /* text string in input field */
- char last_value[MAX_GADGET_TEXTSIZE]; /* last text string in input field */
+ char value[MAX_GADGET_TEXTSIZE + 1]; /* text string in input field */
+ char last_value[MAX_GADGET_TEXTSIZE + 1];/* last text string in input field */
int cursor_position; /* actual text cursor position */
int cursor_x; /* actual x cursor position */
int cursor_y; /* actual y cursor position */
int id; /* internal gadget identifier */
int custom_id; /* custom gadget identifier */
int custom_type_id; /* custom gadget type identifier */
- char info_text[MAX_INFO_TEXTSIZE]; /* short popup info text */
+ char info_text[MAX_INFO_TEXTSIZE + 1];/* short popup info text */
int x, y; /* gadget position */
int width, height; /* gadget size */
unsigned int type; /* type (button, text input, ...) */