summaryrefslogtreecommitdiff
path: root/source/fitz
AgeCommit message (Collapse)Author
2016-02-24xml: Implement SGML line break rules.Tor Andersson
Always ignore a line break immediately after an opening tag and before a closing tag.
2016-02-24Add fz_new_image_from_file.Tor Andersson
2016-02-24Add optional scissor hint argument to text clipping functions.Tor Andersson
2016-02-24Clarify scissor argument to clip device functions.Tor Andersson
The scissor argument is an optional (potentially NULL) rectangle that can give hints to devices about the area that can be scissored. This is used by the draw device and display list device to minimize the size of temporary clip mask buffers. The scissor rectangle, if used, must have been transformed by the current transform matrix.
2016-02-22Rename fz_path_processor to fz_path_walker.Tor Andersson
2016-02-22Remove pointless casts from void*.Tor Andersson
Extraneous explicit type casts can mask errors, especially if a function prototype or return value changes in the future.
2016-02-22Drop const from fz_image.Tor Andersson
Image objects are immutable and opaque once constructed. Therefore there is no need for the const keyword.
2016-02-22Drop const from fz_shade.Tor Andersson
Shading objects are immutable and opaque once constructed. Therefore there is no need for the const keyword.
2016-02-22Rename fz_add_text to fz_show_glyph.Tor Andersson
Match naming of fz_moveto/lineto etc for paths.
2016-02-15Drop UNUSED macro -- it dirties the namespace and is not needed.Tor Andersson
We compile with -Wno-unused-parameters instead.
2016-02-15Convert line cap types to freetype linecap types properly.Tor Andersson
Don't just cast an enum to another.
2016-02-12Fix PCL output (monochrome).Robin Watts
The PCL monochrome output code was unfinished. This now produces PCL accepted by ghostpcl for ljet4 and dj500 presets at least.
2016-02-12Bug 696580: Speed up fz_write_pnm_band.Robin Watts
Writing individual bytes using fwrite is VERY slow (profile of debug code shows 93% of runtime is in system fwrite). Fix this by collating into a buffer and writing (now 2.5%).
2016-02-12Inline fz_write function.Tor Andersson
2016-02-12Improve performance of fz_write of single bytes.Tor Andersson
Use putc for single byte writes instead of fwrite.
2016-02-10Add bold/italic/monospaced/serif flags to fz_font.Tor Andersson
Use the flags when selecting a fallback font.
2016-02-04Make HTML layout use harfbuzz for shaping.Robin Watts
fz_fonts gain a 'shaper' field that will be filled in as required. Use a void * rather than an hb_font_t to avoid polluting top level include space. Harfbuff handles mirroring for us, so lose the 'mirror' fields. This simplifies our wrappers around the 'standard' bidi code in that we don't need to split fragments upon mirroring. We do need to split our fragments at script changes though as harfbuzz only operates on a single font at a time. Update the html flow structure so that each flow node contains details of the the direction specified for it in the markup, the language specified for it in the markup and the script detected by the bidi code. Get the bidi code to pass out the script for each fragment as part of the callback and populate that field in the node. Ensure that we pass in the markup direction to the bidi splitting code as the 'base' direction. When feeding the bidi code, rather than feeding it paragraphs at a time, break those paragraphs if different parts of them have different marked up directions.
2016-02-04Bug 696546: Minor tweaks to ftoa code.Robin Watts
Thanks to Simon Reinhardt for these.
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-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 fallback font cache to font context.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-28MSVC: Fix trace device outputRobin Watts
MSVC doesn't understand %04X. Use %04x instead.
2016-01-22epub: Implement @font-face rules.Tor Andersson
Note: font->fallback is not reference counted here. The fallback mechanism is probably going to have to change when we add text shaping.
2016-01-21Drop const from fz_colorspace.Tor Andersson
It's an opaque immutable structure, that we don't expect to ever want to change after creation. Therefore the const keyword is not useful, and is only line noise.
2016-01-21epub: Put font fallback chain in fz_font.Tor Andersson
fz_encode_character_with_fallback finds the first font in the fallback chain that has the glyph encoded, and if none do then try to encode a bullet character.
2016-01-21Drop the const on fz_font.Tor Andersson
The font is an immutable opaque structure, no need to add the const keyword since users aren't expected or expecting to change it.
2016-01-20Various formatting cleanups.Tor Andersson
2016-01-20Tidy bidirectional source.Robin Watts
Make the import follow mupdf style (better, if not perfect). Use ucdn where possible to avoid duplicating tables. Shrink the types, make them explicit (e.g. use fz_bidi_level rather than int) and make tables const. Use 32-bit integers for text.
2016-01-18Process HTML text for directionality.Robin Watts
After we parse html text from an ebook run it through the unicode bidirectional algorithm to determine the directionality of each fragment. This may require splitting of fragments. Currently we don't do anything with this information.
2016-01-18First import of bidi code.Robin Watts
2016-01-18Add consts to fz_keep/drop_path.Robin Watts
Forgot these in my previous pass.
2016-01-18Simplify try/catch macros.Tor Andersson
Use a pointer to the top error stack slot instead of access via array and index. Return the stack slot from fz_push_try.
2016-01-13Add lots of consts.Robin Watts
In general, we should use 'const fz_blah' in device calls whenever the callee should not alter the fz_blah. Push this through. This shows up various places where we fz_keep and fz_drop these const things. I've updated the fz_keep and fz_drops with appropriate casts to remove the consts. We may need to do the union dance to avoid the consts for some compilers, but will only do that if required. I think this is nicer overall, even allowing for the const<->no const problems.
2016-01-08Add pool allocator.Tor Andersson
2016-01-08Use a binned cache for font encoding lookups.Tor Andersson
It's slower, but will work for CJK fonts as well.
2016-01-08Optimize font advance and encoding caches.Tor Andersson
2016-01-08pdf: Fix pdf_annot memory leak.Tor Andersson
2016-01-08Fix conditional jump or move depends on uninitialised value.Tor Andersson
stm.avail_out is only set if !only_metadata. Reverse the order of the if tests to silence valgrind.
2016-01-06Squash some warningsRobin Watts
2016-01-06epub: Cache font encoding lookups.Tor Andersson
Add a caching table for the lower planes of unicode, which cover the latin, greek, cyrillic, hebrew and arabic scripts.
2016-01-05Separate pdf_drop_annots (that drops lists) and fz_drop_annot.Tor Andersson
2016-01-05Add pixmap struct accessors.Tor Andersson
2016-01-05Clean up trailing whitespace.Tor Andersson
2016-01-05Change fz_ftoa to fz_grisu to remove one extra layer of function calls.Tor Andersson
2016-01-05Speed up fz_ftoa.Simon Reinhardt
During pdf_save_document the main performance bottleneck is the formatting of floats to decimal ASCII representations in fz_ftoa. Fix this by using the Grisu2 algorithm, the fastest known algorithm for accurate printing of IEEE floating point numbers while minimizing the number of produced decimal digits. This requires no libc support, only integer arithmetic.
2016-01-05epub: Speed up font layout by caching freetype advance widths.Tor Andersson
2016-01-05Clarify snprintf length when printing to fz_buffer and fz_output.Tor Andersson
The +1's for zero terminating bytes are not needed: printf to a fz_buffer or fz_output does not write a zero terminator. The extra code to add space for a zero terminator when calling snprintf internally are merely confusing.
2016-01-05Remove fz_page argument from fz_annot function calls.Tor Andersson
2015-12-28Rename fz_image_get_pixmap to fz_get_pixmap_from_image.Tor Andersson