summaryrefslogtreecommitdiff
path: root/source/html
AgeCommit message (Collapse)Author
2015-03-24Rework handling of PDF names for speed and memory.Robin Watts
Currently, every PDF name is allocated in a pdf_obj structure, and comparisons are done using strcmp. Given that we can predict most of the PDF names we'll use in a given file, this seems wasteful. The pdf_obj type is opaque outside the pdf-object.c file, so we can abuse it slightly without anyone outside knowing. We collect a sorted list of names used in PDF (resources/pdf/names.txt), and we add a utility (namedump) that preprocesses this into 2 header files. The first (include/mupdf/pdf/pdf-names-table.h, included as part of include/mupdf/pdf/object.h), defines a set of "PDF_NAME_xxxx" entries. These are pdf_obj *'s that callers can use to mean "A PDF object that means literal name 'xxxx'" The second (source/pdf/pdf-name-impl.h) is a C array of names. We therefore update the code so that rather than passing "xxxx" to functions (such as pdf_dict_gets(...)) we now pass PDF_NAME_xxxx (to pdf_dict_get(...)). This is a fairly natural (if widespread) change. The pdf_dict_getp (and sibling) functions that take a path (e.g. "foo/bar/baz") are therefore supplemented with equivalents that take a list (pdf_dict_getl(... , PDF_NAME_foo, PDF_NAME_bar, PDF_NAME_baz, NULL)). The actual implementation of this relies on the fact that small pointer values are never valid values. For a given pdf_obj *p, if NULL < (intptr_t)p < PDF_NAME__LIMIT then p is a literal entry in the name table. This enables us to do fast pointer compares and to skip expensive strcmps. Also, bring "null", "true" and "false" into the same style as PDF names. Rather than using full pdf_obj structures for null/true/false, use special pointer values just above the PDF_NAME_ table. This saves memory and makes comparisons easier.
2015-03-24Don't pass interpreter context to pdf_processor opcode callbacks.Tor Andersson
Update buffer and filter processors. Filter both colors and stroke states. Move OCG hiding logic into interpreter.
2015-02-26Clean up some type casts.Tor Andersson
2015-02-24Update MSVC solution with html entries. Fix windows issues with html.Robin Watts
Add the new source files to the solution. Windows builds whinge about float->double conversions. Fix these with explicit casts. Avoid calling strtof and strcasecmp.
2015-02-23Merge branch 'html'Tor Andersson
Conflicts: Makefile
2014-12-03html: Make font-size keywords relative sized based on a 1.2 scaling factor.Tor Andersson
2014-12-03html: Clean up some naming.Tor Andersson
2014-12-03html: Fix parsing of @-rules in CSS.Tor Andersson
2014-12-03html: Allow +number in CSS syntax.Tor Andersson
2014-12-03html: Record line number and source file for CSS error messages.Tor Andersson
2014-12-03html: Free inline style properties at the end.Tor Andersson
2014-12-03html: Free css structures.Tor Andersson
2014-12-03html: Rename internal css structs.Tor Andersson
2014-12-03html: Rename style, box and flow structs.Tor Andersson
2014-12-03html: Remove useless fz_xml node field in box struct.Tor Andersson
2014-12-03html: Rename rule and style (match) structs.Tor Andersson
2014-12-03html: Fail with '[image]' placeholder on broken images.Tor Andersson
TODO: Support loading GIF.
2014-12-03html: Namespace prefix CSS functions.Tor Andersson
2014-12-03html: Rename files.Tor Andersson
2014-12-03html: Some cleaning.Tor Andersson
2014-12-03epub: Add EPUB document type.Tor Andersson
2014-12-03html: Clean up some names.Tor Andersson
2014-12-03html: Split html parsing cache and state into html_context.Tor Andersson
html_document is now a simple client of html_context.
2014-12-03html: Pass font size to html_layout_document.Tor Andersson
2014-12-03html: Limit image size to fit the page.Tor Andersson
2014-12-03html: Images.Tor Andersson
2014-12-03html: Vertical and baseline alignment.Tor Andersson
2014-12-03html: Cleanups.Tor Andersson
2014-12-03html: Border shorthand css parsing.Tor Andersson
2014-12-03html: Borders.Tor Andersson
2014-12-03html: Text and background colors.Tor Andersson
2014-12-03html: Insert block boxes for list-item nodes.Tor Andersson
TODO: bullets and numbers
2014-12-03html: Break tag.Tor Andersson
2014-12-03html: Handle text-align when splitting flow boxes.Tor Andersson
2014-12-03html: Pick a reasonable default page size.Tor Andersson
2014-12-03html: Don't create boxes for invisible elements.Tor Andersson
2014-12-03html: Fix line breaking bugs resulting in infinite loops.Tor Andersson
2014-12-03html: Fix adjacency selector matching.Tor Andersson
2014-12-03html: Insert space for page breaks so lines don't get split across pages.Tor Andersson
2014-12-03html: Only draw the boxes and lines if they're on the current page.Tor Andersson
2014-12-03html: Print log messages when starting the layout stages.Tor Andersson
2014-12-03html: Fix CSS parsing mixed-case selectors and comments.Tor Andersson
2014-12-03html: Text alignment.Tor Andersson
2014-12-03html: Parse external CSS files and basic pagination.Tor Andersson
Show a translated view of the continuous layout for each page.
2014-12-03html: Create value lists in the correct order.Tor Andersson
2014-12-03html: Line breaking and font styling.Tor Andersson
2014-12-03html: Fix bug in percentage from_number calculations.Tor Andersson
2014-12-03html: Collapse top/top and bottom/bottom margins.Tor Andersson
2014-12-03html: Collapse adjacent top/bottom margins.Tor Andersson
2014-12-03html: Draw text and shade padding boxes.Tor Andersson