GDK básicamente es un envoltorio alrededor de funciones estándares de Xlib. Si tienes familiaridad con Xlib, te será fácil acostumbrarte a la mayoría de las funciones de GDK. Todas la funciones están escritas para proveer una manera de acceder a las funciones Xlib de una manera más fácil e intuitiva. Además, ya que GDK usa GLib (mirar abajo), será más portable y seguro de usar en múltiples plataformas.
Una de las cosas agradables sobre GDK, es que está basada sobre Xlib; esto también es un problema, especialmente en el área de administración de color. Si quieres usar color en tu programa (dibujar un rectángulo o algo así), tu código debe lucir algo como esto:
{ GdkColor *color; int width, height; GtkWidget *widget; GdkGC *gc; ... /* primero, crea un Contexto Gráfico para dibujar en él */ gc = gdk_gc_new(widget->window); /* encontrar dimensiones apropiadas para el rectángulo */ gdk_window_get_size(widget->window, &width, &height); /* el color que queremos utilizar */ color = (GdkColor *)malloc(sizeof(GdkColor)); /* rojo, verde, y azul son valores pasados, indicando la tripleta RGB * del color que queremos dibujar. Nota que los valores de los * componentes RGB dentro de GdkColor son tomados de 0 a 65536, no 0 a 255. */ color->red = red * (65535/255); color->green = green * (65535/255); color->blue = blue * (65535/255); /* el valor de pixel indica el índice en el mapa de color del color. * simplemente es una combinación de los valores RGB que asignamos * anteriormente */ color->pixel = (gulong)(red*65536 + green*256 + blue); /* Sin embargo, el valor de pixel sólo es verdaderamente válido en * dispositivos de 24-bit (ColorVerdadero). Por lo tanto, esta llamada * es requerida para que GDK y X puedan darnos el color más cercano * disponible en el mapa de color */ gdk_color_alloc(gtk_widget_get_colormap(widget), color); /* asignar la parte frontal a nuestro color */ gdk_gc_set_foreground(gc, color); /* dibujar el rectángulo */ gdk_draw_rectangle(widget->window, gc, 1, 0, 0, width, height); ... } |