summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2015-02-26Clean up some type casts.Tor Andersson
2015-02-26tweak pdf_parse_file_specRobin Watts
pdf_parse_file_spec sometimes extracts the wrong path from a FileSpec: E.g. the /DOS path should never be returned under Unix systems, neither should be the old /Mac paths. For consistency, this patch also converts filesystem paths under Windows into a format applications will expect (e.g. from "/C/path/..." to "C:\path\..."). Finally, pdf_parse_file_spec is exposed to callers (SumatraPDF requires that for manually processing FZ_ANNOT_FILEATTACHMENT and embedded files).
2015-02-25Allow pdf_device to be created with pre-populated buffer.Robin Watts
When watermarking, we may want to use the PDF device on an existing buffer. In this case, we have no 'contents' object.
2015-02-25Add post processing option to page operator cleaning.Robin Watts
In order to be able to watermark etc, we want the ability to add more operators/resources after page cleaning. Add a post processing hook to enable this to be done more easily.
2015-02-25Bug 695851: Fix SEGV in mutool info.Robin Watts
Add missing initialisation of glo.ctx required due to API change.
2015-02-25Add 64 bit windows builds to MSVC solution.Robin Watts
A few casts are required within the code, along with a few #ifdef changes. Some tweaks to curl are required too.
2015-02-25filter-fax.c: remove cf_uncompressed_decode, it's never usedJoseph Heenan
2015-02-25Avoid fz_begin_tile_id ever returning an undefined value.Robin Watts
Silly oversight.
2015-02-25Text device; collect matrix and bbox for images too.Robin Watts
We were not filling in the matrix and bbox fields for images collected as part of the text extraction device. Fixed here.
2015-02-24Update display list tile skipping.Robin Watts
When we meet cached tiles when rendering the display list, we need to skip over their contents. Previously we did this by skipping display list nodes in their entirety. With the new display list scheme however, we cannot simply skip nodes completely as the graphic state changes must be remembered. We therefore update the list playback routine to keep track of the clip depth and to skip the function calls as required.
2015-02-24Fix incorrect object culling in display list.Robin Watts
I was testing an untransformed rectangle. This was not being picked up as our cluster tests use the identity matrix.
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-24Bug 695843: Tweak bboxes of type3 fonts; honour the d1 values.Robin Watts
The example file for this bug has an invalid font bbox. The current code uses this bbox (or some multiple of it) to clip the glyphs size. In the new code, when we convert the glyphs to display lists we watch for the bbox given in any d1 operator used. If we find one, we gather the rectangle specified and store it as the glyph rectangle in the fz_font. If we then attempt to bound a glyph that used d1, it happens instantly without needing to run the list. This seems to match acrobats behaviour. Tests indicate that Acrobat never clips d0 glyphs, so our behaviour is still different here, but I am not changing this at the moment. Also, I note that t3flags should be a un unsigned short but are currently just a char. Fix that too. Also fix some missing code in fz_new_font that would cause leaks if mallocs failed.
2015-02-24Simplify/Correct logic in pdf_show_charRobin Watts
Move the logic in pdf_show_char to use the same idiom as used elsewhere. Specifically this ensures that empty rects are handled correctly.
2015-02-24fz_irect_from_rect; don't make a non empty irect from an empty rect.Robin Watts
This avoids up problems with a forthcoming commit.
2015-02-24Squash some warnings from scan build.Robin Watts
2015-02-23Merge branch 'html'Tor Andersson
Conflicts: Makefile
2015-02-23Update pdf-js-none for context passing changes.Tor Andersson
2015-02-23Fix double-malloc error.Tor Andersson
2015-02-20Add fz_trim_path and call it.Robin Watts
Whenever we fz_keep a path, it's an indication that we're going to be keeping the path around for a while (anod not changing it any more). We therefore take the opportunity to trim the path buffers down.
2015-02-20Rejig display device to have a more compact memory representation.Robin Watts
Rather than a linked list of display nodes, we use solid block of serialised data. We send a 32bit word, which contains various bitfields. These bitfields indicate the command type, and the presence or absence of various fields (such as paths, colorspaces, colors etc). If these fields are not present, they are held to be the same as the previous values.
2015-02-20Do not crash on text extraction on pages with no text.Robin Watts
Thanks to malc for pointing out the problem.
2015-02-18Fix typos and reference counting errors in CBZ.Tor Andersson
2015-02-18Fix 695831: integer overflow in PNG and TIFF loaders.Tor Andersson
2015-02-17Fix memory leak in fz_page.Tor Andersson
2015-02-17Use embedded superclass struct instead of user pointer in devices.Tor Andersson
2015-02-17Add helper functions to keep/drop reference counts with locking.Tor Andersson
Add locks around fz_path and fz_text reference counting.
2015-02-17Remove pointless return value checks when calling fz_open_file.Tor Andersson
fz_open_file does not return NULL on failure -- it throws an exception!
2015-02-17Add ctx parameter and remove embedded contexts for API regularity.Tor Andersson
Purge several embedded contexts: Remove embedded context in fz_output. Remove embedded context in fz_stream. Remove embedded context in fz_device. Remove fz_rebind_stream (since it is no longer necessary). Remove embedded context in svg_device. Remove embedded context in XML parser. Add ctx argument to fz_document functions. Remove embedded context in fz_document. Remove embedded context in pdf_document. Remove embedded context in pdf_obj. Make fz_page independent of fz_document in the interface. We shouldn't need to pass the document to all functions handling a page. If a page is tied to the source document, it's redundant; otherwise it's just pointless. Fix reference counting oddity in fz_new_image_from_pixmap.
2015-02-17Rename fz_close_* and fz_free_* to fz_drop_*.Tor Andersson
Rename fz_close to fz_drop_stream. Rename fz_close_archive to fz_drop_archive. Rename fz_close_output to fz_drop_output. Rename fz_free_* to fz_drop_*. Rename pdf_free_* to pdf_drop_*. Rename xps_free_* to xps_drop_*.
2015-02-17Reference count fz_document.Tor Andersson
2015-02-17Reference count fz_path and fz_text.Tor Andersson
Disallow modification of shared fz_path and fz_text objects. They should follow a create once, consume often pattern, and as such should be immutable once created.
2015-02-10Add some Memento_labels to aid debugging of leaks.Robin Watts
2015-02-10Attempting to render a JPEG with xres and yres set to 1 fails.Robin Watts
We end up trying to scale the JPEG up 72 times and fail a malloc. A better plan is to make the image handler disbelieve any xres or yres values less than 72dpi. We take care to still preserve aspect ratios etc.
2015-02-03Update URW fonts.Tor Andersson
Add the new URW base fonts that include greek and cyrillic scripts. These new fonts remove the need for DroidSans as a generic fallback font.
2015-01-21Fix rebase/merge error in previous commit.Tor Andersson
2015-01-21Update MuJS.Tor Andersson
2015-01-20don't omit patterns with huge xstep/ystep valuesSimon Bünzli
If a pattern is expected to be rendered exactly once and its relevant part covers the target area, the xstep and ystep values may be far larger than the pattern's relevant content. Due to rounding applied in pdf_show_pattern, such patterns have been omitted so far. This issue is exposed e.g. by the document linked from http://forums.fofou.org/sumatrapdf/topic?id=3184639 .
2015-01-20don't decode '8' and '9' as octal digitsSimon Bünzli
At https://github.com/sumatrapdfreader/sumatrapdf/issues/66 there's a document which contains a string (\358) which is parsed as (\360) with the 8 overflowing instead of as (\0358) with the 8 being the first character after the octal escape. This patch restricts octal digits to '0' to '7' to fix that issue.
2015-01-20remove some lonely tabs and move some braces onto their own linesSimon Bünzli
2015-01-20fix crash caused by commit 90c560641d9b459a658029eefc4cbb02fdbca0b5Simon Bünzli
When loading e.g. the file from bug 694567, MuPDF uses an unitialized variable because pdf_document::xref_index contains values relative to the document's original multi-part xref while the actual xref is the repaired single-part one (and thus the cached value is too large). Properly resetting the xref_index before starting reparation fixes this crash.
2015-01-20fix memory leak introduced with commit 90c560641d9b459a658029eefc4cbb02fdbca0b5Simon Bünzli
2015-01-20Bug 695770: fix TODO in commit d7c0c0856b31be17823ae4745b2c542a9c71765fSimon Bünzli
pdf_xref_find_subsection does indeed solidify the wrong xref section: it should operate only on the oldest xref and not overwrite the most recent one with older entries.
2015-01-20don't try extracting object number 0Simon Bünzli
pdfextract_main by default iterates through all objects from number 0 to the size of the document's xref table. Object number 0 is however always supposed to be free, so pdfextract consistently fails and shows a slightly confusing warning. Object extraction should by default start at object 1 in order to prevent this warning.
2015-01-06Add xref_index to speed searching of sparse xrefs.Robin Watts
Add a new index that quickly maps object number to the first xref in which an object appears. This appears to get us the speed back that we lost when moving to sparse xrefs.
2015-01-05Another PDF Xref speedup from Malc.Robin Watts
Following the recent change to hold pdf xrefs in their native 'sparse' representation, searching the xref takes longer. Malc has investigated this slowdown and found that it can be largely avoided by not searching the xref lists first. A modified version of his first patch has gone in already (getting us from 10x slower to just 5x slower). This commit is a modified version of a second patch from him. Again it works by avoiding searching the xref list twice. The original version of this patch 1) appears broken to me, as it could return the wrong xref entry when object streams have more than one object in them, and 2) supposedly gets the speed back to the original 'pre-sparse change' speed. I have updated the patch to fix 1), and I hope this should not affect 2). I am slightly suspicious that removing a search can get us a 5x speed increase, but certainly this is an improvemnet. There is scope for us further reducing the search times, by us using a new table to map object number -> xref number, but unless we find a case where we are noticably slower than before, I think we can ignore this.
2014-12-29Remove unnecessary test.Robin Watts
We know i >= 0 as we've already thrown if i < 0 earlier. Credit to Malc for spotting this.
2014-12-29Performance optimisation with pdf_cache_object/pdf_get_xref_entryRobin Watts
The recent change to holding pdf xrefs in a sparse format has resulted in a significant decrease in speed (x10). Malc points out that some of this (2x) can be recovered simply by making pdf_cache_object return the entry which it found the object in. This saves us having to immediately call pdf_get_xref_entry again afterwards. I am still thinking about ways to try and get the remaining time back.
2014-12-29Fix windows build failure.Robin Watts
C89 code is preferable to gcc code; define variables at the start of blocks.
2014-12-18Bug 695746: make LZW decoder slightly more tolerantSimon Bünzli
Ghostscript's LZW decoder accepts invalid LZW code 4096 if it's immediately followed by LZW clear code 256 for handling files produced by certain broken encoders and other common PDF readers seem to have similar error handling. This patch makes MuPDF tolerate such broken files as well.