//docs/MPImage.doc/--background--


 Version 7.3 - fixed enforcer hit when no progress requester.
             - Opens locale.library(38) to work on OS3.0.

 MPImage.library lets you load save and process images.

 Stuctures/Formats:

  RGB Chunky    This is held as seperate Red Green and Blue
                UBYTE *, with a Width and Height
  Grey Chunky   This is held as one Grey UBYTE * (often called
                red), with a Width and a Height.
  Palette       This is held as one UBYTE[768] (sometimes called
                red, a Width and Height, and a UBYTE *Palette. The
                palette holds the red palette in [0] to [255],
                the green palette in [256] to [511] and the blue
                palette in [512] to [767]. There may also be a
                camg (or modeid) and a number of colours, or
                number of planes. These are required for EHB and
                HAM images.
  Bitmap        A normal planar bit map. This also has other
                fields as for Palette.
  EGSBitMap     A standard EGSBitMap.
  MPImage       This holds one of RGB, Grey, Bitmap or EGSBitMap.
  MPProcess     This holds the RGB pointers and width and height.
                It is used for some processing functions.

 Image Loading:

  LoadMPImage()   Loads an image from disc/clipboard.
                  It loads various formats.
                  Returns BitMap, RGB, GreyScale or EGSBitMap.

 Image Saving:

  SaveMPImage()   Can save RGB/GreyScale to disc.
                  It saves in various formats.

 ImageScaling:

  RescaleMPImage() Scales a loaded image (any format).

 Displaying Images

  SaveMPImage()    Can display RGB/GreyScale Buffers.

 Miscellaneous:

  FreeMPImage()         Frees a loaded image.
  SetMPImageScreen()    Sets the screen for the progress requester.
  MPProgressHook()      Sets a progress hook for messages.
  MPImageErrorMessage() Returns the last error message.

 Planar/Chunky Conversion:

  MPPlanarToChunky() Converts a BitMap to a chunky buffer.
  MPChunkyToPlanar() Converts a chunky buffer to a BitMap.
  SaveMPImage()      Can convert RGB Buffers to a BitMap.

 Image processing:

  Image processing is done on chunky buffers; RGB, GreyScale
  or Palette based. The following convert between these formats.

  MPGreyToPal()  GreyScale to Palette.
  MPPalToGrey()  Palette to GreyScale.
  MPPalToPal()   Palette to a different Palette.
  MPPalToRGB()   Palette to RGB.
  MPRGBToGrey()  RGB To Grey.
  MPRGBToPal()   RGB To Palette.

  Buffers can also be scaled:

  MPScaleGrey()  Scales one buffer.
  MPScaleRGB()   Scales 3 buffers.
                 Same as 3 calls to MPScaleGrey() but faster.

 Summary:

 Input                            Output Format
 Format   !Disc! RGB !Gray !Palette!BitMap!EGSBitMap!MPImage!Screen
 ---------!----!-----!-----!-------!------!---------!-------!------
 Disc/Clip!    !1*   !1*   !       !1*    !1*       !1      !
 RGB      !2   !13,3*!10   !11     !2     !         !       !2
 Gray     !2   !x    !12,3*!6      !2     !         !       !2
 Palette  !    !9    !7    !8      !5     !         !       !
 BitMap   !    !     !     !4      !3*,o  !         !       !
 EGSBitMap!    !     !     !       !      !3*       !       !
 MPImage  !2+  !+    !+    !#      !+     !+        !3      !2+

  1 - LoadMPImage()
  2 - SaveMPImage()
  3 - RescaleMPImage()
  4 - MPPlanarToChunky()
  5 - MPChunkyToPlanar()
  6 - MPGreyToPal()
  7 - MPPalToGrey()
  8 - MPPalToPal()
  9 - MPPalToRGB()
 10 - MPRGBToGrey()
 11 - MPRGBToPal()
 12 - MPScaleGrey()
 13 - MPScaleRGB()
  * - As part of an MPImage
  + - Depends on parameters to LoadMPImage
  x - Easy - no function supplied
  o - See BitMapScale()
  # - Depends on LoadMPImage, use 11,6,8 or 4