Hi everybody.
I want to create simple buttons made up of a streched square and a label.
I have a “drawButton” class and I’d like to center the button’s text label using buttons coordinates.
I found a good way to center text on X axis but I cannot center the text on the Y axis.
Here is my code:
drawing text function:
void Font(void *font, char *text, float x, float y)
{
glRasterPos2f(x, y);
while (*text != '\0')
{
glutBitmapCharacter(font, *text);
//std::cout << *text << std::endl;
++text;
}
}
drawButton class:
class drawButton
{
public:
drawButton(float w, float h, Vertex pos, Color c, char *text): width(w), height(h), position(pos), bColor(c), delay(0.1), depth(0.02), label(text) { m_vertexBuffer = m_indexBuffer = m_colorBuffer = 0; }
~drawButton();
bool initialize();
void render();
char *label;
float width, height, delay, depth;
Vertex position;
Color bColor;
private:
GLuint m_vertexBuffer, m_indexBuffer, m_colorBuffer, m_texture;
vector<Color> m_colors;
vector<GLuint> m_indices;
vector<Vertex> m_vertices;
vector<texCoords> m_texCoord;
void drawLabel();
};
void drawButton::drawLabel() {
float charDim = 0.025f;
int somma = 0;
for (int i = 0; i < strlen(label); ++i) {
++somma;
}
float xpos = somma/2 * charDim;
xpos+=charDim;
float center = position.x+(width/2);
Font(GLUT_BITMAP_TIMES_ROMAN_24,label,center-xpos,position.y);
}