00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_ICS_EDITOR_HE
00020 #define OST_ICS_EDITOR_HE
00021
00022
00023
00024
00025 #include <ost/mol/module_config.hh>
00026 #include <ost/geom/geom.hh>
00027
00028 #include "handle_type_fw.hh"
00029 #include "editor_base.hh"
00030 namespace ost { namespace mol {
00031
00034 class DLLEXPORT_OST_MOL ICSEditor : public EditorBase {
00035 public:
00036 friend class EntityHandle;
00037 ~ICSEditor();
00038 protected:
00039 ICSEditor(const EntityHandle& ent, EditMode mode);
00040
00041 void Update();
00042 public:
00043 ICSEditor(const ICSEditor& rhs);
00044
00045 ICSEditor& operator=(const ICSEditor& rhs);
00046
00055 void SetBondLength(const BondHandle& bond, Real length);
00056
00066
00067 bool SetAngle(const AtomHandle& atom_a, const AtomHandle& atom_b,
00068 const AtomHandle& atom_c, Real angle);
00069
00077 void SetTorsionAngle(TorsionHandle torsion, Real angle,
00078 bool update_others=true);
00080 void RotateTorsionAngle(TorsionHandle torsion, Real delta,
00081 bool update_others=true);
00082
00083 void RotateTorsionAngle(const AtomHandle& atom_a,
00084 const AtomHandle& atom_b,
00085 const AtomHandle& atom_c,
00086 const AtomHandle& atom_d,
00087 Real angle,
00088 bool update_others=true);
00089
00090 void SetTorsionAngle(const AtomHandle& atom_a, const AtomHandle& atom_b,
00091 const AtomHandle& atom_c, const AtomHandle& atom_d,
00092 Real angle, bool update_others=true);
00093
00095 void UpdateXCS();
00096 };
00097
00098 }}
00099
00105 #endif