Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-03-24 | Rework 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-24 | Don'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-26 | Clean up some type casts. | Tor Andersson | |
2015-02-24 | Update 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-23 | Merge branch 'html' | Tor Andersson | |
Conflicts: Makefile | |||
2014-12-03 | html: Make font-size keywords relative sized based on a 1.2 scaling factor. | Tor Andersson | |
2014-12-03 | html: Clean up some naming. | Tor Andersson | |
2014-12-03 | html: Fix parsing of @-rules in CSS. | Tor Andersson | |
2014-12-03 | html: Allow +number in CSS syntax. | Tor Andersson | |
2014-12-03 | html: Record line number and source file for CSS error messages. | Tor Andersson | |
2014-12-03 | html: Free inline style properties at the end. | Tor Andersson | |
2014-12-03 | html: Free css structures. | Tor Andersson | |
2014-12-03 | html: Rename internal css structs. | Tor Andersson | |
2014-12-03 | html: Rename style, box and flow structs. | Tor Andersson | |
2014-12-03 | html: Remove useless fz_xml node field in box struct. | Tor Andersson | |
2014-12-03 | html: Rename rule and style (match) structs. | Tor Andersson | |
2014-12-03 | html: Fail with '[image]' placeholder on broken images. | Tor Andersson | |
TODO: Support loading GIF. | |||
2014-12-03 | html: Namespace prefix CSS functions. | Tor Andersson | |
2014-12-03 | html: Rename files. | Tor Andersson | |
2014-12-03 | html: Some cleaning. | Tor Andersson | |
2014-12-03 | epub: Add EPUB document type. | Tor Andersson | |
2014-12-03 | html: Clean up some names. | Tor Andersson | |
2014-12-03 | html: Split html parsing cache and state into html_context. | Tor Andersson | |
html_document is now a simple client of html_context. | |||
2014-12-03 | html: Pass font size to html_layout_document. | Tor Andersson | |
2014-12-03 | html: Limit image size to fit the page. | Tor Andersson | |
2014-12-03 | html: Images. | Tor Andersson | |
2014-12-03 | html: Vertical and baseline alignment. | Tor Andersson | |
2014-12-03 | html: Cleanups. | Tor Andersson | |
2014-12-03 | html: Border shorthand css parsing. | Tor Andersson | |
2014-12-03 | html: Borders. | Tor Andersson | |
2014-12-03 | html: Text and background colors. | Tor Andersson | |
2014-12-03 | html: Insert block boxes for list-item nodes. | Tor Andersson | |
TODO: bullets and numbers | |||
2014-12-03 | html: Break tag. | Tor Andersson | |
2014-12-03 | html: Handle text-align when splitting flow boxes. | Tor Andersson | |
2014-12-03 | html: Pick a reasonable default page size. | Tor Andersson | |
2014-12-03 | html: Don't create boxes for invisible elements. | Tor Andersson | |
2014-12-03 | html: Fix line breaking bugs resulting in infinite loops. | Tor Andersson | |
2014-12-03 | html: Fix adjacency selector matching. | Tor Andersson | |
2014-12-03 | html: Insert space for page breaks so lines don't get split across pages. | Tor Andersson | |
2014-12-03 | html: Only draw the boxes and lines if they're on the current page. | Tor Andersson | |
2014-12-03 | html: Print log messages when starting the layout stages. | Tor Andersson | |
2014-12-03 | html: Fix CSS parsing mixed-case selectors and comments. | Tor Andersson | |
2014-12-03 | html: Text alignment. | Tor Andersson | |
2014-12-03 | html: Parse external CSS files and basic pagination. | Tor Andersson | |
Show a translated view of the continuous layout for each page. | |||
2014-12-03 | html: Create value lists in the correct order. | Tor Andersson | |
2014-12-03 | html: Line breaking and font styling. | Tor Andersson | |
2014-12-03 | html: Fix bug in percentage from_number calculations. | Tor Andersson | |
2014-12-03 | html: Collapse top/top and bottom/bottom margins. | Tor Andersson | |
2014-12-03 | html: Collapse adjacent top/bottom margins. | Tor Andersson | |
2014-12-03 | html: Draw text and shade padding boxes. | Tor Andersson | |