26 |
#include "config.h" |
#include "config.h" |
27 |
#endif |
#endif |
28 |
|
|
29 |
|
#ifdef GL |
30 |
|
|
31 |
#include <stdio.h> |
#include <stdio.h> |
32 |
#include <stdlib.h> |
#include <stdlib.h> |
33 |
#include <math.h> |
#include <math.h> |
37 |
#include <X11/extensions/SGIStereo.h> /* aro */ |
#include <X11/extensions/SGIStereo.h> /* aro */ |
38 |
#endif /* SGI_STEREO */ |
#endif /* SGI_STEREO */ |
39 |
|
|
|
#ifdef GL |
|
40 |
#include "bbox.h" |
#include "bbox.h" |
41 |
#include "bonds.h" |
#include "bonds.h" |
42 |
#include "defs.h" |
#include "defs.h" |
138 |
height_scale = width_scale * (canvas_width / (float) canvas_height); |
height_scale = width_scale * (canvas_width / (float) canvas_height); |
139 |
glScalef (width_scale, height_scale, 1.0f); |
glScalef (width_scale, height_scale, 1.0f); |
140 |
|
|
141 |
gluLookAt (0.0, 0.0, gl_eye, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0); |
gluLookAt (0.0, 0.0, gl_eye, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); |
142 |
|
|
143 |
/* aro--> */ |
/* aro--> */ |
144 |
if(get_gl_render_stereo() && depth_is_on) |
if(get_gl_render_stereo() && depth_is_on) |
396 |
|
|
397 |
void gl_render_atom (int i) |
void gl_render_atom (int i) |
398 |
{ |
{ |
399 |
|
double get_smallest_cov_rad (void); |
400 |
|
double line_width; |
401 |
|
|
402 |
enum render_stereo_types get_gl_render_stereo(void);/* aro */ |
enum render_stereo_types get_gl_render_stereo(void);/* aro */ |
403 |
double atom_size; |
double atom_size; |
404 |
GLfloat red, green, blue; |
GLfloat red, green, blue; |
440 |
} |
} |
441 |
|
|
442 |
atom_size = gl_get_rendered_atom_size (i); |
atom_size = gl_get_rendered_atom_size (i); |
443 |
|
line_width = 0.1 * get_atom_scale () * get_smallest_cov_rad (); |
444 |
|
|
445 |
/* Set up rendering for elliptical atoms */ |
/* Set up rendering for elliptical atoms */ |
446 |
|
|
493 |
|
|
494 |
if ((! mouse_motion_p ()) || (! outline_mode_p ())) |
if ((! mouse_motion_p ()) || (! outline_mode_p ())) |
495 |
{ |
{ |
496 |
|
/* Draw border for selected atoms */ |
497 |
|
|
498 |
if (atoms[i].sel == 1) |
if (atoms[i].sel == 1) |
499 |
{ |
{ |
500 |
glColor3f (1.0, 0.65, 0.0); /* Orange */ |
glColor3f (1.0, 0.65, 0.0); /* Orange */ |
501 |
|
|
502 |
gluDisk (gl_quadric, |
gluDisk (gl_quadric, |
503 |
0.9 * atom_size, |
atom_size - line_width, |
504 |
atom_size, |
atom_size, |
505 |
gl_no_atom_segments, |
gl_no_atom_segments, |
506 |
1); |
1); |
507 |
|
|
508 |
glColor3f (red, green, blue); |
glColor3f (red, green, blue); |
|
|
|
|
gluSphere (gl_quadric, |
|
|
0.9 * atom_size, |
|
|
gl_no_atom_segments, |
|
|
gl_no_atom_segments); |
|
509 |
} |
} |
510 |
else |
|
511 |
|
if (gl_use_lighting) |
512 |
{ |
{ |
513 |
if (gl_use_lighting) |
double size; |
514 |
|
|
515 |
|
if (atoms[i].sel == 0) |
516 |
{ |
{ |
517 |
gluSphere (gl_quadric, |
size = atom_size; |
|
atom_size, |
|
|
gl_no_atom_segments, |
|
|
gl_no_atom_segments); |
|
518 |
} |
} |
519 |
else |
else |
520 |
{ |
{ |
521 |
double get_smallest_cov_rad (void); |
size = atom_size - line_width; |
522 |
double line_width; |
} |
|
|
|
|
line_width = 0.1 * get_atom_scale () * get_smallest_cov_rad (); |
|
|
|
|
|
if (vector_flag && (atoms[i].has_vector > 0)) |
|
|
{ |
|
|
/* Can't use a disk if there is a vector */ |
|
523 |
|
|
524 |
gluSphere (gl_quadric, |
gluSphere (gl_quadric, |
525 |
atom_size - line_width, |
size, |
526 |
gl_no_atom_segments, |
gl_no_atom_segments, |
527 |
gl_no_atom_segments); |
gl_no_atom_segments); |
528 |
|
} |
529 |
|
else |
530 |
|
{ |
531 |
|
gluDisk (gl_quadric, |
532 |
|
0, |
533 |
|
atom_size, |
534 |
|
gl_no_atom_segments, |
535 |
|
1); |
536 |
|
|
537 |
glColor3f (0.0, 0.0, 0.0); |
if (atoms[i].sel == 0) |
538 |
|
{ |
539 |
|
glColor3f (0.0, 0.0, 0.0); |
540 |
|
|
541 |
/* Move slightly forward */ |
/* Move slightly forward */ |
542 |
|
|
543 |
glTranslatef (0.0, 0.0, 0.01); |
glTranslatef (0.0, 0.0, 0.01); |
544 |
|
|
545 |
gluDisk (gl_quadric, |
gluDisk (gl_quadric, |
546 |
0, |
atom_size - line_width, |
547 |
atom_size, |
atom_size, |
548 |
gl_no_atom_segments, |
gl_no_atom_segments, |
549 |
1); |
1); |
|
} |
|
|
else |
|
|
{ |
|
|
gluDisk (gl_quadric, |
|
|
0, |
|
|
atom_size, |
|
|
gl_no_atom_segments, |
|
|
1); |
|
|
|
|
|
glColor3f (0.0, 0.0, 0.0); |
|
|
|
|
|
/* Move slightly forward */ |
|
|
|
|
|
glTranslatef (0.0, 0.0, 0.01); |
|
|
|
|
|
gluDisk (gl_quadric, |
|
|
atom_size - line_width, |
|
|
atom_size, |
|
|
gl_no_atom_segments, |
|
|
1); |
|
|
} |
|
550 |
} |
} |
551 |
} |
} |
552 |
} |
} |
559 |
1); /* Number of rings */ |
1); /* Number of rings */ |
560 |
} |
} |
561 |
|
|
562 |
|
{ |
563 |
|
char string[8]; |
564 |
|
int j; |
565 |
|
|
566 |
|
glColor3f (0.0, 0.0, 0.0); |
567 |
|
glRasterPos3f (0, 0, atom_size * 1.1); |
568 |
|
|
569 |
|
if (at_nos_flag) |
570 |
|
{ |
571 |
|
sprintf (string, "%d ", i + 1); |
572 |
|
|
573 |
|
for (j = 0; j < strlen (string); j++) |
574 |
|
{ |
575 |
|
glutBitmapCharacter (GLUT_BITMAP_9_BY_15, string[j]); |
576 |
|
} |
577 |
|
} |
578 |
|
|
579 |
|
if (at_sym_flag) |
580 |
|
{ |
581 |
|
sprintf (string, "%s ", atoms[i].label); |
582 |
|
|
583 |
|
for (j = 0; j < strlen (string); j++) |
584 |
|
{ |
585 |
|
glutBitmapCharacter (GLUT_BITMAP_9_BY_15, string[j]); |
586 |
|
} |
587 |
|
} |
588 |
|
} |
589 |
|
|
590 |
glPopMatrix (); |
glPopMatrix (); |
591 |
} |
} |
592 |
|
|
1036 |
double angle, height, mod_of_vector, top_radius; |
double angle, height, mod_of_vector, top_radius; |
1037 |
double vector_arrow_angle, vector_arrow_scale, vector_scale; |
double vector_arrow_angle, vector_arrow_scale, vector_scale; |
1038 |
double vector[3]; |
double vector[3]; |
1039 |
|
double atom_size = gl_get_rendered_atom_size (i); |
1040 |
|
|
1041 |
vector_arrow_angle = get_vector_arrow_angle (); |
vector_arrow_angle = get_vector_arrow_angle (); |
1042 |
vector_arrow_scale = get_vector_arrow_scale (); |
vector_arrow_scale = get_vector_arrow_scale (); |
1063 |
glRotatef (180.0, 0.0, 0.0, 1.0); |
glRotatef (180.0, 0.0, 0.0, 1.0); |
1064 |
glRotatef (angle, vector[1], -1.0 * vector[0], 0.0); |
glRotatef (angle, vector[1], -1.0 * vector[0], 0.0); |
1065 |
|
|
1066 |
|
glTranslatef (0.0, 0.0, atom_size); |
1067 |
|
|
1068 |
gluCylinder (gl_quadric, |
gluCylinder (gl_quadric, |
1069 |
0.025, |
0.025, |
1070 |
0.025, |
0.025, |
1071 |
mod_of_vector - height, |
mod_of_vector - (height + atom_size), |
1072 |
16, |
16, |
1073 |
1); |
1); |
1074 |
|
|