summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2014-09-02Add locale-independent number formatting and parsing functions.Tor Andersson
2014-09-02Clean some whitespace.Tor Andersson
2014-09-01Performance improvement for test-device.Robin Watts
When we detect that a page is color, set the ignore image hint to avoid us loading future images. The overhead on loading images is not generally huge, except for JPEG2000 ones, which currently require decoding at load time. This therefore saves lots of time for such files. Also, a tiny tweak to ignore page components with 0 alpha.
2014-08-27Revise test-device; thresholding and exhaustive checking.Tor Andersson
The original version of the test-device could characterise pages as being grayscale/color purely based on the colorspaces used. This could easily be upset by grayscale images or shadings that happened to be specified in non-grayscale colorspaces however. We now look at the actual shading and image color values, and use a threshold value to allow for some measure of rounding errors in color values that are in practice grayscale.
2014-08-27Allow NULL callback functions in the mesh processor.Tor Andersson
Let either or both of the 'prepare' and 'process' callbacks be no-ops.
2014-08-27cbz: Use csize and usize fields from central directory.Tor Andersson
Don't rely on the csize and usize fileds being set in the individual entry headers.
2014-08-20Add full-page color tinting option and key binding to X11 viewer.Tor Andersson
win32 supports tinting, but cannot change the color from the default.
2014-08-19Only include jmemcust.h when building our own libjpeg.Tor Andersson
2014-08-19don't always write to Visual Studio's Output console in debug buildsSimon Bünzli
We build MuPDF without NDEBUG defined in order to check assertions but don't want Visual Studio's Output console flooded with warnings for broken documents. So instead of always defining USE_OUTPUT_DEBUG_STRING for debug builds under Windows, allow the VS solutions to define it when desired and to omit it when not.
2014-08-19don't render non-empty dashing with zero-length phaseSimon Bünzli
Adobe Reader and Microsoft XPS viewer differ in their handling of non-empty dashed strokes where the phase is 0: Adobe Reader considers these to be faulty and omits them while Microsoft XPS Viewer renders them the same as an empty dash (i.e. solid). This patch makes Fitz no longer render such strokes and ensures that MuXPS never emits them so that the desired behavior results (this is the easier implementation since XPS rendering code renders stroked paths in a single location whereas PDF rendering does it all over the place). See https://code.google.com/p/sumatrapdf/issues/detail?id=2339 for a testcase.
2014-08-19try not to wrongly overwrite /ID when repairing encrypted documentsSimon Bünzli
If garbage is appended to an encrypted document, there could be another trailer with /ID but without /Encrypt . The repairing code currently always uses the last encountered values, but replacing the /ID value alone can cause decryption to break. One possible solution is to use the /ID value only when there's either none yet, when there's no /Encrypt or when there's a matching /Encrypt in the same trailer. See https://code.google.com/p/sumatrapdf/issues/detail?id=2697 for a document which Adobe Reader is able to read but MuPDF isn't (it used to before pdf_lex_no_string was introduced, but that's accidental).
2014-08-19prevent buffer overflow and memory leak in xps-glyphs.cSimon Bünzli
xps_deobfuscate_font_resource assumes that a font has at least 32 bytes of data required for deobfuscation. If a broken font has less data, the buffer overflows. Also, the data buffer is leaked when fz_new_font_from_buffer throws.
2014-08-12Fix 695411: Catch errors when loading objects in mutool extract.Tor Andersson
2014-08-12Change error messages in mutool extract to follow the house style.Tor Andersson
2014-08-11Fix commit: Minor optimization in test_device.Tor Andersson
Invert the boolean test to mean what is actually intended. Fixes bug 695419.
2014-07-24cbz: Only include each entry once, even if it matches many file suffixes.Tor Andersson
Bug 695377.
2014-07-22Change js_is/touserdata argument order to match MuJS changes.Tor Andersson
2014-07-18fix off-by-one error in fz_unblend_masked_tileSimon Bünzli
fz_image::n is used inconsistently: Sometimes it includes the alpha channel and sometimes it doesn't. At the point where fz_unblend_masked_tile is called, it doesn't.
2014-07-18fix potential memory leak in load-jpx.cSimon Bünzli
2014-07-18allow 1-bit colormaps for TIFF imagesSimon Bünzli
The TIFF specification seems to only allow for 4-bit and 8-bit colormaps. However at least Microsoft's XPS viewer also accepts 1-bit colormaps and our current code handles this case already anyway. See https://code.google.com/p/sumatrapdf/issues/detail?id=2562 for a sample document.
2014-07-18allow to extract text for uncacheable glyphsSimon Bünzli
Certain glyphs such as found in nested Type 3 font can't be cached. Currently, the text extraction device doesn't see these as they're sent only as drawing operations. Sending them also as invisible text fixes potentially missing letters.
2014-07-18report more cases of blending use for pdf_pageSimon Bünzli
pdf_page::transparency is supposed to indicate whether a page uses PDF transparency features. The checks aren't complete, though, which is relevant for devices which require additional handling for transparency (such as SumatraPDF's gdiplus_device). See https://code.google.com/p/sumatrapdf/issues/detail?id=2107 and https://code.google.com/p/sumatrapdf/issues/detail?id=2540 for example documents.
2014-07-18properly decrypt strings in encrypted but broken documentsSimon Bünzli
If a PDF document is encrypted but broken, repairing caches all strings in encrypted form. Clearing the xref after repairing ensures that strings are returned to API callers as expected. Cf. https://code.google.com/p/sumatrapdf/issues/detail?id=2610
2014-07-18fix ZIP64 support in xps-zip.cSimon Bünzli
Per the ZIP specification, ZIP64 values are only used if the original value was -1 (i.e. 0xFFFF for 16-bit and 0xFFFFFFFF for 32-bit values). Microsoft's XPS viewer behaves according to specification and so should MuXPS.
2014-07-18hex-encode UTF-16 strings when writing PDFSimon Bünzli
fmt_obj calculates whether a string is better hex-encoded or written using escapes. Due to a bug, '\0' is considered to be escapable same as '\n' when instead it would have to be written as '\000'. Since UTF-16 strings tend to consist of many '\0' bytes, their octal encoded form is much longer than their hex encoded form. The issue is that the first argument to strchr contains an unintended trailing '\0' which has to be special-cased first.
2014-07-18Bug 695271: fix incremental updates for files without final linebreakSimon Bünzli
PDF documents aren't required to end in a linebreak. Objects however must start on their own line (in particular for broken documents relying on reparation). For this reason, a linebreak must be inserted before starting an incremental update.
2014-07-18prevent buffer overflow in cbz_strnatcmpSimon Bünzli
If the two arguments to cbz_strnatcmp are equal (except for leading zeros), cbz_strnatcmp reads beyond the buffer until it finds differing bytes or enters a non-readable memory page. TODO: Should sorting "test01" and "test1" lead to a stable sort order?
2014-07-17Minor optimization in test_device.Ray Johnston
Don't convert and compare color if we already know the page has color.
2014-07-17Add feature testing device, and call it from mudraw with -T flag.Tor Andersson
Currently only tests for the presence of non-grayscale color.
2014-07-17Improve callback for loading substitute CJK fonts to return TTC index.Tor Andersson
2014-07-07cbz: Use natural string comparison to sort file names.Tor Andersson
Sort case insensitively in this order: page-1.jpg page-2.jpg page-10.jpg
2014-07-02Handle the application/xps mimetype.Matt Holgate
I think this is non-standard, but some applications seem to use it. The email app on Android uses it, despite the fact the original email actually embedded it as application/octet-stream. I guess the email app is looking at the filename.
2014-07-01Remove some trailing space.Matt Holgate
2014-06-30Fix coding style issues and remove C99 mid-block declaration.Matt Holgate
2014-06-26Partially revert "Add missing fz_var() and fix potential memory leak."Matt Holgate
(Revert the fix for potential memory leak - there wasn't a potential memory leak as the device only takes ownership of it's display list if dev->free_user is set). This reverts commit ada560eb015e7b2208c492d47f28da8093733c4a.
2014-06-26Add missing fz_var() and fix potential memory leak.Matt Holgate
2014-06-19Fix compiler warning.Matt Holgate
2014-06-18Fix for bug #694405 - iOS Pdf CrashMatt Holgate
If an iOS app uses too much memory, the OS asks it to free up some space. If it doesn't do so in a timely manner, it will get a second warning before being killed by the OS. In other platforms, where malloc() return NULL in OOM, the store scavenger releases memory when mallocs fail. In iOS, mallocs usually never return NULL because the app is killed before this can happen. Therefore, we need to initiate a scavenge from the low memory notification instead. We evict the store to 50% of its current size when a memory warning occurs when it is in the foreground, and 0% when a memory warning occurs whilst it is in the background. Having said this, I didn't manage to get a background warning to occur, presumably because we don't request background execution Therefore, I think in practice the OS just kills the process. However, this will be useful if we ever add background execution.
2014-06-16Fix a fatal compiler warning when building with the latest version of the ↵Matt Holgate
Android NDK (security issue because a variable is used as a format string with no parameters).
2014-06-10Fix library/header version error message and makefile dependency.Tor Andersson
2014-06-09Bug 695300: Sanitize draw-device stack handling in error cases.Robin Watts
When throwing an error during fz_alpha_from_gray, the stack depth can get confused. Fix this by moving some more code into the appropriate fz_try(). In the course of fixing this bug, I added some new optional debug code to display the stack level as it runs. This is committed here disabled; just change the appropriate #define in draw-device.c to enable it. Also, add some code to run_xobject, to avoid throwing in an fz_always() clause.
2014-06-09Fix 695300: don't throw exception on invalid reference number.Tor Andersson
Return the null object rather than throwing an exception when parsing indirect object references with negative object numbers. Do range check for object numbers (1 .. length) when object numbers are used instead. Object number 0 is not a valid object number. It must always be 'free'.
2014-05-29Fix 694093: add vertical variant of CJK fallback font.Tor Andersson
Replace the DroidSansFallback TTF files with a TTC that has two fonts: The original and a copy where the OpenType 'vert' substitution lookup has been pre-applied by copying the uniXXXX.vert glyph data to uniXXXX.
2014-05-29fix memory leaks during PDF document creationSimon Bünzli
pdf_create_document leaks the trailer and in pdf-device.c many objects are inserted into dictionaries using pdf_dict_puts and leaked instead of using pdf_dict_puts_drop.
2014-05-29Tolerate zero-sized xref sections...Tor Andersson
...like the one Microsoft Word generates.
2014-05-28Further fix for Bug 695260: Cope with out of memory in fz_draw_end_maskRobin Watts
If we hit an out of memory error in fz_draw_end_mask, then pop the stack, and rethrow. Ensure that the generic device code catches this error and sets the error_depth to 1 so that the final pop is ignored.
2014-05-27Fix 693517: Support /SMask/Matte preblended images.Tor Andersson
2014-05-27Bug 695260: Fix error handling in do_xobjectRobin Watts
Various functions (such as fz_begin_group) handle errors internally by use of the error_depth parameter. This means that if we call them, we MUST ensure that we call the appropriate closing function. Similarly, if we don't call them, we should NOT call the closing function. In order to ensure we do this correctly, we introduce a cleanup_state variable that says which ones we tried to call. This cures the original bug.
2014-05-26Fix 695261: separate TM and CTM in outline extraction and stroking steps.Tor Andersson
We used to extract the outline using the combined TM*CTM matrix and use the identity transform for stroking, thus ending up with the wrong line width. If we instead extract using the TM and then stroke with the CTM we get the correct results.
2014-05-23Fix 695041: add special fast case for 8bpp TIFF predictor.Tor Andersson