Forritun í XCB/Tenging við X-þjóninn
Til að nota XCB-bindingarnar verður fyrst að tengjast X-þjóninum. Það er gert með fallinu xcb_connect()
[1] sem er hlæðstætt XOpenDisplay()
í Xlib. Hér er skilgreining fallsins xcb_connect()
:
xcb_connection_t *xcb_connect (const char *displayname, int *screenp);
og það sést að xcb_connect
tekur við tveimur færibreytum:
displayname
, hvaða X-þjón skal tengjast við. Ef þetta færibreyta erNULL
þá er notar fallið það gildi sem er íDISPLAY
-umhverfisbreytunni sem má breyta með skipuninniexport DISPLAY=:1.0
(frekari upplýsingar). Annars er hægt að gefa upptenging = xcb_connect(":1", NULL);
— sem tengist við X-þjón :1
- Önnur færibreytan skilar skjánúmerinu sem er notað fyrir tenginguna.
Fallið skilar bendi í skipanina xcb_connection_t
sem er hliðstæð Display
í Xlib.
Tengst þjóninum
[breyta]Hér er einfalt forrit sem opnar tengingu við X-þjóninn og lokar tengingunni strax aftur:
#include <xcb/xcb.h>
int main ()
{
/*
* Tengist X-þjóninum og notar DISPLAY-umhverfisbreytuna þar sem fyrri færibreytan er NULL.
* Skilar upplýsingum um tenginguna í skipanina „tenging“.
*/
xcb_connection_t *tenging = tenging = xcb_connect (NULL, NULL);
/* Lokar tengingunni. */
xcb_disconnect (tenging);
return 0;
}
Þessa skrá mætti svo vista sem tenging.c
og þýða með skipuninni sem er gefin undir kaflanum um þýðingu XCB
-forrita. Þegar tenging
skráin er keyrð ætti forritið að ljúka keyrslu án þess að prenta neitt á skjáinn.
Sækja upplýsingar um tengingu
[breyta]Þar sem tengingu er komið á er nú hægt að sækja frekari upplýsingar um hana, upplýsingar um tenginguna munu reynast nauðsynlegar síðar meir, til dæmis til að nálgast stærð skjásins og litastuðning hans í gegnum skipanina xcb_screen_t
sem er skilgreind í skránni xproto.h
.
#include <stdio.h>
#include <xcb/xcb.h>
int main ()
{
xcb_connection_t *tenging;
xcb_screen_t *skjar;
int skjanumer;
xcb_screen_iterator_t iter;
/* Tengist X-þjóninum, notar DISPLAY-breytuna og skilar númer skjás í skjanumer */
tenging = xcb_connect (NULL, &skjanumer);
/* Sækir skjáinn sem er númer #screen_nbr með skipuninni „xcb_setup_roots_iterator“. */
iter = xcb_setup_roots_iterator (xcb_get_setup (tenging));
for (; iter.rem; --skjanumer, xcb_screen_next (&iter))
if (skjanumer == 0) {
skjar = iter.data;
break;
}
printf ("Upplýsingar um skjá númer %i\n"
" * Breidd: %i\n" /* Breidd skjásins í dílum. */
" * Hæð: %i\n" /* Hæð skjásins í dílum. */
" * Hvítur litur: %i\n" /* Gildi hvíts litar sem er #FFFFFF í HEX eða 16777215 */
" * Svartur litur: %i\n", /* Gildi svarts litar sem er #000000 í HEX eða 0 */
skjar->root, skjar->width_in_pixels, skjar->height_in_pixels,
skjar->white_pixel, skjar->black_pixel);
xcb_disconnect (tenging);
return 0;
}
sem ætti að prenta út eitthvað eins og:
Upplýsing um skjá númer 258: * Breidd: 800 * Hæð: 600 * Hvítur litur: 16777215 * Svartur litur: 0
Þýða
[breyta]Til að þýða XCB
-forrit með gcc-þýðandanum:
gcc -Wall nafnforrits.c -o nafnforrits `pkg-config --cflags --libs xcb`
svo er hægt að keyra mörg forritin úr núverandi X-þjóni með skipuninni
cd ~notandi/mappa/sem/hefur/að/geyma/forritið ./nafnforrits
eftir að búið er gera skránan keyranlega
chmod u+x nafnforrits
en annars er ráðlegt að keyra þetta í nýjum X-þjóni
X :$n & xterm -display :$n &
þar sem breytan $n
er náttúruleg tala sem táknar hvaða X-þjónn er notaður. Oftast dugar að nota n=1
. Svo er xterm
-útstöðin valin og forritið keyrt þaðan með
cd ~notandi/mappa/sem/hefur/að/geyma/forritið ./nafnforrits
eftir að búið er gera skránan keyranlega
chmod u+x nafnforrits