@startuml title Diagramme simplifié du Visualisateur PIF skinparam packageStyle rectangle skinparam shadowing false ' ======== Couleurs ======== !define C_BLUE #A7C7E7 !define C_GREEN #A9E5AA !define C_ORANGE #FFB366 !define C_PURPLE #C9B6E4 !define C_GREY #EDEDED ' ======== CONTROLLER ======== package "Controller" C_ORANGE { class ViewerControleur { +ouvrirFichier() +chargerPIF() +afficherImage() } } ' ======== MODEL - Lecture PIF ======== package "Model - Lecture .pif" C_BLUE { class PIFReader { +decodePifFile(File) +readHeader() +readCanonicalTables() +rebuildCanonical() +buildDecodageTree() +decodePixels() } class DecodeNode { left right value } class BitInputStream { +readBit() +readBits(n) } class RGBImage { width height +setPixel() +getPixel() } } ' ======== VIEW - Interface ======== package "View - Interface" C_GREEN { class ViewerWindow { +displayImage(BufferedImage) } class ViewerImagePanel { +setImage() +paintComponent() } } ' ======== RELATIONS ======== ViewerControleur --> PIFReader : lit et décode PIFReader --> BitInputStream : lit des bits PIFReader --> DecodeNode : construit des arbres PIFReader --> RGBImage : reconstruit l'image ViewerControleur --> ViewerWindow : met à jour ViewerWindow --> ViewerImagePanel : transmet l'image ViewerControleur --> RGBImage : reçoit l'image décodée @enduml