#include "vizual.h"
/* #include "cell_table.h"  (in vizual.h)  */


/* place vertex data into CUBEFAX structure */
void fill_cfax(Cube_data *Cube, int flag, int index, float 
               TEMP_VERT[13][3], float TEMP_NORM[13][3])
{
    int	p;/*loop variable*/
    int n;/*index into TEMP_VERT array*/
    int num = 0;/*polygon number index into TEMP_NORM for flat shading*/
    cube_info *CUBEFAX;

    CUBEFAX = Cube->data;	/* make old code work w/ new structure */

    /* DEBUG 
    fprintf(stderr,"%d npoly  %d flag\n",CUBEFAX[NTHRESH].npoly,flag);
     END DEBUG */

    CUBEFAX[NTHRESH].npoly = cell_table[index].npolys;

    /* this is for gradient shading (3 normals per polygon) */
    if (flag > 1)
    {
	for (p = 0, num = 0 ; num < CUBEFAX[NTHRESH].npoly ; num++)
	{
	    poly_info *CP;

	    /* NOTE: normals recorded by edge */

	    /* avoid a little redundant calculation:  dpg*/
	    CP = &(CUBEFAX[NTHRESH].poly[num]);	

	    n = cell_table[index].polys[p];
	    CP->v1[0] = TEMP_VERT[n][0];
	    CP->v1[1] = TEMP_VERT[n][1];
	    CP->v1[2] = TEMP_VERT[n][2];
	    CP->n1[0] = (TEMP_NORM[n][0] + 1.) * 127;
	    CP->n1[1] = (TEMP_NORM[n][1] + 1.) * 127;
	    CP->n1[2] = (TEMP_NORM[n][2] + 1.) * 127;
	    p++;

	    n = cell_table[index].polys[p];
	    CP->v2[0] = TEMP_VERT[n][0];
	    CP->v2[1] = TEMP_VERT[n][1];
	    CP->v2[2] = TEMP_VERT[n][2];
	    CP->n2[0] = (TEMP_NORM[n][0] + 1.) * 127;
	    CP->n2[1] = (TEMP_NORM[n][1] + 1.) * 127;
	    CP->n2[2] = (TEMP_NORM[n][2] + 1.) * 127;
	    p++;

	    n = cell_table[index].polys[p];
	    CP->v3[0] = TEMP_VERT[n][0];
	    CP->v3[1] = TEMP_VERT[n][1];
	    CP->v3[2] = TEMP_VERT[n][2];
	    CP->n3[0] = (TEMP_NORM[n][0] + 1.) * 127;
	    CP->n3[1] = (TEMP_NORM[n][1] + 1.) * 127;
	    CP->n3[2] = (TEMP_NORM[n][2] + 1.) * 127;
	    p++;
	}
    }
    else
    if (flag == 1) /* this is for flat shading (NOTE: 1 normal per polygon)*/
    {
	for (p = 0, num = 0 ; num < CUBEFAX[NTHRESH].npoly ; num++)
	{
	    poly_info *CP;

	    /* avoid a little redundant calculation:  dpg*/
	    CP = &(CUBEFAX[NTHRESH].poly[num]);	

	    n = cell_table[index].polys[p];
	    CP->v1[0] = TEMP_VERT[n][0];
	    CP->v1[1] = TEMP_VERT[n][1];
	    CP->v1[2] = TEMP_VERT[n][2];
	    p++;

	    n = cell_table[index].polys[p];
	    CP->v2[0] = TEMP_VERT[n][0];
	    CP->v2[1] = TEMP_VERT[n][1];
	    CP->v2[2] = TEMP_VERT[n][2];
	    p++;

	    n = cell_table[index].polys[p];
	    CP->v3[0] = TEMP_VERT[n][0];
	    CP->v3[1] = TEMP_VERT[n][1];
	    CP->v3[2] = TEMP_VERT[n][2];
	    p++;
	    /* NOTE: in calc_fnorm() flat shaded normals recorded by polygon*/
	    /*now assigning the normal for this polygon*/
	    CP->n1[0] = (TEMP_NORM[num][0] + 1.) * 127;
	    CP->n1[1] = (TEMP_NORM[num][1] + 1.) * 127;
	    CP->n1[2] = (TEMP_NORM[num][2] + 1.) * 127;
	    
	}
    }    
}
