You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.3 KiB
C++
120 lines
2.3 KiB
C++
#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
#include <tqstring.h>
|
|
|
|
#include "table.h"
|
|
#include "graphics.h"
|
|
|
|
|
|
table::table() : _texture("table") {
|
|
}
|
|
|
|
table::~table() {
|
|
}
|
|
|
|
|
|
void table::draw(double play_area_width, double play_area_height)
|
|
{ // The location of the head string
|
|
double head_string = play_area_width / 4.0;
|
|
|
|
// Set the texture to the felt texture
|
|
_texture.makeCurrent();
|
|
|
|
glColor3d(0.1, 1.0, 0.1);
|
|
|
|
glBegin(GL_QUADS);
|
|
|
|
// Draw the table as a green textured square
|
|
glNormal3d(0.0, 0.0, 1.0);
|
|
|
|
glTexCoord2d(0.0, 0.0);
|
|
glVertex2d(0.0, 0.0);
|
|
|
|
glTexCoord2d(16.0, 0.0);
|
|
glVertex2d(play_area_width, 0.0);
|
|
|
|
glTexCoord2d(16.0, 8.0);
|
|
glVertex2d(play_area_width, play_area_height);
|
|
|
|
glTexCoord2d(0.0, 8.0);
|
|
glVertex2d(0.0, play_area_height);
|
|
|
|
|
|
// Draw the table as a green textured square
|
|
glNormal3d(0.0, 1.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 1.0);
|
|
glVertex3d(0.0, 0.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 0.0);
|
|
glVertex3d(0.0, 0.0, 0.005);
|
|
|
|
glTexCoord2d(16.0, 1.0);
|
|
glVertex3d(play_area_width, 0.0, 0.005);
|
|
|
|
glTexCoord2d(16.0, 0.0);
|
|
glVertex3d(play_area_width, 0.0, 0.0);
|
|
|
|
|
|
glNormal3d(0.0, -1.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 0.0);
|
|
glVertex3d(0.0, play_area_height, 0.0);
|
|
|
|
glTexCoord2d(0.0, 1.0);
|
|
glVertex3d(0.0, play_area_height, 0.005);
|
|
|
|
glTexCoord2d(16.0, 0.0);
|
|
glVertex3d(play_area_width, play_area_height, 0.005);
|
|
|
|
glTexCoord2d(16.0, 1.0);
|
|
glVertex3d(play_area_width, play_area_height, 0.0);
|
|
|
|
glNormal3d(1.0, 0.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 0.0);
|
|
glVertex3d(0.0, 0.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 1.0);
|
|
glVertex3d(0.0, 0.0, 0.005);
|
|
|
|
glTexCoord2d(16.0, 0.0);
|
|
glVertex3d(0.0, play_area_height, 0.005);
|
|
|
|
glTexCoord2d(16.0, 1.0);
|
|
glVertex3d(0.0, play_area_height, 0.0);
|
|
|
|
glNormal3d(-1.0, 0.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 0.0);
|
|
glVertex3d(play_area_width, 0.0, 0.0);
|
|
|
|
glTexCoord2d(0.0, 1.0);
|
|
glVertex3d(play_area_width, 0.0, 0.005);
|
|
|
|
glTexCoord2d(16.0, 0.0);
|
|
glVertex3d(play_area_width, play_area_height, 0.005);
|
|
|
|
glTexCoord2d(16.0, 1.0);
|
|
glVertex3d(play_area_width, play_area_height, 0.0);
|
|
|
|
|
|
glEnd();
|
|
|
|
// Draw the head string line on in a color slightly lighter than the table
|
|
glColor3d(0.2, 1.0, 0.2);
|
|
|
|
glNormal3d(0.0, 0.0, 1.0);
|
|
|
|
// Make the line two pixels thick
|
|
glLineWidth(2.0);
|
|
|
|
// Actually draw the line
|
|
glBegin(GL_LINES);
|
|
|
|
glVertex2d(head_string, 0.0);
|
|
glVertex2d(head_string, play_area_height);
|
|
|
|
glEnd();
|
|
}
|