OpenStructure
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
xcs_editor.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // This file is part of the OpenStructure project <www.openstructure.org>
3 //
4 // Copyright (C) 2008-2020 by the OpenStructure authors
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License as published by the Free
8 // Software Foundation; either version 3.0 of the License, or (at your option)
9 // any later version.
10 // This library is distributed in the hope that it will be useful, but WITHOUT
11 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13 // details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this library; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 //------------------------------------------------------------------------------
19 #ifndef OST_XCS_EDITOR_HE
20 #define OST_XCS_EDITOR_HE
21 /*
22  Author: Marco Biasini
23  */
24 
25 #include <ost/mol/module_config.hh>
26 #include <ost/geom/geom.hh>
28 
29 #include "editor_base.hh"
30 
31 namespace ost { namespace mol {
32 
37 public:
38  friend class EntityHandle;
39 
41  XCSEditor();
42 
43  ~XCSEditor();
44 
45  XCSEditor(const XCSEditor& rhs);
46 
47  XCSEditor& operator=(const XCSEditor& rhs);
48 
51  void SetAtomOriginalPos(const AtomHandle& atom,
52  const geom::Vec3& position);
53 
57  void SetAtomOriginalPos(const AtomHandleList& alist,
58  float *positions);
59 
63  void SetAtomOriginalPos(const AtomHandleList& alist,
64  double *positions);
65 
69  void SetAtomTransformedPos(const AtomHandle& atom,
70  const geom::Vec3& position);
71 
75  void SetAtomTransformedPos(const AtomHandleList& alist,
76  float *positions);
77 
81  void SetAtomTransformedPos(const AtomHandleList& alist,
82  double *positions);
83 
85  void SetAtomPos(const AtomHandle& atom,
86  const geom::Vec3& position);
87 
89  void SetAtomPos(const AtomHandleList& alist,
90  float *positions);
91 
93  void SetAtomPos(const AtomHandleList& alist,
94  double *positions);
95 
100  void ApplyTransform(const geom::Mat4& transform);
101  void ApplyTransform(const geom::Transform& transform);
102 
104  void SetTransform(const geom::Mat4& transform);
105  void SetTransform(const geom::Transform& transform);
106 
108  void FixTransform();
109 
111  void UpdateICS();
112 
115  void ForceUpdate();
116 
117 protected:
118  XCSEditor(const EntityHandle& ent, EditMode mode);
119 
120  void Update();
121 };
122 
123 }} //ns
124 
125 #endif
Handle to atom datatype.
Definition: atom_handle.hh:37
Protein or molecule.
basic and essential transformation class, including translation, rotation and center of rotation ...
Definition: transform.hh:39
Three dimensional vector class, using Real precision.
Definition: vec3.hh:43
external coordinate system editor
Definition: xcs_editor.hh:36
#define DLLEXPORT_OST_MOL
std::vector< AtomHandle > AtomHandleList
base class for entity editors
Definition: editor_base.hh:46