1 /*
2 
3  *****************************************************************************
4  * Author:                                                                   *
5  * ------                                                                    *
6  *  Anton Kokalj                                  Email: Tone.Kokalj@ijs.si  *
7  *  Department of Physical and Organic Chemistry  Phone: x 386 1 477 3523    *
8  *  Jozef Stefan Institute                          Fax: x 386 1 477 3811    *
9  *  Jamova 39, SI-1000 Ljubljana                                             *
10  *  SLOVENIA                                                                 *
11  *                                                                           *
12  * Source: $XCRYSDEN_TOPDIR/C/xcGLparam.h
13  * ------                                                                    *
14  * Copyright (c) 1996-2003 by Anton Kokalj                                   *
15  *****************************************************************************
16 
17 */
18 
19 /* this is preprocessor option tomark that we have include this file */
20 #define XC_CPP_GLPARAM
21 
22 #ifndef XC_CPP_GLH
23 #   include <GL/gl.h>
24 #   define  XC_CPP_GLH
25 #endif
26 
27 /***********************************************/
28 #define GLPAR_MATERIAL                 0
29 #define GLPAR_LIGHT                    1
30 #define GLPAR_LIGHTMODEL               3
31 #define GLPAR_FRONTFACE                4
32 #define GLPAR_BLENDFUNC                5
33 #define GLPAR_FOG                      6
34 
35 #define GLPAR_MAT_WHAT_STRUCTURE       0
36 #define GLPAR_MAT_WHAT_ISOSURF         1
37 
38 #define GLPAR_MAT_WHAT_ISOPOS          0
39 #define GLPAR_MAT_WHAT_ISONEG          1
40 #define GLPAR_MAT_WHAT_ISOONE          3
41 
42 #define GLPAR_MAT_WHAT_ISOBACKSIDE     0
43 #define GLPAR_MAT_WHAT_ISOFRONTSIDE    1
44 
45 /* please, do not change these two values */
46 #define GLPAR_FACE_WHAT_ISOSURF_POS    0
47 #define GLPAR_FACE_WHAT_ISOSURF_NEG    1
48 
49 #define GLPAR_BLEND_WHAT_ISOSURF       0
50 #define GLPAR_BLEND_WHAT_COLORPLANE    1
51 
52 #define GLPAR_MAXLIGHT                 5
53 /***********************************************/
54 
55 /* this is for displaying vorious vectors and cages */
56 #define GLPAR_N_OF_VEC_AND_CAGE 8
57 #define GLPAR_PRIMCAGE    0
58 #define GLPAR_CONVCAGE    1
59 #define GLPAR_SCCAGE      2
60 #define GLPAR_PRIMVEC     3
61 #define GLPAR_CONVVEC     4
62 #define GLPAR_SCVEC       5
63 #define GLPAR_ISOPARALLE  6
64 #define GLPAR_ISOPARAPIP  7
65 
66 #define XC_GET_RGBA    0
67 #define XC_GET_XYZ     1
68 #define XC_GET_XYZW    2
69 #define XC_GET_FLOAT   3
70 #define XC_GET_FLOAT4  4
71 #define XC_GET_FLOAT6  5
72 #define XC_GET_FLOAT12 6
73 #define XC_GET_INT     7
74 #define XC_GET_INT3    8
75 #define XC_GET_INT12   9
76 #define XC_GET_FLOAT2  10
77 #define XC_GET_RGB     11
78 
79 typedef struct {
80   float ambient[4];
81   float diffuse[4];
82   float specular[4];
83   float shininess[1];
84   float emission[4];
85 } xcMATERIAL;
86 
87 #ifndef XC_CPP_BOOLEAN
88    typedef int boolean;
89 #  define XC_CPP_BOOLEAN
90 #endif
91 
92 typedef struct {
93   boolean isenabled;
94   float   ambient[4];
95   float   diffuse[4];
96   float   specular[4];
97   float   fract_position[4];  /* position in fractional coordinates */
98   float   position[4];
99   float   spot_dir[3];
100   float   spot_exp[1];
101   float   spot_cutoff[1];
102   float   const_atten[1];
103   float   lin_atten[1];
104   float   quad_atten[1];
105 } LIGHT;
106 
107 #define LIGHTMODEL_STRUCTURE   0 /* this is used by GL_LIGHT_MODEL_TWO_SIDE */
108 #define LIGHTMODEL_ISOSURF     1
109 typedef struct {
110   float   two_side[1];              /* two_side for structure            */
111   float   two_side_iso[1];          /* two_side for isosufrace & related */
112   float   ambient[4];
113   float   local_viewer[1];
114 } LIGHTMODEL;
115 
116 typedef struct {
117   GLenum sfunc;
118   GLenum dfunc;
119 } BLENDFUNC;
120 
121 typedef GLenum FRONTFACE;
122 
123 xcMATERIAL mat_struct, mat_colorplane[2];
124 xcMATERIAL back_mat_isosurf[2], front_mat_isosurf[2];
125 xcMATERIAL back_mat_pos_isosurf[2], front_mat_pos_isosurf[2];
126 xcMATERIAL back_mat_neg_isosurf[2], front_mat_neg_isosurf[2];
127 xcMATERIAL mat_voronoi[2];
128 xcMATERIAL mat_vec_and_cage[GLPAR_N_OF_VEC_AND_CAGE];
129 
130 #define MAX_NUMBER_OF_LIGHTS      GLPAR_MAXLIGHT+1
131 LIGHT light[MAX_NUMBER_OF_LIGHTS];
132 LIGHTMODEL lightmodel;
133 
134 BLENDFUNC blend_isosurf, blend_colorplane, blend_voronoi, blend_cellcage;
135 FRONTFACE frontface_isosurf[2];
136 
137 typedef struct {
138   boolean is;
139   float vec[20];
140 } GetGlParam;
141 
142