1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#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();
}
|