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