1 // $Id: DRAWxtl_proto.h 1107 2011-01-19 23:53:52Z martin $
2 //
3 // DRAWxtl_proto.h - routine prototypes for for DRAWxtl V5.5 - the GUI version
4 //
5 // Coded using the FLTK 1.1.6 widget set
6 //
7 //    Larry W. Finger, Martin Kroeker and Brian Toby
8 //
9 #ifndef DRAWxtl_proto_h
10 #define DRAWxtl_proto_h
11 void About_Help_cb (void);
12 
13 void Add_Frame_Main (void);
14 
15 void add_to_list (float *xp, int no, int nos);
16 
17 void add_vert (float vert[3], int no, int check, int modulate, int nos);
18 
19 void add_vert_nc (float *vert);
20 
21 void analyze_bonds (void);
22 
23 double AngleInRange (double angle);
24 
25 void Arrow_Frame_Combo_cb (Fl_Widget * a, void *b);
26 
27 void Automation_Edit_cb(void);
28 
29 void Automation_Go_cb(void);
30 
31 void Automation_Abort_cb(void);
32 
33 void Automation_Close_cb(void);
34 
35 void axeqb (double a1[3][3], double x[3], double b[3]);
36 
37 void Bond_Combo_cb (Fl_Widget * a, void *b);
38 
39 void Bond_Frame_Combo_cb (Fl_Widget * a, void *b);
40 
41 void Blank_Strip (char input[]);
42 
43 void Browse_Map_File_cb (void);
44 
45 void build_box_contents (void);
46 
47 void build_poly_list (int numb_list, int polyno, int l0, int l1, float *);
48 
49 void Calc_Rot (float v1[3], float v2[3]);
50 
51 void Check_Box_cb (void);
52 
53 int check_atom_name (char *, char *);
54 
55 void check_dynamic_storage (void);
56 
57 int check_vert_alloc (int number, int alloc_ok);
58 
59 void Clean_Up_Files (void);
60 
61 void Clear_Last_Omit_cb (Fl_Button *, void *);
62 
63 void Color_Help_cb (void);
64 
65 void Configure_cb (void);
66 
67 void Configure_Close_cb (void);
68 
69 void Configure_Save_cb (void);
70 
71 void Configure_Misc_cb (void);
72 
73 void Configure_Misc_Save_cb (void);
74 
75 void Configure_Misc_Close_cb (void);
76 
77 void Configure_MSMS_cb (void);
78 
79 void Configure_MSMS_loc_cb (void);
80 
81 void Configure_Close_MSMS_cb (void);
82 
83 void Configure_Save_MSMS_cb (void);
84 
85 void ConfigurePOV_cb (void);
86 
87 void ConfigurePOVOptions_cb (void);
88 
89 void ConfigureMencoder_cb (void);
90 
91 void ConfigureFFmpeg_cb (void);
92 
Convert_Cart_Cryst(float bmat_inv[3][3],float inp[3],float oup[3],float origin[3])93 static inline void Convert_Cart_Cryst(float bmat_inv[3][3], float inp[3], float oup[3], float origin[3])
94 {
95 	int i, j;
96 
97 	for (i = 0; i < 3; i++) {
98 		oup[i] = origin[i];
99 		for (j = 0; j < 3; j++)
100 			oup[i] += bmat_inv[i][j] * inp[j];
101 	}
102 }
103 
Convert_Cryst_Cart(double b_mat[3][3],float inp[3],float oup[3],float origin[3])104 static inline void Convert_Cryst_Cart(double b_mat[3][3], float inp[3], float oup[3], float origin[3])
105 {
106 	int i, j;
107 
108 	for (i = 0; i < 3; i++) {
109 		oup[i] = 0.0f;
110 		for (j = 0; j < 3; j++)
111 			oup[i] += (float)b_mat[i][j] * (inp[j] - origin[j]);
112 	}
113 }
114 
115 void convert_ellipsoid (void);
116 
117 float convert_pos (char *);
118 
119 void Conv_Sym_Mat (void);
120 
121 void Destroy_Open_Windows (void);
122 
123 float determinant (double rot[3][3]);
124 
125 void display_cursor_text (void);
126 
127 float dist (int j, int k);
128 
129 void do_drawing (void);
130 
131 float dot0_3d (float x0, float y0, float z0, float x1, float y1, float z1,
132 	       float x2, float y2, float z2);
133 void draw_cell (int docell);
134 
135 void draw_GL_triple (void);
136 
137 void draw_cursor (void);
138 
139 void Dump_View_cb (void);
140 
141 void Edit_Arrow_cb (void);
142 
143 void Edit_Arrow_Close_cb (class Fl_Button *, void *);
144 
145 void Edit_Arrow_Save_cb (Fl_Button *, int *save);
146 
147 void Edit_Bond_cb (void);
148 
149 void Edit_Bond_Close_cb (void);
150 
151 void Edit_Bond_Save_cb (Fl_Button *, int *save);
152 
153 void Edit_Changed_cb (int, int nInserted, int nDeleted, int, const char *, void *v);
154 
155 void Edit_Ellipsoid_cb (void);
156 
157 void Edit_Ellipsoid_Save_cb (Fl_Button *, int *save);
158 
159 void Edit_LonePair_cb (void);
160 
161 void Edit_Lone_Pair_Close_cb (void);
162 
163 void Edit_Lone_Pair_Save_cb (Fl_Button *, int *save);
164 
165 void Edit_Maps_cb (void);
166 
167 void Edit_Maps_Close_cb (void);
168 
169 void Edit_Maps_Save_cb (Fl_Button *, int *save);
170 
171 void Edit_Slice_cb (void);
172 
173 void Edit_Slice_Close_cb (void);
174 
175 void Edit_Slice_Save_cb (Fl_Button *, int *save);
176 
177 void Edit_Surfaces_cb (void);
178 
179 void Edit_Surfaces_Close_cb (void);
180 
181 void Edit_Surfaces_Save_cb (Fl_Button *, int *save);
182 
183 void Surface_Frame_Combo_cb (Fl_Widget * a, void *b);
184 
185 void Edit_Modparms_cb (void);
186 
187 void Edit_Modparms_Close_cb (void);
188 
189 void Edit_Modparms_Save_cb (Fl_Button *, int *save);
190 
191 void Edit_Parmeters_cb (void);
192 
193 void Edit_Parmeters_Close_cb (Fl_Button *, void *);
194 
195 void Edit_Parmeters_Save_cb (Fl_Button *, int *tosave);
196 
197 void Edit_Polyhedra_cb (void);
198 
199 void Edit_Polyhedra_Close_cb (void);
200 
201 void Edit_Polyhedra_Save_cb (Fl_Button *, int *save);
202 
203 void Edit_Slab_cb (void);
204 
205 void Edit_Slab_Close_cb (void);
206 
207 void Edit_Slab_Save_cb (Fl_Button *, int *save);
208 
209 void Edit_Spheres_cb (void);
210 
211 void Edit_Spheres_Close_cb (void);
212 
213 void Edit_Spheres_Save_cb (Fl_Button *, int *save);
214 
215 void Edit_STR_cb (Fl_Menu_ *, void *arg);
216 
217 void Edit_STR_Close_cb (void);
218 
219 void Edit_STR_Save_cb (Fl_Button *, int *action);
220 
221 int eigen (float *biso, float beta[6], float valu[3], float vect[3][3]);
222 
223 int end_flip (int);
224 
225 float end_flip_real (float);
226 
227 void Error_Box (const char *message);
228 
229 void Error_Box_cb (Fl_Widget * w, void *d);
230 
231 void Exit_cb (void);
232 
233 void expand_atom (int natom);
234 
235 int fillcube (uchar * cube, FILE * mapin);
236 
237 void findsys (void);
238 
239 void find_all_in_box (int i);
240 
241 int find_atom (void);
242 
243 void find_lattice_type (void);
244 
245 int find_proj_atom (int, int);
246 
247 void generate_arrows (void);
248 
249 void generate_bonds (void);
250 
251 void generate_cones (void);
252 
253 void Generate_Drawing (int);
254 
255 void generate_ellipsoids (void);
256 
257 void generate_gl_texts (void);
258 
259 void generate_planes (void);
260 
261 void generate_poly (void);
262 
263 void generate_slab (void);
264 
265 void generate_spheres (void);
266 
267 void generate_texts (void);
268 
269 void generate_triple (void);
270 
271 void generate_lsq_planes (void);
272 
273 void generate_aimsurf (void);
274 
275 void generate_voids (void);
276 
277 void getsym (char *text, int num, int kk);
278 
279 void get_atom_id (void);
280 
281 void get_input (int Quick);
282 
283 int get_next_token (char *p, int max_len, FILE * fpin);
284 
285 int Get_Unique_Atoms (char atoms[100][5], int Frame_No);
286 
287 void get_label (char input[], char *c1, char *c2, char *c3, char *c4, int strip);
288 
289 void Graphics_Help_cb (void);
290 
291 void ImportDataFile_cb (Fl_Widget *, void *);
292 
293 void import_cif (char *, int, int, int *, int);
294 
295 void import_discus (char *, int, int, int);
296 
297 void import_fdat (char *, int, int, int);
298 
299 void import_gsas (char *, int, int, int);
300 
301 void import_pcr (char *, int, int, int);
302 
303 void import_schakal (char *, int, int, int);
304 
305 void import_shelx (char *, int, int, int);
306 
307 void import_wien (char *, int, int, int);
308 
309 void import_exc (char *, int, int, int);
310 
311 void Include_Cutouts_cb (void);
312 
313 void init_dynamic_storage ();
314 
315 void Init_DRAWxtl (void);
316 
317 void Input_Help_cb (void);
318 
319 float InterpolateMap (float x, float y, float z);
320 
321 void label_cell (void);
322 
323 void Load_Bond_Data (const char *atom, char table[20480]);
324 
325 void Load_Color_Combo (Flu_Combo_List * ot);
326 
327 void LoadConfig (bool full_load);
328 
329 void Locate_Triple (void);
330 
331 void Lone_Pair_Combo_cb (Fl_Widget * a, void *b);
332 
333 void LonePair_Frame_Combo_cb (Fl_Widget * a, void *b);
334 
335 int LookupMap (int ix, int iy, int iz);
336 
337 void make_bmat (int sys, float lat_con[6], double b_mat[3][3], float ginv[3][3],
338 		float rec_lat_con[6]);
339 void Main_Frame_Combo_cb (Fl_Widget *, void *);
340 
341 void Maps_Frame_Combo_cb (Fl_Widget *, void *);
342 
343 void Map_Info_cb (void);
344 
345 void MapType_cb (void);
346 
347 float matinv (float a[3][3]);
348 
349 void matmul (float a[3][3], float b[3][3], float c[3][3]);
350 
351 void Max_Min_cb (void);
352 
353 int Maximize_rho (int);
354 
355 void Modify_Arrow_cb (Fl_Widget * a, void *b);
356 
357 void Modify_Bonds_cb (Fl_Widget * a, void *b);
358 
359 void Modify_Bonds_Distance_cb (Fl_Widget * a, void *b);
360 
361 void Modify_LonePair_cb (Fl_Widget * a, void *b);
362 
363 void Modify_Maps_cb (Fl_Widget * a, void *b);
364 
365 void Modify_AimSurfaces_cb (Fl_Widget * a, void *b);
366 
367 void Modify_Surfaces_cb (Fl_Widget * a, void *b);
368 
369 void Modify_Polyhedra_cb (Fl_Widget * a, void *b);
370 
371 void Modify_Polyhedra_Distance_cb (Fl_Widget * a, void *b);
372 
373 void Modify_Spheres_cb (Fl_Widget * a, void *b);
374 
375 void Modify_Occ_cb (Fl_Widget * a, void *b);
376 
377 void Occ_Combo_cb (Fl_Widget * a, void *b);
378 
379 void New_Occ_Add_cb (class Fl_Widget *, int *action);
380 
381 void New_Occ_Input_cb (class Fl_Widget *, void *);
382 
383 void Modify_Surfaces_cb (Fl_Widget * a, void *b);
384 
385 void modulate_parameters (float vert[3], double *occ, int sym_no, int atom_no);
386 
387 int modulate_uij (float vert[3], int ellips_no, int atom_no, int sym_no, float uij[6]);
388 
389 void move_cursor (int axis, float inc_amt);
390 
391 void update_cursor_window (void);
392 
393 //void moveto_atom (int, int, int, int);
394 
395 int pick_label (int, int, int, int);
396 
397 void New_Arrow_Add_cb (class Fl_Widget *, int *action);
398 
399 void New_Arrow_Input_cb (class Fl_Widget *, void *);
400 
401 void New_Bond_Add_cb (class Fl_Widget *, int *action);
402 
403 void New_Bond_Input_cb (class Fl_Widget *, void *);
404 
405 void New_Ellipsoid_Input_cb (class Fl_Widget *, void *);
406 
407 void New_Map_Add_cb (class Fl_Widget *, int *action);
408 
409 void New_Map_Input_cb (Fl_Widget *, void *);
410 
411 void New_AimSurf_Add_cb (class Fl_Widget *, int *action);
412 
413 void New_AimSurf_Input_cb (Fl_Widget *, void *);
414 
415 void AimSurf_Combo_cb (Fl_Widget * a, void *b);
416 
417 void Surf_Combo_cb (Fl_Widget * a, void *b);
418 
419 void New_Radius_Add_cb (class Fl_Widget *, int *action);
420 
421 void New_Surf_Input_cb (Fl_Widget *, void *);
422 
423 void New_Polyhedra_Add_cb (class Fl_Widget *, int *action);
424 
425 void New_Lone_Pair_Add_cb (class Fl_Widget *, int *action);
426 
427 void New_Polyhedra_Input_cb (class Fl_Widget *, void *);
428 
429 void New_Sphere_Add_cb (class Fl_Widget *, int *action);
430 
431 void New_Sphere_Input_cb (class Fl_Widget *, void *);
432 
433 void next_focus (void);
434 
435 int not_in_slab (float x, float y, float z);
436 
437 void Offset_cb (void);
438 
439 void Output_Spheres (float *radii, int i);
440 
441 float P_to_C (float prob);
442 
443 int pick_box (int x, int y, int w, int h);
444 
445 void plot_vrml_poly (int polyno);
446 
447 void Polyhedra_Combo_cb (Fl_Widget * a, void *b);
448 
449 void Polyhedra_Frame_Combo_cb (Fl_Widget * a, void *b);
450 
451 void print_sym (void);
452 
453 void process_hits (int hits, GLuint buffer[]);
454 
455 void Process_Inp (int i);
456 
457 void Progress_Window (int, const char *, float);
458 
459 void push_cylinder (float df[3], float at[3], float radius, char *color);
460 
461 void read_aim (char *infile, int Quick);
462 
463 void read_dn6 (char *infile, int Quick);
464 
465 void read_exc (char *infile, int Quick);
466 
467 void read_xsf (char *infile, int Quick);
468 
469 void read_fcf (char *infile, int Quick);
470 
471 void read_flp (char *infile, int Quick);
472 
473 void read_grd (char *infile, int Quick);
474 
475 void read_inp (int Quick);
476 
477 void read_m80 (char *infile, int Quick);
478 
479 void read_m81 (char *infile, int Quick);
480 
481 void read_stf (char *infile, int Quick);
482 
483 void read_w2k (char *infile, int Quick);
484 
485 void read_vasp (char *infile, int Quick);
486 
487 void Restore_Working_Copy (void);
488 
489 void Rotation_cb (void);
490 
491 void Save_Current_cb (void);
492 
493 void Save_Working_Copy (void);
494 
495 void SelectDataFile_cb (void);
496 
497 void set_tf_status (void);
498 
499 void show_slab (void);
500 
501 void show_slab_ovl (void);
502 
503 void skip_blocks (int i, FILE * in);
504 
505 void Slice_Frame_Combo_cb (Fl_Widget *, void *);
506 
507 void Spacegroup_Help_cb (void);
508 
509 void Sphere_Combo_cb (Fl_Widget * a, void *b);
510 
511 void Sphere_Frame_Combo_cb (Fl_Widget * a, void *b);
512 
513 void start_picking (int x, int y, int w, int h);
514 
515 void sub_add_vert (float *vert, int no_cell);
516 
517 void sub_add_vert_nc (float *vert, int no_cell);
518 
519 void symop (char *input);
520 
521 void Token_Strip (char string[], int no);
522 
523 void Transform_POV_Color (char *);
524 
525 void Transform_VRML_Color (char *);
526 
527 void trim_string (char string[], int len);
528 
529 void Update_Objects (int Frame_No, FILE * out);
530 
531 int update_box (int hits, GLuint buffer[]);
532 
533 void Update_Cursor_List (int);
534 
535 void Update_Str (int overwrite);
536 
537 int Unique_Atom (void);
538 
539 void View_Console_cb (void);
540 
541 void View_Cursor_cb (void);
542 
543 void Cursor_Reset_Combo_cb (Fl_Widget * , void *);
544 
545 void View_File_cb (void);
546 
547 void View_Help_Close_cb (Fl_Window *, int *);
548 
549 void View_Listing_cb (void);
550 
551 void View_Listing_Close_cb (Fl_Window *, int *arg);
552 
553 void View_POV_cb (void);
554 
555 int vec_dif (int n1, float v1[3], int n2, float v2[3], int n3, float v3[3], float v[3]);
556 
557 void WriteConfig (void);
558 
559 void Write_Map_cb (void);
560 
561 QUAT XYZ_Rot_to_Q (double Xrot, double Yrot, double Zrot);
562 
563 void calculate_voids (void);
564 
565 void calc_simplevoids (void);
566 
567 void calculate_sas (void);
568 
569 void calculate_msms (void);
570 
571 void generate_msms (void);
572 
573 void generate_simplevoids (void);
574 
575 void dump_gif (void);
576 
577 void Add_mapslice (int);
578 #endif
579