00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef ATOMREP_H
00023 #define ATOMREP_H
00024
00025
00026 #define DEFAULT_ATOMREP AtomRep::LINES
00027 #define MAX_ATOMREP_CMD 255
00028 #define MAX_ATOMREP_DATA 15
00029
00031 class AtomRep {
00032 public:
00033
00034
00035
00036 enum RepMethod { LINES, BONDS, DYNAMICBONDS, HBONDS,
00037 POINTS, VDW, CPK, LICORICE,
00038 #ifdef VMDPOLYHEDRA
00039 POLYHEDRA,
00040 #endif
00041 TRACE, TUBE, RIBBONS,
00042 NEWRIBBONS, STRUCTURE, NEWCARTOON,
00043 #ifdef VMDWITHCARBS
00044 RINGS_PAPERCHAIN, RINGS_TWISTER,
00045 #endif
00046 #ifdef VMDQUICKSURF
00047 QUICKSURF,
00048 #endif
00049 #ifdef VMDMSMS
00050 MSMS,
00051 #endif
00052 #ifdef VMDNANOSHAPER
00053 NANOSHAPER,
00054 #endif
00055 #ifdef VMDSURF
00056 SURF,
00057 #endif
00058 VOLSLICE, ISOSURFACE,
00059 FIELDLINES,
00060 ORBITAL,
00061 BEADS,
00062 DOTTED, SOLVENT,
00063 #ifdef VMDLATTICECUBES
00064 LATTICECUBES,
00065 #endif
00066 TOTAL };
00067
00068 enum RepDataNames { SPHERERAD, BONDRAD, SPHERERES, BONDRES, LINETHICKNESS, ISOSTEPSIZE, ISOLINETHICKNESS, WAVEFNCTYPE, WAVEFNCSPIN, WAVEFNCEXCITATION, GRIDSPACING, FIELDLINESTYLE, FIELDLINEDELTA, FIELDLINESEEDUSEGRID };
00069
00071 char cmdStr[MAX_ATOMREP_CMD + 1];
00072
00073 private:
00075 int repMethod;
00076 float repDataStorage[TOTAL][MAX_ATOMREP_DATA];
00077 float *repData;
00078
00080 int parse_cmd(const char *);
00081
00082 public:
00083 AtomRep(void);
00084 AtomRep(AtomRep &ar) { *this = ar; }
00085 ~AtomRep(void);
00086
00088 AtomRep& operator=(const AtomRep &);
00089
00091 int change(const char *newcmd) { return parse_cmd(newcmd); }
00092
00093
00094
00095
00096
00098 int method(void) { return repMethod; }
00099
00101 bool is_volumetric(void) {
00102 if (repMethod == VOLSLICE || repMethod == ISOSURFACE || repMethod == FIELDLINES)
00103 return true;
00104 return false;
00105 }
00106
00107 bool is_orbital(void) {
00108 if (repMethod == ORBITAL)
00109 return true;
00110 return false;
00111 }
00112
00114 float get_data(int n) { return repData[n]; }
00115 };
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00130 typedef struct {
00131 int index;
00132 float defValue;
00133 } AtomRepDataInfo;
00134
00136 typedef struct {
00137 const char *name;
00138 int numdata;
00139 AtomRepDataInfo repdata[MAX_ATOMREP_DATA];
00140 } AtomRepParamStruct;
00141
00142
00143
00144 extern const AtomRepParamStruct AtomRepInfo[AtomRep::TOTAL];
00145
00146
00147 #endif
00148