void gl_getbox (int x, int y, int w, int h, void *dp);
Kopíruje pravoúhlou oblast, která leží na pozici x, y s rozměry w x h z obrazovky do bufferu dp. Pixmapy jsou uloženy po řádcích. Velikost cílových dat je rovna w * h * BYTEPERPIXEL.
void gl_copybox (int x1, int y1, int w, int h, int x2, int y2);
Kopíruje obdélníkovou oblast o rozměrech w x h ze souřadnic x1, y1 na pozici x2, y2.
void gl_copyboxtocontext (int x1, y1, int w, int h, GraphicsContext *gc, int x2, int y2);
Kopíruje obdélník o rozměrech w x h z pozice x1, y1 na x2, y2 v kontextu gc.
void gl_copyboxfromcontext (GraphicsContext *gc, int x1, int y1, int w, int h, int x2, int y2);
Funguje obdobně jako funkce výše, ale opačně. Obdélník je zkopírován z kontextu gc a je uložen v aktuálním kontextu na pozici x2, y2.
void gl_putbox (int x, int y, int w, int h, void *dp);
Kopíruje obsah bufferu dp do pravoúhlé oblasti na pozici x,y, přičemž velikost obdélníku je w x h. Pixmapy jsou v bufferu uloženy po řádcích a velikost bufferu musí být w * h * BYTEPERPIXEL.
void gl_putboxpart (int x, int y, int w, int h, int bw, int bh, void *dp, int xo, yo);
Kopíruje obsah paměti bufferu dp jako bitmapu na pozici x, y při velikosti w x h. Z paměti je však zkopírována pouze část dat. Ta začíná na offsetu xo, yo a její velikost je bw x bh.
void gl_putboxmask (int x, int y, int w, int h, void *dp);
Kopíruje obsah bufferu dp do pravoúhlé oblasti o velikosti w x h na pozici x, y. Tato funkce pracuje obdobně jako gl_putbox, ale nezapisuje pixmapové pixely s barvou 0. Jestliže je nějaká pixmapa používána častěji, je vhodné uvažovat o použití rychlejší funkce gl_putboxmaskcompiled.
void gl_putboxmaskcompiled (int x, int y, int w, int h, void *dp);
Kopíruje obsah bufferu dp do obdélníkové bitmapy o velikosti w x h ležící na pozici x, y.
void gl_compileboxmask (int w, int h, void *sdp, void *ddp);
Konvertuje obdélník maskované bitmapy o velikosti w x h, který leží na adrese sdp, do komprimovaného formátu a uloží jej na adresu ddp. Kompilovaný formát umožňuje rychlejší kreslení maskovaných bitmap. Na alokaci paměti by obyčejně mělo stačit w * h bytů, horní hranicí by mělo být (w + 2) * h bytů.
int gl_compiledboxmasksize (int w, int h, void *sdp);
Funkce vrací velikost kompilované verze makované bitmapy o velikosti w x h, která leží na adrese sdp.
void gl_getpalettecolor(int c, int *r, int *g, int *b);
void gl_getpalettecolors(int s, int n, void *dp);
void gl_getpalette(void *dp);
- gl_getpalettecolor
- obdrží hodnoty červené, zelené a modré (v rozmezí 0 – 63) z barvy c, poté je uloží jako celá čísla na ukazatele r, g a b.
- gl_getpalettecolors
- obdrží RGB hodnoty n barev začínajících na pozici s, které poté uloží do vícerozměrného pole (vždy po skupinách třech bytů na jednu barvu).
- gl_getpalette
- je ekvivalentem k funkci gl_getpalettecolors(0, 256, dp).
void gl_setpalettecolor(int c, int r, int g, int b);
void gl_setpalettecolors(int s, int n, void *sp);
void gl_setpalette(void *sp);
- gl_setpalettecolor
- nastaví RGB hodnoty (v rozsahu 0 – 63) barvy c.
- gl_setpalettecolors
- nastaví RGB hodnoty n barev začínajících na pozici s, které jsou uloženy na adrese sp (po skupinách třech bytů na jednu barvu).
- gl_setpalette
- je ekvivalentem k funkci gl_setpalettecolors(0, 256, sp).
void gl_setrgbpalette(void);
Nastaví 256barevnou RGB paletu (bity 0–2 modrá, 3–5 zelená, 6–7 červená). Funkci volejte před použitím gl_getpixelrgb, gl_rgbcolor, gl_setpixelrgb v 256 barvách.
Příště nás čeká poslední díl. Povíme si něco o kreslení trojúhelníků ;o)