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_SCREENCOPYBITMAP, 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_SETTRANSPARENCY, int mode, …) nebo vga_accel(ACCEL_SETRASTEROP, int mode) vrací 0, pokud je volaná funkce platná. Subfunkce vga_ext_set – VGA_AVAIL_ROPMODES a VGA_AVAIL_TRANSMODES – 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_SCREENCOPY
- ACCELFLAG_PUTIMAGE
- ACCELFLAG_DRAWLINE
- ACCELFLAG_SETFGCOLOR
- ACCELFLAG_SETBGCOLOR
- ACCELFLAG_SETTRANSPARENCY
- ACCELFLAG_SETRASTEROP
- ACCELFLAG_PUTBITMAP
- ACCELFLAG_SCREENCOPYBITMAP
- ACCELFLAG_DRAWHLINELIST
- 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.