Lib G2D_Gadget bêta de la bêta

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Lib G2D_Gadget bêta de la bêta

Message par comtois »

http://perso.wanadoo.fr/comtois/sources/G2D_Gadget.zip

Cette lib est prévue pour le mode plein écran.
Le besoin est venu du petit éditeur 2D que je bricolais .
Peut-être que certaines commandes trouveront une utilité dans des jeux en mode plein écran , ne serait-ce que pour renseigner la page options du jeu .


Le fichier fait 8ko avec la lib , un fichier residents et un exemple

Pour l'instant , il y a


G2D_Event() <<< C'est l'équivalent de WindowEvent()
G2D_EventGadgetID()
G2D_ButtonGadget()
G2D_CheckBoxGadget()
G2D_Frame3DGadget()
G2D_OptionGadget()
G2D_TextGadget()
G2D_GadgetX()
G2D_GadgetY()
G2D_GadgetWitdh()
G2D_Gadget_Height()
G2D_SetGadgetState()
G2D_GetGadgetState()
G2D_SetGadgetText()
G2D_GetGadgetText()


Les paramètres sont exactement les mêmes et dans le même ordre que les commandes purebasic .


Il existe aussi

G2D_AreaGadget()

Ce sont des zones qui peuvent être détectées par la souris .
Je ne sais pas s'il y a un équivalent dans purebasic ?


il y a un exemple d'utilisation dans l'éditeur 2D

La prochaine commande sera

G2D_ScrollBarGadget()

Je n'ai pas fait de doc , mais c'est pratiquement la même que celle de purebasic ,à quelques détails près .

les constantes pour les options ne sont pas les mêmes .
Je voulais utiliser les mêmes que purebasic au départ .
Mais finalement j'ai préféré utiliser
#G2D_Left
#G2D_Right
plutôt que
#PB_Button_Right : Aligne le texte du bouton à droite.
#PB_Button_Left : Aligne le texte du bouton à gauche.
Parce que ça devrait s'appliquer à tous les gadgets qui comportent du texte , y compris les OptionGadget().
Et j'ai ajouté
#G2D_Cadre
Pour entourer ou non le texte des CheckBoxGadget() et des OptionGadget() , pour garder la présentation de l'éditeur 2D en cours .

A quoi sert réellement cette lib ? ben à vrai dire , à pas grand chose , c'est tellement mieux d'utiliser Windows, alors disons que c'est amusant de faire ça , c'est déjà pas mal :)

[EDIT]
Voici un extrait du fichier exemple :

Code : Tout sélectionner

;-Les Gadget2D
G2D_CheckBoxGadget(#CB_Couche0   ,892,50 ,106,18,"Couche 0"   ,#G2D_Cadre)
G2D_CheckBoxGadget(#CB_Couche1   ,892,70 ,106,18,"Couche 1"   ,#G2D_Cadre)
G2D_CheckBoxGadget(#CB_Couche2   ,892,90 ,106,18,"Couche 2"   ,#G2D_Cadre)
G2D_ButtonGadget  (#BT_Sauve     ,892,110,106,18,"Sauve Map"  ,#G2D_Cadre)
G2D_ButtonGadget  (#BT_Charge    ,892,130,106,18,"Charge Map" ,#G2D_Cadre)
G2D_ButtonGadget  (#BT_EffaceTout,892,150,106,18,"Efface Tout",#G2D_Toggle | #G2D_Cadre)
G2D_ButtonGadget  (#BT_Precedent ,892,190, 18,18,"<"          ,#G2D_Centre) 
G2D_TextGadget    (#TX_NoMap     ,912,190, 64,18,Str(Compteur),#G2D_Centre) 
G2D_ButtonGadget  (#BT_Suivant   ,978,190, 18,18,">"          ,#G2D_Centre) 
G2D_OptionGadget  (#Op_Brosse1   ,892,210,106,18,"Brosse1"    ,#G2D_Left )
G2D_OptionGadget  (#Op_Brosse2   ,892,230,106,18,"Brosse2"    ,#G2D_Left )
G2D_ButtonGadget  (#BT_Quitter   ,892,250,106,18,"Quitter"    ,#G2D_Cadre)
Tailbite permet de mettre des options je crois ? je vais regarder pour l'intégrer , comme ça l'options deviendra facultative (Comme la lib Gadget).
Dernière modification par comtois le dim. 31/oct./2004 13:52, modifié 2 fois.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Pour les options, s'est super simple

il faut faire comme ça :

On veut la procedure suivante Machin(Truc, [Bignou, [Bidule]]) avec Bignou en option 1 et Bidule en option 2

Il suffit de faire 3 procedures :
Machin(Truc)
Machin2(Truc, Bignou)
Machin3(Truc, Bignou, Bidule)

et hop, on a les params optionnels :wink:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ok merci , je vais essayer ça demain

là je vais me coucher :)

Bonne nuit
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Salut comtois

je me demandais ou tu en étais avec ta librairie ?
c'est toujours en developpement ? finit ? abandonner ?
car je n'en voie pas de trace sur ton site web
Et je t'avoue que ça m'interesse grandement !! :oP
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ben tu me connais , je commence tout , et je ne finis jamais rien :)

Pour mon site c'est vrai que je ne le tiens pas à jour , va falloir que j'y songe bientôt .

Je voulais mettre un peu d'ordre dans le code avant de le diffuser , mais si ça t'intéresse , je peux te le transmettre tel quel .
Je n'ai pas ajouté de nouvelles fonctions ,c'est les mêmes que décrites plus haut.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

Si ca peut t’encourager, je risque d’être fort intéressé aussi, particulièrement si elle est assez complète comme le suggère ton premier mail.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Voila le source , comme tu peux le constater ,c'est du bricolage :)
c'est juste des lines , des box ,et des circles , bref , du 100% purebasic .

Tu devais t'attendre à nettement mieux , mais ça suffit pour mes besoins (voir l'usage que j'en fais dans l'éditeur cité plus haut) .

Maintenant que j'ai vu un bout de code de nico qui montre comment obtenir la hauteur d'un texte , à l'occasion ,je vais ajouter cette fonction pour mieux gérer les textes.

Code : Tout sélectionner

;Comtois 03/12/04

;/ Définition des Gadgets 2D
;Gadget2D disponibles
Enumeration
  #G2D_ButtonGadget
  #G2D_ButtonImageGadget
  #G2D_CheckBoxGadget 
  #G2D_Frame3DGadget
  #G2D_ImageGadget  
  #G2D_OptionGadget
  #G2D_ScrollBarGadget
  #G2D_TextGadget
EndEnumeration  

Structure Area2D
  id.l
  x.l
  y.l
  Largeur.l
  Hauteur.l
  Options.l
EndStructure

Structure Gadget2D
  id.l
  Type.l
  x.l
  y.l
  Largeur.l
  Hauteur.l
  Minimum.l
  Maximum.l
  LongueurPage.l
  Texte.s
  ImageID.l
  Options.l
  FrameId.l            ; Pour les OptionsGadgets2D
  Etat.l
  Focus.l
EndStructure
  
;/Définition souris
#SO_AucunBouton  = 0
#SO_BoutonGauche = 1
#SO_BoutonDroit  = 2
#SO_HorsCadre    = -1
Structure Souris
  x.l
  y.l
  PrecGauche.l
  FrontMGauche.l
  FrontDGauche.l
  FixeGauche.l
  PrecDroit.l
  FrontMDroit.l
  FrontDDroit.l
  FixeDroit.l
EndStructure  
Global Souris.Souris 
Global MemFDGadgetID,MemFMGadgetID,MemFocus,MemAreaID
Global CCadre,CFond
Global Coul1,Coul2,Coul3,Coul4,Coul5
Global CoulTexte
CFond=$505050
CCadre=$FFFFFF
CoulTexte=0
Coul1=RGB(255,255,255)
Coul2=RGB(241,239,226)
Coul3=RGB(157,157,161)
Coul4=RGB(113,111,100)
Coul5=RGB(224,223,227)


;- Les procédures
ProcedureDLL G2D_Gadget2D_Init()
  NewList Area2D.Area2D()
  NewList Gadget2D.Gadget2D()
EndProcedure
Procedure TestZone(x1,Y1,X2,Y2)
  Trouve=#False
  If Souris\x>x1 And Souris\x<X2 And Souris\y>Y1 And Souris\y<Y2
    Trouve=#True
  EndIf  
  ProcedureReturn Trouve
EndProcedure    
ProcedureDLL G2D_CouleurFond(Coul)
  CFond=Coul
EndProcedure
ProcedureDLL G2D_CouleurCadre(Coul)
  CCadre=Coul
EndProcedure  
Procedure TestAreaId(id)
  Trouve=#False
  ForEach Area2D()
    If Area2D()\id=id
      Trouve=#True
      Break
    EndIf
  Next  
  ProcedureReturn Trouve
EndProcedure
Procedure TestId(id)
  Trouve=#False
  ForEach Gadget2D()
    If Gadget2D()\id=id
      Trouve=#True
      Break
    EndIf
  Next  
  ProcedureReturn Trouve
EndProcedure
Procedure ChercheDerniereFrame()
  ForEach Gadget2D()
    If Gadget2D()\Type=#G2D_Frame3DGadget
      DerniereFrame=Gadget2D()\id
    EndIf
  Next  
  ProcedureReturn DerniereFrame
EndProcedure
Procedure G2D_ChangeEtatOption(Gadget,FrameId)
  ForEach Gadget2D()
    If Gadget2D()\id<>Gadget And Gadget2D()\Type=#G2D_OptionGadget And Gadget2D()\FrameId=FrameId 
      Gadget2D()\Etat=0    
    EndIf
  Next  
EndProcedure  
Procedure MemoireAreaId()
  MemAreaID=0
  ForEach Area2D()
    If Souris\x>Area2D()\x And Souris\x<Area2D()\x+Area2D()\Largeur And Souris\y>Area2D()\y And Souris\y<Area2D()\y+Area2D()\Hauteur
      MemAreaID=Area2D()\id
      Break
    EndIf  
  Next
EndProcedure  
Procedure MemoireFDGadgetID()
  ForEach Gadget2D() 
    If Gadget2D()\id=MemFMGadgetID
      If Souris\x>Gadget2D()\x And Souris\x<Gadget2D()\x+Gadget2D()\Largeur And Souris\y>Gadget2D()\y And Souris\y<Gadget2D()\y+Gadget2D()\Hauteur
        MemFDGadgetID=Gadget2D()\id
        ;Mise à jour 
        Type=Gadget2D()\Type
        Select Type
          Case #G2D_ButtonGadget
            If (Gadget2D()\Options & #G2D_Toggle)
              Gadget2D()\Etat=1-Gadget2D()\Etat
            EndIf
          Case #G2D_CheckBoxGadget
            Gadget2D()\Etat=1-Gadget2D()\Etat
          Case #G2D_OptionGadget
            Gadget2D()\Etat=1
            G2D_ChangeEtatOption(Gadget2D()\id,Gadget2D()\FrameId)
        EndSelect     
        Break
      EndIf
    EndIf  
  Next
EndProcedure   
Procedure MemoireFMGadgetID()
  ;Cherche si le front montant de la souris est sur un gadget
  ForEach Gadget2D() 
    If Gadget2D()\Type<>#G2D_Frame3DGadget And Souris\x>Gadget2D()\x And Souris\x<Gadget2D()\x+Gadget2D()\Largeur And Souris\y>Gadget2D()\y And Souris\y<Gadget2D()\y+Gadget2D()\Hauteur
      ;mémorise le gadget pour l'animation  
      MemFMGadgetID=Gadget2D()\id
      Break
    EndIf
  Next
EndProcedure  
Procedure G2D_AfficheCadreArea()
  DrawingMode(4)
  Box(Area2D()\x,Area2D()\y,Area2D()\Largeur,Area2D()\Hauteur,Coul3)
EndProcedure
Procedure G2D_AfficheCadre()
  DrawingMode(0)
  Coul1=RGB(255,255,255)
  Coul2=RGB(241,239,226)
  Coul3=RGB(157,157,161)
  Coul4=RGB(113,111,100)
  Coul5=RGB(224,223,227)
  x=Gadget2D()\x
  y=Gadget2D()\y
  l=Gadget2D()\Largeur
  h=x=Gadget2D()\Hauteur
  If Gadget2D()\Etat=1 Or (MemFMGadgetID=Gadget2D()\id And TestZone(x,y,x+l,y+h))
    Line(x,y,l-1,0,Coul4)
    Line(x,y,0,h-1,Coul4)  
    Line(x+1,y+1,l-2,0,Coul3)  
    Line(x+1,y+1,0,h-2,Coul3)   
    Box(x+2,y+2,l-3,h-3,Coul5)
    Line(x,y+h-1,l,0,Coul1)
    Line(x+l-1,y,0,h,Coul1)  
    Line(x+1,y+h-2,l-3,0,Coul2)
    Line(x+l-2,y+1,0,h-2,Coul2) 
  Else
    Line(x,y,l-1,0,Coul1)
    Line(x,y,0,h-1,Coul1)  
    Line(x+1,y+1,l-2,0,Coul2)  
    Line(x+1,y+1,0,h-2,Coul2)   
    Box(x+2,y+2,l-3,h-3,Coul5)
    Line(x,y+h-1,l,0,Coul4)
    Line(x+l-1,y,0,h,Coul4)  
    Line(x+1,y+h-2,l-3,0,Coul3)
    Line(x+l-2,y+1,0,h-2,Coul3)   
  EndIf
EndProcedure
Procedure G2D_AfficheTexte()
  ;/Affiche le texte
  ;Texte à gauche
  If Gadget2D()\Options & #G2D_Left
    PosX=Gadget2D()\x+1
  ;Texte à droite  
  ElseIf Gadget2D()\Options & #G2D_Right
    PosX=Gadget2D()\x+Gadget2D()\Largeur-TextLength(Gadget2D()\Texte)
    Debug PosX
  ;Texte au centre  
  Else  
    PosX = Gadget2D()\x + (Gadget2D()\Largeur-TextLength(Gadget2D()\Texte))/2
  EndIf
  DrawingMode(1) : DrawingFont(#PB_Default)
  FrontColor(Red(CoulTexte),Green(CoulTexte),Blue(CoulTexte))
  Locate(PosX,Gadget2D()\y)
  DrawText(Gadget2D()\Texte)
EndProcedure
Procedure G2D_AfficheTexteFrame3D()
  ;/Affiche le texte
  DrawingFont(#PB_Default)
  ;Texte à gauche
  If Gadget2D()\Options & #G2D_Left
    PosX=Gadget2D()\x+1
  ;Texte à droite  
  ElseIf Gadget2D()\Options & #G2D_Right
    PosX=Gadget2D()\x+Gadget2D()\Largeur-TextLength(Gadget2D()\Texte)
    Debug PosX
  ;Texte au centre  
  Else  
    PosX = Gadget2D()\x + (Gadget2D()\Largeur-TextLength(Gadget2D()\Texte))/2
  EndIf
  ;Efface la zone du texte
  Line(PosX,Gadget2D()\y,TextLength(Gadget2D()\Texte),0,Coul5)
  DrawingMode(1) 
  FrontColor(Red(CoulTexte),Green(CoulTexte),Blue(CoulTexte))
  Locate(PosX,Gadget2D()\y-8)
  DrawText(Gadget2D()\Texte)
EndProcedure
Procedure G2D_PresenceTexte()
  ;La méthode qui suit n'est pas très catholique , à revoir
  If Len(Gadget2D()\Texte)
    ;Sauvegarde les données 
    memetat=Gadget2D()\Etat : memx=Gadget2D()\x : memlargeur=Gadget2D()\Largeur
    ;Change les données
    Gadget2D()\Etat=0 : Gadget2D()\x+Gadget2D()\Hauteur+1 : Gadget2D()\Largeur-Gadget2D()\Hauteur-1
    ;Affiche le cadre
    If Gadget2D()\Options & #G2D_Cadre
      G2D_AfficheCadre()
    EndIf  
    G2D_AfficheTexte()
    ;Restitue les données 
    Gadget2D()\Etat=memetat : Gadget2D()\x=memx : Gadget2D()\Largeur=memlargeur
  EndIf 
EndProcedure
Procedure G2D_AfficheButton()
  G2D_AfficheCadre()
  G2D_AfficheTexte()
EndProcedure  
Procedure G2D_AfficheFrame3D()
  DrawingMode(0)
  Box(Gadget2D()\x,Gadget2D()\y,Gadget2D()\Largeur,Gadget2D()\Hauteur,Coul5)
  DrawingMode(4)
  Box(Gadget2D()\x,Gadget2D()\y,Gadget2D()\Largeur,Gadget2D()\Hauteur,Coul3)
  If Len(Gadget2D()\Texte)
    G2D_AfficheTexteFrame3D()
  EndIf  
EndProcedure
Procedure G2D_AfficheCheckBox()
  ;/Trace le cadre de la check box
  DrawingMode(0)
  Box(Gadget2D()\x,Gadget2D()\y,Gadget2D()\Hauteur,Gadget2D()\Hauteur,Coul5)
  DrawingMode(4)
  Box(Gadget2D()\x,Gadget2D()\y,Gadget2D()\Hauteur,Gadget2D()\Hauteur,Coul3)
  If Gadget2D()\Etat
    Moitie=Gadget2D()\Hauteur/2
    CentreX=Gadget2D()\x+Moitie
    CentreY=Gadget2D()\y+Moitie
    Moitie/2
    Line(CentreX,CentreY,-Moitie,-Moitie,#Black)
    Line(CentreX,CentreY,Moitie,-Moitie,#Black)
    Line(CentreX,CentreY,-Moitie,Moitie,#Black)
    Line(CentreX,CentreY,Moitie,Moitie,#Black)
  EndIf 
  ;Affiche le texte 
  G2D_PresenceTexte()
EndProcedure
Procedure G2D_AfficheOption()
  ;/Trace le cercle
  coulfond=CFond
  coulcadre=CCadre
  CentreX=Gadget2D()\x+Gadget2D()\Hauteur/2
  CentreY=Gadget2D()\y+Gadget2D()\Hauteur/2
  Rayon=5
  DrawingMode(0)
  Circle(CentreX,CentreY,Rayon,Coul5)
  DrawingMode(4)
  Circle(CentreX,CentreY,Rayon,Coul3)
  If Gadget2D()\Etat
    DrawingMode(0)
    Circle(CentreX,CentreY,Rayon-2,#Black)
  EndIf 
  ;Affiche le texte 
  G2D_PresenceTexte()
EndProcedure
Procedure G2D_AfficheTextGadget()
  G2D_AfficheCadre()
  G2D_AfficheTexte()
EndProcedure 
Procedure G2D_AfficheGadget()
  StartDrawing(ScreenOutput())
  ForEach Gadget2D()
    Type = Gadget2D()\Type
    Select Type
      Case #G2D_ButtonGadget
       G2D_AfficheButton()
      Case #G2D_ButtonImageGadget
      Case #G2D_CheckBoxGadget 
        G2D_AfficheCheckBox()
      Case #G2D_ImageGadget
      Case #G2D_Frame3DGadget
        G2D_AfficheFrame3D()
      Case #G2D_OptionGadget
        G2D_AfficheOption()
      Case #G2D_ScrollBarGadget
      Case #G2D_TextGadget
        G2D_AfficheTextGadget()
    EndSelect    
  Next  
  ForEach Area2D()
    If Area2D()\Options & #G2D_Cadre
      G2D_AfficheCadreArea()
    EndIf
  Next  
  StopDrawing()
EndProcedure  
Procedure GestionSouris()
  If ExamineMouse()
    Souris\x = MouseX()
    Souris\y = MouseY()
    Souris\FixeGauche=MouseButton(1)
    Souris\FixeDroit=MouseButton(2)
    Souris\FrontMGauche=0
    Souris\FrontMDroit=0
    Souris\FrontDGauche=0
    Souris\FrontDDroit=0    
    If MouseButton(1) And Souris\PrecGauche=#False
      Souris\FrontMGauche=#True
    EndIf
    If MouseButton(1)=#False And Souris\PrecGauche=#True
      Souris\FrontDGauche=#True
    EndIf
    If MouseButton(2) And Souris\PrecDroit=#False
      Souris\FrontMDroit=#True
    EndIf
    If MouseButton(2)=#False And Souris\PrecDroit=#True
      Souris\FrontDDroit=#True
    EndIf
    Souris\PrecGauche=MouseButton(1)  
    Souris\PrecDroit=MouseButton(2) 
    
  EndIf
EndProcedure
ProcedureDLL G2D_EventGadgetID()
  ProcedureReturn MemFDGadgetID 
EndProcedure 
ProcedureDLL G2D_EventAreaID()
  ProcedureReturn MemAreaID 
EndProcedure
ProcedureDLL G2D_Event()
  G2D_AfficheGadget()
  GestionSouris()
  MemAreaID=0
  MemFDGadgetID=0
  ;Mémorise le gadget dans lequel a lieu l'évènement
  If Souris\FrontMGauche
    MemoireFMGadgetID()
  EndIf  
  ;Un gadget est validé
  If MemFMGadgetID
    If Souris\FrontDGauche  
      MemoireFDGadgetID()
    EndIf 
  EndIf  
 
  If Souris\FixeGauche=#False
    MemFMGadgetID=0
  EndIf 
  If MemFDGadgetID=0 And MemFMGadgetID=0
    MemoireAreaId()
  EndIf
  ;Un évènement est pris en compte sur un gadget sur un front descendant de la souris , s'il y a eu un front montant au préalable 
  If MemFDGadgetID And Souris\FrontDGauche
    ProcedureReturn #G2D_Event_Gadget
  ElseIf MemAreaID
    ProcedureReturn #G2D_Event_Area
  Else
    ProcedureReturn #False
  EndIf   
EndProcedure
ProcedureDLL G2D_EventType()
  If Souris\FrontMGauche
    ProcedureReturn #G2D_EventType_LeftUp
  ElseIf Souris\FrontDGauche
    ProcedureReturn #G2D_EventType_LeftDown 
  ElseIf Souris\FixeGauche
    ProcedureReturn #G2D_EventType_LeftClick
  ElseIf Souris\FrontMDroit
    ProcedureReturn #G2D_EventType_RightUp 
  ElseIf Souris\FrontDDroit
    ProcedureReturn #G2D_EventType_RightDown
  ElseIf Souris\FixeDroit
    ProcedureReturn #G2D_EventType_RightClick    
  Else
    ProcedureReturn 0
  EndIf  
EndProcedure
ProcedureDLL G2D_AreaGadget(Area, x, y, Largeur, Hauteur) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestAreaId(Area)=#False 
    ;Alors on peut le créer 
    If AddElement(Area2D())
      Area2D()\id=Area
      Area2D()\x=x
      Area2D()\y=y
      Area2D()\Largeur=Largeur
      Area2D()\Hauteur=Hauteur
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_AreaGadget2(Area, x, y, Largeur, Hauteur,Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestAreaId(Area)=#False 
    ;Alors on peut le créer 
    If AddElement(Area2D())
      Area2D()\id=Area
      Area2D()\x=x
      Area2D()\y=y
      Area2D()\Largeur=Largeur
      Area2D()\Hauteur=Hauteur
      Area2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_ButtonGadget(Gadget, x, y, Largeur, Hauteur, Texte$) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_ButtonGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=#G2D_Centre
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_ButtonGadget2(Gadget, x, y, Largeur, Hauteur, Texte$ , Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_ButtonGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_ButtonImageGadget(Gadget, x, y, Largeur, Hauteur, ImageID) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_ButtonImageGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\ImageID=ImageID
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat
EndProcedure
ProcedureDLL G2D_CheckBoxGadget(Gadget, x, y, Largeur, Hauteur, Texte$) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_CheckBoxGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=#G2D_Left
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_CheckBoxGadget2(Gadget, x, y, Largeur, Hauteur, Texte$ , Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_CheckBoxGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_Frame3DGadget(Gadget, x, y, Largeur, Hauteur, Texte$ , Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_Frame3DGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_ImageGadget(Gadget, x, y, Largeur, Hauteur, ImageID , Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_ImageGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\ImageID=ImageID
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat
EndProcedure
ProcedureDLL G2D_OptionGadget(Gadget, x, y, Largeur, Hauteur, Texte$) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_OptionGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=#G2D_Left
      Gadget2D()\FrameId=ChercheDerniereFrame()
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_OptionGadget2(Gadget, x, y, Largeur, Hauteur, Texte$,Options) 
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_OptionGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=Options
      Gadget2D()\FrameId=ChercheDerniereFrame()
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat 
EndProcedure
ProcedureDLL G2D_ScrollBarGadget(Gadget, x, y, Largeur, Hauteur, Minimum, Maximum, LongueurPage , Options)
  Resultat=#False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_ScrollBarGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Minimum=Minimum
      Gadget2D()\Maximum=Maximum
      Gadget2D()\LongueurPage=LongueurPage
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat
EndProcedure
ProcedureDLL G2D_TextGadget(Gadget, x, y, Largeur, Hauteur, Texte$ , Options) ; G2D_TextGadget(Gadget, x, y, Largeur, Hauteur, Texte$ , Options)
  Resultat = #False
  ;Le gadget n'existe pas ?
  If TestId(Gadget)=#False 
    ;Alors on peut le créer 
    If AddElement(Gadget2D())
      Gadget2D()\Type=#G2D_TextGadget
      Gadget2D()\id=Gadget
      Gadget2D()\x=x
      Gadget2D()\y=y
      Gadget2D()\Largeur=Largeur
      Gadget2D()\Hauteur=Hauteur
      Gadget2D()\Texte=Texte$
      Gadget2D()\Options=Options
      Resultat=#True
    EndIf
  EndIf 
  ProcedureReturn Resultat
EndProcedure  
ProcedureDLL G2D_GetAreaState(Area) 
  Etat=0
  ForEach Area2D()
    If Area2D()\id=Area
      If Souris\x>Area2D()\x And Souris\x<Area2D()\x+Area2D()\Largeur And Souris\y>Area2D()\y And Souris\y<Area2D()\y+Area2D()\Hauteur
        Etat=1
      Else
        Etat=0
      EndIf
      Break
    EndIf
  Next
  ProcedureReturn Etat
EndProcedure 
ProcedureDLL G2D_SetGadgetText(Gadget, Texte$) 
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      If Gadget2D()\Type=#G2D_TextGadget
        Gadget2D()\Texte=Texte$
      EndIf
      Break
    EndIf
  Next
EndProcedure  
ProcedureDLL.s G2D_GetGadgetText(Gadget) 
  Texte$=""
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      If Gadget2D()\Type=#G2D_TextGadget
        Texte$=Gadget2D()\Texte
      EndIf
      Break
    EndIf
  Next
  ProcedureReturn Texte$
EndProcedure  
ProcedureDLL G2D_SetGadgetState(Gadget, Etat) 
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      If  Gadget2D()\Type=#G2D_ButtonGadget And (Gadget2D()\Options & #G2D_Toggle)
        Gadget2D()\Etat=Etat
      ElseIf Gadget2D()\Type=#G2D_CheckBoxGadget
        Gadget2D()\Etat=Etat
      ElseIf Gadget2D()\Type=#G2D_OptionGadget
        Gadget2D()\Etat=Etat
        If Etat
          G2D_ChangeEtatOption(Gadget,Gadget2D()\FrameId)
        EndIf  
      EndIf
      Break
    EndIf
  Next
EndProcedure  
ProcedureDLL G2D_GetGadgetState(Gadget) 
  Etat=0
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      Etat=Gadget2D()\Etat
      Break
    EndIf
  Next
  ProcedureReturn Etat
EndProcedure 
ProcedureDLL G2D_GadgetX(Gadget) 
  x=-1
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      x=Gadget2D()\x
      Break
    EndIf
  Next
  ProcedureReturn x
EndProcedure    
ProcedureDLL G2D_GadgetY(Gadget) 
  y=-1
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      y=Gadget2D()\y
      Break
    EndIf
  Next
  ProcedureReturn y
EndProcedure 
ProcedureDLL G2D_GadgetWidth(Gadget) 
  Largeur=0
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      Largeur=Gadget2D()\Largeur
      Break
    EndIf
  Next
  ProcedureReturn Largeur
EndProcedure
ProcedureDLL G2D_GadgetHeight(Gadget) 
  Hauteur=0
  ForEach Gadget2D()
    If Gadget2D()\id=Gadget
      Hauteur=Gadget2D()\Hauteur
      Break
    EndIf
  Next
  ProcedureReturn Hauteur
EndProcedure   
ProcedureDLL G2D_Gadget2D_end()
  ClearList(Area2D())
  ClearList(Gadget2D())
EndProcedure
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Répondre