home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 18
/
CD_ASCQ_18_111294_W.iso
/
dos
/
prg
/
c
/
x_lib10
/
xs.doc
< prev
next >
Wrap
Text File
|
1994-10-20
|
31KB
|
1,025 lines
════════════════════════════════════════════════════════════════════════════
LE GESTIONNAIRE D'ECRAN
────────────────────────────────────────────────────────────────────────────
présentation
────────────
Le gestionnaire d'écran offre un ensemble de services encapsulés dans la
classe XScrMgr et accessibles via son instance globale xs.
La classe XScrMgr n'est constituée que de membres statiques et n'est pas
dérivable.
construction du gestionnaire
────────────────────────────
Le gestionnaire est construit automatiquement avant la fonction main()
grâce à son instance globale xs.
Après sa construction, un appel à init() est nécessaire pour assurer son
initialisation.
destruction du gestionnaire
───────────────────────────
Le gestionnaire est détruit automatiquement en fin d'exécution.
Avant sa destruction, un appel à init() est nécessaire pour quitter le
gestionnaire.
curseurs logique et physique
────────────────────────────
Le gestionnaire assure la gestion de deux curseurs : l'un logique et
l'autre physique.
Le curseur logique est un curseur simulé constituant le point de départ
de toutes les fonctions d'affichage du gestionnaire.
Le curseur physique est celui qui est affiché par le BIOS vidéo.
index des fonctions
───────────────────
╒═══════════════════════════════════════════════════════════════════╕
│ fonction utilisation │
├───────────────────────────────────────────────────────────────────┤
│ addr renvoie l'adresse de base du segment vidéo │
│ addr modifie l'adresse de base du segment vidéo │
│ cdef renvoie l'identificateur de forme du curseur │
│ cdef modifie la forme du curseur physique │
│ fill remplit l'écran avec une cellule │
│ hght renvoie le nombre de lignes affichées │
│ incc déplace horizontalement le curseur logique │
│ incr déplace verticalement le curseur logique │
│ init initialise ou quitte le gestionnaire │
│ lcol renvoie le numéro de colonne du curseur logique │
│ lpos positionne le curseur logique │
│ lrow renvoie le numéro de ligne du curseur logique │
│ mode renvoie le mode d'affichage courant │
│ mode sélectionne le mode d'affichage courant │
│ outa affiche un bloc d'attributs │
│ outa affiche une ligne d'attributs │
│ outb affiche un tableau de caractères │
│ outc affiche un bloc de caractères │
│ outc affiche une ligne de caractères │
│ outf affiche un cadre │
│ outl affiche une chaîne de caractères spéciale │
│ outr inverse les attributs d'un cadre │
│ outs affiche une chaîne de caractères │
│ outw affiche un bloc de cellules │
│ outw affiche une ligne de cellules │
│ pcol renvoie le numéro de colonne du curseur physique │
│ ppos positionne le curseur physique │
│ prow renvoie le numéro de ligne du curseur physique │
│ shdw affiche une ombre autour d'un bloc │
│ type renvoie le type de l'écran │
│ wdth renvoie le nombre de colonnes affichées │
└───────────────────────────────────────────────────────────────────┘
════════════════════════════════════════════════════════════════════════════
XScrMgr::addr public:static
renvoie l'adresse de base du segment vidéo 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
long addr (void)
description
addr() renvoie l'adresse de base du segment vidéo.
Le résultat de addr() est une adresse longue fixée par addr() et mode(),
et composée d'un segment et d'un déplacement dans ce segment.
voir aussi
XScrMgr::addr(), XScrMgr::mode()
════════════════════════════════════════════════════════════════════════════
XScrMgr::addr public:static
modifie l'adresse de base du segment vidéo 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void addr (long adr)
paramètres
adr adresse longue
assertions
adr adresse valide
description
addr() modifie l'adresse de base du segment vidéo en la remplaçant par
l'adresse longue adr.
En règle générale, adr est une des deux constantes suivantes :
╒═══════════════════════════════════════════════════════════╕
│ segment utilisation │
├───────────────────────────────────────────────────────────┤
│ xs_MSEG segment monochrome 0xB000 │
│ xs_CSEG segment couleur 0xB800 │
└───────────────────────────────────────────────────────────┘
addr() replace le curseur logique à son origine.
voir aussi
XScrMgr::addr(), XScrMgr::lpos(), XScrMgr::mode(), XScrMgr::type()
════════════════════════════════════════════════════════════════════════════
XScrMgr::cdef public:static
renvoie l'identificateur de forme du curseur physique 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int cdef (void)
description
cdef() renvoie l'identificateur de forme du curseur physique.
Le résultat de cdef() est une des constantes utilisée pour modifier la
forme du curseur physique.
voir aussi
XScrMgr::cdef()
════════════════════════════════════════════════════════════════════════════
XScrMgr::cdef public:static
modifie la forme du curseur physique 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void cdef (int cid)
paramètres
cid identificateur de forme
assertions
cid identificateur valide
description
cdef() modifie la forme du curseur physique en lui associant une des
trois formes prédéfinies identifiée par cid.
L'identificateur cid est une des trois constantes de forme suivantes :
╒═══════════════════════════════════════════════════════════╕
│ constante utilisation │
├───────────────────────────────────────────────────────────┤
│ xs_HIDE curseur caché │
│ xs_FULL curseur plein │
│ xs_LINE curseur souligné │
└───────────────────────────────────────────────────────────┘
voir aussi
XScrMgr::cdef()
════════════════════════════════════════════════════════════════════════════
XScrMgr::fill public:static
remplit l'écran avec une cellule
────────────────────────────────────────────────────────────────────────────
utilisation
void fill (char chr, char att)
paramètres
chr caractère
att attribut
description
fill() remplit l'écran avec la cellule formée par le caractère chr et
l'attribut att.
fill() ne modifie pas la position du curseur logique.
════════════════════════════════════════════════════════════════════════════
XScrMgr::hght public:static
renvoie le nombre de lignes affichées
────────────────────────────────────────────────────────────────────────────
utilisation
int hght (void)
description
hght() renvoie le nombre de lignes affichées tel qu'il a été fixé par
init() et mode().
voir aussi
XScrMgr::init(), XScrMgr::mode(), XScrMgr::wdth()
════════════════════════════════════════════════════════════════════════════
XScrMgr::incc public:static
déplace horizontalement le curseur logique
────────────────────────────────────────────────────────────────────────────
utilisation
int incc (int cnt)
paramètres
cnt déplacement signé
assertions
cnt déplacement valide
description
incc() déplace horizontalement le curseur logique de cnt colonnes vers
la droite si cnt est positif et vers la gauche si cnt est négatif.
incc() ne modifie pas le numéro de ligne du curseur logique.
incc() renvoie le nouveau numéro de colonne du curseur logique.
voir aussi
XScrMgr::incr(), XScrMgr::lcol()
════════════════════════════════════════════════════════════════════════════
XScrMgr::incr public:static
déplace verticalement le curseur logique
────────────────────────────────────────────────────────────────────────────
utilisation
int incr (int cnt)
paramètres
cnt déplacement signé
assertions
cnt déplacement valide
description
incr() déplace verticalement le curseur logique de cnt lignes vers le
bas si cnt est positif et vers le haut si cnt est négatif.
incr() ne modifie pas le numéro de colonne du curseur logique.
incr() renvoie le nouveau numéro de ligne du curseur logique.
voir aussi
XScrMgr::incc(), XScrMgr::lrow()
════════════════════════════════════════════════════════════════════════════
XScrMgr::init public:static
initialise ou quitte le gestionnaire
────────────────────────────────────────────────────────────────────────────
utilisation
void init (int cmd)
paramètres
cmd commande d'initialisation
description
init() initialise ou quitte le gestionnaire.
Si cmd est non nul, init() initialise le gestionnaire par les étapes :
-- détection du type de l'écran,
-- sélection du mode d'affichage 80x25 adapté au type de l'écran
par mode().
Si cmd est nul, init() quitte le gestionnaire par les étapes :
-- sélection du mode d'affichage 80x25 adapté au type de l'écran
par mode().
init() est sans effet si l'état demandé est déjà celui du gestionnaire.
voir aussi
XScrMgr::mode()
════════════════════════════════════════════════════════════════════════════
XScrMgr::lcol public:static
renvoie le numéro de colonne du curseur logique
────────────────────────────────────────────────────────────────────────────
utilisation
int lcol (void)
description
lcol() renvoie le numéro de colonne du curseur logique fixé par lpos()
et incc().
voir aussi
XScrMgr::incc(), XScrMgr::lpos(), XScrMgr::lrow()
════════════════════════════════════════════════════════════════════════════
XScrMgr::lpos public:static
positionne le curseur logique
────────────────────────────────────────────────────────────────────────────
utilisation
void lpos (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
assertions
row numéro valide
col numéro valide
description
lpos() positionne le curseur logique sur la ligne row et sur la colonne
col.
Les coordonnées du curseur logique sont obtenues par lcol() et lrow().
voir aussi
XScrMgr::lcol(), XScrMgr::lrow()
════════════════════════════════════════════════════════════════════════════
XScrMgr::lrow public:static
renvoie le numéro de ligne du curseur logique
────────────────────────────────────────────────────────────────────────────
utilisation
int lrow (void)
description
lrow() renvoie le numéro de ligne du curseur logique fixé par lpos() et
incr().
voir aussi
XScrMgr::incr(), XScrMgr::lcol(), XScrMgr::lpos()
════════════════════════════════════════════════════════════════════════════
XScrMgr::mode public:static
renvoie le mode d'affichage courant 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int mode (void)
description
mode() renvoie le mode d'affichage en cours d'utilisation.
Le résultat de mode() correspond au mode d'affichage texte choisi par
init() et mode().
voir aussi
XScrMgr::init(), XScrMgr::mode()
════════════════════════════════════════════════════════════════════════════
XScrMgr::mode public:static
sélectionne le mode d'affichage courant 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void mode (int val)
paramètres
val mode d'affichage
assertions
val mode valide
description
mode() sélectionne le mode d'affichage val.
mode() reconnaît des modes d'affichage spéciaux suivants :
╒═══════════════════════════════════════════════════════════╕
│ mode utilisation │
├───────────────────────────────────────────────────────────┤
│ -1 pas de changement de mode d'affichage │
│ -28 affichage sur 28 lignes (VGA) │
│ -43 affichage sur 43 lignes (EGA/VGA) │
│ -50 affichage sur 50 lignes (VGA) │
└───────────────────────────────────────────────────────────┘
Après la sélection du mode d'affichage, mode() effectue les opérations
suivantes :
-- détermine l'adresse de base du segment vidéo,
-- détermine les dimensions de l'écran,
-- détermine la couleur de l'ombre ; elle est grise en présence
d'un écran couleur et noire dans le cas contraire.
-- place les curseurs logique et physique dans l'angle supérieur
gauche de l'écran par lpos() et ppos(),
-- associe la forme soulignée au curseur physique par cdef(),
-- efface l'écran avec la couleur noir/blanc par fill().
mode() peut être appelée pour modifier le mode d'affichage choisi par
init() lors de l'initialisation du gestionnaire.
voir aussi
XScrMgr::addr(), XScrMgr::cdef(), XScrMgr::fill(), XScrMgr::hght(),
XScrMgr::init(), XScrMgr::lpos(), XScrMgr::ppos(), XScrMgr::shdw(),
XScrMgr::wdth()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outa public:static
affiche un bloc d'attributs 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outa (int wdt, int hgh, char att)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
att attribut
description
outa() remplit le bloc de wdt colonnes et de hgh lignes, défini depuis
la position du curseur logique, avec l'attribut att.
outa() renvoie la largeur wdt.
outa() est sans effet si une des dimensions du bloc est nulle.
outa() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outc()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outa public:static
affiche une ligne d'attributs 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outa (int wdt, char att)
paramètres
wdt largeur du bloc
att attribut
description
outa() remplit la ligne de wdt colonnes, définie depuis la position du
curseur logique, avec l'attribut att.
outa() renvoie la largeur wdt.
outa() est sans effet si wdt est nulle.
outa() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outc()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outb public:static
affiche un tableau de caractères
────────────────────────────────────────────────────────────────────────────
utilisation
int outb (int cnt, const char *buf, char att)
paramètres
cnt nombre de caractères
buf pointeur sur tableau de caractères
att attribut
assertions
buf != 0
description
outb() affiche les cnt caractères du tableau buf avec l'attribut att
depuis la position du curseur logique.
outb() renvoie le nombre de caractères cnt.
outb() est sans effet si le nombre de caractères cnt est nul.
outb() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outs
════════════════════════════════════════════════════════════════════════════
XScrMgr::outc public:static
affiche un bloc de caractères 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outc (int wdt, int hgh, char chr)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
chr caractère
description
outc() remplit le bloc de wdt colonnes et de hgh lignes, défini depuis
la position du curseur logique, avec le caractère chr.
outc() renvoie la largeur wdt.
outc() est sans effet si une des dimensions du bloc est nulle.
outc() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outa()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outc public:static
affiche une ligne de caractères 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outc (int wdt, char chr)
paramètres
wdt largeur du bloc
chr caractère
description
outc() remplit la ligne de wdt colonnes, définie depuis la position du
curseur logique, avec le caractère chr.
outc() renvoie la largeur wdt.
outc() est sans effet si wdt est nulle.
outc() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outa()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outf public:static
affiche un cadre
────────────────────────────────────────────────────────────────────────────
utilisation
int outf (int wdt, int hgh, const char *buf, char att)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
buf pointeur sur jeu de caractères
att attribut
assertions
buf != 0
description
outf() affiche un cadre formé par le jeu de caractères buf et l'attribut
att sur les bords du bloc de wdt colonnes et de hgh lignes défini depuis
la position du curseur logique.
Le jeu de caractères buf doit avoir le format suivant :
╒═══════════════════════════════════════════════════════════╕
│ position utilisation │
├───────────────────────────────────────────────────────────┤
│ 0 angle supérieur gauche │
│ 1 bord supérieur │
│ 2 angle supérieur droit │
│ 3 bord gauche │
│ 4 bord droit │
│ 5 angle inférieur gauche │
│ 6 bord inférieur │
│ 7 angle inférieur droit │
└───────────────────────────────────────────────────────────┘
Afin de faciliter l'utilisation de outf(), des jeux de caractères sont
mis à disposition sous forme de variables globales :
╒═══════════════════════════════════════════════════════════╕
│ variable utilisation │
├───────────────────────────────────────────────────────────┤
│ xs_bxdd cadre à trait double │
│ xs_bxps cadre pour bouton poussoir │
│ xs_bxsp cadre invisible │
│ xs_bxss cadre à trait simple │
└───────────────────────────────────────────────────────────┘
outf() renvoie la largeur wdt.
outf() est sans effet si une des dimensions du bloc est inférieure à 2.
outf() ne modifie pas la position du curseur logique.
════════════════════════════════════════════════════════════════════════════
XScrMgr::outl public:static
affiche une chaîne de caractères spéciale
────────────────────────────────────────────────────────────────────────────
utilisation
int outl (int cnt, const char *str, char alo, char ahi)
paramètres
cnt longueur significative
str pointeur sur chaîne de caractères
alo attribut normal
ahi attribut réhaussé
assertions
str != 0
description
outl() affiche les cnt caractères significatifs de la chaîne str avec
les attributs alo et ahi depuis la position du curseur logique.
Une chaîne spéciale est affichée avec l'attribut alo à l'exception des
caractères préfixés par le signe '&' qui utilisent l'attribut ahi.
La longueur significative d'une chaîne spéciale est égale à sa longueur
réelle moins le nombre d'occurences du signe '&'.
outl() renvoie le nombre de caractères cnt.
outl() est sans effet si le nombre de caractères cnt est nul.
outl() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outs()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outr public:static
inverse les attributs d'un cadre
────────────────────────────────────────────────────────────────────────────
utilisation
int outr (int wdt, int hgh)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
description
outr() inverse les attributs du cadre de largeur wdt et de hauteur hgh
défini depuis la position du curseur logique.
outr() renvoie la largeur wdt.
outr() est sans effet si une des dimensions du bloc est inférieure à 2.
outr() ne modifie pas la position du curseur logique.
════════════════════════════════════════════════════════════════════════════
XScrMgr::outs public:static
affiche une chaîne de caractères
────────────────────────────────────────────────────────────────────────────
utilisation
int outs (int cnt, const char *str, char att)
paramètres
cnt nombre maximum de caractères
str pointeur sur chaîne de caractères
att attribut
assertions
str != 0
description
outs() affiche au plus les cnt premiers caractères de la chaîne str avec
l'attribut att depuis la position du curseur logique.
outb() peut être préférée lorsque le nombre de caractères à afficher est
déjà connu.
outs() renvoie le nombre de caractères affichés.
outs() est sans effet si le nombre de caractères cnt est nul.
outs() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outb()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outw public:static
affiche un bloc de cellules 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outw (int wdt, int hgh, char chr, char att)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
chr caractère
att attribut
description
outw() remplit le bloc de wdt colonnes et de hgh lignes, défini depuis
la position du curseur logique, avec la cellule formée par le caractère
chr et l'attribut att.
outw() renvoie la largeur wdt.
outw() est sans effet si une des dimensions du bloc est nulle.
outw() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outa(), XScrMgr::outc()
════════════════════════════════════════════════════════════════════════════
XScrMgr::outw public:static
affiche une ligne de cellules 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int outw (int wdt, char chr, char att)
paramètres
wdt largeur du bloc
chr caractère
att attribut
description
outw() remplit la ligne de wdt colonnes, définie depuis la position du
curseur logique, avec la cellule formée par le caractère chr et
l'attribut att.
outw() renvoie la largeur wdt.
outw() est sans effet si une des dimensions du bloc est nulle.
outw() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::outa(), XScrMgr::outc()
════════════════════════════════════════════════════════════════════════════
XScrMgr::pcol public:static
renvoie le numéro de colonne du curseur physique
────────────────────────────────────────────────────────────────────────────
utilisation
int pcol (void)
description
pcol() renvoie le numéro de colonne du curseur physique fixé par ppos().
voir aussi
XScrMgr::ppos(), XScrMgr::prow()
════════════════════════════════════════════════════════════════════════════
XScrMgr::ppos public:static
positionne le curseur physique
────────────────────────────────────────────────────────────────────────────
utilisation
void ppos (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
assertions
row numéro valide
col numéro valide
description
ppos() positionne le curseur physique sur la ligne row et sur la colonne
col.
Les coordonnées du curseur physique sont obtenues par pcol() et prow().
voir aussi
XScrMgr::pcol(), XScrMgr::prow()
════════════════════════════════════════════════════════════════════════════
XScrMgr::prow public:static
renvoie le numéro de ligne du curseur physique
────────────────────────────────────────────────────────────────────────────
utilisation
int prow (void)
description
prow() renvoie le numéro de ligne du curseur physique fixé par ppos().
voir aussi
XScrMgr::pcol(), XScrMgr::ppos()
════════════════════════════════════════════════════════════════════════════
XScrMgr::shdw public:static
affiche une ombre autour d'un bloc
────────────────────────────────────────────────────────────────────────────
utilisation
void shdw (int wdt, int hgh)
paramètres
wdt largeur du bloc
hgh hauteur du bloc
description
shdw() affiche une ombre sur les bords droit et inférieur du bloc de wdt
colonnes et de hgh lignes défini depuis la position du curseur logique.
shdw() s'assure que l'ombre ne dépasse pas les limites de l'écran du
fait de la position du curseur logique ou des dimensions du bloc.
shdw() est sans effet si une des dimensions du bloc est inférieure à 2.
shdw() ne modifie pas la position du curseur logique.
voir aussi
XScrMgr::mode()
════════════════════════════════════════════════════════════════════════════
XScrMgr::type public:static
renvoie le type de l'écran
────────────────────────────────────────────────────────────────────────────
utilisation
int type (void)
description
type() renvoie le type de l'écran déterminé par init().
Le résultat de type() est une combinaison des constantes suivantes :
╒═══════════════════════════════════════════════════════════╕
│ constante utilisation │
├───────────────────────────────────────────────────────────┤
│ xs_COLOR écran couleur de type CGA/EGA/VGA │
│ xs_EGA écran EGA couleur ou monochrome │
│ xs_VGA écran VGA couleur ou monochrome │
└───────────────────────────────────────────────────────────┘
voir aussi
XScrMgr::init()
════════════════════════════════════════════════════════════════════════════
XScrMgr::wdth public:static
renvoie le nombre de colonnes affichées
────────────────────────────────────────────────────────────────────────────
utilisation
int wdth (void)
description
wdth() renvoie le nombre de colonnes affichées tel qu'il a été fixé par
init() et mode().
voir aussi
XScrMgr::hght(), XScrMgr::init(), XScrMgr::mode()