destruction of previous slot api. if it returns, it'll
[blender.git] / source / blender / blenkernel / BKE_sculpt.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software  Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2007 by Nicholas Bishop
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 #ifndef BKE_SCULPT_H
31 #define BKE_SCULPT_H
32
33 struct NumInput;
34 struct RadialControl;
35 struct Scene;
36 struct Sculpt;
37 struct SculptSession;
38 struct StrokeCache;
39
40 typedef struct SculptSession {
41         struct ProjVert *projverts;
42
43         /* An array of lists; array is sized as
44            large as the number of verts in the mesh,
45            the list for each vert contains the index
46            for all the faces that use that vertex */
47         struct ListBase *vertex_users;
48         struct IndexNode *vertex_users_mem;
49         int vertex_users_size;
50
51         /* Used temporarily per-stroke */
52         float *vertexcosnos;
53         ListBase damaged_rects;
54         ListBase damaged_verts;
55         
56         /* Used to cache the render of the active texture */
57         unsigned int texcache_w, texcache_h, *texcache;
58
59         void *cursor; /* wm handle */
60
61         struct RadialControl *radialcontrol;
62         
63         struct SculptStroke *stroke;
64
65         struct StrokeCache *cache;
66 } SculptSession;
67
68 void sculptsession_free(struct Sculpt *sculpt);
69 void sculpt_vertexusers_free(struct SculptSession *ss);
70
71 #endif