Diagrame et US-D1 et US-D2
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,173 +0,0 @@
|
|||||||
@startuml
|
|
||||||
skinparam packageStyle rectangle
|
|
||||||
skinparam classAttributeIconSize 0
|
|
||||||
|
|
||||||
|
|
||||||
' ============================
|
|
||||||
' PACKAGE mimage
|
|
||||||
' ============================
|
|
||||||
package mimage {
|
|
||||||
|
|
||||||
class Pixel {
|
|
||||||
- int r
|
|
||||||
- int g
|
|
||||||
- int b
|
|
||||||
+ Pixel(int r, int g, int b)
|
|
||||||
+ int getR()
|
|
||||||
+ int getG()
|
|
||||||
+ int getB()
|
|
||||||
+ void setR(int r)
|
|
||||||
+ void setG(int g)
|
|
||||||
+ void setB(int b)
|
|
||||||
}
|
|
||||||
|
|
||||||
class RGBImage {
|
|
||||||
- int width
|
|
||||||
- int height
|
|
||||||
- Pixel[][] pixels
|
|
||||||
+ RGBImage(int width, int height)
|
|
||||||
+ int getWidth()
|
|
||||||
+ int getHeight()
|
|
||||||
+ Pixel getPixel(int x, int y)
|
|
||||||
+ void setPixel(int x, int y, Pixel p)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
' ============================
|
|
||||||
' PACKAGE mhuffman
|
|
||||||
' ============================
|
|
||||||
package mhuffman {
|
|
||||||
|
|
||||||
class FrequencyTable {
|
|
||||||
- int[] freqR
|
|
||||||
- int[] freqG
|
|
||||||
- int[] freqB
|
|
||||||
+ FrequencyTable()
|
|
||||||
+ void computeFromImage(RGBImage img)
|
|
||||||
+ int[] getRed()
|
|
||||||
+ int[] getGreen()
|
|
||||||
+ int[] getBlue()
|
|
||||||
}
|
|
||||||
|
|
||||||
class HuffmanNode {
|
|
||||||
+ int value
|
|
||||||
+ int frequency
|
|
||||||
+ HuffmanNode left
|
|
||||||
+ HuffmanNode right
|
|
||||||
+ boolean isLeaf()
|
|
||||||
}
|
|
||||||
|
|
||||||
class HuffmanTree {
|
|
||||||
- HuffmanNode root
|
|
||||||
+ HuffmanTree(FrequencyTable freq, char component)
|
|
||||||
+ Map<Integer,String> generateCodes()
|
|
||||||
}
|
|
||||||
|
|
||||||
class CanonicalCode {
|
|
||||||
- Map<Integer,Integer> codeLengths
|
|
||||||
- Map<Integer,String> canonicalCodes
|
|
||||||
+ CanonicalCode(Map<Integer,String> huffmanCodes)
|
|
||||||
+ String getCode(int value)
|
|
||||||
+ int getLength(int value)
|
|
||||||
}
|
|
||||||
|
|
||||||
FrequencyTable --> RGBImage
|
|
||||||
HuffmanTree --> HuffmanNode
|
|
||||||
CanonicalCode --> HuffmanTree
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
' ============================
|
|
||||||
' PACKAGE util
|
|
||||||
' ============================
|
|
||||||
package util {
|
|
||||||
|
|
||||||
class BitInputStream {
|
|
||||||
- InputStream in
|
|
||||||
- int currentByte
|
|
||||||
- int bitPosition
|
|
||||||
+ BitInputStream(InputStream in)
|
|
||||||
+ int readBit()
|
|
||||||
+ int readBits(int n)
|
|
||||||
+ void close()
|
|
||||||
}
|
|
||||||
|
|
||||||
class BitOutputStream {
|
|
||||||
- OutputStream out
|
|
||||||
- int currentByte
|
|
||||||
- int bitCount
|
|
||||||
+ BitOutputStream(OutputStream out)
|
|
||||||
+ void writeBit(int bit)
|
|
||||||
+ void writeBits(int value, int n)
|
|
||||||
+ void flush()
|
|
||||||
+ void close()
|
|
||||||
}
|
|
||||||
|
|
||||||
class ByteUtils {
|
|
||||||
+ static int toInt(byte high, byte low)
|
|
||||||
+ static byte[] toBytes(int value)
|
|
||||||
}
|
|
||||||
|
|
||||||
class FileUtils {
|
|
||||||
+ static boolean isPIFFile(File f)
|
|
||||||
+ static byte[] readBinaryFile(String path)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
' ============================
|
|
||||||
' PACKAGE vconverter
|
|
||||||
' ============================
|
|
||||||
package vconverter {
|
|
||||||
|
|
||||||
class ConverterWindow {
|
|
||||||
+ void setImagePreview(RGBImage img)
|
|
||||||
+ void setFrequencyTable(int[] r, int[] g, int[] b)
|
|
||||||
+ void setHuffmanTable(Map<Integer,String> red,
|
|
||||||
Map<Integer,String> green,
|
|
||||||
Map<Integer,String> blue)
|
|
||||||
+ void setCanonicalTable(CanonicalCode r, CanonicalCode g, CanonicalCode b)
|
|
||||||
}
|
|
||||||
|
|
||||||
class PreviewPanel {
|
|
||||||
- RGBImage image
|
|
||||||
+ void setImage(RGBImage img)
|
|
||||||
}
|
|
||||||
|
|
||||||
class FrequencyTablePanel {
|
|
||||||
+ void updateFrequencies(int[] r, int[] g, int[] b)
|
|
||||||
}
|
|
||||||
|
|
||||||
class CodeTablePanel {
|
|
||||||
+ void updateCodes(Map<Integer,String> hR,
|
|
||||||
Map<Integer,String> hG,
|
|
||||||
Map<Integer,String> hB,
|
|
||||||
CanonicalCode cR,
|
|
||||||
CanonicalCode cG,
|
|
||||||
CanonicalCode cB)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConverterWindow --> PreviewPanel
|
|
||||||
ConverterWindow --> FrequencyTablePanel
|
|
||||||
ConverterWindow --> CodeTablePanel
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
' ============================
|
|
||||||
' CONTROLLER (Sprint 1)
|
|
||||||
' ============================
|
|
||||||
class ConverterController {
|
|
||||||
+ void loadImage(String path)
|
|
||||||
+ void computeFrequencies()
|
|
||||||
+ void computeHuffman()
|
|
||||||
+ void computeCanonical()
|
|
||||||
+ void saveAsPIF(String path) 'encore vide pour Sprint 1
|
|
||||||
}
|
|
||||||
|
|
||||||
ConverterController --> RGBImage
|
|
||||||
ConverterController --> FrequencyTable
|
|
||||||
ConverterController --> HuffmanTree
|
|
||||||
ConverterController --> CanonicalCode
|
|
||||||
|
|
||||||
@enduml
|
|
||||||
@@ -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,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
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
Reference in New Issue
Block a user