|
|
|
|
- | <rubrique id="4" />
| |
- | [[Catégorie:Projets]]
| |
- | [[Catégorie:java]]
| |
- | {{Infobox Projet
| |
- | | name = Millie
| |
- | | caption = Logo
| |
- | | auteurs = Florent Humbert
| |
- | | langage de programmation = {{Link|Java}}
| |
- | | version stable= 1.2.1
| |
- | | plateformes = Linux, Mac OS X, Windows
| |
- | | langues = Français
| |
- | | statut = En développement
| |
- | | license = GNU GPL
| |
- | | type = Logiciel de retouche et traitement d'images
| |
- | | site web = [http://www.developpez.net/forums/d607158/applications/projets/projets-heberges/millie/presentation-millie-gui-traitement-images/]
| |
- | }}
| |
| | | |
- | Ce tutoriel a pour but de montrer comment développer des plugins pour la bibliothèque et l'IHM Millie.
| |
- |
| |
- | Une première partie détaillera le système de plugin hérité de la version 1.0.0 tandis que la seconde détaillera les nouveaux concepts introduit avec la version 2.0.0.
| |
- |
| |
- | == Système basique de plugins ==
| |
- |
| |
- | L'application est structurée selon plusieurs archives java JAR :
| |
- |
| |
- | * Millie.jar qui correspond à la bibliothèque de traitement d'images
| |
- | * MilliePlugins.jar qui est l'unique bibliothèque à devoir utiliser pour ajouter et développer des plugins
| |
- | * MillieGUI.jar qui est une IHM devloppée en Swing
| |
- | * MillieCommand.jar qui permet d'appeler les filtres et les plugins en ligne de commande
| |
- | * MillieCommons.jar qui correspond aux codes partagées entre les différentes IHM
| |
- | * plugins/MillieCoreFilter.jar qui est une archive de plugins qui correspond à ce qu'il y a dans le menu Filtre
| |
- |
| |
- | Un plugin correspond donc à un fichier JAR qui est ajouté dans le dossier plugins. Il suffit alors de relancer l'application ou d'utiliser le menu Plugins/Refresh pour prendre en compte le plugin.
| |
- |
| |
- | === Contenu de l'archive MilliePlugins ===
| |
- |
| |
- | Cette bibliothèque contient un ensemble de classe pour développer les plugins.
| |
- |
| |
- | Des classes pour définir des types de filtres standards :
| |
- |
| |
- | * AppPlugin qui correspond à un filtre lié à l'application mais pas à une image (typiquement un traitement en masse sur un dossier, un menu de préférences)
| |
- | * AppImagePlugin qui correspond à un filtre lié à une image
| |
- | * GenericAppImagePlugin, une spécialisation de AppImagePlugin qui correspond à tous les filtres sans interaction de la souris avec l'image (exemple : convolution, flou gaussien)
| |
- | * AreaAppImagePlugin qui correspond aux filtres utilisant la souris pour appliquer une opération à un certain point (exemple : flou local)
| |
- | * RectangularAppImagePlugin qui correspond aux filtres utilisant un rectangle de sélection pour le calcul (exemple : Rogner)
| |
- | * NoParameterAppImagePlugin qui correspond à un filtre sans paramètre (il ne faut que l'image d'entrée) (exemple : Dilation)
| |
- |
| |
- | Des classes pour définir des filtres pouvant s'intégrer à l'IHM :
| |
- | * AppCommand permet de définir une commande à appliquer suite au démarrage du plugin
| |
- | * AppImageCommand permet de définir une commande à appliquer suite au démarrage du plugin sur une image
| |
- | Ces 2 dernières classes doivent respecter certains contrats pour bien s'intégrer dans l'IHM.
| |
- |
| |
- | Des classes permettant d'interagir avec l'application :
| |
- | * AppActions permet d'interagir avec l'application (typiquement, ouvrir une image, créer une image, fermer l'application)
| |
- | * AppImageActions permet d'interagir avec une fenêtre d'image (typiquement, mise à jour d'une image, sauvegarde)
| |
- | * AppListener permet d'être notifié d'action sur l'application (typiquement l'ouverture ou la fermeture d'une image)
| |
- | * AppImageListener permet d'être notifié d'action sur une image (typiquement la mise à jour d'une image, l'exécution d'une commande, une sauvegarde etc.)
| |
- | * MessageManager permet de communiquer des messages à l'application (type erreur, warning, info)
| |
- |
| |
- |
| |
- | Des classes pour définir des types de paramètres :
| |
- |
| |
- | * CheckBoxParameter pour les checkbox
| |
- | * ComboBoxParameter pour les combobox
| |
- | * DoubleSliderParameter pour des sliders de type double
| |
- | * DoubleTextFieldParameter
| |
- | * ImageParameter pour choisir dans une combobox une autre image déjà ouverte
| |
- | * IntSliderParameter
| |
- | * IntTextFieldParameter
| |
- | * RadioButtonGroupParameter
| |
- | * TextFieldParameter
| |
- | * FileParameter
| |
- |
| |
- | Les classes de paramètres et de définition des filtres sont totalement indépendantes de SWING et du rendu. Grosso modo, les filtres ne contiennent que le traitement métier et une table des paramètres (à l'exception des commandes qui permettent de créer des composants SWING).
| |
- |
| |
- | Dans l'archive MillieGUI.jar, à chaque type de paramètre et à chaque type de filtre est associé un renderer qui sait afficher l'objet.
| |