gboolean written_prefix;
gsize linkify_limit;
gsize full_limit;
+ gsize line_limit;
gsize total_output;
+ gsize total_lines_output;
};
#define MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MODEST_TYPE_STREAM_TEXT_TO_HTML, \
priv->linkify_limit = 0;
priv->full_limit = 0;
priv->total_output = 0;
+ priv->total_lines_output = 0;
modest_text_utils_hyperlinkify_begin ();
}
}
void
+modest_stream_text_to_html_set_line_limit (ModestStreamTextToHtml *self, gssize limit)
+{
+ ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self);
+ priv->line_limit = limit;
+}
+
+void
modest_stream_text_to_html_set_linkify_limit (ModestStreamTextToHtml *self, gssize limit)
{
ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self);
priv->full_limit = limit;
}
+gboolean
+modest_stream_text_to_html_limit_reached (ModestStreamTextToHtml *self)
+{
+ ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self);
+
+ return (priv->full_limit > 0 && priv->total_output > priv->full_limit) ||
+ (priv->line_limit > 0 && priv->total_lines_output > priv->line_limit);
+
+}
+
/* the rest are interface functions */
preserve the prefix and suffix */
if (convert_to_html && (priv->full_limit > 0) &&(priv->total_output > priv->full_limit))
return TRUE;
+ if (convert_to_html && (priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit))
+ return TRUE;
if ((priv->linkify_limit > 0) && (priv->total_output > priv->linkify_limit))
hyperlinkify = FALSE;
if (convert_to_html) {
pending_bytes = strlen (html_buffer);
priv->total_output += pending_bytes;
+ priv->total_lines_output ++;
offset = html_buffer;
while (pending_bytes > 0) {
while (n > 0) {
gchar c = *buffer;
+
+ if ((priv->full_limit > 0) && (priv->total_output > priv->full_limit))
+ return n;
+ if ((priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit))
+ return n;
+
if (priv->line_buffer == NULL)
priv->line_buffer = g_string_new (NULL);