XCB

XCB
XCB
Xcb logo.svg
Entwickler Jamey Sharp, Josh Triplett, Bart Massey
Aktuelle Version 1.7
(August 2010)
Betriebssystem POSIX
Kategorie X-Window Kernprotokoll Entwicklerbibliothek
Lizenz MIT
Deutschsprachig nein
http://xcb.freedesktop.org

XCB (X C Binding) stellt auf einfache und direkte Weise Transaktionen des X-Window-Protokolls über Funktionaufrufe in der Programmiersprache C zur Verfügung.[1] Damit versucht sie die bisherige Xlib durch eine leichtgewichtigere Bibliothek zu ersetzen.

Mittlerweile ist mit Xlib/XCB ein Xlib erhältlich, dessen Transportschicht durch XCB ersetzt wurde. Durch die mit dem herkömmlichen Xlib binär kompatible Schnittstelle kann es von bestehenden Programmen anstatt Xlib verwendet werden.

Inhaltsverzeichnis

Ziele

XCB strebt folgende Ziele an:

  • kleiner und weniger komplex
  • direkter Zugriff auf das X11-Protokoll
  • asynchron um nebenläufige Programme besser zu unterstützen
  • leicht zu erweitern

Beispiel

Während in Xlib bzw. in Xlib/XCB die Ereignisschleife immer noch in Xlib-Funktionsaufrufen gemacht wird, sieht man hier ein Programmstück ohne Xlib-Aufrufe. Die Aufrufe sind etwas systemnaher als man es von Xlib gewohnt ist.

 /* einfache XCB-Applikation die ein Rechteck in ein Fenster zeichnet. 
    Kompilierbar beispielsweise mit: gcc -o xcbtest xcbtest.c -lxcb   */
 
 #include <xcb/xcb.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 int main()
 {
   xcb_connection_t    *c;
   xcb_screen_t        *s;
   xcb_window_t         w;
   xcb_gcontext_t       g;
   xcb_generic_event_t *e;
   uint32_t             mask;
   uint32_t             values[2];
   int                  done = 0;
   xcb_rectangle_t      r = { 20, 20, 60, 60 };
 
                        /* Verbindung zum X-Server öffnen */
   c = xcb_connect(NULL,NULL);
   if (xcb_connection_has_error(c)) {
     printf("Cannot open display\n");
     exit(1);
   }
                        /* get the first screen */
   s = xcb_setup_roots_iterator( xcb_get_setup(c) ).data;
 
                        /* schwarzen Grafikkontext erzeugen */
   g = xcb_generate_id(c);
   w = s->root;
   mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
   values[0] = s->black_pixel;
   values[1] = 0;
   xcb_create_gc(c, g, w, mask, values);
 
                        /* Fenster erzeugen */
   w = xcb_generate_id(c);
   mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
   values[0] = s->white_pixel;
   values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS;
   xcb_create_window(c, s->root_depth, w, s->root,
                   10, 10, 100, 100, 1,
                   XCB_WINDOW_CLASS_INPUT_OUTPUT, s->root_visual,
                   mask, values);
 
                        /* Anzeigen (einblenden, "map") des Fensters */
   xcb_map_window(c, w);
 
   xcb_flush(c);
 
                        /* event loop, Ereignisschleife */
   while (!done && (e = xcb_wait_for_event(c))) {
     switch (e->response_type & ~0x80) {
     case XCB_EXPOSE:    /* draw or redraw the window */
       xcb_poly_fill_rectangle(c, w, g,  1, &r);
       xcb_flush(c);
       break;
     case XCB_KEY_PRESS:  /* beenden, wenn eine Taste gedrückt wird */
       done = 1;
       break;
     }
     free(e);
   }
                        /* Verbindung zum X-Server trennen */
   xcb_disconnect(c);
 
   return 0;
 }

Quellen

  1. XCB: An X Protocol C Binding, Bart Massey Jamey Sharp, 19. September 2001 (englisch)

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • XCB — Desarrollador Jamey Sharp, Josh Triplett, Bart Massey xcb.freedesktop.org …   Wikipedia Español

  • XCB — Développeur Jamey Sharp, Josh Triplett, Bart Massey Dernière version …   Wikipédia en Français

  • XCB — Тип Библиотека для работы с основным протоколом X Window System Разработчик Jamey Sharp, Josh Triple …   Википедия

  • XCB — Infobox Software name = XCB developer = Jamey Sharp, Josh Triplett, Bart Massey latest release version = 1.1.90.1 latest release date = July 17, 2008 [cite mailing list |url=http://lists.freedesktop.org/archives/xcb/2008 July/003622.html |title=… …   Wikipedia

  • xcb — ISO 639 3 Code of Language ISO 639 2/B Code : ISO 639 2/T Code : ISO 639 1 Code : Scope : Individual Language Type : Extinct Language Name : Cumbric …   Names of Languages ISO 639-3

  • XCB — Ares I X Control Board Contributor: MSFC …   NASA Acronyms

  • XCB — abbr. Extension Client Binding …   Dictionary of abbreviations

  • Clorpactin XCB — Clor·pac·tin XCB (klor pakґtin) trademark for a preparation of oxychlorosene …   Medical dictionary

  • Xlib Compatibility Layer — XCB XCB Développeur Jamey Sharp, Josh Triplett, Bart Massey Dernière version …   Wikipédia en Français

  • X.Org — Développeur Fondation X.Org Dernière version …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”