197eb03f12ae0f8658a2c9a628bb9a3a2aef578c
[atyndall/cits2231.git] / types.h
1 /**
2  * Type definition file
3  * @author Ashley Tyndall (20915779), Jenna de la Harpe (20367932)
4  */
5
6 #include <GL/gl.h>
7 #include <GL/glut.h>
8
9 #ifndef TYPES_H
10 #define TYPES_H
11
12 // Type definitions for vertex-coordinates, normals, texture-coordinates,
13 // and triangles (via the indices of 3 vertices).
14 typedef GLfloat vertex[3];
15 typedef GLfloat normal[3];
16 typedef GLfloat texCoord[2];
17 typedef GLint vertexIndex;
18 typedef vertexIndex triangle[3];
19
20 // A type for a mesh
21 typedef struct {
22     int nVertices;           //  The number of vertices in the mesh
23     vertex* vertices;        //  Array with coordinates of vertices
24     normal* normals;         //  Array with normals of vertices
25     texCoord* texCoords;     //  Array with texture-coordinates of vertices
26     int nTriangles;          //  The number of triangles in the mesh
27     triangle* triangles;     //  Array of trangles via 3 indices into "vertices"
28 } mesh;
29
30 // A type for a 2D texture, with height and width in pixels
31 typedef struct {
32     int height;
33     int width;
34     GLubyte *rgbData;   // Array of bytes with the colour data for the texture
35 } texture;
36
37
38 typedef GLfloat vector[3]; // Vector datatyle
39
40 typedef struct {
41     GLfloat parameter;  // Transform amount
42     vector* vect;        // Transform vector
43 } transform;
44
45 typedef struct {
46     int mesh;           // Mesh index number
47     int texture;        // Texture index number
48     float x,y,z;        // Scene position
49     vector* scale;       // Scale vector
50     transform rotation; // Rotation transformation
51 } SceneObject;
52
53 // Menu enum
54 enum menu {
55   // Main menu
56   M_ROTATE_MOVE_CAMERA,
57   M_POSITION_SCALE,
58   M_ROTATION_TEXTURE_SCALE,
59   M_EXIT,
60
61   // Material submenu
62   M_MATERIAL_ALL_RGB,
63   M_MATERIAL_AMBIENT_RGB,
64   M_MATERIAL_DIFFUSE_RGB,
65   M_MATERIAL_SPECULAR_RGB,
66   M_MATERIAL_ALL_ADSS,
67   M_MATERIAL_RED_ADSS,
68   M_MATERIAL_GREEN_ADSS,
69   M_MATERIAL_BLUE_ADSS,
70
71   // Light submenu
72   M_LIGHT_MOVE_LIGHT_1,
73   M_LIGHT_RGBALL_LIGHT_1,
74   M_LIGHT_MOVE_LIGHT_2,
75   M_LIGHT_RGBALL_LIGHT_2
76 };
77
78 #endif  /* TYPES_H */
79

UCC git Repository :: git.ucc.asn.au