Section courante

A propos

Section administrative du site

Introduction

L'extension de fichier «.BGI», tirant son nom de l'abréviation de l'anglicisme «Borland Graphics Interface», est un format de fichier contenant un code exécutable d'un pilote pour carte graphique. Le pilote BGI (Borland Graphics Interface) est un logiciel rapide, compact et indépendant du périphérique, conçu pour le développement graphique intégré aux produits de langage de programmation Turbo Pascal (voir l'unité Graph) et Borland C++. L'indépendance du périphérique est obtenue via des pilotes chargeables spécifiques au périphérique appelés à partir d'un noyau commun.

Spécification

Spécification Description
Type Pilote graphique
Format Binaire
Auteur Borland
Année de création 1987

Architecture d'exécution BGI

Les programmes produits par les langages de programmations de Borland créent des graphiques via deux entités agissant de concert : le noyau BGI générique et un pilote spécifique à un périphérique. Généralement, une application créée avec un compilateur de la marque Borland inclura plusieurs fichiers de pilote de périphérique sur le disque de la distribution (extension .BGI), de sorte que le programme puisse être exécuté sur différents types d'écrans et d'imprimantes. Les demandes graphiques (par exemple, une ligne, une barre,...) sont envoyées par l'application au noyau BGI, qui à son tour demande au pilote de périphérique de manipuler réellement le matériel. Un pilote de périphérique BGI est une image binaire, c'est-à-dire une séquence d'octets sans symboles ni autres informations de liaison. Le pilote commence par un entête court, suivi d'un tableau vectoriel contenant les points d'entrée des fonctions à l'intérieur. La balance du pilote comprend le code et les données nécessaires pour manipuler le matériel graphique cible. Toutes les références de code et de données dans le pilote doivent être dans un emplacement mémoire proches (c'est-à-dire, un modèle SMALL, avec un déplacement dans un segment uniquement), et l'intégralité du pilote, code et données, doit correspondre à 64 Ko. En cours de l'utilisation, le pilote de périphérique peut compter sur son chargement sur une limite de paragraphe. Le noyau BGI utilise une convention d'appel basée sur des registres pour communiquer avec le pilote de périphérique.

Modèle graphique BGI

Lorsque vous examinez les fonctions répertoriées ici, n'oubliez pas que le BGI effectue la plupart des opérations de dessin en utilisant une couleur de traçage ou une couleur de traçage implicite (COLOR), une couleur de remplissage (FILLCOLOR) et un motif (FILLPATTERN). Par exemple, l'appel PIESLICE n'accepte aucune information de motif ou de couleur, mais utilise plutôt la valeur COLOR définie précédemment pour tracer le bord de la tranche du polygone, ainsi que les valeurs FILLCOLOR et FILLPATTERN précédemment définies pour l'intérieur. Pour plus d'efficacité, de nombreuses opérations ont lieu à la position du pointeur actuel. Par exemple, la routine LINE n'accepte qu'une seule paire de coordonnées (x,y), en utilisant le pointeur actuel comme point de départ de la ligne et la paire de coordonnées passée comme point d'arrivée. De nombreuses fonctions (LINE, pour n'en nommer qu'une) affectent le pointeur actuel, et la fonction MOVE peut être utilisée pour ajuster explicitement le pointeur actuel. Le système de coordonnées BGI place l'origine (pixel 0,0) dans le coin supérieur gauche de l'écran.

Structure d'entête

La section d'entête de périphérique, devant figurer au début du pilote de périphérique, est générée à l'aide de la macro BGI définie dans le fichier DEVICE.INC. La macro BGI prend le nom du pilote de périphérique à construire en tant que paramètre. Par exemple, un pilote nommé DEBUG devrait commencer comme indiqué ici :

  1. CSEG   SEGMENT PARA PUBLIC 'CODE'  ; toute dénomination de segment peut être utilisée
  2.        ASSUME  DS:CSEG, CS:CSEG    ; CS=DS
  3.  
  4.        CODESEG
  5.  
  6.        INCLUDE DEVICE.INC        ; Inclure le fichier DEVICE.INC
  7.        BGI     DEBUG             ; déclarer la section de la structure d'entête de périphérique

La section de la structure d'entête de périphérique déclare un point d'entrée spécial appelé EMULATE. Si l'action d'un vecteur de pilote de périphérique n'est pas prise en charge par le matériel d'un périphérique, l'entrée de vecteur doit contenir l'entrée EMULATE. Cette situation sera corrigé au moment du chargement pour contenir un saut vers la routine d'émulation du noyau. Ces routines émuleront l'action du vecteur en décomposant la demande en primitives plus simples. Par exemple, si le matériel a la fonctionnalité nécessaire pour dessiner un ARC, le vecteur de l'arc contiendra l'adresse de la routine de distribution des données de l'arc au matériel et s'affichera comme suit :

  1. DW Offset ARC   ; Vecteur à la routine d'arc

Si, comme c'est souvent le cas, le matériel ne dispose pas de la fonctionnalité permettant d'afficher des arcs, le vecteur contiendrait le vecteur EMULATE :

  1. DW     EMULATE

Le noyau prend en charge l'émulation pour les vecteurs suivants :

Vecteur Description
BAR Ce vecteur permet d'effectuer un remplissage de rectangles 3D
ARC Ce vecteur permet d'afficher un arc en rendu elliptique
PIESLICE Ce vecteur permet d'effectuer d'afficher une tranches de tarte elliptiques.
FILLED_ELLIPSE Ce vecteur permet d'effectuer l'affichage d'un ellipses remplit.

La table d'état du pilote (DST)

Le BGI requiert que chaque pilote contienne une table d'état de pilote (DST) pour déterminer les caractéristiques de base du périphérique qu'il adresse. À titre d'exemple, le DST pour un affichage avec une carte vidéo CGA est indiquée comme ici :

  1.  STATUS STRUC
  2.  STAT    DB     0           ; État actuel du périphérique (0 = aucune erreur)
  3.  DEVTYP  DB     0           ; Identificateur du type d'appareil (doit être 0)
  4.  XRES    DW     639         ; Résolution complète du périphérique dans la direction X
  5.  YRES    DW     199         ; Résolution complète du périphérique dans la direction Y
  6.  XEFRES  DW     639         ; Résolution X effective du périphérique
  7.  YEFRES  DW     199         ; Résolution Y effective du périphérique
  8.  XINCH   DW     9000        ; Taille du périphérique X en pouces * 1000
  9.  YINCH   DW     7000        ; Taille du périphérique Y en pouces * 1000
  10.  ASPEC   DW     4500        ; Rapport de format du ratio = (y_size/x_size) * 10000
  11.  DB     8h
  12.  DB     8h          ; pour la compatibilité, utilisez ces valeurs
  13.  DB     90h
  14.  DB     90h
  15.  STATUS  ENDS

L'interface BGI fournit un système permettant de signaler les erreurs au noyau BGI et au code de niveau supérieur développé à l'aide des paquets de langage de programmation de la marque Borland. Cette situation est fait en utilisant le champ STAT de la table d'état du pilote. Ce champ doit être renseigné par le code du pilote si une erreur est détectée lors de l'exécution de l'installation du périphérique (INSTALL). Les codes d'erreur suivants sont prédéfinis dans le fichier à inclure GRAPHICS.H pour Turbo C et dans l'unité graphique pour Turbo Pascal.

  1. grOk               =   0;
  2. grNoInitGraph      =  -1;
  3. grNotDetected      =  -2;
  4. grFileNotFound     =  -3;
  5. grInvalidDriver    =  -4;
  6. grNoLoadMem        =  -5;
  7. grNoScanMem        =  -6;
  8. grNoFloodMem       =  -7;
  9. grFontNotFound     =  -8;
  10. grNoFontMem        =  -9;
  11. grInvalidMode      = -10;
  12. grError            = -11;         
  13. grIOerror          = -12;
  14. grInvalidFont      = -13;
  15. grInvalidFontNum   = -14;
  16. grInvalidDeviceNum = -15;

Le champ suivant de la table d'état des périphériques, DEVTYP (Device Status Table), décrit la classe du périphérique contrôlé par le pilote; pour les périphériques d'écran, cette valeur est toujours égale à 0. Les quatre champs suivants, XRES, YRES, XEFRES et YEFRES, contiennent le nombre de pixels disponibles pour BGI sur ce périphérique dans les dimensions horizontale et verticale, moins un. Pour les périphériques d'écran, XRES = XEFRES et YRES = YEFRES. Les champs XINCH et YINCH correspondent au nombre de pouces horizontalement et verticalement dans lequel les pixels du périphérique sont cartographiés, multipliés par 1 000. Ces champs conjointement avec XRES et YRES permettent un calcul de résolution de périphérique (DPI ou points par pouce) :

Résolution horizontale (DPI) = (XRES + 1) / (XINCH / 1000)
Résolution verticale (DPI) = (YRES + 1) / (YINCH / 1000)

Le champ ASPEC (rapport de format de ratio) est en réalité une paire multiplicateur / diviseur (le diviseur est toujours 10000) étant appliqué aux valeurs de coordonnées Y pour produire des images ajustées selon le rapport d'aspect (par exemple, des cercles ronds). Par exemple, un champ ASPEC de 4500 implique que l'application devra transformer les coordonnées Y selon le rapport 4500/10000 lors du tracé de cercles sur ce périphérique si elle s'attend à ce qu'ils soient arrondis. Les variations de moniteur individuelles peuvent nécessiter un ajustement supplémentaire par l'application.

La table des vecteurs de pilote de périphérique

Les routines du pilote de périphérique sont accessibles via un tableau vectoriel. Cette table est au début du pilote et contient des déplacements de 16 bits des sous-routines et des tables de configuration dans le pilote. Le format de la table de vecteurs est indiqué ci-dessous :

  1. VECTOR_TABLE:
  2.  DW      INSTALL   ; Initialisation et installation du pilote
  3.  DW      INIT      ; Initialiser le périphérique pour la sortie
  4.  DW      CLEAR     ; Effacer le périphérique graphique; obtenir un nouvel écran
  5.  DW      POST      ; Quitter le mode graphique, décharger le traceur
  6.  DW      MOVE      ; Déplacer le pointeur actuel (CP) vers (X, Y)
  7.  DW      DRAW      ; Tracer une ligne de (CP) à (X, Y)
  8.  DW      VECT      ; Tracez une ligne de (X0, Y0) à (X1, Y1)
  9.  DW      EMULATE   ; Réservé, doit contenir le vecteur Emulate
  10.  DW      BAR       ; Barre 3D remplie de (CP) à (X, Y)
  11.  DW      PATBAR    ; Rectangle à motifs de (X, Y) à (X1, Y1)
  12.  DW      ARC       ; Définir ARC
  13.  DW      PIESLICE  ; Définir une tarte elliptique
  14.  DW      FILLED_ELLIPSE  ; Dessine une ellipse remplie
  15.  DW      PALETTE   ;  Charger une entrée de palette
  16.  DW      ALLPALETTE  ; Charger la palette complète
  17.  DW      COLOR     ; Fixe la couleur/l'arrière-plan du dessin actuel
  18.  DW      FILLSTYLE ; Contrôle de remplissage et style
  19.  DW      LINESTYLE ; Contrôle du style de dessin au trait
  20.  DW      TEXTSTYLE ; Contrôle des polices de caractères matérielles
  21.  DW      TEXT      ; Matériel dessinez le texte au pointeur courant)
  22.  DW      TEXTSIZ   ; Requête de taille de police de caractères matérielle
  23.  DW      RESERVED  ; Réservé
  24.  DW      FLOODFILL ; Remplir une région délimitée
  25.  DW      GETPIX    ; Lire un pixel de (X, Y)
  26.  DW      PUTPIX    ; Ecrire un pixel à (X, Y)
  27.  DW      BITMAPUTIL ; Fonction de requête de taille de bitmap
  28.  DW      SAVEBITMAP ; BITBLT de l'écran à la mémoire système
  29.  DW      RESTOREBITMAP ; BITBLT de la mémoire système à l'écran
  30.  DW      SETCLIP    ; Définir un rectangle de découpage
  31.  DW      COLOR_QUERY  ; Demande d'informations sur la table des couleurs
  32.  ;
  33.  ;       35 vecteurs supplémentaires sont réservés à l'utilisation future de Borland.
  34.  ;
  35.    DW      RESERVED     ; Réservé à l'usage de Borland (1)
  36.  DW      RESERVED     ; Réservé à l'usage de Borland (2)
  37.  DW      RESERVED     ; Réservé à l'usage de Borland (3)
  38.  DW      RESERVED     ; Réservé à l'usage de Borland (4)
  39.  DW      RESERVED     ; Réservé à l'usage de Borland (5)
  40.  DW      RESERVED     ; Réservé à l'usage de Borland (6)
  41.  DW      RESERVED     ; Réservé à l'usage de Borland (7)
  42.  DW      RESERVED     ; Réservé à l'usage de Borland (8)
  43.  DW      RESERVED     ; Réservé à l'usage de Borland (9)
  44.  DW      RESERVED     ; Réservé à l'usage de Borland (10)
  45.  DW      RESERVED     ; Réservé à l'usage de Borland (11)
  46.  DW      RESERVED     ; Réservé à l'usage de Borland (12)
  47.  DW      RESERVED     ; Réservé à l'usage de Borland (13)
  48.  DW      RESERVED     ; Réservé à l'usage de Borland (14)
  49.  DW      RESERVED     ; Réservé à l'usage de Borland (15)
  50.  DW      RESERVED     ; Réservé à l'usage de Borland (16)
  51.  DW      RESERVED     ; Réservé à l'usage de Borland (17)
  52.  DW      RESERVED     ; Réservé à l'usage de Borland (18)
  53.  DW      RESERVED     ; Réservé à l'usage de Borland (19)
  54.  DW      RESERVED     ; Réservé à l'usage de Borland (20)
  55.  DW      RESERVED     ; Réservé à l'usage de Borland (21)
  56.  DW      RESERVED     ; Réservé à l'usage de Borland (22)
  57.  DW      RESERVED     ; Réservé à l'usage de Borland (23)
  58.  DW      RESERVED     ; Réservé à l'usage de Borland (24)
  59.  DW      RESERVED     ; Réservé à l'usage de Borland (25)
  60.  DW      RESERVED     ; Réservé à l'usage de Borland (26)
  61.  DW      RESERVED     ; Réservé à l'usage de Borland (27)
  62.  DW      RESERVED     ; Réservé à l'usage de Borland (28)
  63.  DW      RESERVED     ; Réservé à l'usage de Borland (29)
  64.  DW      RESERVED     ; Réservé à l'usage de Borland (30)
  65.  DW      RESERVED     ; Réservé à l'usage de Borland (31)
  66.  DW      RESERVED     ; Réservé à l'usage de Borland (32)
  67.  DW      RESERVED     ; Réservé à l'usage de Borland (33)
  68.  DW      RESERVED     ; Réservé à l'usage de Borland (34)
  69.  DW      RESERVED     ; Réservé à l'usage de Borland (35)
  70.  ;
  71.  ;       Tout vecteur suivant ce bloc peut être utilisé par les
  72.  ;       développeurs de pilotes de périphériques indépendants comme bon leur semble.
  73.  ;

Descriptions des vecteurs

Les informations suivantes décrivent l'entrée, la sortie et la fonction de chacune des fonctions accessibles via la table des vecteurs de périphérique.

INSTALL

Installation du pilote de périphérique
Pilote BGI

Syntaxe

DW Offset INSTALL

Entrée

Registre Valeur ou description
AL 00h
CL Ce registre permet d'indiquer le numéro de mode pour le périphérique.

Sortie

Registre Valeur ou description
ES:BX Cette paire de registre permet d'indiquer un tableau d'état des périphériques (voir la structure STATUS).

Description

Le noyau appelle le vecteur INSTALL pour préparer le pilote de périphérique à utiliser. Un code de fonction est passé dans le registre AL.

Remarques

Entrée

Registre Valeur ou description
AL 01h

Sortie

Registre Valeur ou description
CX Ce registre permet d'indiquer le nombre de modes pris en charge par ce périphérique.

Description

La fonction MODE QUERY permet de demander le nombre maximal de modes pris en charge par ce pilote de périphérique.

Entrée

Registre Valeur ou description
AL 02h
CX Ce registre permet d'indiquer le nombre de modes pour la requête.

Sortie

Registre Valeur ou description
ES:BX Cette paire de registre permet d'indiquer une chaîne de caractères de format Turbo Pascal contenant le nom.

La fonction MODE NAMES permet demander le format ASCII du numéro de mode présent dans le registre CX. La valeur de retour dans la paire de registres ES:BX pointe sur une chaîne de caractères de format Turbo Pascal décrivant le mode donné.

Remarque

INIT

Initialiser le périphérique pour la sortie
Pilote BGI

Syntaxe

DW offset INIT

Entrée

Registre Valeur ou description
ES:BX Cette paire de registre permet d'indiquer une table de périphérique d'informations.

Sortie

Aucun

Description

Ce vecteur permet de modifier un périphérique déjà installé du mode texte au mode graphique. Ce vecteur doit également initialiser les palettes par défaut et les informations relatives au mode de dessin, selon les besoins. L'entrée de ce vecteur est une table d'informations sur les périphériques (DIT). Le format du DIT est présenté ci-dessous et contient la couleur d'arrière-plan et un indicateur d'initialisation. Si le périphérique requiert des informations supplémentaires de DIT à INIT, ces valeurs peuvent être ajoutées au DIT. Il n'y a pas de valeur de retour pour cette fonction. Si une erreur survient lors de l'initialisation du périphérique, le champ STAT de la table d'état des périphériques doit être chargé avec la valeur d'erreur appropriée. Voici la structure DIT :

  1. struct   DIT
  2.  DB     0         ; Couleur de fond pour l'écran d'initialisation
  3.  DB     0         ; Drapeau d'init; 0A5h = ne pas initier; n'importe quoi sinon = init
  4.  DB     64 dup 0  ; Réservé à l'usage futur de Borland
  5.                   ; informations utilisateur supplémentaires ici
  6. DIT      ends

CLEAR

Effacer le périphérique graphique; obtenir un nouvel écran
Pilote BGI

Syntaxe

DW offset CLEAR

Entrée

Aucun

Sortie

Aucun

Description

Ce vecteur permet d'effacer le périphérique graphique à un état connu. Dans le cas d'un périphérique CRT, l'écran est effacé. Dans le cas d'une imprimante ou d'un traceur, le papier avance et les stylos sont renvoyés à la station.

POST

Quitter le mode graphique, décharger le traceur
Pilote BGI

Syntaxe

DW offset POST

Entrée

Aucun

Sortie

Aucun

Description

Ce vecteur permet de fermer le système graphique. Dans le cas d'écrans graphiques ou d'imprimantes, le mode doit être remis en mode texte. Pour les traceurs, le papier doit être déchargé et les stylos doivent être retournés à la station.

MOVE

Déplacer le pointeur actuel (CP) vers (X, Y)
Pilote BGI

Syntaxe

DW offset MOVE

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la nouvelle coordonnée horizontale du pointeur.
BX Ce registre permet d'indiquer la nouvelle coordonnée verticale du pointeur.

Sortie

Aucun

Description

Ce vecteur permet de fixer le pointeur actuel du pilote sur (AX, BX). Cette fonction est utilisée avant les routines TEXT, ARC, SYMBOL, DRAW, FLOODFILL, BAR ou PIESLICE pour définir la position où le dessin doit avoir lieu.

DRAW

Tracer une ligne de (CP) à (X, Y)
Pilote BGI

Syntaxe

DW offset DRAW

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée X de terminaison pour la ligne.
BX Ce registre permet d'indiquer la coordonnée Y de terminaison pour la ligne.

Sortie

Aucun

Ce vecteur permet de tracer une ligne du pointeur courant vers (X, Y). Le paramètre actuel LINESTYLE est utilisé. Le pointeur actuel (CP) est mis à jour vers le noeud final de la ligne.

VECT

Tracez une ligne de (X0, Y0) à (X1, Y1)
Pilote BGI

Syntaxe

DW VECT

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée X de début pour la ligne (X1).
BX Ce registre permet d'indiquer la coordonnée Y du début pour la ligne (Y1).
CX Ce registre permet d'indiquer la coordonnée X de fin de la ligne (X2).
DX Ce registre permet d'indiquer la coordonnée Y de fin pour la ligne (Y2).

Sortie

Aucun

Ce vecteur permet de tracer une ligne de (X1, Y1) à (X2, Y2). Le paramètre actuel LINESTYLE est utilisé pour tracer la ligne.

Remarque

BAR

Barre 3D remplie de (CP) à (X, Y)
Pilote BGI

Syntaxe

DW BAR

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée X du bord droit du rectangle.
BX Ce registre permet d'indiquer la coordonnée Y du bord inférieur du rectangle.
CX Ce registre permet d'indiquer le 3D = largeur de la barre 3D (hauteur := 0.75 * largeur); 0 = pas d'effet 3D.
DX Ce registre permet d'indiquer le drapeau du haut de la barre 3D; si CX <> 0 et DX = 0, dessinez un sommet.

Sortie

Aucun

Ce vecteur permet de remplir et tracer une barre (rectangle) en utilisant les couleurs actuelles COLOR, FILLCOLOR et FILLPATERN. Le pointeur actuel définit le coin supérieur gauche du rectangle et (X, Y) est situé en bas à droite. Un effet d'ombre 3D facultatif (destiné aux programmes graphiques d'entreprise) est obtenu en rendant CX différent de zéro. Le registre DX sert alors de drapeau indiquant si un sommet doit être tracé sur la barre.

PATBAR

Rectangle à motifs de (X, Y) à (X1, Y1)
Pilote BGI

Syntaxe

DW PATBAR

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée X de la coordonnée du coin gauche d'un rectangle.
BX Ce registre permet d'indiquer la coordonnée Y de la coordonnée du coin supérieur d'un rectangle.
CX Ce registre permet d'indiquer la coordonnée X de la coordonnée du coin droite d'un rectangle.
DX Ce registre permet d'indiquer la coordonnée Y de la coordonnée du coin inférieur d'un rectangle.

Sortie

Aucun

Ce vecteur permet de remplir (mais ne dessine pas la bordure) le rectangle indiqué avec le motif et la couleur de remplissage actuels.

ARC

Définir ARC
Pilote BGI

Syntaxe

DW ARC

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer l'angle de départ de l'arc en degrés (0 à 360).
BX Ce registre permet d'indiquer l'angle final de l'arc en degrés (0 à 360).
CX Ce registre permet d'indiquer le X du rayon de l'arc elliptique.
DX Ce registre permet d'indiquer le Y du rayon de l'arc elliptique.

Sortie

Aucun

Ce vecteur permet de dessiner un arc elliptique en utilisant le pointeur courant comme point central de l'arc, de l'angle de départ donné à l'angle de fin spécifié. Pour obtenir des arcs de cercle, l'application (et non le pilote) doit régler le rayon Y de la manière suivante :

YRAD := XRAD * (ASPEC / 10000);

ASPEC est la valeur d'aspect enregistrée dans le DST.

PIESLICE

Définir une tarte elliptique
Pilote BGI

Syntaxe

DW PIESLICE

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer le rayon horizontale de l'ellipse (X).
BX Ce registre permet d'indiquer le rayon verticale de l'ellipse (Y).

Sortie

Aucun

Ce vecteur permet de dessiner une ellipse remplie. Le point central de l'ellipse est supposé être au pointeur actuel (CP). Le registre AX contient le rayon X de l'ellipse et le registre BX, le rayon Y de l'ellipse.

PALETTE

Charger une entrée de palette
Pilote BGI

Syntaxe

DW PALETTE

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer le numéro d'index et le code de fonction pour le chargement.
BX Ce registre permet d'indiquer la valeur de couleur à charger dans la palette.

Sortie

Aucun

Ce vecteur permet d'indiquer le vecteur PALETTE chargeant des entrées uniques dans la palette. Le registre AX contient le code de fonction pour l'action de chargement et l'index de l'entrée de table de couleurs à charger. Les deux bits supérieurs de AX déterminent l'action à prendre. Le tableau ci-dessous récapitule les actions. Si les bits de contrôle sont à 00, l'index de la table des couleurs dans (AX AND 03FFFh) est chargé avec la valeur dans BX. Si les bits de contrôle sont à 10, l'index de la table des couleurs dans (AX AND 03FFFh) est chargé avec la valeur RVB dans (Rouge = BX, Vert = CX et Bleu = DX). Si les bits de contrôle sont à 11, l'entrée de la table de couleurs pour l'arrière-plan est chargée avec la valeur dans BX.

Bits de contrôle VAleur de couleur et d'index
00 Cette valeur permet d'indiquer que le registre BX contient une couleur, AX est un index
01 Cette valeur n'est pas utilisé.
10 Cette valeur permet d'indiquer : Rouge = BX Vert = CX Bleu = DX, AX est un index.
11 Cette valeur permet d'indiquer que le registre BX contient une couleur pour l'arrière-plan.

ALLPALETTE

Charger la palette complète
Pilote BGI

Syntaxe

DW ALLPALETTE

Entrée

Registre Valeur ou description
ES:BX Cette paire de registres permet d'indiquer un tableau d'entrées de palette.

Sortie

Aucun

Description

Ce vecteur permet d'indiquer que la routine ALLPALETTE charge la palette entière en un seul appel de pilote. La paire de registres ES:BX pointe vers la table de valeurs à charger dans la palette. Le nombre d'entrées est déterminé par les entrées de couleur dans la table d'état du pilote. La couleur d'arrière-plan n'est pas explicitement chargée avec cette commande.

COLOR

Fixe la couleur/l'arrière-plan du dessin actuel
Pilote BGI

Syntaxe

DW COLOR

Entrée

Registre Valeur ou description
AL Ce registre permet d'indiquer le numéro d'index de la couleur de dessin actuelle.
AH Ce registre permet d'indiquer le numéro d'index de la couleur de remplissage.

Sortie

Aucun

Description

Ce vecteur permet d'indiquer la couleur de dessin actuelle. La valeur dans AL correspond à l'index dans la palette de la nouvelle couleur de dessin actuelle. La valeur dans le registre AH est l'indice de couleur de la nouvelle couleur de remplissage. Toutes les primitives sont dessinées avec la couleur de dessin actuelle jusqu'à ce que la couleur soit modifiée. La couleur de remplissage est utilisée pour la couleur intérieure des primitives de barres, de polygones, de pointes de tarte (de secteurs) et de remplissage de région primitive.

FILLSTYLE

Contrôle de remplissage et style
Pilote BGI

Syntaxe

DW FILLSTYLE

Entrée

Registre Valeur ou description
AL Ce registre permet d'indiquer le numéro du motif de remplissage primaire.
ES:BX Cette paire de registres permet d'indiquer si le numéro de modèle est 0FFh, pointe vers le masque de modèle défini par l'utilisateur.

Sortie

Aucun

Description

Ce vecteur permet de fixer le motif de remplissage pour le dessin. Le motif de remplissage est utilisé pour remplir toutes les régions délimitées (BAR, POLY et PIESLICE). Les numéros des motifs de remplissage prédéfinis sont les suivants :

Code Description Motif de remplissage sur 8 octets
0 Pas de remplissage 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
1 Remplissage solide 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh
3 Remplissage de barre oblique 001h, 002h, 004h, 008h, 010h, 020h, 040h, 080h
4 Barres obliques 0E0h, 0C1h, 083h, 007h, 00Eh, 01Ch, 038h, 070h
5 Remplissage de oblique inversé 0F0h, 078h, 03Ch, 01Eh, 00Fh, 087h, 0C3h, 0E1h
6 Remplissage de barre oblique inversé 0A5h, 0D2h, 069h, 0B4h, 05Ah, 02Dh, 096h, 04Bh
7 Remplissage de hachures 0FFh, 088h, 088h, 088h, 0FFh, 088h, 088h, 088h
8 Remplissage de hachures horizontale 081h, 042h, 024h, 018h, 018h, 024h, 042h, 081h
9 Remplissage d'interligne 0CCh, 033h, 0CCh, 033h, 0CCh, 033h, 0CCh, 033h
10 Remplissage de point large 080h, 000h, 008h, 000h, 080h, 000h, 008h, 000h
11 Fermer le remplissage de points 088h, 000h, 022h, 000h, 088h, 000h, 022h, 000h
0FFh L'utilisateur définit le motif du remplissage.

Dans le cas d'un motif de remplissage défini par l'utilisateur, la paire de registres ES:BX pointe vers 8 octets de données agencées sous la forme d'un motif de 8x8 bits à utiliser pour le motif de remplissage.

LINESTYLE

Contrôle du style de dessin au trait
Pilote BGI

Syntaxe

DW LINESTYLE

Entrée

Registre Valeur ou description
AL Ce registre permet d'indiquer le numéro de motif de ligne.
BX Ce registre permet d'indiquer le motif de dessin au trait défini par l'utilisateur.
CX Ce registre permet d'indiquer la largeur de trait pour dessiner.

Sortie

Aucun

Description

Ce vecteur permet de fixer le style de dessin de ligne actuel et la largeur de la ligne. La largeur de la ligne est d'un pixel ou de trois pixels de large. Le tableau suivant définit les styles de trait par défaut :

Code Description Motif de 16 bits
AL = 0 Style de trait continu 1111111111111111B
AL = 1 Style de ligne en pointillé 1100110011001100B
AL = 2 Style de ligne médiane 1111110001111000B
AL = 3 Style de ligne pointillée 1111100011111000B
AL = 4 Style de ligne défini par l'utilisateur

Si la valeur dans AL est quatre, l'utilisateur définit un style de ligne dans le registre BX. Si la valeur dans AL n'est pas quatre, la valeur dans le registre BX est ignorée.

TEXTSTYLE

Contrôle des polices de caractères matérielles
Pilote BGI

Syntaxe

DW TEXTSTYLE

Entrée

Registre Valeur ou description
AL Ce registre permet d'indiquer le numéro de police de caractères du matériel.
AH Ce registre permet d'indiquer l'orientation de la police de caractères matérielle : 0 = normal, 1 = 90 degrés, 2 = bas.
BX Ce registre permet d'indiquer le caractère X souhaité (taille en unités graphiques).
CX Ce registre permet d'indiquer le caractère Y souhaité (taille en unités graphiques).

Sortie

Registre Valeur ou description
BX Ce registre permet d'indiquer la taille de caractère X la plus proche disponible (en unités graphiques).
CX Ce registre permet d'indiquer la taille de caractère Y la plus proche disponible (en unités graphiques).

Description

Ce vecteur permet de fixer les attributs de la police de caractères matérielle pour la sortie. Les paramètres concernés sont la police de caractères matérielle à utiliser, l'orientation de la police de caractères pour la sortie, la hauteur et la largeur souhaitées pour la sortie de la police de caractères. Tout le texte suivant sera dessiné en utilisant ces attributs. Si la taille souhaitée n'est pas prise en charge par le périphérique actuel, utilisez la correspondance disponible la plus proche de la taille souhaitée. La valeur de retour de cette fonction donne les dimensions de la police de caractères (en pixels) étant réellement utilisée. Par exemple, si la police de caractères souhaitée est de 8x10 pixels et que le périphérique prend en charge les polices de caractères de 8x8 et 16x16, la correspondance la plus proche sera celle de 8x8. La sortie de la fonction sera BX = 8 et CX = 8.

TEXT

Matériel dessinez le texte au pointeur courant
Pilote BGI

Syntaxe

DW TEXT

Entrée

Registre Valeur ou description
ES:BX Cette paire de registres permet d'indiquer le texte ASCII de la chaîne de caractères.
CX Ce registre permet d'indiquer la longueur (en caractères) de la chaîne de caractères.

Sortie

Aucun

Description

Ce vecteur permet d'envoyer un texte matériel au périphérique de sortie. Le texte est envoyé au périphérique à partir du pointeur courant. Le pointeur courant est supposé être en haut à gauche de la chaîne de caractères.

TEXTSIZ

Requête de taille de police de caractères matérielle
Pilote BGI

Syntaxe

DW TEXTSIZ

Entrée

Registre Valeur ou description
ES:BX Cette paire de registres permet d'indiquer le texte ASCII de la chaîne de caractères.
CX Ce registre permet d'indiquer la longueur (en caractères) de la chaîne de caractères.

Sortie

Registre Valeur ou description
BX Ce registre permet d'indiquer la largeur de la chaîne de caractères en unités graphiques.
CX Ce registre permet d'indiquer la hauteur de la chaîne en unités graphiques.

Description

Ce vecteur permet de demander la longueur physique réelle et la largeur d'une chaîne de caractères de texte. Les attributs de texte actuels (définis par TEXTSTYLE) permettent de déterminer les dimensions réelles d'une chaîne de caractères sans l'afficher. L'application peut ainsi déterminer comment une chaîne de caractères spécifique va s'adapter et réduire ou augmenter la taille de la police de caractères selon les besoins. Il n'y a aucune sortie graphique pour ce vecteur. Si une erreur se produit pendant le calcul de la longueur, le champ STAT de l'enregistrement d'état de périphérique doit être marqué avec le code d'erreur de périphérique.

FLOODFILL

Remplir une région délimitée
Pilote BGI

Syntaxe

DW FLOODFILL

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée horizontale du point de départ.
BX Ce registre permet d'indiquer la coordonnée verticale pour le point de départ.
CL Ce registre permet d'indiquer la couleur de délimitation du remplissage inondé.

Sortie

Aucun (les erreurs sont renvoyées dans le champ STAT de l'état du périphérique).

Description

Ce vecteur est appelée pour remplir une région délimitée sur des périphériques bitmap. La coordonnée d'entrée (X, Y) est utilisée comme point de départ pour le remplissage d'une surface. Le pointeur courant devient le point de départ. Le FILLPATTERN actuel est utilisé pour effectuer un remplissage de la région.

GETPIXEL

Lire un pixel de (X, Y)
Pilote BGI

Syntaxe

DW GETPIXEL

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée horizontale du point à examiner.
BX Ce registre permet d'indiquer la coordonnée verticale du point à examiner.

Sortie

Registre Valeur ou description
DL Ce registre permet d'indiquer l'index de couleur du pixel à lire dans l'écran.

Description

Ce vecteur permet d'effectuer la lecture de la valeur d'indice de couleur d'un seul pixel à partir de l'écran graphique. La valeur de l'indice de couleur est renvoyée dans le registre DL.

PUTPIXEL

Ecrire un pixel à (X, Y)
Pilote BGI

Syntaxe

DW PUTPIXEL

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée horizontale du point à fixer.
BX Ce registre permet d'indiquer la coordonnée verticale du point à fixer.
DL Ce registre permet d'indiquer l'index de couleur du pixel à écrire dans l'écran.

Sortie

Aucun

Description

Ce vecteur permet d'écrire un seul pixel avec la valeur d'indice de couleur contenue dans le registre DL.

BITMAPUTIL

Fonction de requête de taille de bitmap
Pilote BGI

Syntaxe

DW BITMAPUTIL

Entrée

Aucun

Sortie

Registre Valeur ou description
ES:BX Cette paire de registres permet d'indiquer la table d'utilitaire Bitmap (BitMap Utility Table).

Description

Ce vecteur permet d'indiquer la charge du pointeur dans ES:BX, étant la base d'un tableau définissant des points de saisie de casse spéciaux utilisés pour la manipulation de pixels. Ces fonctions ne sont actuellement appelées que par les routines d'émulation d'ellipse se trouvant dans le noyau BGI. Si le pilote de périphérique n'utilise pas l'émulation pour les ellipses, cette entrée n'a pas besoin d'être implémentée. Cette entrée a été fournie car certains matériels ont besoin de commandes supplémentaires pour entrer et sortir du mode pixel, ce qui alourdit les vecteurs GETPIXEL et SETPIXEL. Cette surcharge a affecté la vitesse d'affichage des routines d'émulation d'ellipse. Ces points d'entrée sont fournis de sorte que les routines d'émulation d'ellipse puissent passer en mode pixel et restent en mode pixel pendant toute la durée du processus de rendu d'ellipse. Le format de la table BITMAPUTIL est le suivant :

  1. DW  offset   GOTOGRAPHIC     ; Entrer en mode pixel sur le matériel graphique
  2. DW  offset   EXITGRAPHIC     ; Laisser le mode pixel sur le matériel graphique
  3. DW  offset   PUTPIXEL        ; +crire un pixel au matériel graphique
  4. DW  offset   GETPIXEL        ; Lire un pixel du matériel graphique
  5. DW  offset   GETPIXBYTE      ; Retourne un mot contenant la profondeur de pixel
  6. DW  offset   SET_DRAW_PAGE   ; Sélectionnez la page dans laquelle dessiner les primitives
  7. DW  offset   SET_VISUAL_PAGE ; Fixe la page à afficher
  8. DW  offset   SET_WRITE_MODE  ; Contrôle de dessin au trait XOR

Les fonctionnalités de ces fonctions sont les suivants :

Fonctions Description
GOTOGRAPHIC Cette fonction permet d'entrer dans le mode spécial Pixel Graphics.
EXITGRAPHIC Cette fonction permet de quitter le mode spécial Pixel Graphics.
PUTPIXEL Cette fonction permet d'effectuer l'écriture d'un pixel sur le matériel graphique.
GETPIXEL Cette fonction permet d'effectuer la lecture d'un pixel du matériel graphique.
GETPIXBYTE Cette fonction permet de demander le nombre de bits par pixel (profondeur de couleur) du graphique.
SET_DRAW_PAGE Cette fonction permet de prendre le numéro de page souhaité dans le registre AL et sélectionne d'autres pages graphiques pour la sortie des primitives graphiques.
SET_VISUAL_PAGE Cette fonction permet de prendre le numéro de page souhaité dans le registre AL et sélectionne des graphiques de remplacement à afficher à l'écran.
SET_WRITE_MODE Cette fonction permet de prendre le mode XOR si la valeur dans AX est égal à un et désactivé si la valeur dans AX est égale à zéro.

SAVEBITMAP

BITBLT de l'écran à la mémoire système
Pilote BGI

Syntaxe

DW SAVEBITMAP

Entrée

Registre Valeur ou description
ES:BX Cette paire de registres pointe vers la mémoire tampon dans la mémoire système à écrire. L'adresse ES:[BX] contient la largeur du rectangle -1. L'adresse ES:[BX+2] contient la hauteur du rectangle -1.
CX Ce registre permet d'indiquer la coordonnée X supérieure gauche du rectangle.
DX Ce registre permet d'indiquer la coordonnée Y supérieure gauche du rectangle.

Sortie

Aucun

Description

Ce vecteur permet de copier un bloc de pixels d'écran d'un rectangle défini, comme spécifié par (SI,DI) - (CX,DX), dans la mémoire système.

RESTOREBITMAP

BITBLT de la mémoire système à l'écran
Pilote BGI

Syntaxe

DW RESTOREBITMAP

Entrée

Registre Valeur ou description
ES:BX Cette paire de registres pointe vers la mémoire tampon dans la mémoire système à lire. L'adresse ES:[BX] contient la largeur du rectangle -1. L'adresse ES:[BX+2] contient la hauteur du rectangle -1.
CX Ce registre permet d'indiquer la coordonnée X supérieure gauche du rectangle.
DX Ce registre permet d'indiquer la coordonnée Y supérieure gauche du rectangle.
AL Ce registre permet d'indiquer l'opération de pixel à utiliser lors du transfert de l'image dans la mémoire graphique. Mode écriture pour écriture en bloc :
Valeur Description
0 Cette valeur d'indiquer le mode écrasement.
1 Cette valeur d'indiquer le mode XOR.
2 Cette valeur d'indiquer le mode OR.
3 Cette valeur d'indiquer le mode AND.
4 Cette valeur d'indiquer le mode par complément.

Sortie

Aucun

Description

Ce vecteur permet de charger les pixels d'écran à partir de la mémoire système. La routine lit un flux d'octets de la mémoire système dans le rectangle défini par (SI,DI)-(CX,DX). La valeur dans le registre AL définit le mode utilisé pour l'écriture. Le tableau suivant définit les valeurs des modes d'écriture disponibles :

   
Opération pixel Valeur
Mode en écriture 0
XOR logique 1
OR logique 2
AND logique 3
Complément 4

SETCLIP

Définir un rectangle de découpage
Pilote BGI

Syntaxe

DW SETCLIP

Entrée

Registre Valeur ou description
AX Ce registre permet d'indiquer la coordonnée horizontale supérieur gauche du rectangle à découper.
BX Ce registre permet d'indiquer la coordonnée verticale supérieur gauche du rectangle à découper.
CX Ce registre permet d'indiquer la coordonnée horizontale inférieur droite du rectangle à découper.
DX Ce registre permet d'indiquer la coordonnée verticale inférieur droite du rectangle à découper.

Sortie

Aucun

Description

Ce vecteur permet de fixer une zone de découpage rectangulaire à l'écran. Les registres (AX,BX)-(CX,DX) définissent la région de découpage.

COLOR_QUERY

Demande d'informations sur la table des couleurs
Pilote BGI

Syntaxe

DW offset COLOR_QUERY

Entrée

Registre Valeur ou description
AL 000h

Sortie

Registre Valeur ou description
BX Ce registre permet d'indiquer la taille de la table de correspondance des couleurs.
CX Ce registre permet d'indiquer le nombre maximal de couleurs autorisé.

Description

Ce vecteur permet de demander le nombre maximal de couleurs prises en charge par le matériel. La valeur renvoyée dans le registre BX est le nombre d'entrées de couleur dans la table de correspondance des couleurs. La valeur renvoyée dans le registre CX est le nombre le plus élevé pour une valeur de couleur. Cette valeur est généralement la valeur en BX moins un; cependant, il peut y avoir des exceptions.

Entrée

Registre Valeur ou description
AL 001h

Sortie

Registre Valeur ou description
ES:BX Cette paire de registres permet d'indiquer tableau des couleurs par défaut pour le périphérique.

Description

Ce vecteur permet de demander les valeurs de la table de couleurs pour la table de couleurs par défaut (mise sous tension). Le format de cette table est un octet contenant le nombre d'entrées valides, suivi du nombre d'octets donné d'informations de couleur.



Dernière mise à jour : Vendredi, le 13 septembre 2019