Jméno

XCreateImage — vytvoření objektu reprezentujícího obraz

Přehled

#include <X11/Xlib.h>
XImage *XCreateImage(display,  
 visual,  
 depth,  
 format,  
 offset,  
 data,  
 width,  
 height,  
 bitmap_pad,  
 bytes_per_line); 
Display * display;
Visual * visual;
unsigned int  depth;
int  format;
int  offset;
char * data;
unsigned int  width;
unsigned int  height;
int  bitmap_pad;
int  bytes_per_line;

Argumenty

display
Spojení s X serverem. Toto spojení je získáno voláním XOpenDisplay.
visual
Ukazatel na strukturu visual. Tuto strukturu získáme voláním DefaultVisualOfScreen.
depth
Barevná hloubka obrazu. Počet bitů na jeden pixel.
format
Určuje formát obrazu. Muže být XYBitmap, XYPixmap nebo ZPixmap. Tento parametr určuje jak jsou uloženy obrazová data v paměti. XYBitmap znamená jednobitové obrazy. V XYPixmap jsou uloženy jednotlivé základní barvy RGB každá zvlášt ve vlastním obraze. Data tak sestávají ze tří částí jdoucích po sobě. ZPixmap je pak obraze ve kterém jsou RGB pro jeden pixel uloženy dohromady.
offset
Počet pixelů od začátku řádku které se mají ignorovat.
data
Ukazatel na paměť s daty obrazu. Vyhrazení této paměti musí zajistit programátor.
width
Šířka obrazu v pixelech.
height
Výška obrazu v pixelech.
bitmap_pad
Specifkuje počet bitů (8, 16 nebo 32). Na toto číslo je zarovnán začátek každého řádku v obrazu.
bytes_per_line
Počet bytů mezi začátkem řádku a začátkem následujícího řádku. Nulový parametr znamená že řádky jsou uloženy bezprostředně za sebou. Celý obraz tak tvoří souvislý blok paměti.

Popis

Funkce alokuje paměť pro XImage strukturu pro zadaný displej (X server). Struktura je vyplněná podle zadaných parametrů. Funkce neprovádí alokaci paměti pro samotná obrazová data. Tuto paměť musí alokovat a připravit programátor před voláním funkce XCreateImage.

FIXME:

Příklad použití

#include <X11/Xlib.h>
⋮
        Display *display;
        Screen *screen;
        Visual *visual;
        XImage *obraz;

        display = XOpenDisplay(NULL);
        screen = DefaultScreenOfDisplay(display);
        visual = DefaultVisualOfScreen(screen);

	data = (char *)malloc(256*192*x11ui_get_display_depth);

        obraz = XCreateImage(display, DefaultVisualOfScreen(screen), x11ui_get_display_depth, ZPixmap, 0, (char *)data, 256, 192, 8, 0);
	    

Odkazy a související funkce

Použití funkce je zdokumentováno v sekci 69.9.3 – „Obrazy (Images)“. Související funkce: XDestroyImage, XGetImage, XInitImage, XPutImage.