/*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with the program; if not, see
*
*
* Authors:
* Michael Zucchi
*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*
*/
/*
Abstract class for formatting mails to html
*/
#ifndef EM_FORMAT_HTML_H
#define EM_FORMAT_HTML_H
#include
#include
#include
/* Standard GObject macros */
#define EM_TYPE_FORMAT_HTML \
(em_format_html_get_type ())
#define EM_FORMAT_HTML(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), EM_TYPE_FORMAT_HTML, EMFormatHTML))
#define EM_FORMAT_HTML_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
((cls), EM_TYPE_FORMAT_HTML, EMFormatHTMLClass))
#define EM_IS_FORMAT_HTML(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), EM_TYPE_FORMAT_HTML))
#define EM_IS_FORMAT_HTML_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), EM_TYPE_FORMAT_HTML))
#define EM_FORMAT_HTML_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS \
((obj), EM_TYPE_FORMAT_HTML, EMFormatHTMLClass))
G_BEGIN_DECLS
typedef struct _EMFormatHTML EMFormatHTML;
typedef struct _EMFormatHTMLClass EMFormatHTMLClass;
typedef struct _EMFormatHTMLPrivate EMFormatHTMLPrivate;
typedef struct _EMFormatWidgetPURI EMFormatWidgetPURI;
enum _em_format_html_header_flags {
EM_FORMAT_HTML_HEADER_TO = 1 << 0,
EM_FORMAT_HTML_HEADER_CC = 1 << 1,
EM_FORMAT_HTML_HEADER_BCC = 1 << 2
};
typedef enum {
EM_FORMAT_HTML_COLOR_BODY, /* header area background */
EM_FORMAT_HTML_COLOR_CITATION, /* citation font color */
EM_FORMAT_HTML_COLOR_CONTENT, /* message area background */
EM_FORMAT_HTML_COLOR_FRAME, /* frame around message area */
EM_FORMAT_HTML_COLOR_HEADER, /* header font color */
EM_FORMAT_HTML_COLOR_TEXT, /* message font color */
EM_FORMAT_HTML_NUM_COLOR_TYPES
} EMFormatHTMLColorType;
#define EM_FORMAT_HTML_HEADER_NOCOLUMNS (EM_FORMAT_HEADER_LAST)
/* header already in html format */
#define EM_FORMAT_HTML_HEADER_HTML (EM_FORMAT_HEADER_LAST<<1)
#define EM_FORMAT_HTML_HEADER_NODEC (EM_FORMAT_HEADER_LAST<<2)
#define EM_FORMAT_HTML_HEADER_NOLINKS (EM_FORMAT_HEADER_LAST<<3)
#define EM_FORMAT_HTML_HEADER_HIDDEN (EM_FORMAT_HEADER_LAST<<4)
#define EM_FORMAT_HTML_HEADER_LAST (EM_FORMAT_HEADER_LAST<<8)
#define EM_FORMAT_HTML_VPAD \
"\n"
/**
* struct _EMFormatHTML - HTML formatter object.
*
* @format:
* @priv:
* @html:
* @pending_object_list:
* @headers:
* @text_html_flags:
* @body_colour:
* @header_colour:
* @text_colour:
* @frame_colour:
* @content_colour:
* @citation_color:
* @load_http:2:
* @load_http_now:1:
* @mark_citations:1:
* @hide_headers:1:
* @show_icon:1:
*
* Most of these fields are private or read-only.
*
* The base HTML formatter object. This object drives HTML generation
* into a WebKit parser. It also handles text to HTML conversion,
* multipart/related objects and inline images.
**/
struct _EMFormatHTML {
EMFormat parent;
EMFormatHTMLPrivate *priv;
GQueue pending_object_list;
GSList *headers;
guint32 text_html_flags; /* default flags for text to html conversion */
guint hide_headers:1; /* no headers at all */
guint show_icon:1; /* show an icon when the sender used Evo */
guint32 header_wrap_flags;
};
struct _EMFormatHTMLClass {
EMFormatClass parent_class;
GType html_widget_type;
};
GType em_format_html_get_type (void);
void em_format_html_get_color (EMFormatHTML *efh,
EMFormatHTMLColorType type,
GdkColor *color);
void em_format_html_set_color (EMFormatHTML *efh,
EMFormatHTMLColorType type,
const GdkColor *color);
EMailImageLoadingPolicy
em_format_html_get_image_loading_policy
(EMFormatHTML *efh);
void em_format_html_set_image_loading_policy
(EMFormatHTML *efh,
EMailImageLoadingPolicy policy);
gboolean em_format_html_get_mark_citations
(EMFormatHTML *efh);
void em_format_html_set_mark_citations
(EMFormatHTML *efh,
gboolean mark_citations);
gboolean em_format_html_get_only_local_photos
(EMFormatHTML *efh);
void em_format_html_set_only_local_photos
(EMFormatHTML *efh,
gboolean only_local_photos);
gboolean em_format_html_get_show_sender_photo
(EMFormatHTML *efh);
void em_format_html_set_show_sender_photo
(EMFormatHTML *efh,
gboolean show_sender_photo);
gboolean em_format_html_get_animate_images
(EMFormatHTML *efh);
void em_format_html_set_animate_images
(EMFormatHTML *efh,
gboolean animate_images);
void em_format_html_clone_sync (CamelFolder *folder,
const gchar *message_uid,
CamelMimeMessage *message,
EMFormatHTML *efh,
EMFormat *source);
gboolean em_format_html_get_show_real_date
(EMFormatHTML *efh);
void em_format_html_set_show_real_date
(EMFormatHTML *efh,
gboolean show_real_date);
/* retrieves a pseudo-part icon wrapper for a file */
CamelMimePart * em_format_html_file_part (EMFormatHTML *efh,
const gchar *mime_type,
const gchar *filename,
GCancellable *cancellable);
void em_format_html_format_cert_infos
(GQueue *cert_infos,
GString *output_buffer);
void em_format_html_format_message (EMFormatHTML *efh,
CamelStream *stream,
GCancellable *cancellable);
void em_format_html_format_message_part
(EMFormatHTML *efh,
const gchar *part_id,
CamelStream *stream,
GCancellable *cancellable);
void em_format_html_format_headers (EMFormatHTML *efh,
CamelStream *stream,
CamelMedium *part,
gboolean all_headers,
GCancellable *cancellable);
void em_format_html_format_header (EMFormat *emf,
GString *buffer,
CamelMedium *part,
struct _camel_header_raw *header,
guint32 flags,
const gchar *charset);
gboolean em_format_html_can_load_images (EMFormatHTML *efh);
void em_format_html_animation_extract_frame
(const GByteArray *anim,
gchar **frame,
gsize *len);
G_END_DECLS
#endif /* EM_FORMAT_HTML_H */