Programación en el entorno GNOME |
---|
GnomeCanvas trae consigo una serie de objetos por defecto para crear elipses, rectángulos, polígonos, imágenes e incluso incrustar otros widgets en el canvas.
Todos los objetos tienen una serie de parámetros que modifican su representación en el canvas. Estos parámetros se pueden poner en la llamada a gnome_canvas_item_new, y pueden ser cambiados en cualquier momento con gnome_canvas_item_set. La asignación de valores a los parámetros es igual que en GObject con g_object_set.
GnomeCanvasItem* gnome_canvas_item_new( | parent, | |
type, | ||
first_arg_name, | ||
) ; |
GnomeCanvasGroup* | parent; |
GType | type; |
const gchar* | first_arg_name; |
; |
void gnome_canvas_item_set( | item, | |
first_arg_name, | ||
) ; |
GnomeCanvasItem* | item; |
const gchar* | first_arg_name; |
; |
A través de los objetos GnomeCanvasRect y GnomeCanvasEllipse es posible dibujar rectángulos y elipses en el canvas. Para ambos objetos, la lista de parámetros es la misma. Los más importantes son
Tabla 1. Parámetros de GnomeCanvasRect y GnomeCanvasEllipse
Nombre | Tipo | Descripción |
---|---|---|
x1 | gdouble | Lado izquierdo de la figura |
y1 | gdouble | Lado superior de la figura |
x2 | gdouble | Lado izquierdo de la figura |
y2 | gdouble | Lado derecho de la figura |
outline_color_rgba | guint32 | Color RGBA del borde |
outline_color | gchar* | Nombre del color del borde |
fill_color_rgba | guint32 | Color RGBA de relleno |
fill_color | gchar* | Nombre del color de relleno |
width_units | gdouble | Anchura del borde de la figura |
Para crear una elipse se usa el valor devuelto por gnome_canvas_ellipse_get_type como segundo argumento de gnome_canvas_item_new. Para un rectángulo se usa gnome_canvas_rect_get_type.
GType gnome_canvas_ellipse_get_type ( | ) ; |
; |
GType gnome_canvas_rect_get_type (
)
;
void;
Con GnomeCanvasPolygon es posible crear polígonos. Los puntos que definen la imagen del polígono se introducen con GnomeCanvasPoints.
GnomeCanvasPoints es una estructura que debe ser creada con gnome_canvas_points_new y, una vez pasada a GnomeCanvasPolygon, se libera con gnome_canvas_points_unref. Esta estructura posee un miembro double* coords, que se usa para guardar las coordenadas de los puntos.
typedef struct { double *coords; int num_points; int ref_count; } GnomeCanvasPoints;
GnomeCanvasPoints* gnome_canvas_points_new( | num_points) ; |
int | num_points; |
void gnome_canvas_points_unref( | points) ; |
GnomeCanvasPoints* | points; |
Cuando se introducen puntos en coords, se alternan las coordenadas X e Y en cada punto, de modo que las x ocuparán los índices pares del array coords, mientras que las y ocuparán los índices impares.
Ejemplo 4. Uso de GnomeCanvasPoints
/* * Ejemplo: crear un polígono de 5 puntos e introducirlo en el * objeto polygon cuando se está creando. * * Las coordenadas son (x1, y1), (x2, y2), (x3, y3), (x4, y4) y (x5, y5) */ GnomeCanvasPoints* points = gnome_canvas_points_new(5); /* 5 puntos */ points->coords[0] = x1; points->coords[1] = y1; points->coords[2] = x2; points->coords[3] = y2; points->coords[4] = x3; points->coords[5] = y3; points->coords[6] = x4; points->coords[7] = y4; points->coords[8] = x5; points->coords[9] = y5; gnome_canvas_item_new(root_group, gnome_canvas_polygon_get_type (), "points", points, "fill_color", "black", "outline_color", "white", "width_units", 3.0, NULL); /* Una vez pasados al polígno ya no son necesarios */ gnome_canvas_points_unref(points);
Los parámetros que definen GnomeCanvasPolygon son bastante parecidos a los objetos de las secciones anteriores. Los principales son
Tabla 2. Parámetros de GnomeCanvasPolygon
Nombre | Tipo | Descripción |
---|---|---|
points | GnomeCanvasPoints* | Lista de puntos que definen el polígono |
outline_color_rgba | guint32 | Color RGBA del borde |
outline_color | gchar* | Nombre del color del borde |
fill_color_rgba | guint32 | Color RGBA de relleno |
fill_color | gchar* | Nombre del color de relleno |
width_units | gdouble | Anchura del borde de la figura |
GnomeCanvasText permite insertar texto en el canvas. El dibujo del texto se hace a través de Pango, por lo que no se explicarán aquí los detalles sobre las fuentes.
Todo el control sobre el texto se hace a través de sus parámetros.
Tabla 3. Parámetros GnomeCanvasText
Nombre | Tipo | Descripción |
---|---|---|
text | gchar* | La cadena de texto |
markup | gchar* | Una cadena en el formato Pango markup |
x | double | Coordenada X donde dibujar el texto |
y | double | Coordenada Y donde dibujar el texto |
font | gchar* | Una cadena para describir la fuente |
font_desc | PangoFontDescription* | Puntero a PangoFontDescriptor |
attributes | PangoAttrList* | Puntero a la lista de atributos de Pango |
style | PangoStyle | Estilo Pango |
variant | PangoVariant | Variante Pango |
weight | int | Grosor de la fuente |
stretch | PangoStretch | Estiramiento de la fuente |
size | int | Tamaño (en pixels) de la fuente |
size_points | double | Tamaño (en puntos) de la fuente |
scale | double | Escala |
anchor | GtkAnchorType | Forma de encuadrar el texto en el rectángulo del texto |
justification | GtkJustification | Justificación para texto multilínea |
clip_width | double | Anchura del rectángulo de recorte |
clip_height | double | Alto del rectángulo de recorte |
clip | boolean | Determina si usar o no un rectángulo de recorte |
x_offset | double | Distancia desde el valor de la coordenada X |
y_offset | double | Distancia desde el valor de la coordenada Y |
fill_color | gchar* | Nombre del color de relleno |
fill_color_gdk | GdkColor* | Puntero a un GdkColor para relleno |
fill_color_rgba | guint | Valor RGBA para rellenar el texto |
Para crear un objeto GnomeCanvasText hay que usar el valor devuelto por gnome_canvas_text_get_type.
GType gnome_canvas_text_get_type(
)
;
void;
Crear líneas con GnomeCanvasLine es muy similar a crear polígonos, ya que ambos usan GnomeCanvasPoints para definir las rutas, y comparten muchos parámetros en común.
Tabla 4. Parámetros de GnomeCanvasLine
Nombre | Tipo | Descripción |
---|---|---|
points | GnomeCanvasPoints* | Lista de puntos que definen las trayectorias de las líneas |
fill_color_rgba | guint32 | Color RGBA de relleno |
fill_color | gchar* | Nombre del color de relleno |
width_pixels | uint | Anchura de la línea en pixels |
width_units | gdouble | Anchura de la línea en unidades del canvas |
Para crear un objeto GnomeCanvasLine hay que usar el valor devuelto por gnome_canvas_line_get_type.
GType gnome_canvas_line_get_type(
)
;
void;
GnomeCanvasPixbuf permite añadir imágenes al canvas. Las imágenes se deben cargar en un GdkPixbuf, y luego pasarse a GnomeCanvasPixbuf.
Al igual que todos los objetos por defecto de GnomeCanvas, la configuración de GnomeCanvasPixbuf se hace por sus parámetros.
Tabla 5. Parámetros GnomeCanvasPixbuf
Nombre | Tipo | Descripción |
---|---|---|
pixbuf | GdkPixbuf* | Imagen a mostrar |
width | double | Anchura del rectángulo donde encuadrar la imagen |
width_set | boolean | Anchura de la imagen cuando se muestre en el canvas |
height | double | Altura del rectángulo donde encuadrar la imagen |
height_set | boolean | Altura que tendrá que la imagen cuando se muestre en el canvas |
x | double | Coordenada X donde poner la imagen |
y | double | Coordenada X donde poner la imagen |
anchor | GtkAnchorType | Forma de encuadrar el texto en el rectángulo |
La diferencia entre width_set y width es que width_set cambia la anchura de la imagen, de modo que la imagen se escala para adoptar el nuevo valor, mientras que width respeta las dimensiones de la imagen. Lo mismo pasa con height_set y height.
En el caso de width y height, anchor se usa para encajar la imagen cuando la anchura y la altura de la imagen es menor que la del rectángulo formado por los parámatros x, y, width y height.
El GnomeCanvasWidget permite insertar widgets dentro del canvas. Los widgets son colocados en el propio GnomeCanvas, ya que éste deriva de GtkLayout.
Tabla 6. Parámetros de GnomeCanvasWidget
Nombre | Tipo | Descripción |
---|---|---|
widget | GtkWidget* | Puntero al widget |
x | double | Coordenada X donde situar el widget |
y | double | Coordenada Y donde situal el widget |
width | double | Anchura del widget |
height | double | Altura del widget |
anchor | GtkAnchorType | Colocación del widget |
size_pixels | boolean | Si es TRUE, los valores de width y height serán medidos en pixels |
El valor de size_pixels determina el tipo de unidad a usar. Si es FALSE, los valores de width y height se medirán en unidades del canvas, por lo que si el canvas cambia de zoom, el widget se redimensionará. Si es TRUE, el widget no se redimensionará, manteniendo su aspecto aunque cambie el zoom del canvas.
<< El canvas de GNOME | Ejemplo sobre los objetos >> |