Hlavní navigace

SVGAlib (17)

Jakub Matys

V dnešním dílu se naučíme pracovat s pix- a bitmapami a povíme si něco o funkcích pracujících s uživatelskými paletami barev.

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_copyboxfrom­context (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_putboxmaskcom­piled.

void gl_putboxmaskcom­piled (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_compiledbox­masksize (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_getpalette­color(int c, int *r, int *g, int *b);
void gl_getpalette­colors(int s, int n, void *dp);
void gl_getpalette(vo­id *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_getpalette­colors(0, 256, dp).

void gl_setpalette­color(int c, int r, int g, int b);
void gl_setpalette­colors(int s, int n, void *sp);
void gl_setpalette(vo­id *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_setpalette­colors(0, 256, sp).

void gl_setrgbpalet­te(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)

Našli jste v článku chybu?

25. 2. 2005 15:34

Pokud pocitate uspech clanku podle toho, kolik na nej prijde komentaru ve zneni "tohle je prisernej clanek, proc to root vydaval", pocitate spatne.

Tento clanek je typickym prikladem clanku, ktery sice zrovna nepotrebuju (a proto ani nereaguju komentarem), ale pokladam za dost pravdepodobne, ze se mi bude hodit pozdeji. Oproti tomu vas clanek (setrvani-na-windows-neunosne-nakladne) si prectu jen proto, abych nebyl v diskuzi za blbce, pote se kdyz mam zrovna cas a naladu pustim do flam…

25. 2. 2005 7:47

Kdyz jsem se pokusil napsat svůj článek, snesla se na mne vlna kritiky jak je to o ničem, neprofesionální atd. (a to je druhý nejčtenejši a má 95 komentářu). Bez urážky, myslím si, že o ničem jsou zejména tyto nácté pokračování opisů manuálu, které Rootem projedou jako nůž máslem (bez povšimnutí, komentářů)
Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

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

Přehledná titulka, průvodci, responzivita

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

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

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?