Obligement - L'Amiga au maximum

Lundi 19 novembre 2018 - 04:40  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : GFA Basic - Intuition
(Article écrit par Denis Obriot et extrait d'Amiga News Tech - décembre 1989)


Le GFA Basic possède une liste impressionnante d'instructions permettant une utilisation aisée des possibilités d'Intuition (la partie du système d'exploitation chargée de gérer écrans, fenêtres, requêtes, menus et gadgets). Seule l'utilisation des gadgets n'est pas directement permise par ce langage.

Pourtant, tous les programmes du commerce utilisent abondamment ce moyen simple et pratique de communiquer avec l'ordinateur. Il serait de fait très intéressant de posséder des routines qui permettraient d'utiliser facilement les gadgets sous GFA Basic.

Gadget ?

Pour donner une définition simple du gadget, nous pouvons dire qu'il s'agit d'une zone d'écran particulière pouvant être actionnée par la souris et envoyant dans ce cas un message au programme, par l'intermédiaire d'Intuition.

Comme presque tous les éléments du système d'exploitation de l'Amiga, un gadget se définit dans une structure directement issue du langage C :

GFA Basic

Quelques explications pour ceux qui ne sont pas familiarisés avec le langage C :
  • STRUCT : zone de mémoire organisée qui permet, par référence a son seul nom, de manipuler un ensemble de variables de types très différents.
  • APTR : adresse mémoire de l'Amiga (c'est ce qu'on appelle un "pointeur" en C et en Pascal).
  • LONG : variable de type "entier" stockée sur 4 octets.
  • SHORT : variable de type "entier" stockée sur 2 octets.
  • USHORT : variable de type "entier non signé" stockée sur 2 octets.
Voilà pour les définitions préliminaires. Et maintenant, au travail !

La procédure

Nous trouvons ci-après le listing de la procédure qui nous servira à construire aisément une structure Gadget en GFA Basic. Après avoir tapé cette procédure dans l'éditeur du GFA, sauvez-la sous forme de bloc, ce qui vous permettra par la suite de l'incorporer facilement dans vos programmes, sans avoir besoin de la retaper à chaque fois.

GFA Basic

Les commentaires correspondent aux membres de la structure C.

La première ligne de la procédure réserve la mémoire nécessaire à la définition de la structure. La fonction GFA "MALLOC()" alloue une zone de mémoire de la longueur et du type spécifiés (voir le manuel du GFA, page 46). Ici, nous demandons 44 octets de mémoire Fast (&H4 réserve la mémoire en dehors de la mémoire Chip : à noter pour les Amiga avec moins d'un méga de mémoire, qu'il est nécessaire d'indiquer &H1 (NDLR : ou mieux, &H5 qui demande en priorité de la mémoire Fast et au cas où il n'y en a pas suffisamment, de la mémoire Chip)).

Nous récupérons l'adresse du début de cette zone dans la variable "gadget%". Si celle-ci vaut zéro, c'est qu'il n'y a pas assez de mémoire disponible dans l'Amiga. Sinon, grâce aux fonctions de manipulation de la mémoire qu'offre le GFA, nous remplissons la structure avec les valeurs passées en arguments à la procédure.

Pour finir, la fonction "AddGadget()" de la bibliothèque Intuition ajoute le gadget dans la liste des gadgets de la fenêtre voulue (celle-ci est indiquée par son adresse récupérée dans la ligne précédente).

Rien de tel qu'un bon exemple pour bien comprendre. Pour commencer, nous allons définir un gadget du type le plus simple : un gadget booléen (c'est-à-dire ne pouvant avoir que deux états, ON ou OFF). L'instruction GFA se présente ainsi :

gadget (100,100,50,50,0,2,1,0,0,1,0,gadget1%)
  • Les quatre premières valeurs (100,100,50,50) représentent les coordonnées du coin supérieur gauche ainsi que la largeur et la hauteur de la zone de sélection du gadget.
  • Les trois valeurs suivantes (0,2,1) définissent les caractéristiques du gadget (voir plus bas).
  • Les deux zéros suivants sont en fait des pointeurs de type NULL, car ce type de gadget ne se sert pas des informations qu'ils représentent.
  • Le "1" représente le numéro d'identification du gadget (utilisé par Intuition uniquement pour communiquer quel gadget a été sélectionné). Vous pouvez en fait lui donner la valeur que vous voulez.
  • "gadget1%" est la variable dans laquelle nous récupérons l'adresse de la structure Gadget ainsi définie.
Les trois valeurs définissant les caractéristiques du gadget méritent quelques explications. En les prenant dans l'ordre :

Flags (drapeaux) détermine la façon de rendre compte à l'écran de la sélection du gadget :
  • 0 : inversion vidéo de la zone de sélection.
  • 1 : tracé d'un rectangle autour de la zone de sélection.
  • 2 : affichage d'une image de sélection.
  • 3 : pas d'action à l'écran.
Ce drapeau peut prendre d'autres valeurs que nous verrons plus tard.

Activation définit la méthode de sélection autorisée pour ce gadget.
  • 1 : la souris doit encore pointer la zone de sélection quand le bouton est relâché.
  • 2 : Intuition prévient immédiatement, sans attendre que le bouton soit relâché.
  • 4 : indique que ce gadget, une fois sélectionné, termine la requête à laquelle il est rattaché.
  • 8 : Intuition communiquera tous les déplacements de la souris tant que le gadget sera sélectionné.
  • 256 : le gadget sera alternativement activé puis désactivé.
On peut combiner plusieurs caractéristiques par un "OR" entre les valeurs, par exemple : "8 OR 256".

Type définit le type du gadget :
  • 1 : gadget booléen.
  • 2 : gadget proportionnel (on dit aussi "ascenseur de réglage", comme par exemple dans Deluxe Paint pour changer une couleur).
  • 4 : gadget de chaîne (permet la saisie et la modification de texte par frappe au clavier).
Voilà, nous avons défini notre gadget. Reste maintenant à savoir comment le mettre en oeuvre et récupérer l'information de sélection dans notre programme. C'est ce que montrent les lignes de GFA suivantes :

GFA Basic
GFA Basic
GFA Basic

La fin

Voilà, c'est tout pour aujourd'hui. La prochaine fois, nous verrons comment définir une image au format Intuition, ce qui nous permettra d'ajouter l'image à notre gadget. En attendant, amusez-vous bien...


[Retour en haut] / [Retour aux articles] [Article suivant]