Graphics Device Interface
Graphics Device Interface (zkráceně GDI či někdy nazýváno jako Graphical Device Interface) je spolu s kernelem a uživatelským rozhraním jednou ze tří hlavních součástí operačního systému Microsoft Windows. Graphics Device Interface slouží k reprezentaci grafických objektů a jejich transformací do výstupních zařízení jako jsou monitory či tiskárny. Ve Windows XP je k dispozici vylepšená verze GDI, GDI+.
GDI má na starosti úlohy jako je kreslení čar a křivek, rendrování fontů a zacházení s barevnými paletami. Není přímo zodpovědný za vykreslování oken, menu, atd. - to je vyhrazeno pro uživatelský subsystém, který se nachází v knihovně user32.dll a je na GDI postavený. GDI je podobný QuickDraw od Apple.
Pravděpodobně nejvýznamnější vlastností GDI, kromě metody přímého přístupu k hardware, je vlastnost Scaling a čerpání z cílového zařízení. S použitím GDI je velmi snadné kreslit a tisknout na více zařízeních, jakými jsou například obrazovka a tiskárna, a na každém, z těchto zařízení můžeme očekávat správnou reprodukci. Tato vlastnost je centrem celého WYSIWYGu, aplikací pro Microsoft Windows.
GDI využívají jednoduché hry, jako například FreeCell a miny, které nepotřebují rychlé vykreslování. GDI není schopno důkladně animovat a postrádá 3D vykreslování. Moderní hry používají DirectX nebo OpenGL, které umožňují programátorům lepší přístup k hardwarovým vlastnostem.
GDI Tiskárny
Winprinter je tiskový procesor, který používá software ke zpracování tisku namísto toho, aby ho zpracovávala tiskárna. Pracuje tak, že rendruje obrázky do bitmap na uživatelově počítači a pak je posílá do tiskárny.
To umožňuje výrobcům tiskáren vyrábět i levnější tiskárny, protože o složení celé stránky se postará software počítače a ne hardware tiskárny. Obvykle však tyto tiskárny nepodporují PostScript a používají ovladače, založené na Unidrv. Winprinter používá GDI k přípravě výstupu, z toho důvodu se jim také často říká GDI tiskárny. Levnější modely laserových tiskáren jsou GDI zařízení. Většina výrobců nabízí i flexibilnější modely, které mají přidanou PCL kompatibilitu, PostScript, nebo obojí. Většinou je jen velmi málo modelů, které jsou „GDI-only“.
Technické detaily
Device context (DC) je používán k definování atributů textu a obrázků, které jsou zobrazovány na obrazovce nebo tisknuty tiskárnou. Aktuální kontext udržuje GDI. DC, které nastavuje strukturu, je získáno před výstupem a je zapisován a uvolňován po částech, tak jak byly zapsány.
DC, jako většina GDI objektů, je nepropustný, nepřistupuje k datům přímo, můžeme je předat funkcím, které tato data zpracují, buď ke kreslení něčeho, ke zjištění informace o něčem, nebo ke změně objektu nějakým způsobem.
GDI+
S příchodem Windows XP, bylo GDI kritizováno a tak se v C++ založil nový subsystém GDI+. GDI+ má vylepšené 2D grafické prostředí, dále funkce jako 2D Anti-aliasing, koordinaci pomocí plovoucí čárky, alpha blending, gradiální stínování, komplexnější správu, podporu moderních grafických formátů jako JPEG a PNG (které v předchozí verzi GDI viditelně chyběly) a hlavně podporu pro skládání afinní transformace v 2D zobrazení. Užití těchto rysů je viditelné v uživatelském rozhraní Windows XP a jejich přítomnost v základní grafické vrstvě Windows XP velmi zjednodušilo implementaci vektorové grafiky (například Flash nebo SVG). Dynamická knihovna GDI+ je dodávána s spolu aplikacemi a dá se použít pod staršími verzemi Windows. GDI+ je podobné (účelem a strukturou) Apple Quartz 2D, nebo cairo.
GDI+ zranitelnost
V září roku 2004 bylo zjištěno, že GDI+ a další API grafické rozhraní nebyly chráněné před zneužitím, souviselo to s vadou v JPEG knihovně. Tato vada umožňovala případnému narušiteli spustit kód na každém systému, který zobrazil jejich JPEG obrázky nástrojem, který používal dekodér v GDI+.
GDI a GDI+ aplikace ve Windows Vista
Počínaje Windows Vista, všechny aplikace pro Windows včetně GDI a GDI+ aplikací běží v nově vytvořeném enginu a nejsou hardwarově akcelerovány. Nicméně, díky povaze složení plochy (vnitřní řízení pohybu bitmap, průhlednosti a anti-aliasingu GDI+ jsou ovládány DWM jádrem), jsou operace jako pohyby a zvětšování oken mohou být rychlejší a mají lepší odezvu, protože podklad oken nemusí být přerendrováván.
Reference
V tomto článku byl použit překlad textu z článku Graphics Device Interface na anglické Wikipedii.