plug-ins: port ifs-compose drawing to cairo

This commit is contained in:
Michael Natterer
2010-09-10 14:44:41 +02:00
parent 3b0c4e2e5e
commit 9b440396e1
3 changed files with 76 additions and 54 deletions

View File

@ -716,33 +716,57 @@ aff_element_draw (AffElement *elem,
gboolean selected,
gint width,
gint height,
GdkDrawable *win,
GdkGC *normal_gc,
GdkGC *selected_gc,
cairo_t *cr,
GdkColor *color,
PangoLayout *layout)
{
PangoRectangle rect;
GdkGC *gc;
PangoRectangle rect;
gint i;
pango_layout_set_text (layout, elem->name, -1);
pango_layout_get_pixel_extents (layout, NULL, &rect);
if (selected)
gc = selected_gc;
else
gc = normal_gc;
gdk_cairo_set_source_color (cr, color);
gdk_draw_layout (win, gc,
elem->v.x * width - rect.width / 2,
elem->v.y * width + rect.height / 2,
layout);
cairo_move_to (cr,
elem->v.x * width - rect.width / 2,
elem->v.y * width + rect.height / 2);
pango_cairo_show_layout (cr, layout);
cairo_fill (cr);
cairo_set_line_width (cr, 1.0);
if (elem->click_boundary != elem->draw_boundary)
gdk_draw_polygon (win, normal_gc, FALSE, elem->click_boundary->points,
elem->click_boundary->npoints);
{
cairo_move_to (cr,
elem->click_boundary->points[0].x,
elem->click_boundary->points[0].y);
gdk_draw_polygon (win, gc, FALSE, elem->draw_boundary->points,
elem->draw_boundary->npoints);
for (i = 1; i < elem->click_boundary->npoints; i++)
cairo_line_to (cr,
elem->click_boundary->points[i].x,
elem->click_boundary->points[i].y);
cairo_close_path (cr);
cairo_stroke (cr);
}
if (selected)
cairo_set_line_width (cr, 3.0);
cairo_move_to (cr,
elem->draw_boundary->points[0].x,
elem->draw_boundary->points[0].y);
for (i = 1; i < elem->draw_boundary->npoints; i++)
cairo_line_to (cr,
elem->draw_boundary->points[i].x,
elem->draw_boundary->points[i].y);
cairo_close_path (cr);
cairo_stroke (cr);
}
AffElement *