- Fixed a bug where vertical offsets and cropping were ignored when
images are downsampled.
- Threads code should now work on Win32
- SearchPath class renamed to avoid Win32 name clash
- Resolved a couple of other Win32 build issues
- Hopefully fixed custom page size bug for borderless mode
- Fixed a resolution bug in the TIFF loader - a decimal point in
the wrong place!
- Hopefully fixed a papersize bug which afflicted papersizes not
normally known to Gutenprint, but specified within a PPD file.
- ProfileManager can now use the LCMS inbuilt sRGB profile.
- Added physical size and resolution information to the ImageInfo
- Fixed a bug with high-res previews and rotation.
- Effects are now copied when duplicating images.
- Nasty exception-handling bug in the multi-threaded high-res
- Single layout supports fractional percentage scaling.
- Fixed some minor errors causing compilation problems in some
instances. Thanks for Hubert Figuiere for pointing these out and
supplying a patch.
- Fixed broken compilation if libcups-devel is missing.
- Configure script will now bail out if either libtiff or libjpeg
- Added ability to save 16-bit data to TIFFSaver and export.
- Reworked ProfileSelector to show Descriptive names rather than
filenames, and to use tooltips rather than a separate label box to show
ancillary information (i.e. the filename).
- Vastly improved implementation of the Downsample filter - no
longer results in dark edges when the reduction is slight, and no
longer slightly darkens the whole image.
- Fixed an FD leak in the ImageInfo widget that would lead to a
crash after several hundred refreshes of the Manual and Poster layouts.
- Added a pixbufview widget, which will be used to implement Print
- BMP Loader can now handle 32-bit RGBA BMP files.
- Print Setup dialog now hides inactive options, rather than merely
greying them out.
- Added copy constructor and better handling of virtual profiles to
- Support for high-resolution previews. The low-res previews
are used initially for speed, then a sub-thread renders a
high-resolution preview. Lots of "interesting" issues still to resolve
with the introduction of multi-threading!
- Created a new RWMutex similar to pthreads rwlocks but explicitly
capable of dealing with recursion, and mixing lock types.
- Effects are now properly applied to low-res previews before the
final colour management transform - thus images rendered grey by the
Desaturate widget now correctly mimic paper-white/grey in Simulate
- Images can now be duplicated on the page - both singly and to
fill the page.
- Improved performance of the high-resolution rendering thread
- Scaling routines are now split into separate horizontal and
vertical stages so the image processing engine can now use different
filters for the two dimensions.
- Previews with alpha channel now composite against the correct
background colour (only makes a difference in Paper-simulation mode).
- Support added to the Montage routine for RGBA colour space -
needed to fix the above for the Carousel preview.
- Started reorganising User Interface. Layout controls are
compact. Frames have been replaced with expanders, to allow the
right-hand pane to be better used with image manipulation
controls. There are some new, and hence untranslated UI strings
in this release, and some of the existing strings have changed.
There will probably more changes to come, so while any updated
translations are very welcome, they may need updating again before too
- Hopefully fixed a papersize bug.
- The Rotation and Allow Cropping settings are now stored in the
preset files, and are thus now usable in batch mode.
- Fixed a bug in the Dimension widgets when working in Points.
- JPEG Export dialog no longer suggests "exported.tif" as a
- JPEG Export dialog now contains a spin button for setting the
- The background image preview now works again.
- Added an ImageInfo widget which displays the filename, dimensions
and applied colour profile of a selected image.
- Now displays a dialog on preset loading if the printer queue
specified in the preset doesn't exist, allowing the user to change
queues in this case without resetting the printer settings.
- Fixed a segfault upon 180-degree rotation of large images.
- Fixed a problem with CMYK->RGB conversion in the thumbnail
- Re-worked the EffectSelector widget, and embedded it into the
main control panel.
- Refactored a lot of the Effect-handling code, and created a new
widget for the Colour Temperature changer.
- Fixed a bug in the Carousel mode which sometimes prevented images
- Unavailable image operations are now correctly greyed out in the
- Added Unsharp Mask effect.
- Effects can now be applied to multiple images simultaneously.
- Now uses CUPS, if available, to enumerate the available printer
- Fixed a segfault in the rotation routines.
- Fixed a problem with the TIFF Loader - it now loads the first
page of multi-page images, instead of the second. This was
causing the thumbnail rather than the main image to be used in some
- Portuguese (Brazilian) translation added. Many thanks for
Krishnamurti Lelis Lima Vieira Nunes for this. Krishnamurti's
translation will currently be used both by Brazilian and European
Portuguese locales - if anyone would like to adjust the European
translation to better suit the European style it would be much
- Fixed a bug which caused a floating-point exception at startup if
there was no default.preset file.
- Spanish translation added. Many thanks to Redy Rodriguez
- Can now fetch a profile attached to a display, using the
_ICC_PROFILE atom described by Ross Burton's XICC
specification. (X11 only - does anyone know how to do the
equivalent under Win32?)
- Embedded profiles in JPEG images are now used.
- First stab at an effects dialog, allowing various modifications
to an image on the page. Currently implemented:
- Desaturate - replace each of RGB with (R+G+B)/3.
- Cool/Warm - uses LCMS virtual profiles to adjust the
colour temperature of an image. Very useful for black-and-white
photographs, if you wish to print them cooler or warmer than your
printer's neutral grey. (Yes, I know this dialog sucks - it
will be replaced with something better in due course!)
- Migrated the menus to GtkUIManager for easier translation.
Menus are now translated.
- Custom media sizes and roll papers are now supported - but not
- Fixed bug in queue selector - custom command entry now shows up
if custom command is the initial setting.
- Now sets the LC_ALL environment variable to "C" before building
the queue list, fixing a parsing problem of lpstat's output when
- Fixed a unit-handling bug in the dimension widget.
- Full translations now included for Russian and French. Many
many thanks to Alexandre Prokoudine and Séverin Lemaignan for
their translation work.
- Reduced the memory usage of N-up mode during printing and export.
- Fixed 180-degree rotation bug
- PPD file now fetched using CUPS when a Postscript-based queue is
- PrintingMode parameter now set to "Color" at print time. (Fixed
segfault with PS driver).
- Now includes a .desktop file (thanks to Alexandre Prokoudine) and
- Fixed profile selector - no longer bombards the user with file
dialogs if no profiles are found on the system!
- Now uses a high-quality DownSample filter when reducing images,
unless Nearest Neighbour is specified.
- Full print proofing is now possible - by way of a new option menu
in the colour management dialog.
- The options for "Display Mode" are "Normal" - i.e no proofing,
"Simulate Print" - a proofing transform, using Absolute Colorimetric,
and "Simulate Print, Adapt White" - proof using Relative Colorimetric.
- Fixed the call to wait() in stp_util/printerqueues_unix.c
- The queue handler can now capture output to a file; the unix
version can send the print data to a custom command.
- New, general purpose queue selector widget - allows the user to
select between the detected printer queues, and two special purpose
queues - <Print to file> and <Use custom print command>
(UNIX only). If the custom command option is selected, the widget
will make a text entry available for entering the custom
command. No entry is made available for the Print to File
option - instead, a callback is used to fetch a filename at
run-time - which PhotoPrint links to a file chooser in save mode.
- Save dialog now prompts you to confirm before over-writing an
- Fixed problem with inverted image masks! Thanks to Joel
Swartz for the bug report.
- Added tooltips to the IntentSelector widget, to provide a short
description of each rendering intent.
- Print proofing mode now adjusts the "paper white" as well as the
- Internationalization support. Just a partial Russian
translation so far - many, many thanks to Alexandre Prokoudine for
this, and for prodding me into implementing i18n - the infrastructure
is now largely present, and most of the strings are marked for
translation. I'm bound to have missed some, though - so bug
reports and more translations are *very* welcome! Note that
currently the menus are marked for translation, but will not actually
- Now builds and runs under Win32 (mingw)
- Added new printer queue management routines in a new
stp_support library. This handles the unpleasant details of
getting the raw data to the printer and abstracts away the differences
between UNIX and Windows queue handling.
- Modified the searchpath code to deal with Win32 path
- Modified the thumbnail code to deal with Win32 absolute
- Modified thumbnail code again - now uses
- Created new routine to substitute the user's homedir into a
path or filename. Will be used throughout to improve Win32
- Save Default menu item now stores the window geometry in
- Now uses new GtkFileChooser instead of GtkFileSel - and
hence requires GTK+ 2.4 or newer.
- TIFF export is now much more flexible. There is now a
dialog for setting the range of pages to be printed, the resolution,
and optional output colour profile.
- Layout view is now colour-managed.
- TIFF Export now embeds the colour profile in the generated
- Worked around a problem with the pipe-to-print-command code
- should prevent alternate print jobs failing on some systems.
- Can now tag images with a custom profile, and set the
rendering intent individually.
- Improved the performance of the ProfileSelector widget.
- Added preliminary support for PPDs when using the
- Cancelling a print job no longer results in "Unable to
generate print data" error message.
- Cancelling a print job now actually *cancels* the job!
- Greyscale images now work when printing to a CMYK device.
- Hopefully fixed a segfault which showed up on some systems
when there was no .photoprint directory.
- Added support for "panning" cropped images - you can now
click-and-drag a cropped image to re-frame it.
- Added support to the n-up layout for a background image.
- Added a path selector for background images.
- The ImageSelector widget (used for borders and backgrounds)
now supports drag'n'dropping an image.
- Added a dedicated ProfileSelector widget
- Created a PathEditor widget
- Created an ImageSelector widget (used for selecting masks)
- Added a new "Paths" dialog for selecting profile and border
- Batch mode works again
- Various bug fixes and code refactoring.
- Support for DeviceLink profiles
- Major re-work under the hood of profile management
- Various bug fixes
- Version is now encoded in preset files.
- Multi-selection is now supported.
- A new "Image" menu duplicates the functionality of the
- Greyscale images are now "promoted" to RGB.
- Greater control over image rotation is now possible
- Various bug-fixes
- Fixed an uninitialised variable that was wreaking havok in
- Created a search-path system for the ICC profiles.
The program will now use the following search paths by default (in this
- When a profile is selected in the file selector, its path
is checked to see whether it's in any of the standard paths. If
so, the path component is removed. The paths are checked one by one to
locate the profile when it's needed. (This makes sharing preset files
much easier, since the path to the profile is no longer absolute.)
- Added #include <math.h> to imagesource_segmentmask.cpp