Corso di Interfacce Utente - A.A. 2009-2010

PROGETTO DI LABORATORIO

Vedere la pagina principale del progetto per gli altri documenti.

Elenco delle classi che realizzano l'applicazione

Si tratta in tutto di 5 classi. Qui si fornisce solo un inquadramento generale. Per maggiori dettagli sui metodi forniti dalle varie classi, generare la documentazione con javadoc e consultarla.
Per generare la documentazione: javadoc *.java (crea vari file html, tra cui uno per ogni classe, e il file principale index.html)
Per visualizzarla: caricare nel browser il file index.html

Nota:
Queste classi sono da usare "a scatola chiusa" senza modificarle.

Altra nota:
Se rilevate errori, per favore comunicateli sul forum e provvedero' a rendere disponibile a tutti una versione corretta.

classe QuadColor

Funzioni di utilita' per rappresentare un colore in un singolo numero intero di 4 byte. Tre byte contengono rispettivamente i valori di rosso, verde, blu, il rimanente byte non e' usato, convenzionalmente contiene tutti bit a 1.

Metodi (tutti di classe):
Varie funzioni per conversioni di formato tra colore rappresentato su singolo intero e colore come oggetto di classe java Color, e colore come tre componenti rosso, verde, blu.

classe BasicIO

Funzioni di base per scrivere e leggere un file binario, nel nostro caso contenente un quad-tree. I nodi foglia sono rappresentati dal loro colore: tre byte che vengono letti in (e scritti da) un intero. I nodi interni sono rappresentati da un byte: il carattere definito dalla costante NODE_CHAR nella classe QuadTree.

Metodi (tutti di classe):
Varie funzioni per leggere e scrivere tali elementi. e come tre componenti rosso, verde, blu.

classe PixelMatrix

Rappresenta un immagine (quadrata) come array di pixel. Serve come stadio intermedio da immagine a quad-tree e viceversa, perche' qui posso accedere i colori dell'immagine per posizione. Ogni colore e' rappresentato con un singolo intero: 4 byte, tre dei quali sono usati per rappresentare le componenti rossa, verde, blu su 8 bit ciascuna.

Le conversioni di formato colore sono gestite dalla sopra citata classe QuadColor.

Metodi:

classe QuadNode

Rappresenta un nodo nel quad-tree, ovvero un macro-pixel. Memorizza la larghezza in pixel del nodo, il colore del nodo (colore originale dell'immagine se il nodo e' foglia, altrimenti media del colore dei pixel ricoperti), e il valore di errore sul colore (uguale a (0,0,0) se foglia, altrimenti uguale alla massima differenza tra il colore del nodo e il colore di uno dei pixel ricoperti, calcolato separatemente per le tre componenti rossa, verde, blu).
Memorizza inoltre i 4 figli (se il nodo non e' foglia), una marcatura booleana che indica se il nodo e' stato preso nel corrente troncamento del quad-tree.
Come variabili di classe tiene i tre colori usati per generare l'immagine della suddivisione: per i bordi, per l'interno dei nodi che non sono singoli pixel, per i nodi che sono singoli pixel. Ha inoltre un contatore dei nodi visitati, usato a fini statistici.

Tipicamente il codice dell'interfaccia non usera' questa classe, ma la sua sotto-classe QuadTree.

Variabili pubbliche: i tre colori usati nell'immagine della suddivisione.

Metodi:

classe QuadTree

Sotto-classe di QuadNode che realizza un quad-tree. Aggiunge le funzioni che saranno veramente usate dall'interfaccia: quelle per leggere/scrivere e per produrre immagini.

Il formato del file quadtree e' binario ed e' composto da:

Costante di classe: il carattere che rappresenta, nel file, un nodo interno.

Metodi:

Scaricare lo zip che contiene tutte le classi

prog10.zip (ultimo aggiornamento 26 aprile 2010)