Change log |
PDF manual "bmeps.pdf" available german PDF manual "bmepsde.pdf" available |
The current version is 2.0.16
Please note: All versions containing only a major.minor
are much older than those containing
major.minor.micro. Especially 1.54 - still found
on some servers - is very old.
Change log
- Change in the Bmeps GUI (2.0.16)
A command line argument can be used to specify the directory in which the bmeps GUI is running. - Change in the Bmeps GUI (2.0.15)
The code was reorganized, the classes from the dklibsj.jar file are packaged to bmepsgui.jar too. So we have to deal with one jar file only to run the application. A splash screen is shown while the application starts. - Change in the Bmeps GUI (2.0.14)
The panel contents is placed in the left top corner of panels in the options dialog. - Some GUI elements in Bmep GUI are disabled temporarily while the background thread is running.
- Bugfix (2.0.13)
The file name of the bmepsgui.jar file was corrected in the bmeps-gui script. (Not all systems use case-insensitive file names.) - Changes in BmepsGUI (2.0.12)
The transfer handler for drag and drop is not only set for the main windows panel but for panel contents too. This allows to release the mouse over one of the labes or the icon when finishing a drop operation. - Bugfix for resolution chunks (2.0.11)
When using the input image resolution chunk previous versions of bmeps wrote translate instructions to center the HiResBoundingBox in the BoundingBox. On request of a user this co-ordinates transformation was removed, a HiResBounding box is added to PS/EPS output, the /MediaBox entry in PDF files is expressed in real numbers.
The user requesting this change told me he converted a PNG image to PDF/EPS using bmeps and the PDF/EPS back to PNG (without telling which program was used). The result of the two conversions differed from the original. The bugfix can improve the situation a little bit but you should not expect the result of a forward-and-backward conversion to be 100 percent equal to the original.
Why? See the FAQ. - Docu update (2.0.10)
The text printed at the end of the configure script was updated. - Bugfix (2.0.9)
The installation of the bmeps-gui script was moved from the dklibs projects makefiles into the bmeps makefiles (of course it belongs to here). Thanks to Ph. Loewen for the bug report. - Multiple changes (2.0.8)
- Return of the Bmeps GUI
A new GUI was written in Java. - Additional progress messages
When running on a directory bmeps produces progress messages for each input file converted now. - Change in PDF output driver
When transferring an alpha channel to PDF output PDF page attributes now contain/Group <</S /Transparency /I true /CS /DeviceRGB>>
This allows to create standalone PDF image containing an alpha channel.
This feature can be controlled using theallow pdf page attributes = ... a.p.p.a=...
option. - bmeps --configuratioin-file
now shows a line# @PLATFORM filename case-sensitive
or# @PLATFORM filename case-insensitive
to indicate whether or not file names are case-sensitive. This feature is used by the Bmeps GUI to decide whether or not to use case-sensitive comparisons for file names.
- Return of the Bmeps GUI
- Changes in the Windows version (bmeps 2.0.7)
If standard output was switched to binary mode before writing ouptut, standard output is switched bach to the original binary or text mode after output is finished. - New feature: Codepage support used when showing the configuration (bmeps 2.0.6)
The -C (--show-configuration) option now uses codepage support if available. This should show german umlauts and ligatures correctly on Windows systems. - Bugfix: Uninitialized variable (bmeps 2.0.5)
In previous versions there was an uninitialized variable in the code reading bitmap images from standard input. This is fixed now. - New features: Configuration file reading and writing,
information about alpha channels converted to PDF (bmeps 2.0.4)
Two new options were added:- Use
bmeps --configuration-file
to list the configurations currently available. - Use
bmeps --write-configuration-file
and type configuration data to save it to $HOME/.defaults/bmeps.conf.
The purpose of these options is to allow other programmers to write a GUI wrapper around bmeps. The GUI application can "ask" bmeps which configurations are available. If the application provides configuration management, the user-specific configurations can be saved. - An information text is issued if an alpha channel was transferred
into a PDF output file.
If a PDF file containing an alpha channel is referenced by a *.tex file, the document preamble should contain a special line\ifpdf\pdfpageattr{/Group <</S /Transparency /I true /CS /DeviceRGB>>}\fito prevent PDF viewers from using CMYK as an intermediate colorspace for calculations.
The -A command line option can be used to suppress this message.
- Use
- Bugfix for compiler problem (bmeps 2.0.3)
The project failed to build if no JPEG library developer support was installed.
This is fixed now. - New feature: Automatic output configuration selection based on the
output file name suffix (bmeps 2.0.2)
If no configuration was specified using the ``-l language'' option bmeps attempts to find an output configuration based on the output file name suffix. If the ``-l'' option is missing all options to overwrite configuration entries must be placed after the output file name.
Now the most simple ways to run bmeps arebmeps input.png output.eps bmeps input.png output.pdf bmeps input.png output.bb
- New feature: Automatic output file name selection (bmeps 2.0.1)
There was a request to generate output file names automatically based on the input file name and the output driver.
You can use the ``-a'' option (automatically create output file name) likebmeps -a -lbb graphic.png
to create the graphic.bb file.
The purpose of this feature is easier integration to the Windows desktop. - Complete rewrite November 24th, 2006 (bmeps 2.0.0)
Bmeps was rewritten completely from scratch to provide the following new features:- Create EPS and PDF files.
- Create multiple data sources in EPS output to enable run-length compression of areas and horizontal lines in the same color.
- DCT-pass-through of JPEG files.
Only JPEG file which passed some tests are used directly as DCT-encoded data. When in doubt, bmeps falls back to the classical combination of compression and encoding mechanisms. - Choices for image size:
- 1 pixel = 1 PS point
This is the default setting.
Scaling and rotating is left up to DTP applications (i.e. LaTeX) which include the resulting EPS or PDF files. - Use resolution data contained in the input file.
- Fit to a paper size, rotate if necessary.
- 1 pixel = 1 PS point
- New configuration and options mechanism. The goal is to type a minimum
of command line options to run bmeps. Instead we can use predefined
configurations or create a configuration file for customized configurations.
On the command line we only need to select one configuration. - Partial support for TIFF files. Bmeps can use all the TIFF files which
can be read using the TIFFReadRGBAImage() function from the
libtiff library.
The goal was to convert TIFF files generated by a fax gateway to PDF for better viewing. This was tested successfully.
- Bugfix August 25th, 2006 (bmeps 1.2.7)
- Previous versions of bmeps did not handle grayscaled JPEG images properly. This is fixed now.
- Java-based GUI added June 15th, 2006 (bmeps 1.2.6)
- A Java based GUI was added. JRE 5 and dklibs 1.11.2 are needed to use the bmeps GUI.
- Documentation update March 30th, 2005 (bmeps 1.2.5)
- The man page was updated to show the -t option too.
- Bugfix March 22th, 2005 (bmeps 1.2.4)
- License change: This project uses a BSD-style license now.
- Previous versions returned a wrong exit status code after processing NetPBM files. This is fixed now.
- Update March 15th, 2005 (bmeps 1.2.3)
- Configure script changed again to detect the ranlib program. The previous version did not find it on Mac OS systems.
- Update March 9th, 2005 (bmeps 1.2.2)
- Short summary:
- Problems with missing invokation of ranlib fixed.
- Configure script searches for the DOS/Windows-specific version of setmode().
- Details:
- The ranlib program.
I was notified that on some systems a simplear <library> <object(s)>
is not sufficient to build a library, an additionalranlib <library>
is necessary.
The ranlib commands were added to the Makefile(s). - The setmode() function.
On DOS/Windows systems there is a functionint setmode(int, int); int _setmode(int, int);
which can be used to force binary mode for a filedeskriptor.
BSD systems have a functionvoid *setmode(const char *);
which has something to do with converting a file permission string to mode_t settings.
Simply checking for the presence of a setmode() function in the configure script is not sufficient, a new preprocessor definition HAVE_DOSWIN_SETMODE was added. The configure script tries to compile test code. When building DOS/Windows versions without the configure script the definition is taken from dkconfd.h, it is activated if either __BORLANDC__ is defined or _MSC_VER > 1100. When using other compilers without running the configure script you should set the definition manually.
- The ranlib program.
- Short summary:
- Update February, 17th 2005 (bmeps 1.2.1)
- As the ${prefix}/share directory is a better place for documentation than ${prefix}/lib the bmeps.pdf file is installed there.
- Bugfix and API-change February, 8th 2005 (bmeps 1.2.0)
- Short summary:
- Previous versions of bmeps silently ignored corrupted input files. This is fixed now.
- In some situations the program dumped core when processing a corrupt PNG file. This is fixed now
- A command line option "-V" was added for verbose mode. In the EPSOUTPUT environment variable use the character "V" to enter verbose mode.
- If the input file is corrupt an error message is printed as PostScript comment to the output file.
- New functions were added to the library:
- void bmeps_set_verb(int);
int bmeps_get_verb(void);
can be used to set verbose mode and to check whether verbose mode is enabled. - void bmeps_set_app(int);
int bmeps_get_app(void);
can be used to set "normal application" mode and to check for this mode. Most applications should usebmeps_set_app(1);
before converting the first image. - void bmeps_show_error_text(FILE *, char **);
prints error messages. This function is invoked from the image processing modules.
- void bmeps_set_verb(int);
- Details:
- The libpng library uses the setjmp() mechanism. If an
error is encountered in an input file the jmpbuf component of
png_struct type is used. It is necessary to initialize this
component using
if(setjmp(pp->jmpbuf)) { /* error recovery */ } else { /* normal processing */ }before running png_init_io().
Previous versions of bmeps did not do that. - Previous version of bmeps silently ignored errors in input files.
On error a zero length output was created.
This version writes error messages as PostScript comments to the output. If verbose mode is enabled ("-V" option or "V" character in EPSOUTPUT) the error messages is also written to stderr. - Application programmers should set "normal application" mode for error messages. "Normal" means that error messages start at the beginning of lines. Some "special" applications (i.e. dvips -- for which libbmeps is intended) need an additional Newline before the error message begins.
- The libpng library uses the setjmp() mechanism. If an
error is encountered in an input file the jmpbuf component of
png_struct type is used. It is necessary to initialize this
component using
- Known issues:
- The library functions reading NetPBM images exit when processing corrupt NetPBM images. This can not be fixed in libbmeps because the exit() is run from the NetPBM library functions.
- Short summary:
- Update January, 12th 2005 (bmeps 1.1.1)
- A VB macro was provided by Krishna Kant to export MS excel charts to EPS by first exporting the charts to PNG files and running bmeps on them. The macro is placed in contrib/kant_krishna/excel_to_eps.vbs.
- No further changes to the code.
- Update September, 7th 2004 (bmeps 1.1.0)
- The file "Makefile-shared-solaris-workshop" is created by "configure"
to build libbmeps as a shared library on Solaris using the Workshop
compiler.
Dealing with shared libraries is recommended only for advanced users, developers and those people creating binary installation packages for Linux distributions or LaTeX distributions. For normal users I recommend to build a static library and binary as usual. - One user requested an option to use the same resolution in the EPS
output as specified in the PNG files pHYs chunk. Use
command line option -q
or EPSOUTPUT character e.
Use of this feature is not recommended when producing EPS images for use with LaTeX or DTP applications. But it might be usefull to create images for standalone viewing.
This feature is new (and not yet well-tested, let's say beta-level). - API change in the libbmeps library:
An additional parameter usr (use resolution) was added to the bmeps_setup() function.
A new function bmeps_set_gsave_done() was added indicating that "gsave" was already printed. This function sets a module-internal static variable in bmeps.o which is reset automatically.
- The file "Makefile-shared-solaris-workshop" is created by "configure"
to build libbmeps as a shared library on Solaris using the Workshop
compiler.
- Update August, 16th 2004 (bmeps 1.0.10)
The configure script was changed as suggested by Ralf Corsepius to allowing linking against different versions of the NetPBM library/libraries (either "-lpnm -lppm -lpgm -lpbm" or "-lnetpbm").
Anders Lennartson suggested to provide a makefile to build a shared library libbmeps.so. As the compiler flags to build shared executables differ between gcc and other compilers (i.e. Sun Workshop) we use different makefiles. They are named "Makefile" to build a static binary and "Makefile-shared-xxx" for using shared libraries. At this time there is only a "Makefile-shared-linux".
Dealing with shared libraries is recommended only for advanced users, developers and those people creating binary installation packages for Linux distributions or LaTeX distributions. For normal users I recommend to build a static library and binary as usual. - Update July, 26th 2004 (bmeps 1.0.9)
For bmeps 1.0.9 and above bmeps does not use the showpage operator by default. You can turn the showpage operator on using the -o option (or the h character in the EPSOUTPUT environment variable or the -I dvips option).
For PS level 2 and above the dictionary entries /pstr and /inputf are removed from the currentdict dictionary.
A separated dictionary can be used for /pstr and /inputf for PS level 2 and above by specifying the -u option (or using the u character in EPSOUTPUT).
Garbage collection in the local memory can be forced by adding a "1 vmreclaim" line using the -r option (or the v character in EPSOUTPUT). - Bugfix July, 19th 2004 (bmeps 1.0.8)
Two bugs were found and fixed:- Memory leak in the pnmeps module.
Memory was allocated for the PNM image but not released. - Uninitialized pointers in the jpgeps module
The colormap pointers were set to NULL instead of the color maps.
- Memory leak in the pnmeps module.
- Upgrade June, 9th 2004 (bmeps 1.0.7c)
File "makefile.msc" added. - Upgrade June, 18th 2003 (bmeps 1.0.7)
Support for using bmeps.exe as a filter on Windows systems was fixed. When running as a filter the program uses the setmode() function to switch standard input into binary mode. - Upgrade May, 5th 2003 (bmeps 1.0.6b)
Suggestions for modifications to dvips 5.92 were added. A .spec file for RPM creation was provided by Guido Gonzato. - Upgrade November, 18th 2002 (bmeps 1.0.6a)
Some users asked for a Win32 static binary to avoid DLL version collisions. I added it, it is in the WIN32BIN\static directory.
The WIN32BIN\dynamic directory contains a dynamic binary and the DLLs needed to run it. - Upgrade November, 6th 2002 (bmeps 1.0.6)
- In the LaTeX newsgroups I found the information that the TIFF graphics
format uses LZW compression. The LZW compression algorithm is covered by
a patent, it must not be used without obtaining a license.
TIFF support in bmeps used the libtiff library without LZW compression kit, bmeps failed to convert LZW compressed images.
TIFF support was removed. - The HTML documentation was updated, clicking on a sample option set in usage.html brings you to a sample output page.
- In the LaTeX newsgroups I found the information that the TIFF graphics
format uses LZW compression. The LZW compression algorithm is covered by
a patent, it must not be used without obtaining a license.
- Upgrade October, 8th 2002 (bmeps 1.0.5)
- Added suggestions for a modified dvips(k) 5.90a.
- Example PS output files in DOCU/EXAMPLES updated to reflect the output of the current bmeps version (I did not do this since December 2000).
- UpgradeSeptember, 3rd 2002 (bmeps 1.0.3)
Win32 binary versions of bmeps.exe now use DLLs for the used libraries. - Bugfix March, 6th 2002 (bmeps 1.0.2)
In former versions I misunderstood something in the Adobe DSC specification.
Recent versions of Ghostview/Ghostscript complained about my errors and exited.
I corrected my errors:- procedure declaration now between BeginProlog/EndProlog instead of BeginSetup/EndSetup and
- Page: Image1 1 instead of Page: 1 1.
- Update June, 15th 2001 (bmeps package)
The configure scripts for both bmeps and the dvips modifications were renewed.
The former configure scripts sometimes failed to find the NetPBM-library. - Update February, 20th 2001 (bmeps package)
Documentation enhanced, step-by-step guide how to build a Win32 version in HTML documentation (faq.html). - Update February, 16th 2001 (bmeps package)
Support for PNM/PPM/PGM/PBM enabled by using the netpbm-9.2.tgz library. - Update December, 18th 2000 (bmeps package)
Documentation enhanced. Examples for alpha channel usage.
No new functionality. - Update September, 21th 2000 (bmeps package)
Features added to alpha channel support. Alpha channel support is not longer experimental. - Update September, 20th 2000 (bmeps and dvips package)
Dictionary images are now used for masked images only. - Update+Bugfix September, 19th 2000 (bmeps package)
Support for PNG alpha channels was added on some users request. This support is still experimental.
The alpha channels contents must be mapped to simple draw/mask decision in EPS level 3. Every pixel having some opacity is drawn.
Furthermore two bugs were detected and fixed:- Grayscaled PNGs were not processed properly.
- The version information showed the names of all the used libraries except zlib.
- Update September, 7th 2000 (dvips and libbmeps package)
Support for the JPEG file format was added using the Independent JPEG Group's Free Software. - Change September, 6th 2000 (libbmeps package)
A special configuration header bmepsco.h was introduced for easier configuration on systems where ./configure cannot be run. - Bugfix September, 5th 2000 (libbmeps package)
Tom Kacvinsky detected an error when using flate decoding.
Parts of the image were offset and colors were changed.
I rewrote the flate encoding parted completely and improved it a little bit to get it faster. Fortunately the bug disappeared. - Bugfix September, 4th 2000 (libbmeps package)
Added include files sys/types.h and string.h for size_t type and str... prototypes. - Change August, 28th 2000 (dvips package)
A directory pngdocu was added containing a copy of these HTML pages. - Change August, 22th 2000 (libbmeps package)
bmeps-1.19.tar.gz
The bmeps program is changed. It now uses the EPSOUTPUT environment variable to retrieve default settings before command line options are processed.
This variable can have the same contents as the option string argument given to -I.
Example:
#! /bin/csh
setenv EPSOUTPUT 2gr8
can be used to specify PS level 2, grayscaled printing, run-length and ASCII-85-encoding. - Change August, 18th 2000 (libbmeps and dvips package)
bmeps-1.17.tar.gz / dvips-5.86-png-1.3.tar.gz
Some cleaning up in the sources, configure scripts... - Bugfix August, 16th 2000 (dvips package)
dvips-5.86-png.tar.gz
The changes introduced yesterday contained a bug.
The 1:1 copy of unknown file types was disabled.
The solution is to call a filename checker function for handler table entries with wildcard file name extension "*". - Change August, 15th 2000 (libbmeps and dvips package)
Changes to separate the bitmap to EPS conversion code in library bmeps.
Adding support for further bitmap types now requires changes in the library only, not in dvips.c or output.c. - Release August, 9th 2000
First version released.
