INITIALIZAREA MODULUI GRAFIC
1.1 Proceduri si functii
Detecgraph
Procedura DetectGraph testeaza hardware-ul si determina driverul si modul utilizabil. Procedura este definita astfel:
Procedure DetectGraph (var gd, gm: integer);
Gd- reprezinta codul driver-ului, gm-reprezinta codul modului utilizabil.
Dupa revenirea din procdura DetectGraph in modobligatoriu trebuie apelata procedura InitGraph care va incarca efectiv driverul detectat. In cazul in care nu se detecteaza un driver grafic, variabila gd va avea valoarea -2; in acest caz functia GraphResult va returana de asemenea valoarea -2.
InitGraph
Procedura InitGraph initializeaza sistemul grafic, prin incarcarea driver-ului grafic corespunzator echipamentului, pune sistemulin mod grafic, dupa care reda controlul programului aplelat. Procedura este definita astfel:
Proedure InitGraph (var gd: integer; var gm: integer; cd:string );
Variabilele Gd si Gm vor contine valorile returnate de InitGraph, codul corespunzator driver-ului simodului grafic. Variabila Cd de tip strig in momentul apelului contine calea spre driverul *.Bgi, unde sunt stocate fisierele corespunzatoare driverelor (de exemplu 'C:TPBGI'). Daca variabila Cd un sir vid ",driverul actual va fi cautat in unitatea si directorul actual.
Variabila Gd poate fi initializata constanta detect, care este predefinita in Unit-ul Graph si in acest caz nu mai este necsara apelarea procedurii DetectGraph.
GetDriverName
Functia GetDriverName returneaza numele driver-ului grafic utilizat.
Functia este definita astfel:
Functiun GetDriverName: string;
Functia poate fi apelata dupa apelarea InitGraph
GetGraphMode
Functia GetGraphMode returneaza codul modului grafic actual si este definita astfel:
Function GetGraphMode: integer;
Valoare returnata de fuctia GetGraphMode variaza intre 0-5, in functie de driverul grafic actual.
GetModeName
Functia GetModeName returneaza numele modului grafic actual si este defita astfel:
Function GetModeName (Gm: word): sting;
GetMaxMode
Functia GetMaxMode returneaza numarul maxim de moduri ce pot fi folosite de driverul actual. Functia este definita astfel:
Function GetMaxMode: integer;
GetMondeRange
Procedura GetModeRange determina valoarea cea mai mica si valoarea cea mai mare a codului modului grafic ce se poate utiliza, corespunzatoare unui driver dat.
Procedura este devinita astfel:
Procedure GetModeRange(gd: integer; var LoMade, HiMode:integer);
Gd este codul corescpunzator driver-ului grafic;
Variabilele de tip intreg LoMade si HiMode vor contine valoarea minima si maxima a modului grafic.
Daca driverul nu este acceptat, valorile returnate sunt -1.
GraphDefaults
Procedura GraphDefaults pozitioneaza pointerul curent in coltul stanga sus de coordonate (0, 0) si variabilele sistemului grafic la valorile implicite. Procedura este definita astfel:
Procedure GraphDefaults;
GetMaxX si GetMaxY
Functia GetMaxX numarul de ordine al coloanei din drepta (rezolutia X) a driver-ului si a modului actual. Functia este definita astfel.
Function GetMaxX:integer;
De exemplu in cazul utilizarii unui driver VGA in modul VGALo (de rezolutie 640 / 480) functia GetMaxX returneaza valoarea 639.
Functia GetMaxZ numarul de ordine al liniei situata la baza (rezolutia X) a driver-ului si al modului actual. Functia este definita astfel:
Function GetMaxZ:integer;
De exemplu, in cazul utlizarii unui driver VGA in modul VGAHi (de rezolutie 800 / 600 ) functia GetMaxZ returneaza valoarea 599.
GetX si GetY
GetX returneaza abscisa X a cursorului actual, functia fiind definita astfel:
Function GetX:integer;
GetZ returneaza ordonata Y a cursorului actual, functia fiind definita astfel:
Function GetY:integer;
Daca pe ecran sa definit o fereastra, valorile returnate de aceste functii definesc coordonata relativa la fereastra.
SetGraphBufSize
Procedura SetGraphBufSize permite utilizatorului sa schimbe dimensiunea tamponului grafic utilizat pentru realizarea hasurarii cu modelul actual a unei zone inchise; Tamponul initial estde de dimensiunea 4K0, care permite hasurarea unui poligon pana la 655 de varfuri. Prin modificarea dimensiunii tamponului este posibila efectuarea hasurarii poligoanelor cu maimulte varfuri. Procedura este definita astfel:
Procedure SetGraphBufSize (dimbuf:word);
Dimbuf reprezinta dimensiunea tamponului in octeti.
CloseGraph
Procedura CloseGraph termina lucrul cu modul grafic si va apare ecranul dinaintea initializarii acestui mod. Procedura este definita astfel:
Procedure CloseGraph;
RestureCrtMode
Ecranul fiind in mod grafic, exista posibilitatea restabilirii modului caracter existand inaintea initializarii modului grafic. Aceasta restabilire se realizeaza prin procedura RestoreCrtMode care este definita astfel:
Procedure CrtMode;
SetGraphMode
Revenirea din modul caracter in modul grafic este realizata de procedura SetGraphMode, care este definita astfel:
Procedure SetGraphMode (mg:integer);
Mg defineste modul grafic al placiia ctuale. Aceasta procedura realizeaza si stergerea ecranului.
InstallUserDriver
Instalarea unui driver propriu se realizeaza cu functia InstallUserDriver, care este definita astfel:
Function InstallUserDriver (name:strig; Autodetect:pointer ):word;
InstallUserFont
Instalarea unui set de caractere propriu se realizeaza cu functia InstallUserFont care este definita astfel:
Function InstallUserFont (FontFileName:string): integer;
FontFileName este numele fisierului fizic care contine setul de caracter.
Functia returneaza codul (de tip intreg) corespunzator setului instalat.
RegisterBGIdriver
Functia RegisterBGIdriver ( pe baza unei valori ce reprezinta un driver ) returneaza un cod (de tip intreg), ce reprezinta numarul driver-ului. Funstia este definita astfel:
Function RegisterBGIdriver (driver: pointer): integer;
Driver contine adresa driver-ului.
RegisterBGIFont
Functia RegisterBGIFont returneaza un cod care reprezinta numarul setului de caractere fiind definita astfel:
Function RegisterBGIFont (font: pointer): integer;
Font contine adresa setului de caractere.
1.2 Aplicatie
Pentru a se lucra in modul grafic este nevoie de initializarea sistemului in mod grafic.
Programul initmodg relizeaza initializarea sistemului grafic, prin detectarea driver-ului.
Functia Conv de tip string converteste un numar intreg intr-un sir de caractere si este folosita pentru afisarea in mod grafic al numerelor.
Program initmodg;
User crtgraph;
Var gd, gm : integer;
Lomode, himode: integer;
Function conv(l: longint):string;
Var s: string;
Begin
str(l, s);
conv:= s;
end
Begin
detectgraph (gd, gm);
initgraph(gd, dm, 'c:bpbgi');
outtextxy (10, 10, ' numele driver:'+getdrivername');
outtextxy (10, 30,' mod grafic: '+conv(getgraphmode));
outtextxy (10, 50,'nume mod: '+getmodename(gm) );
outtextxy (10, 70, 'nr. Moduri: '+conv(getmaxmode));
getmoderange(gd, lomode, himode);
outtextxy(10, 90, 'val, min.: '+conv(lomode)+'val. Max.: '+cov( himode) );
outtextxy (10, 110, 'X,Y maxi: '+conv(getmaxx)+','+conv (getmaxy));
outtextxy(110, 235, 'Apasati o tasta pentru restabilirea modului carracter
readkey;
restorecrtmode;
writeln ('Acum suntem in mod caracter
writeln(Apasati orice tasta);
readkey;
setgraphmode (gm);
outtextxy(100, 235,' Acum suntem in mod grafic.');
readkey;
closegraph;
End.