Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 7.9 Inclassables Sup.: 7 Programmes internes Préc.: 7.7 Tris et dichotomies Index Table des matières


Aides à l'implémentation

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

Imprime I puis la  chaîne TXT.

      SUBROUTINE WCHARS(TXT)
      CHARACTER*(*) TXT

Imprime la  chaîne 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

Simulation d'une  pause.

      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).


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 7.9 Inclassables Sup.: 7 Programmes internes Préc.: 7.7 Tris et dichotomies Index Table des matières