<?xml version="1.0"?>
<fpdoc-descriptions>
  <package name="fcl">
    <module name="FPImage">
      <element name="TFPMemoryImage">
        <short>
          <var>TFPMemoryImage</var> - FreePascal base class for an image held in memory</short>
      </element>
      <element name="TFPPalette">
        <short>FreePascal color palette class; base for LCL TPalette etc.</short>
        <descr>[entire review 2010-13-01 DoDi]</descr>
      </element>
      <element name="TFPCustomImage">
        <short>Abstract FreePascal base class for all image classes.</short>
        <descr>
          <link id="#LCL.intfgraphics.TLazIntfImage">TLazIntfImage</link> is an LCL implementation of this class.

TFPCustomImage only provides an image size and a palette, and methods to load, store and Assign images.
The data storage and handling must be added in derived classes, by overriding the virtual (abstract) methods.

It also provides Extra image attributes (a TStringList).

[entire review 2010-14-01 DoDi]</descr>
        <seealso>
          <link id="#LCL.intfgraphics.TLazIntfImage">TLazIntfImage</link>
        </seealso>
      </element>
      <element name="TFPMemoryImage"/>
      <element name="TFPCustomImageHandler">
        <short>Base class for image handlers.</short>
      </element>
      <element name="TFPCustomImageReader">
        <short>
          <var>TFPCustomImageReader</var> - FreePascal base class for Image reading</short>
      </element>
      <element name="TFPCustomImageWriter">
        <short>
          <var>TFPCustomImageWriter</var> - FreePascal base class for writing image data</short>
      </element>
      <element name="TFPPalette.FData">
        <short>
          <var>FData</var> - local variable to hold data as a Colour Array</short>
      </element>
      <element name="TFPPalette.FCount">
        <short>
          <var>FCount</var> - local variable to hold number of colours in array</short>
      </element>
      <element name="TFPPalette.FCapacity">
        <short>
          <var>FCapacity</var> - local variable to hold total capacity of array</short>
      </element>
      <element name="TFPPalette.SetCount">
        <short>Set the number of colors in the palette.</short>
      </element>
      <element name="TFPPalette.GetCount">
        <short>Get the number of used palette entries.</short>
      </element>
      <element name="TFPPalette.SetColor">
        <short>Set the color of the specified palette entry.</short>
      </element>
      <element name="TFPPalette.GetColor">
        <short>Get the color of the specified palette entry.</short>
      </element>
      <element name="TFPPalette.CheckIndex">
        <short>Perform an bounds check of the supplied index.</short>
        <errors>FPImageException when the index is out of bounds (not 0 </errors>
      </element>
      <element name="TFPPalette.EnlargeData">
        <short>Makes room in the array for more palette entries.</short>
      </element>
      <element name="TFPPalette.Create">
        <short>Creates a palette with ACount color entries.</short>
        <seealso>
          <link id="#rtl.System.TObject.Create">TObject.Create</link>
        </seealso>
      </element>
      <element name="TFPPalette.Destroy">
        <short>Destroys this instance.</short>
        <seealso>
          <link id="#rtl.System.TObject.Destroy">TObject.Destroy</link>
        </seealso>
      </element>
      <element name="TFPPalette.Build">
        <short>Builds the palette from an Image.</short>
        <descr>All pixels in the image are inspected and their unique color values are added to the palette; duplicates are ignored.</descr>
      </element>
      <element name="TFPPalette.Copy">
        <short>Replace the color table by a copy of APalette.</short>
        <seealso>
          <link id="TFPPalette.Merge"/>
        </seealso>
      </element>
      <element name="TFPPalette.Merge">
        <short>Merge the contents of the given palette into the current palette.</short>
        <seealso>
          <link id="TFPPalette.Copy"/>
        </seealso>
      </element>
      <element name="TFPPalette.IndexOf">
        <short>Returns the palette index of the given color.</short>
      </element>
      <element name="TFPPalette.Add">
        <short>Add the given color to the palette, and return its palette index.</short>
        <descr>Duplicate colors are ignored, and the index of the already existing color entry is returned.</descr>
      </element>
      <element name="TFPPalette.Clear">
        <short>Empties the palette.</short>
      </element>
      <element name="TFPPalette.Color">
        <short>The current <var>Color</var> from the palette</short>
      </element>
      <element name="TFPPalette.Count">
        <short>Get or set the number of used palette entries.</short>
      </element>
      <element name="TFPCustomImage.SetInternalColor">
        <short>Set RGBA pixel color.</short>
        <descr>This is a virtual method, that translates the RGBA color into the internal pixel format.

The default implementation converts the RGBA Value into an palette index, which then is stored in the pixel data.

Storage of true RGBA or monochrome colors (not using a palette) has to be implemented in derived classes.</descr>
      </element>
      <element name="TFPCustomImage.GetInternalColor">
        <short>Get RGBA pixel color.</short>
        <descr>This is a virtual method that extracts the internal color representation into a TFPColor, shifting and expanding bits into a TFPColor.

The default implementation obtains the RGBA color from the palette. When true RGBA or monochrome colors are stored as pixel data, this must be handled in derived classes.</descr>
      </element>
      <element name="TFPCustomImage.SetInternalPixel">
        <short>Set the color of a pixel, in its internal encoding.</short>
        <descr>This is an abstract method, expecting color information as an palette index by default, or monochrome or RGBA data encoded as an Integer value.

The color Value must be encoded in the format of the actual image, as defined in its TRawImageDescription.

Applications should use SetInternalColor instead, which converts the given RGBA value into the proper internal encoding.</descr>
      </element>
      <element name="TFPCustomImage.GetInternalPixel">
        <short>Returns the internal (encoded) color value of the specified pixel.</short>
        <descr>For RGBA colors returns the internal (encoded) representation of the color.
For monochrome or palette based images the intensitiy or palette index is returned.</descr>
      </element>
      <element name="TFPCustomImage.SetUsePalette">
        <short>Specifies whether a color palette is to be used.</short>
        <descr>Creates an empty palette if required.</descr>
      </element>
      <element name="TFPCustomImage.Progress">
        <short>Notifies an OnProgress handler.</short>
      </element>
      <element name="TFPCustomImage.create">
        <short>Initializes for an image of the given size in pixels.</short>
        <seealso>
          <link id="#rtl.System.TObject.Create">TObject.Create</link>
        </seealso>
      </element>
      <element name="TFPCustomImage.destroy">
        <short>Frees the palette.</short>
        <seealso>
          <link id="#rtl.Classes.TPersistent.Destroy">TPersistent.Destroy</link>
        </seealso>
      </element>
      <element link="#rtl.Classes.TPersistent.Assign" name="TFPCustomImage.Assign"/>
      <element name="TFPCustomImage.LoadFromStream">
        <short>Loads an image from a stream, optionally using an specific reader.</short>
        <descr>An overloaded version allows to specify an custom image reader.
Otherwise the registered image readers are tried.</descr>
      </element>
      <element name="TFPCustomImage.LoadFromFile">
        <short>Loads an image from an file, optionally using an specific reader.</short>
        <seealso>
          <link id="TFPCustomImage.LoadFromStream"/>
        </seealso>
      </element>
      <element name="TFPCustomImage.SaveToStream">
        <short>Saves the image in an stream, using the specified writer.</short>
      </element>
      <element name="TFPCustomImage.SaveToFile">
        <short>Saves the image in an file, optionally using the specified writer.</short>
        <descr>If no writer is specified, a registered writer is selected based on the file extension.</descr>
      </element>
      <element name="TFPCustomImage.SetSize">
        <short>Set the size of the image in pixels.</short>
        <descr>Override to perform further actions, like allocating memory.

This method also is called when the Width or Height is changed.</descr>
      </element>
      <element name="TFPCustomImage.Height">
        <short>Height of the image in pixels.</short>
      </element>
      <element name="TFPCustomImage.Width">
        <short>Width of the image in pixels.</short>
      </element>
      <element name="TFPCustomImage.Colors">
        <short>The RGBA color of the specified pixel.</short>
        <errors>FPImageException</errors>
        <seealso>
          <link id="TFPCustomImage.Pixels"/>
        </seealso>
      </element>
      <element name="TFPCustomImage.UsePalette">
        <short>Usage of a color palette (read/write).</short>
      </element>
      <element name="TFPCustomImage.Palette">
        <short>The color palette in use; Nil if no palette is used.</short>
      </element>
      <element name="TFPCustomImage.Pixels">
        <short>The internal color value of a pixel.</short>
        <errors>FPImageException</errors>
        <seealso>
          <link id="TFPCustomImage.Colors"/>
        </seealso>
        <descr>For RGBA colors the value is the internal (encoded) representation of the color.
For monochrome or palette based images, the value is the intensitiy or palette index.

This property is useful when working with monochrome or palette based images. Otherwise <link id="TFPCustomImage.Colors"/> should be used to get or set the decoded RGBA color values.</descr>
      </element>
      <element name="TFPCustomImage.Extra">
        <short>Additional information, not related to the internal image representation.</short>
        <descr>Additional image attributes, organized as a list of strings accessible by name or <link id="TFPCustomImage.ExtraValue">index</link>.

[Missing is a direct reference to the underlying TStringList, for e.g. retrieving the list index of an entry]</descr>
      </element>
      <element name="TFPCustomImage.ExtraValue">
        <short>Image attribute values (strings) by index.</short>
        <descr>Attribute strings also can be accessed by <link id="TFPCustomImage.Extra">name</link>.</descr>
      </element>
      <element name="TFPCustomImage.ExtraKey">
        <short>Image attribute names by index.</short>
      </element>
      <element name="TFPCustomImage.RemoveExtra">
        <short>Removes the named image attribute.</short>
      </element>
      <element name="TFPCustomImage.ExtraCount">
        <short>Returns the number of additional image attributes.</short>
        <seealso>
          <link id="TFPCustomImage.Extra"/>
        </seealso>
      </element>
      <element name="TFPCustomImage.OnProgress">
        <short>Handler for Progress events.</short>
      </element>
      <element name="TFPCustomImageClass">
        <short>Class of <link id="TFPCustomImage"/>.</short>
      </element>
      <element name="PFPIntegerArray">
        <short>Pointer to <link id="TFPIntegerArray"/>.</short>
      </element>
      <element name="TFPIntegerArray">
        <short>
          <var>TFPIntegerArray</var> - definition of integer array for use in images</short>
      </element>
      <element link="#fcl.FPimage.TFPCustomImage.SetInternalPixel" name="TFPMemoryImage.SetInternalPixel"/>
      <element link="#fcl.FPimage.TFPCustomImage.GetInternalPixel" name="TFPMemoryImage.GetInternalPixel"/>
      <element link="#fcl.FPimage.TFPCustomImage.create" name="TFPMemoryImage.create"/>
      <element link="#fcl.FPimage.TFPCustomImage.destroy" name="TFPMemoryImage.destroy"/>
      <element link="#fcl.FPimage.TFPCustomImage.SetSize" name="TFPMemoryImage.SetSize"/>
      <element name="TFPCustomImageHandler.Progress">
        <short>
          <printshort id="TFPImgProgressEvent"/>
        </short>
      </element>
      <element name="TFPCustomImageHandler.TheStream">
        <short>The stream containing the image.</short>
      </element>
      <element name="TFPCustomImageHandler.TheImage">
        <short>The image being read or written.</short>
      </element>
      <element link="#rtl.System.TObject.Create" name="TFPCustomImageHandler.Create"/>
      <element name="TFPCustomImageHandler.OnProgress">
        <short>Progress event handler.</short>
      </element>
      <element name="TFPCustomImageReader.InternalRead">
        <short>
          <var>InternalRead</var> - read specified image from nominated stream</short>
      </element>
      <element name="TFPCustomImageReader.InternalCheck">
        <short>
          <var>InternalCheck</var> - performs check on validity of stream, returns True if OK</short>
      </element>
      <element link="#rtl.System.TObject.Create" name="TFPCustomImageReader.Create"/>
      <element name="TFPCustomImageReader.ImageRead">
        <short>
          <var>ImageRead</var> read specified image from nominated stream; returns the image</short>
      </element>
      <element name="TFPCustomImageReader.CheckContents">
        <short>
          <var>CheckContents</var> - Gives True if contents are readable</short>
      </element>
      <element name="TFPCustomImageReader.DefaultImageClass">
        <short>
          <var>DefaultImageClass</var> - Image Class to create when no img is given for reading</short>
      </element>
      <element name="TFPCustomImageReaderClass">
        <short>
          <var>TFPCustomImageReaderClass</var> - class of 
          
          <var>TFPCustomImageReader</var>
        </short>
      </element>
      <element name="TFPCustomImageWriter.InternalWrite">
        <short>
          <var>InternalWrite</var> - write specified image to nominated stream</short>
      </element>
      <element name="TFPCustomImageWriter.ImageWrite">
        <short>
          <var>ImageWrite</var> - writes given image to stream</short>
      </element>
      <element name="TFPCustomImageWriterClass">
        <short>
          <var>TFPCustomImageWriterClass</var> - class of 
          
          <var>TFPCustomImageWriter</var>
        </short>
      </element>
      <element name="TIHData">
        <short>
          <var>TIHData</var> - data for Image Handler</short>
      </element>
      <element name="TImageHandlersManager">
        <short>
          <var>TImageHandlersManager</var> - class for managing image handlers</short>
      </element>
      <element name="TImageHandlersManager.Create">
        <short>
          <var>Create</var> - constructor fro 
          
          <var>TImageHandlersManager</var>: calls inherited 
          
          <var>Create</var> then constructs list of handlers</short>
        <seealso>
          <link id="#rtl.System.TObject.Create">TObject.Create</link>
        </seealso>
      </element>
      <element name="TImageHandlersManager.Destroy">
        <short>
          <var>Destroy</var> - destructor for 
          
          <var>TImageHandlersManager</var>: frees the list of handlers then calls inherited 
          
          <var>Destroy</var>
        </short>
        <seealso>
          <link id="#rtl.System.TObject.Destroy">TObject.Destroy</link>
        </seealso>
      </element>
      <element name="TImageHandlersManager.RegisterImageHandlers">
        <short>
          <var>RegisterImageHandlers</var> - method for registering Image Handlers</short>
      </element>
      <element name="TImageHandlersManager.RegisterImageReader">
        <short>
          <var>RegisterImageReader</var> - method to register an Image Reader</short>
      </element>
      <element name="TImageHandlersManager.RegisterImageWriter">
        <short>
          <var>RegisterImageWriter</var> - method to register an Image Writer</short>
      </element>
      <element name="TImageHandlersManager.Count">
        <short>
          <var>Count</var> - the number of Image Handlers</short>
      </element>
      <element name="TImageHandlersManager.ImageReader">
        <short>The <var>ImageReader</var> being used</short>
      </element>
      <element name="TImageHandlersManager.ImageWriter">
        <short>The <var>ImageWriter</var> being used</short>
      </element>
      <element name="TImageHandlersManager.Extentions">
        <short>The filename <var>Extentions</var> for the image handlers</short>
      </element>
      <element name="TImageHandlersManager.DefaultExtention">
        <short>The <var>DefaultExtention</var> to be used if no extention is supplied</short>
      </element>
      <element name="TImageHandlersManager.TypeNames">
        <short>A list of <var>TypeNames</var> to be used with the handler files</short>
      </element>
      <element name="TFPColor">
        <short>RGBA color information.</short>
        <descr>This compatible RGBA color representation allows for easy access and manipulation of colors. Concrete images instead will use other (compressed) encodings, which are not suited for direct manipulation.

The TFPColor record contains the Red, Green, Blue and Alpha channel values as left adjusted 16 bit words, with increasing intensity from 0 to $FFFF. Alpha=0 indicates transparent pixels.The internal representation uses the high order bits of these values, as specified by the color Depth of the image description.</descr>
        <seealso>
          <link id="TFPColor"/>
        </seealso>
      </element>
      <element name="PFPColor">
        <short>Pointer to <link id="TFPColor"/>.</short>
      </element>
      <element name="TFPCustomImage.SetHeight">
        <short>Set the image Height in pixels.</short>
        <descr>Calls SetSize, to allow for adjustments of the overall (data) size.</descr>
      </element>
      <element name="TFPCustomImage.SetWidth">
        <short>Set the image Width in pixels.</short>
        <descr>Calls SetSize, to allow for adjustments of the overall (data) size.</descr>
      </element>
      <element name="TFPImgProgressStage">
        <short>State of processing (psStarting, psRunning, psEnding).</short>
        <seealso>TFPImgProgressStage</seealso>
      </element>
      <element name="TProgressStage">
        <short>State of processing (psStarting, psRunning, psEnding).</short>
      </element>
      <element name="TFPCustomImage.GetPixel">
        <short>Returns the internal (encoded) color value of the specified pixel.</short>
        <errors>FPImageException</errors>
      </element>
      <element name="TFPCustomImage.CheckIndex">
        <short>Bounds check of pixel coordinates.</short>
        <errors>FPImageException</errors>
      </element>
      <element name="TFPImgProgressEvent">
        <short>Image processing progress event.</short>
        <seealso>
          <link id="TFPCustomImage.OnProgress"/>
        </seealso>
        <descr>
          <p>Sender: the image object</p>
          <p>Stage: Starting, Running or Ending</p>
          <p>PercentDone: how much has been accomplished</p>
          <p>RedrawNow: whether to refresh the Image</p>
          <p>R: the rectangle in which drawing progress is being monitored</p>
          <p>Msg: a message to show in the progress display</p>
          <p>Continue: set Continue to False to abort image processing</p>
        </descr>
      </element>
    </module>
  </package>
</fpdoc-descriptions>
