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