Gadget2D
Publié : mar. 15/nov./2011 12:38
Lien :
http://www.megaupload.com/?d=LHA4EH1I
Ajout :
Gadget2D_WINDOW
gestion des gadgets parents / enfants
--------------------------------------------------------
Bonjour,
je reprend sur un nouveau topique la suite de ce thread : http://www.purebasic.fr/french/viewtopi ... =2&t=12350
Pour résumer, l'idée est de faire une blibiotheque de Gadget fonctionant en mode "Screen" ( d'ou l'appelation Gadget2D ), le plus identique possible à la bibliotheque de gadget "standard" fournit avec PB.
Je suis actuelement en train de poser les "bases" du code que je vais mettre à disposition dès que cette "base" sera finit ( dans la semaine ). Afin que tout le monde puisse y mettre son grain de sel
Actuelement j'ai uniquement un Button Gadget, et le chargement d'un "Design" sous forme d'un fichier .PNG ( plutot que BMP pour la gestion du canal Alpha ) et .PREF. J'expliquerai le fonctionnement plus tard et on le modifira en fonction des avis de tout le monde.
Pour finir ma "base", il me reste à écrire le "Texte" dans le bouton.
Je sais comment faire, je me pose juste des questions sur la meilleur façon de le faire ou des idées de méthode pour "optimiser" le code
Plutot que d'ecrire le Text dans le sprite du bouton, j'ai opté pour une solution qui résoud une "complication", et permet d'activer une option que je trouve plaisante. Je m'explique :
Les Gadget2Ds gèrent l'opacité pour l'affichage.
Le texte peut être écrit directement dans le sprite du gadget, il prendra donc l'opacité du gagdet. Pour changer le texte du gadget il faut "redessiner" TOUT le gadget ou alors pondre un algo qui va se charger d'effacer le texte précédent en se servant de la prétendu taille du texte ( avec TextWidth() et TextHeight() ). Pas infaisable, mais pas simple. D'autant plus que le "Design" supporte un fond d'écran qui peut etre si on le souhaite un motif répétable.
Autre méthode : on creer un nouveau Sprite juste pour le texte, de la meme taille que son gadget et qui va se superposer à l'affichage. Le fond sera transparent, le texte sera réécrit facilement, en "redessinant" le sprite en le remplissant avec la couleur tranparente ( Box() ).
Option sympa : on va pouvoir gérer le niveau d'opacité du texte différent du gadget lui meme, et donc avoir par exemple, un gadget translucide avec un texte avec la couleur vif/pleine.
Cela rajoute un sprite en mémoire, et donc consomme un peu plus de mémoire ... de plus à l'affichage on devra afficher 2 sprites pour chaque gadget, donc perte de FPS ( peut etre minime ou pas , mais perte quand meme ). Une alternative pourrait être de stocker un 3em sprite pour chaque gadget , 0 => Border + Fond , 1 = Texte , 2 ==> Mixe des 2 pour affichage d'un sprite unique.
Ce qui m'ennuie c'est de pondre une procédure/méthode/algo pour effacer le texte d'un gadget sans avoir à tout redessiner, bien que cela soit aussi une possibilité, peut etre mème la plus simple à coder.
Je n'ai surement pas penser à tout.
Votre avis, les pro du PB ? Vous, vous feriez comment ?
http://www.megaupload.com/?d=LHA4EH1I
Ajout :
Gadget2D_WINDOW
gestion des gadgets parents / enfants
--------------------------------------------------------
Bonjour,
je reprend sur un nouveau topique la suite de ce thread : http://www.purebasic.fr/french/viewtopi ... =2&t=12350
Pour résumer, l'idée est de faire une blibiotheque de Gadget fonctionant en mode "Screen" ( d'ou l'appelation Gadget2D ), le plus identique possible à la bibliotheque de gadget "standard" fournit avec PB.
Je suis actuelement en train de poser les "bases" du code que je vais mettre à disposition dès que cette "base" sera finit ( dans la semaine ). Afin que tout le monde puisse y mettre son grain de sel
Actuelement j'ai uniquement un Button Gadget, et le chargement d'un "Design" sous forme d'un fichier .PNG ( plutot que BMP pour la gestion du canal Alpha ) et .PREF. J'expliquerai le fonctionnement plus tard et on le modifira en fonction des avis de tout le monde.
Pour finir ma "base", il me reste à écrire le "Texte" dans le bouton.
Je sais comment faire, je me pose juste des questions sur la meilleur façon de le faire ou des idées de méthode pour "optimiser" le code
Plutot que d'ecrire le Text dans le sprite du bouton, j'ai opté pour une solution qui résoud une "complication", et permet d'activer une option que je trouve plaisante. Je m'explique :
Les Gadget2Ds gèrent l'opacité pour l'affichage.
Le texte peut être écrit directement dans le sprite du gadget, il prendra donc l'opacité du gagdet. Pour changer le texte du gadget il faut "redessiner" TOUT le gadget ou alors pondre un algo qui va se charger d'effacer le texte précédent en se servant de la prétendu taille du texte ( avec TextWidth() et TextHeight() ). Pas infaisable, mais pas simple. D'autant plus que le "Design" supporte un fond d'écran qui peut etre si on le souhaite un motif répétable.
Autre méthode : on creer un nouveau Sprite juste pour le texte, de la meme taille que son gadget et qui va se superposer à l'affichage. Le fond sera transparent, le texte sera réécrit facilement, en "redessinant" le sprite en le remplissant avec la couleur tranparente ( Box() ).
Option sympa : on va pouvoir gérer le niveau d'opacité du texte différent du gadget lui meme, et donc avoir par exemple, un gadget translucide avec un texte avec la couleur vif/pleine.
Cela rajoute un sprite en mémoire, et donc consomme un peu plus de mémoire ... de plus à l'affichage on devra afficher 2 sprites pour chaque gadget, donc perte de FPS ( peut etre minime ou pas , mais perte quand meme ). Une alternative pourrait être de stocker un 3em sprite pour chaque gadget , 0 => Border + Fond , 1 = Texte , 2 ==> Mixe des 2 pour affichage d'un sprite unique.
Ce qui m'ennuie c'est de pondre une procédure/méthode/algo pour effacer le texte d'un gadget sans avoir à tout redessiner, bien que cela soit aussi une possibilité, peut etre mème la plus simple à coder.
Je n'ai surement pas penser à tout.
Votre avis, les pro du PB ? Vous, vous feriez comment ?