1 
2 /*
3 A* -------------------------------------------------------------------
4 B* This file contains source code for the PyMOL computer program
5 C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific.
6 D* -------------------------------------------------------------------
7 E* It is unlawful to modify or remove this copyright notice.
8 F* -------------------------------------------------------------------
9 G* Please see the accompanying LICENSE file for further information.
10 H* -------------------------------------------------------------------
11 I* Additional authors of this source file include:
12 -*
13 -*
14 -*
15 Z* -------------------------------------------------------------------
16 */
17 #ifndef _H_Sculpt
18 #define _H_Sculpt
19 
20 #include"Shaker.h"
21 #include"vla.h"
22 
23 #include <memory>
24 
25 #define cSculptBond  0x001
26 #define cSculptAngl  0x002
27 #define cSculptPyra  0x004
28 #define cSculptPlan  0x008
29 #define cSculptLine  0x010
30 #define cSculptVDW   0x020
31 #define cSculptVDW14 0x040
32 #define cSculptTors  0x080
33 #define cSculptTri   0x100
34 #define cSculptMin   0x200
35 #define cSculptMax   0x400
36 #define cSculptAvoid 0x800
37 
38 struct CSculpt {
39   PyMOLGlobals *G;
40   std::unique_ptr<CShaker> Shaker;
41   ObjectMolecule *Obj;
42   std::vector<int> NBHash;
43   pymol::vla<int> NBList;
44   std::vector<int> EXHash;
45   pymol::vla<int> EXList;
46   pymol::vla<int> Don;
47   pymol::vla<int> Acc;
48   float inverse[256];
49   CSculpt(PyMOLGlobals * G);
50 };
51 
52 struct ObjectMolecule;
53 
54 void SculptMeasureObject(CSculpt * I, ObjectMolecule * obj, int state, int match_state,
55                          int match_by_segment);
56 float SculptIterateObject(CSculpt * I, ObjectMolecule * obj, int state, int n_cycle,
57                           float *center);
58 
59 
60 #endif
61