mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
remove old menu code and glew implemenation file
This commit is contained in:
parent
d12d20e193
commit
3ac20849d6
8 changed files with 0 additions and 16504 deletions
|
@ -233,11 +233,6 @@ void Application::initializeGL() {
|
||||||
glutInit(&argc, 0);
|
glutInit(&argc, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
glewInit();
|
|
||||||
printLog( "Glew Init complete.\n" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Before we render anything, let's set up our viewFrustumOffsetCamera with a sufficiently large
|
// Before we render anything, let's set up our viewFrustumOffsetCamera with a sufficiently large
|
||||||
// field of view and near and far clip to make it interesting.
|
// field of view and near and far clip to make it interesting.
|
||||||
//viewFrustumOffsetCamera.setFieldOfView(90.0);
|
//viewFrustumOffsetCamera.setFieldOfView(90.0);
|
||||||
|
|
15955
interface/src/glew.cpp
15955
interface/src/glew.cpp
File diff suppressed because it is too large
Load diff
|
@ -1,158 +0,0 @@
|
||||||
//
|
|
||||||
// Menu.cpp
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
#include "InterfaceConfig.h"
|
|
||||||
#include "Util.h"
|
|
||||||
|
|
||||||
#include "MenuRow.h"
|
|
||||||
#include "MenuColumn.h"
|
|
||||||
#include "Menu.h"
|
|
||||||
|
|
||||||
|
|
||||||
const int LINE_HEIGHT = 30;
|
|
||||||
const int MENU_HEIGHT = 30;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
const int MENU_Y_OFFSET = 8; // under windows we have 8 vertical pixels offset.
|
|
||||||
// In 2D an object with y=8, the object is displayed at y=0
|
|
||||||
// change the value in the other platforms (if required).
|
|
||||||
#else
|
|
||||||
const int MENU_Y_OFFSET = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Menu::Menu() {
|
|
||||||
currentColumn = -1;
|
|
||||||
leftMouseOver = 0;
|
|
||||||
rightMouseOver = 0;
|
|
||||||
topMouseOver = 0;
|
|
||||||
bottomMouseOver = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Menu::~Menu() {
|
|
||||||
columns.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::mouseClickColumn(int columnIndex) {
|
|
||||||
if (currentColumn == columnIndex) {
|
|
||||||
currentColumn = -1;
|
|
||||||
} else {
|
|
||||||
currentColumn = columnIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::setMouseOver(int leftPosition, int rightPosition, int top, int bottom) {
|
|
||||||
leftMouseOver = leftPosition;
|
|
||||||
rightMouseOver = rightPosition;
|
|
||||||
topMouseOver = top;
|
|
||||||
bottomMouseOver = bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::renderMouseOver() {
|
|
||||||
if (leftMouseOver != 0 || topMouseOver != 0 || rightMouseOver != 0 ||& bottomMouseOver != 0) {
|
|
||||||
glColor4f(0, 0, 0, 0.1);
|
|
||||||
glBegin(GL_QUADS); {
|
|
||||||
glVertex2f(leftMouseOver, MENU_Y_OFFSET + topMouseOver);
|
|
||||||
glVertex2f(rightMouseOver, MENU_Y_OFFSET + topMouseOver);
|
|
||||||
glVertex2f(rightMouseOver, MENU_Y_OFFSET + bottomMouseOver);
|
|
||||||
glVertex2f(leftMouseOver, MENU_Y_OFFSET + bottomMouseOver);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Menu::mouseClick(int x, int y) {
|
|
||||||
int leftPosition = 0.5 * SPACE_BETWEEN_COLUMNS;
|
|
||||||
int rightPosition = 0;
|
|
||||||
int columnWidth = 0;
|
|
||||||
bool menuFound = false;
|
|
||||||
for (unsigned int i = 0; i < columns.size(); ++i) {
|
|
||||||
columnWidth = columns[i].getWidth();
|
|
||||||
rightPosition = leftPosition + columnWidth + 1.5 * SPACE_BETWEEN_COLUMNS;
|
|
||||||
if (x > leftPosition && x < rightPosition && y > 0 && y < MENU_HEIGHT) {
|
|
||||||
mouseClickColumn(i);
|
|
||||||
menuFound = true;
|
|
||||||
break;
|
|
||||||
} else if (currentColumn == i) {
|
|
||||||
menuFound = columns[i].mouseClick(x, y, leftPosition, MENU_HEIGHT, LINE_HEIGHT);
|
|
||||||
if (menuFound) {
|
|
||||||
currentColumn = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
leftPosition = rightPosition;
|
|
||||||
}
|
|
||||||
return menuFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Menu::mouseOver(int x, int y) {
|
|
||||||
int leftPosition = 0.5 * SPACE_BETWEEN_COLUMNS;
|
|
||||||
int rightPosition;
|
|
||||||
int columnWidth;
|
|
||||||
bool overMenu = false;
|
|
||||||
for (unsigned int i = 0; i < columns.size(); ++i) {
|
|
||||||
columnWidth = columns[i].getWidth();
|
|
||||||
rightPosition = leftPosition + columnWidth + SPACE_BETWEEN_COLUMNS;
|
|
||||||
if (x > leftPosition && x < rightPosition && y > 0 && y < MENU_HEIGHT) {
|
|
||||||
setMouseOver(leftPosition, rightPosition, 0, MENU_HEIGHT);
|
|
||||||
overMenu = true;
|
|
||||||
if (currentColumn >= 0) {
|
|
||||||
columns[currentColumn].setMouseOver(0, 0, 0, 0);
|
|
||||||
currentColumn = i;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} else if (currentColumn == i) {
|
|
||||||
columns[i].mouseOver(x, y, leftPosition, MENU_HEIGHT, LINE_HEIGHT);
|
|
||||||
}
|
|
||||||
leftPosition = rightPosition;
|
|
||||||
}
|
|
||||||
if (!overMenu) {
|
|
||||||
setMouseOver(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
return overMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
const float MENU_COLOR[3] = {0.75, 0.75, 0.75};
|
|
||||||
|
|
||||||
void Menu::render(int screenWidth, int screenHeight) {
|
|
||||||
float scale = 0.10;
|
|
||||||
int mono = 0;
|
|
||||||
glColor3fv(MENU_COLOR);
|
|
||||||
int width = screenWidth;
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
|
||||||
glBegin(GL_QUADS); {
|
|
||||||
glVertex2f(0, MENU_Y_OFFSET);
|
|
||||||
glVertex2f(width, MENU_Y_OFFSET);
|
|
||||||
glVertex2f(width, MENU_HEIGHT + MENU_Y_OFFSET);
|
|
||||||
glVertex2f(0 , MENU_HEIGHT + MENU_Y_OFFSET);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
int xPosition = SPACE_BETWEEN_COLUMNS;
|
|
||||||
char* columnName;
|
|
||||||
int columnWidth;
|
|
||||||
for (unsigned int i = 0; i < columns.size(); ++i) {
|
|
||||||
columnName = columns[i].getName();
|
|
||||||
columnWidth = columns[i].getWidth(scale, mono, xPosition - 0.5 * SPACE_BETWEEN_COLUMNS);
|
|
||||||
drawtext(xPosition, 18 + MENU_Y_OFFSET, scale, 0, 1.0, mono, columnName, 0, 0, 0);
|
|
||||||
xPosition += columnWidth + SPACE_BETWEEN_COLUMNS;
|
|
||||||
if (currentColumn == i) {
|
|
||||||
columns[i].render(MENU_Y_OFFSET, MENU_HEIGHT, LINE_HEIGHT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
renderMouseOver();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MenuColumn* Menu::addColumn(const char *columnName) {
|
|
||||||
MenuColumn* pColumn;
|
|
||||||
pColumn = new MenuColumn(columnName);
|
|
||||||
columns.push_back(*pColumn);
|
|
||||||
delete pColumn;
|
|
||||||
return &columns[columns.size() - 1];
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
//
|
|
||||||
// Menu.h
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef __hifi__Menu__
|
|
||||||
#define __hifi__Menu__
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
|
|
||||||
class Menu {
|
|
||||||
public:
|
|
||||||
Menu();
|
|
||||||
~Menu();
|
|
||||||
void mouseClickColumn(int iColumnIndex);
|
|
||||||
void setMouseOver(int xLeft, int xRight, int yTop, int yBottom);
|
|
||||||
void renderMouseOver();
|
|
||||||
bool mouseClick(int x, int y);
|
|
||||||
bool mouseOver(int x, int y);
|
|
||||||
void render(int screenwidth, int screenheight);
|
|
||||||
void renderColumn(int i);
|
|
||||||
MenuColumn* addColumn(const char *columnName);
|
|
||||||
void hidePopupMenu() { currentColumn = -1; };
|
|
||||||
private:
|
|
||||||
std::vector<MenuColumn> columns;
|
|
||||||
int currentColumn;
|
|
||||||
int leftMouseOver;
|
|
||||||
int rightMouseOver;
|
|
||||||
int topMouseOver;
|
|
||||||
int bottomMouseOver;
|
|
||||||
};
|
|
||||||
#endif /* defined(__hifi__Menu__) */
|
|
|
@ -1,183 +0,0 @@
|
||||||
//
|
|
||||||
// MenuColumn.cpp
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "InterfaceConfig.h"
|
|
||||||
#include "Util.h"
|
|
||||||
|
|
||||||
#include "MenuRow.h"
|
|
||||||
#include "MenuColumn.h"
|
|
||||||
#include "Menu.h"
|
|
||||||
|
|
||||||
#include "ui/TextRenderer.h"
|
|
||||||
|
|
||||||
MenuColumn::MenuColumn() {
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuColumn::MenuColumn(const char* columnName) {
|
|
||||||
int length = std::min(MAX_COLUMN_NAME - 1,(int) strlen(columnName));
|
|
||||||
strncpy(this->columnName, columnName, length);
|
|
||||||
this->columnName[length] = '\0';
|
|
||||||
columnWidth = 0;
|
|
||||||
leftPosition = 0;
|
|
||||||
leftMouseOver = 0;
|
|
||||||
rightMouseOver = 0;
|
|
||||||
topMouseOver = 0;
|
|
||||||
bottomMouseOver = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuColumn::~MenuColumn() {
|
|
||||||
rows.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuColumn::mouseClickRow(int numberOfRowsIndex) {
|
|
||||||
rows[numberOfRowsIndex].call();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MenuColumn::mouseClick(int x, int y, int leftPosition, int menuHeight, int lineHeight) {
|
|
||||||
int rightPosition = leftPosition + 200; // XXXBHG - this looks like a hack?
|
|
||||||
int topPosition = menuHeight;
|
|
||||||
int bottomPosition = menuHeight;
|
|
||||||
int columnWidth = 0;
|
|
||||||
bool menuFound = false;
|
|
||||||
for (unsigned int i = 0; i < rows.size(); ++i) {
|
|
||||||
columnWidth = rows[i].getWidth();
|
|
||||||
topPosition = bottomPosition + lineHeight;
|
|
||||||
if (x > leftPosition && x < rightPosition && y > bottomPosition && y < topPosition) {
|
|
||||||
mouseClickRow(i);
|
|
||||||
menuFound = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
bottomPosition = topPosition;
|
|
||||||
}
|
|
||||||
return menuFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuColumn::setMouseOver(int leftPosition, int rightPosition, int topPosition, int bottomPosition) {
|
|
||||||
leftMouseOver = leftPosition;
|
|
||||||
rightMouseOver = rightPosition;
|
|
||||||
topMouseOver = topPosition;
|
|
||||||
bottomMouseOver = bottomPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MenuColumn::mouseOver(int x, int y, int leftPosition, int menuHeight, int lineHeight) {
|
|
||||||
|
|
||||||
int maxColumnWidth = this->getMaxRowWidth();
|
|
||||||
|
|
||||||
int rightPosition = leftPosition + maxColumnWidth;
|
|
||||||
int topPosition = menuHeight;
|
|
||||||
int bottomPosition = menuHeight;
|
|
||||||
bool overMenu = false;
|
|
||||||
for (unsigned int i = 0; i < rows.size(); ++i) {
|
|
||||||
topPosition = bottomPosition + lineHeight ;
|
|
||||||
if (x > leftPosition && x < rightPosition && y > bottomPosition && y < topPosition) {
|
|
||||||
setMouseOver(leftPosition, rightPosition, bottomPosition, topPosition);
|
|
||||||
overMenu = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
bottomPosition = topPosition;
|
|
||||||
}
|
|
||||||
if (!overMenu) {
|
|
||||||
setMouseOver(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
return overMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* MenuColumn::getName() {
|
|
||||||
return this->columnName;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::getWidth(float scale, int mono, int leftPosition) {
|
|
||||||
if (columnWidth == 0) {
|
|
||||||
columnWidth = widthText(scale, mono, this->columnName);
|
|
||||||
this->leftPosition = leftPosition;
|
|
||||||
}
|
|
||||||
return columnWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::getWidth() {
|
|
||||||
return columnWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::getLeftPosition() {
|
|
||||||
return leftPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::addRow(const char* rowName, MenuRowCallback callback) {
|
|
||||||
MenuRow* row;
|
|
||||||
row = new MenuRow(rowName, callback);
|
|
||||||
rows.push_back(*row);
|
|
||||||
delete row;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::addRow(const char* rowName, MenuRowCallback callback, MenuStateNameCallback stateNameCallback) {
|
|
||||||
MenuRow* row;
|
|
||||||
row = new MenuRow(rowName, callback, stateNameCallback);
|
|
||||||
rows.push_back(*row);
|
|
||||||
delete row;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuColumn::getMaxRowWidth() {
|
|
||||||
float scale = 0.09;
|
|
||||||
int mono = 0;
|
|
||||||
int maxColumnWidth = 100 - (SPACE_BEFORE_ROW_NAME*2); // the minimum size we want
|
|
||||||
for (unsigned int i = 0; i < rows.size(); ++i) {
|
|
||||||
maxColumnWidth = std::max(maxColumnWidth,rows[i].getWidth(scale, mono, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
maxColumnWidth += SPACE_BEFORE_ROW_NAME*2; // space before and after!!
|
|
||||||
return maxColumnWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
static TextRenderer* textRenderer() {
|
|
||||||
static TextRenderer* renderer = new TextRenderer(SANS_FONT_FAMILY, 11);
|
|
||||||
return renderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuColumn::render(int yOffset, int menuHeight, int lineHeight) {
|
|
||||||
int numberOfRows = rows.size();
|
|
||||||
if (numberOfRows > 0) {
|
|
||||||
|
|
||||||
int maxColumnWidth = this->getMaxRowWidth();
|
|
||||||
|
|
||||||
glColor3f(0.9,0.9,0.9);
|
|
||||||
glBegin(GL_QUADS); {
|
|
||||||
glVertex2f(leftPosition, yOffset + menuHeight);
|
|
||||||
glVertex2f(leftPosition+maxColumnWidth, yOffset + menuHeight);
|
|
||||||
glVertex2f(leftPosition+maxColumnWidth, yOffset + menuHeight + numberOfRows*lineHeight);
|
|
||||||
glVertex2f(leftPosition , yOffset + menuHeight + numberOfRows* lineHeight);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
int y = menuHeight + lineHeight / 2 ;
|
|
||||||
char* rowName;
|
|
||||||
for (unsigned int i = 0; i < rows.size(); ++i) {
|
|
||||||
rowName = rows[i].getName();
|
|
||||||
glColor3f(0, 0, 0);
|
|
||||||
textRenderer()->draw(leftPosition + SPACE_BEFORE_ROW_NAME, y + 5 + yOffset, rowName);
|
|
||||||
y += lineHeight;
|
|
||||||
}
|
|
||||||
renderMouseOver(yOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuColumn::renderMouseOver(int yOffset) {
|
|
||||||
if (leftMouseOver != 0 || topMouseOver != 0 || rightMouseOver != 0 ||& bottomMouseOver != 0) {
|
|
||||||
glColor4f(0,0,0,0.1);
|
|
||||||
glBegin(GL_QUADS); {
|
|
||||||
glVertex2f(leftMouseOver, yOffset + topMouseOver);
|
|
||||||
glVertex2f(rightMouseOver, yOffset + topMouseOver);
|
|
||||||
glVertex2f(rightMouseOver, yOffset + bottomMouseOver);
|
|
||||||
glVertex2f(leftMouseOver , yOffset + bottomMouseOver);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
//
|
|
||||||
// MenuColumn.h
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef __hifi__MenuColumn__
|
|
||||||
#define __hifi__MenuColumn__
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
class MenuColumn {
|
|
||||||
public:
|
|
||||||
MenuColumn();
|
|
||||||
MenuColumn(const char* columnName);
|
|
||||||
~MenuColumn();
|
|
||||||
void mouseClickRow(int iColumnIndex);
|
|
||||||
bool mouseClick(int x, int y, int xLeft, int menuHeight, int lineHeight);
|
|
||||||
void setMouseOver(int xLeft, int xRight, int yTop, int yBottom);
|
|
||||||
bool mouseOver(int x, int y, int xLeft, int menuHeight, int lineHeight);
|
|
||||||
char* getName();
|
|
||||||
int getWidth(float scale, int mono, int leftPosition);
|
|
||||||
int getWidth();
|
|
||||||
int getLeftPosition();
|
|
||||||
void render(int yOffset, int menuHeight, int lineHeight);
|
|
||||||
void renderMouseOver(int yOffset);
|
|
||||||
int addRow(const char* rowName, MenuRowCallback callback);
|
|
||||||
int addRow(const char* rowName, MenuRowCallback callback, MenuStateNameCallback stateNameCallback);
|
|
||||||
int getMaxRowWidth();
|
|
||||||
private:
|
|
||||||
char columnName[MAX_COLUMN_NAME];
|
|
||||||
int columnWidth;
|
|
||||||
int leftPosition;
|
|
||||||
std::vector<MenuRow> rows;
|
|
||||||
int leftMouseOver;
|
|
||||||
int rightMouseOver;
|
|
||||||
int topMouseOver;
|
|
||||||
int bottomMouseOver;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* defined(__hifi__MenuColumn__) */
|
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
//
|
|
||||||
// MenuRow.cpp
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "InterfaceConfig.h"
|
|
||||||
#include "Util.h"
|
|
||||||
|
|
||||||
#include "MenuRow.h"
|
|
||||||
#include "MenuColumn.h"
|
|
||||||
#include "Menu.h"
|
|
||||||
|
|
||||||
MenuRow::MenuRow() :
|
|
||||||
callback(NULL),
|
|
||||||
stateNameCallback(NULL) {
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuRow::MenuRow(const char * columnName, MenuRowCallback callback) :
|
|
||||||
callback(callback),
|
|
||||||
stateNameCallback(NULL) {
|
|
||||||
this->nameLength = strlen(columnName);
|
|
||||||
strncpy(this->rowName, columnName, MAX_COLUMN_NAME); // copy the base name
|
|
||||||
strncpy(this->rowName, this->getName(), MAX_COLUMN_NAME); // now add in state
|
|
||||||
rowWidth = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuRow::MenuRow(const char * columnName, MenuRowCallback callback, MenuStateNameCallback stateNameCallback) :
|
|
||||||
callback(callback),
|
|
||||||
stateNameCallback(stateNameCallback) {
|
|
||||||
this->nameLength = strlen(columnName);
|
|
||||||
strncpy(this->rowName, columnName, MAX_COLUMN_NAME);
|
|
||||||
strncpy(this->rowName, this->getName(), MAX_COLUMN_NAME); // now add in state
|
|
||||||
rowWidth = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuRow::~MenuRow() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuRow::call() {
|
|
||||||
callback(MENU_ROW_PICKED);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* MenuRow::getStateName() {
|
|
||||||
int currentValue = callback(MENU_ROW_GET_VALUE);
|
|
||||||
const char* stateName;
|
|
||||||
// If the MenuRow has a custom stateNameCallback function, then call it to get a string
|
|
||||||
// to display in the menu. Otherwise, use the default implementation.
|
|
||||||
if (stateNameCallback != NULL) {
|
|
||||||
stateName = stateNameCallback(currentValue);
|
|
||||||
} else {
|
|
||||||
if (currentValue == 0) {
|
|
||||||
stateName = " OFF ";
|
|
||||||
} else if (currentValue == 1) {
|
|
||||||
stateName = " ON ";
|
|
||||||
} else {
|
|
||||||
stateName = " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return stateName;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* MenuRow::getName() {
|
|
||||||
strcpy(this->rowName + nameLength, getStateName());
|
|
||||||
return this->rowName;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuRow::getWidth(float scale, int mono, int leftPosition) {
|
|
||||||
if (rowWidth == 0) {
|
|
||||||
rowWidth = widthText( scale, mono, this->rowName);
|
|
||||||
}
|
|
||||||
return rowWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MenuRow::getWidth() {
|
|
||||||
return rowWidth;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
//
|
|
||||||
// MenuRow.h
|
|
||||||
// hifi
|
|
||||||
//
|
|
||||||
// Created by Dominque Vincent on 4/10/13.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef __hifi__MenuRow__
|
|
||||||
#define __hifi__MenuRow__
|
|
||||||
|
|
||||||
const int MAX_COLUMN_NAME = 50;
|
|
||||||
const int SPACE_BETWEEN_COLUMNS = 20;
|
|
||||||
const int SPACE_BEFORE_ROW_NAME = 10;
|
|
||||||
const int MENU_ROW_PICKED = -2;
|
|
||||||
const int MENU_ROW_GET_VALUE = -1;
|
|
||||||
|
|
||||||
typedef int(*MenuRowCallback)(int);
|
|
||||||
typedef const char*(*MenuStateNameCallback)(int);
|
|
||||||
|
|
||||||
class MenuRow {
|
|
||||||
public:
|
|
||||||
MenuRow();
|
|
||||||
MenuRow(const char* rowName, MenuRowCallback callback);
|
|
||||||
MenuRow(const char* rowName, MenuRowCallback callback, MenuStateNameCallback stateNameCallback);
|
|
||||||
~MenuRow();
|
|
||||||
void call();
|
|
||||||
char * getName();
|
|
||||||
const char* getStateName();
|
|
||||||
int getWidth(float scale, int mono, int leftPosition);
|
|
||||||
int getWidth();
|
|
||||||
private:
|
|
||||||
int nameLength;
|
|
||||||
char rowName[MAX_COLUMN_NAME];
|
|
||||||
int rowWidth;
|
|
||||||
MenuRowCallback callback;
|
|
||||||
MenuStateNameCallback stateNameCallback;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* defined(__hifi__MenuRow__) */
|
|
Loading…
Reference in a new issue