summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-11-21 14:26:41 +0100
committerTor Andersson <tor.andersson@artifex.com>2016-11-23 11:17:35 +0100
commitdd15bf347ca04cb79d1e009a7afb0f4c082820ca (patch)
tree31ef65777859b2ebebda014cb9e3ebc41c7280e0 /source
parentab62bee35b271f4bf7c73a2cdb7539c20e68b70b (diff)
downloadmupdf-dd15bf347ca04cb79d1e009a7afb0f4c082820ca.tar.xz
Add toggle to enable/disable document styles.
Diffstat (limited to 'source')
-rw-r--r--source/fitz/context.c12
-rw-r--r--source/html/css-apply.c27
-rw-r--r--source/html/html-layout.c6
3 files changed, 31 insertions, 14 deletions
diff --git a/source/fitz/context.c b/source/fitz/context.c
index 3e79bbea..f62cd9d7 100644
--- a/source/fitz/context.c
+++ b/source/fitz/context.c
@@ -35,6 +35,7 @@ struct fz_style_context_s
{
int refs;
char *user_css;
+ int use_document_css;
};
static void fz_new_style_context(fz_context *ctx)
@@ -44,6 +45,7 @@ static void fz_new_style_context(fz_context *ctx)
ctx->style = fz_malloc_struct(ctx, fz_style_context);
ctx->style->refs = 1;
ctx->style->user_css = NULL;
+ ctx->style->use_document_css = 1;
}
}
@@ -65,6 +67,16 @@ static void fz_drop_style_context(fz_context *ctx)
}
}
+void fz_set_use_document_css(fz_context *ctx, int use)
+{
+ ctx->style->use_document_css = use;
+}
+
+int fz_use_document_css(fz_context *ctx)
+{
+ return ctx->style->use_document_css;
+}
+
void fz_set_user_css(fz_context *ctx, const char *user_css)
{
fz_free(ctx, ctx->style->user_css);
diff --git a/source/html/css-apply.c b/source/html/css-apply.c
index e5e4def4..f3e28ddd 100644
--- a/source/html/css-apply.c
+++ b/source/html/css-apply.c
@@ -644,22 +644,25 @@ fz_match_css(fz_context *ctx, fz_css_match *match, fz_css *css, fz_xml *node)
}
}
- s = fz_xml_att(node, "style");
- if (s)
+ if (fz_use_document_css(ctx))
{
- fz_try(ctx)
+ s = fz_xml_att(node, "style");
+ if (s)
{
- prop = fz_parse_css_properties(ctx, css->pool, s);
- while (prop)
+ fz_try(ctx)
{
- add_property(match, prop->name, prop->value, INLINE_SPECIFICITY);
- prop = prop->next;
+ prop = fz_parse_css_properties(ctx, css->pool, s);
+ while (prop)
+ {
+ add_property(match, prop->name, prop->value, INLINE_SPECIFICITY);
+ prop = prop->next;
+ }
+ /* We can "leak" the property here, since it is freed along with the pool allocator. */
+ }
+ fz_catch(ctx)
+ {
+ fz_warn(ctx, "ignoring style attribute");
}
- /* We can "leak" the property here, since it is freed along with the pool allocator. */
- }
- fz_catch(ctx)
- {
- fz_warn(ctx, "ignoring style attribute");
}
}
diff --git a/source/html/html-layout.c b/source/html/html-layout.c
index 95f2a76b..b958a3a3 100644
--- a/source/html/html-layout.c
+++ b/source/html/html-layout.c
@@ -2545,14 +2545,16 @@ fz_parse_html(fz_context *ctx, fz_html_font_set *set, fz_archive *zip, const cha
{
g.is_fb2 = 1;
fz_parse_css(ctx, g.css, fb2_default_css, "<default:fb2>");
- fb2_load_css(ctx, g.zip, g.base_uri, g.css, xml);
+ if (fz_use_document_css(ctx))
+ fb2_load_css(ctx, g.zip, g.base_uri, g.css, xml);
g.images = load_fb2_images(ctx, xml);
}
else
{
g.is_fb2 = 0;
fz_parse_css(ctx, g.css, html_default_css, "<default:html>");
- html_load_css(ctx, g.zip, g.base_uri, g.css, xml);
+ if (fz_use_document_css(ctx))
+ html_load_css(ctx, g.zip, g.base_uri, g.css, xml);
g.images = NULL;
}