00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_ENTITY_HANDLE_HH
00020 #define OST_ENTITY_HANDLE_HH
00021
00022 #include <ost/mol/module_config.hh>
00023
00024 #include "impl/entity_impl_fw.hh"
00025 #include "entity_visitor_fw.hh"
00026 #include "query.hh"
00027 #include "entity_observer_fw.hh"
00028 #include "residue_prop.hh"
00029 #include "entity_view.hh"
00030 #include "chain_handle.hh"
00031 #include "handle_type_fw.hh"
00032
00033
00034 #include "editor_type_fw.hh"
00035
00036 namespace ost { namespace mol {
00037
00040 DLLEXPORT_OST_MOL EntityHandle CreateEntity();
00041
00054 class DLLEXPORT_OST_MOL EntityHandle : public EntityBase {
00055 public:
00056 friend class XCSEditor;
00057 friend class ICSEditor;
00058
00060 EntityHandle(const impl::EntityImplPtr&);
00061
00063 EntityHandle();
00064
00065
00067
00068
00069
00070 EntityHandle Copy() const;
00071
00072
00073
00075
00076
00077
00078
00079
00080 geom::Vec3 GetCenterOfAtoms() const;
00081
00083 Real GetMass() const;
00084
00086 geom::Vec3 GetCenterOfMass() const;
00087
00088 geom::AlignedCuboid GetBounds() const;
00090
00093 void Swap(EntityHandle& eh);
00094
00097 void DeepSwap(EntityHandle& eh);
00098
00100
00101
00102 void AttachObserver(const EntityObserverPtr&);
00103
00104
00106 void DetachObserver(const EntityObserverPtr&);
00108
00109
00111 void Apply(EntityVisitor& v);
00112
00113
00121 TorsionHandle FindTorsion(const AtomHandle& a1, const AtomHandle& a2,
00122 const AtomHandle& a3, const AtomHandle& a4) const;
00123
00125 ChainHandleList GetChainList() const;
00126
00128
00129
00130
00131
00132
00133
00134
00135 ChainHandle FindChain(const String& name) const;
00136
00152 ResidueHandle FindResidue(const String& chain_name,
00153 const ResNum& number) const;
00154
00162 AtomHandle FindAtom(const String& chain_name,
00163 const ResNum& number,
00164 const String& atom_name) const;
00166
00168 AtomHandleList FindWithin(const geom::Vec3& pos, Real radius) const;
00169
00173 void SetDefaultQueryFlags(QueryFlags flags);
00174
00176 QueryFlags GetDefaultQueryFlags() const;
00177
00181 EntityView Select(const Query& q) const;
00182
00186 EntityView Select(const String& query_string) const;
00187
00190 EntityView Select(const Query& q, QueryFlags flags) const;
00191
00194 EntityView Select(const String& query_string, QueryFlags flags) const;
00195
00197 EntityView CreateFullView() const;
00198
00200 EntityView CreateEmptyView() const;
00201
00207 int GetAtomCount() const;
00208
00214 int GetResidueCount() const;
00215
00217 int GetChainCount() const;
00218
00220 int GetBondCount() const;
00221
00223 mol::BondHandleList GetBondList() const;
00224
00225
00227 Real GetAngle(const AtomHandle& a1, const AtomHandle& a2,
00228 const AtomHandle& a3) const;
00229
00231 Real GetAngle(const AtomView& a1, const AtomView& a2,
00232 const AtomView& a3) const;
00233
00235 geom::Mat4 GetTransformationMatrix() const;
00237 geom::Mat4 GetInvTransformationMatrix() const;
00239 bool IsTransformationIdentity() const;
00240
00242 geom::Transform GetTransform() const;
00244 void SetTransform(const geom::Transform& t);
00246 bool HasTransform() const;
00248 void ClearTransform();
00250 void FixTransform();
00251
00253 ResidueHandleList GetResidueList() const;
00254
00256 AtomHandleList GetAtomList() const;
00257
00259 geom::Vec3List GetAtomPosList(bool ordered_by_index = false) const;
00260
00264 XCSEditor EditXCS(EditMode mode=UNBUFFERED_EDIT) const;
00265
00269 ICSEditor EditICS(EditMode mode=UNBUFFERED_EDIT) const;
00270
00274 EntityHandle GetHandle() const;
00275 bool operator==(const EntityHandle& ref) const;
00276 bool operator!=(const EntityHandle& ref) const;
00277 };
00278
00279 }}
00280
00281 #endif // OST_ENTITY_HANDLE_HH
00282