/* ----------------------------------------------------*/
/*   Programme Principal de Lissage Moyen	       */
/*   Fichier: Moyen.c				       */
/*   Auteur: Patrick Bonnin			       */
/*   Date de Creation:		                       */
/* ----------------------------------------------------*/
#include <stdio.h>
#include "Structures.h"
#include "Utilitaires1.h"
#include "LibCouleur.h"

main(int argc, char **argv)
{
    IMAGE	    *image = NULL,*imres = NULL,*imres2;
    int	    nlig, ncol;
    unsigned char	prof = 3;
    FILE	    *fichier = NULL, *fichres = NULL, *fichres2 = NULL;

    /* --- USAGE --- */
    if(argc != 4)
    {
        fprintf(stderr,"USAGE :  PMoyen image immoy \n");
        fprintf(stderr,"image : nom de l'image a lisser \n");
        fprintf(stderr,"immoy : image moyennee \n");
        fprintf(stderr,"Effectue le lissage moyen de l'image source \n");
        system ("PAUSE");
        exit(0);
    }

    /* --- Image Source --- */
    if(!(fichier = fopen(*++argv,"rb")))
    {
        fprintf(stderr,"ouverture du fichier Image %s impossible\n",*argv);
        system ("PAUSE");
        exit(0);
    }

    /* --- Image Resultat --- */
    if(!(fichres = fopen(*++argv,"wb")))
    {
        fprintf(stderr,"ouverture du fichier Image Resultat %s impossible\n",*argv);
        system ("PAUSE");
        exit(0);
    }

    /* --- Image Resultat2 --- */
    if(!(fichres2 = fopen(*++argv,"wb")))
    {
        fprintf(stderr,"ouverture du fichier Image Resultat2 %s impossible\n",*argv);
        system ("PAUSE");
        exit(0);
    }

    /* --- Recuperation de la Taille de l'Image --- */
    Lecture_EntetePPM(fichier, &ncol, &nlig);
    fprintf(stderr, "Taille de l'Image %d lignes x %d colonnes\n", nlig,ncol);

    /* --- Creation des Images --- */
    if (crea_IMAGE(image) == NULL)	/* creation de la structure image */
    {
        fprintf(stderr,"Erreur d'Allocation Memoire Structure Image : Moyen \n");
        system ("PAUSE");
        exit (0);
    }
    Creation_Image (image, &nlig, &ncol, &prof);

    if (crea_IMAGE(imres) == NULL) /* creation de la structure image resultat */
    {
        fprintf(stderr,"Erreur d'Allocation Memoire Structure Image Resultat: Moyen \n");
        system ("PAUSE");
        exit (0);
    }
    Creation_Image (imres, &nlig, &ncol, &prof);
    if (crea_IMAGE(imres2) == NULL) /* creation de la structure image resultat */
    {
        fprintf(stderr,"Erreur d'Allocation Memoire Structure Image Resultat: Moyen \n");
        system ("PAUSE");
        exit (0);
    }
    Creation_Image (imres2, &nlig, &ncol, &prof);

/* --- Lecture du Fichier Image et
   Remplissage du champ de Donnees --- */
  Lecture_Image(fichier,image);

/* --- Lissage Moyen --- */
  Couleur (image, imres, imres2);

/* --- Enregistrement de l'Image Resultat --- */
  fprintf(fichres,"P6\n%d %d\n255\n",(int)ncol, (int)nlig);
  EnregistreImage(fichres, imres);

/* --- Enregistrement de l'Image Resultat --- */
  fprintf(fichres2,"P6\n%d %d\n255\n",(int)ncol, (int)nlig);
  EnregistreImage(fichres2, imres2);


/* --- Liberation de l'Image --- */
  Libere_Image(image);
  Libere_Image(imres);
  Libere_Image(imres2);
  fprintf(stderr,"Fin de l'Operateur Moyen\n");
  system("PAUSE");
}
