ClipBoardManager permet de faire des copier coller.
Si le système hôte l'autorise, le copier coller sera possible avec le système hôte. C'est à dire que si vous copier un texte sur un autre logiciel, vous pourrez le coller dans votre application et inversement.
Pour des raisons de compatibilité, les seuls informations pouvant utiliser ce passe plat, pour le moment, sont soit des chaînes de caractères, soit des références vers des fichiers et/ou dossiers. Ce qui permet tout de même de remplir une trés grande majorité des besoins d'interaction de copier/coller entre une application et un système hôte.
Bien entendu les références vers les fichiers et/ou dossiers doivent être sur des fichiers et/ou dossiers existant, sinon le coller sur le système hôte n'aurait aucun sens.
Si isFileListStore et isStringStore revoient tous deux false cela signifie que le clip board est actuellement vide.
Pour les curieux qui regarderont le code source de près, vous remarquerez que pour les chaînes de caractères plusieurs cas sont traités lors de leur lecture. En effet, selon la source les chaînes de caractères ne sont pas encodées de la même manière. J'ai essayé de faire tous les cas possible, mais si il y a un oubli, merci de me le signaler.
Bien sur rien n'empêche que le copier et le coller se fasse au sein de l’application elle même.
GIF permet de lire un gif. Si le gif est animé, il est possible de récupérer chaque image de l'animation.
Pour certains gif animés la récupération des images ne marchent pas toujours très bien, si bien que certaines images peuvent être fausses.
L'image gif prend de la mémoire, pour cela je conseille fortement que lorsque vous n'en avez plus besoin de la détruire à l'aide de la méthode destroy.
Les images fournie par la classe sont "flusher", ce qui à pour conséquence qu'elles sont prêtes à être détruite à moins que quelqu'un ne les modifie. Pour que la destruction se fasse correctement (Et ainsi toute la mémoire soit libérée). Si vous modifiez les images "flusher" (Méthode flush) les. Si vous ouvrez un graphics dessus, n'oubliez pas de le détruire correctement (Méthode dispose).
JHelpImage représente une image. Celle-ci contient plusieurs méthodes permettant, soit de dessiner sur l'image, soit de modifier l'image (plus claire, grisée, ...), de la combinée avec d'autres images, de comparé deux images, de creés des sprites.
Avec les methodes loadImage et loadImageThumb l'image peut provenir de plusieurs sources différentes. Avec les constructeurs on peut créez une nouvelle image vide, de couleur unie ou à partir d'un tableau de pixels.
Limage possède deux modes. Le mode dit "draw" dans lequel on peut dessiner, et le mode fixe. A sa création, l'image est en mode fixe. La plupart opérations ne peuvent s'effectuer que dans l'un des deux modes. Certaines peuvent s’effectuer dans n'importe quel mode, mais le mode peut avoir un effet sur le résultat. La javadoc précise le mode d'une opération et si les deux sont possibles explique les différences si il y en a.
En mode "draw", on va trouver toutes les méthodes permettant de dessiner sur l'image (dessin d'un segment, rectangle, ellipse, ...). Les modifications ne sont pas visibles tout de suite. Pour voir les modifications il faut soit appeler la méthode update soit repassé en mode fixe.
Ce choix à été fait pour optimiser le dessin, et permettre de faire plusieurs changement d'un coup.
Il est possible de dessiner en mode "mixage" ou en mode "écraser". En mode "mixage" si on dessine un pixel transparent un l'image, celui-ci sera mixé avec la couleur d'origine pour formé une troisiéme couleur. Le mode écraser va au contrire remplacer le pixel d'origine par le nouveau pixel.
Avec ces informations et le javadoc il me semble inutile de détailler chacune des fonctions, je vais donc me concentrer sur certaines notions dont vous n'avez peut-être pas entendu parler et qui vous permetront de comprendre le fonctionement des différentes méthodes.
-
La notion de couleur :
Une couleur, sur les ordinateurs modernes, est composé de quatre composantes variantes chacune entre 0 et 255. Ce nombre est la quantité de la composantes. Il y a trois composantes chromatique le rouge, le vert et le bleu. La quatrième est la transparence souvent appelé alpha.
Le mélange des couleurs chromatiques correspond au mélange des rayons lumineux, par exemple si vous avez un spot lumineux vert, un bleu et un rouges pointant vers la même zone, vous obtenez une zone blanche, ici on peut régler la puissance de chacun des spots de 0 (éteint) a 255 (au maximum de force), bien sur en faisant varier les différentes quantités on obtient des couleurs différentes. Et ceci pour chaque pixel d'une image,. On a donc 256x256x256 couleurs possible pour un pixel.
La notion de transparence, ou alpha, ne se voit pas en réalité. Mais cette information permet de dire le taux d'influence qu'aura la couleur au moment qu'on la dessine sur l'image. Pour bien comprendre imaginons une feuille plastique transparente. Elle peut être complètement transparente, dans ce cas si on la pose sur une image l'image n'a pas changer. Par contre si la feuille de plastique est tintée de rouge, elle va rougir l'image sur laquelle on la pose. La feuille de plastique peut être plus ou moins transparente. Plus la feuille es opaque, moins on voit l'image d'origine. C'est cela que représente la notion d'alpha, la transparence de la couleur, de 0 (complètement transparente) à 255 (complètement opaque).
La couleur est représenter par un entier de 32 bits (int en java). Ici les nombre seront représenté en hexadécimal, car cette représentation permet de distingué immédiatement chaque composante de la couleur.Le choix fait par Java et de beaucoup de système est de ranger les composantes couleurs ainsi : les deux octets de poids forts la transparence, les deux suivants le rouge, les deux autre le vert et les deux derniers le bleu. Souvent noté ainsi AARRGGBB A : Alpha, R : Red (rouge), G : Green (vert) et B : Blue (bleu). Les lettres sont doublé pour rappeler que chaque composantes prend 2deux octets et ainsi peuvent variée de 00 (0) à FF (255).
Par exemple un rouge semi transparent : 0x80FF0000 : AA = 80, RR = FF, GG = 00, BB =00, donc alpha vaut 80 (128), rouge FF (255), vert 00 (0) et bleu 00 (0). Cette couleur, si on fait un mixage, va rougir la zone ou elle est appliquée.
-
La notion de peinture :
Représentée ici par JHelpPaint décrit comment peindre une zone selon un algorithme.
Pour le moment je n'ai implémenté que trois dégradés avec, mais il est possible de faire d'autres choses. Voir JHelpGradient, JHelpGradientHorizontal et JHelpGradientVertical
-
La notion de masque :
Représentée ici par JHelpMask est une grille de pixel allumé ou éteint. On peut ensuite associé une couleur pour chacun des deux états et du coup pour masquer une zone.
-
La notion de sprite :
Représentée ici par JHelpSprite est une image que l'on peut cacher/montrer, translater par dessus l'image principale.
L’intérêt est que si on dessine un décord de fond sur l'image principale, puis un personnage sur un sprite, on peut aisément l'animé sur l'image sans avoir à chaque mouvement à redessiner tout le décors, on s'occupe seulement du personnage lui même, le reste est déjà gérer ;).
Le sprite est intimement lié à une image, c'est pour cela qu'on ne peut le crée qu'à partir de l'image sur laquelle il va évoluer.
-
La notion de bump :
Le bump est un effet graphique qui permet à partir d'une image de dessiner des reliefs sur une autre image, un petit exemple :
+
=
-
La notion de contour :
Le contour permet d'extraire le contour des objets d'une image. Un exemple :
Donne
Pour ceux qui s’intéressent au code source lui même, il faut savoir que certaines méthodes convertissent la couleur ARGB en YUV. Le YUV est une autre façon de décrire une couleur. La notion qui est le plus utilisé est la partie Y qui représente la luminosité d'une couleur, ce qui permet d'avoir un grisé ou un contraste plus juste.
JHelpRichText est une table d'association symbol textuel, image.
Par exemple dans une zone de chat remplacer les :) par l'image d'un visage qui sourit.
Les images sont automatiquement redimensionnées pour s'incorporer au mieux au texte selon la police choisie lors de la génération de l'image contenant le texte avec ses remplacements.
UtilGUI regroupe divers utilitaires graphiques :
- Mettre la skin système pour que vos applications ressemblent aux autres du systèmes.
- Mettre à la taille optimum une application une fois la GUI construite tout en tenant compte de l'écran ou est affiché l'application
- Centrer vraiment un fenêtre à l'écran en tenant compte des éventuels tool bar que peut avoir l'utilisateur
- Étendre un fenêtre sur l'écran, en respectant les tool bar utilisateur
- Obtenir des informations sur les écrans disponible, sur quel écran est une fenêtre, changer d'écran
- Si le système hôte l'autorise, simuler l'appuie d'une touche, bouger la souris, faire un capture d'écran
- Et d'autres petits utilitaires sur les composants graphiques