summaryrefslogtreecommitdiffstats
path: root/kue/table.cpp
blob: 5f2f44ec6806f4ff9b76be293fd057f993237fd9 (plain)
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();
}