<<<<<<< HEAD
# Sprint Planning – Projet PIF

## Légende
AD → Algassimou  
AA → Ayoub  
YB → Youness  

🟥 TODO = À faire  
🟨 DOING = En cours  
🟩 DONE = Terminé  


# ---------------------------------------
# SPRINT 1 (13–20 décembre 2025)
# ---------------------------------------
Objectif : Mise en place des fondations techniques  
(image, binaire, Huffman, canoniques)

| US    | Assigné | Statut |    | Description                                        |
|-------|---------|--------|----|----------------------------------------------------|
| US-D1 | AD      | DONE   | 🟩 | Implémenter BitInputStream (lecture bit par bit)   |
| US-D2 | AD      | DONE   | 🟩 | Implémenter BitOutputStream (écriture bit par bit) |
| US-D3 | AD      | DONE   | 🟩 | Générer les tables de fréquences RGB               |
| US-D4 | AD      | DONE   | 🟩 | Construire l’arbre Huffman                         |
| US-D5 | AA      | DONE   | 🟩 | Générer les codes Huffman                          |
| US-D6 | AA      | DONE   | 🟩 | Générer les codes canoniques                       |
| US-U5 | YB      | DONE   | 🟩 | Chargement d’image via ImageIO                     |
| US-D8 | YB      | DONE   | 🟩 | Structure RGBImage + Pixel                         |
| US-P1 | AA      | DONE   | 🟩 | Interface simple d’affichage des fréquences        |
| US-P2 | AD      | DONE   | 🟩 | Interface simple d’affichage codes Huffman         |
| US-P3 | AA      | DONE   | 🟩 | Interface simple d’affichage codes canoniques      |

## Fichiers à créer – Sprint 1

### `src/mimage/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `Pixel.java` | Représente un pixel (r, g, b) | US-D8 |
| `RGBImage.java` | Matrice de pixels + utilitaires | US-D8, US-U5 |

### `src/mhuffman/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `FrequencyTable.java` | Stocke les fréquences R/G/B | US-D3 |
| `HuffmanNode.java` | Nœud d’arbre Huffman | US-D4 |
| `HuffmanTree.java` | Construction arbre + génération des codes | US-D4, US-D5 |
| `CanonicalCode.java` | Génération des codes canoniques | US-D6 |

### `src/util/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `BitInputStream.java` | Lecture bit par bit | US-D1 |
| `BitOutputStream.java` | Écriture bit par bit | US-D2 |
| `ByteUtils.java` | Conversion int octets | US-D3 et plus |
| `FileUtils.java` | Méthodes utilitaires fichiers | US-U5 (indirect) |

### `src/vconverter/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ConverterWindow.java` | Fenêtre du convertisseur | US-P1, US-P2, US-P3 |
| `PreviewPanel.java` | Aperçu de l’image chargée | US-U5 |
| `FrequencyTablePanel.java` | Affichage fréquences RGB | US-P1 |
| `CodeTablePanel.java` | Affichage Huffman + canoniques | US-P2, US-P3 |

### `src/` (racine)
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ConverterController.java` | Contrôleur du convertisseur | US-U5, US-D3..D6, US-P1..P3 |
| `Convertisseur.java` | Lancement du convertisseur | — |
---

### Résultat attendu Sprint 1
- Compression entièrement fonctionnelle  
- Import d’image opérationnel  
- GUI minimaliste affichant fréquences / Huffman / canoniques  
- Aucun fichier `.pif` encore écrit  


# ---------------------------------------
# SPRINT 2 (20–27 décembre 2025)
# ---------------------------------------
Objectif : Écriture du format `.pif` + finalisation convertisseur

| US         | Assigné | Statut |     | Description |
|------------|---------|--------|-----|-------------|
| US-D2      | AA      | DONE   | 🟩 | Vérifier BitOutputStream avec flux réel |
| US-C5      | AD      | DONE  | 🟩 | Implémenter PIFWriter (header + tables + pixels compressés) |
| US-U6      | AD      | DONE  | 🟩 | Exporter une image en `.pif` |
| US-P1      | AA      | DONE   | 🟩 | Finaliser affichage des fréquences |
| US-P2      | AA      | DONE   | 🟩 | Finaliser affichage codes Huffman |
| US-P3      | AA      | DONE   | 🟩 | Finaliser affichage codes canoniques |
| US-U7      | AD      | DONE  | 🟩 | Implémenter l’aperçu (PreviewPanel) |

## Fichiers à créer – Sprint 2

### `src/mpif/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `PIFWriter.java` | Écriture du fichier `.pif` | US-C5, US-U6 |

### `src/vconverter/` (complément)
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `SavePanel.java` en option a voir  | Interface de sauvegarde `.pif` | US-U6 |


---

### Résultat attendu Sprint 2
- `.pif` généré correctement  
- Convertisseur fonctionnel à 80 %  
- UI complète pour la consultation des tables  
- Aperçu image fonctionnel  


# ---------------------------------------
# SPRINT 3 (27 décembre 2025 – 3 janvier 2026)
# ---------------------------------------
Objectif : Lecture du fichier `.pif` + visualisateur opérationnel

| US       | Assigné | Statut |     | Description |
|----------|---------|--------|-----|-------------|
| US-D7    | AD      | DONE  | 🟩 | Reconstruire les codes canoniques depuis fichier |
| US-D8    | AD      | DONE  | 🟩 | Décoder pixels (implémenter PIFReader) |
| US-U1    | YB      | TODO   | 🟥 | Ouvrir `.pif` via argument ou JFileChooser |
| US-U2    | AA      | TODO   | 🟥 | Afficher l’image dans une fenêtre |
| US-U3    | AA      | TODO   | 🟥 | Centrer l’image si elle est petite |
| US-U4    | AD      | TODO   | 🟥 | Déplacement de l’image à la souris |
| US-P6    | AA      | TODO   | 🟥 | Préparer diagrammes UML |

## Fichiers à créer – Sprint 3

### `src/mpif/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `PIFReader.java` | Lecture et décodage du `.pif` | US-D7, US-D8 |

### `src/vviewer/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ViewerWindow.java` | Fenêtre visualisation | US-U2 |
| `ImagePanel.java` | Affichage + déplacement image | US-U2, US-U3, US-U4 |

### `src/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ViewerController.java` | Contrôle du visualisateur | US-U1..U4 |
| `Viewer.java` | Programme principal du visualisateur | US-U1 |

---

### Résultat attendu Sprint 3
- Visualisateur 100 % fonctionnel  
- Lecture complète du format `.pif`  
- Image affichée, centrée, déplaçable  
- UML structurel prêt pour rapport  


# ---------------------------------------
# SPRINT 4 (3–10 janvier 2026)
# ---------------------------------------
Objectif : Finalisation complète + livrable final

| US         | Assigné | Statut |     | Description |
|------------|---------|--------|-----|-------------|
| US-P5      | AD      | TODO   | 🟥 | Javadoc complète |
| US-P7      | AD      | TODO   | 🟥 | Makefile (compilation + jar + exécution) |
| US-P6      | AA      | TODO   | 🟥 | Finalisation des diagrammes UML |
| Tests      | YB      | TODO   | 🟥 | Tests convertisseur + visualisateur |
| Rapport    | AD/AA/YB| TODO   | 🟥 | Rédaction rapport complet |
| Livraison  | AD/AA/YB| TODO   | 🟥 | Vérification dépôt Gitea + JAR exécutables |

##  Fichiers à créer – Sprint 4

###  Racine creee tout au long 
| Nom du fichier | Rôle |
|----------------|-------|
| `Makefile` | Compilation + génération `.jar` |

### `/doc`
| Nom du fichier | Rôle |
|----------------|-------|
| `rapport.pdf` | Livrable final |
| `UML/___.plantuml` | Sources de diagrammes |

---

### Résultat attendu Sprint 4
- Rapport PDF validé  
- Diagrammes UML terminés  
- Makefile opérationnel  
- Projet soumis proprement sur Gitea  
=======
# Sprint Planning – Projet PIF

## Légende
AD → Algassimou  
AA → Ayoub  
YB → Youness  

🟥 TODO = À faire  
🟨 DOING = En cours  
🟩 DONE = Terminé  


# ---------------------------------------
# SPRINT 1 (13–20 décembre 2025)
# ---------------------------------------
Objectif : Mise en place des fondations techniques  
(image, binaire, Huffman, canoniques)

| US    | Assigné | Statut |    | Description                                        |
|-------|---------|--------|----|----------------------------------------------------|
| US-D1 | AD      | DONE   | 🟩 | Implémenter BitInputStream (lecture bit par bit)   |
| US-D2 | AD      | DONE   | 🟩 | Implémenter BitOutputStream (écriture bit par bit) |
| US-D3 | AD      | DONE   | 🟩 | Générer les tables de fréquences RGB               |
| US-D4 | AD      | DONE   | 🟩 | Construire l’arbre Huffman                         |
| US-D5 | AA      | DONE   | 🟩 | Générer les codes Huffman                          |
| US-D6 | AA      | DONE   | 🟩 | Générer les codes canoniques                       |
| US-U5 | YB      | DONE   | 🟩 | Chargement d’image via ImageIO                     |
| US-D8 | YB      | DONE   | 🟩 | Structure RGBImage + Pixel                         |
| US-P1 | AA      | DONE   | 🟩 | Interface simple d’affichage des fréquences        |
| US-P2 | AD      | DONE   | 🟩 | Interface simple d’affichage codes Huffman         |
| US-P3 | AA      | DONE   | 🟩 | Interface simple d’affichage codes canoniques      |

## Fichiers à créer – Sprint 1

### `src/mimage/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `Pixel.java` | Représente un pixel (r, g, b) | US-D8 |
| `RGBImage.java` | Matrice de pixels + utilitaires | US-D8, US-U5 |

### `src/mhuffman/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `FrequencyTable.java` | Stocke les fréquences R/G/B | US-D3 |
| `HuffmanNode.java` | Nœud d’arbre Huffman | US-D4 |
| `HuffmanTree.java` | Construction arbre + génération des codes | US-D4, US-D5 |
| `CanonicalCode.java` | Génération des codes canoniques | US-D6 |

### `src/util/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `BitInputStream.java` | Lecture bit par bit | US-D1 |
| `BitOutputStream.java` | Écriture bit par bit | US-D2 |
| `ByteUtils.java` | Conversion int octets | US-D3 et plus |
| `FileUtils.java` | Méthodes utilitaires fichiers | US-U5 (indirect) |

### `src/vconverter/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ConverterWindow.java` | Fenêtre du convertisseur | US-P1, US-P2, US-P3 |
| `PreviewPanel.java` | Aperçu de l’image chargée | US-U5 |
| `FrequencyTablePanel.java` | Affichage fréquences RGB | US-P1 |
| `CodeTablePanel.java` | Affichage Huffman + canoniques | US-P2, US-P3 |

### `src/` (racine)
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ConverterController.java` | Contrôleur du convertisseur | US-U5, US-D3..D6, US-P1..P3 |
| `Convertisseur.java` | Lancement du convertisseur | — |
---

### Résultat attendu Sprint 1
- Compression entièrement fonctionnelle  
- Import d’image opérationnel  
- GUI minimaliste affichant fréquences / Huffman / canoniques  
- Aucun fichier `.pif` encore écrit  


# ---------------------------------------
# SPRINT 2 (20–27 décembre 2025)
# ---------------------------------------
Objectif : Écriture du format `.pif` + finalisation convertisseur

| US         | Assigné | Statut |     | Description |
|------------|---------|--------|-----|-------------|
| US-D2      | AA      | DONE   | 🟩 | Vérifier BitOutputStream avec flux réel |
| US-C5      | AD      | DONE  | 🟩 | Implémenter PIFWriter (header + tables + pixels compressés) |
| US-U6      | AD      | DONE  | 🟩 | Exporter une image en `.pif` |
| US-P1      | AA      | DONE   | 🟩 | Finaliser affichage des fréquences |
| US-P2      | AA      | DONE   | 🟩 | Finaliser affichage codes Huffman |
| US-P3      | AA      | DONE   | 🟩 | Finaliser affichage codes canoniques |
| US-U7      | AD      | DONE  | 🟩 | Implémenter l’aperçu (PreviewPanel) |

## Fichiers à créer – Sprint 2

### `src/mpif/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `PIFWriter.java` | Écriture du fichier `.pif` | US-C5, US-U6 |

### `src/vconverter/` (complément)
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `SavePanel.java` en option a voir  | Interface de sauvegarde `.pif` | US-U6 |


---

### Résultat attendu Sprint 2
- `.pif` généré correctement  
- Convertisseur fonctionnel à 80 %  
- UI complète pour la consultation des tables  
- Aperçu image fonctionnel  


# ---------------------------------------
# SPRINT 3 (27 décembre 2025 – 3 janvier 2026)
# ---------------------------------------
Objectif : Lecture du fichier `.pif` + visualisateur opérationnel

| US       | Assigné | Statut |     | Description |
|----------|---------|--------|-----|-------------|
| US-D7    | AD      | DONE  | 🟩 | Reconstruire les codes canoniques depuis fichier |
| US-D8    | AD      | DONE  | 🟩 | Décoder pixels (implémenter PIFReader) |
| US-U1    | YB      | WP     | 🟨 | Ouvrir `.pif` via argument ou JFileChooser |
| US-U2    | AA      | TODO   | 🟥 | Afficher l’image dans une fenêtre |
| US-U3    | AA      | TODO   | 🟥 | Centrer l’image si elle est petite |
| US-U4    | AD      | TODO   | 🟥 | Déplacement de l’image à la souris |
| US-P6    | AA      | TODO   | 🟥 | Préparer diagrammes UML |

## Fichiers à créer – Sprint 3

### `src/mpif/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `PIFReader.java` | Lecture et décodage du `.pif` | US-D7, US-D8 |

### `src/vviewer/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ViewerWindow.java` | Fenêtre visualisation | US-U2 |
| `ImagePanel.java` | Affichage + déplacement image | US-U2, US-U3, US-U4 |

### `src/`
| Nom du fichier | Rôle | US |
|----------------|-------|----|
| `ViewerController.java` | Contrôle du visualisateur | US-U1..U4 |
| `Viewer.java` | Programme principal du visualisateur | US-U1 |

---

### Résultat attendu Sprint 3
- Visualisateur 100 % fonctionnel  
- Lecture complète du format `.pif`  
- Image affichée, centrée, déplaçable  
- UML structurel prêt pour rapport  


# ---------------------------------------
# SPRINT 4 (3–10 janvier 2026)
# ---------------------------------------
Objectif : Finalisation complète + livrable final

| US         | Assigné | Statut |     | Description |
|------------|---------|--------|-----|-------------|
| US-P5      | AD      | TODO   | 🟥 | Javadoc complète |
| US-P7      | AD      | TODO   | 🟥 | Makefile (compilation + jar + exécution) |
| US-P6      | AA      | TODO   | 🟥 | Finalisation des diagrammes UML |
| Tests      | YB      | TODO   | 🟥 | Tests convertisseur + visualisateur |
| Rapport    | AD/AA/YB| TODO   | 🟥 | Rédaction rapport complet |
| Livraison  | AD/AA/YB| TODO   | 🟥 | Vérification dépôt Gitea + JAR exécutables |

##  Fichiers à créer – Sprint 4

###  Racine creee tout au long 
| Nom du fichier | Rôle |
|----------------|-------|
| `Makefile` | Compilation + génération `.jar` |

### `/doc`
| Nom du fichier | Rôle |
|----------------|-------|
| `rapport.pdf` | Livrable final |
| `UML/___.plantuml` | Sources de diagrammes |

---

### Résultat attendu Sprint 4
- Rapport PDF validé  
- Diagrammes UML terminés  
- Makefile opérationnel  
- Projet soumis proprement sur Gitea  
>>>>>>> 40f71dddd52fc07edc1d47d48d56fd65a2a79fe3
