HERMES 1.0.3 (c)1998 Christian Nentwich (brn@eleet.mcb.at)
and some assembler routines (c) Glenn Fielder (gaffer@gaffer.org)

This library and all the files enclosed in this package are free software
under the terms of the GNU Library General Public License (LGPL). Please
refer to the included file COPYING.LIB for the exact terms.
----------------------------------------------------------------------------

THIS IS A BUNDLED VERSION OF HERMES, DESIGNED TO WORK WITH PTC FOR X11. I
CANNOT GUARANTEE THAT IT WILL WORK ON ANY PLATFORM APART FROM UNIX / LINUX.
IF YOU WANT TO MAKE HERMES WORK ON A DIFFERENT PLATFORM, YOU HAVE TO GET
THE MAIN ARCHIVE AS SOON AS I'VE RELEASED IT (or send me an e-mail)

Table of Contents

	1. Introduction

	2. Usage

        3. Prerequisites
	     Where to get NASM

	4. Libraries that use HERMES

	5. How to submit bug reports




1. Introduction

  HERMES, named after the messenger of the gods, is a simple library whose 
only purpose is to convert graphic data from one pixel format to another in
the fastest possible way. It was born out of the PTC library. One day the
pixel format routines were removed from PTC and made a library on their own
to speed up development and bug fixing and to encourage other people to use
these routines and contribute to them.

  What we have now is an extremely portable library (it doesn't do any I/O,
so it should compile on a GameBoy :) that can be compiled using either a C
or a C++ compiler, depending on what code you use it with. It is being 
developed using both GNU C and GNU C++ in order to ensure maximum
compatibility with both languages.



2. Usage

  HERMES isn't very useful on its own. It wasn't meant to be, it is developed
to be part of bigger graphics libraries. Check out the next point on 
libraries that use HERMES. Or, alternatively, maybe you wrote your own
graphics library that holds an offscreen buffer and wants its contents
copied to the screen. Then HERMES is your friend as well.

  Maybe you will find Hermes useful in a program of yours.. If so, send me
some e-mail, I'll be quite interested to hear what it is :)

  Unfortunately, there are no manuals to help you with your implementation
yet :) (It isn't hard though, check out Copy.cc in PTC and you'll see an
eight year old can do it)




3. Prerequisites

  First of all, you need a compiler. On unix systems, I have compiled the
library on the following:
    
    - Linux, RedHat 5.0 with gcc 2.7.2
    - Linux, RedHat 5.0 with pgcc 1.0.3a
    - Linux, RedHat 5.1 with egcs 1.0.2
    - Linux, RedHat 5.1 with pgcc 1.1b
    - FreeBSD 2.2.7 with gcc 2.7.2
    - IRIX 6.3 with gcc 2.7.2
    - Solaris with gcc 2.7.2
    - SunOS with gcc 2.7.2

  On x86 architectures, you should REALLY REALLY download nasm so you can
enjoy the handwritten assembler routines. Especially the MMX routines pay
off quite a bit. Nasm is free and can be downloaded at:

	http://www.cryogen.com/Nasm

  Alternatively, go to ftpsearch.ntnu.no and search for nasm.

  I think the latest version is 0.97. Compile and install it (it's straight-
forward). Make sure it's in your path when you start the Hermes configure
script or it won't be found.




4. Libraries that use HERMES

  - Prometheus Truecolour (PTC) obviously uses HERMES. You can get this
    very nice C++ library at http://www.gaffer.org/ptc. Or you can download
    the X11 version at http://www.cs.ucl.ac.uk/students/c.nentwich/ptc

  - Simple DirectMedia Layer (SDL) uses the assembler routines of HERMES.
    Maybe they'll switch to the whole thing one day.



5. How to submit bug reports

  Well, first of all, make sure it *really* is HERMES's fault, not the fault
of the library you are using (If it's PTC X11, go ahead, cause I maintain
both :).
 
  Then please send me the following information: The width, height, pitch
of the source and destination surface you used. The bit depth of the two
modes that were to be converted. And the masks for the colour components
r,g,b, again for the two modes to be converted.

  Mail everything to brn@eleet.mcb.at.

  I know it's not too easy to submit a bug report for this library, you 
probably have to start a debugger to find out everything. (Once you've 
started one, you'll be done quickly though). I can't change that.. I'll
just be pleased even more if somebody DOES submit a bug report and promise
to fix it quickly.


brn (03/10/1998)

