summaryrefslogtreecommitdiff
path: root/platform/java/mupdf_native.c
AgeCommit message (Collapse)Author
2017-05-29java: Avoid casts where original type can be used.Sebastian Rasmussen
2017-04-28jni: Include "mupdf/ucdn.h" explicitly.Sebastian Rasmussen
This really should have been part of commit 5030ba7ebf7b3706ac065deef750d647570525b3 which changed most places where ucdn.h is used.
2017-04-20jni: Pass independent character matrices when walking through text.Sebastian Rasmussen
This avoids altering the matrices previously given to the Text walker.
2017-04-20jni: Fix typo in native identifier.Sebastian Rasmussen
2017-04-20jni: to_Annotation() may fz_throw(), make it safe.Sebastian Rasmussen
Previously to_Annotation() would fz_throw() upon errors, but the code calling it couldn't handle that. Create to_Annotation_safe() that does not throw and remove the now unused to_Annotation().
2017-04-20jni: PDFAnnotation and PDFPage additions.Sebastian Rasmussen
2017-04-20jni: Implement missing interfaces.Sebastian Rasmussen
2017-04-20jni: Check that JNI enums match those in the library.Sebastian Rasmussen
2017-04-18jni: Propagate exception message, do not override it.Sebastian Rasmussen
2017-04-18jni: Clear java exception when rethrow via fz_throw().Sebastian Rasmussen
Previously when a java exception was pending CallObjectMethod() was called. This is not permitted and so the exception must be cleared before this function is called. Secondly if the method called by CallObjectMethod() throws an exception this exception was left pending when fz_throw() for unknown java errors was called. Later on jni_rethrow() would be called which in turn called ThrowNew(). This is not permitted either, so the pending exception must be cleared if caused by the call to CallObjectMethod(). Because fz_throw_java() always ends with a fz_throw() it is safe to assume that the pre-existing exception (or the one caused by CallObjectMethod()) will always be converted into a fz_throw(), which in turn will be converted back to a java exception since all calls to fz_throw_java() are enclosed in fz_try() where fz_catch() ends with calling jni_rethrow().
2017-04-18jni: NewStringUTF() may throw exception, handle this.Sebastian Rasmussen
When NewStringUTF() throws an exception NewObject() may not be called. Change to code to avoid this.
2017-04-18jni: Use consistent naming in conversion functions.Sebastian Rasmussen
2017-04-13Export fz_recognize_document and use it in java code.Sebastian Rasmussen
2017-03-28Java fixes.Tor Andersson
2017-03-28Rejig fz_new_device to be fz_new_derived_device.Robin Watts
In keeping with the rest of the code.
2017-03-27Tweak document_writer - don't pass dev back in.Robin Watts
It seems odd for a document writer to pass a device pointer out, and then require it to be passed back in. Hide that in the public API.
2017-03-22Rename fz_putc/puts/printf to fz_write_*.Tor Andersson
Rename fz_write to fz_write_data. Rename fz_write_buffer_* and fz_buffer_printf to fz_append_*. Be consistent in naming: fz_write_* calls write to fz_output. fz_append_* calls append to fz_buffer. Update documentation.
2017-03-01Add PDFPage and PDFAnnotation subclasses.Tor Andersson
2017-02-21java: Fix typo in authenticatePassword.Tor Andersson
2017-02-20android: Use system fonts as fallback instead of compiling binary blobs.Tor Andersson
This drastically reduces the size of the android library. Unfortunately it means font support is limited to what is available on the device. We look for both the old DroidSans fonts and the more recent Noto fonts.
2017-02-14Fix patch drawing in AndroidDrawDevice.Tor Andersson
It can be simplified now that we support custom strides in pixmaps.
2017-02-14java: Make PDFDocument a subclass of Document.Tor Andersson
Requires use of Document.openDocument(path) to open a document. No more new Document(path) since we may need to return a PDFDocument. Create a new blank PDF with new PDFDocument() constructor.
2017-02-06Add bookmarks so we can find a location after reflowing a document.Tor Andersson
2017-01-23android: Add ndk-build makefile to build JNI library for android viewers.Sebastian Rasmussen
Run 'make android' to invoke ndk-build with the proper arguments. The results are placed in build/android.
2017-01-17Fix typos.Sebastian Rasmussen
2017-01-09java: Handle outlines with duff links.Tor Andersson
2017-01-09java: Fix encoding problems when turning strings into java strings.Tor Andersson
Most strings coming out of various MuPDF functions are already decoded to utf-8; so manually decoding from PDFDocEncoding or UCS-2 is actually harmful rather than helpful.
2016-12-27Strip extraneous blank lines.Tor Andersson
2016-11-16pdf: Add 'compressed/raw' flag to pdf_add_stream.Tor Andersson
Also expose the argument to JS and JNI.
2016-11-14Make fz_buffer structure private to fitz.Robin Watts
Move the definition of the structure contents into new fitz-imp.h file. Make all code outside of fitz access the buffer through the defined API. Add a convenience API for people that want to get buffers as null terminated C strings.
2016-11-14Add/fix page coordinates to link targets.Tor Andersson
Correctly transformed target coordinates for PDF. Target coordinates for EPUB and HTML.
2016-11-14Add optional 'object' argument to pdf_add_stream.Tor Andersson
2016-11-11Update JNI code to compile on Win32 and Win64.Robin Watts
Just some typecasting required.
2016-11-03Fix MSVC build of JNI native code.Robin Watts
2016-11-03jni: Only release stext options when present.Sebastian Rasmussen
2016-11-02jni: Add AndroidImage, using Android Bitmaps to create Images.Sebastian Rasmussen
2016-10-28Clean up link destination handling.Tor Andersson
All link destinations should be URIs, and a document specific function can be called to resolve them to actual page numbers. Outlines have cached page numbers as well as string URIs.
2016-10-26Update ios/android to use new way of passion stext options.Sebastian Rasmussen
In addition, make all callers passing 0 as a point pass NULL instead.
2016-10-16Avoid casting when dropping super objects.Sebastian Rasmussen
2016-10-07Update Android build with fz_font/fz_colorspace API changes.Robin Watts
2016-09-23JNI: Improve string/name encoding handling.Robin Watts
At the moment, when we create java Strings from string or name PDFObjects, we assume they are all in javas not-quite-UTF-but-almost encoding. Here we assume they are in standard PDF format (namely that if they do not start with one of 2 specific BOMs, that they are in PDFDocEncoding). We update the code to convert to unicode, and create strings from that. This has the added side effect of correctly coping with 0 bytes in the middle of string buffers.
2016-09-23JNI: Fix typo in logic.Robin Watts
2016-09-23JNI: Rework conversion functions and nulls.Robin Watts
Java has a convention that 'toString' should return a printable version of an object. We cannot both support this, and support a sane naming of functions to interpret pdf objects that begins with 'to'. Instead use 'as'. This means we have 'asBoolean', 'asInteger', 'asString' which expect to work just on pdf objects of the required type. 'toString' continues to work on all types and gives a printable version. We split 'toByteString' into 2 separate functions, one for acting on strings (asByteString) and one for acting on names (asByteName) more nicely mirroring the C level functions (pdf_to_string and pdf_to_name). For simplicity of use, we add asString and asName functions that return using java Strings rather than byte arrays. There are potential encoding issues with these, but then there are throughout our string handling at the moment, so we will deal with those in a followup commit. We also update the internal workings of several functions so that they never return NULL pointers, but rather return the null object. To avoid repeatedly creating new null objects we introduce a global static PDFObject.Null object. This is important as we want get("SomethingNonexistent") to return a valid java object, so we can safely do things like: get("Foo").get("Bar").get("Baz").asInteger() without having to error check at every stage. Update DocViewActivity to call the new versions.
2016-09-18JNI: Finalizers must be able to run with pointer being null.Sebastian Rasmussen
Applications must be able to run e.g. Document.destroy() and later set that reference to null and have the JVM successfully run the finalizer an arbitrary time later. Previously the JVM would fail to do so because the finalizer would throw an exception since the native pointer was null.
2016-09-17Java bindings: Improve exception messagesRobin Watts
2016-09-16Call Memento_fin in java Document_destroy().Robin Watts
As reasonable a place to call it as we can hope for. If we ever have 2 documents open and we close 1 then it will dump more blocks than we like, but when we get to that stage we can worry about it then.
2016-09-16Android JNI context fixes.Robin Watts
In the JNI code, we attach a cloned context onto each thread we encounter in thread local storage. When the thread shuts down, we should destroy that context. This can theoretically be achieved on pthreads by using the destructor registered to the tls slot. I have yet to see Android ever actually call this destructor yet though. No such mechanism exists for windows thread, so we'll just leak here for now. There is a potential fix for this, but it's hairy, so details are left in a comment in the code.
2016-09-16JNI: Handle the case where an object's native pointer is NULL.Sebastian Rasmussen
If Java code creates e.g. a Document object and later calls Document.destroy() and then keeps using the Document object the library would end up crashing because the native pointer was null. This case rather special case is now handled.
2016-09-16JNI: Do not fail on using null as a value in a dictionary.Sebastian Rasmussen
The underlying pdf_dict_put() converts into a null object.
2016-09-16JNI: Check if get_context has thrown exception,Sebastian Rasmussen
But do not check it twice.