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