Add CHANGELOG.md.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,3 +9,4 @@ parser.output
|
||||
parser.tab.[ch]
|
||||
scanner.c
|
||||
tumble
|
||||
CHANGELOG.html
|
||||
|
||||
148
CHANGELOG.md
Normal file
148
CHANGELOG.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# Change Log
|
||||
|
||||
## [0.35] - 2016-06-23
|
||||
### Added CHANGELOG.md
|
||||
|
||||
## [0.34] - 2016-06-23
|
||||
### Many fixes and enhancements from Palomar Corporation
|
||||
- Modify "bitblt.h" to undefine BITS_PER_WORD, which is defined in the
|
||||
netpbm header "pm_config.h", so that the tumble use takes precedence.
|
||||
- Fix a bug in "bitblt_write_g4" (bitblt_g4.c). Tumble would crash in
|
||||
"g4_get_pixel" with bad pointer access when trying to encode a TIFF image
|
||||
that was 14400 x 6100 (24" x 11"). "g4_get_pixel" was called with index
|
||||
14400, which accesses the first byte beyond the allocated array.
|
||||
- "bitblt_write_g4" is called to encode and write a TIFF bitmap to the PDF
|
||||
file. It allocates and zeros a temporary buffer to hold a scan line and
|
||||
then calls "g4_encode_row" for each line. "g4_find_pixel" is called to
|
||||
find the first 1 bit in the temporary buffer. Because the buffer has been
|
||||
zeroed, "g4_find_pixel" returned the image width (14400) when the
|
||||
specified pixel could not be found in scan line. A subsequent call to
|
||||
"g4_get_pixel" specified this pixel number (14400), which accessed memory
|
||||
beyond the allocation.
|
||||
|
||||
The crash wasn't repeatable. To occur, the image width had to be a
|
||||
multiple of 32 (else the last pixel + 1 would still be within the final
|
||||
word), and the allocation had to end exactly on a page boundary (so the
|
||||
first byte beyond the allocation was read-protected).
|
||||
|
||||
Fix is to pad the temporary buffer with an extra word if the width is an
|
||||
exact multiple of 32. Note that access beyond the source bitmap is
|
||||
prohibited by the "if (a0 >= width) break;" test prior to the
|
||||
"g4_get_pixel" call.
|
||||
|
||||
- Modify the makefile to add PNG and blank-page support files.
|
||||
|
||||
- Modify "parser.y" to enable push and pop of input contexts. This allows
|
||||
"{" and "}" to create a local context for modifiers, such as TRANSPARENT.
|
||||
Input modifiers specified outside of a local context become global for
|
||||
subsequent input clauses.
|
||||
- Modify "pdf.c" to add creation and modification dates to the PDF
|
||||
properties. The "CreationDate" and "ModDate" values are set to the time
|
||||
that the PDF was created.
|
||||
- Modify "pdf.h" to change the page size limit from 45 inches (Reader 3.x)
|
||||
to 200 inches (Reader 4.x and later), to add structures and parameters to
|
||||
support the new features added to the parser, and to add the PDF
|
||||
"producer" definition.
|
||||
- Modify "pdf_g4.c" to add support for color-mapping bilevel images.
|
||||
Mapping allows a black and white image to be drawn as any two specified
|
||||
colors. Useful for pages that are black-on-color or white-on-color. The
|
||||
color mapping syntax is:
|
||||
|
||||
COLORMAP (<red> <green> <blue>) , (<red> <green> <blue>) ;
|
||||
|
||||
...where the first triplet specifies the color to be displayed for black
|
||||
and the second triplet specifies the color to be displayed for white.
|
||||
|
||||
Note that a two-color PNG is about twice the size of a Group 4 TIFF.
|
||||
|
||||
Implementation note: the colormap is added to the PDF as a string resource
|
||||
and an indirect reference is made from the XObject. Tumble should keep
|
||||
each colormap only once in the file by keeping a global list of the
|
||||
string resources created. It doesn't. However, if the colormap used on
|
||||
an image is identical to the one used on the previous image, it will reuse
|
||||
the string resource. This covers the case of a section of colored pages.
|
||||
However, a discontiguous run of colored pages, e.g., the front and back
|
||||
covers, will store the colormap twice.
|
||||
|
||||
- Modify "pdf_g4.c", "pdf_jpeg.c", "tumble.c", "tumble_jpeg.c", and
|
||||
"tumble_pbm.c" to support color key masking (using the PDF Mask operator).
|
||||
The syntax is:
|
||||
|
||||
TRANSPARENT ( <gray_range> ) ;
|
||||
|
||||
or:
|
||||
|
||||
TRANSPARENT ( <red_range> <green_range> <blue_range> ) ;
|
||||
|
||||
...as a modifier to an input statement. <range> may be either a single
|
||||
integer or a low..high range.
|
||||
|
||||
The range values must be compatible with the color space of the image.
|
||||
For full-color images, the ranges would be 0..255. For grayscale images,
|
||||
the range would be 0..255. For paletted images, the range is expressed
|
||||
in palette entry numbers, which is much less likely to be useful than a
|
||||
single palette value.
|
||||
|
||||
- Modify "pdf_g4.c", "tumble_input.h", and "tumble_tiff.c" to add handling
|
||||
of TIFF images with min-is-black photometric interpretation.
|
||||
|
||||
- Modify "pdf_g4.c," "pdf_jpeg.c," and "pdf_png.c" to fix bugs in the
|
||||
callbacks within these files. "pdf_write_stream" was called to write "Do"
|
||||
commands with the XObject names without escaping restricted characters in
|
||||
the name, which had been escaped when the corresponding directory was
|
||||
written. This led to "Undefined XObject resource" errors when more than
|
||||
26 images were overlaid on a page ("pdf_new_XObject" generates names of
|
||||
the form "ImA", "ImB", etc., and the 27th name was "Im[", which must be
|
||||
escaped, as "[" is a restricted character; the dictionary name was being
|
||||
escaped to "Im#5b", but the "Do" command name was not).
|
||||
|
||||
- Modify "pdf_page_label.c" to fix a bug wherein a page label specifying
|
||||
prefix without a style (e.g., LABEL <prefix>) produces bad PDF (no labels
|
||||
are displayed). Should output "/P <prefix>" but instead was outputting
|
||||
"/S /P <prefix>".
|
||||
|
||||
- Add new files "pdf_png.c" and "tumble_png.c" and modify "tumble_input.h"
|
||||
to support PNG images (code from Daniel Glöckner via the tumble mailing
|
||||
list).
|
||||
|
||||
- Change PDF string handling in "pdf_prim.c" and "pdf_prim.h" to allow
|
||||
embedded nulls by storing strings as character arrays plus length words.
|
||||
|
||||
- Modify "parser.y", "scanner.l", "semantics.c", and "semantics.h" to
|
||||
support blank pages, overlay images, color mapping, color-key masking, and
|
||||
push/pop of input contexts.
|
||||
|
||||
- Modify "tumble.c", "tumble_jpeg.c", and "tumble_pbm.c" to support overlay
|
||||
images. Overlays allow one image to be placed on top of another, e.g., a
|
||||
JPEG photo on a bilevel TIFF text page, at a specified position. Overlays
|
||||
are drawn after the page on which the overlay is specified. The overlay
|
||||
syntax is:
|
||||
|
||||
PAGE <number> [ { OVERLAY <length>, <length> ; ... } ] ;
|
||||
|
||||
To support multiple images per page, the "Contents" stream is replaced by
|
||||
an array of stream objects.
|
||||
|
||||
- Modify "tumble.c" to add a new -V option that prints the program version
|
||||
to stdio. The version string printed is the PDF producer string.
|
||||
|
||||
- Add new file "tumble_blank.c" and modify "tumble_input.c" and
|
||||
"tumble_input.h" to support true blank pages. A blank page is a new PDF
|
||||
page with no content. The blank page syntax is:
|
||||
|
||||
BLANK <size_clause>
|
||||
|
||||
- Fix a bug that caused a double free in "tumble_input.c".
|
||||
|
||||
- Modify "tumble_tiff.c" to suppress a "function defined but not used"
|
||||
warning.
|
||||
|
||||
- Modify "semantics.c" to reduce page label redundancy in the PDF. Tumble
|
||||
was outputting a PageLabel entry for every page, rather than just for
|
||||
pages where the labelling changed. This resulted in an unnecessarily
|
||||
large label dictionary. Now allows page labels to default to
|
||||
auto-generation when appropriate.
|
||||
|
||||
- Modify "semantics.c" to change the program report from "<n> pages
|
||||
specified" to "<n> images specified" because, due to overlay images, the
|
||||
number of images does not necessarily equal the number of pages.
|
||||
5
Makefile
5
Makefile
@@ -64,7 +64,7 @@ YFLAGS = -d -v
|
||||
# let me know why so I can improve this Makefile.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
VERSION = 0.34
|
||||
VERSION = 0.35
|
||||
|
||||
PACKAGE = tumble
|
||||
|
||||
@@ -184,3 +184,6 @@ DEPENDS = $(ALL_CSRCS:.c=.d)
|
||||
$(CC) -M -MG $(CFLAGS) $< | sed -e 's@ \([A-Za-z]\):/@ /\1/@g' -e 's@^\(.*\)\.o:@\1.d \1.o:@' > $@
|
||||
|
||||
-include $(DEPENDS)
|
||||
|
||||
CHANGELOG.html: CHANGELOG.md
|
||||
cmark $< >$@
|
||||
|
||||
Reference in New Issue
Block a user