Vedere la pagina principale del progetto per gli altri documenti.
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.
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.
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.
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:
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:
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:
prog10.zip (ultimo aggiornamento 26 aprile 2010)