Age | Commit message (Collapse) | Author |
|
Check flow is not NULL before dereferencing it. Everything else
in this area of the code copes with it being NULL.
|
|
They are skipped during layout, so should also be skipped here.
Fixes bug 695943.
|
|
Fixes bug 695994 where multiple child selectors would not match properly.
The "a > b > c" rule should be interpreted as ((a > b) > c) in order
to match properly.
|
|
Add -U option to mupdf and mudraw to set a user stylesheet.
Uses a context to store user the stylesheet, just like the AA level.
|
|
|
|
|
|
|
|
|
|
Ignore inheritance on font-size properties altogether. Since we already
inherit the font-size during the 'em' calculations when laying out text,
inheriting the font-size property textually will result in doubling
the effect of any scaling.
|
|
|
|
|
|
|
|
|
|
Add 'break' nodes to flow list for forced line breaks.
|
|
|
|
|
|
Deal with it.
|
|
|
|
|
|
The selectors ".foo.bar" and ".foo .bar" are not equivalent!
They should parse as "*.foo.bar" and "*.foo *.bar" but we parsed
both as "*.foo.bar" due to us ignoring significant whitespace.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The border_style field was changed from an enum to an array of enums,
but one place where it was used was not updated.
|
|
We don't support tables yet, so this is a stop gap measure.
|
|
|
|
|
|
|
|
|
|
|
|
The find_accumulated_margins function should be a void return type.
|
|
|
|
This solves the issue with slivers of images appearing in the margin
at the bottom of the previous page.
|
|
Try to recover from syntax errors in CSS rules by skipping to the
end of the declaration block.
Don't abort HTML parsing on CSS errors.
|
|
|
|
|
|
Fix bug 695922.
|
|
Variables need to be defined at the top of blocks.
|
|
Add margins of 1 em at the top and bottom of every page at the top level.
TODO: This should be set from the CSS using the @page selector, and be
collapsed with the body margins at the start and end of each chapter, as well
as the left and right body margins.
|
|
Trigger the default layout when needed, but only if no manual layout has
been done. This avoids doing a pointless double layout (once with default
when loading the document, then with the manual layout call with the
desired layout options).
|
|
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.
|