1 #include "vizual.h"
2 extern GLuint Material_1_Dlist;
3 void winset_main();
4 void winset_colortable();
do_lights()5 void do_lights()
6 {
7
8 GLfloat light_position[] = { -150.0, 100.0, 200.0, 0.0 };
9 GLfloat light_position2[] = { 150.0, 40.0, -200.0, 0.0 };
10 GLfloat light_diffuse[] = { 0.58, 0.58, 0.58, 1. };
11 GLfloat light_diffuse2[] = { 0.40, 0.40, 0.40, 1. };
12 GLfloat light_ambient[] = { 0.2, 0.2, 0.2, 1.0 };
13 GLfloat light_ambient2[] = { 0.3, 0.3, 0.3, 1.0 };
14 /* GLfloat lmodel_ambient[] = { 2.,2.,2., 1.0 }; */
15
16
17 static float material[] = {
18 GL_SPECULAR, 1.0, 1.0, 1.0,
19 GL_DIFFUSE, 0.8, 0.8, 0.8,
20 GL_AMBIENT, 0.8, 0.8, 0.8,
21 GL_SHININESS, 10,
22 };
23 /*
24 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
25 */
26
27 Material_1_Dlist = glGenLists(1);
28
29 glLightfv(GL_LIGHT0, GL_POSITION, light_position);
30 glLightfv(GL_LIGHT1, GL_POSITION, light_position2);
31 glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
32 glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse2);
33 glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
34 glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient2);
35 glEnable(GL_LIGHTING);
36 glEnable(GL_LIGHT0);
37 glEnable(GL_LIGHT1);
38
39 glNewList(Material_1_Dlist, GL_COMPILE);
40 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, &material[9]);
41 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, &material[5]);
42 glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &material[1]);
43 glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &material[13]);
44 glEndList();
45
46 glCallList(Material_1_Dlist);
47
48 glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
49 glEnable(GL_COLOR_MATERIAL);
50 }
51
52
53 /************************************ make_matcolors ************************/
54 /* this code came from GRASS color code written by M.Shapiro USACERL */
draw_colortable(D_spec,Headfax,Window)55 void draw_colortable(D_spec, Headfax, Window)
56 struct dspec *D_spec;
57 file_info *Headfax;
58 long Window[];
59 {
60 short t;
61 short x1, x2, y1, y2;
62 short vert[4][2]; /* the vertices of the colorsquares */
63 int yadd;
64 short color[3];
65
66
67 x1 = 10;
68 x2 = 90;
69 y1 = y2 = 0;
70
71 yadd = (int)1000 / Headfax->linefax.nthres;
72
73 /* draw the colortable */
74 for (t = 0; t < Headfax->linefax.nthres; t++) {
75 y1 = y2;
76 y2 += yadd;
77
78 vert[0][0] = x1;
79 vert[0][1] = y1;
80 vert[1][0] = x2;
81 vert[1][1] = y1;
82 vert[2][0] = x2;
83 vert[2][1] = y2;
84 vert[3][0] = x1;
85 vert[3][1] = y2;
86
87 get_cat_color(Headfax->linefax.tvalue[t], D_spec->ctable, color);
88
89 glColor3ub(color[0], color[1], color[2]);
90
91
92 glBegin(GL_POLYGON);
93 glVertex2sv(vert[0]);
94 glVertex2sv(vert[1]);
95 glVertex2sv(vert[2]);
96 glVertex2sv(vert[3]);
97 glEnd();
98 }
99 }
100