Diagrame et US-D1 et US-D2
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
@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
|
||||
+ isLeaf()
|
||||
}
|
||||
|
||||
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 {
|
||||
- in
|
||||
- currentByte : int
|
||||
- bitPosition : int
|
||||
+ BitInputStream(in)
|
||||
+ readBit()
|
||||
+ readBits(n)
|
||||
+ close()
|
||||
}
|
||||
|
||||
class BitOutputStream #aliceblue {
|
||||
- out
|
||||
- currentByte : int
|
||||
- bitCount : int
|
||||
+ BitOutputStream(out)
|
||||
+ writeBit(bit)
|
||||
+ writeBits(value, n)
|
||||
+ flush()
|
||||
+ close()
|
||||
}
|
||||
|
||||
class ByteUtils #aliceblue {
|
||||
+ toInt(high, low)
|
||||
+ toBytes(value)
|
||||
}
|
||||
|
||||
class FileUtils #aliceblue {
|
||||
+ isPIFFile(f)
|
||||
+ 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
|
||||
Reference in New Issue
Block a user