1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2000-2012 Jeffrey Stedfast
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License
7 * as published by the Free Software Foundation; either version 2.1
8 * of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free
17 * Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
22 #ifndef __GMIME_FILTER_HTML_H__
23 #define __GMIME_FILTER_HTML_H__
25 #include <gmime/gmime-filter.h>
29 #define GMIME_TYPE_FILTER_HTML (g_mime_filter_html_get_type ())
30 #define GMIME_FILTER_HTML(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMIME_TYPE_FILTER_HTML, GMimeFilterHTML))
31 #define GMIME_FILTER_HTML_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMIME_TYPE_FILTER_HTML, GMimeFilterHTMLClass))
32 #define GMIME_IS_FILTER_HTML(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GMIME_TYPE_FILTER_HTML))
33 #define GMIME_IS_FILTER_HTML_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GMIME_TYPE_FILTER_HTML))
34 #define GMIME_FILTER_HTML_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMIME_TYPE_FILTER_HTML, GMimeFilterHTMLClass))
36 typedef struct _GMimeFilterHTML GMimeFilterHTML;
37 typedef struct _GMimeFilterHTMLClass GMimeFilterHTMLClass;
41 * GMIME_FILTER_HTML_PRE:
43 * Wrap stream in <pre> tags.
45 #define GMIME_FILTER_HTML_PRE (1 << 0)
49 * GMIME_FILTER_HTML_CONVERT_NL:
51 * Convert new-lines ('\n') into <br> tags.
53 #define GMIME_FILTER_HTML_CONVERT_NL (1 << 1)
57 * GMIME_FILTER_HTML_CONVERT_SPACES:
59 * Preserve whitespace by converting spaces into their appropriate
62 #define GMIME_FILTER_HTML_CONVERT_SPACES (1 << 2)
66 * GMIME_FILTER_HTML_CONVERT_URLS:
68 * Wrap detected URLs in <a href=...> tags.
70 #define GMIME_FILTER_HTML_CONVERT_URLS (1 << 3)
74 * GMIME_FILTER_HTML_MARK_CITATION:
76 * Change the colour of citation text.
78 #define GMIME_FILTER_HTML_MARK_CITATION (1 << 4)
82 * GMIME_FILTER_HTML_CONVERT_ADDRESSES:
84 * Wrap email addresses in "mailto:" href tags.
86 #define GMIME_FILTER_HTML_CONVERT_ADDRESSES (1 << 5)
90 * GMIME_FILTER_HTML_ESCAPE_8BIT:
92 * Converts 8bit characters to '?'.
94 #define GMIME_FILTER_HTML_ESCAPE_8BIT (1 << 6)
98 * GMIME_FILTER_HTML_CITE:
100 * Cites text by prepending "> " to each cited line.
102 #define GMIME_FILTER_HTML_CITE (1 << 7)
107 * @parent_object: parent #GMimeFilter
108 * @scanner: URL scanner state
109 * @flags: flags specifying HTML conversion rules
110 * @colour: cite colour
111 * @column: current column
112 * @pre_open: currently inside of a 'pre' tag.
114 * A filter for converting text/plain into text/html.
116 struct _GMimeFilterHTML {
117 GMimeFilter parent_object;
119 struct _UrlScanner *scanner;
125 guint32 pre_open : 1;
128 struct _GMimeFilterHTMLClass {
129 GMimeFilterClass parent_class;
134 GType g_mime_filter_html_get_type (void);
136 GMimeFilter *g_mime_filter_html_new (guint32 flags, guint32 colour);
140 #endif /* __GMIME_FILTER_HTML_H__ */