#include "Memoire1.h"

Piquesel **bina(char* entree,int taille0,int taille1){
	FILE* fichier = NULL;
	char chaine[20] = "";
	int taille[2] = {0};
	taille[0]=taille0;
	taille[1]=taille1;
	int i,j,l;
	Piquesel Pix1;
	fichier = fopen(entree, "r+");
	
	fgets(chaine, 20, fichier);
	fgets(chaine, 20, fichier);
	fgets(chaine, 20, fichier);

//On créé un tableau de la taille de l'image	
	Piquesel **tableau = malloc(sizeof(Piquesel*) * taille[1]); //[taille[0]][taille[1]];

	
	for (i=0 ; i<taille[1] ; i++){
		tableau[i] = malloc(sizeof(Piquesel) * taille[0]);
		for (j=0; j<taille[0]*3; j++){
			fgets(chaine, 20, fichier);
			l= atoi(chaine);
			switch(j%3){
				case 0 :
					Pix1.Red=l;//On enregistre le rouge d'un pixel dans une variable
				break;
				case 1 :
					Pix1.Green=l;//On enregistre le vert d'un pixel dans une variable
				break;
				case 2 :
					Pix1.Blue=l;//On enregistre le bleu d'un pixel dans une variable
					tableau[i][j/3]=Pix1;//on réécrit les 3 couleurs dans la case du tableau
				break;
			}
		}	
	}
	fclose(fichier);
	return tableau;
}



void TablToppm(Piquesel** tableau,char* sortie,int taille0,int taille1){
	FILE* image = NULL;
	int i,j;
	image = fopen(sortie,"w+");
	int taille[2] = {0};
	taille[0]=taille0;
	taille[1]=taille1;
//On écrit dans un nouveau fichier les données de base d'une image PPM
	fprintf(image, "P3\n");
	fprintf(image, "%d %d\n", taille[0],taille[1]);
	fprintf(image, "255\n");

//On réécrit chaque couleur dans le nouveau fichier
		for (i=0 ; i<taille[1] ; i++){
			for (j=0; j<taille[0]; j++){
					fprintf(image, "%d\n", (tableau[i][j]).Red);
					fprintf(image, "%d\n", (tableau[i][j]).Green);
					fprintf(image, "%d\n", (tableau[i][j]).Blue);	
			}
		}
    fclose(image);
}

int Taille0(char* entree){
	FILE* fichier = NULL;
	int taille[2] = {0};
	char chaine[20] = "";
	
	fichier = fopen(entree, "r+");
	fgets(chaine, 20, fichier);
	
	//On récupère la taille de l'image
	fscanf(fichier, "%d %d", &taille[0], &taille[1]);
	return taille[0];
}

int Taille1(char* entree){
	FILE* fichier = NULL;
	int taille[2] = {0};
	char chaine[20] = "";
	
	fichier = fopen(entree, "r+");
	fgets(chaine, 20, fichier);
	
	//On récupère la taille de l'image
	fscanf(fichier, "%d %d", &taille[0], &taille[1]);
	return taille[1];
}
