OpenStructure
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
stage
include
ost
mol
entity_view.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-2011 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_ENTITY_VIEW_HN
20
#define OST_ENTITY_VIEW_HN
21
/*
22
Author: Marco Biasini
23
*/
24
#include <
ost/mol/module_config.hh
>
25
26
#include <
ost/mol/residue_prop.hh
>
27
#include <
ost/mol/entity_base.hh
>
28
#include <
ost/mol/view_type_fw.hh
>
29
#include <
ost/mol/impl/entity_impl_fw.hh
>
30
#include <
ost/mol/entity_visitor_fw.hh
>
31
#include <
ost/mol/handle_type_fw.hh
>
32
#include <
ost/mol/query.hh
>
33
#include <
ost/mol/property_id.hh
>
34
#include <
ost/geom/geom.hh
>
35
36
#ifdef _MSC_VER
37
# ifdef FindAtom
38
# undef FindAtom
39
# endif
40
# ifdef AddAtom
41
# undef AddAtom
42
# endif
43
#endif
44
45
namespace
ost {
namespace
mol {
46
86
class
DLLEXPORT_OST_MOL
EntityView
:
public
EntityBase
{
87
friend
class
AtomView
;
88
friend
class
ResidueView
;
89
public
:
90
EntityView
();
95
explicit
EntityView
(
const
EntityHandle
& entity,
96
ViewAddFlags
flags=0);
97
99
100
101
102
103
104
105
106
operator
bool()
const
{
return
this->IsValid(); }
109
bool
IsValid
()
const
{
return
data_.get()!=0; }
111
112
Real
GetMass()
const
;
113
115
geom::Vec3
GetCenterOfMass()
const
;
116
121
geom::Vec3
GetCenterOfAtoms()
const
;
122
123
geom::AlignedCuboid
GetBounds()
const
;
124
125
public
:
127
128
129
EntityView
(
const
EntityViewDataPtr
& data,
130
const
impl::EntityImplPtr
impl);
131
133
const
EntityViewDataPtr
& ViewData()
const
;
135
EntityViewDataPtr
& ViewData();
137
public
:
141
EntityView
Copy()
const
;
151
ChainView
AddChain(
const
ChainHandle
& chain_handle,
152
ViewAddFlags
flags=0);
153
163
ChainView
AddChain(
const
ChainView
& chain_view,
164
ViewAddFlags
flags=0);
165
174
ResidueView
AddResidue(
const
ResidueHandle
& residue_handle,
175
ViewAddFlags
flags=0);
183
ResidueView
AddResidue(
const
ResidueView
& residue_view,
184
ViewAddFlags
flags=0);
194
AtomView
AddAtom(
const
AtomHandle
& atom_handle,
195
ViewAddFlags
flags=0);
196
197
AtomView
AddAtom(
const
AtomView
& atom_view,
198
ViewAddFlags
flags=0);
201
EntityView
Select(
const
String
& query_string,
QueryFlags
flags=0)
const
;
202
205
EntityView
Select(
const
Query
& query,
QueryFlags
flags=0)
const
;
206
208
bool
AddBond(
const
BondHandle
& bond_handle);
209
211
int
GetAtomCount()
const
;
212
214
int
GetResidueCount()
const
;
215
217
int
GetChainCount()
const
;
218
220
ChainView
FindChain(
const
String
& chain_name)
const
;
221
225
ResidueView
FindResidue(
const
ResidueHandle
& residue)
const
;
226
227
ResidueView
FindResidue(
const
String
& chain,
const
ResNum
& num)
const
;
228
233
ResidueView
ViewForHandle(
const
ResidueHandle
& residue)
const
;
237
AtomView
FindAtom(
const
AtomHandle
& atom)
const
;
238
AtomView
ViewForHandle(
const
AtomHandle
& atom)
const
;
239
244
AtomView
FindAtom(
const
String
& chain_name,
const
ResNum
& num,
245
const
String
& atom_name)
const
;
249
250
ChainView
FindChain(
const
ChainHandle
& chain)
const
;
255
ChainView
ViewForHandle(
const
ChainHandle
& chain)
const
;
258
bool
IsChainIncluded(
const
ChainHandle
& chain)
const
;
259
261
void
RemoveAtom(
AtomView
view);
262
264
void
RemoveResidue(
ResidueView
view);
265
267
void
RemoveChain(
ChainView
view);
268
271
void
AddAllInclusiveBonds();
272
273
const
BondHandleList
& GetBondList()
const
;
274
276
AtomViewList
FindWithin(
const
geom::Vec3
& center,
Real
radius)
const
;
277
279
int
GetBondCount()
const
;
280
281
const
ChainViewList
& GetChainList()
const
;
282
284
ResidueViewList
GetResidueList()
const
;
285
287
AtomViewList
GetAtomList()
const
;
288
290
void
Apply(
EntityVisitor
& visitor);
291
293
void
Apply(
EntityViewVisitor
& visitor);
294
296
EntityHandle
GetHandle()
const
;
297
299
std::pair<Real,Real> GetMinMax(
const
String
& prop,
300
Prop::Level
hint=
Prop::UNSPECIFIED
)
const
;
301
303
Real
GetAngle(
const
AtomHandle
& a1,
const
AtomHandle
& a2,
304
const
AtomHandle
& a3)
const
;
305
307
Real
GetAngle(
const
AtomView
& a1,
const
AtomView
& a2,
308
const
AtomView
& a3)
const
;
309
312
EntityView
ExtendViewToResidues()
const
;
313
318
EntityView
ExtendViewToSurrounding(
Real
gap)
const
;
319
322
String
Dump()
const
;
326
EntityView
CreateFullView()
const
;
328
EntityView
CreateEmptyView()
const
;
329
331
bool
HasAtoms()
const
;
332
#ifdef _MSC_VER
333
// alternative routines for msvc
334
AtomView
AddXAtom(
const
AtomHandle
& ah,
ViewAddFlags
flags=0);
335
AtomView
FindXAtom(
const
AtomHandle
& ah);
336
#endif
337
void
RemoveBond(
const
BondHandle
& bond);
338
protected
:
340
void
AddAtomInternal(
const
AtomView
& av);
341
void
RemoveAtomInternal(
const
AtomView
& av);
342
343
private
:
344
345
346
EntityViewDataPtr
data_;
347
};
348
349
typedef
std::pair<EntityView, EntityView>
EntityViewPair
;
350
351
}}
// ns
352
353
#endif // OST_ENTITY_VIEW_HH
354
Generated on Thu Mar 5 2015 15:19:05 for OpenStructure by
1.8.1.1