Obligement - L'Amiga au maximum

Mardi 19 mars 2024 - 10:14  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : ARexx - Menus, capacités graphiques et mathématiques
(Article écrit par François Gueugnon et extrait d'Amiga News Tech - mai 1992)


Nous terminons ici la revue des modalités d'emploi des fonctions ARexx par l'évocation des menus, des capacités graphiques et de la bibliothèque mathématique, utilisables dans les programmes et "macros" de tous genres.

Nous avons vu et utilisé les différentes façons de dialoguer avec les fenêtres et les écrans. Il y a aussi la possibilité de dialoguer avec les menus, de la même manière qu'avec Intuition. Le mécanisme reste le même et est limité à du texte seulement en menus et sous-menus (Item et SubItem d'Intuition). Le jeu de commandes disponibles est :
  • AddMenu : ajoute un menu et son nom.
  • RemoveMenu : permet de l'enlever.
  • AddItem : ajoute une commande principale au menu, mais n'a pas d'équivalent inverse pour l'ôter.
  • SetItem : permet de contrôler l'action d'un élément, par le paramètre ON ou OFF, avec la mise en place du marqueur.
  • AddSubItem : ajoute un sous-menu à un élément. SetItem fonctionne ici aussi, pour peu qu'on le précise dans le champ ad-hoc.
C'est tout pour les menus, et c'est un peu maigre... Quant aux drapeaux IDCMP, on trouve le principal, MENUPICK, qui peut être modifié par ModifyHost de façon à obtenir par "%m", le numéro de menu, par "%i" le numéro d'élément (Item) et par "%s" le numéro de SubItem sélectionné par l'utilisateur.

La méthode d'utilisation est toujours la même et fait grand usage des fonctions de dialogue : WAITPKT, GETPKT, GETARG et REPLY (à ne pas oublier sous peine d'encombrement attirant inévitablement l'attention du Gourou !).

Les fonctions graphiques

Bien qu'ARexx n'ait aucune prétention graphique, il lui faut bien sacrifier au style Amiga. Un certain nombre de fonctions élémentaires est disponible. Comme beaucoup d'autres, elles sont accessibles moyennant la mise en action des bibliothèques spécifiques, RexxARPLib.library et ScreenShare.library qui, comme les bibliothèques communes d'ARexx, doivent résider dans le répertoire LIBS: et être installées avec AddLib.

Le nombre maximal de couleurs dépend bien évidemment du mode graphique choisi à l'ouverture de l'écran spécifique ou non.
  • SetRGB4 associe un pinceau avec une couleur spécifiée en RVB (Rouge, Vert, Bleu) par un chiffre modulo 16 (1 et 17 sont identiques).
  • SetAPen et SetBPen précisent le pinceau courant et sa couleur. Les fonctions de pinceaux et couleurs doivent être spécifiées avant les autres fonctions... mais cela n'a rien d'original !
Une suite de fonctions intéressantes, ScreenRows, ScreenCols, ScreenLace et ScreenColor, permet d'obtenir la définition et les couleurs d'écrans quelconques (celui du Workbench par défaut, à l'exception de ScreenColor, qui doit être dirigée vers un écran nommable si l'on sait le faire, ou dont on connaît déjà le nom).

Le texte

Les polices peuvent être modifiées par SetFont. On ne peut préciser que le nom et la taille, ce qui limite l'emploi aux polices orthodoxes (les cyrilliques aussi...).

Le positionnement précis du texte s'obtient par Move. La fonction d'écriture prorement dite, Text, peut contenir le texte réel entre guillemets, ou une instance. En utilisant WindowText, le texte peut contenir des barres obliques inversées (anti-slashes ou "\") qui réalisent un saut de ligne chacun. SetDrMd permet les combinaisons JAM1, JAM2, INVERSVID et COMPLEMENT, qui spécifient la façon dont le texte apparaîtra à l'écran en fonction du fond.

Les traits

Les fonctions Move et Draw permettent de tracer un trait issu de la position (x1, y1) contenue dans Move et se terminant à la position (x2, y2) contenue dans Draw. DrawCircle trace un cercle de position (x, y) et de rayon r. DrawEllipse fait de même, en spécifiant les deux axes orthogonaux de l'ellipse. Cependant, ces deux axes sont toujours parallèles aux bords de l'écran. Un "trait" limité à un pixel placé en (x, y) est disponible avec WritePixel.

Les surfaces

RectFill fournit un rectangle plein de la taille et à la position déterminées par les coordonnées des coins haut-gauche et bas-droit. AreaCircle fournit un cercle plein et AreaEllipse fait de même pour l'ellipse.

AreaMove initialise une surface polygonale. AreaDraw trace une arête à partir du point précédent de la surface et AreaEnd termine le tracé. La façon dont la surface ainsi créée est remplie est originale : on peut spécifier un pinceau normal (déclaré dans SetApen par exemple), mais si l'on donne un numéro de pinceau différent tout change :
  • pen = 256+i (0 <= i <= 15) donne seize motifs de remplissage différents !
  • pen = 512+i (0 <= i <= 124) donne 125 figures de mélange (dither), en utilisant les pinceaux 0 à 7. Si ces pinceaux sont mis respectivement à Noir, Blanc, Rouge, Vert, Bleu, Cyan, Magenta et Jaune, on peut former 125 couleurs différentes !
Pour calculer le numéro de pinceau, on utilise la formule suivante : pinceau=R*25+G*5+B, où R, G et B peuvent prendre les valeurs 0, 1, 2, 3 et 4. Un pinceau Blanc (R, G et B au maximum) donne un numéro de pinceau de 4x25+4x5+4=124.

En additionnant 1024 au numéro de pinceau, on inhibe AreaEnd alors que 2048 devrait entourer la zone à remplir d'un trait de la couleur du pinceau A (SetAPen) courant. Il semble toutefois qu'un défaut (bogue) empêche les fonctions AreaCircle et AreaEllipse de profiter de cette excitante fonction !

Les images IFF

Il est aussi possible d'importer (mais pas de sauvegarder, hélas !) des images au format IFF, sous certaines conditions. Si la ColorMap de l'image n'est pas utilisée lorsque l'écran Workbench est la cible, elle l'est dans un écran personnalisé capable de supporter le mode de l'image.

On peut ou non utiliser les couleurs de l'image, suivant la présence de l'indicateur NOCOLOR. Tous les modes sont accessibles selon la définition de l'écran personnalisé. La fonction IFFImage permet d'importer une image entière, ou seulement un morceau découpé en hauteur et largeur à partir du coin haut-gauche de l'image et de le placer où l'on veut sur l'écran.

Il y a cependant des règles à ne pas transgresser : la taille de l'image importée ne doit pas dépasser celle de l'écran défini. Comme la taille de l'écran n'a qu'un degré de liberté (la hauteur) et qu'elle ne peut être éventuellement que plus petite que celle d'un écran standard, et que la largeur de l'écran ne peut être que standard, cela limite le suraffichage de certaines images à la taille standard (ou plus petite dans l'une ou l'autre des dimensions, ou les deux). La punition en cas de manquement à la règle est curieusement un refus pur et simple de charger l'image, suivi d'une sortie immédiate du programme en cours, assortie d'un commentaire laconique "paramètres non convenables" !


[Retour en haut] / [Retour aux articles] [Article précédent]