make file

This commit is contained in:
Diallo-VM-fbleau
2025-12-18 10:02:19 +01:00
parent a125146bd0
commit 3e69ce9d43
9 changed files with 74 additions and 3 deletions
@@ -0,0 +1,67 @@
@startuml
skinparam packageStyle rectangle
' ============================
' MODEL (bleu)
' ============================
package mimage {
class Pixel #aliceblue
class RGBImage #aliceblue
}
RGBImage *-- Pixel
package mhuffman {
class FrequencyTable #aliceblue
class HuffmanNode #aliceblue
class HuffmanTree #aliceblue
class CanonicalCode #aliceblue
}
HuffmanTree *-- HuffmanNode
FrequencyTable ..> RGBImage
CanonicalCode ..> HuffmanTree
package util {
class BitInputStream #aliceblue
class BitOutputStream #aliceblue
class ByteUtils #aliceblue
class FileUtils #aliceblue
}
package mpif {
class PIFWriter #aliceblue
}
PIFWriter ..> RGBImage
PIFWriter ..> CanonicalCode
PIFWriter ..> BitOutputStream
' ============================
' VIEW (vert)
' ============================
package vconverter {
class ConverterWindow #palegreen
class PreviewPanel #palegreen
class FrequencyTablePanel #palegreen
class CodeTablePanel #palegreen
}
ConverterWindow *-- PreviewPanel
ConverterWindow *-- FrequencyTablePanel
ConverterWindow *-- CodeTablePanel
' ============================
' CONTROLLER (orange)
' ============================
class ConverterController #ffddaa
ConverterController ..> RGBImage
ConverterController ..> FrequencyTable
ConverterController ..> HuffmanTree
ConverterController ..> CanonicalCode
ConverterController ..> PIFWriter
@enduml
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

@@ -0,0 +1,206 @@
@startuml
skinparam packageStyle rectangle
' ============================
' PACKAGE mimage (MODEL - BLEU)
' ============================
package mimage {
class Pixel #aliceblue {
- r : int
- g : int
- b : int
+ Pixel(r, g, b)
+ getR()
+ getG()
+ getB()
+ setR(r)
+ setG(g)
+ setB(b)
}
class RGBImage #aliceblue {
- width : int
- height : int
- pixels : Pixel[*]
+ RGBImage(width, height)
+ getWidth()
+ getHeight()
+ getPixel(x, y)
+ setPixel(x, y, p)
}
}
RGBImage *-- Pixel : contient
' ============================
' PACKAGE mhuffman (MODEL - BLEU)
' ============================
package mhuffman {
class FrequencyTable #aliceblue {
- freqR : int[*]
- freqG : int[*]
- freqB : int[*]
+ computeFromImage(img)
+ getRed()
+ getGreen()
+ getBlue()
}
class HuffmanNode #aliceblue {
- value : int
- frequency : int
- left : HuffmanNode
- right : HuffmanNode
+ setLeft(HuffmanNode lef): void
+ setRight(HuffmanNode rig): void
+ isLead(HuffmanNode f): boolean
+ getFrequence(): int
}
class HuffmanTree #aliceblue {
- root : HuffmanNode
+ generateCodes()
}
class CanonicalCode #aliceblue {
- codeLengths : Map
- canonicalCodes : Map
+ getCode(value)
+ getLength(value)
}
}
FrequencyTable ..> RGBImage : analyse
HuffmanTree *-- HuffmanNode
CanonicalCode ..> HuffmanTree : dérive
' ============================
' PACKAGE util (MODEL - BLEU)
' ============================
package util {
class BitInputStream #aliceblue {
- fluxEntree
- octetCourant : int
- positionBit : int
- finDeFlux : boolean
+ BitInputStream(fluxEntree)
+ readBit() : int
+ readBits(nombreBits) : int
+ closeFlux()
}
class BitOutputStream #aliceblue {
- fluxSortie
- octetEnConstruction : int
- positionBit : int
- fluxFerme : boolean
+ BitOutputStream(fluxSortie)
+ writeBit(bit)
+ writeBits(valeur, nombreBits)
+ flush()
+ fermerFlux()
}
class ByteUtils #aliceblue {
<<utilitaire>>
+ toInt(high, low) : int
+ toBytes(value) : byte[]
}
class FileUtils #aliceblue {
<<utilitaire>>
+ isPIFFile(f) : boolean
+ readBinaryFile(path)
}
}
' ============================
' PACKAGE mpif (MODEL - BLEU) — Sprint 2
' ============================
package mpif {
class PIFWriter #aliceblue {
+ writeHeader(out, width, height)
+ writeTables(out, red, green, blue)
+ encodePixels(out, img, red, green, blue)
+ writeToFile(path, img, red, green, blue)
}
' (optionnel) PIFImage si tu souhaite la représenter
class PIFImage #aliceblue {
- width : int
- height : int
- lenR : int[*]
- lenG : int[*]
- lenB : int[*]
- pixelData
}
}
PIFWriter ..> RGBImage
PIFWriter ..> CanonicalCode
PIFWriter ..> BitOutputStream
' ============================
' PACKAGE vconverter (VIEW - VERT)
' ============================
package vconverter {
class ConverterWindow #palegreen {
+ setImagePreview(img)
+ setFrequencyTable()
+ setHuffmanTable()
+ setCanonicalTable()
}
class PreviewPanel #palegreen {
- image
+ setImage(img)
}
class FrequencyTablePanel #palegreen {
+ updateFrequencies()
}
class CodeTablePanel #palegreen {
+ updateCodes()
}
ConverterWindow *-- PreviewPanel
ConverterWindow *-- FrequencyTablePanel
ConverterWindow *-- CodeTablePanel
}
' ============================
' CONTROLLER (ORANGE)
' ============================
class ConverterController #ffddaa {
+ loadImage(path)
+ computeFrequencies()
+ computeHuffman()
+ computeCanonical()
+ saveAsPIF(path)
}
ConverterController ..> RGBImage
ConverterController ..> FrequencyTable
ConverterController ..> HuffmanTree
ConverterController ..> CanonicalCode
ConverterController ..> PIFWriter : écrit le .pif
@enduml
Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB