interface pour les code c bon
This commit is contained in:
+7
-7
@@ -27,8 +27,8 @@ Objectif : Mise en place des fondations techniques
|
|||||||
| US-U5 | YB | DOING | 🟨 | Chargement d’image via ImageIO |
|
| US-U5 | YB | DOING | 🟨 | Chargement d’image via ImageIO |
|
||||||
| US-D8 | YB | TODO | 🟥 | Structure RGBImage + Pixel |
|
| US-D8 | YB | TODO | 🟥 | Structure RGBImage + Pixel |
|
||||||
| US-P1 | AA | TODO | 🟥 | Interface simple d’affichage des fréquences |
|
| US-P1 | AA | TODO | 🟥 | Interface simple d’affichage des fréquences |
|
||||||
| US-P2 | AD | DOING | 🟨 | Interface simple d’affichage Huffman |
|
| US-P2 | AD | DONE | 🟩 | Interface simple d’affichage codes Huffman |
|
||||||
| US-P3 | AA | TODO | 🟥 | Interface simple d’affichage canoniques |
|
| US-P3 | AA | TODO | 🟥 | Interface simple d’affichage codes canoniques |
|
||||||
|
|
||||||
## Fichiers à créer – Sprint 1
|
## Fichiers à créer – Sprint 1
|
||||||
|
|
||||||
@@ -83,14 +83,14 @@ Objectif : Écriture du format `.pif` + finalisation convertisseur
|
|||||||
|
|
||||||
| US | Assigné | Statut | | Description |
|
| US | Assigné | Statut | | Description |
|
||||||
|------------|---------|--------|-----|-------------|
|
|------------|---------|--------|-----|-------------|
|
||||||
| US-D2 | AD | TODO | 🟥 | Vérifier BitOutputStream avec flux réel |
|
| US-D2 | AA | TODO | 🟥 | Vérifier BitOutputStream avec flux réel |
|
||||||
| US-C5 | AD | TODO | 🟥 | Implémenter PIFWriter (header + tables + pixels compressés) |
|
| US-C5 | AD | TODO | 🟥 | Implémenter PIFWriter (header + tables + pixels compressés) |
|
||||||
| US-U6 | AD | TODO | 🟥 | Exporter une image en `.pif` |
|
| US-U6 | AD | TODO | 🟥 | Exporter une image en `.pif` |
|
||||||
| US-P1 | AA | TODO | 🟥 | Finaliser affichage des fréquences |
|
| US-P1 | AA | TODO | 🟥 | Finaliser affichage des fréquences |
|
||||||
| US-P2 | YB | TODO | 🟥 | Finaliser affichage codes Huffman |
|
| US-P2 | AA | TODO | 🟥 | Finaliser affichage codes Huffman |
|
||||||
| US-P3 | AA | TODO | 🟥 | Finaliser affichage codes canoniques |
|
| US-P3 | AA | TODO | 🟥 | Finaliser affichage codes canoniques |
|
||||||
| US-U7 | YB | TODO | 🟥 | Implémenter l’aperçu (PreviewPanel) |
|
| US-U7 | AD | TODO | 🟥 | Implémenter l’aperçu (PreviewPanel) |
|
||||||
| US-D3..D6 | YB | TODO | 🟥 | Lier interface convertisseur ↔ compression |
|
| US-D3..D6 | YB | TODO | 🟥 | Lier interface convertisseur -> compression |
|
||||||
|
|
||||||
## Fichiers à créer – Sprint 2
|
## Fichiers à créer – Sprint 2
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ Objectif : Écriture du format `.pif` + finalisation convertisseur
|
|||||||
### `src/vconverter/` (complément)
|
### `src/vconverter/` (complément)
|
||||||
| Nom du fichier | Rôle | US |
|
| Nom du fichier | Rôle | US |
|
||||||
|----------------|-------|----|
|
|----------------|-------|----|
|
||||||
| `SavePanel.java` *(optionnel)* | Interface de sauvegarde `.pif` | US-U6 |
|
| `SavePanel.java` en option a voir | Interface de sauvegarde `.pif` | US-U6 |
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -25,15 +25,18 @@ endif
|
|||||||
|
|
||||||
# Règle par défaut
|
# Règle par défaut
|
||||||
all: \
|
all: \
|
||||||
$(BIN)/$(PKG_PATH)/Convertisseur.class
|
$(BIN)/$(PKG_PATH)/Convertisseur.class \
|
||||||
$(BIN)/$(PKG_PATH)/Viewer.class
|
$(BIN)/$(PKG_PATH)/Viewer.class
|
||||||
|
|
||||||
# Compilation
|
# Compilation des classes main
|
||||||
$(BIN)/$(PKG_PATH)/Convertisseur.class: $(BIN)
|
$(BIN)/$(PKG_PATH)/Convertisseur.class: $(BIN) \
|
||||||
$(JAVAC) -d $(BIN) $(SRC)/$(PKG_PATH)/Convertisseur.java
|
$(BIN)/$(PKG_PATH)/vconverter/ConverterWindow.class \
|
||||||
|
$(SRC)/$(PKG_PATH)/Convertisseur.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/Convertisseur.java
|
||||||
|
|
||||||
$(BIN)/$(PKG_PATH)/Viewer.class: $(BIN)
|
$(BIN)/$(PKG_PATH)/Viewer.class: $(BIN) \
|
||||||
$(JAVAC) -d $(BIN) $(SRC)/$(PKG_PATH)/Viewer.java
|
$(SRC)/$(PKG_PATH)/Viewer.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/Viewer.java
|
||||||
|
|
||||||
# Dossiers
|
# Dossiers
|
||||||
$(BIN):
|
$(BIN):
|
||||||
@@ -42,12 +45,53 @@ $(BIN):
|
|||||||
$(DOC):
|
$(DOC):
|
||||||
mkdir -p $(DOC)
|
mkdir -p $(DOC)
|
||||||
|
|
||||||
|
#Compilation de l'interface graphique je compile converterWindow
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/ConverterWindow.class: $(BIN) \
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/ImagePreviewPanel.class \
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/FrequencyTablePanel.class \
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/CodeTablePanel.class \
|
||||||
|
$(BIN)/$(PKG_PATH)/util/Config.class \
|
||||||
|
$(SRC)/$(PKG_PATH)/vconverter/ConverterWindow.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/ConverterWindow.java
|
||||||
|
|
||||||
|
# ConverterWindow dépend des autres classes je les compile aussi
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/ImagePreviewPanel.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/vconverter/ImagePreviewPanel.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/ImagePreviewPanel.java
|
||||||
|
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/FrequencyTablePanel.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/vconverter/FrequencyTablePanel.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/FrequencyTablePanel.java
|
||||||
|
|
||||||
|
$(BIN)/$(PKG_PATH)/vconverter/CodeTablePanel.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/vconverter/CodeTablePanel.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/vconverter/CodeTablePanel.java
|
||||||
|
|
||||||
|
|
||||||
|
#Compilation des classes util
|
||||||
|
$(BIN)/$(PKG_PATH)/util/Config.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/util/Config.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/Config.java
|
||||||
|
|
||||||
|
$(BIN)/$(PKG_PATH)/util/ByteUtils.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/util/ByteUtils.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/ByteUtils.java
|
||||||
|
|
||||||
|
$(BIN)/$(PKG_PATH)/util/BitInputStream.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/util/BitInputStream.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/BitInputStream.java
|
||||||
|
|
||||||
|
$(BIN)/$(PKG_PATH)/util/BitOutputStream.class: $(BIN) \
|
||||||
|
$(SRC)/$(PKG_PATH)/util/BitOutputStream.java
|
||||||
|
$(JAVAC) -cp $(BIN) -d $(BIN) $(SRC)/$(PKG_PATH)/util/BitOutputStream.java
|
||||||
|
|
||||||
|
|
||||||
# Exécution
|
# Exécution
|
||||||
run-conv: all
|
run-conv: all
|
||||||
$(JAVA) -cp $(BIN)$(SEP)$(LIB)* $(MAIN_CONVERTER)
|
$(JAVA) -cp $(BIN) $(MAIN_CONVERTER)
|
||||||
|
|
||||||
run-view: all
|
run-view: all
|
||||||
$(JAVA) -cp $(BIN)$(SEP)$(LIB)* $(MAIN_VIEWER)
|
$(JAVA) -cp $(BIN) $(MAIN_VIEWER)
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
doc: $(DOC)
|
doc: $(DOC)
|
||||||
|
|||||||
@@ -1,7 +1,29 @@
|
|||||||
package fr.iutfbleau.sae;
|
package fr.iutfbleau.sae;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import fr.iutfbleau.sae.vconverter.CodeTablePanel;
|
||||||
|
import fr.iutfbleau.sae.vconverter.ConverterWindow;
|
||||||
public class Convertisseur {
|
public class Convertisseur {
|
||||||
public File convertion(String chemin, String nom)
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
// Créer et stocker la référence à la fenêtre
|
||||||
|
ConverterWindow window = new ConverterWindow();
|
||||||
|
|
||||||
|
// Exemple d'utilisation pour les codes Huffman
|
||||||
|
Map<Integer, String> codesRouge = new HashMap<>();
|
||||||
|
codesRouge.put(255, "1010");
|
||||||
|
codesRouge.put(128, "010");
|
||||||
|
|
||||||
|
Map<Integer, String> codesVert = new HashMap<>();
|
||||||
|
codesVert.put(255, "110");
|
||||||
|
codesVert.put(128, "01");
|
||||||
|
Map<Integer, String> codesBleu = new HashMap<>();
|
||||||
|
codesBleu.put(255, "0");
|
||||||
|
codesBleu.put(128, "10");
|
||||||
|
|
||||||
|
// Appeler la méthode sur l'instance de la fenêtre
|
||||||
|
window.setCanonicalTable(codesRouge, codesVert, codesBleu);
|
||||||
System.out.println("DLKSLDKSLKDSLKSLKSLDKSLDKLSdkslkdl");
|
System.out.println("DLKSLDKSLKDSLKSLKSLDKSLDKLSdkslkdl");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package fr.iutfbleau.sae.util;
|
||||||
|
public class Config {
|
||||||
|
public static final String CON_NAME = "SAE32 - Convertisseur d'images PIF";
|
||||||
|
public static final String VIS_NAME = "SAE32 - Visualiseur d'images PIF";
|
||||||
|
public static final int[] VISUALISEUR_FENETRE_TAILLE = {800, 600};
|
||||||
|
public static final int[] CONVERTISSEUR_FENETRE_TAILLE = {800, 600};
|
||||||
|
public static final String APP_COPYRIGHT = "2025 © IUT de Fontainebleau";
|
||||||
|
public static final String APP_AUTHOR = "IUT de Fontainebleau";
|
||||||
|
|
||||||
|
|
||||||
|
private Config() {
|
||||||
|
// je refuse l'instanciation
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
package fr.iutfbleau.sae.vconverter;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Panneau d'affichage des codes Huffman et canoniques.
|
||||||
|
* Affiche les codes pour chaque composante de couleur (rouge, vert, bleu).
|
||||||
|
* @author Algassimou
|
||||||
|
*/
|
||||||
|
public class CodeTablePanel extends JPanel {
|
||||||
|
|
||||||
|
// Zones de texte pour les codes Huffman
|
||||||
|
private JTextArea textHuffRouge, textHuffVert, textHuffBleu;
|
||||||
|
|
||||||
|
// Zones de texte pour les codes canoniques
|
||||||
|
private JTextArea textCanonRouge, textCanonVert, textCanonBleu;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur qui initialise l'interface utilisateur.
|
||||||
|
*/
|
||||||
|
public CodeTablePanel() {
|
||||||
|
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||||
|
setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
|
||||||
|
|
||||||
|
// Titre pour les codes Huffman
|
||||||
|
JLabel titreHuff = new JLabel("Codes Huffman");
|
||||||
|
titreHuff.setFont(new Font("SansSerif", Font.BOLD, 16));
|
||||||
|
add(titreHuff);
|
||||||
|
add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
// Création des zones de texte pour les codes Huffman
|
||||||
|
textHuffRouge = creerZoneTexte("Rouge");
|
||||||
|
textHuffVert = creerZoneTexte("Vert");
|
||||||
|
textHuffBleu = creerZoneTexte("Bleu");
|
||||||
|
|
||||||
|
// Séparateur
|
||||||
|
add(Box.createVerticalStrut(20));
|
||||||
|
|
||||||
|
// Titre pour les codes canoniques
|
||||||
|
JLabel titreCanon = new JLabel("Codes Canoniques");
|
||||||
|
titreCanon.setFont(new Font("SansSerif", Font.BOLD, 16));
|
||||||
|
add(titreCanon);
|
||||||
|
add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
// Création des zones de texte pour les codes canoniques
|
||||||
|
textCanonRouge = creerZoneTexte("Rouge (Canonique)");
|
||||||
|
textCanonVert = creerZoneTexte("Vert (Canonique)");
|
||||||
|
textCanonBleu = creerZoneTexte("Bleu (Canonique)");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Crée une zone de texte avec une étiquette.
|
||||||
|
* @param titre Le titre à afficher au-dessus de la zone de texte
|
||||||
|
* @return La zone de texte configurée
|
||||||
|
*/
|
||||||
|
private JTextArea creerZoneTexte(String titre) {
|
||||||
|
add(new JLabel(titre + ":"));
|
||||||
|
JTextArea zone = new JTextArea(8, 30);
|
||||||
|
zone.setEditable(false);
|
||||||
|
zone.setFont(new Font("Monospaced", Font.PLAIN, 12));
|
||||||
|
JScrollPane scroll = new JScrollPane(zone);
|
||||||
|
scroll.setPreferredSize(new Dimension(300, 120));
|
||||||
|
add(scroll);
|
||||||
|
add(Box.createVerticalStrut(10));
|
||||||
|
return zone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour l'affichage des codes Huffman.
|
||||||
|
* @param rouge Les codes pour la composante rouge
|
||||||
|
* @param vert Les codes pour la composante verte
|
||||||
|
* @param bleu Les codes pour la composante bleue
|
||||||
|
*/
|
||||||
|
public void updateCodes(Map<Integer, String> rouge,
|
||||||
|
Map<Integer, String> vert,
|
||||||
|
Map<Integer, String> bleu) {
|
||||||
|
mettreAJourZoneTexte(textHuffRouge, rouge);
|
||||||
|
mettreAJourZoneTexte(textHuffVert, vert);
|
||||||
|
mettreAJourZoneTexte(textHuffBleu, bleu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour l'affichage des codes canoniques.
|
||||||
|
* @param rouge Les codes pour la composante rouge
|
||||||
|
* @param vert Les codes pour la composante verte
|
||||||
|
* @param bleu Les codes pour la composante bleue
|
||||||
|
*/
|
||||||
|
public void updateCanonicalCodes(Map<Integer, String> rouge,
|
||||||
|
Map<Integer, String> vert,
|
||||||
|
Map<Integer, String> bleu) {
|
||||||
|
mettreAJourZoneTexte(textCanonRouge, rouge);
|
||||||
|
mettreAJourZoneTexte(textCanonVert, vert);
|
||||||
|
mettreAJourZoneTexte(textCanonBleu, bleu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour le contenu d'une zone de texte avec les codes fournis.
|
||||||
|
* @param zone La zone de texte à mettre à jour
|
||||||
|
* @param codes Les codes à afficher
|
||||||
|
*/
|
||||||
|
private void mettreAJourZoneTexte(JTextArea zone, Map<Integer, String> codes) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (Map.Entry<Integer, String> entry : codes.entrySet()) {
|
||||||
|
sb.append(String.format("%3d : %s%n", entry.getKey(), entry.getValue()));
|
||||||
|
}
|
||||||
|
zone.setText(sb.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,49 +1,120 @@
|
|||||||
package fr.iutfbleau.sae.vconverter;
|
package fr.iutfbleau.sae.vconverter;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import fr.iutfbleau.sae.util.Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fenêtre principale du convertisseur.
|
* Fenêtre principale du convertisseur.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Cette classe représente la vue principale de l’application.
|
* Cette classe correspond à la vue principale de l’application.
|
||||||
* Elle regroupe les différents panneaux graphiques utilisés
|
* Elle centralise l’affichage des informations liées à la conversion
|
||||||
* pour afficher les résultats de la conversion d’une image.
|
* d’une image (aperçu, fréquences, codes).
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
|
* Elle sert de point d’entrée unique pour la partie graphique
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
public class ConverterWindow {
|
public class ConverterWindow extends JFrame {
|
||||||
|
|
||||||
|
|
||||||
private ImagePreviewPanel imagePreviewPanel;
|
private ImagePreviewPanel imagePreviewPanel;
|
||||||
private FrequencyTablePanel frequencyTablePanel;
|
private FrequencyTablePanel frequencyTablePanel;
|
||||||
private CodeTablePanel codeTablePanel;
|
private CodeTablePanel codeTablePanel;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour l’aperçu de l’image affichée dans la fenêtre.
|
* Crée la fenêtre principale du convertisseur.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Cette méthode est appelée par le contrôleur après le chargement
|
* Le constructeur initialise la fenêtre et met en place
|
||||||
* de l’image. L’image reçue est simplement transmise
|
* les différents panneaux graphiques utilisés pour l’affichage.
|
||||||
* au panneau d’aperçu pour être affichée.
|
* </p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
public ConverterWindow() {
|
||||||
|
|
||||||
|
System.out.println("Création de la fenêtre : " + Config.CON_NAME); // debug
|
||||||
|
// Configuration de la fenetre
|
||||||
|
this.setTitle(Config.CON_NAME);
|
||||||
|
this.setSize(Config.CONVERTISSEUR_FENETRE_TAILLE[0],
|
||||||
|
Config.CONVERTISSEUR_FENETRE_TAILLE[1]);
|
||||||
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
this.setLocationRelativeTo(null); // Centre la fenêtre
|
||||||
|
this.setResizable(true); // on autorise le resize (plus moderne)
|
||||||
|
|
||||||
|
|
||||||
|
// Initialisation des panels
|
||||||
|
this.imagePreviewPanel = new ImagePreviewPanel();
|
||||||
|
this.frequencyTablePanel = new FrequencyTablePanel();
|
||||||
|
this.codeTablePanel = new CodeTablePanel();
|
||||||
|
|
||||||
|
// Je gere le panel principal
|
||||||
|
JPanel contentPanel = new JPanel();
|
||||||
|
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
|
||||||
|
contentPanel.setBackground(new Color(255, 0, 0)); // rouge vif pour demo
|
||||||
|
contentPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
|
||||||
|
|
||||||
|
// Titre
|
||||||
|
JLabel header = new JLabel(" Convertisseur PIF – Visualisation des données ");
|
||||||
|
header.setFont(new Font("SansSerif", Font.BOLD, 18));
|
||||||
|
header.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
|
contentPanel.add(header);
|
||||||
|
|
||||||
|
contentPanel.add(Box.createRigidArea(new Dimension(0, 20))); // espace
|
||||||
|
|
||||||
|
|
||||||
|
// Ajout du panel d’aperçu
|
||||||
|
contentPanel.add(imagePreviewPanel);
|
||||||
|
contentPanel.add(Box.createRigidArea(new Dimension(0, 20)));
|
||||||
|
// Ajout du panel des fréquences
|
||||||
|
contentPanel.add(frequencyTablePanel);
|
||||||
|
contentPanel.add(Box.createRigidArea(new Dimension(0, 20)));
|
||||||
|
// Ajout panel des codes
|
||||||
|
contentPanel.add(codeTablePanel);
|
||||||
|
contentPanel.add(Box.createRigidArea(new Dimension(0, 20)));
|
||||||
|
// la section du scrollpane
|
||||||
|
JScrollPane scrollPane = new JScrollPane(contentPanel);
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
|
scrollPane.getVerticalScrollBar().setUnitIncrement(16); // scroll plus adouci fluide
|
||||||
|
|
||||||
|
this.add(scrollPane);
|
||||||
|
this.setVisible(true); // toi meme tu sais
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour l’image affichée dans la zone d’aperçu.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Cette méthode est appelée lorsque l’image à convertir
|
||||||
|
* a été chargée. La fenêtre ne modifie pas l’image :
|
||||||
|
* elle la transmet simplement au panneau d’aperçu.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param img image à afficher dans l’aperçu
|
* @param img image à afficher
|
||||||
*/
|
*/
|
||||||
public void setImagePreview(Object img) {
|
public void setImagePreview(Object img) {
|
||||||
// mise à jour du ImagePreviewPanel avec l’image img
|
|
||||||
imagePreviewPanel.setImage(img);
|
imagePreviewPanel.setImage(img);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour les tables de fréquences des composantes R, G et B.
|
* Met à jour l’affichage des tables de fréquences.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Cette méthode reçoit les tableaux de fréquences calculés
|
* Les fréquences sont déjà calculées avant l’appel
|
||||||
* par le contrôleur et les transmet au panneau chargé
|
* de cette méthode. La fenêtre se contente de demander
|
||||||
* de les afficher.
|
* au panneau dédié de rafraîchir son affichage.
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public void setFrequencyTable() {
|
public void setFrequencyTable() {
|
||||||
// mise à jour des fréquences dans le FrequencyTablePanel
|
|
||||||
frequencyTablePanel.updateFrequencies();
|
frequencyTablePanel.updateFrequencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,27 +122,29 @@ public class ConverterWindow {
|
|||||||
* Met à jour l’affichage des codes Huffman.
|
* Met à jour l’affichage des codes Huffman.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Les codes sont déjà calculés par le contrôleur.
|
* Cette méthode ne génère aucun code.
|
||||||
* Cette méthode se contente de demander au panneau
|
* Elle permet uniquement d’afficher les codes
|
||||||
* des codes de les afficher.
|
* qui ont été produits par la partie traitement.
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public void setHuffmanTable() {
|
public void setHuffmanTable(Map<Integer, String> codesRouge,
|
||||||
// mise à jour des codes Huffman dans le CodeTablePanel
|
Map<Integer, String> codesVert,
|
||||||
codeTablePanel.updateCodes();
|
Map<Integer, String> codesBleu) {
|
||||||
|
codeTablePanel.updateCanonicalCodes(codesRouge, codesVert, codesBleu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour l’affichage des codes canoniques.
|
* Met à jour l’affichage des codes canoniques.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Cette méthode est utilisée après la génération
|
* Les codes canoniques sont transmis au panneau
|
||||||
* des codes canoniques (Sprint 2).
|
* chargé de leur affichage. Aucune vérification
|
||||||
* Elle ne fait aucun calcul et se limite à l’affichage.
|
* ni transformation n’est effectuée ici.
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public void setCanonicalTable() {
|
public void setCanonicalTable(Map<Integer, String> codesRouge,
|
||||||
// mise à jour des codes canoniques dans le CodeTablePanel
|
Map<Integer, String> codesVert,
|
||||||
codeTablePanel.updateCanonicalCodes();
|
Map<Integer, String> codesBleu) {
|
||||||
|
codeTablePanel.updateCodes(codesRouge, codesVert, codesBleu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
package fr.iutfbleau.sae.vconverter;
|
package fr.iutfbleau.sae.vconverter;
|
||||||
|
|
||||||
public class FrequencyTablePanel {
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class FrequencyTablePanel extends JPanel {
|
||||||
|
public FrequencyTablePanel() {
|
||||||
|
// constructeur vide pour l'instant
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateFrequencies() {
|
||||||
|
// Implémentation à ajouter
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package fr.iutfbleau.sae.vconverter;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le panneau d’aperçu de l’image.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Ce panneau affiche un aperçu de l’image en cours de conversion.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
public class ImagePreviewPanel extends JPanel {
|
||||||
|
public ImagePreviewPanel() {
|
||||||
|
// constructeur vide pour l'instant
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImage(Object img) {
|
||||||
|
// Implémentation à ajouter
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user