2.5: code consistency
[blender-staging.git] / source / blender / editors / include / ED_retopo.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) 2006 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 ED_RETOPO_H
31 #define ED_RETOPO_H
32
33 #include "DNA_vec_types.h"
34
35 /* For bglMats */
36 #include "BIF_glutil.h"
37
38 struct EditVert;
39 struct Mesh;
40 struct View3D;
41
42 typedef struct RetopoViewData {
43         bglMats mats;
44
45         char queue_matrix_update;
46 } RetopoViewData;
47
48 typedef struct RetopoPaintPoint {
49         struct RetopoPaintPoint *next, *prev;
50         vec2s loc;
51         short index;
52         float co[3];
53         struct EditVert *eve;
54 } RetopoPaintPoint;
55
56 typedef struct RetopoPaintLine {
57         struct RetopoPaintLine *next, *prev;
58         ListBase points;
59         ListBase hitlist; /* RetopoPaintHit */
60         RetopoPaintPoint *cyclic;
61 } RetopoPaintLine;
62
63 typedef struct RetopoPaintSel {
64         struct RetopoPaintSel *next, *prev;
65         RetopoPaintLine *line;
66         char first;
67 } RetopoPaintSel;
68
69 typedef struct RetopoPaintData {
70         char in_drag;
71         short sloc[2];
72
73         ListBase lines;
74         ListBase intersections; /* RetopoPaintPoint */
75
76         short seldist;
77         RetopoPaintSel nearest;
78         
79         struct View3D *paint_v3d;
80 } RetopoPaintData;
81
82 RetopoPaintData *get_retopo_paint_data(void);
83
84 char retopo_mesh_check(void);
85 char retopo_curve_check(void);
86
87 void retopo_end_okee(void);
88
89 void retopo_free_paint_data(RetopoPaintData *rpd);
90 void retopo_free_paint(void);
91
92 char retopo_mesh_paint_check(void);
93 void retopo_paint_view_update(struct View3D *v3d);
94 void retopo_force_update(void);
95 void retopo_paint_toggle(void*,void*);
96 char retopo_paint(const unsigned short event);
97 void retopo_draw_paint_lines(void);
98 RetopoPaintData *retopo_paint_data_copy(RetopoPaintData *rpd);
99
100 void retopo_toggle(void*,void*);
101 void retopo_do_vert(struct View3D *v3d, float *v);
102 void retopo_do_all(void);
103 void retopo_do_all_cb(void *, void *);
104 void retopo_queue_updates(struct View3D *v3d);
105
106 void retopo_matrix_update(struct View3D *v3d);
107
108 void retopo_free_view_data(struct View3D *v3d);
109
110 #endif
111