* Changes between versions   -*- mode:indented-text; mode:outline-minor -*-

This file (NEWS) documents the significant changes between all
versions of zgv, with the newest changes first.


* Changes in zgv 3.3

** New features

Support for 32-bit modes; zgv will now use a suitable 32-bit mode as a
kind of substitute 24-bit mode, if a requested 24-bit mode is
unavailable. This is more a bugfix than a new feature though, as zgv
was apparently rather broken on some (all?) cards with 32-bit modes
before. Some of the 32-bit support was based on Matan Ziv-Av's code.

You can now reverse the order in which brightness and contrast are
applied, using `B' or the config file option `bc_order_rev'.


** Bugfixes

Fixed bug where thin images would cause FP exceptions. (This applied
to pictures with aspect ratios wider than 80:1 or taller than 1:60.)
Thanks to Jan Willamowius for finding this one.

Now has a less stupid check-for-high-colour-modes routine.

`zgv -T' now outputs filenames followed by LFs, not spaces. This
should hopefully avoid problems for filenames with embedded spaces, at
least.

Multi-plane (4-bit or 24-bit) PCXs which had runs going across planes
weren't decoded correctly; fixed that.

When updating thumbnails, the "Resampling..." text could previously
have appeared in just about any colour. :-)


** Other changes

vkludge in 8-bit modes is now slightly less accurate (it works with
15-bit RGB values rather than 18-bit ones), but considerably faster.

You can now use R to rename a file, by analogy with C, M, and D for
copy/move/delete. The old alt-r still works, though. (The slideshow
shuffle (randomise) toggle is now only available on S.)

The old `README.src' was renamed to the more reasonable `INSTALL'.


* Changes in zgv 3.2

** New features

The file selector can now run in higher-res modes (800x600, 1024x768,
and 1280x1024). You can change modes with F1/F2/F3/F4, or use the
config file var `fs_startmode' to set the initial mode. The higher-res
selector was Matan Ziv-Av's idea, though I found his approach slightly
confusing so I ended up writing my own code to do it. :-)

You can now have files sorted by `extension', size or last-modified
date/time (using Alt-e, Alt-s, or Alt-d respectively) instead of just
in filename order (Alt-n). Thanks to Jan Willamowius for the
suggestion, but it would be fair to say it's been in the back of my
mind for, oh, it must only be three or four years now. :-) (Matan
Ziv-Av also deserves a mention for reminding me of it.)

Brightness/contrast now work in 15/16/24-bit modes (thanks to Matan
Ziv-Av for this). There's no slowdown if you haven't changed
brightness/contrast (it uses the old display method in that case), but
if you still don't like the idea you can use `hicontrol off' in a
config file to disable it completely.

Brightness/contrast also now work in the 640x480 16-colour mode.

Picture orientation (the effect of mirrors/flips/rotations) can now be
preserved between pictures in various ways. Alt-n reverts to normal
(undoing any mirrors/flips/rotations), Alt-o restores the orientation
which was used for the previous picture, and Alt-s saves the current
orientation to be used for all pictures until you press Esc. Also, the
config file option `revert_orient' can be disabled to always preserve
orientation between pictures. Thanks to Ben Schluricke for the basic
idea behind this (I extended and generalised it a bit).

You can rename a file with Alt-r. Thanks to Matan Ziv-Av (again) for
the code this was based on.

`:' is now much more useful as it shows the file size and
last-modified date/time in addition to the full filename.

The viewer now has separate video-mode help (listing which key
combination gives which video mode) on `/'. (Another of Matan's
ideas.)

Zgv's man page is now automagically generated from zgv.texi. This
effectively brings it up to date and should make it a lot more usable,
which should be good news for everyone out there who hates Info. :-)


** Bugfixes

Previously, zgv segfaulted on (some, possibly all) GIFs which had both
global *and* local colour maps.

Fixed a display bug where you could sometimes have had weirdness after
a file delete or move, or after rescanning a directory where there
were fewer files.

Fixed `-p' bug where mouse pointer position was effectively
uninitialised.

Removed a couple more unnecessary redraws in the selector.


** Other changes

Zgv now only changes mode in the viewer when needed - otherwise, it
just clears the screen. (Thanks to Matan Ziv-Av for the nth time.)

The directory structure in the distribution is now much more sensible.

Removed `-src' from source distribution's filename. :-)


* Changes in zgv 3.1

** New features

Mouse support is much improved. There's a mouse pointer, the file
selector has a scrollbar, you can click on a file to view it, and a
menu appears when you right-click (in both the file selector and
viewer).

Texinfo documentation. It's rather better than the man page, largely
because much of the text has been rewritten. (The man page is still
included, but probably won't be updated in future other than for
really major changes.)

Added support for XBM and XPM files.

Added simple-minded (but working) support for TIFF files. A hint as to
how it works - you need to have netpbm's `tifftopnm' on the path for
the TIFF support to work. :-) (I did it this way as it was dead easy
and I don't like TIFF very much. But there are TIFF files out there,
so *some* sort of support seemed a good idea.)

You can now copy/move the current file or tagged files to a specified
directory using the file selector.

Thumbnail updating is now much faster on large dirs, as the screen is
only redrawn when a thumbnail needs to be created/updated. (There's a
config file option `slowupdate' to get the old behaviour.)

Added `go to file starting with next char' function to file selector,
on `g' and `'' (quote).

Slideshow picture order can now be randomised (shuffled).

Added slideshow pause/resume (on ^S/^Q).

Added `-S' option to set slideshow timeout (like `tagtimeout' in
config file).

Added 24-bit PCX support. I haven't tested this very much (as I just
hacked it in quickly because I didn't like zgv not supporting them)
but it seems to work. :-)

In the file selector you can now use `G' to go straight to a specified
directory.

Added `-w' option, which writes a PPM to stdout instead of viewing a
file, acting as a sort of poor-man's-converter. This is primarily
useful where zgv copes with some images in a given format that (say)
netpbm's filters can't. (This seems to apply to PCX, XBM and XPM.)

Now supports GNU-ish `--help' and `--version' options.


** Bugfixes

Zgv's key-reader routine used to lose keys in some situations; this
was mainly a theoretical problem in the past, but caused real problems
with zgv 3.1's new directory-name input. Fixed that.

Fixed bug in 24-bit image rotate code. Previously the last line ended
up being (in three out of four cases) an `earlier' line.

PBM/PGM/PPM-reading code could previously have dropped into an
infinite loop for certain bizarre kinds of corrupt files with
comments.

When started on (or jumped to) unreadable dir, previously would have
segfaulted if $HOME wasn't set. Now coughs and dies, as it does in the
same situation when the home dir itself isn't readable.

Previously a permission-denied message on a picture moved to with
enter etc. *from the viewer* didn't update the screen, resulting in a
corrupted file selector screen. Fixed that.

Fixed some bugs in help text you get with `-h'.


** Other changes

The file selector now dynamically allocates memory for the directory,
so it should now work with any size dir (previous limit was 4096
files) and shouldn't take up memory it doesn't need. This generally
makes the zgv process several hundred K smaller.

Mouse support now works by using svgalib's mouse interface.

In those cases where vgadisp.c only wants to clear the screen, that's
now all it does (rather than changing mode, setting palette etc. too).
This speeds up a few things a little when viewing an image.

Similarly, the file selector now doesn't redraw the screen unless it
has to (though there are still a few niggling exceptions).

The drawing of the blank background for dialogs is much faster in
16-colour mode now.

Made bitmap fonts the default even for cards without a 640x480
256-colour mode.

Made `thicktext' mode nicer if using bitmap fonts by using a proper
bold font for it.

Added Emacs-style ^B/^F/^N/^P to file selector.

To toggle between colour and greyscale in the viewer's 640x480
16-colour mode, you can now use `c' rather than `C'. This makes it
consistent with the similar toggle in the 16-colour file selector.

Esc now aborts when a single file specified on the command-line is
loading.

Renamed poorly-named `gamma' command/cfg-file-option `fakecols', which
is a much more sensible name for it. :-)


* Changes in zgv 3.0

** New features

Added `mrf' support. Mrf is a 1-bit-mono-only file format I thought up
while thinking about how you could compress such images more
effectively. For some kinds of input (esp. line-art), it compresses
better than GIF or PNG. (I've also written PD convertors to/from PBM -
look for `pbmtomrf'.)

Added bitmap fonts (from X, though you don't need X installed). You
can still get the old line-based font if you want, though.

It now remembers where you were in a directory if you return to it. So
if you go into a subdir then return to the parent dir, the cursor will
be on that subdir.

Added thumbnails for subdirs. These are made up of the first four
files in the dir squeezed together into a single thumbnail. Details in
the man page.

Added support for 1152x864 and 1600x1200 modes. You get at them by
prefixing the function key (F1-F8) with tab. (I can't actually test
these modes, but they should work.)

Zoom mode (for images smaller than the screen) works more sensibly
now, and is roughly twice as fast. (It also happens to fix an
occasional segfault in 320x200 modes - albeit only by completely
replacing the code. An unusual debugging technique, to be sure. :-))

There's now support for the 640x480 16-colour mode in the viewer. It
works by emulating an 8-bit mode, and either displays in greyscale
(default) or in dithered colour.

New `smallfiletext' option which reduces the size of the filename text
in the file selector. You may find this useful if you think the text
is too big or if you'd like to see more of the filename.

Alternatively, you can do `:' in the file selector to display the full
filename of the currently-selected file (or at least, as much as will
fit on a single line).


** Bugfixes

Previously, if errors occurred when zgv was loading a new file while
the old file was still being displayed, the error message appeared
over the top of the old image (which looked terrible). It now changes
modes to display the message if necessary.

The 7-missing-or-junk-pixels problem in 320x200 and 320x240 modes has
been fixed (finally).

Fixed starting-on-unreadable-dir problem.

Previously, if you started with `visual off', the mid-grey colour was
set to the tagged-file colour (i.e. red). Fixed that.

Bugs in usage output (i.e. output from zgv -h) fixed.

Fixed a couple of minor problems with the help pages.

Fixed a few spelling errors in the man page.


** Other changes

Updated png support (better late than never :-)). Apparently it was
terribly out of date before and did bad things for some files; thanks
to Greg Roelofs for pointing this out. Hopefully it's reasonably
up-to-date now, and should work with any future versions of libpng.

Sped directory reading up a little for directories where no files have
any associated thumbnails (i.e. dirs with no `.xvpics' subdir etc.).

The help screens now use 256-colour mode (which is faster) in the same
circumstances as the file selector does (i.e. if the mode's available
and not specifically disabled with the force16fs option).


* Changes in zgv 2.8

** New features

PCX support. (But 24-bit PCXs aren't supported yet.)

Much faster generation of JPEG thumbnails, thanks to Costa
Sapuntzakis.

Optionally ditch the logo to get a proper, full-screen selector, with
`f' or `z', or with `fullsel on' in config file.

Thumbnail files can be viewed like other images, and thumbnail files
are their own thumbnails - this means you can browse thumbnail
directories even if you don't have the images they represent.

`-T' option, to echo tagged files on exit.


** Bugfixes

Thumbnail create/update for read-only media and DOS filesystems fixed.
It previously created all of them each time rather than only doing
those necessary.

Fixed problem with uncleared display when switching from zoom mode to
scaling up.

The switching-from-X etc. now works with kernel 2.0.x. Previously it
hanged. (It should still work with 1.2.x, too.)

Now resets to blocking input even when ^C'ed.

Various documentation `bugs' fixed, e.g. the `c' and `n' keys weren't
previously listed.


** Other changes

ANSIfied the code. This caught a couple of (as it turned out)
innocuous bugs. (Fortuitously, they had no ill effect in practice.)

Updated PNG support to work with libpng 0.81 (and, hopefully, any
later versions).

Sped up viewing in 15/16-bit modes a little.

Incorporated Adam Radulovic's patch to v2.7 allowing more files in the
directory and reducing memory usage.

`TO-DO' renamed to `TODO'. :-)


* Changes in zgv 2.7

** New features

PNG support. PNG is a new format primarily designed to replace GIF. It
has better compression (still lossless), supports 24-bit, and has much
more useful interlacing. It currently can't handle images with alpha
channels, but it should - and as far as I can tell, does - handle
everything else.

'-i' option added, to ignore errors with PNG or GIF files. You should
now be able to view files of all types as they download or are
generated (see the description of the '-i' option in the man page for
details). This is particularly effective with interlaced PNG files,
where you can see a rough image after only 15% of the file has
downloaded.


** Bugfixes

A couple of memory leaks related to aborting the loading of a 24-bit
image on an 8-bit display fixed.


* Changes in zgv 2.6

** New features

Zgv will now load create/update thumbnails in the background. That is,
when you switch to another VC while zgv is updating the index, it'll
keep doing it rather than suspending until you switch back.

Support for TGA files, types 1, 2, 9 and 10 (this should include most
of them; certainly the ones produced by Povray). Heiko Eissfeldt
deserves honourable mention for doing a similar job independently.

Better BMP support (from Carsten Engelmann).

Added support for GIFs with local colour maps, such as those produced
by Ghostscript.


** Bugfixes

Problem with -p fixed. I hope. :-)

File selector bug fixed. If you pressed enter to view a file, then
used ^N or Enter to go through more than a screen's-worth of files,
then exited or reached the end of the list of picture files, it used
to try and undraw the file you started with, which meant the screen
got corrupted.


** Other changes

Now gets through '-Wall -Wno-implicit -Wno-return-type' without
warnings.


* Changes in zgv 2.5

** New features

Mouse support by Edwin Fong. The mouse driving code is from
'selection' by Andrew Haylett.

A few other features by Edwin, mostly to do with tagging and
slideshows, such as slideshows from the command line (e.g. 'zgv
~/graphics/*.jpg').

Windows 3.x BMP support by Carsten Engelmann.

Zgv will now load pictures in the background. That is, when you switch
to another VC while zgv is loading a picture, it'll keep loading
rather than suspending until you switch back.

The visual file selector now works in 16-colour modes. This should be
useful for machines with 'normal' VGA cards rather than SVGA, or for
machines with SVGA cards not supported by svgalib. Due to the
limitation of 16 colours, it operates in greyscale usually, with
optional (poor quality) colour.


** Bugfixes

Avoided 'logs you out on exiting zgv' problem with (some versions of?)
bash.

Fixed automatic mode changing from 320x400 and 360x480 bug.

Fixed 'strange colours' bug with PBM files and vkludge.


* Changes in zgv 2.4

** New features

Zgv now uses version 5 of the IJG's JPEG software. Version four *will
not work* any more, so get version 5 if you're compiling from source.

Added the facility to do 'slide shows'. You tag/untag files using 't'
and 'n' (or 'T' and 'N' for all files in the current directory), and
press Tab to start displaying the files. See the man page for more
details.

Ctrl-P and Ctrl-N now move backward one file and forward one file
respectively. These keys work while viewing a file. The idea is, you
can skip back and forth between files easily without needing to quit
to the file selector. Thanks to Mark A. Pitcher for suggesting this.


** Bugfixes

Stopped errors being reported when a corrupt file is read during
thumbnail index updating. Thanks to David Meyer for pointing this out.

Added '.jpeg' to listed filetypes. Thanks to Alan Shutko for pointing
this out as a common alternative to '.jpg'.


** Other changes

Tnpic has been removed. (It's been pretty much obsolete since version
2.2). If anyone is terribly upset about this, contact me and I'll
consider putting it back or releasing it separately.


* Changes in zgv 2.3

** New features

Zgv can now be run from a non-console tty and still work, provided
there is a free VT available - that is, one without a getty or other
process running on it. (Generally you'll have at least one or two.) If
this is required, it switches to the new VT before starting and
switches back when finished; this gives reasonably transparent
operation from X, Emacs, iScreen, etc. (Redirect stderr to a
non-console to force this behaviour when running from consoles - e.g.
"zgv 2>/dev/null" with bash/ksh/zsh.)

Scaling mode - allows you to 'zoom in' on a picture and pan around the
enlarged image. Also available in 'interpolation between the enlarged
pixels' flavour in 24-bit modes, if you really want your computer to
crawl... :)

PgUp, PgDn and similar all do what you might expect now.

The '-a "command"' option which allows you to use the zgv file
selection front-end while actually invoking some other program when a
file is selected for viewing. At the moment, this is a little rough
around the edges (shell scripts seem to confuse it).

A couple of other small hacks which might be useful, although they
aren't strictly the domain of a picture viewer - the '-s' option
outputs the area of the picture onscreen when Esc is pressed, which
can be useful in constructions like "djpeg foo.jpg|pnmcut `zgv -s
foo.jpg` >blarg.ppm"; and the '-r' option to repeatedly re-read a
picture after a certain timeout.


** Bugfixes

I think I've fixed the 'floating point exception or division by zero'
problem which several people noted. However, I can't test it, so if
v2.3 works on your machine and v2.2 didn't, please email me saying so.

A couple of other, more innocuous bugs fixed.


** Other changes

Added 'force16fs' entry in config file, to force 16-colour mode for
file selector. Designed for use if the 256-colour 640x480 mode is
available from your video card, but for some reason is unusable.

System config. file is now /etc/zgv.conf. /etc/system.zgvrc still
works, but it's best to rename it.

Zgv uses stdin now for keyboard input instead of /dev/tty. (Since
reading output from another process from stdin in graphics mode (along
the lines of "djpeg thingy.jpg | zgv /proc/self/fd/0") doesn't really
work, there was no reason not to; in addition, starting up on a free
VT would be more tricky otherwise.)

Zgv is now distributed under the terms of the GNU General Public
License.


* Changes in zgv 2.2

** New features

Zgv now supports 'xv' format thumbnail files - i.e. it views them
together with filenames on the file selector, and creates them if
asked to. The files created by zgv are compatible with xv. This
requires the 640x480x256 mode.

Added file deletion to file selector; it also deletes any accompanying
xv thumbnail format file.

Added command-line options for zoom, startup mode, etc.


** Bugfixes

[where did all these bugs come from!]

Zgv now opens /dev/tty instead of /dev/tty0. This eliminates any
security hole that needing a world-readable /dev/tty0 might have
caused. If you previously installed version 2.1, you should probably
issue a "chmod go-r /dev/tty0" as root to be on the safe side.

in v2.1, tnpic often segfaulted when loading JPEG files due to a
change in the JPEG reading routine which I forgot to allow for in
tnpic.c (blush).

Zgv segfaulted when trying to load a file which didn't exist - this
has been fixed. It wasn't the canonical dumb segfault bug, it was to
do with files not ending in {.gif,.jpg} being loaded as PNM files, and
free() trying to deallocate a random pointer (two, in fact) when that
couldn't load the file. Oops.

fixed bug on file select screen to do with moving a file or two with
the cursor on an entry past the new number of files (if you see what I
mean), where it previously didn't redraw.

fixed typo in aborted_file_cleanup() which caused nasty transient bugs.

fixed obscure bug in 'zoom' mode.

fixed equally obscure bug in PPM dithering.

bug with vkludge for <256 colour pictures fixed.

fixed bug with 'junk on right-hand side' in (most? all?) standard VGA
modes.


** Other changes

Allows files ending in all caps .GIF and .JPG to appear in the
directory listing also. This was meant to be in v2.1 but wasn't, due
to what can only be described as a clerical error.

Added 'hicolmodes' entry in .zgvrc file. This is to force high-colour
modes if your card - for example - has a 640x480 high-colour mode, but
no 320x200 high-colour mode. This is definitely a kludge, but it's
very tricky/awkward to fix properly.


* Changes in zgv 2.1

** New features

Now supports PBM/PGM/PPM format.

Option to centre pictures on screen (default)

Optional block prompt and thick text, which may help if you find the
file selection screen unclear.

** Bugfixes

Fixed "Directory of ..." bug for long pathnames.

If you had a 15/16/24-bit mode but had 'jpeg24bit off' in your
 /etc/system.zgvrc or ~/.zgvrc file, zgv ignored it. [fixed]

Greyscale JPEGs wouldn't load when you had a 15/16/24-bit mode and had
 'jpeg24bit on'. [fixed, but not as fast as it should be]


* Changes in zgv 2.0

(These changes were relative to zgv 1.3.)

** New features

15/16/24-bit support.

You can now use zgv like 'zgv filename' and it'll view that file, then
quit on Esc.

Proper (i.e. usable) .rc file handling. See the manpage and
sample.zgvrc for details.

Filters out unusable modes (not really sure why it took me so long to
fix this!).


** Bugfixes

Fixed so that zgv displays long filenames truncated instead of messing
up the screen.


** Other changes

Saving of configuration removed. The .zgvrc file is now designed to be
written by the user.

Mono and 16-colour modes no longer used (they never really worked
anyhow).

More documentation (TeX doc. brings together the loose ends, to a
degree.)


