Restructured library documentation
diff --git a/Doc/libimgfile.tex b/Doc/libimgfile.tex
new file mode 100644
index 0000000..99efaf4
--- /dev/null
+++ b/Doc/libimgfile.tex
@@ -0,0 +1,63 @@
+\section{Built-in module \sectcode{imgfile}}
+\bimodindex{imgfile}
+
+The imgfile module allows python programs to access SGI imglib image
+files (also known as \file{.rgb} files).  The module is far from
+complete, but is provided anyway since the functionality that there is
+is enough in some cases.  Currently, colormap files are not supported.
+
+The module defines the following variables and functions:
+
+\renewcommand{\indexsubitem}{(in module imgfile)}
+\begin{excdesc}{error}
+This exception is raised on all errors, such as unsupported file type, etc.
+\end{excdesc}
+
+\begin{funcdesc}{getsizes}{file}
+This function returns a tuple \code{(\var{x}, \var{y}, \var{z})} where
+\var{x} and \var{y} are the size of the image in pixels and
+\var{z} is the number of
+bytes per pixel. Only 3 byte RGB pixels and 1 byte greyscale pixels
+are currently supported.
+\end{funcdesc}
+
+\begin{funcdesc}{read}{file}
+This function reads and decodes the image on the specified file, and
+returns it as a python string. The string has either 1 byte greyscale
+pixels or 4 byte RGBA pixels. The bottom left pixel is the first in
+the string. This format is suitable to pass to \code{gl.lrectwrite},
+for instance.
+\end{funcdesc}
+
+\begin{funcdesc}{readscaled}{file\, x\, y\, filter\, blur}
+This function is identical to read but it returns an image that is
+scaled to the given \var{x} and \var{y} sizes. If the \var{filter} and
+\var{blur} parameters are omitted scaling is done by
+simply dropping or duplicating pixels, so the result will be less than
+perfect, especially for computer-generated images.
+
+Alternatively, you can specify a filter to use to smoothen the image
+after scaling. The filter forms supported are \code{'impulse'},
+\code{'box'}, \code{'triangle'}, \code{'quadratic'} and
+\code{'gaussian'}. If a filter is specified \var{blur} is an optional
+parameter specifying the blurriness of the filter. It defaults to \code{1.0}.
+
+Readscaled makes no
+attempt to keep the aspect ratio correct, so that is the users'
+responsibility.
+\end{funcdesc}
+
+\begin{funcdesc}{ttob}{flag}
+This function sets a global flag which defines whether the scan lines
+of the image are read or written from bottom to top (flag is zero,
+compatible with SGI GL) or from top to bottom(flag is one,
+compatible with X).  The default is zero.
+\end{funcdesc}
+
+\begin{funcdesc}{write}{file\, data\, x\, y\, z}
+This function writes the RGB or greyscale data in \var{data} to image
+file \var{file}. \var{x} and \var{y} give the size of the image,
+\var{z} is 1 for 1 byte greyscale images or 3 for RGB images (which are
+stored as 4 byte values of which only the lower three bytes are used).
+These are the formats returned by \code{gl.lrectread}.
+\end{funcdesc}