61862336 grafica pe calculator

Upload: hencz-david

Post on 02-Mar-2016

125 views

Category:

Documents


4 download

DESCRIPTION

d

TRANSCRIPT

  • MINISTERUL NVMNTULUI A REPUBLICII MOLDOVA

    UNIVERSITATEA TEHNIC A MOLDOVEI

    Facultatea Calculatoare, Informatic, Microelectronic

    Veaceslav Perju

    GRAFICA PE CALCULATOR

    Curs de prelegeri pentru studenii specialitilor

    "Automatica i Informatica", "Calculatoare", "Microelectronic", "Tehnologii informaionale", FAF

    Chiinau 2005

    1

  • Cuprins1. Sisteme grafice1.1. Sinteza, prelucrarea i analiza imaginilor1.2. Aplicaii grafice1.3. Arhitecturi ale sistemelor grafice1.4. Dispozitive de intrare ale sistemelor grafice1.5. Echipamentele de ieire grafic1.6. Softul sistemelor grafice1.7. Standarde in grafic

    2. Adaptoare video i moduri grafice2.1. Adaptoare video. 2.2. Moduri grafice. 2.3. Iniializarea modului grafic. 2.4. Schimbarea si interogarea modului grafic.2.5. Ieirea din modul grafic.

    3. Primitive grafice3.1. Operaii cu pixeli. 3.2. Construirea liniilor.3.3. Poligoane. 3.4. Curbe conice.3.5. Suprafee.

    4. Atributele de afiare ale primitivelor grafice4.1. Specificarea culorilor. 4.2. Atributele de afiare ale liniilor.4.3. Atributele de afiare ale suprafeelor.

    5. Textul n mod grafic5.1. Afiarea textului in mod grafic.5.2. Atributele de afiare ale textelor.5.3. Seturi de caractere.

    6. Operaii cu imagini6.1. Poarta de vizualizare.6.2. Operaii cu imagini in memorie. 6.3. Salvarea si restaurarea imaginilor.6.4. Fiiere cu mai multe imagini6.5. Operarea cu mai multe pagini video.6.6. Corecia formelor imaginilor sintezate.

    7. Formatele fiierelor de grafic 7.1. Modele de reprezentare bitmap (harti de biti) 7.2. Formatul BMP7.3. Modul vectorial

    2

  • 7. Interpolarea i netezirea imaginilor7.1. Operaiuni de interpolare i netezire a imaginilor7.2. Interpolarea prin funcii Bezier7.3. Interpolarea prin funcii B-spline.7.4. Construirea curbelor i a suprafeelor de netezire

    8. Transformri geometrice 2D8.1. Transformri geometrice elementare 8.1.1. Translaia 8.1.2. Scalare

    Scalare fa de origineScalare fa de un punct oarecare din plan

    8.1.3. RotaiaRotaia fa de origineRotaia fa de un punct oarecare din plan

    8.2.Compunerea transformrilor8.3.Trasnsformri n coordonate omogene8.4. Transformri geometrice inverse8.5. Transformri geometrice fa de un punct oarecare din plan8.6. Transformare de oglindire 8.7. Transformare de forfecare a imaginilor8.8. Transformri ale sistemului de coordonate

    8. Transformri geometrice 3D8.1. Matrici de transformare 3D. 8.2. Translaia 3D. 8.3. Scalarea 3D. 8.4. Rotaia 3D. 8.5. Forfecarea 3D. 8.6. Transformri 3D inverse.8.7. Compunerea transformrilor 3D.8.8. Oglindirea fata de un plan al sistemului de coordonate. 8.9. Rotaia in jurul unei axe oarecare in spaiul 3D. 8.10. Oglindirea fa de un plan oarecare.

    9. Transformri grafice tridimensionale9. 1. Matrici de transformare9. 2. Translaia9. 3. Scalare9. 4. Rotaia n jurul unei axe a sistemului de coordonate9. 5. Transformri inverse9. 6. Forfecarea 9. 7. Oglindirea fa de un pian al sistemului de coordonate9. 8. Compunerea transformrilor tridimensionale9. 9. Rotaia n jurul unei axe oarecare9. 10. Oglindirea fa de un plan oarecare

    10. Vizualizarea scenelor10.1. Transformarea de vizualizare 2D. 10.2. Decuparea 2D.

    3

  • 10.3. Modelul procesului de vizualizare 3D. 10.4. Proiecii. Proiecia perspectiv. 10.5. Vizualizarea imaginilor 3D.

    11. Determinarea vizibilitii obiectelor la afiarea scenelor 3D11.1. Clasificarea algoritmilor de determinare a laturilor i a feelor vizibile ale obiectului.11.2. Determinarea laturilor vizibile ale unui poliedru.11.3. Determinarea feelor vizibile ale obiectului. 11.3.1. Algoritmul GalimbertiMontanari.11.3.2. Algoritmul Zbufer.

    12. Redarea luminii si a umbrelor in imagini12.1. Parametrii luminii12.2. Modele de culoare.12.3. Modele de reflexie a luminii. 12.3.1. Reflexia difuz. 12.3.2. Reflexia spicular. 12.4. Metode de redare a suprafeelor iluminate. 12.4.1. Modelul Lambert.12.4.2. Modelul Gouraud.12.5. Transparena. 12.6. Umbrirea.

    13. Editoare grafice13.1. Adobe Photoshop13.2. Adobe Illustrator13.3. Adobe PhotoDeluxe13.4. Correl Draw13.5. Correl PrintHouse Magic13.6. ClarisDraw13.7. Graphix Advantage13.8. Xara3D13.9. Animatec World Builder13.10. Digital Video Producer13.11. Polytran

    14. Editorul grafic 3D Studio Max14.1.Descrierea general a editorului grafic 3D Studio. 14.2. Structura pachetului grafic 3D Studio. 14.3.Principiile de lucru n editorului grafic 3D Studio. 14.4.Metode de creare a obiectelor.14.5.Crearea i redactarea liniilor i a altor figuri.14.6.Formarea textelor. 14.7.Crearea obiectelor 3D. 14.8. Crearea surselor de lumin. 14.9. Crearea camerei. 14.10.Rendering. 14.11.Alegerea materialelor.

    4

  • 14.12. Crearea materialelor. 14.13. Crearea obiectelor de rotaie. 14.14. Animaia.

    5

  • 1.SISTEME GRAFICE

    1.1. Sinteza, prelucrarea i analiza imaginilor

    Prin sistem grafic se nelege un ansamblu din echipamente i programe, specializate n sintez, prelucrarea i analiz a informaiei grafice, prezentate n forma de imagini. Echipamentele pot fi calculatoare, staii grafice, imprimante, plotter-e .a.

    Un sistem grafic care permite interaciunea cu utilizatorul prin echipamente specializate (mouse, tableta grafic, joy-stick .a.) se numete sistem grafic interactiv.

    Sistemele grafice pot fi clasificate dup scopul prelucrrilor pe care le efectueaz. Din acest punct de vedere se face distincie ntre:-sisteme de sintez a imaginilor, sisteme de prelucrare a imaginilor i sisteme de analiz a imaginilor. Secvena de prelucrri efectuate ntr-un sistem de sintez a imaginilor poate fi reprezentat schematic ca n figura 1.1. Modelul imaginii este o list de primitive grafice (linia, cercul, poligonul, textul i altele), nsoite de atribute cum ar fi: culoarea, tipul i limea liniei, etc. ntr-un sistem grafic 3D primitive pot fi i diferite tipuri de suprafee i obiecte. Algoritmii de sintez codific fiecare primitiv grafic ntr-o form special. Modelul imaginii poate rezulta din calcule specifice aplicaiei (de exemplu, reprezentarea grafic a unei funcii) sau poate fi editat de utilizator prin intermediul programului de aplicaie (de exemplu, schia unei piese, a unei case, etc.). Utilizatorul poate solicita diferite transformri asupra obiectelor redate n imagine sau asupra imaginii n ansamblu. Programele de aplicaie sunt specializate pe diferite domenii, de exemplu, proiectarea asistat de calculator n electronic, n mecanic, n arhitectur, cartografie, birotic, gestiune economic, tipografie electronic, producia de filme, etc. n sistemele de prelucrare i de analiz a imaginilor datele de intrare se extrag din imagini. Imaginea poate fi o fotografie sau o imagine din lumea real. Sistemele de preluare a imaginilor au ca scop ameliorarea imaginilor sub aspectul perceperii lor de ctre om (figura 1.2.) prin: modificarea culorilor, mbuntirea contrastului, redarea selectiv a diferitelor pri din imagine i altele. Analiza imaginilor are ca scop identificarea obiectelor reprezentate n imaginile codificate numeric (figura 1.3.). Sistemele de analiz a imaginilor se folosesc n aplicaii de recunoatere a formelor, de exemplu pentru identificarea obiectelor, pentru analiza reliefului i a resurselornaturale etc.

    1.2. Aplicaii grafice

    Din categoria aplicaiilor grafice fac parte:- Programele de desenare (paint programs): permit crearea desenelor sub form de hri de bii;- Programe pentru desen tehnic i artistic (draw programs): furnizeaz funcii avansate de desenare, bazate n special pe prelucrarea liniilor curbe. Imaginile sunt reprezentate n formate vectoriale;- Programe grafice de prelucrare a datelor tabelare (graphic worksheet): sunt destinate aplicaiilor n domeniul financiar-contabil. Cu ajutorul lor se editeaz tabele de profituri, analize de tabele etc. Datele sunt introduse n celule (o celul reprezint intersecia dintre o linie i o coloan ntr-un tabel). Unele celule pot fi definite ca relaii ntre dou sau mai multe celule introduse anterior. Aceste produse folosesc grafica pentru prezentarea datelor din tabele n forme atractive sau sintetice.- Programe grafice de prezentare (slide show): permit crearea diagramelor (dreptunghiulare sau circulare), graficelor, a altor tipuri de imagini pentru prezentri i rapoarte, pun la dispoziia utilizatorului colecii de diverse scenarii de reclam. Diagramele pot fi rezultatul prelucrrii i reprezentrii datelor din aplicaii pentru foi de calcul;

    6

  • - Programe pentru animaie: permit nlnuirea i secvenierea seriilor de imagini pentru a simula micarea. Fiecare imagine este considerat un cadru ntr-un film. Propun faciliti din domeniul filmului (mixaje, selecie de secvene, modificri de obiecte pentru obinerea efectelor de animaie);- Programe CAD: aplicaii dedicate proiectrii, destinate arhitecilor i inginerilor. Printre funciile cele mai cunoscute, permit: trasare n 2D i 3D, numeroase sisteme de coordonate i tipuri de proiecii; selectarea dintre numeroase sisteme de msur a dimensiunilor paginii de desen, localizarea obiectului prin referina la alte obiecte, mrirea sau micorarea desenelor (zoom), editri de simboluri; tipuri de linii de trasare i culori, scalri i rotaii de obiecte selectate, compatibilitatea formatelor fiierelor, ce pot fi importate sau exportate i de alte aplicaii, umplerea poligoanelor n diverse stiluri (fill), numeroase tipuri de caractere text n alfabete latin, chirilic, grec, simboluri matematice, meteorologice, astronomice, muzicale, facilitatea de dispunere pe masa de desen, cotri automate a obiectelor selectate, atribute de vizibilitate, prioritate, culoare, stil, ataate obiectelor i posibilitatea editrii facile a acestor atribute, introducerea posibilitii desenrii de mn cu dispozitivul de intrare: mouse, tablet grafic, trasri de curbe, suprafee, polilinii, faciliti de trasare n 3D (crearea obiectelor 3D din 2D, eliminarea liniilor ascunse, simularea fotografierii cu lentile de distan focal variabil, teleobiectiv, cu specificarea uneia sau mai multor surse de lumin, realism vizual, iluminri, umbriri, crearea unor macroinstrunciuni cu AUTOLISP sau C;- Editoare grafice (desktop publishing): sunt colecii de funcii de procesare a textului, care permit controlul poziionrii textului i imaginilor, astfel nct pot fi create reviste, ziare, reclame, cri. Pun la dispoziia utilizatorului module pentru: scrierea documentului cu procesorul de texte, editarea/revizuirea textului pn la ajungerea n forma final n modul WYSIWYG (What You See Is What You Get), inserarea textului n pagin, innd cont de dimensiunea literelor, tipul de text, numrul de coloane pe pagin, lungimea coloanelor, ilustrarea prin crearea diagramelor, graficelor, diverselor desene sau preluarea fotografiilor (histograme, imagini scanate), revizuirea aspectului paginii, machetarea, tiprirea n tirajul dorit; - Aplicaii dedicate exploatrii suportului de informaie multimedia (hrtie, film, band magnetic), respectiv dispozitivelor multimedia (microfon, magnetoscop, sintetizator). Sunt aplicaii care ofer utilitare de conversie, de comprimare, funcii de arhivarea imaginilor, filmelor, retuarea imaginilor video, recunoaterea caracterelor documentelor imprimate, recunoaterea, procesarea i arhivarea datelor sonore.

    1.3. Arhitecturi ale sistemelor grafice

    In calculatoarele personale grafica este susinut de ctre procesorul unic al sistemului. Calculatoarele conin un modul denumit plac grafic care conine memoria grafic, dispozitivele de semnalizare i conversie video i controller-ul video, care are rolul de a genera semnalele de sincronizare a monitorului i de a extrage sincron informaia din memoria video. O staie grafic este n general dotat cu dou module de prelucrare i anume unitatea central de prelucrare (UCP) i procesorul grafic (PG). Procesorul grafic al unei staii grafice performante este un procesor specializat, dotat cu un modul de memorie proprie, i cu un set de module care implementeaz n hardware algoritmi specifici prelucrrilor grafice. Astfel de procesoare pot fi dedicate funciilor de generare de segmente sau curbe, operaiilor de decupare, operaiilor de eliminare a suprafeelor ascunse, procesoare de formare a iluminrii i altele.

    1.4. Dispozitive de intrare ale sistemelor grafice

    Dispozitivele de intrare au funcia de realizare a interaciunii dintre utilizator la sistemul grafic.

    7

  • Tastatura: este cel mai comun dispozitiv de intrare. Prin intermediul acesteia pot fi implementate toate funciile de intrare ntr-un sistem, prin alocarea corespunztoare, prin program, a fiecrei taste sau grupuri de taste. Mouse: este actualmente cel mai utilizat dispozitiv pentru implementarea funciei de intrare de tip locator-punctator la nivelul ecranului. Mouse-ul posed dou sau trei butoane a cror apsare determin transferul la calculator a unui cod special. Aciunea pe care programul o efectueaz ca urmare a apsrii unui buton este specific programului care utilizeaz acest dispozitiv. Tracking-ball: principiul constructiv i funcional al acestui dispozitiv este cel al mouse-ului, cu deosebirea c dispozitivul st fix, iar micarea de rotaie a sferei este produs de ctre palma operatorului. Joy-stick: este un dispozitiv utilizat ca locator-punctator. Este alctuit dintr-o manet care are dou grade de libertate de rotaie pe dou axe perpendiculare. Fiecare micare de rotaie se transfer ntr un numr de impulsuri care se transmit la calculator. Light pen: este un dispozitiv punctator direct pe ecran, al crui principiu se bazeaz pe elementul fotosensibil din vrful creionului optic impresionat de lumina emis de ctre punctul de pe ecran atins de creion. Digitizorul i tableta grafic. Construcia este de forma unei plci plane dreptunghiulare, cu dimensiune de la formatul A3 pn la o mas cu laturi de doi metri. Sub aceast plac se gsesc reele de fire paralele amplasate la distane foarte mici (sutimi de milimetru). Exist dou reele, cte una pentru fiecare ax. Pe masa de desen se poate amplasa desenul care trebuie digitizat. Operaia de introducere a punctelor se poate face cu un dispozitiv special La selecia unui punct de pe desen se apas un buton, sistemul depisteaz linia i coloana deasupra cruia este amplasat punctatorul i transmite la calculator indicii liniei i coloanei astfel determinate. Scanner: acest dispozitiv utilizeaz tehnici de fotografiere a imaginii prezentate pe o foaie de hrtie, pelicul etc. Scanner-ul descompune imaginea n rastru de puncte i o transfer pixel cu pixel la calculator. Pentru diminuarea volumului de date transferate scanner realizeaz o compresie de date, anterioar transferului.

    1.5. Echipamentele de ieire grafic

    Echipamentele de ieire grafic sunt acele echipamente care prezint imaginea sintetizat de ctre sistemul de calcul, pe un suport cu caracter permanent (hrtie, film ,etc.), sau pe ecranul unui monitor. In aceast clas de echipamente se ncadreaz: imprimantele cu ace, nregistratoarele (plotter) cu peni sau electrostatic, imprimantele laser, cu jet de cerneal, cu transfer termic i fotonregistratoare pe pelicul (photo-plotter). Se vor defini noiunile care caracterizeaz calitatea imaginii obinute pe suportul de ieire. Dimensiunea punctului reprezint diametrul unui punct singular generat de echipamentul de ieire. Forma punctului este n general circular, dei anumite echipamente pot fi astfel construite nct forma punctului este dreptunghiular. Adresabilitatea reprezint numrul de puncte individuale pe care le poate crea echipamentul pe unitatea de lungime. Adresabilitatea axei X este inversa distanei dintre centrele a dou puncte vecine (adiacente) aflate pe aceeai linie orizontal. In mod similar se definete adresabilitatea axei Y. Nu ntotdeauna adresabilitatea are aceeai valoare pe ambele axe.

    Rezoluia este o noiune corelat cu dimensiunea punctului, iar valoarea ei maxim este egal cu valoarea adresabilitii. Rezoluia se definete ca spaierea minim ntre iruri de linii negre alternate cu linii albe, care pot fi decelate de observator. De exemplu dac pe un centimetru

    8

  • pot fi decelate 20 de perechi intercalate de linii albe i negre, spunem c rezoluia este de 40 linii pe centimetru.

    Dispozitivele grafice de afisare exist de doua tipuri: video display si display cu cristale lichide.

    (a)

    (b)Figura 1-1. Configuratia unui sistem de afisare a imaginii: (a) arhitectura standard; (b) arhitectura cu accelerator grafic.

    Video display este un ecran cu o pelicula foto-luminiscenta pe baza de fosfor, care permite fiecarui pixel al sau sa fie luminos doar cand este lovit de un fascicol de electroni. Deoarece pelicula fosforescenta isi pierde luminozitatea, imaginea trebuie rescanata repetat, cu o frecventa de cel putin 60 ori pe secunda.

    Afisajul cu cristale lichide (Liquid Crystal Display, LCD) este un dispozitiv care foloseste un camp electric pentru a modifica polarizarea celulelor cristaline la nivelul fiecarui pixel. Fiecare astfel de celula este caracterizata de stralucire: prin schimbarea polarizarii pe pixel, se modifica nivelul stralucirii, deci intensitatea afisarii pixelului.

    Afisarea la ecran poate fi facuta in doua moduri: in regim text si in regim grafic.

    In regim grafic, ecranul este considerat format din pixeli. Pixelii ecranului sunt pusi in corespondenta biunivoca cu bitii din memoria video (video buffer).

    9

  • Rezolutia dispozitivului grafic reprezinta produsul dintre numarul de pixeli pe linie si coloana. Rezolutia defineste dimensiunea (exprimata in pixeli) a dreptunghiului in care imaginea este reprezentata.

    In regimul text, ecranul este considerat mprit in 25 linii de 80 coloane fiecare; in fiecare zona fiind afiate diferite caractere grafice (litere, cifre, simboluri etc.). Si in aceasta regiune, ecranul este pus in corespondenta biunivoca cu o parte a memoriei, de data aceasta zonele de ecran fiind asociate cu octetii ce definesc caracterele text.

    Indiferent de tipul dispozitivului de afiare, pentru ca imaginea sa fie afiata, memoria video (frame buffer) este citita de un dispozitiv hardware, numit placa video (video controller sau adaptor grafic). In cazul in care se doreste o crestere a calitii si vitezei de afiare in mod grafic, adaptorul grafic este inzestrat cu memorie video suplimentara si cu dispozitive de procesare grafica (coprocesor grafic), care preiau o mare parte din sarcina de procesare grafica realizata prin software de unitatea centrala de prelucrare (Central Processing Unit, CPU). Acestea se numesc acceleratoare (placi) grafice.

    In figura 1-10 este descrisa arhitectura unui accelerator grafic. Astfel de arhitecturi devin din ce in ce mai complexe, pe msura ce cresc cerinele de procesare a imaginilor si elementelor de grafica.

    Figura 1-3. Arhitectura acceleratorului grafic.

    Acceleratorul grafic preia, practic, realizarea urmtoarelor operaii:

    10

  • - transformari (rotatii si scalari), aprute in reprezentarea obiectelor in micare sau a modificarii pozitiei observatorului; - decupaje, ce provin din deplasarea obiectelor in afara ferestrei de vizualizare; - proiectii, pentru redarea imaginilor folosind transformarile prospective; - texture mapping: colorarea obiectelor si umplerea suprafetelor; - eliminarea suprafetelor ascunse, prin determinarea acelor obiecte care se proiecteaza in acelasi pixel si sunt mai apropiate de observator, pentru a putea fi afisate.

    Dispozitive de trasare

    Imprimantele sunt dispozitive de imprimare a unor informaii transmise de la calculator pe hrtie (sau alte suporturi: folii transparente, plicuri etc.). Sunt orientate pentru imprimare text/grafic. Conin componente electronice (RAM, controler, microprocesoare, plac de reea). Din punctul de vedere al modului de imprimare, pot fi: imprimante text, respectiv imprimante grafice. Din punctul de vedere al metodei de imprimare, putem identifica imprimantele cu ace, imprimantele laser i imprimantele cu cerneal.

    Caracteristic pentru imprimantele text (matriceale) sunt seturile de caractere (litere, cifre i simboluri pe care imprimanta este capabil s le imprime). Imprimantele matriceale (dot matrix) au setul de caractere standard ncrcat n ROM.

    Cele mai folosite sunt imprimante cu 9 ace (o imprimare pe vertical a 9 puncte) sau cu 24 ace (imprimare pe vertical a unei matrice 8x3). Sunt prezente n formate dependente de dimensiunea maxim a colii de hrtie utilizate: A3, A4.

    Imprimantele matriceale sunt definite de viteza de imprimare, exprimat n caractere pe secund (cps). Aceasta poate varia ntre 50 i 500 cps. Multe tipuri de imprimante matriceale ofer practic viteze diferite de imprimare, n funcie de calitatea cerut a imprimrii.

    Un dezavantaj major al acestui tip de imprimante este zgomotul, care crete odat cu numrul de ace i cu calitatea imprimrii.

    Imprimantele grafice. Cele mai interesante i performante tehnologii de imprimare sunt folosite de imprimante laser i LED (Light Emitting Diode). Deosebirea dintre imprimantele laser i LED const n modul de impresionare a cilindrului fotosensibil (figura 1-13). La imprimantele laser obinuite, o singur diod laser special realizeaz raza laser i o dirijeaz spre oglind. Aceasta se rotete cu cca 7600 rotaii/min. Oglinda dirijeaz raza pe o in de reflexie care face ca raza laser s ajung pe cilindrul fotosensibil ncrcat negativ. Raza neutralizeaz cilindrul ncrcat electric n punctele de inciden.

    Tehnologia bazat pe laser i deviere se nlocuiete pentru categoria imprimantelor LED cu un rnd complet de diode luminiscente (LEDuri): 2500 dispuse pe dou linii deasupra cilindrului fotosensibil (figura 1-13). Diodele sunt comandate s se aprind/sting individual i conduc la o rezoluie de pn la 600 dpi, rezultnd mai puine piese mobile, compactitate.

    Tehnologiile laser i LED folosesc 6 etape n procesul de imprimare: cilindrul fotosensibil se ncarc electric (negativ); raza laser transfer imaginea de tiprit n puncte pe cilindru (n punctele n care raza de lumin ntlnete cilindrul, ncrcarea electric este neutralizat); tonerul incrcat negativ rmne agat numai n zonele neutralizate ale cilindrului; cilindrul transfer tonerul pe hrtie sub

    11

  • presiune (10g/cm) i temperatur (1500C); deoarece, dup transfer, pe cilindru rmn resturi de toner, o lam le rzuie, resturile fiind plasate ntr-un recipient de evacuare (Wastebox).

    Imprimantele laser/LED sunt caracterizate de calitatea imprimrii, exprimat n dpi (dots per inch). Rezoluiile imprimantelor actuale variaz n intervalul 300 dpi - 1200 dpi, valorile uzuale fiind 300 dpi i 600 dpi (prin comparaie, imprimarea offset are valori ale rezoluiei ntre 1200 dpi i 2400 dpi). Unele imprimante din aceast categorie pot s permit o rezoluie mrit prin folosirea unor tehnici speciale (resolution enhancement) care se bazeaz pe dispozitive de recunoatere a imaginilor (spre exemplu a liniilor curbe) ce folosesc algoritmi inteligeni i pe modificarea dimensiunii punctului de imprimare (dot). Acesta este motivul pentru care productorii de imprimante grafice laser/LED propun n documentaia tehnic dou valori caracteristice ale rezoluiei: rezoluia dispozitivului de imprimare (engine resolution) i rezoluia efectiv (effective resolution).

    Imprimantele laser/LED pot fi monocrome (imprimare negru/nuane de gri) sau color. n ultimul caz folosesc patru tonere pentru a imprima full color, ceea ce mrete proporional preul pe pagina tiprit. Pentru a mri viteza de imprimare (exprimat n pagini per minut, ppm), dispun de seturi de caractere (internal/resident fonts). Viteza imprimantelor variaz practic ntre 4 i 20 ppm, dac pagina este n general text. O valoare tipic 6 ppm este echivalent cu 40 cps.

    Imprimantele laser/LED sunt cunoscute ca imprimante grafice. n acest scop, sunt dotate cu memorie intern, necesar n procesul de imprimare la o rezoluie acceptabil a unei imagini de dimensiune A4 sau A3. Spre exemplu, pentru imprimarea unei pagini A4 la rezoluie 300 dpi este necesar minim 1 MB de memorie printerRAM. Evident, pentru o rezoluie 600 dpi, necesarul de memorie printer RAM este de cel puin 4 MB.

    Imprimantele laser/LED sunt controlate prin intermediul unor limbaje de descriere PDL (Page Description Language). Standardele PDL actuale sunt PCL (Printer Control Language), propus de Hewlett-Packard (HP) i PostScript (propus de Apple Macintosh).

    Imprimantele cu cerneal propun cteva tehnologii de transfer a informaiei ctre suportul de hrtie. Imprimantele termice cu cerneal (tehnologia BubbleJet/InkJet) se bazeaz pe prezena n capul de imprimare a unui element de nclzire (figura 1-14b). Din momentul alimentrii cu energie electric, acesta se nclzete n 4-7 s la 4000C, determinnd apariia unei bule de gaz care se destinde, produce o suprapresiune i preseaz o pictur minuscul de cerneal prin duz spre exterior. Bula de gaz se formeaz din nou: n capul de imprimare apare o depresiune care asigur transferul cernelei din cartu. Cerneala care intr n cap rcete elementul de nclzire. Aceste faze se repet pentru fiecare punct de tiprit. Aceast tehnologie prezint ca dezavantaj faptul c, dup o utilizare ndelungat, pe elementul de nclzire se formeaz un strat subire de resturi de cerneal care mpiedic lucrul la parametri normali. Bulele de gaz devin mai mici i picturile de cerneal mai slabe. Pentru evitarea acestui comportament trebuie nlocuit nu numai cartuul ci i capul de imprimare (aceasta se ntmpl n medie dup 10 reumpleri cu cerneal).

    Imprimarea piezoelectric cu cerneal (Epson) nlocuiete bula de gaz cu un element format din cristale piezoelectrice (figura 1-14a). Cnd elementul se ncarc electric, cristalele se lungesc n 5 s. Dup 5 s de la ntreruperea alimentrii electrice, circuitele revin la forma iniial. Piezoelementul nu este n contact cu cerneala, ci se gsete n faa unei membrane. Prin apsarea membranei se produce tensiune n duz, rezultnd o pictur minuscul de cerneal. Pictura este foarte fin (datorit frecvenei de max 10 s de generare) i fr picturi satelit (ca n cazul elementelor termice). Prin

    12

  • comparaie, aceast tehnologie are avantajul absenei fenomenelor de uzur termic (deoarece capul de imprimare nu are elemente supuse nclzirii).

    Imprimantele cu cerneal sunt caracterizate de o rezoluie de minim 300 dpi i sunt mai ieftine dar i mai lente dect imprimantele laser. Sunt des utilizate deoarece ofer un cost mult mai redus dect imprimantele color laser pentru imprimarea unei pagini color, ca i datorit dimensiunilor reduse, ceea ce le caracterizeaz ca portabile.

    Plotterele sunt dispozitive de ieire care creaz imagini bidimensionale (spre exemplu grafice) pe hrtie. Se mpart n dou categorii (din punct de vedere constructiv):- drum plotter: mecanismul de trasare const ntr-un mecanism de naintare a hrtiei, similar celui de la imprimant, i un stilou (cap de scriere) ce se deplaseaz pe o dreapt de-a latul hrtiei conform comenzilor primite de la interfa;- flatbed plotter: mecanismul de trasare folosete un bra mecanic ce manipuleaz un stilou (cap de scriere) peste o hrtie ntins (pe baza unui mecanism de control pe axele XY).

    1.6. Softul sistemelor grafice

    Programele din componena unui sistem grafic de sintez sunt n general structurate n dou nivele (figura 1.5.):-nivelul dependent de echipamente, format din programele "driver";-nivelul independent de echipamente, realizat ca o bibliotec de subprograme apelabile din programele de aplicaie, numit biblioteca grafic. Exist cte un program driver pentru fiecare tip de echipament n configuraia sistemului grafic. Pentru ca programele de aplicaie s fie independente de echipamente este necesar ca subprogramele bibliotecii grafice s fie independente de echipamente. Un program trebuie s poat fi folosit cu o gam ct mai variat de echipamente.

    Funciile bibliotecilor grafice pot aparine urmtoarelor categorii: - rutine de configurare (selectarea modului grafic dorit, stabilirea zonelor de memorie pentru scrierea fiierelor de imagini);- rutine pentru stabilirea coordonatelor desenului i a zonei active;- rutine pentru stabilirea paletei de culori;- rutine pentru stabilirea atributelor liniei: culoare de trasare, stil, grosime;- rutine pentru trasarea liniilor, arcelor, elipselor, cercurilor, poliliniilor, umplerea contururilor;- rutine pentru afiarea textului;- drivere i rutine pentru copierea imaginilor grafice la imprimant, rutine pentru gestiunea memoriei ecran.

    Este necesar ca subprogramele bibliotecii grafice s fie apelabile din programe scrise ntr-un limbaj de nivel nalt: Pascal, C, Ada, Basic i altele. Un sistem grafic poate cuprinde biblioteci pentru mai multe limbaje de programare. Unele biblioteci grafice ofer numai funcii de nivel cobort; astfel sunt bibliotecile grafice din mediile Turbo Pascal, Borland C, Borland C++ pentru DOS. Altele ofer funcii de nivel nalt, inclusiv posibiliti de redare a obiectelor tri-dimensionale i de interaciune folosind o varietate mare de echipamente.

    13

  • 1.7. Standarde in grafic

    Obiectivele urmrite prin standardizare au fost:

    1. Portabilitatea programelor, cu dou aspecte: - independena fa de sistemul de calcul i de sistemul grafic folosit; - independena fa de echipamente.

    2. Portabilitatea informaiei grafice, adic posibilitatea transferului descrierilor de imagini ntre sisteme grafice diferite.

    3. Posibilitatea stocrii pe termen lung a informaiei grafice.

    4. Uniformitatea instruirii n domeniul proiectrii i utilizrii sistemelor grafice, asigurarea unui vocabular unic de termeni i concepte.

    Primul standard internaional n domeniul sistemelor de sintez a imaginilor, adoptat n 1985 de ctre ISO (International Standards Organisation) i de ctre ANSI (American National Standards Institute) a fost G.K.S. (Graphical Kernel System). El definete un set complet de funcii de afiare 2D independente de echipamente, funcii de segmentare (grupare a primitivelor grafice), de transformare, de control al staiilor de lucru, i de interaciune. Standardul are dou pri:I - Specificaia funciilor sistemului grafic, ntr-o manier independent de limbaj;II - Interfee pentru diferite limbaje de nivel nalt (Fortran, Pascal, C, Ada), adic denumirile subprogramelor prin care sunt implementate funciile sistemului, parametrii fiecrui subprogram i erorile de semnalat. Ulterior a fost adoptat o extensie a standardului GKS, pentru sinteza imaginilor care redau obiecte tridimensionale, numit GKS-3D. Subprogramele prin care sunt implementate funciile definite n standardele GKS / PHIGS formeaz nucleul independent de dispozitive al sistemului grafic. Prelucrrile dependente de caracteristicile diferitelor tipuri de echipamente sunt grupate n modulele driver. Au fost propuse i alte standarde: CGI (Computer Graphics Interface) i VDI (Virtual Device Interface). Pentru arhivarea i transmisia informaiilor grafice ntre sisteme a fost elaborat standardul CGM (Computer Graphics Metafile, ISO-DIS 8632). Exist deasemenea standarde pentru transmisia la distan a documentelor coninnd texte, figuri, imagini discrete (CAPTAIN, CEPT) i standarde pentru arhivarea i transferul de date de proiectare (IGES).

    2. ADAPTOARELE VIDEO I MODURI GRAFICE

    2.1. Adaptoarele video

    Unitate de afiare a sistemului grafic are doua componente de baza: adaptorul video; monitorul video.

    Adaptoarele video permit afiarea textelor i imaginilor grafice. Informaia care se afieaz pe ecran se extrage din memoria adaptorului video. Adaptoarele grafice mai sunt numite de diversi

    14

  • producatori: video cards, video boards, video display boards, video controllers, graphics cards sau graphics adapters.

    Fiecrui punct (pixel) de pe ecran i corespund unul sau mai muli bii n aceasta memorie. Accesul n memoria video se poate face ca la orice alta locaie de memorie a calculatorului. Capacitatea memoriei video i organizarea ei depind de tipul adaptorului.

    Ecranul este considerat ca fiind mprit printr-o grila de 25x80 celule. Fiecare celula poate conine un caracter. Ecranul este adresat la nivel de caracter, intr-un sistem de coordonate cartezian, cu originea (1, 1) n coltul din stnga sus.

    n modul grafic ecranul este considerat ca fiind divizat printr-o grila rectangulara n celule numite pixeli. Numrul de pixeli ai ecranului (rezoluia) depinde de tipul adaptorului video i de modul n care acesta lucreaz. Imaginile grafice sunt alctuite din puncte, fiecare punct corespunznd unui pixel. Numrul de bii alocai n memoria video fiecrui pixel determina numrul de culori afiabile simultan pe ecran.

    n mod grafic ecranul este adresat intr-un sistem de coordonate carteziene avnd originea (0,0) situata n coltul stnga sus. Coordonatele (x, y) ale unui punct de pe ecran sunt numere ntregi. Valoarea lui x creste spre dreapta iar cea a lui y spre partea de jos a ecranului.

    n funcie de rezoluie i de numrul de culori ce se pot afia simultan pe ecran, n memoria video se pot pstra una sau mai multe imagini ecran. Numrul de imagini ecran, numite i pagini video este limitat de capacitatea memoriei video.

    Adaptoarele video standard sunt:EGA (Enhanced Graphics Adapter) - permite lucrul n mod text i n mod grafic. n mod

    grafic, rezoluia este de 640x350 puncte, cu 16 culori simultan pe ecran i 2 pagini video.VGA (Video Graphics Array) - permite lucrul n mod text i n mod grafic. Acest adaptor

    este considerat un succesor al adaptorului EGA. n mod grafic rezoluia este: 640x480 puncte i 16 culori simultan pe ecran din 256K culori posibile, o pagina video sau 320x200 puncte i 256 culori simultan pe ecran cu o singura pagina video.

    XGA (Extended Graphics Array) - 1024x768 pixeli, 24..210 culori;SVGA (Super Video Graphics Array). Rezoluia este de la 640x400 puncte i 16 culori pn

    la 1280x1024 puncte i 16 mii culori.AGA (Advanced Graphics Adapter) 1024 x 768 pixeli rezoluie. Pentru aplicaii grafice

    complexe s-au realizat adaptoare grafice dedicate cu o rezoluie excepional (cele mai bune rezoluii ntlnite depind nivelul de 4096 x 4096 pixeli).

    Adaptoarele EGA folosesc monitoare digitale iar VGA i SVGA folosesc monitoare analogice.

    Un monitor digital folosete un numr fix de semnale. Astfel, monitorul pentru adaptorul EGA folosete 6 semnale: trei pentru culorile de baza R, G, B (rou, verde, albastru) i trei pentru intensiti r, g, b. Fiind 6 semnale digitale ar putea fi afiate 64 culori distincte simultan pe ecran, dar numrul este limitat la 16 deoarece culoarea unui pixel se retine pe 4 bii n memoria video.

    La un monitor analogic, semnalele R, G, B pot varia continuu. Aceasta permite o variaie continua a nuanelor de culori. ns, numrul de culori disponibile este limitat de reprezentarea digitala n memoria video.

    n momentul alegerii plcii grafice i a monitorului, utilizatorul trebuie s i pun problema performanei i ergonomiei. Corelaia dintre frecvena de remprosptare a imaginii i mrimea memoriei video (ca termeni de alegere a plcii grafice) este prezentat n tabelele 1-1 i 1-2.

    15

  • Conform acestor clasificri, grupa 1 de dispozitive cuprinde plci ce ofer 1-2 MB DRAM. Plcile se bazeaz pe acceleratoare ieftine. Plcile grafice mai lente aduc rezoluii suplimentare mai nalte numai plpind. Grupa a doua este caracterizat de preuri medii, plci cu 2MB DRAM/VRAM. n aceast clas pot apare acceleratoare video. Grupa 3-4 este cea a dispozitivelor profesioniste (VRAM rapid, tehnic de vrf) i, evident, extrem de scumpe.

    2.2. Drivere

    Operaiile cu adaptoarele video sunt realizate de module driver-e. Modulele driver conin rutine prin care sunt accesate memoria video i alte dispozitive ale adaptorului.

    Module driver sunt definite ca fiiere cu extensia .BGI (Borland Graphics Interface) i fiiere cu extensia .CHR.

    Exista aplicaii n care viteza de generare a imaginilor este foarte importanta. Astfel de aplicaii sunt cele care trebuie sa actualizeze imaginea n timp real i cele de animaie. n aceste cazuri se pot folosi direct rutinele BIOS din memoria ROM a calculatorului. Rutine respective se refera la: - stabilirea modului video: text sau grafic - citire/scriere valoare pixel - n mod grafic - scriere caractere cu atribute - n mod text.

    Ele permit accesul direct la memoria video. Avantajul il constituie viteza sporita de generare a imaginii.

    2.3. Moduri grafice

    Fiecare tip de adaptor permite foloirea calculatorului n unul sau mai multe moduri grafice, numite i moduri video. Ele se deosebesc prin rezoluia ecranului, numrul de culori ce se pot afia simultan pe ecran i numrul de pagini video disponibile. n tabelul 1 sunt prezentate modurile video specifice fiecrui tip de adaptor, moduri accesibile prin bibliotecile grafice existente n mediile de programare C i Pascal.

    Prin operaia de autodetecie se determina tipul de adaptor video, se ncarc n memorie fiierul .BGI corespunztor i se selecteaz modul video cu rezoluia maxima.

    Tabelul 1. Moduri grafice

    ConstantaDriverGrafic

    Constantamod video mod

    Rezolutie(col*lin)

    Paletaculori

    Paginivideo

    VGA VGALO 640x200 16 cul. 4VGAMED 640x350 16 cul. 2VGAHI 640x480 16 cul. 1

    2.4. Iniializarea modului grafic

    InitGraph(GraphDriver, GraphMode) - funcia stabilete valorile implicite ale parametrilor de operare n mod grafic i ncarc de pe disc n memorie modulul driver corespunztor primului parametru. Modul de lucru al driver-ului ncrcat este specificat prin al doilea parametru iar

    16

  • denumirea completa a caii unde se va caut fiierul .BGI corespunztor este prezentata prin al treilea parametru.

    Valoarea zero a parametrului GraphDriver determina apelul funciei pentru autodetecia tipului adaptorului video instalat. n acest caz, efectul execuiei funciei initgraph este urmtorul: se detecteaz tipul adaptorului video instalat, se ncarc n memorie fiierul .BGI corespunztor i se selecteaz modul grafic cu rezoluia maxima pentru adaptorul respectiv. Funcia initgraph va ntoarce numrul driver-ului ncrcat n parametrul GraphDriver i numrul modului grafic selectat n parametrul GraphMode.

    Funcia initgraph memoreaz intr-o variabila interna un cod care indica operaie reuita sau terminata prin eroare. Codul poate fi obinut cu funcia Graphresult. Daca operaia de iniializare a modului grafic s-a desfurat cu succes, codul este egal cu 0, altfel este o valoare negativa. n caz de insucces funcia ntoarce codul de eroare. n tabelul 2 sunt prezentate codurile de eroare ntoarse de funciile initgraph detectgraph i graphresult.

    Tabelul 2. Coduri de eroare intoarse la Iniializarea modului grafic detectgraph

    Cod eroare Semnificatie-2 Nu se poate detecta tipul adaptorului video-3 Nu se poate localiza fiierul .BGI-4 Format incorect al fiierului .BGI-5 Memorie insuficienta pentru a ncrca driver-ul grafic

    Detectgraph(Graphdriver, Graphmode) - funcia detecteaz tipul adaptorului video instalat. Este de regula apelata de funcia Initgraph. Poate fi apelata i independent, dac se dorete doar stabilirea configuraiei hardware i nu selectarea automata a modului grafic de rezoluie maxim.

    Spre deosebire de initgraph funcia nu ncarc n memorie fiierul .BGI corespunztor. De aceea, dup apelul funciei date trebuie apelata funcia Initgraph. Ulterior, daca se dorete schimbarea modului grafic selectat, se va folosi funcia Setgraphmode.

    Pentru a cunoate daca execuia unei funcii din biblioteca grafica a decurs normal sau nu, se pot folosi funciile Graphresult i Grapherrormsg.

    Graphresult - funcia ntoarce codul de eroare referitor la execuia ultimei funcii grafice. Codul de eroare este o valoare ntreaga cuprinsa intre -14 i 0. Semnificaia fiecrui cod eroare este prezentata n tabelul 3.

    Grapherrormsg - funcia ntoarce un ir de caractere reprezentnd mesajul corespunztor codului de eroare furnizat de funcia graphresult.

    Tabelul 3. Coduri i mesaje de eroare ntoarse de funciile graphresult i grapherrormsgCod eroare Nume Simbolic Mesajul afiat (de funcia grapherrormsg)

    0 grOk No error -1 grNoinitGraph (BGI) graphics not installed (use initgraph) -2 grNotDetect Graphics hardware not detected -3 grFileNotFound Device driver file not found -4 grInvalidDriver Invalid device driver file -5 grNoLoadMem Not enough memory to load driver

    17

  • -6 grNoScanMem Out of memory n scan fill -7 grNoFloodMem Out of memory n flood fill -8 grFontNotFound Font file not found ()-9 grNoFontMem Not enough memory to load font -10 grInvalidMode Invalid graphics mode for selected driver -11 grError Graphics error -12 grIOError Graphics I/O error -13 grInvalidFont Invalid font file ()-14 grInvalidFontNum Invalid font number

    2.5. Schimbarea i interogarea modului grafic

    Fiecare driver permite doua sau mai multe moduri video cu diferite rezoluii i palete de culori. n biblioteca grafica exista funcii care permit schimbarea modului video stabilit sau interogarea modului video. Aceste funcii sunt:

    Getgraphmode - funcia ntoarce o valoare ntreag ce reprezint modul video curent.

    Setgraphmode - funcia stabilete un nou mod video. La apelul acestei funcii se terge ecranul i se iniializeaz toi parametrii de operare n mod grafic la valorile implicite.

    Funcia se poate utiliza la revenirea din mod text n mod grafic. Funciile getgraphmode i setgraphmode se pot folosi numai dup iniializarea modului grafic.

    Getmoderange - funcia primete ca parametru numrul unui driver grafic i ntoarce doua valori reprezentnd numrul minim i maxim al modului video permis pentru driver-ul grafic specificat.

    Getmaxmode - funcia ntoarce numrul maxim de moduri video pentru driver-ul grafic curent (ncrcat n memorie de funcia initgraph).

    Spre deosebire de funcia getmoderange, funcia getmaxmode se poate utiliza pentru orice driver, inclusiv pentru cele definite de utilizator.

    Getmodename - funcia primete ca parametru numrul modului grafic activ, specificat fie printr-o variabila ntreag. Funcia ntoarce un ir de caractere ce reprezinta denumirea modului video.

    Graphdefault - funcia iniializeaz toi parametrii de operare n mod grafic la valorile implicite.

    Restorecrtmode - funcia reiniializeaz sistemul de afiare n modul text, dup utilizarea modului grafic. Se poate folosi alternativ cu setgraphmode pentru a comuta din mod text n mod grafic, n funcie de aplicaie. La trecerea dintr-un mod n altul, ecranul se terge i se afieaz informatia din memoria video corespunztor noului mod.

    2.6. Ieirea din modul grafic

    Closegraph - funcia efectueaz revenirea n modul text, modul implicit de lucru al sistemului de afiare. Ea apeleaz funcia graphfreemem pentru a elibera memoria ocupata de driver-ul grafic, setul sau seturile de caractere utilizate de program precum i zonele de memorie interne.

    18

  • 2.7. Instalarea unui driver

    Modulele din biblioteca grafica sunt independente de adaptor datorita existentei modulelor driver. Pentru acces la memoria video, modulele din biblioteca folosesc driver-ul ncrcat n memorie.

    Programatorii pot rescrie un driver grafic pentru un adaptor existent sau pot scrie unul nou. Funcia Installuserdriver permite utilizarea unui nou driver, incluznd fiierul .BGI specificat ca parametru, intr-o tabela interna meninut de pachetul de funcii grafice. Un al doilea parametru, opional, este adresa rutinei de detectare i are valoarea NULL daca nu exista o astfel de rutina.

    Funcia ntoarce indexul de driver pe care l va primi driver-ul utilizator astfel instalat sau codul de eroare -11 daca tabela driverelor instalate este deja plina.

    2.8. Includerea driver-lor grafice n forma executabila a unui program

    Execuia unui program care nu conine driver-ul grafic n forma .EXE presupune existenta driver-ului grafic n directorul specificat la apelul funciei Initgraph.

    Acest lucru poate sa duc la unele probleme n cazul utilizrii programului furnizat "la cheie". n cazurile date driver-ul grafic poate fi la inclus n program n forma executabila.

    Pentru includerea unui driver grafic n forma executabila a unui program se procedeaz astfel:1. Se convertete fiierul .BGI n fiier .OBJ cu utilitarul BGIOBJ:2. Se leag fiierul .OBJ rezultat, la programul executabil.

    3. n codul sursa al programului se apeleaz funcia Registerbgidriver sau Registerbgifont, pentru nregistrarea driverului.

    3. Primitive grafice

    Primitive grafice reprezint elementele de imagine care pot fi afiate cu ajutorul funciilor din biblioteca grafica. Astfel de elemente sunt: punctul, linia, cercul, elipsa, arcul de cerc, arcul de elipsa, sectorul de cerc, dreptunghiul, poligonul.

    Toate primitivele grafice au atribute geometrice (coordonate ecran .a.) i atribute de afiare (culoarea, tipul de linie, tipul de interior, grosimea liniei .a.). Fiecare atribut de afiare are o valoare implicita, stabilita la iniializarea modului grafic sau prin apelul funciei Graphdefault.

    3.1. Operaii cu pixeli

    Putpixel(x,y,c) - funcia afieaz un pixel, ale crui coordonate i culoarea sunt specificate ca parametri.

    Getpixel(x,y) - funcia ntoarce culoarea unui pixel ale crui coordonate x i y sunt specificate ca parametri.

    Poziia curenta de desenare poate fi stabilita cu ajutorul funciilor grafice Moveto i Moverel. Implicit, poziia curenta de desenare este n coltul din stnga sus al porii de vizualizare curente.

    Moveto(x,y) - funcia stabilete ca poziie curenta de desenare punctul de coordonate (x,y) specificate ca parametri. n mod text, funcia echivalenta este Gotoxy.

    19

  • Moverel(xr,yr) - funcia deplaseaz poziia curenta de desenare relativ la vechea poziie de desenare, cu distantele xr i yr pe axele x i y respectiv. Noua poziie de desenare nu este limitata la dimensiunea porii de vizualizare curente.

    Getx i Gety - funciile ntorc coordonata poziiei curente de desenare pe orizontala i verticala. Aceste coordonate sunt relative la poarta de vizualizare curenta.

    3.2. Construirea liniilor

    Line(x1,y1,x2,y2) - funcia afiseaza o linie intre punctele de coordonate (x1,y1) i (x2, y2), specificate ca parametri. Linia este afiata folosindu-se valorile curente ale atributelor de afiare ale liniilor: culoare de desenare, grosime i tip linie, mod de scriere n memoria ecran. Valorile trebuie sa fie stabilite nainte de apelul funciei line.

    Valori implicite au urmtoarele atributele de afiare culoare : albtip de linie : continuagrosime linie : un pixelmod de scriere n memoria ecran: COPY_PUT

    Lineto(xf,yf) - funcia afiseaza o linie din poziia curenta de desenare pn n punctul de coordonate (xf,yf) specificate ca parametri. Pentru afiarea liniei se folosesc valorile curente ale atributelor menionate la funcia line. Dup afiare, poziia curenta de desenare va deveni punctul de coordonate (xf, yf).

    Linerel(xr,yr) - funcia afiseaza o linie din poziia curenta de desenare pna intr-un punct specificat prin deplasamentul relativ fata de poziia curenta de desenare (xr, yr).

    3.3. Poligoane

    Rectangle(x1,y1,x2,y2) - funcia afiseaza un dreptunghi specificat prin doua vrfuri diametral opuse: stinga sus i dreapta jos. Coordonatele acestor doua vrfuri constituie parametrii funciei.

    Bar(x1,y1,x2,y2) - funcia afiseaza o suprafa dreptunghiulara specificata prin doua vrfuri diametral opuse. La afiarea suprafeei se folosesc valorile curente ale atributelor de afiare ale suprafeelor: tip de interior i culoare de interior.

    Aributele de afiare ale suprafeelor au urmtoarele valori implicite:culoare de interior : albtip de interior : uniform (toi pixelii de aceeai culoare)

    Bar3d(x1,y1,x2,y2,dz,ind) - funcia afiseaz un paralelipiped dreptunghic, cu fetele paralele cu planele principale ale sistemului de coordonate 3D. La afiare se folosesc valorile curente ale atributelor tip de linie i culoare de desenare pentru contururi, respectiv tip de interior i culoarea de interior pentru fete.

    20

  • Primii patru parametri ai funciei reprezint coordonatele a doua vrfuri diametral opuse ale fetei paralelipipedului situata mai aproape de observator. Parametrul dz reprezint dimensiunea paralelipipedului pe axa z i se exprima n numr de puncte. Ultimul parametru permite desenarea opionala a fetei de sus a paralelipipedului. Aceasta nu se deseneaz daca parametrul are valoarea 0. Opiunea este utila n aplicaii n care se dorete suprapunerea mai multor astfel de figuri.

    Parametrii funciei sunt: numrul de vrfuri ale liniei poligonale i vectorul cu coordonatele (x, y) ale acestora. Pentru a desena o linie poligonala nchisa cu n vrfuri, primul parametru al funciei va fi n+1, iar coordonatele ultimului vrf vor fi egale cu coordonatele primului vrf n vectorul cu coordonate.

    3.4. Curbe conice

    n biblioteca grafica exista funcii pentru desenarea urmtoarelor curbe conice: cerc, arc de cerc, elipsa i arc de elipsa.

    La afiarea curbelor conice se folosesc valorile curente ale atributelor: culoare de desenare i grosime linie. Ele sunt afiate cu linie continu, indiferent de valoarea curenta a atributului tip de linie.

    Circle(x,y,r) - funcia afiseaza un cerc avnd centrul de coordonate (x,y) i raza r, specificate ca parametri. Raza se exprima printr-un numr ntreg.

    Arc(x,y,ui,uf,r) - funcia afiseaza un arc de cerc, intre unghiul iniial ui i unghiul final uf specificate ca parametri. Raza cercului i coordonatele centrului x i y sunt de asemenea parametri ai funciei. Unghiurile iniial i final se exprima n grade, cuprinse intre 0 i 360 grade.

    Ellipse(x,y,ui,uf,a,b) - funcia afiseaza o elipsa sau un arc de elipsa. Coordonatele centrului x i y, semiaxele a i b precum i unghiurile iniial ui i final uf sunt specificate ca parametri ai funciei.

    3.5. Suprafee

    Suprafaa poligonala

    Fillpoly - funcia afiseaza o suprafaa poligonala utiliznd valorile curente ale atributelor de afiare ale liniilor pentru contur, i valorile curente ale atributelor de afiare ale suprafeelor pentru restul punctelor suprafeei. Poligonul se specifica prin numrul de vrfuri i vectorul coordonatelor (x, y) ale vrfurilor. n cazul n care coordonatele ultimului vrf difer de coordonatele primului vrf poligonul este nchis automat.

    Suprafaa circulara i eliptica, sector de cerc i de elipsa

    Fillellipse(x,y,a,b) - funcia afiseaza o suprafaa eliptica cu interiorul determinat de valorile curente ale atributelor culoare de interior i tip de interior.

    Pieslice(x,y,ui,uf,r) - funcia afiseaza un sector de cerc sau un cerc cu interiorul determinat de valorile curente ale atributelor tip de interior i culoare de interior. La afiarea razelor care

    21

  • delimiteaz sectorul se folosesc valorile curente ale atributelor de afiare a liniilor. Coordonatele centrului cercului, raza, unghiurile iniial i final sunt specificate ca parametri ai funciei. Pentru obinerea unei suprafee circulare cele doua unghiuri trebuie sa fie 0 i 360 de grade.

    Sector(x,y,ui,uf,a,b) - funcia afiseaza un sector de elipsa. Coordonatele centrului elipsei, unghiurile iniial i final ale arcului care delimiteaz sectorul i semiaxele elipsei sunt specificate ca parametri ai funciei. Sectorul este afiat folosindu-se valorile curente ale atributelor tip de interior i culoare de interior. Pentru afiarea razelor care delimiteaz sectorul se folosesc valorile curente ale atributelor de afiare a liniilor.

    Suprafaa mrginit de un contur oarecareFloodfill(x,y,c) - funcia modifica culoarea tuturor pixelilor interiori unui contur existent, folosind valorile curente ale atributelor tip interior i culoare de interior. Conturul este specificat n lista de parametri prin culoarea sa. Tot prin lista de parametri se specifica valoarea unui punct interior conturului. Daca punctul specificat nu este interior conturului se va modifica culoarea pixelilor exteriori conturului pn la limitele porii de vizualizare curente.

    4. Atributele de afiare ale primitivelor grafice

    Atribute de afiare ale primitivelor grafice snt urmtoarele: - culoarea de desenare - tipul de linie - grosimea liniei - tipul de interior - culoarea de interior

    Toate atributele au valori implicite. Pentru specificarea valorilor ce se doresc a fi folosite la generarea primitivelor grafice trebuie apelate o serie de funcii ale bibliotecii grafice.

    4.1. Specificarea culorilor

    Culorile care pot fi folosite depind de adaptorul grafic i modul grafic curent.

    Culori VGA

    n funcie de modul grafic utilizat, sistemul VGA permite afiarea a 16 sau a 256 culori simultan dintr-o gama de 256K nuane posibile.

    Cele 16 culori ce pot fi afiate simultan de adaptorul VGA n modul 16 culori formeaz o paleta, prezentata mai jos:

    22

  • Tabelul 5.1. Paleta implicita VGA

    Culoare(numrulintrarii)

    Valoareimplicita(hexa)

    Valoarebinara

    Componenteculoare

    Nume culoare

    0 0 000000 ------ BLACK1 1 000001 -----B BLUE2 2 000010 ----G- GREEN3 3 000011 ----GB CYAN4 4 000100 ---R-- RED5 5 000101 ---R-B MAGENTA6 14 010100 -g-R-- BROWN7 7 000111 ---RGB LIGHTGREY8 38 111000 rgb--- DARKGREY9 39 111001 rgbB LIGHTBLUE10 3A 111010 rgb-G- LIGHTGREEN11 3B 111011 rgb-GB LIGHTCYAN12 3C 111100 rgbR-- LIGHTRED13 3D 111101 rgbR-B LIGHTMAGENTA14 3E 111110 rgbRG- YELLOW15 3F 111111 rgbRGB WHITE

    Paleta folosita poate conine oricare din cele 64 de nuane posibile. Modificarea unei culori sau a ntregii palete se realizeaz cu funciile Setpalette respectiv Setallpalette.

    Funcii pentru stabilirea paletei i a culorii de desenare

    Getmaxcolor - funcia ntoarce numrul maxim de culori ce pot fi folosite n modul grafic curent.

    Setcolor(c) - funcia poate fi apelata pentru stabilirea culorii de desenare curente.

    Getcolor - funcia ntoarce culoarea de desenare curenta.

    Setbkcolor(c) - funcia poate fi apelata pentru specificarea culorii fondului. Ea modifica prima intrare a paletei de culori la valoarea specificata ca parametru.

    Utilizarea acestei funcii are ca efect schimbarea a pixelilor afiai n culoarea de fond. Astfel, o parte din imaginea afiata poate deveni "invizibila", atunci cnd culoarea fondului este aceeai cu cea a unor elemente de imagine. Imaginea insa nu este modificata i nu se pierde, astfel incit la o noua modificare corespunztoare a culorii fondului imaginea poate redeveni "vizibila" n ntregime.

    Getbkcolor - funcia ntoarce valoarea curenta a culorii de fond.

    Culorile (de desenare, de interior, culoarea fondului) pot fi specificate prin valorile numerice corespunztoare sau prin numele simbolice, definite n fiierul GRAPHICS.H. dupa cum urmeaz: BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGREY, DARKGREY,

    23

  • LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE

    Setpalette(indpal, c) - funcia modifica o intrare a paletei. Ea primete prin lista de parametri numrul intrrii i valoarea, care se va memora n intrarea respectiva. (indpal index paleta, c culoarea).

    Schimbarea culorilor de desenare se poate realiza numai prin schimbarea modului grafic. De reinut ca schimbarea modului grafic are ca efect tergerea ecranului.

    Intrrile noii palete pot fi definite explicit sau noua paleta poate fi una obinut anterior cu apelul getpalette.

    Aceasta funcie nu poate fi folosita n modurile grafice care folosesc palete predefinite, deoarece n aceste moduri grafice doar culoarea fondului poate fi modificata i nu ntreag paleta.

    Getpalette - funcia ntoarce paleta de culori curenta.

    Setrgbpalette - funcia poate fi folosita pentru modificarea paletei (fizice) de 256 de culori. Fiecare culoare din paleta se definete prin 3 valori corespunztoare componentelor de baza rou, verde i albastru (RGB). Aceste valori se reprezint pe cte 6 bii. Funcia are ca parametri: numrul intrrii din paleta care se redefinete ( ntreg intre 0 i 255) i valorile culorilor primare R, G, B. Daca se lucreaz n modul VGA cu 16 culori simultan, sunt folosite numai primele 64 intrri ale paletei fizice.

    Din cei 16 bii pe care se reprezint fiecare din parametrii Rval, Gval, Bval sunt folosii doar cei mai semnificativi 6 bii ai octetului mai puin semnificativ. Aceasta corespunde la valori multiplu de 4, n intervalul 0..252.

    4.2. Atributele de afiare ale liniilor

    Tipul i grosimea liniei

    n biblioteca grafica sunt predefinite 4 tipuri de linie i doua grosimi. De asemenea, exista posibilitatea ca utilizatorul sa-i defineasc propriul sau tip de linie.

    Setlinestyle(tl,gl) - funcia stabilete valorile curente ale atributelor tip de linie i grosime linie.n fiierul GRAPHICS.H sunt definite urmtoarele constante simbolice pentru tipul i

    grosimea liniei: OLIDLINE, DOTTEDLINE, CENTERLINE, DASHEDLINE, USERBITLINE; NORMWIDTH, THICKWIDTH.

    Valorile implicite ale acestor atribute de afiare sunt SOLIDLINE i NORMWIDTH.

    Cel de-al doilea parametru al funciei Setlinestyle (Sablonlinie) are semnificaie numai cnd primul parametru, tipul de linie, este USERBITLINE (valoarea numerica 4). n acest caz liniile se vor trasa prin multiplicarea ablonului definit de utilizator. Tabloul definit de utilizator se reprezint pe 16 bii. Un bit corespunde unui pixel al liniei, cu semnificaia 1 - pixel aprins (desenat cu culoarea de desenare curenta), 0 - pixel stins.

    24

  • Getlinesettings - funcia ntoarce informaii referitoare la valorile curente ale atributelor tip de linie, ablon de linie, i grosime linie.

    Modul de nscriere a informaiei grafice n memoria ecran

    n bibliotecile grafice, exista o funcie ce permite stabilirea modului de nscriere a informaiei grafice n memoria ecran. Astfel, valorile numerice prin care se reprezint pixelii n memoria ecran pot fi nscrisee n mod necondiionat, printr-o operaie la nivel de pixel, intre valoarea care trebuie sa fie nscrisa i valoarea existenta.

    Setwritemode(oplog) - funcia stabilete modul de nscriere n memoria ecran a informaiei.

    n fiierul GRAPHICS.H sunt definite doua constante: COPYPUT i XORPUT, corespunztor celor doua modaliti de scriere posibile. COPYPUT specifica afiarea necondiionata (suprascriere) peste imaginea existenta. XORPUT specifica afiarea condiionata combinnd linia cu imaginea deja existenta. Aceasta combinaie corespunde operaiei logice XOR. Astfel, daca o linie este trasat a doua oara prin aceiai pixeli, utiliznd acest mod de afiare, efectul este de tergere a liniei i restaurare a imaginii iniiale.

    4.3. Atributele de afiare ale suprafeelor

    Atributele date sunt folosite de funciile: bar, bar3d, fillpoly, floodfill, fillellipse, pieslice i sector.

    Tipul de interior se specifica printr-un sablon de 8x8 pixeli. Culoarea de interior poate fi diferita de culoarea de desenare, folosita la afiarea conturului figurilor de tip suprafaa.

    Setfillstyle(ti,ci) - funcia poate fi apelata pentru specificarea valorilor curente ale atributelor tip de interior i culoare de interior, specificate ca parametri.

    Setfillpattern(sb,ci) - funcia primete prin lista de parametri un ablon i culoarea de interior. Un ablon se reprezint printr-un vector de caractere.

    Getfillpattern funcia ntoarce ablonul utilizat curent, specificat la apelul funciei Setfillpattern.

    Getfillsettings funcia ntoarce valorile curente ale atributelor tip i culoare de interior.

    5. Textul n mod grafic

    n aplicaiile grafice, imaginile care se afiseaza pot conine i texte, formate din iruri de caractere. Afiarea acestor texte nu pot fi facute n modul text, deoarece trecerea din mod grafic n mod text i invers are ca prim efect tergerea ecranului. De aceea este necesar ca i n mod grafic sa existe posibilitatea afirii de texte pe ecran.

    n mod grafic afiarea textului difer de afiarea n mod text. Astfel, un caracter poate fi amplasat n orice poziie pe ecran (specificata prin coordonate de pixel) fata de modul text n care un caracter poate fi amplasat numai n una din cele 25x80 celule n care ecranul este considerat a fi divizat.

    25

  • De asemenea pentru modul grafic exista definite mai multe seturi de caractere, iar dimensiunea caracterelor poate fi modificata. Direcia de scriere a textului poate fi orizontala sau verticala.

    5.1. Afiarea textului n mod grafic

    n biblioteca grafica sunt definite doua funcii ce permit scrierea textului n mod grafic:Outtext(Text) - funcia afiseaza un ir de caractere. Poziia de amplasare a textului este poziia curenta de desenare.

    Pentru afiarea textului, funcia folosete valorile curente ale atributelor set de caractere, culoare de desenare, dimensiune caractere, direcie de scriere (orientare text) i aliniament. Valorile acestor atribute se stabilesc cu ajutorul unor funcii speciale.

    Outtextxy(x,y,Text) - funcia afiseaza un ir de caractere, n poziia de amplasare x i y, specificata prin parametri. Funcia Outtextxy nu modifica poziia curenta de desenare. Pentru afiarea textului, funcia folosete valorile curente ale atributelor menionate la funcia outtext.

    5.2. Atributele de afiare ale textelor

    Aceste atribute sunt: culoarea de scriere, setul de caractere, dimensiunea (mrimea) caracterelor, direcia de scriere, aliniamentul textului.

    Culoarea de scriere este culoarea curenta de desenare stabilita cu ajutorul funciei Setcolor. Aliniamentul se refera la poziia de afiare a textului fata de poziia de amplasare text transmisa funciilor outtext i outtextxy. Textul este considerat ca fiind ncadrat intr-un dreptunghi cu laturile paralele cu axele sistemului de coordonate. n figura sunt desenate cu linie punctata principalele linii ce delimiteaz dreptunghiul de ncadrare al textului.

    Funciile bibliotecii grafice care pot fi folosite pentru stabilirea valorilor curente ale atributelor de afiare ale textelor snt urmtoarele.

    Settextstyle(car, dir, dim) - funcia poate fi apelata pentru a specifica setul curent de caractere, direcia de scriere i dimensiunea caracterelor. Cel de-al treilea parametru al funciei settextstyle reprezinta factorul de scalare pe x i y ce se aplica dimensiunii iniiale a caracterelor. Acest parametru ia valori intre 0 i 10. Orice valoare n afara acestui interval genereaz o eroare - funcia Graphresult ntoarce valoarea -11 iar valorile curente ale atributelor set caractere, direcie i dimensiune nu se modifica.

    Valoarea 0 ca dimensiune a caracterelor are semnificaie diferita n funcie de setul de caractere curent. Astfel, pentru setul implicit de caractere, valoarea 0 este echivalenta cu valoarea 1. Pentru celelalte seturi de caractere, valoarea 0 semnifica scalare cu factorii de scalare implicii sx=sy=4 sau cu factorii de scalare definii de utilizator, folosind setusercharsize. Valorile implicite ale atributelor set caractere, direcie scriere i dimensiune caracter sunt: DEFAULT_FONT, HORIZ_DIR, respectiv 1.

    Numele simbolice ale seturilor de caractere, definite n fiierul GRAPHICS.H, sunt prezentate n tabelul 5.1.

    26

  • Tabelul 5.1. Seturi de caractere

    Nume simbolic Valoare Fiier .CHRDEFAULT_FONT 0TRIPLEX_FONT 1 TRIPSMALL_FONT 2 LITTSANS_SERIF_FONT 3 SANSGOTHIC_FONT 4 GOTHSCRIPT_FONT 5 SCRISIMPLEX_FONT 6 SIMPTRIPLEX_SCRIPT_FONT 7 TSCRCOMPLEX_FONT 8 LCOMEUROPEAN_FONT 9 EURO

    Direcia de scriere poate fi orizontala sau verticala. Pentru specificarea sa se pot folosi constantele HORIZ_DIR i VERT_DIR:

    Nume simbolic Valoare HORIZ_DIR 0VERT_DIR 1

    Setusercharsize(xm, xd, ym, yd) - funcia permite definirea factorilor de scalare care se vor aplica dimensiunii caracterelor din setul curent de caractere, exceptnd setul implicit (DEFAULT_FONT).

    Factori de scalare se calcul n mod urmtor: sx= xm/xd, sy= ym/yd. Factorii sx i sy pot fi numere ntregi sau fracionare. Daca au valori diferite se produce o deformare a caracterelor afiate, fata de aspectul lor iniial (form de definiie).

    Settextjustify(aliniament) - funcia permite specificarea aliniamentului orizontal i a celui vertical pentru text. Aliniamentul specifica poziia textului fata de poziia de amplasare text folosita de funciile de scriere outtext i outtextxy.

    Valorile numerice i numele simbolice definite pentru aliniament n fiierul GRAPHICS.H sunt prezentate n tabelul urmtor:

    Tabelul 5.2. Aliniamentul textului

    Aliniament Nume simbolic ValoareLEFT_TEXT 0

    orizontal CENTER_TEXT 1RIGHT_TEXT 2

    BOTTOM_TEXT 0vertical CENTER_TEXT 1

    TOP_TEXT 2

    Valorile implicite sunt LEFT_TEXT, BOTTOM_TEXT.

    27

  • 5.3. Seturi de caractere (font-uri)

    Exista doua tipuri de seturi de caractere: raster (bitmap) i vectoriale (stroke), care difer prin modul de descriere a caracterelor.

    ntr-un set raster, fiecare caracter este definit printr-o matrice de pixeli, de dimensiune fixa. ntr-un set vectorial, fiecare caracter este descris ca o secven de segmente de dreapta.

    Afiarea caracterelor raster este mai simpla. n schimb, scalarea caracterelor (mrirea sau micorarea fata de dimensiunea de definiie) este mult mai rapida i mai exacta pentru un set vectorial dect pentru un set raster.

    Setul implicit de caractere, DEFAULT_FONT este un set raster, fiecare caracter fiind definit intr-o matrice de 8x8 puncte. Celelalte seturi de caractere predefinite sunt seturi vectoriale i sunt memorate n fiiere cu extensia .CHR.

    Fiierele .CHR corespunztoare seturilor de caractere folosite intr-un program pot fi transformate n fiiere .OBJ cu ajutorul utilitarului BGIOBJ i apoi incluse n programul executabil.

    Utilizatorul poate defini noi seturi vectoriale sau poate modifica seturile vectoriale predefinite. Editarea unui set vectorial se poate face cu utilitarul FE.EXE (Font Editor). Pentru a putea utiliza noile seturi vectoriale definite, exista n biblioteca funcia Installuserfont:

    Installuserfont(cale, nume fiier.CHR) - funcia ncarc n sistemul grafic un nou set vectorial dintr-un fiier .CHR al carui nume este specificat ca parametru i ntoarce un ntreg, identificator al setului. Acest identificator poate fi folosit de funcia settextstyle pentru a selecta setul curent de caractere.

    n sistemul grafic exista o tabela ce poate conine pn la 20 de seturi de caractere, instalate cu aceasta funcie. Daca tabela este plina, funcia ntoarce valoarea -11.

    Spaiul ocupat de un text pe ecran depinde de numrul de caractere din text dar i de setul de caractere i factorii de scalare utilizai. Pentru a determina dimensiunea n pixeli a dreptunghiului n care se ncadreaz un text, pot fi folosite doua funcii existente n biblioteca grafica: textwidth i textheight. Se poate astfel calcula spaiul intre diferite texte sau linii de text care se scriu pe ecran.

    Textheight - funcia ntoarce nlimea unui text, exprimata n pixeli, innd cont de setul curent de caractere, factorii de scalare i direcia de scriere.

    Txtwidth - funcia ntoarce laimea unui text, exprimata n pixeli, innd cont de setul de caractere curent, factorii de scalare i direcia de scriere. Caracterele din seturile vectoriale au limi diferite.

    6. Operaii cu imagini

    6.1. Sistemul de coordonate dispozitiv

    n mod grafic, ecranul este considerat ca fiind o matrice de puncte (pixeli), fiecare avnd culoarea sa. n funcie de adaptorul grafic i de modul grafic n care se lucreaz aceasta matrice poate avea M coloane i N linii, unde M i N se determin de tipul adaptorului i modul de lucru utilizate.

    28

  • Sistemul de coordonate ataat ecranului, numit "sistem de coordonate dispozitiv" este un sistem de coordonate carteziane, cu originea n coltul din stnga sus al ecranului, axa x orientata spre dreapta i axa y orientata n jos.

    Coordonatele unui pixel pe ecran sunt cuprinse intre 0 i xmax pe axa x, respectiv 0 i ymax pe axa y. Valorile xmax i ymax variaza n funcie de adaptorul video instalat i modul grafic n care se lucreaz, intre 320 i 1024 pe orizontala respectiv intre 200 i 768 pe verticala.

    Valorile maxime ale coordonatelor pot fi determinate cu ajutorul a doua funcii din biblioteca grafica. Aceste funcii sunt utile n programele de aplicaie pentru asigurarea independentei lor de adaptorul grafic folosit. Cele doua funcii sunt:

    Getmaxx, Getmaxy - funciile ntorc coordonata maxima pe orizontala, respectiv pe verticala pentru adaptorul instalat i modul video curent.

    6.2. Poarta de vizualizare (viewport-ul)

    Poarta de vizualizare poate fi orice zona dreptunghiulara a ecranului. Ea reprezint zona n care va fi vizualizat desenul descris n cadrul aplicaiei. Poarta implicita este ntregul ecran. Coordonatele transmise funciilor de afiare apelate n programele de aplicaie sunt considerate relative la originea porii de vizualizare curente. Aceasta permite afiarea unui desen oriunde pe ecran, prin simpla redefinire a porii de vizualizare.

    n biblioteca grafica exista funcii specifice pentru definirea i pentru tergerea suprafeei porii de vizualizare curente:

    Setviewport(x1, y1, x2, y2, clip) - funcia stabilete poarta de vizualizare curenta, specificata prin coordonatele a doua vrfuri diametral opuse (stinga-sus, dreapta-jos).

    n cazul n care coordonatele transmise funciei setviewport sunt incorecte, funcia Graphresult ntoarce valoarea -11, fr a se modifica poarta vizuala curenta.

    Ultimul parametru al funciei (clip) este indicatorul de decupare. Prin el programatorul poate specifica daca dorete sa se efectueze operaia de decupare (clipping) a imaginii afiate la frontiera porii vizuale curente. Astfel, daca parametrul clip are valoarea 0, decuparea va avea loc la marginile ecranului i nu la cele ale porii de vizualizare curente. Coordonatele specificate pentru desenare sunt relative la originea porii vizuale curente, dar imaginea afiata se poate extinde peste limitele acesteia. Daca parametrul clip are o valoare diferita de 0 se va realiza automat operaia de decupare la marginile porii vizuale curente. Aceasta nseamn ca numai acele elemente grafice care conin puncte aparinnd porii vor fi afiate.

    Funciile Initgraph i Setgraphmode stabilesc ca poarta vizuala curenta ntregul ecran.

    Clearviewport - funcia sterge imaginea afiata n poarta vizuala curenta (folosind culoarea de fond) i stabilete poziia curenta de desenare n coltul stnga sus al porii. Este echivalenta ca efect cu funcia clrscr dedicata modului text.

    Getviewsettings - funcia ntoarce coordonatele ce definesc poarta de vizualizare curenta i valoarea indicatorului de decupare (clip).

    29

  • Pentru tergerea ntregului ecran n mod grafic se poate folosi funcia Cleardevice:Cleardevice - terge ntreg ecranul i muta poziia curenta de desenare n originea sistemului de coordonate dispozitiv.

    Spre deosebire de funcia Clrscr din mod text (care terge fereastra activa) funcia Cleardevice nu ine cont de poarta de vizualizare curenta. n cazul n care se lucreaz cu mai multe pagini video n memoria grafica, se va terge doar pagina activa.

    6.3. Salvarea i restaurarea imaginilor n/din fiiere

    Biblioteca grafica conine funcii ce permit diferite operaii cu imagini sau pri de imagini ecran: copierea, tergerea, restaurarea, multiplicarea. Aceste Operaii sunt eseniale n aplicaii de animaie pe calculator; de asemenea, n unele aplicaii este util sa se salveze imagini ecran n fiiere pe disc.

    Funciile care realizeaz operaii cu imagini ecran sunt Getimage i Putimage. "Imaginea ecran" se refera la imaginea la nivel de pixel dintr-o zona dreptunghiulara specificata prin coordonatele a doua vrfuri diametral opuse. Determinarea spaiului de memorie necesar pentru salvarea unei imagini ecran este realizata de funcia Imagesize(x1, y1, x2, y2), care ntoarce numrul de octei necesari pentru a memora o imagine ecran specificata prin coordonatele a doua vrfuri diametral opuse.

    Funcia Getimage(x1, y1, x2, y2, adr) salveaz o imagine ecran intr-o zona de memorie alocata anterior. Parametrii funciei sunt cele 4 coordonate prin care se specifica imaginea ecran i adresa zonei din memoria interna. Zona trebuie sa fie mai mica de 64K.

    Funcia Putimage(x1, y1, oper) restaureaz o imagine salvata anterior, afind-o intr-o poziie specificata prin lista de parametri. Poziia este reprezentata prin coordonatele coltului stnga sus al zonei dreptunghiulare n care va apare imaginea pe ecran.

    Funciile Getimage i Putimage permit transferul imaginilor intre memoria ecran i memoria interna. Pentru aplicaii grafice care opereaz cu mai multe imagini, alocarea memoriei necesare pentru salvarea lor poate constitui o problema i de aceea este convenabil sa se lucreze cu fiiere. Astfel, o imagine ecran se salveaz intr-un fiier care poate fi apoi folosit de mai multe ori n diferite aplicaii. Se poate crea i stoca intr-un fiier o succesiune de imagini, pentru ca apoi imaginile sa fie redate rapid prin citire din fiier.

    Funcii, care realizeaz operaiuni de salvare a unei imagini ecran intr-un fiier, respectiv restaurarea ei din fiier, snt Getimg i Putimg.

    Funcia Getimg(x1,y1,x2,y2,nf) are ca parametri coordonatele a doua vrfuri diametral opuse ale zonei ecran ce conine imaginea de salvat i numele fiierului. Pentru lucrul cu fiierul se folosesc funciile Fopen, Fwrite, Fflush i Fclose.

    Funcia Putimg(x1y1,nf,ms) are ca parametri coordonatele coltului stinga-sus ale zonei n care se va afia imaginea, numele fiierului i modul de scriere. Dimensiunea imaginii ecran se determina din primii 4 octei citii din fiier. Aceti 4 octei reprezint dimensiunile pe x i pe y. Citirea celor 4 octei din fiier se realizeaz cu funcia Fgetc. Se determina apoi numrul de octei necesari pentru memorarea imaginii i se aloca spaiul necesar.

    30

  • Se apeleaz funcia Rewind pentru repoziionare la nceputul fiierului, apoi se citete imaginea din fiier folosind funcia Fread. Pentru restaurarea imaginii pe ecran se apeleaz funcia Putimage. n final se elibereaz spaiul alocat i se nchide fiierul.

    6.4. Operaii cu imagini n memorie

    Ultimul parametru al funciei Putimage specifica modul de scriere al fiecrui pixel imagine. Sunt definite 5 moduri de scriere care permit combinarea unui pixel al imaginii de afiat cu pixelul corespunztor din imaginea existenta n zona de afiare. Modurile de scriere sunt reprezentate prin 5 operatori prezentai n tabelul 12.1 i enumerai n fiierul GRAPHICS.H.

    Tabelul 12.1. Moduri de scriere a pixelilor imaginei

    Numeoperator

    Valoare Descriere operaie

    COPY_PUT 0 imaginea e copiata nlocuind imaginea existentaXOR_PUT 1 Se realizeaz operaia logica XOR la nivel de

    pixel intre imaginea salvata i cea existenta OR_PUT 2 Se realizeaz operaia logica OR AND_PUT 3 Se realizeaz operaia logica AND NOT_PUT 4 Se realizeaz operaia logica NOT la nivel de

    pixel n imaginea salvata i se nlocuiete apoi imaginea existenta pe ecran

    Operaia de copiere (COPY_PUT) este utila atunci cnd se dorete nlocuirea unei imagini sau poriuni de imagine.

    Operatorul XOR_PUT se poate folosi atunci cnd se dorete afiarea temporara a unei imagini intr-o zona a ecranului. Astfel, daca se afiseaza o imagine de doua ori n aceeai poziie folosind operatorul XOR_PUT, dup a doua afiare apare imaginea existenta n zona naintea primei afiri. Metoda se folosete pentru realizarea animaiei.

    Funcia Putimage nu afieaz imaginea daca nu ncape n ntregime pe ecran. Nu este luat n considerare poarta de vizualizare curenta, chiar daca s-a cerut decuparea imaginii la marginile sale.

    6.5. Fiiere cu mai multe imagini

    Crearea i utilizarea unui fiier cu mai multe imagini este utila n aplicaii care necesita salvarea/restaurarea unei imagini care ocupa ntregul ecran, la fel i n aplicaii care opereaz cu mai multe imagini ecran.

    n primul caz, salvarea unui ecran se realizeaz prin divizarea imaginii n fii orizontale, de exemplu n 4 fragmente care se salveaz pe rnd, n acelai fiier. Fragmentele de imagine au aceeai dimensiune, ceea ce permite o cutare simpla n fiier pentru a determina unde ncepe o noua imagine.

    n al doilea caz, imaginile pot avea dimensiuni diferite, de aceea apare problema localizrii imaginilor intr-un fiier. O soluie ar constitui-o salvarea n fiier a unor imagini de aceeai dimensiune i anume dimensiunea celei mai mari imagini. Soluia este convenabila doar n cazul n care imaginile care se salveaz n fiier au dimensiuni aproximativ egale. Daca imaginile sunt de

    31

  • mrimi mult diferite, restaurarea imaginilor este mai complicata; trebuie determinata dimensiunea fiecrei imagini n parte i implicit a datelor care se citesc din fiier. Dimensiunea se determina din primii 4 octei ai unei imagini dar, pentru aceasta trebuie cunoscuta poziia imaginii n fiier. Pentru salvarea mai multor imagini intr-un fiier se poate folosi opiunea append la operaia de deschidere a fiierului.

    Funcia Savimg salveaz o imagine ecran intr-un fiier pe disc. Fiierul poate conine mai multe imagini ecran. Funcia ntoarce poziia n fiier a imaginii salvate. Indiferent de dimensiunea imaginii ecran salvate funcia mparte aceasta imagine n 4 fragmente de aceeai mrime. Divizarea se face n fii orizontale iar fragmentele sunt salvate apoi n fiier n ordinea de sus n jos.

    Restaurarea imaginii salvate anterior intr-un fiier folosind funcia Savimg este realizata de funcia Restimg. Spre deosebire de funcia Putimg funcia dat are n plus un parametru ce reprezint poziia n fiier a imaginii ce se restaureaz. Imaginea este formata din 4 fragmente de aceeai dimensiune.

    6.6. Operarea cu mai multe pagini video

    Imaginea afiata pe ecran n mod grafic este stocata n memoria video. Capacitatea acestei memorii difer de la un adaptor grafic la altul. De asemenea, cantitatea de memorie necesara pentru a memora imaginea de pe ntregul ecran depinde de modul video n care se lucreaz. Astfel, cantitatea de memorie necesara este cu att mai mare, cu cit rezoluia este mai mare i se lucreaz intr-un mod video cu mai multe culori afiabile simultan pe ecran.

    n unele moduri video, capacitatea memoriei video este suficient de mare pentru a permite pstrarea mai multor imagini ecran. Zona de memorie video necesara pentru a pstra un ntreg ecran se numete pagina video. n tabelul urmtor sunt prezentate modurile grafice pentru adaptoarele ce suporta mai multe pagini video.

    Tabelul 12.2. Modurile grafice pentru adaptoarele ce suporta mai multe pagini video

    ConstantaDriver gr

    Constantamod video

    Valoaremod

    Rezoluie(col*lin)

    Paletaculori

    Paginivideo

    DriverVGA VGALO 0 640x200 16 cul. 4

    VGAMED 1 640x350 16 cul. 2 VGAHI 2 640x480 16cul. 1

    n cazul n care adaptorul suporta mai multe pagini video, una singura se afiseaza la un moment dat. Pagina care se afiseaza la un moment dat se numete pagina vizibila. Pagina n care se scrie la un moment dat se numete pagina activa.

    Iniial pagina 0 este att pagina vizibila cit i pagina activa. Adaptorul poate comuta foarte rapid de la o pagina la alta. Corespunztor, n biblioteca grafica exista funcii ce permit comutarea i stabilirea paginii active i a paginii vizibile. Modul de lucru cu mai multe pagini video ofer avantajul unei actualizri rapide a ntregului ecran. Astfel, n timp ce pe ecran este afiata o pagina, se poate construi o alta imagine intr-o alta pagina. Prin simpla schimbare a paginii vizibile se va schimba ntreag imagine afiata pe ecran.

    32

  • Aplicaiile n care se utilizeaz mai multe pagini video sunt de exemplu, programele de animaie pe calculator, programele care construiesc imagini foarte complexe. n primul tip de aplicaii pentru a simula micarea, se afiseaza o pagina video, n timp ce se construiete (se deseneaz) urmtoarele imagini ale filmului de animaie n celelalte pagini video. Se afiseaza apoi succesiv aceste pagini video comutnd de la una la alta pentru a simula micarea. n cel de-al doilea tip de aplicaie este de dorit ca utilizatorul sa nu vad detaliile de construire a imaginii complexe. Timpul de generare a imaginii este suficient de mare i de aceea pe toata aceasta durata se afiseaza o alta pagina video dect cea activa. n final se comuta pagina activa astfel incit sa devin pagina vizibila i astfel utilizatorul poate observa imaginea gata construita.

    Funciile din biblioteca grafica ce permit lucrul cu pagini video sunt urmtoarele.

    Setactivepage - funcia permite selectarea paginii n care se va desena (pagina activa). I se transmite ca parametru numrul de pagina care devine pagina activa. Daca noua pagina activa nu coincide cu pagina vizibila, funciile de desenare apelate n continuare n program nu vor afecta imaginea afiata pe ecran.

    Setvisualpage - funcia permite selectarea paginii video care va fi afiata (pagina vizibila). Poate fi folosita pentru comutarea afirii intre diferite pagini video. Comutarea este mult mai rapida dect poate urmri ochiul uman; necesita doar un ciclu de remprosptare a imaginii ecran (circa 1/50 secunde) pentru afiarea unei imagini deja construite, orict de complexa.

    6.7. Corecia formelor imaginilor sintezate

    Fiecrui driver grafic i mod grafic le corespunde o anumita dimensiune a pixelului pe ecran. Aceasta este reprezentat prin raportul dintre dimensiunea pe orizontala (limea) i dimensiunea pe verticala ( nlimea) ale unui pixel.

    De regula acest raport este subunitar, ce duce la afiarea figurilor generate deformate (lungite pe verticala). Pentru a calcula i corecta distorsiunile, introduse de forma dreptunghiular a unui pixel, se folosesc dou funcii din biblioteca Getaspectratio i Setaspectratio.

    Getaspectratio(xp,yp) - funcia ntoarce doua valori ntregi, reprezentnd dimensiunile pe x i y a unui pixel.

    Funciile de afiare din biblioteca grafica efectueaz corecia de pixel. Daca figurile apar deformate pe ecran, cauza o constituie reglarea electronica necorespunztoare a monitorului. Aceasta poate fi modificata manual. Funcia Circle poate fi folosita ca o metoda de verificare a corectitudinii reglajului electronic al monitorului. Corecia de pixel nu este efectuata pentru linii, poligoane, elipse sau arce de elipsa.

    Setaspectratio(xp,yp) - funcia stabilete raportul dintre dimensiunea pe x i pe y a unui pixel. Raportul este folosit automat ca factor de scalare de funciile de afiare cerc, arc de cerc i sector. Se recomand utilizarea acestei funcii atunci cnd cercul generat de funcia Circle din biblioteca este deformat (pe verticala sau pe orizontala).

    Corecia de pixel se poate realiza prin program - utiliznd funcia Setaspectratio - sau prin reglarea manuala a monitorului.

    33

  • 7. Formatele fiierelor de grafic

    Optimizarea lucrarilor grafice si proiectarea aplicatiilor grafice portabile necesita o buna alegere a formatului fisierului grafic. Modelele de desenare traditionale ce intervin asupra fonturilor de caractere si asupra marginilor sunt: modul bitmap si modul vectorial. Fiecare din aceste modele influenteaza crearea imaginilor, modificarile ulterioare, facilitatile de import/export intre aplicatii, calitatea imprimarii.

    7. 1. Modele de reprezentare bitmap (harti de biti) Imaginile bitmap sunt stocate punct cu punct. Aplicatiile bitmap construiesc imaginea prin

    umplerea fiecarui punct, ca un mozaic, putand fi usor editat folosind un instrument pensula (Paintbrush). Modul bitmap este folosit de scanner pentru analiza imaginii si este singurul mod de extragere pentru periferice numerice.

    Limitarile modelului bitmap sunt date atat de conservarea definitiei imaginii de la creare la imprimare, fara a tine cont de rezolutia reala a dispozitivelor de iesire (afisare sau imprimare), rezultand o redare neoptimizata a imaginii, cat si de ocuparea dezavantajoasa a spatiului de memorie. Culoarea fiecarui punct ce compune imaginea bitmap este reprezentata binar, de unde si necesitatea unui spatiu de memorie foarte mare.

    FORMAT .TIF .GIF .TGA .BMP .JPG DOMENIUL DE schimburi schimb de imagini de format de video APLICATIE de fisiere fisiere sinteza imagini in Win

    bitmap si OS/2

    MARIMEA PE 185 KB sau 67 KB 374 KB 17 MB 303 KB DISC (exemplu 17 MB

    comparativ) MARIMEA 17 MB 5,8 MB 17 MB 17 MB 17 MB FISIERULUI

    DECOMPRIMAT COMPRESIE posibila DA DA NU reglabila

    SISTEME DE 8b, 24b, index pe 8b 8b, 16b, 4b, 8b, 24b 8b, 24b CODIFICARE A 32b 24b, 32b

    CULORII NUMAR DE max.16,7 max. 256 max.16,7 max.16,7 mil -

    CULORI mil mil OBSERVATII format nerecomandat

    standard pentru imagini

    complexe

    34

  • Tabelul 1-1. Principalele formate de fisiere bitmap.

    Avantajele modelului bitmap se refera la buna adaptare pentru desenarea imaginilor complexe (fotografii), fiind folosit de produse software de retusare a imaginii si prezentare asistata de calculator.

    Aplicatiile care utilizeaza imagini in format harti de biti se numesc aplicatii de pictura (paint programs). Principalele formate de fisiere bitmap sunt comparate in tabelul 1-3.

    TIF (Tag Image File Format) este un format bitmap propus de Aldus-Microsoft. Permite o codificare adaptata cel mai bine schimbului de imagini intre aplicatii si sisteme (cu conditia folosirii in format necomprimat). In practica exista diferite tipuri de format TIF (prin deosebirea algoritmului de comprimare facultativ), formatul fiind irecuperabil de la o aplicatie la alta. Versiunea 6.0 a formatelor TIF (ultima) permite salvarea in standardul CMYK. Formatul permite codificarea imaginilor monocrome, nuante de gri sau color (RGB pe 8b si pe 24b), cu diferite rezolutii.

    TGA (TarGA) este un format bitmap folosit in aplicatii de prelucrare a imaginilor de gama inalta (imagini de sinteza sau pentru design industrial).

    GIF (Graphics Interchange Format), format bitmap propus de CompuServe, este folosit pentru schimbul de fisiere din retelele publice (inclusive World Wide Web). Exista doua variante ale standardului: GIF87a si GIF89a. Diferentele intre cele doua formate sunt minore. Are o rata de compresie ce permite utilizarea extensiva, in special pentru scanarea fotografiilor. Formatul GIF foloseste pentru comprimare algoritmul Lempel-Ziv Welch (o varianta a algoritmului de codificare Huffman, vezi sectiunea referitoare la compresii). Formatul permite codificarea imaginilor monocrome, nuante de gri sau color, cu diferite rezolutii. Este limitat la reprezentarea culorii pe 8 biti (256 culori) deci este folosit in special pentru imagini in culori distinctive, dar si pentru codificarea imaginilor transparente (culoare dominanta neutra).

    Figura 1-1. Rulare