Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : AmigaBasic - fonctionnement de certaines instructions de la bibliothèque graphique
(Article écrit par Sébastien Chevrel et extrait d'A-News (Amiga News) - octobre 1988)
|
|
Amis passionnés de BASIC qui attendez désespérément une rubrique dédiée à ce langage, vos espoirs sont enfin récompensés. A
partir de ce numéro, vous pourrez me retrouver chaque mois (bonjour la galère !) dans cette rubrique AmigaBasic.
Étant donné qu'il existe bon nombre de livres pour débuter, nous aborderons ensemble des problèmes de programmation avancée
(sprites, défilements, animations, dessins, gestion des bibliothèques...).
Exemple 1
Comme vous devez le savoir, il existe en AmigaBasic d'intéressantes instructions, capables d'appeler depuis vos programmes
des routines en langage machine stockées dans des bibliothèques. Vous trouverez les plus courantes dans le répertoire "BasicDemos"
de votre disquette "Extras".
Je vais essayer aujourd'hui de vous expliquer le fonctionnement de certaines instructions de la bibliothèque graphique qui vous
aideront, j'en suis sûr.
L'instruction d'appel de la bibliothèque graphique est :
LIBRARY "graphics.library"
|
...qui ne fonctionnera que si le fichier "graphics.bmap" est dans le répertoire courant. Une fois cette instruction lancée,
vous avez accès en théorie à toutes les routines de la bibliothèque. En fait, vous n'avez accès qu'a certaines routines :
celles qui ne renvoient aucune valeur. Les autres doivent être déclarées comme fonctions grâce à l'instruction "DECLARE FUNCTION
nom de routine& LIBRARY".
Bon, maintenant que vous en avez vraiment ras-le-bol de mon discours théorique, passons à l'action. Regardez attentivement ce programme :
LIBRARY "graphics.library"
CALL SetDrMd& (WINDOW(8),3)
LINE (0,0)-(100,100),1,bf
LINE (0,0)-(100,100),1,bf
CALL SetDrMd& (WINDOW(8),1)
LIBRARY CLOSE
|
Waaouuh ! Juste le temps de récupérer à la petite cuillère le reste de vos neurones surchauffés avant de commencer les explications.
Ce programme charge la bibliothèque graphique, et appelle la routine SetDrMd& qui change le mode d'affichage, dans ce cas en
inversion vidéo ("INVERSEVIDEO") la première fois et en "JAM2", mode de base, ensuite.
Les deux instructions "LINE" démontrent que deux affichages identiques en inversion vidéo s'annulent
et restaurent l'image de base. Ce principe est utilisé pour le changement de taille et le déplacement des fenêtres.
Exemple 2
A présent, avalez deux ou trois boîtes d'aspirine et essayez ce programme :
LIBRARY "graphics.library"
DECLARE FUNCTION Move& LIBRARY
DEFINE X,Y
TEXT$="ONLY AMIGA MAKES IT POSSIBLE"
WHILE MOUSE(0)=0:WEND
X=MOUSE(1):Y=MOUSE(2)
e&=Move&(WINDOW(8),X,Y)
PRINT TEXT$;
LIBRARY CLOSE
|
La bibliothèque graphique est à nouveau chargée, mais dans ce cas, on déclare la routine "Move&" comme fonction, c'est-à-dire
qu'elle renverra une valeur dans la variable d'appel, ici "e&".
Trois boîtes de raviolis, un pack de bière, deux kilos d'oranges, 100 grammes de disquettes... Je me demande des fois si je
ne confond jamais la liste des courses avec mes notes ? Ce programme attend un clic de la souris pour afficher aux coordonnées
du pointeur une chaîne de caractères.
Récapitulatif
Un petit récapitulatif des routines avec leur syntaxe :
SetDrIVId& (rastport,mode)
Change le mode d'affichage de la fenêtre activée. Le rastport est le pointeur sur la structure de la fenêtre activée en
AmigaBasic WINDOW(8), le mode est au choix : 0=JAM1 - 1=JAM2 - 2=INVERSEVIDEO - 4=COMPLEMENT.
On peut combiner les modes en ajoutant la valeur de chacun.
Move& (rastport,x,y). Place le curseur graphique aux coordonnées (x,y). Doit être déclaré.
Flood& (rastport,mode,x,y). Remplissage beaucoup plus rapide et puissant que "PAINT" aux coordonnées (x,y). Pour le
mode de remplissage voir "AREAFILL".
Attention : les instructions AREA (100,100) AREAFILL sont nécessaires en début de programme pour utiliser cette routine sans
message du très grand et vénéré le gourou.
Voilà, c'est tout! Pour plus de renseignements voir le ROM Kernel Manual Library & Devices. N'hésitez pas à me contacter sur
3615 DEEP BAL WORKBENCH.
|