lazarus/docs/xml/lcl/imglist.xml

5283 lines
272 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<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>
Orginal 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.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>
<seealso>
<link id="TCustomImageListResolution.StretchDraw"/>
</seealso>
</element>
<element name="TScaledImageListResolution.StretchDraw.ACanvas">
<short/>
</element>
<element name="TScaledImageListResolution.StretchDraw.Index">
<short/>
</element>
<element name="TScaledImageListResolution.StretchDraw.ARect">
<short/>
</element>
<element name="TScaledImageListResolution.StretchDraw.Enabled">
<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>True 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 False.
</p>
</descr>
</element>
<element name="TCustomImageListResolutions.Find.Result">
<short>True 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>True 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 1versions 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.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>True when the index position is used for insertion (default is False).</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.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>
Please note: 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>
Please note: 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>True 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 blocks execution of the OnChange event.
</short>
<descr>
<p>
Use <var>BeginUpdate</var> when an update to the image list is started to block execution of the OnChange event handler.
</p>
<p>
<var>BeginUpdate</var> is used, along with <var>EndUpdate</var>, to speed up the insertion 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. EndUpdate decrements the internal counter when called. When the counter contains a positive non-zero value, the OnChange event handler is not executed when the image list is changed.
</p>
</descr>
<seealso>
<link id="TCustomImageList.EndUpdate"/>
<link id="TCustomImageList.OnChange"/>
<link id="TCustomImageList.Change"/>
</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. When the 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>
</descr>
<seealso>
<link id="TCustomImageList.BeginUpdate"/>
<link id="TCustomImageList.Change"/>
<link id="TCustomImageList.OnChange"/>
</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 False, 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 True, 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 False, the only resolution updated is the one which uses the width in AImage. When AllResolutions is True, 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 False, only the image resolution using the width defined in ARect is updated in the method. When AllResolutions is True, 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 False, only the image resolution using the image width in AImageWidth is updated in the method. When AllResolutions is True, 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 False, only the resolution using the Width in NewImage is updated with the new image data. When AllResolutions contains True, 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 False 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 True 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 True.
</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>True 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.
</short>
<descr>
<p>
<var>WidthForPPI</var> is an indexed read-only Integer property that contains the image width needed for images using the specified display density (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. When <var>Scaled</var> contains True, 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 False, 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 overriding the calculated image width. 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 False.
</p>
<p>
Set the value in Masked to True 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.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.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>
Indicates if images are automatically scaled for missing resolutions.
</short>
<descr>
<p>
<var>Scaled</var> is a <var>Boolean</var> property that indicates if images are automatically scaled for missing resolutions requested in the image list. The default value for the property is <b>False</b>.
</p>
<p>
When Scaled contains <b>True</b>, images in the list are dynamically scaled to the required width for a given display density (PPI). If the resolution already exists in the image list, it is used to retrieve images. If it does not already exist, an existing resolution is used as the basis for scaling images to the required width. When Scaled contains <b>False</b>, dynamic scaling is not performed for image resolutions. Instead, the closest resolution that matches the desired width is used as the source for images.
</p>
<p>
Use the <var>OnGetWidthForPPI</var> event handler to perform image size overrides or substitution for a given display density (PPI).
</p>
<p>
Scaled is used in the implementation of the <var>GetResolutionForPPI</var> and <var>GetWidthForPPI</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomImageList.ResolutionForPPI"/>
<link id="TCustomImageList.WidthForPPI"/>
<link id="TCustomImageList.OnGetWidthForPPI"/>
<link id="TCustomImageList.FindResolution"/>
<link id="TCustomImageList.Resolution"/>
<link id="TCustomImageList.Resolutions"/>
</seealso>
</element>
<element name="TCustomImageList.ShareImages">
<short>
True 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 False, 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>
</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>