Re: Cairo based engine api for GTK+ 3.0
- From: Chris Wilson <chris chris-wilson co uk>
- To: Thomas Wood <thos gnome org>
- Cc: gtk-devel-list gnome org
- Subject: Re: Cairo based engine api for GTK+ 3.0
- Date: Thu, 18 Jun 2009 11:45:45 +0100
On Thu, 2009-06-18 at 11:33 +0100, Thomas Wood wrote:
> On Thu, 2009-06-18 at 11:26 +0100, Chris Wilson wrote:
> > The use of pango_cairo_layout_path(); cairo_fill(); is a performance
> > nightmare, use pango_cairo_show_layout() instead. [The difference
> > between the two is that pango_cairo_layout_path() will extract the paths
> > from the glyphs and fill by sending very long lists of trapezoids to the
> > X server every time, whereas pango_cairo_show_layout() will cache the
> > glyphs masks on the X server (as pixmaps) and just issue a short list of
> > indices to composite. So the latter is far more computationally, memory
> > and bandwidth efficient.]
>
> Do you know of a more efficient way to do this, but still using cairo?
>
> Alternatively, we could remove draw_layout() from the engine API. It
> isn't used a lot, normally only to make insensitive text look nicer than
> the default implementation...
Just to clarify: do you want a cairo equivalent for the stipple effect
or how to replace pango_cairo_layout_path()?
As the code currently stands:
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index 628b952..01d81e6 100644
--- a/gtk/gtkstyle.c
+++ b/gtk/gtkstyle.c
@@ -5140,17 +5140,14 @@ gtk_default_draw_layout (GtkStyle *style,
{
gdk_cairo_set_source_color (cr, &style->white);
cairo_move_to (cr, x + 1, y + 1);
- pango_cairo_layout_path (cr, layout);
- cairo_fill (cr);
+ pango_cairo_show_layout (cr, layout);
}
gc = use_text ? &style->text[state_type] : &style->fg[state_type];
- cairo_move_to (cr, x, y);
gdk_cairo_set_source_color (cr, gc);
-
- pango_cairo_layout_path (cr, layout);
- cairo_fill (cr);
+ cairo_move_to (cr, x, y);
+ pango_cairo_show_layout (cr, layout);
cairo_destroy (cr);
}
I'll take a closer look at the stippling now :-)
-ickle
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]