<?xml version="1.0" encoding="UTF-8"?>
<!--

Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus 
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0 
International public license.

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
file://../../cc-by-sa-4-0.txt

Copyright (c) 1997-2023, by the Lazarus Development Team.

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
ImgList
====================================================================
-->
<module name="ImgList">
<short>
Contains classes and types used in TCustomImageList, the base class for 
TImageList.
</short>
<descr>
<p>
<file>imglist.pp</file> implements <var>TImageList</var> and 
<var>TChangelink</var> in the Lazarus Component Library (<b>LCL</b>).
</p>
<p>
Original author: Marc Weustink
</p>
</descr>

<!-- unresolved externals -->
<element name="Types"/>
<element name="Math"/>
<element name="SysUtils"/>
<element name="Classes"/>
<element name="RtlConsts"/>
<element name="Contnrs"/>
<element name="ZStream"/>
<element name="Laz_AVL_Tree"/>
<element name="FPReadBMP"/>
<element name="FPimage"/>
<element name="FPImgCanv"/>
<element name="FPCanvas"/>
<element name="LCLStrConsts"/>
<element name="LCLIntf"/>
<element name="LResources"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="LCLClasses"/>
<element name="Graphics"/>
<element name="IntfGraphics"/>
<element name="WSReferences"/>
<element name="GraphType"/>
<element name="FPCAdds"/>
<element name="LazLoggerBase"/>
<element name="LazTracer"/>
<element name="LazUtilities"/>
<element name="AvgLvlTree"/>

<element name="TImageIndex">
<short>Type used for an image list index (integer).</short>
<descr>
Not used in the current implementation. Exists for Delphi compatibility only, 
but is unused there as well.
</descr>
</element>

<element name="TDestroyResolutionHandleEvent">
<short>
Specifies an event handler signalled when images are removed from TImageList.
</short>
<descr>
<p>
<var>TDestroyResolutionHandleEvent</var> specifies an event handler signalled 
when images in a TImageList instance with a specific width are removed. 
TDestroyResolutionHandleEvent is the type used to implement the 
OnDestroyResolutionHandle in TChangeLink.
</p>
</descr>
<seealso>
<link id="TChangeLink.OnDestroyResolutionHandle"/>
</seealso>
</element>
<element name="TDestroyResolutionHandleEvent.Sender">
<short>Image list generating the event notification.</short>
</element>
<element name="TDestroyResolutionHandleEvent.AWidth">
<short>Width of the image being removed.</short>
</element>
<element name="TDestroyResolutionHandleEvent.AReferenceHandle">
<short>Handle for the image list updated in the method.</short>
</element>

<element name="TChangeLink">
<short>
Performs notifications when images are added or deleted in TImageList.
</short>
<descr>
<p>
<var>TChangeLink</var> is a class used to perform notifications when images 
are added or deleted in TImageList. TChangelink provides event handlers that 
are signalled when the image list performs actions requiring the 
notification. TImageList allows multiple objects to subscribe to the change 
notifications, and each subscriber is represented by a TChangeLink class 
instance.
</p>
<p>
TChangeLink instances are passed to TCustomImageList (and descendants) in the 
RegisterChanges method.
</p>
</descr>
<seealso>
<link id="TChangeLink.OnChange"/>
<link id="TChangeLink.OnDestroyResolutionHandle"/>
<link id="TCustomImageList.RegisterChanges"/>
<link id="TCustomImageList.UnRegisterChanges"/>
<link id="TCustomImageList.Change"/>
</seealso>
</element>

<element name="TChangeLink.FSender" link="#lcl.imglist.TChangeLink.Sender"/>
<element name="TChangeLink.FOnChange" link="#lcl.imglist.TChangeLink.OnChange"/>

<element name="TChangeLink.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy ensures that the image list in the Sender property calls its 
UnRegisterChanges method before freeing the class instance. When Sender is 
unassigned (contains <b>Nil</b>), no actions are performed. Destroy calls the 
inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TChangeLink.Sender"/>
<link id="TCustomImageList.UnRegisterChanges"/>
</seealso>
</element>

<element name="TChangeLink.Change">
<short>
Signals the OnChange event handler.
</short>
<descr>
<p>
<var>Change</var> is a procedure used to fire the OnChange event handler. 
Change requires a TNotifyEvent event handler procedure to be assigned to the 
OnChange property to perform the event notification. When OnChange is 
assigned, it is called using Sender as the image list for the notification. 
No actions are performed in the method when OnChange is unassigned (contains 
<b>Nil</b>).
</p>
</descr>
<seealso>
<link id="TChangeLink.OnChange"/>
</seealso>
</element>

<element name="TChangeLink.OnChange">
<short>
Event handler signalled for a change in the image list.
</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property that represents the 
event handler signalled for a change in the image list. OnChange is signalled 
from the <var>Change</var> method.
</p>
</descr>
<seealso>
<link id="TChangeLink.Change"/>
<link id="TCustomImageList.RegisterChanges"/>
<link id="TCustomImageList.UnRegisterChanges"/>
</seealso>
</element>

<element name="TChangeLink.OnDestroyResolutionHandle">
<short>
Event handler signalled when the handle for an image resolution is freed.
</short>
<descr/>
<seealso>
<link id="TChangeLink.OnChange"/>
<link id="TCustomImageList.RegisterChanges"/>
<link id="TCustomImageList.UnregisterChanges"/>
</seealso>
</element>

<element name="TChangeLink.Sender">
<short>
The Image list for change notifications in the class.
</short>
<seealso>
<link id="TCustomImageList"/>
</seealso>
</element>

<element name="TDrawingStyle">
<short>
Defines drawing styles for images.
</short>
<descr>
<p>
<var>TDrawingStyle</var> is an enumerated type with values that control the 
drawing style used for images in TCustomImageList. TDrawingStyle affects the 
blending of the image with its background color when a mask is used in the 
image. These values have no significance when a mask is not present in the 
image. TDrawingStyle corresponds to the style values used in the WIN 
ImageList_Draw API.
</p>
</descr>
<seealso/>
</element>
<element name="TDrawingStyle.dsFocus">
<short>Draws the image background using its focused color.</short>
</element>
<element name="TDrawingStyle.dsSelected">
<short>Draws the image background using its selected color.</short>
</element>
<element name="TDrawingStyle.dsNormal">
<short>
Draw using BkColor for the background, or transparent if BkColor is clNone.
</short>
</element>
<element name="TDrawingStyle.dsTransparent">
<short>Always draw transparently, ignore BkColor and BlendColor.</short>
</element>

<element name="TImageType">
<short>
Indicates if an image contains display data or a mask for its transparent 
parts.
</short>
<descr>
<p>
<var>TImageType</var> indicates if an image contains contains the display 
data from an image or the mask for its transparent parts. The mask controls 
the parts of the image drawn using transparency. TImageType is the type used 
for the TCustomImageList.ImageType property.
</p>
</descr>
<seealso/>
</element>
<element name="TImageType.itImage">
<short>Does not represent a mask.</short>
</element>
<element name="TImageType.itMask">
<short>Contains a mask.</short>
</element>

<element name="TOverlay">
<short>
Represents the valid index positions used to access overlay image assignments.
</short>
<descr>
<p>
<var>TOverlay</var> is a range type with values in the range 0..14. TOverlay 
represents the valid indices that can be used to access images in the list 
that are used as Overlays. The range type mirrors the values available in the 
WIN ImageList_SetOverlayImage API. 0 is normally used when an overlay is not 
needed.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Overlay"/>
<link id="TCustomImageList.HasOverlays"/>
<link id="TCustomImageList.Draw"/>
<link id="TCustomImageList.DrawOverlay"/>
</seealso>
</element>

<element name="TCustomImageListResolution">
<short>
Implements an image resolution (or size) used in TCustomImageList.
</short>
<descr>
<p>
<var>TCustomImageListResolution</var> is a <var>TLCLReferenceComponent</var> 
descendant that implements an image resolution (or size) used in 
TCustomImageList. TCustomImageListResolution (along with 
TCustomImageListResolutions) is the mechanism which makes multiple 
resolutions possible in TCustomImageList.
</p>
<p>
TCustomImageListResolution provides properties that indicate the Height and 
Width of images stored in the resolution. It also contains the 32-bit RGBA 
raw image data for its images, the handle for its image list, and whether the 
resolution was created at design-time. Methods are provided to access and 
maintain the bitmap images (or their masks) used in the resolution. Other 
methods can be used to get the images as bitmaps, icons, or raw image data.
</p>
<p>
TCustomImageListResolution instances are created and stored in a 
TCustomImageListResolutions container. TCustomImageListResolution is the type 
used for the Resolution and ResolutionByIndex properties in TCustomImageList.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.ResolutionByIndex"/>
</seealso>
</element>

<element name="TCustomImageListResolution.FWidth" link="#lcl.imglist.TCustomImageListResolution.Width"/>

<element name="TCustomImageListResolution.FHeight" link="#lcl.imglist.TCustomImageListResolution.Height"/>

<element name="TCustomImageListResolution.FData" link="#lcl.imglist.TCustomImageListResolution.AllocData"/>

<element name="TCustomImageListResolution.FReference" link="#lcl.imglist.TCustomImageListResolution.Reference"/>

<element name="TCustomImageListResolution.FAllocCount"/>

<element name="TCustomImageListResolution.FImageList" link="#lcl.imglist.TCustomImageListResolution.ImageList"/>

<element name="TCustomImageListResolution.FCount" link="#lcl.imglist.TCustomImageListResolution.Count"/>

<element name="TCustomImageListResolution.FAutoCreatedInDesignTime" link="#lcl.imglist.TCustomImageListResolution.AutoCreatedInDesignTime"/>

<element name="TCustomImageListResolution.AllocData">
<short>
Allocates storage for the specified number of images in the resolution.
</short>
<descr>
<p>
<var>AllocData</var> is a procedure used to allocate storage for the 
specified number of images in the resolution. AllocData ensures that the 
internal allocation count is large enough to accommodate the number of images 
in ACount. No actions are performed in the method when sufficient storage is 
available for the image count.
</p>
<p>
AllocData ensures that sufficient data storage blocks are allocated using the 
internal AllocBy value for the image list to store the number of images in 
ACount. AllocData is used in the implementation of the AddImages, 
InternalInsert, and ReadData methods. It is also called from the Assign 
method in TCustomImageList.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Assign"/>
</seealso>
</element>
<element name="TCustomImageListResolution.AllocData.ACount">
<short>Number of images that require data storage.</short>
</element>

<element name="TCustomImageListResolution.GetReference">
<short>Gets the value for the Reference property.</short>
<seealso>
<link id="TCustomImageListResolution.Reference"/>
</seealso>
</element>
<element name="TCustomImageListResolution.GetReference.Result">
<short>Value for the Reference property.</short>
</element>

<element name="TCustomImageListResolution.Add">
<short>
Adds an image with an optional mask to the resolution.
</short>
<descr>
<p>
<var>Add</var> is used to append an image to the items stored in the 
resolution. The return value contains the ordinal position in the image list 
where the new image was stored.
</p>
<p>
<var>Image</var> contains the bitmap data for the image. <var>Mask</var> is 
an optional bitmap that defines the transparent areas for the image. When 
Image has not been assigned (contains <b>Nil</b>), no actions are performed 
in the method and the return value is set to <b>-1</b>.
</p>
<p>
Add ensures that both Image and Mask are the correct size for the resolution 
by calling the <var>TCustomImageList.ScaleImage</var> method. The values in 
the <var>Height</var> and <var>Width</var> properties are used as the 
dimensions for the scaled image. The 32-bit RGBA raw image data for the 
scaled image is stored using the <var>InternalInsert</var> method.
</p>
<p>
Use the AddImages method to add images from another image resolution to the 
current image resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageList.AddImages"/>
</seealso>
</element>
<element name="TCustomImageListResolution.Add.Result">
<short>Ordinal position for the image added in the method.</short>
</element>
<element name="TCustomImageListResolution.Add.Image">
<short>Bitmap image added in the method.</short>
</element>
<element name="TCustomImageListResolution.Add.Mask">
<short>Optional bitmap mask for the image.</short>
</element>

<element name="TCustomImageListResolution.InternalInsert">
<short>
Performs actions to insert raw image data at the specified position.
</short>
<descr/>
</element>
<element name="TCustomImageListResolution.InternalInsert.AIndex">
<short>Position where image data is inserted in the list.</short>
</element>
<element name="TCustomImageListResolution.InternalInsert.AData">
<short>Bitmap data to insert at the specified position.</short>
</element>

<element name="TCustomImageListResolution.InternalMove">
<short>
Performs actions to move the storage position for image data.
</short>
<descr/>
</element>
<element name="TCustomImageListResolution.InternalMove.ACurIndex">
<short>Current position of the image moved in the method.</short>
</element>
<element name="TCustomImageListResolution.InternalMove.ANewIndex">
<short>New position for the image.</short>
</element>
<element name="TCustomImageListResolution.InternalMove.AIgnoreCurrent">
<short>
Indicates if memory in the current index position is updated after moving the 
image data.
</short>
</element>

<element name="TCustomImageListResolution.InternalReplace">
<short>
Performs actions to replace image data at the specified position.
</short>
<descr/>
</element>
<element name="TCustomImageListResolution.InternalReplace.AIndex">
<short>Position in the list where the image data is stored.</short>
</element>
<element name="TCustomImageListResolution.InternalReplace.AData">
<short>Image data stored in the method.</short>
</element>

<element name="TCustomImageListResolution.InternalSetData">
<short>
Performs actions to store raw image data at the specified position.
</short>
<descr/>
</element>
<element name="TCustomImageListResolution.InternalSetData.Result">
<short>Pointer to the 32-bit RGBA raw image data stored in the method.</short>
</element>
<element name="TCustomImageListResolution.InternalSetData.AIndex">
<short>Position in the list where image data is stored.</short>
</element>
<element name="TCustomImageListResolution.InternalSetData.AData">
<short>Image data stored in the method.</short>
</element>

<element name="TCustomImageListResolution.CheckIndex">
<short>
Ensures an index position is valid for the specified operation.
</short>
<descr>
<p>
<var>CheckIndex</var> is a procedure used to ensure that the value in AValue 
is a valid index position for the operations in the class.
</p>
<p>
AForInsert indicates if AValue is constrained to the existing range of 
ordinal positions in the list. When AForInsert contains <b>True</b>, AValue 
must be less than the Count property. When AForInsert is <b>False</b>, the 
index value is for an append operation and can contain a value less than or 
equal to the Count property.
</p>
<p>
An EInvalidOperation exception is raised when AValue is not in the required 
range for the specified operation.
</p>
<p>
CheckIndex is used in the implementation of various methods in the class.
</p>
</descr>
<errors>
Raises an EInvalidOperation exception if the index value is not in range. 
Raised with the message in SInvalidIndex.
</errors>
<seealso/>
</element>
<element name="TCustomImageListResolution.CheckIndex.AIndex">
<short>Ordinal position in the list to validate in the method.</short>
</element>
<element name="TCustomImageListResolution.CheckIndex.AForInsert">
<short>Indicates if the index position is for an insert operation.</short>
</element>

<element name="TCustomImageListResolution.Clear">
<short>Removes all image data for the current resolution.</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove the 32-bit RGBA raw image data 
stored in the class instance. No actions are performed in the method when 
images have not been stored using the resolution.
</p>
<p>
For widgetsets that allocate a handle for an image list, the Reference class 
is used to call its Clear method for the current class instance.
</p>
<p>
Clear sets the length of the internal storage for image data and the 
allocation count to 0 (zero).
</p>
</descr>
<seealso>
<link id="TWSCustomImageListResolutionClass"/>
<link id="TCustomImageListResolution.Reference"/>
</seealso>
</element>

<element name="TCustomImageListResolution.Delete">
<short>Deletes the image at the specified position in the resolution.</short>
<descr>
<p>
<var>Delete</var> is a procedure used to delete the image at the specified 
position in the resolution.
</p>
<p>
<var>AIndex</var> contains the ordinal position in the list for the image 
deleted in the method. When AIndex contains <b>-1</b>, all images in the list 
are removed by calling the Clear method. Delete calls the CheckIndex method 
to ensure that AIndex contains a valid ordinal position in the list. When 
AIndex is not the last item in the list, any following images are shifted to 
fill the deleted position.
</p>
<p>
Delete decrements the value in the Count property to reflect the new length 
of the list.
</p>
<p>
For widgetsets that allocate a handle for its image list, the Reference class 
is used to call its Delete method for the specified index position.
</p>
<remark>
The current implementation does not adjust the number of allocated data 
blocks for the resolution after an image is deleted.
</remark>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.Delete.AIndex">
<short>Ordinal position for the image deleted in the method.</short>
</element>

<element name="TCustomImageListResolution.GetFullRawImage">
<short>
Stores raw image data for all images in the resolution to a bitmap.
</short>
<descr>
<p>
<var>GetFullRawImage</var> is a procedure used to store raw image data for 
all images in the resolution to the specified raw image.
</p>
<p>
Image is the <var>TRawImage</var> output parameter where the raw image data 
is stored. GetFullRawImage calls the Init method in Image to set the default 
values used in the Description, Data, Mask, and Palette for the object 
instance.
</p>
<p>
No additional actions are performed in the method when the Count property 
contains 0 (<b>zero</b>).
</p>
<p>
GetFullRawImage calls the FillDescription method to set the 
<var>TRawImageDescription</var> values that describe the processing needed to 
display the raw image data. It also stores the values in the Height and Width 
properties to the image description data. The Data property in Image is set 
to a pointer to the raw image data for the resolution.
</p>
<p>
GetFullRawImage is used in the GetFullBitmap method, and in the 
TCustomImageList.GetFullRawImage method.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
<link id="TCustomImageListResolution.GetFullBitmap"/>
<link id="TCustomImageList.GetFullRawImage"/>
</seealso>
</element>
<element name="TCustomImageListResolution.GetFullRawImage.Image">
<short>Raw image data for all images in the resolution.</short>
</element>

<element name="TCustomImageListResolution.WriteData">
<short>
Stores the raw image data for the resolution to a Stream.
</short>
<descr>
<p>
<var>WriteData</var> is a procedure used to write the raw image data for all 
images in the resolution to the specified stream.
</p>
<p>
<var>AStream</var> contains the <var>TStream</var> class instance where raw 
image data is stored in the method. The current position in AStream is used 
when values are written in the method.
</p>
<p>
<var>ACompress</var> indicates if compression is applied to raw image data 
before it is written to the stream. When ACompress is <b>True</b>, a 
temporary TCompressionStream class instance is used to get the compressed 
values written to the stream. ACompress also determines the image list 
signature written at the start of AStream. When ACompress is <b>False</b>, 
the value in SIG_LAZ3 is written as the image list signature. When 
ACompressed is <b>True</b>, the value in SIG_LAZ4 is used.
</p>
<p>
WriteData writes a signature and header to the stream in AStream. First, the 
image list signature is written as described in the preceding paragraph. 
Second, a header is written that contains Integer values for the Count, 
Width, and Height properties (in that order). Finally, the raw image data is 
written to the stream (using optional compression when ACompress is 
<b>True</b>). The uncompressed values represent the 32-bit RGBA raw image 
data for the entire resolution. Raw image data is not written if the Count 
property contains 0 (zero).
</p>
<p>
WriteData is used in the implementation of the TCustomImageList.WriteData 
method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WriteData"/>
<link id="TCustomImageList.ReadData"/>
</seealso>
</element>
<element name="TCustomImageListResolution.WriteData.AStream">
<short>Stream where raw image data for the resolution is stored.</short>
</element>
<element name="TCustomImageListResolution.WriteData.ACompress">
<short>Indicates if compression is applied to raw image data.</short>
</element>

<element name="TCustomImageListResolution.ReadData">
<short>
Reads raw image data from the specified Stream.
</short>
<descr>
<p>
<var>ReadData</var> is a procedure used to read the raw image data for all 
images in the resolution from the specified stream.
</p>
<p>
<var>AStream</var> contains the <var>TStream</var> class instance with the 
raw image data read in the method. The current position in AStream is used 
when values are read in the method. The stream is positioned immediately 
after the raw image values when values are read in the method.
</p>
<p>
ReadData calls the <var>Clear</var> method to remove any existing image data 
stored in the resolution.
</p>
<p>
ReadData reads the signature for the image list from the stream. The 
signature identifies whether image data was written by various versions of 
the Lazarus or Delphi IDEs, and defines the header information expected in 
the stream. Methods are provided to read header and image data for the 
following image list signatures:
</p>
<dl>
<dt>
SIG_LAZ1
</dt>
<dd>
Earlier versions of the Lazarus IDE
</dd>
<dt>
SIG_LAZ2
</dt>
<dd>
Lazarus versions that included header data for each image
</dd>
<dt>
SIG_LAZ3
</dt>
<dd>
Current Lazarus image list format using uncompressed image data
</dd>
<dt>
SIG_LAZ4
</dt>
<dd>
Current Lazarus image list format using compression for image data
</dd>
<dt>
SIG_D3
</dt>
<dd>
Delphi 3 image list format
</dd>
</dl>
<p>
If an image list signature is not found, it was created using the Delphi 2 
image list format which did not include a signature. In this scenario, the 
stream in AStream is moved to its original position prior to reading image 
data from the stream.
</p>
<p>
ReadData is used in the implementation of the 
<var>TCustomImageList.ReadData</var> method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.ReadData"/>
</seealso>
</element>
<element name="TCustomImageListResolution.ReadData.AStream">
<short>Stream which contains the raw image data read in the method.</short>
</element>

<element name="TCustomImageListResolution.GetReferenceHandle">
<short>Gets the Handle for the Reference image list.</short>
<descr>
<p>
<var>GetReferenceHandle</var> is an overridden method used to get the handle 
for the TWSCustomImageListReference class for the widgetset. Some (all?) 
platforms / widgetsets require a handle when manipulating an image list. 
GetReferenceHandle uses the value in the Reference property to supply the 
value for the Handle.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.Reference"/>
</seealso>
</element>
<element name="TCustomImageListResolution.GetReferenceHandle.Result">
<short>Handle for the Reference class in the image list.</short>
</element>

<element name="TCustomImageListResolution.WSCreateReference">
<short>
Creates the Reference image list using the facilities for the widgetset.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomImageListResolution.WSCreateReference.Result">
<short>Class instance for the reference class.</short>
</element>
<element name="TCustomImageListResolution.WSCreateReference.AParams">
<short>Parameters used to create the reference class.</short>
</element>

<element name="TCustomImageListResolution.WSRegisterClass">
<short>
Registers the class type used to create references for the widgetset.
</short>
</element>

<element name="TCustomImageListResolution.ReferenceDestroying">
<short>
Notifies an image list list when the handle for the resolution is freed.
</short>
<descr>
<p>
<var>ReferenceDestroying</var> is an overridden method used to perform a 
notification when the handle for the Reference class is freed. 
ReferenceDestroying calls the inherited method, and notifies the image list 
that the handle for the resolution is being freed.
</p>
</descr>
</element>

<element name="TCustomImageListResolution.Destroy">
<short>Destructor for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomImageListResolution.GetHotSpot">
<short>Get the coordinates for the HotSpot in an image in the list.</short>
<descr>
<p>
<var>GetHotSpot</var> is a <var>TPoint</var> function used to get the HotSpot 
for an image stored in the resolution. The HotSpot is an offset from the 
drawing position to the image origin. A HotSpot is used only in 
TDragImageList. In TCustomImageList, its position is always (<b>0,0</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.GetHotSpot.Result">
<short>
Point with the horizontal and vertical offset for the image hot spot.
</short>
</element>

<element name="TCustomImageListResolution.FillDescription">
<short>
Stores the image description for the raw image data for the resolution.
</short>
<descr>
<p>
<var>FillDescription</var> is a procedure used to store descriptive 
information about the raw image data in the resolution. FillDescription 
provides metadata about the image, similar to the metadata in TIFF (Tagged 
Image File Format). It provides information needed to process and render 
images from their raw image data.
</p>
<p>
ADesc is the TRawImageDescription output parameter where the information is 
stored in the method. FillDescription calls the Init method in ADesc to reset 
the values in the class instance to their defaults.
</p>
<p>
FillDescription sets the value for the following properties in ADesc:
</p>
<dl>
<dt>Format</dt>
<dd>ricfRGBA</dd>
<dt>PaletteColorCount</dt>
<dd>0</dd>
<dt>MaskBitsPerPixel</dt>
<dd>0</dd>
<dt>Depth</dt>
<dd>32</dd>
<dt>Width</dt>
<dd>Value stored in the Width property</dd>
<dt>Height</dt>
<dd>Value stored in the Height property</dd>
<dt>BitOrder</dt>
<dd>riboBitsInOrder</dd>
<dt>ByteOrder</dt>
<dd>riboMSBFirst</dd>
<dt>LineOrder</dt>
<dd>riloTopToBottom</dd>
<dt>BitsPerPixel</dt>
<dd>32</dd>
<dt>LineEnd</dt>
<dd>rileDWordBoundary</dd>
<dt>RedPrec</dt>
<dd>8</dd>
<dt>RedShift</dt>
<dd>8</dd>
<dt>GreenPrec</dt>
<dd>8</dd>
<dt>GreenShift</dt>
<dd>16</dd>
<dt>BluePrec</dt>
<dd>8</dd>
<dt>BlueShift</dt>
<dd>24</dd>
<dt>AlphaPrec</dt>
<dd>8</dd>
<dt>AlphaShift</dt>
<dd>0</dd>
</dl>
<p>
FillDescription is used in the implementation of the GetFullRawImage and 
GetRawImage methods.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.GetRawImage"/>
<link id="#lazutils.graphtype.TRawImageDescription">TRawImageDescription</link>
</seealso>
</element>
<element name="TCustomImageListResolution.FillDescription.ADesc">
<short>Stores values updated in the method.</short>
</element>

<element name="TCustomImageListResolution.GetBitmap">
<short>
Gets the bitmap for an image drawn using the specified drawing effect.
</short>
<descr>
<p>
<var>GetBitmap</var> is an overloaded procedure used to a bitmap for the 
specified image in the resolution.
</p>
<p>
<var>Index</var> contains the ordinal position for the image requested in the 
method.
</p>
<p>
<var>Image</var> is the TCustomBitmap class instance where the bitmap for the 
image is stored.
</p>
<p>
<var>AEffect</var> contains a value from the TGraphicsDrawEffect enumeration 
that indicates a drawing effect applied to the raw image data, and stored in 
the bitmap. Values in AEffect determine whether the image is rendered 
normally, as a disabled (or grayed) image, highlighted, shadowed, or as a 
monochrome bitmap mask.
</p>
<p>
GetBitmap creates a temporary TRawImage class instance that is used to get 
the 32-bit RGBA raw image data, and to apply the drawing effect in AEffect. 
For platforms or widgetsets that do not support 32-bit image data, a device 
image is used to get the pixel content for the image.
</p>
<p>
An overloaded variant of the method is provided which omits the drawing 
effect argument, and assumes the image is rendered in the "normal" display 
state.
</p>
<p>
No actions are performed in the method when Index contains an invalid 
position in the list of images, or when Image has not been assigned (contains 
<b>Nil</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.GetBitmap.Index">
<short>Ordinal position for the image in the list.</short>
</element>
<element name="TCustomImageListResolution.GetBitmap.Image">
<short>Bitmap updated in the method.</short>
</element>
<element name="TCustomImageListResolution.GetBitmap.AEffect">
<short>Drawing effect applied to the bitmap.</short>
</element>

<element name="TCustomImageListResolution.GetIcon">
<short>
Gets an Icon rendered using the specified drawing effect.
</short>
<descr>
<p>
<var>GetIcon</var> is an overloaded procedure used to get an image in TIcon 
format stored at the specified position in the resolution.
</p>
<p>
<var>Index</var> contains the ordinal position of the image retrieved in the 
method.
</p>
<p>
<var>Image</var> is a TIcon class instance where image data is stored in the 
method.
</p>
<p>
<var>AEffect</var> contains a value from the TGraphicsDrawEffect enumeration 
that indicates a drawing effect applied to the raw image data, and stored in 
the icon. Values in AEffect determine whether the image is rendered normally, 
as a disabled (or grayed) image, highlighted, shadowed, or as a monochrome 
bitmap mask.
</p>
<p>
GetIcon creates a temporary TRawImage class instance that is used to get the 
32-bit RGBA raw image data, and to apply the drawing effect in AEffect. For 
platforms or widgetsets that do not support 32-bit image data, a device image 
is used to get the pixel content for the image.
</p>
<p>
An overloaded variant of the method is provided which omits the drawing 
effect argument, and assumes the image is rendered in the "normal" display 
state.
</p>
<p>
No actions are performed in the method when Count contains 0 (<b>zero</b>), 
or when Image has not been assigned (contains <b>Nil</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.GetIcon.Index">
<short>Ordinal position for the image requested in the method.</short>
</element>
<element name="TCustomImageListResolution.GetIcon.Image">
<short>TIcon class where the image data is stored.</short>
</element>
<element name="TCustomImageListResolution.GetIcon.AEffect">
<short>Drawing effect applied to the rendered image.</short>
</element>

<element name="TCustomImageListResolution.GetFullBitmap">
<short>
Gets a bitmap representing all images in the resolution.
</short>
<descr>
<p>
<var>GetFullBitmap</var> is a procedure used to get a bitmap that contains 
all of the images stored in the resolution.
</p>
<p>
Image is a TCustomBitmap descendant where image data is stored in the method.
</p>
<p>
AEffect contains a value from the TGraphicsDrawEffect enumeration that 
indicates a drawing effect applied to the raw image data, and stored in the 
bitmap. Values in AEffect determine whether the images are rendered normally, 
as a disabled (or grayed) image, highlighted, shadowed, or as a monochrome 
bitmap mask.
</p>
<p>
GetFullBitmap creates a temporary TRawImage class instance that is used to 
get the 32-bit RGBA raw image data, and to apply the drawing effect in 
AEffect. For platforms or widgetsets that do not support 32-bit image data, a 
device image is used to get the pixel content for the image.
</p>
<p>
The vertical size in Image is determined by the Height property. The 
horizontal size in Image is set to <b>Width * Count</b>.
</p>
<p>
No actions are performed in the method when Count contains 0 (<b>zero</b>), 
or Image has not been assigned (contains <b>Nil</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.GetFullBitmap.Image">
<short>Bitmap image with the combined images for the resolution.</short>
</element>
<element name="TCustomImageListResolution.GetFullBitmap.AEffect">
<short>Drawing effect applied to images and stored in the bitmap.</short>
</element>

<element name="TCustomImageListResolution.GetRawImage">
<short>
Gets the 32-bit RGBA raw image data for the specified image.
</short>
<descr>
<p>
<var>GetRawImage</var> is a procedure used to get the 32-bit RGBA raw image 
data for the specified image in the resolution.
</p>
<p>
<var>Index</var> is the ordinal position for the image in the list.
</p>
<p>
<var>Image</var> is a <var>TRawImage</var> class instance used to store the 
raw image data for the specified image.
</p>
<p>
GetRawImage calls <var>CheckIndex</var> to ensure that Index contains a valid 
position in the image resolution. An exception is raised in CheckIndex if the 
requested position is invalid. No actions are performed in the method when 
Count contains <b>0</b> (<b>zero</b>).
</p>
<p>
GetRawImage stores image metadata in Image by calling the 
<var>FillDescription</var> method. The 32-bit RGBA raw image data at the 
specified Index in the resolution is stored in Image. Its DataSize property 
is updated to reflect the number of pixels (<b>Width * Height * 32b</b>) 
stored in the class instance.
</p>
<p>
GetRawImage is used in the implementation of the <var>GetBitmap</var>, 
<var>GetFullBitmap</var>, <var>GetIcon</var>, and <var>ReadData</var> 
methods. It is also used in the <var>AddImages</var> and 
<var>GetRawImage</var> methods in <var>TCustomImageList</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.GetBitmap"/>
<link id="TCustomImageListResolution.GetFullBitmap"/>
<link id="TCustomImageListResolution.GetIcon"/>
<link id="TCustomImageList.AddImages"/>
<link id="TCustomImageList.GetRawImage"/>
</seealso>
</element>
<element name="TCustomImageListResolution.GetRawImage.Index">
<short>Ordinal position for the image in the list.</short>
</element>
<element name="TCustomImageListResolution.GetRawImage.Image">
<short>TRawImage instance where image data is stored in the method.</short>
</element>

<element name="TCustomImageListResolution.Draw">
<short>Renders an image to the specified canvas.</short>
<descr>
<p>
<var>Draw</var> is an overloaded method used to render an image to the 
specified canvas. Overloaded variants allow the use of a drawing effect or 
style for the rendered image.
</p>
<p>
ACanvas contains the <var>TCanvas</var> instance used to render the requested 
image.
</p>
<p>
AX and AY contain <var>Integer</var> values representing the horizontal and 
vertical offsets from the canvas origin where the image is drawn.
</p>
<p>
AIndex contains the ordinal position for the requested image in the 
resolution.
</p>
<p>
AEnabled indicates if the image is drawn in the enabled state. When AEnabled 
is <b>False</b>, the <var>gdeDisabled</var> drawing effect is used to render 
the image to the canvas.
</p>
<p>
ADrawEffect is a value from the <var>TGraphicsDrawEffect</var> enumeration 
that indicates the drawing effect applied to the raw image data, and stored 
in the bitmap. Values in AEffect determine whether the image is rendered 
normally, as a disabled (or grayed) image, highlighted, shadowed, or as a 
monochrome bitmap mask.
</p>
<p>
ADrawingStyle contains a value from the <var>TDrawingStyle</var> enumeration 
that indicates the image list drawing style used for the rendered image. 
ADrawingStyle determines how the image is blended with its background color 
when a mask is used in the image. It has no significance when a mask is not 
present in the image.
</p>
<p>
AImageType contains a value from the <var>TImageType</var> enumeration, and 
indicates whether the image uses a mask.
</p>
<p>
The Draw method requires a valid <var>TWSCustomImageListReference</var> class 
instance to access the handle for its image list. The widgetset class is used 
to call its Draw method using the specified parameter values as arguments. 
The values in the BkColor and BlendColor properties for the ImageList are 
also passed in the arguments to the widgetset class.
</p>
<p>
No actions are performed in the method when AIndex contains a value that is 
an invalid position for the images in the resolution.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.Draw.ACanvas">
<short>Canvas where the image is drawn.</short>
</element>
<element name="TCustomImageListResolution.Draw.AX">
<short>Horizontal offset for the image on the canvas.</short>
</element>
<element name="TCustomImageListResolution.Draw.AY">
<short>Vertical offset for the image on the canvas.</short>
</element>
<element name="TCustomImageListResolution.Draw.AIndex">
<short>Position of the image drawn in the method.</short>
</element>
<element name="TCustomImageListResolution.Draw.AEnabled">
<short>Indicates if the image is drawn in an Enabled state.</short>
</element>
<element name="TCustomImageListResolution.Draw.ADrawEffect">
<short>Drawing effect applied to the rendered image.</short>
</element>
<element name="TCustomImageListResolution.Draw.ADrawingStyle">
<short>Drawing style applied to the rendered image.</short>
</element>
<element name="TCustomImageListResolution.Draw.AImageType">
<short>Indicates if the image contains a mask or source data.</short>
</element>

<element name="TCustomImageListResolution.StretchDraw">
<short>
Draws an image stretched to the dimensions for the target rectangle.
</short>
<descr>
<p>
<var>StretchDraw</var> is a procedure used to render an image stretched to 
the required dimensions on the specified canvas.
</p>
<p>
Canvas is the <var>TCanvas</var> instance where the image is rendered using 
the dimensions in the target rectangle.
</p>
<p>
Index contains the ordinal position for the image drawn in the method.
</p>
<p>
ARect is a <var>TRect</var> instance that contains the Top, Left, Bottom, and 
Right coordinates for the canvas. The rendered image must fit with in these 
boundaries on the canvas.
</p>
<p>
Enabled indicates if the image is drawn using its "enabled" state. When 
Enabled is <b>True</b>, the <var>gdeEnabled</var> drawing effect is used for 
the rendered image. When Enabled is <b>False</b>, the <var>gdeDisabled</var> 
drawing effect is used.
</p>
<p>
StretchDraw compares the image size (using the <var>Height</var> and 
<var>Width</var> properties) to the size of the target rectangle in ARect. 
When they are the same size, the Draw method is used to render the specified 
image. When the sizes are different, the <var>StretchDraw</var> method in 
ACanvas is used to render the image bitmap expanded or contracted to fit 
within the specified boundaries.
</p>
<p>
StretchDraw is used in the implementation of the <var>Draw</var> and 
<var>DrawOverlay</var> methods in <var>TScaledImageListResolution</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.Width"/>
<link id="TCustomImageListResolution.Height"/>
<link id="TCustomImageListResolution.GetBitmap"/>
<link id="TCustomImageListResolution.Draw"/>
<link id="TScaledImageListResolution.Draw"/>
<link id="TScaledImageListResolution.DrawOverlay"/>
</seealso>
</element>
<element name="TCustomImageListResolution.StretchDraw.Canvas">
<short>Canvas used for the drawing operation.</short>
</element>
<element name="TCustomImageListResolution.StretchDraw.Index">
<short>Ordinal position for the image drawn in the method.</short>
</element>
<element name="TCustomImageListResolution.StretchDraw.ARect">
<short>Rectangle coordinates used for the draw operation.</short>
</element>
<element name="TCustomImageListResolution.StretchDraw.Enabled">
<short>
Indicates if the image is drawn using the enabled display state.
</short>
</element>

<element name="TCustomImageListResolution.DrawOverlay">
<short>Draws the specified image with the given overlay.</short>
<descr>
<p>
<var>DrawOverlay</var> is an overloaded procedure used to draw the specified 
image with an overlay. An overlay is an masked image drawn transparently over 
another image. The overlay image is generally used to convey state or status 
information about the image it adorns. The overlay images are stored in the 
image list resolution just like the images they decorate.
</p>
<p>
<var>ACanvas</var> is the <var>TCanvas</var> instance where the image and the 
overlay are rendered.
</p>
<p>
<var>AX</var> and <var>AY</var> contain the canvas offsets (horizontal and 
vertical) where the overlay image is drawn.
</p>
<p>
<var>AIndex</var> contains the ordinal position for the base image drawn in 
the method.
</p>
<p>
<var>AOverlay</var> contains the position where the index for an overlay 
image was stored using <var>Overlay</var>. The value in AOverlay must be in 
the range 0..14 (the range defined in <var>TOverlay</var>).
</p>
<p>
<var>ADrawingStyle</var> contains the <var>TDrawingStyle</var> enumeration 
value applied to the rendered image.
</p>
<p>
<var>AImageType</var> contains a <var>TImageType</var> enumeration value that 
indicates if the content is an image or contains a mask.
</p>
<p>
<var>ADrawEffect</var> contains a <var>TGraphicsDrawEffect</var> enumeration 
value that indicates the drawing effect applied to the rendered image.
</p>
<p>
Overloaded variants of the method are provided which use the 
<var>BlendColor</var>, <var>BkColor</var>, <var>DrawingStyle</var>, and 
<var>ImageType</var> properties in ImageList as default values in the methods.
</p>
<p>
No actions are performed in the method when AIndex does not contain a valid 
index position in the resolution.
</p>
<p>
DrawOverlay requires a valid <var>Reference</var> instance to access the 
handles used for the image list and the resolution. The reference class calls 
its Draw method to render the base image represented by the value in AIndex 
to the specified canvas. Arguments passed to the method determine the drawing 
style or drawing effect applied to the rendered image.
</p>
<p>
The reference class is also used to render an overlay image indicated by the 
AOverlay parameter. The overlay image is drawn to the canvas at the offsets 
in AX and AY using the Width and Height for images in the resolution. The 
overlay image is not drawn if AOverlay contains a value outside the range 
allowed in TOverlay, or does not map to a valid image index in the image list.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolution.DrawOverlay.ACanvas">
<short>Canvas where the image and its overlay are rendered.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AX">
<short>Horizontal offset for the overlay image.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AY">
<short>Vertical offset for the overlay image.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AIndex">
<short>Ordinal position for the base image drawn in the method.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AOverlay">
<short>
Position in the internal array with the index for an overlay image.
</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AEnabled">
<short>Indicates if the image is drawn in the enabled state.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.ADrawEffect">
<short>Drawing effect applied to the image and its overlay.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.ADrawingStyle">
<short>Drawing style applied to the image and its overlay.</short>
</element>
<element name="TCustomImageListResolution.DrawOverlay.AImageType">
<short>Image type for the requested image.</short>
</element>

<element name="TCustomImageListResolution.ImageList">
<short>Image list which owns the resolution.</short>
<descr>
<p>
<var>ImageList</var> is a read-only <var>TCustomImageList</var> property that 
represents the image list which owns the resolution. The value in the 
ImageList property is provided as an argument to the Create constructor.
</p>
<p>
ImageList allows the image resolution to have access to the properties and 
methods in TCustomImageList in the implementation of its methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList"/>
</seealso>
</element>

<element name="TCustomImageListResolution.Width">
<short>
Width of the images stored in the resolution.
</short>
<descr>
<p>
<var>Width</var> is a read-only <var>Integer</var> property that indicates 
the width of images stored in the resolution. Width is used along with 
<var>Height</var> and <var>Count</var> to determine the internal storage 
allocated for 32-bit RGBA raw image data in the resolution.
</p>
<p>
The value in Width is assigned when raw image data is loaded using the 
<var>ReadData</var> method, or when an image resolution is dynamically 
created when reading the <var>Resolution</var> property or using the 
<var>GetResolution</var> method in <var>ImageList</var>.
</p>
<p>
Use <var>Height</var> to get the vertical size of the images stored in the 
resolution. Use <var>Count</var> to determine the number of images stored in 
the resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.Height"/>
<link id="TCustomImageListResolution.Count"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolutions.ImageLists"/>
</seealso>
</element>

<element name="TCustomImageListResolution.Height">
<short>Height of the images stored in the resolution.</short>
<descr>
<p>
<var>Height</var> is a read-only <var>Integer</var> property that indicates 
the height of images stored in the resolution. Height is used along with 
<var>Width</var> and <var>Count</var> to determine the internal storage 
allocated for 32-bit RGBA raw image data in the resolution.
</p>
<p>
The value in Height is assigned when raw image data is loaded using the 
<var>ReadData</var> method, or when an image resolution is dynamically 
created using the <var>Resolution</var> property or the 
<var>GetResolution</var> method in <var>ImageList</var>.
</p>
<p>
Use <var>Width</var> to get the horizontal size of the images stored in the 
resolution. Use <var>Count</var> to determine the number of images stored in 
the resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.Width"/>
<link id="TCustomImageListResolution.Count"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolutions.ImageLists"/>
</seealso>
</element>

<element name="TCustomImageListResolution.Count">
<short>
Number of images stored in the resolution.
</short>
<descr>
<p>
<var>Count</var> is a read-only <var>Integer</var> property that indicates 
the number of images stored in the resolution. Count is used along with 
<var>Width</var> and <var>Height</var> to determine the storage allocated for 
32-bit RGBA raw image data in the resolution.
</p>
<p>
The value in Count is updated when raw image data is loaded using the 
<var>ReadData</var> method, and when the images in the resolution are updated 
using the <var>Add</var>, <var>Delete</var>, or <var>Clear</var> methods.
</p>
<p>
Count determines the upper boundary for index positions used to access 
bitmaps, icons, or raw images in the resolution (<b>Count - 1</b>). The lower 
boundary is always <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.GetBitmap"/>
<link id="TCustomImageListResolution.GetIcon"/>
<link id="TCustomImageListResolution.GetRawImage"/>
</seealso>
</element>

<element name="TCustomImageListResolution.AutoCreatedInDesignTime">
<short>
Indicates if the Resolution was auto-created at design-time.
</short>
<descr>
<p>
<var>AutoCreatedInDesignTime</var> is a <var>Boolean</var> property which 
indicates if the image resolution was automatically created at design-time. 
The value in AutoCreatedInDesignTime is set to <b>True</b> when the Lazarus 
IDE creates an image resolution in its ImageListEditor dialog using the 
Resolutions container for the ImageList. It is set to <b>False</b> when the 
<var>TCustomImageList.RegisterResolutions</var> method is called at run-time.
</p>
<p>
AutoCreatedInDesignTime is used in the 
<var>TCustomImageList.DefineProperties</var> method to determine the values 
read and written using the LCL component streaming mechanism.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.ImageLists"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.RegisterResolutions"/>
<link id="TCustomImageList.DefineProperties"/>
</seealso>
</element>

<element name="TCustomImageListResolution.Reference">
<short>
Reference to the widgetset image list using this resolution.
</short>
<descr>
<p>
<var>Reference</var> is a read-only <var>TWSCustomImageListReference</var> 
property that represents the reference class for an image list implementation 
in the current widgetset. Reading the value in the property causes the 
reference class for the resolution to be created if it has not already been 
allocated.
</p>
<p>
Reference is used get access to the handle for the image list used in the 
resolution. The handle is a required argument in 
<var>TWSCustomImageListResolutionClass</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.Reference"/>
</seealso>
</element>

<element name="TScaledImageListResolution">
<short>
Implements a scaled image resolution (size).
</short>
<descr>
<p>
<var>TScaledImageListResolution</var> is a record type that represents a 
scaled image resolution created in <var>TCustomImageList</var>. 
TScaledImageListResolution contains images dynamically scaled from a source 
image <var>Resolution</var> using a scaling factor.
</p>
<p>
TScaledImageListResolution contains methods and properties that mirror those 
available in <var>TCustomImageListResolution</var>. This allows 
TCustomImageList to use the methods and properties in 
TCustomImageListResolution when working with the dynamically scaled image 
content. Methods like <var>Draw</var>, <var>DrawOverlay</var>, and 
<var>StretchDraw</var> are redirected to the corresponding method in 
<var>Resolution</var>.
</p>
<p>
TScaledImageListResolution is transient in nature; it is not stored as part 
of an image list or its static resolutions.
</p>
<p>
TScaledImageListResolution is used in the implementation of the 
<var>GetResolutionForPPI</var> and <var>DrawForPPI</var> methods in 
<var>TCustomImageList</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageList.ResolutionForPPI"/>
<link id="TCustomImageList.Scaled"/>
<link id="TCustomImageList.DrawForPPI"/>
</seealso>
</element>

<element name="TScaledImageListResolution.FResolution" link="#lcl.imglist.TScaledImageListResolution.Resolution"/>

<element name="TScaledImageListResolution.FScaleFactor"/>

<element name="TScaledImageListResolution.FWidth" link="#lcl.imglist.TScaledImageListResolution.Width"/>

<element name="TScaledImageListResolution.FHeight" link="#lcl.imglist.TScaledImageListResolution.Height"/>

<element name="TScaledImageListResolution.GetCount">
<short>Gets the value for the Count property.</short>
<descr>
<link id="TScaledImageListResolution.Count"/>
</descr>
</element>
<element name="TScaledImageListResolution.GetCount.Result">
<short>Value for the Count property.</short>
</element>

<element name="TScaledImageListResolution.GetSize">
<short>Gets the value for the Size property.</short>
<seealso>
<link id="TScaledImageListResolution.Size"/>
</seealso>
</element>
<element name="TScaledImageListResolution.GetSize.Result">
<short>Value for the Size property.</short>
</element>

<element name="TScaledImageListResolution.GetValid">
<short>Gets the value for the Valid property.</short>
<seealso>
<link id="TScaledImageListResolution.Valid"/>
</seealso>
</element>
<element name="TScaledImageListResolution.GetValid.Result">
<short>Value for the the Valid property.</short>
</element>

<element name="TScaledImageListResolution.Create">
<short>
Allocates a new record instance.
</short>
<descr>
<p>
<var>Create</var> is a class function used to allocate a new 
TScaledImageListResolution record instance using the specified image 
resolution and scaling factor. The return value is the 
<var>TScaledImageListResolution</var> record instance allocated in the class 
function.
</p>
<p>
<var>AResolution</var> contains the <var>TCustomImageListResolution</var> 
instance with image data used as the source for the Scaled images. 
AResolution is stored in the <var>Resolution</var> property to provide access 
to its properties and methods in the scaled image resolution.
</p>
<p>
<var>AScaleFactor</var> is a <var>Double</var> value that contains the 
scaling factor applied to the source images in <var>Resolution</var>.
</p>
<p>
Create sets the value in the <var>Width</var> and <var>Height</var> 
properties to the scaled sizes from the <var>Resolution</var>; i. e. 
<b>(Resolution.Width / AScaleFactor)</b> and <b>(Resolution.Height / 
AScaleFactor)</b>. If Resolution has not been assigned (contains <b>Nil</b>), 
the value in both Height and Width are set to <b>0</b> (<b>zero</b>).
</p>
</descr>
</element>
<element name="TScaledImageListResolution.Create.Result">
<short>Record instance allocated in the class function.</short>
</element>
<element name="TScaledImageListResolution.Create.AResolution">
<short>Resolution used as the basis for the scaled images.</short>
</element>
<element name="TScaledImageListResolution.Create.AScaleFactor">
<short>Scale factor applied to the scaled images.</short>
</element>

<element name="TScaledImageListResolution.GetBitmap">
<short>Gets the scaled bitmap for the specified image.</short>
<seealso>
<link id="TCustomImageListResolution.GetBitmap"/>
</seealso>
</element>
<element name="TScaledImageListResolution.GetBitmap.Index">
<short>Ordinal position for the bitmap requested in the method.</short>
</element>
<element name="TScaledImageListResolution.GetBitmap.Image">
<short>Bitmap used to store the requested image.</short>
</element>
<element name="TScaledImageListResolution.GetBitmap.AEffect">
<short>Drawing effect applied to the image.</short>
</element>

<element name="TScaledImageListResolution.Draw">
<short>Draws the scaled image to the specified canvas.</short>
<seealso>
<link id="TCustomImageListResolution.Draw"/>
</seealso>
</element>
<element name="TScaledImageListResolution.Draw.ACanvas">
<short>Canvas used to render the image.</short>
</element>
<element name="TScaledImageListResolution.Draw.AX">
<short>Horizontal canvas offset for the rendered image.</short>
</element>
<element name="TScaledImageListResolution.Draw.AY">
<short>Vertical canvas offset for the rendered image.</short>
</element>
<element name="TScaledImageListResolution.Draw.AIndex">
<short>Ordinal position for the image rendered in the method.</short>
</element>
<element name="TScaledImageListResolution.Draw.AEnabled">
<short>Indicates if the image is drawn in the enabled state.</short>
</element>
<element name="TScaledImageListResolution.Draw.ADrawEffect">
<short>Drawing effect applied to the rendered image.</short>
</element>
<element name="TScaledImageListResolution.Draw.ADrawingStyle">
<short>Drawing style applied to the rendered image.</short>
</element>
<element name="TScaledImageListResolution.Draw.AImageType">
<short>Image type for the rendered image.</short>
</element>

<element name="TScaledImageListResolution.StretchDraw">
<short>Draws the scaled image sized to the target rectangle.</short>
<descr>
<p>
Calls the StretchDraw method in the Resolution member.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.StretchDraw"/>
</seealso>
</element>
<element name="TScaledImageListResolution.StretchDraw.ACanvas">
<short>
Canvas where the specified image is drawn.
</short>
</element>
<element name="TScaledImageListResolution.StretchDraw.Index">
<short>
Ordinal position for the image drawn in method.
</short>
</element>
<element name="TScaledImageListResolution.StretchDraw.ARect">
<short>
Rectangle with the coordinates where the image is drawn on the canvas.
</short>
</element>
<element name="TScaledImageListResolution.StretchDraw.Enabled">
<short>
<b>True</b> if the image is drawn in the enabled state.
</short>
</element>

<element name="TScaledImageListResolution.DrawOverlay">
<short>
Draws an image with an overlay at the specified canvas position.
</short>
<descr>
<p>
<var>DrawOverlay</var> is an overloaded method used to draw an image with an 
overlay at the given position on a canvas. The overloaded variants allow the 
enabled state, drawing effect, or drawing style for the image(s) to be 
specified.
</p>
<p>
DrawOverlay scales both the image and the overlay (when needed) using the 
internal scaling factor stored in the image <var>Resolution</var>.
</p>
<p>
Image scaling is not performed when the scaling factor is 1.0. In this case 
the <var>Draw</var> method in Resolution is called to draw the image. When a 
valid image index has been assigned in <var>AOverlay</var>, The Draw method 
is called to draw the overlay image.
</p>
<p>
When image scaling is needed, the <var>StretchDraw</var> method in Resolution 
is called to draw both the image and a valid overlay. The images are resized 
to the <var>Width</var> and <var>Height</var> for the image Resolution. 
StretchDraw uses the enabled state for the images when <var>ADrawEffect</var> 
contains any value other than <var>gdeDisabled</var>.
</p>
<p>
Use the <var>Draw</var> or <var>StretchDraw</var> methods when an overlay 
image is not needed.
</p>
</descr>
<seealso>
<link id="TScaledImageListResolution.Height"/>
<link id="TScaledImageListResolution.Width"/>
<link id="TScaledImageListResolution.Resolution"/>
<link id="TScaledImageListResolution.Draw"/>
<link id="TScaledImageListResolution.StretchDraw"/>
<link id="TCustomImageListResolution.Draw"/>
<link id="TCustomImageListResolution.StretchDraw"/>
<link id="TCustomImageListResolution.DrawOverlay"/>
</seealso>
</element>
<element name="TScaledImageListResolution.DrawOverlay.ACanvas">
<short>Canvas where the image and overlay are drawn.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AX">
<short>Horizontal coordinate on the canvas where the image is drawn.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AY">
<short>Vertical coordinate on the canvas where the image is drawn.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AIndex">
<short>Ordinal position for the image drawn in the method.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AOverlay">
<short>Position for the overlay image applied in the method.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AEnabled">
<short>
<b>True</b> when the image is drawn in the enabled state (default).
</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.ADrawEffect">
<short>TGraphicsDrawEffect value applied to the image.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.ADrawingStyle">
<short>TDrawingStyle value applied to the image.</short>
</element>
<element name="TScaledImageListResolution.DrawOverlay.AImageType">
<short>Indicates if the content is the image or a mask.</short>
</element>

<element name="TScaledImageListResolution.Width">
<short>Width of the images stored in the scaled image resolution.</short>
</element>

<element name="TScaledImageListResolution.Height">
<short>Height of the images stored in the scaled image resolution.</short>
</element>

<element name="TScaledImageListResolution.Size">
<short>Size of an image stored in the scaled resolution.</short>
</element>

<element name="TScaledImageListResolution.Resolution">
<short>Resolution used as the bases for scaled images.</short>
</element>

<element name="TScaledImageListResolution.Count">
<short>Number of images stored in the scaled image list.</short>
</element>

<element name="TScaledImageListResolution.Valid">
<short>
Indicates if the source resolution is assigned for the class instance.
</short>
<descr>
<p>
<var>Valid</var> is a read-only <var>Boolean</var> property that indicates if 
the source image resolution for the class instance has been assigned. Valid 
ensures that the <var>TCustomImageListResolution</var> instance passed to the 
class constructor contains an assigned class instance and not the value 
<b>Nil</b>.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomImageListResolutionClass">
<short>
Class type used to create instances of TCustomImageListResolution.
</short>
</element>

<element name="TCustomImageListResolutions">
<short>
Provides multiple image resolutions in TCustomImageList.
</short>
<descr>
<p>
<var>TCustomImageListResolutions</var> is a class used to implement support 
for multiple image sizes (or resolutions) in <var>TCustomImageList</var>. 
TCustomImageListResolutions maintains an internal list with 
<var>TCustomImageListResolution</var> class instances representing each of 
the image sizes (and the raw image data for the size) available in the 
TCustomImageList instance. In essence, it allows TCustomImageList to treat 
each image resolution as a distinct parallel image list.
</p>
<p>
The <var>ImageLists</var> property provides access to the image list for a 
specific image width (or resolution), and performs image scaling when needed. 
New image resolutions are dynamically created and added to the container when 
a size is requested that is not already present.
</p>
<p>
Use the <var>Items</var> property to access the TCustomImageListResolution 
class instances stored in the container. Use the <var>Count</var> property to 
determine the number of image resolutions stored in the container. Use the 
<var>Clear</var> and <var>Delete</var> methods to maintain image resolutions 
in the container.
</p>
<p>
TCustomImageListResolutions is used in the implementation of TCustomImageList.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageListResolutions.ImageLists"/>
<link id="TCustomImageListResolutions.Items"/>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Resolutions"/>
</seealso>
</element>

<element name="TCustomImageListResolutions.FList"/>
<element name="TCustomImageListResolutions.FImageList"/>
<element name="TCustomImageListResolutions.FResolutionClass"/>

<element name="TCustomImageListResolutions.Find">
<short>
Checks for an existing image resolution in the Items property.
</short>
<descr>
<p>
<var>Find</var> is a <var>Boolean</var> function used to locate an image 
resolution in the container using the specified image width. Find performs a 
binary (or half-interval) search of the image resolutions in the Items 
property, and compares the value specified in AImageWidthWidth to the 
<var>Width</var> property for the image resolutions. The search is halted 
when an image resolution is found using the value in AImageWidth.
</p>
<p>
The return Value is <b>True</b> when an image resolution is located with the 
value specified in AImageWidth. The return value is <b>False</b> if an image 
resolution is not found using the specified image width.
</p>
<p>
<var>Index</var> is an output parameter used to store the ordinal position of 
the image resolution that uses the specified image width. Index contains the 
closest (but larger) resolution when the return value is <b>False</b>.
</p>
</descr>
</element>
<element name="TCustomImageListResolutions.Find.Result">
<short>
<b>True</b> when the image resolution exists in the Items property.
</short>
</element>
<element name="TCustomImageListResolutions.Find.AImageWidth">
<short>Image width desired from the Items property.</short>
</element>
<element name="TCustomImageListResolutions.Find.Index">
<short>
Ordinal position for the image resolution in the Items property.
</short>
</element>

<element name="TCustomImageListResolutions.GetImageLists">
<short>Gets the value for the Image Lists property.</short>
<descr>
<p>
<var>GetImageLists</var> is an overloaded 
<var>TCustomImageListResolution</var> function. The variant with only an 
image width argument is used to get the value for the indexed ImageLists 
property. The other variant is called from the read access specifier.
</p>
<p>
The return value contains the TCustomImageListResolution class instance which 
represents images with the specified width. If an image resolution with the 
requested size does not already exist, it is created and populated with 
resized images for the resolution.
</p>
<p>
Use the ImageLists property to access a specific image resolution available 
in the container. Use the Items property to access existing resolutions by 
their ordinal position in the container.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.ImageLists"/>
<link id="TCustomImageListResolutions.Items"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.GetImageLists.Result">
<short>Value for the ImageLists property.</short>
</element>
<element name="TCustomImageListResolutions.GetImageLists.AImageWidth">
<short>Image width desired in the image list.</short>
</element>
<element name="TCustomImageListResolutions.GetImageLists.AScaleFromExisting">
<short>
Indicates if a missing resolution can be scaled from another resolution.
</short>
</element>
<element name="TCustomImageListResolutions.GetImageLists.AutoCreatedInDesignTime">
<short>
Indicates if the image resolution was auto-created at design-time.
</short>
</element>

<element name="TCustomImageListResolutions.GetItems">
<short>Gets the value for the indexed Items property.</short>
<seealso>
<link id="TCustomImageListResolutions.Items"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.GetItems.Result">
<short>Value for the Items property.</short>
</element>
<element name="TCustomImageListResolutions.GetItems.AIndex">
<short>Ordinal position for the requested item.</short>
</element>

<element name="TCustomImageListResolutions.GetCount">
<short>Gets the value for the Count property.</short>
<seealso>
<link id="TCustomImageListResolutions.Count"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.GetCount.Result">
<short>Value for the Count property.</short>
</element>

<element name="TCustomImageListResolutions.FindBestToCopyFrom">
<short>
Finds the resolution that is the best candidate for scaling to the target 
width.
</short>
<descr>
<p>
<var>FindBestToCopyFrom</var> is an <var>Integer</var> function used to find 
the image resolution that is the best candidate for scaling images to the 
specified target width. The return value contains the ordinal position for 
the image resolution selected for the value in <var>ATargetWidth</var>.
</p>
<p>
<var>AIgnoreIndex</var> contains the ordinal position for an image resolution 
that can be disregarded when comparing image widths in the container.
</p>
<p>
FindBestToCopyFrom looks for an image resolution that contains image widths 
that are the next size larger than the value in ATargetWidth. The premise is 
that images that are scaled down contain fewer artifacts than those that are 
scaled up. When no image resolution is found using larger image widths, the 
last item in the container is used as the candidate image resolution.
</p>
<p>
FindBestToCopyFrom is used in the implementation of the 
<var>FindBestToScaleFrom</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolutions.FindBestToCopyFrom.Result">
<short>
Ordinal position of the image resolution selected in the method.
</short>
</element>
<element name="TCustomImageListResolutions.FindBestToCopyFrom.ATargetWidth">
<short>Image width desired in the resolution.</short>
</element>
<element name="TCustomImageListResolutions.FindBestToCopyFrom.AIgnoreIndex">
<short>Ordinal position of an image resolution ignored in the method.</short>
</element>

<element name="TCustomImageListResolutions.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance. Create calls the 
inherited constructor. Create allocates resources needed for the internal 
object list which stores the image resolutions in the container. Create sets 
the value for the <var>ImageList</var> property to <var>AImageList</var>. 
Create stores the class type in <var>AResolutionClass</var> to an internal 
member used in the container.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageListResolutions.Create.AImageList">
<short>Image list that owns the container.</short>
</element>
<element name="TCustomImageListResolutions.Create.AResolutionClass">
<short>
Class type used to create resolution class instances in the container.
</short>
</element>

<element name="TCustomImageListResolutions.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for the class instance. Destroy frees 
resources allocated to the internal list used to store image resolutions in 
the container. Destroy calls the inherited destructor prior to exiting from 
the method.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomImageListResolutions.FindBestToScaleFrom">
<short>
Finds the image resolution with the best size for scaling to the target width.
</short>
<descr>
<p>
<var>FindBestToScaleFrom</var> is an <var>Integer</var> function used to find 
the image resolution that is the best candidate for scaling images to the 
specified target width.
</p>
<p>
<var>ATargetWidth</var> contains the image width to locate in the resolutions 
stored in the container.
</p>
<p>
The return value contains the ordinal position for the image resolution 
selected as the source for images.
</p>
<p>
FindBestToScaleFrom calls the <var>Find</var> method to locate an existing 
image resolution that matches the value in ATargetWidth. If an existing image 
resolution is not found that uses the image width in ATargetWidth, the 
<var>FindBestToCopyFrom</var> method is called to search all resolutions for 
the best candidate for the target image width.
</p>
<p>
FindBestToScaleFrom is used in the implementation of the 
<var>StretchDraw</var> method in <var>TCustomImageList</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageList.StretchDraw"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.FindBestToScaleFrom.Result">
<short>Source image resolution to use for scaling to the target width.</short>
</element>
<element name="TCustomImageListResolutions.FindBestToScaleFrom.ATargetWidth">
<short>Target width for the scaled image resolution.</short>
</element>

<element name="TCustomImageListResolutions.Delete">
<short>
Deletes the image resolution stored at the specified position in the 
container.
</short>
<descr>
<p>
<var>Delete</var> is a procedure used to remove the image resolution stored 
at the specified position in the container. Delete calls the Delete method in 
the internal <var>TObjectList</var> member which stores the image resolutions 
for the container.
</p>
<p>
<var>AIndex</var> contains the ordinal position of the object instance 
deleted in the method.
</p>
<p>
Use the <var>Clear</var> method to remove all image resolutions stored in the 
container.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.Clear"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.Delete.AIndex">
<short>
Ordinal position of the image resolution to delete from the container.
</short>
</element>

<element name="TCustomImageListResolutions.Clear">
<short>
Clears all image resolutions stored in the container.
</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove all image resolutions stored 
in the container. Clear calls the <var>Clear</var> method in the internal 
<var>TObjectList</var> member which stores the image resolutions in the 
container.
</p>
<p>
Use the <var>Delete</var> method to remove an image resolution stored at a 
specific position in the container.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.Delete"/>
</seealso>
</element>

<element name="TCustomImageListResolutions.ImageLists">
<short>
Provides access to an image list which uses the specified image width.
</short>
<descr>
<p>
<var>ImageLists</var> is a read-only indexed 
<var>TCustomImageListResolution</var> property which provides access to the 
image resolution which uses the image width in AImageWidth.
</p>
<p>
<var>GetImageLists</var> is the read access specifier for the property value. 
An overloaded variant of the method is used to Find an existing image 
resolution that uses the requested image size. If an image resolution with 
the requested size does not already exist, a new resolution class instance is 
created and populated with images scaled to the required size. The new image 
resolution is inserted in the container at the position where the image size 
should be located. This ensures that the image resolutions are ordered in 
ascending image size order as expected in <var>TCustomImageList</var> methods.
</p>
<p>
Use the <var>Items</var> property to access existing resolutions by their 
ordinal position in the container.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.Items"/>
<link id="TCustomImageList.HeightForWidth"/>
<link id="TCustomImageList.AddImages"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.ImageLists.Result">
<short>Image list with images using the specified width.</short>
</element>
<element name="TCustomImageListResolutions.ImageLists.AImageWidth">
<short>Image width requested in the image list.</short>
</element>

<element name="TCustomImageListResolutions.Items">
<short>
Provides indexed access to existing image resolutions in the container.
</short>
<descr>
<p>
<var>Items</var> is an indexed read-only 
<var>TCustomImageListResolution</var> property which provides access to 
existing image resolutions in the container. The TCustomImageListResolution 
instances in the Items property are stored in an internal 
<var>TObjectList</var> member, and retrieved in the read access specifier.
</p>
<p>
<var>AIndex</var> contains the ordinal position in the container for the 
requested image resolution.
</p>
<p>
Items is the default property for the container.
</p>
<p>
Use the <var>ImageLists</var> property to access or create an image 
resolution using a specified image width.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.ImageLists"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageListResolutions.Items.Result">
<short>The image resolution class instance at the specified position.</short>
</element>
<element name="TCustomImageListResolutions.Items.AIndex">
<short>Ordinal position for the requested image resolution.</short>
</element>

<element name="TCustomImageListResolutions.Count">
<short>
Number of image resolutions stored in the container.
</short>
<descr>
<p>
<var>Count</var> is a read-only <var>Integer</var> property that indicates 
the number of image resolutions stored in the container. Count returns the 
number of items in the internal <var>TObjectList</var> member which stores 
the image resolutions for the container.
</p>
<p>
Count determines the upper range boundary (<b>Count - 1</b>) available when 
accessing the image resolutions in the container. The lower range boundary is 
always <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso/>
</element>

<element name="TCustomImageListResolutionEnumerator">
<short>
Implements an enumerator for image resolutions in TCustomImageList.
</short>
<descr>
<p>
<var>TCustomImageListResolutionEnumerator</var> is a class which implements 
an enumerator for image resolutions in TCustomImageList. Methods and 
properties are provided to implement the <var>IEnumerator</var> interface for 
<var>TCustomImageListResolution</var> class instances.
</p>
<p>
TCustomImageListResolutionEnumerator includes a an internal 
<var>TCustomImageList</var> member which represents the image list for the 
enumerator class instance. The constructor for the class includes an argument 
that determines whether enumerator navigation is performed in ascending or 
descending order.
</p>
<p>
TCustomImageListResolutionEnumerator is the type returned from the 
<var>Resolutions</var> and <var>ResolutionsDesc</var> methods in 
<var>TCustomImageList</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator.Create"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>

<element name="TCustomImageListResolutionEnumerator.FCurrent" link="#lcl.imglist.TCustomImageListResolutionEnumerator.Current"/>

<element name="TCustomImageListResolutionEnumerator.FImgList"/>

<element name="TCustomImageListResolutionEnumerator.FDesc"/>

<element name="TCustomImageListResolutionEnumerator.GetCurrent">
<short>Gets the value for the Current property.</short>
<seealso>
<link id="TCustomImageListResolutionEnumerator.Current"/>
</seealso>
</element>
<element name="TCustomImageListResolutionEnumerator.GetCurrent.Result">
<short>Value for the Current property.</short>
</element>

<element name="TCustomImageListResolutionEnumerator.GetEnumerator">
<short>
Gets the enumerator for the class instance.
</short>
<descr>
<p>
<var>GetEnumerator</var> is a <var>TCustomImageListResolutionEnumerator</var> 
function used to get the enumerator for image resolutions in an image list. 
GetEnumerator implements the method defined in the <var>IEnumerator</var> 
interface. GetEnumerator provides access to the 
<var>TCustomImageListResolution</var> classes stored in a 
<var>TCustomImageList</var> class instance.
</p>
<p>
Use <var>MoveNext</var> to navigate to each image resolution for the 
enumerator.
</p>
<p>
Use <var>Current</var> to access the current image resolution in the 
enumerator.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
<link id="TCustomImageListResolutionEnumerator.MoveNext"/>
<link id="TCustomImageListResolutionEnumerator.Current"/>
</seealso>
</element>
<element name="TCustomImageListResolutionEnumerator.GetEnumerator.Result">
<short>Enumerator for the image resolutions in the image list.</short>
</element>

<element name="TCustomImageListResolutionEnumerator.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance. Create calls the 
inherited constructor.
</p>
<p>
<var>AImgList</var> contains the <var>TCustomImageList</var> instance which 
contains the image resolutions visited in the enumerator.
</p>
<p>
<var>ADesc</var> determines the navigation order for image resolutions in the 
enumerator. When ADesc is <b>True</b>, the enumerator is navigated in reverse 
(descending) order for the image resolutions. When ADesc is <b>False</b>, the 
enumerator is navigated in ascending image size order.
</p>
<p>
Create sets the initial value in the <var>Current</var> property to reflect 
the navigation order specified in ADesc. The initial value indicates that 
Current is positioned just prior to the first item for the navigation order; 
<var>TCustomImageListResolutions.Count</var> for descending navigation order, 
-1 for ascending navigation order.
</p>
<p>
Use <var>MoveNext</var> to navigate to the first and subsequent image 
resolution for the enumerator.
</p>
<p>
Use <var>Current</var> to access the current image resolution in the 
enumerator.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator.Current"/>
<link id="TCustomImageListResolutionEnumerator.MoveNext"/>
<link id="TCustomImageListResolutions.Count"/>
<link id="TCustomImageList"/>
</seealso>
</element>
<element name="TCustomImageListResolutionEnumerator.Create.AImgList">
<short>Image list that owns the image resolutions in the enumerator.</short>
</element>
<element name="TCustomImageListResolutionEnumerator.Create.ADesc">
<short>Indicates if the enumerator navigates in descending order.</short>
</element>

<element name="TCustomImageListResolutionEnumerator.MoveNext">
<short>
Moves to the next image resolution for the enumerator.
</short>
<descr>
<p>
<var>MoveNext</var> is a <var>Boolean</var> function used to move to the next 
image resolution in the navigation order for the enumerator. MoveNext 
implements the method defined in the <var>IEnumerator</var> interface.
</p>
<p>
MoveNext uses the navigation order specified in the <var>Create</var> method 
to determine the index position for the next image resolution accessed in the 
enumerator. When reverse order was specified, the value in Current is 
decremented. When ascending order was specified, the value in Current is 
incremented.
</p>
<p>
The return value for the method is <b>True</b> when the new value for Current 
is a valid index position for the specified navigation order (in the range 
<b>0..Count-1</b>).
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator.Current"/>
<link id="TCustomImageListResolutionEnumerator.Create"/>
</seealso>
</element>
<element name="TCustomImageListResolutionEnumerator.MoveNext.Result">
<short>
<b>True</b> when another image resolution is available in the enumerator.
</short>
</element>

<element name="TCustomImageListResolutionEnumerator.Current">
<short>The current image resolution for the enumerator.</short>
<descr>
<p>
<var>Current</var> is a read-only <var>TCustomImageListResolution</var> 
property that represents the current image resolution for the enumerator. 
Current implements the property defined in the <var>IEnumerator</var> 
interface.
</p>
<p>
Image resolutions are read from the image list passed as an argument to the 
constructor. An internal member is used to track the index position for the 
current image resolution. Use the <var>MoveNext</var> method to get the next 
index position used in the enumerator.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator.MoveNext"/>
<link id="TCustomImageListResolutionEnumerator.Create"/>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
</seealso>
</element>

<element name="TCustomImageListGetWidthForPPI">
<short>
Specifies an event handler used to get image widths for a display density 
(PPI).
</short>
<descr>
<p>
<var>TCustomImageListGetWidthForPPI</var> is an object procedure which 
specifies an event handler used to get image widths for a specific display 
density (PPI). TCustomImageListGetWidthForPPI allows an application to 
override the value returned in the <var>WidthForPPI</var> property (or when 
calling the <var>GetWidthForPPI</var> method) in <var>TCustomImageList</var>.
</p>
<p>
<var>Sender</var> contains the <var>TCustomImageList</var> instance 
triggering the event notification.
</p>
<p>
<var>AImageWidth</var> contains the image width used as the basis for the 
calculation.
</p>
<p>
<var>APPI</var> contains the display density (Pixels per Inch) for the 
derived image width.
</p>
<p>
<var>AResultWidth</var> is a variable parameter used to store the image width 
derived in the event handler for the specified display density.
</p>
<p>
TCustomImageListGetWidthForPPI is the type used to implement the 
<var>OnGetWidthForPPI</var> property in <var>TCustomImageList</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.OnGetWidthForPPI"/>
</seealso>
</element>
<element name="TCustomImageListGetWidthForPPI.Sender">
<short>Image list generating the event notification.</short>
</element>
<element name="TCustomImageListGetWidthForPPI.AImageWidth">
<short>Initial image width used in the event handler.</short>
</element>
<element name="TCustomImageListGetWidthForPPI.APPI">
<short>Display density (Pixels per Inch).</short>
</element>
<element name="TCustomImageListGetWidthForPPI.AResultWidth">
<short>
Imaged width calculated in the event handler for the display density.
</short>
</element>

<element name="TCustomImageList">
<short>
The base class for TImageList.
</short>
<descr>
<p>
<var>TCustomImageList</var> is a TLCLComponent descendant that implements the 
base class for <var>TImageList</var>. Image lists are used to provide images, 
icons, and overlays in controls like TMenu, TToolBar, TCoolBar, TActionList, 
TComboEx, TTabControl, TDBNav, TListView, TTreeView, and others.
</p>
<p>
Historically, TCustomImageList was based on the Win32 image list implemented 
in Delphi. Internally, the image list contained images (bitmaps or icons) of 
the same Width and Height. The images were stored in one big bitmap, whose 
total width was <b>Width * Count</b> pixels. This reduced the number of 
handles allocated when images in the image list were accessed.
</p>
<p>
Starting with LCL version 1.9, the concept of multiple image resolutions (or 
sizes) was introduced in TCustomImageList. This allowed the image list to 
contain multiple sizes for a given image. Multiple resolutions are 
implemented as parallel image lists, with images of the same size stored in a 
single image list. Image scaling was also introduced in TCustomImageList 
using its new support classes, and allowed resizing of images for high PPI 
(pixels per inch) displays.
</p>
<p>
Images stored in TCustomImageList are represented using 32-bit RGBA (Red 
Green Blue Alpha) raw image data. Transparency is implemented using the Alpha 
channel in the raw image data, but not all platforms/widgetsets support an 
8-bit Alpha channel. Any image type descended from <var>TCustomBitmap</var> 
can be added to an image list, including:
</p>
<ul>
<li>TBitmap</li>
<li>TIcon</li>
<li>TPortableNetworkGraphic</li>
<li>TPortableAnyMapGraphic</li>
<li>TJpegImage</li>
<li>TGIFImage</li>
<li>TTiffImage</li>
<li>TPixMap</li>
</ul>
<remark>
Starting with Lazarus 2.2, binary bitmap data stored for the image list in an 
LFM file uses ZLib compression. While this makes both the LFM and the EXE 
smaller, it also prevents Lazarus versions prior to 2.0 from opening the LFM 
file. If you need to maintain a Version 2.X project in an older Lazarus 
version, you first have to open it in Lazarus 2.0 and resave any forms with a 
TImageList. Then you can open these resaved LFMs in Lazarus versions prior to 
2.0.
</remark>
<p>
Use the <var>Width</var> and <var>Height</var> properties to set the default 
resolution (or size) used for images in the image list. If an image with a 
size different than the values in Width and Height is added to the default 
resolution, it is scaled the dimensions required for the resolution. The 
Width and Height properties also establish the image size used at the 100% 
scaling level on a 96 PPI display.
</p>
<p>
Changing the value in the Width or Height properties causes the image list 
and all of its resolutions to be cleared. Set the values in Width and Height 
prior to adding images to the default resolution.
</p>
<p>
TCustomImageList implements an internal container for each 
<var>Resolution</var> (or size) supported in the image list. This 
<var>TCustomImageListResolutions</var> class instance maintains separate 
parallel image lists where each list contains images for a given height and 
width.
</p>
<p>
Use the <var>Resolutions</var> or <var>ResolutionsDesc</var> methods to 
access enumerators (ascending and descending respectively) for the image 
resolutions stored in the container.
</p>
<p>
Each image Resolution (or size) is represented using a 
<var>TCustomImageListResolution</var> class instance. Like previous versions 
of TCustomImageList, it provides properties and methods needed to access and 
maintain images using a common height and width. It also provides access to 
the 32-bit RGBA raw image data for images in the resolution. The 
<var>Draw</var>, <var>StretchDraw</var>, and <var>DrawOverlay</var> methods 
are provided to render an image to a <var>TCanvas</var> instance.
</p>
<p>
Use the indexed <var>Resolution</var> property to access the image list with 
a specific image width. Use <var>ResolutionByIndex</var> to get an image 
resolution using its position in the image resolutions container. Use 
<var>ResolutionForPPI</var> to get a dynamically scaled image resolution 
using a specific image width, display density, and scaling factor.
</p>
<p>
The <var>FindResolution</var> method can be used to locate the image list 
which uses a specific image width. Use the <var>RegisterResolutions</var> 
method to pre-define the image sizes supported in the image list.
</p>
<p>
Use the <var>Scaled</var> property to indicate if images are automatically 
scaled to a Resolution not stored in the image list. Setting Scaled to 
<b>True</b> enables the automatic scaling features in TCustomImageList, and 
allows images to be scaled for use on high PPI displays. When an image list 
is selected using the Resolution property, or by calling GetResolutionForPPI, 
images will automatically be scaled from a suitable candidate resolution to 
the requested value. Set Scaled to <b>False</b> to use the closest image size 
in the list. Use the <var>OnGetWidthForPPI</var> event handler to perform 
image size substitution based on pixel display density.
</p>
<p>
Use the <var>Masked</var> property to determine if images in the list have a 
mask applied to define the transparent areas in images. Use the 
<var>Add</var> method to store an image with the combined values from its 
source data and optional mask. Use <var>AddMasked</var> to store an image 
using <var>MaskColor</var> to represent its transparent areas. Use 
<var>AddMultipleResolutions</var> to scale and store an array of bitmaps to 
each of the Resolutions defined for the image list. Use <var>AddSlice</var> 
and <var>AddSliced</var> to store one or many images using the native image 
list storage format. Use <var>ImageType</var> to indicate whether the image 
list contains images or image masks.
</p>
<p>
Please note that inserting or moving images will affect the index position 
for all following images in the resolution, and may cause problems when 
constant index positions are expected. In such cases a bitmap collection may 
better fit your needs.
</p>
<remark>
Due to its use of multiple resolutions and dynamic scaling, TCustomImageList 
is not suitable for use as a generic TBitmap collection. If fast storage of 
bitmaps is needed, you can create your own container using an array or TList 
class instance.
</remark>
</descr>
<version>
Multiple image resolutions, and scaling were added in LCL version 1.9.
</version>
<seealso>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageListResolution"/>
<link id="TScaledImageListResolution"/>
</seealso>
</element>

<element name="TCustomImageList.FDrawingStyle" link="#lcl.imglist.TCustomImageList.DrawingStyle"/>

<element name="TCustomImageList.FData">
<short>
Stores the TCustomImageListResolutions container used in the image list.
</short>
</element>

<element name="TCustomImageList.FImageType" link="#lcl.imglist.TCustomImageList.ImageType"/>
<element name="TCustomImageList.FMasked" link="#lcl.imglist.TCustomImageList.Masked"/>
<element name="TCustomImageList.FShareImages" link="#lcl.imglist.TCustomImageList.ShareImages"/>
<element name="TCustomImageList.FHeight" link="#lcl.imglist.TCustomImageList.Height"/>
<element name="TCustomImageList.FWidth" link="#lcl.imglist.TCustomImageList.Width"/>
<element name="TCustomImageList.FAllocBy" link="#lcl.imglist.TCustomImageList.AllocBy"/>
<element name="TCustomImageList.FBlendColor" link="#lcl.imglist.TCustomImageList.BlendColor"/>
<element name="TCustomImageList.FOnChange" link="#lcl.imglist.TCustomImageList.OnChange"/>

<element name="TCustomImageList.FChangeLinkList">
<short>List of TChangeLinks which are notified of changes.</short>
</element>

<element name="TCustomImageList.FBkColor" link="#lcl.imglist.TCustomImageList.BkColor"/>

<element name="TCustomImageList.FChanged">
<short>
Used to remember changes that occur while update notifications are locked 
(FUpdateCount &gt; 0).
</short>
</element>

<element name="TCustomImageList.FUpdateCount">
<short>Counter for BeginUpdate/EndUpdate method calls.</short>
</element>

<element name="TCustomImageList.FOverlays" link="#lcl.imglist.TCustomImageList.Overlay"/>

<element name="TCustomImageList.FHasOverlays" link="#lcl.imglist.TCustomImageList.HasOverlays"/>

<element name="TCustomImageList.FOnGetWidthForPPI" link="#lcl.imglist.TCustomImageList.OnGetWidthForPPI"/>

<element name="TCustomImageList.FScaled" link="#lcl.imglist.TCustomImageList.Scaled"/>

<element name="TCustomImageList.NotifyChangeLink">
<short>Notifies all subscribed objects of a change in the image list.</short>
<descr/>
<seealso>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.RegisterChanges"/>
</seealso>
</element>

<element name="TCustomImageList.SetBkColor">
<short>Sets the value for the BkColor property.</short>
<seealso>
<link id="TCustomImageList.BkColor"/>
</seealso>
</element>
<element name="TCustomImageList.SetBkColor.Value">
<short>New value for the BkColor property.</short>
</element>

<element name="TCustomImageList.SetDrawingStyle">
<short>Sets the value for the DrawingStyle property.</short>
<seealso>
<link id="TCustomImageList.DrawingStyle"/>
</seealso>
</element>
<element name="TCustomImageList.SetDrawingStyle.AValue">
<short>New value for the DrawingStyle property.</short>
</element>

<element name="TCustomImageList.SetHeight">
<short>Sets the value for the Height property.</short>
<seealso>
<link id="TCustomImageList.Height"/>
</seealso>
</element>
<element name="TCustomImageList.SetHeight.Value">
<short>New value for the Height property.</short>
</element>

<element name="TCustomImageList.SetMasked">
<short>Sets the value for the Masked property.</short>
<seealso>
<link id="TCustomImageList.Masked"/>
</seealso>
</element>
<element name="TCustomImageList.SetMasked.AValue">
<short>New value for the Masked property.</short>
</element>

<element name="TCustomImageList.SetShareImages">
<short>Sets the value for the ShareImages property.</short>
<seealso>
<link id="TCustomImageList.ShareImages"/>
</seealso>
</element>
<element name="TCustomImageList.SetShareImages.AValue">
<short>New value for the ShareImages property.</short>
</element>

<element name="TCustomImageList.SetWidth">
<short>Sets the value for the Width property.</short>
<seealso>
<link id="TCustomImageList.Width"/>
</seealso>
</element>
<element name="TCustomImageList.SetWidth.Value">
<short>New value for the Width property.</short>
</element>

<element name="TCustomImageList.GetReference">
<short>Gets the value for the Reference property.</short>
<seealso>
<link id="TCustomImageList.Reference"/>
</seealso>
</element>
<element name="TCustomImageList.GetReference.Result">
<short>Value for the Reference property.</short>
</element>

<element name="TCustomImageList.GetResolutionForPPI">
<short>
Gets an image list with images resized for the specified display density.
</short>
<descr>
<p>
<var>GetResolutionForPPI</var> is a TScaledImageListResolution function used 
to get an image list with images suitable for use at the specified display 
density (PPI).
</p>
<p>
AImageWidth is the width of the images used as the source for the resized 
images. AImageWidth determines the Resolution selected as the source image 
list.
</p>
<p>
APPI indicates the display density (pixels per inch) for the resized images.
</p>
<p>
ACanvasScaleFactor contains the value used to adjust the image sizes when 
Scaled is set to <b>True</b>. The value in ACanvasScaleFactor is not used 
when Scaled is set to <b>False</b>.
</p>
<p>
The return value is a TScaledImageListResolution class instance that contains 
images resized using the constraints in the parameter values.
</p>
<p>
GetResolutionForPPI calls GetWidthForPPI to calculate the image width used at 
the target PPI value. When Scaled is <b>True</b>, ACanvasScaleFactor is used 
as a multiplier for the APPI value. When Scaled is <b>False</b>, the value 
1.0 is used as the multiplier. GetResolutionForPPI calls GetResolution to 
retrieve the image list passed to the constructor for the 
TScaledImageListResolution class.
</p>
<p>
GetResolutionForPPI is used in the implementation of the DrawForPPI method.
</p>
</descr>
<seealso>
<link id="TScaledImageListResolution"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Scaled"/>
<link id="TCustomImageList.DrawForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.GetResolutionForPPI.Result">
<short>Image list with the resized images.</short>
</element>
<element name="TCustomImageList.GetResolutionForPPI.AImageWidth">
<short>Image width for source images in the operation.</short>
</element>
<element name="TCustomImageList.GetResolutionForPPI.APPI">
<short>Display density (pixels per inch) for the resized images.</short>
</element>
<element name="TCustomImageList.GetResolutionForPPI.ACanvasScaleFactor">
<short>Scaling factor used for the target canvas.</short>
</element>

<element name="TCustomImageList.GetWidthForPPI">
<short>Gets the value for the WidthForPPI property.</short>
<seealso>
<link id="TCustomImageList.WidthForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.GetWidthForPPI.Result">
<short>Image width derived for the specified display density.</short>
</element>
<element name="TCustomImageList.GetWidthForPPI.AImageWidth">
<short>Initial image width used in the method.</short>
</element>
<element name="TCustomImageList.GetWidthForPPI.APPI">
<short>Display density (PPI) for the calculation.</short>
</element>

<element name="TCustomImageList.GetHeightForPPI">
<short>Gets the value for the HeightForPPI property.</short>
<seealso>
<link id="TCustomImageList.HeightForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.GetHeightForPPI.Result">
<short>Image height derived for the specified display density.</short>
</element>
<element name="TCustomImageList.GetHeightForPPI.AImageWidth">
<short>Image width used to derive the value.</short>
</element>
<element name="TCustomImageList.GetHeightForPPI.APPI">
<short>Display density (PPI) used in the calculation.</short>
</element>

<element name="TCustomImageList.GetHeightForWidth">
<short>
Gets the height for images using the specified width.
</short>
<descr>
<p>
<var>GetHeightForWidth</var> is an <var>Integer</var> function used to get 
the vertical size for images using the image width specified in 
<var>AWidth</var>. When AWidth contains a non-zero value, it is used to 
calculate the proportional image height using the values in the 
<var>Height</var> and <var>Width</var> properties.
</p>
<p>
The return value contains the image height required for the specified image 
width, or <b>0</b> (<b>zero</b>) when AWidth contain <b>0</b> (<b>zero</b>).
</p>
<p>
GetHeightForWidth is used in the implementation of the 
<var>GetHeightForPPI</var> method, and in the <var>GetImageLists</var> method 
in <var>TCustomImageListResolutions</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetHeightForPPI"/>
<link id="TCustomImageListResolutions.ImageLists"/>
</seealso>
</element>
<element name="TCustomImageList.GetHeightForWidth.Result">
<short>Image height calculated for the specified image width.</short>
</element>
<element name="TCustomImageList.GetHeightForWidth.AWidth">
<short>Image width used to derive the proportional image height.</short>
</element>


<element name="TCustomImageList.GetCount">
<short>Gets the value for the Count property.</short>
<seealso>
<link id="TCustomImageList.Count"/>
</seealso>
</element>
<element name="TCustomImageList.GetCount.Result">
<short>Value for the Count property.</short>
</element>

<element name="TCustomImageList.GetSizeForPPI">
<short>
Gets the image size for the specified image width and display density (PPI).
</short>
<descr>
<p>
<var>GetSizeForPPI</var> is a <var>TSize</var> function used to get the image 
size for the specified image width and display density (PPI).
</p>
<p>
<var>AImageWidth</var> contains the initial image width used to calculate the 
proportional image width and height for a given display density.
</p>
<p>
<var>APPI</var> contains the display density (Pixels per Inch) to use in the 
sizing calculation.
</p>
<p>
<var>GetSizeForPPI</var> calls the <var>GetWidthForPPI</var> method to get 
the image width used for the specified display density. The 
<var>GetResolution</var> method is called to get the image resolution with 
images using the derived image width.
</p>
<p>
The return value is a <var>TSize</var> type where the calculated image width 
and height for the display density are stored in the cx and cy members 
(respectively).
</p>
<p>
GetSizeForPPI is the read access specifier for the <var>SizeForPPI</var> 
property.
</p>
</descr>
<seealso>
<link id="TCustomImageList.SizeForPPI"/>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.GetResolution"/>
</seealso>
</element>
<element name="TCustomImageList.GetSizeForPPI.Result">
<short>
The calculated size for images at the specified display density.
</short>
</element>
<element name="TCustomImageList.GetSizeForPPI.AImageWidth">
<short>Image width used as the basis for the calculated image size.</short>
</element>
<element name="TCustomImageList.GetSizeForPPI.APPI">
<short>Display density (PPI) for the calculated image size.</short>
</element>

<element name="TCustomImageList.GetBestIconIndexForSize">
<short>
Gets the index position for an icon with a suitable size.
</short>
<descr>
<p>
<var>GetBestIconIndexForSize</var> is an <var>Integer</var> function used to 
locate the index position for an icon with the size specified in 
<var>AWidth</var>. If an exact match is not found for the specified width, 
the next largest value in AIcon is used. If an icon size larger than AWidth 
is not found, the largest icon size available is used.
</p>
<p>
The return value contains the ordinal position for the icon size selected in 
the method.
</p>
<remark>
This methods requires the icons in AIcon to be sorted in ascending icon size 
order. <b>The selection logic will fail if the icon sizes are not sorted</b>.
</remark>
<p>
GetBestIconIndexForSize is used in the implementation of the 
<var>InsertIcon</var> and <var>ReplaceIcon</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList.InsertIcon"/>
<link id="TCustomImageList.ReplaceIcon"/>
</seealso>
</element>
<element name="TCustomImageList.GetBestIconIndexForSize.Result">
<short>Position of the candidate icon.</short>
</element>
<element name="TCustomImageList.GetBestIconIndexForSize.AIcon">
<short>Icon examined in the method.</short>
</element>
<element name="TCustomImageList.GetBestIconIndexForSize.AWidth">
<short>Icon width requested in the method.</short>
</element>

<element name="TCustomImageList.GetResolutionByIndex">
<short>Gets the value for the ResolutionByIndex property.</short>
<seealso>
<link id="TCustomImageList.ResolutionByIndex"/>
</seealso>
</element>
<element name="TCustomImageList.GetResolutionByIndex.Result">
<short>Value for the ResolutionByIndex property.</short>
</element>
<element name="TCustomImageList.GetResolutionByIndex.AIndex">
<short>Index position for the requested image resolution.</short>
</element>

<element name="TCustomImageList.GetResolutionCount">
<short>Gets the value for the ResolutionCount property.</short>
<seealso>
<link id="TCustomImageList.ResolutionCount"/>
</seealso>
<seealso>
<link id="TCustomImageList.ResolutionCount"/>
<link id="TCustomImageList.Resolutions"/>
</seealso>
</element>
<element name="TCustomImageList.GetResolutionCount.Result">
<short>Value for the ResolutionCount property.</short>
</element>

<element name="TCustomImageList.CreateDefaultResolution">
<short>
Creates the default resolution (size) for the image list.
</short>
<descr>
<p>
<var>CreateDefaultResolution</var> is a procedure used to create the default 
image resolution (or size) used in the image list. CreateDefaultResolution 
ensures that at least one <var>TCustomImageListResolution</var> instance has 
been created in the resolutions for the image list. The Resolution uses the 
value in the <var>Width</var> property as its image width.
</p>
<p>
CreateDefaultResolution uses the value in the <var>ResolutionCount</var> 
property to determine if the default resolution already exists in the image 
list. When ResolutionCount contains <b>0</b> (<b>zero</b>), the 
<var>GetResolution</var> method is called using the value in Width to 
automatically create the default image resolution.
</p>
<p>
CreateDefaultResolution is used in the implementation of methods including:
</p>
<ul>
<li>AddMultipleResolutions</li>
<li>AddSlice</li>
<li>AddSliced</li>
<li>Insert</li>
<li>InsertIcon</li>
<li>InsertMasked</li>
</ul>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.ResolutionCount"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.AddMultipleResolutions"/>
<link id="TCustomImageList.AddSlice"/>
<link id="TCustomImageList.AddSliced"/>
<link id="TCustomImageList.Insert"/>
<link id="TCustomImageList.InsertIcon"/>
<link id="TCustomImageList.InsertMasked"/>
</seealso>
</element>

<element name="TCustomImageList.DoDestroyResolutionReference">
<short>
Performs actions when the reference class for a resolution is freed.
</short>
<descr>
<p>
<var>DoDestroyResolutionReference</var> is a procedure used to perform 
actions needed when the reference class for an image resolution is freed. 
DoDestroyResolutionReference ensures that objects which have subscribed to 
change notifications for the image list are notified when the reference class 
(and its handle) are freed.
</p>
<p>
DoDestroyResolutionReference calls the 
<var>DoDestroyResolutionReference</var> method in each of the 
<var>TChangeLink</var> instances added using the <var>RegisterChanges</var> 
method. Use <var>UnRegisterChanges</var> to unsubscribe an image list from 
the change notifications.
</p>
</descr>
<seealso>
<link id="TCustomImageList.RegisterChanges"/>
<link id="TCustomImageList.UnRegisterChanges"/>
<link id="TCustomImageList.OnChange"/>
<link id="TChangeLink"/>
</seealso>
</element>
<element name="TCustomImageList.DoDestroyResolutionReference.AWidth">
<short>Image width for the resolution being freed.</short>
</element>
<element name="TCustomImageList.DoDestroyResolutionReference.AResolutionReference">
<short>Reference class for the resolution being freed.</short>
</element>

<element name="TCustomImageList.GetResolution">
<short>
Gets the value for the indexed Resolution property.
</short>
<descr>
<p>
<var>GetResolution</var> is a <var>TCustomImageListResolution</var> function 
used to get the image resolution which uses the image width specified in 
<var>AImageWidth</var>. When AImageWidth contains <b>0</b> (<b>zero</b>) or a 
negative value, the value in the <var>Width</var> property is used in the 
argument.
</p>
<p>
GetResolution uses the internal <var>TCustomImageListResolutions</var> member 
in the class to access its ImageLists property. If an image list using the 
request image width does not exist, it is created and populated by copying 
the images from the best candidate resolution.
</p>
<p>
GetResolution is used as the read access specifier for the indexed 
<var>Resolution</var> property.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.GetResolution.Result">
<short>Value for the Resolution property.</short>
</element>
<element name="TCustomImageList.GetResolution.AImageWidth">
<short>Image width for the requested resolution.</short>
</element>

<element name="TCustomImageList.GetResolutionClass">
<short>
Gets the class type used to create image resolutions in the list.
</short>
<descr>
<p>
<var>GetResolutionClass</var> is a <var>TCustomImageListResolutionClass</var> 
function which gets the class type used to create image resolutions in the 
image list. GetResolutionClass always returns the 
<var>TCustomImageListResolution</var> type in TCustomImageList.
</p>
<p>
GetResolutionClass is used to get the class type for items added to the 
<var>TCustomImageListResolutions</var> container, and passed as an argument 
when the container is created in the <var>Initialize</var> method.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageListResolutions.Create"/>
<link id="TCustomImageList.Initialize"/>
</seealso>
</element>
<element name="TCustomImageList.GetResolutionClass.Result">
<short>Class type used to create resolutions in the image list.</short>
</element>

<element name="TCustomImageList.CheckIndex">
<short>
Ensures that an Index position is valid for the bounds of the image list.
</short>
<descr>
<p>
<var>CheckIndex</var> is a procedure used to ensure that the value in AValue 
is a valid index position for the operations in the class.
</p>
<p>
AForInsert indicates if AValue is constrained to the existing range of 
ordinal positions in the list. When AForInsert contains <b>True</b>, AValue 
must be less than the Count property. When AForInsert is <b>False</b>, the 
index value is for an append operation and can contain a value less than or 
equal to the Count property.
</p>
<p>
An EInvalidOperation exception is raised when AValue is not in the required 
range for the specified operation.
</p>
<p>
CheckIndex is used in the implementation of various methods in the class.
</p>
</descr>
<errors>
Raises an EInvalidOperation exception when the index is out of bounds. Raised 
with the message in SInvalidIndex.
</errors>
</element>
<element name="TCustomImageList.CheckIndex.AIndex">
<short>Index position validated in the method.</short>
</element>
<element name="TCustomImageList.CheckIndex.AForInsert">
<short>
<b>True</b> when the index position is used for insertion (default is 
<b>False</b>).
</short>
</element>

<element name="TCustomImageList.Initialize">
<short>
Performs the initial set up for the image list.
</short>
<descr>
<p>
<var>Initialize</var> is a procedure used to perform the in ital set up for 
the image list. Initialize creates the internal 
<var>TCustomImageListResolutions</var> class instance used to store image 
resolutions in the image list. The internal list used for 
<var>TChangeLink</var> notifications is also created. The internal allocation 
block count is set to <b>4</b>.
</p>
<p>
Initialize sets the default values for the following properties:
</p>
<dl>
<dt>BlendColor</dt>
<dd>clNone</dd>
<dt>BkColor</dt>
<dd>clNone</dd>
<dt>DrawingStyle</dt>
<dd>dsNormal</dd>
</dl>
<p>
The <var>ClearOverlays</var> method is called to reset any images assigned as 
overlay images in the image list.
</p>
<p>
Initialize is used in the <var>Create</var> and <var>CreateSize</var> 
constructors. Create sets the default values for the <var>Height</var> and 
<var>Width</var> properties to <b>16</b>. CreateSize uses the arguments 
passed to the constructor as the value for the properties.
</p>
</descr>
<errors>
<p>
Initialize raises an <var>EInvalidOperation</var> exception if the value in 
the Height or Width property is invalid. Height must be in the range 
<b>1..32768</b>, and Width must be a positive non-zero Integer value. Raised 
with the message in <var>SInvalidImageSize</var>.
</p>
</errors>
<seealso>
<link id="TCustomImageList.Create"/>
<link id="TCustomImageList.CreateSize"/>
<link id="TCustomImageList.ClearOverlays"/>
<link id="TCustomImageList.Overlay"/>
<link id="TCustomImageListResolutions"/>
<link id="TChangeLink"/>
</seealso>
</element>

<element name="TCustomImageList.DefineProperties">
<short>
Defines properties used in the LCL component streaming mechanism.
</short>
<descr>
<p>
<var>DefineProperties</var> is an overridden method used to defined which 
unpublished properties in <var>TCustomImageList</var> are included in the LCL 
component streaming mechanism.
</p>
<p>
Filer is the <var>TFiler</var> class instance used to read and write the 
component during component streaming. DefineProperties defines the following 
properties for use during component streaming:
</p>
<table>
<tr>
<td><b>Property Name</b></td>
<td><b>Property Type</b></td>
<td><b>Description</b></td>
</tr>
<tr>
<td>Bitmap</td>
<td>Binary</td>
<td>Written when Count is non-zero</td>
</tr>
<tr>
<td>BitmapAdv</td>
<td>Binary</td>
<td> Written when a resolution exists that was explicitly created at 
design-time</td>
</tr>
</table>
</descr>
<seealso/>
</element>
<element name="TCustomImageList.DefineProperties.Filer">
<short>TFiler class used to read and write the component.</short>
</element>

<element name="TCustomImageList.SetWidthHeight">
<short>
Sets the Width and Height for images in the default resolution.
</short>
<descr>
<p>
<var>SetWidthHeight</var> is a a procedure used to set the values in the 
<var>Width</var> and <var>Height</var> properties to the values in the 
<var>NewWidth</var> and <var>NewHeight</var> parameters. Width and Height 
establish the default resolution (or image size) used in the image list. 
Changing either of the values in the method causes the image list, its 
<var>Resolutions</var>, and assigned <var>Overlay</var> images to be 
discarded by calling the <var>Clear</var> method.
</p>
<p>
Set the values in the Height and Width properties prior to adding images to 
the image list. Or, use the <var>CreateSize</var> constructor to specify the 
default resolution when the image list is created.
</p>
<p>
SetWidthHeight is used in the implementation of the <var>Assign</var>, 
<var>SetHeight</var>, and <var>SetWidth</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Overlay"/>
<link id="TCustomImageList.Clear"/>
<link id="TCustomImageList.CreateSize"/>
<link id="TCustomImageList.Assign"/>
</seealso>
</element>
<element name="TCustomImageList.SetWidthHeight.NewWidth">
<short>New value for the Width property.</short>
</element>
<element name="TCustomImageList.SetWidthHeight.NewHeight">
<short>New value for the Height property.</short>
</element>

<element name="TCustomImageList.ClearOverlays">
<short>
Clears images indexes assigned as overlay images in the image list.
</short>
<descr>
<p>
<var>ClearOverlays</var> is a procedure used to reset the image indexes 
assigned in the internal array for use as an overlay images. ClearOverlays 
sets each TOverlay index position to the value <b>-1</b> to indicate that it 
does not point to an overlay image in the image list.
</p>
<p>
ClearOverlays is used in the implementation of the <var>Clear</var> and 
<var>Initialize</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Clear"/>
<link id="TCustomImageList.Initialize"/>
<link id="TOverlay"/>
</seealso>
</element>

<element name="TCustomImageList.MarkAsChanged">
<short>
Sets the value in the internal Changed flag to <b>True</b>.
</short>
<descr>
<p>
<var>MarkAsChanged</var> allows an application to set the value for the 
internal member which tracks whether the image list has been modified. When 
enabled, the Change method performs change notifications for subscribers and 
signals the OnChange event handler (when assigned) when the EndUpdate method 
is called.
</p>
<p>
MarkAsChanged sets the value for the internal member to <b>True</b>. This 
update normally occurs in methods like Clear, Delete, Move, ReadData, 
ReadAdvData, and when the value in BkColor is changed. MarkAsChanged allows 
descendent classes to set the flag value from any methods added to the class 
or from application code.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.BkColor"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.Clear"/>
<link id="TCustomImageList.Delete"/>
<link id="TCustomImageList.Move"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.ReadAdvData"/>
<link id="TCustomImageList.ReadData"/>
<link id="TChangeLink.Change"/>
<link id="TChangeLink.OnChange"/>
</seealso>
</element>

<element name="TCustomImageList.DoAfterUpdateStarted">
<short>
Performs actions needed after the BeginUpdate method is started.
</short>
<descr>
<p>
<var>DoAfterUpdateStarted</var> is a virtual method in 
<var>TCustomImageList</var> called from the BeginUpdate method after the 
internal update counter has been incremented. It is called when the first 
update becomes active for the image list (the update counter is 1). Subsequent 
calls to BeginUpdate do not call the DoAfterUpdateStarted method until the 
update count returns to 1.
</p>
<p>
DoAfterUpdateStarted has an empty implementation in TCustomImageList, but can 
be overridden in descendent classes to perform any actions needed in the 
derived class.
</p>
<p>
Use DoBeforeUpdateEnded to perform actions needed in the EndUpdate method 
prior to decrementing the update counter and calling the Change method.
</p>
<p>
Use MarkAsChanged to set the internal flag which tracks modifications to the 
image list.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.DoBeforeUpdateEnded"/>
<link id="TCustomImageList.MarkAsChanged"/>
</seealso>
</element>

<element name="TCustomImageList.DoBeforeUpdateEnded">
<short>
Performs actions needed before the EndUpdate method is completed.
</short>
<descr>
<p>
<var>DoBeforeUpdateEnded</var> is a virtual method in 
<var>TCustomImageList</var> called from the EndUpdate method. It is called 
when the first update batch corresponding to the initial BeginUpdate call for 
the image list is completed (i.e. when the update counter is 1). It occurs 
immediately before the update counter is decremented and the Change method is 
called.
</p>
<p>
DoBeforeUpdateEnded has an empty implementation in TCustomImageList, but can 
be overridden in descendent classes to perform any actions needed in the 
derived class.
</p>
<p>
Use DoAfterUpdateStarted to perform actions needed in the BeginUpdate method 
after the update counter has been incremented.
</p>
<p>
Use MarkAsChanged to set the internal flag which tracks modifications to the 
image list.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.DoAfterUpdateStarted"/>
<link id="TCustomImageList.MarkAsChanged"/>
</seealso>
</element>

<element name="TCustomImageList.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance. Create calls the 
inherited constructor, and sets the default values for the following 
properties:
</p>
<dl>
<dt>Height</dt>
<dd>16 (pixels)</dd>
<dt>Width</dt>
<dd>16 (pixels)</dd>
</dl>
<p>
Create calls the <var>Initialize</var> method to allocate resources and to 
set the default value for properties used in the image list.
</p>
<p>
Use the alternate <var>CreateSize</var> constructor to create an image list 
using specific values in its <var>Width</var> and <var>Height</var> 
properties.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.Initialize"/>
<link id="TCustomImageList.CreateSize"/>
</seealso>
</element>
<element name="TCustomImageList.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TCustomImageList.CreateSize">
<short>
Initializes the image list using the specified height and width.
</short>
<descr>
<p>
<var>CreateSize</var> is an alternate constructor for the class instance. 
CreateSize calls the inherited constructor. CreateSize sets the image size 
used in the default resolution to the values specified in the AWidth and 
AHeight parameters.
</p>
<p>
Create calls the <var>Initialize</var> method to allocate resources and to 
set the default value for properties used in the image list.
</p>
<remark>
CreateSize does not assign a value for the Owner property; it will not 
receive Notify events when the Application, Form, or Component where it is 
used is freed.
</remark>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.Initialize"/>
<link id="TCustomImageList.Create"/>
</seealso>
</element>
<element name="TCustomImageList.CreateSize.AWidth">
<short>The width of images in the default resolution.</short>
</element>
<element name="TCustomImageList.CreateSize.AHeight">
<short>The height of images in the default resolution.</short>
</element>

<element name="TCustomImageList.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy ensures that resources allocated to the internal 
<var>TCustomImageListResolutions</var> instance in the class are freed, and 
calls the inherited destructor. Destroy calls <var>UnRegisterChanges</var> to 
remove the <var>TChangeLink</var> items in the internal list of change links 
for the class, and frees resources allocated to the list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.UnRegisterChanges"/>
<link id="TCustomImageListResolutions"/>
<link id="TChangeLink"/>
</seealso>
</element>

<element name="TCustomImageList.ScaleImage">
<short>
Scales an image and its optional mask to the specified target size.
</short>
<descr>
<p>
<var>ScaleImage</var> is an overloaded class procedure used to scale an image 
and its optional mask to the specified target size.
</p>
<p>
<var>ABitmap</var> is the <var>TCustomBitmap</var> with the original image 
scaled in the method.
</p>
<p>
<var>AMask</var> is the optional mask that defines the transparent areas in 
ABitmap. When AMask is a valid TCustomBitmap instance, the handle to its 
bitmap is used in the scaling operation. When AMask has not been assigned 
(contains <b>Nil</b>), the handle to the mask in ABitmap is used for the 
transparent areas in the image.
</p>
<p>
<var>TargetWidth</var> and <var>TargetHeight</var> contain the size requested 
for the scaled image.
</p>
<p>
<var>AData</var> is a variable <var>TRGBAQuadArray</var> parameter where the 
32-bit RGBA raw image data for the scaled image is stored.
</p>
<p>
An overloaded variant of the method provides the <var>SourceRect</var> 
parameter which defines the area in ABitmap that is scaled in the method.
</p>
<p>
ScaleImage sets the size of AData to the number of bytes needed for the 
target image size (<b>TargetHeight * TargetWidth * 32</b>).
</p>
<p>
ScaleImage tries to load a bitmap that uses the image and mask specified in 
ABitmap and AMask. If they cannot be combined and loaded, no additional 
actions are performed in method. If they are loaded successfully, their pixel 
data is examined and used to set the alpha channel and transparency for each 
pixel. The adjusted image is rendered for the target image size using 
<var>TFPImageCanvas</var>. The pixel data for the rendered image is stored in 
AData using the RGBA attributes for the scaled image.
</p>
<p>
ScaleImage is used in the implementation of several methods, including:
</p>
<ul>
<li>TCustomImageList.AddMultipleResolutions</li>
<li>TCustomImageList.AddSlice</li>
<li>TCustomImageList.AddSliced</li>
<li>TCustomImageList.Insert</li>
<li>TCustomImageList.InsertIcon</li>
<li>TCustomImageList.InsertMasked</li>
<li>TCustomImageList.Replace</li>
<li>TCustomImageList.ReplaceIcon</li>
<li>TCustomImageList.ReplaceMasked</li>
<li>TCustomImageListResolution.Add</li>
<li>TCustomImageListResolution.AddImages</li>
</ul>
</descr>
<seealso>
<link id="TCustomImageList.AddMultipleResolutions"/>
<link id="TCustomImageList.AddSlice"/>
<link id="TCustomImageList.AddSliced"/>
<link id="TCustomImageList.Insert"/>
<link id="TCustomImageList.InsertIcon"/>
<link id="TCustomImageList.InsertMasked"/>
<link id="TCustomImageList.Replace"/>
<link id="TCustomImageList.ReplaceIcon"/>
<link id="TCustomImageList.ReplaceMasked"/>
<link id="TRGBAQuadArray"/>
</seealso>
</element>
<element name="TCustomImageList.ScaleImage.ABitmap">
<short>Bitmap with the image scaled in the method.</short>
</element>
<element name="TCustomImageList.ScaleImage.AMask">
<short>Optional mask that defines the transparent areas of the image.</short>
</element>
<element name="TCustomImageList.ScaleImage.TargetWidth">
<short>Target width for the scaled image.</short>
</element>
<element name="TCustomImageList.ScaleImage.TargetHeight">
<short>Target Height for the scaled image.</short>
</element>
<element name="TCustomImageList.ScaleImage.AData">
<short>32-bit RGBA raw image data for the scaled image.</short>
</element>
<element name="TCustomImageList.ScaleImage.SourceRect">
<short>Defines the area in the original image scaled in the method.</short>
</element>

<element name="TCustomImageList.AssignTo">
<short>
Assigns properties in an image list to another instance of the class.
</short>
<descr>
<p>
<var>AssignTo</var> is an overridden method which allows assigning properties 
in the image list to another instance of the class. AssignTo re-implements 
the method defined in <var>TPersistent</var> to include the properties 
available in TCustomImageList.
</p>
<p>
Dest is the persistent object where properties values from the current class 
instance are stored.
</p>
<p>
AssignTo checks the <var>Dest</var> argument to ensure that its is a 
<var>TCustomImageList</var> descendant. When it is derived from 
TCustomImageList, its <var>Assign</var> method is used to store the values in 
the current object instance. If it is not a TCustomImageList descendant, the 
inherited AssignTo method is called using Dest as an argument.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Assign"/>
</seealso>
</element>
<element name="TCustomImageList.AssignTo.Dest">
<short>Image list to receive the values for the class instance.</short>
</element>

<element name="TCustomImageList.Assign">
<short>
Stores properties from the specified image list to the current class instance.
</short>
<descr>
<p>
<var>Assign</var> is an overridden method used to store properties from the 
specified image list to the current class instance. Assign re-implements the 
method defined in <var>TPersistent</var> to include properties from 
<var>TCustomImageList</var>.
</p>
<p>
<var>Source</var> contains the <var>TCustomImageList</var> instance with the 
properties stored in the current class instance. No actions are performed in 
the method when Source is the same as the current class instance (Self).
</p>
<p>
Assign checks the class instance in Source to determine if it is derived from 
<var>TCustomImageList</var>. When it is a TCustomImageList descendant, 
existing resolutions and images in the current class instance are discarded. 
The following property value are copied from Source to the current image list 
instance:
</p>
<ul>
<li>Height</li>
<li>Width</li>
<li>Resolutions</li>
</ul>
<p>
The <var>Resolutions</var> enumerator in Source is used to get images for 
each image resolution and to reallocate the storage used for its raw image 
data. System.Move is called to copy the raw image data for the resolution 
from Source to the current class instance.
</p>
<p>
When Source is not derived from TCustomImageList, the inherited 
<var>Assign</var> method is called using Source as an argument.
</p>
</descr>
<seealso>
<link id="TCustomImageList.AssignTo"/>
</seealso>
</element>
<element name="TCustomImageList.Assign.Source">
<short>
Image list with properties stored in the current class instance.
</short>
</element>

<element name="TCustomImageList.WriteData">
<short>
Writes image data for the default resolution to a stream.
</short>
<descr>
<p>
<var>WriteData</var> is a procedure used to write the image data for the 
default resolution to the stream specified in AStream. WriteData calls 
<var>GetResolution</var> using the value in <var>Width</var> to retrieve the 
default image resolution. The WriteData method in 
<var>TCustomImageListResolution</var> is called to perform the write 
operation using the specified stream.
</p>
<remark>
Data compression is enabled when writing image data for the resolution. Data 
compression was not enabled in previous LCL versions to maintain 
compatibility with earlier versions of Lazarus. That backward compatibility 
is no longer possible with image compression enabled.
</remark>
<p>
Use <var>WriteAdvData</var> to write image data for all resolutions in the 
image list.
</p>
<p>
Use ReadData to read image data from a stream.
</p>
</descr>
<version>
Image compression was enabled as a default in revision 62583, and will be 
included in Lazarus versions after 2.0.6.
</version>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.WriteAdvData"/>
<link id="TCustomImageList.ReadData"/>
</seealso>
</element>
<element name="TCustomImageList.WriteData.AStream">
<short>Stream used to store the image data.</short>
</element>

<element name="TCustomImageList.ReadData">
<short>
Reads image data for the default resolution from a stream.
</short>
<descr>
<p>
<var>ReadData</var> is a procedure used to read image data for the default 
resolution from the stream specified in <var>AStream</var>. ReadData allows 
image data written using the <var>WriteData</var> method to be stored in the 
image list.
</p>
<p>
ReadData calls <var>BeginUpdate</var> to suspend <var>OnChange</var> 
notifications when loading the image data from the stream. 
<var>EndUpdate</var> is called when the image data has been loaded from the 
stream.
</p>
<p>
ReadData calls the <var>GetResolution</var> method to locate the 
<var>TCustomImageListResolution</var> class instance which uses the image 
width in the <var>Width</var> property. The ReadData method in 
TCustomImageListResolution is used to read image data from the stream in 
AStream.
</p>
<p>
ReadData updates the internal Changed flag for the image list, and calls the 
<var>Change</var> method to perform change notifications.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WriteData"/>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.ReadData.AStream">
<short>Stream with the image data read in the method.</short>
</element>

<element name="TCustomImageList.WriteAdvData">
<short>
Writes the image content for multiple resolutions to the specified stream.
</short>
<descr>
<p>
<var>WriteAdvData</var> is procedure used to write image data for multiple 
resolutions to the stream specified in <var>AStream</var>. WriteAdvData is 
similar to the <var>WriteData</var> method, but writes only the image 
resolutions other than the default resolution for the image list. Like the 
default resolution, image resolutions that were automatically created at 
design-time are also ignored in the method.
</p>
<p>
WriteAdvData uses the <var>Resolutions</var> enumerator to gather the image 
resolutions handled in the method. WriteAdvData writes an image list 
signature that identifies the storage format used in the stream. WriteAdvData 
writes an <var>Integer</var> value that indicates the number of resolutions 
included in the stream.
</p>
<p>
The <var>WriteData</var> method in <var>TCustomImageListResolution</var> is 
used to write the image content for each of the resolutions handled in the 
method. Data compression is enabled for each of the resolutions written to 
the stream.
</p>
<p>
WriteAdvData is used in the implementation of the <var>DefineProperties</var> 
and <var>Equals</var> methods.
</p>
<p>
Use <var>WriteData</var> to store the image content for the default 
resolution to a stream.
</p>
<p>
Use <var>ReadAdvData</var> to read the values written using the WriteAdvData 
method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.DefineProperties"/>
<link id="TCustomImageList.Equals"/>
<link id="TCustomImageList.WriteData"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.WriteAdvData.AStream">
<short>Stream where the content for the image resolutions is stored.</short>
</element>

<element name="TCustomImageList.ReadAdvData">
<short>
Reads the image content for multiple resolutions from a stream.
</short>
<descr>
<p>
<var>ReadAdvData</var> is a procedure used to read the content for multiple 
image resolutions from the stream specified in AStream. ReadAdvData is the 
complement to the <var>WriteAdvData</var> method, and handles reading 
multiple image resolutions for the image list.
</p>
<p>
ReadAdvData calls <var>BeginUpdate</var> to block <var>OnChange</var> 
notifications in the method. The <var>EndUpdate</var> method is called when 
all image resolutions in the stream have been loaded.
</p>
<p>
ReadAdvData reads the image list signature from AStream, and checks the value 
to ensure that it supports use of <var>BitmapAdv</var> in its properties. If 
it does not contain the value <var>SIG_LAZ3</var>, an Exception is raised.
</p>
<p>
ReadAdvData reads the Integer value that indicates the number of image 
resolutions stored in the stream, and processes each resolution by reading 
the following values:
</p>
<table>
<tr>
<td><b>Value</b></td>
<td><b>Size</b></td>
</tr>
<tr>
<td>Resolution signature</td>
<td>SizeOf(TImageListSignature)</td>
</tr>
<tr>
<td>Image count</td>
<td>Cardinal</td>
</tr>
<tr>
<td>Image width</td>
<td>Cardinal</td>
</tr>
<tr>
<td>Image height</td>
<td>Cardinal</td>
</tr>
</table>
<p>
An exception is raised if an image resolution does not support 
<var>BitmapAdv</var> in its properties (requires <var>SIG_LAZ3</var> or 
<var>SIG_LAZ4</var> in the resolution signature).
</p>
<p>
ReadAdvData gets a <var>TCustomImageListResolution</var> instance from the 
internal TCustomImageListResolutions container that uses the image width for 
each of the resolutions. An image resolution is created if it does not 
already exist. Each resolution class instance calls its <var>ReadData</var> 
method to load image data from the stream in AStream.
</p>
<p>
ReadAdvData updates the internal Changed member for the image list, and calls 
<var>Change</var> prior to exiting from the method.
</p>
</descr>
<errors>
<p>
Raises an exception if the image list signature is not <b>SIG_LAZ3</b>.
</p>
<p>
Raises an exception if an image resolution signature is not <b>SIG_LAZ3</b> 
or <b>SIG_LAZ4</b>.
</p>
</errors>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.Resolutions"/>
<link id="#lcl.lresources.ReadLRSCardinal">ReadLRSCardinal</link>
</seealso>
</element>
<element name="TCustomImageList.ReadAdvData.AStream">
<short>Stream with the image resolutions loaded in the method.</short>
</element>

<element name="TCustomImageList.Equals">
<short>
Compares the contents of the image lists.
</short>
<descr>
<p>
<var>Equals</var> is an overridden <var>Boolean</var> function used to 
compare the content in the image list to another <var>TCustomImageList</var> 
class instance. Equals re-implements the method defined in <var>TObject</var> 
to determine object equivalence.
</p>
<p>
<var>Obj</var> is a <var>TObject</var> instance used in the comparison. Obj 
must be a TCustomImageList descendant in the method; the inherited method is 
called when it is not derived from TCustomImageList.
</p>
<p>
This is an expensive operation. Both image lists are written to memory 
streams using <var>WriteData</var> and <var>WriteAdvData</var>, and the 
streams are then compared on a byte-by-byte basis.
</p>
<p>
The return value is <var>True</var> when the memory used in both streams has 
identical content.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WriteData"/>
<link id="TCustomImageList.WriteAdvData"/>
</seealso>
</element>
<element name="TCustomImageList.Equals.Result">
<short><b>True</b> when the image lists are equivalent.</short>
</element>
<element name="TCustomImageList.Equals.Obj">
<short>The image list object used for the comparison.</short>
</element>

<element name="TCustomImageList.BeginUpdate">
<short>
Starts an update to the image list, and controls execution of the OnChange 
event.
</short>
<descr>
<p>
Call <var>BeginUpdate</var> when an update to the image list is started to 
control execution of the OnChange event handler in Change.
</p>
<p>
<var>BeginUpdate</var> is used, along with <var>EndUpdate</var>, to speed up 
the insertion or modification of images in an image list. Every call to 
BeginUpdate must be matched by a call to EndUpdate; i. e. update operations 
can be nested.
</p>
<p>
BeginUpdate increments an internal counter in the class instance each time 
the method is called. The DoAfterUpdateStarted method is called to perform any 
actions needed in the image list when an update is started. It is called when 
the internal counter is set to 1; subsequent calls to BeginUpdate do not call 
DoAfterUpdateStarted until the update count has returned to 1.
</p>
<p>
EndUpdate is used to perform action needed when an update is completed and to 
decrement the internal update counter. When the counter contains a positive 
non-zero value, the OnChange event handler is not executed when the image list 
is changed.
</p>
</descr>
<version>
Modified in LCL version 3.0 to call the DoAfterUpdateStarted method.
</version>
<seealso>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.MarkAsChanged"/>
<link id="TCustomImageList.DoAfterUpdateStarted"/>
<link id="TCustomImageList.DoBeforeUpdateEnded"/>
</seealso>
</element>

<element name="TCustomImageList.EndUpdate">
<short>
Finishes an update to the image list, and calls Change.
</short>
<descr>
<p>
<var>EndUpdate</var> is used to finish an update to images in the list. 
EndUpdate is used, along with <var>BeginUpdate</var>, to speed up image list 
updates by blocking execution of the <var>OnChange</var> event handler.
</p>
<p>
BeginUpdate increments an internal counter in the class instance each time 
the method is called. EndUpdate decrements the internal counter when called. 
If the modified counter contains a positive non-zero value, the OnChange event 
handler is not executed when the image list is changed. When the counter 
reaches zero (<b>0</b>), the Change method is called to perform OnChange 
notifications.
</p>
<p>
EndUpdate cannot be called more often than the BeginUpdate method. If the 
method would cause the internal counter to contain a negative value, the 
<var>RaiseGDBException</var> method is called to raise an exception for the 
condition.
</p>
<p>
EndUpdate calls the DoBeforeUpdateEnded method to perform any actions needed 
when the internal update counter is set to 1. The value in the internal 
counter is decremented, and the Change method is called prior to exit. Change 
notifications and the OnChange event handler occur when there are no other 
nested BeginUpdate calls active.
</p>
</descr>
<version>
Modified in LCL version 3.0 to call the DoBeforeUpdateEnded method.
</version>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.DoBeforeUpdateEnded"/>
<link id="TCustomImageList.DoAfterUpdateStarted"/>
<link id="TCustomImageList.MarkAsChanged"/>
</seealso>
</element>

<element name="TCustomImageList.Add">
<short>
Adds an image to the list using its source data and optional mask.
</short>
<descr>
<p>
<var>Add</var> is an <var>Integer</var> function used to to add the specified 
Image and its optional Mask to the image list.
</p>
<p>
Image is the <var>TCustomBitmap</var> instance with image data added in the 
method.
</p>
<p>
Mask is a <var>TCustomBitmap</var> instance which contains a monochrome 
bitmap which defines the transparent areas for the image. When Mask contains 
a valid bitmap, it is combined with the source data in Image before it is 
stored in the image list. When Mask contains <b>Nil</b>, the Image has no 
defined transparent areas.
</p>
<p>
The return values contains the ordinal position in the image list for the 
newly added image.
</p>
<p>
Add calls the <var>Insert</var> method to store Image and Mask in the image 
list. The Image and optional Mask are scaled and added to each of the defined 
Resolutions in the image list. No actions are performed in the method when 
Image has not been assigned (contains <b>Nil</b>).
</p>
<p>
Use <var>AddMasked</var> to add a masked image where MaskColor defines the 
transparent areas in the image.
</p>
<p>
Use the <var>AddSlice</var> method to store an image from source data in the 
image list storage format. Use the <var>AddSliced</var> method to store all 
images from source data in the image list storage format.
</p>
</descr>
<seealso>
<link id="TCustomImageList.AddMasked"/>
<link id="TCustomImageList.AddSliced"/>
<link id="TCustomImageList.AddSlice"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.Add.Result">
<short>The index of the added image.</short>
</element>
<element name="TCustomImageList.Add.Image">
<short>Bitmap image data added in the method.</short>
</element>
<element name="TCustomImageList.Add.Mask">
<short>A bitmap mask which defines the transparent parts of Image.</short>
</element>

<element name="TCustomImageList.AddMultipleResolutions">
<short>
Adds images with varying sizes to the corresponding image resolution.
</short>
<descr>
<p>
<var>AddMultipleResolutions</var> is an <var>Integer</var> function used to 
add images of varying sizes to the corresponding resolution in the image list.
</p>
<p>
AImages is an array of <var>TCustomBitmap</var> type with the images added in 
the method. Each image has a unique width that determines the image 
resolution where the image is stored. AImages must be sorted in ascending 
image width order before it is passed as an argument to the method.
</p>
<p>
The return value contains the ordinal position where the images were stored 
in the image resolutions. It should contain the value corresponding to 
Count-1 when the method is completed.
</p>
<p>
AddMultipleResolutions calls the <var>CreateDefaultResolution</var> method to 
ensure that the default image resolution has been created before adding 
images to the list.
</p>
<p>
The <var>Resolutions</var> enumerator is used to visit each of the 
<var>TCustomImageListResolution</var> instances used in the image list. Each 
image in AImages is compared to the image resolutions to determine if the 
width is already in use. If no exact match is found, the next larger image 
resolution is used. If no resolution is larger than the image width, the 
largest image resolution is used.
</p>
<p>
The <var>ScaleImage</var> method is called to resize the image in AImages to 
the height and width required for the target image resolution. The image is 
appended using the InternalInsert method in the image resolution to store the 
scaled raw image data.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Insert"/>
<link id="TCustomImageList.InsertIcon"/>
<link id="TCustomImageList.InsertMasked"/>
<link id="TCustomImageList.Count"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.AddMultipleResolutions.Result">
<short>
Ordinal position where images were stored in the various resolutions.
</short>
</element>
<element name="TCustomImageList.AddMultipleResolutions.Images">
<short>Array of images stored in the method.</short>
</element>

<element name="TCustomImageList.AddSliced">
<short>
Adds images to the image list from image data stored as adjacent columns and 
rows.
</short>
<descr>
<p>
<var>AddSliced</var> is an <var>Integer</var> function used to add one or 
more images from image data stored as adjacent images in grid format.
</p>
<p>
<var>Image</var> is a <var>TCustomBitmap</var> descendant that contains the 
image data used for the operation. No actions are performed in the method 
when Image has not been assigned (contains <b>Nil</b>). The return value is 
set to -1 when Image has not been assigned.
</p>
<p>
<var>AHorizontalCount</var> is an <var>Integer</var> value that indicates the 
number of adjacent images stored in Image on the horizontal plane (in a row). 
The Width of the Image must (should?) be a multiple of the value in 
AHorizontalCount.
</p>
<p>
<var>AVerticalCount</var> is an <var>Integer</var> value that indicates the 
number of adjacent images stored in Image on the vertical plane (in a 
column). The Height of the Image must (should?) be a multiple of the value in 
AVerticalCount.
</p>
<p>
The return value contains the ordinal position in the image list where the 
first image is stored in the method. It contains the value in the 
<var>Count</var> property prior to adding any images to the list.
</p>
<p>
AddSliced calls the <var>CreateDefaultResolution</var> method to ensure that 
the default resolution exists in the image list prior to adding images in the 
method.
</p>
<p>
AddSliced uses the values in AVerticalCount and AHorizontalCount to process 
the partial images stored in Image. Each image portion (or slice) is added to 
all of the resolutions available in the image list. The image slice is 
resized to the height and width required for an image resolution by calling 
ScaleImage for the current image rectangle. The image resolution calls its 
InternalInsert method to store the scaled 32-bit RGBA raw image data for the 
partial image. The process is repeated until all partial images defined by 
AVerticalCount and AHorizontalCount have been added to the image resolutions.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Count"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TRGBAQuadArray"/>
</seealso>
</element>
<element name="TCustomImageList.AddSliced.Result">
<short>
Ordinal position where the first image was stored in the image list.
</short>
</element>
<element name="TCustomImageList.AddSliced.Image">
<short>
Image data stored as a row(s) and columns(s) of adjacent images.
</short>
</element>
<element name="TCustomImageList.AddSliced.AHorizontalCount">
<short>Number of adjacent horizontal images (columns).</short>
</element>
<element name="TCustomImageList.AddSliced.AVerticalCount">
<short>Number of adjacent vertical images (rows).</short>
</element>

<element name="TCustomImageList.AddSlice">
<short>
Adds a portion of an image to each of the resolutions in the image list.
</short>
<descr>
<p>
<var>AddSlice</var> is an Integer function used to add a portion of an image 
to each of the resolutions in the image list.
</p>
<p>
Image is a TCustomBitmap instance which contains the image added in the 
method. Image can contain a single image, or multiple combined images like 
the format returned from <var>GetFullBitmap</var>. No actions are performed 
in the method when Image has not been assigned (contains <b>Nil</b>), and the 
return value is set to -1.
</p>
<p>
AImageRect is a TRect type that specifies the area in Image added to the 
resolutions in the image list. When Image contains a single image, the image 
rectangle should match the dimensions for the entire image. When Image 
consists of multiple images, the image rectangle defines the portion (or 
slice) added to the image list.
</p>
<p>
The <var>Count</var> property is used as the position where the new image is 
stored in each of the image resolutions. It is also used as the return value 
for the method.
</p>
<p>
AddSlice calls <var>CreateDefaultResolution</var> to ensure that the default 
resolution for the image list exists before images are added in the method. 
AddSlice visits each of the image resolutions in the image list. The Width 
and Height properties in the image resolution are used to resize the image 
rectangle using the ScaleImage method. The InternalInsert method in the image 
resolution is called to store the scaled 32-bit RGBA raw image data to the 
position in the return value.
</p>
<p>
Use <var>AddSliced</var> to add multiple images to the image list from an 
image stored as adjacent images in row and column format.
</p>
<p>
AddSlice is used in the implementation of the <var>AddSliceCentered</var> 
method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Count"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageList.AddSliceCentered"/>
<link id="TCustomImageListResolution.Height"/>
<link id="TCustomImageListResolution.Width"/>
<link id="TCustomImageListResolutions"/>
<link id="TRGBAQuadArray"/>
</seealso>
</element>
<element name="TCustomImageList.AddSlice.Result">
<short>
Ordinal position where the new image was stored in each of the image 
resolutions.
</short>
</element>
<element name="TCustomImageList.AddSlice.Image">
<short>Image added in the method.</short>
</element>
<element name="TCustomImageList.AddSlice.AImageRect">
<short>Area from the source image added in the method.</short>
</element>

<element name="TCustomImageList.AddSliceCentered">
<short>
Adds an image centered in the height and width for the image resolutions.
</short>
<descr>
<p>
<var>AddSliceCentered</var> is an Integer function used to add the specified 
image to each of the resolutions in the image list.
</p>
<p>
Image is a TCustomBitmap instance that contains the image data used in the 
operation. A TRect instance is created which uses the values in the Height 
and Width properties for the default resolution. The image rectangle is used 
to center the image content using the height and width for the image.
</p>
<p>
AddSliceCentered calls the <var>AddSlice</var> method using Image and the 
calculated image rectangle as arguments. AddSlice scales the image to the 
dimensions needed for each image resolution, and stores the scaled image data.
</p>
<p>
The return value contains the ordinal position where the image was stored in 
each of the images resolutions for the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageList.AddSlice"/>
</seealso>
</element>
<element name="TCustomImageList.AddSliceCentered.Result">
<short>
Ordinal position where the image was stored in the image resolutions.
</short>
</element>
<element name="TCustomImageList.AddSliceCentered.Image">
<short>Image content added in the method.</short>
</element>

<element name="TCustomImageList.AddIcon">
<short>Adds an icon to the image list.</short>
<descr>
<p>
<var>AddIcon</var> is used to add the <var>TIcon</var> instance in the Image 
parameter to the image list. AddIcon calls <var>InsertIcon</var> to store the 
Image at the ordinal position represented by the <var>Count</var> property. 
The return value contains the index of the newly added icon, or -1 if the 
icon could not be added to the list.
</p>
<p>
Use the <var>Add</var> or <var>AddMasked</var> method to store a 
TCustomBitmap descendant in the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.InsertIcon"/>
<link id="TCustomImageList.Count"/>
</seealso>
</element>
<element name="TCustomImageList.AddIcon.Result">
<short>The index of the added icon, -1 if unsuccessful.</short>
</element>
<element name="TCustomImageList.AddIcon.Image">
<short>The Icon to be added.</short>
</element>

<element name="TCustomImageList.AddImages">
<short>
Adds images from another image list to the current class instance.
</short>
<descr>
<p>
<var>AddImages</var> is a procedure used to add images from the image list in 
<var>AValue</var> to the current class instance. No actions are performed in 
the method when any of the following conditions are encountered:
</p>
<ul>
<li>AValue is unassigned (contains <b>Nil</b>)</li>
<li>AValue and the current class are the same class instance</li>
<li>AValue has a Count property that contains <b>0</b> (<b>zero</b>)</li>
</ul>
<p>
AddImages uses the <var>ResolutionsDesc</var> enumerator in AValue to process 
images resolutions stored in the source image list. AddImages assumes that 
the first Resolution in the descending enumerator contains the largest image 
sizes.
</p>
<p>
For this resolution, all images are copied and added to the current class 
instance using their <var>TBitmap</var> image data. For the remaining 
resolutions (if any), the <var>TCustomImageListResolutions.Find</var> method 
is used to locate the resolution in the current class with compatible images 
(similar width and height values) as the resolution in AValue. Each of the 
source images for the resolution are stored in the current class instance 
using their raw image data.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageList.AddImages.AValue">
<short>
The image list with the source images to add in the method.
</short>
</element>

<element name="TCustomImageList.AddMasked">
<short>
Adds an image(s) to the list using the MaskColor for transparent pixels.
</short>
<descr>
<p>
<var>AddMasked</var> is an <var>Integer</var> function used to add one or 
more images specified in <var>Image</var> to the image list. Image can 
contain multiple images of the same width and height. The total image width 
must be a multiple of the <var>Width</var> property, and the image height 
must be the same as the <var>Height</var> property.
</p>
<p>
Every pixel in the image(s) with the color in <var>MaskColor</var> will 
become transparent in the stored image(s).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageList.AddMasked.Result">
<short>The index of the first added image, -1 if unsuccessful.</short>
</element>
<element name="TCustomImageList.AddMasked.Image">
<short>The bitmap to be added to the image list.</short>
</element>
<element name="TCustomImageList.AddMasked.MaskColor">
<short>The color used as the transparent pixels in the image(s).</short>
</element>

<element name="TCustomImageList.AddLazarusResource">
<short>
Gets a bitmap from a Lazarus resource and stores it in the image list.
</short>
<descr>
<p>
<var>AddLazarusResource</var> is an Integer function used to load and store a 
bitmap from a Lazarus resource.
</p>
<p>
<var>ResourceName</var> contains the Lazarus resource loaded in the method.
</p>
<p>
<var>MaskColor</var> is a TColor value used as the transparency color in 
masked images. The default value for the parameter is clNone, and indicates 
that the image should be rendered as an opaque (solid) image.
</p>
<p>
AddLazarusResource calls the <var>CreateBitmapFromLazarusResource</var> 
routine to get the TCustomBitmap for the specified ResourceName. When 
MaskColor contains a value other that clNone, it is set as the transparent 
color in the bitmap and transparency is enable for the image.
</p>
<p>
AddLazarusResource calls the <var>Add</var> method to store the bitmap in the 
image list. The return value contains the ordinal position in the image list 
where the bitmap was stored.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Add"/>
<link id="#lcl.graphics.CreateBitmapFromLazarusResource">CreateBitmapFromLazarusResource</link>
</seealso>
</element>
<element name="TCustomImageList.AddLazarusResource.Result">
<short>Position where the image was stored.</short>
</element>
<element name="TCustomImageList.AddLazarusResource.ResourceName">
<short>The name of the Lazarus resource.</short>
</element>
<element name="TCustomImageList.AddLazarusResource.MaskColor">
<short>
The mask color for transparent images. clNone for solid (opaque) images.
</short>
</element>

<element name="TCustomImageList.AddResourceName">
<short>
Adds a graphic from a resource with the specified resource name.
</short>
<descr>
<p>
<var>AddResourceName</var> is an <var>Integer</var> function used to load and 
store a TGraphic for the specified resource name.
</p>
<p>
<var>Instance</var> is a THandle value for the resource.
</p>
<p>
<var>ResourceName</var> is a String value that contains the name for the 
resource loaded in the method.
</p>
<p>
<var>MaskColor</var> is a TColor value used transparent areas in the graphic. 
The default value for the property is clNone, and indicates the graphic is 
rendered as an opaque (solid) image.
</p>
<p>
AddResourceName calls the <var>CreateGraphicFromResourceName</var> routine to 
get the image for the resource name specified in ResourceName. The return 
value may be either a TGraphic or a TCustomBitmap class instance.
</p>
<p>
When the image is a TCustomBitmap, the value in MaskColor is stored in the 
bitmap and transparency is enabled when the color is not clNone. MaskColor is 
not used when the return value is a TGraphic instance; TGraphic does not 
support transparency.
</p>
<p>
AddResourceName calls the appropriate method to store the image type in the 
image list. When TCustomBitmap is used, the <var>Add</var> method is called. 
When TGraphic is used, the <var>AddIcon</var> method is called. The return 
value contains the ordinal position in the image list where the image was 
stored.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Add"/>
<link id="TCustomImageList.AddIcon"/>
<link id="#lcl.graphics.CreateGraphicFromResourceName">CreateGraphicFromResourceName</link>
</seealso>
</element>
<element name="TCustomImageList.AddResourceName.Result">
<short>Ordinal position where the image was stored.</short>
</element>
<element name="TCustomImageList.AddResourceName.Instance">
<short>Handle for the resource.</short>
</element>
<element name="TCustomImageList.AddResourceName.ResourceName">
<short>Name of the resource loaded in the method.</short>
</element>
<element name="TCustomImageList.AddResourceName.MaskColor">
<short>
Color for transparent areas in the image, clNone for an opaque image.
</short>
</element>

<element name="TCustomImageList.Change">
<short>
Sends change notifications when the image list is updated.
</short>
<descr>
<p>
<var>Change</var> is a procedure used to send change notifications when the 
image list is updated. Change uses internal members in the class instance 
which track changes to the image list. No actions are performed in the method 
when the image list has not been changed, or when a call to 
<var>BeginUpdate</var> has not been followed by a matching call to 
<var>EndUpdate</var>.
</p>
<p>
Change calls the <var>NotifyChangeLink</var> method to notify subscribers in 
its ChangeLinkList, and executes the <var>OnChange</var> handler when it has 
been assigned.
</p>
<p>
The internal member used to track changes in the image list is reset prior to 
exiting from the method.
</p>
<p>
Change is called from methods which update the content in the image list, 
such as:
</p>
<ul>
<li>Clear</li>
<li>Delete</li>
<li>Move</li>
<li>EndUpdate</li>
<li>ReadData</li>
<li>ReadAdvData</li>
<li>SetBkColor (write access specifier for the BkColor property)</li>
</ul>
</descr>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.OnChange"/>
</seealso>
</element>

<element name="TCustomImageList.Clear">
<short>
Removes all images store in the the image list.
</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove all images stored in the image 
list.
</p>
<p>
Clear ensures that the content for all of the image resolutions is removed 
from the list, and calls <var>ClearOverlays</var> to reset any index 
positions used in the <var>Overlays</var> property. Clear sets the internal 
Changed flag for the class instance to <b>True</b>, and calls the 
<var>Change</var> method to perform change notifications.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ClearOverlays"/>
<link id="TCustomImageList.Overlay"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>

<element name="TCustomImageList.Delete">
<short>
Deletes the image at the specified position from all image resolutions.
</short>
<descr>
<p>
<var>Delete</var> is a procedure used to delete the image stored at the 
specified position from all resolutions for the image list.
</p>
<p>
<var>AIndex</var> contains the ordinal position for the image deleted in the 
method. When AIndex contains the value <b>-1</b>, all images in the 
resolution are deleted.
</p>
<p>
Delete uses the <var>Resolutions</var> enumerator to call the 
<var>Delete</var> method in the TCustomImageListResolution instance returned 
by the enumerator. Deletes sets the internal Changed flag for the class 
instance to <b>True</b>, and calls the <var>Change</var> method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageListResolutions.Delete"/>
<link id="TCustomImageList.Change"/>
</seealso>
</element>
<element name="TCustomImageList.Delete.AIndex">
<short>
The index of the image deleted in the method, or -1 to delete all images.
</short>
</element>

<element name="TCustomImageList.Draw">
<short>
Renders an image to the specified canvas using a drawing style or effect.
</short>
<descr>
<p>
<var>Draw</var> is an overloaded method used to render an image to the 
specified canvas. Draw uses the default resolution (as in indicated by the 
Width property) as the image size rendered in the method. Overloaded variants 
allow the use of a drawing effect or drawing style for the rendered image.
</p>
<p>
ACanvas contains the <var>TCanvas</var> instance used to render the requested 
image.
</p>
<p>
AX and AY contain <var>Integer</var> values representing the horizontal and 
vertical offsets from the canvas origin where the image is drawn.
</p>
<p>
AIndex contains the ordinal position for the requested image in the image 
list. No actions are performed in the method when AIndex contains a value 
that is an invalid position for images in the image list.
</p>
<p>
AEnabled indicates if the image is drawn in the enabled state. When AEnabled 
is <b>False</b>, the <var>gdeDisabled</var> drawing effect is used to render 
the image to the canvas.
</p>
<p>
ADrawEffect is a value from the <var>TGraphicsDrawEffect</var> enumeration 
that indicates the drawing effect applied to the raw image data, and stored 
in the bitmap. Values in AEffect determine whether the image is rendered 
normally, as a disabled (or grayed) image, highlighted, shadowed, or as a 
monochrome bitmap mask.
</p>
<p>
ADrawingStyle contains a value from the <var>TDrawingStyle</var> enumeration 
that indicates the image list drawing style used for the rendered image. 
ADrawingStyle determines how the image is blended with its background color 
when a mask is used in the image. It has no significance when a mask is not 
present in the image.
</p>
<p>
AImageType contains a value from the <var>TImageType</var> enumeration, and 
indicates whether the image uses a mask.
</p>
<p>
Draw calls GetResolution to retrieve the default resolution for the image 
list using the value in the Width property. The Draw method in the 
TCustomImageListResolution instance is called to render the image using the 
parameters specified in the method as arguments.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolution.Draw"/>
</seealso>
</element>
<element name="TCustomImageList.Draw.ACanvas">
<short>Canvas used for the draw operation.</short>
</element>
<element name="TCustomImageList.Draw.AX">
<short>Horizontal offset on the canvas for the image.</short>
</element>
<element name="TCustomImageList.Draw.AY">
<short>Vertical offset on the canvas for the image.</short>
</element>
<element name="TCustomImageList.Draw.AIndex">
<short>Position in the list for the image drawn to the canvas.</short>
</element>
<element name="TCustomImageList.Draw.AEnabled">
<short>If <b>False</b>, the image is drawn disabled (dithered).</short>
</element>
<element name="TCustomImageList.Draw.ADrawEffect">
<short>Drawing effect applied to the rendered image.</short>
</element>
<element name="TCustomImageList.Draw.ADrawingStyle">
<short>Drawing style applied to the rendered image.</short>
</element>
<element name="TCustomImageList.Draw.AImageType">
<short>Indicates if the image contains a mask or source data.</short>
</element>

<element name="TCustomImageList.DrawForPPI">
<short>
Renders an image to a canvas scaled to a specified display density.
</short>
<descr>
<p>
<var>DrawForPPI</var> is an overloaded procedure used to render an image at 
the specified position to a canvas scaled to the specified display density.
</p>
<p>
ACanvas is a TCanvas instance where the image is rendered.
</p>
<p>
AX and AY contains the offsets on the canvas where the image is drawn.
</p>
<p>
AIndex is the position in the image list for the image rendered in the method.
</p>
<p>
AImageWidthAt96PPI is the width of the image using the default resolution.
</p>
<p>
ATargetPPI is the display density (Pixels per Inch) requested in the method.
</p>
<p>
ACanvasFactor is a Double value that indicates the canvas scaling factor 
applied to the rendered image.
</p>
<p>
ADrawEffect indicate the drawing effect used for the rendered image.
</p>
<p>
AEnabled indicates that the image drawn in the "enabled" state.
</p>
<p>
DrawForPPI calls the <var>GetResolutionForPPI</var> method to locate the 
image resolution for the target display density. The 
<var>TCustomImageListResolution</var> instance calls its <var>Draw</var> 
method to render the image to the canvas with the requested drawing effect.
</p>
</descr>
<seealso>
</seealso>
</element>
<element name="TCustomImageList.DrawForPPI.ACanvas">
<short>
Canvas where the image is rendered.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.AX">
<short>
Horizontal offset on the canvas where the image is drawn.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.AY">
<short>
Vertical offset on the canvas where the image is drawn.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.AIndex">
<short>
Ordinal position for the image drawn in the method.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.AImageWidthAt96PPI">
<short>
Width of the image in the default resolution.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.ATargetPPI">
<short>
Target display density (PPI) for the rendered image.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.ACanvasFactor">
<short>
Canvas scaling factor applied in the method.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.AEnabled">
<short>
Indicates if the image is rendered in the enabled state.
</short>
</element>
<element name="TCustomImageList.DrawForPPI.ADrawEffect">
<short>
Drawing effect applied to the rendered image.
</short>
</element>

<element name="TCustomImageList.DrawOverlay">
<short>
Renders an image with an overlay to the specified canvas.
</short>
<descr>
<p>
<var>DrawOverlay</var> is an overloaded procedure used to draw the specified 
image with an overlay. An overlay is an masked image drawn transparently over 
another image. The overlay image is generally used to convey state or status 
information about the image it adorns. The overlay images are stored in the 
image list (or the resolution) just like the images they decorate.
</p>
<p>
ACanvas is the <var>TCanvas</var> instance where the image and the overlay 
are rendered.
</p>
<p>
AX and AY contain the canvas offsets (horizontal and vertical) where the 
overlay image is drawn.
</p>
<p>
AIndex contains the ordinal position for the base image drawn in the method.
</p>
<p>
AOverlay contains the position in the <var>Overlays</var> property where the 
index position for the overlay image is stored. The value in AOverlay must be 
in the range 0..14 (the range defined in <var>TOverlay</var>).
</p>
<p>
ADrawingStyle contains the <var>TDrawingStyle</var> enumeration value applied 
to the rendered image.
</p>
<p>
AImageType contains a <var>TImageType</var> enumeration value that indicates 
if the image contains a mask.
</p>
<p>
ADrawEffect contains a <var>TGraphicsDrawEffect</var> enumeration value that 
indicates the drawing effect applied to the rendered image.
</p>
<p>
Overloaded variants of the method are provided which use a drawing effect, 
drawing style, and image type arguments.
</p>
<p>
DrawOverlay uses the value in the Width property to retrieve the default 
image resolution used in the method. The TCustomImageListResolution instance 
calls its DrawOverlay method to render the image and overlay using the 
parameter values as arguments.
</p>
<p>
No actions are performed in the method when AIndex does not contain a valid 
index position in the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolution.DrawOverlay"/>
<link id="TDrawingStyle"/>
<link id="TOverlay"/>
<link id="#lazutils.graphtype.TGraphicsDrawEffect">TGraphicsDrawEffect</link>
</seealso>
</element>
<element name="TCustomImageList.DrawOverlay.ACanvas">
<short>Canvas where the image and its overlay are drawn.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AX">
<short>Horizontal offset for the image on the canvas.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AY">
<short>Vertical offset for the image on the canvas.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AIndex">
<short>Ordinal position for the image drawn in the method.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AOverlay">
<short>Position for the overlay image drawn in the method.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AEnabled">
<short>
Indicates if the image and overlay are drawn in the enabled state.
</short>
</element>
<element name="TCustomImageList.DrawOverlay.ADrawEffect">
<short>Drawing effect applied to the image and the overlay.</short>
</element>
<element name="TCustomImageList.DrawOverlay.ADrawingStyle">
<short>Drawing style used for the image and overlay.</short>
</element>
<element name="TCustomImageList.DrawOverlay.AImageType">
<short>Indicates the image type (masked or unmasked).</short>
</element>

<element name="TCustomImageList.GetBitmap">
<short>
Gets image data at the specified position as a bitmap.
</short>
<descr>
<p>
<var>GetBitmap</var> is an overloaded procedure used to get the image stored 
at the specified position in the image list as a bitmap image.
</p>
<p>
<var>Index</var> contains the ordinal position in the image list where the 
image is stored.
</p>
<p>
<var>Image</var> is the <var>TCustomBitmap</var> class instance where the 
requested image data is stored in the method.
</p>
<p>
An overloaded variant of the method includes the <var>AEffect</var> parameter 
which specifies the drawing effect applied to the image data and stored in 
Image. The default value for AEffect is <var>gdeNormal</var> and cause the 
image to be rendered using the normal enabled style for the widgetset.
</p>
<p>
GetBitmap calls <var>GetResolution</var> to locate the default image 
resolution which uses the width specified in the <var>Width</var> property. 
The <var>TCustomImageListResolution</var> class instance is used to call its 
<var>GetBitmap</var> method using the parameters supplied to the method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolution"/>
<link id="#lazutils.graphtype.TGraphicsDrawEffect">TGraphicsDrawEffect</link>
</seealso>
</element>
<element name="TCustomImageList.GetBitmap.Index">
<short>Ordinal position of the requested image.</short>
</element>
<element name="TCustomImageList.GetBitmap.Image">
<short>Bitmap used to store the image data.</short>
</element>
<element name="TCustomImageList.GetBitmap.AEffect">
<short>Drawing effect applied to the image.</short>
</element>

<element name="TCustomImageList.GetFullBitmap">
<short>
Gets a bitmap with all of the images in the default resolution.
</short>
<descr>
<p>
<var>GetFullBitmap</var> is a procedure used to get a bitmap with all of the 
images stored in the default resolution. GetFullBitmap mimics the image list 
storage format used in previous versions of TCustomImageList. This means that 
the combined image data for the resolution uses the value in the 
<var>Height</var> property as its vertical size, and the horizontal size is 
determined by the value from <b>Width * Count</b>.
</p>
<p>
<var>Image</var> is the <var>TCustomBitmap</var> instance where the image 
data is stored in the method.
</p>
<p>
<var>AEffect</var> is a value from the <var>TGraphicsDrawEffect</var> 
enumeration that indicates the drawing effect applied to the rendered images 
and stored in Image. The default value for the parameter is 
<var>gdeNormal</var> and causes the normal enabled drawing effect for the 
widgetset to be used.
</p>
<p>
GetFullBitmap calls the <var>GetResolution</var> method to retrieve the image 
resolution which uses the value in the <var>Width</var> property. The 
<var>TCustomImageListResolution</var> class instance is used to call its 
<var>GetFullBitmap</var> method passing <var>Image</var> and 
<var>AEffect</var> as arguments.
</p>
<p>
Use <var>GetBitmap</var> to retrieve a single image in the default 
resolution. Use <var>GetRawImage</var> or <var>GetFullRawImage</var> to 
retrieve raw image data for the default resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.Count"/>
<link id="TCustomImageList.GetBitmap"/>
<link id="TCustomImageList.GetRawImage"/>
<link id="TCustomImageList.GetFullRawImage"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.GetFullBitmap.Image">
<short>Bitmap where image data is stored.</short>
</element>
<element name="TCustomImageList.GetFullBitmap.AEffect">
<short>Drawing effect applied to the rendered images.</short>
</element>

<element name="TCustomImageList.GetFullRawImage">
<short>
Gets the raw image data for all images in the default resolution.
</short>
<descr>
<p>
<var>GetFullRawImage</var> is a procedure used to get the 32-bit RGBA raw 
image data for all images in the default resolution. Image is a 
<var>TRawImage</var> output parameter where the raw image data is stored in 
the method.
</p>
<p>
GetFullRawImage calls the <var>GetResolution</var> method to get the image 
resolution that uses the image size in the Width property. The 
<var>GetFullRawImage</var> method in the 
<var>TCustomImageListResolution</var> instance is called to store the raw 
image data for the resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>
<element name="TCustomImageList.GetFullRawImage.Image">
<short>
Image used to store the 32-bit raw image data for the default resolution.
</short>
</element>

<element name="TCustomImageList.GetIcon">
<short>
Gets the icon at the specified index and applies an image effect.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomImageList.GetIcon.Index">
<short>Ordinal position in the imagelist with the icon image data.</short>
</element>
<element name="TCustomImageList.GetIcon.Image">
<short>TIcon instance where the image data is stored.</short>
</element>
<element name="TCustomImageList.GetIcon.AEffect">
<short>
Drawing effect applied to the image data. gdeNormal when not specified.
</short>
</element>

<element name="TCustomImageList.GetRawImage">
<short>
Gets the raw image data at the specified position from the default image 
resolution (Width).
</short>
<descr>
<p>
Calls GetResolution to get the image resolution for the value in the Width 
property. Calls GetRawImage in the image resolution to re-initialize and 
populate the Image output variable.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageList.GetRawImage.Index">
<short>Ordinal position in the image list for the raw image data.</short>
</element>
<element name="TCustomImageList.GetRawImage.Image">
<short>TRawImage instance where the image data is stored.</short>
</element>

<element name="TCustomImageList.GetHotSpot">
<short>
Returns the offset from the drawing position to the image origin.
</short>
<descr>
<p>
<var>GetHotSpot</var> is a <var>TPoint</var> function used to get the HotSpot 
for an image stored in the image list. The HotSpot is an offset from the 
drawing position to the image origin. A HotSpot is used only in 
TDragImageList. In TCustomImageList, its position is always (<b>0,0</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomImageList.GetHotSpot.Result">
<short>TPoint with the coordinates for the image hot spot.</short>
</element>

<element name="TCustomImageList.Insert">
<short>
Inserts an image into each image resolution at the specified position.
</short>
<descr>
<p>
<var>Insert</var> is a procedure used to insert an image into each of the 
resolutions for the image list at the ordinal position specified in AIndex.
</p>
<p>
<var>AImage</var> is a TCustomBitmap instance that contains the image data 
stored in the image list. No actions are performed in the method when AImage 
is unassigned (contain <b>Nil</b>).
</p>
<p>
<var>AMask</var> is a TCustomBitmap instance that contains the mask that 
defines the transparent areas in the image. When AMask is Nil, no transparent 
areas are defined in AImage. Use InsertMasked to insert bitmaps with a 
specific transparent color.
</p>
<p>
Insert calls the <var>CreateDefaultResolution</var> method to ensure that the 
default image resolution has been created using the value in the Width 
property.
</p>
<p>
Insert uses the <var>Resolutions</var> enumerator to visit each of the 
<var>TCustomImageListResolution</var> instances used in the image list. The 
<var>ScaleImage</var> method is called to resize the bitmaps in AImage and 
Mask to the image width for the resolution. The InternalInsert method for the 
image resolution is called to store the scaled raw image data at the position 
in AIndex.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.Insert.AIndex">
<short>Ordinal position where the image is stored.</short>
</element>
<element name="TCustomImageList.Insert.AImage">
<short>Bitmap image stored in the method.</short>
</element>
<element name="TCustomImageList.Insert.AMask">
<short>Transparency mask, Nil for opaque.</short>
</element>

<element name="TCustomImageList.InsertIcon">
<short>
Inserts an Icon into each of the resolutions for the image list.
</short>
<descr>
<p>
<var>InsertIcon</var> is a procedure used to insert an icon at the specified 
position in each of the resolutions for the image list.
</p>
<p>
<var>AIndex</var> contains the ordinal position in the image list where the 
icon is stored.
</p>
<p>
<var>AIcon</var> is the TCustomIcon instance stored in the method. AIcon 
allows multiple icon sizes to be available in the class instance. No actions 
are performed in the method when AIcon is unassigned (contains <b>Nil</b>). 
To ensure that the icon sizes in AIcon are in ascending size order, a 
temporary TIcon instance is created and its Sort method is called.
</p>
<p>
InsertIcon uses the <var>Resolutions</var> enumerator to visit each of the 
image resolutions used in the image list. <var>GetBestIconIndexForSize</var> 
is called for each image resolution to get the icon size for the width in the 
resolution. <var>ScaleImage</var> is called to resize the icon bitmap and 
mask (when present) to the height and width required for the image 
resolution. The <var>InternalInsert</var> method in the image resolution is 
called to store the scaled raw image data for the icon at the position in 
AIndex.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolution"/>
<link id="#lcl.graphics.TCustomIcon">TCustomIcon</link>
</seealso>
</element>
<element name="TCustomImageList.InsertIcon.AIndex">
<short>Position in the image list where the icon is inserted.</short>
</element>
<element name="TCustomImageList.InsertIcon.AIcon">
<short>The Icon to insert into the image list.</short>
</element>

<element name="TCustomImageList.InsertMasked">
<short>
Inserts a transparent image into the image resolutions at the specified 
position.
</short>
<descr>
<p>
<var>InsertMasked</var> is a procedure used to insert a transparent image 
into each of the resolutions for the image list.
</p>
<p>
<var>Index</var> contains the position in the image list where the 
transparent image is stored in each of the image resolutions.
</p>
<p>
<var>AImage</var> is a TCustomBitmap instance which contains the image 
inserted into the image list. No actions are performed in the method when 
AImage has not been assigned (contains <b>Nil</b>).
</p>
<p>
<var>MaskColor</var> is a TColor value which represents the transparent 
pixels in the image. Every pixel using the color in MaskColor is converted 
into a transparent pixel. InsertMasked creates a temporary TBitmap instance 
that is used to set the TransparentColor, TransparentMode, and Transparent 
properties in the image.
</p>
<p>
InsertMasked calls the <var>CreateDefaultResolution</var> method to ensure 
that the default resolution exists before inserting the image into the image 
list. The <var>Resolutions</var> enumerator is used to update each of the 
<var>TCustomImageListResolution</var> instances in the image list. The 
<var>ScaleImage</var> method is called to resize both the original image and 
the temporary mask to the Width and Height needed for the image resolution. 
The <var>InternalInsert</var> method in the image resolution is called to 
store the scaled 32-bit RGBA raw image data for the masked image.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageList.Insert"/>
</seealso>
</element>
<element name="TCustomImageList.InsertMasked.Index">
<short>The index for the inserted image.</short>
</element>
<element name="TCustomImageList.InsertMasked.AImage">
<short>The bitmap to be inserted.</short>
</element>
<element name="TCustomImageList.InsertMasked.MaskColor">
<short>The color used transparent areas in the image.</short>
</element>

<element name="TCustomImageList.Move">
<short>
Moves an image from the position at CurIndex to NewIndex.
</short>
<descr>
<p>
<var>Move</var> is a procedure used to relocate images stored at the position 
in <var>CurIndex</var> to the position in <var>NewIndex</var> for each of the 
resolutions in the image list. No actions are performed in the method when 
ACurIndex and ANewIndex contain the same value.
</p>
<p>
Move calls CheckIndex to verify that the values in ANewIndex and ACurIndex 
are valid index positions in the image list. An exception is raised in 
CheckIndex if either value is invalid for the bounds in the image list.
</p>
<p>
Move uses the Resolutions enumerator to visit each of the image resolutions 
in the image list. The InternalMove method in the TCustomImageListResolution 
instance is called to relocate image data using the specified positions. If 
the handle for the image resolution has been allocated, the widgetset class 
calls its Move method to mirror the change to the image list.
</p>
<p>
Move sets the value in the internal Changed flag to <b>True</b>, and calls 
the Change method to perform notifications for the change event.
</p>
</descr>
<seealso>
<link id="TCustomImageList.CheckIndex"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.Change"/>
</seealso>
</element>
<element name="TCustomImageList.Move.ACurIndex">
<short>Current Index position for the image(s) to be moved.</short>
</element>
<element name="TCustomImageList.Move.ANewIndex">
<short>New index position for the image(s).</short>
</element>

<element name="TCustomImageList.Overlay">
<short>
Assigns an overlay index for the specified image in the image list.
</short>
<descr>
<p>
<var>Overlay</var> is a procedure which makes an image in the image list an 
overlay. An overlay image is drawn transparently over another image. An image 
list can have up 15 images designated as overlay images (0 is reserved for 
none).
</p>
<p>
<var>AIndex</var> contains the position in the image list for the image to 
use as an overlay image.
</p>
<p>
<var>Overlay</var> is a <var>TOverlay</var> value that indicates the position 
in the internal array of overlay indexes where the value in AIndex is stored. 
The overlay indexes are essentially one-based because an overlay index of 
zero means that no overlay image is needed.
</p>
<p>
The Overlay method tells the image list that the image in AIndex is an 
overlay image referenced using the value in the Overlay parameter instead of 
the ordinal position in the image list.
</p>
<p>
Overlay sets the value in the <var>HasOverlays</var> property to <b>True</b> 
when AIndex contains a valid index position in the image list. Otherwise, the 
image indexes in each of the internal overlay positions are re-examined to 
determine the value for HasOverlays.
</p>
<p>
Use the <var>DrawOverlay</var> method to draw an image along with a specific 
overlay image.
</p>
<p>
Use <var>ClearOverlays</var> to reset the image indexes stored in the 
internal member to the unused value (-1).
</p>
</descr>
<seealso>
<link id="TCustomImageList.HasOverlays"/>
<link id="TCustomImageList.ClearOverlays"/>
<link id="TCustomImageList.DrawOverlay"/>
<link id="TCustomImageListResolution.DrawOverlay"/>
<link id="TOverlay"/>
</seealso>
</element>
<element name="TCustomImageList.Overlay.AIndex">
<short>Ordinal position of the image used as an overlay.</short>
</element>
<element name="TCustomImageList.Overlay.Overlay">
<short>
Ordinal position in the internal array where the image index is stored.
</short>
</element>

<element name="TCustomImageList.HasOverlays">
<short>
Indicates if any images in the list have been used as an overlay image.
</short>
<descr>
<p>
<var>HasOverlays</var> is a read-only <var>Boolean</var> property that 
indicates if any images in the list have been designated as an overlay image. 
The value in HasOverlays is updated when the <var>Overlay</var> method is 
used to store an image index to a position the internal overlays array.
</p>
<p>
The value in HasOverlays can be used to determine the correct drawing method 
to call when drawing an image in the image list; Draw when HasOverlays is 
<b>False</b>, DrawOverlay when HasOverlays is <b>True</b>.
</p>
<p>
Use <var>ClearOverlays</var> to reset the image assignments made in the 
Overlay method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Overlay"/>
<link id="TCustomImageList.ClearOverlays"/>
<link id="TCustomImageList.DrawOverlay"/>
<link id="TCustomImageList.Draw"/>
</seealso>
</element>

<element name="TCustomImageList.Replace">
<short>
Replaces an image at the specified position with the given bitmap.
</short>
<descr>
<p>
<var>Replace</var> is a procedure used to replace an image stored at the 
position specified in AIndex.
</p>
<p>
<var>AImage</var> is a TCustomBitmap type that contains the image stored in 
the method.
</p>
<p>
<var>AMask</var> is a TCustomBitmap type that contains the image mask which 
defines the transparent areas in the image. When AMask is omitted, the image 
is drawn opaque.
</p>
<p>
<var>AllResolutions</var> indicates if the image at the specified position is 
replaced in all resolutions for the image list. When AllResolutions is 
<b>False</b>, the only resolution updated is the one which uses the width in 
AImage. When AllResolutions is <b>True</b>, the <var>Resolutions</var> 
enumerator is used to update each of the 
<var>TCustomImageListResolution</var> instances in the image list.
</p>
<p>
The <var>ScaleImage</var> method is called to resize the image and its mask 
to the width required for an image resolution. The <var>InternalReplace</var> 
method in the image resolution is called to update the scaled 32-bit raw 
image data stored at the position in AIndex.
</p>
</descr>
<seealso>
<link id="TCustomImageList.FindResolution"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.Replace.AIndex">
<short>Ordinal position for the image replace in the method.</short>
</element>
<element name="TCustomImageList.Replace.AImage">
<short>The bitmap image stored in the method.</short>
</element>
<element name="TCustomImageList.Replace.AMask">
<short>The bitmap which defines the transparent parts of the image.</short>
</element>

<element name="TCustomImageList.ReplaceSlice">
<short>
Replace an image at the specified position with a slice from the specified 
image.
</short>
<descr>
<p>
<var>ReplaceSlice</var> is a procedure used to replace an image at the 
specified index position with a portion (or slice) from the specified image.
</p>
<p>
<var>AIndex</var> contains the ordinal position of the image updated in the 
method.
</p>
<p>
<var>Image</var> is a TCustomBitmap type that contains image data stored in 
the method. No actions are performed in the method when Image has not been 
assigned (contains <b>Nil</b>).
</p>
<p>
<var>AImageRect</var> is a TRect type that defined the top, left, bottom, and 
right coordinates for the image data used in the method.
</p>
<p>
<var>AllResolutions</var> indicates if the image stored at the specified 
position is updated in all of the image resolutions for the image list. When 
AllResolutions contains <b>False</b>, only the image resolution using the 
width defined in ARect is updated in the method. When AllResolutions is 
<b>True</b>, the <var>Resolutions</var> enumerator is used to update each of 
the image resolutions used in the image list.
</p>
<p>
The <var>ScaleImage</var> method is called to resize the Image rectangle to 
the height and width required for the image resolution(s). The 
<var>InternalReplace</var> method in each image resolution is called to store 
the scaled 32-bit RGBA raw image data.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.ReplaceSlice.AIndex">
<short>Ordinal position for the image updated in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSlice.Image">
<short>Image with data stored in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSlice.AImageRect">
<short>Defines the coordinates for the image stored in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSlice.AllResolutions">
<short>Indicates if all image resolutions are updated in the method.</short>
</element>

<element name="TCustomImageList.ReplaceSliceCentered">
<short>
Replaces the image at the specified position from image data stored as 
adjacent columns and rows.
</short>
<descr>
<p>
<var>ReplaceSliceCentered</var> is a procedure used to replace the image at 
the specified position from the specified image data.
</p>
<p>
<var>AIndex</var> contains the index position for the image replace in the 
method.
</p>
<p>
<var>AImageWidth</var> contains the width for the image resolution updated in 
the method. No actions are performed in the method when an image resolution 
using the specified width is not found.
</p>
<p>
<var>Image</var> is a TCustomBitmap instance that contains the image data 
store in the image list.
</p>
<p>
<var>AllResolutions</var> indicates if all image resolutions are updated in 
the method. When AllResolutions is <b>False</b>, only the image resolution 
using the image width in AImageWidth is updated in the method. When 
AllResolutions is <b>True</b>, the image stored at the specified position is 
updates in all <var>Resolutions</var> for the image list.
</p>
<p>
ReplaceSliceCentered calls the <var>ReplaceSlice</var> method to update the 
image at the specified position using the parameters passed to the method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.FindResolution"/>
<link id="TCustomImageList.ReplaceSlice"/>
</seealso>
</element>
<element name="TCustomImageList.ReplaceSliceCentered.AIndex">
<short>Ordinal position for the image replaced in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSliceCentered.AImageWidth">
<short>Image width for the resolution updated in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSliceCentered.Image">
<short>Image data stored in the method.</short>
</element>
<element name="TCustomImageList.ReplaceSliceCentered.AllResolutions">
<short>Indicates if all image resolutions are updated in the method.</short>
</element>

<element name="TCustomImageList.ReplaceIcon">
<short>
Replaces the icon at the specified position in all resolutions for the image 
list.
</short>
<descr>
<p>
<var>ReplaceIcon</var> is a procedure used to replace the icon stored at the 
position specified in AIndex in all resolutions for the image list.
</p>
<p>
<var>AIcon</var> is a TCustomIcon type that contains the graphic image stored 
in the method. No actions are performed in the method when AIcon has not been 
assigned (contains <b>Nil</b>).
</p>
<p>
Icons can contain multiple sizes, and must be in ascending size order to 
ensure they are applied correctly to image resolutions. ReplaceIcon create a 
temporary TIcon instance that is used to sort the icons prior to updating the 
resolutions in the image list.
</p>
<p>
ReplaceIcon uses the <var>Resolutions</var> enumerator to update each of the 
image resolutions used in the image list. The 
<var>GetBestIconIndexForSize</var> method is called to determine the icon 
size used for each image resolution. The ScaleImage method is called to 
resize the icon to the width required for each image resolution. If the icon 
is Masked (has transparent areas), the handle for the bitmap mask is included 
in the image scaling process. The InternalReplace method in the image 
resolution is called to store the scaled 32-bit RGBA raw image data.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ScaleImage"/>
<link id="TCustomImageListResolutions"/>
</seealso>
</element>
<element name="TCustomImageList.ReplaceIcon.AIndex">
<short>Ordinal position for the icon replaced in the method.</short>
</element>
<element name="TCustomImageList.ReplaceIcon.AIcon">
<short>Icon stored in the method.</short>
</element>

<element name="TCustomImageList.ReplaceMasked">
<short>
Replaces the image at the specified position with a masked image.
</short>
<descr>
<p>
<var>ReplaceMasked</var> is a procedure used to replace the image stored at 
the specified position with a masked image.
</p>
<p>
<var>Index</var> is an Integer value that contains the ordinal position in 
the image list for the image replaced in the method.
</p>
<p>
<var>NewImage</var> is a TCustomBitmap instance that contains the image data 
used in the method. No actions are performed in the method when NewImage has 
not been assigned (contains <b>Nil</b>).
</p>
<p>
<var>MaskColor</var> contains a TColor value that represents transparent 
pixels in the image. Every pixel in the image using the color in MaskColor is 
converted to a transparent pixel.
</p>
<p>
<var>AllResolutions</var> indicates if all resolutions in the image list are 
affected in the method. When AllResolutions contains <b>False</b>, only the 
resolution using the Width in NewImage is updated with the new image data. 
When AllResolutions contains <b>True</b>, the <var>Resolutions</var> 
enumerator is used to scale and store the image for each 
<var>TCustomImageListResolution</var> instance.
</p>
<p>
ReplaceMasked creates a temporary TBitmap instance that is used to update the 
TransparentColor and Transparent properties for the image. It is also used 
when the image is scaled for the various image resolutions.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.InsertMasked"/>
<link id="TCustomImageList.AddMasked"/>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.ReplaceMasked.Index">
<short>Ordinal position for the image replaced in the method.</short>
</element>
<element name="TCustomImageList.ReplaceMasked.NewImage">
<short>Bitmap image stored in the method.</short>
</element>
<element name="TCustomImageList.ReplaceMasked.MaskColor">
<short>The color used for transparent pixels the image.</short>
</element>

<element name="TCustomImageList.RegisterChanges">
<short>
Registers a TChangeLink object for notifications when the image list is 
changed.
</short>
<descr>
<p>
<var>RegisterChanges</var> is a procedure used to register the specified 
change link object to receive change notifications when the image list is 
changed.
</p>
<p>
<var>Value</var> contains a <var>TChangeLink</var> instance that represents 
the class subscribing to the event notifications. When AValue is assigned, 
but not yet stored in the internal change link list, the current class 
instance is assigned as the Sender for change notifications. Value is added 
to the internal list of subscribers.
</p>
<p>
No actions are performed when Value is unassigned (contains <b>Nil</b>) or 
when it has already been added to the internal list of subscribers.
</p>
<p>
Value, and other subscribers the internal list, receive change notifications 
when the Reference class for an image resolution is freed and when the 
private <var>NotifyChangeLink</var> method is called.
</p>
<p>
Use <var>UnRegisterChanges</var> to remove a TChangeLink instance from the 
internal list of subscribers.
</p>
<p>
NotifyChangeLink is called from the implementation of the <var>Change</var> 
method.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Change"/>
</seealso>
</element>
<element name="TCustomImageList.RegisterChanges.Value">
<short>Reference to the ChangeLink object.</short>
</element>

<element name="TCustomImageList.UnRegisterChanges">
<short>
Unregisters a ChangeLink object for change notifications.
</short>
<descr>
<p>
<var>UnRegisterChanges</var> is a procedure used to remove the specified 
change link object from the internal list of subscribers for the image list.
</p>
<p>
<var>Value</var> contains the <var>TChangeLink</var> instance removed in the 
method when subscribers have been stored in the internal list. 
UnRegisterChanges causes change notifications to not be sent to the linked 
object by clearing the value it Sender property and removing it from the 
internal list.
</p>
<p>
UnRegisterChanges is used in the <var>Destroy</var> method, and when a 
TChangeLink class instance is freed.
</p>
</descr>
<seealso>
<link id="TChangeLink.Destroy"/>
<link id="TCustomImageList.Destroy"/>
</seealso>
</element>
<element name="TCustomImageList.UnRegisterChanges.Value">
<short>Reference to the changelink object to remove.</short>
</element>

<element name="TCustomImageList.StretchDraw">
<short>
Draws an image stretched to the dimensions for the target rectangle.
</short>
<descr>
<p>
<var>StretchDraw</var> is a procedure used to render an image stretched to 
the required dimensions on the specified canvas.
</p>
<p>
Canvas is the <var>TCanvas</var> instance where the image is rendered using 
the dimensions in the target rectangle.
</p>
<p>
Index contains the ordinal position for the image drawn in the method.
</p>
<p>
ARect is a <var>TRect</var> instance that contains the Top, Left, Bottom, and 
Right coordinates for the canvas. The rendered image must fit with in these 
boundaries on the canvas.
</p>
<p>
Enabled indicates if the image is drawn using its "enabled" state. When 
Enabled is <b>True</b>, the <var>gdeEnabled</var> drawing effect is used for 
the rendered image. When Enabled is <b>False</b>, the <var>gdeDisabled</var> 
drawing effect is used.
</p>
<p>
StretchDraw searches the images resolutions in the image list to locate the 
best scaling candidate for the width represented in ARect. If a suitable 
TCustomImageListResolution is located for the operation, its StretchDraw 
method is called using the parameter values as arguments. No actions are 
performed in the method if a suitable scaling candidate resolution is not 
found.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.FindBestToScaleFrom"/>
<link id="TCustomImageListResolution.StretchDraw"/>
</seealso>
</element>
<element name="TCustomImageList.StretchDraw.Canvas">
<short>Canvas used for the drawing operation.</short>
</element>
<element name="TCustomImageList.StretchDraw.Index">
<short>Ordinal position for the image drawn in the method.</short>
</element>
<element name="TCustomImageList.StretchDraw.ARect">
<short>Rectangle coordinates used for the draw operation.</short>
</element>
<element name="TCustomImageList.StretchDraw.Enabled">
<short>
Indicates if the image is drawn using the enabled display state.
</short>
</element>

<element name="TCustomImageList.RegisterResolutions">
<short>
Registers image resolutions (sizes) to use in the image list.
</short>
<descr>
<p>
<var>RegisterResolutions</var> is a procedure used to register image 
resolutions (or sizes) used in the image list. RegisterResolutions allows 
<var>TCustomImageListResolution</var> instances to be created and stored in 
the image resolution container for the image list.
</p>
<p>
<var>AResolutionWidths</var> is an array of Integer values that contains the 
icon widths for the image resolutions used in the image list. Each image 
width is passed as an argument to the <var>GetResolution</var> method. This 
locates the image resolution class instance if it already exists, or creates 
a new one when needed. The <var>AutoCreatedInDesignTime</var> property in the 
image resolution is set to <b>False</b> to show that the resolution was 
created at run-time.
</p>
<p>
Use <var>RegisterResolutions</var> prior to adding images to the image list 
at run-time.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.RegisterResolutions.AResolutionWidths">
<short>Array of image resolutions to allocate in the image list.</short>
</element>

<element name="TCustomImageList.DeleteResolution">
<short>
Deletes the image resolution which uses the specified image width.
</short>
<descr>
<p>
<var>DeleteResolution</var> is a procedure used to delete the image 
resolution which uses the image width specified in AWidth.
</p>
<p>
DeleteResolution uses the internal <var>TCustomImageListResolutions</var> 
container to get the position for the resolution using the requested image 
width. If an image resolution is found, it is removed using the 
<var>Delete</var> method for the container. No actions are performed in the 
method if the image width is not used in an image resolution.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions.Delete"/>
</seealso>
</element>
<element name="TCustomImageList.DeleteResolution.AWidth">
<short>Image width for the resolution removed in the method.</short>
</element>

<element name="TCustomImageList.FindResolution">
<short>
Finds the image resolution which uses the specified image width.
</short>
<descr>
<p>
<var>FindResolution</var> is a Boolean function used to find the image 
resolution with the image width specified in AImageWidth.
</p>
<p>
AResolution is a <var>TCustomImageListResolution</var> output parameter used 
to return the image resolution using the specified image width. AResolution 
contains Nil when the image width is not used in the resolutions for the 
image list.
</p>
<p>
FindResolution calls the <var>Find</var> method for the internal 
<var>TCustomImageListResolutions</var> container. The return value is 
<b>True</b> when an image resolution using the specified image width is found 
in the resolutions for the image list. The <var>ResolutionByIndex</var> 
property is used to get the class instance for AResolution when the return 
value is <b>True</b>.
</p>
<p>
FindResolution is used in the implementation of the <var>Replace</var>, 
<var>ReplaceMasked</var>, <var>ReplaceSlice</var>, and 
<var>ReplaceSliceCentered</var> methods.
</p>
</descr>
<seealso>
<link id ="TCustomImageListResolution"/>
<link id ="TCustomImageList.ResolutionByIndex"/>
<link id ="TCustomImageList.Replace"/>
<link id ="TCustomImageList.ReplaceMasked"/>
<link id ="TCustomImageList.ReplaceSlice"/>
<link id ="TCustomImageList.ReplaceSliceCentered"/>
</seealso>
</element>
<element name="TCustomImageList.FindResolution.Result">
<short>
<b>True</b> when an image resolution using the specified width is found.
</short>
</element>
<element name="TCustomImageList.FindResolution.AImageWidth">
<short>Image width for the resolution requested in the method.</short>
</element>
<element name="TCustomImageList.FindResolution.AResolution">
<short>Image resolution class located in the method.</short>
</element>

<element name="TCustomImageList.AllocBy">
<short>
Size used to increment the allocated data count.
</short>
<descr>
<p>
<var>AllocBy</var> is a read-only Integer property that indicates the 
increment used when increasing the number of allocated data blocks for images 
in the image list. The number of allocated data blocks is always increased in 
multiples of the AllocBy value. The default value is 4, as assigned in the 
Initialize method.
</p>
<p>
AllocBy is used in the implementation of the <var>AllocData</var> and 
<var>WSCreateReference</var> methods in <var>TCustomImageListResolution</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution.WSCreateReference"/>
</seealso>
</element>

<element name="TCustomImageList.BlendColor">
<short>
Color used when blending (dithering) an image.
</short>
<descr>
<p>
<var>BlendColor</var> is a TColor property that indicates the color combined 
with an image to achieve the DrawingStyle for the image list. The default 
value for the property is clNone.
</p>
<p>
Set BlendColor to cause the images in the list to be combined with the 
specified color when the <var>DrawingStyle</var> is dsFocus or dsSelected. 
More of BlendColor is combined with the images when DrawingStyle is 
dsSelected. clNone specifies no blend color while clDefault specifies the 
system highlight.
</p>
<p>
The value in BlendColor is used in <var>TCustomImageListResolution</var> 
methods like <var>Draw</var> and <var>DrawOverlay</var>.
</p>
</descr>
<seealso>
<link id="TDrawingStyle"/>
<link id="TCustomImageList.DrawingStyle"/>
<link id="TCustomImageListResolution.Draw"/>
<link id="TCustomImageListResolution.DrawOverlay"/>
</seealso>
</element>

<element name="TCustomImageList.BkColor">
<short>
Specifies the background color used for transparent parts of images.
</short>
<descr>
<p>
<var>BkColor</var> is a TColor property that specifies the background color 
used for transparent parts of images in the image list. The default value for 
the property is clNone. Changing the value in BkColor causes the internal 
Changed flag to be set, and the <var>Change</var> method is called to perform 
change notifications.
</p>
<p>
BkColor is intended to speed up drawing of transparent images using a 
background of known color (<var>BkColor</var>). In this case the image can be 
drawn opaque, eliminating the need for masking out and merging image data.
</p>
<p>
The value in BkColor is used in <var>TCustomImageListResolution</var> methods 
like <var>Draw</var> and <var>DrawOverlay</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageListResolution.Draw"/>
<link id="TCustomImageListResolution.DrawOverlay"/>
</seealso>
</element>

<element name="TCustomImageList.Count">
<short>
Number of images stored in the default resolution for the image list.
</short>
<descr>
<p>
<var>Count</var> is a read-only Integer property that indicates the number of 
images stored in the default resolution for the image list. Reading the value 
in the property causes the image resolution for <var>Width</var> to be 
selected, and its Count property is used as the property value.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageListResolution.Count"/>
</seealso>
</element>

<element name="TCustomImageList.DrawingStyle">
<short>
The default drawing style for images in the image list.
</short>
<descr>
<var>DrawingStyle</var> is a TDrawingStyle property that indicates the 
default drawing style for images in the image list.
</descr>
<seealso>
<link id="TDrawingStyle"/>
</seealso>
</element>

<element name="TCustomImageList.Height">
<short>
Height of images in the default resolution for the image list.
</short>
<descr>
<p>
<var>Height</var> is an Integer property that contains the vertical size in 
pixels for images in the default resolution for the image list. The default 
value for the property is 16.
</p>
<p>
Changing the value in the Height or Width properties causes the image list 
(and all of its resolutions) to be cleared. Set the values in the Height and 
Width properties prior to adding images to the list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.SetWidthHeight"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>

<element name="TCustomImageList.HeightForPPI">
<short>
Height for images at the specified display density.
</short>
<descr>
<p>
<var>HeightForPPI</var> is an indexed read-only Integer property that 
contains the image height used for images at the specified display density 
(Pixels per Inch). HeightForPPI allows the image height to be calculated for 
high density displays based on an initial image width.
</p>
<p>
<var>AImageWidth</var> is an Integer value that contains the initial image 
width used in the calculation.
</p>
<p>
<var>APPI</var> is an Integer value that contains the display density (Pixels 
per Inch) used in the calculation.
</p>
<p>
The image width for the requested display density is calculated by calling 
<var>GetWidthForPPI</var>. The image resolutions in the list are searched for 
the derived image width. If the resolution already exists, the Height 
property in the resolution is used as the property value. If the resolution 
is not found, the <var>GetHeightForWidth</var> method is used to get the 
value for the property.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.HeightForWidth"/>
</seealso>
</element>
<element name="TCustomImageList.HeightForPPI.AImageWidth">
<short>Initial image width used to calculate the property value.</short>
</element>
<element name="TCustomImageList.HeightForPPI.APPI">
<short>Display density used to calculate the property value.</short>
</element>

<element name="TCustomImageList.HeightForWidth">
<short>
Height used for images with the width specified width.
</short>
<descr>
<p>
<var>HeightForWidth</var> is an indexed read-only Integer property which 
returns the height used for images with the width specified width in AWidth. 
The read access specifier for the property uses the values in the Width and 
Height properties to determine the aspect ratio used for images in the 
default resolution.
</p>
<p>
The property value is set to the product of AWidth and the calculated aspect 
ratio. The property value is 0 (zero) when the Width property has not been 
assigned for the image list.
</p>
<p>
HeightForWidth is used in the implementation of the following classes and 
methods:
</p>
<ul>
<li>TCustomImageList.GetHeightForPPI</li>
<li>TCustomImageListResolutions.GetImageLists</li>
</ul>
</descr>
<seealso>
<link id="TCustomImageList.Width"/>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.HeightForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.HeightForWidth.AWidth">
<short>Image width used as the basis for the calculated image height.</short>
</element>

<element name="TCustomImageList.Width">
<short>
Width of images in the default resolution for the image list.
</short>
<descr>
<p>
<var>Width</var> is an Integer property that contains the horizontal size in 
pixels for images in the default resolution for the image list. The default 
value for the property is 16.
</p>
<p>
Changing the value in the Height or Width properties causes the image list 
(and all of its resolutions) to be cleared. Set the values in the Height and 
Width properties prior to adding images to the list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Height"/>
<link id="TCustomImageList.SetWidthHeight"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>

<element name="TCustomImageList.WidthForPPI">
<short>
Image width needed for the specified display density (PPI).
</short>
<descr>
<p>
<var>WidthForPPI</var> is an indexed read-only Integer property that contains 
the widths needed for images using the specified display densities (Pixels 
per Inch).
</p>
<p>
<var>AImageWidth</var> is an Integer value that contains the initial image 
width used for the calculated width at the specified display density.
</p>
<p>
<var>APPI</var> is an Integer value that contains the display density used to 
calculate the width of images.
</p>
<p>
Reading the value for the property causes the image width to be calculated 
using the specified parameter values. If AWidth is 0 (zero) or a negative 
number, the value in the <var>Width</var> property is used as the initial 
image width.
</p>
<p>
When <var>Scaled</var> contains <b>True</b>, the image width is 
calculated using the following formula:
</p>
<code>(AImageWidth * APPI) / 96</code>
<p>
If an image resolution does not already exist which uses the derived image 
width, the display density in APPI is used as a threshold for scaling using 
the following criteria:
</p>
<table>
<tr>
<td><b>Display Density (PPI)</b></td>
<td><b>Scaling Factor (%)</b></td>
</tr>
<tr>
<td>96-120</td>
<td>100%</td>
</tr>
<tr>
<td>121-168</td>
<td>150%</td>
</tr>
<tr>
<td>169 and higher</td>
<td>Calculated using (APPI / 96) * 100</td>
</tr>
</table>
<p>
The property value contains the image width derived using the formula:
</p>
<code>AImageWidth * Factor div 100</code>
<p>
When <var>Scaled</var> is <b>False</b>, image width scaling is not performed 
and the value in AImageWidth is used as the property value.
</p>
<p>
The <var>OnGetWidthForPPI</var> event handler is signalled (when assigned) to 
allow the calculated image width to be overridden. Applications can provide a 
<var>TCustomImageListGetWidthForPPI</var> procedure which uses custom scaling 
logic, or performs simple image width substitution for given display 
densities.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Scaled"/>
<link id="TCustomImageList.OnGetWidthForPPI"/>
<link id="TCustomImageListGetWidthForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.WidthForPPI.AImageWidth">
<short>Initial image width used for the derived value.</short>
</element>
<element name="TCustomImageList.WidthForPPI.APPI">
<short>Display density for the the derived image width.</short>
</element>

<element name="TCustomImageList.SizeForPPI">
<short>
Size used for images with the specified image width at the given display 
density.
</short>
<descr>
<p>
<var>SizeForPPI</var> is a read-only TSize property which contains the size 
used for images with the specified image width at the given display density.
</p>
<p>
<var>AImageWidth</var> is an Integer value that contains the image width to 
use as the basis for the calculated size.
</p>
<p>
<var>APPI</var> is an Integer value that contains the display density (Pixels 
per Inch) used for the calculated size.
</p>
<p>
The property value is a <var>TSize</var> type with the image width and height 
stored in the CX and CY members (respectively).
</p>
<p>
The image size is derived by calling <var>GetWidthForPPI</var> to determine 
the best candidate image resolution at the specified display density. 
<var>GetResolution</var> is called for the candidate resolution and its 
Height and Width properties are stored in the return value.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.ResolutionForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.SizeForPPI.AImageWidth">
<short>Initial image width used to calculate the image size.</short>
</element>
<element name="TCustomImageList.SizeForPPI.APPI">
<short>Display density for the calculated image size.</short>
</element>

<element name="TCustomImageList.OnChange">
<short>
Event handler signalled when the image list is changed.
</short>
<descr>
<p>
<var>OnChange</var> is a TNotifyEvent property that implements an event 
handler signalled when the image list is changed. Applications must assign an 
object procedure which performs actions required for the event notification.
</p>
<p>
OnChange is signalled from the <var>Change</var> method when a procedure has 
been assigned to the event handler.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Change"/>
</seealso>
</element>

<element name="TCustomImageList.Masked">
<short>
Indicates if an image mask is used for images in the list.
</short>
<descr>
<p>
<var>Masked</var> is a Boolean property which indicates if images in the 
image list contain an image mask that defines the transparent areas in the 
image. The default value for the property is <b>False</b>.
</p>
<p>
Set the value in Masked to <b>True</b> if the <var>AddMasked</var> or 
<var>ReplaceMasked</var> method was used to store a masked bitmap image to 
the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.AddMasked"/>
<link id="TCustomImageList.ReplaceMasked"/>
</seealso>
</element>

<element name="TCustomImageList.Reference">
<short>
Provides access to the reference class for the specified resolution.
</short>
<descr>
<p>
<var>Reference</var> is an indexed read-only TWSCustomImageListReference 
property which provides access to the class instance for a resolution using 
the specified image width. Reading the value in the property causes the image 
resolution and its reference class to be created if it has not already been 
allocated.
</p>
<p>
Reference is used get access to the handle for the image list used in the 
resolution. The handle is a required argument in 
<var>TWSCustomImageListResolutionClass</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageListResolution.Reference"/>
</seealso>
</element>

<element name="TCustomImageList.ReferenceForPPI">
<short>
Reference class using the specified image width and display density.
</short>
<descr>
<p>
<var>ReferenceForPPI</var> is an indexed read-only 
<var>TWSCustomImageListReference</var> property used to get the class 
instance for an image resolution using the specified image width and display 
density. The reference class allows access to the widgetset implementation 
for an image list. It is used mainly in situations that need the handle for 
an image list.
</p>
<p>
<var>AImageWidth</var> is an Integer value that contains the image width for 
the requested reference class.
</p>
<p>
<var>APPI</var> is an Integer value that contains the display density (Pixels 
per Inch) for the requested reference class.
</p>
<p>
Reading the value in the property causes the <var>GetWidthForPPI</var> method 
to be called to determine the actual image width needed for the specified 
display density. The <var>GetReference</var> method is called to retrieve the 
reference class using the derived image width.
</p>
</descr>
<seealso>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.Reference"/>
</seealso>
</element>
<element name="TCustomImageList.ReferenceForPPI.AImageWidth">
<short>Image width for the requested property value.</short>
</element>
<element name="TCustomImageList.ReferenceForPPI.APPI">
<short>Display density for the requested property value.</short>
</element>

<element name="TCustomImageList.Resolution">
<short>
Provides indexed access to an image resolution with the specified image width.
</short>
<descr>
<p>
<var>Resolution</var> is an indexed read-only 
<var>TCustomImageListResolution</var> property which provides access to an 
image resolution using the image width specified in AImageWidth.
</p>
<p>
<var>GetResolution</var> is the read access specifier for the Resolution 
property. It retrieves an image list using the specified image width. When 
AImageWidth is 0 (zero) or a negative value, the value in the Width property 
is used to locate the image resolution.
</p>
<p>
Use <var>ResolutionByIndex</var> to get a resolution using its ordinal 
position in the resolutions for the image list.
</p>
<p>
Use <var>ResolutionCount</var> to get the number of image resolutions used in 
the image list.
</p>
<p>
Use <var>Resolutions</var> or <var>ResolutionsDesc</var> to get an ascending 
or descending enumerator for images resolutions in the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageList.GetResolution"/>
<link id="TCustomImageList.ResolutionByIndex"/>
<link id="TCustomImageList.ResolutionCount"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
<link id="TCustomImageListResolution"/>
</seealso>
</element>
<element name="TCustomImageList.Resolution.AImageWidth">
<short>Image width to locate in the resolutions for the image list.</short>
</element>

<element name="TCustomImageList.ResolutionByIndex">
<short>
Provides access to an image resolution by its ordinal position in the image 
list.
</short>
<descr>
<p>
<var>ResolutionByIndex</var> is an indexed read-only 
<var>TCustomImageListResolution</var> property which provides access to a 
resolution in the image list by the ordinal position specified in AIndex. 
ResolutionByIndex accesses the internal 
<var>TCustomImageListResolutions</var> member where the image resolutions are 
stored in the image list.
</p>
<p>
Use <var>Resolution</var> to get an image resolution using the specified 
image width.
</p>
<p>
Use <var>Resolutions</var> or <var>ResolutionsDesc</var> to access the 
ascending and descending enumerators for the resolutions container.
</p>
<p>
Use <var>ResolutionCount</var> to determine the number of image resolutions 
used in the image list.
</p>
<p>
Use <var>ResolutionForPPI</var> to get a temporary scaled image resolution 
using the specified display density.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageList.Scaled"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
<link id="TCustomImageList.ResolutionCount"/>
<link id="TCustomImageList.ResolutionForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.ResolutionByIndex.AIndex">
<short>Ordinal position for the requested image resolution.</short>
</element>

<element name="TCustomImageList.ResolutionForPPI">
<short>
Gets a scaled resolution with the specified width, display density, and 
scaling factor.
</short>
<descr>
<p>
<var>ResolutionForPPI</var> is a read-only property used to get an image list 
with scaled images suitable for the specified width, display density (PPI), 
and scaling factor.
</p>
<p>
AImageWidth is the width of the images used as the source for the resized 
images. AImageWidth determines the Resolution selected as the source image 
list.
</p>
<p>
APPI indicates the display density (pixels per inch) for the resized images.
</p>
<p>
ACanvasScaleFactor contains the value used to adjust the image sizes when 
Scaled is set to <b>True</b>. The value in ACanvasScaleFactor is not used 
when Scaled is set to <b>False</b>.
</p>
<p>
The return value contains the <var>TScaledImageListResolution</var> instance 
created using the requested values. It is constructed dynamically in 
GetResolutionForPPI (the read access specifier for the property).
</p>
</descr>
<seealso>
<link id="TScaledImageListResolution"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Scaled"/>
<link id="TCustomImageList.DrawForPPI"/>
</seealso>
</element>
<element name="TCustomImageList.ResolutionForPPI.AImageWidth">
<short>Image width requested in the list of image resolutions.</short>
</element>
<element name="TCustomImageList.ResolutionForPPI.APPI">
<short>Display density (PPI) for the scaled images.</short>
</element>
<element name="TCustomImageList.ResolutionForPPI.ACanvasScaleFactor">
<short>Canvas scaling factor for the scaled images.</short>
</element>

<element name="TCustomImageList.ResolutionCount">
<short>
Number of image resolutions available in the image list.
</short>
<descr>
<p>
<var>ResolutionCount</var> is a read-only <var>Integer</var> property that 
provides access to the number of image Resolutions available in the image 
list. ResolutionCount returns the length of the internal 
<var>TCustomImageListResolutions</var> container used in the class instance.
</p>
<p>
Use the <var>Resolutions</var> or <var>ResolutionsDesc</var> methods to 
access an enumerator with the TCustomImageListResolution instances for the 
image list. Use the <var>Resolution</var> property to access a 
TCustomImageListResolution using a specified image width. Use the 
<var>ResolutionsByIndex</var> property to access an image resolution by its 
ordinal position in the image list.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutions"/>
<link id="TCustomImageListResolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionsDesc"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.ResolutionByIndex"/>
</seealso>
</element>

<element name="TCustomImageList.Resolutions">
<short>
Provides access to the image resolutions (or sizes) used in the image lists.
</short>
<descr>
<p>
<var>Resolutions</var> is a read-only 
<var>TCustomImageListResolutionEnumerator</var> function that provides access 
to the enumerator for image resolutions in the image list. Images resolutions 
are accessed in ascending image size order in the enumerator.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator"/>
<link id="TCustomImageList.ResolutionsDesc"/>
</seealso>
</element>
<element name="TCustomImageList.Resolutions.Result">
<short>
Container for the images resolutions used in the class instance.
</short>
</element>

<element name="TCustomImageList.ResolutionsDesc">
<short>
Provides access to the descending enumerator for image resolutions in the 
list.
</short>
<descr>
<p>
<var>ResolutionsDesc</var> is a 
<var>TCustomImageListResolutionEnumerator</var> function that provides access 
to the descending enumerator for image resolutions in the image list. Images 
resolutions are accessed in descending image size order in the enumerator.
</p>
</descr>
<seealso>
<link id="TCustomImageListResolutionEnumerator"/>
<link id="TCustomImageList.Resolutions"/>
</seealso>
</element>
<element name="TCustomImageList.ResolutionsDesc.Result">
<short>Descending Resolutions enumerator for the class instance.</short>
</element>


<element name="TCustomImageList.Scaled">
<short>
Controls whether image sizes are automatically scaled for different display 
density (Pixels per Inch) settings.
</short>
<descr>
<p>
<var>Scaled</var> is a <var>Boolean</var> property used to enable or disable 
automatic scaling of image sizes for different resolutions (Pixels per Inch). 
</p>
<p>
When Scaled is <b>True</b>, images in the list are dynamically scaled from the 
Width and Height used in the image list to the size needed for a given display 
density (Pixels per Inch). If the scaled image size is one of the Resolutions 
found in the image list, the images in the Resolution are used. If an image 
size is needed that does not exist in Resolutions, the next smaller size is 
selected from the predefined images by using the WidthForPPI property and a 
specified PPI setting. 
</p>
<p>
The <var>OnGetWidthForPPI</var> event handler is signalled (when assigned) to 
allow the calculated image width to be overridden. Applications can provide a 
<var>TCustomImageListGetWidthForPPI</var> procedure which uses custom scaling 
logic, or performs simple image width substitution for a given display density.
</p>
<p>
See <link id="TCustomImageList.WidthForPPI">WidthForPPI</link> for information 
about use of the pixels per inch setting to derive the scaling factor and the 
resulting size for images.
</p>
<p>
The ResolutionForPPI property provides access to an image list using an image 
size scaled to a specific PPI setting.
</p>
<p>
When Scaled is <b>False</b>, images are not dynamically scaled. The Width and 
Height specified in the image list are used.
</p>
<p>
The default value for the property is <b>False</b> and disables automatic 
scaling.
</p>
<p>
At design-time, use the image list property editor to maintain images or 
resolutions used in the image list. At run-time, use the methods provided in 
the class instance to maintain the image list.
</p>
<p>
Scaled is used in the implementation of the <var>GetResolutionForPPI</var> 
and <var>GetWidthForPPI</var> methods which implement the ResolutionForPPI and 
WidthForPPI properties (respectively).
</p>
</descr>
<seealso>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Resolutions"/>
<link id="TCustomImageList.ResolutionForPPI"/>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.OnGetWidthForPPI"/>
<link id="TCustomImageList.FindResolution"/>
</seealso>
</element>

<element name="TCustomImageList.ShareImages">
<short>
<b>True</b> when the handle for the image list is shared.
</short>
<descr>
<p>
<var>ShareImages</var> is a <var>Boolean</var> property that indicates if the 
handle for an image list is shared. When ShareImages contains <b>False</b>, 
the handle to the image list is freed when the the image list is destroyed.
</p>
<p>
This property exists only for Delphi compatibility. ShareImages is not used 
in the current implementation of TCustomImageList.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomImageList.ImageType">
<short>
Controls whether images are drawn with or without a mask.
</short>
<descr>
<p>
<var>ImageType</var> is a <var>TImageType</var> property that controls 
whether images are drawn with or without a mask. The value in ImageType is 
used as the default value for arguments passed to widgetset classes in the 
<var>Draw</var>, <var>DrawOverlay</var>, and <var>StretchDraw methods</var>.
</p>
<p>
Set the value in ImageType to <var>itMask</var> when a mask that defines the 
transparent areas in an image is stored in the raw image data. The default 
value for the property is <var>itImage</var>.
</p>
</descr>
<seealso>
<link id="TCustomImageList.Draw"/>
<link id="TCustomImageList.DrawOverlay"/>
<link id="TCustomImageList.StretchDraw"/>
</seealso>
</element>

<element name="TCustomImageList.OnGetWidthForPPI">
<short>
Event handler used to override the scaled width for a display density.
</short>
<descr>
<p>
<var>OnGetWidthForPPI</var> is a <var>TCustomImageListGetWidthForPPI</var> 
property that implements the event handler signalled to get the width for 
images using a specified display density (Pixels per Inch). OnGetWidthForPPI 
allows an application to override image width values derived using the 
automatic scaling features in <var>TCustomImageList</var>.
</p>
<p>
OnGetWidthForPPI is signalled when the <var>GetWidthForPPI</var> method is 
called, and when reading the value for the <var>WidthForPPI</var> property. 
The event is the last action performed (when assigned) in the GetWidthForPPI 
method. It can be used in situations where automatic image scaling is not 
enable using the Scaled property. It can also be used when the automatic 
scaling algorithm in GetWidthForPPI produces undesirable results (or 
performance) for certain high density displays.
</p>
<p>
Assign an object procedure using the TCustomImageListGetWidthForPPI type to 
the event handler which handles image width calculations or substitutions. 
The image width is returned in the <var>AResultWidth</var> parameter for the 
event handler.
</p>
<p>
For example:
</p>
<code>
procedure TForm1.ImageList1GetWidthForPPI(Sender: TCustomImageList;
  AImageWidth, APPI: Integer; var AResultWidth: Integer);
begin
  AResultWidth := AImageWidth * APPI div 96;
end;
</code>
</descr>
<seealso>
<link id="TCustomImageListGetWidthForPPI"/>
<link id="TCustomImageList.WidthForPPI"/>
</seealso>
</element>

<element name="TLCLGlyphsMissingResources">
<short>
Indicates the actions performed for resources with missing image sizes.
</short>
<descr/>
<seealso/>
</element>
<element name="TLCLGlyphsMissingResources.gmrAllMustExist">
<short>
Show an exception if any image resolution is missing for a resource.
</short>
</element>
<element name="TLCLGlyphsMissingResources.gmrOneMustExist">
<short>
Show an exception if no default image resolution is found. Missing 
resolutions will be auto-generated by scaling the largest image size.
</short>
</element>
<element name="TLCLGlyphsMissingResources.gmrIgnoreAll">
<short>
Ignore all missing image resolutions. No image will be added and 
TLCLGlyphs.GetImageIndex result is -1 if the image resolution is found.
</short>
</element>

<element name="TLCLGlyphs">
<short>
Represents glyphs for buttons or icons used in LCL controls.
</short>
<descr/>
<seealso/>
</element>
<element name="TLCLGlyphs.TEntryKey">
<short>Record representing glyph names.</short>
</element>
<element name="TLCLGlyphs.TEntryKey.GlyphName">
<short>Glyph name for the entry key.</short>
</element>
<element name="TLCLGlyphs.PEntryKey">
<short>Pointer to a TEntryKey type.</short>
</element>
<element name="TLCLGlyphs.TEntry">
<short>
Represents the key/value pair for glyph name and index position.
</short>
</element>
<element name="TLCLGlyphs.TEntry.GlyphName">
<short>Glyph name for the entry.</short>
</element>
<element name="TLCLGlyphs.TEntry.ImageIndex">
<short>Ordinal position for the image using the specified glyph name.</short>
</element>
<element name="TLCLGlyphs.TResolution">
<short>
Record used to track width and scale suffix values used for glyphs.
</short>
</element>
<element name="TLCLGlyphs.TResolution.Width">
<short>Width of the glyphs for the resolution.</short>
</element>
<element name="TLCLGlyphs.TResolution.ScaleSuffix">
<short>Scaling level for glyphs using the resolution.</short>
</element>

<element name="TLCLGlyphs.FMissingResources"/>
<element name="TLCLGlyphs.FImageIndexes"/>
<element name="TLCLGlyphs.FLoadResolutions"/>
<element name="TLCLGlyphs.FSuffix100Scale"/>

<element name="TLCLGlyphs.GetImageIndex">
<short>Gets the position of the specified resource.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLGlyphs.GetImageIndex.Result">
<short>Ordinal position for the specified resource name.</short>
</element>
<element name="TLCLGlyphs.GetImageIndex.AResourceName">
<short>Resource name to locate.</short>
</element>

<element name="TLCLGlyphs.RegisterResolutions">
<short>Register a list of resolutions using the specified suffixes.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLGlyphs.RegisterResolutions.AResolutionWidths">
<short>List of image widths to register.</short>
</element>
<element name="TLCLGlyphs.RegisterResolutions.AResolutionScaleSuffixes">
<short>List of suffixes used for images using the corresponding width.</short>
</element>

<element name="TLCLGlyphs.SetWidth100Suffix">
<short>Sets the suffix used for images at the 100% scaling level.</short>
</element>
<element name="TLCLGlyphs.SetWidth100Suffix.AWidth100Suffix">
<short>Suffix for the scaling level.</short>
</element>

<element name="TLCLGlyphs.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLGlyphs.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TLCLGlyphs.Destroy">
<short>Destructor for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="TLCLGlyphs.MissingResources">
<short>Indicates the action performed for missing resources.</short>
<descr/>
<seealso/>
</element>

<element name="LCLGlyphs">
<short>
Provides access to the TLCLGlyphs instance in the implementation.
</short>
<descr>
<p>
<var>LCLGlyphs</var> is a <var>TLCLGlyphs</var> function used to provide 
access to the TLCLGlyphs instance in the implementation section for the unit. 
LCLGlyphs ensures that the unit variable has been instantiated, and 
resolutions are registered using 16, 24, and 32 pixel sizes. The unit 
variable is freed in the finalization section for the unit.
</p>
<p>
LCLGlyphs is used to get the TButtonGlyph icons displayed using TButton and 
TBitBtn, and in the implementation of the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TLCLGlyphs"/>
</seealso>
</element>
<element name="LCLGlyphs.Result">
<short>The TLCLGlyphs instance in the implementation.</short>
</element>

<element name="GetDefaultGlyph">
<short>
Gets a glyph with the specified name from the default resource file.
</short>
<descr>
<p>
<var>GetDefaultGlyph</var> is a <var>TCustomBitmap</var> function used to get 
a glyph with the specified name from the default resource file.
</p>
<p>
<var>ResourceName</var> contains the name for the resource to locate in the 
resource file.
</p>
<p>
<var>ScalePercent</var> contains the scaling level requested for the glyph, 
and may be used as the suffix for the resource name. ScalePercent generally 
contains a value like 100, 150 or 200. When its value is not 100, it is 
appended to the resource name in the format: paste_150 or copy_200.
</p>
<p>
<var>IgnoreMissingResource</var> indicates if a missing resource can be 
silently ignored in the routine. When IgnoreMissingResource contains 
<b>False</b>, a missing resource causes an EResNotFound exception to be 
raised.
</p>
<p>
The return value contains the bitmap for the requested glyph. It is created 
by calling CreateBitmapFromResourceName routine. If no resource file is 
assigned for the current instance handle (HINSTANCE), the Lazarus resource 
file is searched as well. When a valid TBitmap image is found, its 
Transparent is updated to use the pixel at the bottom-left of the image as 
the fixed transparency color. The return value is <b>Nil</b> when a resource 
with the requested name and scaling level is not found.
</p>
<p>
GetDefaultGlyph is used in the implementation of the 
<var>TLCLGlyphs.GetImageIndex</var> method.
</p>
</descr>
<errors>
<p>
Raises an EResNotFound exception for a missing resource when 
IgnoreMissingResource contains <b>False</b>. Raised with the message in 
SResNotFound.
</p>
</errors>
<seealso>
<link id="TLCLGlyphs.GetImageIndex"/>
</seealso>
</element>
<element name="GetDefaultGlyph.Result">
<short>Bitmap for the requested resource name and scaling level.</short>
</element>
<element name="GetDefaultGlyph.ResourceName">
<short>Resource name for the glyph </short>
</element>
<element name="GetDefaultGlyph.ScalePercent">
<short>Scaling level for the bitmap image.</short>
</element>
<element name="GetDefaultGlyph.IgnoreMissingResource">
<short>Indicates if a missing resource can be ignored.</short>
</element>

</module>
<!-- ImgList -->

</package>
</fpdoc-descriptions>
