fr.umlv.lovmi.filters
Interface Filter

All Known Implementing Classes:
AbstractFilter, Amplitude, Bicubic, ReduceConvolution, Stretching

public interface Filter

Interface des filtres. Un filtre est une procédure permettant de modifier une image.

Comment créer un filtre ?

Si une interface graphique particulière est nécéssaire pour passer les paramètres du filtre au logiciel, elle doit être implémentée dans la méthode init() et celle ci doit renvoyer true si tout se passe convenablement. Cette interface doit être écrite a l'aide de l'api Swing. La fenêtre principale et la fenêtre de l'initialisation du filtre sont lancés dans des thread différentes, ainsi, il est nécéssaire de synchroniser les fenêtres (JFrame), c'est pourquoi nous avons créé une class nommée WaitableFrame permettant d'attendre que l'utilisateur ferme la fenêtre avant de continuer à exécuter le reste des opération. Attention, ne pas lancer une WaitableFrame dans l'EventDispatchThread Par exemple : Toutes les méthodes des classes implémentant cette interface sont exécutées. C'est pourquoi, il faut toutes les implémenter. Cas de deux implémentations des filtres : Dans le premier cas, il faut implémenter la méthode applyToPixel qui est executée sur tous les pixels. Dans le deuxieme cas, il faut laisser la méthode applyToPixel vide, et implémenter la méthode start et effectuer soit même les calculs sur les pixels de l'image que l'on à choisi. Dans les deux cas, les deux méthodes sont executées. Lorsque le filtre est crée, afin qu'il puisse être utilisé dans Lovmi, il est nécéssaire de le déclarer dans fr/umlv/lovmi/filters.xml Si une icone particulière est associée au filtre, il doit être copié dans le repertoire fr/umlv/lovmi/ressources dans le format png ou gif avec un format 24x24

Author:
Goulamhoussen Feriel

Method Summary
 void applyToPixel(int line, int column)
          Applique le fitre sur un pixel, si il est possible de procéder comme cela.
 boolean canApply(Image image)
          Un filtre ne peut pas s'executer sur n'importe quel image.
 Image getResult()
          Cette méthode retourne l'image de résultat
 boolean init()
          Permet d'inialiser le filtre, par exemple entrer des paramètres dans la console ou bien entrer des paramètres dans une interface graphique.
 boolean produceResult()
          Permet de savoir si ce filtre produit un résulat sous forme d'image ou pas
 void start(Image in, int startLine, int startColumn, int endLine, int endColumn)
          Démarre le filtre sur une image.
 void terminate()
          Termine un filtre Cette méthode est souvent utilisée pour créer une nouvelle image, ou bien libérer de la mémoire.
 

Method Detail

start

void start(Image in,
           int startLine,
           int startColumn,
           int endLine,
           int endColumn)
Démarre le filtre sur une image. On peut implémenter dans cette méthode le calcul que doit effectuer le filtre si il ne peut pas être effectuée indiféremment du pixel. Par exemple, l'interpolation bicubique.

Parameters:
in - Image sur laquelle doit être executée le filtre
startLine - Pour une sous image, coin supérieur gauche
startColumn - Pour une sous image, coin supérieur gauche
endLine - Pour une sous image, coin inférieur droit
endColumn - Pour une sous image, coin inférieur droit

applyToPixel

void applyToPixel(int line,
                  int column)
Applique le fitre sur un pixel, si il est possible de procéder comme cela.

Parameters:
line - ligne
column - colone

terminate

void terminate()
Termine un filtre Cette méthode est souvent utilisée pour créer une nouvelle image, ou bien libérer de la mémoire.


getResult

Image getResult()
Cette méthode retourne l'image de résultat

Returns:
Cette méthode peut retourner null

produceResult

boolean produceResult()
Permet de savoir si ce filtre produit un résulat sous forme d'image ou pas

Returns:
true si produit un résultat, false sinon

canApply

boolean canApply(Image image)
Un filtre ne peut pas s'executer sur n'importe quel image. Cette méthode teste si le filtre peut être executée sur l'image passée en paramètres

Parameters:
image - Image sur laquelle doit être effectuée le test
Returns:
true si le filtre est appliquable sur l'image, non sinon

init

boolean init()
Permet d'inialiser le filtre, par exemple entrer des paramètres dans la console ou bien entrer des paramètres dans une interface graphique. Pour utiliser une interface graphique, ne pas utiliser de JFrame mais, une WaitableFrame.

Returns:
true si tout s'est bien passé, dans ce cas, le filtre s'execute, false sinon.