summaryrefslogtreecommitdiff
path: root/platform
AgeCommit message (Collapse)Author
2016-03-16glyph plotter; Use repeated inclusion of headerRobin Watts
To avoid having to duplicate a fairly large block of code several times, use repeated inclusion of a header with some macros to generate optimised glyph plotters.
2016-03-14Remove begin_page and end_page device calls.Tor Andersson
To be moved into a new document writer interface later.
2016-03-14Build java on 32-bit linux.Tor Andersson
2016-03-14Fix TextWalker.showGlyph signature string.Tor Andersson
2016-03-11Bug 696634: Android: Allow filenames including hash.Robin Watts
We were converting from a File to a filename then to a Uri using Uri.parse, but Uri.parse has problems with hash marks. Instead convert direct from File to Uri.
2016-03-11Implement fz_text_language support functions.Robin Watts
Add code to convert to and from fz_text_language codes from ISO 639 language strings. No validation is carried out.
2016-03-07MSVC: Solution tweaks.Robin Watts
Add Memento configurations for mupdf-gl and libglfw to solve build warnings.
2016-03-01Don't use pdf_page struct when creating pages.Tor Andersson
2016-03-01MSVC: Add mujs include path to mutool build.Robin Watts
Required to find mujs.h
2016-02-29jni: Use boolean wmode in text and font classes.Tor Andersson
2016-02-29jni: Add font and image constructors.Tor Andersson
2016-02-29jni: Fix scissor rect arguments to clipping functions.Tor Andersson
2016-02-29jni: Add page navigation buttons to java desktop viewer.Tor Andersson
2016-02-29jni: Various cleanups.Tor Andersson
jni: Various cleanups. Fix gcc and clang warnings. Android specific functions are guarded by HAVE_ANDROID define. The java guts of the android stuff is removed for now, to be added back in later. Set up a makefile and simple tests to build for desktop java. Rerig device classes to: Device, NativeDevice, JavaDevice and DrawDevice. Add Pixmap class. Regularize naming. General cleanups and abbreviate naming. Use to_JavaClass and from_JavaClass rather than fz_mupdf_struct_from_JavaClass and JavaClass_from_fz_mupdf_struct. Check for exceptions thrown by java devices and path processor. Tweak constructors and finalizers to remove the JavaDevice subclass. Use toString when rethrowing java exceptions as fitz exceptions.
2016-02-29jni: Update build files for moved java sources.Tor Andersson
2016-02-29jni: Move java bindings to platform/java.Tor Andersson
Move the platform independent java code from platform/android to platform/java. The plan is that we can call 'make mupdf.jar' (or 'nmake mupdf.jar') there, and then use the resultant mupdf.jar/mupdf_native.h files in whatever platform specific project (such as the android bindings) we like. Keep the android specific class (AndroidDrawDevice) in the usual place in platform/android. Update the android ant script to include mupdf.jar.
2016-02-29jni: First attempt at generic JNI bindings.Robin Watts
The purpose of JNI bindings is to allow MuPDF to be driven from Java. There are several possible use cases here. Firstly, and most simply a java application can ask the core of MuPDF to open a document and render it using the existing devices to produce output on a standard Java bitmap. Secondly, a java application might want to drive the device interface itself, making use of the standard MuPDF devices (such as using the rendering engine to render high quality graphics). Thirdly, a java application might want to implement its own device and then call MuPDF to run the document to that device (perhaps to do custom text or image extraction). The first of these cases requires a simple reflection of the main document and standard device classes in JNI. The second of these cases requires the actual device interface itself to be made available as a java interface, together with the ability to construct and manipulate data types like paths, text and fonts so the Java code can build the required objects to pass to implementers of the device interface. The final case requires a reflection layer whereby calls through the device interface in C can be turned into method calls to a Java interface. All of this is attempted in this commit. Some highlights: For each type in the C (such as fz_colorspace) we have a corresponding java class (such as ColorSpace). Where the 'fz_' types are reference counted (such as an fz_colorspace), the java objects (such as ColorSpace) simply take a reference to a pointer to the underlying fz type. Java accessor methods are then provided to manipulate these types. Where the 'fz_' types are not reference counted (such as an fz_rect), the data is actually contained within the Java object itself (such as Rect, RectI and Transform). We add a VS jni project. This doesn't do anything except make the files accessible for editing in the IDE. As much as possible, the Java layers do nothing (other than some programmer friendly type overloading), construction (unavoidable, as can't be done in JNI) and boiler-plate destruction. All the smartness is done in the C. Due to Java and C's differing approach to constness, we need to be careful that a java device does not destructively alter objects passed to it. For example, consider running a display list through a device implemented in java. If the java device were to change a Font object passed to it, this might affect other objects in the display list that shared the same underlying fz_font. Possibly we can achieve this by having an 'isConst' flag on java objects that are created from device calls and passed to the Java device (see the Text class, for an attempt at this currently). This could alternatively be achieved by cloning every such piece of data (see the path code for an example of this approach), but this is probably slow. Better to clone 'just in time' as the first write operation is done to the object.
2016-02-29js: Add "mutool run" tool to run javascript scripts.Tor Andersson
Use an API similar to the JNI bindings.
2016-02-29Pass mediabox to pdf_create_page by const pointer, and pass resources.Tor Andersson
2016-02-29Change order of arguments to pdf_create_page.Tor Andersson
2016-02-29Add mutool create tool, and PDF font and image resource creation.Michael Vrhel
Initial framework for creating pdfs This adds a create option to mutool for us to use in working on the API for creating content as well as adding content to existing documents. mutool create: Get page sizes and add them Start the parsing of the contents.txt file which may have multiple page information. Add the pages at the proper sizes. Further work on mutool create_pdf Remove the calls that were being made to the pdf-write device. Clean up several issues with the reading of the page contents. Get the content streams for each page associated with the page->contents Temp. created a pdf_create_page_contents procedure. I will merge this with pdf_create_page as there is significant overlap. Next is to add in the font and image resources and indirect references. Include pdfcreate in build Merge pdf_create_page_contents and pdf_create_page Add support for images in pdfcreate This adds images to the pdf document using a function stolen from pdf-device (send_image). This was renamed pdf_add_image_res and added to pdf-image. Down the road, send-image will be removed. Prior to that, I need to work on making sure that multiple copies of the same image do not end up in the document. Code was also added to create the page resources to point to the proper image in the document. Next fonts will be added in a similar manner, then I will work on computing the md5 sums of image and fonts to ensure only one copy ends up in the document. Then pdf-write will be reworked to use the same code as opposed to its current list of md5 sums that are stored in a device structure. mutool pdfcreate: support for WinAnsiEncoded fonts Added support for very simple fonts (WinAnsiEncoding). Methods added in pdf-font.c. Added first_width and last_width to fz_font_s and stem_v to pdf_font_desc_s. Ran code through memento with simple test of 4 page document creation including an image and a font. Fixed several leaks as well as buffer corruption issues (main changes in pdfcreate). Thanks to Robin for the help with Memento in finding leaks. Added StemV to pdf names as it was needed for the font descriptor creation. Fix for pdf_write_document rename to pdf_save_document Add resource_ids to pdf document structure The purpose of this structure will be to allow the search and reuse of resources when we attempt to add new ones to the document. Fix name changes from recent updates pdf_create branch updated to work with recent changes in master Initial use of hash table for resources To avoid adding in the same resource this adds a resource_tables member to pdf_document. The resource_tables structure consists of multiple fz_hash_table entries, one for each resource type. When an attempt is made to search for an existing resource, the table will be initialized in a brute force search for existing resources. Currently this is only set up for the image resources and accessed through pdf_add_image_res. If a match is found, the reference object is returned. If no match is found NULL is returned and the ref object created in pdf_add_image_res is added into the hash table. In this case, a command line such as create -o output.pdf -f F0:font.ttf -i Im0:image.jpg -i Im1:image1.jpg \\ -i Im2:image.jpg contents.txt will avoid the insertion of two copies of image.jpg into the output PDF document. CID Identity-H Font added for handing ttf This adds a method for adding a ttf to a PDF as a CID font with Identity-H mapping and a ToUnicode entry that is created using FT_Get_Char_Index This takes much care in the creation of the ToUnicode CMap to ensure that the minimum number of entries are created in that we try to use beginbfrange as much as possible before using beginbfchar. The code makes sure to limit the number of entries in a group to 100 and to not cross first-byte boundaries for the CID values as described in the Adobe Technical note 5411. Add missing file pdf-resources.c pdf-resources.c was missing and should have been committed earlier. Added to windows project file. Not sure where else it needs to be added for the other platforms. Clean up names and spacing Make sure that the visible functions have the proper namespace (e.g. pdf_xxxx) Also make sure we have a blank line prior to comment. Be consistent with static function naming in pdf_resources.c pdfwrite make use of image resource fz_hash_table The pdfwrite device now shares the structure that stores the resource images for pdfcreate. With this fix, pdfwrite now avoids duplicating the writing of the same images that are shared across multiple pages. Add missing file pdf-resources.c Initial work toward having pdfwrite use Identity-H Type0 encoding for fonts Finish of CID type0 Identity-H font for pdfwrite This adds in the proper widths which may have been stored in the source font in the width table (parsed from the W entry in the pdf file) or if the free type structure has its own cmap then we can get the width from free type. Widths are restructured into format described in 5.6.3 of PDF spec. Fix issue from conflict merging and multiple define of structure Clean up warnings and make mutool create use simple font
2016-02-29gl: Show MuPDF version number in usage message.Tor Andersson
2016-02-26Add harfbuzz path to other VS configs (e.g. x64) as well as set Preproc defines.Michael Vrhel
2016-02-24Add fz_show_string function and move wmode argument to end.Tor Andersson
2016-02-11gl: Use fz_font instead of freetype directly.Tor Andersson
2016-02-03Bug 696546: Add fast strtofRobin Watts
Take on a (slightly tweaked) version of Simon Reinhardt's patch. The actual logic is left entirely unchanged; minor changes have been made to the names of functions/types to avoid clashing in the cmapdump.c repeated inclusion. Currently this should really only affect xps files, as strtof is only used as fz_atof, and that's (effectively) all xps for now. I will look at updating lex_number to call this in future.
2016-01-29Update Android build with HarfbuzzRobin Watts
2016-01-29Force all harfbuzz allocations through our allocators.Robin Watts
Because of a shortcoming in harfbuzz, we can't easily force all its allocations through our allocators. We fudge it, with the addition of some macros to change malloc/free/calloc into hb_malloc/hb_free/hb_calloc. To prevent thread safety issues, we use our freetype lock around calls to harfbuzz. We stash the current context in a static var.
2016-01-28Add harfbuzz thirdparty submodule.Tor Andersson
2016-01-28Add Noto fallback fonts.Tor Andersson
Look up fallback fonts by unicode script, with a flag to select the serif or sans-serif font style where such variants exist. Move all builtin fonts into fitz namespace.
2016-01-28Make (old) Win32 viewer honour user css file.Robin Watts
2016-01-18First import of bidi code.Robin Watts
2016-01-18Enable warnings in Android ndk-build.Robin Watts
2016-01-13VS Solution: Add fz_pool files.Robin Watts
2016-01-08gl: Clean up mupdf objects at exit.Tor Andersson
Makes valgrind somewhat usable (glfw and xlib still leak plenty of global objects at exit).
2016-01-06Squash some warningsRobin Watts
2016-01-05Remove fz_page argument from fz_annot function calls.Tor Andersson
2016-01-05gl: Draw outline around text fields.Tor Andersson
2016-01-05Link required thirdparty libraries into one library: libmupdfthird.aTor Andersson
Keep the extra thirdparty libraries (curl and glfw) separate. This matches the build process for android and win32. Also purge some unused makefile sections.
2015-12-28Drop 'jsimp' abstraction and use mujs directly.Tor Andersson
2015-12-22Update jbig2dec to latest.Robin Watts
In particular this takes on the Memento fixes for bug 696183.
2015-12-18iOS: Fix two warnings in MuPrintPageRenderer with latest XcodeJoseph Heenan
MuPrintPageRenderer.h:2:9: error: 'MuDocRef.h' file not found with <angled> include; use "quotes" instead MuPrintPageRenderer.m:35:16: warning: if statement has empty body [-Wempty-body] MuPrintPageRenderer.m:35:16: note: put the semicolon on a separate line to silence this warning
2015-12-18Remove fz_save_document and use pdf_save_document directly instead.Tor Andersson
In preparation of adding pdf_write_document that writes a document to a fz_output stream.
2015-12-15muPDF iOS app: Support for the latest (3.4.1) Crashlytics.fredrossperry
- added four zlib files to Makethird that contain functions needed by the new version. - added -Wno-implicit-function-declaration so these new files, which contain some implicit declarations, would build for iOS - added a section to Info.plist that holds the new API key, with an invalid value that the release build script will fill in. - changes to MuAppDelegate for the new version. <log></log>
2015-12-15muPDF iOS app: properly support 4-inch iPhone.fredrossperry
A new TestFlight build could not be uploaded without making sure that the default launch screen image was getting placed in the app package. <log></log>
2015-12-15muPDF iOS app: add bitcode and UIRequiresFullScreenfredrossperry
Starting with Xcode 7, bit code is enabled by default. This change enables it in the static libraries that are linked, by adding the appropriate compiler switch. Also added UIRequiresFullScreen to the plist; this seems to have no ill effect when uing XCode 6. <log></log>
2015-12-15Rename fz_write_x to fz_save_pixmap_as_x or fz_save_bitmap_as_x.Tor Andersson
Separate naming of functions that save complete files to disk from functions that write data to streams.
2015-12-14Android: Try and minimise warnings in JNI code.Robin Watts
Push the pointer->long and long->pointer casting through 2 static inline functions.
2015-12-11Rename structured text structs and functions to 'stext'.Tor Andersson
Less risk of confusion with the text type used in the device interface.
2015-12-11win32: Always build 'generated' in 32-bit mode.Tor Andersson
Otherwise we can't run file generation tools with a 64-bit target on a 32-bit host.