Page 1 sur 1
Tuto CanvasGadget
Publié : lun. 06/mai/2013 18:12
par MetalOS
Salut Tous le monde, je suis à la recherche d'un tuto pour faire des GUI avec des CanvasGadget dans ce genre:
Si quelqu'un à ca sous la main je suis preneur. Merci d'avance

Re: Tuto CanvasGadget
Publié : lun. 06/mai/2013 22:20
par G-Rom
Les gui , c'est ce qu'il y a de plus simple à programmer.
il te faut des structure commune à tout les gadgets , qui contient position , taille , parent , enfant , image.
une autre structure globale pour les evenement.
chaque gadget dérive de la 1° structure (extends) , et tu spécialises.
ex :
Code : Tout sélectionner
#EVENT_BUTTON_PRESSED = 0x01
Structure sVecteur2i
x.i
y.i
EndStructure
Structure sGadget
position.sVecteur2i ; position
size.sVecteur2i ; taille
imageID.i ; image
List event.l() ; evenement
*func_render ; fonction de rendu
*func_event
EndStructure
Global NewList eventMessage.i() ;<- fait des fct pr géré ca
;
;- BOUTON
;
Structure toggleButton Extends sGadget
state.b
EndStructure
Procedure toggleButton_event(*b.toggleButton)
If sourisclick ; <- a toi de jouer...
state = #True
AddElement(eventMessage())
eventMessage() = #EVENT_BUTTON_PRESSED
Else
state = #False
EndIf
EndProcedure
Procedure toggleButton_render(*b.toggleButton)
;dessine sur l'image du bouton
EndProcedure
Procedure createToggleButton()
*b.toggleButton = AllocateMemory(SizeOf(toggleButton))
*b\func_event = @toggleButton_event()
*b\func_render = @toggleButton_render()
EndProcedure
ensuite il faut que tu codes une structure centrale "gui" , qui stocke tout les gadgets et qui appelle les fct° d'event et de rendu , après l'image du gadget tu la rend ou tu veut, sprite , fenetre , ecran , canvas, etc...
Re: Tuto CanvasGadget
Publié : mar. 07/mai/2013 2:02
par graph100
Salut MetalOS, pour te donner un exemple, tu peux aller voir le travail que j'ai réaliser sur ce type de gadgets (et il y a plein de code dispo sur le fofo anglais, mais ils ne s'intègrent pas entre eux.)
Custom Gadget
Re: Tuto CanvasGadget
Publié : mar. 07/mai/2013 3:21
par MetalOS
@G-Rom Merci pour ton explication et exemple, ça va me servir pour essayer comprendre le chmilblique
@Graph100 Je ne connaissais pas ton CustomGadget et sa semble très intéréssant, je voie en plus qu'il est compatible Windows et Linux et sûrement Mac OS X. Je vais tester sous Mac et je te donnerais des nouvelles.
Je vais déjà me mettre à bosser sur ce que vous avez mis voir ce que je peut faire. Merci les gars

Re: Tuto CanvasGadget
Publié : mar. 07/mai/2013 10:20
par G-Rom
voila comment je structurerais le code :
Code : Tout sélectionner
;-GESTION DES EVENTS
Enumeration $FF
#GUI_Event_Gadget
EndEnumeration
Structure sEvent
type.w
*gadget
EndStructure
;-GESTION DES GADGETS
Structure sVecteur2i
x.i
y.i
EndStructure
Structure sGadget
position.sVecteur2i ; position
size.sVecteur2i ; taille
imageID.i ; image
List event.l() ; evenement
*func_render ; fonction de rendu
*func_event
EndStructure
;-GESTION DE LA GUI
Structure sGui
List event.sEvent()
List gadgetList.sGadget()
EndStructure
Procedure.i initializeGUI()
*g.sGui = AllocateMemory(SizeOf(sGui))
InitializeStructure(*g,sGui)
ProcedureReturn *g
EndProcedure
Procedure renderGui(*g.sGui, output)
If *g
;
; gestion des event
;
ForEach *g\gadgetList()
CallCFunctionFast(*g\gadgetList()\func_event,*g\gadgetList())
Next
;
; affichage ( rendu off screen )
;
ForEach *g\gadgetList()
CallCFunctionFast(*g\gadgetList()\func_render,*g\gadgetList())
Next
;
; affichage ( rendu output ) canvas , sprite , screen, etc...
;
StartDrawing(output)
ForEach *g\gadgetList()
DrawImage(ImageID( *g\gadgetList()\imageID ), *g\gadgetList()\position\x, *g\gadgetList()\position\y)
Next
StopDrawing()
StartDrawing(output)
StopDrawing()
EndIf
EndProcedure
ca te permet de dérivé tout tes gadgets de la structure sGadget , la structure gui s'occupe de rendre le tout, faut juste que chaque gadget ai sa propre
fonction pour gerer les events & faire un rendu interne (si besoin) et de l'affiché sur ce que tu veut.
Re: Tuto CanvasGadget
Publié : jeu. 09/mai/2013 14:32
par MetalOS
Merci pour les précisions G-Rom. Sa sera un plus pour m'aider à comprendre

Re: Tuto CanvasGadget
Publié : ven. 21/juin/2013 21:20
par Atlante
[déplacé section débutants]