# Class ConverterController

java.lang.Object
fr.iutfbleau.sae.ConverterController

public class ConverterController extends Object
Controleur pour la conversion d'images au format PIF. Gere le chargement des images, le calcul des frequences, la generation des codes de Huffman et la sauvegarde au format PIF.

## Constructor Summary

Constructors
Constructor
Description
`ConverterController(ConverterWindow fen, String in, String out)`
Construit un nouveau controleur de conversion.

## Method Summary

Modifier and Type
Method
Description
`void`
`computeCanonical()`
Genere les codes canoniques a partir des codes de Huffman.
`void`
`computeFrequencies()`
Calcule les frequences d'apparition de chaque valeur RGB dans l'image.
`void`
`computeHuffman()`
Genere les arbres de Huffman pour chaque composante RGB.
`void`
`conversionProcess()`
Lance le processus complet de conversion d'une image au format PIF.
`RGBImage`
`getImage()`
Retourne l'image actuellement chargee.
`void`
`loadImage(File file)`
Charge une image depuis un fichier et la convertit en RGBImage.
`void`
`saveAsPIF(String pathfile)`
Sauvegarde l'image au format PIF.
`void`
`saveViaBtn()`
Gere la sauvegarde via le bouton de l'interface.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ConverterController

public ConverterController(ConverterWindow fen, String in, String out)
Construit un nouveau controleur de conversion.

Parameters:
  `fen` - la fenetre de l'interface graphique
  `in` - le chemin du fichier d'entree (peut etre null)
  `out` - le chemin du fichier de sortie (peut etre null)

## Method Details

### loadImage

public void loadImage(File file)
Charge une image depuis un fichier et la convertit en RGBImage. Extrait les composantes RGB de chaque pixel et met a jour l'interface.

Parameters:
  `file` - le fichier image a charger

### computeFrequencies

public void computeFrequencies()
Calcule les frequences d'apparition de chaque valeur RGB dans l'image. Met a jour l'interface avec les tables de frequences calculees.

### computeHuffman

public void computeHuffman()
Genere les arbres de Huffman pour chaque composante RGB. Cree les codes binaires optimaux bases sur les frequences calculees. Met a jour l'interface avec les codes de Huffman generes.

### computeCanonical

public void computeCanonical()
Genere les codes canoniques a partir des codes de Huffman. Les codes canoniques sont une forme normalisee des codes de Huffman qui facilite le stockage et le decodage. Met a jour l'interface avec les codes canoniques generes.

### saveAsPIF

public void saveAsPIF(String pathfile)
Sauvegarde l'image au format PIF. Verifie que l'image et les codes canoniques sont disponibles avant d'effectuer la sauvegarde.

Parameters:
  `pathfile` - le chemin du fichier de sortie

### saveViaBtn

public void saveViaBtn()
Gere la sauvegarde via le bouton de l'interface. Si un chemin de sortie est defini, sauvegarde directement. Sinon, ouvre un selecteur de fichier pour que l'utilisateur choisisse l'emplacement de sauvegarde. La sauvegarde est effectuee dans un thread separe pour ne pas bloquer l'interface graphique.

### conversionProcess

public void conversionProcess()
Lance le processus complet de conversion d'une image au format PIF. Etapes : 1. Chargement de l'image (depuis un fichier ou via selecteur) 2. Calcul des frequences 3. Generation des codes de Huffman 4. Generation des codes canoniques 5. Sauvegarde (automatique ou via bouton selon les parametres)

### getImage

public RGBImage getImage()
Retourne l'image actuellement chargee.

Returns:
  l'image RGB chargee, ou null si aucune image n'est chargee