Hlavní navigace

SVGAlib (13)

Jakub Matys 26. 11. 2004

V dnešním dílu se podíváme na další funkce využívající síly akcelerátoru. Bude se jednat o ACCEL_SETTRANSPARENCY a ACCEL_SETRASTEROP. Tyto funkce umožňují pracovat s průhledností a s rastrem grafiky. Postupně probereme všechny jejich parametry.

Následující hodnoty mode jsou definovány pro

vga_accel(ACCEL_SETTRANSPARENCY, int mode, ...).

Tato funkce umožňuje používat průsvitnost.

vga_accel(ACCEL_SETTRANSPARENCY, ENABLE_TRANSTAPRENCY_COLOR, int color) 

Kdykoliv jedna z operací vga_accel() chce kreslit pixel v barvě color, operace není provedena a cílový pixel zůstane nezměněn. Tato barva je pak definována jako průhledná.

vga_accel(ACCEL_SETTRANSPARENCY, DISABLE_TRANSPARENCY) 

Tato funkce nemá za úkol nic jiného než zakázat operaci povolenou předchozí funkcí.

vga_accel(ACCLE_SETTRANSPARENCY, ENABLE_BITMAP_TRANSPARENCY) 

V bitmapově rozšířených operacích ACCEL_PUTBITMAP a ACCEL_SCREENCO­PYBITMAP, kdykoliv narazíte na nenastavený bit, není provedena kreslicí operace. Nulové bity nejsou kresleny v barvě pozadí. Místo toho jsou definovány jako průhledné.

vga_accel(ACCEL_SETTRANSPARENCY, DISABLE_BITMAP_TRANSPARENCY) 

Tato funkce, jak sám název napovídá, také zakazuje předchozí.

Hodnoty mode uvedené dále patří funkci

vga_accel(ACCEL_SETRASTEROP, int mode)

která umožňuje pracovat s rastrem grafiky.

vga_accel(ACCEL_SETRASTEROP, ROP_COPY)

Přímé kopírování. Pixely nakreslené vga_accel() nahradí cíl.

vga_accel(ACCEL_SETRASTEROP, ROP_OR)

Logické nebo. Pixely nakreslené pomocí vga_accel()jsou logicky(bit po bitu) porovnány s cílem.

vga_accel(ACCEL_SETRASTEROP, ROP_AND)

Logické a. Pixely nakreslené s vga_accel() jsou bitově porovnány s cílem.

vga_accel(ACCEL_SETRASTEROP, ROP_XOR)

Bitová non-ekvivalence. Pixely nakreslené vga_accel() jsou bitově porovnány s cílem.

vga_accel(ACCEL_SETRASTEROP, ROP_INV)

Inverze. Pixely nakreslené funkcí vga_accel() jsou obráceny. Pixel, který má být přepsán, je jednoduše bitově převácen.

Funkce vga_accel(ACCEL_SET­TRANSPARENCY, int mode, …) nebo vga_accel(ACCEL_SET­RASTEROP, int mode) vrací 0, pokud je volaná funkce platná. Subfunkce vga_ext_set – VGA_AVAIL_ROPMODES a VGA_AVAIL_TRAN­SMODES – umožňují zjistit platné parametry.

Před voláním funkce vga_accel() pro každou operaci zjistěte, zda je podporována:

int vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ACCEL)

Operace je podporována, pokud je vrácená hodnota logicky (bitově) násobená jednou z následujících předdefinovaných (mají nastaven pouze jediný bit) konstant nenulová.

  • ACCELFLAG_FILLBOX
  • ACCELFLAG_SCRE­ENCOPY
  • ACCELFLAG_PUTIMAGE
  • ACCELFLAG_DRAWLINE
  • ACCELFLAG_SET­FGCOLOR
  • ACCELFLAG_SET­BGCOLOR
  • ACCELFLAG_SET­TRANSPARENCY
  • ACCELFLAG_SET­RASTEROP
  • ACCELFLAG_PUTBITMAP
  • ACCELFLAG_SCRE­ENCOPYBITMAP
  • ACCELFLAG_DRAW­HLINELIST
  • ACCELFLAG_SETMODE
  • ACCELFLAG_SYNC

Volání funkce

int vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_TRANSPARENCY)

nebo

int vga_ext_set(VGA_EXT_AVAILABLE, VGA_AVAIL_ROP)

nebude vracet podporované hodnoty pro rastrové operace a průsvitnost, jak by se očekávalo, ale spíše vrátí hodnoty ACCEL_FLAG_ pro operace akcelerátoru, které odpovídají operaci s rastrem resp. nastavení průsvitnosti.

Dostupnost operací bude většinou záviset na aktuálně nastaveném módu. Neměli byste tedy opomenout nejdříve nastavit potřebný mód a poté teprve testovat jednotlivé operace akcelerátoru.

To by bylo pro dnešek vše. V příštím dílu se podíváme na funkce vga_bitblt, vga_blitwait, vga_fillblt, vga_hlinelistblt a vga_imageblt. Funkce vga_bitblt slouží ke kopírování pixmapy z paměti za pomoci akcelerátoru, vga_blitwait čeká na ukončení operace akcelerátoru a vga_imageblt zase kopíruje pixmapu z systémové paměti do videopaměti.

Našli jste v článku chybu?

26. 11. 2004 12:38

Jan Krakora (neregistrovaný)

Chtel bych se optat odkud cerpate informace? Sam s SVGAlib delam, ale informace, ktere zde objevuji vidim poprve - a jsem o to radeji. Existuje nekde kompletni dokumentace?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Pečete cukroví a zbyl vám bílek?

Pečete cukroví a zbyl vám bílek?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí