/* Draw a normal button. */ void SDLGui_DrawButton(SGOBJ *bdlg, int objnum) { SDL_Rect coord; int x, y; int textc; SDLGui_ObjCoord(bdlg, objnum, &coord); x = coord.x + ((coord.w - (strlen(bdlg[objnum].txt) * fontwidth)) / 2); y = coord.y + ((coord.h - fontheight) / 2); if (bdlg[objnum].state & SG_SELECTED) { x += 1; y += 1; } if (bdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_DrawBox(bdlg, objnum); SDLGui_Text(x, y, bdlg[objnum].txt, textc); }
/** * Draw single object based on its type */ static void SDLGui_DrawObj(const SGOBJ *dlg, int i) { switch (dlg[i].type) { case SGBOX: SDLGui_DrawBox(dlg, i); break; case SGTEXT: SDLGui_DrawText(dlg, i); break; case SGEDITFIELD: SDLGui_DrawEditField(dlg, i); break; case SGBUTTON: SDLGui_DrawButton(dlg, i); break; case SGRADIOBUT: SDLGui_DrawRadioButton(dlg, i); break; case SGCHECKBOX: SDLGui_DrawCheckBox(dlg, i); break; case SGPOPUP: SDLGui_DrawPopupButton(dlg, i); break; case SGSCROLLBAR: SDLGui_DrawScrollbar(dlg, i); break; } }
/** * Draw a whole dialog. */ void SDLGui_DrawDialog(const SGOBJ *dlg) { int i; for (i = 0; dlg[i].type != -1; i++) { switch (dlg[i].type) { case SGBOX: SDLGui_DrawBox(dlg, i); break; case SGTEXT: SDLGui_DrawText(dlg, i); break; case SGEDITFIELD: SDLGui_DrawEditField(dlg, i); break; case SGBUTTON: SDLGui_DrawButton(dlg, i); break; case SGRADIOBUT: SDLGui_DrawRadioButton(dlg, i); break; case SGCHECKBOX: SDLGui_DrawCheckBox(dlg, i); break; case SGPOPUP: SDLGui_DrawPopupButton(dlg, i); break; case SGSCROLLBAR: SDLGui_DrawScrollbar(dlg, i); break; } } SDL_UpdateRect(pSdlGuiScrn, 0,0,0,0); }
/** * Draw a dialog popup button object. */ static void SDLGui_DrawPopupButton(const SGOBJ *pdlg, int32_t objnum) { int32_t x, y, w; const char *downstr = "\x02"; SDLGui_DrawBox(pdlg, objnum); x = (pdlg[0].x + pdlg[objnum].x) * sdlgui_fontwidth; y = (pdlg[0].y + pdlg[objnum].y) * sdlgui_fontheight; w = pdlg[objnum].w * sdlgui_fontwidth; SDLGui_Text(x, y, pdlg[objnum].txt); SDLGui_Text(x+w-sdlgui_fontwidth, y, downstr); }
/** * Draw a normal button. */ static void SDLGui_DrawButton(const SGOBJ *bdlg, int32_t objnum) { int32_t x,y; SDLGui_DrawBox(bdlg, objnum); x = (bdlg[0].x + bdlg[objnum].x + (bdlg[objnum].w-strlen(bdlg[objnum].txt))/2) * sdlgui_fontwidth; y = (bdlg[0].y + bdlg[objnum].y + (bdlg[objnum].h-1)/2) * sdlgui_fontheight; if (bdlg[objnum].state & SG_SELECTED) { x+=1; y+=1; } SDLGui_Text(x, y, bdlg[objnum].txt); }
/* Draw a dialog popup button object. */ void SDLGui_DrawPopupButton(SGOBJ *pdlg, int objnum) { SDL_Rect coord; const char *downstr = "\x02"; int textc; if (pdlg[objnum].state & SG_DISABLED) textc = darkgreyc; else textc = blackc; SDLGui_DrawBox(pdlg, objnum); SDLGui_ObjCoord(pdlg, objnum, &coord); SDLGui_Text(coord.x, coord.y, pdlg[objnum].txt, textc); SDLGui_Text(coord.x+coord.w-fontwidth, coord.y, downstr, textc); }
/** * Draw a whole dialog. */ void SDLGui_DrawDialog(const SGOBJ *dlg) { int32_t i; memset(bmp, 0, sizeof(bmp)); for (i = 0; dlg[i].type != -1; i++) { switch (dlg[i].type) { case SGBOX: SDLGui_DrawBox(dlg, i); break; case SGTEXT: SDLGui_DrawText(dlg, i); break; case SGEDITFIELD: SDLGui_DrawEditField(dlg, i); break; case SGBUTTON: SDLGui_DrawButton(dlg, i); break; case SGRADIOBUT: SDLGui_DrawRadioButton(dlg, i); break; case SGCHECKBOX: SDLGui_DrawCheckBox(dlg, i); break; case SGPOPUP: SDLGui_DrawPopupButton(dlg, i); break; case SGSCROLLBAR: SDLGui_DrawScrollbar(dlg, i); break; } } }
/* Draw an object. */ void SDLGui_DrawObject(SGOBJ *dlg, int objnum) { switch (dlg[objnum].type) { case SGBOX: SDLGui_DrawBox(dlg, objnum); break; case SGTEXT: SDLGui_DrawText(dlg, objnum); break; case SGEDITFIELD: SDLGui_DrawEditField(dlg, objnum); break; case SGBUTTON: SDLGui_DrawButton(dlg, objnum); break; case SGCHECKBOX: SDLGui_DrawCheckBox(dlg, objnum); break; case SGPOPUP: SDLGui_DrawPopupButton(dlg, objnum); break; } }