Xlib Compatibility Layer

Xlib Compatibility Layer

XCB

XCB
Importez le logo de ce logiciel
Développeur Jamey Sharp, Josh Triplett, Bart Massey
Dernière version 1.3 (le 28 mai 2009) [+/−]
Environnement POSIX
Type X Window core protocol development library
Licence MIT
Site Web http://xcb.freedesktop.org/

XCB (pour X C Binding) est une bibliothèque logicielle en langage C offrant une implémentation du protocole X Window System. Son objectif est de remplacer la Xlib, jugée vieillissante et inadaptée à certains usages. Le projet a démarré en 2001, sous l'impulsion de Bart Massey.

XCL (pour Xlib Compatibility Layer, « couche de compatibilité Xlib ») est une implémentation de l'API Xlib basée sur XCB, afin de fournir une couche de compatibilité aux applications basées sur la Xlib. Produite plus tard, la bibliothèque XLib/XCB fournit une ABI compatible aussi bien avec la Xlib qu'avec XCB, afin d'adoucir les difficultés de portage d'une bibliothèque à l'autre.

Sommaire

Objectifs de XCB

Les principaux objectifs de XCB sont :

  • La réduction de la taille et de la complexité de la bibliothèque ;
  • fournir un accès direct au protocole X11.

Les objectifs secondaires sont notamment de mettre en œuvre une interface en C complètement asynchrone, de faciliter l'amélioration du multi-threading et de rendre les extensions plus simples à implémenter (par une description des protocoles en XML).

Bart Massey a passé du temps afin de prouver que XCB est formellement correct en utilisant la notation Z (La Xlib est connue pour contenir des erreurs de ce type).

Exemple

/*
 * Exemple simple avec XCB dessinant un carré dans une fenêtre
 */
 
#include <xcb/xcb.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    xcb_connection_t   *c;
    xcb_screen_t       *s;
    xcb_drawable_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 };
 
    /* ouvre la connexion avec le serveur */
    c = (xcb_connection_t *)xcb_connect(NULL,NULL);
    if (c == NULL) {
    	printf("Cannot open display\n");
 	exit(1);
    }
 
    /* récupérer le premier écran */
    s =xcb_setup_roots_iterator (xcb_get_setup(c)).data;
 
    /* créer un contexte graphique pour le noir */
    g = xcb_generate_id(c);
    w = s->root;
    mask = XCB_GC_FOREGROUND | XCB_GRAPHICS_EXPOSURE;
    values[0] = s->black_pixel;
    values[1] = 0;
    xcb_create_gc(c, g, w, mask, values);
 
    /* créer une fenêtre */
    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);
 
    /* afficher la fenêtre sur l'écran sélectionné */
    xcb_map_window(c, w);
 
    xcb_flush(c);
 
    /* boucle événementielle */
    while (!done && (e = xcb_wait_for_event(c))) {
    	switch (e->response_type & ~0x80) {
	    case XCB_EXPOSE:    /* dessiner ou redessiner la fenêtre */
	        xcb_poly_fill_rectangle(c, w, g,  1, &r);
		xcb_flush(c);
		break;
	    case XCB_KEY_PRESS:  /* stopper la boucle lorsqu'une touche est enfoncée */
		done = 1;
		break;
	}
	free(e);
    }
 
    /* fermer la connexion avec le serveur */
    xcb_disconnect(c);
 
    return 0;
}

Cet exemple illustre la similarité entre XCB et la Xlib. Certains programmeurs considèrent toutefois que XCB est légèrement plus bas niveau que la Xlib à l'heure actuelle.[réf. souhaitée]

Voir aussi

Articles connexes

Références

Liens externes

  • Portail des logiciels libres Portail des logiciels libres
Ce document provient de « XCB ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Xlib Compatibility Layer de Wikipédia en français (auteurs)

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

Regardez d'autres dictionnaires:

  • 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 — Développeur Jamey Sharp, Josh Triplett, Bart Massey Dernière version …   Wikipédia en Français

  • XCL — is a three letter abbreviation with multiple meanings, as described below:* Xlib Compatibility Layer * X Cal Resources, Ltd. * Xcc Community Ladder * XOOPS Cube, XOOPS Cube Legacy * Xtree for Windows Script file * Xtreme Coil Link * Cluff Lake… …   Wikipedia

  • Abreviations en informatique X — Abréviations en informatique X X : X Window System X11 : X Window System version 11 X11R6 : X Window System version 11 release 6 XAML : eXtensible Application Markup Language XAMPP : X Apache MySQL Perl PHP XAO : X Assisté par… …   Wikipédia en Français

  • Abréviations En Informatique X — X : X Window System X11 : X Window System version 11 X11R6 : X Window System version 11 release 6 XAML : eXtensible Application Markup Language XAMPP : X Apache MySQL Perl PHP XAO : X Assisté par ordinateur XBL : eXtensible… …   Wikipédia en Français

  • Abréviations en informatique X — X : X Window System X11 : X Window System version 11 X11R6 : X Window System version 11 release 6 XAML : eXtensible Application Markup Language XAMPP : X Apache MySQL Perl PHP XAO : X Assisté par ordinateur XBL : eXtensible… …   Wikipédia en Français

  • Abréviations en informatique x — X : X Window System X11 : X Window System version 11 X11R6 : X Window System version 11 release 6 XAML : eXtensible Application Markup Language XAMPP : X Apache MySQL Perl PHP XAO : X Assisté par ordinateur XBL : eXtensible… …   Wikipédia en Français

  • XCL — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. XCL, sigle composé des trois lettres X, C et L, peut faire référence à : Xlib Compatibility Layer Cluff Lake, en Saskatchewan au Canada, selon la… …   Wikipédia en Français

  • XCL — X Cal Resources, Ltd. (Business » Stock Exchange) **** Xcc Community Ladder (Community) * Xlib Compatibility Layer (Computing » Software) * Xtreme Coil Link (Governmental » Transportation) * X C Binding (Computing » Software) * Xtree for Windows… …   Abbreviations dictionary

  • Cygwin — Running Cygwin, including Cygwin/X, under Windows XP …   Wikipedia

Share the article and excerpts

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