jueves, 22 de julio de 2010

Manejo de colores y fuentes en Xlib

El manejo de colores y de fuentes en Xlib puede ser algo confuso o complejo para algunos que recien comienzan a programar unsando las librerias base del Xserver las Xlib.
En este ejemplo se muestra como crear una ventana y luego en ella colocar texto con un tamaño y color determinado.

/**********x11_1.c*************/

#include < X11/Xlib.h >
#include < X11/Xutil.h >
#include < stdio.h >
#include < string.h >

/*
Retorna el color mas proximo del mapa de colores
*/
unsigned long Buscar_color_nombre( Display *display, char *Nombre )
{
XColor color, temp;
XAllocNamedColor( display,DefaultColormap(display,DefaultScreen(display)),Nombre, &color, &temp );
return color.pixel;
}


int main()
{
Display *display;
Window window;
GC gc;
Font fuente;
char *Texto1 = "Test: Fuentes en Xlib";
char *Texto2 = "Color Rojo";
char *Texto3 = "Color Verde";

display = XOpenDisplay( NULL );
window = XCreateSimpleWindow( display,DefaultRootWindow( display ),100, 100, 300, 200, 1, 0, 1 );
XMapWindow( display, window );

gc = XCreateGC( display, window, 0, NULL );
fuente = XLoadFont( display, "9x15" );
XSetForeground(display, gc, Buscar_color_nombre(display, "white"));
XSetFont( display, gc, fuente );
XDrawString( display, window, gc, 10, 50, Texto1, strlen(Texto1) );
XSetForeground(display, gc, Buscar_color_nombre(display, "red"));
XDrawString( display, window, gc, 10, 80, Texto2, strlen(Texto2) );
XSetForeground(display, gc, Buscar_color_nombre(display, "green"));
XDrawString( display, window, gc, 10, 110, Texto3, strlen(Texto3) );

XFlush( display );
getchar();
}


/******************************/
Compilacion:
gcc -o x11_1 x11_1.c -lX11

No hay comentarios:

Publicar un comentario