split dissolve_disk into dissolve_vert dissolve_disk as agreed. also made dissolve...
[blender.git] / source / blender / bmesh / bmesh_iterators.h
1 /*
2  * BMESH ITERATORS
3  * 
4  * The functions and structures in this file 
5  * provide a unified method for iterating over 
6  * the elements of a mesh and answering simple
7  * adjacency queries. Tool authors should use
8  * the iterators provided in this file instead
9  * of inspecting the structure directly.
10  *
11 */
12
13 #ifndef BM_ITERATORS_H
14 #define BM_ITERATORS_H
15
16 /*Defines for passing to BMIter_New*/
17 #define BM_VERTS                        1
18 #define BM_EDGES                        2
19 #define BM_FACES                        3
20 #define BM_EDGES_OF_VERT                        4
21 #define BM_FACES_OF_VERT                        5
22 #define BM_VERTS_OF_EDGE                        6
23 #define BM_FACES_OF_EDGE                        7
24 #define BM_VERTS_OF_FACE                        8
25 #define BM_FACEVERTS_OF_FACE            9
26 #define BM_EDGES_OF_FACE                        10
27 #define BM_LOOPS_OF_FACE                        11
28 #define BM_LOOPS_OF_VERT                12
29
30 /*Iterator Structure*/
31 typedef struct BMIter{
32         struct BMVert *firstvert, *nextvert, *vdata;
33         struct BMEdge *firstedge, *nextedge, *edata;
34         struct BMLoop *firstloop, *nextloop, *ldata, *l;
35         struct BMFace *firstpoly, *nextpoly, *pdata;
36         struct BMesh *bm;
37         void (*begin)(struct BMIter *iter);
38         void *(*step)(struct BMIter *iter);
39         union{
40                 void            *p;
41                 int                     i;
42                 long            l;
43                 float           f;
44         }filter;
45         int type, count;
46 }BMIter;
47
48 void *BMIter_New(struct BMIter *iter, struct BMesh *bm, int type, void *data);
49 void *BMIter_Step(struct BMIter *iter);
50
51 #endif