f61b9aaaf7616934d4c139c07d8319d3894a0978
[mesa.git] / src / glut / beos / glutMenu.h
1 /***********************************************************
2 * Copyright (C) 1997, Be Inc. All rights reserved.
3 *
4 * FILE: glutMenu.h
5 *
6 * DESCRIPTION: the GlutMenu class is a simple popup menu
7 ***********************************************************/
8
9 /***********************************************************
10 * Headers
11 ***********************************************************/
12 #include <GL/glut.h>
13 #include <Menu.h>
14 #include <MenuItem.h>
15
16 /***********************************************************
17 * Definitions
18 ***********************************************************/
19 const int32 MENU_ITEM = 'menu';
20
21 /***********************************************************
22 * CLASS: GlutMenu
23 ***********************************************************/
24 class GlutMenuItem;
25 class GlutPopUp;
26 class GlutMenu {
27 public:
28 GlutMenu(int n_id, GLUTselectCB n_select) {
29 id = n_id;
30 select = n_select;
31 list = 0;
32 num = 0;
33 }
34 ~GlutMenu();
35 BMenu *CreateBMenu(bool toplevel=true); // construct BPopUpMenu
36
37 // public data
38 int id;
39 GLUTselectCB select; // callback function
40 GlutMenuItem *list; // list of menu items
41 int num; // number of items
42 };
43
44 /***********************************************************
45 * CLASS: GlutMenuItem
46 ***********************************************************/
47 class GlutMenuItem {
48 public:
49 GlutMenuItem(GlutMenu *n_menu, bool n_trig, int n_value, const char *n_label);
50
51 // public data
52 GlutMenu *menu; // parent menu
53 bool isTrigger; // are we a submenu?
54 int value; // value to send, or submenu id if isTrigger
55 char *label; // strdup'ed label string
56 GlutMenuItem *next; // next menu entry on list
57 };
58
59 /***********************************************************
60 * CLASS: GlutPopUp
61 ***********************************************************/
62 class GlutPopUp : public BPopUpMenu {
63 public:
64 GlutPopUp(int m) : BPopUpMenu(0, false, false) { menu = m;}
65
66 BPoint point; // point to start menu
67 GlutWindow *win; // pointer to my window
68 int menu; // my menu number
69 };
70
71 /***********************************************************
72 * CLASS: GlutBMenuItem
73 ***********************************************************/
74 class GlutBMenuItem : public BMenuItem {
75 public:
76 GlutBMenuItem(const char *name) : BMenuItem(name, 0) {}
77 GlutBMenuItem(BMenu* menu) : BMenuItem(menu) {}
78 int menu, value;
79 };