Use Pango Attributes for bold and italics
This commit is contained in:
parent
0d2feba69c
commit
c537dae7f8
|
@ -166,7 +166,6 @@ static void
|
||||||
backend_font_close (GtkXText *xtext)
|
backend_font_close (GtkXText *xtext)
|
||||||
{
|
{
|
||||||
pango_font_description_free (xtext->font->font);
|
pango_font_description_free (xtext->font->font);
|
||||||
pango_font_description_free (xtext->font->ifont);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -221,8 +220,6 @@ backend_font_open (GtkXText *xtext, char *name)
|
||||||
xtext->font = NULL;
|
xtext->font = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
xtext->font->ifont = backend_font_open_real (name);
|
|
||||||
pango_font_description_set_style (xtext->font->ifont, PANGO_STYLE_ITALIC);
|
|
||||||
|
|
||||||
backend_init (xtext);
|
backend_init (xtext);
|
||||||
pango_layout_set_font_description (xtext->layout, xtext->font->font);
|
pango_layout_set_font_description (xtext->layout, xtext->font->font);
|
||||||
|
@ -306,10 +303,29 @@ backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y,
|
||||||
GdkGCValues val;
|
GdkGCValues val;
|
||||||
GdkColor col;
|
GdkColor col;
|
||||||
PangoLayoutLine *line;
|
PangoLayoutLine *line;
|
||||||
|
PangoAttrList *attr_list;
|
||||||
|
PangoAttribute *attr;
|
||||||
|
|
||||||
|
attr_list = pango_attr_list_new ();
|
||||||
|
|
||||||
if (xtext->italics)
|
if (xtext->italics)
|
||||||
pango_layout_set_font_description (xtext->layout, xtext->font->ifont);
|
{
|
||||||
|
attr = pango_attr_style_new (PANGO_STYLE_ITALIC);
|
||||||
|
attr->start_index = PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING;
|
||||||
|
attr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END;
|
||||||
|
|
||||||
|
pango_attr_list_insert (attr_list, attr);
|
||||||
|
}
|
||||||
|
if (xtext->bold)
|
||||||
|
{
|
||||||
|
attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD);
|
||||||
|
attr->start_index = PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING;
|
||||||
|
attr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END;
|
||||||
|
|
||||||
|
pango_attr_list_insert (attr_list, attr);
|
||||||
|
}
|
||||||
|
|
||||||
|
pango_layout_set_attributes (xtext->layout, attr_list);
|
||||||
pango_layout_set_text (xtext->layout, str, len);
|
pango_layout_set_text (xtext->layout, str, len);
|
||||||
|
|
||||||
if (dofill)
|
if (dofill)
|
||||||
|
@ -327,28 +343,9 @@ backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y,
|
||||||
|
|
||||||
xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line);
|
xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line);
|
||||||
|
|
||||||
if (xtext->bold)
|
pango_attr_list_unref (attr_list);
|
||||||
xtext_draw_layout_line (xtext->draw_buf, gc, x + 1, y, line);
|
|
||||||
|
|
||||||
if (xtext->italics)
|
|
||||||
pango_layout_set_font_description (xtext->layout, xtext->font->font);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static void
|
|
||||||
backend_set_clip (GtkXText *xtext, GdkRectangle *area)
|
|
||||||
{
|
|
||||||
gdk_gc_set_clip_rectangle (xtext->fgc, area);
|
|
||||||
gdk_gc_set_clip_rectangle (xtext->bgc, area);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
backend_clear_clip (GtkXText *xtext)
|
|
||||||
{
|
|
||||||
gdk_gc_set_clip_rectangle (xtext->fgc, NULL);
|
|
||||||
gdk_gc_set_clip_rectangle (xtext->bgc, NULL);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index)
|
xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index)
|
||||||
{
|
{
|
||||||
|
@ -2334,101 +2331,6 @@ gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf,
|
||||||
return new_str;
|
return new_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* GeEkMaN: converts mIRC control codes to literal control codes */
|
|
||||||
|
|
||||||
static char *
|
|
||||||
gtk_xtext_conv_color (unsigned char *text, int len, int *newlen)
|
|
||||||
{
|
|
||||||
int i, j = 2;
|
|
||||||
char cchar = 0;
|
|
||||||
char *new_str;
|
|
||||||
int mbl;
|
|
||||||
|
|
||||||
for (i = 0; i < len;)
|
|
||||||
{
|
|
||||||
switch (text[i])
|
|
||||||
{
|
|
||||||
case ATTR_COLOR:
|
|
||||||
case ATTR_RESET:
|
|
||||||
case ATTR_REVERSE:
|
|
||||||
case ATTR_BOLD:
|
|
||||||
case ATTR_UNDERLINE:
|
|
||||||
case ATTR_ITALICS:
|
|
||||||
case ATTR_HIDDEN:
|
|
||||||
j += 3;
|
|
||||||
i++;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mbl = charlen (text + i);
|
|
||||||
j += mbl;
|
|
||||||
i += mbl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
new_str = malloc (j);
|
|
||||||
j = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < len;)
|
|
||||||
{
|
|
||||||
switch (text[i])
|
|
||||||
{
|
|
||||||
case ATTR_COLOR:
|
|
||||||
cchar = 'C';
|
|
||||||
break;
|
|
||||||
case ATTR_RESET:
|
|
||||||
cchar = 'O';
|
|
||||||
break;
|
|
||||||
case ATTR_REVERSE:
|
|
||||||
cchar = 'R';
|
|
||||||
break;
|
|
||||||
case ATTR_BOLD:
|
|
||||||
cchar = 'B';
|
|
||||||
break;
|
|
||||||
case ATTR_UNDERLINE:
|
|
||||||
cchar = 'U';
|
|
||||||
break;
|
|
||||||
case ATTR_ITALICS:
|
|
||||||
cchar = 'I';
|
|
||||||
break;
|
|
||||||
case ATTR_HIDDEN:
|
|
||||||
cchar = 'H';
|
|
||||||
break;
|
|
||||||
case ATTR_BEEP:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mbl = charlen (text + i);
|
|
||||||
if (mbl == 1)
|
|
||||||
{
|
|
||||||
new_str[j] = text[i];
|
|
||||||
j++;
|
|
||||||
i++;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
/* invalid utf8 safe guard */
|
|
||||||
if (i + mbl > len)
|
|
||||||
mbl = len - i;
|
|
||||||
memcpy (new_str + j, text + i, mbl);
|
|
||||||
j += mbl;
|
|
||||||
i += mbl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cchar != 0)
|
|
||||||
{
|
|
||||||
new_str[j++] = '%';
|
|
||||||
new_str[j++] = cchar;
|
|
||||||
cchar = 0;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
new_str[j] = 0;
|
|
||||||
*newlen = j;
|
|
||||||
|
|
||||||
return new_str;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* gives width of a string, excluding the mIRC codes */
|
/* gives width of a string, excluding the mIRC codes */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -173,7 +173,6 @@ struct _GtkXText
|
||||||
struct pangofont
|
struct pangofont
|
||||||
{
|
{
|
||||||
PangoFontDescription *font;
|
PangoFontDescription *font;
|
||||||
PangoFontDescription *ifont; /* italics */
|
|
||||||
int ascent;
|
int ascent;
|
||||||
int descent;
|
int descent;
|
||||||
} *font, pango_font;
|
} *font, pango_font;
|
||||||
|
|
Loading…
Reference in New Issue