#include #include #include #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(); }