00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef GEOMETRYLIST_H
00028 #define GEOMETRYLIST_H
00029
00030 #include "Displayable.h"
00031 #include "NameList.h"
00032 #include "ResizeArray.h"
00033 #include "GeometryMol.h"
00034 #include "DispCmds.h"
00035 class VMDApp;
00036
00037
00039 typedef ResizeArray<GeometryMol *> *GeomListPtr;
00040
00042 typedef struct {
00043 GeomListPtr geomList;
00044 int defaultColor;
00045 int curColor;
00046 } GeomListStruct;
00047
00048
00050 class GeometryList : public Displayable {
00051 private:
00053 NameList<GeomListStruct *> geomLists;
00054
00056 int colorCat;
00057
00058 VMDApp *app;
00059
00062 int add_geom_list(const char *, int);
00063
00065 int del_geom_list(int);
00066
00068 float labelsize;
00070 float labelthickness;
00071
00072 protected:
00074 virtual void do_color_changed(int);
00075
00076 public:
00077 GeometryList(VMDApp *, Displayable *);
00078
00080 virtual ~GeometryList(void);
00081
00082
00083
00084
00085
00087 int num_lists(void) { return geomLists.num(); }
00088
00090 GeomListPtr geom_list(int n) { return (geomLists.data(n))->geomList; }
00091
00093 GeomListPtr geom_list(const char *nm) {
00094 int glistindex = geom_list_index(nm);
00095 return (glistindex >= 0 ? geom_list(glistindex) : (GeomListPtr) NULL);
00096 }
00097
00099 const char *geom_list_name(int n) { return geomLists.name(n); }
00100
00102 int geom_list_index(const char *nm) { return geomLists.typecode(nm); }
00103
00104
00105
00106
00107
00108
00109
00110
00111
00115 int add_geometry(const char *geomcat, const int *molids, const int *atomids,
00116 const int *cells, float k, int toggle);
00117
00119 int del_geometry(int, int);
00120
00122 int del_geometry(const char *nm, int n) {
00123 return del_geometry(geom_list_index(nm), n);
00124 }
00125
00129 int show_geometry(int, int, int);
00130
00132 int show_geometry(const char *nm, int n, int s) {
00133 return show_geometry(geom_list_index(nm), n, s);
00134 }
00135
00137 float getTextSize() const { return labelsize; }
00138 int setTextSize(float);
00139
00141 float getTextThickness() const { return labelthickness; }
00142 int setTextThickness(float);
00143
00144 const float *getTextOffset(const char *nm, int n);
00145
00147 int setTextOffset(const char *nm, int n, const float delta[2]);
00148
00149 const char *getTextFormat(const char *nm, int n);
00150 int setTextFormat(const char *nm, int n, const char *format);
00151
00152
00153
00154
00155
00157 virtual void prepare();
00158 };
00159
00160 #endif
00161