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: PickModeMolLabel.h,v $ 00013 * $Author: johns $ $Locker: $ $State: Exp $ 00014 * $Revision: 1.28 $ $Date: 2019年01月17日 21:21:01 $ 00015 * 00016 *************************************************************************** 00017 * DESCRIPTION: 00018 * 00019 * The PickMode object which allows a pointer to be used to create new 00020 * geometrical monitoring labels. This particular version is used only for 00021 * adding molecular labels, i.e. Atoms, Bonds, Angles, and Dihedrals. As 00022 * more atoms are selected, they are remembered until enough have been picked 00023 * to create the relevant label (i.e. 3 atoms to create an Angle label). 00024 * 00025 ***************************************************************************/ 00026 #ifndef PICKMODEMOLLABEL_H 00027 #define PICKMODEMOLLABEL_H 00028 00029 #include "PickMode.h" 00030 class Molecule; 00031 class DisplayDevice; 00032 class VMDApp; 00033 00035 class PickModeMolLabel : public PickMode { 00036 private: 00037 float pPos[3]; 00038 int needItems; 00039 int haveItems; 00040 int needName; 00041 int *molids; 00042 int *atmids; 00043 int *cells; 00044 int atom; 00045 int lastCell[3]; 00046 char *modename; 00047 00048 protected: 00049 VMDApp *app; 00050 00052 PickModeMolLabel(const char *, int, VMDApp *); 00053 00054 public: 00055 virtual ~PickModeMolLabel(void); 00056 00057 virtual void pick_molecule_start(DrawMolecule *, DisplayDevice *, 00058 int, int, const int *cell, int, const float *); 00059 virtual void pick_molecule_move (DrawMolecule *, DisplayDevice *, 00060 int, int, const float *); 00061 virtual void pick_molecule_end (DrawMolecule *, DisplayDevice *); 00062 00063 virtual void pick_graphics(int molid, int tag, int btn, DisplayDevice *d); 00064 }; 00065 00067 class PickModeAtoms : public PickModeMolLabel { 00068 public: 00069 PickModeAtoms(VMDApp *vmdapp) : PickModeMolLabel("Atoms",1,vmdapp) {} 00070 }; 00071 00073 class PickModeBonds : public PickModeMolLabel { 00074 public: 00075 PickModeBonds(VMDApp *vmdapp) : PickModeMolLabel("Bonds",2,vmdapp) {} 00076 }; 00077 00079 class PickModeAngles : public PickModeMolLabel { 00080 public: 00081 PickModeAngles(VMDApp *vmdapp) : PickModeMolLabel("Angles",3,vmdapp) {} 00082 }; 00083 00085 class PickModeDihedrals : public PickModeMolLabel { 00086 public: 00087 PickModeDihedrals(VMDApp *vmdapp) : PickModeMolLabel("Dihedrals",4,vmdapp) {} 00088 }; 00089 00090 #endif 00091