CATEGORII DOCUMENTE |
Pentru a prezenta grafic figuri si imagini trebuie sa dispunem de informatii despre acestea. In general aceste informatii se regasesc sub forma coordonatelor punctelor din care se compun imaginile grafice.
Coordonate utilizator sau coordonate reale sunt definite in spatiul utilizatorului. Teoretic spatiul utilizatorului se intinde la infinit, dar practic este limitat de cel mai mare numar real care poate fi memorat de calculator. Se considera spatiul utilizator vizibil ca fiind o portiune rectangulara din spatiu al carei continut se examineaza si care se numeste fereastra (fig,1.).
Fig.1. Spatiul utilizator
Cei patru parametri wl, wt, wr, wb definesc fereastra prin coordonatele coltului din stanga sus ( window left-top), respectiv dreapta jos (window right-bottom). Coordonatele utilizator apartinand lumii reale pot avea marimi foarte variate si au de obicei semnificatii fizice (kilometri, secunde, unitati monetare etc.), nefiind legate in vreun fel de prezentarea grafica. Perceptia umana este tri-dimensionala, astfel incat coordonatele reale pot fi bi- sau tri-dimensionale, desi de cele mai multe ori imaginile tridimensionale sunt proiectate tot pe suport grafic bidimensional.
In concluzie, fereastra specifica zona de date care trebuie vizualizata pe un suport grafic. Coordonatele diferitelor puncte din interiorul ferestrei sunt coordonate utilizator sau coordonate reale si vor fi cuprinse intre wl si wr respectiv wt si wb.
Coordonate-ecran. Prezentarea grafica a unor obiecte apartinand lumii reale se face cu ajutorul unor dispozitive (periferice) grafice. La fel cum calitatea unei fotografii depinde de dimensiunea acesteia si de calitatea aparatului, tot la fel prezentarea grafica pe calculator va fi puternic influentata de clasa dispozitivului grafic de afisare a imaginii, de rezolutia pe care o poate realiza (posibilitatea ca un numar cat mai mare de puncte utilizator relevante sa aiba corespondenta distincta in multimea punctelor pe suport grafic).
Daca dorim sa reprezentam continutul unei ferestre pe ecranul calculatorului sau pe hartia de imprimanta nu vom folosi de cele mai multe ori, intregul ecran sau hartia. Trebuie deci sa specificam o zona rectangulara de pe ecran in care dorim sa vizualizam fereastra. Aceasta zona rectangulara o numim vizor (viwport) si va fi definita prin parametrii (fig.2).
Rezulta deci ca vizorul este portiunea din suportul grafic unde va fi proiectata fereastra. Valoarea maxima pentru parametrii vl,vt,vr,vb depinde de tipul de monitor sau imprimanta folosita. Coordonatele punctele din interiorul vizorului sunt coordonatele Ecran si vor fi cuprinse intre vl si vr respectiv vt si vb.
Fig 2. Spatiul ecran
Trecerea de la coordonate-utilizator la coordonate ecran. Pentru a obtine reprezentarea unei ferestre (wl,wt,wr,wb) intr-un vizor (vl,vt,vr,vb) trebuie cunoscute formulele matematice care ne permit sa calculam coordonatele ecran (xe,ye) ale oricarui punct de coordonate reale (xr,yr) din fereastra (fig 3). formulele folosite pentru transformarea coordonatelor utilizator in coordonate ecran se bazeaza pe conservarea proportiilor si sunt urmatoarele:
Fig Spatiul utilizator/spatiul ecran
2. Servicii B.I.O.S.
BIOS-ul (Basic Input Output System) este o colectie de rutine care asigura serviciile de baza pentru operatiile de intrare/iesire. BIOS-ul este organizat sub forma unor rutine de tratare a intreruperilor, deci o operatie cu un anumit echipament poate fi lansata printr-o intrerupere de un anumit tip. De aici rezulta ca bios-ul reprezinta o intrefata intre sistemul de operare sau programele utilizator si partea hardware a calculatorului.
BIOS-ul pentru adaptorul grafic este plasat in host (memoria principala gazda), intre adresele C0000 si C4000 si contine rutinele ce interactioneaza cu hard-ul. Prin intermediul BIOS se gestioneaza monitorul video, comunicatiile, imprimanta, memoria, ceasul, tastatura, discul etc. vectorii de intreruperi plasati in partea inferioara a memoriei gazda furnizeaza adresa rutinii BIOS asociata intreruperii. Ea este o adresa pe patru baiti, compusa din segment (partea cea mai semnificativa a adresei) si offset (partea cea mai putin semnificativa a adresei). Vectorii de intreruperi pot fi reactualizati chiar pe parcursul unei rulari.
O intrerupere des apelata din programe este cea care ofera servicii de gestionare a ecranului. Pentru utilizarea lor se apeleaza INT10H, dupa ce, in prealabil, registrul AH a fost incarcat cu codul serviciului dorit.
Serviciile video oferite de BIOS sunt urmatoarele:
Valoare AH Servicii
00H Selectare mod video
01H Stabilirea dimensiunii si formei cursorului
02H Stabilirea pozitiei cursorului
03H Citirea dimensiunii si pozitiei cursorului
04H Citirea pozitiei cursorului optic
05H Selectarea paginii de afisare activa
06H Defilare fereastra sus
07H Defilare fereastra jos
08H Citire caracter si atribut de la cursor
09H Scriere caracterului si atributului la cursor
0AH Scrierea caracterului la cursor
0BH Selectarea paletei de culori
0CH Scrierea unui element de imagine
0DH Citirea unui element de imagine
0EH Scrierea unui caracter in mod TTY
0FH Citirea modului video curent
10H Pozitionarea registrilor pe paleta
11H Functiile generatorului de caractere
12H Functiile speciale
13H Scrierea unui sir de caractere
14H Utilizarea LCD-ului
15H Obtinerea caracteristicilor fizice ale dispozitivului de afisare.
Functiile BIOS sunt mai lente decat lucrul direct in memoria video, de aceea sunt preluate de preferinta doar acelea cu frecventa mai mica de apel (setare mod, pozitionare cursor etc). Pentru compatibilizarea intre adaptoarele grafice la nivel de BIOS utilizatorul nu mai interactioneaza direct cu hard-ul.
Registrii VGA/EGA au rol de a controla functiile grafice si sunt plasate in zona inferioara a host-ului ca porturi ce pot fi accesate prin instructiunile IN si OUT din limbajul de asamblare sau prin functii din limbajul C.
Registriii se pot clasifica in urmatoarele grupe:
Registrii externi (sau generali)
Registrii Sequencer (reset procesor, screen Off, extended memory, set mode);
Registrii CRTC (time refreshing)
Registrii grafici (pentru adrese video, masti, rotiri etc)
Registrii de atribute (paleta culori, blinking, intensitate).
Unii din acesti registri exista la adrese diferite, de forma 3D*(emulare color), din motive de compatibilitate. In acest fel se asigura si posibilitatea coexistentei a doua adaptoare diferite.
Registrii generali si registrii de selectare culoare (din grupa registrilor de atribute) sunt accesati direct prin adresa porturilor. Toti ceilalti sunt accesati indirect folosind doua porturi si asigurand accesul la un grup de registri. Cele doua porturi sunt: registrul de adresa (sau indexul registrilor EGA/VGA solicitati) si registrii de date.
Pentru a inscrie indirect o valoare intr-un registru VGA se inscrie indexul registrului VGA in portul de adresa, fiecare registru VGA avand un index in cadrul grupului.
De exemplu, registrii grafici, in numar de noua, au urmatorul index:
- 00 Set/Reset Register;
- 01 Enable Set/ Reset Register;
- 02 Color cCompare Register;
- 03 Data Rotare Register;
- 04 Read Map Register;
- 05 Mode Register;
- 06 Miscellaneous Register;
- 07 Color Don't care Register;
- 08 Bit Mask Register.
In cele ce urmeaza sunt prezentate doua macrodefinitii ce permit adresarea unuia din registrii de secventa si respectiv a unuia din registrii grafici , prin mecanismul index valoare.
#define seq_out (index,val)
#define graph_out (index,val)
S-a preferat macrodefinitie in locul unei functii datorita consumului ridicat de timp solicitat de un apel de functie.
Adaptoare Grafice
Adaptorul grafic este o placa logica atasata calculatorului, servind la sinteza imaginilor pe ecran atat in modul grafic, cat si in cel alfanumeric, prin interfatarea semnalelor calculator monitor.
Traiectoria dezvoltarii adaptoarelor grafice incepe in anul 1981 cu placa MDA (Monochrome Display Adapter), capabila sa reprezinte date intr-un regim alfanumeric cu 25 linii si 80 coloane, definindu-se astfel 2000 de pozitii distincte ale cursorului, in care se afiseaza caractere.
In modul grafic de lucru, grila este mult mai fina, astfel ca un ecran monocrom Hercules poate fi divizat in 348 linii si 720 coloane, permitand si accesul individual la entitati mult mai mici numite puncte sau pixeli. Daca in modul text se poteau folosi numai 2000 de blocuri, continand fiecare cate un caracter ASCII, in modul grafic fiecare din aceste blocuri sunt 'sparte' in 14x9 pixeli pentru ecranul amintit.
Afisarea pe ecran se face prin intermediul unor programe speciale numite drivere furnizate de producator. Exista o mare varietate de adaptoare grafice sau minitoare video, fiecare cu interfata grafica proprie, ca de exemplu: CGA, MCGA, EGA, IBM8514, VGA, PGA, XGA etc.
Numarul de pixeli care pot fi afisati pe ecran determina rezolutia grafica.
Modul grafic este definit prin mai multe elemente: rezolutia folosita, numarul culorilor disponibile, numarul de pagini al memoriei grafice etc.
In anul 1987 firma IBM lanseaza sistemul de calcul PS/2 (Personal System 2) echipat cu adaptoare grafice ce apartin unui nou standard grafic: VGA.Acesta a fost preluat de producatorii de adaptoare grafice datorita a cel putin cinci factori importanti:
paleta de culori a fost extinsa la 256;
numarul de caractere din setul de caractere alfanumerice si grafice a crescut;
cresterea rezolutiei la 640x480 pixeli;
programarea are la baza utilizarea registrilor;
imbunatpatirea compatibilizarii cu alte adaptoare grafice: MDA, CGA si EGA.
In cazul VGA se poate lucra in mod alfanumeric cu caractere realizate cu ajutorul unor matrice de 8x16 sau 9x16 pixeli. Ca efect al cresterii rezolutiei se vor obtine caractere nedistorsionate pe ecran. De asemenea citirea si scrierea in registri conduce la folosirea ecranului pentru mai multe aplicatii.
La sistemele IBM PS/2, adaptorul VGA se realizeaza pe placa de baza (mainboard) . el are o structura interna pe 16biti, dar fluxul de date se realizeaza doar pe opt biti, micsorandastfel viteza adaptorului.
In scopul cresterii vitezei s-a recurs la marirea magistralei interne folosita pentru fluxul de date la 16 biti, cu o posibilitate de extensie a magistralei pana la 32 de biti, obtinandu-se noul adaptor Super VGA. Acest adaptor sintetizeaza imagini cu o rezolutie de 800x600 (1024x768), pixeli cu 16 sau 256 culori simultan.
Pentru obtinerea unei rezolutii bune este necesara o memorie video de capacitate mare. De exemplu, daca memoria de lucru este de 256Kb, atunci rezolutia maxima este de 800x600 pixeli cu 16 culori simultan. Cea mai mare rezolutie(1024x768 pixeli cu 16 culori simultan) necesita o memorie de lucru de 348 Kb(1024x768/2=384 Kb).
Totusi, adaptoarele Super VGA au un mare neajuns: nu sunt compatibile in modul grafic extins, deoarece fiecare producator isi defineste si livreaza propriul driver. Aceasta insa este acelasi pentru cele mai importante si utilizate programe grafice din lume: MS-Windows, Gem, Autocad, Ventura, Lotus 1-2-3, Symphony, Wordperfect etc.
Ca exemple de adaptoare Super VGA amintim pe cele mai importante: Paradise, VGA Plus Card, Vega VGA, VRAM VGA.
Modurile alfanumerice sub VGA au urmatoarele caracteristici:
sunt perfect compatibile cu CGA si MDA pe care le inglobeaza;
cel mai mic element adresabil pe ecran este caracterul. Un caracter e reprezentat in memorie prin doi baiti consecutivi( codul ASCII, corespunzator caracterului ti atributul aferent lui: afisare normala, intensa, stralucitor, sclipitor, subliniat, culoare fond si culoare litera);
memoria grafica poate fi organizata in maximum opt pagini de text cu 25 linii si 40 sau 80 caractere pe o linie; tinand seama de faptul ca unui caracter ii poate corespunde o matrice de 8x8, 8x14, 8x19 sau 9x16 pixeli, se poate determina usor rezolutiile( in pixeli) pentru fiecare mod grafic sub VGA;
cinci fonturi de caractere rezida in BIOS ROM simultan, iar altele( de utilizator) pot fi incarcate la cerere. Dintre cele cinci, trei sunt seturi complete de caractere( 256 caractere) 8x8, 8x14 si, respectiv, 8x16 pixeli. Celelalte doua sunt suplimentare si au 9x14 si, respectiv, 9x16 pixeli. Pot fi incarcate suplimentar pana la opt seturi de caractere sub VGA; dintre toate doar doua seturi pot fi activate la un moment dat;
modurile grafice permit crearea de ecrane complexe folosind facilitatile de utilizare ferestre de ecran, meniuri, scrolling, culori etc.;
portiuni din ecran pot fi blocate, ramanand unele ferestre active cu posibilitatea trecerii dintr-o zona in alta;
caracterul poate fi trasat script (scriere continua), adica fiecare caracter este compus dintr-o succesiune de puncte, aparent continua; pentru o alta dimensiune a caracterului este necesar doar un factor de scalare; prin matrice de puncte , fiecarui caracter ii corespunde un box, ale carui dimensiuni variaza in functie de dimensiunile standard ale setului de caractere( 8x8, 8x14, 8x16, 9x14, 9x16 etc.). Dintre aceste puncte unele sunt aprinse ( colorate intr-un anume fel), altele stinse(culoarea fondului), asa incat sa dea conturul caracterului dorit; spatiile intre caractere sau interlinii intr-un text sunt reprezentate tot in matricea de puncte. Pentru cresterea dimensiunii unui caracter nu poate fi folosit un factor de scala, pentru ca un punct va trebui inlocuit cu o matrice de puncte;
memoria unei matrice de puncte necesita un volum mare de memorie, asa incat pentru un text se pastreaza doar cate un bait pentru codul caracterului, iar pattern-ul se conserva in mod unic in setul de caractere la scriere, in functie de codul caracterului si de fontul activ se selecteaza matricea de puncte corespunzatoare caracterului;
exista si posibilitatea definirii de catre utilizator al structurii matrice de puncte, creandu-se asa numitele fonturi de utilizator; scrierea unui ecran se face rapid, intrucat inseamna manipularea unei memorii de 25 linii x 80 caractere /linie x 2 baiti /caracter = 4 000 baiti;
in modurile alfa, in mod obisnuit nu pot fi trasate alte elemente grafice decat cele referitoare la texte, inclusiv simboluri grafice speciale; unele adaptoare permit insa si trasarea de linii orizontale si verticale; de asemenea unele fonturi au fost proiectate sa contina in cele 256 de semne grafice si pattern-uri pentru a compune diverse figuri grafice (╟, ⌐, ╒, etc.).
Modurile alfa numerice sub VGA sunt: 0, 1, 2, 3 (cu 16 culori) si 7 monocolor.
Campul DT (Display Type) din Mode Control Register, dicteaza cand trebuie sa apara monocolor, desi se lucreaza color, dar monitorul este monocolor.
Modurile 0 si 1 sunt compatibile CGA, 25x40 coloane, cu opt sau patru pagini incepand cu adresa B8000 si continand 2000 baiti fiecare, cate 1000 baiti pentru fiecare plan de biti utilizat; sunt folosite doar doua plane di biti, primul pentru codul caracterelor, celalalt pentru atribute. Scrierea si citirea sunt foarte rapide, deoarece exista un dispozitiv hard pentru adresare de tip par/impar, care selecteaza automat planele 0 respectiv 1.
Ecranul este umplut complet, fiecare caracter aparand dublat. Se lucreaza cu 16 culori din 64, datorita celor sase linii de control culoare. Rezolutia in cele doua moduri este de 320 pixeli pe orizontala si 200 sau 350 de linii de scan, respectiv 360 pixeli pe orizontala cu 400 linii de scan.
Modurile 2 si 3 sunt compatibile CGA 25x80 coloane. Rezolutia este de 640 pixeli cu 200 si 350 linii de scan sau 720 pixeli cu 400 linii de scan. Adresa de inceput a memoriei grafice este B8000, dimensiunea unei pagini de memorie video este mai mare pentru a putea stoca 25x80 caractere x2 baiti = 4 000 baiti.
Se utilizeaza tot doua planuri (0 si 1) de biti cu mecanism hard de selectie al acestora. Cele opt pagini de memorie video a 4 000 baiti fiecare sunt implantate la adresele B8000, B8800, B9000, B9800, BA000, BA800, BB000, BB800, analog cu modul 7.
Modul 7 emuleaza MDA Hercules, cu doi biti/pixel. Baitul de atribute e impartit in doua: fond (bitii 4-6), fata (bitii0-2). Bitul 7 e asociat cu blinking (setat), bitul 3 asociat cu intensitatea. Astfel codurile hexa 1 inseamna subliniat, 9 - intens subliniat, 70 - video invers, 74 - intens video invers, F0 - blink si video invers, F1 - intens video si blink etc.
Cursorul in regim alfa permite localizarea unui caracter pe ecran si este utilizat pentru a preciza locul de inserare sau prelucrare a unui text. El se prezinta sub forma unui bloc (in care intregul box al caracterului este umplut) sau semibloc (o parte din bloc plina), ori liniuta ( cand este aprinsa doar zona aferenta liniutei de subliniere).
Pe masura ce este deplasat (prin program), caracterul asupra caruia se afla cursorul apare normal, ramanand neafecta. Prin intreruperi BIOS poate fi definit tipul cursorului sau inhibata aparitia sa ( campul cursor on/off din registrul Start Cursor). Dimensiunea cursorului se controleaza prin valorile inscrise in registrii Start Cursor si End Cursor.
Modurile grafice suportate de VGA, sub care vom ilustra facilitatile grafice ale adaptorului si caracteristicile de baza ale acestuia sunt ilustrate in tabelul 1.
Existenta mai multor moduri grafice la adaptoarele video utilizate in prezent se explica in primul rand prin necesitatea asigurarii compatibilitatii functionale.
Modurile 4 si 5 utilizeaza doar planele 0 si 1 de biti si au o singura pagina de memorie video, incepand cu adresa B8000. Rezolutia este de 320pixelix200 linii de scan. Se folosesc 2 biti/pixel situati in acelasi plan (0 - par, 1 - impar), realizand deci patru culori. Din aceasta cauza patru pixeli vecini pe orizontala sunt continuti intr-un singur bait. Fonturile utilizeaza o matrice de 8x8 pixeli. In cadrul unui bait numerotarea pixelilor se face dinspre stanga, iar a bitilor dinspre dreapta. Fiecare plan de biti este scindat in doua parti; in aceasta situatie , planul 0 contine baitii de adresa para, dar in partea superioara liniile de scan pare , iar in cea inferioara liniile de scan impare. Acest mod de imprastiere conduce la o risipa de 2x192 baiti intre doua jumatati, in favoare unui refreshing imbunatatit.
Tabelul 1. Caracteristicile principalelor adaptoare grafice
Standard grafic |
Rezolutie |
Mod |
Culori |
Matricea pixeli/caracter |
Moduri compatibil hard |
MDA (Monocrome Graphics Adapter) |
730x350 |
Text |
9x14 | ||
CGA (Color Graphics Adapter) |
620x200 320x200 160x200 320x200 640x200 |
Text Text Grafic Grafic Grafic |
8x8 8x8 | ||
MGA (Hercules Monocrome Graphics adapter |
720x350 750x348 |
Text Grafic |
9x14 |
MDA MDA |
|
EGA (Enhanced Graphics Adapter) |
640x350 720x350 640x350 320x200 640x200 640x350 |
Text Text Grafic Grafic Grafic Grafic |
8x14 9x14 |
CGA,MDA idem idem idem idem idem |
|
PGA (professional Graphics Adapter |
640x480 |
Grafic |
CGA |
||
VGA (video Graphics Array) |
720x400 360x400 640x480 320x200 |
Text Text Grafic Grafic Grafic |
9x16 9x16 |
CGA,EGA Idem CGA |
|
MCGA (Memory Controler Gate Array) |
320x400 640x400 640x480 320x200 |
Text Text Grafic grafic |
8x14 8x14 |
CGA,EGA Idem Idem Idem |
|
Super VGA |
800x600 |
Grafic |
VGA CGA EGA |
||
8514/A |
1024x768 640x480 1024x768 |
Grafic Grafic Grafic |
VGA VGA |
||
XGA (Extended Graphics Array) |
640x480 1024x768 640x480 1056x400 |
Grafic Grafic Grafic Text |
8x16 |
VGA VGA VGA VGA |
Exista diferente intre modurile 4 si 5 in diferite implementari ale lui VGA. Ca si in modul 7 alfanumeric, modul 4 emuleaza CGA standard, in care culoarea este extrasa din doi biti mai putini semnificativi din portiunea baitului de atribut aferenta culorii de fata; se permite astfel selectarea oricarei culori din cele patru culori ale paletei CGA.
Modul 6 face parte din gama modurilor cu doua culori, care cuprinde modurile 6 si 11, pentru compatibilizare cu adaptorul monocrom (Hercules/MDA). Rezolutia de 620x200 corespunde unui font realizat prin matrice de 8x8; foloseste un bit /pixel, care pe monitoarele color poarte fi redat prin doua culori. Fiecare bait contine, asadar, informatie despre opt pixeli alaturati pe orizontala.
Foloseste doua plane de biti, pixelii 0-7 situati in planul 0 si pixelii 8-15 in planul 1; se apeleaza la o adresare par/impar, in care un dispozitiv hard special selecteaza automat planul 0 pentru adrese pare si planul 1 pentru adrese impare.
Ca si la modurile 4 si 5, planele sunt impartite in doua, in jumatatea superioara fiind bitii pixelilor liniilor de scan impare.
Modul 11, cu un bit-pixel lucreaza doar cu planul 0 realizand doua culori posibile, rezolutia 640x480 corespunde unei matrice de 8x16 pentru caractere. Fiecare bait contine informatii despre opt pixeli alaturati de la stanga spre dreapta pe orizontala de scanare.
Pasul = este dispus intr-o singura pagina video de 640x480/8=38 400 baiti, incepand cu adresa A0000; planele 1,2 si 3 raman neocupate.
Modul F este destinat gestionarii monitoarelor monocrome ce permit redarea caracteristicilor video normal, invers, blinking si video intens. Cele patru atribute pot fi codificate prin doi biti pentru fiecare pixel. Cei doi biti sunt plaati in planele 0 si 2 bitul de video in planul 0 si bitul de intensitate, in planul 2; printr-o astfel de dispunere un bait contine informatii despre opt pixeli alaturati pe orizontala.
Rezolutia este de 640x350, corespunzand unui set de matrice 8x14. Cele doua planuri compun in memoria video doua pagini, prima incepand la adresa A0000, iar urmatoarea la A8000 si cu o pierdere de memorie neutilizata in fiecare pagina. De asemenea, memoria aferenta planelor 1 si 3 ramane neocupata (640x350=224000 pixeli, deci 28 000baiti/pagina). Atributele se extrag din bitii cei mai semnificativi ai culorii de fata din baitul de atribut (baitul 4 pentru intensitate si bitul 3 pentru video).
Modul D face parte din grupa modurilor grafice cu 16 culori alaturi de modurile E,10 si 12. Ele dispun de patru biti de informatie pentru fiecare pixel, permitand selectarea celor 16 culori din paleta. Se preiau in acest mod toti cei patru biti, care formeaza zona culorii prim-plan, din baitul de atribute grafice. Cei patru biti sunt dispersati in toate cele patru plane de memorie, cate unul in fiecare plan (bitul 0 in planul 0, bitul 1 in planul 1 etc.). modul de organizare bitmaped va conduce astfel la situatia in care un bait de memorie sa contina informatii partiale despre opt pixeli alaturati pe orizontala de la stanga la dreapta. Modul D se caracterizeaza in plus prin urmatoarele facilitati:
rezolutia de 320x200, set de caractere 8x8, echivalentul a 40 de coloane x25linii, in regim text;
opt pagini de memorii rezidente simultan, incepand de la adresele A0000, A2000, A4000, A6000, A8000, AA000, AC000, AE000 si continand fiecare cate 8000 baiti, rezultand o memorie video neutilizata de 192 baiti in finalul fiecarei pagini.
Modul E, spre deosebire de modul anterior, are o rezolutie mai buna, dubla pe orizontala, 640x200, echivalentul a 80 de coloanex25 linii de text cu un set de caractere de 8x8. In consecinta numai patru pagini pot coexista in memoria video. Adresele de inceput sunt A0000, A4000, A8000, AC000, cu o pierdere de spatiu prin neutilizare de 384 baiti, in finalul fiecarei pagini video.
Modul 10, fata de cele doua moduri anterioare, mareste rezolutia si pe verticala, ajungand la 640x350, echivalentul a 25 liniix80 coloane de text, scris cu un font de 8x14. Necesarul de memorie este dispus in doua pagini de 32000 baiti fiecare, incepand la A0000, respectiv A8000, cu 768 de baiti neutilizati in finalul fiecarei pagini.
Modul 12. Dintre modurile cu 16 culori, modul 12 ofera rezolutia maxima 640x480, echivalentul unui ecran cu 25 linii de text a 80 de coloane fiecare, la un set de caractere de dimensiune 8x16.
Dispunerea memoriei necesare se face intr-o singura pagina rezidenta la un moment dat, incepand cu adresa A000 si ocupand 38400 de baiti.
Modul 1 Grupa modurilor cu 256 de culori are un singur exponent, modul 1 Cele 256 de combinatii coloristice impun ca informatia despre un pixel sa fie redata prin 8 biti, fiecare pixel ocupand un bait de memorie video. Sunt implicate toate cele patru plane de biti, planul 0 continand informatii despre pixelii multipli de 4 plus 1 s.a.m.d.
Descompunerea in memoria video a celor patru plane de biti se face intr-o singura pagina intercalat, incepand de la adresa A0000 planul 0, A0001 planul 1, A0002 planul2 si respectiv A0003 planul
Datorita informatiei coloristice foarte bogate ce trebuie incarcata in memoria video, la un disponibil dat de memoria video nu poate fi sustinuta o rezolutie prea mare. Ea este de numai 320x200, echivalentul unui ecran cu 40x25 caractere, realizate printr-o matrice 8x8.
Combinatiile coloristice se formeaza pornind tot numai de la cei patru biti ai zonei de culoare prim-plan din baitul de atribute. Codul nuantei de culoare se obtine insa suprapunand acesi patru biti (16 coduri posibile de culori) in toti 16 registri din paleta de culori, rezultand asadar 256 de combinatii posibile.
Pentru a putea controla si manipula corect culorile se impune ca , pe parcursul procesului de reprezentare grafica, nici unul din registrii de paleta sa nu fie modificati.
Prelucrarea de text in modurile grafice.
Desi specializate pe prelucrarea de imagini grafice, modurile grafice permit prin asimilare si lucrul cu text. Acesta se poate realiza in mai multe modalitati, beneficiind sau nu de mai multe caracteristici asociate textului si cu viteze foarte diferite de scriere.
O prima modalitate este aceea de a citi/scrie direct in memoria video. Ea este mult mai eficienta si poate fi optimizata de catre utilizator, in cunostinta de cauza. Pentru aceasta trebuiesc evidentiate cateva particularitati ale prelucrarilor de texte in regim grafic.
Setul de caractere utilizat pentru scriere in acest regim este de tipul 'reincarcabil' utilizatorul putand sa-si defineasca propriile sale modele. Deoarece modurile grafice sunt specializate in reprezentarea grafica a unor figuri, caracterele sunt abordate in aceste moduri ca imagini grafice, in memoria video neexistand codul caracterului si imaginea acestuia. Acest lucru permite ca fluxul de biti preluat de memoria video sa fie orientat spre monitor, fara a mai suporta decodificari intermediare, via fonturi de caractere.
Caracterul se deseneaza punct cu punct, toti pixelii din patternul caracterului trebuie incarcati in memoria video. In general, in memoria grafica un plan de biti este dedicat in intregime stocarii paternului de caractere, iar redarea pe ecran este rapida, fiin in fapt un acces la o memorie de tip grafic. Dintre cele maximul opt seturi de caractere ce pot fi incarcate simultan sub VGA, doar doua sunt active la un moment dat. Baitul de atribute aferent fiecarui caracter este utilizat in regim grafic pentru a selecta unul sau doua seturi active de caractere.
Programatorul are libertatea de a-si alege marimea caracterelor, inclinatia acestora, culorile componente, culoarea box-ului in care apare caracterul etc. In general functiile de biblioteca si chiar functiile BIOS permit scrierea de text in regim grafic doar pe directii verticale si orizontale. Scrierea dupa orice directie presupune accesul direct la memoria grafica.
Procesul de scriere text in modurile grafice este insa destul de lent comparativ cu modurile alfanumerice. Cand se scrie un text restrans, care de obicei insoteste un grafic (legenda, titlul etc.) viteza de scriere este multumitoare. Pentru texte mai mari si grafice care se succed rapid trebuie cautate modalitati de rapidizare a procesului de scriere. In general o sporire a vitezei de prelucrare se obtine renuntand sau standardizand unele caracteristici ale textului. Astfel s epoate opta pentru texte scrise doar pe orizontala, ceea ce nu restrictioneaza prea mult utilizatorul. Cand aceasta restrictie nu poate fi respectata se aleg totusi directii ordonate de scriere, controlate eventual printr-un unghi de inclinatie fata de orizontala. In acest caz operatia de scriere este precedata de o transformare de rotatie, aplicata matricei caracterului in memoria principala. Daca se lucreaza cu fonturi in care cu fonturi la care latimea unui caracter permite transpunerea pixelilor componenti printr-un bait de informatie, transferul informatiei se poate face mult mai rapid, deoarece in ultima instanta un transfer se opereaza cu baiti intregi. Astfel, utilizarea unui font de 8x12 poate conduce la cresteri substantiale ale vitezei de scriere in regim grafic, deoarece portiunea dintr-o linie de scan aferenta unui caracter va putea fi actualizata printr-o singura instructiune MOVSB. Cand latimea este alta, se prefera fonturile care pot fi incarcate la nivel de cuvant, printr-un numar cat mai mic de instructiuni MOVSW. Privitor la culoare sunt simplificarile ce pot fi operate in vederea cresterii vitezei de prelucrare a caracterului.
In primul rand daca toate caracterele sunt scrise cu aceeasi culoare, codul acestei culori se incarca intr-un registru VGA si va filtra toate scriierile in cele patru plane ale memoriei grafice.
In al doilea rand se poate face ipoteza ca toate caracterele se scriu pe un fond de aceeasi culoare si nu au boxuri individuale de culori diferite. Acest lucru permite ca fondul existent sa ramana transparent la scrierea textului.
Cresterea vitezei de scriere in acest caz se explica prin faptul ca memoria grafica 'colorata' uniform (continand aceeasi configuratie de biti pentru fiecare pixel), reprezentand fondul, nu se mai fac actualizari decat pentru bitii ce alcatuiesc conturul caracterului.
4. Fisiere de fonturi
Un text complex necesita mai multe semne grafice distincte - de regula cateva sute - deci mai multe fonturi, precum si posibilitatea de a realiza exponenti, indici si suprapuneri de semne; toate acestea pe langa cerintele clasice: centrari de randuri, sublinieri, ingrosari (bold) de semne, tabulari.
Pentru reprezentarea seturilor de caractere se folosesc urmatoarele standarde:
ASCII - prin coduri de sapte/opt biti se deseneaza un set de 128/256 caractere (256=28 moduri de a pune in corespondenta biunivoca elementele multimii numerelor naturale mai mici decat 28 cu o multime de simboluri); codurile de sapte biti sunt folosite la transmiterea datelor prin linii seriale iar cele de opt biti pentru procesarea datelor pe o magistrala paralela;
Extended ASCII standard - care defineste coduri (128-256 ) pentru secvente de taste apasate simultan cu )Ctrl, Shift, Alt);
IBM Grafic Character Set - aparut odata cu monitoarele grafice;
Generarea caracterelor disponibile folosite implicit se face printr-o sectiune BIOS ROM a adaptorului grafic. Adresa din memoria Host unde se afla seturile proprii de caractere este indicata de o rutina BIOS.
Ce este un font si prin ce se caracterizeaza el? Pentru a raspunde introducem o functie, imagine netriviala in care caracterele sunt total ordonate:
imag: caracter semn din A,
unde semn apartine multimii literelor alfabetului (deocamdata). primul caracter il notam LowChar a carui imagine este semnul vid iar ultimul HighChar nu este vid. Deci : 0 LowChar HighChar 255. Fiecare din semnele nevide are un ascender Asc su un descender Desc. Putem alege un numar AscMax care sa nu depaseasca toate aceste ascendere si un alt numar DescMax, care sa nu depaseasca toate aceste descendere. De asemenea alegem abateri maxime fata de linia de baza (Topmax si Botmax) pentru care TopMax AscMax, iar Botmax DescMax. Intre randurile consecutive alegem o distanta IntLin. In aceste conditii, un font (abstract) este un ansamblu format dintr-o functie:
imag: caracter semn din A,
inpreuna cu parametrii numerici de tipul AscMax, DescMax, Topmax, Botmax, IntLin si parametrii specifici fiecarui semn descris.
In mod concret, fonturile sunt fisiere care descriu seturi de caractere prin informatii referitoare la dimensiune (masurata prin numar de puncte) tip (Gothic, Roman, Times, Elite etc) matricea de puncte a caracterelor, informatii de identificare a fisierului si informatii neutre (firma producatoare, versiunea etc).
Caracteristicile semnului (caracterului) pot fi latimea absoluta (width); latimea efectiva (ActWid) care nu este totdeauna mai mica sau egala cu latimea absoluta a aceluiasi semn; inaltimea peste linia de baza (Asc = 'ascender'); adancimea sub linia de baza (Desc = 'descender'); inaltimea totala (height), egala cu suma dintre Asc si Desc. Linia de baza este inlocuita cu o linie de mijloc.
Pentru utilizarea unui anumit tip de caracter/litera, procesorul de texte trebuie sa cunoasca scrierea respectiva. De aceea acest caracter trebuie pregatit, in sensul ca el este transformat intr-un manunchi de date codificat in biti si bytes. Exista doua modalitati de producere a scrierii utilizabile pe calculator:
a) Fonturi bitmap. Fiecare caracter este construit dintr-o succesiune de puncte (pixeli) pozitionate pe un rastru predefinit. Caracterele sunt reprezentate ca harti de biti (bitmaps) orientate pe pixeli.
Metoda este recomandata pentru caractere 'pline'. Pe conturul unor astfel de caractere apare insa efectul treapta sau dinti de fierastrau. Ca solutie in rezolvarea acestui dezavantaj se propune utilizarea unui rastru mai fin, dar fiecare pixel adaugat in plus va necesita spatiu suplimentar de memorie, deci utilizarea unui hardware mai pretentios.
b) Fonturi vectoriale,(liniare). Aici nu mai trebuie definite toate punctele imaginii, ci doar cele de inceput si de sfarsit al unei linii drepte.
Pentru o forma tridimensionala sunt necesare trei coordonate, pentru un patrulater patru, un cerc fiind aproximat printr-un numar cat mai mare de segmente de dreapta.
Caracterul reprezentat pe ecran sau pe hartie va fi reprodus cu atat mai fidel cu cat sunt utilizate mai multe puncte pentru descrierea unei serife (linii orizontale sau carlige la sfarsitul literelor) ori a unei rotunjiri.
Pentru a incarca noi fonturi direct in programe, utilizatorul poate folosi pachete/generatoare de fonturi. Dintre cele mai reprezentative amintim:
Bistrem Fontware, care poate elabora caractere de litera la dimensiunile specifice imprimantei si modului grafic in care lucreaza calculatorul;
Typografica, lucreaza cu ferestre, iar la un moment dat produsul nu poate lucra decat cu un singur caracter de litera;
Fontware, care lucreazasub Windows, pune la dispozitie fonturi liber scalabile care au aceeasi dimensiune, forma atat pe ecran cat si pe imprimanta;
Adobe Type Manager(ATM) sub Windows contine 13 fonturi diferite din familiile Courier, Helvetica, Times si Symbol care, atat reprezentate pe ecrancat si la tiparire au o calitate ridicata; toate fonturile sunt disponibile, drepot caractere ingrosate, cursive sau ca sli combinatii de ingrosat sau cursiv.
Pe langa generatoare mai exista si biblioteci uzuale de fonturi cum ar fi: The Font Company, Casady&Greeve, Bitstream, Double Click sau Adobe. Asupra caracterelor si textelor se pot efectua transformari: rotiri, deformari (trasari, alungiri, oglindiri). De asemenea se pot schimba culoarea, rastru. Contururile etc. sau se poate executa indoirea acestora.
Daca incercam sa dam o definitie culorii putem spune ca:
din punct de vedere fizic culoarea este sinonima cu radiatiile electromagnetice cuprinse intre 375 si 76nm (nanometri) si care formeaza banda spectrului electromagnetic vizibil cu o lungime de unda care este susceptibila sa stimuleze selectiv codurile retiniene;
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1509
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved