From 3e105b5bb73b88a597ca56c14319644e4ca4c1ea Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Tue, 20 Mar 2001 16:50:12 +0000 Subject: new function, extracted from e_text_to_html, added color parameter 2001-03-20 Radek Doulik * e-html-utils.c (e_text_to_html_full): new function, extracted from e_text_to_html, added color parameter 2001-03-19 Radek Doulik * e-html-utils.c (e_text_to_html): support mark citation * e-html-utils.h (E_TEXT_TO_HTML_MARK_CITATION): added E_TEXT_TO_HTML_MARK_CITATION svn path=/trunk/; revision=8847 --- e-util/ChangeLog | 12 ++++++++++++ e-util/e-html-utils.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- e-util/e-html-utils.h | 6 +++++- 3 files changed, 66 insertions(+), 3 deletions(-) diff --git a/e-util/ChangeLog b/e-util/ChangeLog index f54c173b1e..b566b4d3cc 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,15 @@ +2001-03-20 Radek Doulik + + * e-html-utils.c (e_text_to_html_full): new function, extracted + from e_text_to_html, added color parameter + +2001-03-19 Radek Doulik + + * e-html-utils.c (e_text_to_html): support mark citation + + * e-html-utils.h (E_TEXT_TO_HTML_MARK_CITATION): added + E_TEXT_TO_HTML_MARK_CITATION + 2001-03-18 Damon Chaplin * e-time-utils.c (e_time_format_time): added function to format just diff --git a/e-util/e-html-utils.c b/e-util/e-html-utils.c index d1f069661e..f0c16e63a0 100644 --- a/e-util/e-html-utils.c +++ b/e-util/e-html-utils.c @@ -64,11 +64,28 @@ url_extract (const unsigned char **text, gboolean check) return out; } +static gboolean +is_citation (const unsigned char *c) +{ + unicode_char_t u; + gint i; + + for (i = 0; c && *c && i < 10; i ++, c = unicode_next_utf8 (c)) { + unicode_get_utf8 (c, &u); + if (u == '>') + return TRUE; + if (!unicode_isalnum (u)) + return FALSE; + } + return FALSE; +} + /** - * e_text_to_html: + * e_text_to_html_full: * @input: a NUL-terminated input buffer * @flags: some combination of the E_TEXT_TO_HTML_* flags defined * in e-html-utils.h + * @color: color for citation highlighting * * This takes a buffer of text as input and produces a buffer of * "equivalent" HTML, subject to certain transformation rules. @@ -96,14 +113,18 @@ url_extract (const unsigned char **text, gboolean check) * * - E_TEXT_TO_HTML_CONVERT_URLS: wrap around * strings that look like URLs. + * + * - E_TEXT_TO_HTML_MARK_CITATION: wrap around + * citations (lines beginning with "> "). **/ char * -e_text_to_html (const char *input, unsigned int flags) +e_text_to_html_full (const char *input, unsigned int flags, guint32 color) { const unsigned char *cur = input; char *buffer = NULL; char *out = NULL; int buffer_size = 0, col; + gboolean colored = FALSE; /* Allocate a translation buffer. */ buffer_size = strlen (input) * 2 + 5; @@ -119,6 +140,26 @@ e_text_to_html (const char *input, unsigned int flags) unicode_char_t u; unicode_get_utf8 (cur, &u); + if (flags & E_TEXT_TO_HTML_MARK_CITATION && col == 0) { + if (is_citation (cur)) { + if (!colored) { + gchar font [25]; + + g_snprintf (font, 25, "", color); + + check_size (&buffer, &buffer_size, out, 25); + out += sprintf (out, "%s", font); + colored = TRUE; + } + } else if (colored) { + gchar *no_font = ""; + + check_size (&buffer, &buffer_size, out, 9); + out += sprintf (out, "%s", no_font); + colored = FALSE; + } + } + if (unicode_isalpha (u) && (flags & E_TEXT_TO_HTML_CONVERT_URLS)) { char *tmpurl = NULL, *refurl = NULL, *dispurl = NULL; @@ -250,3 +291,9 @@ e_text_to_html (const char *input, unsigned int flags) return buffer; } + +char * +e_text_to_html (const char *input, unsigned int flags) +{ + return e_text_to_html_full (input, flags, 0); +} diff --git a/e-util/e-html-utils.h b/e-util/e-html-utils.h index a56889f4d9..346446956c 100644 --- a/e-util/e-html-utils.h +++ b/e-util/e-html-utils.h @@ -23,11 +23,15 @@ #ifndef __E_HTML_UTILS__ #define __E_HTML_UTILS__ +#include + #define E_TEXT_TO_HTML_PRE (1 << 0) #define E_TEXT_TO_HTML_CONVERT_NL (1 << 1) #define E_TEXT_TO_HTML_CONVERT_SPACES (1 << 2) #define E_TEXT_TO_HTML_CONVERT_URLS (1 << 3) +#define E_TEXT_TO_HTML_MARK_CITATION (1 << 4) -char *e_text_to_html (const char *input, unsigned int flags); +char *e_text_to_html_full (const char *input, unsigned int flags, guint32 color); +char *e_text_to_html (const char *input, unsigned int flags); #endif /* __E_HTML_UTILS__ */ -- cgit