00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_COORD_GROUP_HH
00020 #define OST_COORD_GROUP_HH
00021
00022
00023
00024
00025
00026 #include <vector>
00027 #include <boost/shared_array.hpp>
00028 #include "atom_handle.hh"
00029 #include "coord_source.hh"
00030
00031 namespace geom {
00032
00033 class Transform;
00034 }
00035
00036 namespace ost { namespace mol {
00037
00039 class DLLEXPORT_OST_MOL CoordGroupHandle {
00040 public:
00042 CoordGroupHandle();
00044 CoordGroupHandle(CoordSourcePtr source);
00045
00047 EntityHandle GetEntity() const;
00048
00049
00050
00051
00053 uint GetAtomCount() const;
00054
00056 uint GetFrameCount() const;
00057
00059 float GetDelta() const;
00060
00062 void SetDelta(float d);
00063
00065 float GetStartTime() const;
00066
00068 void SetStartTime(float t);
00069
00072 void SetFramePositions(uint frame, const geom::Vec3List& clist);
00073
00075 void SetFrameCellSize(uint frame, const geom::Vec3& size);
00076
00078 geom::Vec3List GetFramePositions(uint frame);
00079
00081 void CopyFrame(uint frame);
00082
00084 void Capture();
00085
00086 void CaptureInto(int pos);
00087
00089 void Capture(uint frame);
00090
00092
00093 void AddFrame(const geom::Vec3List& clist);
00094 void AddFrame(const geom::Vec3List& clist,const geom::Vec3& cell_size,const geom::Vec3& cell_angles);
00095
00096 void AddFrames(const CoordGroupHandle& cg);
00098 void SetAtomPos(uint frame, AtomHandle atom, const geom::Vec3& pos);
00099
00101 geom::Vec3 GetAtomPos(uint frame, AtomHandle atom) const;
00102
00104 bool IsValid() const;
00105
00107 operator bool() const;
00108
00109 AtomHandleList GetAtomList() const;
00110 CoordFramePtr GetFrame(uint frame) const;
00111 CoordFrame GetFrame2(uint frame);
00112
00115 CoordGroupHandle Filter(const EntityView& selected,int first=0,int last=-1,int stride=1) const;
00116
00118 void ApplyTransform(const geom::Transform& tf);
00119
00120
00121 private:
00122 void CheckValidity() const;
00123 CoordSourcePtr source_;
00124 };
00125
00126
00127
00128 DLLEXPORT_OST_MOL CoordGroupHandle CreateCoordGroup(const AtomHandleList& atoms);
00129
00130 }}
00131
00132 #endif