Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

GeometryMol.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *cr                                                                       
00003  *cr            (C) Copyright 1995-2019 The Board of Trustees of the           
00004  *cr                        University of Illinois                       
00005  *cr                         All Rights Reserved                        
00006  *cr                                                                   
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  * RCS INFORMATION:
00011  *
00012  *      $RCSfile: GeometryMol.h,v $
00013  *      $Author: johns $        $Locker:  $                $State: Exp $
00014  *      $Revision: 1.34 $      $Date: 2019/01/17 21:20:59 $
00015  *
00016  ***************************************************************************
00017  * DESCRIPTION:
00018  *
00019  * Base class for all Geometry objects which measure information about
00020  * atoms in a molecule.  A molecule Geometry monitor is assumed to operate
00021  * on N atoms, and be able to calculate a single floating-point value for
00022  * those atoms.  (i.e. the angle formed by three atoms in space)
00023  *
00024  ***************************************************************************/
00025 #ifndef GEOMETRYMOL_H
00026 #define GEOMETRYMOL_H
00027 
00028 class MoleculeList;
00029 class Molecule;
00030 class VMDDisplayList;
00031 class CommandQueue;
00032 
00033 #include "Displayable.h"
00034 #include "ResizeArray.h"
00035 #include "utilities.h"
00036 #include "JString.h"
00037 
00038 class GeometryMonitor;
00039 
00041 class GeometryMol : public Displayable {
00042 public:
00044   int items(void) { return numItems; }
00045 
00047   int com_index(int i) {
00048     return comIndex[i];
00049   }
00050 
00052   int obj_index(int i) {
00053     return objIndex[i];
00054   }
00055   
00057   float value(void) { return geomValue; }
00058 
00060   int has_value(void) { return hasValue; }
00061 
00063   virtual float calculate(void) { return 0.0; }
00064   
00066   virtual void set_pick(void) { }
00067 
00068 protected:
00069   MoleculeList *molList;
00070   CommandQueue *cmdqueue;
00071 
00072   int numItems;       
00073   int *objIndex;      
00074   int *comIndex;      
00075   int *cellIndex;     
00076   float geomValue;    
00077   int hasValue;       
00078   float valuePos[3];  
00079   char *gmName;       
00080   char *uniquegmName; 
00081 
00082   //
00083   // protected functions
00084   //
00085 
00087   void geom_set_name(void);
00088 
00091   void sort_items(void);
00092 
00095   Molecule *check_mol(int m, int a);
00096 
00099   Molecule *transformed_atom_coord(int ind, float *);
00100   
00104   Molecule *normal_atom_coord(int ind, float *);
00105 
00107   void display_line(float *, float *, VMDDisplayList *);
00108 
00110   void display_string(const char *, VMDDisplayList *);
00111 
00112   void atom_full_name(char *buf, Molecule *mol, int ind) ;
00113   void atom_short_name(char *buf, Molecule *mol, int ind) ;
00114   void atom_formatted_name(JString &str, Molecule *mol, int ind);
00115 
00117   void set_pick_selection(int, int, int*);
00118   void set_pick_selection();
00119   void set_pick_value(double);
00120 
00121 public:
00123   GeometryMol(int, int *, int *, const int *cells, MoleculeList *mlist, 
00124       CommandQueue *, Displayable *);
00125 
00126   virtual ~GeometryMol(void);
00127   
00129   const char *name(void);
00130 
00133   const char *unique_name(void);
00134 
00136   int ok(void);
00137 
00139   int calculate_all(ResizeArray<float> &);
00140 
00142   void update() { create_cmd_list(); }
00143 
00145   void set_color(int c) { my_color = c; update(); }
00146 
00148   void set_text_size(float size) { my_text_size = size; update(); }
00149 
00151   void set_text_thickness(float thick) { my_text_thickness = thick; update(); }
00152 
00153   const float *text_offset() const { return my_text_offset; }
00154 
00155   void set_text_offset(const float offset[2]) {
00156     my_text_offset[0] = offset[0];
00157     my_text_offset[1] = offset[1];
00158     update();
00159   }
00160 
00169 
00170   const char *text_format() const { return (const char *)my_text_format; }
00171   void set_text_format(const char *aFormat) {
00172     my_text_format = aFormat;
00173     update();
00174   }
00175   
00176 protected:
00177   virtual void create_cmd_list() = 0;
00178   ResizeArray<GeometryMonitor *> monitors;
00179   int my_color;
00180 
00181 private:
00182   float my_text_size;
00183   float my_text_thickness;
00184   float my_text_offset[2];
00185   JString my_text_format;
00186 };
00187 
00188 #endif
00189 

Generated on Thu Apr 18 02:44:41 2024 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002