26 free_points[i] = &temp_points[i];
135 on_b =
i2fl(on_pnt->
b);
136 off_b =
i2fl(off_pnt->
b);
138 tmp->
b =
ubyte(
fl2i(on_b + (off_b-on_b) * ratio));
141 float on_r, on_b, on_g, onspec_r, onspec_g, onspec_b;
142 float off_r, off_b, off_g, offspec_r, offspec_g, offspec_b;
144 on_r =
i2fl(on_pnt->
r);
145 off_r =
i2fl(off_pnt->
r);
147 on_g =
i2fl(on_pnt->
g);
148 off_g =
i2fl(off_pnt->
g);
150 on_b =
i2fl(on_pnt->
b);
151 off_b =
i2fl(off_pnt->
b);
164 tmp->
r =
ubyte(
fl2i(on_r + (off_r-on_r) * ratio));
165 tmp->
g =
ubyte(
fl2i(on_g + (off_g-on_g) * ratio));
166 tmp->
b =
ubyte(
fl2i(on_b + (off_b-on_b) * ratio));
182 on_a =
i2fl(on_pnt->
a);
183 off_a =
i2fl(off_pnt->
a);
185 tmp->
a =
ubyte(
fl2i(on_a + (off_a-on_a) * ratio));
202 for (plane_flag=1;plane_flag<=
CC_OFF_USER;plane_flag<<=1)
203 if (codes_or & plane_flag) {
205 if ((*p0)->codes & plane_flag)
210 *p1 =
clip_edge(plane_flag,*p0,*p1,flags);
211 codes_or = (
unsigned char)((*p0)->codes | (*p1)->codes);
234 for (i=1;i<=*nv;i++) {
236 if (src[i]->codes & plane_flag) {
238 if (! (src[i-1]->codes & plane_flag)) {
240 *dest =
clip_edge(plane_flag,src[i-1],src[i],flags);
241 cc->
cc_or |= (*dest)->codes;
242 cc->
cc_and &= (*dest)->codes;
246 if (! (src[i+1]->codes & plane_flag)) {
248 *dest =
clip_edge(plane_flag,src[i+1],src[i],flags);
249 cc->
cc_or |= (*dest)->codes;
250 cc->
cc_and &= (*dest)->codes;
268 return (dest-save_dest);
279 for (plane_flag=1;plane_flag<=
CC_OFF_USER;plane_flag<<=1)
281 if (cc->
cc_or & plane_flag) {
283 *nv =
clip_plane(plane_flag,src,dest,nv,cc,flags);
288 t =
src; src = dest; dest =
t;
void init_free_points(void)
struct vec3d::@225::@227 xyz
void free_temp_point(vertex *p)
ubyte g3_code_vertex(vertex *point)
vertex * free_points[TMAP_MAX_VERTS]
void vm_vec_add2(vec3d *dest, const vec3d *src)
void vm_vec_scale(vec3d *dest, float s)
#define TMAP_FLAG_GOURAUD
GLboolean GLboolean GLboolean GLboolean a
int clip_plane(int plane_flag, vertex **src, vertex **dest, int *nv, ccodes *cc, uint flags)
Clips a plane to the viewing pyramid.
vertex * clip_edge(int plane_flag, vertex *on_pnt, vertex *off_pnt, uint flags)
Clips an edge against one plane.
vertex ** clip_polygon(vertex **src, vertex **dest, int *nv, ccodes *cc, uint flags)
Clips a polygon to the viewing pyramid.
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
GLboolean GLboolean GLboolean b
#define TMAP_FLAG_TEXTURED
vertex temp_points[TMAP_MAX_VERTS]
float vm_vec_dot(const vec3d *v0, const vec3d *v1)
vertex * get_temp_point()
vec3d G3_user_clip_normal
void clip_line(vertex **p0, vertex **p1, ubyte codes_or, uint flags)
Clips a line to the viewing pyramid.