From f7c8435b666daac5a30c88e462727a6c3dbf584d Mon Sep 17 00:00:00 2001 From: Ian C Date: Tue, 12 Sep 2006 00:12:53 +0000 Subject: Initial checkin --- source/gui.c | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 source/gui.c (limited to 'source/gui.c') diff --git a/source/gui.c b/source/gui.c new file mode 100644 index 0000000..c91f846 --- /dev/null +++ b/source/gui.c @@ -0,0 +1,118 @@ +/* + dsspec - Nintendo DS Sinclair Spectrum 48K emulator. + + Copyright (C) 2006 Ian Cowburn + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + $Id$ +*/ + +#include +#include + +#include "framebuffer.h" + + +/* ---------------------------------------- PUBLIC INTERFACES +*/ +int GUI_Menu(const char *opts[]) +{ + int x,y; + int h; + int w; + int no; + int sel; + int f; + bool done; + bool defer; + + w=0; + h=0; + sel=0; + done=false; + defer=false; + + for(no=0;opts[no];no++) + { + h+=16; + + if (strlen(opts[no])>w) + { + w=strlen(opts[no]); + } + } + + w=w*8+16; + + x=SCREEN_WIDTH/2-w/2; + y=SCREEN_HEIGHT/2-h/2; + + while(!done) + { + uint32 key=0; + + FB_FillBox(x,y,w,h,FB_RGB(0,0,0)); + FB_Box(x,y,w,h,FB_RGB(31,31,31)); + FB_FillBox(x+1,y+sel*16+1,w-2,14,FB_RGB(8,8,31)); + + for(f=0;f=x && tp.px<(w+w) && tp.py>=y && tp.py<(y+h)) + { + defer=true; + sel=(tp.py-y)/16; + } + } + } + } + + return sel; +} + -- cgit v1.2.3