Re: Why is PangoCairoRenderer private?



On Sat, 2007-05-19 at 15:58 +0200, Peter Frentrup wrote:
> Hello,
> 
> I am working on a little text editor using Cairo and Pango (but without
> GTK+/GTKTextView, because it does not have a native look-and-feel on
> Windows).
> 
> At first I thought, I could use the pangocairo API, but it does not give
> me the possibility to draw selected text in a different style without
> setting the background-attribute (which seems to be slow when changing
> the selection range).
> So I read a bit about the PangoRenderer class. I could write my own
> subclass of PangoRenderer, but this would basically be a copy of the
> PangoCairoRenderer code plus a few additions.
> 
> So my suggestion is to make PangoCairoRenderer public to let Pango-users
> subclass it; or is there another solution for my problem?

See GdkPangoRenderer for an example of building a customized renderer
that backends to Pango/Cairo. (Effectively it "has a" PangoCairoRenderer
rather than "is a" PangoCairoRenderer")

But I'm not really sure that it's going to help you with selection 
at all ... the technique used by the GTK+ widgets for drawing a
partially selected paragraph is:

 - Draw the paragraph normally
 - Create a clip region based on pango_layout_line_get_x_ranges()
 - Draw the paragraph in the selection colors

(Optimization to do this only for partially selected lines is 
possible, but I wouldn't do it before finding the entire paragraph
to be a bottleneck..)

The reason that you found setting attributes slow is probably
because you were causing a re-layout every time the user moved 
dragged the mouse a character. Setting attributes also just doesn't
work well for selection ... consider selecting only the 'f' of 
a 'fi' ligature. The use of clipping avoids that problem.

					- Owen





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]