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
|
|
|
|
Test de ReqLib
(Article écrit par Stéphane Schreiber et extrait d'Amiga News Tech - juillet 1991)
|
|
Présentation
ReqLib est une bibliothèque Amiga standard, totalement réentrante, destinée à faciliter - et à uniformiser - la
création de requêtes. Elle dispose notamment d'une puissante requête de fichiers (FileRequester)
pouvant être utilisée en tant que requête pour les polices (FontRequester), d'une requête de couleur
(ColorRequester) et d'une requête de chaînes (StringRequester) gérant des opérations de formatage
du texte, façon printf().
ReqLib est un programme de Colin Fox (de Pyramid Designs) et de Bruce Dawson (de CygnusSoft Software).
Il est librement distribuable, mais n'est pas placé dans le domaine public (c'est-à-dire que les sources
ne sont pas fournis, et que vous n'avez pas le droit de modifier le code exécutable). Vous pouvez
l'utiliser dans vos propres programmes, même commerciaux, sans payer ne serait-ce que l'ombre d'une
redevance aux auteurs. A ma connaissance, de nombreux programmes utilisent déjà la req.library, dont
The Art Department
d'ASDG, Inc. et ImageLink d'Active Circuits, Inc.
Req.library s'utilise exactement comme une bibliothèque système (dos, intuition...) : il faut d'abord
l'ouvrir, mémoriser son adresse de base, puis la fermer lorsqu'on n'en a plus besoin. Elle est évidemment
utilisable aussi bien depuis l'assembleur que depuis le C (Aztec ou Lattice). En fait, n'importe quel
langage, même l'AmigaBasic, convient !
Exemple d'ouverture en C :
Le même, en assembleur :
Ses fonctions
Partant de là, les fonctions listées ci-dessous (et classées par thème), disponibles.
Affichage d'une requête de type AutoRequest, mais plus évoluée :
- SimpleRequest() : requête à un bouton.
- TwoGadRequest() : requête à deux boutons.
- TextRequest() : requête à trois boutons.
Affichage d'une requête de chaîne :
- GetString : requête de chaîne de caractères.
- GetLong : requête de nombre 32 bits.
Affichage d'un sélectionneur de fichier(s) ou de police(s) :
- FileRequester()
- PurgeFiles()
Affiche une requête de palette :
Création dynamique de gadgets (pour programmes réentrants) :
- MakeGadget() : alloue un gadget booléen.
- MakeString() : alloue un gadget de chaînes.
- MakeProp() : alloue un gadget proportionnel.
- MakeButton() : alloue un gadget booléen.
- MakeScrollBar() : alloue un gadget proportionnel.
Gestion des gadgets proportionnels :
- SetSize()
- ReadLocation()
- Setlocation()
Gestion des gadgets liés à une fenêtre :
- LinkGadget()
- LinkStringGadget()
- LinkPropGadget()
Routines diverses :
- DrawBox : dessine un rectangle d'un coup.
- GetFontWidthAndHeight : renvoie la taille de la police.
- RealTimeScroll : défilement suivant un ascenseur.
- RawReyToAscii : conversion touches RAW en ASCII.
- Center : centrage d'une fenêtre.
- Format : formatage de texte à la sprintf().
Il serait vain de décrire ici toutes ces fonctions, une à une. L'archive
de distribution contient un exemple d'utilisation de la req.library, ShowOffReq, démontrant une grande partie
de ces fonctions (en fait, toutes celles qui ont un résultat visible à l'écran).
Utilisation
Une bibliothèque étant faite pour les programmeurs, divers fichiers includes sont fournis, tant pour les
adeptes du C que pour ceux de l'assembleur. Ce sont req.h, reqbase.h et reqbase.i (étonnant, non ?)
qu'il conviendra de placer dans votre répertoire "Include:Libraries/". Un fichier reqproto.h est également
fourni, pour utilisation avec le Lattice. Concernant l'assembleur, reqbase.i est écrit comme les autres
includes standard de Commodore, à savoir en utilisant les macros STRUCTURE, LABEL et autres LONG,
et non avec la pseudo-instruction "rs" du Devpac (bien que Devpac comprenne également cette forme, l'assemblage
est plus rapide avec "rs"). Par contre, reqbase.i contient également les définitions des Library Vector
Offsets (_LV0xxx), alors qu'il eût été plus logique de les mettre à part, dans req_lib.i par exemple
(ce pour rester conforme avec la structure des autres includes). Enfin, un fichier nommé macros.i
contient devinez quoi ? Quelques macros destinées à vous faciliter la vie.
Deux autres fichiers objet, areqglue.o et lreqglue.o sont plus particulièrement destinés à être reliés
avec votre code, C ou assembleur, suivant l'utilisation que vous désirez faire de la req.library.
Il s'agit de ce que l'on nomme des routines "glue", c'est-à-dire des bouts de routines destinés à
faciliter l'interfaçage avec d'autres routines, plus complexes. En l'occurrence, on y trouve les routines
récupérant les paramètres depuis la pile dans les registres adéquats puis appelant les fonctions de la
bibliothèque (ceci plus particulièrement pour le langage C) et la définition des fonctions SimpleRequest()
et TwoGadRequest(), qui ne sont que des simplifications de l'appel à TextRequest, qui elle fait partie
intégrante de la bibliothèque (heu... ça va, vous suivez encore ?), areqglue.o est destiné au compilateur
ou à l'assembleur Aztec, tandis que lreqglue.o est destiné au Lattice.
Un petit programme supplémentaire, nommé CustomizeFile et dont le source est fourni, montre comment
modifier/corriger les fonctions de la bibliothèque (avec SetFunction() d'exec.library) pour, par
exemple, personnaliser la requête de fichiers.
Dernier point important, la documentation req.doc liste toutes les fonctions de la bibliothèque de
manière détaillée, avec syntaxe, description des paramètres, effet, bogues connus... exactement à la
manière du RKM Includes & AutoDocs.
Nom : ReqLib.
Auteurs : Colin Fox et Bruce Dawson.
Genre : création de requêtes.
Date : 1990.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire.
Licence : gratuiciel.
Téléchargement : Fish 400.
|
|