Age | Commit message (Collapse) | Author |
|
Some new files hadn't been added to the solution, and we were
calling strcasecmp instead of fz_strcasecmp.
|
|
|
|
It's a lot of extra typing to prefix everything with "mupdf.".
|
|
|
|
|
|
|
|
|
|
Resources are defined before they are used; so it's only logical to
have the resource dictionary before the content buffer in the argument
list.
|
|
|
|
|
|
|
|
|
|
Only supports CBZ writing for now.
Also add a zip file writer.
|
|
|
|
No images.
The default stylesheet is preliminary, and will need improvements.
|
|
|
|
fz_read_int32_be.
|
|
Does not support page-break-before/after: avoid.
|
|
|
|
|
|
|
|
svg: Implement graphics state stack.
svg: Use idmap for symbol and use elements.
svg: Put viewport and viewBox in state stack.
svg: Rebase to version 1.9 master.
|
|
Previously, we would refuse to store any object in the store that
was larger than the store limits. We'd also refuse to store any
object that took the total store size over the limit.
This was wrong.
Consider the case where we have a store of 1 byte, and a page that
repeatedly uses the same font. The first time we meet the font, we
look in the store, it isn't there, we load it, and we try to store
it. The current code refuses to store it, and we continue, putting
that font into the display list.
The next time we meet to the font, we look in the store, it still
isn't there, we load it, and we try to store it. Again we refuse to
store it, and that copy of the font goes into the display list.
The net effect of this is that we end up using far more memory in
total than we would have done had we stored the first one.
The code here, therefore, changes the store to always store objects
regardless of their size. Given that we have already loaded the
objects into memory before we store them, this doesn't actually
cost us any extra memory. If an object is dropped (bringing the
reference count down to 1, being the reference for the stores copy),
then the object is NOT freed instantly, but will be freed either
on the next attempt to store an object, or on the next scavenging
malloc.
|
|
|
|
Fixes http://bugs.ghostscript.com/show_bug.cgi?id=696687
|
|
|
|
|
|
|
|
Also remove comment with links used for reference during implementation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The original app icon is in docs/logo/mupdf-simplified-logo.png
mutool draw -o Icon-120.png -w 120 mupdf-simplified-logo.png
mutool draw -o Icon-167.png -w 167 mupdf-simplified-logo.png
mutool draw -o Icon-72.png -w 72 mupdf-simplified-logo.png
mutool draw -o Icon-72@2x.png -w 144 mupdf-simplified-logo.png
mutool draw -o Icon-76.png -w 76 mupdf-simplified-logo.png
mutool draw -o Icon-76@2x.png -w 152 mupdf-simplified-logo.png
mutool draw -o Icon.png -w 57 mupdf-simplified-logo.png
mutool draw -o Icon@2x.png -w 114 mupdf-simplified-logo.png
|
|
markup_dir being a signed 2-bit int meant that it could not
represent FZ_BIDI_NEUTRAL without overflow; so we always ended
up creating a new text span for each glyph with that directionality.
|
|
shown.
|
|
|
|
This commit adds a page merging tool. The tool demonstrates the
use of object grafting. The object grafting function recursively
goes through the object to add all referenced objects. A map is
maintained to ensure that objects that have already been copied are
not copied again.
|
|
The DP and BDC operators, are used in the form:
<NAME> <PROPERTIES> <OPERATOR>
where <PROPERTIES> can either be a name (that can be looked
up to get a dictionary) or an inline dictionary.
What the spec doesn't say is that the two are not
interchangeable. If you resolve the name to an inline
dict, then insert it, Acrobat will give an error for
some (but not all) cases.
The interpreter currently resolves any references, and
passes the resolved version into the operator handling
function. This precludes us outputting the original
form.
We therefore update it to pass both the raw and the cooked
versions in. This has no effect on MuPDFs own handling of
anything, it just enables the buffer device to output
a correct stream.
|
|
When sanitizing a file, while cleaning with decompression, I was
seeing a flate problem reported.
The issue is that pdf_open_filter was passing pdf_open_raw_filter
the orig_num as both num and orig_num. This was causing us to
find an fz_buffer attached to the (wrong) xref entry and to open
that instead of the underlying stream.
The fix is to propogate num a bit further.
|
|
Use pdf_dict_put_drop rather than pdf_dict_put to avoid leaking
int pdf_obj.
|
|
|
|
Remove some bonkers conditions arising (presumably) as a
result of search and replace.
|
|
Android viewer project.
|
|
|
|
Caused by a mismatch in the annotation creation/loading code.
|
|
If we rewrite a page content stream, and then drop that entire page
we shouldn't leak the buffer.
Or to put it another way, when we change the obj for an xref entry,
ditch the cached stm_buf.
|
|
Update description to cover the fact that we no longer need
cygwin, and to strongly suggest using the Android Studio
supplied SDK/NDKs.
|