Reverted incorrect merge (missing files)
[blender.git] / source / blender / radiosity / extern / include / radio.h
1 /* *************************************** 
2
3
4
5     radio.h     nov/dec 1992
6         revised for Blender may 1999
7
8    $Id$
9   
10   ***** BEGIN GPL LICENSE BLOCK *****
11  
12   This program is free software; you can redistribute it and/or
13   modify it under the terms of the GNU General Public License
14   as published by the Free Software Foundation; either version 2
15   of the License, or (at your option) any later version.
16  
17   This program is distributed in the hope that it will be useful,
18   but WITHOUT ANY WARRANTY; without even the implied warranty of
19   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20   GNU General Public License for more details.
21  
22   You should have received a copy of the GNU General Public License
23   along with this program; if not, write to the Free Software Foundation,
24   Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25  
26   The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
27   All rights reserved.
28  
29   The Original Code is: all of this file.
30  
31   Contributor(s): none yet.
32  
33   ***** END GPL LICENSE BLOCK *****
34  */
35
36 #ifndef RADIO_H
37 #define RADIO_H 
38 #define RADIO_H 
39
40 /* type include */
41 #include "radio_types.h"
42
43 extern RadGlobal RG;
44 struct View3D;
45 struct Scene;
46
47 /* radfactors.c */
48 extern float calcStokefactor(RPatch *shoot, RPatch *rp, RNode *rn, float *area);
49 extern void calcTopfactors(void);
50 void calcSidefactors(void);
51 extern void initradiosity(void);
52 extern void rad_make_hocos(RadView *vw);
53 extern void hemizbuf(RadView *vw);
54 extern int makeformfactors(RPatch *shoot);
55 extern void applyformfactors(RPatch *shoot);
56 extern RPatch *findshootpatch(void);
57 extern void setnodeflags(RNode *rn, int flag, int set);
58 extern void backface_test(RPatch *shoot);
59 extern void clear_backface_test(void);
60 extern void progressiverad(void);
61 extern void minmaxradelem(RNode *rn, float *min, float *max);
62 extern void minmaxradelemfilt(RNode *rn, float *min, float *max, float *errmin, float *errmax);
63 extern void subdivideshootElements(int it);
64 extern void subdivideshootPatches(int it);
65 extern void inithemiwindows(void);
66 extern void closehemiwindows(void);
67 void rad_init_energy(void);
68
69 /* radio.c */
70 void freeAllRad(struct Scene *scene);
71 int rad_phase(void);
72 void rad_status_str(char *str);
73 void rad_printstatus(void);
74 void rad_setlimits(struct Scene *scene);
75 void set_radglobal(struct Scene *scene);
76 void add_radio(struct Scene *scene);
77 void delete_radio(struct Scene *scene);
78 int rad_go(struct Scene *scene);
79 void rad_subdivshootpatch(struct Scene *scene);
80 void rad_subdivshootelem(struct Scene *scene);
81 void rad_limit_subdivide(struct Scene *scene);     
82
83 /* radnode.c */
84 extern void setnodelimit(float limit);
85 extern float *mallocVert(void);
86 extern float *callocVert(void);
87 extern void freeVert(float *vert);
88 extern int totalRadVert(void);
89 extern RNode *mallocNode(void);
90 extern RNode *callocNode(void);
91 extern void freeNode(RNode *node);
92 extern void freeNode_recurs(RNode *node);
93 extern RPatch *mallocPatch(void);
94 extern RPatch *callocPatch(void);
95 extern void freePatch(RPatch *patch);
96 extern void replaceAllNode(RNode *, RNode *);
97 extern void replaceAllNodeInv(RNode *neighb, RNode *old);
98 extern void replaceAllNodeUp(RNode *neighb, RNode *old);
99 extern void replaceTestNode(RNode *, RNode **, RNode *, int , float *);
100 extern void free_fastAll(void);
101
102 /* radnode.c */
103 extern void start_fastmalloc(char *str);
104 extern int setvertexpointersNode(RNode *neighb, RNode *node, int level, float **v1, float **v2);
105 extern float edlen(float *v1, float *v2);
106 extern void deleteNodes(RNode *node);
107 extern void subdivideTriNode(RNode *node, RNode *edge);
108 extern void subdivideNode(RNode *node, RNode *edge);
109 extern int comparelevel(RNode *node, RNode *nb, int level);
110
111 /* radpreprocess.c */
112 extern void splitconnected(void);
113 extern int vergedge(const void *v1,const void *v2);
114 extern void addedge(float *v1, float *v2, EdSort *es);
115 extern void setedgepointers(void);
116 extern void rad_collect_meshes(struct Scene *scene, struct View3D *v3d);
117 extern void countelem(RNode *rn);
118 extern void countglobaldata(void);
119 extern void addelem(RNode ***el, RNode *rn, RPatch *rp);
120 extern void makeGlobalElemArray(void);
121 extern void remakeGlobaldata(void);
122 extern void splitpatch(RPatch *old);
123 extern void addpatch(RPatch *old, RNode *rn);
124 extern void converttopatches(void);
125 extern void make_elements(void);
126 extern void subdividelamps(void);
127 extern void maxsizePatches(void);
128 extern void subdiv_elements(void);
129
130 /* radpostprocess.c */
131 void addaccu(register char *z, register char *t);
132 void addaccuweight(register char *z, register char *t, int w);
133 void triaweight(Face *face, int *w1, int *w2, int *w3);
134 void init_face_tab(void);
135 Face *addface(void);
136 Face *makeface(float *v1, float *v2, float *v3, float *v4, RNode *rn);
137 void anchorQuadface(RNode *rn, float *v1, float *v2, float *v3, float *v4, int flag);
138 void anchorTriface(RNode *rn, float *v1, float *v2, float *v3, int flag);
139 float *findmiddlevertex(RNode *node, RNode *nb, float *v1, float *v2);
140 void make_face_tab(void);
141 void filterFaces(void);
142 void calcfiltrad(RNode *rn, float *cd);
143 void filterNodes(void);
144 void removeEqualNodes(short limit);
145 void rad_addmesh(struct Scene *scene);
146 void rad_replacemesh(struct Scene *scene);         
147
148 /* raddisplay.c */
149 extern char calculatecolor(float col);
150 extern void make_node_display(void);
151 extern void drawnodeWire(RNode *rn);
152 extern void drawsingnodeWire(RNode *rn);
153 extern void drawnodeSolid(RNode *rn);
154 extern void drawnodeGour(RNode *rn);
155 extern void drawpatch(RPatch *patch, unsigned int col);
156 extern void drawfaceGour(Face *face);
157 extern void drawfaceSolid(Face *face);
158 extern void drawfaceWire(Face *face);
159 extern void drawsquare(float *cent, float size, short cox, short coy);
160 extern void drawlimits(void);
161 extern void setcolNode(RNode *rn, unsigned int *col);
162 extern void pseudoAmb(void);
163 extern void rad_forcedraw(void);
164 extern void drawpatch_ext(RPatch *patch, unsigned int col);
165 extern void RAD_drawall(int depth_is_on);
166
167 /* radrender.c */
168 struct Render;
169 extern void do_radio_render(struct Render *re);
170 void end_radio_render(void);
171
172 #endif /* RADIO_H */
173