1 /*****************************************************************************
2   FILE           : $Source: /projects/higgs1/SNNS/CVS/SNNS/xgui/sources/d3_global.h,v $
3   SHORTNAME      : global.ph
4   SNNS VERSION   : 4.2
5 
6   PURPOSE        : type definitions and global defines
7   NOTES          : all global types are defined here
8                    this is the only module for global variables
9                    most varaibles are initilized
10                    the default values could be changed here
11 
12   AUTHOR         : Ralf Huebner
13   DATE           : 1.12.1991
14 
15   CHANGED BY     : Sven Doering, Niels Mache
16   RCS VERSION    : $Revision: 2.6 $
17   LAST CHANGE    : $Date: 1998/02/25 15:20:10 $
18 
19     Copyright (c) 1990-1995  SNNS Group, IPVR, Univ. Stuttgart, FRG
20     Copyright (c) 1996-1998  SNNS Group, WSI, Univ. Tuebingen, FRG
21 
22 ******************************************************************************/
23 #ifndef _D3GLOBAL_DEFINED_
24 #define _D3GLOBAL_DEFINED_
25 
26 
27 
28 #ifndef D3_GLOBAL_DEFS
29 #define D3_GLOBAL_DEFS
30 
31 
32 #ifndef ZERO
33 #define ZERO 0
34 #endif
35 
36 
37 
38 #define ANZ_VECS        9
39 #define ANZ_LINES      12
40 #define ANZ_PKT_LINE    2
41 #define ANZ_FACETS      6
42 #define ANZ_PKT_FACETS  4
43 
44 
45 
46 
47 /*****************************************************************************
48 
49                              type definitions
50 
51 ******************************************************************************/
52 
53 
54 
55 
56 typedef float vector [4];         /* vector type */
57 typedef float matrix [4][4];      /* matrix type */
58 typedef vector cube [ANZ_VECS];   /* cube type   */
59 
60 
61 typedef struct {                   /* polygon            */
62     int n;                         /* number of sides    */
63     int mask;                      /* interpolation mask */
64     vector vert[ANZ_PKT_FACETS];   /* vertices           */
65 } d3_polygon_type;
66 
67 
68 
69 typedef struct {                   /* unit_mode               */
70     int size;                      /* show value as size      */
71     int color;                     /* show value as color     */
72     int top_label;                 /* show value on top label */
73     int bottom_label;              /* show value bottom label */
74 } d3_unit_mode_type;
75 
76 
77 
78 typedef struct {                    /*  light_type                      */
79     int shade_mode;                 /*  shading mode                    */
80     vector position;                /*  light source position           */
81     float Ia;                       /*  ambient light intensity         */
82     float Ka;                       /*  ambient reflection coefficient  */
83     float Ip;                       /*  point light intensity           */
84     float Kd;                       /*  diffuse refection coefficient   */
85 } d3_light_type;
86 
87 
88 
89 
90 
91 typedef struct {
92     vector trans_vec, rot_vec, scale_vec;    /* translation, rotation, scale      */
93     vector trans_step, rot_step, scale_step; /* translation, rotation, scale step */
94     vector viewpoint;                        /* viewpoint for perspective         */
95     float unit_aspect;                       /* aspect beteen the size and  space */
96     float link_scale;                        /* scale for the links               */
97     float pos_link_trigger;                  /* positive trigger for the links    */
98     float neg_link_trigger;                  /* negative trigger for the links    */
99     int font;                                /* 3D font                           */
100     int projection_mode;                     /* central or parallel               */
101     int model_mode;                          /* solid or wireframe                */
102     int color_mode;                          /* mono or rgb                       */
103     int link_mode;                           /* shows link values                 */
104     d3_unit_mode_type  unit_mode;            /* shows unit values                 */
105     d3_light_type light;                     /* light source                      */
106 } d3_state_type;
107 
108 
109 typedef struct {                             /* WINDOW */
110      int x0, y0;                             /* xmin and ymin */
111      int x1, y1;                             /* xmax and ymax */
112 } d3_window_type;
113 
114 
115 struct d3_unitPtrDef {                       /* linear list type      */
116      int unitNo;                             /* key                   */
117      struct d3_unitPtrDef *next;             /* pointer to next item  */
118 };
119 
120 
121 typedef struct d3_unitPtrDef d3_unitPtrType;
122 
123 
124 /*****************************************************************************
125 
126                              mode definitions
127 
128 ******************************************************************************/
129 
130 
131 /*   projection_mode   */
132 
133 #define central         0
134 #define parallel        1
135 
136 
137 
138 /*   model_mode  */
139 
140 #define wire_frame      0
141 #define solid           1
142 
143 
144 
145 /*   color_mode */
146 
147 #define mono_mode       0
148 #define gray_mode       1
149 #define rgb_mode        2
150 
151 
152 
153 /*   unit_mode   */
154 
155 #define nothing_on      0
156 #define activation_on   1
157 #define init_act_on     2
158 #define output_on       3
159 #define bias_on         4
160 #define name_on         5
161 #define number_on       6
162 #define zvalue_on       7
163 
164 
165 
166 /*   link_mode   */
167 
168 #define links_on        0
169 #define links_off       1
170 #define links_label     2
171 #define links_color     3
172 
173 
174 
175 /*   light_mode  */
176 
177 #define shade_off       0
178 #define shade_constant  1
179 
180 
181 /*****************************************************************************
182 
183                                  makros
184 
185 ******************************************************************************/
186 
187 
188 #ifndef PI
189 #define PI 3.1415926
190 #endif
191 
192 #define rad(phi)  (phi / 180.0) * PI            /* radiant to degrees   */
193 #define deg(phi)  (180.0 * phi) / PI            /* degrees to radiant   */
194 
195 #define WAIT  {char ch; scanf ("%c", &ch);}     /* wait for a keystroke */
196 
197 
198 
199 
200 /*****************************************************************************
201 
202                             global defines
203 
204 ******************************************************************************/
205 
206 
207 
208 /* X fonts */
209 
210 #define d3_fontWidth 8
211 
212 /* d3 fonts */
213 
214 #define fnt5x8    0
215 #define fnt8x14   1
216 #define fnt5x7    2
217 
218 
219 /* transformations */
220 
221 
222 #define ROT_X_LEFT     0
223 #define ROT_X_RIGHT    1
224 #define ROT_Y_LEFT     2
225 #define ROT_Y_RIGHT    3
226 #define ROT_Z_LEFT     4
227 #define ROT_Z_RIGHT    5
228 #define TRANS_X_LEFT   6
229 #define TRANS_X_RIGHT  7
230 #define TRANS_Y_LEFT   8
231 #define TRANS_Y_RIGHT  9
232 #define TRANS_Z_LEFT  10
233 #define TRANS_Z_RIGHT 11
234 #define SCALE_PLUS    12
235 #define SCALE_MINUS   13
236 
237 
238 
239 /* selections for unit menu */
240 
241 #define select_size      1
242 #define select_color     2
243 #define select_toplabel  3
244 #define select_bottlabel 4
245 
246 
247 
248 #endif
249 
250 
251 /* Xlib and Xaw Variables */
252 
253 extern Display      *d3_display;
254 extern Window        d3_window;
255 extern GC            d3_gc;
256 extern int           d3_screen;
257 
258 
259 
260 
261 /* Varibles to control the Windows */
262 
263 extern int d3_displayXsize;
264 extern int d3_displayYsize;
265 
266 extern bool d3_displayIsReady;
267 extern bool d3_controlIsReady;
268 
269 extern bool d3_freeze;
270 
271 extern int d3_fontXsize, d3_fontYsize;
272 
273 extern int d3_numberWidth;
274 extern int d3_shortNumberWidth;
275 
276 extern unsigned d3_textColor;
277 extern float d3_intens;
278 
279 extern d3_window_type d3_clipWindow;
280 
281 
282 
283 /* the initial state structure */
284 
285 
286 extern d3_state_type  d3_state;
287 
288 
289 
290 /* unit cube  */
291 
292 
293 
294 extern cube d3_e_cube;
295 
296 
297 
298 #endif
299 
300 /* end of file */
301 /* lines: */
302