1 /***************************************************************************
4 begin : Thu Sep 20 2001
5 copyright : (C) 2001 by Michael Speck
6 email : kulkanie@gmx.net
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
22 ====================================================================
24 ====================================================================
26 enum { MENU_LAYOUT_CENTERED
= 0 };
27 typedef struct _Menu
{
28 char *name
; /* name of menu -- duplicated */
30 int x
, y
, w
, h
; /* layout */
31 List
*items
; /* list of menu items */
32 Item
*cur_item
; /* currently highlighted item */
33 struct _Menu
*parent
; /* parent menu */
34 StkFont
*font
, *hfont
, *cfont
; /* if not set the default fonts are used */
38 ====================================================================
39 Create menu and center it in x,y,w,h by menu_adjust() later.
40 ====================================================================
42 Menu
*menu_create( char *name
, int layout
, int x
, int y
, int w
, int h
, int border
, int add_to_list
);
44 ====================================================================
45 Delete menu and all submenus starting with root menu
46 ====================================================================
48 void menu_delete( void *menu
);
50 ====================================================================
51 Add item to menu. Add item::menu to children list if
53 ====================================================================
55 void menu_add( Menu
*menu
, Item
*item
);
57 ====================================================================
58 Adjust position and size of all entries according to layout.
59 ====================================================================
61 void menu_adjust( Menu
*menu
);
63 ====================================================================
64 Select menu: clear current item and set extern variable cur_menu
65 ====================================================================
67 void menu_select( Menu
*menu
);
69 ====================================================================
71 ====================================================================
73 void menu_hide( Menu
*menu
);
74 void menu_show( Menu
*menu
);
76 ====================================================================
77 modify items according to event (if any) and return action id.
78 ====================================================================
80 int menu_handle_event( Menu
*menu
, SDL_Event
*event
);
82 ====================================================================
84 ====================================================================
86 void menu_update( Menu
*menu
, int ms
);
88 ====================================================================
89 Select/unselect item: update menu::cur_item und item::highlight
90 ====================================================================
92 void menu_unselect_cur_item( Menu
*menu
);
93 void menu_select_item( Menu
*menu
, Item
*item
);
95 ====================================================================
96 Go one valid menu item up or down.
97 ====================================================================
99 void menu_up( Menu
*menu
);
100 void menu_down( Menu
*menu
);
102 ====================================================================
103 Set fonts of menu and items.
104 ====================================================================
107 Menu
*menu
, StkFont
*cfont
, StkFont
*font
, StkFont
*hfont
);
109 ====================================================================
110 Set background of menu and items.
111 ====================================================================
113 void menu_set_bkgnd( Menu
*menu
, SDL_Surface
*bkgnd
);