Code cleanup: remove unused shaded draw mode code.
[blender.git] / source / blender / blenkernel / BKE_displist.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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
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
31 #ifndef BKE_DISPLIST_H
32 #define BKE_DISPLIST_H
33
34 /** \file BKE_displist.h
35  *  \ingroup bke
36  *  \brief display list (or rather multi purpose list) stuff.
37  */
38 #include "DNA_customdata_types.h"
39 #include "BKE_customdata.h"
40
41 /* dl->type */
42 #define DL_POLY                 0
43 #define DL_SEGM                 1
44 #define DL_SURF                 2
45 #define DL_INDEX3               4
46 #define DL_INDEX4               5
47 #define DL_VERTCOL              6
48 #define DL_VERTS                                7
49
50 /* dl->flag */
51 #define DL_CYCL_U               1
52 #define DL_CYCL_V               2
53 #define DL_FRONT_CURVE  4
54 #define DL_BACK_CURVE   8
55
56
57 /* prototypes */
58
59 struct Base;
60 struct Scene;
61 struct Object;
62 struct Curve;
63 struct ListBase;
64 struct Material;
65 struct Bone;
66 struct Mesh;
67 struct EditMesh;
68 struct DerivedMesh;
69
70 /* used for curves, nurbs, mball, importing */
71 typedef struct DispList {
72         struct DispList *next, *prev;
73         short type, flag;
74         int parts, nr;
75         short col, rt;              /* rt used by initrenderNurbs */
76         float *verts, *nors;
77         int *index;
78         unsigned int *col1, *col2;
79         int charidx;
80         int totindex;                           /* indexed array drawing surfaces */
81
82         unsigned int *bevelSplitFlag;
83 } DispList;
84
85 extern void copy_displist(struct ListBase *lbn, struct ListBase *lb);
86 extern void free_disp_elem(DispList *dl);
87 extern DispList *find_displist_create(struct ListBase *lb, int type);
88 extern DispList *find_displist(struct ListBase *lb, int type);
89 extern void addnormalsDispList(struct ListBase *lb);
90 extern void count_displist(struct ListBase *lb, int *totvert, int *totface);
91 extern void freedisplist(struct ListBase *lb);
92 extern int displist_has_faces(struct ListBase *lb);
93
94 extern void makeDispListSurf(struct Scene *scene, struct Object *ob, struct ListBase *dispbase, struct DerivedMesh **derivedFinal, int forRender, int forOrco);
95 extern void makeDispListCurveTypes(struct Scene *scene, struct Object *ob, int forOrco);
96 extern void makeDispListCurveTypes_forRender(struct Scene *scene, struct Object *ob, struct ListBase *dispbase, struct DerivedMesh **derivedFinal, int forOrco);
97 extern void makeDispListCurveTypes_forOrco(struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
98 extern void makeDispListMBall(struct Scene *scene, struct Object *ob);
99 extern void makeDispListMBall_forRender(struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
100
101 int surfindex_displist(DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4);
102 void filldisplist(struct ListBase *dispbase, struct ListBase *to, int flipnormal);
103
104 float calc_taper(struct Scene *scene, struct Object *taperobj, int cur, int tot);
105
106 /* add Orco layer to the displist object which has got derived mesh and return orco */
107 float *makeOrcoDispList(struct Scene *scene, struct Object *ob, struct DerivedMesh *derivedFinal, int forRender);
108
109 #endif
110