summaryrefslogtreecommitdiff
path: root/source/html
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2017-04-24 12:42:50 +0200
committerTor Andersson <tor.andersson@artifex.com>2017-04-27 15:11:37 +0200
commit0d60d3a866f80f091fca68316bcb2c01aa416b96 (patch)
treedab9e1663a76cd79cb7f3d79f9558fea5b325456 /source/html
parent5030ba7ebf7b3706ac065deef750d647570525b3 (diff)
downloadmupdf-0d60d3a866f80f091fca68316bcb2c01aa416b96.tar.xz
Make HTML header private.
Diffstat (limited to 'source/html')
-rw-r--r--source/html/css-apply.c3
-rw-r--r--source/html/css-parse.c3
-rw-r--r--source/html/epub-doc.c3
-rw-r--r--source/html/html-doc.c3
-rw-r--r--source/html/html-font.c3
-rw-r--r--source/html/html-imp.h287
-rw-r--r--source/html/html-layout.c2
7 files changed, 298 insertions, 6 deletions
diff --git a/source/html/css-apply.c b/source/html/css-apply.c
index f3e28ddd..e1ad46ff 100644
--- a/source/html/css-apply.c
+++ b/source/html/css-apply.c
@@ -1,4 +1,5 @@
-#include "mupdf/html.h"
+#include "mupdf/fitz.h"
+#include "html-imp.h"
static const char *inherit_list[] = {
"color",
diff --git a/source/html/css-parse.c b/source/html/css-parse.c
index b5d436e8..d92e3d7b 100644
--- a/source/html/css-parse.c
+++ b/source/html/css-parse.c
@@ -1,4 +1,5 @@
-#include "mupdf/html.h"
+#include "mupdf/fitz.h"
+#include "html-imp.h"
struct lexbuf
{
diff --git a/source/html/epub-doc.c b/source/html/epub-doc.c
index c43ef8b1..495b397f 100644
--- a/source/html/epub-doc.c
+++ b/source/html/epub-doc.c
@@ -1,4 +1,5 @@
-#include "mupdf/html.h"
+#include "mupdf/fitz.h"
+#include "html-imp.h"
enum { T, R, B, L };
diff --git a/source/html/html-doc.c b/source/html/html-doc.c
index 1cf3dca5..825e3958 100644
--- a/source/html/html-doc.c
+++ b/source/html/html-doc.c
@@ -1,4 +1,5 @@
-#include "mupdf/html.h"
+#include "mupdf/fitz.h"
+#include "html-imp.h"
enum { T, R, B, L };
diff --git a/source/html/html-font.c b/source/html/html-font.c
index 48c04b73..640c8565 100644
--- a/source/html/html-font.c
+++ b/source/html/html-font.c
@@ -1,4 +1,5 @@
-#include "mupdf/html.h"
+#include "mupdf/fitz.h"
+#include "html-imp.h"
static fz_font *
fz_load_html_default_font(fz_context *ctx, fz_html_font_set *set, const char *family, int is_bold, int is_italic)
diff --git a/source/html/html-imp.h b/source/html/html-imp.h
new file mode 100644
index 00000000..1cf2c6eb
--- /dev/null
+++ b/source/html/html-imp.h
@@ -0,0 +1,287 @@
+#ifndef SOURCE_HTML_IMP_H
+#define SOURCE_HTML_IMP_H
+
+typedef struct fz_html_font_face_s fz_html_font_face;
+typedef struct fz_html_font_set_s fz_html_font_set;
+typedef struct fz_html_s fz_html;
+typedef struct fz_html_box_s fz_html_box;
+typedef struct fz_html_flow_s fz_html_flow;
+
+typedef struct fz_css_s fz_css;
+typedef struct fz_css_rule_s fz_css_rule;
+typedef struct fz_css_match_prop_s fz_css_match_prop;
+typedef struct fz_css_match_s fz_css_match;
+typedef struct fz_css_style_s fz_css_style;
+
+typedef struct fz_css_selector_s fz_css_selector;
+typedef struct fz_css_condition_s fz_css_condition;
+typedef struct fz_css_property_s fz_css_property;
+typedef struct fz_css_value_s fz_css_value;
+typedef struct fz_css_number_s fz_css_number;
+typedef struct fz_css_color_s fz_css_color;
+
+struct fz_html_font_face_s
+{
+ char *family;
+ int is_bold;
+ int is_italic;
+ fz_font *font;
+ char *src;
+ fz_html_font_face *next;
+};
+
+struct fz_html_font_set_s
+{
+ fz_font *fonts[12]; /* Times, Helvetica, Courier in R,I,B,BI */
+ fz_html_font_face *custom;
+};
+
+enum
+{
+ CSS_KEYWORD = 256,
+ CSS_HASH,
+ CSS_STRING,
+ CSS_NUMBER,
+ CSS_LENGTH,
+ CSS_PERCENT,
+ CSS_URI,
+};
+
+struct fz_css_s
+{
+ fz_pool *pool;
+ fz_css_rule *rule;
+};
+
+struct fz_css_rule_s
+{
+ fz_css_selector *selector;
+ fz_css_property *declaration;
+ fz_css_rule *next;
+};
+
+struct fz_css_selector_s
+{
+ char *name;
+ int combine;
+ fz_css_condition *cond;
+ fz_css_selector *left;
+ fz_css_selector *right;
+ fz_css_selector *next;
+};
+
+struct fz_css_condition_s
+{
+ int type;
+ char *key;
+ char *val;
+ fz_css_condition *next;
+};
+
+struct fz_css_property_s
+{
+ char *name;
+ fz_css_value *value;
+ short spec;
+ short important;
+ fz_css_property *next;
+};
+
+struct fz_css_value_s
+{
+ int type;
+ char *data;
+ fz_css_value *args; /* function arguments */
+ fz_css_value *next;
+};
+
+struct fz_css_match_prop_s
+{
+ const char *name; /* not owned */
+ fz_css_value *value; /* not owned */
+ int spec;
+};
+
+struct fz_css_match_s
+{
+ fz_css_match *up;
+ int count;
+ fz_css_match_prop prop[64];
+};
+
+enum { DIS_NONE, DIS_BLOCK, DIS_INLINE, DIS_LIST_ITEM, DIS_INLINE_BLOCK };
+enum { POS_STATIC, POS_RELATIVE, POS_ABSOLUTE, POS_FIXED };
+enum { TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY };
+enum { VA_BASELINE, VA_SUB, VA_SUPER, VA_TOP, VA_BOTTOM, VA_TEXT_TOP, VA_TEXT_BOTTOM };
+enum { BS_NONE, BS_SOLID };
+enum { V_VISIBLE, V_HIDDEN, V_COLLAPSE };
+enum { PB_AUTO, PB_ALWAYS, PB_AVOID, PB_LEFT, PB_RIGHT };
+
+enum {
+ WS_COLLAPSE = 1,
+ WS_ALLOW_BREAK_SPACE = 2,
+ WS_FORCE_BREAK_NEWLINE = 4,
+ WS_NORMAL = WS_COLLAPSE | WS_ALLOW_BREAK_SPACE,
+ WS_PRE = WS_FORCE_BREAK_NEWLINE,
+ WS_NOWRAP = WS_COLLAPSE,
+ WS_PRE_WRAP = WS_ALLOW_BREAK_SPACE | WS_FORCE_BREAK_NEWLINE,
+ WS_PRE_LINE = WS_COLLAPSE | WS_ALLOW_BREAK_SPACE | WS_FORCE_BREAK_NEWLINE
+};
+
+enum {
+ LST_NONE,
+ LST_DISC, LST_CIRCLE, LST_SQUARE,
+ LST_DECIMAL, LST_DECIMAL_ZERO,
+ LST_LC_ROMAN, LST_UC_ROMAN,
+ LST_LC_GREEK, LST_UC_GREEK,
+ LST_LC_LATIN, LST_UC_LATIN,
+ LST_LC_ALPHA, LST_UC_ALPHA,
+ LST_ARMENIAN, LST_GEORGIAN,
+};
+
+enum { N_NUMBER='u', N_LENGTH='p', N_SCALE='m', N_PERCENT='%', N_AUTO='a' };
+
+struct fz_css_number_s
+{
+ float value;
+ int unit;
+};
+
+struct fz_css_color_s
+{
+ unsigned char r, g, b, a;
+};
+
+struct fz_css_style_s
+{
+ fz_css_number font_size;
+ fz_css_number width, height;
+ fz_css_number margin[4];
+ fz_css_number padding[4];
+ fz_css_number border_width[4];
+ fz_css_number text_indent;
+ unsigned int visibility : 2;
+ unsigned int white_space : 3;
+ unsigned int text_align : 2;
+ unsigned int vertical_align : 3;
+ unsigned int list_style_type : 4;
+ unsigned int page_break_before : 3;
+ unsigned int page_break_after : 3;
+ unsigned int border_style_0 : 1;
+ unsigned int border_style_1 : 1;
+ unsigned int border_style_2 : 1;
+ unsigned int border_style_3 : 1;
+ fz_css_number line_height;
+ fz_css_color background_color;
+ fz_css_color border_color[4];
+ fz_css_color color;
+ fz_font *font;
+};
+
+enum
+{
+ BOX_BLOCK, /* block-level: contains block, break, and flow boxes */
+ BOX_BREAK, /* block-level: empty <br> tag boxes */
+ BOX_FLOW, /* block-level: contains only inline boxes */
+ BOX_INLINE, /* inline-level: contains only inline boxes */
+};
+
+struct fz_html_s
+{
+ fz_pool *pool; /* pool allocator for this html tree */
+ float page_w, page_h;
+ float page_margin[4];
+ fz_html_box *root;
+};
+
+struct fz_html_box_s
+{
+ unsigned int type : 2;
+ unsigned int is_first_flow : 1; /* for text-indent */
+ unsigned int markup_dir : 2;
+ unsigned int list_item : 27;
+ float x, y, w, h; /* content */
+ float padding[4];
+ float margin[4];
+ float border[4];
+ float em;
+ fz_html_box *up, *down, *last, *next;
+ fz_html_flow *flow_head, **flow_tail;
+ char *id, *href;
+ fz_css_style style;
+};
+
+enum
+{
+ FLOW_WORD = 0,
+ FLOW_SPACE = 1,
+ FLOW_BREAK = 2,
+ FLOW_IMAGE = 3,
+ FLOW_SBREAK = 4,
+ FLOW_SHYPHEN = 5,
+ FLOW_ANCHOR = 6
+};
+
+struct fz_html_flow_s
+{
+ /* What type of node */
+ unsigned int type : 3;
+
+ /* Whether this should expand during justification */
+ unsigned int expand : 1;
+
+ /* Whether this node is currently taken as a line break */
+ unsigned int breaks_line : 1;
+
+ /* Direction setting for text - UAX#9 says 125 is the max */
+ unsigned int bidi_level : 7;
+
+ /* The script detected by the bidi code. */
+ unsigned int script : 8;
+
+ /* Whether the markup specifies a given language. */
+ unsigned int markup_lang : 15;
+
+ float x, y, w, h;
+ fz_html_box *box; /* for style and em */
+ union {
+ char *text;
+ fz_image *image;
+ } content;
+ fz_html_flow *next;
+};
+
+fz_css *fz_new_css(fz_context *ctx);
+void fz_parse_css(fz_context *ctx, fz_css *css, const char *source, const char *file);
+fz_css_property *fz_parse_css_properties(fz_context *ctx, fz_pool *pool, const char *source);
+void fz_drop_css(fz_context *ctx, fz_css *css);
+
+void fz_match_css(fz_context *ctx, fz_css_match *match, fz_css *css, fz_xml *node);
+void fz_match_css_at_page(fz_context *ctx, fz_css_match *match, fz_css *css);
+
+int fz_get_css_match_display(fz_css_match *node);
+void fz_default_css_style(fz_context *ctx, fz_css_style *style);
+void fz_apply_css_style(fz_context *ctx, fz_html_font_set *set, fz_css_style *style, fz_css_match *match);
+
+float fz_from_css_number(fz_css_number, float em, float width);
+float fz_from_css_number_scale(fz_css_number number, float scale, float em, float width);
+
+fz_html_font_set *fz_new_html_font_set(fz_context *ctx);
+void fz_add_html_font_face(fz_context *ctx, fz_html_font_set *set,
+ const char *family, int is_bold, int is_italic, const char *src, fz_font *font);
+fz_font *fz_load_html_font(fz_context *ctx, fz_html_font_set *set, const char *family, int is_bold, int is_italic);
+void fz_drop_html_font_set(fz_context *ctx, fz_html_font_set *htx);
+
+void fz_add_css_font_faces(fz_context *ctx, fz_html_font_set *set, fz_archive *zip, const char *base_uri, fz_css *css);
+
+fz_html *fz_parse_html(fz_context *ctx, fz_html_font_set *htx, fz_archive *zip, const char *base_uri, fz_buffer *buf, const char *user_css);
+void fz_layout_html(fz_context *ctx, fz_html *html, float w, float h, float em);
+void fz_draw_html(fz_context *ctx, fz_device *dev, const fz_matrix *ctm, fz_html *html, int page);
+
+float fz_find_html_target(fz_context *ctx, fz_html *html, const char *id);
+fz_link *fz_load_html_links(fz_context *ctx, fz_html *html, int page, const char *base_uri, void *doc);
+void fz_drop_html(fz_context *ctx, fz_html *html);
+fz_bookmark fz_make_html_bookmark(fz_context *ctx, fz_html *html, int page);
+int fz_lookup_html_bookmark(fz_context *ctx, fz_html *html, fz_bookmark mark);
+
+#endif
diff --git a/source/html/html-layout.c b/source/html/html-layout.c
index 15d52c1b..ac64a890 100644
--- a/source/html/html-layout.c
+++ b/source/html/html-layout.c
@@ -1,7 +1,7 @@
#include "mupdf/fitz.h"
#include "mupdf/ucdn.h"
#include "mupdf/svg.h"
-#include "mupdf/html.h"
+#include "html-imp.h"
#include "hb.h"
#include "hb-ft.h"