Age | Commit message (Collapse) | Author |
|
This avoids allowing 0,z as a valid selection.
|
|
|
|
|
|
SVG output in mutool produces a file per page; attempting to
reopen the same file each time was tripping the new fz_remove
call. Now only open a page at a time.
|
|
|
|
|
|
Saves having the same threading code repeatedly.
|
|
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.
|
|
Add missing API comments.
Move private definitions to implementation headers or C files.
Move internal functions to implementation headers.
|
|
This commit adds a new -y flag to mutool draw. -y takes an
additional argument - this can either be a single 'l' meaning
"list the layer configs available", or a comma separated list
of numbers.
The first number in the list says which "layer config" to
select. Subsequent numbers identify lines in the config to
toggle.
For instance I might do:
mutool draw -y l -o out.png layers.pdf
and this will list me the layer configs in the file (as well
as rendering normally).
From this I might choose layer config 0:
mutool draw -y 0 -o out.png layers.pdf
This will select layer config 0, and show a table (max 1 layer
per numbered line) that shows which layers are on or off.
If I then decide that I want layers 3 and 4 to be toggled from
their default state, I can run:
mutool draw -y 0,3,4 -o out.png layers.pdf
Short of implementing an interactive configuration mode, this
is the simplest way to demonstrate the layer functionality.
|
|
|
|
As fz_drop_*()/fz_free() all must handle NULL.
|
|
Keep to our naming conventions.
|
|
We have various functions that, for different image formats,
write a header, then a band, then (sometimes) a trailer.
Push them all through a single interface.
This change also fixes potential problems caused by the trailer
writing being an implicit destructor, which can cause problems
in cleanup code if the trailer writing throws an error.
|
|
|
|
|
|
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.
|
|
|
|
|