Age | Commit message (Collapse) | Author |
|
Replace fz_print_hash with fz_hash_for_each iterator.
Use string formatting callback.
|
|
|
|
Decide whether to dash or not in the scan converter, not the
draw-device.
|
|
In all cases we reset the gel before populating it, so pull this
out of the draw device into the population routines.
|
|
In all cases, we sort the gel before scan converting it. So
just roll the sort call into the scan convert call.
|
|
In keeping with the rest of the code.
|
|
|
|
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.
|
|
Now mutool convert can write SVG documents.
|
|
When falling back from glyph cache based rendering to direct
rendering, we were applying the transform twice due to the
handling of dev->transform introduced in commit
ccaf716.
Fixed here.
|
|
|
|
|
|
This moves dropping the converted pixmap into fz_convert_pixmap(),
which relieves every caller from doing so. Moreover resolution,
position and interpolation are kept.
|
|
Move internal functions from public to private headers.
|
|
|
|
Move function definition to the bottom of the file. This
keeps the debug/config #definery at the top of the file
where it belongs.
|
|
Non rectangular clips are currently handled by rendering to a
'isolated' background, and then plotting that through a mask.
This runs into problems when the rendering needs to use non
standard blend modes that need to access the background
colors.
Instead, copy the background to the new pixmap, render to that
then plot that through the mask.
This simplifies the painting code, because we now never have
mismatched source and destination alphas.
|
|
fz_save_pixmap_as_png has changed signature since this was
last used.
|
|
|
|
Following the pattern in draw_fill_image().
|
|
|
|
|
|
When calculating how many repeats of tiles are required, we
need to allow for the fact that the bbox of the tile can be
larger than the repeat step in PDF.
The calculation to do this before was incorrectly being done
using the scissor bbox, when it should have been the tile
bbox.
|
|
The implementation does not need to be in the public API.
|
|
|
|
When we are rendering a knockout group, we set the knockout flag.
Do NOT carry this forward into the renderings of any softmasks.
This fixes Bug 696870 and 696872.
|
|
Closing a device or writer may throw exceptions, but much of the
foreign language bindings (JNI and JS) depend on drop to never throw
an exception (exceptions in finalizers are bad).
|
|
|
|
|
|
|
|
Allows us to remove the out parameter 'transform' from fz_begin_page.
|
|
This silences the many warnings we get when building for x64
in windows.
This does not address any of the warnings we get in thirdparty
libraries - in particular harfbuzz. These look (at a quick
glance) harmless though.
|
|
|
|
|
|
This has knock on effects in the store.
fix
|
|
|
|
Introduce FZ_PLOTTER defines to set which defines we required.
Add FZ_ENABLE define to set which document handlers are built
by default.
|
|
Again, mainly so profiling works nicely.
|
|
Converting a pixmap to an alpha only pixmap means "just keep
the alpha". If there IS no alpha, then a solid alpha is
assumed.
|
|
fz_pixmaps now have an explicit stride value. By default no change
from before, but code all copes with extra gaps at the end of the
line.
The alpha data in fz_pixmaps is no longer compulsory.
mudraw: use rgb not rgba (ppmraw), cmyk not cmyka (pkmraw).
Update halftone code to not expect alpha plane.
Update PNG writing to cope with alpha less input.
Also hide repeated params within the png output context.
ARM code needs updating.
|
|
The PDF spec says that line thickness of 0 should mean "1 device
pixel". We have been doing some dodgy logic where if the line
thickness as scaled by the ctm is small (< 0.1f), make it at
least 1 device pixel.
This can mean that a line can not qualify for being thickened at
36dpi, but can be thickened at 24dpi. The thickened line at 24dpi
is much thicker than the unthickened line at 36dpi, meaning that
we get a noticable shift in rendering.
Why do we do this strange logic? Well, presumably it's to avoid
thin lines dropping out completely.
We therefore move to some new logic. Firstly, we create a fudged
'aa_level' value, dependent on the antialias level. With AA level
0 (no antialiasing), this corresponds to 1 device pixel. For
maximum AA level (8), this corresponds to 1/5 of a device pixel.
Thus we should get 'continuous' results across different dpis.
|
|
For now, just use it for controlling image decoding and image scaling.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
Image objects are immutable and opaque once constructed.
Therefore there is no need for the const keyword.
|
|
Shading objects are immutable and opaque once constructed.
Therefore there is no need for the const keyword.
|
|
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.
|
|
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.
|