#include "main.h"


void lecture_texture(FILE *file)
{
	int i, type, maillage;
	double x, y, z, t;
	
	fscanf(file, "%d \n", &type);
	fscanf(file, "%d \n", &maillage);
	fscanf(file, "%d \n", &nb_sommets);
	B = nb_sommets/2;
	nb_sommets = CARRE(nb_sommets);
	
	liste_sommets = (point4d_t *)malloc(nb_sommets * sizeof(point4d_t));
	
	for (i=0; i<nb_sommets; i++)
	{
		fscanf(file, "%lf %lf %lf %lf\n", &x, &y, &z, &t);
		liste_sommets[i].x = x;
		liste_sommets[i].y = y;
		liste_sommets[i].z = z;
		liste_sommets[i].t = t;
	}

}


void ecriture(FILE *file)
{
	int i;
	
	fprintf(file, "%d\n", 4);
	fprintf(file, "%d\n", 1);
	fprintf(file, "%d\n", (int)sqrt(nb_sommets));
	for (i=0; i<nb_sommets; i++)
	{
		fprintf(file, "%f %f %f %f\n", liste_sommets[i].x, liste_sommets[i].y, liste_sommets[i].z, liste_sommets[i].t);
	}

}


int main(int argc, char **argv)
{
	char fentree[100], type_filtre[5];
	FILE *file;
	int indic = 0, i=0, type;
	char *name;
	double min=500, max=0;
	
	while ( ++i < argc )
	{
		if (strcmp(argv[i], "-f") == 0)
		{
			strcpy(fentree, argv[++i]);
			indic += 1;
		}
		if (strcmp(argv[i], "-t") == 0)
		{
			strcpy(type_filtre, argv[++i]);
			if (strcmp(type_filtre, "AR") == 0)
				type = AR;
			if (strcmp(type_filtre, "PB") == 0)
				type = PB;
			if (strcmp(type_filtre, "KH") == 0)
				type = KH;
			indic += 1;
		}
	}
	if (indic != 2)
	{
		fprintf(stderr, "Usage : ./filtrage -f input -t type_filtre\n");
		fprintf(stderr, "		type_filtre :	AR : Aller-retour dans l'espace des harmoniques spheriques\n");
		fprintf(stderr, "						PB : Filtre passe-bas trapezoidal\n");
		fprintf(stderr, "						KH : Filtre de forme 1/k^H\n");
		exit(1);
	}
		
	file = fopen(fentree, "r");
	if (!file)
	{
		fprintf(stderr, "Erreur d'ouverture du fichier %s\n", fentree);
		exit(1);
	}
	
	printf("Lecture de la texture\n");
	lecture_texture(file);
	fclose(file);
	printf("B = %d\n", B);
	
	convolution(type);
	//convolution_S2Kit();
	//inv_filtre();
	
	for(i=0; i<nb_sommets; i++)
	{
		if (liste_sommets[i].t >= max)
			max = liste_sommets[i].t;
		if (liste_sommets[i].t <= min)
			min = liste_sommets[i].t;
	}
	for(i=0; i<nb_sommets-1; i++)
		liste_sommets[i].t = (liste_sommets[i].t-min)/(max-min);
	
	printf("Ecriture de la texture filtree\n");
	name = strcat(fentree,"_filtre");
	file = fopen(name, "w");
	ecriture(file);

	return 0;
}
