summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2016-04-28Refactor fz_image code cases.Robin Watts
Split compressed images (images based on a compressed buffer) and pixmap images (images based on a pixmap) out into separate subclasses.
2016-04-28Tweak fz_image in preparation for things to come.Robin Watts
Move from ints to bits where possible.
2016-04-28Introduce tuning context.Robin Watts
For now, just use it for controlling image decoding and image scaling.
2016-04-28Partial image decode.Robin Watts
Update the core fz_get_pixmap_from_image code to allow fetching a subarea of a pixmap. We pass in the required subarea, together with the transformation matrix for the whole image. On return, we have a pixmap at least as big as was requested, and the transformation matrix is updated to map the supplied area to the correct place on the screen. The draw device is updated to use this as required. Everywhere else passes NULLs in, and so gets unchanged behaviour. The standard 'get_pixmap' function has been updated to decode just the required areas of the bitmaps. This means that banded rendering of pages will decode just the image subareas that are required for each band, limiting the memory use. The downside to this is that each band will redecode the image again to extract just the section we want. The image subareas are put into the fz_store in the same way as full images. Currently image areas in the store are only matched when they match exactly; subareas are not identified as being able to use existing images.
2016-04-28Mudraw: In low memory mode, flush the store after each page.Robin Watts
2016-04-27Tweak pdf-write option handling.Tor Andersson
The handling of not-decompressing images/fonts was geared towards pdfclean usage; but now that we can create new PDF files, it makes more sense to ask for images and fonts to be compressed, rather than asking for them not to be decompressed with quirky interaction with the 'expand' and 'deflate' flags. If -f or -i are set, we will never decompress images, and we will compress them if they are uncompressed. If -d is set, we will first decompress all streams (module -f or -i). If -z is set, we will then compress all uncompressed streams.
2016-04-27murun: Add pdf.deleteObject().Tor Andersson
2016-04-27Add fz_close_device function.Tor Andersson
Garbage collected languages need a way to signal that they are done with a device other than freeing it. Call it implicitly on fz_drop_device; so take care not to call it again in case it has been explicitly called already.
2016-04-27Fix exception bug: rethrow without a caught exception!Tor Andersson
2016-04-27Remove useless try/catch/rethrows.Tor Andersson
2016-04-27Fix 696649: remove fz_rethrow_message calls.Tor Andersson
2016-04-27Don't return a void function.Robin Watts
2016-04-26Mudraw: Set AA level in context before cloning context.Robin Watts
When we clone the context, we copy the AA levels from the base context into the cloned context. This means that we must set the AA levels in the base context BEFORE cloning if we want them to be the same everywhere (or set them explicitly in all contexts).
2016-04-26Allow text/graphics aa levels to be controlled separately.Robin Watts
2016-04-26Improve fz_new_documentRobin Watts
Use a macro to make fz_new_document nicer (akin to fz_malloc_struct).
2016-04-26MSVC: Fix MSVC builds.Robin Watts
Some new files hadn't been added to the solution, and we were calling strcasecmp instead of fz_strcasecmp.
2016-04-26murun: Don't use 'mupdf' object; make constructors and functions global.Tor Andersson
It's a lot of extra typing to prefix everything with "mupdf.".
2016-04-26murun: Print result of evaluating a line in interactive mode.Tor Andersson
2016-04-26murun: Support 'lineCap' to set start, end and dash caps together.Tor Andersson
2016-04-26murun: Automatically convert object argument to obj.writeObject().Tor Andersson
2016-04-26murun: Add wmode and bidi-level arguments to text walker callback.Tor Andersson
2016-04-26Change order of arguments to pdf_add_page etc.Tor Andersson
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.
2016-04-26pdfcreate: Use industry font name for built-in fonts.Tor Andersson
2016-04-26pdfmerge: Clean up error messages and fix try/catch variable error.Tor Andersson
2016-04-26Optimize pdf_lookup_agl.Tor Andersson
2016-04-26Add 'mutool convert' and new document writer interface.Tor Andersson
Only supports CBZ writing for now. Also add a zip file writer.
2016-04-26fb2: Add image support.Tor Andersson
2016-04-26fb2: Add basic FictionBook support.Tor Andersson
No images. The default stylesheet is preliminary, and will need improvements.
2016-04-26Add base64 string decoder.Tor Andersson
2016-04-26Rename fz_write_int32be to fz_write_int32_be to be consistent with ↵Tor Andersson
fz_read_int32_be.
2016-04-26epub: Support page-break-before/after: always, left and right.Tor Andersson
Does not support page-break-before/after: avoid.
2016-04-26epub: Add matching for [att], [att=val] and [att~=val] css selectors.Tor Andersson
2016-04-26svg: Add fz_new_display_list_from_svg function.Tor Andersson
2016-04-26Fix refcounting on SVG documents.Robin Watts
2016-04-26svg: Add SVG parser.Tor Andersson
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.
2016-04-26Fix fz_store thinko.Robin Watts
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.
2016-04-26Update mutool clean sanitize to clean annotations too.Robin Watts
2016-04-22pdf: Handle implicit identity crypt filtersSebastian Rasmussen
Fixes http://bugs.ghostscript.com/show_bug.cgi?id=696687
2016-04-22pdf: Remember to drop objects inserted into dicts.Sebastian Rasmussen
2016-04-22thirdparty: Update to openjpeg 2.1.0.Sebastian Rasmussen
2016-04-22bmp: Support alpha for 16- and 32-bit uncompressed images.Sebastian Rasmussen
2016-04-22gif: Render image into pixmap instead of temporary buffer.Sebastian Rasmussen
Also remove comment with links used for reference during implementation.
2016-04-21epub: Change ul disc styles for nested lists.Tor Andersson
2016-04-21xml: Add a missing case of skipping linebreak after an opening tag.Tor Andersson
2016-04-21Fix potential segfault when mapping JS strings to PDF.Tor Andersson
2016-04-19Add mutool mergeMichael Vrhel
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.
2016-04-18Fix broken documents after sanitizeRobin Watts
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.
2016-04-18Fix corruption of file using sanitize.Robin Watts
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.
2016-04-18Fix leak of pdf_obj.Robin Watts
Use pdf_dict_put_drop rather than pdf_dict_put to avoid leaking int pdf_obj.
2016-04-12Fix some warnings.Robin Watts
Remove some bonkers conditions arising (presumably) as a result of search and replace.