#define WIDGET_PRESSED 0x00000001
#define WIDGET_INSIDE 0x00000002
#define WIDGET_HIDDEN 0x00000004
#define WIDGET_CHANGED 0x00000008
#define WIDGET_TRANSPARENT 0x00000010
#define WIDGET_HAS_FOCUS 0x00000020
#define WIDGET_WANTS_FOCUS 0x00000040
#define WIDGET_TURNED_ON 0x00000080
#define WIDGET_ALIGN_MASK 0x00000F00
#define WIDGET_HORIZ_MASK 0x00000300
#define WIDGET_HORIZ_CENTER 0x00000000
#define WIDGET_HORIZ_RIGHT 0x00000100
#define WIDGET_HORIZ_LEFT 0x00000200
#define WIDGET_HORIZ_STRETCH 0x00000300
#define WIDGET_VERT_MASK 0x00000C00
#define WIDGET_VERT_CENTER 0x00000000
#define WIDGET_VERT_TOP 0x00000400
#define WIDGET_VERT_BOTTOM 0x00000800
#define WIDGET_VERT_STRETCH 0x00000C00
#define WIDGET_DISABLED 0x00001000
#define SCREEN_DEBUG_BLIT 0x10000000
#define SCREEN_DEBUG_UPDATE 0x20000000
void GUI_SetScreen(GUI_Screen *);
GUI_Screen *GUI_GetScreen(void);
int GUI_ClipRect(SDL_Rect *sr, SDL_Rect *dr, const SDL_Rect *clip);
void GUI_TriggerUpdate(void);
GUI_Object *GUI_ObjectCreate(const char *s);
const char *GUI_ObjectGetName(GUI_Object *object);
void GUI_ObjectSetName(GUI_Object *object, const char *s);
void GUI_ObjectIncRef(GUI_Object *object);
int GUI_ObjectDecRef(GUI_Object *object);
int GUI_ObjectGetRef(GUI_Object *object);
int GUI_ObjectTrash(GUI_Object *object);
int GUI_ObjectKeep(GUI_Object **target, GUI_Object *source);
void GUI_ClearTrash();
void GUI_SurfaceSaveBMP(GUI_Surface *src, const char *filename);
GUI_Surface *GUI_SurfaceLoad(const char *fn);
GUI_Surface *GUI_SurfaceLoad_Rect(const char *fn, SDL_Rect *selection);
GUI_Surface *GUI_SurfaceCreate(const char *aname, int f, int w, int h, int d, int rm, int gm, int bm, int am);
GUI_Surface *GUI_SurfaceFrom(const char *aname, SDL_Surface *src);
void GUI_SurfaceBlit(GUI_Surface *src, SDL_Rect *src_r, GUI_Surface *dst, SDL_Rect *dst_r);
void GUI_SurfaceUpdateRects(GUI_Surface *surface, int n, SDL_Rect *rects);
void GUI_SurfaceUpdateRect(GUI_Surface *surface, int x, int y, int w, int h);
void GUI_SurfaceFill(GUI_Surface *surface, SDL_Rect *r, Uint32 c);
void GUI_SurfaceBlitRGBA(GUI_Surface *surface, SDL_Rect * srcrect, GUI_Surface * dst, SDL_Rect * dstrect);
void GUI_SurfacePixel(GUI_Surface *surface, Sint16 x, Sint16 y, Uint32 c);
void GUI_SurfaceLine(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 c);
void GUI_SurfaceLineAA(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 c);
void GUI_SurfaceLineH(GUI_Surface *surface, Sint16 x1, Sint16 x2, Sint16 y, Uint32 c);
void GUI_SurfaceLineV(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 y2, Uint32 c);
void GUI_SurfaceThickLine(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 width, Uint32 c);
void GUI_SurfaceRectagle(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 c);
void GUI_SurfaceRectagleRouded(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 c);
void GUI_SurfaceBox(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 c);
void GUI_SurfaceBoxRouded(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 c);
void GUI_SurfaceCircle(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Uint32 c);
void GUI_SurfaceCircleAA(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Uint32 c);
void GUI_SurfaceCircleFill(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Uint32 c);
void GUI_SurfaceArc(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 c);
void GUI_SurfaceEllipse(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 c);
void GUI_SurfaceEllipseAA(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 c);
void GUI_SurfaceEllipseFill(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 c);
void GUI_SurfacePie(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 c);
void GUI_SurfacePieFill(GUI_Surface *surface, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 c);
void GUI_SurfaceTrigon(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 c);
void GUI_SurfaceTrigonAA(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 c);
void GUI_SurfaceTrigonFill(GUI_Surface *surface, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 c);
void GUI_SurfacePolygon(GUI_Surface *surface, const Sint16 * vx, const Sint16 * vy, int n, Uint32 c);
void GUI_SurfacePolygonAA(GUI_Surface *surface, const Sint16 * vx, const Sint16 * vy, int n, Uint32 c);
void GUI_SurfacePolygonFill(GUI_Surface *surface, const Sint16 * vx, const Sint16 * vy, int n, Uint32 c);
void GUI_SurfacePolygonTextured(GUI_Surface *surface, const Sint16 * vx, const Sint16 * vy, int n, GUI_Surface *texture, int texture_dx, int texture_dy);
void GUI_SurfaceBezier(GUI_Surface *surface, const Sint16 * vx, const Sint16 * vy, int n, int s, Uint32 c);
int GUI_SurfaceGetWidth(GUI_Surface *surface);
int GUI_SurfaceGetHeight(GUI_Surface *surface);
Uint32 GUI_SurfaceMapRGB(GUI_Surface *surface, int r, int g, int b);
Uint32 GUI_SurfaceMapRGBA(GUI_Surface *surface, int r, int g, int b, int a);
SDL_Surface *GUI_SurfaceGet(GUI_Surface *surface);
void GUI_SurfaceSetAlpha(GUI_Surface *surface, Uint32 flag, Uint8 alpha);
GUI_Surface *GUI_FontRenderFast(GUI_Font *font, const char *s, SDL_Color fg);
GUI_Surface *GUI_FontRenderQuality(GUI_Font *font, const char *s, SDL_Color fg);
void GUI_FontDrawText(GUI_Font *font, GUI_Surface *surface, const char *s, int x, int y);
SDL_Rect GUI_FontGetTextSize(GUI_Font *font, const char *s);
void GUI_WidgetUpdate(GUI_Widget *widget, int force);
void GUI_WidgetDraw(GUI_Widget *widget, GUI_Surface *image, const SDL_Rect *sr, const SDL_Rect *dr);
void GUI_WidgetErase(GUI_Widget *widget, const SDL_Rect *dr);
void GUI_WidgetFill(GUI_Widget *widget, const SDL_Rect *dr, SDL_Color c);
int GUI_WidgetEvent(GUI_Widget *widget, const SDL_Event *event, int xoffset, int yoffset);
void GUI_WidgetClicked(GUI_Widget *widget, int x, int y);
void GUI_WidgetSetAlign(GUI_Widget *widget, int align);
void GUI_WidgetMarkChanged(GUI_Widget *widget);
void GUI_WidgetSetTransparent(GUI_Widget *widget, int trans);
void GUI_WidgetSetEnabled(GUI_Widget *widget, int flag);
void GUI_WidgetTileImage(GUI_Widget *widget, GUI_Surface *surface, const SDL_Rect *area, int x_offset, int y_offset);
void GUI_WidgetSetFlags(GUI_Widget *widget, int mask);
void GUI_WidgetClearFlags(GUI_Widget *widget, int mask);
void GUI_WidgetSetState(GUI_Widget *widget, int state);
int GUI_WidgetGetState(GUI_Widget *widget);
SDL_Rect GUI_WidgetGetArea(GUI_Widget *widget);
void GUI_WidgetSetPosition(GUI_Widget *widget, int x, int y);
void GUI_WidgetSetSize(GUI_Widget *widget, int w, int h);
int GUI_ContainerContains(GUI_Widget *container, GUI_Widget *widget);
void GUI_ContainerAdd(GUI_Widget *container, GUI_Widget *widget);
void GUI_ContainerRemove(GUI_Widget *container, GUI_Widget *widget);
void GUI_ContainerRemoveAll(GUI_Widget *container);
int GUI_ContainerGetCount(GUI_Widget *container);
void GUI_ContainerRemoveAll(GUI_Widget *container);
GUI_Widget *GUI_ContainerGetChild(GUI_Widget *container, int index);
void GUI_ContainerSetEnabled(GUI_Widget *container, int flag);
int GUI_ContainerIsVisibleWidget(GUI_Widget *container, GUI_Widget *widget);
GUI_Screen *GUI_ScreenCreate(int w, int h, int d, int f);
void GUI_ScreenSetContents(GUI_Screen *screen, GUI_Widget *contents);
void GUI_ScreenSetBackground(GUI_Screen *screen, GUI_Surface *surface);
void GUI_ScreenSetFocusWidget(GUI_Screen *screen, GUI_Widget *item);
void GUI_ScreenClearFocusWidget(GUI_Screen *screen);
void GUI_ScreenSetBackgroundColor(GUI_Screen *screen, SDL_Color c);
GUI_Widget *GUI_ScreenGetFocusWidget(GUI_Screen *screen);
void GUI_ScreenEvent(GUI_Screen *screen, const SDL_Event *event,
int xoffset, int yoffset);
void GUI_ScreenUpdate(GUI_Screen *screen, int force);
void GUI_ScreenDoUpdate(GUI_Screen *screen, int force);
void GUI_ScreenDraw(GUI_Screen *screen, GUI_Surface *image,
const SDL_Rect *src_r, const SDL_Rect *dst_r);
void GUI_ScreenFill(GUI_Screen *screen, const SDL_Rect *dst_r, SDL_Color c);
void GUI_ScreenErase(GUI_Screen *screen, const SDL_Rect *area);
GUI_Surface *GUI_ScreenGetSurface(GUI_Screen *screen);
GUI_Screen *GUI_RealScreenCreate(const char *aname, SDL_Surface *surface);
void GUI_RealScreenUpdate(GUI_Screen *screen, int force);
void GUI_RealScreenUpdateRect(GUI_Screen *screen, const SDL_Rect *r);
void GUI_RealScreenFlushUpdates(GUI_Screen *screen);
GUI_Window *CreateWindow(const char *aname, int x, int y, int w, int h);
void GUI_WindowUpdateAll(GUI_Window *win);
void GUI_WindowUpdate(GUI_Window *win, const GUI_Rect *r);
void GUI_WindowDrawImage(GUI_Window *win, const GUI_Surface *image, const GUI_Rect *src_r, const GUI_Rect *dst_r);
void GUI_WindowDrawRect(GUI_Window *win, const GUI_Rect *r, const GUI_Color *c);
void GUI_WindowDrawLine(GUI_Window *win, int x1, int y1, int x2, int y2, const GUI_Color *c);
void GUI_WindowDrawPixel(GUI_Window *win, int x, int y, const GUI_Color *c);
void GUI_WindowFillRect(GUI_Window *win, const GUI_Rect *r, const GUI_Color *c);
GUI_Widget *GUI_ButtonCreate(const char *name, int x, int y, int w, int h);
int GUI_ButtonCheck(GUI_Widget *widget);
void GUI_ButtonSetNormalImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ButtonSetHighlightImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ButtonSetPressedImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ButtonSetDisabledImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ButtonSetCaption(GUI_Widget *widget, GUI_Widget *caption);
void GUI_ButtonSetCaption2(GUI_Widget *widget, GUI_Widget *caption);
void GUI_ButtonSetClick(GUI_Widget *widget, GUI_Callback *callback);
void GUI_ButtonSetMouseover(GUI_Widget *widget, GUI_Callback *callback);
void GUI_ButtonSetMouseout(GUI_Widget *widget, GUI_Callback *callback);
GUI_Callback *GUI_LuaCallbackCreate(int appId, const char *luastring);
void GUI_CallbackCall(GUI_Callback *callback);
GUI_Font *GUI_FontLoadBitmap(char *fn);
GUI_Font *GUI_FontLoadTrueType(char *fn, int size);
GUI_Widget *GUI_PanelCreate(const char *name, int x, int y, int w, int h);
int GUI_PanelCheck(GUI_Widget *widget);
void GUI_PanelSetBackground(GUI_Widget *widget, GUI_Surface *surface);
void GUI_PanelSetBackgroundColor(GUI_Widget *widget, SDL_Color c);
void GUI_PanelSetXOffset(GUI_Widget *widget, int value);
void GUI_PanelSetYOffset(GUI_Widget *widget, int value);
int GUI_PanelGetXOffset(GUI_Widget *widget);
int GUI_PanelGetYOffset(GUI_Widget *widget);
void GUI_PanelSetLayout(GUI_Widget *widget, GUI_Layout *layout);
GUI_Layout *GUI_VBoxLayoutCreate(void);
GUI_Widget *GUI_ToggleButtonCreate(const char *name, int x, int y, int w, int h);
int GUI_ToggleButtonCheck(GUI_Widget *widget);
void GUI_ToggleButtonSetOnNormalImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ToggleButtonSetOnHighlightImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ToggleButtonSetOffNormalImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ToggleButtonSetOffHighlightImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_ToggleButtonSetCaption(GUI_Widget *widget, GUI_Widget *caption);
void GUI_ToggleButtonSetClick(GUI_Widget *widget, GUI_Callback *callback);
void GUI_ToggleButtonSetMouseover(GUI_Widget *widget, GUI_Callback *callback);
void GUI_ToggleButtonSetMouseout(GUI_Widget *widget, GUI_Callback *callback);
GUI_Widget *GUI_LabelCreate(const char *name, int x, int y, int w, int h, GUI_Font *font, const char *text);
int GUI_LabelCheck(GUI_Widget *widget);
void GUI_LabelSetFont(GUI_Widget *widget, GUI_Font *font);
void GUI_LabelSetTextColor(GUI_Widget *widget, int r, int g, int b);
void GUI_LabelSetText(GUI_Widget *widget, const char *text);
GUI_Widget *GUI_PictureCreate(const char *name, int x, int y, int w, int h, GUI_Surface *image);
int GUI_PictureCheck(GUI_Widget *widget);
void GUI_PictureSetImage(GUI_Widget *widget, GUI_Surface *image);
void GUI_PictureSetCaption(GUI_Widget *widget, GUI_Widget *caption);
GUI_Widget *GUI_ProgressBarCreate(const char *name, int x, int y, int w, int h);
int GUI_ProgressBarCheck(GUI_Widget *widget);
void GUI_ProgressBarSetImage1(GUI_Widget *widget, GUI_Surface *image);
void GUI_ProgressBarSetImage2(GUI_Widget *widget, GUI_Surface *image);
void GUI_ProgressBarSetPosition(GUI_Widget *widget, double value);
GUI_Widget *GUI_ScrollBarCreate(const char *name, int x, int y, int w, int h);
int GUI_ScrollBarCheck(GUI_Widget *widget);
void GUI_ScrollBarSetKnobImage(GUI_Widget *widget, GUI_Surface *image);
void GUI_ScrollBarSetBackgroundImage(GUI_Widget *widget, GUI_Surface *image);
void GUI_ScrollBarSetPosition(GUI_Widget *widget, int value); int GUI_ScrollBarGetPosition(GUI_Widget *widget); void GUI_ScrollBarSetMovedCallback(GUI_Widget *widget, GUI_Callback *callback);
int GUI_ScrollBarGetHorizontalPosition(GUI_Widget *widget);
int GUI_ScrollBarGetVerticalPosition(GUI_Widget *widget);
void GUI_ScrollBarSetHorizontalPosition(GUI_Widget *widget, int value);
void GUI_ScrollBarSetVerticalPosition(GUI_Widget *widget, int value);
GUI_Widget *GUI_CardStackCreate(const char *name, int x, int y, int w, int h);
int GUI_CardStackCheck(GUI_Widget *widget);
void GUI_CardStackSetBackground(GUI_Widget *widget, GUI_Surface *surface);
void GUI_CardStackSetBackgroundColor(GUI_Widget *widget, SDL_Color c);
void GUI_CardStackNext(GUI_Widget *widget);
void GUI_CardStackPrev(GUI_Widget *widget);
void GUI_CardStackShowIndex(GUI_Widget *widget, int index);
void GUI_CardStackShow(GUI_Widget *widget, const char *name);
int GUI_CardStackGetIndex(GUI_Widget *widget);
GUI_Widget *GUI_TextEntryCreate(const char *name, int x, int y, int w, int h, GUI_Font *font, int size);
int GUI_TextEntryCheck(GUI_Widget *widget);
void GUI_TextEntrySetFont(GUI_Widget *widget, GUI_Font *font);
void GUI_TextEntrySetTextColor(GUI_Widget *widget, int r, int g, int b);
void GUI_TextEntrySetText(GUI_Widget *widget, const char *text);
const char *GUI_TextEntryGetText(GUI_Widget *widget);
void GUI_TextEntrySetNormalImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_TextEntrySetHighlightImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_TextEntrySetFocusImage(GUI_Widget *widget, GUI_Surface *surface);
void GUI_TextEntrySetFocusCallback(GUI_Widget *widget, GUI_Callback *callback);
void GUI_TextEntrySetUnfocusCallback(GUI_Widget *widget, GUI_Callback *callback);
GUI_ListBox *GUI_CreateListBox(const char *aname, int x, int y, int w, int h, GUI_Font *afont);
int GUI_ListBoxGetRowCount(GUI_ListBox *list);
int GUI_ListBoxGetRowSize(GUI_ListBox *list, int row);
int GUI_ListBoxGetColumnCount(GUI_ListBox *list);
int GUI_ListBoxGetColumnSize(GUI_ListBox *list, int column);
void GUI_ListBoxSetFont(GUI_ListBox *list, GUI_Font *afont);
void GUI_ListBoxSetTextColor(GUI_ListBox *list, int r, int g, int b);
void GUI_ListBoxDrawCell(GUI_ListBox *list, int column, int row, const SDL_Rect *r);
void GUI_ListBoxAddItem(GUI_ListBox *list, const char *s);
void GUI_ListBoxRemoveItem(GUI_ListBox *list, int n);
GUI_Widget *GUI_RTF_Load(const char *name, const char *file, int x, int y, int w, int h);
GUI_Widget *GUI_RTF_LoadRW(const char *name, SDL_RWops *src, int freesrc, int x, int y, int w, int h);
int GUI_RTF_GetFullHeight(GUI_Widget *widget);
void GUI_RTF_SetOffset(GUI_Widget *widget, int value);
void GUI_RTF_SetBgColor(GUI_Widget *widget, int r, int g, int b);
int GUI_RTF_SetFont(GUI_Widget *widget, RTF_FontFamily family, const char *file);
const char *GUI_RTF_GetTitle(GUI_Widget *widget);
const char *GUI_RTF_GetSubject(GUI_Widget *widget);
const char *GUI_RTF_GetAuthor(GUI_Widget *widget);
GUI_Widget *GUI_FileManagerCreate(const char *name, const char *path, int x, int y, int w, int h);
void GUI_FileManagerSetPath(GUI_Widget *widget, const char *path);
const char *GUI_FileManagerGetPath(GUI_Widget *widget);
void GUI_FileManagerChangeDir(GUI_Widget *widget, const char *name, int size);
void GUI_FileManagerScan(GUI_Widget *widget);
void GUI_FileManagerAddItem(GUI_Widget *widget, const char *name, int size, int time, int attr);
GUI_Widget *GUI_FileManagerGetItem(GUI_Widget *widget, int index);
GUI_Widget *GUI_FileManagerGetItemPanel(GUI_Widget *widget);
void GUI_FileManagerSetItemSurfaces(GUI_Widget *widget, GUI_Surface *normal, GUI_Surface *highlight, GUI_Surface *pressed, GUI_Surface *disabled);
void GUI_FileManagerSetItemLabel(GUI_Widget *widget, GUI_Font *font, int r, int g, int b);
void GUI_FileManagerSetItemSize(GUI_Widget *widget, const SDL_Rect *item_r);
void GUI_FileManagerSetScrollbar(GUI_Widget *widget, GUI_Surface *knob, GUI_Surface *background);
void GUI_FileManagerSetScrollbarButtonUp(GUI_Widget *widget, GUI_Surface *normal, GUI_Surface *highlight, GUI_Surface *pressed, GUI_Surface *disabled);
void GUI_FileManagerSetScrollbarButtonDown(GUI_Widget *widget, GUI_Surface *normal, GUI_Surface *highlight, GUI_Surface *pressed, GUI_Surface *disabled);
int GUI_FileManagerEvent(GUI_Widget *widget, const SDL_Event *event, int xoffset, int yoffset);
void GUI_FileManagerUpdate(GUI_Widget *widget, int force);
GUI_Object *GUI_AnyToObject(void *type);
GUI_Widget *GUI_AnyToWidget(void *type);
GUI_ListBox *GUI_AnyToListbox(void *type);
GUI_Font *GUI_AnyToFont(void *type);
GUI_Surface *GUI_AnyToSurface(void *type);
void GUI_Free(void *ptr);
}