Suiv.: 7.9 Inclassables
Sup.: 7 Programmes internes
Préc.: 7.7 Tris et dichotomies
Index
Table des matières
Un certain nombre de subroutines ont été écrites pour aider à une implémentation rapide des drivers :
SUBROUTINE GETUNF(UNIT, NAME, EXTEND) INTEGER UNIT CHARACTER NAME*(*) CHARACTER EXTEND*4
Retourne dans UNIT une unité logique libre pour faire un OPEN. Si le nom NAME existe déjà, on trouvera dans EXTEND une extension à faire à NAME, sinon EXTEND = ' '. NAME doit avoir moins de 64 caractères.
SUBROUTINE RCHARS(TXT, STRING, L) CHARACTER*(*) STRING, TXT INTEGER L
Imprime la chaîne TXT concaténée à STRING(1:L) puis édite STRING :
in: TXT*(*), STRING(1:L) (L> 0)
out: L et STRING(1:L)
SUBROUTINE RINTG(TXT, VAL, VMIN, VMAX) CHARACTER*(*) TXT INTEGER VAL, VMIN, VMAX
Imprime la chaîne TXT et lit VAL compris entre VMIN et VMAX :
in: TXT*(*), VMIN, VMAX
out: VAL
SUBROUTINE RREAL(TXT, VAL, VMIN, VMAX) REAL VAL, VMIN, VMAX CHARACTER*(*) TXT
Imprime la chaîne TXT et lit VAL compris entre VMIN et VMAX :
in: TXT*(*), VMIN, VMAX
out: VAL
SUBROUTINE WCHARI(I, TXT) INTEGER I CHARACTER*(*) TXT
SUBROUTINE WCHARS(TXT) CHARACTER*(*) TXT
INTEGER FUNCTION LONGG(STRING) CHARACTER *(*) STRING
Supprime les blancs de gauche et de droite et cadre la chaîne à gauche.
in: STRING la chaîne à traiter
out: STRING la chaîne cadrée à gauche et sans blancs au bout à droite et
LONGG le nombre de caractères de STRING après traitement
SUBROUTINE ENCOD(VAL,EPPS,TXT,LTXT) REAL VAL REAL EPPS CHARACTER*(*) TXT INTEGER LTXT
in: VAL valeur à coder et
EPPS epsilon relatif pour savoir si VAL est entier ou réel
out: TXT le codage de VAL en caractères et LTXT le nombre de caractères de TXT.
REAL FUNCTION DECOD(STRING) CHARACTER*(*) STRING
in: STRING la chaîne à décoder
out: DECODE la valeur de la chaîne
SUBROUTINE PPAUSE
INTEGER FUNCTION ZCENTR(CARAC, X, Y, TAILLE, DRWLIN) CHARACTER*1 CARAC REAL X, Y, TAILLE EXTERNAL DRWLIN
Tracé d'un caractère centré générique. Elle s'adresse à ceux dont le terminal ne sait pas tracer un caractère centré. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
Trace en X, Y le caractère CARAC de taille TAILLE
X, Y position du texte en cm.
TAILLE taille des caractères en cm.
DRWLIN fonction qui trace un trait entre deux points dont les coordonnées sont en cm. DRWLIN(X1, Y1, X2, Y2)
CARAC = caractère à tracer. On reconnaît les caractères suivants comme centrés
. + * x X o O 0 ~ ^ |
Elle renvoie 1 si elle a pu tracer le caractère. Elle renvoie 0 si elle n'a pas pu le tracer.
SUBROUTINE ZCOLOR(ROUGE, VERT, BLEU, NBCOLO) INTEGER NBCOLO REAL ROUGE(0:NBCOLO-1), VERT(0:NBCOLO-1), BLEU(0:NBCOLO-1)
Elle permet aux personnes fatiguées d'initialiser une table de couleurs. Attention la couleur 0 est le noir..... Les personnes dynamiques pourront faire mieux pour leur terminal particulier. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
en entrée: NBCOLO le nombre de couleurs
en sortie: ROUGE, VERT, BLEU la table de couleurs (les couleurs sont 0...1)
SUBROUTINE SPINTC(HHMIN,HHMAX,NNCDEB,NNCFIN) REAL HHMIN,HHMAX INTEGER NNCDEB,NNCFIN
Elle fait 'tourner' la table des couleurs entre les teintes HHMIN et HHMAX ( HHMIN ET HHMAX = 0...1 ). La partie de la table des couleurs qui est modifiée est comprise entre les indices NNCDEB et NNCFIN.
INTEGER FUNCTION ZFNDTC(RC, VC, BC, R, V, B, NBCOLO) REAL RC, VC, BC INTEGER NBCOLO REAL R(0:NBCOLO-1), V(0:NBCOLO-1), B(0:NBCOLO-1)
Subroutine générique de recherche de la couleur la plus proche dans la table de couleurs. Elle peut servir de modèle. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur. Elle renvoie l'index, dans la table de couleurs, de la couleur la plus proche de RC, VC, BC.
R, V, B Table de couleurs
NBCOLO nombre de couleurs dans la table
Toutes les couleurs sont entre 0. et 1.
SUBROUTINE ZGNUM(T1, T2, T3, IT1, IT2, IT3, STRING, ZGTXYC, MOUSE, N) CHARACTER*(*) STRING REAL T1(*), T2(*), T3(*) INTEGER IT1(*), IT2(*), IT3(*) INTEGER N EXTERNAL ZGTXYC
GETNUM générique. Elle permet aux personnes fatiguées d'avoir la fonction facilement. Les personnes dynamiques pourront faire mieux pour leur terminal particulier. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
En entrée:
T1(1) l'abscisse de début du texte à imprimer en cm.
T2(1) l'ordonnée de début du texte à imprimer en cm.
STRING(1:IT1(1)) le texte à imprimer
IT1(1) le nombre de caractères du texte à imprimer
IT2(1) le type du nombre à entrer (0 entier, 1 réel, 2 booléen)
IT2(2) la contrainte avec: 0, pas de contrainte ou 1, contraintes min et max sur les nombres
Les contraintes se trouvent dans:
IT3(1) = min, IT3(2) = max pour les nombres entiers
T3(1) = min, T3(2) = max pour les nombres réels
La subroutine ZGTXYC doit avoir la forme :
SUBROUTINE ZGTXYC(X, Y, C, MOUSE, N) REAL X, Y { EN C.M. } INTEGER N CHARACTER*1 C,MOUSE(N)
En sortie, suivant le type:
IT3(3) le nombre entier ou booléen (0=true, 1=false)
T3(3) le nombre réel
Si l'utilisateur tape (rc) on ne modifie pas les variables en sortie.
SUBROUTINE ZGTEXT(T1, T2, T3, IT1, IT2, IT3, STRING, ZGTXYC, MOUSE, N) CHARACTER*(*) STRING REAL T1(*), T2(*), T3(*) INTEGER IT1(*), IT2(*), IT3(*) INTEGER N CHARACTER*1 MOUSE(N) EXTERNAL ZGTXYC
GETEXT générique. Elle permet aux personnes fatiguées d'avoir la fonction facilement. Les personnes dynamiques pourront faire mieux pour leur terminal particulier. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
En entrée
T1(1) l'abscisse de début du texte à imprimer en cm.
T2(1) l'ordonnée de début du texte à imprimer en cm.
STRING(1:IT1(1)) le texte non éditable à imprimer
IT1(1) le nombre de caractères du texte non éditable à imprimer
IT2(1) le nombre de caractères maximum à entrer
IT3(1) le nombre de caractères du texte éditable initial
STRING(IT1(1)+1:IT1(1)+IT3(1)) le texte éditable initial
la subroutine ZGTXYC doit avoir la forme :
SUBROUTINE ZGTXYC(X, Y, C, MOUSE, N) REAL X, Y INTEGER N CHARACTER*1 C,MOUSE(N)
En sortie
T3(1), T3(2) l'abscisse et l'ordonnée de la fin du texte entré
IT3(1) le nombre de caractères entrés
STRING(IT1(1)+1:IT1(1)+IT3(1)) le texte entré
SUBROUTINE ZSTROK(T1, T2, T3, IT1, IT2, ZGTXYC, MOUSE, N) INTEGER IT1(*), IT2(*) REAL T1(*), T2(*), T3(*) INTEGER N CHARACTER*1 MOUSE(N) EXTERNAL ZGTXYC
STROKE générique. Elle permet aux personnes fatiguées d'avoir la fonction facilement. Les personnes dynamiques pourront faire mieux pour leur terminal particulier. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
En entrée
IT1(1) le nombre maximum de points à rentrer
IT1(2) la contrainte avec
IT1(2) = 0 pas de contraintes
IT1(2) = 1 deux points successifs de la courbe entrée sont séparés au minimum par T3(1) cm. et au maximum par T3(2) cm.
la subroutine ZGTXYC doit avoir la forme :
SUBROUTINE ZGTXYC(X, Y, C, MOUSE, N) REAL X, Y EN C.M. INTEGER N CHARACTER*1 C,MOUSE(N)
En sortie
IT2(1) le nombre de points effectivement rentrés
T1 le tableau des x en cm.
T2 le tableau des y en cm.
SUBROUTINE ZTXT(TXT, N, X, Y, SENS, CTX, CTY, TAILLE, DRAWTX) CHARACTER*(*) TXT INTEGER N REAL X, Y, SENS, CTX, CTY, TAILLE EXTERNAL DRAWTX
Tracé d'un texte générique par hardware. Elle s'adresse à ceux dont le terminal ne sait pas tracer un texte obliquement ou qui ne sait pas décentrer un texte. Attention, les caractères restent verticaux, ce qui rend le texte quasiment illisible pour certains angles..... Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
Trace en X, Y le texte TXT de N caractères de taille TAILLE de sens de tracé SENS avec le centrage CTX, CTY.
X, Y la position du texte en cm.
SENS la direction de tracé en fraction de PI/2
TAILLE la taille des caractères en cm.
CTX, CTY le centrage
DRAWTX est une subroutine qui trace un caractère de taille TAILLE à une position donnée (en cm.). Elle doit être de la forme:
SUBROUTINE DRAWTX(CARAC, X, Y) CHARACTER*1 CARAC REAL X, Y
SUBROUTINE ZSFTXT(TXT, N, X, Y, SENS, CTX, CTY, TAILLE) CHARACTER*(*) TXT INTEGER N REAL X, Y, SENS, CTX, CTY, TAILLE
Tracé d'un texte générique par software. Elle s'adresse à ceux dont le terminal ne sait pas tracer un texte obliquement ou qui ne sait pas décentrer un texte. Cette fonction peut être utilisée dans un driver F3D ou dans un programme utilisateur.
Trace en X, Y le texte TXT de N caractères de taille TAILLE de sens de tracé SENS avec le centrage CTX, CTY.
X, Y la position du texte en cm.
SENS la direction de tracé en fraction de PI/2
TAILLE la taille des caractères en cm.
CTX, CTY le centrage
SUBROUTINE ZIVRVB(RIN,VIN,BIN,ROUT,VOUT,BOUT) REAL RIN,VIN,BIN,ROUT,VOUT,BOUT
Calcule la couleur inverse de RIN, VIN, BIN (Rouge, Vert, Bleu) et la sort dans ROUT, VOUT, BOUT. La couleur inverse est celle qui a le plus grand contraste par rapport à la couleur donnée.
SUBROUTINE ZIVHSL(HIN,SIN,LIN,HOUT,SOUT,LOUT) REAL HIN,SIN,LIN,HOUT,SOUT,LOUT
Calcule la couleur inverse de HIN, SIN, LIN (Hue, Saturation, Light) et la sort dans HOUT, SOUT, LOUT. La couleur inverse est celle qui a le plus grand contraste par rapport à la couleur donnée.
SUBROUTINE ZIVCOL(COLIN,COLOUT) INTEGER COLIN,COLOUT
Calcule la couleur inverse de la couleur de numéro COLIN et sort son numéro COLOUT.
LOGICAL FUNCTION ZLINTM(R,V,B,NBCOLO) INTEGER NBCOLO REAL R(0:NBCOLO-1),V(0:NBCOLO-1),B(0:NBCOLO-1)
Renvoie TRUE si le terminal est linéaire (pour les couleurs).