Age | Commit message (Collapse) | Author |
|
Since the removal of the begin_page device function, structured
text extraction has been unable to correctly establish the
mediabox for extracted pages.
Update the fz_new_stext_page call to take this mediabox
information. This is an API change, but hopefully most people
are calling fz_new_stext_page_from_page or
fz_new_stext_page_from_display_list which are updated here to
cope.
Update all the apps/tools to behave properly.
|
|
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).
|
|
We had moved the ctm into the display device, which meant it
no longer transformed the bounds given to the list device to
do scissoring. Move it back.
Same fix for muraster.
|
|
In an earlier commit, I changed some of the band writing functions
to take the band starting offset, rather than the band number. This
was done to accomodate the idea of rendering the page in bands of
different heights.
Sadly, it seems I didn't push this all the way through, and had
different band writing functions still taking the band number.
Fix all the band writing functions to be consistent.
|
|
Regardless of whether rendering in background thread or not the
filename and the page number should be printed.
|
|
|
|
The argument processing was expecting an argument after I.
|
|
|
|
To return the proper size from fz_bound_display_list, which has been
broken since the begin_page device call was removed.
|
|
Allows us to remove the out parameter 'transform' from fz_begin_page.
|
|
It was incorrectly missing the alpha in the header writing code.
|
|
Previously the API assumed that all bands had to be the same
height. By moving the multiplication into the caller, we can
lift that assumption.
|
|
|
|
|
|
This has knock on effects in the store.
fix
|
|
Update the test device so it can be used 'wrapping' another
device.
In particular, it can be used to wrap the display list device
so that we can evaluate 'color or not' while building the
display list rather than having to rerun the display list
afterwards.
Also, give improved control over whether we test every pixel
of images/shadings.
|
|
|
|
|
|
PAM output was broken in the absence of alpha. Fixed now.
|
|
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.
|
|
|
|
This makes it possible to redirect standard out and standard error output
streams to output streams of your liking.
This means that now you can, in gdb, type:
(gdb) call pdf_print_obj(ctx, fz_stdout(ctx), obj, 0)
(gdb) call fflush(0)
or when dealing with an unresolved indirect reference:
(gdb) call pdf_print_obj(ctx, fz_stdout(ctx), pdf_resolve_indirect(ctx, ref), 0)
(gdb) call fflush(0)
|
|
Calculations need to be done differently.
|
|
There was a race condition on bgprint.pagenum that could cause
the bgprint worker to close down early, leaving the main thread
waiting for notification of its closedown.
|
|
Add -P flag to mudraw to do 'parallel' rendering. We shift rendering
onto a background thread, so that the main thread can continue
interpreting page n+1 while page n is being rendered.
To do this, we extract the core of the drawpage routine into
'dodrawpage', and either call it directly (in the normal case)
or from a bgprint worker thread (in the parallel case).
The threading construction exactly parallels that of the threaded
band rendering. We have a semaphore to start the render process,
a semaphore to indicate when the process has stopped, and the
thread itself.
The most complex thing here is the rejigging of the printfs
required to ensure that we still get the timings displayed in a
sane way.
|
|
Apparently neither OSX nor iOS support unnnamed semaphores,
so steal the gs versions and use them instead.
|
|
|
|
|
|
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).
|
|
|
|
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.
|
|
If used, PDF objects are cleared at the end of each page, and
the store size is set to 1 byte, avoiding the caching of images.
This trades repeated decoding of images/reading of file objects
for memory usage. The purpose of this is to enable measurements to
be made on the minimum possible memory level.
|
|
|
|
|
|
|
|
Introduce a 'generic' PCL setting (basically ljet4 with custom
page sizes for now).
Ensure we send explicit sizes before the custom page sizes, and
don't use Ricoh page sizes unless we are allowed to.
|
|
Output uses adaptive compression mode.
|
|
All the groundwork was in place for this, I'd just forgotten
to actually enable it.
|
|
It makes a strangely large difference in timings if we close
and reopen the output file for every page. Only close and
reopen the output file for each page if we really need to.
|
|
Simple PS wrapped images with flate compression.
|
|
A request for a .pkm file will produce the same as a pamcmyk4 does
on ghostscript. Ghostscripts pkmraw device does a 1bpp cmyk and
then converts to rgb as writing to ppm, but that seems silly.
|
|
|
|
|
|
At the moment we have the output file being opened in several
different places, leading to several different places
having to cope with the '-' handling.
Simplify the code so that files are only opened in 1 place.
|
|
To be moved into a new document writer interface later.
|
|
|
|
|
|
|
|
|
|
|