mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-21 15:28:18 +02:00
84 lines
2.5 KiB
C++
84 lines
2.5 KiB
C++
/***********************************************************
|
|
* Copyright (C) 1997, Be Inc. Copyright (C) 1999, Jake Hamby.
|
|
*
|
|
* This program is freely distributable without licensing fees
|
|
* and is provided without guarantee or warrantee expressed or
|
|
* implied. This program is -not- in the public domain.
|
|
*
|
|
* FILE: glutMenu.h
|
|
*
|
|
* DESCRIPTION: the GlutMenu class is a simple popup menu
|
|
***********************************************************/
|
|
|
|
/***********************************************************
|
|
* Headers
|
|
***********************************************************/
|
|
#include <GL/glut.h>
|
|
#include <Menu.h>
|
|
#include <MenuItem.h>
|
|
#include <PopUpMenu.h>
|
|
|
|
/***********************************************************
|
|
* Definitions
|
|
***********************************************************/
|
|
const int32 MENU_ITEM = 'menu';
|
|
|
|
/***********************************************************
|
|
* CLASS: GlutMenu
|
|
***********************************************************/
|
|
class GlutMenuItem;
|
|
class GlutPopUp;
|
|
class GlutMenu {
|
|
public:
|
|
GlutMenu(int n_id, GLUTselectCB n_select) {
|
|
id = n_id;
|
|
select = n_select;
|
|
list = 0;
|
|
num = 0;
|
|
}
|
|
~GlutMenu();
|
|
BMenu *CreateBMenu(bool toplevel=true); // construct BPopUpMenu
|
|
|
|
// public data
|
|
int id;
|
|
GLUTselectCB select; // callback function
|
|
GlutMenuItem *list; // list of menu items
|
|
int num; // number of items
|
|
};
|
|
|
|
/***********************************************************
|
|
* CLASS: GlutMenuItem
|
|
***********************************************************/
|
|
class GlutMenuItem {
|
|
public:
|
|
GlutMenuItem(GlutMenu *n_menu, bool n_trig, int n_value, const char *n_label);
|
|
|
|
// public data
|
|
GlutMenu *menu; // parent menu
|
|
bool isTrigger; // are we a submenu?
|
|
int value; // value to send, or submenu id if isTrigger
|
|
char *label; // strdup'ed label string
|
|
GlutMenuItem *next; // next menu entry on list
|
|
};
|
|
|
|
/***********************************************************
|
|
* CLASS: GlutPopUp
|
|
***********************************************************/
|
|
class GlutPopUp : public BPopUpMenu {
|
|
public:
|
|
GlutPopUp(int m) : BPopUpMenu(0, false, false) { menu = m;}
|
|
|
|
BPoint point; // point to start menu
|
|
GlutWindow *win; // pointer to my window
|
|
int menu; // my menu number
|
|
};
|
|
|
|
/***********************************************************
|
|
* CLASS: GlutBMenuItem
|
|
***********************************************************/
|
|
class GlutBMenuItem : public BMenuItem {
|
|
public:
|
|
GlutBMenuItem(const char *name) : BMenuItem(name, 0) {}
|
|
GlutBMenuItem(BMenu* menu) : BMenuItem(menu) {}
|
|
int menu, value;
|
|
};
|