PRIMO PROGETTO DI INTERFACCE - A.A. 2001-2002

PRIMO PROGETTO DI INTERFACCE - A.A. 2001-2002

OBIETTIVO

Realizzare un'interfaccia per una applicazione che, presa in input un'immagine, permette di manipolarla secondo vari filtri.

FUNZIONALITA' DELL'INTERFACCIA

L'interfaccia deve consentire le seguenti operazioni applicative:

oltre ovviamente alle funzioni standard (uscita ecc.), e a tutte quelle che ritenete opportune.

In ogni momento deve essere possibile caricare una nuova immagine. In ogni momento in cui c'e' un'immagine deve essere possibile filtrarla con qualsiasi filtro. Ogni volta in cui l'immagine corrente e' frutto di un filtraggio deve essere possibile ripristinare l'immagine precedente (prima del filtraggio).

Per tutto il resto e' lasciata piena liberta' di scelta, purche' l'interfaccia risultante si comporti in modo ragionevole e prevedibile.

FILTRI

In Java, un'immagine e' una griglia di pixel dove il colore di ogni pixel e' descritto mediante una terna di componenti (rosso,verde,blu), ciascuna delle quali e' un intero fra 0 e 255. Java ha metodi in grado di caricare un'immagine da file nei piu' comuni formati (es. gif, jpeg).

I filtri applicabili all'immagine sono:

MATERIALE FORNITO

(1) Classi da usare

Sono fornite tre classi che, opportunamente istanziate, permettono di realizzare tutti i filtri sopra elencati.
Queste classi fanno parte dell'applicazione, VANNO USATE COME SONO e NON devono essere modificate!

Classe ColorSwapFilter - file ColorSwapFilter.java

Filtro di immagine che scambia tra loro due delle componenti rossa, verde, blu dei colori di un'immagine. Le due componenti da scambiare sono specificate alla creazione del filtro.
Il costruttore prende come parametri due interi che possono assumere valori all'interno dell'insieme di costanti ColorSwapFilter.RED, ColorSwapFilter.GREEN, ColorSwapFilter.BLUE.

Classe NegativeFilter - file NegativeFilter.java

Filtro di immagine che mette al negativo una o piu' delle componenti rossa, verde, blu dei colori di un'immagine. Le componenti da mettere al negativo sono specificate alla creazione del filtro.
Il costruttore prende come parametri tre booleani che stabiliscono rispettivamente se invertire la componente rossa, verde, blu (se il booleano e' vero la componente va invertita).

Classe HighLowFilter - file HighLowFilter.java

Filtro di immagine che aumenta o diminuisce una o piu' delle componenti rossa, verde, blu dei colori di un'immagine. L'entita' dell'aumento o diminuzione per ciascuna componente e' specificata alla creazione del filtro.
Il costruttore prende come parametri un valore di incremento intero (positivo o negativo) per ciascuna componente di colore, gli incrementi devono essere nell'intervallo [-255,+255].

(2) Esempio di loro uso

E' fornito un programma di esempio - file Esempio1.java che mostra come usare queste classi filtro (in realta' lo mostra su una sola classe).
Questa classe e' un esempio da cui si possono PRENDERE DELLE PARTI per scrivere la propria interfaccia.

Una volta compilato con javac Esempio1.java per eseguirlo digitare java Esempio1 "immagine" dove "immagine" e' il nome del file contenente l'immagine.

Il programma crea un frame con un'immagine e un bottone, premendo il bottone le tre componenti rossa,verde,blu dell'immagine vengono simultaneamente invertite.

Vedere nell'esempio come si procede per:

RACCOMANDAZIONI

Questo e' un progetto di interfacce grafiche. Pertanto, sara' tenuto conto non solo del fatto che tutte le funzioni richieste siano presenti nell'interfaccia sviluppata, ma anche e di quanto facile e gradevole risulta l'uso dell'interfaccia stessa per l'utente.

MATERIALE DA CONSEGNARE

L'indirizzo di posta elettronica a cui spedire e' magillo@disi.unige.it. Indicare chiaramente nel messaggio il nome dei componenti del gruppo e l'elenco dei file inviati. NON reinviare i tre file dei filtri che fanno parte del materiale fornito.