23 #define IMG_HANDLE int
24 #define IMG_HANDLE_SET_INVALID(h) h = -1
25 #define IMG_HANDLE_IS_INVALID(h) (h==-1)
26 #define IMG_HANDLE_IS_VALID(h) (h!=-1)
27 #define IMG_HANDLE_SET_FRAME(dh,h,f)(dh = h + f)
28 #define IMG_LOAD(f) bm_load(f)
29 #define IMG_LOAD_ANIM(f,n,fps) bm_load_animation(f,n,fps)
30 #define IMG_UNLOAD(a) bm_unload(a)
31 #define IMG_SET(h) gr_set_bitmap(h)
32 #define IMG_SET_FRAME(h, f) gr_set_bitmap(h + f)
33 #define IMG_DRAW(x,y) gr_bitmap(x,y,GR_RESIZE_NONE)
34 #define IMG_INFO(ha,w,h) bm_get_info(ha,w,h)
73 #define CIE_IMAGE_NMCSD 1
74 #define CIE_IMAGE_BORDER 2
79 #define CIE_HANDLE_N 0
80 #define CIE_HANDLE_M 1
81 #define CIE_HANDLE_C 3
82 #define CIE_HANDLE_S 3
83 #define CIE_HANDLE_D 4
86 #define CIE_HANDLE_TL 0
87 #define CIE_HANDLE_TM 1
88 #define CIE_HANDLE_TR 2
89 #define CIE_HANDLE_ML 3
90 #define CIE_HANDLE_MR 4
91 #define CIE_HANDLE_BL 5
92 #define CIE_HANDLE_BM 6
93 #define CIE_HANDLE_BR 7
102 #define CIE_GC_NONE_SET 0
103 #define CIE_GC_X_SET (1<<0)
104 #define CIE_GC_Y_SET (1<<1)
105 #define CIE_GC_W_SET (1<<2)
106 #define CIE_GC_H_SET (1<<3)
109 #define CIE_NUM_HANDLES 8 //We need 8 for border
129 void Parse(
char* tag,
int in_type);
179 #define GT_CHECKBOX 5
180 #define GT_IMAGEANIM 6
181 #define GT_HUDGAUGE 7
182 #define GT_NUM_TYPES 8 //Total number of types
186 #define GST_MOUSE_LEFT_BUTTON (1<<0)
187 #define GST_MOUSE_RIGHT_BUTTON (1<<1)
188 #define GST_MOUSE_MIDDLE_BUTTON (1<<2)
189 #define GST_MOUSE_OVER (1<<3)
190 #define GST_KEYBOARD_CTRL (1<<4)
191 #define GST_KEYBOARD_ALT (1<<5)
192 #define GST_KEYBOARD_SHIFT (1<<6)
193 #define GST_KEYBOARD_KEYPRESS (1<<7)
195 #define GST_MOUSE_PRESS (GST_MOUSE_LEFT_BUTTON | GST_MOUSE_RIGHT_BUTTON | GST_MOUSE_MIDDLE_BUTTON)
196 #define GST_MOUSE_STATUS (GST_MOUSE_LEFT_BUTTON | GST_MOUSE_RIGHT_BUTTON | GST_MOUSE_MIDDLE_BUTTON | GST_MOUSE_OVER)
197 #define GST_KEYBOARD_STATUS (GST_KEYBOARD_CTRL | GST_KEYBOARD_ALT | GST_KEYBOARD_SHIFT | GST_KEYBOARD_KEYPRESS)
200 #define GS_NOAUTORESIZEX (1<<0)
201 #define GS_NOAUTORESIZEY (1<<1)
202 #define GS_HIDDEN (1<<2)
203 #define GS_INTERNALCHILD (1<<3)
244 int GetOIECoords(
int *x1,
int *y1,
int *x2,
int *y2);
249 void OnDraw(
float frametime);
250 int OnFrame(
float frametime,
int *unused_queue);
251 void OnMove(
int dx,
int dy);
280 GUIObject(
const SCP_string &in_Name=
"",
int x_coord = 0,
int y_coord = 0,
int x_width = -1,
int y_height = -1,
int in_style = 0);
299 #define GSOF_NOTHINGPRESSED -1
300 #define GSOF_SOMETHINGPRESSED -2
323 int OnFrame(
float frametime,
bool doevents);
341 bool ClassInfoParsed;
348 int Status, LastStatus;
350 void DestroyClassInfo();
376 int OnFrame(
float frametime,
bool doevents,
bool clearandflip);
380 #define W_BORDERWIDTH 1
381 #define W_BORDERHEIGHT 1
383 #define WS_NOTITLEBAR (1<<31) // doesn't have a title bar (ie, no title or min/close buttons)
384 #define WS_NONMOVEABLE (1<<30) // can't be moved around
386 #define WCI_CAPTION 0
387 #define WCI_CAPTION_TEXT 1
393 #define WCI_NUM_ENTRIES 7
408 int CaptionCoords[4];
422 void DoDraw(
float frametime);
423 void DoMove(
int dx,
int dy);
432 Window(
const SCP_string &in_caption,
int x_coord,
int y_coord,
int x_width = -1,
int y_height = -1,
int in_style = 0);
439 #define B_BORDERWIDTH 1
440 #define B_BORDERHEIGHT 1
441 #define DEFAULT_BUTTON_HEIGHT 15
443 #define BS_STICKY (1<<31) //Button stays pressed
447 #define BCI_NUM_ENTRIES 2
457 void DoDraw(
float frametime);
463 Button(
const SCP_string &in_caption,
int x_coord,
int y_coord,
void (*in_function)(
Button *caller) = NULL,
int x_width = -1,
int y_height = -1,
int in_style = 0);
471 #define TI_BORDER_WIDTH 1
472 #define TI_BORDER_HEIGHT 1
473 #define TI_INITIAL_INDENT 2
474 #define TI_INITIAL_INDENT_VERTICAL 2
475 #define TI_INDENT_PER_LEVEL 10
476 #define TI_SPACE_BETWEEN_VERTICAL 2
512 void *AssociatedItem;
519 void MoveTreeItems(
int dx,
int dy,
TreeItem *items);
520 void CalcItemsSize(
TreeItem *items,
int *DrawData);
523 void DoDraw(
float frametime);
524 void DoMove(
int dx,
int dy);
530 Tree(
const SCP_string &in_name,
int x_coord,
int y_coord,
void* in_associateditem = NULL,
int x_width = -1,
int y_width = -1,
int in_style = 0);
540 #define MAX_TEXT_LINES 100
541 #define T_EDITTABLE (1<<31)
544 #define T_ST_NONE 0 //No saving
545 #define T_ST_INT (1<<0)
546 #define T_ST_SINT (1<<1)
547 #define T_ST_CHAR (1<<2)
548 #define T_ST_FLOAT (1<<3)
549 #define T_ST_UBYTE (1<<4)
552 #define T_ST_ONENTER (1<<21)
553 #define T_ST_CLOSE (1<<22)
554 #define T_ST_REALTIME (1<<23)
557 #define T_ST_NEW (1<<30) //Allocated using new
558 #define T_ST_MALLOC (1<<31) //Allocated using malloc
585 void DoDraw(
float frametime);
590 Text(
const SCP_string &in_name,
const SCP_string &in_content,
int x_coord,
int y_coord,
int x_width = -1,
int y_width = -1,
int in_style = 0);
596 void SetSaveLoc(
int *ptr,
int save_method,
int max_value=INT_MAX,
int min_value=INT_MIN);
597 void SetSaveLoc(
short int *sint_ptr,
int save_method,
short int max_value=SHRT_MAX,
short int min_value=SHRT_MIN);
598 void SetSaveLoc(
float *ptr,
int save_method,
float max_value=INT_MAX,
float min_value=INT_MIN);
600 void SetSaveLoc(
ubyte *ptr,
int save_method,
int max_value=UCHAR_MAX,
int min_value=0);
610 #define CB_TEXTCHECKDIST 2
628 void DoDraw(
float frametime);
629 void DoMove(
int dx,
int dy);
648 IsChecked = in_ischecked;
652 FlagPtr = in_flag_ptr;
655 if ( (FlagPtr != NULL) && (*FlagPtr & Flag) ) {
661 SetFlag((
int*)in_flag_ptr, in_flag);
665 BoolFlagPtr = in_bool_ptr;
672 #define PT_PLAYING_REVERSE 2
673 #define PT_STOPPED_REVERSE 3
678 #define IF_REVERSED 3
697 void DoDraw(
float frametime);
700 ImageAnim(
const SCP_string &in_name,
const SCP_string &in_imagename,
int x_coord,
int y_coord,
int x_width = -1,
int y_width = -1,
int in_style = 0);
703 void Play(
bool in_isreversed);
int OnFrame(float frametime, int *unused_queue)
void SetSaveLoc(int *ptr, int save_method, int max_value=INT_MAX, int min_value=INT_MIN)
void DeleteChildren(GUIObject *exception=NULL)
int DoMouseDown(float frametime)
GUIScreen * PushScreen(GUIScreen *csp)
int GetImageHandle(int ID=CIE_HANDLE_N)
int DoKeyPress(float frametime)
virtual int DoKeyPress(float frametime)
GLfloat GLfloat GLfloat GLfloat h
void AddLine(const SCP_string &in_line)
int GetCIECoords(int id, int *x, int *y)
int DoMouseDown(float frametime)
Checkbox(const SCP_string &in_label, int x_coord, int y_coord, void(*in_function)(Checkbox *caller)=NULL, int x_width=-1, int y_height=DEFAULT_BUTTON_HEIGHT, int in_style=0)
ubyte GetColorHandle(int ColorID, int ID=CIE_HANDLE_N)
Tree(const SCP_string &in_name, int x_coord, int y_coord, void *in_associateditem=NULL, int x_width=-1, int y_width=-1, int in_style=0)
void SetFlag(int *in_flag_ptr, int in_flag)
void Parse(char *tag, int in_type)
int OnFrame(float frametime, bool doevents, bool clearandflip)
GUIObject * Add(GUIObject *new_gauge)
virtual void DoRefreshSkin()
virtual int DoMouseOver(float frametime)
GUIObject * GetGraspedObject()
virtual int DoRefreshSize()
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
virtual void DoMove(int dx, int dy)
void SetGraspedObject(GUIObject *cgp, int button)
int DoMouseOver(float frametime)
int DoMouseUp(float frametime)
void SetActiveObject(GUIObject *cgp)
void DoDraw(float frametime)
int DoMouseDown(float frametime)
virtual int DoMouseUp(float frametime)
GUIScreen(const SCP_string &in_Name="")
Window(const SCP_string &in_caption, int x_coord, int y_coord, int x_width=-1, int y_height=-1, int in_style=0)
GUIObject(const SCP_string &in_Name="", int x_coord=0, int y_coord=0, int x_width=-1, int y_height=-1, int in_style=0)
void Play(bool in_isreversed)
#define DEFAULT_BUTTON_HEIGHT
int DoMouseOver(float frametime)
void SetChecked(bool in_ischecked)
void OnMove(int dx, int dy)
int GetObjectCoords(int *x, int *y, int *w, int *h)
int DoMouseOver(float frametime)
void DoDraw(float frametime)
void SetText(const SCP_string &in_content)
void SetCloseFunction(void(*in_closefunc)(GUIObject *caller))
int OnFrame(float frametime, bool doevents)
void DoMove(int dx, int dy)
GLint GLint GLint GLint GLint x
TreeItem * AddItem(TreeItem *parent, const SCP_string &in_name, int in_data=0, bool in_delete_data=true, void(*in_function)(Tree *caller)=NULL)
void SetSaveStringAlloc(char **ptr, int save_method, int mem_flags, uint max_len=UINT_MAX, uint min_len=0)
GUIObject * AddChild(GUIObject *cgp)
void OnDraw(float frametime)
ImageAnim(const SCP_string &in_name, const SCP_string &in_imagename, int x_coord, int y_coord, int x_width=-1, int y_width=-1, int in_style=0)
void SetBool(bool *in_bool_ptr)
int GetCoords(int *x, int *y)
typedef void(APIENTRY *PFNGLARRAYELEMENTEXTPROC)(GLint i)
int DoMouseOut(float frametime)
int GetCoords(int id, int *x, int *y)
int DoMouseOut(float frametime)
ScreenClassInfoEntry * GetClassInfo()
virtual int DoMouseDown(float frametime)
virtual void DoDraw(float frametime)
GLubyte GLubyte GLubyte GLubyte w
void SetLabel(const SCP_string &in_label)
GUIObject * GetActiveObject()
void DoDraw(float frametime)
int DoMouseDown(float frametime)
void DoMove(int dx, int dy)
int DoMouseUp(float frametime)
int DoMouseUp(float frametime)
ScreenClassInfoEntry * GetScreenClassInfo(const SCP_string &screen_name)
void DoDraw(float frametime)
void SetFlag(uint *in_flag_ptr, int in_flag)
virtual int DoMouseOut(float frametime)
void SetCaption(const SCP_string &in_caption)
TreeItem * GetSelectedItem()
void PullScreen(GUIScreen *in_screen)
virtual int DoKeyState(float frametime)
void DeleteObject(GUIObject *dgp)
void ParseClassInfo(char *section)
void DoDraw(float frametime)
void SetPosition(int x, int y)
ObjectClassInfoEntry * GetObjectClassInfo(GUIObject *cgp)
int GetCIEImageHandle(int id, int handleid=0)
void SetImage(const SCP_string &in_imagename)
virtual int DoFrame(float frametime)
Text(const SCP_string &in_name, const SCP_string &in_content, int x_coord, int y_coord, int x_width=-1, int y_width=-1, int in_style=0)
TreeItem * GetParentItem()
void DoMove(int dx, int dy)
int GetImageHandle(int id, int handle_num)