XCB

XCB
XCB
Xcb logo.svg
Desarrollador
Jamey Sharp, Josh Triplett, Bart Massey
xcb.freedesktop.org
Información general
Última versión estable 1.2
17 de febrero de 2009; hace 2 años (2009-02-17)[1]
Género Biblioteca para el Protocolo base de X Window System
Sistema operativo POSIX
Licencia MIT
En español ?

En computación, XCB (X C Binding) es un binding para el lenguaje C de X Window System. Está implementado como software libre y pretende reemplazar la biblioteca Xlib. El proyecto fue iniciado en 2001 por Bart Massey.

Xlib/XCB provee compatibilidad a nivel de interfaz de aplicación binaria para Xlib y XCB. Xlib/XCB usa la capa de protocolo de Xlib, pero reemplaza la capa de transporte de Xlib por la de XCB, y provee acceso a la conexión XCB para hacer un uso directo de XCB.

Contenido

Objetivos

Los objetivos principales de XCB son:

  • reducción del tamaño y la complejidad de la biblioteca;
  • acceso directo para protocolo X11.

Los objetivos secundarios incluyen hacer una interfaz C asíncrona, facilitando la programación multihilo y haciendo más fácil la implementación de extensiones (vía descripciones de protocolo XML).

Las descripciones del protocolo base y de extensión están en XML, con los bindings C creados vía scripts Python. (Versiones previas usaban XSLT y M4.) Un tercer objetivo es replantear esas descripciones del protocolo para la creación de documentación del protocolo, más bindings para otros lenguajes, y server-side stubs.

Massey y otros han trabajado para probar porciones clave de XCB como formalmente correctas, usando notación Z.[2] (Se sabe de hace tiempo que Xlib contiene errores.[3] )

Ejemplo

/* Simple XCB application drawing a box in a window */
 
#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 };
 
                        /* open connection with the server */
  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;
 
                       /* create black graphics context */
  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);
 
                       /* create window */
  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);
 
                        /* map (show) the window */
  xcb_map_window(c, w);
 
  xcb_flush(c);
 
                        /* event loop */
  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:  /* exit on key press */
      done = 1;
      break;
    }
    free(e);
  }
                        /* close connection to server */
  xcb_disconnect(c);
 
  return 0;
}

XCB tiene una API comparable a la de Xlib, pero ligeramente menos potente, como se puede ver en este ejemplo.

Logotipo

El logotipo de XCB fue creado por Gearóid Molloy, autor del Webcómic Neko the Kitty, y lo donó al proyecto.[4]

Notas

  1. Danjou, Julien, «[Xcb] [ANNOUNCE] libxcb-1.2», lista de correo xcb, http://lists.freedesktop.org/archives/xcb/2009-February/004315.html, consultado el 2009-02-20. 
  2. Massey and Bauer, 2002.
  3. Sharp and Massey, 2002, §2.4. "Xlib fue diseñada para dar soporte a aplicaciones con hilos, pero ese soporte no es usable, hay condiciones de carrera conocidas que no pueden ser eliminadas sin cambiar la interfaz Xlib."
  4. KittyLogo (xcb.freedesktop.org)

Referencias

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • 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 — Entwickler Jamey Sharp, Josh Triplett, Bart Massey Aktuelle Version 1.7 (August 2010) Betriebssystem …   Deutsch Wikipedia

  • 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

Compartir el artículo y extractos

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