Re: Determining the width of a GtkTextView in characters
- From: Eduardo M KALINOWSKI <ekalin bol com br>
- To: Gtk <gtk-app-devel-list gnome org>
- Subject: Re: Determining the width of a GtkTextView in characters
- Date: Sun, 12 Jun 2005 10:52:28 -0300
Eduardo M KALINOWSKI wrote:
Hi,
I have a GtkTextView whose contents is all in one font, a monospaced
font by the way. I want to know the width of the GtkTextView in
characters, that is, how many characters fit in a line. I've tried a
code like this:
OK, I've found a code that does exactly what I want in another program.
Here it is, as a reference for those that need to do the same in the future:
GdkRectangle rect;
PangoContext *context;
PangoGlyphString *glyphs;
GList *items;
PangoItem *item;
PangoAttrList *attrib;
int char_width;
/* Get the size of the window */
gtk_text_view_get_visible_rect(txtView, &rect);
/* Get the Pango context */
context = gtk_widget_get_pango_context(GTK_WIDGET(txtView));
/* Determine the width of the W character. Any should do, supposing
the font is monospaced. If not, W is a wide character. */
attrib = pango_attr_list_new();
glyphs = pango_glyph_string_new();
items = pango_itemize(context, "W", 0, 1, attrib, NULL);
item = (PangoItem *) items->data;
pango_shape("W", 1, &item->analysis, glyphs);
char_width = PANGO_PIXELS(glyphs->glyphs[0].geometry.width);
cols = rect.width / char_width;
Naturally, it will only work correctly for monospaced fonts (which is
what I am using). But for variable width fonts, it should return a
conservative value, as W is generally one of the widest characters.
--
Household hint:
If you are out of cream for your coffee, mayonnaise makes a
dandy substitute.
Eduardo M KALINOWSKI
ekalin bol com br
http://move.to/hpkb
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]