packages icon
xpcd 2.0
========


what is xpcd ?
--------------

xpcd is an X11-based Program for handling PhotoCD-images. You can select the
images with your mouse, preview the image in a small window, and load the
image with any of the 5 possible resolutions. You can also select a part of
the Image with your mouse and load only the selected part.


what is here ?
--------------

libpcd -- a library for photocd decoding
test   -- some simple test programs for libpcd: svgalib viewer, converter,
          simple gimp (0.54) plugin (standalone)
xpcd   -- xpcd source code, a gimp (0.99) plugin (allows xpcd and gimp to
          work hand-in-hand, not useful without xpcd).


howto install ?
---------------

`./configure && make' should compile the package.
The configure script has the usual options (--help lists them).

Compiling xpcd produces one warning (viewer.c, about a not initialized
variable), you can ignore this one. It is a cannot-happen, but gcc
is'nt clever enouth to see this.

With `make try' you can test xpcd without installing it.

`make install' installs nearly everything (exception: the xpcd-gate
plugin, move this from /usr/bin to the gimp plugins dir).

Have tested xpcd with i384-linux and sparc-openbsd, it should compile
without problems on other systems too.

xpcd uses *big* shared memory segments. It tries shared anonymous
mmap()ing first.  If this fails, it tries sysv shared memory.  Many
Systems have limits for the size of sysv shared memory blocks, so you
might run in trouble. If you get "shmget: Invalid argument" errors for
big segments the limit is to small. With linux you can tune the upper
limit in /usr/src/linux/include/asm/shmparam.h (then recompile the
kernel of cource).


what do I need to compile xpcd ?
--------------------------------

required: X11R5+ client libs (IIRC the XtVa*() functions are new in
          R5? xpcd uses them)
optional: Xaw3d - xpcd is tuned for Xaw3d, strongly recommended.
optional: the jpeg library if you want to save jpeg images with xpcd
          (I use version 6)
optional: the tiff library if you want to save tiff images with xpcd
optional: the svgalib for the viewer in the test dir. 1.2.10 works ok,
          hav'nt checked older versions.

The configure script should take care about the optional stuff and
configure xpcd depending on what is installed on your system.


How can I configure xpcd?
-------------------------

Probably not required, xpcd saves (most) settings automatically. Check
the manpage if you want to know how the config file ($HOME/.xpcdrc)
works.


I have a bugfix/new feature/something else for xpcd
---------------------------------------------------

Just mail it. Please include a description what you did and why.
If I think it is useful, I'll include it into the next release.

Please use unified diffs (diff -u). And please don't reformat my
sources, it makes the patches hard to read.


what is new... 
==============

...in version 2.08
------------------

  - bugfix in the internal viewer which caused segfaults if the filename
    had no slash in it.
  - xpcd uses absolute paths now when passing command line arguments to
    allways running instance.
  - removed fbview from the test directory.  This tool is available as
    separate package now. See http://www.in-berlin.de/User/kraxel/linux.html
  - copyed in a newer version of the TAB-complete code
  - some tweaking of the build proccess (configure, Makefiles, rpm spec
    file).  You can build rpms with "rpm -ta xpcd-2.08.tar.gz" now.
  - removed the configure check for gimp 0.54.  Anyone remembers there was
    such a version?  Anyone still using it?


...in version 2.07
------------------

  - minor fixes in xpcd (sets WM_CLIENT_LEADER for all windows,
    icon titles).
  - xpcd-gate displays some help text once it is started, I hope
    it is easier to get xpcd+gimp working now...
  - fbview can display jpeg too.


...in version 2.06
------------------

  - fixed some svgalib problems in pcdview.
  - fbview is much improved.
  - xpcd-gate compile problem fixed.


...in version 2.05
------------------

  - added fbview. Small tool to view images. Much like
    pcdview, but uses a framebuffer device (/dev/fb0)
    instead of svgalib.
  - manpages for pcdview && pcdtoppm (contributed by
    Stephan Alexander Suerken <absurd@debian.org>)
  - bugfix (segfaults if compiled without tiff support)
    from Nicolai Langfeldt <janl@math.uio.no>


...in version 2.04
------------------

  - Makefile bug fixed.
  - tiff fixed, added capability to enable/disable compression.


...in version 2.03
------------------

  - removed some gnu-stuff from the makefiles, it compiles with
    bsd-make out-of-the-box
  - danish translation (thanks to Niels Kristian Bech Jensen <nkbj@image.dk>)
  - few typos fixed
  - tiff support (thanks to Bertrand Petit <elrond@phoe.frmug.org>).
    currently uncompressed files only, compressed files don't
    work. Don't know yet whenever xpcd or libtiff gets this wrong...
  - click&drag scrolling. Click with the mouse into the viewer (button
    1+2) or thumbnails (button 2 only) window and drag the
    content. Really nice feature. But you don't want to try that with a
    remote display unless you have a *real fast* network connection...
  - xpcd's internal viewer and the decoding process pass data using shared
    memory instead of a pipe.
  - Fixed memory management, malloc errors are catched now. Well, not
    really all yet, but at least those for *big* memory blocks.


...in version 2.01 & 2.02 ?
---------------------------

  - few bugfixes
  - included *.xpm files from 1.x (sorry, I just forgot them...)
  - some app-defaults tweaking. 
  - xpcd saves the selected viewer to ~/.xpcdrc
  - added a few lines to the README


...in version 2.0 ?
-------------------

  xpcd is mostly rewritten from scratch. There are some new features,
  others are gone:

new:
  - SPEED: xpcd is faster now
  - xpcd uses its own photocd decoding routines, hpcdtoppm is'n required
    any more.
  - you can access more than one CD, if you open a new one the old is'nt
    closed. Requires _huge_ screen :-)
  - internal viewer, can save ppm + jpeg (jpeg requires the jpeg lib)
  - more than one externel viewer and switching between them at
    runtime possible
  - file dialog boxes have filename completion (using tab)
  - better keyboard support (scrolling with cursor keys, close windows
    with 'q')
  - online help (try the F1 key)
  - if xpcd finds a already running xpcd on startup, it passes the command
    line args to the already running instance.
  - support for gimp >= 0.99
  - RPM packaging support
  - uses the MIT Shared Memory extention
  - full grayscaled images support
  - .xpcdrc config file, autosave for some options
  - started nls support ("export LANG=de; xpcd" should bring up a german
    speaking xpcd). All the nls stuff is done using app-defaults.

    If someone wants other languages too: Feel free to translate the
    strings. Just take the german (Xpcd-de) or english (Xpcd-default)
    file as template and start your work.
    Becauce german is my native language, the german messages are a bit
    slang-ish. For the english messages it should be enougth to understand
    "computer english", but probably there are some mistakes in. BTW:
    corrections are welcome too...

gone:
  - display while loading for the preview images. Yes, looks nice, but
    is too slow with fast cdrom drives.
  - The "1" "2", ... buttons. There is a menu now, you get it by clicking
    with the right mouse button
  - The "dismiss" button too. You can close the windows with your
    window-manager. Or with 'q'.
    Exception: Dialogs. But there is a 'cancel' button and the ESC-Key :-)
  - display gamma corretion.
  - gimp support for < 0.99 (there is a old, simple 0.54 plugin in the tests
    dir. _Theoretical_ it should even compile automatically of you
    have an old gimp version installed, but I hav'nt tested this)

known bugs:
  - I/O-errors kill xpcd with a SIGBUS (BTW: is there a nice _portable_
    way to handle I/O-errors on mmap(2)'ed files?)
  - some errors still catched with "perror(); exit()".
  - you can exit xpcd even if the internal viewer is busy with saving a
    image. You'll end up with a tuncated file.

known *linux kernel* bugs (2.0.29, fixed in 2.1.x):
  - you may get I/O-errors, becauce the kernel sometimes tries to read
    behind EOF, which might be a unreadable sector, and some drives don't
    like this. This is a isofs bug, and in the linux directory is a fix.
    The patch produces some anonying error messages sometimes, they can be
    ignored.
  - If you have a scsi cdrom drive and see the first session of a
    photocd only, you may want to have a look at the other patches in
    the linux directory too.

not completely (re)implemented yet:
  - some small not-required-but-nice features like icon-pixmaps

planned / TODO-List:
  - write more documentation for libpcd

  - maybe let talk xpcd and xpcd-gate using Properties/Selections.
    This would allow them to run on *different* hosts.

--
Gerd Knorr <kraxel@goldbach.in-berlin.de>