Les graphiques
La bibliothèque AMIGA "graphic.library" est responsable de tout ce qui concerne le graphisme. Il est déclaré avec les types de données associés et leur variable de base "GfxBase" dans le fichier d'inclusion "graphics.lib". Nous souhaitons nous limiter ici aux procédures et fonctions les plus importantes.
La bibliothèque graphique doit d'abord être ouverte :
- OpenLib(GfxBase,'graphics.library',0);
La plupart des commandes graphiques font référence au port Rast de la fenêtre de sortie, que nous connaissons déjà :
ClearScreen(Rast:Ptr); |
Supprime la fenêtre vers laquelle pointe le port snap "Rast".
Move(Rast:Ptr;x,y:Integer) |
Définit le curseur graphique à la position spécifiée.
Draw(Rast:Ptr;x,y:Integer) |
Dessine une ligne depuis la position du curseur dans la couleur de premier plan actuelle jusqu'à l'emplacement spécifié.
SetAPen(Rast:Ptr;col:Integer) |
Détermine la couleur actuelle du premier plan. Cela s'applique à la plupart des fonctions graphiques, par exemple aussi pour «Draw».
SetBPen(Rast:Ptr;col:Integer) |
Définit la couleur d'arrière-plan (par exemple pour la sortie de texte).
SetDrMd(Rast:Ptr;mode:Integer); |
Définit le mode de sortie, par exemple, 1 pour "normal", 3 pour une sortie inversée (la sortie et le contenu de la fenêtre sont XOR), 4 pour une sortie inverse (n'a de sens que pour la sortie texte).
GfxText(Rast:Ptr;s:Str;count:Integer):Boolean; |
Affiche le texte du paramètre s à partir de la position du curseur. Dans ce cas, la chaîne de caractères ne doit pas nécessairement se terminer par un octet nul comme d'habitude, mais la longueur à afficher est passée comme troisième paramètre.
Le drapeau renvoyé par cette fonction indique si une erreur s'est produite. D'ailleurs, cette fonction s'appelle simplement «Text», mais c'est déjà le nom d'un type de données PASCAL, alors elle a été renommé GfxText par Kick-Pascal.
RectFill(Rast:Ptr;minX,minY,maxX,maxY:Integer); |
Cette procédure permet de remplir un rectangle avec la couleur de premier plan.
WritePixel(Rast:Ptr;x,y:Integer) |
Ce procédure permet de définir un seul point.
Il existe de nombreuses autres commandes graphiques, mais celles-ci suffiront pour l'instant.
Un programme de démonstration pour ces fonctions :
- Program Grafik;
- {$incl "graphics.lib", "intuition/intuition.h"}
- Var
- Win:^Window;
- Rp:^RastPort;
- Err:Boolean;
- Msg:Ptr;
- I:Integer;
- BEGIN
- OpenLib(GfxBase,'graphics.library',0);
- Win:=Open_Window(0,0,640,200,1,_CLOSEWINDOW,GIMMEZEROZERO+ACTIVATE+WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH,
- 'Grafikdemo',Nil,640,200,640,200);
- Rp:=Win^.RPort;
- Move(Rp,5,40);
- SetAPen(Rp,1);
- SetBPen(Rp,3);
- SetDrMd(Rp,1);
- Err:=GfxText(Rp,'Ceci est une démo graphique. ######',28);
- SetAPen(Rp,3);
- For I:=0 to 20 do Begin
- Move(Rp,220+20*I,5);
- Draw(Rp,620,5+9*I)
- End;
- For I:=1 to 10 do Begin
- SetAPEn(Rp,1+I mod J);
- RectFill(Rp,5*I,75*2*I,320-25-I,180-8*I)
- End;
- Msg:=Wait_Port(Win^.UserPort);
- Msg:=Get_Msg(Win^.Userport);
- Replay_Msg(Msg);
- Close_Window(Win);
- END.
Une autre fonction doit être mentionnée ici :
SetRGB4
Bien sûr, à la longue, il devient ennuyeux de toujours travailler avec les couleurs d'écran standard. Avec «SetRGB4», vous pouvez modifier la palette de couleurs sur vos propres écrans. Pour ce faire, vous avez besoin d'un pointeur vers le "ViewPort" de l'écran, étant un champ (c'est-à-dire pas un pointeur !) de la structure de l'écran. Si «Scr» est le descripteur d'écran, alors le code ressemble à ceci :
- SetRGB4(^Scr^.ViewPort,Number,R,G,B);
Signification des autres paramètres : "Number" est le numéro de la couleur à changer. Pour un écran à trois plans de bits, par exemple : B. Les valeurs de 0 à 7 ont du sens. "R", G" et "B" indiquent les composantes de couleur rouge, bleue et verte de la couleur souhaitée. Chaque composante est un nombre de 0 bit 15.
Exemple :
- { ... }
- SetRGB4(Vp,0,15,15,15); { Fond : blanc }
- SetRGB4(Vp,1, 0, 0, 6); { Couleur 1 : Bleu foncé }
- SetRGB4(Vp,2,15,11,11); { Couleur 2 : Rose }
- SetRGB4(Vp,3, 0, 0, 0); { Couleur 3 : Noir }