# HG changeset patch # User Mark Doliner # Date 1229486545 0 # Node ID 9a5a201e69a333a9e998ffa2781e82ccc3a1be90 # Parent cd0071208174cad8f1f7dbb160f1db998cf71cb0 Add support for foreground and background font colors in MySpace IMs diff -r cd0071208174 -r 9a5a201e69a3 ChangeLog --- a/ChangeLog Wed Dec 17 03:37:59 2008 +0000 +++ b/ChangeLog Wed Dec 17 04:02:25 2008 +0000 @@ -56,6 +56,7 @@ * Add support for blocking buddies (Mark Doliner) * Fix a bug where buddies didn't appear in their correct groups the first time you sign into your account (Mark Doliner) + * Support for foreground and background font colors in outgoing IMs SIMPLE: * Fix a crash when a malformed message is received. diff -r cd0071208174 -r 9a5a201e69a3 libpurple/protocols/myspace/markup.c --- a/libpurple/protocols/myspace/markup.c Wed Dec 17 03:37:59 2008 +0000 +++ b/libpurple/protocols/myspace/markup.c Wed Dec 17 04:02:25 2008 +0000 @@ -497,29 +497,47 @@ *end = g_strdup(""); } else if (!purple_utf8_strcasecmp(root->name, "font")) { + GString *tmpbegin, *tmpend; const gchar *size; const gchar *face; + const gchar *color; size = xmlnode_get_attrib(root, "size"); face = xmlnode_get_attrib(root, "face"); + color = xmlnode_get_attrib(root, "color"); - if (face && size) { - *begin = g_strdup_printf("", face, - msim_point_to_height(session, - msim_purple_size_to_point(session, atoi(size)))); - } else if (face) { - *begin = g_strdup_printf("", face); - } else if (size) { - *begin = g_strdup_printf("", + tmpbegin = g_string_new(""); + + if (face != NULL) + g_string_append_printf(tmpbegin, "f='%s'>", face); + + if (size != NULL) + g_string_append_printf(tmpbegin, "h='%d'", msim_point_to_height(session, msim_purple_size_to_point(session, atoi(size)))); - } else { - *begin = g_strdup(""); + + /* Close the tag */ + g_string_append(tmpbegin, ">"); + + if (color != NULL) { + g_string_append_printf(tmpbegin, "", color); + g_string_prepend(tmpend, ""); } - *end = g_strdup(""); + *begin = g_string_free(tmpbegin, FALSE); + *end = g_string_free(tmpend, FALSE); + + } else if (!purple_utf8_strcasecmp(root->name, "body")) { + const gchar *bgcolor; - /* TODO: color (bg uses ), emoticons */ + bgcolor = xmlnode_get_attrib(root, "bgcolor"); + + if (bgcolor != NULL) { + *begin = g_strdup_printf("", bgcolor); + *end = g_strdup(""); + } + } else { gchar *err;