/[xmakemol]/xmakemol/gl_funcs.c
ViewVC logotype

Diff of /xmakemol/gl_funcs.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.63 by MPHodges, Sun May 11 15:34:49 2003 UTC revision 1.64 by MPHodges, Sun Sep 21 13:29:05 2003 UTC
# Line 26  Foundation, Inc., 59 Temple Place, Suite Line 26  Foundation, Inc., 59 Temple Place, Suite
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>
# Line 35  Foundation, Inc., 59 Temple Place, Suite Line 37  Foundation, Inc., 59 Temple Place, Suite
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"
# Line 137  void gl_render (void) Line 138  void gl_render (void)
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)
# Line 395  void gl_render_atoms (void) Line 396  void gl_render_atoms (void)
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;
# Line 436  void gl_render_atom (int i) Line 440  void gl_render_atom (int i)
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    
# Line 488  void gl_render_atom (int i) Line 493  void gl_render_atom (int i)
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      }      }
# Line 574  void gl_render_atom (int i) Line 559  void gl_render_atom (int i)
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    
# Line 1023  void gl_render_vector (int i, int j) Line 1036  void gl_render_vector (int i, int j)
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 ();
# Line 1049  void gl_render_vector (int i, int j) Line 1063  void gl_render_vector (int i, int j)
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    

Legend:
Removed from v.1.63  
changed lines
  Added in v.1.64

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26