pango: delete foreground color in shadow text

This makes colored text have gray drop shadows
instead of colored ones, which looks much better.

https://bugzilla.gnome.org/show_bug.cgi?id=686841
This commit is contained in:
Jihyun Cho 2012-10-26 00:29:11 +09:00 committed by Tim-Philipp Müller
parent 6e5ea441e7
commit 2e0174e13c

View file

@ -1252,6 +1252,16 @@ gst_base_text_overlay_set_composition (GstBaseTextOverlay * overlay)
}
}
static gboolean
gst_text_overlay_filter_foreground_attr (PangoAttribute * attr, gpointer data)
{
if (attr->klass->type == PANGO_ATTR_FOREGROUND) {
return FALSE;
} else {
return TRUE;
}
}
static void
gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
const gchar * string, gint textlen)
@ -1366,11 +1376,25 @@ gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
*/
/* draw shadow text */
cairo_save (cr);
cairo_translate (cr, overlay->shadow_offset, overlay->shadow_offset);
cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
pango_cairo_show_layout (cr, overlay->layout);
cairo_restore (cr);
{
PangoAttrList *origin_attr, *filtered_attr;
origin_attr =
pango_attr_list_copy (pango_layout_get_attributes (overlay->layout));
filtered_attr =
pango_attr_list_filter (pango_attr_list_copy (origin_attr),
gst_text_overlay_filter_foreground_attr, NULL);
cairo_save (cr);
cairo_translate (cr, overlay->shadow_offset, overlay->shadow_offset);
cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
pango_layout_set_attributes (overlay->layout, filtered_attr);
pango_cairo_show_layout (cr, overlay->layout);
pango_layout_set_attributes (overlay->layout, origin_attr);
pango_attr_list_unref (filtered_attr);
pango_attr_list_unref (origin_attr);
cairo_restore (cr);
}
a = (overlay->outline_color >> 24) & 0xff;
r = (overlay->outline_color >> 16) & 0xff;