Files
haiku-beta6/src/apps/glteapot/FPS.cpp
T

136 lines
2.6 KiB
C++
Raw Normal View History

2005-06-10 09:07:17 +00:00
/*
Copyright 1999, Be Incorporated. All Rights Reserved.
This file may be used under the terms of the Be Sample Code License.
*/
#include "FPS.h"
FPS::FPS()
{
}
FPS::~FPS()
{
}
void FPS::drawChar( GLfloat x, GLfloat y, GLint number )
{
static bool numbers[13][7] = {
{true,true,true,true,true,true,false}, /* 0 */
{false,true,true,false,false,false,false}, /* 1 */
{true,true,false,true,true,false,true}, /* 2 */
{true,true,true,true,false,false,true}, /* 3 */
{false,true,true,false,false,true,true}, /* 4 */
{true,false,true,true,false,true,true}, /* 5 */
{true,false,true,true,true,true,true}, /* 6 */
{true,true,true,false,false,false,false}, /* 7 */
{true,true,true,true,true,true,true}, /* 8 */
{true,true,true,false,false,true,true}, /* 9 */
{true,false,false,false,true,true,true}, /* F */
{true,true,false,false,true,true,true}, /* P */
{true,false,true,true,false,true,true}, /* S */
};
static GLfloat gap = 0.03;
static GLfloat size = 1.0;
static GLfloat x0 = -size / 4;
static GLfloat x1 = -size / 4 + gap;
static GLfloat x2 = -x1;
static GLfloat x3 = -x0;
static GLfloat y0 = size / 2;
static GLfloat y1 = size / 2 - gap;
static GLfloat y2 = 0 + gap;
static GLfloat y3 = 0;
static GLfloat y4 = -y2;
static GLfloat y5 = -y1;
static GLfloat y6 = -y0;
glBegin( GL_LINES );
if( numbers[number][0] )
{
glVertex2f( x1 + x, y0 + y );
glVertex2f( x2 + x, y0 + y );
}
if( numbers[number][1] )
{
glVertex2f( x3 + x, y1 + y );
glVertex2f( x3 + x, y2 + y );
}
if( numbers[number][2] )
{
glVertex2f( x3 + x, y4 + y );
glVertex2f( x3 + x, y5 + y );
}
if( numbers[number][3] )
{
glVertex2f( x1 + x, y6 + y );
glVertex2f( x2 + x, y6 + y );
}
if( numbers[number][4] )
{
glVertex2f( x0 + x, y5 + y );
glVertex2f( x0 + x, y4 + y );
}
if( numbers[number][5] )
{
glVertex2f( x0 + x, y2 + y );
glVertex2f( x0 + x, y1 + y );
}
if( numbers[number][6] )
{
glVertex2f( x1 + x, y3 + y );
glVertex2f( x2 + x, y3 + y );
}
glEnd();
}
void FPS::drawCounter( GLfloat frameRate )
{
GLfloat pos = 0;
int ifps = (int) (frameRate * 10 +0.5);
int c100,c10,c1,c_1;
c100 = ifps / 1000;
c10 = (ifps / 100) % 10;
c1 = (ifps / 10) % 10;
c_1 = ifps % 10;
if( c100 )
{
drawChar( pos, 0, c100 );
pos += 1;
}
if( c100 || c10 )
{
drawChar( pos, 0, c10 );
pos += 1;
}
drawChar( pos, 0, c1 );
pos += 0.5;
glBegin( GL_POINTS );
glVertex2f( pos, -0.5 );
glEnd();
pos += 0.5;
drawChar( pos, 0, c_1 );
pos += 1.5;
drawChar( pos, 0, 10 );
pos += 1;
drawChar( pos, 0, 11 );
pos += 1;
drawChar( pos, 0, 12 );
pos += 1;
}