OS1 prednáška 3 Bitové mapy Bitové mapy predstavujú jednu z dvoch metód uchovávania obrazových informácií vo Windows 95 programe. Bitová mapa je digitálna reprezentácia obrazu. Každý pixel obrazu zodpovedá jednému alebo viacerým bitom v bitovej mape. Monochromatické bitové mapy potrebujú pre každý pixel iba jeden bit, farebné bitové mapy vyžadujú ďalšie bity, aby sa mohla kódovať farba každého pixelu. Druhým spôsobom uchovávania obrazovej informácie je metasúbor, o ktorom si povieme neskôr. Metasúbor je popis obrazu a nie jeho digitálna reprezentácia. Bitové mapy i metasúbory majú svoje miesto v počítačovej grafike. Bitové mapy sa používajú na zložité obrazy reálneho sveta, ako napríklad digitalizované fotografie alebo videosnímky. Metasúbory sú vhodnejšie na kreslené alebo počítačom generované obrazy, ako napríklad technické výkresy. Obidva typy môžu existovať v pamäti alebo môžu byť uložené na disk. Dajú sa prenášať medzi jednotlivými Windows aplikáciami prostredníctvom schránky. Bitové mapy môžeme taktiež použiť na tvorbu štetcov. Bitové mapy majú dva hlavné nedostatky. sú citlivé na problémy týkajúce sa vlastností, ktoré závisia od zariadenia. Najbežnejšou takouto vlastnosťou je farba. Zobrazenie farebnej bitovej mapy na monochromatickom zariadení je neuspokojujúce. Ďalším problém spočíva v tom, že bitové mapy zahrňujú i konkrétne rozlíšenie a pomer strán obrazu. Hoci bitové mapy možno rozťahovať alebo zmenšovať, tento proces zvyčajne iba kopíruje alebo vynecháva riadky a stĺpce pixelov a vedie tak ku skresleniu kalibrovaného obrazu. Metasúbor možno meniť na takmer ľubovoľný rozmer bez skreslenia obrazu. bitové mapy vyžadujú veľa pamäti. To je ich hlavný nedostatok. Napríklad bitová reprezentácia celej VGA obrazovky s rozlíšením 640x480x16 farieb vyžaduje viac ako 150 KB pamäti. Metasúbory zvyčajne vyžadujú menej pamäti ako bitové mapy. Pamäť potrebná pre bitovú mapu je určená veľkosťou uchovávanej bitovej mapy a počtom farieb, ktoré obsahuje, zatiaľ čo pamäť potrebná pre metasúbor závisí od zložitosti obrazu a počtu jednotlivých GDI funkcií, ktoré obsahuje. Jedinou, avšak tiež dosť podstatnou, výhodou bitových máp v porovnaní s metasúbormi je rýchlosť. Kopírovanie bitovej mapy na obrazovku je zvyčajne omnoho rýchlejšie než zobrazenie metasúboru. Farby a bitové mapy Každý pixel bitovej mapy zodpovedá jednému alebo viacerým bitom bitovej mapy. Monochromatický obraz vyžaduje pre každý pixel 1 bit. Farebný obraz vyžaduje viac ako 1 bit na pixel. Počet rôznych farieb, ktoré bitová mapa dokáže reprezentovať je rovný 2 na počet bitov na pixel. Napríklad 16-farebné bitové mapy vyžadujú 4 bity na pixel a 256-farebná bitová mapa vyžaduje 8-bitov na pixel. Plne farebné bitové mapy potrebujú 24 bitov na pixel, 8 bitov pre každú z farieb (červená, zelená, modrá). Prvé verzie Windows (pred Windows 3.0) podporovali iba GDI objekty, ktoré boli identifikované pomocou popisovača bitovej mapy. Tieto bitové mapy boli buď monochromatické alebo mali rovnakú organizáciu farieb ako skutočné grafické výstupné
zariadenie (napríklad obrazovka). Napríklad bitová mapa, kompatibilná s 16-farebnou VGA kartou mala štyri farbové roviny. Problém spočíval v tom, že takéto bitové mapy sa nedali ukladať na disk a potom používať na iných výstupných zariadeniach, ktoré mali odlišnú organizáciu farieb. Od verzie Windows 3.0 bol definovaný nový formát bitovej mapy, nazývaný bitová mapa nezávislá od zariadenia (device independant bitmap DIB). DIB obsahuje vlastnú tabuľku farieb, ktorá definuje ako pixel korešponduje s RGB farbami. DIB sa dajú zobrazovať na ľubovoľnom rastrovom výstupnom zariadení. jediným problémom je, že farby DIB sa musia konvertovať na najbližšie farby, ktoré zariadenie dokáže zobraziť. Bitové mapy nezávislé od zariadenia (DIB) DIB formát sa nazýva nezávislý od zariadenia pretože obsahuje tabuľku farieb. Tabuľka farieb popisuje ako hodnoty pixelov korešpondujú s s hodnotami RGB farieb. Táto tabuľka farieb nemusí byť kompatibilná s konkrétnym grafickým výstupným zariadením. So zavedením DIB sa GDI objekty bitových máp začali tiež nazývať bitové mapy závislé od zariadenia (device dependant bitmaps DDB). Sú závislé od zariadenia, pretože musia byť kompatibilné s konkrétnym grafickým výstupným zariadením. DIB nie je GDI objekt. GDI nedokáže uchovávať DIB. Za narábanie s DIB v pamäti zodpovedá užívateľský program. Akonáhle sa GDI zmocní DIB, skonvertuje ho na bitovú mapu, závislú od zariadenia, kompatibilnú s nejakým konkrétnym výstupným zariadením. DIB sú určené hlavne na prenos medzi programami, či už prostredníctvom súborov alebo schránky. DIB sa dá skonvertovať na DDB GDI objekt. V takomto prípade sa stratí informácia o farbe, nezávislá od zariadenia. Je možný i opačný postup, t.j. GDI objekt môžeme skonvertovať na DIB, pričom tabuľka farieb bude kompatibilná s tým výstupným zariadením, s ktorý je kompatibilný DDB GDI objekt. Ak potrebujeme uchovávať informácie bitovej mapy v súbore, resp. čítať súbory bitových máp alebo prenášať informácie v tvare bitovej mapy do z zo schránky v tvare, nezávislom od zariadenia, mali by sme použiť DIB. Avšak ak potrebujeme vytvárať iba monochromatické bitové mapy, alebo bitové mapy použijeme iba v rámci nášho programu, pričom budú kompatibilné s displejom, potom je vhodnejšie a ľahšie použiť GDI bitové mapy. DIB súbor Štruktúrou DIB bitovej mapy sa nebudeme podrobne zaoberať. Je popísaná v dokumentácií Windows vývojových prostriedkov. Zobrazovanie DIB Windows obsahuje dve funkcie na zobrazovanie DIB z pamäti. Najčastejšie sa používa funkcia StretchDIBits, ktorá umožňuje rozťahovať alebo zmenšovať bitovú mapu a ktorá tiež umožňuje používať rozmanité rastrové operácie. Funkcia SetDIBitsToDevice je jednoduchšia. Iba zobrazuje bitovú mapu bez zväčšovania alebo zmenšovania a bez rastrových operácií. Obidve funkcie ako parameter vyžadujú smerník na štruktúru BITMAPINFOHEADER začiatok DIB pamäťového bloku a smerník na bity bitovej mapy.
Konverzia DIB na objekty bitových máp Ak máme 16-farbový alebo 256-farbový vidoadaptér a zobrazujeme plne farebnú bitovú mapu s 24 bitmi na pixel, môžeme si všimnúť, že zobrazenie bitovej mapy si vyžaduje určitý čas. Je to dané tým, že driver zariadenia musí vyhľadať najbližšie farby pre každý pixel bitovej mapy. Tento proces môžeme urýchliť konverziou DIB na GDI bitovú mapu pomocou funkcie CreateDIBitmap. Vyhľadanie farieb sa urobí iba raz a formát bitovej mapy bude mať rovnaký formát ako videoadaptér. Napriek svojmu názvu funkcia nevytvára DIB. Vytvára GDI bitovú mapu, závislú od zariadenia z DIB objektu a vracia popisovač objektu. Táto GDI bitová mapa je kompatibilná s grafickým výstupným zariadením, ktorého popisovač sa prenáša ako prvý parameter.
Metasúbory Metasúbory sú pre vektorovú grafiku to, čo bitové mapy pre rastrovú. Metasúbory sa skladajú z postupnosti záznamov, ktoré reprezentujú volania grafických funkcií. Metasúbor je v podstate súbor grafických funkcií, ktoré sú zakódované do binárnej formy. Maľovacie programy pracujú s bitovými mapami, kresliace programy zasa vytvárajú metasúbory. V kresliacom programe je jednoduchšie zobrať konkrétny grafický objekt (napríklad čiaru) a preniesť niekde inde. Je to umožnené tým, že jednotlivé zložky obrázku sú uložené ako samostatné záznamy. V maľovacom programe takáto činnosť nie je možná maximálne môžeme presúvať štvoruholníkové kúsky bitovej mapy. Pretože metasúbor popisuje obraz pomocou grafických príkazov, obraz sa dá zmenšovať či zväčšovať bez skreslenia. Bitové mapy takýmto spôsobom nefungujú. Metasúbor sa dá skonvertovať do bitovej mapy, avšak so stratou informácií. Grafické objekty, ktoré sú obsiahnuté v metasúbore nebudú viac oddeliteľné a splynú dokopy do jedného veľkého obrazu. Konverzia bitových máp do metasúborov je omnoho zložitejšia a vyžaduje zložitú analýzu. Metasúbory sa najčastejšie používajú na zdieľanie obrázkov medzi aplikáciami prostredníctvom schránky, resp. diskových súborov. Pretože metasúbory popisujú obrázok ako súbor GDI volaní, vyžadujú menej pamäti a sú menej závislé od zariadenia než bitové mapy. Typy fontov Windows poskytuje dve široké kategórie fontov: GDI fonty a fonty zariadení. GDI fonty sú uložené v súboroch na pevnom disku. Fonty zariadení sú súčasťou výstupných zariadení. Napríklad tlačiarne majú často zabudované fonty v lokálnej ROM pamäti. GDI fonty sa delia do troch skupín: rastrové fonty, čiarové fonty a TrueType fonty. Rastrový font sa občas označuje i ako bitmapový font, pretože v súbore rastrového fontu je každý znak uložený ako bitovo mapovaná schéma. pre každú veľkosť znaku a pomer strán je vytvorený samostatný font. Windows dokáže zväčšovať znaky GDI rastrových fontov jednoduchou duplikáciou riadkov a stĺpcov pixelov. Avšak len v celých násobkoch a v určitých medziach. Nedajú sa zväčšovať alebo zmenšovať na ľubovoľnú veľkosť. Primárnou výhodou rastrových fontov je ich výkonnosť (rýchlo sa zobrazujú) a čitateľnosť. Pred Windows 3.1 jedinými podporovanými GDI fontami boli tzv. GDI čiarové fonty. Čiarové fonty sú definované ako postupnosť čiar. Tieto fonty sa dajú plynulo zväčšovať i zmenšovať. Avšak výkonnosť je nízka, čitateľnosť trpí najmä pri malých veľkostiach a veľké znaky vypadajú slabé, pretože ich časti sú tvorené čiarami. Čiarové fonty sa dnes označujú ako plotrové fonty, pretože sa hodia najmä pre plotre, avšak na nič iné. Pre všetky GDI rastrové a čiarové fonty dokáže Windows vytvárať tzv. hrubé písmo, kurzívu, podčiarknuté písmo a prečiarknuté písmo bez nutnosti uchovávať samostatné fonty pre každý atribút. Posledným typom sú TrueType fonty, ktorým budeme venovať zvyšok prednášky.
TrueType fonty Zavedenie TrueType do Windows 3.1 značne zlepšilo schopnosti pracovať s textom pružným spôsobom. TrueType je fontová technológia, založená na obryse, ktorú vyvinula firma Apple Computer a Microsoft. Podporuje ju mnoho výrobcov. Jednotlivé znaky TrueType fontov sú definované obrysom, zloženým z čiar a kriviek. A tak Windows môže škálovať tieto fonty menením súradníc, ktoré definujú obrysy. TrueType fonty možno používať na obrazovkách i tlačiarňach. Keď program chce použiť TrueType font konkrétnej veľkosti, Windows rastruje font. Znamená to, že Windows škáluje súradnice spájajúc čiary a krivky každého znaku použitím návodu, ktorý je súčasťou súboru TrueType fontu. Tento návod kompenzuje zaokrúhľovacie chyby. Výsledný obrys každého znaku sa použije na vytvorenie bitovej mapy znaku. Tieto bitové mapy sa ukladajú do cache pamäti pre budúce použitie. Windows 95 sa dodáva s 13 TrueType fontami, označených názvami: CourierNew Courier New Bold Courier New Italic Courier New Bold Italic Times New Roman Times New Roman Bold Times New Roman Italic Times New Roman Bold Italic Arial Arial Bold Arial Italic Arial Bold Italic Symbol