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

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

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt

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

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
Graphics
====================================================================
-->
<module name="Graphics">
<short>
Contains classes, types, and routines used in graphics applications.
</short>
<descr>
<p>
<file>graphics.pp</file> contains classes, types, and routines used to 
represent graphic images in a Lazarus Component Library (<b>LCL</b>) 
application. The following classes are added to the registered class list 
used by the Run-time Library (<b>RTL</b>):
</p>
<ul>
<li>TBitmap</li>
<li>TPixmap</li>
<li>TPortableNetworkGraphic</li>
<li>TPortableAnyMapGraphic (when not explicitly disabled)</li>
<li>TJpegImage (when not explicitly disabled)</li>
<li>TGIFImage (when not explicitly disabled)</li>
<li>TPicture</li>
<li>TFont</li>
<li>TPen</li>
<li>TBrush</li>
<li>TRegion</li>
</ul>
<p>
<file>graphics.pp</file> is part of the Lazarus Component Library (<b>LCL</b>).
</p>
</descr>

<!-- unresolved external references -->
<element name="SysUtils"/>
<element name="Math"/>
<element name="Types"/>
<element name="Classes"/>
<element name="Contnrs"/>
<element name="Laz_AVL_Tree"/>
<element name="FPImage"/>
<element name="FPCanvas"/>
<element name="FPWriteBMP"/>
<element name="FPWritePNG"/>
<element name="PNGComn"/>
<element name="FPReadPNM"/>
<element name="FPWritePNM"/>
<element name="FPReadJpeg"/>
<element name="FPWriteJpeg"/>
<element name="FPReadTiff"/>
<element name="FPTiffCmn"/>
<element name="FPReadGif"/>
<element name="System.UITypes"/>
<element name="LCLVersion"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="LMessages"/>
<element name="LResources"/>
<element name="LCLResCache"/>
<element name="IntfGraphics"/>
<element name="IcnsTypes"/>
<element name="WSReferences"/>
<element name="GraphType"/>
<element name="GraphMath"/>
<element name="FPCAdds"/>
<element name="LazLoggerBase"/>
<element name="LazTracer"/>
<element name="LazUtilities"/>

<element name="PColor">
<short>Pointer to the TColor type.</short>
<descr>
<p>
The base type used for the definition is dependent on the FPC compiler 
version used to build the LCL. Starting in FPC version 3.2.3, the base type 
is the type defined in the System.UITypes namespace in the FPC run-time 
library (RTL). For previous compiler versions, the base type is a pointer to 
TColor.
</p>
<p>
This is done to prevent type conflicts when both System.UITypes and LCL units 
are used.
</p>
</descr>
<seealso/>
</element>
<element name="TColor">
<short>Color type used by most LCL drawing functions.</short>
<descr>
<p>
<var>TColor</var> is an alias for the <var>TGraphicsColor</var> type in 
<file>GraphType.pp</file> from the <file>LazUtils</file> package. TColor 
allows hexadecimal values in the range <b>-$7FFFFFFF-1..$7FFFFFFF</b> and 
represent the minimum and maximum values for the Long data type.
</p>
<p>
Bytes in the hexadecimal value are used as follows: <b>$OOBBGGRR</b>.
</p>
<dl>
<dt>OO</dt>
<dd>
Opacity values are not used for standard LCL colors. $1F is reserved for 
clNone. $20 is reserved for clDefault.
</dd>
<dt>BB</dt>
<dd>Blue color level. $00 is none. $FF is full.</dd>
<dt>GG</dt>
<dd>Green color level. $00 is none. $FF is full.</dd>
<dt>RR</dt>
<dd>Red color level. $00 is none. $FF is full.</dd>
</dl>
<p>
There are predefined color constants like those in Delphi, such as: 
<var>clBlack</var>, <var>clRed</var>, <var>clGreen</var>, and 
<var>clBlue</var>. There are extended color constants, like: 
<var>clMoneyGreen</var> and <var>clMedGray</var>. There are special color 
constants like: <var>clDefault</var> and <var>clNone</var>.
</p>
<p>
Additionally, there are system color constants like: <var>clWindowText</var> 
and <var>clForm</var>. These constants have a color and/or pattern depending 
on the users theme, the LCL control, or the drawing tool (Pen, Brush, Font).
</p>
<p>
See <link id="ColorToRGB">ColorToRGB</link> and <link 
id="RGBToColor">RGBToColor</link>.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TGraphicsColor">TGraphicsColor</link>
<link id="ColorToRGB"/>
<link id="RGBToColor"/>
<link id="clBlack"/>
<link id="clNone"/>
<link id="clDefault"/>
</seealso>
</element>

<!-- Modified in 43d7f203. -->
<element name="TFontPitch">
<short>
Represents pitches (or spacings) used in typefaces.
</short>
<descr>
<p>
Used to implement the Pitch member in TFontData and the Pitch property in 
TFont.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontPitch in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFontData"/>
<link id="TFont"/>
<!-- 
TODO: Uncomment when the topic exists in the RTL documentation.
<link id="#rtl.system.uitypes.TFontPitch">TFontPitch</link> 
-->
</seealso>
</element>
<element name="TFontPitch.fpDefault">
<short>Font uses the default spacing defined for the typeface.</short>
</element>
<element name="TFontPitch.fpVariable">
<short>Font uses variable pitch (or proportional spacing).</short>
</element>
<element name="TFontPitch.fpFixed">
<short>Font uses fixed pitch (or mono-spacing).</short>
</element>

<element name="TFontName">
<short>
Alias to the String type used to represent font names.
</short>
<descr>
<p>
<var>TFontName</var> is an alias for the <var>String</var> type. Not used in 
the current LCL implementation.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontName in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFont.Name"/>
<link id="TFontData"/>
<!-- 
TODO: Uncomment when the topic exists in the RTL documentation.
<link id="#rtl.system.uitypes.TFontName">TFontName</link> 
-->
</seealso>
</element>

<element name="TFontDataName">
<short>
Short String type used for typeface names.
</short>
<descr>
<p>
<var>TFontDataName</var> is a <var>Short String</var> type used to represent 
typeface names, and is used to implement the <var>Name</var> member in 
<var>TFontData</var>. TFontData is defined with a maximum length of 
<b>LF_FACESIZE-1</b>.
</p>
<remark>
Be aware that the definition can result in truncation of typeface names 
longer than 31 characters.
</remark>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontDataName in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFontData"/>
<link id="#lcl.lcltype.LF_FACESIZE">LF_FACESIZE</link>
<!-- 
TODO: Uncomment when the topic exists in the RTL documentation.
<link id="#rtl.system.uitypes.TFontDataName">TFontDataName</link> 
-->
</seealso>
</element>

<element name="TFontStyle">
<short>
Represents styles or variants for a font.
</short>
<descr>
<var>TFontStyle</var> is an enumerated type with values used to represent 
styles or variants for a typeface. Value(s) from TFontStyle are stored in the 
<var>TFontStyles</var> and <var>TFontStylesBase</var> set types, and used to 
implement the <var>Style</var> member in <var>TFontData</var> and the Style 
property in <var>TFont</var>.
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontStyle in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFont.Style"/>
<link id="TFontStyles"/>
<link id="TFontData"/>
<!-- 
TODO: Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TFontStyle">TFontStyle</link> 
-->
</seealso>
</element>
<element name="TFontStyle.fsBold">
<short>Bold font style.</short>
</element>
<element name="TFontStyle.fsItalic">
<short>Italic font style.</short>
</element>
<element name="TFontStyle.fsUnderline">
<short>Underline font style.</short>
</element>
<element name="TFontStyle.fsStrikeOut">
<short>Strike-out (or strike-through) font style.</short>
</element>

<element name="TFontStyles">
<short>
Set type used to store TFontStyle value(s).
</short>
<descr>
<p>
<var>TFontStyles</var> is a set type used to store <b>0</b> (<b>zero</b>) or 
more values from the <var>TFontStyle</var> enumeration.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontStyles in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFontStylesBase"/>
<link id="TFont.Style"/>
<link id="TFontData"/>
<!-- 
TODO: Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TFontStyles">TFontStyles</link> 
-->
</seealso>
</element>

<element name="TFontStylesBase">
<short>Set type used to store TFontStyle value(s).</short>
<descr>
<p>
<var>TFontStylesBase</var> is a set type used to store <b>0</b> (<b>zero</b>) 
or more values from the <var>TFontStyle</var> enumeration. It is used to 
implement the <var>Style</var> member in <var>TFontData</var> and 
<var>TFont</var>.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontStylesBase in System.UITypes for 
FPC 3.3.0 or higher.
</version>
<seealso>
<link id="TFontStyles"/>
<link id="TFontData"/>
<link id="TFont.Style"/>
<!-- 
TODO: Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TFontStylesBase">TFontStylesBase</link> 
-->
</seealso>
</element>

<element name="TFontCharSet">
<short>
Represents a font character set as a numeric value.
</short>
<descr>
<p>
<var>TFontCharSet</var> is a range type with values representing font 
character sets. TFontCharSet is limited to integer values in the range 
<b>0..255</b>, and correspond to the character set identifiers as used in the 
Win32 GDI LogFont structure. For other platforms, or widgetsets, the values 
used refer to constants defined in the widgetset interface.
</p>
<p>
<var>TFontCharSet</var> is the type used to implement the <var>CharSet</var> 
member in <var>TFontData</var> and <var>TFont</var>.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontCharSet in System.UITypes for 
FPC 3.3.0 or higher.
</version>
<seealso>
<link id="TFont.CharSet"/>
<link id="TFontData"/>
<!-- 
TODO: Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TFontCharSet">TFontCharSet</link> 
-->
</seealso>
</element>

<element name="TFontQuality">
<short>Font output quality, like anti-aliasing.</short>
<descr>
<p>
<var>TFontQuality</var> is an enumerated type with values that represent the 
output quality for fonts. Values in the enumeration control how carefully 
font attributes are applied to output using a font.
</p>
<remark>
There are situations where an enumeration value may not produce the desired 
result. ClearType and ClearTypeNatural anti-aliasing algorithms are oriented 
to display usage. They cannot be applied to printed output in general. They 
are ignored for fonts that are not TrueType or OpenType fonts with TrueType 
outlines. Postscript Type 1 fonts, and Postscript OpenType fonts without 
TrueType outlines, do not use ClearType anti-aliasing. Bitmap, vector, and 
device fonts cannot use ClearType anti-aliasing. Fonts which contain embedded 
bitmaps, like most East Asian fonts, do not use ClearType anti-aliasing.
</remark>
<p>
<var>TFontQuality</var> is the type used to implement the <var>Quality</var> 
member in <var>TFontData</var> and <var>TFont</var>.
</p>
</descr>
<version>
Modified in LCL 3.0 to be an alias to TFontQuality in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TFont.Quality"/>
<link id="TFontData"/>
<!-- 
TODO: Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TFontQuality">TFontQuality</link> 
-->
</seealso>
</element>
<element name="TFontQuality.fqDefault">
<short>Default font quality; used when appearance is not important.</short>
</element>
<element name="TFontQuality.fqDraft">
<short>
Prefer other font features (size, style) against output quality. Appearance of 
the font is less important than when fqProof is used. Generally offers lower 
quality than fqProof or fqDefault.
</short>
</element>
<element name="TFontQuality.fqProof">
<short>
Prefer output quality against other font features (size, style). Font quality 
is more important exactly reproducing the size or style for the font.
</short>
</element>
<element name="TFontQuality.fqNonAntialiased">
<short>Disable font anti-aliasing.</short>
</element>
<element name="TFontQuality.fqAntialiased">
<short>
Use font anti-aliasing. The font is always anti-aliased when supported, and 
the font size is not too small or too large.
</short>
</element>
<element name="TFontQuality.fqCleartype">
<short>Use ClearType font anti-aliasing when available.</short>
</element>
<element name="TFontQuality.fqCleartypeNatural">
<short>Use Clear Type Natural font anti-aliasing when available.</short>
</element>

<element name="TFontData">
<short>
Contains information about a font used in an application.
</short>
<descr>
<p>
<var>TFontData</var> is a record type used to hold information about a font 
in an application. It provides access to the system handle for the font, as 
well as attributes for the font. Values in the record are read from the font 
file when its handle is assigned, or when the default font from the widgetset 
interface is assigned.
</p>
<p>
TFontData is the type used to implement the <var>FontData</var> property in 
<var>TFont</var>.
</p>
</descr>
<seealso>
<link id="TFont.FontData"/>
<link id="DefFontData"/>
</seealso>
</element>

<element name="TFontData.Handle">
<short>The Operating System <var>Handle</var> for the <var>Font</var>.
</short>
</element>

<element name="TFontData.Height">
<short>The <var>Height</var> (in pixels) for the <var>Font</var>.
</short>
</element>

<element name="TFontData.Pitch">
<short>The <var>Pitch</var> (layout style) for the <var>Font</var>.</short>
</element>

<element name="TFontData.Style">
<short>
The <var>Style</var> (or variant) for the <var>Font</var>.
</short>
<descr>
<p>
<var>Style</var> is a <var>TFontStylesBase</var> member which contains the 
style or variant for the typeface in a font. See <var>TFontStyle</var> for 
more information about the enumeration values and their meanings.
</p>
</descr>
<seealso>
<link id="TFontStyle"/>
<link id="TFontStylesBase"/>
</seealso>
</element>

<element name="TFontData.CharSet">
<short>
The character set for a Font as an Integer value.
</short>
<descr>
<p>
<var>CharSet</var> is a <var>TFontCharSet</var> member which stores an Integer 
identifier for a font character set. Its value identifies the character set or 
encoding supported in the font.
</p>
<p>
The actual value is specific to the Operating System and/or widgetset for the 
application. For the Windows platform, it corresponds to the value in TLogFont 
as retrieved from the <var>Win32 GDI LogFont</var> routine. Other platforms 
and widgetsets rely on the mechanism native to the interface like: X-Fonts, 
device contexts, or whatever API mechanism the MacOS developers currently have 
in place. The native values are translated to to the value represented in the 
member as an Integer.
</p>
</descr>
<seealso>
<link id="TFontCharSet"/>
</seealso>
</element>

<element name="TFontData.Quality">
<short>Output quality for the font.</short>
<descr>
<p>
<var>Quality</var> is a <var>TFontQuality</var> member which contains an 
enumeration value which indicates the output quality for the font. The output 
quality determines how carefully font attributes are applied to output using 
the font.
</p>
<p>
See <var>TFontQuality</var> for more information about the enumeration values 
and their meanings.
</p>
</descr>
<seealso>
<link id="TFontQuality"/>
</seealso>
</element>

<element name="TFontData.Name">
<short>
The <var>Name</var> (as a string) of the current <var>Font</var>.
</short>
</element>

<!-- Added in 43d7f203. -->
<element name="fpDefault">
<short>
Represents the fpDefault enumeration value in TFontPitch.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fpVariable">
<short>
Represents the fpVariable enumeration value in TFontPitch.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fpFixed">
<short>
Represents the fpFixed enumeration value in TFontPitch.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fsBold">
<short>
Represents the fsBold enumeration value in TFontStyle.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fsItalic">
<short>
Represents the fsItalic enumeration value in TFontStyle.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fsUnderline">
<short>
Represents the fsUnderline enumeration value in TFontStyle.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fsStrikeOut">
<short>
Represents the fsStrikeout enumeration value in TFontStyle.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqDefault">
<short>
Represents the fqDefault enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqDraft">
<short>
Represents the fqDraft enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqProof">
<short>
Represents the fqProof enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqNonAntialiased">
<short>
Represents the fqNonAntialiased enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqAntialiased">
<short>
Represents the fqAntialiased enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqCleartype">
<short>
Represents the fqCleartype enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="fqCleartypeNatural">
<short>
Represents the fqCleartypeNatural enumeration value in TFontQuality.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the corresponding constant in System.UITypes 
for FPC 3.3.0 or higher.
</version>
<seealso/>
</element>

<element name="DefFontData">
<short>Default font data used for new TFont instances.</short>
<descr>
<p>New <var>TFont</var> instances are initialized with the values in this 
structure.
</p>
<p>The default font is chosen by the interfaces depending on the context. For 
example, there can be a different default font for a button and a group box.
</p>
</descr>
<seealso>
<link id="TFontData"/>
</seealso>
</element>

<element name="TTextLayout">
<short>
Represents the text layout used to render text in its rectangle.
</short>
<descr>
<p>
<var>TTextLayout</var> is an enumerated type with values that indicate the 
layout used for text in its rectangle. TTextLayout is the type used to 
implement the <var>Layout</var> member in <var>TTextStyle</var>.
</p>
</descr>
<seealso>
<link id="TTextStyle"/>
</seealso>
</element>
<element name="TTextLayout.tlTop">
<short>Text is aligned to the top of the text rectangle.</short>
</element>
<element name="TTextLayout.tlCenter">
<short>Text is aligned to the center of the text rectangle.</short>
</element>
<element name="TTextLayout.tlBottom">
<short>Text is aligned to the bottom of the text rectangle.</short>
</element>

<element name="TTextStyle">
<short>
The <var>Style</var> of the <var>Text</var> to be drawn in a rectangle.
</short>
<descr>TTextStyle is a packed record type which contains setting used when a 
control draws text using TextOut or TextRect. It is used to save, restore and 
configure values needed for the canvas which renders a control.
</descr>
</element>
<element name="TTextStyle.Alignment">
<short>Horizontal alignment in the text rectangle.</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.Layout">
<short>Vertical alignment in the text rectangle.</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.SingleLine">
<short>Indicates if the text is rendered as a single line.</short>
<descr>
<p>When set to <b>True</b> and <var>WordBreak</var> is <b>False</b>, 
<b>CR</b> (<b>#13</b>) and <b>LF</b> (<b>#10</b>) are handled as standard 
characters and do not result in line breaks.
</p>
</descr>
<seealso>
<link id="TTextStyle.WordBreak"/>
</seealso>
</element>
<element name="TTextStyle.Clipping">
<short>Causes text to be clipped to the text rectangle.</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.ExpandTabs">
<short>Causes Tab characters to be replaced with spaces.</short>
<descr>
<p>When set to <b>True</b>, occurrences of <b>Tab</b> (<b>#9</b>) characters 
are replaced with the appropriate number of space characters. The default 
value is <b>8</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TTextStyle.ShowPrefix">
<short>
Draws a single Ampersand characters as an accelerator key decoration.
</short>
<descr>
<p>
When set to <b>True</b>, the first <b>Ampersand</b> (<b>&amp;</b>) 
character on a line is drawn as the decoration used for an accelerator key. 
The character after the Ampersand contains the key for the accelerator. When 
<b>True</b>, double Ampersand (<b>&amp;&amp;</b>) characters are required to 
draw an Ampersand character in the text.
</p>
</descr>
<seealso/>
</element>
<element name="TTextStyle.Wordbreak">
<short>Causes a long line of text to be word-wrapped.</short>
<descr>
<p>
When set to <b>True</b>, a line of text that is larger than the available 
width in the rectangle is word-wrapped into multiple lines at word boundaries.
</p>
</descr>
<seealso/>
</element>
<element name="TTextStyle.Opaque">
<short>Causes the output to be drawn with full opacity.</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.SystemFont">
<short>Causes the system font to be used instead of the canvas font.</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.RightToLeft">
<short>For RightToLeft text reading (text direction).</short>
<descr/>
<seealso/>
</element>
<element name="TTextStyle.EndEllipsis">
<short>
Indicates if text is "ellipsified" when too long for its rectangle.
</short>
<descr>
<p>
If a line of text is too long to fit between left and right boundaries for 
the text rectangle, the text is shortened and an <b>Ellipsis</b> (<b>...</b>) 
is added to the end of the text value. Preference is given to 
<var>WordBreak</var> when set.
</p>
</descr>
<seealso/>
</element>

<element name="psSolid">
<short>Represents the solid pen style.</short>
<descr>
<p>Alias for the FPCanvas.psSolid enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psDash">
<short>Represents the dashed pen style.</short>
<descr>
<p>Alias for the FPCanvas.psDash enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psDot">
<short>Represents the dotted pen style.</short>
<descr>
<p>Alias for the FPCanvas.psDot enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psDashDot">
<short>Represents the dash-dot pattern pen style.</short>
<descr>
<p>Alias for the FPCanvas.psDashDot enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psDashDotDot">
<short>Represents the dash-dot-dot pattern pen style.</short>
<descr>
<p>Alias for the FPCanvas.psDashDotDot enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psClear">
<short>Represents the clear pen style.</short>
<descr>
<p>Alias for the FPCanvas.psClear enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psInsideframe">
<short>Represents the pen style used for an inside frame.</short>
<descr>
<p>Alias for the FPCanvas.psInsideframe enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="psPattern">
<short>Represents a pattern pen style.</short>
<descr>
<p>Alias for the FPCanvas.psPattern enumeration value in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="pmBlack">
<short>Represents the Black pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmBlack enumeration value in the FCL.
Pixels affected by the pen are always set to black.
</p>
</descr>
</element>

<element name="pmWhite">
<short>Represents the White pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmWhite enumeration value in the FCL.
Pixels affected by the pen are always set to white.
</p>
</descr>
</element>

<element name="pmNop">
<short>Represents the No OP pen mode.</short>
<descr>
<p>
Alias for the FPCanvas.pmNop enumeration value in the FCL.
Pixels affected by the pen are unchanged.
</p>
</descr>
</element>

<element name="pmNot">
<short>Represents the NOT pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmNot enumeration value in the FCL.
Pixels affected by the pen are set to the inverse for the current color.
</p>
</descr>
</element>

<element name="pmCopy">
<short>Represents the Copy pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmCopy enumeration value in the FCL.
Pixels affected by the pen are set to the pen color.
</p>
</descr>
</element>

<element name="pmNotCopy">
<short>Represents the Not Copy pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmNotCopy enumeration value in the FCL.
Pixels affected by the pen are set to the inverse of the pen color.
</p>
</descr>
</element>

<element name="pmMergePenNot">
<short>Represents the Merge Pen Not pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMerge enumeration value in the FCL.
Pixels affected by the pen are set to a combination of the pen color and the 
inverse of the pixel color.
</p>
</descr>
</element>

<element name="pmMaskPenNot">
<short>Represents the Mask Pen Not pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMaskPenNot enumeration value in the FCL.
Pixels affected by the pen are set to colors common to both the pen and the 
inverse of the pixel color.
</p>
</descr>
</element>

<element name="pmMergeNotPen">
<short>Represents the Merge Not Pen pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMergePenNot enumeration value in the FCL.
Pixels affected by the pen are set to a combination of the pen color and the 
inverse of the pixel color.
</p>
</descr>
</element>

<element name="pmMaskNotPen">
<short>Represents the Mask Not Pen pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMaskNotPen enumeration value in the FCL.
Pixels affected by the pen are set to a combination of the colors common to 
the inverse of the pen color and the current pixel color.
</p>
</descr>
</element>

<element name="pmMerge">
<short>Represents the Merge pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMerge enumeration value in the FCL.
Pixels affected by the pen are set to a combination of the pen color and the 
current pixel color.
</p>
</descr>
</element>

<element name="pmNotMerge">
<short>Represents the Not Merge pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmNotMerge enumeration value in the FCL.
Pixels affected by the pen are set to the inverse of the color derived using 
pmMerge pen mode.
</p>
</descr>
</element>

<element name="pmMask">
<short>Represents the Mask pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmMask enumeration value in the FCL.
Pixels affected by the pen are set a combination of the colors common to the 
pen color and the current pixel color.
</p>
</descr>
</element>

<element name="pmNotMask">
<short>Represents the Not Mask pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmNotMask enumeration value in the FCL.
Pixels affected by the pen are set to the inverse of the color for pmMask pen 
mode.
</p>
</descr>
</element>

<element name="pmXor">
<short>Represents the XOR pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmXor enumeration value in the FCL.
Pixels affected by the pen are set to a combination of the pen color and the 
current pixel color, but not both.
</p>
</descr>
</element>

<element name="pmNotXor">
<short>Represents the Not XOR pen mode.</short>
<descr>
<p>Alias for the FPCanvas.pmNotXor enumeration value in the FCL.
Pixels affected by the pen are set to the inverse of the color using pmXor 
pen mode.
</p>
</descr>
</element>

<element name="bsSolid">
<short>Represents the Solid brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsSolid enumeration value in the FCL.
Fills a shape using the color for the brush.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsClear">
<short>Represents the Clear brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsClear enumeration value in the FCL.
Fills a shape with transparency (using the existing color as the fill color).
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsHorizontal">
<short>Represents the Horizontal brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsHorizontal enumeration value in the FCL.
Fills a shape with a pattern consisting of equidistant horizontal lines.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsVertical">
<short>Represents the Vertical brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsVertical enumeration value in the FCL.
Fills a shape with a pattern consisting of equidistant vertical lines.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsFDiagonal">
<short>Represents the FDiagonal brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsFDiagonal enumeration value in the FCL.
Fills a shape with a pattern consisting of equidistant lines drawn with a 
45-degree downward, left-to-right hatch.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsBDiagonal">
<short>Represents the BDiagonal brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsBDiagonal enumeration value in the FCL.
Fills a shape with a pattern consisting of equidistant lines drawn with a 
45-degree upward, left-to-right hatch.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsCross">
<short>Represents the Cross brush style.</short>
<descr>
<p>Alias for the TFPBrushStyle.bsCross enumeration value in the FCL.
Fills a shape with a pattern consisting of equidistant lines drawn as a 
horizontal and vertical cross-hatch.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsDiagCross">
<short>Represents the DiagCross brush style.</short>
<descr>
<p>
Alias for the TFPBrushStyle.bsDiagCross enumeration value in the FCL. Fills a 
shape with a pattern consisting of equidistant lines drawn as a 45 degree 
cross-hatch.
</p>
</descr>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsImage">
<short>
Represents the user-specified Image (bitmap) brush style.
</short>
<descr>
<p>
Alias for the TFPBrushStyle.bsImage enumeration value in the FCL. Fills a 
shape with a user-specified image (bitmap).
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="bsPattern">
<short>
Represents the user-specified Pattern (bitmap) brush style.
</short>
<descr>
<p>
Alias for the TFPBrushStyle.bsPattern enumeration value in the FCL. Fills a 
shape with a user-specified pattern (bitmap).
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TBrushStyle"/>
</seealso>
</element>

<element name="pecRound">
<short>Represents the Round pen end cap.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="pecSquare">
<short>Represents the Square pen end cap.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="pecFlat">
<short>Represents the Flat pen end cap.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="pjsRound">
<short>Represents the Round pen join style.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="pjsBevel">
<short>Represents the Bevel pen join style.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="pjsMiter">
<short>Represents the Miter pen join style.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
</element>

<element name="TFillStyle">
<short>Alias for the TGraphicsFillStyle enumeration type in LazUtils.</short>
<descr>
<p>Alias for the TGraphicsFillStyle enumeration type in LazUtils.</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TGraphicsFillStyle">TGraphicsFillStyle</link>
</seealso>
</element>

<element name="TFillMode">
<short>Represents Fill Mode values.</short>
<descr>
<p>
Not used in the current LCL implementation. Replaced with the 
<var>LazRegionFillMode</var> type in <file>lazregions.pas</file>.
</p>
</descr>
<seealso/>
</element>
<element name="TFillMode.fmAlternate">
<short/>
</element>
<element name="TFillMode.fmWinding">
<short/>
</element>

<element name="TCopyMode">
<short>Type used to represent canvas copy modes.</short>
<descr>
<p>
<var>TCopyMode</var> is an alias for the <var>LongInt</var> type. TCopyMode is 
the type used to implement the <var>CopyMode</var> property in 
<var>TCanvas</var>. Normally contains a value defined in the copy mode 
constants:
</p>
<dl>
<dt>cmBlackness</dt>
<dd>
Fills the destination rectangle with the first color in the physical palette. 
(Black for the default palette).
</dd>
<dt>cmDstInvert</dt>
<dd>
Inverts colors in the destination rectangle.
</dd>
<dt>cmMergeCopy</dt>
<dd>
Merges colors from the source rectangle with the brush color.
</dd>
<dt>cmMergePaint</dt>
<dd>
Merges inverted colors from the source rectangle with the colors in the 
destination rectangle using an OR operation.
</dd>
<dt>cmNotSrcCopy</dt>
<dd>
Copies inverted colors from the source rectangle to the destination rectangle.
</dd>
<dt>cmNotSrcErase</dt>
<dd>
Combines the colors from the source and destination rectangles using an OR 
operation, and inverts the result.
</dd>
<dt>cmPatCopy</dt>
<dd>
Copies the brush into the destination rectangle.
</dd>
<dt>cmPatInvert</dt>
<dd>
Combines the brush colors with the colors in the destination rectangle using 
an XOR operation.
</dd>
<dt>cmPatPaint</dt>
<dd>
Combines the brush colors with the inverted colors from the source rectangle 
using an OR operation, and combines the result with the colors in the 
destination rectangle using an OR operation.
</dd>
<dt>cmSrcAnd</dt>
<dd>
Combines colors from the source and destination rectangles using an AND 
operation.
</dd>
<dt>cmSrcCopy</dt>
<dd>
Copies the source rectangle to the destination rectangle.
</dd>
<dt>cmSrcErase</dt>
<dd>
Combines the inverted colors in the destination rectangle with the colors 
from the source rectangle using an AND operation.
</dd>
<dt>cmSrcInvert</dt>
<dd>
Combines the colors in the source and destination rectangles using an XOR 
operation.
</dd>
<dt>cmSrcPaint</dt>
<dd>
Combines the colors in the source and destination rectangles using an OR 
operation.
</dd>
<dt>cmWhiteness</dt>
<dd>
Fills the destination rectangle using the second color in the physical 
palette. (White for the default palette).
</dd>
</dl>
<p>
The default value for the propriety is <var>cmSrcCopy</var>.
</p>
<p>
Copy mode constants are omitted for the <b>CAPTUREBLT</b> and 
<b>NOMIRRORBITMAP</b> values used in the Windows GDI API.
</p>
</descr>
<seealso>
<link id="TCanvas.CopyMode"/>
</seealso>
</element>

<element name="TCanvasStates">
<short>Represents states values for TCanvas.</short>
<descr>
<p>
<var>TCanvasStates</var> is an enumerated type with values that represent the 
state for a <var>TCanvas</var> instance. Value(s) from the enumeration are 
stored in the <var>TCanvasState</var> set type used to implement the 
<var>State</var> property in <var>TCanvas</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvasStates.csHandleValid">
<short>The handle for the canvas is valid.</short>
</element>
<element name="TCanvasStates.csFontValid">
<short>
Font properties correspond to the selected Font Handle in the Device 
Context (DC).
</short>
</element>
<element name="TCanvasStates.csPenvalid">
<short/>
</element>
<element name="TCanvasStates.csBrushValid">
<short/>
</element>
<element name="TCanvasStates.csRegionValid">
<short/>
</element>

<element name="TCanvasState">
<short>Set type used to store TCanvasStates values.</short>
<descr/>
<seealso/>
</element>

<element name="TCanvasOrientation">
<short>Represents orientations for a canvas.</short>
<descr>Not used in the current LCL implementation.
</descr>
<seealso/>
</element>
<element name="TCanvasOrientation.csLefttoRight">
<short/>
<notes>
<note>Needs to be changed to coLeftToRight.</note>
</notes>
</element>
<element name="TCanvasOrientation.coRighttoLeft">
<short/>
</element>

<element name="TProgressStage">
<short>
Alias for the TFPImgProgressStage type in the FCL.
</short>
<descr/>
<seealso/>
</element>

<element name="TProgressEvent">
<short>
Specifies an event handler for monitoring the progress of a drawing process.
</short>
<descr>
<p>
<var>TProgressEvent</var> is a alias for the TFPImgProgressEvent type in the 
FCL. It specifies an event handler used to perform progress notifications for 
computationally intensive (slow) operations such as loading, storing, or 
transforming graphic image data. 
</p>
<p>
The object procedure type (defined in fpimage.pp) includes the following 
parameters:
</p>

<dl>
<dt>Sender</dt>
<dd>
Object instance for the notification.
</dd>

<dt>Stage</dt>
<dd>
Indicates whether the notification is to prepare for, process, or clean up 
after a graphic operation. The first call for a graphic operation will be with 
<var>Stage = psStarting</var>, to allow the event handler to allocate whatever 
resources it needs to process subsequent progress notifications. After 
<var>Stage = psStarting</var>, you are guaranteed that <var>OnProgress</var> 
will be called again with <var>Stage = psEnding</var> to allow you to free 
those resources, even if the graphic operation is aborted by an exception.
Zero or more calls to <var>OnProgress</var> with <var>Stage = psRunning</var> 
may occur between the <var>psStarting</var> and <var>psEnding</var> calls.
</dd>

<dt>PercentDone</dt>
<dd>
The ratio of work done to work remaining, on a scale of 0 to 100. Values may 
repeat or even regress (get smaller) in successive calls. 
<var>PercentDone</var> is usually a guess, and the guess may be dramatically 
altered as new information is discovered in decoding the image. The value of 
this property could usefully be passed to a ProgressBar to show the user the 
progress for the operation. Please note that the Byte type used for the 
argument allows a value which can exceed 100.
</dd>

<dt>RedrawNow</dt>
<dd>
Indicates whether the graphic can or should be redrawn immediately. Useful 
for showing successive approximations of an image as data is available 
instead of waiting for all the data to arrive before drawing anything. Since 
there is no message loop activity during graphic operations, you should call 
<var>Update</var> to force a control to be redrawn immediately in the 
<var>OnProgress</var> event handler. Redrawing a graphic when 
<var>RedrawNow = <b>False</b></var> could corrupt the image or cause 
exceptions.
</dd>

<dt>R</dt>
<dd>
TRect instance with the area on an image that has been changed and needs to be 
redrawn.
</dd>

<dt>Msg</dt>
<dd>
Optional text describing in one or two words what the graphic class is 
currently working on. For example: "Loading", "Storing", "Reducing colors", 
etc. The <var>Msg</var> string can also be empty. <var>Msg</var> strings 
should be resourced for translation, should not contain trailing periods, and 
should be used only for display purposes. (Do not use the construct: if Msg = 
'Loading' then...).
</dd>

<dt>Continue</dt>
<dd>
Variable Boolean argument which indicates if the current operation can be 
continued. Set Continue to <b>False</b> to notifiy the calling procedure that 
the operation should be aborted.
</dd>
</dl>

<p>
TProgressEvent is the type used to implement the OnProgress property in 
TGraphic and TPicture.
</p>
</descr>
<seealso>
<link id="TGraphic.OnProgress"/>
<link id="TPicture.OnProgress"/>
<link id="TProgressStage"/>
</seealso>
</element>

<element name="TPixelFormat">
<short>Represents storage formats for pixels in image data.</short>
<descr>
<p>
<var>TPixelFormat</var> is an enumerated type with values that represent the 
storage format for pixels in image data. In general, it indicates the number 
of bits required for each pixel in an image. It also determines the color 
spectrum and color depth available in image data.
</p>
<p>
TPixelFormat is the type used to implement the <var>PixelFormat</var> 
property in TRasterImage, TSharedCustomBitmap, TCustomBitmap, TSharedIcon, 
TIconImage, TCustomIcon, et. al.
</p>
</descr>
<seealso/>
</element>
<element name="TPixelFormat.pfDevice">
<short>Indicates that the source device determines the pixel format.</short>
</element>
<element name="TPixelFormat.pf1bit">
<short>1 bit per pixel. Monochrome.</short>
</element>
<element name="TPixelFormat.pf4bit">
<short>4 bits per pixel. 16 colors.</short>
</element>
<element name="TPixelFormat.pf8bit">
<short>8 bits per pixel. 256 colors.</short>
</element>
<element name="TPixelFormat.pf15bit">
<short>15 bits per pixel. 32,768 colors. Also called High Color.</short>
</element>
<element name="TPixelFormat.pf16bit">
<short>
16 bits per pixel. 65,536 colors. Also referred to as High Color.
</short>
</element>
<element name="TPixelFormat.pf24bit">
<short>24 bits per pixel. 16,777,216 colors. Also called TrueColor.</short>
</element>
<element name="TPixelFormat.pf32bit">
<short>
32 bits per pixel. 4,294,967,296 colors. Not a common pixel format.
</short>
</element>
<element name="TPixelFormat.pfCustom">
<short>Uses a pixel format other than the defined values.</short>
</element>

<element name="PIXELFORMAT_BPP">
<short>
Constant with the number of bits per pixel for TPixelFormat enumeration 
values.
</short>
<descr>
<p>
<var>PIXELFORMAT_BPP</var> is a constant which contains an array of
<var>Byte</var> values representing the number of bits used for pixel data in 
an image. Elements in the array are indexed values in the
<var>TPixelFormat</var> enumeration, and contain the number of bits per pixel 
for the associated pixel format.
</p>
</descr>
<seealso>
<link id="TPixelFormat"/>
</seealso>
</element>

<element name="TTransparentMode">
<short>Represents transparency modes used in raster images.</short>
<descr/>
<seealso>
<link id="TRasterImage.TransparentMode"/>
<link id="TRasterImage.TransparentColor"/>
</seealso>
</element>
<element name="TTransparentMode.tmAuto">
<short>
Transparency is determined by examining a designated pixel in the image data.
</short>
</element>
<element name="TTransparentMode.tmFixed">
<short>Uses a designated color as the transparent color.</short>
</element>
<element name="clBlack">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clMaroon">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clGreen">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clOlive">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clNavy">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clPurple">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clTeal">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clGray">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clSilver">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clRed">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clLime">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clYellow">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clBlue">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clFuchsia">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clAqua">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="clLtGray">
<short>One of the standard colors. Delphi compatible.</short>
<descr>An alias for clSilver.</descr>
</element>
<element name="clDkGray">
<short>One of the standard colors. Delphi compatible.</short>
<descr>An alias for clGray.</descr>
</element>
<element name="clWhite">
<short>One of the standard colors. Delphi compatible.</short>
</element>
<element name="StandardColorsCount">
<short>Number of defined standard color constants.</short>
</element>
<element name="clMoneyGreen">
<short>One of the extended colors.</short>
</element>
<element name="clSkyBlue">
<short>One of the extended colors.</short>
</element>
<element name="clCream">
<short>One of the extended colors.</short>
</element>
<element name="clMedGray">
<short>One of the extended colors.</short>
</element>
<element name="ExtendedColorCount">
<short>The number of defined extended color constants.</short>
<descr/>
<seealso/>
</element>

<element name="clNone">
<short>One of the special colors.</short>
<descr/>
</element>

<element name="clDefault">
<short>The default color of a given control.
</short>
<descr>
<p>The default color for a given control. This color alone does not have any 
meaning; it needs to be resolved using a control instance and one of the 
methods like: TControl.GetDefaultColor, TControl.GetColorResolvingParent or 
TControl.GetRGBColorResolvingParent.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.GetDefaultColor">TControl.GetDefaultColor</link>
<link id="#lcl.controls.TControl.GetColorResolvingParent">TControl.GetColorResolvingParent</link>
<link id="#lcl.controls.TControl.GetRGBColorResolvingParent">TControl.GetRGBColorResolvingParent</link>
</seealso>
</element>

<element name="clScrollBar">
<short>One of the System colors.</short>
</element>
<element name="clBackground">
<short>One of the System colors.</short>
</element>
<element name="clActiveCaption">
<short>One of the System colors.</short>
</element>
<element name="clInactiveCaption">
<short>One of the System colors.</short>
</element>
<element name="clMenu">
<short>One of the System colors.</short>
</element>
<element name="clWindow">
<short>Background color for an edit control.</short>
<descr>
<p>
The color of the background for a widget, for example a TEdit. This is usually 
white. Don't confuse this with the background of a window, or form, which is 
given by clForm.
</p>
</descr>
<seealso>
<link id="clForm"/>
<link id="clWindowText"/>
</seealso>
</element>
<element name="clWindowFrame">
<short>One of the System colors.</short>
</element>
<element name="clMenuText">
<short>The color of the text in menus.</short>
<descr/>
</element>
<element name="clWindowText">
<short>The color for the text in an edit control.
</short>
<descr>
<p>The color of the text in a widget, such as for example TEdit. This is 
usually black. Don't confuse with the color of the window decoration caption 
or of a raised control such as buttons or anything else.
</p>
</descr>
<seealso>
<link id="clWindow"/>
<link id="clBtnText"/>
</seealso>
</element>
<element name="clCaptionText">
<short>One of the System colors.</short>
</element>
<element name="clActiveBorder">
<short>One of the System colors.</short>
</element>
<element name="clInactiveBorder">
<short>One of the System colors.</short>
</element>
<element name="clAppWorkspace">
<short>One of the System colors.</short>
</element>
<element name="clHighlight">
<short>One of the System colors.</short>
</element>
<element name="clHighlightText">
<short>One of the System colors.</short>
</element>
<element name="clBtnFace">
<short>Color for a button face.
</short>
<descr>
<p>The color used for a button face. This color is also utilized in many 
other places for raised areas such as a panel.
</p>
</descr>
</element>
<element name="clBtnShadow">
<short>One of the System colors.</short>
</element>
<element name="clGrayText">
<short>One of the System colors.</short>
</element>
<element name="clBtnText">
<short>The color for the text or other raised area on a button.</short>
<descr/>
</element>
<element name="clInactiveCaptionText">
<short>One of the System colors.</short>
</element>
<element name="clBtnHighlight">
<short>One of the System colors.</short>
</element>
<element name="cl3DDkShadow">
<short>One of the System colors.</short>
</element>
<element name="cl3DLight">
<short>One of the System colors.</short>
</element>
<element name="clInfoText">
<short>One of the System colors.</short>
</element>
<element name="clInfoBk">
<short>One of the System colors.</short>
</element>
<element name="clHotLight">
<short>One of the System colors.</short>
</element>
<element name="clGradientActiveCaption">
<short>One of the System colors.</short>
</element>
<element name="clGradientInactiveCaption">
<short>One of the System colors.</short>
</element>
<element name="clMenuHighlight">
<short>One of the System colors used for highlights on a menu.</short>
</element>
<element name="clMenuBar">
<short>One of the System colors used for the menu bar.</short>
</element>
<element name="clForm">
<short>Represents the color of the background for a form.</short>
<descr/>
</element>
<element name="clColorDesktop">
<short>A synonym not displayed in color lists.</short>
</element>
<element name="cl3DFace">
<short>A synonym not displayed in color lists.</short>
</element>
<element name="cl3DShadow">
<short>A synonym not displayed in color lists.</short>
</element>
<element name="cl3DHiLight">
<short>A synonym not displayed in color lists.</short>
</element>
<element name="clBtnHiLight">
<short>A synonym not displayed in color lists.</short>
</element>
<element name="clFirstSpecialColor">
<short>Alias for the clBtnHiLight constant.</short>
<descr/>
</element>
<element name="clMask">
<short>Alias for the clWhite constant.</short>
<descr/>
</element>
<element name="clDontMask">
<short>Alias for the clBlack constant.</short>
<descr/>
</element>
<element name="clForeground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clButton">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clLight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clMidlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDark">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clMid">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clBrightText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clButtonText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clBase">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clxBackground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clShadow">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clxHighlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clHighlightedText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="cloNormal">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="cloDisabled">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="cloActive">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalForeground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalButton">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalLight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalMidlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalDark">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalMid">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalBrightText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalButtonText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalBase">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalBackground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalShadow">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalHighlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clNormalHighlightedText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledForeground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledButton">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledLight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledMidlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledDark">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledMid">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledBrightText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledButtonText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledBase">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledBackground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledShadow">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledHighlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clDisabledHighlightedText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveForeground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveButton">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveLight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveMidlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveDark">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveMid">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveBrightText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveButtonText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveBase">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveBackground">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveShadow">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveHighlight">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="clActiveHighlightedText">
<short>Deprecated CLX color. Do not use.</short>
<descr/>
<seealso/>
</element>

<element name="TMappedColor">
<short>Deprecated CLX color range. Do not use.</short>
<descr/>
<seealso/>
</element>

<element name="TColorGroup">
<short>Deprecated CLX color enumeration. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="TColorGroup.cgInactive">
<short/>
</element>
<element name="TColorGroup.cgDisabled">
<short/>
</element>
<element name="TColorGroup.cgActive">
<short/>
</element>

<element name="TColorRole">
<short>Deprecated CLX color enumeration. Do not use.</short>
<descr/>
<seealso/>
</element>
<element name="TColorRole.crForeground">
<short/>
</element>
<element name="TColorRole.crButton">
<short/>
</element>
<element name="TColorRole.crLight">
<short/>
</element>
<element name="TColorRole.crMidlight">
<short/>
</element>
<element name="TColorRole.crDark">
<short/>
</element>
<element name="TColorRole.crMid">
<short/>
</element>
<element name="TColorRole.crText">
<short/>
</element>
<element name="TColorRole.crBrightText">
<short/>
</element>
<element name="TColorRole.crButtonText">
<short/>
</element>
<element name="TColorRole.crBase">
<short/>
</element>
<element name="TColorRole.crBackground">
<short/>
</element>
<element name="TColorRole.crShadow">
<short/>
</element>
<element name="TColorRole.crHighlight">
<short/>
</element>
<element name="TColorRole.crHighlightText">
<short/>
</element>
<element name="TColorRole.crNoRole">
<short/>
</element>

<!-- canvas modes (ternary raster operations) -->
<element link="#lcl.lcltype.BLACKNESS" name="cmBlackness"/>
<element link="#lcl.lcltype.DSTINVERT" name="cmDstInvert"/>
<element link="#lcl.lcltype.MERGECOPY" name="cmMergeCopy"/>
<element link="#lcl.lcltype.MERGEPAINT" name="cmMergePaint"/>
<element link="#lcl.lcltype.NOTSRCCOPY" name="cmNotSrcCopy"/>
<element link="#lcl.lcltype.NOTSRCERASE" name="cmNotSrcErase"/>
<element link="#lcl.lcltype.PATCOPY" name="cmPatCopy"/>
<element link="#lcl.lcltype.PATINVERT" name="cmPatInvert"/>
<element link="#lcl.lcltype.PATPAINT" name="cmPatPaint"/>
<element link="#lcl.lcltype.SRCAND" name="cmSrcAnd"/>
<element link="#lcl.lcltype.SRCCOPY" name="cmSrcCopy"/>
<element link="#lcl.lcltype.SRCERASE" name="cmSrcErase"/>
<element link="#lcl.lcltype.SRCINVERT" name="cmSrcInvert"/>
<element link="#lcl.lcltype.SRCPAINT" name="cmSrcPaint"/>
<element link="#lcl.lcltype.WHITENESS" name="cmWhiteness"/>

<element name="TRasterImageClass">
<short>Class reference used to create new instances of TRasterImage.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomBitmapClass">
<short>Class reference used to create new instances of TCustomBitmap.</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicsObject">
<short>Primitive ancestor class, mainly for Delphi compatibility.
</short>
<descr>
<p>TGraphicsObject - In Delphi VCL this is the ancestor of TFont, TPen and 
TBrush.
Since FPC 2.0 the LCL uses TFPCanvasHelper as ancestor.
</p>
</descr>
</element>

<!-- private -->
<element name="TGraphicsObject.FOnChanging"/>
<element name="TGraphicsObject.FOnChange"/>
<element name="TGraphicsObject.DoChange"/>
<element name="TGraphicsObject.DoChange.Msg"/>

<element name="TGraphicsObject.Changing">
<short>
<var>Changing</var> - software emulation of
<var>OnChanging</var> event.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicsObject.Changed">
<short>
<var>Changed</var> - software emulation of
<var>OnChange</var> event.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicsObject.Lock">
<short>
<var>Lock</var> - method for locking the object, making it unavailable for 
changes.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicsObject.UnLock">
<short>
<var>UnLock</var> - method for releasing locked object.
</short>
<descr/>
<seealso/>
</element>
<element name="TGraphicsObject.OnChanging">
<short>
<var>OnChanging</var> - event handler for changing object.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicsObject.OnChange">
<short>
<var>OnChange</var> - event handler for changed object.
</short>
<descr/>
<seealso/>
</element>

<element name="TFontHandleCacheDescriptor">
<short>
<var>TFontHandleCacheDescriptor</var> - descriptor for items in Font Handle 
Cache.
</short>
<descr/>
<seealso/>
</element>

<element name="TFontHandleCacheDescriptor.LogFont">
<short>Contains the logical font information for the cache descriptor.
</short>
<descr/>
<seealso/>
</element>

<element name="TFontHandleCacheDescriptor.LongFontName">
<short>
<var>LongFontName</var> - the long name for the Font.
</short>
<descr/>
<seealso/>
</element>

<element name="TFontHandleCache">
<short>
<var>TFontHandleCache</var> - a resource cache for font handles.
</short>
<descr/>
<seealso/>
</element>

<element name="TFontHandleCache.RemoveItem">
<short>Removes the specified resource item from the cache.</short>
<descr/>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.RemoveItem">TResourceCache.RemoveItem</link>
</seealso>
</element>
<element name="TFontHandleCache.RemoveItem.Item">
<short>Item removed from the resource cache.</short>
</element>

<element name="TFontHandleCache.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>Calls the inherited constructor on entry. Assigns 
TFontHandleCacheDescriptor to the ResourceCacheDescriptorClass property used 
to create new cache entries.
</p>
</descr>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.Create">TResourceCache.Create</link>
<link id="TFontHandleCacheDescriptor"/>
</seealso>
</element>

<element name="TFontHandleCache.CompareDescriptors">
<short>Compares the specified logical font names and font details.</short>
<descr/>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.CompareDescriptors">TResourceCache.CompareDescriptors</link>
</seealso>
</element>
<element name="TFontHandleCache.CompareDescriptors.Result">
<short/>
</element>
<element name="TFontHandleCache.CompareDescriptors.Tree">
<short/>
</element>
<element name="TFontHandleCache.CompareDescriptors.Desc1">
<short/>
</element>
<element name="TFontHandleCache.CompareDescriptors.Desc2">
<short/>
</element>

<element name="TFontHandleCache.FindFont">
<short>
<var>FindFont</var> - returns the Font specified by its handle as a cache 
item from the FontHandleCache.
</short>
<descr/>
<seealso/>
</element>
<element name="TFontHandleCache.FindFont.Result">
<short/>
</element>
<element name="TFontHandleCache.FindFont.TheFont">
<short/>
</element>

<element name="TFontHandleCache.FindFontDesc">
<short>
<var>FindFontDesc</var> - returns the descriptor for the FontHandle using its
<var>LogName</var> and its
<var>LongFontName</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TFontHandleCache.FindFontDesc.Result">
<short/>
</element>
<element name="TFontHandleCache.FindFontDesc.LogFont">
<short/>
</element>
<element name="TFontHandleCache.FindFontDesc.LongFontName">
<short/>
</element>

<element name="TFontHandleCache.Add">
<short>
<var>Add</var> the Font specified by its handle,
<var>LogFont</var> and
<var>LongFontName</var>, and returns a descriptor.
</short>
<descr/>
<seealso/>
</element>
<element name="TFontHandleCache.Add.Result">
<short/>
</element>
<element name="TFontHandleCache.Add.TheFont">
<short/>
</element>
<element name="TFontHandleCache.Add.LogFont">
<short/>
</element>
<element name="TFontHandleCache.Add.LongFontName">
<short/>
</element>

<element name="TFont">
<short>
Represents a font used to draw text in an application.
</short>
<descr>
<p>
<var>TFont</var> is a <var>TFPCustomFont</var> descendant, and provides 
properties and methods needed to represent a font used in an LCL application.
</p>
<p>
Most of the information about the font is provided in a <var>TFontData</var> 
instance used in protected methods like <var>GetData</var> and 
<var>SetData</var>. Data items in the structure are exposed as properties, 
and includes: <var>CharSet</var>, <var>Color</var>, 
<var>Height</var>,<var>Name</var>, <var>Orientation</var>, <var>Pitch</var>, 
<var>Quality</var>, <var>Size</var>, and <var>Style</var>.
</p>
<p>
The <var>Reference</var> property provides access to the font Handle in the 
widgetset implementation.
</p>
</descr>
</element>

<!-- private -->
<element name="TFont.FIsMonoSpace"/>
<element name="TFont.FIsMonoSpaceValid"/>
<element name="TFont.FOrientation"/>
<element name="TFont.FPitch"/>
<element name="TFont.FQuality"/>
<element name="TFont.FStyle"/>
<element name="TFont.FCharSet"/>
<element name="TFont.FPixelsPerInch"/>
<element name="TFont.FUpdateCount"/>
<element name="TFont.FChanged"/>
<element name="TFont.FFontHandleCached"/>
<element name="TFont.FColor"/>
<element name="TFont.FHeight"/>
<element name="TFont.FReference"/>

<element name="TFont.FreeReference">
<short>Frees the widgetset font reference in the class instance.</short>
<descr>
<p>
<var>FreeReference</var> calls the inherited <var>Changing</var> method to 
signal the <var>OnChanging</var> event handler (when assigned). FreeReference 
ensures that a cache font handle for the font reference is removed from the 
FontResourceCache. If the font handle is not cached, the handle is deleted 
and the LCL handle in the font reference is set to <b>0</b> (<b>zero</b>).
</p>
<p>
FreeReference is called from methods which set the value in font properties 
like: Name, Size, Pitch, Height, Style, and Orientation. It is also called 
when the class instance is freed.
</p>
</descr>
<seealso>
<link id="TFont.Reference"/>
<link id="TFont.Name"/>
<link id="TFont.Height"/>
<link id="TFont.Size"/>
<link id="TFont.Pitch"/>
<link id="TFont.Style"/>
<link id="TFont.Orientation"/>
</seealso>
</element>

<element name="TFont.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TFont.Handle"/>
</seealso>
</element>
<element name="TFont.GetHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TFont.GetData">
<short>Gets the value for the FontData property.</short>
<descr/>
<seealso>
<link id="TFont.FontData"/>
</seealso>
</element>
<element name="TFont.GetData.Result">
<short>Values for the property.</short>
</element>
<element name="TFont.GetIsMonoSpace">
<short>Gets the value for the IsMonoSpace property.</short>
<descr/>
<seealso>
<link id="TFont.IsMonoSpace"/>
</seealso>
</element>
<element name="TFont.GetIsMonoSpace.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetReference">
<short>Gets the value for the Reference property.</short>
<descr/>
<seealso>
<link id="TFont.Reference"/>
</seealso>
</element>
<element name="TFont.GetReference.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.IsHeightStored">
<short>Gets the storage specifier for the Height property.</short>
<descr/>
<seealso>
<link id="TFont.Height"/>
</seealso>
</element>
<element name="TFont.IsHeightStored.Result">
<short>
<b>True</b> when Height contains a value different than the value in 
DefFontData.
</short>
</element>
<element name="TFont.IsNameStored">
<short>Gets the storage specifier for the Name property.</short>
<descr/>
<seealso>
<link id="TFont.Name"/>
</seealso>
</element>
<element name="TFont.IsNameStored.Result">
<short>
<b>True</b> when Name contains a value different than the value in 
DefFontData.
</short>
</element>
<element name="TFont.SetData">
<short>Sets the value for the FontData property.</short>
<descr/>
<seealso>
<link id="TFont.FontData"/>
</seealso>
</element>
<element name="TFont.SetData.FontData">
<short>New value for the property.</short>
</element>
<element name="TFont.SetHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TFont.Handle"/>
</seealso>
</element>
<element name="TFont.SetHandle.Value">
<short>New value for the property.</short>
</element>
<element name="TFont.ReferenceNeeded">
<short>
Ensures that Reference contains a valid logical font instance for the 
widgetset.
</short>
<descr>
<p>No actions are performed in the method when the logical font in Reference 
has already been allocated.
</p>
</descr>
<seealso>
<link id="TFont.Reference"/>
<link id="FontResourceCache"/>
<link id="TFontHandleCacheDescriptor"/>
</seealso>
</element>
<element name="TFont.SetPixelsPerInch">
<short>Sets the value for the PixelsPerInch property.</short>
<descr/>
<seealso>
<link id="TFont.PixelsPerInch"/>
</seealso>
</element>
<element name="TFont.SetPixelsPerInch.APixelsPerInch">
<short>New value for the property.</short>
</element>
<element name="TFont.GetCharSet">
<short>Gets the value for the CharSet property.</short>
<descr/>
<seealso>
<link id="TFont.CharSet"/>
</seealso>
</element>
<element name="TFont.GetCharSet.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetHeight">
<short>Gets the value for the Height property.</short>
<descr/>
<seealso>
<link id="TFont.Height"/>
</seealso>
</element>
<element name="TFont.GetHeight.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetName">
<short>Gets the value for the Name property.</short>
<descr/>
<seealso>
<link id="TFont.Name"/>
</seealso>
</element>
<element name="TFont.GetName.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetOrientation">
<short>Gets the value for the Orientation property.</short>
<descr/>
<seealso>
<link id="TFont.Orientation"/>
</seealso>
</element>
<element name="TFont.GetOrientation.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetPitch">
<short>Gets the value for the Pitch property.</short>
<descr/>
<seealso>
<link id="TFont.Pitch"/>
</seealso>
</element>
<element name="TFont.GetPitch.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetSize">
<short>Gets the value for the Size property.</short>
<descr/>
<seealso>
<link id="TFont.Size"/>
</seealso>
</element>
<element name="TFont.GetSize.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.GetStyle">
<short>Gets the value for the Style property.</short>
<descr>
<p>Bold, Italic, StrikeOut, Underline.
</p>
</descr>
<seealso/>
</element>
<element name="TFont.GetStyle.Result">
<short>Value for the property.</short>
</element>
<element name="TFont.Changed">
<short>
Checks for pending updates (if there are any, returns <b>True</b>) or calls 
inherited <var>Changed</var>.
</short>
<descr>
<p>
<var>Changed</var> is an overridden procedure used to maintain the internal 
state for the class instance. If Changed has already been called for the font 
instance, no additional actions are required or performed. Otherwise, the 
inherited method is called to signal the <var>OnChanged</var> event handler 
(when assigned).
</p>
<p>
Changed is called when any of the properties for the font are modified, or 
when a new value is assigned to FontData or PixelsPerInch. Changed is called 
from the <var>EndUpdate</var> method when the internal update count reaches 
<b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso>
<link id="TFont.Name"/>
<link id="TFont.CharSet"/>
<link id="TFont.Pitch"/>
<link id="TFont.Size"/>
<link id="TFont.Height"/>
<link id="TFont.Color"/>
<link id="TFont.Orientation"/>
<link id="TFont.Quality"/>
<link id="TFont.Style"/>
<link id="TFont.PixelsPerInch"/>
<link id="TFont.FontData"/>
<link id="TFont.EndUpdate"/>
</seealso>
</element>

<element name="TFont.DoAllocateResources">
<short>
<var>DoAllocateResources</var> - calls inherited method then calls 
<var>GetReference</var>.
</short>
<descr/>
<seealso/>
</element>

<element name="TFont.DoCopyProps">
<short>
<var>DoCopyProps</var> - calls inherited method; if <var>From</var> argument 
is another Font, copies specified properties directly.
</short>
<descr/>
<seealso/>
</element>
<element name="TFont.DoCopyProps.From">
<short/>
</element>
<element name="TFont.DoDeAllocateResources">
<short>
<var>DoDeAllocateResources</var> - frees references then calls inherited 
method.
</short>
<descr/>
<seealso/>
</element>

<element name="TFont.SetCharSet">
<short>Sets the value for the CharSet property.</short>
<descr/>
<seealso>
<link id="TFont.CharSet"/>
</seealso>
</element>
<element name="TFont.SetCharSet.AValue">
<short>New value for the property.</short>
</element>

<element name="TFont.SetColor">
<short>Sets the value for the Color property.</short>
<descr>
<p>An overloaded variant of the method handles converting the TColor value to 
the TFPColor values used in ancestor class.
</p>
</descr>
<seealso>
<link id="TFont.Color"/>
</seealso>
</element>
<element name="TFont.SetColor.Value">
<short>New value for the property.</short>
</element>
<element name="TFont.SetColor.NewColor">
<short>New value for the property.</short>
</element>
<element name="TFont.SetColor.NewFPColor">
<short>New property value as a TFPColor type.</short>
</element>

<element name="TFont.GetColor">
<short>Gets the value for the Color property.</short>
<descr/>
<seealso>
<link id="TFont.Color"/>
</seealso>
</element>
<element name="TFont.GetColor.Result">
<short>Value for the property.</short>
</element>

<element name="TFont.SetFlags">
<short>Sets the value for an indexed style flag.</short>
<descr>
<p>
<var>SetFlags</var> is an overridden method used to set the value for an 
individual style flag by its ordinal position.
</p>
<p>
<var>Index</var> contains the position for the style flag used in the canvas 
helper for the class.
</p>
<p>
<var>AValue</var> is a
<var>Boolean</var> value that indicates whether the
<var>TFontStyle</var> value is included in or excluded from the style flags.
</p>
<p>
SetFlags is called when a new value is assigned to the <var>Style</var> 
property differs from the existing value.
</p>
</descr>
<seealso>
<link id="TFont.Style"/>
<link id="TFontStyle"/>
<link id="TFontStyles"/>
</seealso>
</element>
<element name="TFont.SetFlags.Index">
<short>Ordinal position for the style flag updated in the method.</short>
</element>
<element name="TFont.SetFlags.AValue">
<short>New value for the style flag at the specified position.</short>
</element>

<element name="TFont.SetFPColor">
<short>Sets the font Color to the specified TFPColor value.</short>
<descr>
<p>
<var>SetFPColor</var> is a method used to set the
<var>Color</var> for the font to the value specified in
<var>AValue</var>. AValue contains a
<var>TFPColor</var> value as defined in the FCL. SetFPColor calls
<var>FPColorToTColor</var> to convert AValue to the
<var>TColor</var> value applied to the Color property.
</p>
</descr>
<seealso>
<link id="TFont.Color"/>
<link id="FPColorToTColor"/>
</seealso>
</element>
<element name="TFont.SetFPColor.AValue">
<short>TFPColor value applied to the Color property.</short>
</element>

<element name="TFont.SetHeight">
<short>Sets the value for the Height property.</short>
<descr>
<p>Any change to Height is also converted to Points and applied to Size.
</p>
</descr>
<seealso>
<link id="TFont.Height"/>
<link id="TFont.Size"/>
</seealso>
</element>
<element name="TFont.SetHeight.value">
<short>New value for the property.</short>
</element>

<element name="TFont.SetName">
<short>Sets the value for the Name property.</short>
<descr/>
<seealso>
<link id="TFont.Name"/>
</seealso>
</element>
<element name="TFont.SetName.AValue">
<short>New value for the property.</short>
</element>

<element name="TFont.SetOrientation">
<short>Sets the value for the Orientation property.</short>
<descr/>
<seealso>

<link id="TFont.Orientation"/>
</seealso>
</element>
<element name="TFont.SetOrientation.AValue">
<short>New value for the property.</short>
</element>

<element name="TFont.SetPitch">
<short>Sets the value for the Pitch property.</short>
<descr/>
<seealso>

<link id="TFont.Pitch"/>
</seealso>
</element>
<element name="TFont.SetPitch.Value">
<short>New value for the property.</short>
</element>

<element name="TFont.SetSize">
<short>
<var>SetSize</var> - if
<var>AValue</var> is a new size, frees the old reference, calls the inherited 
method, performs the appropriate rounding and sets the
<var>Changed</var> property.
</short>
<descr/>
<seealso>
<link id="TFont.Size"/>
</seealso>
</element>
<element name="TFont.SetSize.AValue">
<short/>
</element>

<element name="TFont.SetStyle">
<short>
<var>SetStyle</var> - specify which style to use.
</short>
<descr/>
<seealso/>
</element>
<element name="TFont.SetStyle.Value">
<short>New value for the property.</short>
</element>

<element name="TFont.SetQuality">
<short>
<var>SetQuality</var> - specify the quality.
</short>
<descr>Default, Draft, Proof, NonAntialiased, Antialiased
</descr>
<seealso/>
</element>
<element name="TFont.SetQuality.AValue">
<short>New value for the property.</short>
</element>

<element name="TFont.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor in
<var>TFont</var>. Create calls the inherited constructor on entry, and sets 
the default values for properties including:
</p>
<dl>
<dt>Color</dt>
<dd>
Set to clDefault for platforms or widgetsets where it is enabled. Otherwise, 
set to clWindowText.
</dd>
<dt>Pitch</dt>
<dd>Set to the value in DefFontData.</dd>
<dt>Charset</dt>
<dd>Set to the value in DefFontData.</dd>
<dt>Quality</dt>
<dd>Set to the value in DefFontData.</dd>
<dt>Height</dt>
<dd>Set to the value in DefFontData.</dd>
<dt>Style</dt>
<dd>Set to the value in DefFontData.</dd>
<dt>PixelsPerInch</dt>
<dd>Set to the vertical display density used in ScreenInfo.</dd>
<dt>Size</dt>
<dd>
Calculated using values in Height and PixelsPerInch. Applied by calling the 
SetSize method inherited from TFPCustomFont.
</dd>
<dt>Name</dt>
<dd>
Set to the value in DefFontData, and applied by calling the SetName name 
method inherited from TFPCustomFont.
</dd>
<dt>FPColor</dt>
<dd>
Calls the SetFPColor method inherited from TFPCanvasHelper to set the font 
color to colBlack.
</dd>
</dl>
<p>
The DelayAllocate property from the TFPCanvasHelper ancestor is set to 
<b>True</b> to defer resource allocation for the Canvas until it is used.
</p>
</descr>
<seealso>
<link id="#rtl.System.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TFont.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy calls <var>FreeReference</var> to free cached font resources for the 
<var>Reference</var> class, and frees the <var>Handle</var> for the font. The 
inherited destructor is called prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TFont.Assign">
<short>Copies values from Source to the current class instance.</short>
<descr>
<p>
<var>Assign</var> is an overridden method used to copy values from the 
specified Source into the current class instance. Overloaded variants are 
provided that allow the source to be a <var>TPersistent</var> instance (which 
is cast to <var>TFont</var>) or a <var>TLogFont</var> record instance.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
<link id="#lcl.lcltype.TLogFont">TLogFont</link>
</seealso>
</element>
<element name="TFont.Assign.Source">
<short>Persistent object with values stored in the method.</short>
</element>
<element name="TFont.Assign.ALogFont">
<short>Logical font resource with values stored in the method.</short>
</element>

<element name="TFont.BeginUpdate">
<short>Starts an update process for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="TFont.EndUpdate">
<short>Finishes an update process for the class instance.</short>
<descr/>
<seealso/>
</element>
<element name="TFont.FontData">
<short>Contains the data describing the font.</short>
<descr/>
<seealso/>
</element>

<element name="TFont.HandleAllocated">
<short>
<var>HandleAllocated</var> - returns <b>True</b> if a handle has been 
allocated.
</short>
<descr/>
<seealso/>
</element>
<element name="TFont.HandleAllocated.Result">
<short/>
</element>

<element name="TFont.Handle">
<short>Operating system <var>Handle</var> for the Font.</short>
<descr>
<p>
Operating system <var>Handle</var> for the Font.
</p>
</descr>
<seealso/>
</element>
<element name="TFont.IsDefault">
<short>
<var>IsDefault</var> - returns <b>True</b> if this is the default Font.
</short>
<descr/>
<seealso/>
</element>
<element name="TFont.IsDefault.Result">
<short/>
</element>

<element name="TFont.IsEqual">
<short>
<var>IsEqual</var> - returns <b>True</b> if this Font is the same as the 
specified Font.
</short>
<descr/>
<seealso/>
</element>
<element name="TFont.IsEqual.Result">
<short>
<b>True</b> when the font matches the one in the current class instance.
</short>
</element>
<element name="TFont.IsEqual.AFont">
<short>Font instance to compare to the current class instance.</short>
</element>

<element name="TFont.IsMonoSpace">
<short>Indicates if the font uses fixed-width characters (monospace).</short>
<descr>
<p>
<var>IsMonoSpace</var> is a read-only <var>Boolean</var> property which 
indicates if the font is a monospaced font with a fixed character width. The 
<var>FontIsMonoSpace</var> routine from the LCL interface is called to get the 
property value, and uses the font handle in <var>Reference</var> to retrieve 
the font data.
</p>
</descr>
<seealso>
<link id="TFont.Reference"/>
<link id="#lcl.lclintf.FontIsMonoSpace">FontIsMonoSpace</link>
</seealso>
</element>

<element name="TFont.SetDefault">
<short>Sets font properties to their default values.</short>
<descr>
<p>
<var>SetDefault</var> is a procedure used to set properties in the font to the 
values used in the <var>DefFontData</var> variable. SetDefault calls 
<var>BeginUpdate</var> to start an update process, and sets the values for the 
following properties: 
</p>
<ul>
<li>Name</li>
<li>Charset</li>
<li>Height</li>
<li>Pitch</li>
<li>Quality</li>
<li>Style</li>
<li>Color</li>
</ul>
<p>
Color is set to <var>clDefault</var> when the UseCLDefault compiler directive 
is defined. Otherwise, the value <var>clWindowText</var> is used in the 
property.
</p>
<p>
<var>EndUpdate</var> is called to finish the update process prior to exiting 
from the method.
</p>
</descr>
<seealso>
<link id="DefFontData"/>
<link id="TFont.BeginUpdate"/>
<link id="TFont.EndUpdate"/>
</seealso>
</element>

<element name="TFont.PixelsPerInch">
<short>Display density for the font.</short>
<descr>
<p>
<var>PixelsPerInch</var> is an <var>Integer</var> property which indicates 
the display density (or pixels per inch) for the font.
</p>
<p>
The default value for the property is set when the class instance is created, 
and uses the value from the PixelsPerInchY member in ScreenInfo. It is also 
updated when Assign is used to copy property values from another font 
instance.
</p>
<p>
PixelsPerInch is used when values are assigned to the Height or Size 
properties to convert pixel values to the Points unit of measure used in Size.
</p>
<p>
Setting a new value in PixelsPerInch causes Height to be scaled to the new 
value for the property. Changed is also called to signal the OnChange event 
handler (when assigned).
</p>
</descr>
<seealso/>
</element>

<element name="TFont.Reference">
<short>
<var>Reference</var> - References made to this Font.
</short>
<descr>
<p>
<var>Reference</var> is a read-only <var>TWSFontReference</var> property 
which contains a reference to the widgetset class used for the font instance. 
It provides access to the Handle for the font resource, and is used in 
methods that need access to an existing font handle.
</p>
<p>
Resources for the property are allocated (when needed) and initialized by 
calling the ReferenceNeeded method. The resources are freed in the 
FreeReference method.
</p>
</descr>
<seealso/>
</element>

<element name="TFont.CharSet">
<short>Indicates the character set used in the font.</short>
<descr>
<p>
<var>CharSet</var> is a <var>TFontCharSet</var> property which contains a 
numeric value representing the character set in the font instance. The 
default value for the property is defined in the <var>DEFAULT_CHARSET</var> 
constant, and indicates that the default character set for the operating 
system or platform is used.
</p>
<p>
Setting a new value for the property causes the font <var>Reference</var> 
class to be re-created, and <var>Changed</var> is called to signal the 
<var>OnChange</var> event handler (when assigned).
</p>
<p>
CharSet is updated when the font data is read for the class instance, and 
when <var>Assign</var> is called to copy values from another font instance.
</p>
</descr>
<seealso/>
</element>

<element name="TFont.Color">
<short>Color used to render text using the font.</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property which contains the color 
used to render text using the font. The default value for the property is 
clDefault when the UseCLDefault compiler directive is defined. Otherwise, the 
default value is clWindowText.
</p>
<p>
Setting a new value for the property causes the ancestor class to be 
notified, and Changed is called to signal the OnChange event handler (when 
assigned).
</p>
</descr>
<seealso/>
</element>

<element name="TFont.Height">
<short>Height for the font (in pixels).</short>
<descr>
<p>
<var>Height</var> is an <var>Integer</var> property which contains the height 
for the font in pixels. The property value is not stored during LCL streaming 
operations when its value is the same as the value in <var>DefFontData</var>.
</p>
<p>
Setting a new value for the property causes the font handle in 
<var>Reference</var> to be re-created. <var>Size</var> is also updated with 
the new property value converted to Points (1/72 of an inch). The formula for 
the conversion is:
</p>
<code>
Size := -MulDiv(AValue, 72, FPixelsPerInch);
</code>
<p>
<var>Changed</var> is called to signal the <var>OnChange</var> event handler 
(when assigned).
</p>
<p>
When a value is assigned to Height, the value in Size is represented as a 
negative number. Conversely, when a value is assigned to Size, the value in 
Height is represented as a negative number.
</p>
<p>
Use Size to read or write the height for the font as a number of Points (1/72 
inch).
</p>
</descr>
<seealso>
<link id="TFont.Size"/>
<link id="TFont.Reference"/>
<link id="TFont.PixelsPerInch"/>
</seealso>
</element>

<element name="TFont.Name">
<short>Name of the font.</short>
<descr>
<p>
Name is a String property which contains the name of the font in the class 
instance. The initial value for the property is set when the class instance 
is created, and uses the Name from the DefFontData variable. The property is 
updated when Assign is called to copy values from another font instance.
</p>
<p>
Setting a new value for the property causes the font Reference to be 
re-created, and the Changed method is called to signal the OnChange event 
handler (when assigned).
</p>
<p>
Name is not included in LCL streaming when the property value is the same as 
the Name member in DefFontData.
</p>
</descr>
<seealso/>
</element>

<element name="TFont.Orientation">
<short>Rotation for the current font in 1/10ths of a degree.</short>
<descr>
<p>
<var>Orientation</var> is an <var>Integer</var> property which contains the 
rotation angle used for text in 1/10ths of a degree. The rotation angle is 
determined by the relationship between the X Axis for the Canvas and the 
baseline for the font, and uses the following directions:
</p>
<table>
<caption>Orientation Values and Directions</caption>
<tr>
<td>0</td>
<td>Text is drawn horizontally from left to right.</td>
</tr>
<tr>
<td>900</td>
<td>Text is drawn vertically from bottom to top.</td>
</tr>
<tr>
<td>1800</td>
<td>Text is drawn upside down from right to left.</td>
</tr>
<tr>
<td>2700</td>
<td>Text is drawn vertically from top to bottom.</td>
</tr>
</table>
<p>
Setting a new value for the property causes the font Reference to be 
re-created, and calls Changes to signal the OnChange event handler (when 
assigned).
</p>
<p>
The default value for the property is <b>0</b> (<b>zero</b>).
</p>
</descr>
</element>

<element name="TFont.Pitch">
<short>
<var>Pitch</var> type of the <var>Font</var>.
</short>
<descr>
<p>
<var>Pitch</var> is a <var>TFontPitch</var> property which indicates the 
pitch for the font face.
</p>
<p>
Setting a new value for the property causes the font <var>Reference</var> to 
be re-created, and the <var>Changed</var> method is called to signal the 
<var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TFontPitch"/>
</seealso>
</element>

<element name="TFont.Quality">
<short>Output quality for the <var>Font</var>, such as anti-aliasing.</short>
<descr>
<p>
<var>Quality</var> is a <var>TFontQuality</var> property which contains a 
value with the output quality for the font. The output quality determines how 
carefully font attributes are applied to output using the font.
</p>
<p>
The default value for the property is <var>fqDefault</var>. See 
<var>TFontQuality</var> for more information about the enumeration values and 
their meanings.
</p>
<p>
Setting a new value for the property causes the font <var>Reference</var> to 
be re-created, and <var>Changed</var> is called to signal the 
<var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TFontQuality"/>
<link id="TFontData"/>
</seealso>
</element>

<element name="TFont.Size">
<short>Vertical size for the font in Points.</short>
<descr>
<p>
<var>Size</var> is an <var>Integer</var> property which contains the height 
for the font in Points (1/72 of an inch). The value in Size is calculated 
using the logical font height, and is not read or written in LCL component 
streaming.
</p>
<p>
Setting a new value for the property causes the font Reference to be 
re-created for the class instance. The new property value is stored by 
calling <var>SetSize</var> in the ancestor class. The value is also converted 
to pixels (using <var>PixelsPerInch</var>) and stored in the 
<var>Height</var> property. The formula used for the conversion is:
</p>
<code>
FHeight := -MulDiv(AValue, FPixelsPerInch, 72);
</code>
<p>
When a value is assigned to Size, the value in Height is represented as a 
negative number. Conversely, when a value is assigned to Height, the value in 
Size is represented as a negative number.
</p>
<p>
Use the Height property to set the vertical size for the font as a number of 
pixels.
</p>
</descr>
<seealso>
<link id="TFont.Height"/>
<link id="TFont.PixelsPerInch"/>
<link id="TFont.Reference"/>
</seealso>
</element>

<element name="TFont.Style">
<short>Styles applied to the font face.</short>
<descr>
<p>
<var>Style</var> is a
<var>TFontStyles</var> property which indicates the font styles applied to 
the font face. The Style set contains 0 (zero ) or more values from the
<var>TFontStyle</var> enumeration, including:
</p>
<dl>
<dt>fsBold</dt>
<dd>Bold font style</dd>
<dt>fsItalic</dt>
<dd>Italic font style</dd>
<dt>fsStrikeOut</dt>
<dd>Strike-out (or strike-through) font style</dd>
<dt>fsUnderline</dt>
<dd>Underline font style</dd>
</dl>
<p>The default value for the property is an empty set (<b>[]</b>), and 
indicates that no styles are applied to the font face.
</p>
<p>Setting a new value for the property causes the font Reference to be 
re-created. The Change method is called to signal the OnChange event handler 
(when assigned).
</p>
</descr>
<seealso>
<link id="TFontStyles"/>
<link id="TFontStyle"/>
</seealso>
</element>

<element name="TPenStyle">
<short>Represents line drawing styles used when rendering to a canvas.</short>
<descr>
<p>
TPenStyle is an alias for the TFPPenStyle type in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="TPenMode">
<short>Represents pen modes used when rendering to a canvas.</short>
<descr>
<p>TPenMode is an alias for the TFPPenMode type in the FCL.
</p>
</descr>
<seealso/>
</element>

<element name="TPenEndCap">
<short>Represents end cap styles used for a pen.</short>
<descr>
<p>
TPenEndCap is an enumerated typed with values representing geometric shapes 
used as end caps for a pen. End caps are applied to the starting and ending 
points in a line segment.
</p>
<p>
TPenEndCap is the type used to implement the EndCap property in TPen.
</p>
</descr>
<version>Added in LCL version 1.2.0.</version>
<seealso>
<link id="TPen.EndCap"/>
</seealso>
</element>
<element name="TPenEndCap.pecRound">
<short>Rounded end cap which extends beyond the point.</short>
</element>
<element name="TPenEndCap.pecSquare">
<short>Rectangular end cap which extends beyond the point.</short>
</element>
<element name="TPenEndCap.pecFlat">
<short>Flat (or blunt) end cap which does not extend beyond the point.</short>
</element>

<element name="TPenJoinStyle">
<short>Represents join styles used between line segments.</short>
<descr/>
<version>Added in LCL version 1.2.0.</version>
<seealso/>
</element>
<element name="TPenJoinStyle.pjsRound">
<short>Round shape used at the join points.</short>
</element>
<element name="TPenJoinStyle.pjsBevel">
<short>Bevel shape used at the join points.</short>
</element>
<element name="TPenJoinStyle.pjsMiter">
<short>Mitered angular shape used at join points.</short>
</element>

<element name="TPenPattern">
<short>Represents a pattern brush for a pen.</short>
<descr>
<p>
<var>TPenPattern</var> is an array type used to store the sequence of 
<var>LongWord</var> values that make up the pen pattern. TPenPattern is 
essentially a user-defined pen style.
</p>
<p>TPenPattern is the type used to implement the <var>Pattern</var> property 
in <var>TPen</var>.
</p>
</descr>
<seealso>
<link id="TPen"/>
</seealso>
</element>

<element name="TPenHandleCacheDescriptor">
<short>Cache descriptor for Pen Handles.</short>
<descr/>
<seealso/>
</element>
<element name="TPenHandleCacheDescriptor.ExtPen">
<short>Extended logical pen structure for the cache entry.</short>
</element>
<element name="TPenHandleCacheDescriptor.Pattern">
<short>The <var>Pattern</var> for this pen.</short>
</element>

<element name="TPenHandleCache">
<short>
<var>TPenHandleCache</var> - Resource Cache for Pen Handles.
</short>
<descr/>
<seealso/>
</element>
<element name="TPenHandleCache.RemoveItem">
<short/>
<descr/>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.RemoveItem">TResourceCache.RemoveItem</link>
</seealso>
</element>
<element name="TPenHandleCache.RemoveItem.Item">
<short/>
</element>
<element name="TPenHandleCache.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso/>
</element>
<element name="TPenHandleCache.CompareDescriptors">
<short>
Compares the specified image descriptors to determine if they have the same 
pens and pattern data.
</short>
<descr/>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.CompareDescriptors">TResourceCache.CompareDescriptors</link>
</seealso>
</element>
<element name="TPenHandleCache.CompareDescriptors.Result">
<short/>
</element>
<element name="TPenHandleCache.CompareDescriptors.Tree">
<short/>
</element>
<element name="TPenHandleCache.CompareDescriptors.Desc1">
<short/>
</element>
<element name="TPenHandleCache.CompareDescriptors.Desc2">
<short/>
</element>
<element name="TPenHandleCache.FindPen">
<short>
<var>FindPen</var> - returns a
<var>ResourceCacheItem</var> corresponding to the nominated Handle.
</short>
<descr/>
<seealso/>
</element>
<element name="TPenHandleCache.FindPenDesc">
<short>
<var>FindPenDesc</var> - returns a descriptor for the given pen and pattern.
</short>
</element>
<element name="TPenHandleCache.Add">
<short>
<var>Add</var> - returns a cache descriptor corresponding to the pen that has 
been added to the cache.
</short>
</element>
<element name="TPenHandleCache.Add.Result">
<short/>
</element>
<element name="TPenHandleCache.Add.APen">
<short/>
</element>
<element name="TPenHandleCache.Add.AExtPen">
<short/>
</element>
<element name="TPenHandleCache.Add.APattern">
<short/>
</element>

<element name="TPen">
<short>Represents a pen used to draw on a canvas.</short>
<descr>
<p>
<var>TPen</var> is a <var>TFPCustomPen</var> descendant which contains 
settings for a pen used to draw lines and shapes on a canvas. It includes 
properties that define the color for the pen, the end cap and join style used 
for line segments, and a pattern used for user-defined line drawing styles.
</p>
<p>
Essentially, TPen maps the types used for properties in the FCL ancestor 
class to the types used in the LCL.
</p>
<p>
TPen is the type used to implement the Pen property in <var>TCanvas</var>.
</p>
</descr>
<seealso>
<link id="TCanvas.Pen"/>
</seealso>
</element>

<!-- private -->
<element name="TPen.FColor"/>
<element name="TPen.FEndCap"/>
<element name="TPen.FCosmetic"/>
<element name="TPen.FJoinStyle"/>
<element name="TPen.FPattern"/>
<element name="TPen.FPenHandleCached"/>
<element name="TPen.FReference"/>

<element name="TPen.FreeReference">
<short>
Frees the Pen class reference and optionally removes it from the Pen resource 
cache.
</short>
<descr/>
<seealso/>
</element>

<element name="TPen.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso/>
</element>
<element name="TPen.GetHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TPen.GetReference">
<short>Gets the value for the Reference property.</short>
<descr/>
<seealso/>
</element>
<element name="TPen.GetReference.Result">
<short>Value for the property.</short>
</element>

<element name="TPen.ReferenceNeeded">
<short>Ensures that the Reference class is allocated and initialized.</short>
<descr/>
<seealso/>
</element>

<element name="TPen.SetCosmetic">
<short>Sets the value for the Cosmetic property.</short>
<descr/>
<seealso>
<link id="TPen.Cosmetic"/>
</seealso>
</element>
<element name="TPen.SetCosmetic.AValue">
<short>New value for the property.</short>
</element>

<element name="TPen.SetHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TPen.Handle"/>
<link id="TPen.Reference"/>
</seealso>
</element>
<element name="TPen.SetHandle.Value">
<short>New value for the property.</short>
</element>

<element name="TPen.DoAllocateResources">
<short>
Performs actions needed to allocate resources for the class instance.
</short>
<descr>
<p>
<var>DoAllocateResources</var> is an overridden method used to allocate 
resources for the class instance. DoAllocateResources calls the inherited 
method , and calls GetReference to initialize the <var>Reference</var> 
property used in the class instance.
</p>
</descr>
<seealso>
<link id="TPen.Reference"/>
</seealso>
</element>

<element name="TPen.DoDeAllocateResources">
<short>
Performs actions to free resources allocated for the class instance.
</short>
<descr>
<p>
Overridden.
Calls FreeReference.
Calls the inherited method prior to exiting from the method.
</p>
</descr>
<seealso/>
</element>

<element name="TPen.DoCopyProps">
<short>
Copies properties from the specified source to the class instance.
</short>
<descr>
<p>Overridden.
Provides support for the TPen type in the From parameter.
Calls the inherited method.
</p>
</descr>
<seealso/>
</element>
<element name="TPen.DoCopyProps.From">
<short>Canvas helper descendant with properties copied in the method.</short>
</element>

<element name="TPen.SetColor">
<short>Sets the value for the Color property.</short>
<descr/>
<seealso>
<link id="TPen.Color"/>
</seealso>
</element>
<element name="TPen.SetColor.Value">
<short>New value for the property.</short>
</element>

<element name="TPen.SetFPColor">
<short>Sets the pen Color to the specified TFPColor value.</short>
<descr>
<p>
<var>SetFPColor</var> is a method used to set the <var>Color</var> for the 
pen to the value specified in <var>AValue</var>. AValue contains a 
<var>TFPColor</var> value as defined in the FCL. SetFPColor calls 
<var>FPColorToTColor</var> to convert AValue to the <var>TColor</var> value 
applied to the <var>Color</var> property.
</p>
</descr>
<seealso>
<link id="TPen.Color"/>
<link id="FPColorToTColor"/>
</seealso>
</element>

<element name="TPen.SetEndCap">
<short>
Specifies the type of end cap used for the pen if it is a geometric pen.
</short>
<descr>
<p>
Defined for FCL versions where the EndCap property is implemented.
</p>
</descr>
<seealso/>
</element>
<element name="TPen.SetEndCap.AValue">
<short>New value for the property.</short>
</element>

<element name="TPen.SetJoinStyle">
<short>Sets the value for the JoinStyle property.</short>
<descr>
<p>
<var>SetJoinStyle</var> specifies the style used on a geometric pen when lines 
join (at corners etc).
</p>
</descr>
<seealso/>
</element>
<element name="TPen.SetJoinStyle.AValue">
<short>New value for the property.</short>
</element>

<element name="TPen.SetMode">
<short>Sets the value for the Mode property.</short>
<descr>Overridden write access specifier.
</descr>
<seealso>
<link id="TPen.Mode"/>
</seealso>
</element>
<element name="TPen.SetMode.Value">
<short>New value for the property.</short>
</element>

<element name="TPen.SetStyle">
<short>Sets the value for the Style property.</short>
<descr>
<p>
Overridden write access specifier for the Style property.
</p>
</descr>
<seealso>
<link id="TPen.Style"/>
</seealso>
</element>
<element name="TPen.SetStyle.Value">
<short>New value for the property.</short>
</element>

<element name="TPen.SetWidth">
<short>Sets the value for the Width property.</short>
<descr>
<p>
Overridden write access specifier for the Width property.
</p>
</descr>
<seealso>
<link id="TPen.Width"/>
</seealso>
</element>
<element name="TPen.SetWidth.value">
<short>New value for the property.</short>
</element>

<element name="TPen.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for TPen. It calls the 
inherited Create method, and sets the default values for properties including:
</p>
<ul>
<li>DelayAllocate</li>
<li>Cosmetic</li>
<li>EndCap</li>
<li>JoinStyle</li>
<li>Width</li>
<li>Style</li>
<li>Mode</li>
<li>Color</li>
</ul>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TPen.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TPen</var>. It frees resources 
in Reference and calls the inherited Destroy method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TPen.Assign">
<short>Copies property values from the specified persistent object.</short>
<descr>
<p>
<var>Assign</var> is an overridden method used to copy property values from 
the persistent object in <var>Source</var> to the current class instance.
</p>
<p>Source is the <var>TPersistent</var> class instance with the property 
values copied in the method. If Source is a <var>TPen</var> instance, the 
properties introduced in TPen are copied into the current class instance. 
Otherwise, the inherited method is called.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TPen.Assign.Source">
<short>Persistent object with values copied in the method.</short>
</element>

<element name="TPen.Handle">
<short>The Operating System <var>Handle</var> for the current <var>Pen</var>.
</short>
<descr>
<p>
<var>Handle</var> is a <var>HPEN</var> property with the handle allocated for 
the pen by the operating system or widgetset. Setting a new value for the 
property causes the pen <var>Reference</var> to be re-created. The 
<var>Changed</var> method is called to signal the <var>OnChange</var> event 
handler (when assigned).
</p>
<remark>
The Handle property has been marked as deprecated. Use the Reference property 
to access the Handle for the pen.
</remark>
</descr>
<seealso>
<link id="TPen.Reference"/>
</seealso>
</element>

<element name="TPen.Reference">
<short>A <var>Reference</var> made to this Pen.</short>
<descr>
<p>
<var>Reference</var> is a read-only <var>TWSPenReference</var> property which 
provides a reference to the class allocated for the pen by a widgetset class. 
Use <var>Reference</var> to access the handle allocated for the pen resource.
</p>
</descr>
<seealso/>
</element>

<element name="TPen.GetPattern">
<short>Gets the Pattern used in the Pen.
</short>
<descr>
<p>
<var>GetPattern</var> is a <var>TPenPattern</var> function used to get Pattern 
for the pen. Use SetPattern to assign the Pattern used for the pen.
</p>
<remark>
Please note that the Pattern property in the TFPCustomPen ancestor class uses 
a different type (LongWord instead of TPenPattern).
</remark>
</descr>
<seealso>
<link id="TPen.SetPattern"/>
</seealso>
</element>

<element name="TPen.SetPattern">
<short>
<var>SetPattern</var> - specifies the pattern for the pen.
</short>
<descr>
<p>SetPattern is a reintroduced procedure in TPen to use the TPenPattern 
type. The property in the ancestor class uses the LongWord type.
</p>
</descr>
<seealso/>
</element>

<element name="TPen.Color">
<short>The <var>Color</var> of the current <var>Pen</var>.
</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property which contains the color used 
by the pen to draw on a canvas. The default value for the property is 
<var>clBlack</var>.
</p>
</descr>
</element>

<element name="TPen.Cosmetic">
<short>
Indicates whether the Pen is <var>Cosmetic</var> (non-geometric).
</short>
<descr>
<p>
<var>Cosmetic</var> is a <var>Boolean</var> property which indicates whether 
the pen is a Cosmetic one. When set to <b>False</b>, it is a Geometric pen.
</p>
<p>
A pen can be either Cosmetic or Geometric. A cosmetic pen is always 1 pixel 
wide, while a geometric pen can have any width. The width of a geometric pen 
is defined in world units and thus depends on transforms (scaling, rotation, 
shear, reflection) applied to a canvas. Operations using a cosmetic pen are 
faster.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
<p>
Setting a new value for the property causes the pen <var>Reference</var> to 
be re-created. The <var>Changed</var> method is called to signal the 
<var>OnChange</var> event handler (when assigned).
</p>
</descr>
</element>

<element name="TPen.EndCap">
<short>The sort of <var>EndCap</var> used on the Pen.</short>
<descr>
<p>
The end cap can be Round, Square or Flat. When end caps are round, the last 
points are drawn with a rounded shape. When end caps are square, the last 
points are drawn with a square aspect. When end caps are flat, the last points 
are not drawn at all.
</p>
</descr>
<version>Added in LCL version 1.2.0.</version>
<seealso/>
</element>

<element name="TPen.JoinStyle">
<short>
<var>JoinStyle</var> - the style of joint where two lines meet or cross.
</short>
<descr>
<p>
The join style can be: Round, Bevel or Miter. When style is Round, then 
line joins use a rounded shape. When style is Bevel, then line joins are 
beveled at their intersection. When style is Miter, then line joins are 
mitered at their intersection.
</p>
</descr>
<version>Added in LCL version 1.2.0.</version>
<seealso/>
</element>

<element name="TPen.Mode">
<short>Pen mode for the class instance.</short>
<descr>
<p>
<var>Mode</var> is a <var>TFPPenMode</var> property which contains the pen 
mode used in the class instance. A pen mode indicates the raster operation 
performed to combine the pen color with existing pixels in the destination 
bitmap. Mode can contain any of the values:
</p>
<dl>
<dt>pmBlack</dt>
<dd>Pixels affected by the pen are always set to black.</dd>
<dt>pmWhite</dt>
<dd>Pixels affected by the pen are always set to white.</dd>
<dt>pmNop</dt>
<dd>Pixels affected by the pen are unchanged.</dd>
<dt>pmNot</dt>
<dd>
Pixels affected by the pen are set to the inverse for the current color.
</dd>
<dt>pmCopy</dt>
<dd>Pixels affected by the pen are set to the pen color.</dd>
<dt>pmNotCopy</dt>
<dd>Pixels affected by the pen are set to the inverse of the pen color.</dd>
<dt>pmMergePenNot</dt>
<dd>
Pixels affected by the pen are set to a combination of the pen color and the 
inverse of the pixel color.
</dd>
<dt>pmMaskPenNot</dt>
<dd>
Pixels affected by the pen are set to colors common to both the pen and the 
inverse of the pixel color.
</dd>
<dt>pmMergeNotPen</dt>
<dd>
Pixels affected by the pen are set to a combination of the pen color and the 
inverse of the pixel color.
</dd>
<dt>pmMaskNotPen</dt>
<dd>
Pixels affected by the pen are set to a combination of the colors common to 
the inverse of the pen color and the current pixel color.
</dd>
<dt>pmMerge</dt>
<dd>
Pixels affected by the pen are set to a combination of the pen color and the 
current pixel color.
</dd>
<dt>pmNotMerge</dt>
<dd>
Pixels affected by the pen are set to the inverse of the color derived using 
pmMerge pen mode.
</dd>
<dt>pmMask</dt>
<dd>
Pixels affected by the pen are set a combination of the colors common to the 
pen color and the current pixel color.
</dd>
<dt>pmNotMask</dt>
<dd>
Pixels affected by the pen are set to the inverse of the color for pmMask pen 
mode.
</dd>
<dt>pmXor</dt>
<dd>
Pixels affected by the pen are set to a combination of the pen color and the 
current pixel color, but not both.
</dd>
<dt>pmNotXor</dt>
<dd>
Pixels affected by the pen are set to the inverse of the color using pmXor 
pen mode.
</dd>
</dl>
<p>
The default value for the property is <var>pmCopy</var>.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TPen.Style">
<short>Contains the line drawing style for the pen.</short>
<descr>
<p>
Style is a TPenStyle property with the style used to draw lines with the Pen. 
It can contain one of the following constant values:
</p>
<ul>
<li>psSolid</li>
<li>psDash</li>
<li>psDot</li>
<li>psDashDot</li>
<li>psDashDotDot</li>
<li>psInsideFrame</li>
<li>psPattern</li>
<li>psClear</li>
</ul>
<p>
psDash, psDot, psDashDot, and psDashDotDot are drawn using the corresponding 
TPenPattern for the Style. On the Windows platform, these styles are not 
available if Width has any value other than 1.
</p>
<p>
psInsideFrame uses a solid drawing style, and a Color dithered to one of the 
values in the color table for the device. The content drawn with the pen is 
reduced in size so that it appears inside of a bounding rectangle including 
the Width for the pen.
</p>
<p>
psClear, in general, tells the implementing class or routine that the drawing 
operation is not needed.
</p>
<p>
The default value for the property is <var>psSolid</var>. Setting a new value 
for the property causes the handle in Reference to be freed. The Changed 
method is called to signal the OnChange event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TPen.Width"/>
<link id="TPenStyle"/>
<link id="TPenPattern"/>
</seealso>
</element>

<element name="TPen.Width">
<short>Width for lines drawn using the Pen.</short>
<descr>
<p>
<var>Width</var> is an <var>Integer</var> property which contains the width 
for the pen.
</p>
<p>
Setting a new value for the property causes the pen <var>Reference</var> to 
be re-created. The <var>Changed</var> method is called to signal the 
<var>OnChange</var> event handler (when assigned). The default value for the 
property is <b>1</b>.
</p>
<p>
Width is related to the <var>Cosmetic</var> property. A cosmetic pen has a 
width of <b>1</b>. Setting Width to a value larger than <b>1</b> prevents 
using it as a cosmetic pen.
</p>
</descr>
<seealso/>
</element>

<element name="TBrushStyle">
<short>Represents the pattern for a Brush.</short>
<descr>
<p>
TBrushStyle is an alias for the TFPBrushStyle type from the FCL. Brush style 
constants defined in the LCL include:
</p>
<dl>
<dt>bsSolid</dt>
<dd>
Fills a shape with the color for the brush.
</dd>

<dt>bsClear</dt>
<dd>
Fills a shape with transparency (using the existing color as the fill color).
</dd>

<dt>bsHorizontal</dt>
<dd>
Fills a shape with a pattern consisting of equidistant horizontal lines.
</dd>

<dt>bsVertical</dt>
<dd>
Fills a shape with a pattern consisting of equidistant vertical lines.
</dd>

<dt>bsFDiagonal</dt>
<dd>
Fills a shape with a pattern consisting of equidistant lines drawn with a 
45-degree downward, left-to-right hatch.
</dd>

<dt>bsBDiagonal</dt>
<dd>
Fills a shape with a pattern consisting of equidistant lines drawn with a 
45-degree upward, left-to-right hatch.
</dd>

<dt>bsCross</dt>
<dd>
Fills a shape with a pattern consisting of equidistant lines drawn as a 
horizontal and vertical cross-hatch.
</dd>

<dt>bsDiagCross</dt>
<dd>
Fills a shape with a pattern consisting of equidistant lines drawn as a 45 
degree cross-hatch.
</dd>

<dt>bsImage</dt>
<dd>
Fills a shape with a user-specified image (bitmap).
</dd>

<dt>bsPattern</dt>
<dd>
Fills a shape with a user-specified pattern (bitmap).
</dd>
</dl>
<p>
The constant values are assigned to the Style property in TBrush.
</p>
</descr>
<seealso>
<link id="TBrush.Style"/>
</seealso>
</element>

<element name="TBrushHandleCache">
<short>
<var>TBrushHandleCache</var> - resource cache for Brush Handles.</short>
<descr/>
<seealso/>
</element>

<element name="TBrushHandleCache.RemoveItem">
<short>Deletes the widgetset object with the handle in Item and removes it 
from the resource cache.
</short>
<descr/>
<seealso>
<link id="#lcl.lclrescache.TResourceCache.RemoveItem">TResourceCache.RemoveItem</link>
</seealso>
</element>
<element name="TBrushHandleCache.RemoveItem.Item">
<short>Item removed from the cache.</short>
</element>
<element name="TBrushHandleCache.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TBrush">
<short>The <var>Brush</var> to be used to <var>Paint</var> on the current 
<var>Canvas</var>.
</short>
<descr>
<p>
A <var>Brush</var> is typically used to fill an enclosed area on the 
<var>Canvas</var> with one particular color or colored pattern.
</p>
</descr>
<seealso/>
</element>
<element name="TBrush.FBrushHandleCached"/>
<element name="TBrush.FColor"/>
<element name="TBrush.FBitmap"/>
<element name="TBrush.FReference"/>
<element name="TBrush.FInternalUpdateIndex"/>
<element name="TBrush.FreeReference">
<short>Frees the widgetset reference for the Brush.</short>
</element>

<element name="TBrush.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.GetHandle.Result">
<short/>
</element>

<element name="TBrush.GetReference">
<short>Gets the value for the Reference property.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.GetReference.Result">
<short/>
</element>

<element name="TBrush.GetColor">
<short>Gets the value for the Color property.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.GetColor.Result">
<short/>
</element>

<element name="TBrush.ReferenceNeeded">
<short>
Ensures that resources are allocated for the Reference property.
</short>
<descr/>
<seealso/>
</element>

<element name="TBrush.SetHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.SetHandle.Value">
<short>New value for the property.</short>
</element>

<element name="TBrush.DoChange">
<short>Performs action needed when the Brush is changed.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.DoChange.Msg">
<short/>
</element>

<element name="TBrush.DoAllocateResources">
<short>
Performs actions needed to allocate (or reallocate) resources for the brush 
instance.
</short>
<descr/>
<seealso>
<link id="TBrush.Reference"/>
<link id="TBrush.Handle"/>
</seealso>
</element>

<element name="TBrush.DoDeAllocateResources">
<short>
Performs actions to free resources allocated for the brush instance.
</short>
<descr/>
<seealso/>
</element>

<element name="TBrush.DoCopyProps">
<short>
Copies properties from the specified FCL brush into the current class instance.
</short>
<descr>
<p>
<var>DoCopyProps</var> is an overridden method in <var>TBrush</var> used to 
copy properties from the brush instance in <var>From</var> to the current 
brush instance. If From is derived from TBrush, it ensures that the Handle in 
Reference is freed prior to copying values and calls the Changed method when 
the operation has been completed.
</p>
<p>
DoCopyProps calls the inherited method to copy values for the Style, Image, 
and Color properties.
</p>
<p>
DoCopyProps is called from the CopyBrush method in the ancestor class.
</p>
</descr>
<seealso/>
</element>
<element name="TBrush.DoCopyProps.From">
<short>
TFPCanvasHelper instance with the properties copied in the method.
</short>
</element>

<element name="TBrush.SetColor">
<short>Sets the value for the Color property.</short>
<descr>
<p>
An overloaded variant provides both <var>TColor</var> and <var>TFPColor</var> 
values. It is used to set the color by calling the <var>SetFPColor</var> 
method in the ancestor class. No actions are performed in the method when the 
values in <var>Color</var> and <var>FPColor</var> have not been changed and 
the brush <var>Style</var> contains <var>bsClear</var>.
</p>
<p>
Frees the brush handle in the <var>References</var> property, and sets the 
value in <var>Bitmap</var> to <b>Nil</b>. Calls the inherited 
<var>SetStyle</var> method when Style is bsClear. Calls <var>Changed</var> to
signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TBrush.Color"/>
<link id="TBrush.Style"/>
<link id="TBrush.Reference"/>
<link id="TBrush.Bitmap"/>
</seealso>
</element>
<element name="TBrush.SetColor.Value">
<short>New value for the property.</short>
</element>
<element name="TBrush.SetColor.NewColor">
<short>TColor value applied to the brush Color.</short>
</element>
<element name="TBrush.SetColor.NewFPColor">
<short>TFPColor value applied to the brush Color.</short>
</element>

<element name="TBrush.SetFPColor">
<short>Sets the Brush color to the specified TFPColor value.</short>
<descr>
<p>
<var>SetFPColor</var> is an overridden method used to set the color using the 
<var>TFPColor</var> value in <var>AValue</var>. Calls FPColorToTColor to 
convert AValue to a TColor value, and applies it to the Color property.
</p>
</descr>
<seealso>
<link id="TColor"/>
<link id="TBrush.Color"/>
<link id="TBrush.SetColor"/>
</seealso>
</element>
<element name="TBrush.SetFPColor.AValue">
<short>Color value applied to the Color property.</short>
</element>

<element name="TBrush.SetBitmap">
<short>Sets the value for the Bitmap property.</short>
<descr/>
<seealso>
<link id="TBrush.Bitmap"/>
</seealso>
</element>
<element name="TBrush.SetBitmap.Value">
<short>New value for the property.</short>
</element>

<element name="TBrush.SetStyle">
<short>Sets the value for the Style property.</short>
<descr/>
<seealso>
<link id="TBrush.Style"/>
</seealso>
</element>
<element name="TBrush.SetStyle.Value">
<short>New value for the property.</short>
</element>

<element name="TBrush.Assign">
<short>
Copies values from Source to the current brush instance.
</short>
<descr>
<p>
<var>Assign</var> is a procedure used to copy properties values from
<var>Source</var> to the current brush instance.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TBrush.Assign.Source">
<short>Brush instance with values copied in the method.</short>
</element>

<element name="TBrush.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. 
Create calls the inherited constructor on entry, and sets the default values 
for properties including:
</p>
<dl>
<dt>Bitmap</dt>
<dd>Set to Nil.</dd>
<dt>Color</dt>
<dd>Set to clWhite. The inherited SetFPColor method is called to apply the 
new value.</dd>
<dt>Style</dt>
<dd>The default value is bsSolid, and the inherited SetStyle method is called 
to apply the value in ancestor classes.
</dd>
</dl>
<p>
Create sets the value in <var>DelayAllocate</var> to <b>True</b> to defer 
resource allocation until the brush is used. The internal counter used to 
track updates is reset.
</p>
</descr>
<seealso>
<link id="#rtl.System.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TBrush.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy frees the handle for the brush in the <var>Reference</var> property, 
and calls the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TBrush.EqualsBrush">
<short>Compares the specified Brush to the current class instance.</short>
<descr/>
<seealso/>
</element>
<element name="TBrush.EqualsBrush.Result">
<short>
<b>True</b> when the properties from the specified brush match the values in 
the current class instance.
</short>
</element>
<element name="TBrush.EqualsBrush.ABrush">
<short>Brush instance compared to the current class.</short>
</element>

<element name="TBrush.Bitmap">
<short>Bitmap with the pattern for the Brush.</short>
<descr>
<p>
<var>Bitmap</var> is a <var>TCustomBitmap</var> property which contains the 
pattern used to draw the brush, and is generally used to fill shapes or 
rectangular areas.
</p>
<p>
When assigned, the Bitmap image is used to draw the brush pattern instead of 
using the <var>Style</var> for brush. Setting a value for the property causes 
values in <var>Color</var> and <var>Style</var> to be reset. Color is set to 
<var>clWhite</var>, and the brush Style is set to <var>bsSolid</var>. The 
Handle for the brush is freed, and the <var>Changed</var> method is called to 
signal the <var>OnChange</var> event handler (when assigned).
</p>
<p>
The image in Bitmap is discarded when a new value is assigned to the Style 
property.
</p>
</descr>
<seealso>
<link id="TBrush.Style"/>
<link id="TBrush.Color"/>
</seealso>
</element>

<element name="TBrush.Handle">
<short>Operating System handle for the brush.</short>
<descr>
<p>
<var>Handle</var> is a <var>HBRUSH</var> property which contains the handle 
allocated for the brush.
</p>
<remark>
Handle has been marked as deprecated. Use the Reference property to access the 
handle for the brush.
</remark>
</descr>
<seealso>
<link id="TBrush.Reference"/>
</seealso>
</element>

<element name="TBrush.Reference">
<short>Contains a Reference to the handle allocated for the Brush.</short>
<descr>
<p>
<var>Reference</var> is a read-only <var>TWSBrushReference</var> property 
which contains a reference to the widgetset class used for the brush 
instance. It provides access to the Handle allocated for the brush resource, 
and is used in methods that need access to an existing brush handle.
</p>
<p>
Resources for the property are allocated (when needed) and initialized by 
calling the ReferenceNeeded method. The resources are freed in the 
FreeReference method.
</p>
</descr>
<seealso>
<link id="TBrush.Handle"/>
</seealso>
</element>

<element name="TBrush.Color">
<short>
The <var>Color</var> of the current <var>Brush</var>.
</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property with the color used to draw 
the brush pattern indicated in the <var>Style</var> property. It is the 
background or fill color when Style contains <var>bsSolid</var>. Color is not 
used when Style is set to <var>bsClear</var>; in fact, the brush style in 
<var>TFPCustomBrush</var> ancestor is actually set to <var>bsSolid</var>.
</p>
<p>
Setting a new value for the property causes an existing brush handle in 
<var>Reference</var> to be freed, and the pattern image in <var>Bitmap</var> 
is discarded.
</p>
<p>
The default value for the property is <var>clWhite</var>. The default 
property value is restored when a new value is assigned to the Bitmap 
property.
</p>
</descr>
<seealso>
<link id="TBrush.Style"/>
<link id="TBrush.Bitmap"/>
<link id="TBrush.Reference"/>
<link id="TBrush.Handle"/>
</seealso>
</element>

<element name="TBrush.Style">
<short>Indicates the pattern drawn using the brush.</short>
<descr>
<p>
<var>Style</var> is a <var>TFPBrushStyle</var> property which indicates the 
pattern drawn using the brush. Style contains one of the enumeration values 
defined in the FCL. The enumeration values are introduced as constants in the LCL, and include:
</p>
<ul>
<li>bsSolid</li>
<li>bsClear</li>
<li>bsHorizontal</li>
<li>bsVertical</li>
<li>bsFDiagonal</li>
<li>bsBDiagonal</li>
<li>bsCross</li>
<li>bsDiagCross</li>
<li>bsImage</li>
<li>bsPattern</li>
</ul>
<p>
Setting a new value in Style causes the brush Handle in Reference to be freed. 
The image in Bitmap is also discarded by setting the member to <b>Nil</b>. The 
<var>Changed</var> method is called to signal the <var>OnChange</var> event 
handler (when assigned).
</p>
<p>
The default value for the property is <var>bsSolid</var>. The value in Style 
is automatically set to <var>bsSolid</var> when a value is assigned to the 
<var>Bitmap</var> property.
</p>
</descr>
<seealso>
<link id="TBrush.Bitmap"/>
<link id="TBrushStyle"/>
<link id="bsSolid"/>
<link id="bsClear"/>
<link id="bsHorizontal"/>
<link id="bsVertical"/>
<link id="bsFDiagonal"/>
<link id="bsBDiagonal"/>
<link id="bsCross"/>
<link id="bsDiagCross"/>
<link id="bsImage"/>
<link id="bsPattern"/>
</seealso>
</element>

<element name="TRegionCombineMode">
<short>Represents combination methods used for regions.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionCombineMode.rgnAnd">
<short>
Create a region with the intersecting parts of the original regions.
</short>
</element>
<element name="TRegionCombineMode.rgnCopy">
<short>
Create a region that is a copy of the first of the two original regions.
</short>
</element>
<element name="TRegionCombineMode.rgnDiff">
<short>
Create a region with the area in the first region not found in the second 
region.
</short>
</element>
<element name="TRegionCombineMode.rgnOr">
<short>Create a region that represents both of the original regions.</short>
</element>
<element name="TRegionCombineMode.rgnXOR">
<short>
Create a region with the areas from the original regions that do not overlap.
</short>
</element>
<element name="TRegionOperationType">
<short>Represents Region operators used in TRegionOperation.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperationType.rgnNewRect">
<short>Create a new bounding box for the region.</short>
</element>
<element name="TRegionOperationType.rgnCombine">
<short>Create a new region using the combine mode for an operation.</short>
</element>
<element name="TRegionOperation">
<short>Represents a region operation.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.ROType">
<short>Raster operation type.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.Source1">
<short>Index to a source region.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.Source2">
<short>Index to a source region.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.Dest">
<short>Index to the destination region.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.CombineMode">
<short>Region combine mode for the operation.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperation.Rect">
<short>Rectangle with the bounding box for the destination region.</short>
<descr/>
<seealso/>
</element>
<element name="TRegionOperations">
<short>Array type used to store TRegionOpertation elements.</short>
<descr/>
<seealso/>
</element>
<element name="TRegion">
<short>
A defined area on a screen or canvas used to render a graphic image or text 
output.
</short>
<descr>
<p>
<var>TRegion</var> is a <var>TGraphicsObject</var> descendant which represents 
shaped areas that can be drawn, filled, or examined on a screen or canvas. The 
shaped areas can be one or more rectangles, and can overlap.
</p>
<p>
Use <var>AddRectangle</var> to create and combine a new rectangular area with 
the existing areas in the region. Each region has a <var>Handle</var> which 
identifies the construct. It is modified when a new rectangular area is added 
to the region.
</p>
<p>
TRegion is the type used to implement the <var>Region</var> propriety in 
<var>TCanvas</var>, and passed as an argument to the <var>SetShape</var> 
method in <var>TWinControl</var>.
</p>
<remark>
Some operating systems and widgetsets allow regions to be defined with 
ellipses, rounded rectangles, and polygons as the sub-regions. TRegion is 
limited to the rectangle with the area that is the bounding box for a shape. 
See <var>TLazRegion</var> in <file>LazRegions.pas</file> and 
<var>TLazCanvas</var> in <file>LazCanvas.pas</file> for alternate 
implementations that provide these capabilities.
</remark>
</descr>
<seealso/>
</element>
<element name="TRegion.FReference"/>

<element name="TRegion.AddOperation">
<short>Adds the specified operation to the region.</short>
<descr>
<p>
AddOperation is an empty implementation in the current LCL version.
</p>
</descr>
<seealso/>
</element>
<element name="TRegion.AddOperation.AOp">
<short/>
</element>

<element name="TRegion.ClearSubRegions">
<short>Clears sub-regions defined for the region.</short>
<descr>
<p>
ClearSubRegions is an empty implementation in the current LCL version.
</p>
</descr>
<seealso/>
</element>

<element name="TRegion.AddSubRegion">
<short>Adds a sub-region with the specified handle to the region .</short>
<descr>
<p>
<var>AddSubRegion</var> is an empty implementation in the current LCL version.
</p>
</descr>
<seealso/>
<seealso/>
</element>
<element name="TRegion.AddSubRegion.AHandle">
<short/>
</element>

<element name="TRegion.FreeReference">
<short>Frees the Region Reference in the class instance.</short>
<descr/>
<seealso/>
</element>

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

<element name="TRegion.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TRegion.Handle"/>
</seealso>
</element>
<element name="TRegion.GetHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TRegion.ReferenceNeeded">
<short>
Ensures that resources are allocated in Reference for the region.
</short>
<descr/>
<seealso/>
</element>

<element name="TRegion.SetHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TRegion.Handle"/>
</seealso>
</element>
<element name="TRegion.SetHandle.Value">
<short>New value for the property.</short>
</element>

<element name="TRegion.SetClipRect">
<short>Sets the value for the ClipRect property.</short>
<descr/>
<seealso>
<link id="TRegion.ClipRect"/>
</seealso>
</element>
<element name="TRegion.SetClipRect.value">
<short>New value for the property.</short>
</element>

<element name="TRegion.GetClipRect">
<short>Gets the value for the ClipRect property.</short>
<descr/>
<seealso>
<link id="TRegion.ClipRect"/>
</seealso>
</element>
<element name="TRegion.GetClipRect.Result">
<short>Value for the property.</short>
</element>

<element name="TRegion.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TRegion.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. It 
calls FreeReference to free resources allocated for the Reference, and calls 
the inherited destructor prior to exit.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TRegion.Assign">
<short>
<var>Assign</var> - if
<var>Source</var> is another
<var>TRegion</var>, copies the dimensions of the clipping rectangle.
</short>
<descr/>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TRegion.Assign.Source">
<short>Persistent object with properties copied in the method.</short>
</element>

<element name="TRegion.AddRectangle">
<short>Convenience routine to add a rectangle to the region.</short>
<descr>
<p>
Gets a handle for the rectangular defined by the opposing corners with the X1, 
Y1, X2, and Y2 coordinates. The new region handle is OR-ed with the existing 
handle for the region.
</p>
<p>
Calls ReferenceNeeded to ensure that the handle for the region has been 
allocated.
</p>
<p>
Discards the new region handle by calling DeleteObject.
</p>
</descr>
<seealso/>
</element>
<element name="TRegion.AddRectangle.X1">
<short>Horizontal coordinate for one corner of the rectangular area.</short>
</element>
<element name="TRegion.AddRectangle.Y1">
<short>Vertical coordinate for one corner of the rectangular area.</short>
</element>
<element name="TRegion.AddRectangle.X2">
<short>
Horizontal coordinate for the opposing corner of the rectangular area.
</short>
</element>
<element name="TRegion.AddRectangle.Y2">
<short>
Vertical coordinate for the opposing corner of the rectangular area.
</short>
</element>

<element name="TRegion.ClipRect">
<short>The clipping rectangle for the region.</short>
<descr/>
<seealso/>
</element>

<element name="TRegion.Handle">
<short>Operating System Handle for the region.</short>
<descr/>
<seealso>
<link id="#lcl.lcltype.HRGN">HRGN</link>
<link id="#rtl.sysutils.THandle">THandle</link>
</seealso>
</element>

<element name="TRegion.Reference">
<short>A <var>Reference</var> to the current Region.</short>
<descr/>
<seealso/>
</element>

<element name="TGraphic">
<short>Abstract base class used for images in supported image formats.
</short>
<descr>
<p>
The <var>TGraphic</var> class is an <b>abstract</b> base class for graphic 
images in image formats supported in the LCL. TGraphic establishes an API 
that is used in the LCL to read and write image data using a file, stream, 
resource, or the clipboard. Many of its methods are defined as <b>virtual</b> 
and/or <b>abstract</b>, and must be implemented (or re-implemented) in 
descendent classes to provide support for specific image formats.
</p>
<p>
Methods defined in TGraphic include:
</p>
<ul>
<li>LoadFromFile</li>
<li>LoadFromStream</li>
<li>LoadFromMimeStream</li>
<li>LoadFromLazarusResource</li>
<li>LoadFromResourceName</li>
<li>LoadFromResourceID</li>
<li>LoadFromClipboardFormat</li>
<li>LoadFromClipboardFormatID</li>
<li>SaveToFile</li>
<li>SaveToStream</li>
<li>SaveToClipboardFormat</li>
<li>SaveToClipboardFormatID</li>
<li>GetSupportedSourceMimeTypes</li>
<li>GetResourceType</li>
<li>GetFileExtensions</li>
<li>IsStreamFormatSupported</li>
</ul>
<p>
TGraphic does <b>not</b> contain a mechanism for displaying or rendering an 
image. This capability is implemented in descendent classes which provide a 
<var>TCanvas</var> suitable for the image data, such as: TRasterImage, 
TBitmap, TIcon, TPixmap, TJPegImage, TGifImage, et. al.
</p>
<p>
Properties common to most image formats are defined in the class, and include:
</p>
<ul>
<li>Height</li>
<li>Width</li>
<li>Modified</li>
<li>Empty</li>
<li>MimeType</li>
<li>Palette</li>
<li>PaletteModified</li>
<li>Transparent</li>
</ul>
<p>Event handlers are provided for change and progress notifications, 
including:
</p>
<ul>
<li>OnChange</li>
<li>OnProgress</li>
</ul>
<p>
TGraphic is the type used to implement the Graphic property in TPicture, and 
passed as an argument to methods in TCanvas.
</p>
</descr>
<seealso>
<link id="TPicture"/>
<link id="TBitmap"/>
<link id="TIcon"/>
<link id="TJpegImage"/>
<link id="TGIFImage"/>
<link id="TPixmap"/>
<link id="TPortableNetworkGraphic"/>
<link id="TPortableAnyMapGraphic"/>
<link id="TCanvas"/>
</seealso>
</element>

<!-- private -->
<element name="TGraphic.FModified"/>
<element name="TGraphic.FTransparent"/>
<element name="TGraphic.FOnChange"/>
<element name="TGraphic.FOnProgress"/>
<element name="TGraphic.FPaletteModified"/>

<element name="TGraphic.Changed">
<short>Performs action needed when the image data has changed.
</short>
<descr>
<p>
<var>Changed</var> is a procedure used to perform actions needed when the 
image data for the class instance has been changed. Changed sets the value in 
<var>Modified</var> to <b>True</b>, and signals the <var>OnChange</var> event 
handler (when assigned).
</p>
<p>
Changed is called when the value in Modified is changed from <b>False</b> to 
<b>True</b>.
</p>
</descr>
<seealso>
<link id="TGraphic.Modified"/>
</seealso>
</element>
<element name="TGraphic.Changed.Sender">
<short>Object for the change notification.</short>
</element>

<element name="TGraphic.Equals">
<short>
Determines if the specified class instance is the same as the current class 
instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TGraphic.Equals.Result">
<short>
<b>True</b> when the specified object the same instance as the current class.
</short>
</element>
<element name="TGraphic.Equals.Graphic">
<short>TGraphics instance compared in the method.</short>
</element>
<element name="TGraphic.Equals.Obj">
<short>TObject instance compared in the method.</short>
</element>

<element name="TGraphic.DefineProperties">
<short>
<var>DefineProperties</var> finds out whether the object really is a binary 
(graphic).
</short>
<descr>
<p>
Ensures that ReadData and WriteData are used to read the binary values for 
image data in TGraphic instances. Calls the DefineBinaryProperty method in 
Filer to set the read and write procedures for the data.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.DefineProperties.Filer">
<short>
TFiler instance used to read and write property values during component 
streaming.
</short>
</element>

<element name="TGraphic.Draw">
<short>
Method used to draw the Graphic on the specified Canvas, in the specified 
Rectangle.
</short>
<descr>
<p>
<var>Draw</var> is an <b>abstract virtual</b> procedure used to render data 
in the graphic to the specified Canvas using the given coordinate rectangle. 
Draw must be implemented in a descendent class to perform actions required 
for a specific image format.
</p>
<p>
<var>Canvas</var> is the <var>TCanvas</var> instance where the graphic is 
rendered.
</p>
<p>
<var>Rect</var> is a <var>TRect</var> instance with the coordinates where 
graphic is drawn on the Canvas.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.Draw.ACanvas">
<short>Canvas used to render the graphic.</short>
</element>
<element name="TGraphic.Draw.Rect">
<short>Canvas coordinates where the graphic is drawn.</short>
</element>

<element name="TGraphic.GetEmpty">
<short>
Gets the value for the Empty property.
</short>
<descr>
<p>
<var>GetEmpty</var> is an <b>abstract virtual</b> <var>Boolean</var> function 
used to get the value for the Empty property. The return value is <b>True</b> 
when no image data exists for the graphic.
</p>
<p>
GetEmpty must be implemented in a descendent class to provide support for a 
specific image format.
</p>
</descr>
<seealso>
<link id="TGraphic.Empty"/>
</seealso>
</element>
<element name="TGraphic.GetEmpty.Result">
<short><b>True</b> when no data exists in the graphic.</short>
</element>

<element name="TGraphic.GetHeight">
<short>Gets the value for the Height property.</short>
<descr/>
<seealso>
<link id="TGraphic.Height"/>
</seealso>
</element>
<element name="TGraphic.GetHeight.Result">
<short>Value for the property.</short>
</element>

<element name="TGraphic.GetMimeType">
<short>Gets the value for the MimeType property.</short>
<descr/>
<seealso>
<link id="TGraphic.MimeType"/>
</seealso>
</element>
<element name="TGraphic.GetMimeType.Result">
<short/>
</element>

<element name="TGraphic.GetPalette">
<short>Gets the value for the Palette property.</short>
<descr>
<p>Always returns 0 (representing an unassigned handle) in TGraphic.
</p>
</descr>
<seealso>
<link id="TGraphic.Palette"/>
</seealso>
</element>
<element name="TGraphic.GetPalette.Result">
<short>Value for the property.</short>
</element>

<element name="TGraphic.GetTransparent">
<short>Gets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TGraphic.Transparent"/>
</seealso>
</element>
<element name="TGraphic.GetTransparent.Result">
<short>Value for the property.</short>
</element>

<element name="TGraphic.GetWidth">
<short>Gets the value for the Width property.</short>
<descr/>
<seealso>
<link id="TGraphic.Width"/>
</seealso>
</element>
<element name="TGraphic.GetWidth.Result">
<short>Value for the property.</short>
</element>

<element name="TGraphic.Progress">
<short>Monitor the <var>Progress</var> of the drawing.</short>
<descr>
<p>
<var>Progress</var> is an overloaded procedure used to perform actions needed 
for progress notifications for the class instance. Arguments passed to the 
method identify the class instance, the progress step, the completion amount, 
and display options for the notification.
</p>
<p>
Progress signals the <var>OnProgress</var> event handler (when assigned) 
using the parameter values as arguments. Applications must implement an 
OnProgress event handler to respond to the progress notification.
</p>
<p>
Progress is a virtual method, and can be overridden in a descendent class to 
preform any actions needed when reading or writing image data for a specific 
image format.
</p>
<remark>
Please note the data type used for the PercentDone argument. It is declared 
as a Byte type, and will accept a value that exceeds 100.
</remark>
</descr>
<seealso>
<link id="TGraphic.OnProgress"/>
<link id="TProgressEvent"/>
</seealso>
</element>
<element name="TGraphic.Progress.Sender">
<short>Object for the notification.</short>
</element>
<element name="TGraphic.Progress.Stage">
<short>Indicates whether an operation is starting, running, or ending.</short>
</element>
<element name="TGraphic.Progress.PercentDone">
<short>Completion percentage for the progress step.</short>
</element>
<element name="TGraphic.Progress.RedrawNow">
<short>Indicates if the application should redraw the image.</short>
</element>
<element name="TGraphic.Progress.R">
<short>Rectangle with the coordinates affected by the progress step.</short>
</element>
<element name="TGraphic.Progress.Msg">
<short>Message for the progress notification.</short>
</element>
<element name="TGraphic.Progress.DoContinue">
<short>Indicates if the caller should continue the current operation.</short>
</element>

<element name="TGraphic.ReadData">
<short>
<var>ReadData</var> - reads data for the Graphic from a stream.
</short>
<descr>
<p>
<var>ReadData</var> is a procedure used to read binary data for the graphic 
from the specified stream. It is used by the
<var>TFiler</var> instance which loads data during component streaming.
</p>
<p>
ReadData calls <var>LoadFromStream</var> to complete the operation.
</p>
</descr>
<seealso>
<link id="TGraphic.LoadFromStream"/>
<link id="TGraphic.WriteData"/>
</seealso>
</element>
<element name="TGraphic.ReadData.Stream">
<short>TStream instance where data for the graphic is stored.</short>
</element>

<element name="TGraphic.SetHeight">
<short>Sets the value for the Height Property.</short>
<descr>
<p>
<var>SetHeight</var> is an abstract virtual method, and must be implemented 
in a descendent class.
</p>
</descr>
<seealso>
<link id="TGraphic.Height"/>
</seealso>
</element>
<element name="TGraphic.SetHeight.Value">
<short>New value for the property.</short>
</element>

<element name="TGraphic.SetPalette">
<short>Sets the value for the Palette property.</short>
<descr>
<p>
SetPalette is an empty implementation in TGraphic.
</p>
</descr>
<seealso>
<link id="TGraphic.Palette"/>
</seealso>
</element>
<element name="TGraphic.SetPalette.Value">
<short>New value for the property.</short>
</element>

<element name="TGraphic.SetTransparent">
<short>Sets the value for the Transparent property.</short>
<descr>
<p>
<var>SetTransparent</var> is an <b>abstract virtual</b> method, and must be 
implemented in a descendent class.
</p>
</descr>
<seealso>
<link id="TGraphic.Transparent"/>
</seealso>
</element>
<element name="TGraphic.SetTransparent.Value">
<short>New value for the property.</short>
</element>

<element name="TGraphic.SetWidth">
<short>Sets the value for the Width property.</short>
<descr>
<p>
<var>SetWidth</var> is an <b>abstract virtual</b> method, and must be 
implemented in a descendent class.
</p>
</descr>
<seealso>
<link id="TGraphic.Width"/>
</seealso>
</element>
<element name="TGraphic.SetWidth.Value">
<short>New value for the property.</short>
</element>

<element name="TGraphic.SetModified">
<short>Sets the value for the Modified property.</short>
<descr/>
<seealso>
<link id="TGraphic.Modified"/>
</seealso>
</element>
<element name="TGraphic.SetModified.Value">
<short>Value for the property.</short>
</element>

<element name="TGraphic.WriteData">
<short>
Writes the data for the Graphic to a stream.
</short>
<descr>
<p>
Used by the TFiler instance for the class during LCL component streaming.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.WriteData.Stream">
<short>
TStream instance where the data for the class instance is written.
</short>
</element>

<element name="TGraphic.Assign">
<short>
Implements object persistence for the TGraphic type.
</short>
<descr>
<p>
<var>Assign</var> is an overridden method in <var>TGraphic</var>. It ensures 
that the inherited Assign method is not called if the object instance in 
<var>ASource</var> has not been assigned. If ASource contains <b>Nil</b>, the 
Clear method is called. If ASource has an assigned value, the inherited Assign 
method is called to copy property values from ASource into the current class 
instance.
</p>
</descr>
<seealso>
<link id="TGraphic.Clear"/>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TGraphic.Assign.ASource">
<short>Persistent object with property values copied in the method.</short>
</element>

<element name="TGraphic.Clear">
<short>
Clear has an empty implementation in TGraphic.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphic.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
Create is a <b>virtual</b> method in TGraphic; it is recommended that a 
constructor be supplied to <b>override</b> this method in descendent classes.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TGraphic.LazarusResourceTypeValid">
<short>
Determines if the specified resource type is valid for the image format.
</short>
<descr>
<p>
<var>LazarusResourceTypeValid</var> is a Boolean function used to determine 
if the specified resource type is valid for the image format.
</p>
<p>
LazarusResourceTypeValid always returns <b>False</b> in <var>TGraphic</var>. 
The method must be overridden in descendent classes to check for resource 
type(s) supported for a specific image format.
</p>
</descr>
<seealso>
<link id="TCustomBitmap.LazarusResourceTypeValid"/>
<link id="TFPImageBitmap.LazarusResourceTypeValid"/>
<link id="TCustomIcon.LazarusResourceTypeValid"/>
<link id="TIcnsIcon.LazarusResourceTypeValid"/>
<link id="TCursorImage.LazarusResourceTypeValid"/>
</seealso>
</element>
<element name="TGraphic.LazarusResourceTypeValid.Result">
<short>
Returns <b>True</b> when ResourceType is supported in the image format.
</short>
</element>
<element name="TGraphic.LazarusResourceTypeValid.AResourceType">
<short>The resource type examined in the method.</short>
</element>

<element name="TGraphic.LoadFromFile">
<short>Reads data for the graphic from a file.</short>
<descr>
<p>
<var>LoadFromFile</var> reads data for the graphic from the local file system.
<var>FileName</var> contains the name of the file on the local file system 
with data for the graphic, and may contain UTF-8-encoded characters in the 
file name.
</p>
<p>
LoadFromFile creates a temporary <var>TFileStreamUTF8</var> instance that is 
used to read the contents of the file by calling <var>LoadFromStream</var>. 
Any existing image data in the class instance is discarded. An Exception can 
be raised in LoadFromStream if Filename does not contain a valid file name.
</p>
</descr>
<errors>
Raises an Exception if an invalid file name is passed to the method.
</errors>
<seealso>
<link id="TGraphic.LoadFromStream"/>
<link id="TGraphic.LoadFromMimeStream"/>
<link id="TGraphic.LoadFromResourceName"/>
<link id="TGraphic.LoadFromLazarusResource"/>
<link id="TGraphic.LoadFromClipboardFormat"/>
<link id="TGraphic.SaveToFile"/>
</seealso>
</element>
<element name="TGraphic.LoadFromFile.Filename">
<short>The name of the file containing the graphic data.</short>
</element>

<element name="TGraphic.LoadFromStream">
<short>Reads graphic data from a stream.</short>
<descr>
<p>
<var>LoadFromStream</var> is an abstract virtual method used to load graphic 
data from the stream instance specified in <var>Stream</var>. It must be 
implemented in a descendent class to provide support for reading a specific 
image format from the stream.
</p>
<p>
LoadFromStream is used in the implementation of methods like: 
<var>ReadData</var>, <var>LoadFromMimeStream</var>, 
<var>LoadFromResourceID</var>, <var>LoadFromResourceName</var>, 
<var>LoadFromLazarusResource</var>, and <var>LoadFromFile</var>.
</p>
</descr>
<seealso>
<link id="TGraphic.LoadFromFile"/>
<link id="TGraphic.LoadFromLazarusResource"/>
<link id="TGraphic.LoadFromMimeStream"/>
<link id="TGraphic.LoadFromResourceID"/>
<link id="TGraphic.LoadFromResourceName"/>
<link id="TGraphic.ReadData"/>
</seealso>
</element>
<element name="TGraphic.LoadFromStream.Stream">
<short>TStream instance with the graphic data read in the method.</short>
</element>

<element name="TGraphic.LoadFromMimeStream">
<short>Loads the from the specified stream for the given MIME type.</short>
<descr>
<p>
<var>LoadFromMimeStream</var> reads graphic data from a stream for the given 
MIME type. LoadFromMimeStream compares the value in AMimeType to the value in 
the MimeType property. When the values are the same, the LoadFromStream 
method is called the load the image data for the graphic from the stream in 
AStream.
</p>
<p>
In TGraphic, an <var>EInvalidGraphic</var> is raised when AMimeType contains 
any value other than an empty string (<b>''</b>).
</p>
<remark>
Must be overridden in a descendent class to provide support for a MIME type 
representing a specific image format.
</remark>
</descr>
<seealso/>
</element>
<element name="TGraphic.LoadFromMimeStream.AStream">
<short>Stream with the content loaded in the method.</short>
</element>
<element name="TGraphic.LoadFromMimeStream.AMimeType">
<short>MIME type representing the stream content.</short>
</element>

<element name="TGraphic.LoadFromLazarusResource">
<short>Load the graphic data from a Lazarus Resource (.lrs) file.</short>
<descr/>
<seealso/>
</element>
<element name="TGraphic.LoadFromLazarusResource.ResName">
<short>Name of the .lrs file with the content loaded in the method.</short>
</element>

<element name="TGraphic.LoadFromResourceName">
<short>
Loads a resource with the specified name from the given handle.
</short>
<descr>
<p>
<var>LoadFromResourceName</var> is a procedure used to load a resource with 
the name specified in <var>ResName</var> using the handle provided in 
<var>Instance</var>. LoadFromResourceName calls <var>GetResourceType</var> to 
get the <var>Integer</var> resource type used in the class instance. No 
actions are performed in the method when the <var>TResourceType</var> value is 
unassigned (contains <b>Nil</b>).
</p>
<p>
LoadFromResourceName creates a temporary <var>TResourceStream</var> that is 
used to load the content for the class instance by calling the 
<var>LoadFromStream</var> method.
</p>
<p>
Use <var>LoadFromResourceID</var> to load a resource by its Resource ID.
</p>
<p>
Use <var>LoadFromLazarusResource</var> to load a Lazarus resource from a 
<b>.lrs</b> file with a give name.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TGraphic.GetResourceType"/>
<link id="TGraphic.LoadFromStream"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
<link id="#rtl.classes.TResourceStream">TResourceStream</link>
</seealso>
</element>
<element name="TGraphic.LoadFromResourceName.Instance">
<short>Handle where the content for the resource is stored.</short>
</element>
<element name="TGraphic.LoadFromResourceName.ResName">
<short>Name for the resource loaded in the method.</short>
</element>

<element name="TGraphic.LoadFromResourceID">
<short>
Loads graphic data from a resource identified by the integer identifier 
<var>ResID</var>.
</short>
<descr>
<p>
LoadFromResourceID is a procedure used to load a resource with the specified 
Resource ID into the class instance. Instance contains the Handle used to 
read the resource. LoadFromResourceName calls <var>GetResourceType</var> to 
get the <var>Integer</var> resource type used in the class instance. No 
actions are performed in the method when the <var>TResourceType</var> value 
is unassigned (contains <b>Nil</b>).
</p>
<p>
LoadFromResourceName creates a temporary <var>TResourceStream</var> that is 
used to load the content for the class instance by calling the 
<var>LoadFromStream</var> method. The value in ResID is located in the 
resource, and its resource handle is used to get the content stored in the 
stream.
</p>
<p>
An EResNotFound exception is raised during stream initialization if the 
resource type or the resource handle is invalid.
</p>
<p>
Use <var>LoadFromResourceName</var> to load a resource with a given resource 
name.
</p>
<p>
Use <var>LoadFromLazarusResource</var> to load a Lazarus resource from a 
<b>.lrs</b> file with a give name.
</p>
</descr>
<errors>
Raises an EResNotFound exception when the TResourceStream is initialized if 
the resource type or the resource handle is invalid.
</errors>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TGraphic.GetResourceType"/>
<link id="TGraphic.LoadFromStream"/>
<link id="TGraphic.LoadFromResourceName"/>
<link id="TGraphic.LoadFromLazarusResource"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
<link id="#rtl.classes.TResourceStream">TResourceStream</link>
</seealso>
</element>
<element name="TGraphic.LoadFromResourceID.Instance">
<short>Handle where the content for the resource is stored.</short>
</element>
<element name="TGraphic.LoadFromResourceID.ResID">
<short>Pointer to the Integer Resource ID for the resource.</short>
</element>

<element name="TGraphic.LoadFromClipboardFormat">
<short>
<var>LoadFromClipboardFormat</var> - Replace the current image with the 
contents of the clipboard.
</short>
<descr>
<p>
<var>LoadFromClipboardFormat</var> - Replaces the current image with the data 
provided from the clipboard.
</p>
</descr>
<errors>
If the <var>TGraphic</var> does not support that format it will generate an 
exception.
</errors>
<seealso/>
</element>
<element name="TGraphic.LoadFromClipboardFormat.FormatID">
<short/>
</element>

<element name="TGraphic.LoadFromClipboardFormatID">
<short>
Load the data from the clipboard using the format type specified by 
<var>ClipboardType</var> and the format identifier <var>FormatID</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TGraphic.LoadFromClipboardFormatID.ClipboardType">
<short/>
</element>
<element name="TGraphic.LoadFromClipboardFormatID.FormatID">
<short/>
</element>

<element name="TGraphic.SaveToFile">
<short>Writes graphic data to the specified file name.</short>
<descr>
<p>
<var>SaveToFile</var> is a procedure used to write the graphic data in the 
class instance to the specified file name. <var>Filename</var> is the 
fully-qualified file name on the local file system where the data is stored, 
and may contain UTF-8-encoded characters.
</p>
<p>
SaveToFile creates a temporary <var>TFileStreamUTF8</var> instance that is 
used to write graphic data by calling the <var>SaveToStream</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.SaveToFile.Filename">
<short>The name of the file where the graphic data is stored.</short>
</element>

<element name="TGraphic.SaveToStream">
<short>
<var>SaveToStream</var> - write graphic data to a stream.
</short>
<descr>
<p>
<var>SaveToStream</var> is an <b>abstract virtual</b> method in 
<var>TGraphic</var>. It must be implemented in a descendent class to provide 
support for a specific graphic format.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.SaveToStream.Stream">
<short>Stream instance where the graphic data is stored.</short>
</element>

<element name="TGraphic.SaveToClipboardFormat">
<short>
<var>SaveToClipboardFormats</var> - Converts the image to a clipboard format.
</short>
<descr>
<var>SaveToClipboardFormats</var> - Converts the image to a clipboard format.
</descr>
<errors>If the image does not support being translated into a clipboard 
format it will generate an exception
</errors>
<seealso/>
</element>
<element name="TGraphic.SaveToClipboardFormat.FormatID">
<short>Identity of the clipboard format.</short>
</element>

<element name="TGraphic.SaveToClipboardFormatID">
<short>
Saves the data to a clipboard of Type <var>ClipboardType</var> using the 
format <var>FormatID</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TGraphic.SaveToClipboardFormatID.ClipboardType">
<short/>
</element>
<element name="TGraphic.SaveToClipboardFormatID.FormatID">
<short/>
</element>

<element name="TGraphic.GetSupportedSourceMimeTypes">
<short>
Gets a list of supported MIME types for data used in the graphic.
</short>
<descr/>
<seealso/>
</element>
<element name="TGraphic.GetSupportedSourceMimeTypes.List">
<short/>
</element>

<element name="TGraphic.GetResourceType">
<short>Gets the Integer Resource Type for the class instance.</short>
<descr>
<p>
<var>GetResourceType</var> is a <var>TResourceType</var> function used to get 
the resource type identifier for the class instance. It identifies the 
storage format used for graphic data in a resource.
</p>
<p>
GetResourceType is declared as a virtual method, and is normally overridden 
in descendants to return the resource type identifier for a specific image 
format. The return value is <var>RT_RCDATA</var> in <var>TGraphic</var>.
</p>
<p>
GetResourceType is used in the implementation of methods including: 
<var>LoadFromResourceID</var> and <var>LoadFromResourceName</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.GetResourceType.Result">
<short>TResourceType value used in the class instance.</short>
</element>

<element name="TGraphic.GetFileExtensions">
<short>Returns a list of the file extensions available.</short>
<descr>
<p>
<var>GetFileExtensions</var> is a <var>String</var> class function used to 
get a delimited list of file extensions used for graphic files supported in 
the class. The <b>'.'</b> character is omitted from file extension(s), and 
extensions are separated by a <b>SemiColon</b> (<b>;</b>) character. For 
example:
</p>
<code>'jpeg;jpg;jpe;jfif'</code>
<p>
GetFileExtensions is declared as a virtual class method, and is overridden in 
descendants to return the value(s) used for the supported graphic format. In 
TGraphic, the return value is always an empty string (<b>''</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TGraphic.GetFileExtensions.Result">
<short>
File extensions supported for the graphic format used in the class.
</short>
</element>

<element name="TGraphic.IsStreamFormatSupported">
<short>
Indicates whether the specified stream type is supported in the class.
</short>
<descr>
<p>
<var>IsStreamFormatSupported</var> is a <var>Boolean</var> class function 
used to determine if the specified stream contains graphic data in a format 
supported in the class.
</p>
<p>
IsStreamFormatSupported is declared as a virtual method, and is overridden in 
descendants to check whether the values stored in the stream instance can be 
used in the reader and/or writer classes for the graphic format.
</p>
<p>
In general, IsStreamFormatSupported indicates whether the 
<var>LoadFromStream</var> method can be successfully used to load graphic 
data into the class instance using the specified stream.
</p>
</descr>
<seealso>
<link id="TGraphic.ReadData"/>
<link id="TGraphic.WriteData"/>
<link id="TGraphic.LoadFromStream"/>
</seealso>
</element>
<element name="TGraphic.IsStreamFormatSupported.Result">
<short>
<b>True</b> when the stream contains supported graphic data; otherwise, 
<b>False</b>.
</short>
</element>
<element name="TGraphic.IsStreamFormatSupported.Stream">
<short>Stream with content examined in the method.</short>
</element>

<element name="TGraphic.Empty">
<short>Indicates if the graphic is empty (contains no data).</short>
<descr>
<p>
<var>Empty</var> is a read-only <var>Boolean</var> property which indicates 
if the graphic is empty (contains no data). The return value is <b>True</b> 
when no image data exists for the graphic.
</p>
</descr>
<seealso/>
</element>

<element name="TGraphic.Height">
<short>The native, unstretched height for the graphic.</short>
<descr>
<p>
<var>Height</var> is an <var>Integer</var> property which contains the 
native, unstretched height for the graphic stored in the class instance.
</p>
<p>
Use <var>Width</var> to access the native width for the graphic.
</p>
<remark>
Both the read and write access specifiers for the property are declared as 
abstract virtual method in TGraphic. They must be implemented in a descendent 
class to provide support for a specific graphic format.
</remark>
</descr>
<seealso/>
</element>

<element name="TGraphic.Modified">
<short>
Indicates if the graphic data in the class instance has been modified.
</short>
<descr>
<p>
<var>Modified</var> is a <var>Boolean</var> property which indicates if the 
graphic data in the class instance has been modified. Setting the value in 
Modified to <b>True</b> causes the <var>Changed</var> method to be called to 
signal the <var>OnChange</var> event handler (when assigned).
</p>
<p>
Modified is updated when methods in descendent classes call the 
<var>Changed</var> method.
</p>
</descr>
<seealso/>
</element>

<element name="TGraphic.MimeType">
<short>
<var>MimeType</var> - the MIME type of the graphic.
</short>
<descr>
<p>
<var>MimeType</var> is a read-only
<var>String</var> property which contains the MIME type (or IANA Media 
Type/Subtype) used for the graphic data in the class instance. MimeType is 
composed of values representing the general category for the data and a 
specification of the exact content for the type. It conforms to the values 
defined by the IANA (Internet Assigned Numbers Authority).
</p>
<p>
In <var>TGraphics</var>, the MimeType is always an empty string (<b>''</b>). 
In descendent classes, the value indicates that it is in the 'image' category 
and uses a subtype with the common extensions for the graphics format. For 
example:
</p>
<ul>
<li>'image/bmp'</li>
<li>'image/gif'</li>
<li>'image/jpg'</li>
<li>'image/jpeg'</li>
<li>'image/png'</li>
<li>'image/xpm'</li>
</ul>
</descr>
<seealso/>
</element>

<element name="TGraphic.OnChange">
<short>
Event handler signalled when data in the class instance is changed.
</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property with an event 
handler signalled when data in the class instance is changed.
</p>
<p>
OnChange is triggered from the <var>Changed</var> method (when assigned), and 
occurs after values in the class instance have been modified. In 
<var>TGraphic</var>, it indicates that the <var>Modified</var> property has 
been set to <b>True</b>. In descendent classes, which support specific image 
formats and provide a Canvas, it occurs more frequently.
</p>
<p>
Applications must assign an object procedure to respond to the event 
notification. The <var>Sender</var> argument contains the object which 
triggered the event notification.
</p>
</descr>
<seealso/>
</element>

<element name="TGraphic.OnProgress">
<short>
Event handler signalled to track the progress of operations in the class 
instance.
</short>
<descr>
<p>
<var>OnProgress</var> is a <var>TProgressEvent</var> property with the event 
handler signalled to track the progress of operations in the class instance. 
See the <link id="TProgressEvent">TProgressEvent</link> topic for more 
detailed information.
</p>
<p>
Applications must assign an object procedure to the event handler to respond 
to progress notification messages. The <var>Sender</var> argument contains 
the object which triggered the notification.
</p>
</descr>
<seealso>
<link id="TProgressEvent"/>
</seealso>
</element>

<element name="TGraphic.Palette">
<short>Handle to the color palette used in image data.</short>
<descr>
<p>
<var>Palette</var> is a HPALETTE property which contains the handle to the 
color palette used in image data. When Palette is set to 0, the graphic does 
not need or use a palette.
</p>
<remark>
The value for the property is always 0 in the current implementation. Setting 
a new value is not implemented.
</remark>
</descr>
<seealso/>
</element>

<element name="TGraphic.PaletteModified">
<short>Indicates whether the palette of colors been modified.</short>
<descr>
<p>
Currently, it is used in the <file>jvcllaz</file> package in the 
<var>TJvImageControl</var> class.
</p>
</descr>
<seealso/>
</element>

<element name="TGraphic.Transparent">
<short>
Indicates whether some parts of the image are not opaque.
</short>
</element>
<element name="TGraphic.Width">
<short>
<var>Width</var> - The native, unstretched, width of the graphic.
</short>
<descr/>
<seealso/>
</element>

<element name="TGraphicClass">
<short>
<var>TGraphicClass</var> - class of TGraphic.
</short>
<descr/>
<seealso/>
</element>

<element name="TPicture">
<short>Implements a container for TGraphic and descendent classes.</short>
<descr>
<p>
<var>TPicture</var> is a <var>TGraphic</var> container. It is used in place 
of a
<var>TGraphic</var> if the graphic can be of any
<var>TGraphic</var> class.
</p>
<p>
It is not a direct descendant of <var>TGraphic</var>, so you will not see 
<var>TGraphic</var> listed in the <var>Inheritance</var> chart, but it 
contains a property <var>Graphic</var>, of type <var>TGraphic</var>, so can 
contain all the properties of a <var>TGraphic</var>.
</p>
<p>
Defines many <b>private</b> methods for getting and storing various sorts of 
images such as bitmaps, pixmaps, icons, PNGs etc.
</p>
<p>
TPicture does not have a defined area used to display the image. This is 
supplied in the <var>Canvas</var> property in the classes which support 
BitMap, PixMap, PNG, JPEG, GIF, TIFF or Icon image formats.
</p>
<p>
<var>LoadFromFile</var> and <var>SaveToFile</var> are polymorphic. For 
example, if the <var>TPicture</var> is holding an <var>Icon</var>, you can 
<var>LoadFromFile</var> a bitmap file, whereas if the class is 
<var>TIcon</var> you could only read .ICO files.
</p>
<ul>
<li>
<var>LoadFromFile</var> - Reads a picture from disk. The <var>TGraphic</var> 
class created is determined by the file extension of the file. If the file 
extension is not recognized an exception is generated.
</li>
<li>
<var>SaveToFile</var> - Writes the picture to disk.
</li>
<li>
<var>LoadFromClipboardFormat</var> - Reads the picture from the handle 
provided in the given clipboard format. If the format is not supported, an 
exception is generated.
</li>
<li>
<var>SaveToClipboardFormats</var> - Allocates a global handle and writes the 
picture in its native clipboard format (CF_BITMAP for bitmaps, CF_METAFILE 
for metafiles, etc.). Formats will contain the formats written. Returns the 
number of clipboard items written to the array pointed to by Formats and 
Datas or would be written if either Formats or Datas are <b>Nil</b>.
</li>
<li>
<var>SupportsClipboardFormat</var> - Returns <b>True</b> if the given 
clipboard format is supported by <var>LoadFromClipboardFormat</var>.
</li>
<li>
<var>Assign</var> - Copies the contents of the given <var>TPicture</var>. 
Used in the implementation of TPicture properties.
</li>
<li>
<var>RegisterFileFormat</var> - Register a new <var>TGraphic</var> class for 
use in <var>LoadFromFile</var>.
</li>
<li>
<var>RegisterClipboardFormat</var> - Registers a new <var>TGraphic</var> 
class for use in <var>LoadFromClipboardFormat</var>.
</li>
<li>
<var>UnRegisterGraphicClass</var> - Removes all references to the specified 
<var>TGraphic</var> class and all its descendants from the file format and 
clipboard format internal lists. 
</li>
<li>
<var>Height</var> - The native, unstretched, height of the picture.
</li>
<li>
<var>Width</var> - The native, unstretched, width of the picture.
</li>
<li>
<var>Graphic</var> - The <var>TGraphic</var> object contained by the 
<var>TPicture</var>
</li>
<li>
<var>Bitmap</var> - Returns a bitmap. If the contents is not already a 
bitmap, the contents are discarded and a blank bitmap is returned.
</li>
<li>
<var>Pixmap</var> - Returns a pixmap. If the contents is not already a 
pixmap, the contents are discarded and a blank pixmap is returned.
</li>
<li>
<var>PNG</var> - Returns a png. If the contents is not already a png, the 
contents are discarded and a blank png (<var>TPortableNetworkGraphic</var>) 
is returned.
</li>
<li>
<var>PNM</var> - Returns a pnm. If the contents is not already a pnm, the 
contents are discarded and a blank pnm (<var>TPortableAnyMapGraphic</var>) is 
returned.
</li>
<li>
<var>Jpeg</var> - Returns a jpeg. If the contents is not already a jpeg, the 
contents are discarded and a blank jpeg (
<var>TJPegImage</var>) is returned.
</li>
</ul>
</descr>
<seealso/>
</element>

<!-- private -->
<element name="TPicture.FGraphic"/>
<element name="TPicture.FOnChange"/>
<element name="TPicture.FOnProgress"/>

<element name="TPicture.ForceType">
<short>
Ensures that the Graphic property is an instance of the specified class.
</short>
<descr>
<p>
When the <var>Graphic</var> member is not a descendant of 
<var>GraphicType</var>, an new instance of GraphicType is created and used as 
the member variable for the Graphic property. The values in the existing 
Graphic property is assigned to the new class instance, and the old instance 
is freed. The <var>Changed</var> and <var>Process</var> methods are assigned 
to the <var>OnChange</var> and <var>OnProgress</var> event handlers in the 
new TGraphic class instance. The <var>Changed</var> method is called to 
signal the <var>OnChange</var> event handler (when assigned).
</p>
<p>
No actions are performed in the method when the Graphic member is an instance 
of the class in GraphicType.
</p>
<p>
ForceType is used in the read access specifiers for properties using the 
various supported image formats, like: <var>Bitmap</var>, <var>Icon</var>, 
<var>Jpeg</var>, <var>Pixmap</var>, <var>PNG</var>, and <var>PNM</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TPicture.ForceType.GraphicType">
<short>Class type required in the Graphic member.</short>
</element>

<element name="TPicture.GetBitmap">
<short>Gets the value for the Bitmap property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TBitmap</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.Bitmap"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TBitmap"/>
</seealso>
</element>
<element name="TPicture.GetBitmap.Result">
<short>Value for the property.</short>
</element>

<element name="TPicture.GetIcon">
<short>Gets the value for the Icon property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TIcon</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.Icon"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TIcon"/>
</seealso>
</element>
<element name="TPicture.GetIcon.Result">
<short>Value for the property.</short>
</element>

<element name="TPicture.GetJpeg">
<short>Gets the value for the Jpeg property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TJpegImage</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.Jpeg"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TJPegImage"/>
</seealso>
</element>
<element name="TPicture.GetJpeg.Result">
<short/>
</element>

<element name="TPicture.GetPNG">
<short>Gets the value for the PNG property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TPortableNetworkGraphic</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.PNG"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TPortableNetworkGraphic"/>
</seealso>
</element>
<element name="TPicture.GetPNG.Result">
<short>Value for the property.</short>
</element>

<element name="TPicture.GetPNM">
<short>Gets the value for the PNM property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TPortableAnyMapGraphic</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.PNM"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TPortableAnyMapGraphic"/>
</seealso>
</element>
<element name="TPicture.GetPNM.Result">
<short>Value for the property.</short>
</element>

<element name="TPicture.GetPixmap">
<short>Gets the value for the Pixmap property.</short>
<descr>
<p>
Calls <var>ForceType</var> to ensure that <var>Graphic</var> is a 
<var>TPixmap</var> class instance.
</p>
</descr>
<seealso>
<link id="TPicture.Pixmap"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.ForceType"/>
<link id="TPixmap"/>
</seealso>
</element>
<element name="TPicture.GetPixmap.Result">
<short>Value for the property.</short>
</element>

<element name="TPicture.GetHeight">
<short>Gets the Height of the image stored in the Graphic property.</short>
<descr>
<p>
The return value is <b>0</b> (<b>zero</b>) if <var>Graphic</var> has not been 
assigned (contains <b>Nil</b>).
</p>
<p>
Use <var>Width</var> to the width of the image in the Graphic property.
</p>
</descr>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TPicture.Width"/>
</seealso>
</element>
<element name="TPicture.GetHeight.Result">
<short>Height of the image in the Graphic property.</short>
</element>

<element name="TPicture.GetWidth">
<short>Gets the width of the image stored in the Graphic property.</short>
<descr>
<p>
The return value is <b>0</b> (<b>zero</b>) if <var>Graphic</var> has not been 
assigned (contains <b>Nil</b>).
</p>
<p>
Use <var>Height</var> to the height of the image in the Graphic property.
</p>
</descr>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TPicture.Width"/>
</seealso>
</element>
<element name="TPicture.GetWidth.Result">
<short>Width of the image stored in the Graphic property.</short>
</element>

<!-- this is private and not visible in documentation -->
<element name="TPicture.ReadData">
<short>
Reads data for the persistent object during LCL streaming.
</short>
<descr>
<p>
<var>ReadData</var> is used to read a persistent object during LCL streaming. 
<var>Stream</var> is the TStream instance with the data for the persistent 
object.
</p>
<p>
ReadData checks the content in Stream for header information which identifies 
the image format. It creates a new instance of the image class which is used 
to read the raw image content.
</p>
<p>
Content in Stream includes the name for the graphic class needed to read or 
write the image data. For an image created using Delphi, and then used in a 
Lazarus project, this presents a problem. For example: Lazarus uses the 
TPortableNetworkGraphic class to handle .PNG images. Delphi uses the TPngImage 
class. This difference in image headers is handled in the ReadData method by 
substituting the graphic class needed in Lazarus based on the registered 
graphic class names or extensions. Other differences in Stream, like the size 
for image data (omitted by a Delphi-generated image), are also handled in the 
method.
</p>
<p>
The ReadData method in the TGraphic class instance is called to load the 
content for registered graphic classes. LoadFromStream in TGraphic is called 
for images which do not use one of the registered classes known to Lazarus.
</p>
<p>
The TGraphic instance created and loaded in the method is assigned to the 
Graphic property prior to exit. The OnChange and OnProgress event handlers in 
Graphic are set to the Changed and Progress methods in TPicture.
</p>
<p>
The Graphic property is set to <b>Nil</b> if an unsupported image format is 
detected in Stream.
</p>
<p>
The Changed method is called prior to exit to signal an assigned OnChange event 
handler in the class instance.
</p>
</descr>
<version>
Modified in LCL 4.0 to handle image data using unregistered class names and 
with omitted image size information.
</version>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TPicture.Changed"/>
<link id="TPicture.WriteData"/>
<link id="TGraphic"/>
<link id="TGraphic.OnChange"/>
<link id="TGraphic.OnProgress"/>
</seealso>
</element>
<element name="TPicture.ReadData.Stream">
<short>
TStream instance with the data for the persistent object.
</short>
</element>

<element name="TPicture.SetBitmap">
<short>Sets the value for the Bitmap property.</short>
<descr>
<p>
Calls <var>SetGraphic</var> to assign the new property value to the 
<var>Graphic</var> property.
</p>
</descr>
<seealso>
<link id="TPicture.Bitmap"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetBitmap.Value">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetIcon">
<short>Sets the value for the Icon property.</short>
<descr>
<p>
Calls <var>SetGraphic</var> to assign the new property value to the 
<var>Graphic</var> property.
</p>
</descr>
<seealso>
<link id="TPicture.Icon"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetIcon.Value">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetJpeg">
<short>Sets the value for the Jpeg property.</short>
<descr>
<p>Calls <var>SetGraphic</var> to assign the new property value to the 
<var>Graphic</var> property.
</p>
</descr>
<seealso>
<link id="TPicture.Jpeg"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetJpeg.Value">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetPNG">
<short>Sets the value for the PNG property.</short>
<descr>
<p>
Calls <var>SetGraphic</var> to assign the new property value to the 
<var>Graphic</var> property.
</p>
</descr>
<seealso>
<link id="TPicture.PNG"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetPNG.AValue">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetPNM">
<short>Sets the value for the PNM property.</short>
<descr>
<p>
Calls <var>SetGraphic</var> to assign the new property value to the 
<var>Graphic</var> property.
</p>
</descr>
<seealso>
<link id="TPicture.PNM"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetPNM.AValue">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetPixmap">
<short>Sets the value for the Pixmap property.</short>
<descr>
<p>
Calls <var>SetGraphic</var> to assign the new value to the <var>Graphic</var> 
property.
</p>
</descr>
<seealso>
<link id="TPicture.Pixmap"/>
<link id="TPicture.Graphic"/>
<link id="TPicture.SetGraphic"/>
</seealso>
</element>
<element name="TPicture.SetPixmap.Value">
<short>New value for the property.</short>
</element>

<element name="TPicture.SetGraphic">
<short>Sets the value for the Graphic property.</short>
<descr>
<p>
<var>SetGraphic</var> is the write access specifier for the
<var>Graphic</var> property.
</p>
<p>
SetGraphic ensures that the <var>TGraphic</var> instance in the new property 
<var>Value</var> is copied and used as the member variable for the property. 
The class type in Value is used to create a temporary class instance where 
Value is stored. Its <var>OnChange</var> and <var>OnProgress</var> event 
handlers are set to the addresses for the <var>Changed</var> and 
<var>Progress</var> methods (respectively). The existing member variable is 
freed, and the new class instance is used as the member variable. The 
<var>Changed</var> method is called to signal the <var>OnChange</var> event 
handler (when assigned).
</p>
<p>
No actions are performed in the method when Value is unassigned (contains 
Nil), or when Value and Graphic are the same class instance.
</p>
<p>
SetGraphic is called when a new value is assigned to properties representing 
a specific image format, like:
</p>
<ul>
<li>Bitmap</li>
<li>Icon</li>
<li>Jpeg</li>
<li>Pixmap</li>
<li>PNG</li>
<li>PNM</li>
</ul>
</descr>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TPicture.Bitmap"/>
<link id="TPicture.Icon"/>
<link id="TPicture.Jpeg"/>
<link id="TPicture.Pixmap"/>
<link id="TPicture.PNG"/>
<link id="TPicture.PNM"/>
<link id="TPicture.OnChange"/>
<link id="TPicture.OnProgress"/>
<link id="TPicture.Changed"/>
<link id="TPicture.Progress"/>
<link id="TGraphic"/>
</seealso>
</element>
<element name="TPicture.SetGraphic.Value">
<short>New value for the property.</short>
</element>

<element name="TPicture.WriteData">
<short>
Writes data for the persistent object during LCL component streaming.
</short>
<descr>
<p>
<var>WriteData</var> is a method used to write the content in the persistent 
object to the specified stream during LCL streaming. <var>Stream</var> is the 
TStream instance where the content for the picture is stored.
</p>
<p>
WriteData ensures that the name for the class used in the Graphic property is 
written to the stream (when assigned). The WriteData method in Graphic is also 
called to store the image format to Stream.
</p>
<p>
WriteData does not change the position in Stream before the write operation is 
performed, or after it has been competed.
</p>
</descr>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TGraphic.WriteData"/>
<link id="#rtl.classes.TObject.ClassName">TObject.ClassName</link>
</seealso>
</element>
<element name="TPicture.WriteData.Stream">
<short>
TStream instance where the content for the picture is stored.
</short>
</element>

<element name="TPicture.AssignTo">
<short>
<var>AssignTo</var> if <var>Dest</var> is the correct (Graphic) class type, 
calls <var>Assign</var> for <var>Dest</var>, otherwise calls inherited 
<var>AssignTo</var>.
</short>
<descr/>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TPicture.AssignTo.Dest">
<short>
Persistent object where the values from the class instance are stored.
</short>
</element>

<element name="TPicture.Changed">
<short>
Performs actions needed when value(s) in the class instance have been 
modified.
</short>
<descr>
<p>
<var>Changed</var> performs actions needed when value(s) in the class 
instance have been modified. In <var>TPicture</var>, it signals the 
<var>OnChange</var> event handler (when assigned). No actions are performed 
in the method when OnChange has not been assigned (contains <b>Nil</b>).
</p>
</descr>
<seealso>
<link id="TPicture.OnChange"/>
</seealso>
</element>
<element name="TPicture.Changed.Sender">
<short/>
</element>

<element name="TPicture.DefineProperties">
<short>Defines properties handled during LCL component streaming.</short>
<descr>
<p>
<var>DefineProperties</var> is an overridden method in <var>TPicture</var>, 
and re-implements the method defined in <var>TPersistent</var>. 
DefineProperties uses the <var>TFiler</var> instance in <var>Filer</var> to 
identify the binary properties handled during LCL component streaming. The 
<var>ReadData</var> and <var>WriteData</var> methods are assigned as the 
procedures used to read and write the data for the persistent object. An 
internal method is used to determine whether binary data is available in the 
<var>Graphic</var> property.
</p>
</descr>
<seealso/>
</element>
<element name="TPicture.DefineProperties.Filer">
<short>TFiler instance used to read and write the persistent object.</short>
</element>

<element name="TPicture.Progress">
<short>Monitors progress of a drawing process.</short>
<descr>
<p>
Performs actions needed to monitor the progress of operations in the class 
instance.
</p>
<p>
The parameters identify the calling object, the action being performed, the 
completion percentage, whether the picture should be redraw. The DoContine 
variable parameter is updated in the event handler to indicate if the process 
is continued. <b>False</b> indicates an error condition where the process 
should be halted. It is set to <b>True</b> on entry.
</p>
<p>
Progress signals the OnProgress event handler (when assigned) using the 
parameters values as arguments.
</p>
<p>
No actions are performed in the method when OnProgress has not been assigned 
(contains Nil). In this scenario, DoContine returns <b>True</b>.
</p>
<p>
See <link id="TProgressEvent">TProgressEvent</link> for more details on progress monitoring.
</p>
</descr>
<seealso>
<link id="TPicture.OnProgress"/>
<link id="TProgressEvent"/>
</seealso>
</element>
<element name="TPicture.Progress.Sender">
<short>Object for the notification.</short>
</element>
<element name="TPicture.Progress.Stage">
<short/>
</element>
<element name="TPicture.Progress.PercentDone">
<short/>
</element>
<element name="TPicture.Progress.RedrawNow">
<short/>
</element>
<element name="TPicture.Progress.R">
<short/>
</element>
<element name="TPicture.Progress.Msg">
<short/>
</element>
<element name="TPicture.Progress.DoContinue">
<short/>
</element>

<element name="TPicture.LoadFromStreamWithClass">
<short>
Loads values for the Graphic property from a stream using the specified class 
type.
</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.LoadFromStreamWithClass.Stream">
<short/>
</element>
<element name="TPicture.LoadFromStreamWithClass.AClass">
<short/>
</element>

<element name="TPicture.Create">
<short>
<var>Create</var> - constructor for TPicture: performs inherited 
<var>Create</var> then loads file and clipboard formats.
</short>
<descr>
<p>
Create is the overridden constructor for the class instance, and calls the 
inherited constructor on entry.
</p>
<p>
Creates ensures that the list of image formats supported in LCL has been 
initialized with the class types and file extensions as required. The list of 
clipboard formats for the supported image formats is also initialized when 
needed.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TPicture.Destroy">
<short>
<var>Destroy</var> - destructor for <var>TPicture</var>: frees graphic then 
performs inherited <var>Destroy</var>.
</short>
<descr>
<p>
Any destructor method defined here will <b>override</b> destructors defined 
in ancestor classes.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TPicture.Clear">
<short>
<var>Clear</var> - removes the Graphic in the class instance.
</short>
<descr/>
<seealso/>
</element>

<element name="TPicture.LoadFromClipboardFormat">
<short>
<var>LoadFromClipboardFormat</var> - Reads the picture from the handle 
provided in the given clipboard format.
</short>
<descr>
<p>
<var>LoadFromClipboardFormat</var> reads the picture from the handle provided 
in the given clipboard format.
</p>
</descr>
<errors>
If the format is not supported, an exception is generated.
</errors>
</element>
<element name="TPicture.LoadFromClipboardFormat.FormatID">
<short>The identifier for the clipboard format.</short>
</element>

<element name="TPicture.LoadFromClipboardFormatID">
<short>
Reads the picture from a clipboard of type <var>ClipboardType</var> using the 
format <var>FormatID</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.LoadFromClipboardFormatID.ClipboardType">
<short/>
</element>
<element name="TPicture.LoadFromClipboardFormatID.FormatID">
<short/>
</element>

<element name="TPicture.LoadFromFile">
<short>
<var>LoadFromFile</var> - Reads a picture from disk.
</short>
<descr>
<p>
<var>LoadFromFile</var> - Reads a picture from disk. The <var>TGraphic</var> 
class created is determined by the file extension of the file.
</p>
</descr>
<errors>
If the file extension is not recognized, an exception is raised.
</errors>
</element>
<element name="TPicture.LoadFromFile.Filename">
<short>
The name of the file containing the picture, stored as a string.
</short>
</element>

<element name="TPicture.LoadFromResourceName">
<short>
Loads content from the specified resource into the Graphic property.
</short>
<descr>
<p>
<var>LoadFromResourceName</var> is an overloaded method used to created a
<var>TGraphic</var> instance with the content from the specified resource 
name.
<var>Instance</var> is the handle with the resources examined in the method.
<var>ResName</var> is the name of the resource loaded in the method.
</p>
<p>
LoadFromResourceName creates a new TGraphic class instance that is used as 
the member variable for the Graphics property. The 
<var>CreateGraphicFromResourceName</var> routine is called to create the 
graphic and load the named resource from the handle. The <var>Changed</var> 
method is assigned to the <var>OnChange</var> event handler in the class 
instance.
</p>
<p>
An overloaded variant includes an <var>AClass</var> argument with the class 
type for the TGraphic descendant needed for a supported image format. The 
<var>LoadFromResourceName</var> method in the class instance is called to load 
the named resource.
</p>
<p>
The existing TGraphic instance in Graphic is freed and the new TGraphic 
instance is used as the member variable. The Changed method is called to 
signal the OnChange event handler (when assigned).
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TPicture.Changed"/>
<link id="TGraphic.OnChange"/>
<link id="TGraphic.LoadFromResourceName"/>
<link id="CreateGraphicFromResourceName"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TPicture.LoadFromResourceName.Instance">
<short>Handle with the resources examine in the method.</short>
</element>
<element name="TPicture.LoadFromResourceName.ResName">
<short>Name of the resource loaded in the method.</short>
</element>
<element name="TPicture.LoadFromResourceName.AClass">
<short>TGraphic descendant for the image format.</short>
</element>
<element name="TPicture.LoadFromLazarusResource">
<short>Gets the named resource from a Lazarus Resource (.lrs) file.</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.LoadFromLazarusResource.AName">
<short>File name with resource retrieved in the method.</short>
</element>

<!-- TODO. Needs description. -->
<element name="TPicture.LoadFromStream">
<short>
Loads picture data in a supported image format from the specified stream.
</short>
<descr/>
<seealso>
<link id="TGraphicClass"/>
<link id="TPortableNetworkGraphic"/>
<link id="TPixmap"/>
<link id="TBitmap"/>
<link id="TCursorImage"/>
<link id="TIcon"/>
<link id="TIcnsIcon"/>
<link id="TJpegImage"/>
<link id="TTiffImage"/>
<link id="TGIFImage"/>
<link id="TPortableAnyMapGraphic"/>
</seealso>
</element>
<element name="TPicture.LoadFromStream.Stream">
<short>
Stream instance with the graphics format and data loaded in the method.
</short>
</element>

<element name="TPicture.LoadFromStreamWithFileExt">
<short>
Loads the picture from a stream containing data for the specified file 
extension.
</short>
</element>
<element name="TPicture.LoadFromStreamWithFileExt.Stream">
<short/>
</element>
<element name="TPicture.LoadFromStreamWithFileExt.FileExt">
<short/>
</element>

<element name="TPicture.SaveToClipboardFormat">
<short>
<var>SaveToClipboardFormats</var> - Allocates a global handle and writes the 
picture in its native clipboard format.
</short>
<descr>
<p>
<var>SaveToClipboardFormats</var> - Allocates a global handle and writes the 
picture in its native clipboard format (<var>CF_BITMAP</var> for bitmaps, 
<var>CF_METAFILE</var> for metafiles, etc.). Formats will contain the formats 
written. Returns the number of clipboard items written to the array pointed 
to by Formats and Datas or would be written if either Formats or Datas are 
<b>Nil</b>.
</p>
</descr>
</element>
<element name="TPicture.SaveToClipboardFormat.FormatID">
<short>Identity of the clipboard format.</short>
</element>

<element name="TPicture.SaveToFile">
<short>
<var>SaveToFile</var> - Writes the picture to disk.
</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.SaveToFile.Filename">
<short>The name of the file to save the picture, stored as a string.</short>
</element>

<element name="TPicture.SaveToStream">
<short>Saves the graphic to the specified stream.</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.SaveToStream.Stream">
<short>TStream instance where the graphic is stored.</short>
</element>

<element name="TPicture.SaveToStreamWithFileExt">
<short>
Saves graphic image data to a stream using the specified format and file 
extension.
</short>
<descr>
<p>
<var>SaveToStreamWithFileExt</var> is a method used to store image data found 
in the Graphic property to the TStream instance specified in 
<var>Stream</var>. It ensures that supported TGraphicClass class types in 
Graphic are handled properly when accessing and storing the image data.
</p>
<p>
No actions are performed in the method if the Graphic property has not been 
assigned (contains <b>Nil</b>).
</p>
<p>
<var>FileExt</var> is the file extension for the graphics class used to write 
the image data to the specified stream. It can differ from the format used in 
Graphics, and can contain any of the graphics classes supported in the LCL 
implementation. It must include the '.' separator for the file extension. For 
example: '.jpg', '.png', or '.ico'.
</p>
<p>
The FindGraphicClassWithFileExt method is used to get a graphic class when a 
file extension has been provided in FileExt. An EInvalidGraphic exception is 
raised if FileExt contains an invalid graphics format for the current platform.
</p>
<p>
When FileExt is omitted, or contains the same extension used in Graphic, the 
SaveToStream method in the TGraphic instance is called to store the image 
data. No conversion is needed for the values written to Stream.
</p>
<p>
SaveToStreamWithFileExt provides support for conversion of image data for 
TFPImageBitmap descendants using their GetWriterClass methods. The raw image 
data is accessed and stored to Stream using the SaveToStream method found in 
the writer class.
</p>
<p>
If Graphic is derived from TCustomIcon, support is provided for converting the 
current icon image in Graphic to the specified file extension. The 
TCustomIcon.ExportImage method is used to write the icon image data.
</p>
<p>
An Exception is raised if Graphic does not support conversion to the file 
extension specified in the FileExt argument.
</p>
</descr>
<version>
Modified in LCL version 4.2 to save individual images in TCustomIcon to 
another raster image format. 
</version>
<seealso>
<link id="TPicture.Graphic"/>
<link id="TPicture.FindGraphicClassWithFileExt"/>
<link id="TCustomIcon"/>
<link id="TCustomIcon.ExportImage"/>
<link id="TCustomIcon.Current"/>
<link id="TFPImageBitmap"/>
<link id="TGraphicClass"/>
</seealso>
</element>
<element name="TPicture.SaveToStreamWithFileExt.Stream">
<short>
Stream instance where the image data for the picture is stored.	
</short>
</element>
<element name="TPicture.SaveToStreamWithFileExt.FileExt">
<short>
File extension for the format used to write image data to the specified stream.
</short>
</element>

<element name="TPicture.SupportsClipboardFormat">
<short>
<var>SupportsClipboardFormat</var> - Returns <b>True</b> if the given 
clipboard format is supported by <var>LoadFromClipboardFormat</var>.
</short>
</element>
<element name="TPicture.SupportsClipboardFormat.Result">
<short>Boolean - returns <b>True</b> if format supported.</short>
</element>
<element name="TPicture.SupportsClipboardFormat.FormatID">
<short>Identity of the clipboard format.</short>
</element>

<element name="TPicture.Assign">
<short>
<var>Assign</var> - if the Source is a valid graphic type, copy the relevant 
details to the current object, otherwise call inherited <var>Assign</var>.
</short>
<descr>
<p>
<var>Assign</var> copies the contents of the given <var>TPicture</var>. Used 
most often in the implementation of TPicture properties.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TPicture.Assign.Source">
<short/>
</element>

<element name="TPicture.RegisterFileFormat">
<short>
Registers a new <var>TGraphic</var> class for use in <var>LoadFromFile</var>.
</short>
</element>
<element name="TPicture.RegisterFileFormat.AnExtension">
<short/>
</element>
<element name="TPicture.RegisterFileFormat.ADescription">
<short/>
</element>
<element name="TPicture.RegisterFileFormat.AGraphicClass">
<short/>
</element>

<element name="TPicture.RegisterClipboardFormat">
<short>
Registers a new <var>TGraphic</var> class for use in 
<var>LoadFromClipboardFormat</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TPicture.RegisterClipboardFormat.FormatID">
<short/>
</element>
<element name="TPicture.RegisterClipboardFormat.AGraphicClass">
<short/>
</element>

<element name="TPicture.UnregisterGraphicClass">
<short>
Removes all references to the specified <var>TGraphic</var>.
</short>
<descr>
<p>
<var>UnRegisterGraphicClass</var> - Removes all references to the specified 
<var>TGraphic</var> class and all its descendants from the file format and 
clipboard format internal lists.
</p>
</descr>
</element>
<element name="TPicture.UnregisterGraphicClass.AClass">
<short/>
</element>

<element name="TPicture.FindGraphicClassWithFileExt">
<short>
Finds a graphic class with the named file extension <var>Ext</var>, and 
raises an exception if not found.
</short>
</element>
<element name="TPicture.Bitmap">
<short>
<var>Bitmap</var> - Returns a bitmap.
</short>
<descr>
<p>
<var>Bitmap</var> - Returns a bitmap. If the contents is not already a 
bitmap, the contents are discarded and a blank bitmap is returned.
</p>
</descr>
<seealso/>
</element>

<element name="TPicture.Icon">
<short>
<var>Icon</var> contained within the picture.
</short>
<descr/>
<seealso/>
</element>

<element name="TPicture.Jpeg">
<short>
<var>Jpeg</var> - returns a JPEG image.</short>
<descr>
<p>
<var>Jpeg</var> - returns a JPEG image.
</p>
<p>
If the contents is not already a JPEG image, the contents are discarded and a 
blank JPEG is returned.
</p>
</descr>
</element>

<element name="TPicture.Pixmap">
<short>
<var>Pixmap</var> - Returns a pixmap.
</short>
<descr>
<p>
<var>Pixmap</var> - Returns a pixmap. If the contents is not already a 
pixmap, the contents are discarded and a blank pixmap is returned.
</p>
</descr>
</element>

<element name="TPicture.PNG">
<short>
<var>PNG</var> - Returns a png.
</short>
<descr>
<p>
<var>PNG</var> - Returns a png. If the contents is not already a png, the 
contents are discarded and a blank png (<var>TPortableNetworkGraphic</var>) 
is returned.
</p>
</descr>
</element>

<element name="TPicture.PNM">
<short>
<var>PNM</var> - a <b>PortableAnyMapGraphic</b> image.
</short>
<descr>
<p>
<var>PNM</var> - a <b>PortableAnyMapGraphic</b> image.
</p>
<p>
Reads a PNM image. If it is not a valid PNM image, the contents are discarded 
and a blank PNM is generated.
</p>
</descr>
</element>

<element name="TPicture.Graphic">
<short>
<var>Graphic</var> - The <var>TGraphic</var> object contained by the 
<var>TPicture</var>.
</short>
</element>

<element name="TPicture.Height">
<short>
<var>Height</var> - The native, unstretched, height of the picture.
</short>
</element>

<element name="TPicture.Width">
<short>
<var>Width</var> - The native, unstretched, width of the picture.
</short>
</element>

<element name="TPicture.OnChange">
<short>
<var>OnChange</var> - Event handler for any change in the picture.
</short>
<descr/>
<seealso/>
</element>

<element name="TPicture.OnProgress">
<short>
Event handler signalled to track the progress of operations in the class 
instance.
</short>
<descr>
<p>
<var>OnProgress</var> is a <var>TProgressEvent</var> property with the event 
handler signalled to track the progress of operations in the class instance. 
See the <link id="TProgressEvent">TProgressEvent</link> topic for more 
detailed information.
</p>
<p>
Applications must assign an object procedure to the event handler to respond 
to progress notification messages. The <var>Sender</var> argument contains 
the object which triggered the notification.
</p>
</descr>

<seealso>
<link id="TProgressEvent"/>
</seealso>
</element>

<element name="EGraphicException">
<short>Base exception type for an error in a graphic operation.
</short>
<descr>
<p>
<var>EGraphicException</var> is an <var>Exception</var> descendant which 
implements the base class for exceptions raised during graphic operations. It 
provides a means to handle any of the descendent exceptions, like 
<var>EInvalidGraphic</var> or <var>EInvalidGraphicOperation</var>.
</p>
</descr>
<seealso/>
</element>

<element name="EInvalidGraphic">
<short>
<var>EInvalidGraphic</var> - exception handler for an invalid graphic.
</short>
<descr/>
<seealso/>
</element>

<element name="EInvalidGraphicOperation">
<short>
<var>EInvalidGraphicOperation</var> - exception handler for invalid graphic 
operation.
</short>
<descr/>
<seealso/>
</element>

<element name="TGradientDirection">
<short>
Represents the fill directions used for gradient fills.
</short>
<descr>
<p>
<var>TGradientDirection</var> is an enumerated type with values that control 
the fill direction used for a gradient color fill. It is an alias to the 
TFPGradientDirection type defined in the FCL (<file>fpcanvas.pp</file>) for 
compiler versions starting with 3.3.1. Separate constant aliases are defined 
for the gdVertical and gdHorizontal values for these compiler versions.
</p>
<p>
Previous FPC versions define the enumeration values in this unit.
</p>
<p>
TGradientDirection is the type used for the argument passed to the 
<var>TCanvas.GradientFill</var> method which controls the fill direction or 
orientation for the colors used to fill a rectangular region on the canvas.
</p>
</descr>
<version>
Modified in LCL version 4.2 to be an alias to the TFPGradientDirection type 
defined in the FCL for FPC compiler versions 3.3.1 and higher.
</version>
<seealso>
<link id="TCanvas.GradientFill"/>
<!--
not currently documented in FCL
<link id="#fcl.fpcanvas.TFPGradientDirection"/>
<link id="#fcl.fpcanvas.gdVertical"/>
<link id="#fcl.fpcanvas.gdHorizontal"/>
-->
</seealso>
</element>
<element name="TGradientDirection.gdVertical">
<short>
Gradient fill direction is vertically oriented.
</short>
</element>
<element name="TGradientDirection.gdHorizontal">
<short>
Gradient fill direction is horizontally oriented.
</short>
</element>

<element name="gdVertical">
<short>
Alias to the gdVertical constant defined in FCL.
</short>
<descr>
<p>
Defined for FPC compiler version 3.3.1 and higher.
</p>
</descr>
<seealso>
<link id="gdHorizontal"/>
<link id="TGradientDirection"/>
<link id="TCanvas.GradientFill"/>
</seealso>
</element>

<element name="gdHorizontal">
<short>
Alias to the gdHorizontal constant defined in FCL.
</short>
<descr>
<p>
Defined for FPC compiler version 3.3.1 and higher.
</p>
</descr>
<seealso>
<link id="gdVertical"/>
<link id="TGradientDirection"/>
<link id="TCanvas.GradientFill"/>
</seealso>
</element>

<element name="TAntialiasingMode">
<short>Represents anti-aliasing modes used in TCanvas.</short>
<descr/>
<seealso/>
</element>
<element name="TAntialiasingMode.amDontCare">
<short>Default anti-aliasing.</short>
</element>
<element name="TAntialiasingMode.amOn">
<short>Enabled.</short>
</element>
<element name="TAntialiasingMode.amOff">
<short>Disabled.</short>
</element>

<element name="TLCLTextMetric">
<short>Represents text metrics used in the LCL.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLTextMetric.Ascender">
<short>The portion of a font face above the mean line.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLTextMetric.Descender">
<short>The portion of a font face below the baseline for a font face.</short>
<descr/>
<seealso/>
</element>
<element name="TLCLTextMetric.Height">
<short>
Distance between the baseline and the mean line for a font face.
</short>
<descr/>
<seealso/>
</element>

<element name="TDefaultColorType">
<short>
Indicates whether a default color applies to a font or a brush.
</short>
<descr>
<p>
Values from TDefaultColorType are passed as an argument to the 
GetdefaultColor method in TCanvas. It allows the color clDefault to be 
resolved to the correct color value in the class instance.
</p>
</descr>
<seealso>
<link id="TCanvas.GetDefaultColor"/>
</seealso>
</element>
<element name="TDefaultColorType.dctBrush">
<short>
Default color refers to the Brush color.
</short>
</element>
<element name="TDefaultColorType.dctFont">
<short>
Default color refers to the Font color.
</short>
</element>

<element name="TCanvas">
<short>
Implements a drawing surface for a visual control or bitmap image.
</short>
<descr>
<p>
<var>TCanvas</var> is a descendant of the <var>TFPCustomCanvas</var> class in 
the FCL (Free Pascal Component Library). TCanvas implements a drawing surface 
which can be used to display a visual control or render output to a bitmap. 
TCanvas provides drawing tools like Brush, Pen, and Font needed to draw on 
the surface. Events are provided to respond to change notifications and 
progress events. Methods are provided to implement common drawing operations, 
such as:
</p>
<ul>
<li>Pen, Brush, and Color selection</li>
<li>Drawing lines or shapes</li>
<li>Filling shapes with colors or patterns</li>
<li>Rendering text to the drawing surface</li>
<li>Rendering image content to the drawing surface</li>
<li>Direct manipulation of pixels on the drawing surface</li>
</ul>
<p>
A TCanvas instance (or a specialized descendant) is used in visual controls 
which are responsible for rendering their own content. It is also used in 
non-visual components like TPrinter, and in class that provide support for 
drawing operations using bitmap data.
</p>
</descr>
<seealso>
<link id="TSharedRasterImage"/>
<link id="#lcl.controls.TGraphicControl.Canvas">TGraphicControl.Canvas</link>
<link id="#lcl.controls.TCustomControl.Canvas">TCustomControl.Canvas</link>
<link id="#lcl.controls.TControlCanvas">TControlCanvas</link>
</seealso>
</element>

<!-- private -->
<element name="TCanvas.FAntialiasingMode"/>
<element name="TCanvas.FAutoRedraw"/>
<element name="TCanvas.FState"/>
<element name="TCanvas.FSavedFontHandle"/>
<element name="TCanvas.FSavedPenHandle"/>
<element name="TCanvas.FSavedBrushHandle"/>
<element name="TCanvas.FSavedRegionHandle"/>
<element name="TCanvas.FCopyMode"/>
<element name="TCanvas.FHandle"/>
<element name="TCanvas.FOnChange"/>
<element name="TCanvas.FOnChanging"/>
<element name="TCanvas.FTextStyle"/>
<element name="TCanvas.FLock"/>
<element name="TCanvas.FRegion"/>
<element name="TCanvas.FLazPen"/>
<element name="TCanvas.FLazFont"/>
<element name="TCanvas.FLazBrush"/>
<element name="TCanvas.FSavedHandleStates"/>

<element name="TCanvas.BrushChanged">
<short>
Performs actions needed when the Brush for the canvas is changed.
</short>
<descr>
<p>
<var>BrushChanged</var> is a procedure used to perform actions needed when the
<var>Brush</var> for the canvas is changed. BrushChanged ensures that state 
flags for the class instance are updated to remove the value
<var>csBrushValid</var> (when present).
</p>
<p>
<var>ABrush</var> contains the Brush instance which generated the change 
notification.
</p>
<p>
BrushChanged is assigned as the <var>OnChange</var> event handler in the 
<var>TBrush</var> instance used in the Brush property.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TBrush.OnChange"/>
<link id="TCanvasState"/>
</seealso>
</element>
<element name="TCanvas.BrushChanged.ABrush">
<short>Brush instance generating the change notification.</short>
</element>

<element name="TCanvas.FontChanged">
<short>
Performs actions needed when the Font for the canvas is changed.
</short>
<descr>
<p>
<var>FontChanged</var> is a procedure used to performs actions needed when 
the <var>Font</var> for the canvas is changed. FontChanged ensures that state 
flags for the canvas are updated to remove the value <var>csFontValid</var> 
(when present).
</p>
<p>
<var>AFont</var> is the font instance which generated the change notification.
</p>
<p>
FontChanged is assigned as the <var>OnChange</var> event handler in the 
<var>TFont</var> instance used in the Font property.
</p>
</descr>
<seealso>
<link id="TCanvas.Font"/>
<link id="TFont.OnChange"/>
<link id="TCanvasState"/>
</seealso>
</element>
<element name="TCanvas.FontChanged.AFont">
<short>Font instance generating the change notification.</short>
</element>

<element name="TCanvas.PenChanged">
<short>Performs actions needed when the Pen for the canvas is changed.</short>
<descr>
<p>
<var>PenChanged</var> is a procedure used to performs actions needed when the
<var>Pen</var> for the canvas is changed. PenChanged ensures that state flags 
for the canvas are updated to remove the value
<var>csPenValid</var> (when present).
</p>
<p>
<var>APen</var> is the pen instance which generated the change notification.
</p>
<p>
PenChanged is assigned as the <var>OnChange</var> event handler in the 
<var>TPen</var> instance used in the Pen property.
</p>
</descr>
<seealso>
<link id="TCanvas.Pen"/>
<link id="TPen.OnChange"/>
<link id="TCanvasState"/>
</seealso>
</element>
<element name="TCanvas.PenChanged.APen">
<short>Pen instance generating the change notification.</short>
</element>

<element name="TCanvas.RegionChanged">
<short>
Performs actions needed when the Region for the canvas is changed.
</short>
<descr>
<p>
RegionChanged is a procedure used to perform actions needed when the Region 
for the canvas is changed. RegionChanged ensures that state flags for the 
canvas are updated to remove the value <var>csRegionValid</var> (when 
present).
</p>
<p>
<var>ARegion</var> is the region instance which generated the change 
notification.
</p>
<p>
RegionChanged is assigned as the <var>OnChange</var> event handler in the 
<var>TRegion</var> instance used in the Region property.
</p>
</descr>
<seealso>
<link id="TCanvas.Region"/>
<link id="TRegion.OnChange"/>
<link id="TCanvasState"/>
</seealso>
</element>
<element name="TCanvas.RegionChanged.ARegion">
<short>Region instance generating the change notification.</short>
</element>

<element name="TCanvas.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TCanvas.Handle"/>
</seealso>
</element>
<element name="TCanvas.GetHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TCanvas.SetAntialiasingMode">
<short>Sets the value for the AntialiasingMode property.</short>
<descr/>
<seealso>
<link id="TCanvas.AntialiasingMode"/>
</seealso>
</element>
<element name="TCanvas.SetAntialiasingMode.AValue">
<short>Value for the property.</short>
</element>

<element name="TCanvas.SetAutoRedraw">
<short>Sets the value for the AutoRedraw property.</short>
<descr/>
<seealso>
<link id="TCanvas.AutoRedraw"/>
</seealso>
</element>
<element name="TCanvas.SetAutoRedraw.Value">
<short>Value for the property.</short>
</element>

<element name="TCanvas.SetLazFont">
<short>Sets the value for the Font property.</short>
<descr/>
<seealso>
<link id="TCanvas.Font"/>
</seealso>
</element>
<element name="TCanvas.SetLazFont.Value">
<short>New value for the property.</short>
</element>

<element name="TCanvas.SetLazPen">
<short>Sets the value for the Pen property.</short>
<descr/>
<seealso>
<link id="TCanvas.Pen"/>
</seealso>
</element>
<element name="TCanvas.SetLazPen.Value">
<short>New value for the property.</short>
</element>

<element name="TCanvas.SetLazBrush">
<short>Sets the value for the Brush property.</short>
<descr/>
<seealso>
<link id="TCanvas.Brush"/>
</seealso>
</element>
<element name="TCanvas.SetLazBrush.value">
<short>New value for the property.</short>
</element>

<element name="TCanvas.SetRegion">
<short>Sets the value for the Region property.</short>
<descr/>
<seealso>
<link id="TCanvas.Region"/>
</seealso>
</element>
<element name="TCanvas.SetRegion.Value">
<short>New value for the property.</short>
</element>

<element name="TCanvas.DoCreateDefaultFont">
<short>
Creates the TFont instance used as the default font for the canvas.
</short>
<descr>
<p>
<var>DoCreateDefaultFont</var> is an overridden method in <var>TCanvas</var> 
used to create the <var>TFont</var> instance used as the default font for the 
canvas. The return value contains the TFont instance created in the method.
</p>
<p>
DoCreateDefaultFont implements the abstract method defined in the 
<var>TFPCustomCanvas</var> ancestor. It is called from the inherited 
<var>CreateDefaultFont</var> method, and ensures that a font resource has 
been allocated for the <var>Font</var> property.
</p>
</descr>
<seealso>
<link id="TCanvas.Font"/>
<link id="TFont"/>
</seealso>
</element>
<element name="TCanvas.DoCreateDefaultFont.Result">
<short>TFont instance created in the method.</short>
</element>

<element name="TCanvas.DoCreateDefaultPen">
<short>
<var>DoCreateDefaultPen</var> - calls
<var>TPen.Create</var> to create a default pen.
</short>
<descr/>
<seealso>
<link id="TPen.Create"/>
</seealso>
</element>
<element name="TCanvas.DoCreateDefaultPen.Result">
<short/>
</element>

<element name="TCanvas.DoCreateDefaultBrush">
<short>
<var>DoCreateDefaultBrush</var> - calls
<var>TBrush.Create</var> to create a default brush.
</short>
<descr/>
<seealso>
<link id="TBrush.Create"/>
</seealso>
</element>
<element name="TCanvas.DoCreateDefaultBrush.Result">
<short/>
</element>

<element name="TCanvas.SetColor">
<short>Sets the value for the indexed Colors property.</short>
<descr>
<p>
<var>SetColor</var> is a method used to set the value for the indexed 
<var>Colors</var> property. SetColor implements the abstract virtual method 
defined in the <var>TFPCustomCanvas</var> ancestor. Equivalent to setting the 
color value using the <var>Pixels</var> property.
</p>
</descr>
<seealso>
<link id="TCanvas.Pixels"/>
</seealso>
</element>
<element name="TCanvas.SetColor.x">
<short>Horizontal coordinate for the pixel.</short>
</element>
<element name="TCanvas.SetColor.y">
<short>Vertical coordinate for the pixel.</short>
</element>
<element name="TCanvas.SetColor.Value">
<short>Color for the specified pixel.</short>
</element>

<element name="TCanvas.GetColor">
<short>Gets the Color for the pixel at the given coordinates as a TFPColor 
value.
</short>
<descr>
<p>
Uses the indexed <var>Pixels</var> property to retrieve the color information 
for the pixel at the coordinates in x and y. Calls <var>TColorToFPColor</var> 
to convert the TColor value to the TFPColor type used in the return value.
</p>
</descr>
<seealso>
<link id="TCanvas.Pixels"/>
<link id="TColorToFPColor"/>
</seealso>
</element>
<element name="TCanvas.GetColor.Result">
<short>TFPColor value for the pixel at the specified position.</short>
</element>
<element name="TCanvas.GetColor.x">
<short>Horizontal position for the pixel.</short>
</element>
<element name="TCanvas.GetColor.y">
<short>Vertical position for the pixel.</short>
</element>

<element name="TCanvas.SetHeight">
<short>
<var>SetHeight</var> should never be called for Canvas: raises an exception 
if it is called.
</short>
<descr/>
<errors>
If called, raises an exception: 'TCanvas.SetHeight not allowed for LCL canvas.
</errors>
<seealso/>
</element>
<element name="TCanvas.SetHeight.AValue">
<short/>
</element>

<element name="TCanvas.GetHeight">
<short>
<var>GetHeight</var> - if a handle has been allocated, returns the height 
from the device size.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.GetHeight.Result">
<short/>
</element>

<element name="TCanvas.SetWidth">
<short>
<var>SetWidth</var> - should never be called; raises an exception if it is 
called.
</short>
<descr/>
<errors>
Raises an exception: 'TCanvas.SetWidth not allowed for LCL canvas'
</errors>
<seealso/>
</element>
<element name="TCanvas.SetWidth.AValue">
<short/>
</element>

<element name="TCanvas.GetWidth">
<short>Gets the value for the Width property.</short>
<descr>
<p>
If a valid <var>Handle</var> for the canvas instance has not been allocated, 
the value for the property is <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.GetWidth.Result">
<short>Value for the property.</short>
</element>

<element name="TCanvas.SetPenPos">
<short>Moves the pen to the specified position.</short>
<descr>
<p>
Re-implements the method defined in the <var>TFPCustomCanvas</var> ancestor. 
Calls <var>MoveTo</var> using the <var>X</var> and <var>Y</var> coordinates 
specified in <var>Value</var>. Does <b>not</b> call the inherited method.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.SetPenPos.Value">
<short>TPoint instance with the canvas coordinates for the pen.</short>
</element>

<element name="TCanvas.DoLockCanvas">
<short>
Enters the critical section used to lock the canvas, and calls the inherited 
method.
</short>
<descr/>
<seealso/>
</element>

<element name="TCanvas.DoUnlockCanvas">
<short>
Leaves the critical section used to lock the canvas, and calls the inherited 
method.
</short>
<descr/>
<seealso/>
</element>

<element name="TCanvas.DoTextOut">
<short>
<var>DoTextOut</var> calls <var>TextOut</var> for the specified coordinates 
and string.
</short>
<descr/>
<seealso>
<link id="TCanvas.TextOut"/>
</seealso>
</element>
<element name="TCanvas.DoTextOut.x">
<short/>
</element>
<element name="TCanvas.DoTextOut.y">
<short/>
</element>
<element name="TCanvas.DoTextOut.Text">
<short/>
</element>

<element name="TCanvas.DoGetTextSize">
<short>
Calls TextExtent to find the width and height of the specified text.
</short>
<descr/>
<seealso>
<link id="TCanvas.TextExtent"/>
</seealso>
</element>
<element name="TCanvas.DoGetTextSize.Text">
<short/>
</element>
<element name="TCanvas.DoGetTextSize.w">
<short/>
</element>
<element name="TCanvas.DoGetTextSize.h">
<short/>
</element>

<element name="TCanvas.DoGetTextHeight">
<short>
<var>DoGetTextHeight</var> calls <var>TextHeight</var> to return the height 
of the text.
</short>
<descr/>
<seealso>
<link id="TCanvas.TextHeight"/>
</seealso>
</element>
<element name="TCanvas.DoGetTextHeight.Result">
<short/>
</element>
<element name="TCanvas.DoGetTextHeight.Text">
<short/>
</element>

<element name="TCanvas.DoGetTextWidth">
<short>
<var>DoGetTextWidth</var> calls <var>TextWidth</var> to return the width of 
the given text string.
</short>
<descr/>
<seealso>
<link id="TCanvas.TextWidth"/>
</seealso>
</element>
<element name="TCanvas.DoGetTextWidth.Result">
<short/>
</element>
<element name="TCanvas.DoGetTextWidth.Text">
<short/>
</element>

<element name="TCanvas.DoRectangle">
<short>
<var>DoRectangle</var> calls <var>Frame</var> to draw a rectangle in the 
given bounds.
</short>
<descr/>
<seealso>
<link id="TCanvas.Frame"/>
</seealso>
</element>
<element name="TCanvas.DoRectangle.Bounds">
<short/>
</element>

<element name="TCanvas.DoRectangleFill">
<short>
<var>DoRectangleFill</var> calls
<var>FillRect</var> to draw a filled rectangle with the given bounds.
</short>
<descr/>
<seealso>
<link id="TCanvas.FillRect"/>
</seealso>
</element>
<element name="TCanvas.DoRectangleFill.Bounds">
<short/>
</element>

<element name="TCanvas.DoRectangleAndFill">
<short>
<var>DoRectangleAndFill</var> - calls <var>Rectangle</var> to draw a 
rectangle and fill it.
</short>
<descr/>
<seealso>
<link id="TCanvas.Rectangle"/>
</seealso>
</element>
<element name="TCanvas.DoRectangleAndFill.Bounds">
<short/>
</element>

<element name="TCanvas.DoEllipse">
<short>Draws an Arc of 360 degrees within the specified Bounds.
</short>
<descr>
<p>
<var>DoEllipse</var> draws an <var>Arc</var> of 360 degrees within given 
<var>Bounds</var>, making an ellipse.
</p>
</descr>
<seealso>
<link id="TCanvas.Arc"/>
</seealso>
</element>
<element name="TCanvas.DoEllipse.Bounds">
<short/>
</element>

<element name="TCanvas.DoEllipseFill">
<short>
<var>DoEllipseFill</var> calls <var>Ellipse</var>.
</short>
<descr/>
<seealso>
<link id="TCanvas.Ellipse"/>
</seealso>
</element>
<element name="TCanvas.DoEllipseFill.Bounds">
<short/>
</element>

<element name="TCanvas.DoEllipseAndFill">
<short>
<var>DoEllipseAndFill</var> calls the inherited <var>DoEllipseAndFill</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoEllipseAndFill.Bounds">
<short/>
</element>

<element name="TCanvas.DoPolygon">
<short>
<var>DoPolygon</var> calls <var>PolyLine</var> to draw a series of lines 
through the points.
</short>
<descr/>
<seealso>
<link id="TCanvas.PolyLine"/>
</seealso>
</element>
<element name="TCanvas.DoPolygon.Points">
<short/>
</element>

<element name="TCanvas.DoPolygonFill">
<short>
<var>DoPolygonFill</var> calls <var>Polygon</var> for the supplied points.
</short>
<descr/>
<seealso>
<link id="TCanvas.Polygon"/>
</seealso>
</element>
<element name="TCanvas.DoPolygonFill.Points">
<short/>
</element>
<element name="TCanvas.DoPolygonAndFill">
<short>
<var>DoPolygonAndFill</var> calls inherited method.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoPolygonAndFill.Points">
<short/>
</element>

<element name="TCanvas.DoPolyline">
<short>
<var>DoPolyline</var> calls <var>PolyLine</var>.
</short>
<descr/>
<seealso>
<link id="TCanvas.PolyLine">TCanvas.PolyLine</link>
</seealso>
</element>
<element name="TCanvas.DoPolyline.Points">
<short/>
</element>

<element name="TCanvas.DoPolyBezier">
<short>
Performs actions needed to draw a Bézier curve using the specified control 
points.
</short>
<descr>
<p>
Calls the <var>PolyBezier</var> method using the values in <var>Points</var>, 
<var>NumPts</var>, <var>Filled</var>, and <var>Continuous</var> as arguments.
</p>
</descr>
<seealso>
<link id="TCanvas.PolyBezier"/>
</seealso>
</element>
<element name="TCanvas.DoPolyBezier.Points">
<short>Pointer to the control points for the Bézier curve.</short>
</element>
<element name="TCanvas.DoPolyBezier.NumPts">
<short>Number of control points in the Pointer.</short>
</element>
<element name="TCanvas.DoPolyBezier.Filled">
<short>
<b>True</b> if interior of the Bézier curve is filled; default is 
<b>False</b>.
</short>
</element>
<element name="TCanvas.DoPolyBezier.Continuous">
<short>
<b>True</b> if the Bézier end-points are continuous (without kinks); default 
is <b>False</b>.
</short>
</element>

<element name="TCanvas.DoFloodFill">
<short>
<var>DoFloodFill</var> calls the <var>FloodFill</var> method.
</short>
<descr/>
<seealso>
<link id="TCanvas.FloodFill"/>
</seealso>
</element>
<element name="TCanvas.DoFloodFill.x">
<short/>
</element>
<element name="TCanvas.DoFloodFill.y">
<short/>
</element>

<element name="TCanvas.DoMoveTo">
<short>
<var>DoMoveTo</var> calls the <var>MoveTo</var> method.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoMoveTo.x">
<short/>
</element>
<element name="TCanvas.DoMoveTo.y">
<short/>
</element>

<element name="TCanvas.DoLineTo">
<short>
<var>DoLineTo</var> calls the <var>LineTo</var> method.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoLineTo.x">
<short/>
</element>
<element name="TCanvas.DoLineTo.y">
<short/>
</element>
<element name="TCanvas.DoLine">
<short>
<var>DoLine</var> calls <var>Line</var> to draw from x1, y1 to x2, y2.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoLine.x1">
<short/>
</element>
<element name="TCanvas.DoLine.y1">
<short/>
</element>
<element name="TCanvas.DoLine.x2">
<short/>
</element>
<element name="TCanvas.DoLine.y2">
<short/>
</element>

<element name="TCanvas.DoCopyRect">
<short>Verifies and copies the source canvas.</short>
<descr>
<p>
<var>DoCopyRect</var> checks that <var>SrcCanvas</var> is of correct type 
then copies coordinates and calls <var>CopyRect</var>.
</p>
</descr>
<errors>
If <var>SrcCanvas</var> is not of type <var>TCanvas</var> then writes a 
warning to the debug output that copying is not supported
</errors>
<seealso>
<link id="TCanvas.CopyRect"/>
</seealso>
</element>
<element name="TCanvas.DoCopyRect.x">
<short/>
</element>
<element name="TCanvas.DoCopyRect.y">
<short/>
</element>
<element name="TCanvas.DoCopyRect.SrcCanvas">
<short/>
</element>
<element name="TCanvas.DoCopyRect.SourceRect">
<short/>
</element>

<element name="TCanvas.DoDraw">
<short>
<var>DoDraw</var> checks that <var>Image</var> is of the right type, makes a 
local copy, creates the necessary handles and bitmaps for drawing.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.DoDraw.x">
<short/>
</element>
<element name="TCanvas.DoDraw.y">
<short/>
</element>
<element name="TCanvas.DoDraw.Image">
<short/>
</element>

<element name="TCanvas.CheckHelper">
<short>
Ignored in the current implementation of the class.
</short>
<descr/>
<errors>
Writes a message to debug output indicating the call is ignored.
</errors>
<seealso/>
</element>
<element name="TCanvas.CheckHelper.AHelper">
<short/>
</element>

<element name="TCanvas.GetDefaultColor">
<short>Gets the default color value for the canvas.</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.GetDefaultColor.Result">
<short>TColor value that is the default color for the canvas.</short>
</element>
<element name="TCanvas.GetDefaultColor.ADefaultColorType">
<short>Not used in the current implementation.</short>
</element>

<element name="TCanvas.GetClipRect">
<short>
<var>GetClipRect</var> - if an error is encountered in finding the Clipping 
Rectangle dimensions, sets some defaults anyway.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.GetClipRect.Result">
<short/>
</element>

<element name="TCanvas.SetClipRect">
<short>Sets the value for the ClipRect property.</short>
<descr>
<p>
Overrides the method defined in the TFPCustomCanvas ancestor. Calls the 
inherited method. Handles conversion of the logical coordinates in the 
clipping rectangle to device coordinates, and sets the clipping region to the 
converted values.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.SetClipRect.ARect">
<short>New value for the property.</short>
</element>

<element name="TCanvas.GetClipping">
<short>
<var>GetClipping</var> returns <b>True</b> if clipping is being performed.
</short>
</element>
<element name="TCanvas.GetClipping.Result">
<short/>
</element>

<element name="TCanvas.SetClipping">
<short>
<var>SetClipping</var> specifies whether clipping is to be performed.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.SetClipping.AValue">
<short/>
</element>

<element name="TCanvas.GetPixel">
<short>Gets the value for the indexed Pixels property.</short>
<descr/>
<seealso>
<link id="TCanvas.Pixels"/>
</seealso>
</element>
<element name="TCanvas.GetPixel.Result">
<short>Value for the property.</short>
</element>
<element name="TCanvas.GetPixel.X">
<short>Horizontal canvas coordinate for the pixel.</short>
</element>
<element name="TCanvas.GetPixel.Y">
<short>Vertical canvas coordinate for the pixel.</short>
</element>

<element name="TCanvas.CreateBrush">
<short>
Ensures that the handle for the Brush is valid and configured with the Brush 
settings.
</short>
<descr>
<p>
<var>CreateBrush</var> is a procedure used to create and/or configure handles 
for the canvas <var>Brush</var>.
</p>
<p>
<var>SelectObject</var> is called to get an existing Brush handle, and save a 
copy of the handle for local access in the canvas. Canvas state flags are 
updated to indicate that the Brush handle is valid.
</p>
<p>
The styles stored in Brush are checked for hatched-style brushes. When no 
hatch styles are used, the background color for the canvas is set to the 
color specified in Brush. If the Brush style is bsSolid, the background mode 
is set to OPAQUE. Otherwise, the TRANSPARENT background mode is used.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.CreateFont">
<short>
Ensures that the Font for the canvas is valid and uses the correct color.
</short>
<descr>
<p>
Gets the handle for the <var>Font</var> from its <var>Reference</var> class. 
The first time the Font handle is selected, the handle for the default font 
is returned as saved for use with <var>DeselectHandles</var>.
</p>
<p>
CreateFont updates the state flags for the canvas to include the value 
<var>csFontValid</var>. <var>SetTextColor</var> is called to apply the color 
from the Font to the canvas Handle.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.CreateHandle">
<short>Creates a new Handle for the Canvas.</short>
<descr>
<p>
CreateHandle has an empty implementation in TCanvas.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.CreatePen">
<short>
Ensures that the Pen for the canvas is valid, configured, and positioned.
</short>
<descr>
<p>
<var>CreatePen</var> is a procedure used to create, configure and position 
the pen for the canvas.
</p>
<p>
CreatePen calls <var>SelectObject</var> to get the <var>Handle</var> for the 
<var>Pen</var>, and saves a copy for local access in the class instance. The 
<var>MoveTo</var> method is called to position the Pen to the coordinates in 
the <var>PenPos</var> property. Canvas state flags are updated to indicate 
that the handle for the Pen is valid.
</p>
<p>
CreatePen is called when <var>RequiredState</var> is used to check for a 
valid pen handle.
</p>
</descr>
<seealso>
<link id="TCanvas.Pen"/>
<link id="TCanvas.Handle"/>
<link id="TCanvas.RequiredState"/>
<link id="TPen.Reference"/>
<link id="TPenMode"/>
<link id="TCanvasStates"/>
</seealso>
</element>

<element name="TCanvas.CreateRegion">
<short>Ensures that the handle for the canvas Region is valid.</short>
<descr>
<p>
<var>CreateRegion</var> is a procedure used to ensure that the handle for the 
rectangular
<var>Region</var> in the canvas is valid.
</p>
<p>
CreateRegion calls <var>SelectObject</var> to the get the handle for the 
Region, and saves a local copy for access in the class instance. Canvas state 
flags are updated to indicates that the handle for the Region is valid.
</p>
<p>
CreateRegion is declared as a virtual method, and may be overridden in 
descendant classes.
</p>
<remark>
CreateRegion is not used in the current LCL implementation.
</remark>
</descr>
<seealso/>
</element>

<element name="TCanvas.DeselectHandles">
<short>Deselects all sub-handles in the current device context.
</short>
<descr/>
<seealso/>
</element>

<element name="TCanvas.PenChanging">
<short>Implements the default OnChanging event handler used for the Pen in 
the canvas.
</short>
<descr>
<p>
Ensures that canvas state flags indicate both the handle and the pen handle 
are valid.
No actions are performed in the method if either handle is not valid.
</p>
<p>
Removes the value csPenValid from the canvas state flags, and selects the 
saved pen handle in the class instance. The internal copy of the saved pen 
handle is set to 0.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.PenChanging.APen">
<short>Object for the event notification.</short>
</element>

<element name="TCanvas.FontChanging">
<short>
Implements the OnChanging event handler for the Font used on the canvas.
</short>
<descr>
<p>
<var>FontChanging</var> is assigned as the OnChanging event handler for the 
Font property in the constructor for the class instance. It allows the canvas 
class to be notified and updated when a new font is assigned to the canvas.
</p>
<p>
FontChanging ensures that both the Handle and the Font for the canvas are 
valid. No actions are performed in the method if State does not contain the 
values csFontValid and csHandleValid. It removes csFontValid from the States 
property and reselects the handle for the Font in the control.
</p>
</descr>
<seealso>
<link id="TCanvas.Font"/>
<link id="TCanvas.Create"/>
<link id="TCanvas.OnChange"/>
<link id="TFont"/>
</seealso>
</element>
<element name="TCanvas.FontChanging.AFont">
<short>Not used in the current implementation of the method.</short>
</element>

<element name="TCanvas.BrushChanging">
<short>
Implements the OnChanging event handler for the Brush on the canvas.
</short>
<descr>
<p>
<var>BrushChanging</var> is assigned as the OnChanging event handler for the 
Brush property in the constructor for the class instance. It allows the 
canvas class to be notified and updated when a new brush is assigned to the 
canvas.
</p>
<p>
BrushChanging ensures that both the Handle and the Brush for the canvas are 
valid. No actions are performed in the method if State does not contain the 
values csBrushValid and csHandleValid. It removes csBrushValid from the 
States property and reselects the handle for the Brush in the control.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TCanvas.Create"/>
<link id="TCanvas.OnChange"/>
<link id="TBrush"/>
</seealso>
</element>
<element name="TCanvas.BrushChanging.ABrush">
<short>Not used in the current implementation of the method.</short>
</element>

<element name="TCanvas.RegionChanging">
<short>
Implements the OnChanging event handler for the Region on the canvas.
</short>
<descr>
<p>
<var>RegionChanging</var> is assigned as the OnChanging event handler for the 
Region property in the constructor for the class instance. It allows the 
canvas class to be notified and updated when the region for the canvas is 
modified.
</p>
<p>
RegionChanging ensures that both the Handle and the Region for the canvas are 
valid. No actions are performed in the method if State does not contain the 
values csRegionValid and csHandleValid. It removes csRegionValid from the 
States property and reselects the handle for the Region on the control.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.RegionChanging.ARegion">
<short>Not used in the current implementation of the method.</short>
</element>

<element name="TCanvas.RealizeAutoRedraw">
<short>Implements the AutoRedraw feature when enabled.</short>
<descr>
<p>
RealizeAutoRedraw is called when a new value for the AutoRedraw property is 
assigned. No actions are performed in the method when AutoRedraw is 
<b>False</b>, or when the Handle for the canvas has not been allocated.
</p>
<p>
RealizeAutoRedraw calls the DCRedraw method in the widgetset class using the 
value in Handle as the device context.
</p>
</descr>
<seealso>
<link id="TCanvas.AutoRedraw"/>
<link id="TCanvas.Handle"/>
</seealso>
</element>

<element name="TCanvas.RealizeAntialiasing">
<short>Implements the Anti-aliasing feature for the canvas.</short>
<descr>
<p>
<var>RealizeAntialiasing</var> is called when a new value has been assigned 
to the <var>AntialiasingMode</var> property. No actions are performed in the 
method if the <var>Handle</var> has not been allocated for the canvas.
</p>
<p>
RealizeAntialiasing uses the value in AntialiasingMode to determine the 
action required in the method.
</p>
<dl>
<dt>amOn</dt>
<dd>
Calls DCSetAntialiasing in the widgetset to enable anti-aliasing for the 
Handle.
</dd>
<dt>amOff</dt>
<dd>
Calls DCSetAntialiasing in the widgetset to disable anti-aliasing for the 
Handle.
</dd>
<dt>amDontCare</dt>
<dd>
Calls DCSetAntialiasing using the default capabilities for the widgetset.
</dd>
</dl>
</descr>
<seealso/>
</element>

<element name="TCanvas.RequiredState">
<short>Ensures that all handles needed for the canvas are valid.</short>
<descr>
<p>
<var>RequiredState</var> is a procedure used to ensure that the canvas state 
flags include the values specified in the ReqState parameter. The 
<var>TCanvasStates</var> values represent handles that must be allocated for 
the canvas.
</p>
<p>
When a state value is not present in the flags, the corresponding routine 
used to create the required handle is called.
</p>
<dl>
<dt>csHandleValid</dt>
<dd>
Calls CreateHandle, and raises an EInvalidOperation if the handle could not 
be allocated. Sets the AntialiasingMode for the canvas. Includes 
csHandleValid in the canvas state flags on success.
</dd>
<dt>csFontValid</dt>
<dd>
Calls CreateFont, and includes csFontValid in the canvas state flags on 
success.
</dd>
<dt>csPenValid</dt>
<dd>
Calls CreatePen. Includes csBrushValid in the canvas state flags when the Pen 
style is a Brush pattern (psDash, psDot, psDashDot, psDashDotDot). Includes 
csPenValid in the canvas state flags on success.
</dd>
<dt>csBrushValid</dt>
<dd>
Calls CreateBrush. Includes csBrushValid in the canvas state flags on success.
</dd>
</dl>
<p>
RequiredState is called from method implementations prior to performing an 
operation which requires a specific canvas state (or handles).
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.RequiredState.ReqState">
<short>Required state flags.</short>
</element>

<element name="TCanvas.SetHandle">
<short>Sets the value for the Handle property.</short>
<descr>
<p>
De-selects any existing handles in the class instance, and sets the new value 
for the property. Applies the anti-aliasing mode when the handle is valid. 
Updates the state flags for the canvas.
</p>
</descr>
<seealso>
<link id="TCanvas.Handle"/>
</seealso>
</element>
<element name="TCanvas.SetHandle.NewHandle">
<short>New value for the property.</short>
</element>

<element name="TCanvas.SetInternalPenPos">
<short>
<var>SetInternalPenPos</var> - specify position for the Pen.
</short>
<descr/>
<seealso/>
</element>
<element name="TCanvas.SetInternalPenPos.Value">
<short/>
</element>

<element name="TCanvas.SetPixel">
<short>Sets a value in the indexed Pixels property.</short>
<descr/>
<seealso>
<link id="TCanvas.Pixels"/>
</seealso>
</element>
<element name="TCanvas.SetPixel.X">
<short>Horizontal canvas coordinate for the pixel.</short>
</element>
<element name="TCanvas.SetPixel.Y">
<short>Vertical canvas coordinate for the pixel.</short>
</element>
<element name="TCanvas.SetPixel.Value">
<short>New value for the indexed property.</short>
</element>

<element name="TCanvas.FreeHandle">
<short>Frees the Handle for the canvas.</short>
<descr>
<p>
<var>FreeHandle</var> is a procedure used to free the <var>Handle</var> for 
the canvas. FreeHandle sets the value in Handle to <b>0 (zero)</b> to 
indicate that it is unassigned.
</p>
</descr>
<seealso>
<link id="TCanvas.Handle"/>
</seealso>
</element>

<element name="TCanvas.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the constructor for <var>TCanvas</var>. It calls the 
inherited <var>Create</var> method and sets defaults for many properties and 
actions.
</p>
<p>
It also initializes Font, Pen, and Brush properties and assigns their event 
handlers. It sets default values for Alignment, Layout, Clipping and Opacity.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TCanvas</var>. It frees handles 
and regions, and calls the inherited Destroy method, sets font, pen and brush 
resources to <b>Nil</b> in the TCanvas class instance and makes its resources 
available.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.Lock">
<short>
<var>Lock</var> the canvas, making it unavailable for drawing.
</short>
<descr>
<p>Calls the <var>LockCanvas</var> method in the <var>TFPCustomCanvas</var> 
ancestor.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.TryLock">
<short>
<var>TryLock</var> - examines the Lock state, and performs Lock if necessary.
</short>
</element>

<element name="TCanvas.Unlock">
<short>
<var>Unlock</var> or release a previously locked Canvas.
</short>
<descr>
<p>
Calls the <var>UnlockCanvas</var> method in the <var>TFPCustomCanvas</var> 
ancestor.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.Refresh">
<short>Sets Pen, Brush, and Font handles to their default values.</short>
<descr>
<p>
Calls <var>DeselectHandles</var> to reset the handles to their default 
values. Requires a valid Handle for the canvas. Saved handles for the Pen, 
Brush, and Font are released.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.Changing">
<short>Signals the OnChanging event handler (when assigned).</short>
<descr>
<p>
<var>Changing</var> is called in methods which perform drawing operations, 
and occurs before the actions that affect the handles or settings for the 
canvas.
</p>
</descr>
<seealso>
<link id="TCanvas.OnChanging"/>
</seealso>
</element>

<element name="TCanvas.Changed">
<short>Signals the OnChange event handler (when assigned).</short>
<descr>
<p>
<var>Changed</var> is called in methods which perform drawing operations, and 
occurs after the actions that affect the handles or settings for the canvas 
have been completed.
</p>
</descr>
<seealso>
<link id="TCanvas.OnChange"/>
</seealso>
</element>

<element name="TCanvas.SaveHandleState">
<short>Stores the state for the Handle in the canvas.</short>
<descr>
<p>
<var>SaveHandleState</var> is used in the LCL instead of direct calls to 
<var>SaveDC</var> and <var>RestoreDC</var> in widgetset classes. Used along 
with <var>RestoreHandleState</var>. It allows multiple device contexts to be 
captured and handled in a LIFO fashion.
</p>
</descr>
<seealso>
<link id="TCanvas.RestoreHandleState"/>
</seealso>
</element>
<element name="TCanvas.RestoreHandleState">
<short>Restores the previous Handle state for the canvas.</short>
<descr/>
<seealso/>
</element>

<element name="TCanvas.Arc">
<short>
Use <var>Arc</var> to draw an elliptically curved line with the current Pen.
</short>
<descr>
<p>
Use <var>Arc</var> to draw an elliptically curved line with the current Pen. 
Arc is re-introduced in TCanvas to provide additional overloads for the 
method found in the platform-specific LCL interface object. Parameter values 
passed to the overloaded methods are in turn passed to the widgetset class 
for the platform.
</p>
<p>
<var>ALeft</var>, <var>ATop</var>, <var>ABottom</var>, and <var>ARight</var> 
represent the canvas bounds in which the drawing operation is performed.
</p>
<p>
One variant of the method provides the <var>Angle16Deg</var> and 
<var>Angle16DegLength</var> arguments.
</p>
<p>
Angle16Deg contains the central angle which defines the direction for the arc 
endpoint. Positive values indicate a counter-clockwise direction.Zero degrees 
lies at the 3 o'clock position. These value is expressed in 1/16ths of a 
degree. For example, a full circle equals 5760 (16*360) increments.
</p>
<p>
Angle16DegLength contains the arc length used to determine the over-all 
circumference of the circle for with the arc is a segment.
</p>
<p>
Another variant provides the <var>SX</var>, <var>SY</var> and <var>EX</var>, 
<var>EY</var> arguments representing the starting and ending radial points 
between which the Arc is drawn.
</p>
</descr>
<version>
Drawing methods which reintroduce those in the TFPCustomCanvas ancestor class 
were added in LCL version 2.6.1.
</version>
</element>
<element name="TCanvas.Arc.ALeft">
<short>Left boundary for the canvas.</short>
</element>
<element name="TCanvas.Arc.ATop">
<short>Top boundary for the canvas.</short>
</element>
<element name="TCanvas.Arc.ARight">
<short>Right boundary for the canvas.</short>
</element>
<element name="TCanvas.Arc.ABottom">
<short>Bottom boundary for the canvas.</short>
</element>
<element name="TCanvas.Arc.Angle16Deg">
<short>Angle for the arc segment in 1/16ths of a degree.</short>
</element>
<element name="TCanvas.Arc.Angle16DegLength">
<short>Arc length.</short>
</element>
<element name="TCanvas.Arc.SX">
<short>
Horizontal coordinate for the starting radial point in the arc.
</short>
</element>
<element name="TCanvas.Arc.SY">
<short>
Vertical coordinate for the starting radial point in the arc.
</short>
</element>
<element name="TCanvas.Arc.EX">
<short>
Horizontal coordinate for the ending radial point in the arc.
</short>
</element>
<element name="TCanvas.Arc.EY">
<short>Vertical coordinate for the ending radial point in the arc.</short>
</element>

<element name="TCanvas.ArcTo">
<short>Draws an elliptically curved line and updates the Pen position.</short>
<descr>
<p>
Like the Arc method, but updates the Pen position.
</p>
</descr>
<seealso>
<link id="TCanvas.Arc"/>
</seealso>
</element>
<element name="TCanvas.ArcTo.ALeft">
<short/>
</element>
<element name="TCanvas.ArcTo.ATop">
<short/>
</element>
<element name="TCanvas.ArcTo.ARight">
<short/>
</element>
<element name="TCanvas.ArcTo.ABottom">
<short/>
</element>
<element name="TCanvas.ArcTo.SX">
<short/>
</element>
<element name="TCanvas.ArcTo.SY">
<short/>
</element>
<element name="TCanvas.ArcTo.EX">
<short/>
</element>
<element name="TCanvas.ArcTo.EY">
<short/>
</element>

<element name="TCanvas.AngleArc">
<short>
Draws an arc over a specified angle along the circumference of a circle.
</short>
<descr>
<p>
<var>AngleArc</var> is a method used to draw an arc over a specified angle 
along the circumference of a circle with given radius and center point.
</p>
<p>
<var>X</var> and <var>Y</var> contain the coordinates for the center of the 
circle along which the arc is drawn.
</p>
<p>
<var>Radius</var> is the distance from the center point of the circle to the 
circumference where the arc is drawn. The LongWord type can contain positive 
integer values in the range 0..4294967295.
</p>
<p>
<var>StartAngle</var> and <var>SweepAngle</var> indicate where the arc is 
drawn on the circumference of the circle. The angle values are specified in 
degrees.
</p>
<p>
StartAngle contains the angle from the center of the circle to the starting 
point on the circumference. Its value is relative to the X-Axis and 
increments in the counter-clockwise direction.
</p>
<p>
SweepAngle defines the length of the arc expressed in degrees, and is 
used to find the ending point for the arc. Its value is relative to the 
starting point, and increments in the counter-clockwise direction.
</p>
<p>
Before the arc is drawn, LineTo is used to drawn a line from the current pen 
position to the starting point of the arc.
</p>
<p>
The Arc method is called to render the arc using the center point, radius, 
starting point, and ending point values.
</p>
<p>
After the arc is drawn, the Pen position is moved to the ending point for the 
arc.
</p>
<p>
Update values for the Pen style, mode, color or width prior to calling the 
method.
</p>
</descr>
<seealso>
<link id="TCanvas.Arc"/>
<link id="TCanvas.Pen"/>
</seealso>
</element>
<element name="TCanvas.AngleArc.X">
<short>
Horizontal coordinate for the center of the circle.
</short>
</element>
<element name="TCanvas.AngleArc.Y">
<short>
Vertical coordinate for the center of the circle.
</short>
</element>
<element name="TCanvas.AngleArc.Radius">
<short>
Distance from the center point to the circumference of the circle.
</short>
</element>
<element name="TCanvas.AngleArc.StartAngle">
<short>
Angle (in degrees) relative to the X-Axis where the arc is started.
</short>
</element>
<element name="TCanvas.AngleArc.SweepAngle">
<short>
Angle (in degrees) relative to StartAngle where the arc ends.
</short>
</element>

<element name="TCanvas.BrushCopy">
<short>
Copies part of a bitmap to a rectangle on the canvas and replaces the 
transparent color with the canvas Brush color.
</short>
<descr>
<p>
The end result is that pixels copied from ABitmap using the color in 
ATransparentColor are replaced with the brush color for the canvas. This makes 
the copied area in ASourceRect partially transparent when applied to ADestRect.
</p>
<p>
Pixels colors from ASourceRect are applied to a temporary image, and the 
StretchDraw method is called to draw the copied rectangle onto the canvas.
</p>
<p>
Set the Color property in Brush before calling the method.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TCanvas.StretchDraw"/>
<link id="TBrush.Color"/>
<link id="TColorToFPColor"/>
<link id="TBitmap"/>
</seealso>
</element>
<element name="TCanvas.BrushCopy.ADestRect">
<short>
Rectangle on the canvas where the content from ABitmap is stored.
</short>
</element>
<element name="TCanvas.BrushCopy.ABitmap">
<short>
TBitmap with the pixel content copied in the method.
</short>
</element>
<element name="TCanvas.BrushCopy.ASourceRect">
<short>
Rectangle with the bounds for the copied region in ABitmap.
</short>
</element>
<element name="TCanvas.BrushCopy.ATransparentColor">
<short>
Specifies the pixel color in ABitmap which becomes transparent when copied to 
the destination rectangle on the Canvas.
</short>
</element>

<element name="TCanvas.Chord">
<short>
Draw a filled chord shape starting and finishing at the specified angular 
positions on the circumference.
</short>
<descr>
<p>
Use Chord to draw a filled Chord shape on the canvas.
</p>
<p>
The angles angle1 and angle2 are 1/16th of a degree. For example, a full 
circle equals 5760 (16*360).
</p>
<p>
Positive values of Angle and AngleLength mean counter-clockwise while 
negative values mean clockwise direction. Zero degrees is at the 3 o'clock 
position.
</p>
<p>
Alternatively the starting and ending points may be specified as radial 
points (sx, sy, ex, ey).
</p>
</descr>
</element>
<element name="TCanvas.Chord.x">
<short/>
</element>
<element name="TCanvas.Chord.y">
<short/>
</element>
<element name="TCanvas.Chord.Width">
<short/>
</element>
<element name="TCanvas.Chord.Height">
<short/>
</element>
<element name="TCanvas.Chord.StartAngle16Deg">
<short/>
</element>
<element name="TCanvas.Chord.EndAngle16Deg">
<short/>
</element>
<element name="TCanvas.Chord.SX">
<short/>
</element>
<element name="TCanvas.Chord.SY">
<short/>
</element>
<element name="TCanvas.Chord.EX">
<short/>
</element>
<element name="TCanvas.Chord.EY">
<short/>
</element>
<element name="TCanvas.Chord.x1">
<short/>
</element>
<element name="TCanvas.Chord.y1">
<short/>
</element>
<element name="TCanvas.Chord.x2">
<short/>
</element>
<element name="TCanvas.Chord.y2">
<short/>
</element>

<element name="TCanvas.CopyRect">
<short>
Copies the rectangle found at <var>Source</var> in <var>SrcCanvas</var> to 
the destination position in <var>Dest</var>.
</short>
<descr>
<p>
<var>CopyRect</var> is a method used to copy a rectangular area from another 
TCanvas instance to the specified location on the canvas instance.
</p>
<p>
No actions are performed in the method if SrcCanvas has not been assigned, or 
when the width or height in either Source or Dest is zero (0) pixels.
</p>
<p>
CopyRect calls the StretchBlt routine in the LCL interface to expand or shrink 
the content in Source to the dimensions in Dest. The CopyMode property 
provides the raster operation for the block transfer.
</p>
<p>
CopyRect calls Changing to signal an assigned OnChanging event handler prior 
to the block transfer. CopyRect calls Changed to signal an assigned OnChange 
event handler immediately after to the block transfer.
</p>
</descr>
<seealso>
<link id="TCanvas.CopyMode"/>
<link id="TCanvas.Changing"/>
<link id="TCanvas.Changed"/>
</seealso>
</element>
<element name="TCanvas.CopyRect.Dest">
<short>
TRect instance with the bounds where the copied values are stored on the 
canvas. 
</short>
</element>
<element name="TCanvas.CopyRect.SrcCanvas">
<short>
TCanvas instance with the value copied in the method.
</short>
</element>
<element name="TCanvas.CopyRect.Source">
<short>
TRect instance with the content copied in the method.
</short>
</element>

<element name="TCanvas.Draw">
<short>
Draws the image content in SrcGraphic on the canvas at the specified position.
</short>
<descr>
<p>
<var>Draw</var> is reintroduced method in TCanvas; it reimplements the 
inherited method to use the TGraphic instance in SrcGraphic as the container 
with the image content drawn in the method.
</p>
<p>
No actions are performed in the method if SrcGraphic has not been assigned.
</p>
<p>
Draw calls the StretchDraw method to render the content in SrcGraphic on the 
canvas at the position specified in X and Y. The Width and Height in SrcGraphic 
set the bounds for the image rectangle applied to the canvas using StretchDraw. 
Since a stretch mode is not enabled when StretchDraw is called, the source 
graphic is not enlarged or shrunk to the canvas size. The source graphic is 
clipped if its bounds exceeds the canvas bounds. The Draw method in SrcGraphic 
performs the actions needed to position and rendering the content to the Pixels 
in the canvas.
</p>
<p>
CopyMode determines the raster operation performed for the Pixels affected on 
the canvas.
</p>
<p>
Calling Draw causes the OnChanging and OnChange events to be signalled (when 
assigned). OnChanging occurs prior to calling Draw in the TGraphic instance. 
OnChange occurs after calling Draw in the TGraphic instance.
</p>
</descr>
<seealso>
<link id="TCanvas.StretchDraw"/>
<link id="TCanvas.CopyMode"/>
<link id="TCanvas.OnChange"/>
<link id="TCanvas.OnChanging"/>
<link id="TGraphic.Width"/>
<link id="TGraphic.Height"/>
<link id="TGraphic.Draw"/>
<link id="#rtl.classes.TRect">TRect</link>
</seealso>
</element>
<element name="TCanvas.Draw.X">
<short>
Horizontal coordinate where the content is drawn.
</short>
</element>
<element name="TCanvas.Draw.Y">
<short>
Vertical coordinate where the content is drawn.
</short>
</element>
<element name="TCanvas.Draw.SrcGraphic">
<short>
TGraphic instance with the image content drawn in the method.
</short>
</element>

<element name="TCanvas.DrawFocusRect">
<short>
Draws a focus rectangle around the specified rectangle on the canvas.
</short>
<descr>
<p>
<var>DrawFocusRect</var> is a method used to draw a focus rectangle around the 
rectangular region specified in ARect.
</p>
<p>
DrawFocusRect calls Changing to signal an assigned OnChanging event handler 
prior to drawing the focus rectangle. It calls Changed to signal an assigned 
OnChange event handler immediately after drawing the focus rectangle.
</p>
<p>
DrawFocusRect calls the DrawFocusRect routine in the LCL interface to perform 
the drawing opertation using the Handle for the canvas.
</p>
</descr>
<seealso>
<link id="TCanvas.Changing"/>
<link id="TCanvas.Changed"/>
<link id="#lcl.lclintf.DrawFocusRect">LCLIntf.DrawFocusRect</link>
</seealso>
</element>
<element name="TCanvas.DrawFocusRect.ARect">
<short>
TRect instance with the bounds for the drawing operation.
</short>
</element>

<element name="TCanvas.StretchDraw">
<short>
Expands or contracts the specific graphic content to fit the specified 
destination rectangle on the canvas.
</short>
<descr>
<p>
StretchDraw is a reintroduced method in TCanvas; it reimplements the inherited 
method to use the specified TGraphic content in the drawing operation instead 
of a TFPCustomImage instance.
</p>
<p>
No actions are performed in the method if SrcGraphic has not been assigned.
</p>
<p>
DestRect provides the rectangular area on the canvas where the graphic content 
is drawn. The Draw method in SrcGraphic is called to draw the image content 
onto the canvas instance. If the dimensions in DestRect differ from the Width 
or Height in SrcGraphic, the image content is expanded or contracted to fit 
the destination rectangle. This may causes the aspect ratio for the image 
content to be changed.
</p>
<p>
StretchDraw calls Changing to signal an assigned OnChanging event handler 
immediately before the drawing operation. It calls Changed to signal an 
assigned OnChange event handler when the drawing operation has been completed.
</p>
</descr>
<seealso>
<link id="TCanvas.Changing"/>
<link id="TCanvas.Changed"/>
<link id="TGraphic.Draw"/>
<link id="#rtl.classes.TRect">TRect</link>
</seealso>
</element>
<element name="TCanvas.StretchDraw.DestRect">
<short>
TRect instance where the specified content is drawn on the canvas.
</short>
</element>
<element name="TCanvas.StretchDraw.SrcGraphic">
<short>
TGraphic instance with the image content drawn in the method.
</short>
</element>

<element name="TCanvas.Ellipse">
<short>
Draws a filled ellipse (or circle) on the canvas.
</short>
<descr>
<p>
<var>Ellipse</var> is an overloaded, reintroduced method in TCanvas used to 
draw a filled ellipse shape. The overloaded variants allow the shape to be 
defined either as a rectangular area where the shape is drawn, or by using 
Integer coordinates to establish the major and minor axis for the shape.
</p>
<p>
ARect is the TRect instance with the bounds for the shape.
</p>
<p>
x1, y1, x2, and y2 allows the bounds for the shape to be specified as Integer 
values.
</p>
<p>
The bounds are used to calculate the vertex, co-vertex, linear eccentricity 
and focal points for the shape.
</p>
<p>
When the bounds area is a square, the resulting shape is a circle.
</p>
<p>
Ellipse calls the Ellipse routine in the LCL interface to perform the drawing 
operation.
</p>
</descr>
<seealso>
<link id="#lcl.lclintf.Ellipse">LCLIntf.Ellipse</link>
</seealso>
</element>
<element name="TCanvas.Ellipse.ARect">
<short>
TRect instance with the bounds for the shape.
</short>
</element>
<element name="TCanvas.Ellipse.x1">
<short>
Left coordinate for the bounding box.
</short>
</element>
<element name="TCanvas.Ellipse.y1">
<short>
Top coordinate for the bounding box.
</short>
</element>
<element name="TCanvas.Ellipse.x2">
<short>
Right coordinate for the bounding box.
</short>
</element>
<element name="TCanvas.Ellipse.y2">
<short>
Bottom coordinate for the bounding box.
</short>
</element>

<element name="TCanvas.FillRect">
<short>
Fills a rectangular area on the canvas using the current Brush settings.
</short>
<descr>
<p>
<var>FillRect</var> is an overloaded method used to fill a rectangular area 
on the canvas using the style, color, or bitmap defined in Brush. The 
overloaded variants allow the vertices for the rectangle to be specified as 
either:
</p>
<ul>
<li>
Four separate Integer coordinates representing the top/left and bottom/right 
of the shape.
</li>
<li>
A TRect instance where the vertices are represented as either four Integers, 
two TPoint instances for TopLeft and BottomRight, or a vector using the 
TArray4IntegerType.
</li>
</ul>
<p>
FillRect calls the routine in the LCL interface used to implement the method 
for a specific widgetset.
</p>
<p>
Use Rectangle to draw a filled rectangle with borders. Use FloodFill to fill 
a rectangular area bounded by a specified color value.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TCanvas.FloodFill"/>
<link id="TCanvas.Rectangle"/>
<link id="#lcl.lclintf.FillRect">LCLIntf.FillRect</link>
</seealso>
</element>
<element name="TCanvas.FillRect.ARect">
<short>
TRect instance with the vertices for the rectangular area filled in the 
method.
</short>
</element>
<element name="TCanvas.FillRect.X1">
<short>Left coordinate for the Top, Left of the rectangle.</short>
</element>
<element name="TCanvas.FillRect.Y1">
<short>Top coordinate for the Top, Left of the rectangle.</short>
</element>
<element name="TCanvas.FillRect.X2">
<short>Right coordinate for the Bottom, Right of the rectangle.</short>
</element>
<element name="TCanvas.FillRect.Y2">
<short>Bottom coordinate for the Bottom, Right of the rectangle.</short>
</element>

<element name="TCanvas.FloodFill">
<short>
Fills an area at the specified coordinates with the current Brush for the 
canvas.
</short>
<descr>
<p>
FloodFill is a method used to fill the area at the point specified in X, Y 
with the style, color, or bitmap defined in Brush.
</p>
<p>
FillColor contains the color value for the boundary of the fill, or the area 
to be filled, depending on the value in FillStyle.
</p>
<p>
FillStyle determines the type of fill operation performed in the method. For 
example:
</p>
<dl>
<dt>
fsBorder
</dt>
<dd>
The fill area is bounded by pixels with the color specified in FillColor. 
Pixels are filled in all directions with the Brush until the a pixel with the 
specified color is found.
</dd>
<dt>
fsSurface
</dt>
<dd>
The fill area is defined as the color specified in FillColor. Pixels with 
this color are filled in all directions with the Brush until no more pixels 
with this color are found.
</dd>
</dl>
<p>
Please note that comments in the TGraphicsFillStyle source code have these 
conditions reversed.
</p>
<p>
FloodFill calls the routine in the LCL interface used to implement the method 
for the widgetset. The return value from the LCL interface is ignored.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TColor"/>
<link id="TFillStyle"/>
<link id="TGraphicsFillStyle"/>
<link id="#lcl.lclintf.FloodFill">LCLIntf.FloodFill</link>
</seealso>
</element>
<element name="TCanvas.FloodFill.X">
<short>
Horizontal coordinate where the fill operation is performed.
</short>
</element>
<element name="TCanvas.FloodFill.Y">
<short>
Vertical coordinate where the fill operation is performed.
</short>
</element>
<element name="TCanvas.FloodFill.FillColor">
<short>
Color replaced or used as a boundary in the fill operation.
</short>
</element>
<element name="TCanvas.FloodFill.FillStyle">
<short>
Determines whether FillColor is the boundary or the target for the fill 
operation.
</short>
</element>

<element name="TCanvas.Frame3D">
<short>
Draws a frame for the specified rectangle with a 3-dimensional appearance.
</short>
<descr>
<p>
<var>Frame3D</var> is an overloaded method used to draw a frame for the 
specified rectangle with a 3-dimensional appearance. It draws the frame using 
the Brush for the canvas with the style, colors, and size passed in the 
parameter values. Frame3D does not fill the inner area for the rectangle; it 
draws the frame or borders only.
</p>
<p>
<var>ARect</var> is the <var>TRect</var> instance with the bounds where the 
drawing operation is performed. It is a variable parameter updated in the 
method to return the inner area for the rectangle without the frame area.
</p>
<p>
The overloaded variants allow the drawing style and size for the 
3-dimensional frame to be specified.
</p>
<p>
<var>Style</var> contains a value from the TGraphicsBevelCut enumeration and 
is used when a beveled frame is desired.
</p>
<p>
<var>TColor</var> values can be provided to use colors to simulate 
3-Dimensional relief. <var>TopColor</var> is the color used to draw the top 
and left edges on the frame. <var>BottomColor</var> is used to draw the 
bottom and right edges on the frame. System colors like cl3DLight, 
cl3DHilight, cl3DDkShadow, cl3DShadow, and cl3DFace are commonly used in 
these parameters.
</p>
<p>
<var>FrameWidth</var> contains the thickness for the 3-D frame; for left and 
right edges it is the border width, for top and bottom edges it is the border 
height. The bounds in ARect are inflated by this value before exit.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TColor"/>
<link id="#lazutils.graphtype.TGraphicsBevelCut">TGraphicsBevelCut</link>
<link id="#lcl.lclintf.Frame3d">LCLIntf.Frame3D</link>
</seealso>
</element>
<element name="TCanvas.Frame3D.ARect">
<short>
Bounds for the rectangle on entry, the inner rectangle without the frame area 
on exit.
</short>
</element>
<element name="TCanvas.Frame3D.FrameWidth">
<short>
Thickness for the borders drawn in the method.
</short>
</element>
<element name="TCanvas.Frame3D.Style">
<short>
Bevel style used to draw the borders on the rectangle.
</short>
</element>
<element name="TCanvas.Frame3D.TopColor">
<short>
Color used for the top and left edges of the frame.
</short>
</element>
<element name="TCanvas.Frame3D.BottomColor">
<short>
Color used for the bottom and right edges of the frame.
</short>
</element>

<element name="TCanvas.Frame">
<short>
Draws a frame or border around the specified rectangle using the Pen for the 
canvas.
</short>
<descr>
<p>
<var>Frame</var> is method used to draw a border or frame for the specified 
rectangle use the Pen for the canvas. Overloaded variants of the method are 
provided which allow the rectangle to be specified as:
</p>
<ul>
<li>
Four separate Integer coordinates representing the top/left and bottom/right 
of the rectangle.
</li>
<li>
A TRect instance where the vertices are represented as either four Integers, 
two TPoint instances for TopLeft and BottomRight, or a vector using the 
TArray4IntegerType.
</li>
</ul>
<p>
Frame sets the Style property in Brush to bsClear. This suppresses filling 
the interior of the rectangle with the Color for the Brush. In others words, 
the area in side the frame is transparent. The Brush style is restored to its 
previous value prior to exit.
</p>
<p>
Frame calls the Rectangle method to draw the borders on the frame using the 
Pen for the canvas.
</p>
<p>
Set property values in Pen prior to calling the method, including:
</p>
<ul>
<li>Mode</li>
<li>Style</li>
<li>Color</li>
<li>Width</li>
<li>JoinStyle</li>
<li>EndCap</li>
</ul>
</descr>
<seealso>
<link id="TCanvas.Rectangle"/>
<link id="TCanvas.FrameRect"/>
<link id="TCanvas.Frame3D"/>
<link id="TCanvas.FloodFill"/>
</seealso>
</element>
<element name="TCanvas.Frame.ARect">
<short>
TRect instance with the bounds for the rectangle.
</short>
</element>
<element name="TCanvas.Frame.X1">
<short>
Left coordinate for the Top, Left of the rectangle.
</short>
</element>
<element name="TCanvas.Frame.Y1">
<short>
Top coordinate for the Top, Left of the rectangle.
</short>
</element>
<element name="TCanvas.Frame.X2">
<short>
Right coordinate for the Bottom, Right of the rectangle.
</short>
</element>
<element name="TCanvas.Frame.Y2">
<short>
Bottom coordinate for the Bottom, Right of the rectangle.
</short>
</element>

<element name="TCanvas.FrameRect">
<short>
Draws a border around the specified rectangle with the Brush for the canvas.
</short>
<descr>
<p>
<var>FrameRect</var> is an overloaded method used to draw a frame or border 
for the specified rectangular area using the Brush for the canvas. Overloaded 
variants allow the bounds for the rectangle to be defined using:
</p>
<p>
Four separate Integer values representing the Top/Left and Bottom/Right 
coordinates for the rectangle.
</p>
<p>
A TRect instance where the vertices are represented as either four Integers, 
two TPoint instances for TopLeft and BottomRight, or a vector using the 
TArray4IntegerType.
</p>
<p>
FrameRect draws the border for the shape using the style, color, or bitmap 
defined in Brush. The drawing operation is always performed using a 1 pixel 
width / height.
</p>
<p>
FrameRect calls the routine in the LCL interface which implements the method 
for the widgetset. The return value from the LCL interface is ignored.
</p>
<p>
Use Frame to draw borders on a rectangle using the Pen for the canvas. Use 
Frame3D to draw borders using a specified bevel style or colors which 
simulate 3-dimensional relief.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TCanvas.Frame"/>
<link id="TCanvas.Frame3D"/>
<link id="TCanvas.Rectangle"/>
<link id="#LCL.LCLIntf.FrameRect">LCLIntf.FrameRect</link>
</seealso>
</element>
<element name="TCanvas.FrameRect.ARect">
<short>
TRect instance with the bounds for the rectangle.
</short>
</element>
<element name="TCanvas.FrameRect.X1">
<short>
Left coordinate for the Top, Left of the rectangle.
</short>
</element>
<element name="TCanvas.FrameRect.Y1">
<short>
Top coordinate for the Top, Left of the rectangle.
</short>
</element>
<element name="TCanvas.FrameRect.X2">
<short>
Right coordinate for the Bottom, Right of the rectangle.
</short>
</element>
<element name="TCanvas.FrameRect.Y2">
<short>
Bottom coordinate for the Bottom, Right of the rectangle.
</short>
</element>

<element name="TCanvas.GetTextMetrics">
<short>Gets text metrics for the canvas font.</short>
<descr>
<p>
Calls <var>RequiredState</var> to check state flags for the canvas, and 
ensure that the Handle and the Font are valid. RequiredState raises an 
Exception if the <var>Handle</var> for the canvas is not valid.
</p>
<p>
Calls GetTextMetrics in the LCL interface to retrieve the ascender, 
descender, and height metrics for the canvas Handle. The values are assigned 
to members in the <var>TM</var> output argument.
</p>
<p>
The return value is <b>True</b> when text metrics were successfully retrieved 
from the widgetset.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.GetTextMetrics.Result">
<short><b>True</b> on success.</short>
</element>
<element name="TCanvas.GetTextMetrics.TM">
<short>Structure with the text metrics.</short>
</element>

<element name="TCanvas.GradientFill">
<short>
Fills a rectangle with a color gradient using the specified colors in a given 
direction.
</short>
<descr>
<p>
<var>GradientFill</var> fills the area inside the specified rectangle using a 
color gradient with the specified start and stop colors.
</p>
<p>
No actions are performed in the method when ARect has no discernible area; 
both the calculated height and width for the rectangle are 0 or a negative 
number.
</p>
<p>
The direction for the color gradient is specified in the ADirection argument. 
gdVertical causes the color variations to be drawn from top to bottom in the 
rectangle starting with the color in AStart and ending with the color in 
AStop. gdHorizontal causes the color variations to be draw from left to right 
in the rectangle, also starting with the color in AStart and ending with the 
color in AStop.
</p>
<p>
GradientFill decomposes color values in AStart and AStop into their Red, 
Green, and Blue component values. The differences between the byte values are 
varied evenly in the color gradient, and drawn as colored lines oriented in 
the direction opposite to the color gradient. The color setting in Pen is 
updated, and LineTo is used to draw the number of 1 pixel lines available in 
the gradient direction.
</p>
<p>
Please note that the settings in Pen are not stored on entry, or restored 
prior to exiting from the method. The Pen color will contain the color in 
AStop on exit.
</p>
<p>
Use FloodFill to fill a rectangular area bounded by or filled with a 
specified color value. Use FillRect to fill a rectangular area with the Brush 
for the canvas.
</p>
</descr>
<seealso>
<link id="TCanvas.Pen"/>
<link id="TCanvas.FloodFill"/>
<link id="TCanvas.FillRect"/>
<link id="TCanvas.Rectangle"/>
<link id="TGradientDirection"/>
</seealso>
</element>
<element name="TCanvas.GradientFill.ARect">
<short>
TRect instance with the bounds for the rectangle.
</short>
</element>
<element name="TCanvas.GradientFill.AStart">
<short>
TColor value used at the start of the color gradient.
</short>
</element>
<element name="TCanvas.GradientFill.AStop">
<short>
TColor value used at the end of the color gradient.
</short>
</element>
<element name="TCanvas.GradientFill.ADirection">
<short>
Direction for the color gradient.
</short>
</element>

<element name="TCanvas.RadialPie">
<short>
<var>RadialPie</var> draws a filled pie-shaped wedge on the canvas with 
specified start and end coordinates, and starting and ending angular 
positions.
</short>
<descr>
<p>
Use Pie to draw a filled pie-shaped wedge on the canvas.
</p>
<p>
The angles StartAngle16Deg and Angle16DegLength are 1/16th of a degree. For 
example, a full circle equals 5760 (16*360).
</p>
<p>
Positive values in StartAngle16Deg means counter-clockwise while negative 
values mean clockwise direction. Zero degrees is at the 3 o'clock position.
</p>
</descr>
<seealso>
<link id="TCanvas.Pie"/>
</seealso>
</element>
<element name="TCanvas.RadialPie.x">
<short/>
</element>
<element name="TCanvas.RadialPie.y">
<short/>
</element>
<element name="TCanvas.RadialPie.Width">
<short/>
</element>
<element name="TCanvas.RadialPie.Height">
<short/>
</element>
<element name="TCanvas.RadialPie.StartAngle16Deg">
<short/>
</element>
<element name="TCanvas.RadialPie.Angle16DegLength">
<short/>
</element>
<element name="TCanvas.RadialPie.x1">
<short/>
</element>
<element name="TCanvas.RadialPie.y1">
<short/>
</element>
<element name="TCanvas.RadialPie.x2">
<short/>
</element>
<element name="TCanvas.RadialPie.y2">
<short/>
</element>

<element name="TCanvas.Pie">
<short>
<var>Pie</var> draws a filled Pie-shaped wedge on the canvas.
</short>
<descr>
<p>
Pie is a method used to draw a filled Pie-shaped wedge on the canvas. The pie 
is part of an ellipse between the points EllipseX1, EllipseY1, EllipseX2, 
EllipseY2. The values StartX, StartY and EndX, EndY represent the starting 
and ending radial-points between which the Bounding-Arc is drawn.
</p>
</descr>
</element>
<element name="TCanvas.Pie.EllipseX1">
<short/>
</element>
<element name="TCanvas.Pie.EllipseY1">
<short/>
</element>
<element name="TCanvas.Pie.EllipseX2">
<short/>
</element>
<element name="TCanvas.Pie.EllipseY2">
<short/>
</element>
<element name="TCanvas.Pie.StartX">
<short/>
</element>
<element name="TCanvas.Pie.StartY">
<short/>
</element>
<element name="TCanvas.Pie.EndX">
<short/>
</element>
<element name="TCanvas.Pie.EndY">
<short/>
</element>

<element name="TCanvas.PolyBezier">
<short>
<var>Polybezier</var> draws cubic Bézier curves.
</short>
<descr>
<p>
Use <var>Polybezier</var> to draw cubic Bézier curves.
</p>
<p>
The first curve is drawn from the first point to the fourth point with the 
second and third points being the control points.
</p>
<p>
If the <var>Continuous</var> flag is <b>True</b> then each subsequent curve 
requires three more points, using the end-point of the previous Curve as its 
starting point, the first and second points being used as its control points, 
and the third point its end-point.
</p>
<p>
If the <var>Continuous</var> flag is set to <b>False</b>, then each 
subsequent curve requires 4 additional points, which are used exactly as in 
the first curve.
</p>
<p>
If the <var>Filled</var> flag is set to <b>True</b> then a straight line is 
drawn from the last connected point to the starting point, and the entire 
curve is filled with the current brush.
</p>
<p>
Any additional points which do not add up to a full Bézier (4 for 
Continuous, 3 otherwise) are ignored. There must be at least 4 points to be 
connected.
</p>
</descr>
</element>
<element name="TCanvas.PolyBezier.Points">
<short/>
</element>
<element name="TCanvas.PolyBezier.NumPts">
<short/>
</element>
<element name="TCanvas.PolyBezier.Filled">
<short/>
</element>
<element name="TCanvas.PolyBezier.Continuous">
<short/>
</element>

<element name="TCanvas.Polygon">
<short>
Draws a closed, many-sided shape using the Pen for the canvas.
</short>
<descr>
<p>
Use <var>Polygon</var> to draw a closed, many-sided shape on the canvas, 
using the <var>Pen</var> for the canvas. After drawing the complete shape, 
<var>Polygon</var> fills the shape using the canvas <var>Brush</var>.
</p>
<p>
The <var>Points</var> parameter is an array of points that give the vertices 
of the polygon.
</p>
<p>
<var>Winding</var> determines how the polygon is filled. When 
<var>Winding</var> is <b>True</b>, <var>Polygon</var> fills the shape using 
the <var>Winding</var> fill algorithm.
</p>
<p>
When <var>Winding</var> is <b>False</b>, <var>Polygon</var> uses the even-odd 
(alternative) fill algorithm.
</p>
<p>
<var>StartIndex</var> gives the index of the first point in the array to use. 
All points before this are ignored.
</p>
<p>
<var>NumPts</var> indicates the number of points to use, starting at 
<var>StartIndex</var>.
</p>
<p>
If <var>NumPts</var> is -1 (the default), <var>Polygon</var> uses all points 
from <var>StartIndex</var> to the end of the array. The first point is always 
connected to the last point.
</p>
<p>
To draw a polygon on the canvas without filling the internal area, use the 
<var>Polyline</var> method specifying the first point a second time at the 
end of the line.
</p>
</descr>
<seealso>
<link id="TCanvas.PolyLine"/>
</seealso>
</element>
<element name="TCanvas.Polygon.Points">
<short/>
</element>
<element name="TCanvas.Polygon.Winding">
<short/>
</element>
<element name="TCanvas.Polygon.StartIndex">
<short/>
</element>
<element name="TCanvas.Polygon.NumPts">
<short/>
</element>

<element name="TCanvas.Polyline">
<short>
Draws a line which connects a set of points on the canvas.
</short>
<descr>
<p>
Use <var>Polyline</var> to connect a set of points on the <var>Canvas</var>. 
If you specify only two points, <var>Polyline</var> draws a single line. The 
<var>Points</var> parameter is an array of points to be connected.
</p>
<p>
<var>StartIndex</var> identifies the first point in the array to use.
</p>
<p>
<var>NumPts</var> indicates the number of points to use. If <var>NumPts</var> 
is -1 (the default), <var>PolyLine</var> uses all the points from 
<var>StartIndex</var> to the end of the array.
</p>
<p>
Calling the <var>MoveTo</var> function with the value of the first point, and 
then repeatedly calling <var>LineTo</var> with all subsequent points will 
draw the same image on the canvas. However, unlike <var>LineTo</var>, 
<var>Polyline</var> does not change the values in <var>PenPos</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.Polyline.Points">
<short>
Array of or pointer to the TPoint instances for the line.
</short>
</element>
<element name="TCanvas.Polyline.StartIndex">
<short>
Position of the first point used when drawing the line.
</short>
</element>
<element name="TCanvas.Polyline.NumPts">
<short>
Number of points available in the pointer.
</short>
</element>

<element name="TCanvas.Rectangle">
<short>
Draws a <var>Rectangle</var> with the specified coordinates.
</short>
<descr>
<p>
<var>Rectangle</var> is an overloaded method reintroduced in TCanvas. It is 
used to draw a rectangular shape on the drawing area for the canvas. The 
overloaded variants allow the coordinates to be specified as either:
</p>
<ul>
<li>
Four separate Integer values representing the top, left, bottom, and right 
vertices for the shape (X1, Y1, X2, Y2).
</li>
<li>
A TRect instance where the vertices are represented as either four Integers, 
two TPoint instances for TopLeft and BottomRight, or a vector using the 
TArray4IntegerType (Rect).
</li>
</ul>
<p>
Rectangle draws an outline (or borders) for the shape using the mode, style 
and width defined in Pen. The rectangle is also filled using the style, color 
and/or bitmap defined in Brush.
</p>
<p>
Use FillRect to fill a rectangular area with the current Brush without 
drawing its borders. Use FrameRect to draw the borders for the shape using 
the current Brush without filling the interior. Use Frame to draw borders for 
the shape using the current Pen and a clear Brush for the interior.
</p>
<p>
Rectangle calls the routine in the LCL interface used to implement the method 
for the current widgetset.
</p>
</descr>
<seealso>
<link id="TCanvas.Pen"/>
<link id="TCanvas.Brush"/>
<link id="TCanvas.FillRect"/>
<link id="TCanvas.FloodFill"/>
<link id="TCanvas.Frame"/>
<link id="TCanvas.FrameRect"/>
<link id="TCanvas.Frame3D"/>
<link id="#lcl.lclintf.Rectangle">LCLIntf.Rectangle</link>
</seealso>
</element>
<element name="TCanvas.Rectangle.X1">
<short>Left coordinate for the top, left of the rectangle.</short>
</element>
<element name="TCanvas.Rectangle.Y1">
<short>Top coordinate for the top, left of the rectangle.</short>
</element>
<element name="TCanvas.Rectangle.X2">
<short>Right coordinate for the bottom, right of the rectangle.</short>
</element>
<element name="TCanvas.Rectangle.Y2">
<short>Bottom coordinate for the bottom, right of the rectangle.</short>
</element>
<element name="TCanvas.Rectangle.Rect">
<short>
TRect instance with the coordinates for the rectangle vertices.
</short>
</element>

<element name="TCanvas.RoundRect">
<short>
Draws a rectangle with rounded corners at the specified 
position.
</short>
<descr>
<p>
<var>RoundRect</var> is an overloaded method in TCanvas used to draw a 
rectangle with rounded corners. The overloaded variants allow 
the coordinates to be specified as either:
</p>
<ul>
<li>
Four separate Integer values representing the top, left, bottom, and right 
vertices for the shape (X1, Y1, X2, Y2).
</li>
<li>
A TRect instance where the vertices are represented as either four Integers, 
two TPoint instances for TopLeft and BottomRight, or a vector using the 
TArray4IntegerType (Rect).
</li>
</ul>
<p>
RX and RY contain the width and height (respectively) for an ellipse used to 
draw arc segments for the rounded corners on the rectangular shape.
</p>
<p>
RoundRect (like Rectangle) draws an outline (or borders) for the shape using 
the mode, style and width defined in Pen. The rounded rectangle is also 
filled using the style, color and/or bitmap defined in Brush.
</p>
<p>
RoundRect calls the routine in the LCL interface used to implement the method 
for the current widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.lclintf.RoundRect">LCLIntf.RoundRect</link>
</seealso>
</element>
<element name="TCanvas.RoundRect.X1">
<short>Left coordinate for the top, left corner of the rectangle.</short>
</element>
<element name="TCanvas.RoundRect.Y1">
<short>Top coordinate for the top, left corner of the rectangle.</short>
</element>
<element name="TCanvas.RoundRect.X2">
<short>Right coordinate for the bottom, right corner of the rectangle.</short>
</element>
<element name="TCanvas.RoundRect.Y2">
<short>Bottom coordinate for the bottom, right corner of the rectangle.</short>
</element>
<short/>
<element name="TCanvas.RoundRect.RX">
<short>
Width of the ellipse a quarter of which is drawn in the rounded corners. Note that this is the <i>full</i> width rather than the radius as suggested by the variable name.
</short>
</element>
<element name="TCanvas.RoundRect.RY">
<short>
Height of the ellipse a quarter of which is drawn in the rounded corners. Note that this is the <i>full</i> height rather than the radius as suggested by the variable name.
</short>
</element>
<element name="TCanvas.RoundRect.Rect">
<short>
TRect instance with the coordinates for the rectangle vertices.
</short>
</element>

<element name="TCanvas.TextOut">
<short>Writes text at the specified position on the canvas.
</short>
<descr>
<p>
Writes the value in <var>Text</var> at the given <var>X, Y</var> coordinates 
on the canvas.
</p>
<p>
Calls <var>Changing</var> to signal the <var>OnChanging</var> event handler 
(when assigned). Calls <var>RequiredState</var> to ensure that handles for 
the canvas, Font, and Brush are valid.
</p>
<p>
Properties in <var>TextStyle</var> are converted and combined into the 
numeric flag used to format the Text, including <var>Opaque</var> and 
<var>RightToLeft</var>. Uses <var>ExtUTF8Out</var> to write to the device 
context using the position and style flags needed.
</p>
<p>
The <var>Pen</var> is positioned at the end of the <var>Text</var> when the 
output operation is completed. The vertical canvas coordinate is not altered 
in the method. In other words, TextOut does not handle multi-line text or 
word wrapping of the value in Text.
</p>
<p>
TextOut calls <var>Changed</var> to signal the <var>OnChange</var> event 
handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCanvas.Changing"/>
<link id="TCanvas.OnChanging"/>
<link id="TCanvas.Changed"/>
<link id="TCanvas.OnChange"/>
<link id="TCanvas.RequiredState"/>
<link id="TCanvas.Font"/>
<link id="TCanvas.Brush"/>
<link id="TCanvas.Pen"/>
<link id="TCanvas.TextStyle"/>
<link id="#lcl.lclintf.ExtUTF8Out">ExtUTF8Out</link>
</seealso>
</element>
<element name="TCanvas.TextOut.X">
<short>Horizontal canvas coordinate where the text is written.</short>
</element>
<element name="TCanvas.TextOut.Y">
<short>Vertical canvas coordinate where the text is written.</short>
</element>
<element name="TCanvas.TextOut.Text">
<short>Values written in the text output operation.</short>
</element>

<element name="TCanvas.TextRect">
<short>
Draws text on the canvas at the specified location using the given style.
</short>
<descr>
<p>
Writes <var>Text</var> string within a specified rectangle, according to 
predefined <var>Style</var>.
</p>
<p>
The boundaries of the text rectangle are specified in <var>ARect</var>. 
<var>X, Y</var> define the starting point for writing the <var>Text</var> 
within the rectangle.
</p>
<p>
<var>TextStyle</var> determines whether the text is justified, centered, 
word-wrapped, clipped at the rectangle boundaries, etc. If the
<var>Style</var> argument is omitted, defaults are assumed.
</p>
<p>
<b>Note:</b> The exact text position depends on the specified rectangle, the 
<var>X, Y</var> coordinates, and settings in <var>TextStyle</var>:
</p>
<ul>
<li>
<var>TextStyle.Alignment = taLeftJustify</var>: Text begins at <var>X</var>
</li>
<li>
<var>TextStyle.Alignment = taCenter</var>: Text center is in the center of 
the rectangle (horizontally)
</li>
<li>
<var>TextStyle.Alignment = taRightJustify</var>: Text ends at right edge of 
the rectangle
</li>
<li>
<var>TextStyle.Layout = tlTop</var>: Top of the text is at <var>Y</var>
</li>
<li>
<var>TextStyle.Layout = tlCenter</var>: Text center is in the center of the 
rectangle (vertically)
</li>
<li>
<var>TextStyle.Layout = tlBottom</var>: Text sits above the bottom edge 
of the rectangle
</li>
</ul>
</descr>
</element>
<element name="TCanvas.TextRect.ARect">
<short>Rectangle within which the specified text is drawn.</short>
</element>
<element name="TCanvas.TextRect.X">
<short>
Horizontal text start (respected only if TextStyle.Alignment = taLeftJustify).
</short>
</element>
<element name="TCanvas.TextRect.Y">
<short>
Vertical position of the top of the text (respected only if TextStyle.Layout 
= tlTop).
</short>
</element>
<element name="TCanvas.TextRect.Text">
<short>Text to be drawn.</short>
</element>
<element name="TCanvas.TextRect.Style">
<short>
Optional parameter which determines whether the text is justified, 
word-wrapped, clipped, etc. If omitted, the current <var>TextStyle</var> for 
the canvas is used.
</short>
</element>

<element name="TCanvas.TextExtent">
<short>
Calculates the width and height for the specified Text using the Font for the 
canvas.
</short>
<descr>
<p>
<var>TextExtent</var> is a <var>TSize</var> function used to get the width and 
height for the specified Text using the Font for the canvas instance.
</p>
<p>
The TSize type in the return value returns the Width and Height for the Text 
in pixels using the cX (Width) and cY (Height) members. Both members are set 
to 0 if Text is an empty string (''), and when either the Handle or Font for 
the canvas are invalid. The CreateHandle and CreateFont methods are called to 
attempt to create the items when needed.
</p>
<p>
If the Font has the default un-initialized settings, the OnGetSystemFont event 
handler is signalled to get the default system font selected for the canvas.
</p>
<p>
TextExtent calls the GetTextExtentPoint routine in the widgetset interface to 
get the return value for the method.
</p>
<p>
TextExtent is used in methods like TextWidth, TextHeight and DoGetTextSize.
</p>
</descr>
<seealso>
<link id="TCanvas.RequiredState"/>
<link id="TCanvas.Handle"/>
<link id="TCanvas.Font"/>
<link id="TCanvas.CreateHandle"/>
<link id="TCanvas.CreateFont"/>
<link id="TCanvas.TextWidth"/>
<link id="TCanvas.TextHeight"/>
<link id="TCanvas.DoGetTextSize"/>
<link id="OnGetSystemFont"/>
</seealso>
</element>
<element name="TCanvas.TextExtent.Result">
<short>TSize instance with the Width and Height for the text.</short>
</element>
<element name="TCanvas.TextExtent.Text">
<short>Text examined and measured in the method.</short>
</element>

<element name="TCanvas.TextHeight">
<short>Gets the height for the specified text using the canvas Font.</short>
<descr>
<p>
Calls <var>TextExtent</var> to get the <var>TSize</var> instance with the 
return value for the method.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.TextHeight.Result">
<short>Height for the specified text (in pixels).</short>
</element>
<element name="TCanvas.TextHeight.Text">
<short>Text measured in the method.</short>
</element>

<element name="TCanvas.TextWidth">
<short>Gets the width for the specified text using the canvas Font.</short>
<descr>
<p>
Calls <var>TextExtent</var> to get the <var>TSize</var> instance with the 
return value for the method.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.TextWidth.Result">
<short>Width for the specified text (in pixels).</short>
</element>
<element name="TCanvas.TextWidth.Text">
<short>Text measured in the method.</short>
</element>

<element name="TCanvas.TextFitInfo">
<short>
Gets the number of characters that fit in the specified maximum width.
</short>
<descr>
<p>
TextFitInfo is an Integer function used to the determine the number 
characters from Text that will fit within the maximum width specified in 
MaxWidth. It is useful for situations where text must be truncated or wrapped 
to fit within a given area.
</p>
<p>
Text is a String type and allows UTF-8-encoded multi-bytes values in its 
content.
</p>
<p>
MaxWidth contains the maximum number of pixels allowed in the measurement.
</p>
<p>
TextFitInfo calls the GetTextExtentExPoint routine in the LCL interface to 
measure each of the characters (UTF-8 code points) in Text. Please note that 
partial character extents are not used when calling the LCL interface routine.
</p>
<p>
The return value contains a non-zero value on successful completion of the 
method, or 0 when number of characters cannot be determined.
</p>
<p>
Use TextWidth to get width in pixels for a given string value.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.TextFitInfo.Result">
<short>Number of code points allowed in the specified maximum width.</short>
</element>
<element name="TCanvas.TextFitInfo.Text">
<short>Text examined in the method.</short>
</element>
<element name="TCanvas.TextFitInfo.MaxWidth">
<short>Maximum width allowed for the character values.</short>
</element>

<element name="TCanvas.HandleAllocated">
<short>Checks whether the Handle has been allocated for the canvas.</short>
<descr>
<p>
The return value is <b>True</b> when Handle contains a non-zero value. <b>0 
(zero)</b> indicates that a Handle has not been assigned or is invalid.
</p>
</descr>
<seealso/>
</element>
<element name="TCanvas.HandleAllocated.Result">
<short><b>True</b> when Handle has been assigned.</short>
</element>
<element name="TCanvas.GetUpdatedHandle">
<short>
Checks the required canvas states and gets the updated Handle for the canvas.
</short>
<descr>
<p>
Includes the value <var>csHandleValid</var> flag in <var>ReqState</var> and 
calls <var>RequiredState</var> to check the canvas state flags. The return 
value contains the updated value for the <var>Handle</var> property.
</p>
</descr>
<seealso>
<link id="TCanvas.RequiredState"/>
<link id="TCanvas.Handle"/>
<link id="TCanvasState"/>
</seealso>
</element>
<element name="TCanvas.GetUpdatedHandle.Result">
<short>New value for Handle after checking required canvas states.</short>
</element>
<element name="TCanvas.GetUpdatedHandle.ReqState">
<short>Canvas state flags required in the method.</short>
</element>

<element name="TCanvas.Pixels">
<short>
The color of the <var>Pixels</var> located at the specified position.
</short>
<descr>
<p>
<var>Pixels</var> is an indexed <var>TColor</var> color property which 
provides access to the color for pixels on the drawing surface. The 
<var>X</var> and <var>Y</var> arguments provide the horizontal and vertical 
offsets on the drawing surface.
</p>
<p>
Read and write access to color values in the property requires a valid 
<var>Handle</var> (or device context) for the canvas. 
<var>RequiredState</var> is called, and allocates a Handle if one does not 
already exist. An <var>EInvalidGraphicOperation</var> exception may be raised 
in the method if a valid handle cannot be acquired.
</p>
<p>
Methods in the widgetset class are called to read or write the pixel color 
using the Handle.
</p>
<p>
When setting a new color for a pixel, the <var>Changing</var> method is 
called to signal the <var>OnChanging</var> event handler (when assigned). 
After setting the new color, the <var>Changed</var> method is called to 
signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCanvas.Handle"/>
<link id="TCanvas.RequiredState"/>
<link id="TCanvas.Changing"/>
<link id="TCanvas.Changed"/>
<link id="TCanvas.OnChanging"/>
<link id="TCanvas.OnChange"/>
<link id="TColor"/>
<link id="EInvalidGraphicOperation"/>
</seealso>
</element>
<element name="TCanvas.Pixels.X">
<short>Horizontal offset on the drawing surface.</short>
</element>
<element name="TCanvas.Pixels.Y">
<short>Vertical offset on the drawing surface.</short>
</element>

<element name="TCanvas.Handle">
<short>Handle (or device context) for the drawing surface.</short>
<descr>
<p>
<var>Handle</var> is a <var>HDC</var> property that provides the device 
context for the drawing surface. A valid Handle is required for nearly all 
operations performed on the canvas.
</p>
<p>
Read access calls <var>RequiredState</var>, and allocates a Handle by calling 
<var>CreateHandle</var> if one does not already exist. An 
<var>EInvalidGraphicOperation</var> exception may be raised in the method if 
a valid handle cannot be acquired.
</p>
<remark>
CreateHandle is an empty implementation in <var>TCanvas</var>, and is 
overridden in descendent classes to return a handle for an image format or 
output device. See <var>TBitmapCanvas</var>, <var>TControlCanvas</var>, 
<var>TPrinterCanvas</var>, et. al.
</remark>
<p>
Setting a new value for Handle causes saved <var>Brush</var>, <var>Pen</var>, 
and <var>Font</var> handles to be reset to their default values. The 
<var>AntialiasingMode</var> for the canvas is also re-applied.
</p>
</descr>
<seealso>
<link id="TCanvas.RequiredState"/>
<link id="TCanvas.CreateHandle"/>
<link id="TCanvas.DeselectHandles"/>
<link id="TCanvas.Brush"/>
<link id="TCanvas.Pen"/>
<link id="TCanvas.Font"/>
<link id="EInvalidGraphicOperation"/>
</seealso>
</element>

<element name="TCanvas.TextStyle">
<short>Text style attributes used to draw text on the canvas.</short>
<descr>
<p>
<var>TextStyle</var> is a <var>TTextStyle</var> property with the attributes 
applied to text drawn on the canvas. It is used in methods which output text 
to the drawing surface, like <var>TextOut</var> and <var>TextRect</var>.
</p>
<p>
Default values in the property are assigned in the constructor.
</p>
<p>
See <link id="TTextStyle">TTextStyle</link> for details about members in the 
record and their usage.
</p>
</descr>
<seealso>
<link id="TCanvas.TextOut"/>
<link id="TCanvas.TextRect"/>
<link id="TCanvas.Create"/>
<link id="TTextStyle"/>
</seealso>
</element>

<element name="TCanvas.AntialiasingMode">
<short>Controls anti-aliasing for canvas drawing operations.</short>
<descr>
<p>
<var>AntialiasingMode</var> is a <var>TAntialiasingMode</var> property which 
indicates if smoothing is performed for drawing operations on the canvas. The 
default value for the property is <var>amDontCare</var>, and indicates that 
the default actions for the platform or operating system is used.
</p>
<p>
Setting a new value for the property causes the 
<var>RealizeAntialiasing</var> method to be called to apply settings in 
widgetset classes when a Handle has been allocated.
</p>
</descr>
<seealso>
<link id="TAntialiasingMode"/>
</seealso>
</element>

<element name="TCanvas.AutoRedraw">
<short>
<var>AutoRedraw</var> - if <b>True</b>, the Canvas is to be redrawn 
automatically after each change or update.
</short>
<descr>
<p>
<var>AutoRedraw</var> is a <var>Boolean</var> property which indicates if the 
window for the canvas is automatically redrawn when updated. When set to 
<b>True</b>, the <var>DCRedraw</var> method in the widgetset class is called 
to enable the feature for the <var>Handle</var> in the canvas.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
</descr>
<seealso>
<link id="TCanvas.Handle"/>
<link id="TCanvas.RealizeAutoRedraw"/>
</seealso>
</element>

<element name="TCanvas.Brush">
<short>The <var>Brush</var> used to paint on the Canvas.</short>
<descr>
<p>
<var>Brush</var> is a <var>TBrush</var> property with the tool used to paint 
the interior of filled shapes on the drawing surface. It has settings like 
Color and Style, but may also use a Bitmap to fill the interior of shapes.
</p>
<p>
Setting a new value for the property causes the handle for the Brush to be 
freed and re-created in the cached resources for the canvas.The values from 
the new Brush are assigned to the member variable for the property. The 
<var>BrushChanged</var> method is called to update the state flags for the 
canvas.
</p>
<p>
Use <var>Pen</var> to configure the tool used to draw lines and curves on the 
drawing surface.
</p>
<p>
Use <var>Font</var> to set the typeface, color, and style used to draw text 
on the drawing surface.
</p>
</descr>
<seealso>
<link id="TCanvas.BrushChanging"/>
<link id="TCanvas.Pen"/>
<link id="TCanvas.Font"/>
<link id="TBrush"/>
</seealso>
</element>

<element name="TCanvas.CopyMode">
<short>
Indicates the raster operation used to combine pixel colors on the drawing 
surface.
</short>
<descr>
<p>
<var>CopyMode</var> is a <var>TCopyMode</var> property which contains the 
ternary raster operation used to combine pixel colors in region transfers. 
CopyMode contains values from constants defined for the raster operations, 
and includes:
</p>
<dl>
<dt>cmBlackness</dt>
<dd>
Fills the destination rectangle with the first color in the physical palette. 
(Black for the default palette).
</dd>
<dt>cmDstInvert</dt>
<dd>Inverts colors in the destination rectangle.</dd>
<dt>cmMergeCopy</dt>
<dd>Merges colors from the source rectangle with the brush color.</dd>
<dt>cmMergePaint</dt>
<dd>
Merges inverted colors from the source rectangle with the colors in the 
destination rectangle using an OR operation.
</dd>
<dt>cmNotSrcCopy</dt>
<dd>
Copies inverted colors from the source rectangle to the destination rectangle.
</dd>
<dt>cmNotSrcErase</dt>
<dd>
Combines the colors from the source and destination rectangles using an OR 
operation, and inverts the result.
</dd>
<dt>cmPatCopy</dt>
<dd>Copies the brush into the destination rectangle.</dd>
<dt>cmPatInvert</dt>
<dd>
Combines the brush colors with the colors in the destination rectangle using 
an XOR operation.
</dd>
<dt>cmPatPaint</dt>
<dd>
Combines the brush colors with the inverted colors from the source rectangle 
using an OR operation, and combines the result with the colors in the 
destination rectangle using an OR operation.
</dd>
<dt>cmSrcAnd</dt>
<dd>
Combines colors from the source and destination rectangles using an AND 
operation.
</dd>
<dt>cmSrcCopy</dt>
<dd>Copies the source rectangle to the destination rectangle.</dd>
<dt>cmSrcErase</dt>
<dd>
Combines the inverted colors in the destination rectangle with the colors 
from the source rectangle using an AND operation.
</dd>
<dt>cmSrcInvert</dt>
<dd>
Combines the colors in the source and destination rectangles using an XOR 
operation.
</dd>
<dt>cmSrcPaint</dt>
<dd>
Combines the colors in the source and destination rectangles using an OR 
operation.
</dd>
<dt>cmWhiteness</dt>
<dd>
Fills the destination rectangle using the second color in the physical 
palette. (White for the default palette).
</dd>
</dl>
<p>
The default value for the property is <var>cmSrcCopy</var>.
</p>
<p>
Copy mode constants are not provided for the <b>CAPTUREBLT</b> and 
<b>NOMIRRORBITMAP</b> values used in the Windows GDI API.
</p>
</descr>
<seealso/>
</element>

<element name="TCanvas.Font">
<short>Contains the Font used to render text on the drawing surface.</short>
<descr>
<p>
<var>Font</var> is a <var>TFont</var> property which contains the font used 
to render text on the drawing surface. Values in Font determine the 
formatting / layout applied in methods that render text, like 
<var>TextOut</var> and <var>TextRect</var>. Setting a new value in Font calls 
the Assign method in the class instance to store the new values. Property 
values in Font can also be modified directly to use the desired values.
</p>
<p>
The values assigned in Font are used in methods that calculate the size for 
text like <var>TextExtent</var>, <var>TextHeight</var>, <var>TextWidth</var>, 
and <var>TextFitInfo</var>.
</p>
</descr>
<seealso>
<link id="TFont"/>
<link id="TCanvas.TextOut"/>
<link id="TCanvas.TextRect"/>
<link id="TCanvas.TextExtent"/>
<link id="TCanvas.TextHeight"/>
<link id="TCanvas.TextWidth"/>
<link id="TCanvas.TextFitInfo"/>
</seealso>
</element>

<element name="TCanvas.Height">
<short>Height of the canvas.</short>
<descr>
<p>
<var>Height</var> is a read-only <var>Integer</var> property which contains 
the vertical dimension in <var>Pixels</var> for the canvas drawing area. 
Height and <var>Width</var> determine the limits for the 2-dimensional 
coordinate system used to access the Pixels on the drawing surface.
</p>
<p>
The value for the property is determined by calling the 
<var>GetDeviceSize</var> routine using the <var>Handle</var> for the class 
instance. The property value is <b>0</b> (<b>zero</b>) when Handle has not 
been assigned (contains <b>0</b>).
</p>
<p>
Use Width to get the horizontal dimension for the drawing surface.
</p>
<remark>
Changing the value for Height or Width in TCanvas is not allowed. These 
values are controlled using the capabilities in an image format or output 
device, and are normally handled in classes which implement the canvas.
</remark>
</descr>
<seealso>
<link id="TCanvas.Handle"/>
<link id="TCanvas.Width"/>
<link id="TCanvas.Pixels"/>
<link id="#lcl.lclintf.GetDeviceSize">GetDeviceSize</link>
</seealso>
</element>

<element name="TCanvas.Pen">
<short>The <var>Pen</var> to be used for writing in this canvas.</short>
<descr>
<p>
<var>Pen</var> is a <var>TPen</var> property which contains settings used 
when drawing lines, shapes, gradients, or generally changing pixels on the 
canvas. The available properties include:
</p>
<ul>
<li>Color</li>
<li>Mode</li>
<li>Style</li>
<li>Width</li>
<li>Cosmetic</li>
<li>EndCap</li>
<li>JoinStyle</li>
</ul>
<p>
See <link id="TPen">TPen</link> for more information about properties, 
methods, and events in the class. See <var>TFPCustomCanvas</var> for 
information about the pen used in the FCL ancestor class.
</p>
<p>
The Pen property is used in the implementation of <var>TCanvas</var> drawing 
methods, like: SetPixel, MoveTo, LineTo, Arc, ArcTo, Chord, GradientFill, 
RadialPie, PolyBezier, Polygon, Polyline, Ellipse, Frame, Frame3D, Rectangle, 
and RoundRect.
</p>
<p>
Use <var>Brush</var> to access settings used to fill enclosed areas on the 
drawing surface.
</p>
</descr>
<seealso>
<link id="TCanvas.Brush"/>
<link id="TPen"/>
</seealso>
</element>

<element name="TCanvas.Region">
<short>The <var>Region</var> where the Canvas is located.</short>
<descr>
<p>
<var>Region</var> is a <var>TRegion</var> property which contains the 
rectangular area(s) which define the bounding box for the drawing surface. 
See <link id="TRegion">TRegion</link> for more information.
</p>
</descr>
<seealso>
<link id="TRegion"/>
</seealso>
</element>

<element name="TCanvas.Width">
<short>The <var>Width</var> of the Canvas.</short>
<descr>
<p>
<var>Width</var> is a read-only <var>Integer</var> property which contains 
the horizontal dimension in <var>Pixels</var> for the canvas drawing area. 
<var>Height</var> and <var>Width</var> determine the limits for the 
2-dimensional coordinate system used to access the Pixels on the drawing 
surface.
</p>
<p>
The value for the property is determined by calling the 
<var>GetDeviceSize</var> routine using the <var>Handle</var> for the class 
instance. The property value is <b>0</b> (<b>zero</b>) when Handle has not 
been assigned (contains <b>0</b>).
</p>
<p>
Use Height to get the vertical dimension for the drawing surface.
</p>
<remark>
Changing the value for Height or Width in TCanvas is not allowed. These 
values are controlled using the capabilities in an image format or output 
device, and are normally handled in classes which implement the canvas.
</remark>
</descr>
<seealso>
<link id="TCanvas.Height"/>
</seealso>
</element>

<element name="TCanvas.OnChange">
<short>Event handler signalled after a change to the canvas.</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property which contains an 
event handler signalled after values in the canvas have been changed. The 
event handler is signalled (when assigned) from the <var>Changed</var> 
method, which is called when drawing operations are completed that alter the 
<var>Pixels</var> on the canvas.
</p>
<p>
Assign an object procedure to the property which implements the signature in 
TNotifyEvent to respond to the event notification.
</p>
<p>
Use <var>OnChanging</var> to respond to the notification that occurs prior to 
a drawing operation.
</p>
</descr>
<seealso>
<link id="TCanvas.OnChanging"/>
</seealso>
</element>

<element name="TCanvas.OnChanging">
<short>Event handler signalled prior to changing the canvas.</short>
<descr>
<p>
<var>OnChanging</var> is a <var>TNotifyEvent</var> property which contains an 
event handler signalled before changing values in the canvas. The event 
handler is signalled (when assigned) from the <var>Changing</var> method, 
which is called before starting a drawing operation that alters the 
<var>Pixels</var> on the canvas.
</p>
<p>
Assign an object procedure to the property which implements the signature in 
TNotifyEvent to respond to the event notification.
</p>
<p>
Use <var>OnChange</var> to respond to the notification that occurs when a 
drawing operation is completed.
</p>
</descr>
<seealso>
<link id="TCanvas.OnChange"/>
</seealso>
</element>

<element name="TSharedImage">
<short>Specifies the base class for reference-counted shared images.</short>
<descr>
<p>
<var>TSharedImage</var> is a class which specifies the base class for 
reference-counted shared images. TSharedImage defines properties and methods 
which are used to track and maintain the reference count for a shared image.
</p>
<p>
Use the <var>RefCount</var> property to determine the number of references 
acquired for a shared image.
</p>
<p>
Use <var>Reference</var> to increment the value in <var>RefCount</var>. Use 
<var>Release</var> to decrement the value in <var>RefCount</var>.
</p>
<p>
TSharedImage includes abstract virtual methods, like 
<var>HandleAllocated</var> and <var>FreeHandle</var>, which must be 
implemented in a descendent class to perform actions needed for the handle in 
a specific image type.
</p>
<p>
TSharedImage is the ancestor for the <var>TSharedRasterImage</var> class.
</p>
</descr>
<seealso>
<link id="TSharedRasterImage"/>
</seealso>
</element>

<!-- private -->
<element name="TSharedImage.FRefCount"/>

<element name="TSharedImage.Reference">
<short>Increases the reference count.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedImage.Release">
<short>Decreases the reference count.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedImage.FreeHandle">
<short>Release the handle for this image and free its resources.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedImage.RefCount">
<short>The number of references to this shared image.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedImage.HandleAllocated">
<short>Indicates whether a handle been allocated for the image.</short>
<descr/>
<seealso/>
</element>
<element name="TSharedImage.HandleAllocated.Result">
<short><b>True</b> when Handle is a non-zero value.</short>
</element>

<element name="TBitmapHandleType">
<short>Represents handle types used for Bitmaps.</short>
<descr>
<p>
<var>TBitmapHandleType</var> is an enumerated type with values that represent 
handle types available for Bitmaps. On Windows platforms, the handle may 
represent two distinctly different storage mechanisms:
</p>
<ul>
<li>DIB (Device-Independent Bitmap)</li>
<li>DDB (Device-Dependent Bitmap)</li>
</ul>
<p>
The handle type indicates the storage format and content for the Bitmap.
</p>
<p>
TBitmapHandleType is the type used to implement the <var>HandleType</var> 
property in <var>TCustomBitmap</var> and <var>TSharedCustomBitmap</var>.
</p>
</descr>
<seealso>
<link id="TSharedCustomBitmap.HandleType"/>
</seealso>
</element>
<element name="TBitmapHandleType.bmDIB">
<short>Device-Independent Bitmap handle.</short>
</element>
<element name="TBitmapHandleType.bmDDB">
<short>Device-Dependent Bitmap handle.</short>
</element>

<element name="TSharedRasterImage">
<short>
Implements a reference counted raster image that may be shared between 
controls.
</short>
<descr/>
<seealso/>
</element>
<element name="TSharedRasterImage.FHandle"/>
<element name="TSharedRasterImage.FBitmapCanvas"/>
<element name="TSharedRasterImage.FSaveStream"/>

<element name="TSharedRasterImage.FreeHandle">
<short>Frees the handle for the shared image.</short>
<descr>
<p>
Implements the abstract virtual method defined in the <var>TSharedImage</var> 
ancestor.
</p>
<p>
<var>FreeHandle</var> calls the <var>DeleteObject</var> routine to remove the 
handle from the widgetset class. FreeHandle sets the value for the internal 
handle to <b>0</b> (<b>zero</b>) to indicate that it is not assigned or no 
longer valid.
</p>
<p>
No actions are performed in the method when the handle is already set to 
<b>0</b>.
</p>
</descr>
<seealso>
<link id="TSharedImage.FreeHandle"/>
</seealso>
</element>

<element name="TSharedRasterImage.ReleaseHandle">
<short>
Returns the handle that has just been released.
</short>
<descr>
<p>
<var>ReleaseHandle</var> is a <var>TLCLHandle</var> function used to release a 
reference for the handle in the class instance. The return value contains the 
value for the handle on entry.
</p>
<p>
ReleaseHandle sets the handle value to 0 to indicate that it is no longer 
used or invalid. It does not call DeleteObject to remove the handle in 
widgetset classes.
</p>
<p>
ReleaseHandle is called from classes which support a specific image format, 
like TCustomBitmap and TIcon, when their ReleaseHandle method is called to 
free the handle for its shared image.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the return value.
</version>
<seealso>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TSharedRasterImage.ReleaseHandle.Result">
<short>
Value for the internal handle on entry to the method.
</short>
</element>

<element name="TSharedRasterImage.IsEmpty">
<short>Indicates if image content has been assigned for the shared image.
</short>
<descr>
<p>
<var>IsEmpty</var> is a <var>Boolean</var> function which indicates if image 
content has been assigned for the shared image. The return value is 
<b>True</b> when both the Handle and the <var>SaveStream</var> for the shared 
image are unassigned. Specifically, Handle contains <b>0</b> and SaveStream 
is <b>Nil</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TSharedRasterImage.IsEmpty.Result">
<short>
<b>True</b> if both the handle and the storage stream are not assigned.
</short>
</element>

<element name="TSharedRasterImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the constructor for the class instance, and calls the inherited 
constructor on entry.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TSharedRasterImage.CreateDefaultHandle">
<short>
Abstract virtual method not implemented in the class instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TSharedRasterImage.CreateDefaultHandle.AWidth">
<short/>
</element>
<element name="TSharedRasterImage.CreateDefaultHandle.AHeight">
<short/>
</element>
<element name="TSharedRasterImage.CreateDefaultHandle.ABPP">
<short/>
</element>

<element name="TSharedRasterImage.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
Frees resource allocated to <var>SaveStream</var> and <var>Handle</var>. 
Calls the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso/>
</element>

<element name="TSharedRasterImage.HandleAllocated">
<short>
Determines whether the Handle for the class has been allocated.
</short>
<descr>
<p>
Implements the abstract virtual method defined in <var>TSharedImage</var>. 
The return value is <b>True</b> when the internal handle contains a non-zero 
value.
</p>
</descr>
<seealso>
<link id="TSharedImage.HandleAllocated"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TSharedRasterImage.HandleAllocated.Result">
<short>
<b>True</b> when the handle for the shared image has been allocated.
</short>
</element>

<element name="TSharedRasterImage.BitmapCanvas">
<short>Canvas used to render the bitmap for the raster image.</short>
<descr>
<p>
<var>BitmapCanvas</var> is a <var>TCanvas</var> property which represents the 
drawing surface used to render the shared raster image.
</p>
<p>
<var>TSharedRasterImage</var> does not supply a value for the property. The 
property value is supplied by an image class, like <var>TRasterImage</var>, 
which uses the shared image paradigm. It normally contains an instance of 
<var>TBitmapCanvas</var> (or a descendant).
</p>
</descr>
<seealso>
<link id="TRasterImage"/>
<link id="TCanvas"/>
</seealso>
</element>

<element name="TSharedRasterImage.SaveStream">
<short>
<var>SaveStream</var> - the memory stream to be used for saving this image.
</short>
<descr>
<p>
<var>SaveStream</var> is a <var>TMemoryStream</var> property which contains 
the stream with the content for the shared image. 
<var>TSharedRasterImage</var> does not manipulate values in SaveStream; it is 
maintained by the image class that uses the shared image paradigm (like 
<var>TRasterImage</var> and descendants).
</p>
</descr>
<seealso>
<link id="TRasterImage"/>
</seealso>
</element>

<element name="TSharedRasterImageClass">
<short>
<var>TSharedRasterImageClass</var> - class of <var>TSharedRasterImage</var>.
</short>
<descr>
<p>
Class reference used to create new instances of <var>TSharedRasterImage</var>.
</p>
</descr>
<seealso>
<link id="TSharedRasterImage"/>
</seealso>
</element>

<element name="TRasterImage">
<short>
<var>TRasterImage</var> - base class for a number of graphic controls, 
including <var>TCustomBitmap</var> and <var>TCustomIcon</var>, which use a 
raster of dots to display graphic information.
</short>
<descr>
<p>
<var>TRasterImage</var> is a <var>TGraphic</var> descendant which implements 
the base class for images displayed as rasterized pixels on a canvas. It is 
used as the ancestor class for <var>TCustomBitmap</var> (<var>TBitmap</var>) 
and <var>TCustomIcon</var> (<var>TIcon</var>).
</p>
<p>
TRasterImage introduces the shared properties and methods common to the image 
formats. It is also provides a shared, reference-counted image that reduces 
resource requirements in graphical applications. Support is provided for 
bitmaps which use <b>DIB</b> (Device-Independent Bitmap) or <b>DDB</b> 
(Device-Dependent Bitmap) handles as well as common pixel storage formats 
used in the RawImage data. Handles are provided for the Bitmap, Mask, and 
Palette resources used in an image. TRasterImage also includes a Canvas used 
to render the pixels for the image.
</p>
<p>
Many of the methods in TRasterImage are defined as abstract virtual methods, 
and must be implemented in a descendent class to provide support for a 
specific image format.
</p>
</descr>
<seealso/>
</element>

<!-- private -->
<element name="TRasterImage.FCanvas"/>
<element name="TRasterImage.FTransparentColor"/>
<element name="TRasterImage.FTransparentMode"/>
<element name="TRasterImage.FUpdateCount"/>
<element name="TRasterImage.FUpdateCanvasOnly"/>
<element name="TRasterImage.FMasked"/>

<element name="TRasterImage.CanvasChanging">
<short>Performs actions needed before the canvas is modified.</short>
<descr>
<p>
<var>CanvasChanging</var> is used to perform actions needed before the canvas 
is modified. Ensures that the Handle for the raster image is not shared to 
prevent changes in copies.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.CanvasChanging.Sender">
<short>Object for the notification message.</short>
</element>

<element name="TRasterImage.CreateCanvas">
<short>
Creates a Canvas for the raster image, and assigns its event handlers.
</short>
<descr>
<p>
<var>CreateCanvas</var> is a method used to created and configure the
<var>Canvas</var> for the raster image. No actions are performed in the 
method when Canvas has already been assigned for the class instance.
</p>
<p>
A <var>TBitmapCanvas</var> instance is created and assigned to the member for 
the Canvas property. The <var>CanvasChanging</var> and <var>Changed</var> 
methods are assigned as the event handlers for the <var>OnChanging</var> and 
<var>OnChange</var> properties (respectively) in the canvas.
</p>
<p>
CreateCanvas is called when the value for the Canvas property is read and the 
member has not already been initialized.
</p>
</descr>
<seealso>
<link id="TRasterImage.Canvas"/>
<link id="TRasterImage.GetCanvas"/>
<link id="TRasterImage.OnChanging"/>
<link id="TRasterImage.OnChange"/>
<link id="TBitmapCanvas"/>
</seealso>
</element>

<element name="TRasterImage.CreateMask">
<short>
Ensures that a mask bitmap is allocated, configured, and applied when needed.
</short>
<descr>
<p>
No actions (other than clearing the MaskHandle) are performed in the method 
when the raster image is empty, has no Color, uses fixed transparency, or has 
no transparency color. CreateMask forces creation of temporary handles for 
the image and the mask when needed. They are used to load the mask bitmap for 
the image in BitmapHandle.
</p>
<p>
AColor contains the color that is used for transparent pixels in the mask for 
the image. When AColor contains clDefault and TransparentMode is not tmFixed, 
the color for the bottom left pixel in the mask bitmap is used as the 
transparency color.
</p>
<p>
CreateMask is used in the implementation of the Mask method.
</p>
</descr>
<seealso>
<link id="TRasterImage.Mask"/>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.TransparentMode"/>
<link id="TRasterImage.TransparentColor"/>
</seealso>
</element>
<element name="TRasterImage.CreateMask.AColor">
<short>Color used for transparent pixels in the image mask.</short>
</element>

<element name="TRasterImage.FreeCanvasContext">
<short>Frees the Device Context (DC) for the Canvas (when assigned).</short>
<descr>
<p>
<var>FreeCanvasContext</var> is a procedure used to free the device context 
(DC) for the <var>Canvas</var> in the raster image. No actions are performed 
in the method when Canvas has not been assigned (contains <b>Nil</b>).
</p>
<p>
FreeCanvasContext casts the Canvas to a <var>TBitmapCanvas</var> class 
instance and calls its <var>FreeDC</var> method.
</p>
<p>
FreeCanvasContext is called when values in the <var>BitmapHandle</var>, 
<var>MaskHandle</var>, or <var>Palette</var> properties are updated.
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TGraphic.Palette"/>
<link id="TRasterImage.Assign"/>
<link id="TRasterImage.Destroy"/>
<link id="TRasterImage.EndUpdate"/>
<link id="TRasterImage.SetHandle"/>
<link id="TRasterImage.ReleaseBitmapHandle"/>
<link id="TRasterImage.ReleaseMaskHandle"/>
<link id="TRasterImage.ReleasePalette"/>
<link id="TBitmapCanvas.FreeDC"/>
</seealso>
</element>

<element name="TRasterImage.GetCanvas">
<short>Gets the value for the Canvas property.</short>
<descr/>
<seealso>
<link id="TRasterImage.Canvas"/>
</seealso>
</element>
<element name="TRasterImage.GetCanvas.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetRawImage">
<short>Gets the value for the RawImage property.</short>
<descr>
<p>Calls <var>CreateCanvas</var> if a value has not been assigned for the 
property.
</p>
</descr>
<seealso>
<link id="TRasterImage.RawImage"/>
<link id="TRasterImage.CreateCanvas"/>
</seealso>
</element>
<element name="TRasterImage.GetRawImage.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetScanline">
<short>Gets the value for the indexed ScanLine property.</short>
<descr/>
<seealso>
<link id="TRasterImage.Scanline"/>
</seealso>
</element>
<element name="TRasterImage.GetScanline.Result">
<short>Value for the property.</short>
</element>
<element name="TRasterImage.GetScanline.ARow">
<short>Ordinal position for the row of pixels in the raster image.</short>
</element>

<element name="TRasterImage.GetTransparentColor">
<short>Gets the value for the TransparentColor property.</short>
<descr/>
<seealso>
<link id="TRasterImage.TransparentColor"/>
</seealso>
</element>
<element name="TRasterImage.GetTransparentColor.Result">
<short>Value for the property.</short>
</element>
<element name="TRasterImage.SetTransparentColor">
<short>Sets the value for the TransparentColor property.</short>
<descr/>
<seealso>
<link id="TRasterImage.TransparentColor"/>
</seealso>
</element>

<element name="TRasterImage.SetTransparentColor.AValue">
<short>Value for the property.</short>
</element>
<element name="TRasterImage.FSharedImage">
<short>Shared image with existing handles, canvases, etc.</short>
<descr/>
<seealso/>
</element>

<element name="TRasterImage.CanShareImage">
<short>
<var>CanShareImage</var> - returns <b>True</b> if specified class of image 
can be shared.
</short>
<descr>
<p>
<var>CanShareImage</var> is a <var>Boolean</var> function which indicate if 
the raster image uses a shareable image class. The return value is 
<b>True</b> when <var>AClass</var> matches the value returned from the 
<var>GetSharedImageClass</var> method, and is not 
<var>TSharedCustomBitmap</var>. Only images of the same class type can be 
shared.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.CanShareImage.Result">
<short><b>True</b> is the image class is shareable.</short>
</element>
<element name="TRasterImage.CanShareImage.AClass">
<short>Class type requested in the method.</short>
</element>

<element name="TRasterImage.Changed">
<short>
<var>Changed</var> - method to call when properties have changed.
</short>
<descr>
<p>
<var>Changed</var> is an overridden method in <var>TRasterImage</var> used to 
perform actions needed when property values in the class instance have been 
updated. No actions are performed when <var>BeginUpdate</var> has been called 
and a corresponding <var>EndUpdate</var> has not occurred.
</p>
<p>
Changed ensures that the <var>SaveStream</var> used in the shared image is 
freed.
</p>
<p>
Changed calls the inherited method in <var>TGraphic</var> to set the value 
for the <var>Modified</var> property and signal the <var>OnChange</var> event 
handler (when assigned).
</p>
</descr>
<seealso>
<link id="TGraphic.Changed"/>
</seealso>
</element>
<element name="TRasterImage.Changed.Sender">
<short>Object for the change notification.</short>
</element>

<element name="TRasterImage.CreateDefaultBitmapHandle">
<short>Gets the default value for the Bitmap handle used in the class 
instance.
</short>
<descr>
<p>Always returns 0 (for an unassigned handle) in TRasterImage.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.CreateDefaultBitmapHandle.Result">
<short/>
</element>
<element name="TRasterImage.CreateDefaultBitmapHandle.ADesc">
<short>Not used in the current implementation.</short>
</element>

<element name="TRasterImage.Draw">
<short>Renders the image to the specified canvas.</short>
<descr>
<p>
<var>Draw</var> is an overridden method used to render the raster image to 
the specified canvas using the given rectangle. Draw implements the abstract 
method defined in the ancestor class.
</p>
<p>
<var>DestCanvas</var> contains the canvas instance where the raster image is 
rendered.
</p>
<p>
<var>DestRect</var> contains the canvas coordinates in DestCanvas where the 
image is drawn.
</p>
<p>
No actions are performed in the method if the <var>Width</var> or the 
<var>Height</var> for the image is <b>0</b> (<b>zero</b>).
</p>
<p>
Draw ensures that valid handles are available in <var>BitMapHandle</var> and 
<var>MaskHandlle</var> (when <var>Masked</var> is <b>True</b>). No actions 
are performed in the method when a valid BitmapHandle does not exist.
</p>
<p>
Draw uses the Device Contexts for Canvas and DestCanvas, and calls the 
<var>StretchMaskBlt</var> routine in the LCL interface to render the image 
using methods in the widgetset. The <var>Changing</var> method in DestCanvas 
is called before drawing the image. The <var>Changed</var> method in 
DestCanvas is called after the image is drawn.
</p>
</descr>
<seealso>
<link id="TGraphic.Draw"/>
</seealso>
</element>
<element name="TRasterImage.Draw.DestCanvas">
<short>Canvas where the image is rendered.</short>
</element>
<element name="TRasterImage.Draw.DestRect">
<short>Canvas coordinates where the image is drawn.</short>
</element>

<element name="TRasterImage.GetEmpty">
<short>Gets the value for the Empty property.</short>
<descr>
<p>
Implements the abstract virtual method defined in the ancestor. The property 
value contains the result from the IsEmpty method in the shared raster image 
for the class instance.
</p>
</descr>
<seealso>
<link id="TSharedRasterImage.IsEmpty"/>
<link id="TGraphic.Empty"/>
</seealso>
</element>
<element name="TRasterImage.GetEmpty.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetHandle">
<short>
Gets the value for the handle used in the image.
</short>
<descr>
<p>
Calls HandleNeeded to ensure that valid handle(s) exist for the image. The 
return value is the handle in the shared raster image for the class instance.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the return value.
</version>
<seealso>
<link id="TRasterImage.HandleNeeded"/>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.MaskHandle"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TRasterImage.GetHandle.Result">
<short>
Handle for the raster image.
</short>
</element>

<element name="TRasterImage.GetBitmapHandle">
<short>Gets the value for the BitmapHandle property.</short>
<descr>
<p>
GetBitmapHandle is an abstract virtual method, and must be implemented in a 
descendent class to return the handle for a specific image type or 
implementation.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetBitmapHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetMasked">
<short>Gets the value for the Masked property.</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.GetMasked.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetMaskHandle">
<short>Gets the value for the MaskHandle property.</short>
<descr>
<p>
<var>GetMaskHandle</var> is an abstract virtual method, and must be 
implemented in a descendent class to return the mask handle for a specific 
image type or implementation.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetMaskHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetMimeType">
<short>Gets the value for the MimeType property.</short>
<descr/>
<seealso>
<link id="TGraphic.MimeType"/>
</seealso>
</element>
<element name="TRasterImage.GetMimeType.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetPixelFormat">
<short>
<var>GetPixelFormat</var> - returns the pixel format for the Image.
</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.GetPixelFormat.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetRawImagePtr">
<short>Gets a pointer with the raw image data.</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class to provide support for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetRawImagePtr.Result">
<short/>
</element>

<element name="TRasterImage.GetRawImageDescriptionPtr">
<short>Gets a pointer to the metadata for the raw image data.</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class to provide support for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetRawImageDescriptionPtr.Result">
<short/>
</element>

<element name="TRasterImage.GetTransparent">
<short>Gets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TGraphic.Transparent"/>
<link id="TGraphic.GetTransparent"/>
<link id="TRasterImage.TransparentMode"/>
<link id="TRasterImage.TransparentColor"/>
</seealso>
</element>
<element name="TRasterImage.GetTransparent.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetSharedImageClass">
<short>Gets the class reference used to create new shared image instances in 
the class.
</short>
<descr>
<p>
<var>GetSharedImageClass</var> is a class function used to get the class 
reference needed to create a shared image in the class instance. The return 
value the
<var>TSharedRasterImage</var> class type.
</p>
<p>
GetSharedImageClass is called from the implementation of the 
<var>Assign</var> method when a reference to an existing image is stored in 
the class instance. It is also used in <var>CanShareImage</var> to determine 
is the request image type is the one used in the current class instance.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetSharedImageClass.Result">
<short>Class reference used to create the shared image in the class.</short>
</element>

<element name="TRasterImage.GetHeight">
<short>Gets the value for the Height property.</short>
<descr/>
<seealso>
<link id="TGraphic.Height"/>
<link id="TGraphic.GetHeight"/>
</seealso>
</element>
<element name="TRasterImage.GetHeight.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.GetWidth">
<short>Gets the value for the Width property.</short>
<descr/>
<seealso>
<link id="TGraphic.Width"/>
<link id="TGraphic.GetWidth"/>
</seealso>
</element>
<element name="TRasterImage.GetWidth.Result">
<short>Value for the property.</short>
</element>

<element name="TRasterImage.BitmapHandleNeeded">
<short>
Ensures that handles for the image and mask are valid for the raw image data.
</short>
<descr>
<p>
<var>BitmapHandleNeeded</var> is a procedure used to ensures that handles for 
both the image and its mask are valid for the RawImage data. No actions are 
performed in the method when <var>BitmapHandleAllocated</var> returns 
<b>True</b>, or when RawImage data does not exist.
</p>
<p>
The <var>MaskHandle</var> is not created when:
</p>
<ul>
<li>A mask handle already exists.</li>
<li>The mask is created using the transparent color for the image.</li>
<li>Mask values do not exist in the raw image data.</li>
</ul>
<p>
BitmapHandleNeeded calls CreateCompatibleBitmaps to get the handles for the 
bitmap and mask using a pointer to the raw image data, and creates a default 
handle if CreateCompatibleBitmaps is unsuccessful. UpdateHandles is called to 
assign the new handles to BitmapHandle and MaskHandle (when used).
</p>
<p>
BitmapHandleNeeded is called from the Draw method prior to performing 
operations using the Canvas for the class instance. It is also used when the 
Canvas creates a new DC (Device Context).
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.HandleNeeded">
<short>
Ensures that a handle for the image is allocated in widgetset classes.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.MaskHandleNeeded">
<short>
Ensures that a handle is allocated for the image mask (when needed).
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.PaletteNeeded">
<short>Ensures that a handle for the palette is allocated.</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.InternalReleaseBitmapHandle">
<short>
<var>InternalReleaseBitmapHandle</var> - releases Bitmap Handle and returns 
its value.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.InternalReleaseBitmapHandle.Result">
<short/>
</element>

<element name="TRasterImage.InternalReleaseMaskHandle">
<short>
<var>InternalReleaseMaskHandle</var> - releases Mask Handle and returns its 
value.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.InternalReleaseMaskHandle.Result">
<short/>
</element>

<element name="TRasterImage.InternalReleasePalette">
<short>
<var>InternalReleasePalette</var> - releases Palette Handle and returns its 
value.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.InternalReleasePalette.Result">
<short/>
</element>

<element name="TRasterImage.SetBitmapHandle">
<short>Sets the value for the BitmapHandle property.</short>
<descr/>
<seealso>
<link id="TRasterImage.BitmapHandle"/>
</seealso>
</element>
<element name="TRasterImage.SetBitmapHandle.AValue">
<short>New value for the property.</short>
</element>

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

<element name="TRasterImage.SetMaskHandle">
<short>Sets the value for the MaskHandle property.</short>
<descr/>
<seealso>
<link id="TRasterImage.MaskHandle"/>
</seealso>
</element>
<element name="TRasterImage.SetMaskHandle.AValue">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.SetTransparent">
<short>Sets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TGraphic.Transparent"/>
</seealso>
</element>
<element name="TRasterImage.SetTransparent.AValue">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.UnshareImage">
<short>Unshares a shared image when its handle is changed or the save stream 
is freed.
</short>
<descr>
<p>
<var>UnshareImage</var> - stops an image from being shared: if 
<var>CopyContent</var> is <b>True</b>, the Image gets copied. Declared as an 
abstract virtual method. Must be implemented in a descendent class.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.UnshareImage.CopyContent">
<short/>
</element>

<element name="TRasterImage.UpdateHandles">
<short>Updates image handles when the raw image data is loaded.
</short>
<descr>
<p>
<var>UpdateHandles</var> is called when handles are created for the raw image 
in the class instance. Returns <b>True</b> when the Handle for the bitmap 
image is changed in the method. Declared as an abstract virtual method. Must 
be implemented in a descendent class.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.UpdateHandles.Result">
<short><b>True</b> when the handle has changed for the image.</short>
</element>
<element name="TRasterImage.UpdateHandles.ABitmap">
<short>Handle for the Bitmap.</short>
</element>
<element name="TRasterImage.UpdateHandles.AMask">
<short>Handle for the Mask.</short>
</element>

<element name="TRasterImage.SaveStreamNeeded">
<short>Ensures that the save stream for the shared image is allocated.</short>
<descr>
<p>
<var>SaveStreamNeeded</var> is a procedure used to ensure that the internal 
save stream for the shared image is allocated.
</p>
<p>
Raises an <var>EInvalidGraphicOperation</var> exception if 
<var>BeginUpdate</var> (without a matching <var>EndUpdate</var>) is active in 
the class instance.
</p>
<p>
No actions a performed in the method when a <var>TMemoryStream</var> has 
already been assigned as the save stream for the internal 
<var>TSharedRasterImage</var> instance.
</p>
<p>
SaveStreamNeeded is called from methods like <var>SaveToStream</var> and 
<var>WriteData</var>, and occurs before operations which read or write to the 
save stream.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.FreeSaveStream">
<short>Frees the save stream assigned to the internal shared image.</short>
<descr>
<p>
<var>FreeSaveStream</var> is a procedure used to free the <var>TStream</var> 
instance assigned as the SaveStream in the shared image. No actions are 
performed in the method when the SaveStream has not been assigned in the 
shared image.
</p>
<p>
FreeSaveStream calls <var>UnshareImage</var> to discard and recreate the 
shared image class instance in the class. The TStream instance in the shared 
image is freed prior to exiting from the method.
</p>
<p>
FreeSaveStream is used in the implementation of methods like: 
<var>Assign</var>, <var>Clear</var>, <var>EndUpdate</var>, and 
<var>Changed</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.ReadData">
<short>Reads image data during component streaming.</short>
<descr>
<p>
<var>ReadData</var> is a procedure used to read binary data for the graphic 
from the specified stream. It is used by the
<var>TFiler</var> instance which loads data during component streaming. It is 
overridden in TRasterImage to provide support for TRasterImageClass and 
descendants when loading raw image data.
</p>
<p>
Versions of Lazarus prior to 0.9.26 did not maintain a relationship between 
graphics formats and image class types. ReadData checks the LongInt value at 
the beginning of the stream to determine the version number for the streaming 
format. When a newer version is used, the signature for the image format is 
read from the Stream. If the image class used is not derived from the 
TRasterImageClass type, additional conversion is needed to load the raw image 
data and assign the values to the class instance.
</p>
<p>
ReadData calls <var>LoadFromStream</var> to complete the operation.
</p>
</descr>
<seealso>
<link id="TGraphic.ReadData"/>
</seealso>
</element>
<element name="TRasterImage.ReadData.Stream">
<short>Stream with the raw image data read in the method.</short>
</element>

<element name="TRasterImage.ReadStream">
<short>
<var>ReadStream</var> - loads image data into the raw image.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class.
This method should not call <var>Changed()</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.ReadStream.AStream">
<short>Stream with the image data.</short>
</element>
<element name="TRasterImage.ReadStream.ASize">
<short>Number of bytes read from the stream.</short>
</element>

<element name="TRasterImage.SetSize">
<short>
<var>SetSize</var> - specifies height and width of Image.
</short>
<descr>
<p>
<var>SetSize</var> is used to set the <var>Height</var> and
<var>Width</var> for the image to the specified values.
</p>
<p>
SetSize is an abstract virtual method in <var>TRasterImage</var>, and must be 
implemented in a descendent class to perform actions needed to resize the raw 
image data for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.SetSize.AWidth">
<short>New width for the image.</short>
</element>
<element name="TRasterImage.SetSize.AHeight">
<short>New height for the image.</short>
</element>

<element name="TRasterImage.SetHandle">
<short>
Sets the handle used for the image.
</short>
<descr>
<p>
<var>SetHandle</var> stores the specified <var>TLCLHandle</var> value as the 
handle used for the image. The handle is actually the one used by the internal
<var>TSharedRasterImage</var> instance for the class. No actions are 
performed in the method when the value in AHandle is the same as the handle 
in the shared image instance.
</p>
<p>
SetHandle frees the device context for the bitmap <var>Canvas</var>, unshares 
the shared image, and discards its image data. The handle in AValue is 
assigned to the internal shared image. When no other active update processes 
are pending, the <var>Changed</var> method is called.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the AValue parameter.
</version>
<seealso>
<link id="TRasterImage.Changed"/>
<link id="TRasterImage.Canvas"/>
<link id="TRasterImage.BeginUpdate"/>
<link id="TRasterImage.EndUpdate"/>
<link id="TRasterImage.SetHandles"/>
<link id="TSharedImage.Reference"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TRasterImage.SetHandle.AValue">
<short>New value for the Handle.</short>
</element>

<element name="TRasterImage.SetHeight">
<short>Sets the value for the Height property.</short>
<descr>
<p>
Calls <var>SetSize</var> using the existing value for the <var>Width</var> 
property and the value for the <var>AHeight</var> parameter.
</p>
</descr>
<seealso>
<link id="TRasterImage.SetSize"/>
<link id="TGraphic.Height"/>
</seealso>
</element>
<element name="TRasterImage.SetHeight.AHeight">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.SetWidth">
<short>Sets the value for the Width property.</short>
<descr>
<p>
Calls <var>SetSize</var> using the existing value for the <var>Height</var> 
property and the value for the <var>AWidth</var> parameter.
</p>
</descr>
<seealso>
<link id="TRasterImage.SetSize"/>
<link id="TGraphic.Width"/>
</seealso>
</element>
<element name="TRasterImage.SetWidth.AWidth">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.SetTransparentMode">
<short>Sets the value for the TransparentMode property.</short>
<descr>
<p>
No actions are performed in the method when AValue is the same as the 
existing value for the property.
</p>
<p>
When <var>AValue</var> contains <var>tmAuto</var>, the <var>clDefault</var> 
constant is used as the value for the property. Otherwise, the 
<var>RequestTransparentColor</var> method is called to get the color stored 
in the bottom-left pixel in the raw image data.
</p>
</descr>
<seealso>
<link id="TRasterImage.TransparentMode"/>
<link id="TRasterImage.RequestTransparentColor"/>
<link id="TTransparentMode"/>
<link id="clDefault"/>
</seealso>
</element>
<element name="TRasterImage.SetTransparentMode.AValue">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.SetPixelFormat">
<short>Sets the value for the PixelFormat property.</short>
<descr>
<p>
Defined as an abstract virtual method. Must be implemented in a descendent 
class to use the storage format supported for a specific image format.
</p>
</descr>
<seealso>
<link id="TRasterImage.PixelFormat"/>
</seealso>
</element>
<element name="TRasterImage.SetPixelFormat.AValue">
<short>New value for the property.</short>
</element>

<element name="TRasterImage.WriteData">
<short>Writes raw image data to the specified stream.</short>
<descr>
<p>
<var>WriteData</var> is a method used to write raw image data to the stream 
specified in <var>Stream</var>. WriteData is used by the <var>TFiler</var> 
instance during LCL component streaming.
</p>
<p>
WriteData ensures that an internal save stream is available for the shared 
image in the class instance. An <var>FPImageException</var> is raised when a 
valid stream could not be created for the image data.
</p>
<p>
WriteData is an overridden method with support for writing a header with the 
size for the raw image data. WriteData re-implements the method, and does not 
call the inherited method - but does call <var>SaveToStream</var> to 
complete the operation (just like the ancestor).
</p>
</descr>
<errors>
Raises an FPImageException with the message in 
<var>rsErrorWhileSavingBitmap</var> when a stream could not be created for 
the shared image data.
</errors>
<seealso>
<link id="TGraphic.WriteData"/>
<link id="TRasterImage.ReadData"/>
<link id="TRasterImage.WriteStream"/>
<link id="TGraphic.ReadData"/>
<link id="#rtl.classes.TFiler">TFiler</link>
</seealso>
</element>
<element name="TRasterImage.WriteData.Stream">
<short>Stream instance where image data is written in the method.</short>
</element>

<element name="TRasterImage.WriteStream">
<short>Writes the image content to the specified stream instance.</short>
<descr>
<p>
<var>WriteStream</var> is an abstract virtual method, and must be implemented 
in a descendant class to write data for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.WriteStream.AStream">
<short>Stream where image data is written in the method.</short>
</element>

<element name="TRasterImage.RequestTransparentColor">
<short>
Gets the color used to represent transparent pixels in the image.
</short>
<descr>
<p>
<var>RequestTransparentColor</var> is a <var>TColor</var> function used to 
resolve the color value for transparent pixels in the image. It is used to 
translate the value clDefault in the TransparentColor property to an actual 
color value.
</p>
<p>
When TransparentColor is set to clDefault, the return value for the method is 
used as the color for transparent pixels. The return value is the pixel color 
stored at the bottom-left corner of the image (x = 0, y = Height-1).
</p>
<p>
If TransparentColor contains a different TColor value, it is used in its 
unmodified form.
</p>
<p>
When <var>Empty</var> returns <b>True</b>, raw image data is not available and 
the return value is set to <var>clNone</var>.
</p>
<p>
RequestTransparentColor is also called when the value in TransparentMode is 
changed to tmAuto. If TransparentMode is set to tmFixed, the TransparentColor 
is used as specified.
</p>
</descr>
<seealso>
<link id="TRasterImage.TransparentColor"/>
<link id="TRasterImage.TransparentMode"/>
<link id="TGraphic.Empty"/>
<link id="TTransparentMode"/>
</seealso>
</element>

<element name="TRasterImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and 
calls the inherited constructor on entry. Create ensures that the internal 
shared image instance is created and referenced for the implementation.
</p>
<p>
Create sets the default value for the <var>TransparentColor</var> property to 
<var>clDefault</var>. This is done for Delphi compatibility where clDefault 
indicates that the bottom left pixel in the image is used as the transparent 
color.
</p>
</descr>
<seealso>
<link id="TRasterImageClass"/>
<link id="TRasterImage.TransparentColor"/>
<link id="TGraphic.Create"/>
</seealso>
</element>

<element name="TRasterImage.Destroy">
<short>
<var>Destroy</var> is the destructor for <var>TRasterImage</var>: frees the 
canvas, and releases image then calls inherited
<var>Destroy</var>.
</short>
<descr/>
<seealso>
<link id="#rtl.classes.TPersistent.Destroy">TPersistent.Destroy</link>
</seealso>
</element>

<element name="TRasterImage.Assign">
<short>
<var>Assign</var> - copies details from Source according to data type.
</short>
<descr>
<p>
<var>Assign</var> is a procedure used to copy values from the specified 
<var>TPersistent</var> object into the current class instance. Assign is 
overridden to handle using a <var>TRasterImage</var> or 
<var>TFPCustomImage</var> instance in the
<var>Source</var> parameter.
</p>
<p>
No actions are performed in the method when Source is the same class instance 
as the current class instance (Self).
</p>
<p>
When Source is a TRasterImage instance, the following actions are performed:
</p>
<ul>
<li>Clears an allocated mask handle by calling UpdateHandles.</li>
<li>
Sets TransparentMode, TransparentColor, and Masked to the values in Source.
</li>
<li>Frees an existing Canvas context when shared images are not the same.</li>
<li>
Makes a copy of the shared image in Source when they are of the same image 
class.
</li>
<li>
Creates a new shared image and copies its raw image data when they are NOT of 
the same image class.
</li>
<li>Copies an allocated mask handle from Source.</li>
<li>
Calls Changed to update Modified and signal the OnChange event handler (when 
assigned).
</li>
</ul>
<p>
When Source is a TFPCustomImage instance, the following actions are performed:
</p>
<ul>
<li>Copies the raw image data from Source using its bitmap and mask 
handles.</li>
<li>
Calls UpdateHandles to reflect the new handles in the current class instance.
</li>
<li>
Calls Changed to update Modified and signal the OnChange event handler (when 
assigned).
</li>
</ul>
<p>
For other TPersistent descendants, the inherited method is called using 
Source as an argument.
</p>
</descr>
<seealso>
<link id="TGraphic.Assign"/>
</seealso>
</element>
<element name="TRasterImage.Assign.Source">
<short>Persistent object with values copied in the method.</short>
</element>

<element name="TRasterImage.Clear">
<short>Removes raw image data and frees the internal save stream.</short>
<descr>
<p>
<var>Clear</var> is an overridden method used to remove raw image data and 
free the internal save stream in the class instance. No actions are performed 
in the method when <var>Empty</var> returns
<b>True</b>.
</p>
<p>
Clears set the values in <var>Height</var> and <var>Width</var> to <b>0</b> 
(<b>zero</b>) to reflect the new size for the image. Clear calls the 
<var>Changed</var> method when a <var>BeginUpdate</var> process is not active.
</p>
</descr>
<seealso>
<link id="TRasterImage.Changed"/>
<link id="TRasterImage.BeginUpdate"/>
<link id="TRasterImage.EndUpdate"/>
<link id="TGraphic.Empty"/>
<link id="TGraphic.Clear"/>
</seealso>
</element>

<element name="TRasterImage.BeginUpdate">
<short>
<var>BeginUpdate</var> - start the update process.
</short>
<descr>
<p>
<var>BeginUpdate</var> is a method used to initiate an update to the image.
</p>
<p>
BeginUpdate uses the value in an internal member to track the number of 
active updates for the image. When the counter has a non-zero value, 
BeginUpdate has already been called and <var>EndUpdate</var> has not yet been 
executed. If the value in the counter is <b>0</b>, the shared image is 
released and the value in <var>ACanvasOnly</var> is stored in the class 
instance.
</p>
<p>
BeginUpdate can raise an <var>EInvalidGraphicOperation</var> exception if a 
pending update was for a canvas only and a subsequent update requests a full 
update. The default value for ACanvasOnly is <b>False</b> (full update).
</p>
<p>
BeginUpdate increments the value in the internal counter prior to exiting 
from the method.
</p>
</descr>
<errors>
Raises an EInvalidGraphicOperation exception with the message in 
<var>rsRasterImageUpdateAll</var> if a pending update was for a canvas only 
and a subsequent update requests a full update.
</errors>
</element>
<element name="TRasterImage.BeginUpdate.ACanvasOnly">
<short>
<b>True</b> when only the Canvas is updating; <b>False</b> when image data is 
loading.
</short>
</element>

<element name="TRasterImage.EndUpdate">
<short>
<var>EndUpdate</var> - finishes the update process.
</short>
<descr>
<p>
<var>EndUpdate</var> finishes an update process.
</p>
<p>
EndUpdate maintains the value in the internal counter used to track active 
update processes started by calling <var>BeginUpdate</var>. It decrements the 
counter when it has a non-zero value, and exits immediately.
</p>
<p>
An <var>EInvalidGraphicOperation</var> exception is raised if the counter is 
already at <b>0</b> (<b>zero</b>) when EndUpdate is called.
</p>
<p>
When a full update was requested (loading image data), the device context for 
the <var>Canvas</var> and an allocated <var>BitmapHandle</var> are freed.
</p>
<p>
<var>AStreamIsValid</var> indicates if the save stream for the shared image 
is valid. When set to <b>False</b>, the save stream is freed. Any operation 
that modifies the save stream for the shared image should be performed within 
bracketed BeginUpdate / EndUpdate calls.
</p>
<p>
EndUpdate calls <var>Changed</var> to set the value in <var>Modified</var> 
and to signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<errors>
Raises an EInvalidGraphicOperation exception with the message in 
rsRasterImageEndUpdate if the counter is already at <b>0</b> (<b>zero</b>) 
when EndUpdate is called.
</errors>
</element>
<element name="TRasterImage.EndUpdate.AStreamIsValid">
<short>Indicates if the save stream for a shared image is valid.</short>
</element>

<element name="TRasterImage.FreeImage">
<short>Frees the image by resetting its handle.</short>
<descr>
<p>
Calls SetHandle to set the bitmap handle to <b>0</b> (<b>zero</b>). 
Generally, FreeImage is overridden and used in the destructor for descendent 
classes.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.BitmapHandleAllocated">
<short>
<var>BitmapHandleAllocated</var> - returns <b>True</b> if a handle has been 
allocated for the Bitmap.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class to provide support for a specific image format.
</p>
</descr>
<seealso>
<link id="TRasterImage.MaskHandleAllocated"/>
</seealso>
</element>
<element name="TRasterImage.BitmapHandleAllocated.Result">
<short>
<b>True</b> when a handle has been allocated for bitmap data in the image.
</short>
</element>

<element name="TRasterImage.MaskHandleAllocated">
<short>
<var>MaskHandleAllocated</var> - returns <b>True</b> if a handle has been 
allocated for the Mask.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class to provide support for a specific image format.
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandleAllocated"/>
</seealso>
</element>
<element name="TRasterImage.MaskHandleAllocated.Result">
<short>
<b>True</b> when a handle has been allocated for mask data in the image.
</short>
</element>

<element name="TRasterImage.PaletteAllocated">
<short>
<var>PaletteAllocated</var> - returns <b>True</b> if a Palette has been 
allocated.
</short>
<descr>
<p>
Declared as an abstract virtual method. Must be implemented in a descendent 
class to provide support for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.PaletteAllocated.Result">
<short>
<b>True</b> when a handle has been allocated for the palette in the image.
</short>
</element>

<element name="TRasterImage.LoadFromBitmapHandles">
<short>
Loads the image data from the specified Bitmap and Mask handles.
</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.LoadFromBitmapHandles.ABitmap">
<short>Bitmap handle for the image.</short>
</element>
<element name="TRasterImage.LoadFromBitmapHandles.AMask">
<short>Mask handle for the image.</short>
</element>
<element name="TRasterImage.LoadFromBitmapHandles.ARect">
<short>Pointer to the source rectangle for the image data.</short>
</element>

<element name="TRasterImage.LoadFromDevice">
<short>Loads image data from the specified device context.</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.LoadFromDevice.DC">
<short>Device context used for the operation.</short>
</element>

<element name="TRasterImage.LoadFromStream">
<short>
<var>LoadFromStream</var> - loads data for the image from a specified data 
stream, optionally supplying its size.
</short>
<descr>
<p>
<var>LoadFromStream</var> is an overloaded method in <var>TRasterImage</var> 
used to load image data from the <var>TStream</var> instance specified in
<var>AStream</var>.
</p>
<p>
One of the overloaded variants provides an <var>ASize</var> argument which 
contains the number of bytes to read from the stream. When the ASize argument 
is omitted, the remaining content in the stream is read starting at the 
current position in the stream.
</p>
<p>
LoadFromStream calls <var>BeginUpdate</var> to increment the internal update 
counter in the class instance. <var>EndUpdate</var> is called when the stream 
has been processed in the method.
</p>
<p>
LoadFromStream discards an existing shared image and its save stream, and 
clears existing handles and raw image data in the class instance. No 
additional actions are performed in the method when ASize is <b>0</b> 
(<b>zero</b>).
</p>
<p>
LoadFromStream re-creates the save stream for the shared image and copies the 
content in AStream to the save stream. The <var>ReadStream</var> method is 
called to load the image data for the class instance.
</p>
</descr>
<seealso>
<link id="TRasterImage.BeginUpdate"/>
<link id="TRasterImage.EndUpdate"/>
<link id="TRasterImage.Clear"/>
<link id="TRasterImage.ReadStream"/>
</seealso>
</element>
<element name="TRasterImage.LoadFromStream.AStream">
<short>Stream with the image data loaded in the method.</short>
</element>
<element name="TRasterImage.LoadFromStream.ASize">
<short>Number of byte to read from the stream.</short>
</element>

<element name="TRasterImage.LoadFromMimeStream">
<short>Loads image data from a stream for the specified MIME type.</short>
<descr>
<p>
<var>LoadFromMimeStream</var> is an overridden method in 
<var>TRasterImage</var>.
</p>
<p>
LoadFromMimeStream examines the <var>ClassType</var> for the image to 
determine if it is handled in the overridden method. <var>TBitmap</var>, 
<var>TPixmap</var>, and <var>TCustomIcon</var> descendants are handled in the 
method.
</p>
<p>
LoadFromMimeStream compares the value in <var>AMimeType</var> to the 
<var>PredefinedClipboardMimeTypes</var> values defined in LCL. If AMimeType 
matches one of the values defined for TPixmap or TBitmap, then the 
<var>LoadFromStream</var> method is called to load image data from 
<var>AStream</var>.
</p>
<p>
Other ClassType or MIME type values cause the inherited 
<var>LoadFromMimeStream</var> method to be called.
</p>
<p>
LoadFromMimeStream is used in the implementation of the 
<var>AssignGraphic</var> method in <var>TClipboard</var>.
</p>
</descr>
<seealso>
<link id="TGraphic.LoadFromMimeStream"/>
<link id="#lcl.clipbrd.TClipboard">TClipboard</link>
</seealso>
</element>
<element name="TRasterImage.LoadFromMimeStream.AStream">
<short>Stream with the image data loaded in the method.</short>
<short/>
</element>
<element name="TRasterImage.LoadFromMimeStream.AMimeType">
<short>MIME type for the image data in the stream.</short>
</element>

<element name="TRasterImage.LoadFromRawImage">
<short>Loads image data from the specified TRawImage instance.</short>
<descr>
<p>
<var>LoadFromRawImage</var> is a procedure used to load raw image data in
<var>AImage</var> into the class instance.
</p>
<p>
LoadFromRawImage calls <var>BeginUpdate</var> to increment the update process 
count, and calls <var>EndUpdate</var> when the image data has been loaded in 
the method.
</p>
<p>
LoadFromRawImage calls <var>Clear</var> to free the internal save stream for 
the class instance, and calls <var>SetSize</var> to reflect an empty image. 
No additional actions are performed in the method If AImage contains an empty 
image.
</p>
<p>
The Image Descriptor in AImage is assigned to the internal 
<var>TRawImage</var> instance to capture the image metadata.
</p>
<p>
<var>ADataOwner</var> indicates if the internal TRawImage instance is the 
owner for the image data in AImage. When set to <b>True</b>, values in AImage 
data are assigned directly to the pointer to the internal raw image data. 
Values include the size and content for the image data, the image mask, and 
the palette. When set to <b>False</b>, storage for values is allocated using 
<var>GetMem</var> and copied from AImage using the <var>Move</var> routine.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>
<element name="TRasterImage.LoadFromRawImage.AImage">
<short>Raw image instance loaded in the method.</short>
</element>
<element name="TRasterImage.LoadFromRawImage.ADataOwner">
<short><b>True</b> if the image owns the raw image data.</short>
</element>

<element name="TRasterImage.LoadFromIntfImage">
<short>Loads the image from a TLazIntfImage instance.
</short>
<descr>Calls the CreateBitmaps method to create the image and mask handles 
used to access the image data.
Calls SetHandles to apply the image and mask handles to the class instance.
</descr>
<seealso/>
</element>
<element name="TRasterImage.LoadFromIntfImage.IntfImage">
<short>TLazIntfImage instance with image data loaded in the method.</short>
</element>

<element name="TRasterImage.SaveToStream">
<short>Saves image data to the specified stream.</short>
<descr>
<p>
<var>SaveToStream</var> is an overridden method used to write image data to 
the stream specified in <var>AStream</var>.
</p>
<p>
SaveToStream calls <var>SaveStreamNeeded</var> to ensure that an internal 
save stream exists in the class instance. An 
<var>EInvalidGraphicOperation</var> exception is raised in SaveStreamNeeded 
when the active update count for the count is not 0 (zero). An 
<var>FPImageException</var> is raised when a TMemoryStream instance could not 
be created and initialized in SaveStreamNeeded.
</p>
<p>
SaveToStream resets the internal save to stream to its origin, and resizes 
AStream to include sufficient storage for the values in the internal save 
stream. The <var>CopyFrom</var> method in AStream is called to store the 
content for the internal shared image. An <var>FPImageException</var> is 
raised when the number of bytes written in the CopyFrom method does not match 
the size for the internal save stream.
</p>
</descr>
<errors>
<p>
Raises an FPImageException exception when the number of bytes written to the 
stream does not match the size for the raw image data.
</p>
<p>
An Exception may be raised in SaveToStream (called in the method).
</p>
</errors>
<seealso>
<link id="TGraphic.SaveToStream"/>
</seealso>
</element>
<element name="TRasterImage.SaveToStream.AStream">
<short>Stream where the image data is stored.</short>
</element>

<element name="TRasterImage.GetSupportedSourceMimeTypes">
<short>
Gets a list of supported MIME types for image data used in the image type.
</short>
<descr>
<p>
<var>GetSupportedSourceMimeTypes</var> is an overridden method in 
<var>TRasterImage</var> used to get the list of MIME types used for image 
data in the image type. <var>List</var> is the <var>TStrings</var> instance 
where the list of supported MIME types is stored.
</p>
<p>
GetSupportedSourceMimeTypes uses the value in <var>ClassType</var> to 
determine if the request is handled in the overridden method. It is handled 
in the method when ClassType is <var>TBitmap</var>, <var>TPixmap</var>, or 
<var>TCustomIcon</var>. Values in the <var>PredefinedClipboardMimeTypes</var> 
constant for the TBitmap and TPixmap types are added to List. When ClassType 
contains any other type, the inherited method is called.
</p>
<p>
GetSupportedSourceMimeTypes is called from the <var>AssignPicture</var> 
method in <var>TClipboard</var>.
</p>
</descr>
<seealso>
<link id="TGraphic.GetSupportedSourceMimeTypes"/>
<link id="#lcl.clipbrd.TClipboard">TClipboard</link>
</seealso>
</element>
<element name="TRasterImage.GetSupportedSourceMimeTypes.List">
<short/>
</element>

<element name="TRasterImage.GetSize">
<short>
Gets the image Width and Height from the metadata for the raw image.
</short>
<descr>
<p>
Calls <var>GetRawImageDescriptionPtr</var> to get a pointer to the image 
descriptor in the raw image data. When the image descriptor is <b>Nil</b>, or 
its Format contains <var>ricfNone</var>, the values in <var>AWidth</var> and 
<var>AHeight</var> are both set to <b>0</b> (<b>zero</b>). Otherwise, the 
<var>Width</var> and <var>Height</var> values in the image descriptor are 
used as the output parameter values.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.GetSize.AWidth">
<short>Width for the raw image data.</short>
</element>
<element name="TRasterImage.GetSize.AHeight">
<short>Height for the raw image data.</short>
</element>

<element name="TRasterImage.Mask">
<short>Applies the color used for transparent pixels to the image.</short>
<descr>
<p>
Calls CreateMask to create and apply the mask handle required for the fixed 
color transparency.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.Mask.ATransparentColor">
<short>Color used to represent transparent pixels in the mask.</short>
</element>

<element name="TRasterImage.SetHandles">
<short>
Sets handles for the bitmap and the mask to the specified values.
</short>
<descr>
<p>
<var>SetHandles</var> is a procedure used to set the handles for the bitmap 
and the mask to the values specified in <var>ABitmap</var> and 
<var>AMask</var>. SetHandles is an abstract virtual method in 
<var>TRasterImage</var>, and must be implemented in a descendent class to 
store handle values in the shared image used in the image format.
</p>
</descr>
<seealso>
<link id="TCustomBitmap.SetHandles"/>
<link id="TCustomIcon.SetHandles"/>
</seealso>
</element>
<element name="TRasterImage.SetHandles.ABitmap">
<short>Handle to use for the Bitmap.</short>
</element>
<element name="TRasterImage.SetHandles.AMask">
<short>Handle to use for the Mask.</short>
</element>

<element name="TRasterImage.ReleaseBitmapHandle">
<short>Releases the handle in the shared image without freeing the 
BitmapHandle.
</short>
<descr>
<p>
<var>ReleaseBitmapHandle</var> is a HBITMAP function used to release the 
handle for the shared image without freeing it. The return value contains the 
handle value in the shared image when its <var>ReleaseHandle</var> method is 
called.
</p>
<p>
Calls <var>BitmapHandleNeeded</var> to ensure that the 
<var>BitmapHandle</var> and optional <var>MaskHandle</var> are valid for the 
image type. Calls <var>FreeCanvasContext</var> to free the canvas context 
when the handle been has changed.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.ReleaseBitmapHandle.Result">
<short>
Value for the handle in the shared image before it is released.
</short>
</element>

<element name="TRasterImage.ReleaseMaskHandle">
<short>
<var>ReleaseMaskHandle</var> - releases the Handle used for the Mask.
</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.ReleaseMaskHandle.Result">
<short/>
</element>

<element name="TRasterImage.ReleasePalette">
<short>
<var>ReleasePalette</var> - release the Handle used for the Palette.
</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.ReleasePalette.Result">
<short/>
</element>

<element name="TRasterImage.CreateIntfImage">
<short>
<var>CreateIntfImage</var> - creates an image on the Interface.
</short>
<descr/>
<seealso/>
</element>
<element name="TRasterImage.CreateIntfImage.Result">
<short/>
</element>

<element name="TRasterImage.Canvas">
<short>
The <var>Canvas</var> where the raster image is rendered.
</short>
<descr>
<p>
<var>Canvas</var> is a read-only <var>TCanvas</var> property which contains 
the drawing surface where the data for the image is rendered.
</p>
<p>
Reading the value for the property causes the <var>CreateCanvas</var> method 
to be called when the member has not been initialized. In TRasterImage, the 
Canvas member is an instance of <var>TBitmapCanvas</var>. It is configured to 
use the <var>CanvasChanging</var> and <var>Changed</var> methods for the 
<var>OnChanging</var> and <var>OnChange</var> event handlers in the canvas.
</p>
<p>
The device context (or handle) for the Canvas is modified when the 
<var>BitmapHandle</var> or <var>MaskHandle</var> are assigned or released for 
the class instance.
</p>
<p>
Canvas is used in the <var>Draw</var> method to get the rendered content 
transferred to a destination canvas. Canvas is also used to auto-detect the 
<var>TransparentColor</var> using the <var>Pixels</var> in the image.
</p>
</descr>
<seealso/>
</element>

<element name="TRasterImage.HandleAllocated">
<short>
Indicates if a handle has been assigned for the shared image in the class.
</short>
<descr>
<p>
<var>HandleAllocated</var> is a <var>Boolean</var> function which indicates 
if a valid handle has been assigned for the internal 
<var>TSharedRasterImage</var> instance in the class. The return value is 
<b>True</b> when the handle in the shared image contains a <b>non-zero</b> 
value.
</p>
<p>
Use <var>BitmapHandleAllocated</var> to determine if a <var>HBITMAP</var> 
handle has been assigned for the Bitmap in the class instance.
</p>
<p>
Use <var>MaskHandleAllocated</var> to determine if a <var>HBITMAP</var> 
handle has been assigned for the Mask in the class instance.
</p>
</descr>
<seealso/>
</element>
<element name="TRasterImage.HandleAllocated.Result">
<short>
<b>True</b> when a handle has been assigned for the shared image.
</short>
</element>

<element name="TRasterImage.BitmapHandle">
<short>
<var>BitmapHandle</var> - the Handle that has been allocated for the Bitmap.
</short>
<descr/>
<seealso/>
</element>

<element name="TRasterImage.Masked">
<short>
<var>Masked</var> - returns <b>True</b> if a Mask is being applied.
</short>
<descr/>
<seealso/>
</element>

<element name="TRasterImage.MaskHandle">
<short>The handle allocated for the Bitmap Mask.</short>
<descr/>
<seealso/>
</element>

<element name="TRasterImage.PixelFormat">
<short>Storage format for the Pixels in the Image.</short>
<descr>
<p>
<var>PixelFormat</var> is a <var>TPixelFormat</var> property which contains 
the storage format for colors in <var>Pixels</var>. The default value is 
<var>pfDevice</var> and indicates that the source device determines the pixel 
format. The value is PixelFormat indicates the number of bits required to 
store the color, and the maximum number of colors allowed for a given pixel.
</p>
<p>
See <link id="TPixelFormat">TPixelFormat</link> for the values in the 
enumeration and their meanings.
</p>
<p>
PixelFormat is essentially a read-only property in <var>TRasterImage</var>. 
The read and write access specifiers are declared as abstract virtual 
methods, and are overridden in descendent classes to access raw image data 
for a specific image format.
</p>
</descr>
<seealso>
<link id="TPixelFormat"/>
</seealso>
</element>

<element name="TRasterImage.RawImage">
<short>Provides access to the raw image data for the image type.</short>
<descr>
<p>
<var>RawImage</var> is a read-only TRawImage property which provides access 
to the raw image data for the image type. It provides access to the raw image 
descriptor and pointers to the bytes values used in the Bitmap, Mask, and 
Palette for the image. The value for the property is captured using the 
pointer returned by the GetRawImagePtr method.
</p>
<p>
Always use <var>BeginUpdate</var> and <var>EndUpate</var> to surround any 
action which modifies member values in RawImage.
</p>
</descr>
<seealso>
<link id="TRasterImage.BeginUpdate"/>
<link id="TRasterImage.EndUpdate"/>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>

<element name="TRasterImage.ScanLine">
<short>Provides indexed access to a scan line in the raw image data.</short>
<descr>
<p>
<var>ScanLine</var> is a read-only indexed <var>Pointer</var> property which 
provides access to a scan line in the raster image. The scan line consists of 
a single row of pixels in the raw image data.
</p>
<p>
<var>Row</var> contains the row number read from the <var>TRawImage</var> 
instance provided by the <var>GetRawImage</var> method. Row number values 
start at <b>0</b> (<b>zero</b>).
</p>
<p>
The return value is a Pointer to the byte values for the requested row in the 
raw image data.
</p>
<p>
Reading a value in ScanLines should always be performed inside a 
<b>BeginUpdate ... EndUpdate</b> sequence.
</p>
<p>
ScanLine is a platform-specific property, and may not be implemented for all 
platforms or widgetsets.
</p>
</descr>
<seealso/>
<notes>
<note>Which platforms support it? Win, Qt, macOS Carbon...</note>
</notes>
</element>
<element name="TRasterImage.ScanLine.Row">
<short>Row number for the pixels accessed in the raw image data.</short>
</element>

<element name="TRasterImage.TransparentColor">
<short>Color used for transparent pixels in the image.</short>
<descr>
<p>
<var>TransparentColor</var> is a <var>TColor</var> property which indicates 
the color used for transparent pixels in the raw image data. The default 
value for the property is <var>clDefault</var>.
</p>
<p>
TransparentColor is used along with <var>TransparentMode</var> to determine 
whether a fixed color is used for transparency, or if the transparent color 
is read from a specified pixel in the raw image data.
</p>
<p>
When TransparentColor contains <var>clDefault</var>, the 
<var>RequestTransparentColor</var> method is used to get the transparency 
color value from the bottom-left pixel in the raw image data.
</p>
<p>
When setting a new value for the property, the TransparentMode property is 
updated as well. When clDefault is assigned to the property, TransparentMode 
is set to <var>tmAuto</var>. For other color values, TransparentMode is set 
to <var>tmFixed</var>.
</p>
<p>
<var>MaskHandleAllocated</var> is called to determine if a HBITMAP handle has 
been allocated for the MaskHandle property. When <b>True</b>, the 
<var>MaskHandle</var> is reset to 0 to indicate the handle is no longer in 
use or is invalid.
</p>
<p>
The <var>Changed</var> method is called to update the internal save stream 
for the image (when needed), set <var>Modified</var> to <b>True</b>, and 
signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TRasterImage.RequestTransparentColor"/>
<link id="TRasterImage.TransparentMode"/>
<link id="TRasterImage.MaskHandleAllocated"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.Changed"/>
<link id="TGraphic.Transparent"/>
<link id="TGraphic.Modified"/>
<link id="TGraphic.OnChange"/>
<link id="TColor"/>
</seealso>
</element>

<element name="TRasterImage.TransparentMode">
<short>Determines how transparent pixels are represented in the image.</short>
<descr>
<p>
<var>TransparentMode</var> is a <var>TTransparentMode</var> property which 
indicates how transparent pixels in the image are represented in the raw 
image data. It is related to the <var>TransparentColor</var> and 
<var>Masked</var> properties. TransparentMode can contain one of the 
following values from the TTransparentMode enumeration:
</p>
<dl>
<dt>tmAuto</dt>
<dd>
Transparent pixels are represented using the color stored at the bottom-left 
pixel in the raw image data. TransparentColor is set to clDefault.
</dd>
<dt>tmFixed</dt>
<dd>
Transparent pixels are represented using the color stored in the 
TransparentColor property. Masked is set to <b>True</b>.
</dd>
</dl>
<p>
The default value for the property is <var>tmAuto</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.TransparentColor"/>
<link id="TRasterImage.Masked"/>
<link id="TTransparentMode"/>
</seealso>
</element>

<element name="TSharedCustomBitmap">
<short>Implements the base class for a reference-counted shared image.</short>
<descr>
<p>
<var>TSharedCustomBitmap</var> is a <var>TSharedRasterImage</var> descendant 
which implements the base class for reference-counted shared images, like: 
TSharedBitmap, TSharedPixmap, TSharedJPEGImage, TSharedPortableNetworkGraphic 
and TSharedPortableAnyMapGraphic.
</p>
</descr>
<seealso>
<link id="TSharedRasterImage"/>
<link id="TSharedBitmap"/>
<link id="TSharedPixmap"/>
<link id="TSharedJPEGImage"/>
<link id="TSharedPortableNetworkGraphic"/>
<link id="TSharedPortableAnyMapGraphic"/>
</seealso>
</element>

<!-- private -->
<element name="TSharedCustomBitmap.FHandleType"/>
<element name="TSharedCustomBitmap.FImage"/>
<element name="TSharedCustomBitmap.FHasMask"/>
<element name="TSharedCustomBitmap.FPalette"/>

<element name="TSharedCustomBitmap.GetHeight">
<short>Gets the value for the Height property.</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap.Height"/>
</seealso>
</element>
<element name="TSharedCustomBitmap.GetHeight.Result">
<short>Value for the property.</short>
</element>

<element name="TSharedCustomBitmap.GetWidth">
<short>Gets the value for the Width property.</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap.Width"/>
</seealso>
</element>
<element name="TSharedCustomBitmap.GetWidth.Result">
<short>Value for the property.</short>
</element>

<element name="TSharedCustomBitmap.FreeHandle">
<short>Frees the Handle and the Palette for the shared Bitmap.</short>
<descr>
<p>
<var>FreeHandle</var> frees Palette then calls inherited 
<var>FreeHandle</var>.
</p>
</descr>
<seealso>
<link id="TSharedImage.FreeHandle"/>
</seealso>
</element>

<element name="TSharedCustomBitmap.FreePalette">
<short>Frees the handle in the Palette property.</short>
<descr>
<p>
<var>FreePalette</var> is a procedure used to free the handle assigned for 
the <var>Palette</var>. FreePalette calls <var>DeleteObject</var> to release 
the Palette handle. The Palette handle is set to <b>0</b> (<b>zero</b>) to 
indicate that the handle is no longer in use or is invalid.
</p>
<p>
No actions are performed in the method when the Palette handle contains 
<b>0</b> on entry.
</p>
</descr>
<seealso/>
</element>

<element name="TSharedCustomBitmap.FreeImage">
<short>
Frees raw image data for the shared bitmap and resets its image descriptor.
</short>
<descr>
<p>
Calls the <var>FreeData</var> method in the internal <var>TRawImage</var> 
member to free the raw image data. Sets the <var>Format</var> in its 
<var>Description</var> property to <var>ricfNone</var>.
</p>
<p>
FreeImage is called from the destructor when the class instance is destroyed.
</p>
</descr>
<seealso>
<link id="TSharedCustomBitmap.Destroy"/>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>

<element name="TSharedCustomBitmap.ReleasePalette">
<short>Returns the Handle of the released Palette.
</short>
<descr>
<p>
<var>ReleasePalette</var> is a <var>HPALETTE</var> function used to release 
the internal palette handle for the shared bitmap. The return value contains 
the existing palette handle on entry.
</p>
<p>
Sets the value in the internal palette handle to <b>0</b> to indicate that 
the palette handle is no longer in use or is invalid.
</p>
<p>
Use FreePalette to remove the palette handle in widgetset classes.
</p>
</descr>
<seealso/>
</element>
<element name="TSharedCustomBitmap.ReleasePalette.Result">
<short/>
</element>

<element name="TSharedCustomBitmap.GetPixelFormat">
<short>Gets the value for the PixelFormat property.</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap.PixelFormat"/>
</seealso>
</element>
<element name="TSharedCustomBitmap.GetPixelFormat.Result">
<short>Value for the property.</short>
</element>

<element name="TSharedCustomBitmap.IsEmpty">
<short>Determines if the shared bitmap is empty.</short>
<descr>
<p>
<var>IsEmpty</var> is an overridden method in <var>TSharedCustomBitmap</var> 
used to determine if the shared bitmap is empty. IsEmpty calls the inherited 
method on entry, and adds additional logic needed for the Bitmap image format.
</p>
<p>
The return value is <b>True</b> when all of the following conditions are met:
</p>
<ul>
<li>The Handle is unassigned (contains 0).</li>
<li>The internal save stream for the image is not assigned.</li>
<li>The color format used for raw image data is ricfNone.</li>
<li>The raw image data is Nil.</li>
<li>The raw image data size is 0.</li>
</ul>
</descr>
<seealso>
<link id="TSharedRasterImage.IsEmpty"/>
</seealso>
</element>
<element name="TSharedCustomBitmap.IsEmpty.Result">
<short><b>True</b> if the shared bitmap is empty.</short>
</element>

<element name="TSharedCustomBitmap.Create">
<short>
<var>Create</var> - constructor for
<var>TSharedCustomBitmap</var>: calls inherited
<var>Create</var> and initializes the image.
</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and 
calls the inherited constructor on entry. Create calls the <var>Init</var> 
method in the internal <var>TRawImage</var> instance uses in the class. This 
ensures that resources are allocated and initialized, and properties are set 
to their default values in both the raw image and its image descriptor.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage.Init">TRawImage.Init</link>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TSharedCustomBitmap.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for 
<var>TSharedCustomBitmap</var>.
</p>
<p>
Destroy frees the internal save stream for the class instance. It also calls 
FreeHandle and FreeImage to free the handle and the raw image data for the 
shared bitmap. Calls the inherited destructor prior to exiting from the 
method.
</p>
</descr>
<seealso>
<link id="TSharedCustomBitmap.FreeHandle"/>
<link id="TSharedCustomBitmap.FreeImage"/>
<link id="TSharedRasterImage.Destroy"/>
</seealso>
</element>

<element name="TSharedCustomBitmap.HandleAllocated">
<short>
Determines if the handle for the shared bitmap has been allocated.
</short>
<descr>
<p>
<var>HandleAllocated</var> is an overridden method used to determine if the 
handle for the shared bitmap has been allocated. HandleAllocated implements 
the abstract virtual method defined in <var>TSharedImage</var>.
</p>
<p>
The return value is <b>True</b> when the internal handle has a non-zero value.
</p>
</descr>
<seealso>
<link id="TSharedImage.HandleAllocated"/>
</seealso>
</element>
<element name="TSharedCustomBitmap.HandleAllocated.Result">
<short><b>True</b> when the handle has a non-zero value.</short>
</element>

<element name="TSharedCustomBitmap.ImageAllocated">
<short>
<var>ImageAllocated</var> - returns <b>True</b> if an image has been 
allocated.
</short>
<descr>
<p>
<var>ImageAllocated</var> is a <var>Boolean</var> function which indicates if 
the internal raw image data has been allocated for the shared bitmap. The 
return value is <b>True</b> when the <var>TRawImage</var> instance in the 
class has a value other than <var>ricfNone</var> in its image descriptor.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage.Description">TRawImage.Description</link>
<link id="#lazutils.graphtype.TRawImageDescription.Format">TRawImageDescription.Format</link>
<link id="#lazutils.graphtype.TRawImageColorFormat">TRawImageColorFormat</link>
</seealso>
</element>
<element name="TSharedCustomBitmap.ImageAllocated.Result">
<short>
<b>True</b> when the color format for the raw image data has been assigned.
</short>
</element>

<element name="TSharedCustomBitmap.HandleType">
<short>
<var>HandleType</var> the type of Bitmap Handle that has been allocated.
</short>
<descr>
<p>
HandleType is a TBitmapHandleType property which indicates the Bitmap handle 
type and the storage mechanism used for the Bitmap header and data.
</p>
<remark>
Use of HandleType is not implemented in the current LCL version.
</remark>
</descr>
<seealso/>
</element>

<element name="TSharedCustomBitmap.Height">
<short>The <var>Height</var> of the Bitmap.</short>
<descr>
<p>
<var>Height</var> is a read-only <var>Integer</var> property which contains 
the height for the shared bitmap image as indicated in the descriptor for the 
raw image data. The property value is always <b>0</b> (<b>zero</b>) when the 
descriptor for the internal raw image data contains <var>ricfNone</var>.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage.Description">TRawImage.Description</link>
<link id="#lazutils.graphtype.TRawImageDescription.Format">TRawImageDescription.Format</link>
<link id="#lazutils.graphtype.TRawImageColorFormat">TRawImageColorFormat</link>
</seealso>
</element>

<element name="TSharedCustomBitmap.PixelFormat">
<short>Storage format for pixels in the raw image data.</short>
<descr>
<p>
<var>PixelFormat</var> is a read-only <var>TPixelFormat</var> property with 
the storage format used for pixel data in the raw image. It also determines 
the number of colors (or color depth) allowed in the raw image data.
</p>
<p>
See <var>TPixelFormat</var> for more information about the values and 
meanings in the enumeration.
</p>
</descr>
<seealso>
<link id="TPixelFormat"/>
<link id="#lazutils.graphtype.TRawImageDescription.Depth">TRawImageDescription.Depth</link>
</seealso>
</element>

<element name="TSharedCustomBitmap.Width">
<short>The Width of the Bitmap.</short>
<descr>
<p>
<var>Width</var> is a read-only <var>Integer</var> property which contains 
the width for the shared bitmap image as indicated in the descriptor for the 
raw image data. The property value is always <b>0</b> (<b>zero</b>) when the 
descriptor for the internal raw image data contains <var>ricfNone</var>.
</p>
</descr>
<seealso>
<link id="#lazutils.graphtype.TRawImage.Description">TRawImage.Description</link>
<link id="#lazutils.graphtype.TRawImageDescription.Format">TRawImageDescription.Format</link>
<link id="#lazutils.graphtype.TRawImageColorFormat">TRawImageColorFormat</link>
</seealso>
</element>

<element name="TCustomBitmap">
<short>
<var>TCustomBitmap</var> - the base class for <var>TBitmap</var>.
</short>
<descr>
<p>
<var>TCustomBitmap</var> is a <var>TRasterImage</var> descendant which 
implements the base class for TBitmap. It contains image data using the 
<b>.bmp (Windows bitmap)</b> or <b>.xpm (XPixMap)</b> formats. Image data can 
be loaded from a file, stream, or resource. The loading routine automatically 
recognizes the format, and can be used to load images from a Delphi form 
streams (.dfm files).
</p>
<p>
When the handle is created, it is up to the widgetset interface (gtk, qt, 
win32, etc.) to automatically convert it to the best internal format for the 
platform. That is the reason the Handle is interface dependent. To access the 
raw image data, see <var>TLazIntfImage</var> in <file>IntfGraphics.pas</file>.
</p>
<p>
Do not create instances of TCustomBitmap; use the TBitmap descendant.
</p>
</descr>
</element>

<!-- private -->
<element name="TCustomBitmap.FPixelFormat"/>
<element name="TCustomBitmap.FPixelFormatNeedsUpdate"/>
<element name="TCustomBitmap.FMaskHandle"/>

<element name="TCustomBitmap.GetHandleType">
<short>Gets the value for the HandleType property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.HandleType"/>
</seealso>
</element>
<element name="TCustomBitmap.GetHandleType.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.GetMonochrome">
<short>Gets the value for the Monochrome property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.Monochrome"/>
</seealso>
</element>
<element name="TCustomBitmap.GetMonochrome.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.SetBitmapHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.Handle"/>
</seealso>
</element>
<element name="TCustomBitmap.SetBitmapHandle.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomBitmap.SetHandleType">
<short>Sets the value for the HandleType property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.HandleType"/>
</seealso>
</element>
<element name="TCustomBitmap.SetHandleType.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomBitmap.SetMonochrome">
<short>Sets the value for the Monochrome property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.Monochrome"/>
</seealso>
</element>
<element name="TCustomBitmap.SetMonochrome.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomBitmap.UpdatePixelFormat">
<short>Updates the value in PixelFormat from the shared Bitmap image.</short>
<descr>
<p>
Called when the value for <var>PixelFormat</var> is retrieved and the image 
descriptor has not already been read for the shared image.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomBitmap.MaskHandleNeeded">
<short>
Ensures that a handle is allocated for the image mask (when needed).
</short>
<descr>
<p>
Implements the abstract virtual method defined in the ancestor class.
</p>
</descr>
<seealso>
<link id="TRasterImage.MaskHandleNeeded"/>
</seealso>
</element>

<element name="TCustomBitmap.PaletteNeeded">
<short>
Ensures that a handle is allocated for the Palette in the image.
</short>
<descr>
<p>
<var>PaletteNeeded</var> has an empty implementation in 
<var>TCustomBitmap</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.PaletteNeeded"/>
</seealso>
</element>

<element name="TCustomBitmap.CanShareImage">
<short>Indicates if the image uses the specified shared image class.</short>
<descr>
<p>
<var>CanShareImage</var> is an overridden method which indicates if the image 
uses the specified shared image class. The image can be shared only when it 
uses the same shared image class type.
</p>
</descr>
<seealso>
<link id="TRasterImage.CanShareImage"/>
</seealso>
</element>
<element name="TCustomBitmap.CanShareImage.Result">
<short/>
</element>
<element name="TCustomBitmap.CanShareImage.AClass">
<short>Shared image class type compared in the method.</short>
</element>

<element name="TCustomBitmap.Changed">
<short>
Performs actions needed when the image data for the bitmap has been changed.
</short>
<descr>
<p>
<var>Changed</var> is an overridden method in <var>TCustomBitmap</var>. 
Changed examines the value in <var>Sender</var> to determine the origin for 
the change.
</p>
<p>
When Sender is the <var>Canvas</var> for the class instance, the image was 
changed after an update to its <var>Canvas</var>. The raw image data in the 
shared image is no longer valid, and it is freed. The inherited method is 
called to free the save stream for the shared image, set the value in 
<var>Modified</var>, and signal the <var>OnChange</var> event handler (when 
assigned).
</p>
</descr>
<seealso>
<link id="TRasterImage.Changed"/>
</seealso>
</element>
<element name="TCustomBitmap.Changed.Sender">
<short>Object instance for the change notification.</short>
</element>

<element name="TCustomBitmap.CreateDefaultBitmapHandle">
<short>
Creates a handle for the bitmap using the bitmap handle type in the bitmap 
image data.
</short>
<descr>
<p>
<var>CreateDefaultBitmapHandle</var> is an overridden method in 
<var>TCustomBitmap</var> used to get the default bitmap handle needed to 
represent the image. The device description information in <var>ADesc</var> 
is used to determine the bit depth for the image data.
</p>
<p>
For <b>DDB</b> (Device-Dependent Bitmaps), the <var>CreateBitmap</var> 
routine is called to get the handle used as the return value.
</p>
<p>
For <b>DIB</b> (Device-Independent Bitmaps), the <var>CreateDIBSection</var> 
routine is called to get the handle. For platforms where CreateDIBSection is 
not implemented, the CreateBitmap routine is used as the fallback.
</p>
<p>
CreateDefaultBitmapHandle is called from the <var>BitmapHandleNeeded</var> 
method in the ancestor class.
</p>
</descr>
<seealso>
<link id="TRasterImage.CreateDefaultBitmapHandle"/>
</seealso>
</element>
<element name="TCustomBitmap.CreateDefaultBitmapHandle.Result">
<short>Default handle for the bitmap.</short>
</element>
<element name="TCustomBitmap.CreateDefaultBitmapHandle.ADesc">
<short>Device description information for the bitmap.</short>
</element>

<element name="TCustomBitmap.FreeMaskHandle">
<short>
<var>FreeMaskHandle</var> - method to release Mask handle.
</short>
<descr>
<p>
Frees the handle allocated for the image Mask in the <var>MaskHandle</var> 
property. <var>FreeMaskHandle</var> sets the value in MaskHandle to <b>0</b> 
(<b>zero</b>) to indicate that the handle is no longer need or is invalid. No 
actions are performed in the method when MaskHandle is already set to 
<b>0</b>.
</p>
<p>
FreeMaskHandle calls the <var>DeleteObject</var> routine to remove the handle 
in the widgetset class.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomBitmap.GetBitmapHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TCustomBitmap.Handle"/>
<link id="TRasterImage.GetBitmapHandle"/>
</seealso>
</element>
<element name="TCustomBitmap.GetBitmapHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.GetMaskHandle">
<short>Gets the value for the MaskHandle property.</short>
<descr/>
<seealso>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.GetMaskHandle"/>
</seealso>
</element>
<element name="TCustomBitmap.GetMaskHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.GetPalette">
<short>Gets the value for the Palette property.</short>
<descr/>
<seealso>
<link id="TGraphic.GetPalette"/>
<link id="TGraphic.Palette"/>
</seealso>
</element>
<element name="TCustomBitmap.GetPalette.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.GetPixelFormat">
<short>Gets the value for the PixelFormat property.</short>
<descr/>
<seealso>
<link id="TRasterImage.PixelFormat"/>
<link id="TRasterImage.GetPixelFormat"/>
</seealso>
</element>
<element name="TCustomBitmap.GetPixelFormat.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomBitmap.GetRawImagePtr">
<short>Gets a pointer with the raw image data.</short>
<descr>
<p>
Calls RawImageNeeded to ensure that the image descriptor, save stream, and 
handle are valid for the shared Bitmap image. Calls the CreateData method in 
the raw image pointer (when needed) prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TRasterImage.GetRawImagePtr"/>
</seealso>
</element>
<element name="TCustomBitmap.GetRawImagePtr.Result">
<short>Pointer to the TRawImage instance for the shared bitmap image.</short>
</element>

<element name="TCustomBitmap.GetRawImageDescriptionPtr">
<short>Gets a pointer to the image descriptor for the shared Bitmap image.
</short>
<descr>
<p>Calls <var>RawimageNeeded</var> to ensure that the image descriptor is 
valid.
</p>
</descr>
<seealso>
<link id="TRasterImage.GetRawImageDescriptionPtr"/>
</seealso>
</element>
<element name="TCustomBitmap.GetRawImageDescriptionPtr.Result">
<short>
Pointer to the TRawImageDescription instance for the shared bitmap image.
</short>
</element>

<element name="TCustomBitmap.GetSharedImageClass">
<short>
Gets the class reference used to create new shared image instances in the 
class.
</short>
<descr>
<p>
<var>GetSharedImageClass</var> is an overridden method in 
<var>TCustomBitmap</var>. The return value is a 
<var>TSharedRasterImageClass</var> class reference used to create a shared 
image in the class instance. The return value is actually 
<var>TSharedCustomBitmap</var> in the method implementation.
</p>
<p>
GetSharedImageClass is called from the Assign method when a reference to an 
existing image is stored in the class instance. It is also used in 
CanShareImage to determine is the request image type is the one used in the 
current class instance.
</p>
</descr>
<seealso>
<link id="TRasterImage.GetSharedImageClass"/>
</seealso>
</element>
<element name="TCustomBitmap.GetSharedImageClass.Result">
<short>TSharedCustomBitmap class type for the shared image.</short>
</element>

<element name="TCustomBitmap.HandleNeeded">
<short>Ensures that the handle for the bitmap has been assigned.</short>
<descr>
<p>Calls <var>BitmapHandleNeeded</var> to create handles for both the image 
and its mask (when needed).
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandleNeeded"/>
<link id="TRasterImage.HandleNeeded"/>
</seealso>
</element>

<element name="TCustomBitmap.InternalReleaseBitmapHandle">
<short/>
<descr/>
<seealso>
<link id="TSharedRasterImage.ReleaseHandle"/>
</seealso>
</element>
<element name="TCustomBitmap.InternalReleaseBitmapHandle.Result">
<short/>
</element>

<element name="TCustomBitmap.InternalReleaseMaskHandle">
<short/>
<descr/>
<seealso></seealso>
</element>
<element name="TCustomBitmap.InternalReleaseMaskHandle.Result">
<short/>
</element>
<element link="#lcl.graphics.TRasterImage.InternalReleasePalette" name="TCustomBitmap.InternalReleasePalette">
<short/>
<descr/>
<seealso>
<link id="TSharedCustomBitmap.ReleasePalette"/>
</seealso>
</element>
<element name="TCustomBitmap.InternalReleasePalette.Result">
<short/>
</element>

<element name="TCustomBitmap.RawImageNeeded">
<short>Ensures that the RawImage data is allocated prior to use.</short>
<descr>
<p>
Ensures that the <var>RawImage</var> property is allocated prior to accessing 
values in the raw image data.
</p>
<p>
<var>ADescOnly</var> indicates whether the image descriptor or the 
complete raw image data is required. When ADescOnly is <b>True</b>, only the 
<var>TRawImageDescription</var> in the raw image is needed. When set to 
<var>False</var>, all values in the <var>TRawImage</var> instance are 
required.
</p>
<p>
RawImageNeeded is called from methods access the raw image data, and occurs 
before the value in RawImage is accessed. For example:
</p>
<ul>
<li>SetSize</li>
<li>UpdatePixelFormat</li>
<li>GetMonochrome</li>
<li>UnshareImage</li>
<li>GetRawImagePtr</li>
<li>GetRawImageDescriptionPtr</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TCustomBitmap.RawImageNeeded.ADescOnly">
<short>
<b>True</b> when only the image descriptor in the raw image data is needed.
</short>
</element>

<element name="TCustomBitmap.SetHandle">
<short>
Re-implements the method from the ancestor class.
</short>
<descr>
<p>
<var>SetHandle</var> is an overridden method in <var>TCustomBitmap</var>, and 
re-implements the method from the <var>TRasterImage</var> ancestor class. 
<var>AValue</var> contains the new handle instance assigned to the 
<var>BitmapHandle</var> property.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Value parameter.
</version>
<seealso>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.SetHandle"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCustomBitmap.SetHandle.Value">
<short>New value used as the handle for the bitmap.</short>
</element>

<element name="TCustomBitmap.SetPixelFormat">
<short>Sets the value for the PixelFormat property.</short>
<descr>
<p>
Implements the abstract virtual method defined in the <var>TRasterImage</var> 
ancestor.
</p>
<p>
Frees the raw image data in the class instance. No actions are performed in 
the method when the new property value is the same as the existing property 
value.
</p>
</descr>
<seealso>
<link id="TRasterImage.PixelFormat"/>
<link id="TRasterImage.SetPixelFormat"/>
</seealso>
</element>
<element name="TCustomBitmap.SetPixelFormat.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomBitmap.UnshareImage">
<short>Frees the shared image in the bitmap, and creates a new one.</short>
<descr>
<p>
<var>UnshareImage</var> is an overridden method used to free the shared image 
in the bitmap, and create a new one. UnshareImage implements the abstract 
virtual method defined in the ancestor class.
</p>
<p>
UnshareImage calls <var>GetSharedImageClass</var> to get the class type used 
for the shared image, and creates a new instance of the class. It is cast to 
<var>TSharedCustomBitmap</var>, and its <var>Reference</var> method is called 
to increment the reference count for the shared image.
</p>
<p>
<var>CopyContent</var> indicates whether the existing image data is copied 
into the new shared image instance. When set to <b>True</b>, the content in 
the existing shared image is copied and stored in the new shared image 
instance. When set to <var>False</var>, only the image descriptor in the 
shared image is copied. This gets the metadata for the image.
</p>
<p>
UnshareImage calls <var>FreeCanvasContext</var> to free the device context 
for the Canvas used in the image.
</p>
</descr>
<seealso>
<link id="TRasterImage.UnshareImage"/>
</seealso>
</element>
<element name="TCustomBitmap.UnshareImage.CopyContent">
<short><b>True</b> copies the existing content in the shared image.</short>
</element>

<element name="TCustomBitmap.UpdateHandles">
<short>
Sets the handles for the image and mask in the shared Bitmap to the specified 
values.
</short>
<descr>
<p>
<var>UpdateHandles</var> is an overridden <var>Boolean</var> function which 
implements the abstract virtual method defined in <var>TRasterImage</var>. 
UpdateHandles is used to set the handles for the shared bitmap image and its 
mask to the values specified in <var>ABitmap</var> and <var>AMask</var>.
</p>
<p>
The return value is <b>True</b> when the values in ABitmap and AMask are 
successfully applied in the class instance. The return value is <b>False</b> 
when ABitmap and Mask have the same values as the existing handles in the 
class instance, and the action is not needed.
</p>
<p>
The <var>FreeHandle</var> method in the internal shared image is called 
before applying the value in ABitmap.
</p>
<p>
<var>FreeMaskHandle</var> is called to free the value in 
<var>MaskHandle</var> before applying the value in AMask.
</p>
<p>
UpdateHandles is used in the implementation of the 
<var>MaskHandleNeeded</var> and <var>SetHandles</var> methods.
</p>
</descr>
<seealso>
<link id="TRasterImage.UpdateHandles"/>
</seealso>
</element>
<element name="TCustomBitmap.UpdateHandles.Result">
<short><b>True</b> when the handle(s) are successfully applied.</short>
</element>
<element name="TCustomBitmap.UpdateHandles.ABitmap">
<short>Handle assigned for the bitmap and shared image.</short>
</element>
<element name="TCustomBitmap.UpdateHandles.AMask">
<short>Handle assigned to the mask in the image.</short>
</element>

<element name="TCustomBitmap.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and 
calls the inherited constructor on entry. Create sets the default value for 
the
<var>PixelFormat</var> property to
<var>pfDevice</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.PixelFormat"/>
<link id="TPixelFormat"/>
</seealso>
</element>

<element name="TCustomBitmap.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy calls <var>FreeMaskHandle</var> to free the handle in 
<var>MaskHandle</var> (when assigned). Destroy calls the inherited destructor 
prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TCustomBitmap.FreeMaskHandle"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.Destroy"/>
</seealso>
</element>

<element name="TCustomBitmap.Assign">
<short>
Copies values from the specified persistent object into the class instance.
</short>
<descr>
<p>
<var>Assign</var> is an overridden method in <var>TCustomBitmap</var> used to 
copy property values from the persistent object in <var>Source</var> into the 
current class instance. Assign calls the inherited method on entry using 
Source as an argument.
</p>
<p>
When Source is a TCustomBitmap descendant, values in its 
<var>PixelFormat</var> and <var>PixelFormatNeedsUpdate</var> members are 
copied into the members in the class instance.
</p>
</descr>
</element>
<element name="TCustomBitmap.Assign.Source">
<short>Persistent object with values copied in the method.</short>
</element>

<element name="TCustomBitmap.Clear">
<short>Clears the content for the bitmap image.</short>
<descr>
<p>
<var>Clear</var> is an overridden method in <var>TCustomBitmap</var>. It 
extends the method defined in <var>TRasterImage</var>. It sets the 
<var>PixelFormat</var> property to its default value (<var>pfDevice</var>), 
and calls the inherited method to free the internal save stream for the 
shared image.
</p>
</descr>
<seealso>
<link id="TCustomBitmap.Changed"/>
<link id="TRasterImage.PixelFormat"/>
<link id="TRasterImage.Clear"/>
</seealso>
</element>

<element name="TCustomBitmap.FreeImage">
<short>Releases the resources for the image when it is discarded.</short>
<descr>
<p>
<var>FreeImage</var> is an overridden method used to free the bitmap image. 
FreeImage calls the inherited method on entry to invalidate the handle used 
for the shared image. This also causes the device context for the
<var>Canvas</var> to be freed and the shared image is release and freed.
</p>
<p>
FreeImage is called when a new value is assigned to the 
<var>PixelFormat</var> property.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomBitmap.LazarusResourceTypeValid">
<short>Determines if the specified resource type is valid for the image 
format.
</short>
<descr>
<p>
<var>LazarusResourceTypeValid</var> is a <var>Boolean</var> function used to 
determine if the value in <var>ResourceType</var> is a valid resource type 
for the image format.
</p>
<p>
LazarusResourceTypeValid is an overridden method in <var>TCustomBitmap</var>, 
and re-implements the method defined in the ancestor class. The return value 
is <b>True</b> when ResourceType contains one of the values:
</p>
<dl>
<dt>'BMP'</dt>
<dd>Bitmap resource type.</dd>
<dt>'BITMAP'</dt>
<dd>Bitmap resource type.</dd>
<dt>'XPM'</dt>
<dd>Pixmap resource type.</dd>
</dl>
<p>
Case is not significant for the value in ResourceType; it is converted to 
uppercase prior to checking its value.
</p>
<p>
The return value is <b>False</b> if ResourceType contains any other value.
</p>
<p>
LazarusResourceTypeValid is used in the implementation of the 
<var>LoadFromLazarusResource</var> method.
</p>
</descr>
<seealso>
<link id="TGraphic.LoadFromLazarusResource"/>
<link id="TPicture.LoadFromLazarusResource"/>
</seealso>
</element>
<element name="TCustomBitmap.LazarusResourceTypeValid.Result">
<short>
Returns <b>True</b> if the resource type is valid for the image format.
</short>
</element>
<element name="TCustomBitmap.LazarusResourceTypeValid.ResourceType">
<short>The resource type examined in the method.</short>
</element>

<element name="TCustomBitmap.BitmapHandleAllocated">
<short>
Returns <b>True</b> if a handle has been allocated for the Bitmap.
</short>
<descr>
<p>
<var>BitmapHandleAllocated</var> is an overridden <var>Boolean</var> function 
used to determine if a handle has been allocated for the bitmap. 
BitmapHandleAllocated implements the abstract virtual method defined in the 
ancestor class.
</p>
<p>
The return value is <b>True</b> when the handle in the internal shared image 
has a <b>non-zero</b> value.
</p>
<p>
BitmapHandleAllocated is used in the implementation of the 
<var>MaskHandleNeeded</var> method.
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandleAllocated"/>
</seealso>
</element>
<element name="TCustomBitmap.BitmapHandleAllocated.Result">
<short/>
</element>

<element name="TCustomBitmap.MaskHandleAllocated">
<short>Determines if the mask handle has been allocated for the image.</short>
<descr>
<p>
<var>MaskHandleNeeded</var> is an overridden <var>Boolean</var> function in 
<var>TCustomBitmap</var>, and is used to determine if <var>MaskHandle</var> 
has been allocated for the image mask. It implements the abstract virtual 
method defined in the ancestor class.
</p>
<p>
The return value is <b>True</b> when the <var>MaskHandle</var> property 
contains a <b>non-zero</b> value.
</p>
<p>
MaskHandleAllocated is used in the implementation of methods like:
</p>
<ul>
<li>BitmapHandleNeeded</li>
<li>SetTransparentColor</li>
<li>SetBitmapHandle</li>
<li>CreateMask</li>
<li>Assign</li>
</ul>
</descr>
<seealso>
<link id="TRasterImage.MaskHandleAllocated"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.Masked"/>
</seealso>
</element>
<element name="TCustomBitmap.MaskHandleAllocated.Result">
<short>
Returns <b>True</b> if a mask handle has been allocated for the image.
</short>
</element>

<element name="TCustomBitmap.PaletteAllocated">
<short>
Indicates whether a handle has been allocated for a palette in the image.
</short>
<descr>
<p>
<var>PaletteAllocated</var> is an overridden <var>Boolean</var> function in 
<var>TCustomBitmap</var>, and indicates whether a handle has been allocated 
for a palette in the image. PaletteAllocated implements the abstract virtual 
method defined in the ancestor class.
</p>
<p>
The return value is <b>True</b> when palette handle in the internal shared 
image contains a <b>non-zero</b> value.
</p>
</descr>
<seealso>
<link id="TRasterImage.PaletteAllocated"/>
</seealso>
</element>
<element name="TCustomBitmap.PaletteAllocated.Result">
<short>
Returns <b>True</b> if a palette handle has been allocated for the image.
</short>
</element>

<element name="TCustomBitmap.ReleaseHandle">
<short>Releases the bitmap handle for the shared image.</short>
<descr>
<p>
Calls <var>HandleNeeded</var> to ensure that the handles for the bitmap and 
mask reflect the values for the raw image data. Calls the 
<var>ReleaseHandle</var> method in the shared image to free the handle for 
the bitmap.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomBitmap.ReleaseHandle.Result">
<short>Returns <b>True</b> when the handle is successfully released.</short>
</element>

<element name="TCustomBitmap.SetHandles">
<short>
Sets handles for the bitmap and the mask to the specified values.
</short>
<descr>
<p>
<var>SetHandles</var> is a procedure used to set the handles for the bitmap 
and the mask to the values specified in <var>ABitmap</var> and 
<var>AMask</var>. SetHandles ensures that the <var>Canvas</var> context, 
shared image, and save stream are unshared and freed. SetHandles calls 
<var>UpdateHandles</var> to store the specified handles for the shared image 
and its mask.
</p>
<p>
SetHandles is called from methods that load image data using 
<var>TLazIntfImage</var> from the LCL interface. It is also called when 
values are assigned to the <var>BitmapHandle</var> or <var>MaskHandle</var> 
properties.
</p>
</descr>
<seealso>
<link id="TRasterImage.SetHandles"/>
</seealso>
</element>
<element name="TCustomBitmap.SetHandles.ABitmap">
<short>New Bitmap handle for the image.</short>
</element>
<element name="TCustomBitmap.SetHandles.AMask">
<short>New Mask handle for the image.</short>
</element>

<element name="TCustomBitmap.SetSize">
<short>
Sets the Height and Width for the image to the specified values.
</short>
<descr>
<p>
<var>SetSize</var> is an overridden method in <var>TCustomBitmap</var> used 
to change the <var>Height</var> and <var>Width</var> for the bitmap image to 
the specified values. SetSize implements the abstract virtual method defined 
in the ancestor class.
</p>
<p>
Calls RawImageNeeded to ensure that the image header in RawImage is valid for 
the image.
</p>
<p>
The values in AWidth and AHeight contain the new dimensions for the image. 
Both values must contain a positive value or 0. The default value for an 
argument is set to 0 when a negative value is found. Their values are 
assigned to the image desriptor in the shared imaged to change the size for 
the image content. No additional actions are performed in the method if 
either value is not successfully applied to the raw image descriptor.
</p>
<p>
Calls UnshareImage and RawImageNeeded to re-create the raw image data for the 
shared image.
</p>
<p>
Copies existing pixel data for the image into the resized image. When the new 
image size is smaller, only the portion of the image that fits within the new 
dimensions is copied. Uses the CopyPixels method in the TLazIntfImage 
instance to copy the image content.
</p>
<p>
Ensures that the Canvas context, BitMapHandle, and MaskHandle are updated for 
the image. Calls the Changed method to update the shared image data and 
signal the OnChange event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TRasterImage.SetSize"/>
</seealso>
</element>
<element name="TCustomBitmap.SetSize.AWidth">
<short>New width for the image.</short>
</element>
<element name="TCustomBitmap.SetSize.AHeight">
<short>New height for the image.</short>
</element>

<element name="TCustomBitmap.Handle">
<short>The operating system Handle associated with this bitmap.</short>
<descr>
<p>In <var>TCustomBitmap</var>, the handle is provided by the internal shared 
image class (<var>TSharedCustomBitmap</var>) and stored in the 
<var>BitmapHandle</var> property.
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandle"/>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TCustomBitmap.HandleType">
<short>Handle type for the Bitmap.</short>
<descr>
<p>
<var>HandleType</var> is a
<var>TBitmapHandleType</var> property which indicates the handle type used 
for the bitmap image data. HandleType identifies whether the bitmap handle is 
classified as a Device-Dependent Bitmap (DDB) or a Device-Independent Bitmap 
(DIB).
</p>
<p>See <link id="TBitmapHandleType">TBitmapHandleType</link> for more 
information about the handle types and their specifics.
</p>
<p>The value for the property is read from the internal shared image in the 
class instance. Setting a new value for the property has no effect in the 
current implementation; the value is always read from the raw image data.
</p>
</descr>
<seealso>
<link id="TBitmapHandleType"/>
<link id="TSharedCustomBitmap.HandleType"/>
</seealso>
</element>

<element name="TCustomBitmap.Monochrome">
<short><b>True</b> when the image contains monochrome image data.</short>
<descr>
<p>
<var>Monochrome</var> is a <var>Boolean</var> property which indicates 
whether the raw image data is represented using pixels of a single color.
</p>
<p>
The property value is <b>True</b> when the descriptor for the shared raw 
image data has a color depth of <b>1</b>. The <var>PixelFormat</var> property 
will also contain the value <var>pf1bit</var>.
</p>
<p>
Setting a new value in Monochrome causes the value in PixelFormat to be 
changed. When set to <b>True</b>, PixelFormat is set to <var>pf1bit</var>. 
When set to <b>False</b>, the value <var>pfDevice</var> is assigned to the 
PixelFormat property.
</p>
<p>
Changing the value in Monochrome (and PixelFormat) causes the image data to 
be discarded, and the Handle for the internal shared image is freed.
</p>
<p>
No actions are performed when Monochrome is set to the existing value for the 
property.
</p>
</descr>
<seealso>
<link id="TRasterImage.PixelFormat"/>
<link id="TCustomBitmap.Handle"/>
</seealso>
</element>

<element name="TFPImageBitmap">
<short>
Implements a Bitmap using the FPImage reader and writer from the FCL.
</short>
<descr>
<p>
Use this class to easily create a <var>TCustomBitmap</var> descendant using 
an FPImage reader and writer.
</p>
</descr>
<seealso/>
</element>

<element name="TFPImageBitmap.GetMimeType">
<short>
Gets the MIME type used for the image data in the image type.
</short>
<descr>
<p>
GetMimeType is an overridden String function used to get the MIME type for 
the image data in the class instance.
</p>
<p>
Calls GetFileExtensions to get the delimited list of file extensions 
supported for the image type. The list is an empty string in TFPImageBitmap. 
Descendent classes provide value(s) which reflect the image formats supported 
in their implementations.
</p>
<p>
GetMimeType extracts the first file extension in the list (separated by a 
SemiColon character), and uses the file extension in the return value. For 
example:
</p>
<ul>
<li>'image/bmp'</li>
<li>'image/gif'</li>
<li>'image/jpg'</li>
<li>'image/png'</li>
<li>'image/tiff'</li>
<li>'image/xpm'</li>
</ul>
<remark>
GetMimeType is not implemented in the current LCL version.
</remark>
</descr>
<seealso>
<link id="TFPImageBitmap.GetFileExtensions"/>
<link id="TRasterImage.GetMimeType"/>
<link id="TGraphic.GetMimeType"/>
</seealso>
</element>
<element name="TFPImageBitmap.GetMimeType.Result">
<short>MIME type used for the image data in the class.</short>
</element>

<element name="TFPImageBitmap.GetReaderClass">
<short>
Gets the class reference used to create new instances of the FCL-compatible 
image reader.
</short>
<descr>
<p>
Defined as an abstract virtual method in TFPImageBitmap. Must be implemented 
in a descendent class which provides support for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.GetReaderClass.Result">
<short>
TFPCustomImageReaderClass descendent used for the image class type.
</short>
</element>

<element name="TFPImageBitmap.GetWriterClass">
<short>
Gets the class reference used to create new instances of the FCL-compatible 
image writer.
</short>
<descr>
<p>
Defined as an abstract virtual method in TFPImageBitmap. Must be implemented 
in a descendent class which provides support for a specific image format.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.GetWriterClass.Result">
<short>
TFPCustomImageWriterClass descendent used for the image class type.
</short>
</element>

<element name="TFPImageBitmap.InitializeReader">
<short>Configures the reader class instance for the image type.</short>
<descr>
<p>
<var>InitializeReader</var> is a virtual method used to configure the 
FCL-compatible image reader class instance in <var>AReader</var>. 
InitializeReader assigns the <var>Progress</var> method to the 
<var>OnProgress</var> event handler in AReader.
</p>
<p>
<var>AImage</var> is not used in the current implementation.
</p>
<p>
InitializeReader is called from the <var>ReadStream</var> method prior to any 
operation that reads the image descriptor, header, or data.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.InitializeReader.AImage">
<short>Not used in the current implementation.</short>
</element>
<element name="TFPImageBitmap.InitializeReader.AReader">
<short>FCL image reader instance updated in the method.</short>
</element>

<element name="TFPImageBitmap.InitializeWriter">
<short>Configures the writer class instance for the image type.</short>
<descr>
<p>
<var>InitializeWriter</var> is a virtual method used to configure the 
FCL-compatible image writer class instance in <var>AWriter</var>. 
InitializeWriter assigns the <var>Progress</var> method to the 
<var>OnProgress</var> event handler in <var>AWriter</var>. When AWriter 
implements the <var>ILazImageWriter</var> interface, its 
<var>Initialize</var> method is called to store the data for the LCL 
interface image in <var>AImage</var>.
</p>
<p>
InitializeWriter is called from the <var>WriteStream</var> method prior to 
any operation that writes the raw image data to a stream.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.InitializeWriter.AImage">
<short>
LCL interface image with the image data for the write class instance.
</short>
</element>
<element name="TFPImageBitmap.InitializeWriter.AWriter">
<short>FCL image write instance updated in the method.</short>
</element>

<element name="TFPImageBitmap.FinalizeReader">
<short>
Finalizes the FCL image reader when a read operation has been completed.
</short>
<descr>
<p>
<var>FinalizeReader</var> has an empty implementation in 
<var>TFPImageBitmap</var>. In a descendent class, it is used to update 
properties in the class instance to reflect values encountered by the image 
reader.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.FinalizeReader.AReader">
<short>FCL reader class instance examined in the method.</short>
</element>

<element name="TFPImageBitmap.FinalizeWriter">
<short>
<var>FinalizeWriter</var> - ends the Image writing process.
</short>
<descr>
<p>
<var>FinalizeWriter</var> is a virtual method used to finalize the 
FCL-compatible image writer class instance in <var>AWriter</var>. When 
AWriter implements the <var>ILazImageWriter</var> interface, its 
<var>Finalize</var> method is called to release image data in the LCL 
interface image.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.FinalizeWriter.AWriter">
<short>FCL image writer class examined in the method.</short>
</element>

<element name="TFPImageBitmap.ReadStream">
<short>Read the image data from the specified Stream.</short>
<descr>
<p>
<var>ReadStream</var> is an overridden method used to read the image data 
from the stream specified in <var>AStream</var>.
</p>
<p>
ReadStream creates an instance of the <var>TFPCustomImageReader</var> class 
used to read the image type from a stream. It calls 
<var>InitializeReader</var> to configure the reader class instance. If the 
image reader class supports the <var>ILazImageReader</var> interface, it is 
configure to update its description from the image data. Otherwise, the 
<var>GetDescriptionFromDevice</var> routine is called to store the defaults 
for the LCL interface image.
</p>
<p>
ReadStream calls the <var>ImageRead</var> method in the 
<var>TFPCustomImageReader</var> instance to load the image data from AStream. 
<var>FinalizeReader</var> is called when the operation is completed. The 
shared image for the image type is freed, and the raw image data from the LCL 
interface image is loaded into the shared image. The mask information in raw 
image data is applied to the shared image. The image is flagged to update the 
value for the <var>PixelFormat</var> property in the calling routine.
</p>
</descr>
<seealso>
<link id="TRasterImage.ReadStream"/>
</seealso>
</element>
<element name="TFPImageBitmap.ReadStream.AStream">
<short>TMemoryStream instance with the image data read in the method.</short>
</element>
<element name="TFPImageBitmap.ReadStream.ASize">
<short>Not used in the current implementation.</short>
</element>

<element name="TFPImageBitmap.WriteStream">
<short>Write the data to a stream.</short>
<descr>
<p>
<var>WriteStream</var> is an overridden procedure in 
<var>TFPImageBitmap</var> used to write the image content to the stream 
specified in <var>AStream</var>. WriteStream implements the abstract virtual 
method defined in <var>TRasterImage</var>.
</p>
<p>
WriteStream creates temporary <var>TLazIntfImage</var> and 
<var>TFPCustomImageWriter</var> instances that are used to write the data for 
the internal <var>TRawImage</var> instance used in the class. Raw image data 
is stored in the TLazIntfImage instance, and its <var>SaveToStream</var> 
method is called to write the values to AStream.
</p>
<p>
No actions are performed in the method when the data size for the raw image 
is <b>0</b>.
</p>
</descr>
<seealso>
<link id="TRasterImage.WriteStream"/>
</seealso>
</element>
<element name="TFPImageBitmap.WriteStream.Stream">
<short>Stream where the image data is stored.</short>
</element>

<element name="TFPImageBitmap.GetFileExtensions">
<short>
Returns a list of the file extensions available for the image type.
</short>
<descr>
<p>Always returns an empty string ('') in TFPImageBitmap.
</p>
</descr>
<seealso>
<link id="TGraphic.GetFileExtensions"/>
</seealso>
</element>
<element name="TFPImageBitmap.GetFileExtensions.Result">
<short>List of file extensions supported for the image type.</short>
</element>

<element name="TFPImageBitmap.IsStreamFormatSupported">
<short>
Determines if the specified stream contains image data supported for the 
image type.
</short>
<descr>
<p>
<var>IsStreamFormatSupported</var> is an overridden <var>TFPImageBitmap</var> 
class function used to determine if the stream specified in
<var>Stream</var> contains image data supported in the image type.
</p>
<p>
IsStreamFormatSupported creates a temporary instance of the 
<var>TFPCustomImageReader</var> used for the image type, and calls its 
<var>CheckContents</var> method to examine the values in Stream. The return 
value is <b>True</b> when the FCL image reader recognizes the image format.
</p>
<p>
IsStreamFormatSupported saves the position in Stream on entry, and restores 
the position prior to exiting from the method.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.IsStreamFormatSupported.Result">
<short>
<b>True</b> when the stream contains a image data in a supported format.
</short>
</element>

<element name="TFPImageBitmap.IsFileExtensionSupported">
<short>
Indicates whether the given file extension is supported for the image type.
</short>
<descr>
<p>
<var>IsFileExtensionSupported</var> is a <var>Boolean</var> class function 
used to determine if the file extension in <var>FileExtension</var> is valid 
for the image type. If FileExtension includes a period character ('.'), it is 
removed before use.
</p>
<p>
The return value is <b>True</b> when FileExtension is included in the value 
returned by the <var>GetFileExtensions</var> method. No actions are performed 
in the method when FileExtension is an empty string (<b>''</b>).
</p>
<p>
IsFileExtensionSupported is used in the implementation of 
<var>LazarusResourceTypeValid</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TFPImageBitmap.IsFileExtensionSupported.Result">
<short>
<b>True</b> when the file extension is valid for the image type.
</short>
</element>
<element name="TFPImageBitmap.IsFileExtensionSupported.FileExtension">
<short>File extension checked for the image type.</short>
</element>

<element name="TFPImageBitmap.LazarusResourceTypeValid">
<short>Determines if the specified resource type is valid for the image 
format.
</short>
<descr>
<p>
<var>LazarusResourceTypeValid</var> is a <var>Boolean</var> function used to 
determine if the value in <var>ResourceType</var> is a valid resource type 
for the image format.
</p>
<p>
LazarusResourceTypeValid is an overridden method, and re-implements the 
method defined in the ancestor class. The return value is <b>True</b> when 
ResourceType contains is one the file extensions returned from 
IsFileExtensionSupported. The return value is <b>False</b> if ResourceType 
contains any other value.
</p>
<p>
LazarusResourceTypeValid is used in the implementation of the 
<var>LoadFromLazarusResource</var> method.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.IsFileExtensionSupported"/>
<link id="TCustomBitmap.LazarusResourceTypeValid"/>
<link id="TGraphic.LazarusResourceTypeValid"/>
<link id="TGraphic.LoadFromLazarusResource"/>
</seealso>
</element>
<element name="TFPImageBitmap.LazarusResourceTypeValid.Result">
<short>
<b>True</b> when the resource type name is one file extensions for the image 
format.
</short>
</element>
<element name="TFPImageBitmap.LazarusResourceTypeValid.ResourceType">
<short>Resource type examined in the method.</short>
</element>

<element name="TFPImageBitmapClass">
<short>Class reference used to create new instances of TFPImageBitmap.</short>
<descr/>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<element name="TSharedBitmap">
<short>Defines a reference-counted shared Bitmap graphic.</short>
<descr>
<p>
TSharedBitmap is a TSharedCustomBitmap descendant.
</p>
</descr>
<seealso>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TBitmap">
<short>Implements a FCL-compatible reader/writer for a Bitmap image.</short>
<descr>
<p>
<var>TBitmap</var> is a <var>TFPImageBitmap</var> descendant which represents 
the data for a Bitmap image. The image can be loaded from a file, stream or 
resource which uses <b>.bmp (windows bitmap)</b> format.
</p>
<p>
TBitmap provides overridden methods which get the image reader 
(<var>TLazReaderBMP</var>) and writer (<var>TLazWriteBMP</var>) class 
references, as well as the shared image storage class 
(<var>TSharedBitmap</var>).
</p>
<p>
An overridden LoadFromStream method is provided which handles reading the BMP 
header using the correct endian-ness for the platform. The loading routine 
automatically recognizes the format, so it is also used to load the images 
from Delphi form streams (e.g. .dfm files) or FreePascal/Lazarus form streams 
(.lfm).
</p>
<p>
When the handle for the image is created, it is up to the interface (GTK, QT, 
Win32,etc.) to convert it automatically to the best internal format for the 
widgetset. That is why the <var>Handle</var> is interface dependent.
</p>
<p>
To access the raw image data, see <var>TLazIntfImage</var>.
</p>
<remark>
Please note that the current implementation is dramatically different than 
previous LCL implementations. Most of the low-level functionality for TBitmap 
has been refactored into ancestor or descendent classes.
</remark>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
<link id="TCustomBitmap"/>
<link id="TRasterImage"/>
<link id="TGraphic"/>
<link id="TSharedBitmap"/>
<link id="#lcl.intfgraphics.TLazIntfImage">TLazIntfImage</link>
<link id="#lcl.intfgraphics.TLazReaderBMP">TLazReaderBMP</link>
<link id="#lcl.intfgraphics.TLazWriterBMP">TLazWriterBMP</link>
</seealso>
</element>

<element name="TBitmap.InitializeReader">
<short>
Initializes the image reader to use the transparency settings in the class 
instance.
</short>
<descr>
<p>
<var>InitializeReader</var> is an overridden procedure used to apply 
transparency settings to the image reader in <var>AReader</var>. 
InitializeReader calls the inherited method on entry to signal the 
<var>OnProgress</var> event handler (when assigned).
</p>
<p>
InitializeReader ensures that AReader is derived from 
<var>TLazReaderBMP</var>. No additional actions are performed in the method 
when AReader is not a TLazReaderBMP class instance.
</p>
<p>
InitializeReader applies values from the <var>TransparentMode</var> and 
<var>TransparentColor</var> properties to the mask settings in AReader.
</p>
<p>
<b>TransparentMode</b>
</p>
<p>
Determines whether the transparency color is auto-detected in the image data, 
or a fixed transparency color is used.
</p>
<dl>
<dt>tmAuto</dt>
<dd>The bottom left pixel in the image data contains the transparency 
color.</dd>
<dt>tmFixed</dt>
<dd>Uses a predefined color in TransparentColor as the transparency 
color.</dd>
</dl>
<p>
<b>TransparentColor</b>
</p>
<p>
Determines the color used to represent transparent areas in the image data.
</p>
<dl>
<dt>clDefault</dt>
<dd>
Uses the bottom left pixel as the transparency color. This is a Lazarus 
extension.
</dd>
<dt>clNone</dt>
<dd>Ignores transparency in the image data. This is a Lazarus extension.</dd>
</dl>
<p>
All other color constants represent the color for transparent pixels in the 
image.
</p>
<p>
Values in TransparentMode and TransparentColor are assigned to the MaskMode 
and MaskColor properties in AReader as required.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.InitializeReader"/>
</seealso>
</element>
<element name="TBitmap.InitializeReader.AImage">
<short>Provides access to the raw data for the image.</short>
</element>
<element name="TBitmap.InitializeReader.AReader">
<short>Reader used to access raw data for the image.</short>
</element>

<element name="TBitmap.GetReaderClass">
<short>
Gets the class reference used to create the FCL-compatible reader for the 
image.
</short>
<descr>
<p>
<var>GetReaderClass</var> is an overridden 
<var>TFPCustomImageReaderClass</var> class function used to get the 
FCL-compatible reader for the image type. The return value is a 
<var>TLazReaderBMP</var> class reference in <var>TBitmap</var>.
</p>
<p>
GetReaderClass is called from the <var>ReadStream</var> method when the 
reader is created and initialized. It is used to load a 
<var>TLazIntfImage</var> instance with the image content supplied in a 
stream. It is also used in the <var>IsStreamFormatSupported</var> method to 
determine if the stream contains an image format that can be read using the 
reader class type.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.GetReaderClass"/>
<link id="TFPImageBitmap.ReadStream"/>
<link id="TFPImageBitmap.IsStreamFormatSupported"/>
<link id="#lcl.intfgraphics.TLazReaderBMP">TLazReaderBMP</link>
<link id="#lcl.intfgraphics.TLazReaderDIB">TLazReaderDIB</link>
<link id="#lcl.intfgraphics.ILazImageReader">ILazImageReader</link>
</seealso>
</element>
<element name="TBitmap.GetReaderClass.Result">
<short>Class reference used to create instances of the reader class.</short>
</element>

<element name="TBitmap.GetWriterClass">
<short>
Gets the class reference used to create instances of the FCL-compatible image 
writer.
</short>
<descr>
<p>The return value is a <var>TLazWriterBMP</var> class reference in TBitmap.
</p>
<p>
<var>GetWriterClass</var> is called from the
<var>WriteStream</var> method when the image writer is used to write a
<var>TLazIntfImage</var> instance to a stream.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.GetWriterClass"/>
<link id="TFPImageBitmap.WriteStream"/>
</seealso>
</element>
<element name="TBitmap.GetWriterClass.Result">
<short>Class reference used to create instances of the writer class.</short>
</element>

<element name="TBitmap.GetSharedImageClass">
<short>
Gets the class reference used to create new instances of a shared image.
</short>
<descr>
<p>
<var>GetSharedImageClass</var> provides a class reference used to create new 
instances of the shared image class used in <var>TBitmap</var>.
</p>
<p>
The return value is a <var>TSharedBitmap</var> class reference in TBitmap.
</p>
<p>
GetSharedImageClass is called from methods like <var>Create</var>, 
<var>Assign</var>, and <var>CanShareImage</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TBitmap.GetSharedImageClass.Result">
<short>
Class reference used to create new instances of the shared image class.
</short>
</element>

<element name="TBitmap.GetFileExtensions">
<short>Gets the file extensions supported for the image type.</short>
<descr>
<p>
<var>GetFileExtensions</var> is an overridden <var>String</var> class 
function used to get a delimited list of file extensions used for graphic 
files supported in the class. The <b>'.'</b> character is omitted from file 
extension(s), and extensions are separated by a <b>SemiColon</b> (<b>;</b>) 
character.
</p>
<p>
In TBitmap, the method returns the value <b>'bmp'</b> for the Windows Bitmap 
format supported in the class.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.GetFileExtensions"/>
<link id="TGraphic.GetFileExtensions"/>
</seealso>
</element>
<element name="TBitmap.GetFileExtensions.Result">
<short>File extensions used for the image type.</short>
</element>

<element name="TBitmap.GetResourceType">
<short>Gets the resource type identifier for the image format.</short>
<descr>
<p>
<var>GetResourceType</var> is an overridden method used to get the resource 
type identifier for the image format. GetResourceType returns the value in the
<var>RT_BITMAP</var> constant for the Windows Bitmap image format.
</p>
</descr>
<seealso/>
</element>
<element name="TBitmap.GetResourceType.Result">
<short>Returns the RT_BITMAP constant.</short>
</element>

<element name="TBitmap.LoadFromStream">
<short>
Loads image data for the bitmap from the specified stream.
</short>
<descr>
<p>
<var>LoadFromStream</var> is an overridden method used to read data for the 
bitmap image from the <var>TStream</var> instance specified in 
<var>AStream</var>. <var>ASize</var> contains the number of bytes to read in
the method.
</p>
<p>
The inherited method has been adapted for reading from a TResourceStream 
instance which can contain data as RT_BITMAP or RT_RCDATA resource types having 
slightly different binary structures.
</p>
<p>
LoadFromStream is called when the ReadData method is executed (in the 
TRasterImage ancestor) or when a TBitmap instance calls LoadFromResourceName or
LoadFromResourceID.
</p>
</descr>
<version>
Modified in LCL version 3.0 to provide support for loading image data from a 
resource stream containing either the RT_RCDATA or RT_BITMAP resource types.
</version>
<seealso>
<link id="TRasterImage.LoadFromStream"/>
<link id="TRasterImage.ReadData"/>
<link id="TGraphic.LoadFromResourceName"/>
<link id="TGraphic.LoadFromResourceID"/>
<link id="#lcl.lcltype.TBitmapFileHeader">TBitmapFileHeader</link>
<link id="#lcl.lcltype.TResourceType">TResourceType</link>
<link id="#lcl.lcltype.RT_BITMAP">RT_BITMAP</link>
<link id="#lcl.lcltype.RT_RCDATA">RT_RCDATA</link>
<link id="#rtl.classes.TResourceStream">TResourceStream</link>
</seealso>
</element>
<element name="TBitmap.LoadFromStream.AStream">
<short>Stream instance with the image data loaded in the method.</short>
</element>
<element name="TBitmap.LoadFromStream.ASize">
<short>Number of bytes to read from the stream.</short>
</element>

<element name="TSharedPixmap">
<short>Implements a reference-counted shared Pixmap image type.</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap"/>
<link id="TPixmap"/>
</seealso>
</element>

<element name="TPixmap">
<short>Implements support for the XPM (Pixmap) image format.</short>
<descr>
<p>
<var>TPixMap</var> is a <var>TFPImageBitmap</var> descendant, and is a 
wrapper used to handle the <b>Pixmap</b> (<b>'XPM'</b>) image format.
</p>
<p>
Pixmap is an image file format used by the X Window System. It is intended 
primarily for creating icons, and supports transparent pixels. Derived from 
the earlier XBM syntax, it is a plain text file using the XPM2 format or a C 
programming language syntax, which can be included in a source code file.
</p>
<p>
<var>TPixmap</var> ensures that specified resources (image, file, or stream) 
are of the correct type and format.
</p>
</descr>
<seealso/>
</element>

<element name="TPixMap.GetReaderClass">
<short>
Gets the class reference for a reader used during component streaming.
</short>
<descr/>
<seealso/>
</element>
<element name="TPixMap.GetReaderClass.Result">
<short>Class reference for a reader used during component streaming.</short>
</element>

<element name="TPixMap.GetWriterClass">
<short>
Gets the class reference for a writer used during component streaming.
</short>
<descr/>
<seealso/>
</element>
<element name="TPixMap.GetWriterClass.Result">
<short>Class reference for a writer used during component streaming.</short>
</element>

<element name="TPixMap.GetSharedImageClass">
<short>
Gets the class reference used to create the shared image in the class 
instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TPixMap.GetSharedImageClass.Result">
<short>
class reference used to create the shared image in the class instance.
</short>
</element>

<element name="TPixmap.LazarusResourceTypeValid">
<short>
Determines if the specified resource type is valid for the image format.
</short>
<descr/>
<seealso/>
</element>
<element name="TPixmap.LazarusResourceTypeValid.Result">
<short>Returns <b>True</b> if the resource type is 'XPM'</short>
</element>
<element name="TPixmap.LazarusResourceTypeValid.ResourceType">
<short>Resource type examined in the method.</short>
</element>

<element name="TPixmap.GetFileExtensions">
<short>Gets the file extensions supported for the image type.</short>
<descr>
<p>
<var>GetFileExtensions</var> is an overridden <var>String</var> class 
function used to get a delimited list of file extensions used for graphic 
files supported in the class. The <b>'.'</b> character is omitted from file 
extension(s), and extensions are separated by a <b>SemiColon</b> (<b>;</b>) 
character.
</p>
<p>
In TPixmap, the method returns the value <b>'xpm'</b> for the Pixmap format 
supported in the class.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.GetFileExtensions"/>
<link id="TGraphic.GetFileExtensions"/>
</seealso>
</element>
<element name="TPixmap.GetFileExtensions.Result">
<short>File extension(s) supported for the image format.</short>
</element>

<element name="TSharedPortableNetworkGraphic">
<short>
<var>TSharedPortableNetworkGraphic</var> - a reference counted PNG Image.
</short>
<descr>
<p>
<var>TSharedPortableNetworkGraphic</var> is a <var>TSharedCustomBitmap</var> 
descendant which implements a reference counted PNG image. 
TSharedPortableNetworkGraphic is the type returned by the 
<var>GetSharedImageClass</var> method in <var>TPortableNetworkGraphic</var>.
</p>
</descr>
<seealso>
<link id="TSharedCustomBitmap"/>
<link id="TPortableNetworkGraphic.GetSharedImageClass"/>
</seealso>
</element>

<element name="TPortableNetworkGraphic">
<short>Implements support for the PNG image format.</short>
<descr>
<p>
<var>TPortableNetworkGraphic</var> is a <var>TFPImageBitmap</var> descendant 
which implements support for the <b>PNG</b> (<b>Portable Network 
Graphics</b>) image format. PNG is a raster graphic file format that supports 
loss-less data compression. PNG was developed as an improved, non-patented 
replacement for GIF (Graphics Interchange Format).
</p>
<p>
PNG supports palette-based images (using 24-bit RGB or 32-bit RGBA colors), 
grayscale images (with or without alpha channel transparency), and full-color 
non-palette-based RGB or RGBA images. A PNG file contains a single image in 
an extensible chunk structure, and uses encoding to compress repetitive pixel 
values in the image.
</p>
<p>
PNG image files use the file extension <b>PNG</b> or <b>png</b>, and uses the 
MIME media type <b>'image/png'</b>.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<element link="#lcl.graphics.TFPImageBitmap.GetReaderClass" name="TPortableNetworkGraphic.GetReaderClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableNetworkGraphic.GetReaderClass.Result">
<short/>
</element>

<element name="TPortableNetworkGraphic.GetWriterClass" link="#lcl.graphics.TFPImageBitmap.GetReaderClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableNetworkGraphic.GetWriterClass.Result">
<short/>
</element>

<element name="TPortableNetworkGraphic.InitializeWriter" link="#lcl.graphics.TFPImageBitmap.InitializeWriter"/>
<element name="TPortableNetworkGraphic.InitializeWriter.AImage"/>
<element name="TPortableNetworkGraphic.InitializeWriter.AWriter"/>

<element link="#lcl.graphics.TRasterImage.GetSharedImageClass" name="TPortableNetworkGraphic.GetSharedImageClass">
<descr/>
<seealso/>
</element>
<element name="TPortableNetworkGraphic.GetSharedImageClass.Result">
<short/>
</element>

<element name="TPortableNetworkGraphic.IsStreamFormatSupported">
<short>
Determines if the specified stream contains image data supported for the 
image type.
</short>
<descr/>
<seealso/>
</element>
<element name="TPortableNetworkGraphic.IsStreamFormatSupported.Result">
<short/>
</element>
<element name="TPortableNetworkGraphic.IsStreamFormatSupported.Stream">
<short/>
</element>

<element link="#lcl.graphics.TGraphic.GetFileExtensions" name="TPortableNetworkGraphic.GetFileExtensions">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableNetworkGraphic.GetFileExtensions.Result">
<short/>
</element>

<element name="TSharedPortableAnyMapGraphic">
<short>
<var>TSharedPortableAnyMapGraphic</var> - a reference counted shared PNM.
</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TPortableAnyMapGraphic">
<short>
Implements an image which supports for the Portable Any Map (PNM) graphic 
format.
</short>
<descr>
<p>
<var>TPortableAnyMapGraphic</var> is a <var>TFPImageBitmap</var> descendant 
which implements support for the Portable Any Map (PNM) graphic format.
</p>
<p>
<b>PNM</b> is a member of the NetPBM family of image formats and includes 
<b>PBM</b>, <b>PGM</b>, and <b>PPM</b> image formats. The group is referred 
to collectively as the Portable Any Map format, and uses the <b>.PNM</b> file 
extension.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<element link="#lcl.graphics.TFPImageBitmap.GetReaderClass" name="TPortableAnyMapGraphic.GetReaderClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableAnyMapGraphic.GetReaderClass.Result">
<short/>
</element>

<element link="#lcl.graphics.TFPImageBitmap.GetWriterClass" name="TPortableAnyMapGraphic.GetWriterClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableAnyMapGraphic.GetWriterClass.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.GetSharedImageClass" name="TPortableAnyMapGraphic.GetSharedImageClass">
<descr/>
<seealso/>
</element>
<element name="TPortableAnyMapGraphic.GetSharedImageClass.Result">
<short/>
</element>

<element name="TPortableAnyMapGraphic.IsStreamFormatSupported">
<short>
Determines if the specified stream contains image data supported for the 
image type.
</short>
<descr/>
<seealso/>
</element>
<element name="TPortableAnyMapGraphic.IsStreamFormatSupported.Result">
<short/>
</element>
<element name="TPortableAnyMapGraphic.IsStreamFormatSupported.Stream">
<short/>
</element>

<element link="#lcl.graphics.TGraphic.GetFileExtensions" name="TPortableAnyMapGraphic.GetFileExtensions">
<short/>
<descr/>
<seealso/>
</element>
<element name="TPortableAnyMapGraphic.GetFileExtensions.Result">
<short/>
</element>

<element name="TIconImageClass">
<short>Class reference used to create new instances of TIconImage.</short>
<descr/>
<seealso>
<link id="TIconImage"/>
</seealso>
</element>

<element name="TSharedIcon">
<short>Implements a reference-counted shared Icon image type.</short>
<descr>
<p>
<var>TSharedIcon</var> is a <var>TSharedRasterImage</var> descendant which 
implements a reference counted shared Icon. TSharedIcon provides access to 
the list of images available in the Icon as <var>TIconImage</var> instances 
using the <var>Images</var> property. Methods are provided to add, delete, 
clear, sort, and retrieve the images.
</p>
<p>
TSharedIcon is the type used to implement the internal shared image in 
<var>TCustomIcon</var> (and descendant classes).
</p>
</descr>
<seealso/>
</element>

<!-- private -->
<element name="TSharedIcon.FImages"/>

<element name="TSharedIcon.FreeHandle">
<short>Frees the handle for the shared reference-counted icon.</short>
<descr>
<p>
<var>FreeHandle</var> is an overridden method in <var>TSharedIcon</var>. It 
calls <var>DestroyIcon</var> to free the Handle for the shared Icon in the 
widgetset class. It does not call the inherited method. No actions are 
performed in the method when Handle contains <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso>
<link id="TSharedImage.FreeHandle"/>
</seealso>
</element>

<element name="TSharedIcon.UpdateFromHandle">
<short>
Frees the existing icon image and reloads it from the specified handle.
</short>
<descr>
<p>
Calls FreeHandle to free the existing handle for the Icon in the widgetset 
class, and sets the handle to the value specified in NewHandle. Gets icon 
information from the widgetset class and adds a new icon image to the list of 
Images.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the NewHandle parameter.
</version>
<seealso>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TSharedIcon.UpdateFromHandle.NewHandle">
<short>
TLCLHandle instance assigned as the handle for the shared icon.
</short>
</element>

<element name="TSharedIcon.IsEmpty">
<short>
Indicates if the shared icon is empty (contains no icon images).
</short>
<descr/>
<seealso>
<link id="TSharedRasterImage.IsEmpty"/>
</seealso>
</element>
<element name="TSharedIcon.IsEmpty.Result">
<short/>
</element>

<element name="TSharedIcon.GetImage">
<short>Gets the value for the indexed Images property.</short>
<descr/>
<seealso/>
</element>
<element name="TSharedIcon.GetImage.Result">
<short>
TIconImage instance at the specified position in the image list.
</short>
</element>
<element name="TSharedIcon.GetImage.AIndex">
<short>Ordinal position for the image retrieved from the image list.</short>
</element>

<element name="TSharedIcon.Create">
<short>
<var>Create</var> - constructor for <var>TSharedIcon</var>: performs inherited
<var>Create</var> then creates a list of images.
</short>
<descr/>
<seealso>
<link id="#rtl.System.TObject.Create">TObject.Create</link>
</seealso>
</element>

<element name="TSharedIcon.Destroy">
<short>
<var>Destroy</var> - destructor for <var>TSharedIcon</var>: frees the list of 
images and performs inherited <var>Destroy</var>.
</short>
<descr/>
<seealso>
<link id="#rtl.System.TObject.Destroy">TObject.Destroy</link>
</seealso>
</element>

<element name="TSharedIcon.Clear">
<short>
<var>Clear</var> - remove the icon and free its resources.
</short>
<descr/>
<seealso/>
</element>

<element name="TSharedIcon.Delete">
<short>Removes the icon image with the specified index.</short>
<descr/>
<seealso/>
</element>
<element name="TSharedIcon.Delete.AIndex">
<short>Ordinal position for the icon image removed in the method.</short>
</element>

<element name="TSharedIcon.GetIndex">
<short>
Gets the Index of an image with specified pixel format, height and width.
</short>
<descr/>
<seealso/>
</element>
<element name="TSharedIcon.GetIndex.Result">
<short>
Ordinal position for the icon image matching the requested value(s).
</short>
</element>
<element name="TSharedIcon.GetIndex.AFormat">
<short>Pixel format (color depth) to locate in the Images.</short>
</element>
<element name="TSharedIcon.GetIndex.AHeight">
<short>Height for the requested image.</short>
</element>
<element name="TSharedIcon.GetIndex.AWidth">
<short>Width for the requested image.</short>
</element>

<element name="TSharedIcon.GetImagesClass">
<short>
Gets the class reference used to create a new icon image in the Images 
property.
</short>
<descr/>
<seealso/>
</element>
<element name="TSharedIcon.GetImagesClass.Result">
<short/>
</element>

<element name="TSharedIcon.Add">
<short>Adds the specified image to the list of Images in the icon.
</short>
</element>
<element name="TSharedIcon.Add.AIconImage">
<short/>
</element>

<element name="TSharedIcon.Sort">
<short>Sorts values in Images using the IconCompare routine.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedIcon.Count">
<short>
<var>Count</var> - returns the number of references to the shared icon.
</short>
</element>
<element name="TSharedIcon.Count.Result">
<short/>
</element>

<element name="TSharedIcon.Images">
<short>Provides indexed access to the images available in the Icon.</short>
<descr/>
<seealso/>
</element>
<element name="TSharedIcon.Images.AIndex">
<short>Ordinal position for an icon image in the list of images.</short>
</element>

<element name="TIconImage">
<short>
<var>TIconImage</var> - a primitive Icon class with handles for the Bitmap, 
Mask and Palette.
</short>
<descr/>
<seealso/>
</element>

<!-- private -->
<element name="TIconImage.FHeight"/>
<element name="TIconImage.FPixelFormat"/>
<element name="TIconImage.FWidth"/>
<element name="TIconImage.FImage"/>
<element name="TIconImage.FHandle"/>
<element name="TIconImage.FMaskHandle"/>
<element name="TIconImage.FPalette"/>

<element name="TIconImage.GetPalette">
<short>Gets the value for the Palette property.</short>
<descr/>
<seealso>
<link id="TIconImage.Palette"/>
</seealso>
</element>
<element name="TIconImage.GetPalette.Result">
<short>Value for the property.</short>
</element>

<element name="TIconImage.RawImageNeeded">
<short>
<var>RawImageNeeded</var> - if <var>ADescOnly</var> is <b>True</b> 
(descriptor only), then we need a Raw Image.
</short>
<descr/>
<seealso/>
</element>
<element name="TIconImage.RawImageNeeded.ADescOnly">
<short/>
</element>

<element name="TIconImage.UpdateFromImage">
<short>Updates the icon image from the specified raw image data.</short>
<descr>
<p>
<var>UpdateFromImage</var> is a procedure used to update the icon image from 
the specified raw image data.
</p>
<p>
<var>AImage</var> is a <var>TRawImage</var> instance with the image content 
stored in the <var>RawImage</var> property in the class instance. The image 
descriptor in AImage is examined to get the values stored in the Height and 
Width properties. The color depth in AImage is converted and stored in the 
<var>PixelFormat</var> property.
</p>
<p>
UpdateFromImage is called from the Create constructor when a 
<var>TRawImage</var> or a <var>TIconInfo</var> argument is provided.
</p>
</descr>
<seealso>
<link id="TIconImage.PixelFormat"/>
<link id="TIconImage.Height"/>
<link id="TIconImage.Width"/>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>
<element name="TIconImage.UpdateFromImage.AImage">
<short>Raw image data stored in the method.</short>
</element>

<element name="TIconImage.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the overloaded constructor for the class instance. It 
specifies a Raw image to be used, and calls the inherited Create method. 
Variants are provided with parameters which specify the dimensions and/or 
content for the icon image. The variant with the <var>TIconInfo</var> argument 
is used to create a new icon image when a handle is assigned in 
<var>TSharedIcon</var>.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>
<element name="TIconImage.Create.AFormat">
<short>Pixel format (color depth) for the image data.</short>
</element>
<element name="TIconImage.Create.AHeight">
<short>Height in pixels for the image.</short>
</element>
<element name="TIconImage.Create.AWidth">
<short>Width in pixels for the image.</short>
</element>
<element name="TIconImage.Create.AImage">
<short>Raw image data used to load the content in the image.</short>
</element>
<element name="TIconImage.Create.AInfo">
<short>
Structure with Hotspot, Mask and Color information for the icon image.
</short>
</element>

<element name="TIconImage.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy ensures that existing values in <var>Handle</var>, 
<var>MaskHandle</var>, and <var>Palette</var> are freed by calling 
<var>DeleteObject</var>. The raw image data used the class instance is also 
freed. Destroy calls the inherited destructor prior to exiting from the 
method.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.Destroy">TObject.Destroy</link>
</seealso>
</element>

<element name="TIconImage.ReleaseHandle">
<short>Releases the Handle for the icon image.</short>
<descr>
<p>
<var>ReleaseHandle</var> is a <var>HBITMAP</var> function used to release the 
<var>Handle</var> assigned for the icon image. The return value contains the 
HBITMAP value for Handle before it is released. ReleaseHandle sets the value 
in Handle to <b>0</b> (<b>zero</b>) to indicate that the handle is no longer 
in use or invalid.
</p>
<p>
ReleaseHandle is called when a <var>TCustomIcon</var> descendant calls its 
<var>InternalReleaseBitmapHandle</var> method.
</p>
<p>
Use <var>ReleaseMaskHandle</var> to release the <var>MaskHandle</var> for the 
icon image.
</p>
<p>
Use <var>ReleasePalette</var> to release the <var>Palette</var> handle used 
in the icon image.
</p>
</descr>
<seealso/>
</element>
<element name="TIconImage.ReleaseHandle.Result">
<short/>
</element>

<element name="TIconImage.ReleaseMaskHandle">
<short>
<var>ReleaseMaskHandle</var> - returns mask Bitmap handle to operating system.
</short>
<descr/>
<seealso/>
</element>
<element name="TIconImage.ReleaseMaskHandle.Result">
<short/>
</element>

<element name="TIconImage.ReleasePalette">
<short>
<var>ReleasePalette</var> - returns Palette handle to operating system.
</short>
<descr/>
<seealso/>
</element>
<element name="TIconImage.ReleasePalette.Result">
<short/>
</element>

<element name="TIconImage.UpdateHandles">
<short>
<var>UpdateHandles</var> - returns <b>True</b> when Bitmap and Mask handles 
have been updated.
</short>
<descr>
<p>
<var>UpdateHandles</var> is a <var>Boolean</var> function used to set the 
handles for the Bitmap and its optional Mask to the specified values. 
<var>DeleteObject</var> is called to remove existing handle value(s) in the 
<var>Handle</var> and <var>MaskHandle</var> properties.
</p>
<p>
The return value is <b>True</b> when the value(s) in Handle and/or MaskHandle 
are successfully set to the specified values.
</p>
<p>
UpdateHandles emulates the method with the same name in 
<var>TCustomBitmap</var>. UpdateHandles is called when the <var>TIcon</var> 
instance where the icon image is used calls its <var>UpdateHandles</var> 
method.
</p>
</descr>
<seealso/>
</element>
<element name="TIconImage.UpdateHandles.Result">
<short><b>True</b> when the handles are successfully updated.</short>
</element>
<element name="TIconImage.UpdateHandles.ABitmap">
<short>Handle for the Bitmap stored in the method.</short>
</element>
<element name="TIconImage.UpdateHandles.AMask">
<short>Handle for the Mask stored in the method.</short>
</element>

<element name="TIconImage.Height">
<short>The <var>Height</var> of the Icon.</short>
<descr/>
<seealso/>
</element>

<element name="TIconImage.Width">
<short>The <var>Width</var> of the Icon.</short>
<descr/>
<seealso/>
</element>

<element name="TIconImage.PixelFormat">
<short>
<var>PixelFormat</var> - the format of the Pixels in the Image.
</short>
<descr/>
<seealso/>
</element>

<element name="TIconImage.Handle">
<short>
<var>Handle</var> - for the Bitmap.
</short>
<descr/>
<seealso/>
</element>

<element name="TIconImage.MaskHandle">
<short>
<var>MaskHandle</var> - Bitmap handle for the Mask.
</short>
<descr/>
<seealso/>
</element>

<element name="TIconImage.Palette">
<short>Handle for the <var>Palette</var>.
</short>
<descr>
<p>
<var>Palette</var> is a read-only <var>HPALETTE</var> property which provides 
access to the color palette used in the Icon image.
</p>
<remark>
Palette is not implemented in the current LCL version.
</remark>
</descr>
<seealso/>
</element>

<element name="TIconImage.RawImage">
<short>Raw image data for the icon image.</short>
<descr>
<p>
<var>RawImage</var> is a read-only <var>TRawImage</var> property which 
contains the raw image data for the icon image.
</p>
<p>
The property value is assigned in the <var>Create</var> method when a 
TRawImage argument is provided. The <var>UpdateFromImage</var> method is used 
to examine the raw image data and get the values stored in properties.
</p>
</descr>
<seealso>
<link id="TIconImage.Create"/>
<link id="TIconImage.UpdateFromImage"/>
<link id="#lazutils.graphtype.TRawImage">TRawImage</link>
</seealso>
</element>

<element name="TCustomIcon">
<short>
<var>TCustomIcon</var> - base class for TIcon.</short>
<descr>
<p>
<var>TCustomIcon</var> is a <var>TRasterImage</var> descendant which 
implements the base class for TIcon. TIcon supports image files using the 
<b>.ICO</b> file format. An .ICO file typically contains several images with 
different sizes and/or color depths.
</p>
<p>
TCustomIcon extends the ancestor class to include an internal list of images, 
and provides overridden methods which use the list of images in their 
implementations. This includes the <var>ReadData</var> method used during LCL 
component streaming. <var>ReadStream</var> is overridden to handle not only 
multiple images but <b>PNG</b> and <b>DIB</b> image formats used in some Icon 
files.
</p>
<p>
When loading an icon file, the largest/most colorful image is selected as the 
current image. Other sizes and/or color depths are accessed by setting the 
value in the <var>Current</var> property, or using <var>Size</var> when 
Current is not already set, or by setting Current to the value from the 
<var>GetBestIndexForSize</var> method.
</p>
<p>
Use the <var>Count</var>, <var>Add</var>, <var>Delete</var>, 
<var>Remove</var>, <var>Clear</var>, and <var>AssignImage</var> methods to 
maintain the images in the internal list.
</p>
<remark>
Please note that writing to an icon file is not currently implemented in 
TCustomIcon (or descendent classes).
</remark>
</descr>
<seealso>
<link id="TRasterImage"/>
<link id="TIcon"/>
<link id="TSharedIcon"/>
</seealso>
</element>

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

<element name="TCustomIcon.SetCurrent">
<short>Sets the value for the Current property.</short>
<descr/>
<seealso>
<link id="TCustomIcon.Current"/>
</seealso>
</element>
<element name="TCustomIcon.SetCurrent.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomIcon.FCurrent">
<short>
Local member variable used to hold the current sequence number.
</short>
<descr/>
<seealso/>
</element>

<element name="TCustomIcon.FRequestedSize">
<short>Member used for the requested icon size.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomIcon.MaskHandleNeeded">
<short>Ensures that a handle for the mask in the icon is valid.</short>
<descr/>
<seealso>
<link id="TRasterImage.MaskHandleNeeded"/>
</seealso>
</element>

<element name="TCustomIcon.PaletteNeeded">
<short>An empty implementation in TCustomIcon.</short>
<descr>
<p>
Palette information is handled in the .ICO image format.
</p>
</descr>
<seealso>
<link id="TRasterImage.PaletteNeeded"/>
</seealso>
</element>

<element name="TCustomIcon.CanShareImage">
<short>Indicates whether the image class type has a shared handle.</short>
<descr>
<p>
Determines whether the image class type can be shared. Returns 
<b>True</b> when <var>AClass</var> is derived from <var>TSharedIcon</var>.
</p>
<p>
This is a temporary work-around to make Assign work with cursors, icons and 
icnsicons.
</p>
</descr>
<seealso>
<link id="TRasterImage.CanShareImage"/>
</seealso>
</element>
<element name="TCustomIcon.CanShareImage.Result">
<short>Returns <b>True</b> when AClass is derived from TSharedIcon.</short>
</element>
<element name="TCustomIcon.CanShareImage.AClass">
<short/>
</element>

<element name="TCustomIcon.CheckRequestedSize">
<short>
<var>CheckRequestedSize</var> - method to ensure correct size requested.
</short>
<descr/>
<seealso/>
</element>

<element name="TCustomIcon.GetIndex">
<short>
<var>GetIndex</var> - returns the Index value of the Icon with specified 
format and size (.icn files can contain several versions of image).
</short>
<descr>
<p>
Gets the ordinal position in the internal image list for the icon with the 
specified pixel format, height, and width. The return value is <b>-1</b> if 
an image using all of the requested values was not found in the list.
</p>
<p>
Assign the return value to the <var>Current</var> property to use it as the 
selected image for the icon.
</p>
<p>
Use <var>GetBestIndexForSize</var> to find the position of the image which 
matches most closely the specified height and width.
</p>
</descr>
<seealso>
<link id="TCustomIcon.Current"/>
<link id="TCustomIcon.GetBestIndexForSize"/>
<link id="TSharedIcon.GetIndex"/>
<link id="TSharedIcon.Images"/>
</seealso>
</element>
<element name="TCustomIcon.GetIndex.Result">
<short>
Ordinal position for the image with the requested attributes, or -1 when not 
found.
</short>
</element>
<element name="TCustomIcon.GetIndex.AFormat">
<short>Color depth for the requested icon image.</short>
</element>
<element name="TCustomIcon.GetIndex.AHeight">
<short>Height for the requested icon image.</short>
</element>
<element name="TCustomIcon.GetIndex.AWidth">
<short>Width for the requested icon image.</short>
</element>

<element name="TCustomIcon.GetBitmapHandle">
<short>Gets the value for the BitmapHandle property.</short>
<descr>
<p>Implements the abstract method defined in the ancestor class.
</p>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.GetBitmapHandle"/>
</seealso>
</element>
<element name="TCustomIcon.GetBitmapHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomIcon.GetDefaultSize">
<short>
<var>GetDefaultSize</var> - returns default size for Icon.
</short>
<descr>
<p>
<var>GetDefaultSize</var> is a <var>TSize</var> class function used to get 
the default size in new instances of the class. The return value uses the 
SM_CXICON and SM_CYICON values returned from the GetSystemMetrics function in 
its cx and cy members.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.GetDefaultSize.Result">
<short>TSize instance with the default width and height for an icon.</short>
</element>

<element name="TCustomIcon.GetMaskHandle">
<short>Gets the value for the MaskHandle property.</short>
<descr>
<p>
<var>GetMaskHandle</var> implements the abstract method defined in the 
ancestor class.
</p>
</descr>
<seealso>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.GetMaskHandle"/>
</seealso>
</element>
<element name="TCustomIcon.GetMaskHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomIcon.GetPalette">
<short>Gets the value for the Palette property.</short>
<descr/>
<seealso>
<link id="TGraphic.Palette"/>
<link id="TGraphic.GetPalette"/>
</seealso>
</element>
<element name="TCustomIcon.GetPalette.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomIcon.GetPixelFormat">
<short>Gets the value for the PixelFormat property.</short>
<descr>
<p>Implements the abstract virtual method defined in the ancestor class.
</p>
</descr>
<seealso>
<link id="TRasterImage.PixelFormat"/>
<link id="TRasterImage.GetPixelFormat"/>
</seealso>
</element>
<element name="TCustomIcon.GetPixelFormat.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomIcon.GetRawImagePtr">
<short>Gets a pointer to the raw image data for the icon.</short>
<descr>
<p>
<var>GetRawImagePtr</var> is an overridden method used to get a pointer to 
the raw image data for the icon image. The return value is a 
<var>PRawImage</var> type which points to the data in a <var>TIconImage</var> 
instance in the shared image list for the icon.
</p>
<p>
GetRawImagePtr uses the value in <var>Current</var> to determine which image 
is retrieved from the internal image list. When Current is <b>-1</b>, the 
return value is <b>Nil</b>. Otherwise, the shared icon image at the position 
in Current is accessed to get the return value for the method.
</p>
<p>
GetRawImagePtr is called from <var>AssignImage</var> a raw image is assigned 
to the icon. It is also used to get mask image data in the 
<var>MaskHandleNeeded</var> method.
</p>
</descr>
<seealso>
<link id="TCustomIcon.Current"/>
<link id="TCustomIcon.AssignImage"/>
<link id="TCustomIcon.MaskHandleNeeded"/>
<link id="TIconImage"/>
<link id="TRasterImage.GetRawImagePtr"/>
</seealso>
</element>
<element name="TCustomIcon.GetRawImagePtr.Result">
<short>
Pointer to the raw image data, or Nil when Current is not assigned.
</short>
</element>

<element link="#lcl.graphics.TRasterImage.GetRawImageDescriptionPtr" name="TCustomIcon.GetRawImageDescriptionPtr">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.GetRawImageDescriptionPtr.Result">
<short/>
</element>

<element link="#lcl.graphics.TGraphic.GetTransparent" name="TCustomIcon.GetTransparent">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.GetTransparent.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.GetSharedImageClass" name="TCustomIcon.GetSharedImageClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.GetSharedImageClass.Result">
<short/>
</element>

<element name="TCustomIcon.GetStreamSignature">
<short>Gets the stream signature used for icon data.</short>
<descr>
<p>
<var>GetStreamSignature</var> is a <var>Cardinal</var> class function used to 
get the signature which identifies the image content when stored in a stream. 
GetStreamSignature is used in the implementation of the <var>ReadData</var> 
method which reads the values for the class instance during LCL component 
streaming.
</p>
<p>
GetStreamSignature is defined as a virtual method, and is overridden in 
<var>TIcon</var> to use the value required for the icon image format.
</p>
</descr>
<seealso>
<link id="TIcon"/>
</seealso>
</element>
<element name="TCustomIcon.GetStreamSignature.Result">
<short>Cardinal value with the stream signature for the class.</short>
</element>

<element name="TCustomIcon.GetTypeID">
<short>Gets the icon type identifier used in the image list header.
</short>
<descr>
<p>
<var>GetTypeId</var> is a <var>Word</var> class function used to get the 
image type identifier used for icon images. It is used in the implementation 
of the
<var>WriteStream</var> method, and provides the value stored in the icon 
image header.
</p>
<p>
Since TCustomIcon instances are not included in component streaming, the 
return value is always returns <b>0</b>. GetTypeId is overridden in 
<var>TIcon</var> to provide the value used in the derived class.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.GetTypeID.Result">
<short>Type identifier for images in the icon.</short>
</element>

<element name="TCustomIcon.HandleNeeded">
<short>Ensures that a handle for the image has been allocated.</short>
<descr>
<p>
<var>HandleNeeded</var> is an overridden procedure used to ensure that a 
handle for the image has been allocated. HandleNeeded re-implements the 
method defined in the ancestor class.
</p>
<p>
No actions are performed in the method when a valid valid has already been 
assigned to the shared image in the class instance.
</p>
<p>
HandleNeeded calls the <var>CreateIconIndirect</var> routine for the 
widgetset to get the value used as the Handle for the shared image.
</p>
</descr>
<seealso>
<link id="TRasterImage.HandleNeeded"/>
</seealso>
</element>

<element link="#lcl.graphics.TRasterImage.InternalReleaseBitmapHandle" name="TCustomIcon.InternalReleaseBitmapHandle">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.InternalReleaseBitmapHandle.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.InternalReleaseMaskHandle" name="TCustomIcon.InternalReleaseMaskHandle">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.InternalReleaseMaskHandle.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.InternalReleasePalette" name="TCustomIcon.InternalReleasePalette">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCustomIcon.InternalReleasePalette.Result">
<short/>
</element>

<element name="TCustomIcon.IsStreamFormatSupported">
<short>
Indicates whether the specified stream contains image data with a format 
supported for use in derived TCustomIcon classes.
</short>
<descr>
<p>
<var>IsStreamFormatSupported</var> is an overridden <var>Boolean</var> class 
function in <var>TCustomIcon</var> used to check whether the image data stored 
in <var>Stream</var> uses the StreamSignature required for an icon class 
instance. It overrides the method implemented in TGraphic which always returns 
<b>False</b>. While IsStreamFormatSupported() has been implemented for other 
graphics classes like TPortableNetworkGraphics, TBitmap, TJpegImage, etc., it 
was missing in TCustomIcon and its descendants TIcon and TCursorImage in 
versions prior to LCL 4.4.
</p>
<p>
IsStreamFormatSupported returns <b>True</b> if the data stored in Stream 
starts with the four byte StreamSignature required for an icon class instance. 
The position in Stream is saved before reading the byte values, and restored 
when the read operation is complete.
</p>
<p>
Please note that TCustomIcon does <b>not</b> define the value for 
StreamSignature - it is defined in descendent classes like TIcon and 
TCursorImage which implement custom GetStreamSignature methods for the image 
types.
</p>
</descr>
<version>
Added in LCL version 4.4.
</version>
<seealso>
<link id="TCustomIcon.GetStreamSignature"/>
<link id="TIcon.GetStreamSignature"/>
<link id="TCursorImage.GetStreamSignature"/>
<link id="TGraphic.IsStreamFormatSupported"/>
<link id="TGraphicClass"/>
<link id="TPicture.Graphic"/>
<link id="GetGraphicClassForFileExtension"/>
</seealso>
</element>
<element name="TCustomIcon.IsStreamFormatSupported.Stream">
<short>
TStream instance with the image data examined in the method.
</short>
</element>
<element name="TCustomIcon.IsStreamFormatSupported.Result">
<short>
Returns <b>True</b> if the stream starts with the StreamSignature needed for 
a graphic class type.
</short>
</element>

<element name="TCustomIcon.ReadData">
<short>Reads data for the class instance from a stream.</short>
<descr>
<p>
<var>ReadData</var> is an overridden method used to read the data for the 
class instance from the TStream instance specified in <var>Stream</var>. 
ReadData is the method called when TFiler reads a persistent object during 
LCL component streaming.
</p>
<p>
ReadData saves the position in Stream on entry, and restores the original 
position prior to exiting from the method.
</p>
<p>
ReadData checks the values in Stream to determine if a size prefix for the 
content is stored in the stream. Delphi streaming does not include the size 
prefix. Current Lazarus versions do. When the <var>LongInt</var> value used 
as the StreamSignature is 0, the LoadFromStream method is called to load the 
contents of the stream. Otherwise, the inherited method is called to complete 
the operation.
</p>
<p>
ReadData is also called from the <var>LoadFromResourceHandle</var> method in 
<var>TIcon</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.ReadData"/>
<link id="TGraphic.ReadData"/>
<link id="TIcon.LoadFromResourceHandle"/>
<link id="#rtl.classes.TFiler">TFiler</link>
</seealso>
</element>
<element name="TCustomIcon.ReadData.Stream">
<short/>
</element>

<element name="TCustomIcon.ReadStream">
<short>Reads the content for the icon from the specified stream.</short>
<descr>
<p>
<var>ReadStream</var> is an overridden procedure used to read the content for 
the icon from the stream specified in <var>AStream</var>. ReadStream 
implements the abstract virtual method defined in the ancestor class.
</p>
<p>
ReadStream verifies that AStream contains an icon image by checking for 
header value(s) that are valid for .ICO data. If the header values are not 
found, an <var>EInvalidGraphic</var> exception is raised.
</p>
<p>
For icon data, the icon directory must be read from the stream. The header 
contains the number of icon directory entries included in the stream. The 
icon directory entries are read from AStream, and include values for each 
icon image that includes:
</p>
<ul>
<li>HotSpotX</li>
<li>HotSpotY</li>
<li>BytesInRes</li>
<li>ImageOffset</li>
</ul>
<p>
ReadStream positions the stream, and reads image data for the each of the 
icon directory entries. It handles both DIB Bitmap and PNG (used in Windows 
Vista) image data for the icon images. An FCL-compatible image reader is 
created as required for the image type, and a <var>TLazIntfImage</var> 
instance is used to capture the raw image data from the stream. Images read 
from the stream are added to the internal list of images in the 
<var>TSharedIcon</var> member for the class instance.
</p>
<p>
ReadStream calls <var>CheckRequestedSize</var> to use the <var>Width</var> 
and/or <var>Height</var> specified in the class instance. 
<var>GetBestIndexForSize</var> is called to determine the value in 
<var>Current</var> with the requested image size.
</p>
</descr>
<seealso>
<link id="TRasterImage.ReadStream"/>
</seealso>
</element>
<element name="TCustomIcon.ReadStream.AStream">
<short>Stream instance with the image content read in the method.</short>
</element>
<element name="TCustomIcon.ReadStream.ASize">
<short>Number of bytes expected for the icon data.</short>
</element>

<element name="TCustomIcon.SetMasked">
<short>Sets the value for the Masked property.</short>
<descr>
<p>
<var>SetMasked</var> is an empty implementation in <var>TCustomIcon</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.Masked"/>
</seealso>
</element>
<element name="TCustomIcon.SetMasked.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomIcon.SetPixelFormat">
<short>Sets the value for the PixelFormat property.</short>
<descr>
<p>
Changing the value for <var>PixelFormat</var> raises an 
<var>EInvalidGraphicOperation</var> exception in <var>TCustomIcon</var>.
</p>
</descr>
<seealso>
<link id="TRasterImage.SetPixelFormat"/>
<link id="TRasterImage.PixelFormat"/>
</seealso>
</element>
<element name="TCustomIcon.SetPixelFormat.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomIcon.SetTransparent">
<short>Sets the value for the Transparent property.</short>
<descr>
<p>
<var>SetTransparent</var> is an empty implementation in 
<var>TCustomIcon</var>.
</p>
</descr>
<seealso>
<link id="TGraphic.Transparent"/>
<link id="TRasterImage.SetTransparent"/>
</seealso>
</element>
<element name="TCustomIcon.SetTransparent.AValue">
<short>New value for the property.</short>
</element>

<element name="TCustomIcon.UnshareImage">
<short>
Unshares the shared image when the content in the icon is changed.
</short>
<descr>
<p>
<var>UnshareImage</var> is an overridden procedure used to stop sharing the 
image(s) for the icon. UnshareImage implements the abstract virtual method 
defined in the ancestor class.
</p>
<p>
No actions are performed in the method when the <var>RefCount</var> for the 
internal <var>TSharedIcon</var> instance is less than <b>1</b>.
</p>
<p>
When sharing is stopped, the internal TSharedIcon instance in the class is 
re-created.
</p>
<p>
<var>CopyContent</var> indicates whether existing content from icon images is 
copied into the new image list. When set to <b>True</b>, 
<var>TIconImage</var> instances are re-created for each of the icon images 
and their existing content is copied. When set to <b>False</b>, image data 
for the icon is empty.
</p>
<p>
UnshareImage calls <var>FreeCanvasContext</var> to discard the device context 
used in the Canvas.
</p>
<p>
UnshareImage calls the <var>Release</var> method for the old TSharedIcon 
instance.
</p>
<p>
UnshareImage is called from methods which alter the handle or image content 
for the icon, including:
</p>
<ul>
<li>SetHandle</li>
<li>Add</li>
<li>Assign</li>
<li>AssignImage</li>
<li>Delete</li>
</ul>
</descr>
<seealso>
<link id="TRasterImage.UnshareImage"/>
</seealso>
</element>
<element name="TCustomIcon.UnshareImage.CopyContent">
<short><b>True</b> if existing image content is copied in the method.</short>
</element>

<element name="TCustomIcon.UpdateCurrentView">
<short>
<var>UpdateCurrentView</var> - updates the current appearance of the Icon.
</short>
<descr>
<p>
<var>UpdateCurrentView</var> is a procedure used to refresh the canvas when 
an icon image has been modified. UpdateCurrentView frees the device context 
(or handle) for the <var>Canvas</var>, and calls the <var>Changed</var> 
method.
</p>
<p>
UpdateCurrentView is called from methods like <var>Add</var> and 
<var>Delete</var>, and when a new icon image is selected by setting the value 
in the <var>Current</var> property.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomIcon.SetHandle">
<short>
Unshares an existing shared image handle and set the new value.
</short>
<descr>
<p>
<var>SetHandle</var> is a method used to set set the value for the shared 
image handle in the icon instance. It ensures that an existing shared image 
handle frees both its canvas context and the data in its TSharedImage instance.
</p>
<p>
It calls UpdateHandle to set the new shared handle for the icon instance to 
AValue. Values in Current and Count are reset when the handle is changed. 
Current is set 0 when multiple images are used in the icon. It is set to -1 
when a single image is present. Changed is called to update the value in 
Modified and signal the OnChange event handler (when assigned).
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the AValue parameter.
</version>
<seealso>
<link id="TRasterImage.SetHandle"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCustomIcon.SetHandle.AValue">
<short>
New value for the shared image handle in the icon.
</short>
</element>

<element name="TCustomIcon.UpdateHandle">
<short>
Updates the handle in the shared icon image top the specified value.
</short>
<descr>
<p>
<var>UpdateHandle</var> is a <var>Boolean</var> function used to update the 
shared icon image when the handle specified in <var>AValue</var> differs from 
the handle in the shared image.
</p>
<p>
The return value is <b>True</b> when the handles have different values on 
entry. UpdateHandle calls the <var>UpdateFromHandle</var> method in the 
<var>TSharedIcon</var> instance using AValue as an argument.
</p>
<p>
No actions are performed in the method when the return value is <b>False</b>.
</p>
<p>
UpdateHandle is called when a new value is assigned to the <var>Handle</var> 
property.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.UpdateHandle.Result">
<short>
<b>True</b> when the handle in the icon is different that the handle in the 
shared icon image.
</short>
</element>
<element name="TCustomIcon.UpdateHandle.AValue">
<short>Handle compared to the shared icon image.</short>
</element>

<element name="TCustomIcon.UpdateHandles">
<short>
Sets the Bitmap and Mask handles for the current image in the icon.
</short>
<descr>
<p>
<var>UpdateHandles</var> is an overridden method used to set the Bitmap and 
Mask handles for the
<var>Current</var> icon image to the specified values. UpdateHandles 
implements the abstract virtual method defined in the ancestor class.
</p>
<p>
UpdateHandles uses the value in <var>Current</var> to determine the 
<var>TIconImage</var> in the internal image list that is updated in the 
method.
</p>
<p>
When Current is set to <b>-1</b>, an icon image has not been selected and no 
actions are performed in the method. The return value is <b>False</b> if the 
handles could not be applied to icon image.
</p>
<p>
UpdateHandles calls the <var>UpdateHandles</var> method for the TIconImage 
indicated in Current using the values in <var>ABitmap</var> and 
<var>AMask</var> as arguments. The return value is <b>True</b> if the handles 
are successfully applied to the icon image.
</p>
<p>
UpdateHandles is called from methods like:
</p>
<ul>
<li>BitmapHandleNeeded</li>
<li>MaskHandleNeeded</li>
<li>UpdateHandle</li>
<li>Assign</li>
</ul>
</descr>
<seealso>
<link id="TRasterImage.UpdateHandles"/>
</seealso>
</element>
<element name="TCustomIcon.UpdateHandles.Result">
<short>
<b>True</b> if the new handles are successfully applied to the icon image.
</short>
</element>
<element name="TCustomIcon.UpdateHandles.ABitmap">
<short>Bitmap handle for the current image in the icon.</short>
</element>
<element name="TCustomIcon.UpdateHandles.AMask">
<short>Mask handle for the current image in the icon.</short>
</element>

<element name="TCustomIcon.WriteStream">
<short>
Writes the content for the multi-image icon to the specified stream.
</short>
<descr>
<p>
<var>WriteStream</var> is an overridden method used to write the content for 
the multi-image icon to the stream specified in
<var>AStream</var>. WriteStream implements the abstract virtual method 
defined in the ancestor class.
</p>
<p>
WriteStream performs actions needed to write the header, icon directory, and 
content for each of the images used in the multi-image icon to the 
TMemoryStream instance. It handles both PNG and DIB Bitmap icon images, and 
creates Mask data for images when it is not already present.
</p>
<p>
For icon images used in <var>TCursorImage</var>, the X and Y coordinates for 
the HotSpot are also included in the image data.
</p>
<p>
WriteStream is called from <var>SaveStreamNeeded</var> when the 
<var>SaveToStream</var> method is performed.
</p>
</descr>
<seealso>
<link id="TRasterImage.WriteStream"/>
</seealso>
</element>
<element name="TCustomIcon.WriteStream.AStream">
<short>TMemoryStream instance where icon data is stored.</short>
</element>

<element name="TCustomIcon.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and 
calls the inherited constructor on entry. Create sets the default values for 
properties, including:
</p>
<dl>
<dt>Current</dt>
<dd>Set to -1 to indicate that an icon image has not been selected.</dd>
<dt>Masked</dt>
<dd>
Set to <b>True</b>. By definition, an icon is masked. Does not account for 
icon images with an alpha channel.
</dd>
</dl>
<p>
Create initializes the internal member used to track the size for a requested 
icon.
</p>
</descr>
<seealso>
<link id="TCustomIcon.Current"/>
<link id="TRasterImage.Masked"/>
<link id="TGraphic.Create"/>
</seealso>
</element>

<element name="TCustomIcon.Add">
<short>
<var>Add</var> - an Icon formatted as <var>AFormat</var>, with specified 
<var>Height</var> and <var>Width</var>.
</short>
<descr>
<p>
<var>Add</var> is procedure used to create an image for the icon with the 
attributes specified in <var>AFormat</var>, <var>AHeight</var>, and 
<var>AWidth</var>. Add calls <var>GetIIndex</var> to determine if an icon 
image with the requested attributes already exists in the image list for the 
icon. An <var>EInvalidGraphicOperation</var> exception is raised when the 
image already exists in the internal image list.
</p>
<p>
Add calls <var>UnshareImage</var> to release the shared image handle, and 
adds a new image class instance to the shared icon. If the icon image is the 
first one in the list, the value in <var>Current</var> is set to <b>0</b> 
(<b>zero</b>) and the <var>UpdateCurrentView</var> method is called.
</p>
<p>
Use Current to make an icon image active for the class instance. Use 
<var>AssignImage</var> to store the image at the position in Current.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.Add.AFormat">
<short>Pixel format (color depth) for the icon image.</short>
</element>
<element name="TCustomIcon.Add.AHeight">
<short>Height in pixels for the icon image.</short>
</element>
<element name="TCustomIcon.Add.AWidth">
<short>Width in pixels for the icon image.</short>
</element>

<element name="TCustomIcon.Assign">
<short>
Copies values from the specified persistent object into the current class 
instance.
</short>
<descr>
<p>
<var>Assign</var> is an overridden method used to copy values from the 
persistent object in <var>Source</var> into the current class instance. 
Assign calls <var>BeginUpdate</var> to increment the active update counter, 
and calls <var>EndUpdate</var> prior to exiting from the method.
</p>
<p>
Assign handles specific class types in Source, including:
</p>
<dl>
<dt>TRasterImage</dt>
<dd>
Calls Clear to remove existing image content, and calls Add to create and 
icon image with the attributes in the PixelFormat, Height, and Width 
properties in Source. Calls AssignImage to store the image content from 
Source in the icon image. If the shared image class in Source is different 
than the one for the current class instance, UnshareImage is called.
</dd>
<dt>TCustomIcon</dt>
<dd>
Sets the value in Current to the value found in Source.
</dd>
</dl>
<p>
When Source is derived from another class type, the inherited Assign method 
is called.
</p>
</descr>
<seealso>
<link id="TRasterImage.Assign"/>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TCustomIcon.Assign.Source">
<short>
Persistent object with values copied into the current class instance.
</short>
</element>

<element name="TCustomIcon.AssignImage">
<short>
Copies image data from the source image to the current icon image.
</short>
<descr>
<p>
<var>AssignImage</var> is used to copy image data from <var>ASource</var> to 
the currently selected image for the icon.
</p>
<p>
AssignImage is typically used to assign the icon image when <var>Add</var> is 
used to create a new icon image with the required attributes (PixelFormat, 
Height, Width). AssignImage is called from the <var>Assign</var> method to 
store a single raster image to the icon.
</p>
</descr>
<seealso>
<link id="TCustomIcon.Add"/>
<link id="TCustomIcon.Assign"/>
</seealso>
</element>
<element name="TCustomIcon.AssignImage.ASource">
<short>Image with the values assigned to the current icon image.</short>
</element>

<element name="TCustomIcon.Clear">
<short>Removes the image content for the icon.</short>
<descr>
<p>
<var>Clear</var> is an overridden method used to remove the image content for 
the icon. Clear frees the internal save stream for the image. The internal 
shared image is also freed and re-created. The value in <var>Current</var> is 
set to <b>-1</b> to indicate that an icon image has not been selected.
</p>
<p>
Clear calls the <var>Changed</var> method to set the value in 
<var>Modified</var> and signal the <var>OnChange</var> event handler (when 
assigned).
</p>
<p>
No actions are performed in the method when <var>Empty</var> returns 
<b>True</b>.
</p>
<remark>
Clear does not call the method inherited from TRasterImage.
</remark>
</descr>
<seealso>
<link id="TRasterImage.Clear"/>
</seealso>
</element>

<element name="TCustomIcon.Delete">
<short>
Deletes the image at the specified position in the list of images for the 
icon.
</short>
<descr>
<p>
<var>Delete</var> is a procedure used to delete the icon image at the ordinal 
position specified in <var>AIndex</var> from the list of images for the icon.
</p>
<p>
Delete calls <var>UnshareImage</var> to stop sharing the image list for the 
icon. A copy of the images is kept and restored when the Delete method in 
TSharedIcon has removed the image at the specified position.
</p>
<p>
When AIndex is also the <var>Current</var> image for the icon, Current is set 
to <b>-1</b> and the <var>UpdateCurrentView</var> method is called. 
Otherwise, the value in Current is decremented.
</p>
<p>
Use <var>Remove</var> to delete an icon image with specific PixelFormat, 
Height, and Width values.
</p>
<p>
Use <var>Add</var> to add an icon image with specific PixelFormat, Height, 
and Width values.
</p>
<p>
Use <var>Count</var> to determine the number of images in the list of images 
for the icon.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.Delete.AIndex">
<short>Ordinal position for the icon image deleted in the method.</short>
</element>

<element name="TCustomIcon.Remove">
<short>Removes an icon image with the specified attributes.</short>
<descr>
<p>
<var>Remove</var> is used to locate and delete an icon image with the 
attributes specified in <var>AFormat</var>, <var>AHeight</var>, and 
<var>AWidth</var>.
</p>
<p>
Remove calls <var>GetIndex</var> to get the position in the internal image 
list where the icon image with the specified attributes is stored. If an 
image is found, the <var>Delete</var> method is called to the remove the icon 
image.
</p>
<p>
The value in <var>Current</var> is modified when it represents an icon image 
affected by the removal. Current is set to <b>-1</b> when it contains the 
index for the icon image removed in the method.
</p>
</descr>
<seealso>
<link id="TCustomIcon.GetIndex"/>
<link id="TCustomIcon.Delete"/>
<link id="TCustomIcon.Current"/>
<link id="TCustomIcon.Count"/>
</seealso>
</element>
<element name="TCustomIcon.Remove.AFormat">
<short>Pixel format (color depth) for the icon image.</short>
</element>
<element name="TCustomIcon.Remove.AHeight">
<short>Height for the icon image.</short>
</element>
<element name="TCustomIcon.Remove.AWidth">
<short>Width for the icon image.</short>
</element>

<element name="TCustomIcon.GetDescription">
<short>
Gets metadata which describes the icon image at the specified position in the 
image list.
</short>
<descr>
<p>
<var>GetDescription</var> is used to get image metadata which describes the 
icon image at the position specified in <var>AIndex</var>. 
<var>AFormat</var>, <var>AHeight</var>, and <var>AWidth</var> are output 
parameters where the corresponding values from the <var>TIconImage</var> 
instance are stored.
</p>
<p>
GetDescription accesses the image list in the internal <var>TSharedIcon</var> 
instance used in the class.
</p>
</descr>
<seealso>
<link id="TIconImage"/>
<link id="TSharedIcon"/>
<link id="TPixelFormat"/>
</seealso>
</element>
<element name="TCustomIcon.GetDescription.AIndex">
<short>
<var>Aindex</var> - the Index value for the Icon.</short>
</element>
<element name="TCustomIcon.GetDescription.AFormat">
<short>
<var>AFormat</var> - the Pixel Format for the Icon.</short>
</element>
<element name="TCustomIcon.GetDescription.AHeight">
<short>
<var>AHeight</var> - the height of the Icon.</short>
</element>
<element name="TCustomIcon.GetDescription.AWidth">
<short>
<var>AWidth</var> - the width of the Icon.</short>
</element>

<element name="TCustomIcon.SetSize">
<short>Sets the size (width, height) for the image in the Icon.</short>
<descr>
<p>
<var>SetSize</var> is an overridden method used to set the size for the image 
in the icon to the values specified in <var>AWidth</var> and 
<var>AHeight</var>. SetSize implements the abstract virtual method defined in 
the ancestor class. SetSize stores the argument values in an internal member 
used to track the requested icon image size used in the 
<var>GetBestIndexForSize</var> method.
</p>
<p>
SetSize raises an <var>EInvalidGraphicOperation</var> exception when an icon 
size has been selected by setting a value in the <var>Current</var> property.
</p>
<p>
SetSize is called from the <var>ReadStream</var> method.
</p>
</descr>
<errors>
Raises an EInvalidGraphicOperation with the message in rsIconImageSizeChange 
when Current contains a value other than -1.
</errors>
<seealso>
<link id="TCustomIcon.Current"/>
<link id="TCustomIcon.ReadStream"/>
<link id="TCustomIcon.GetBestIndexForSize"/>
<link id="TRasterImage.SetSize"/>
<link id="EInvalidGraphicOperation"/>
<link id="rsIconImageSizeChange"/>
</seealso>
</element>
<element name="TCustomIcon.SetSize.AWidth">
<short>New Width for the icon.</short>
</element>
<element name="TCustomIcon.SetSize.AHeight">
<short>New Height for the icon.</short>
</element>

<element name="TCustomIcon.GetFileExtensions">
<short>
Gets a delimited list of file extensions supported for the image type.
</short>
<descr>
<p>
<var>GetFileExtensions</var> is an overridden <var>String</var> class 
function used to get a delimited list of file extensions supported for the 
image type. In <var>TCustomIcon</var> and <var>TIcon</var>, the return value 
is always <b>'ico'</b>.
</p>
</descr>
<seealso>
<link id="TGraphic.GetFileExtensions"/>
</seealso>
</element>
<element name="TCustomIcon.GetFileExtensions.Result">
<short>Delimited list of file extensions supported for the image type.</short>
</element>

<element name="TCustomIcon.LazarusResourceTypeValid">
<short>
Determines if the specified resource type is valid for the image format.
</short>
<descr>
<p>
<var>LazarusResourceTypeValid</var> is an overridden Boolean function used to 
determine if the specified resource type is valid for the image format.
</p>
<p>
The return value is <b>True</b> when <var>ResourceType</var> contains 
<b>'ICO'</b> or <b>'ICON'</b>. The inherited method is called to get the 
return value when ResourceType contains any other resource type name. Case is 
not significant when comparing the value in ResourceType; it is converted to 
uppercase in the method.
</p>
</descr>
<seealso>
<link id="TGraphic.LazarusResourceTypeValid"/>
<link id="TCustomBitmap.LazarusResourceTypeValid"/>
<link id="TFPImageBitmap.LazarusResourceTypeValid"/>
<link id="TIcnsIcon.LazarusResourceTypeValid"/>
<link id="TCursorImage.LazarusResourceTypeValid"/>
</seealso>
</element>
<element name="TCustomIcon.LazarusResourceTypeValid.Result">
<short>
<b>True</b> when the resource type identifier is valid for the image format.
</short>
</element>
<element name="TCustomIcon.LazarusResourceTypeValid.ResourceType">
<short>Resource type identifier examined in the method.</short>
</element>

<element name="TCustomIcon.LoadFromResourceName">
<short>
Loads the icon with the specified resource name from the instance handle.
</short>
<descr>
<p>
<var>LoadFromResourceName</var> is an overridden procedure used to load a 
resource with the name specified in <var>ResName</var> using the handle 
provided in <var>Instance</var>. LoadFromResourceName re-implements the method 
defined in the ancestor class, and does not call the inherited method.
</p>
<p>
LoadFromResourceName calls <var>GetResourceType</var> to get the 
<var>Integer</var> resource type used in the class instance. No actions are 
performed in the method when the <var>TResourceType</var> value is unassigned 
(contains <b>Nil</b>).
</p>
<p>
LoadFromResourceName calls <var>FindResource</var> to get the resource handle 
needed in the method. An <var>EResNotFound</var> exception is raised if a 
resource with the specified name and type is not found in FindResource.
</p>
<p>
LoadFromResourceName calls <var>LoadFromResourceHandle</var> to load the icon 
using the Instance and resource handle values.
</p>
<p>
Use <var>LoadFromResourceID</var> to load a resource by its Resource ID.
</p>
<p>
Use <var>LoadFromLazarusResource</var> to load a Lazarus resource from a 
<b>.lrs</b> file with a give name.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TCustomIcon.LoadFromResourceHandle"/>
<link id="TGraphic.GetResourceType"/>
<link id="#lcl.lcltype.TResourceType">TResourceType</link>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCustomIcon.LoadFromResourceName.Instance">
<short>Handle where the content for the resource is stored.</short>
</element>
<element name="TCustomIcon.LoadFromResourceName.ResName">
<short>Name for the resource loaded in the method.</short>
</element>

<element name="TCustomIcon.LoadFromResourceID">
<short>
Load icon data from a resource with the specified integer resource identifier.
</short>
<descr>
<p>
<var>LoadFromResourceID</var> is an overridden procedure used to load a 
resource with the specified Resource ID into the class instance. 
LoadFromResourceID re-implements the method defined in the ancestor class, 
and does not call the inherited method.
</p>
<p>
<var>Instance</var> contains the handle used to read the resource.
<var>ResID</var> contains an Integer pointer to the resource identifier 
loaded in the method.
</p>
<p>
LoadFromResourceID calls <var>GetResourceType</var> to get the 
<var>Integer</var> resource type used in the class instance. No actions are 
performed in the method when the <var>TResourceType</var> value is unassigned 
(contains <b>Nil</b>).
</p>
<p>
LoadFromResourceName calls <var>FindResource</var> to get the resource handle 
needed in the method. An <var>EResNotFound</var> exception is raised if a 
resource with the specified ID and type is not found in FindResource.
</p>
<p>
LoadFromResourceName calls <var>LoadFromResourceHandle</var> to load the icon 
using the Instance and resource handle values.
</p>
<p>
Use <var>LoadFromResourceName</var> to load a resource with a given resource 
name.
</p>
<p>
Use <var>LoadFromLazarusResource</var> to load a Lazarus resource from a 
<b>.lrs</b> file with a give name.
</p>
</descr>
<errors>
Raises an EResNotFound exception if the resource handle for the specified ID 
and type is not valid.
</errors>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCustomIcon.LoadFromResourceID.Instance">
<short>Handle where the content for the resource is stored.</short>
</element>
<element name="TCustomIcon.LoadFromResourceID.ResID">
<short>Integer resource identifier loaded in the method.</short>
</element>

<element name="TCustomIcon.LoadFromResourceHandle">
<short>
Loads icon data from the specified instance and resource handles.
</short>
<descr>
<p>
LoadFromResourceHandle has an empty implementation in TCustomIcon. It is 
re-implemented in TIcon descendant.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TIcon.LoadFromResourceHandle"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCustomIcon.LoadFromResourceHandle.Instance">
<short>Handle with the resource data loaded in the method.</short>
</element>
<element name="TCustomIcon.LoadFromResourceHandle.ResHandle">
<short>Resource handle with the icon data loaded in the method.</short>
</element>

<element name="TCustomIcon.BitmapHandleAllocated">
<short>Indicates if a handle for the icon image has been allocated.</short>
<descr>
<p>
<var>BitmapHandleAllocated</var> is an overridden <var>Boolean</var> function 
which indicates if a handle for the icon image has been allocated in the 
class instance. BitmapHandleAllocated implements the abstract virtual method 
defined in the ancestor class.
</p>
<p>
The return value is <b>True</b> when <var>Current</var> has a valid image 
index for the icon image, and the handle for the <var>TIconImage</var> in the 
shared icon has a <b>non-zero</b> value.
</p>
<p>
BitmapHandleAllocated is called from methods that required a valid image 
handle prior to performing actions using the image data. For example:
</p>
<ul>
<li>Assign</li>
<li>BitmapHandleNeeded</li>
<li>MaskHandleNeed</li>
<li>Draw</li>
<li>EndUpdate</li>
<li>SetMaskHandle</li>
</ul>
</descr>
<seealso>
<link id="TRasterImage.BitmapHandleAllocated"/>
</seealso>
</element>
<element name="TCustomIcon.BitmapHandleAllocated.Result">
<short>
<b>True</b> when a valid handle has been assigned for the shared icon image.
</short>
</element>

<element name="TCustomIcon.MaskHandleAllocated">
<short>
<b>True</b> if a handle has been allocated for the mask in the image.
</short>
<descr>
<p>
<var>MaskHandleAllocated</var> is an overridden method used to determine if a 
handle for the image mask has been allocated in the class instance. 
MaskHandleAllocated implements the abstract virtual method defined in the 
ancestor class.
</p>
<p>
The return value is <var>True</var> when <var>Current</var> contains a value 
other than -1, and the <var>MaskHandle</var> for the <var>TIconImage</var> in 
the shared image list has a non-zero value.
</p>
<p>
MaskHandleAllocated is called from methods that required a valid handle prior 
to performing actions using the mask image data. For example:
</p>
<ul>
<li>Assign</li>
<li>AssignImage</li>
<li>BitmapHandleNeeded</li>
<li>MaskHandleNeeded</li>
<li>CreateMask</li>
<li>SetTransparentColor</li>
<li>SetBitmapHandle</li>
<li>SetMaskHandle</li>
</ul>
</descr>
<seealso>
<link id="TCustomIcon.Assign"/>
<link id="TCustomIcon.AssignImage"/>
<link id="TCustomIcon.MaskHandleNeeded"/>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.Mask"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.MaskHandleAllocated"/>
</seealso>
</element>
<element name="TCustomIcon.MaskHandleAllocated.Result">
<short>
<b>True</b> when the MaskHandle has been allocated for the icon image.
</short>
</element>

<element name="TCustomIcon.PaletteAllocated">
<short>
Determine if a handle has been allocated for the Palette in the icon.
</short>
<descr>
<p>
<var>PaletteAllocated</var> is an overridden method used to determine if a 
handle has been allocated for the Palette in the icon image. PaletteAllocated 
implements the abstract virtual method defined in the ancestor class.
</p>
<p>
The return value is <b>True</b> when <var>Current</var> contains a value 
other than <b>-1</b>, and the palette handle in the <var>TIconImage</var> 
instance for the shared icon image has a <b>non-zero</b> value.
</p>
<remark>
While provided as property in TCustomIcon, Palette is never assigned in the 
TIconImage class instances used to represent the individual images in the 
icon. Effectively, Palette is not implemented for TCustomIcon and 
PaletteAllocated will always return <b>False</b>.
</remark>
</descr>
<seealso>
<link id="TRasterImage.PaletteAllocated"/>
<link id="TSharedIcon"/>
<link id="TIconImage.Palette"/>
</seealso>
</element>
<element name="TCustomIcon.PaletteAllocated.Result">
<short>
<b>True</b> when the Palette handle has been allocated for the icon.
</short>
</element>

<element name="TCustomIcon.SetHandles">
<short>Not implemented in TCustomIcon.</short>
<descr>
<p>SetHandles has an empty implementation in TCustomIcon.
</p>
</descr>
<seealso>
<link id="TRasterImage.SetHandles"/>
</seealso>
</element>
<element name="TCustomIcon.SetHandles.ABitmap">
<short>Handle for the Bitmap in the icon.</short>
</element>
<element name="TCustomIcon.SetHandles.AMask">
<short>Handle for the Mask in the icon.</short>
</element>

<element name="TCustomIcon.Sort">
<short>Sorts the images for the icon.</short>
<descr>
<p>
Sorts images in the internal image list for the icon. The <var>Sort</var> 
method in <var>TSharedIcon</var> is called to perform the sort, and compares 
the Width/PixelFormat values in the images to determine the sort order. 
Preference is given to the value in Width; if two items have the same Width, 
the value in PixelFormat is used for the comparison.
</p>
<p>
Sort keeps a reference to the image in <var>Current</var> when it is set to a 
value other than <b>-1</b>. The image is used to restore the value in Current 
when the sort operation is completed. The IndexOf method for the internal 
image list is called determine the new position for the referenced image.
</p>
</descr>
<seealso>
<link id="TCustomIcon.Current"/>
<link id="TSharedIcon"/>
<link id="TIconImage"/>
</seealso>
</element>

<element name="TCustomIcon.GetBestIndexForSize">
<short>
Gets the ordinal position for the image closest to the requested size.
</short>
<descr>
<p>
The default icon size from <var>GetSystemMetrics</var> is used when 
<var>ASize</var> does not have explicit values in its <var>cx</var> and 
<var>cy</var> members. The best color depth is determined using the 
<var>GetDeviceCaps</var> routine for the screen context.
</p>
<p>
GetBestIndexForSize iterates over the items in the internal image list to 
find the TIconImage which most closely matches the required values. The 
return value is <b>-1</b> if no images are stored in the internal image list 
for the icon.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomIcon.GetBestIndexForSize.Result">
<short>
Ordinal position for the image, or -1 when no images are available.
</short>
</element>
<element name="TCustomIcon.GetBestIndexForSize.ASize">
<short>
TSize instance with the height and width for the requested image size.
</short>
</element>

<element name="TCustomIcon.ExportImage">
<short>
Exports the image for the icon at the specified index to another 
TFPImageBitmap class instance.
</short>
<descr>
<p>
<var>ExportImage</var> creates a new instance of the bitmap image class 
specified in <var>AImageClass</var>, then calls its LoadFromRawImage method to 
load the raw image data for the shared icon. AIndex specifies the ordinal 
position in the Images for the the shared icon instance.
</p>
<remark>
To avoid memory leaks, the bitmap instance created in the return value must be 
destroyed in the calling routine.
</remark>
</descr>
<seealso>
<link id="TCustomIcon.Count"/>
<link id="TRasterImage.FSharedImage"/>
<link id="TRasterImage.LoadFromRawImage"/>
<link id="TPicture.SaveToStreamWithFileExt"/>
</seealso>
<version>
Added in LCL version 4.2.
</version>
</element>

<element name="TCustomIcon.ExportImage.AIndex">
<short>
Ordinal position for the icon exported in the method.
</short>
</element>

<element name="TCustomIcon.ExportImage.AImageClass">
<short>
Graphics class for the exported image.
</short>
</element>

<element name="TCustomIcon.ExportImage.Result">
<short>
Image instance created in the method where the exported icon is stored.
</short>
</element>

<element name="TCustomIcon.Current">
<short>Ordinal position for the current image displayed for the icon.</short>
<descr>
<p>
<var>Current</var> is an <var>Integer</var> property which contains the 
ordinal position for the selected image in the icon. Setting a new value for 
the property causes the <var>UpdateCurrentView</var> method to be called to 
update the <var>Canvas</var>, and the save stream for the shared image. The 
<var>OnChange</var> event handler is signalled (when assigned).
</p>
<p>
Set Current to <b>-1</b> before calling <var>SetSize</var> (or changing 
values in <var>Height</var> and <var>Width</var>) to avoid raising an 
<var>EInvalidGraphicOperation</var> exception.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomIcon.Count">
<short>Number of images in the image list for the shared icon.</short>
<descr>
<p>
<var>Count</var> is a read-only <var>Integer</var> property which contains 
the number of images in the internal image list for the icon. Read access for 
the property value is redirected to the Count property in the internal 
TSharedIcon instance used in the class.
</p>
<p>
Use methods like <var>Add</var>, <var>Delete</var>, <var>Remove</var>, 
<var>Clear</var>, <var>Assign</var>, and <var>AssignImage</var> to maintain 
the list of images available in the icon.
</p>
</descr>
<seealso/>
</element>

<element name="TIcon">
<short>
Implements an icon image type; small images typically associated with 
applications, controls, etc.
</short>
<descr>
<p>
Icons can be loaded from .ICO files, or from Lazarus resources. An icon 
resource typically contains several versions of the same image, in multiple 
resolutions and color depths.
</p>
<p>
When loading, the largest/most colorful image is loaded as the 
<var>Bitmap</var> property, and so can be handled as any other bitmap.
</p>
</descr>
<errors>
Writing to icon files is not (yet) implemented.
</errors>
</element>

<element name="TIcon.GetIconHandle">
<short>Gets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TIcon.Handle"/>
</seealso>
</element>
<element name="TIcon.GetIconHandle.Result">
<short>Value for the property.</short>
</element>

<element name="TIcon.SetIconHandle">
<short>Sets the value for the Handle property.</short>
<descr/>
<seealso>
<link id="TIcon.Handle"/>
</seealso>
</element>
<element name="TIcon.SetIconHandle.AValue">
<short>New value for the property.</short>
</element>

<element link="#lcl.graphics.TCustomIcon.GetStreamSignature" name="TIcon.GetStreamSignature"/>
<element link="#lcl.graphics.TCustomIcon.GetStreamSignature.Result" name="TIcon.GetStreamSignature.Result"/>
<element link="#lcl.graphics.TCustomIcon.GetTypeID" name="TIcon.GetTypeID"/>
<element link="#lcl.graphics.TCustomIcon.GetTypeID.Result" name="TIcon.GetTypeID.Result"/>

<element name="TIcon.HandleNeeded">
<short>Ensures that handle values for the icon are valid.</short>
<descr>
<p>
Ensures that Handle values are valid for the icon. Configures the values in 
IconInfo with the BitmapHandle and MaskHandle for the class instance. Calls 
CreateIconIndirect for the widgetset to get the Handle used for the shared 
image in the icon.
</p>
<p>
No actions are performed in the method when the Handle for the shared icon 
image has already been assigned.
</p>
</descr>
<seealso>
<link id="TIcon.Handle"/>
<link id="TRasterImage.BitmapHandle"/>
<link id="TRasterImage.MaskHandle"/>
<link id="TRasterImage.HandleNeeded"/>
</seealso>
</element>

<element name="TIcon.LoadFromResourceHandle">
<short>
Loads icon data from the specified instance and resource handles.
</short>
<descr>
<p>
<var>LoadFromResourceHandle</var> is an overridden method in <var>TIcon</var> 
used to load image data from an icon resource identified by the handles in 
<var>Instance</var> and <var>ResHandle</var>. The handles are passed as 
arguments to the RTL LoadResource routine which provides the global handle for 
the group resource on the platform.
</p>
<p>
LoadFromResourceHandle reads the icon headers and data for the entries from 
the resource. The ReadData method is called to read and store the values in 
the stream to the shared raster image for the icon.
</p>
<p>
LoadFromResourceHandle reimplements the empty implementation introduced in the 
TCustomIcon ancestor.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TCustomIcon.LoadFromResourceHandle"/>
<link id="TCustomIcon.ReadData"/>
<link id="TRasterImage.LoadFromStream"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TIcon.LoadFromResourceHandle.Instance">
<short>Handle with the resource data loaded in the method.</short>
</element>
<element name="TIcon.LoadFromResourceHandle.ResHandle">
<short>Resource handle with the icon data loaded in the method.</short>
</element>

<element name="TIcon.ReleaseHandle">
<short>Frees the Handle used for the shared image in the Icon.</short>
<descr>
<p>
Calls HandleNeeded to ensure that a handle is assigned if it does not already 
exist. Calls the ReleaseHandle method in the shared raster image used for the 
icon. The return value is the handle for the shared raster image before it is 
set to the unassigned value (0).
</p>
</descr>
<seealso/>
</element>
<element name="TIcon.ReleaseHandle.Result">
<short>HICON value removed from the handle in the class instance.</short>
</element>

<element name="TIcon.GetResourceType">
<short>Gets the Integer Resource Type for the class instance.</short>
<descr>
<p>
GetResourceType is an overridden TResourceType function in TIcon.
It is used to get the resource type identifier for the class instance. It 
identifies the storage format used for graphic data in a resource.
</p>
<p>
The return value is RT_GROUP_ICON in TIcon.
</p>
</descr>
<seealso>
<link id="TGraphic.GetResourceType"/>
</seealso>
</element>
<element name="TIcon.GetResourceType.Result">
<short>Resource type used for the icon image type.</short>
</element>

<element name="TIcon.Handle">
<short>
Handle used to access the image data for the icon.
</short>
<descr>
<p>
<var>Handle</var> is a <var>HICON</var> property which contains the handle 
for the icon used to access its image data. The property value is provided by 
the inherited GetHandle method, and contains the handle for its 
TSharedRasterImage instance.
</p>
<p>
Setting a new value for the property causes the previous handle and the 
canvas device context to be freed. The previous image is cleared and unshared 
as well.
</p>
<p>
The inherited UpdateHandle method is called to apply the new handle to the 
shared image, and to load its icon data.
</p>
</descr>
<seealso>
<link id="TCustomIcon.SetHandle"/>
<link id="TCustomIcon.UpdateHandle"/>
<link id="TRasterImage.GetHandle"/>
<link id="TSharedRasterImage.HandleAllocated"/>
</seealso>
</element>

<!-- .ICNS is the Apple icon image format used in macOS. -->
<element name="TIcnsRec">
<short>
Record type with the icon type and raw image data for a TIcnsIcon instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsRec.IconType">
<short>
TIcnsIconType value for the icon data, mask, or alpha channel used in the raw 
image.
</short>
<descr/>
<seealso/>
</element>

<element name="TIcnsRec.RawImage">
<short>
Contains the TRawImage instance with the data for an icon image.
</short>
<descr/>
<seealso/>
</element>

<element name="PIcnsRec">
<short>Pointer to a TIcnsRec instance.</short>
<descr/>
<seealso/>
</element>

<element name="TIcnsList">
<short>Implements a list used to maintain TIcnsIcon instances.</short>
<descr>
<p>
<var>TIcnsList</var> is a <var>TList</var> descendant which implements a list 
used to create, store, and maintain TIcnsIcon instances. It provides indexed 
access to the icons using the <var>Items</var> property. It re-implements the 
<var>Add</var> method to allow an icon instance to be created and stored 
using the specified icon type and raw image data.
</p>
<p>
TIcnsList is the type used to implement storage for images and masks in 
<var>TIcnsIcon</var>.
</p>
</descr>
<seealso>
<link id="TIcnsIcon"/>
<link id="#rtl.classes.TList">TList</link>
</seealso>
</element>

<element name="TIcnsList.GetItem">
<short/>
<descr/>
<seealso/>
</element>
<element name="TIcnsList.GetItem.Result">
<short/>
</element>
<element name="TIcnsList.GetItem.Index">
<short/>
</element>

<element name="TIcnsList.SetItem">
<short/>
<descr/>
<seealso/>
</element>
<element name="TIcnsList.SetItem.Index">
<short/>
</element>
<element name="TIcnsList.SetItem.AValue">
<short/>
</element>

<element name="TIcnsList.Notify">
<short>
Handles the notification when an icon image is added to or removed from the 
list.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsList.Notify.Ptr">
<short>
Pointer to the TIcnsRec with the icon type and raw image data for the 
notification.
</short>
</element>
<element name="TIcnsList.Notify.Action">
<short>
Action performed for the icon image.
</short>
</element>

<element name="TIcnsList.Add">
<short>
Creates and stores a entry in the list for the specified icon type and raw 
image.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsList.Add.Result">
<short>Ordinal position in the list where the new entry was stored.</short>
</element>
<element name="TIcnsList.Add.AIconType">
<short>
Type for the image data, mask, or alpha channel image in the raw data.
</short>
</element>
<element name="TIcnsList.Add.ARawImage">
<short>Raw image instance added to the container.</short>
</element>

<element name="TIcnsList.Items">
<short>
Provides indexed access to the icon images in the list by their ordinal 
position.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsList.Items.Index">
<short>Ordinal position in the list for the property value.</short>
</element>

<element name="TSharedIcnsIcon">
<short>Declares the shared icon for the TIcnsIcon type.</short>
<descr/>
<seealso>
<link id="TSharedIcon"/>
</seealso>
</element>

<element name="TIcnsIcon">
<short>Implements a macOS Icon Resource file.</short>
<descr>
<p>
<var>TIcnsIcon</var> is a <var>TCustomIcon</var> descendant which implements 
a class used for macOS Icon resources. TIcnsIcon is similar to the .ICO 
format used on Windows platforms. An Icns Icon can store one or more images, 
which generally use the PNG image format. Standard icon sizes used in Icns 
Icon files include: 16x16, 32x32, 48x48, 128x128, 256x256, 512x512, and 
1024x1024 pixels.
</p>
</descr>
<seealso>
<link id="TCustomIcon"/>
</seealso>
</element>

<!-- private -->
<element name="TIcnsIcon.FImageList"/>
<element name="TIcnsIcon.FMaskList"/>

<element name="TIcnsIcon.IcnsAdd">
<short/>
<descr/>
<seealso/>
</element>
<element name="TIcnsIcon.IcnsAdd.AIconType">
<short/>
</element>
<element name="TIcnsIcon.IcnsAdd.ARawImage">
<short/>
</element>

<element name="TIcnsIcon.IcnsProcess">
<short/>
<descr/>
<seealso/>
</element>

<element name="TIcnsIcon.GetSharedImageClass">
<short>
Gets the class reference used to create the shared image for the icon.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsIcon.GetSharedImageClass.Result">
<short/>
</element>

<element name="TIcnsIcon.ReadData">
<short>
Reads icon data from the specified stream, and performs byte order conversion 
when needed.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsIcon.ReadData.Stream">
<short/>
</element>

<element name="TIcnsIcon.ReadStream">
<short>
Reads each of the icon resources from the specified stream, and adds them to 
the list of icon images.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsIcon.ReadStream.AStream">
<short/>
</element>
<element name="TIcnsIcon.ReadStream.ASize">
<short/>
</element>

<element name="TIcnsIcon.WriteStream">
<short>
Writes each of the icon resources in the list to the specified stream.
</short>
<descr>
<p>
Does not write icons using the JPEG2000 image format in the current LCL 
version.
</p>
</descr>
<seealso/>
</element>
<element name="TIcnsIcon.WriteStream.AStream">
<short/>
</element>

<element name="TIcnsIcon.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso/>
</element>

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

<element name="TIcnsIcon.GetFileExtensions">
<short>Gets the file extension(s) used for the icon type.</short>
<descr/>
<seealso>
<link id="TCustomIcon.GetFileExtensions"/>
</seealso>
</element>
<element name="TIcnsIcon.GetFileExtensions.Result">
<short>Always returns 'icns' in TIcnsIcon.</short>
</element>

<element name="TIcnsIcon.LazarusResourceTypeValid">
<short>
Checks whether the specified Resource Type name is valid for the icon type.
</short>
<descr/>
<seealso/>
</element>
<element name="TIcnsIcon.LazarusResourceTypeValid.Result">
<short><b>True</b> when the uppercase value in ResourceType is 'ICNS'.</short>
</element>
<element name="TIcnsIcon.LazarusResourceTypeValid.ResourceType">
<short>Resource type name checked in the method.</short>
</element>

<element name="TSharedCursorImage">
<short>Implements a reference-counted shared image used for cursors.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedCursorImage.FreeHandle">
<short>Frees the handle for the cursor image.</short>
<descr/>
<seealso>
<link id="TSharedImage.FreeHandle"/>
</seealso>
</element>

<element name="TSharedCursorImage.GetImagesClass">
<short>
Gets the class reference used to create a new cursor image in the Images 
property.
</short>
<descr/>
<seealso>
<link id="TSharedIcon.GetImagesClass"/>
</seealso>
</element>
<element name="TSharedCursorImage.GetImagesClass.Result">
<short>
Class reference used to create images in the shared cursor image list.
</short>
</element>

<element name="TCursorImageImage">
<short>Implements the image for a cursor, stored as an Icon.</short>
<descr>
<p>
Provides a <var>HotSpot</var> property with the coordinates in the cursor 
that is the point that interacts with other elements on the screen.
</p>
</descr>
<seealso>
<link id="TIconImage"/>
</seealso>
</element>

<!-- private -->
<element name="TCursorImageImage.FHotSpot"/>

<element name="TCursorImageImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Calls the inherited constructor on entry using the value in <var>AInfo</var> 
as an argument. AInfo contains the coordinates that are assigned to the 
<var>HotSpot</var> property.
</p>
</descr>
<seealso/>
</element>
<element name="TCursorImageImage.Create.AInfo">
<short>
TIconInfo instance with the hotspot information for the cursor image.
</short>
</element>

<element name="TCursorImageImage.HotSpot">
<short>
<var>HotSpot</var> - the coordinates of the point to which the cursor refers, 
and which represents the 'active' position on the current form or canvas.
</short>
<descr/>
<seealso/>
</element>

<element name="TCursorImage">
<short>
<var>TCursorImage</var> - an Icon to be used to represent a cursor.
</short>
<descr/>
<seealso>
<link id="TCustomIcon"/>
</seealso>
</element>

<element name="TCursorImage.GetHotSpot">
<short>Gets the value for the HotSpot property.</short>
<descr/>
<seealso>
<link id="TCursorImage.HotSpot"/>
</seealso>
</element>
<element name="TCursorImage.GetHotSpot.Result">
<short>Value for the property.</short>
</element>

<element name="TCursorImage.GetCursorHandle">
<short>Gets the value for the CursorHandle property.</short>
<descr/>
<seealso>
<link id="TCursorImage.CursorHandle"/>
</seealso>
</element>
<element name="TCursorImage.GetCursorHandle.Result">
<short>Value for the property.</short>
</element>
<element name="TCursorImage.SetCursorHandle">
<short>Sets the value for the CursorHandle property.</short>
<descr/>
<seealso>
<link id="TCursorImage.CursorHandle"/>
</seealso>
</element>
<element name="TCursorImage.SetCursorHandle.AValue">
<short>New value for the property.</short>
</element>

<element link="#lcl.graphics.TRasterImage.HandleNeeded" name="TCursorImage.HandleNeeded">
<short/>
<descr/>
<seealso/>
</element>

<element link="#lcl.graphics.TCustomIcon.GetDefaultSize" name="TCursorImage.GetDefaultSize">
<short/>
<descr/>
<seealso/>
</element>

<element name="TCursorImage.GetDefaultSize.Result">
<short/>
</element>

<element link="#lcl.graphics.TCustomIcon.GetStreamSignature" name="TCursorImage.GetStreamSignature">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCursorImage.GetStreamSignature.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.GetSharedImageClass" name="TCursorImage.GetSharedImageClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCursorImage.GetSharedImageClass.Result">
<short/>
</element>

<element link="#lcl.graphics.TCustomIcon.GetTypeID" name="TCursorImage.GetTypeID">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCursorImage.GetTypeID.Result">
<short/>
</element>

<element link="#lcl.graphics.TGraphic.GetFileExtensions" name="TCursorImage.GetFileExtensions">
<short/>
<descr/>
<seealso/>
</element>
<element name="TCursorImage.GetFileExtensions.Result">
<short/>
</element>

<element name="TCursorImage.GetResourceType">
<short>Gets the resource type identifier for the cursor image.</short>
<descr>
<p>
Returns <var>RT_GROUP_CURSOR</var> in <var>TCursorImage</var>.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.RT_GROUP_CURSOR">RT_GROUP_CURSOR</link>
<link id="TGraphic.GetResourceType"/>
</seealso>
</element>
<element name="TCursorImage.GetResourceType.Result">
<short>
Returns RT_GROUP_CURSOR for TCusrsorImage.
</short>
</element>

<element name="TCursorImage.LoadFromResourceHandle">
<short>
Loads cursor images from the specified instance and resource handles.
</short>
<descr>
<p>
<var>LoadFromResourceHandle</var> is an overridden method in 
<var>TCursorImage</var> used to load cursor image(s) from the group cursor 
resource identified in the Instance and ResHandle arguments. It calls the RTL 
LoadResource routine to get the global handle used for the resource(s) on the 
platform. No actions are performed in the method if the handle is unassigned 
(0).
</p>
<p>
LoadFromResourceHandle creates a temporary resource stream which is used to 
store the group cursor resources, including hot spot and image offset data. 
ReadData is called to load the values from the stream to the shared raster 
image used for the group cursor resources.
</p>
<p>
LoadFromResourceHandle reimplements the empty implementation introduced in the 
TCustomIcon ancestor.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TCustomIcon.LoadFromResourceHandle"/>
<link id="TCustomIcon.ReadData"/>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="TCursorImage.LoadFromResourceHandle.Instance">
<short>
Handle for the resource instance with the cursor image.
</short>
</element>
<element name="TCursorImage.LoadFromResourceHandle.ResHandle">
<short>
Handle for the resource entry with the cursor image.
</short>
</element>

<element name="TCursorImage.LazarusResourceTypeValid" link="#lcl.graphics.TGraphic.LazarusResourceTypeValid"/>
<element name="TCursorImage.LazarusResourceTypeValid.Result"/>
<element name="TCursorImage.LazarusResourceTypeValid.ResourceType"/>

<element name="TCursorImage.ReleaseHandle">
<short>
Frees the handle in the shared raster image used for the cursor.
</short>
<descr/>
<seealso/>
</element>
<element name="TCursorImage.ReleaseHandle.Result">
<short>
HICON value for the handle freed in the method.
</short>
</element>

<element name="TCursorImage.SetCenterHotSpot">
<short>
Updates the HotSpot coordinate to the center point for the Current image in 
the cursor.
</short>
<descr/>
<seealso/>
</element>

<element name="TCursorImage.HotSpot">
<short>
<var>HotSpot</var> - the coordinates of the point to which the cursor refers, 
and which represents the 'active' position on the current form or canvas.
</short>
<descr/>
<seealso/>
</element>

<element name="TCursorImage.Handle">
<short>Handle for the cursor image.</short>
<descr>
<p>
<var>Handle</var> is a <var>HCURSOR</var> property in 
<var>TCursorImage</var>, and contains the handle used to identify the cursor 
image. The value for the property is provided by the <var>GetHandle</var> 
method.
</p>
<p>
Setting a new value for Handle causes the device context in <var>Canvas</var> 
to be freed, and the shared image for the icon is cleared. The 
<var>UpdateHandle</var> method is called to update the shared image using the 
new value for the property. If the shared icon contains image data, the value 
in <var>Current</var> is set to <b>0</b> (the first image in the internal 
list of images). Otherwise, Current is set to <b>-1</b>.
</p>
<p>
<var>Changed</var> is called to re-create the internal save stream for the 
shared image and signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso/>
</element>

<element name="TSharedJpegImage">
<short>
<var>TSharedJpegImage</var> - a reference counted shared image of type JPEG.
</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TJPEGQualityRange">
<short>Represents JPEG compression quality values.</short>
<descr>
<p>
<var>TJPEGQualityRange</var> is an alias to the 
<var>TFPJPEGCompressionQuality</var> type defined in the FCL. 
TJPEGQualityRange is the type used to implement the 
<var>CompressionQuality</var> property in <var>TJPEGImage</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TJPEGPerformance">
<short>Represents JPEG read performance setting values.</short>
<descr>
<p>
<var>TJPEGPerformance</var> is an alias to the 
<var>TJPEGReadPerformance</var> type defined in the FCL. TJPEGPerformance is 
the type used to implement the <var>Performance</var> property in 
<var>TJpegImage</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TJPEGImage">
<short>
<var>TJPEGImage</var> - a class for handling images stored in JPEG 
(compressed) format.
</short>
<descr>
<p>
<var>TJPEGImage</var> is a <var>TFPImageBitmap</var> descendant which 
implements support for the <b>JPEG</b> (<b>Joint Photographic Experts 
Group</b>) image format. JPEG images are commonly used for storing digital 
photographs. They can represent detailed color photos using a high degree of 
compression, resulting in very efficient storage, though with some loss of 
quality.
</p>
<p>
JPEG image files normally have a file extension like: <b>jpeg, jpg, jpe, or 
jfif</b>.
</p>
<p>
The <var>CompressionQuality</var> and <var>Performance</var> properties can 
be used to set the balance between storage efficiency and picture quality. 
CompressionQuality is an Integer value between 1 and 100, with 100 
representing the best quality. Performance is an enumerated variable with two 
states: <var>BestQuality</var> or <var>BestSpeed</var> (for compression).
</p>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<!-- private -->
<element name="TJPEGImage.FGrayScale"/>
<element name="TJPEGImage.FMinHeight"/>
<element name="TJPEGImage.FMinWidth"/>
<element name="TJPEGImage.FPerformance"/>
<element name="TJPEGImage.FProgressiveEncoding"/>
<element name="TJPEGImage.FQuality"/>
<element name="TJPEGImage.FScale"/>
<element name="TJPEGImage.FSmoothing"/>

<element name="TJPEGImage.SetCompressionQuality">
<short>Sets the value for the CompressionQuality property.</short>
<descr/>
<seealso>
<link id="TJPEGImage.CompressionQuality"/>
</seealso>
</element>
<element name="TJPEGImage.SetCompressionQuality.AValue">
<short>New value for the property.</short>
</element>

<element name="TJPEGImage.SetGrayScale">
<short>Sets the value for the GrayScale property.</short>
<descr/>
<seealso>
<link id="TJPEGImage.GrayScale"/>
</seealso>
</element>
<element name="TJPEGImage.SetGrayScale.AValue">
<short>New value for the property.</short>
</element>

<element name="TJPEGImage.SetProgressiveEncoding">
<short>Sets the value for the ProgressiveEncoding property.</short>
<descr/>
<seealso>
<link id="TJPEGImage.ProgressiveEncoding"/>
</seealso>
</element>
<element name="TJPEGImage.SetProgressiveEncoding.AValue">
<short>New value for the property.</short>
</element>

<element name="TJPEGImage.InitializeReader">
<short>Initializes the FCL-compatible image reader for the image type.</short>
<descr>
<p>
<var>InitializeReader</var> is an overridden method used transfer property 
values specific to the JPEG image in <var>AImage</var> to the 
<var>TFPCustomImageReader</var> class instance in <var>AReader</var>. The 
following property values are stored to the corresponding properties in 
AReader:
</p>
<ul>
<li>MinHeight</li>
<li>MinWidth</li>
<li>Performance</li>
<li>Scale</li>
<li>Smoothing</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TJPEGImage.InitializeReader.AImage">
<short>Image with values used to configure the reader class.</short>
</element>
<element name="TJPEGImage.InitializeReader.AReader">
<short>FCL-compatible image reader class updated in the method.</short>
</element>

<element name="TJPEGImage.InitializeWriter">
<short>Initializes the FCL-compatible Image Writer for the image type.</short>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.InitializeWriter.AImage">
<short>Image with values used to configure the writer class.</short>
</element>
<element name="TJPEGImage.InitialWriter.AWriter">
<short>FCL-compatible image writer class updated in the method.</short>
</element>

<element name="TJPEGImage.FinalizeReader">
<short>Finalizes the FCL Image reader.</short>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.FinalizeReader.AReader">
<short>FCL-compatible image reader examined in the method.</short>
</element>

<element link="#lcl.graphics.TFPImageBitmap.GetReaderClass" name="TJPEGImage.GetReaderClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.GetReaderClass.Result">
<short/>
</element>

<element link="#lcl.graphics.TFPImageBitmap.GetWriterClass" name="TJPEGImage.GetWriterClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.GetWriterClass.Result">
<short/>
</element>

<element link="#lcl.graphics.TRasterImage.GetSharedImageClass" name="TJPEGImage.GetSharedImageClass">
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.GetSharedImageClass.Result">
<short/>
</element>

<element name="TJPEGImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the TJpegImage class 
instance, and calls the inherited constructor on entry. Creates sets the 
default values for properties, including:
</p>
<dl>
<dt>Performance</dt>
<dd>Set to jpBestQuality.</dd>
<dt>ProgressiveEncoding</dt>
<dd>Set to <b>False</b>.</dd>
<dt>GrayScale</dt>
<dd>Set to <b>False</b>.</dd>
<dt>Quality</dt>
<dd>Set to 75.</dd>
</dl>
</descr>
<seealso>
<link id="TCustomBitmap.Create">TCustomBitmap.Create</link>
</seealso>
</element>

<element name="TJpegImage.Compress">
<short>
Applies compression settings in the class instance to the image data.
</short>
<descr/>
<seealso>
<link id="TRasterImage.SaveToStream"/>
<link id="TRasterImage.LoadFromStream"/>
</seealso>
</element>

<element name="TJPEGImage.IsStreamFormatSupported">
<short>
Indicates if the stream contains a format supported for the image type.
</short>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.IsStreamFormatSupported.Result">
<short>
<b>True</b> when Stream contains a valid image format for the image type.
</short>
</element>
<element name="TJPEGImage.IsStreamFormatSupported.Stream">
<short>TStream instance examined in the method.</short>
</element>

<element name="TJPEGImage.GetFileExtensions">
<short>Gets the file extension(s) supported for the image format.</short>
<descr/>
<seealso/>
</element>
<element name="TJPEGImage.GetFileExtensions.Result">
<short>Delimited list of file extensions supported for the image type.</short>
</element>

<element name="TJPEGImage.CompressionQuality">
<short>Determine the compression quality for the image data.</short>
<descr>
<p>
Extreme compression can lead to loss of quality at the expense of a small 
file size.
</p>
<p>
The allowed range is <b>1..100</b>, where <b>100</b> is <b>best quality</b>, 
and <b>25</b> is <b>pretty awful</b>.
</p>
</descr>
<seealso/>
</element>

<element name="TJPEGImage.GrayScale">
<short>Indicates if the image contains grayscale image data.</short>
<descr/>
<seealso/>
</element>

<element name="TJpegImage.MinHeight">
<short>
Minimum height allowed for the image when read using an FCL image reader.
</short>
<descr/>
<seealso/>
</element>

<element name="TJpegImage.MinWidth">
<short>
Minimum width allowed for the image when read using an FCL image reader.
</short>
<descr/>
<seealso/>
</element>

<element name="TJPEGImage.ProgressiveEncoding">
<short>Indicates if progressive encoding is used for the image data.</short>
<descr/>
<seealso/>
</element>

<element name="TJPEGImage.Performance">
<short>Set for best quality or best speed.</short>
<descr/>
<seealso/>
</element>

<element name="TJpegImage.Scale">
<short>A predefined scaling value applied to the image data.</short>
<descr>
<p>
<var>Scale</var> is a <var>TJPEGScale</var> property which contains one of 
the predefined scaling values applied to the raw image data. For instance:
</p>
<dl>
<dt>jsFullSize</dt>
<dd>Image is not scaled.</dd>
<dt>jsHalf</dt>
<dd>Image is scaled to one-half of its width and height.</dd>
<dt>jsQuarter</dt>
<dd>Image is scaled to one-quarter of its width and height.</dd>
<dt>jsEighth</dt>
<dd>Image is scaled to one-eighth of its width and height.</dd>
</dl>
</descr>
<seealso/>
</element>

<element name="TJpegImage.Smoothing">
<short>Indicates if smoothing is applied to the raw image data.</short>
<descr>
<p>
<var>Smoothing</var> is a <var>Boolean</var> property which indicates if 
smoothing is applied to raw data in the image. Smoothing uses a low pass 
filter to remove high spatial frequency noise from a digital image.
</p>
<p>
The value in Smoothing is used in the <var>InitializeReader</var> method to 
configure the image reader used to load the raw image data. Set the value in 
Smoothing prior to calling methods which load the image content using an 
FCL-compatible image reader.
</p>
</descr>
<seealso/>
</element>

<element name="TSharedTiffImage">
<short>Declares the shared image for the TTiffImage type.</short>
<descr/>
<seealso>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TTiffUnit">
<short>Represents units of measure used in TIFF image data.</short>
<descr/>
<seealso/>
</element>
<element name="TTiffUnit.tuUnknown">
<short>Unit of measurement is unknown.</short>
</element>
<element name="TTiffUnit.tuNone">
<short>No absolute unit of measurement.
</short>
<descr>
<p>
Used for images that may have a non-square aspect ratio, but no meaningful 
absolute dimensions.
</p>
</descr>
</element>
<element name="TTiffUnit.tuInch">
<short>Unit of measure is Inches.</short>
</element>
<element name="TTiffUnit.tuCentimeter">
<short>Unit of measure is Centimeters.</short>
</element>

<element name="TTiffImage">
<short>
Implements support for the TIFF (Tag Image File Format) graphic format.
</short>
<descr>
<p>
TTiffImage is a TFPImageBitmap descendant which implements support for the 
<b>TIFF</b> (<b>Tag Image File Format</b>) image format.
</p>
<p>
It is a raster graphics image format. TIFF is widely supported by scanning, 
faxing, word processing, optical character recognition, image manipulation, 
desktop publishing, and page-layout applications. TIFF was created for use as 
a common image format for scanners. Various revisions to the specification 
have added grayscale and color support to the image format. It is a popular 
format for deep-color images.
</p>
<p>
TIFF images use .TIF or .TIFF file extensions, and the MIME types 'image/TIF' 
or 'image/TIFF'.
</p>
<p>
TTiffImage implements the class methods from the ancestor class which get FCL 
TFPCustomImageReaderClass and TFPCustomImageWriterClass instances, as well as 
the shared graphics class instance for the image format.
</p>
<p>
TTiffImage has properties which expose values for Baseline Tags in the image 
data, including:
</p>
<ul>
<li>Artist</li>
<li>Copyright</li>
<li>DateTime</li>
<li>DocumentName</li>
<li>HostComputer</li>
<li>ImageDescription</li>
<li>Make</li>
<li>Model</li>
<li>ResolutionUnit</li>
<li>Software</li>
<li>XResolution</li>
<li>YResolution</li>
</ul>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<!-- private -->
<element name="TTiffImage.FArtist"/>
<element name="TTiffImage.FCopyright"/>
<element name="TTiffImage.FDateTime"/>
<element name="TTiffImage.FDocumentName"/>
<element name="TTiffImage.FHostComputer"/>
<element name="TTiffImage.FImageDescription"/>
<element name="TTiffImage.FMake">
<short>Scanner manufacturer or brand.</short>
</element>
<element name="TTiffImage.FModel">
<short>Scanner model.</short>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.FResolutionUnit"/>
<element name="TTiffImage.FSoftware"/>
<element name="TTiffImage.FXResolution"/>
<element name="TTiffImage.FYResolution"/>

<element name="TTiffImage.InitializeReader">
<short>Initializes the FCL-compatible image reader for the image.</short>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.InitializeReader.AImage">
<short/>
</element>
<element name="TTiffImage.InitializeReader.AReader">
<short/>
</element>

<element name="TTiffImage.InitializeWriter">
<short>Initializes the FCL-compatible image writer for the image.</short>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.InitializeWriter.AImage">
<short/>
</element>
<element name="TTiffImage.InitializeWriter.AWriter">
<short/>
</element>

<element name="TTiffImage.FinalizeReader">
<short>Captures values from the image reader after loading an image.</short>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.FinalizeReader.AReader">
<short/>
</element>

<element name="TTiffImage.GetReaderClass" link="#lcl.graphics.TFPImageBitmap.GetReaderClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.GetReaderClass.Result">
<short/>
</element>

<element name="TTiffImage.GetWriterClass" link="#lcl.graphics.TFPImageBitmap.GetWriterClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.GetWriterClass.Result">
<short/>
</element>

<element name="TTiffImage.GetSharedImageClass" link="#lcl.graphics.TRasterImage.GetSharedImageClass">
<short/>
<descr/>
<seealso/>
</element>
<element name="TTiffImage.GetSharedImageClass.Result">
<short/>
</element>

<element name="TTiffImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and 
calls the inherited constructor on entry. Create sets the default value for 
the
<var>Title</var> property to include the class name, the LCL version, and the 
FPC version.
</p>
</descr>
<seealso/>
</element>

<element name="TTiffImage.GetFileExtensions">
<short>
Gets the delimited list of file extension(s) for files which support the 
image format.
</short>
<descr>
<p>
In TTiffImage, the return value is: 'tif;tiff'.
</p>
</descr>
<seealso/>
</element>
<element name="TTiffImage.GetFileExtensions.Result">
<short/>
</element>

<element name="TTiffImage.Artist">
<short>Person who created the image.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.Copyright">
<short>Copyright notice for the image.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.DateTime">
<short>Date and time the image was created.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.DocumentName">
<short>Name of the document from which the image was scanned.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.HostComputer">
<short>
The computer and/or operating system where the image was created.
</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.ImageDescription">
<short>A string that describes the subject of the image.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.Make">
<short>The scanner manufacturer.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.Model">
<short>The scanner model name or number.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.ResolutionUnit">
<short>The unit of measurement for XResolution and YResolution.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.Software">
<short>
Name and version number for the software used to create the image.
</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.XResolution">
<short>Number of pixels in ResolutionUnits for the image width.</short>
<descr/>
<seealso/>
</element>

<element name="TTiffImage.YResolution">
<short>Number of pixels in ResolutionUnits for the image height.</short>
<descr/>
<seealso/>
</element>

<element name="TSharedGIFImage">
<short>Implements a reference-counted shared GIF image.</short>
<descr/>
<seealso>
<link id="TGIFImage"/>
<link id="TSharedCustomBitmap"/>
</seealso>
</element>

<element name="TGIFImage">
<short>
Implements an image using the GIF (Graphics Interchange Format) image format.
</short>
<descr>
<p>
<var>TGIFImage</var> is a <var>TFPImageBitmap</var> descendant which 
implements support for the <b>GIF</b> (<b>Graphics Interchange Format</b>) 
image format. GIF images support up to 8 bits per pixel in the image data, 
and a color palette of up to 256 colors from the 24-bit RGB color space. 
While GIF images allow animation, the LCL implementation does not support the 
feature.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap"/>
</seealso>
</element>

<!-- private -->
<element name="TGIFImage.FTransparent"/>
<element name="TGIFImage.FInterlaced"/>
<element name="TGIFImage.FBitsPerPixel"/>

<element link="#lcl.graphics.TFPImageBitmap.InitializeReader" name="TGIFImage.InitializeReader">
<short/>
<descr/>
<seealso/>
</element>
<element name="TGIFImage.InitializeReader.AImage">
<short/>
</element>
<element name="TGIFImage.InitializeReader.AReader">
<short/>
</element>

<element name="TGIFImage.FinalizeReader">
<short>
Updates the image when the reader has finished loading the image content.
</short>
<descr>
<p>
Ensures that image properties discovered using the reader class are applied 
to the properties in the GIF image.
</p>
<p>
Calls the inherited method on entry. Copies values found in AReader to the 
following properties:
</p>
<ul>
<li>Transparent</li>
<li>Interlaced</li>
<li>BitsPerPixel</li>
</ul>
<p>
<var>FinalizeReader</var> is called from the <var>ReadStream</var> method 
when the reader class has loaded the image content into a TLazIntfImage 
instance.
</p>
</descr>
<seealso>
<link id="TFPImageBitmap.FinalizeReader"/>
</seealso>
</element>
<element name="TGIFImage.FinalizeReader.AReader">
<short>FCL-compatible reader for the image type.</short>
</element>

<element name="TGIFImage.GetReaderClass" link="#lcl.graphics.TFPImageBitmap.GetReaderClass">
<short/>
<descr/>
<seealso>
<link id="TFPImageBitmap.GetReaderClass"/>
</seealso>
</element>
<element name="TGIFImage.GetReaderClass.Result">
<short/>
</element>

<element name="TGIFImage.GetSharedImageClass">
<short>
Gets the class reference used to create the shared image in new class 
instances.
</short>
<descr/>
<seealso/>
</element>
<element name="TGIFImage.GetSharedImageClass.Result">
<short/>
</element>

<element name="TGIFImage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>Calls the inherited constructor on entry.
</p>
</descr>
<seealso/>
</element>

<element name="TGIFImage.IsStreamFormatSupported">
<short>
Determines if the specified Stream contains a valid GIF image format.
</short>
<descr/>
<seealso/>
</element>
<element name="TGIFImage.IsStreamFormatSupported.Result">
<short>
<b>True</b> when the stream contains the GIF87a or GIF89a signature.
</short>
</element>
<element name="TGIFImage.IsStreamFormatSupported.Stream">
<short>TStream instance with values examined in the method.</short>
</element>

<element name="TGIFImage.GetFileExtensions">
<short>Gets the file extensions used for the GIF image format.</short>
<descr/>
<seealso/>
</element>
<element name="TGIFImage.GetFileExtensions.Result">
<short>Returns the value 'gif'</short>
</element>

<element name="TGIFImage.Transparent">
<short>Indicates if the image is drawn with transparent pixels.</short>
<descr/>
<seealso/>
</element>

<element name="TGIFImage.Interlaced">
<short>
Indicates if the image uses the "venetian blind" effect during display.
</short>
<descr/>
<seealso/>
</element>

<element name="TGIFImage.BitsPerPixel">
<short>Number of bits needed to represent a pixel in the image.</short>
<descr>
<p>
BitsPerPixel indicates the color depth (or maximum number of colors) that can 
be represented in the image data.
</p>
</descr>
<seealso/>
</element>

<element name="GraphicFilter">
<short>
Gets a filter string for files using the specified graphic class type.
</short>
<descr>
<p>
<var>GraphicFilter</var> is a <var>String</var> function used to get a filter 
value for image files compatible with the graphics class type specified in 
<var>GraphicClass</var>. The return value contains a description of the graphic 
class and one or more file masks which represent files for the specified type.
</p>
<p>
GraphicClass is a TGraphicClass type which identifies the image class type for 
the requested filter value. It can be one of the graphic classes like TBitmap, 
TCursorImage, TIcon, TPNGImage, TJPEGImage, et. al. If TGraphic is passed in 
the argument, a list with filters for all of the registered image formats is 
returned.
</p>
<p>
For example:
</p>
<code>sFilter := GraphicFilter(TJpegImage);</code>
<p>
Returns:
</p>
<code>JPEG Files (*.jpeg;*.jpg;*.jpe;*.jfif)|*.jpeg;*.jpg;*.jpe;*.jfif</code>
<p>
While:
</p>
<code>sFilter := GraphicFilter(TGraphic);</code>
<p>
Returns:
</p>
<code>
Graphic (*.png;*.xpm;*.bmp;*.cur;*.ico;*.icns;*.jpeg;*.jpg;*.jpe;*.jfif;*.tif;*.
tiff;*.gif;*.pbm;*.pgm;*.ppm)|*.png;*.xpm;*.bmp;*.cur;*.ico;*.icns;*.jpeg;*.jpg;
*.jpe;*.jfif;*.tif;*.tiff;*.gif;*.pbm;*.pgm;*.ppm|
PNG Files (*.png)|*.png|
Pixmap Files (*.xpm)|*.xpm|
Bitmap Files (*.bmp)|*.bmp|
Cursor Files (*.cur)|*.cur|
Icon Files (*.ico)|*.ico|
macOS Icon Files (*.icns)|*.icns|
JPEG Files (*.jpeg;*.jpg;*.jpe;*.jfif)|*.jpeg;*.jpg;*.jpe;*.jfif|
Tagged Image File Format Files (*.tif;*.tiff)|*.tif;*.tiff|
Graphics Interchange Format Files (*.gif)|*.gif|
Portable Pixmap Files (*.pbm;*.pgm;*.ppm)|*.pbm;*.pgm;*.ppm
</code>
<remark>
Formatted for readability; the return value is a string without line breaks. 
Content depends on the images types supported on a given platform.
</remark>
<p>
The return value can be used to set the Filter property in dialogs like 
TFileDialog, TOpenDialog, and TSaveDialog. It contains localized description(s) 
for the graphic class(es) and a delimited list of file mask(s) compatible with 
the class type(s).
</p>
<p>
Use GraphicFileMask to get a delimited list of file masks for a graphic class 
type without the descriptive text.
</p>
<p>
Use GraphicExtension to get a single file extension (without the leading '.') 
for a graphic class type.
</p>
</descr>
<seealso>
<link id="TGraphic"/>
<link id="TGraphicClass"/>
<link id="TIcon"/>
<link id="TIcnsIcon"/>
<link id="TCursorImage"/>
<link id="TBitmap"/>
<link id="TJpegImage"/>
<link id="TPortableNetworkGraphic"/>
<link id="TPortableAnyMapGraphic"/>
<link id="TPixmap"/>
<link id="TTiffImage"/>
<link id="TGifImage"/>
<link id="#lcl.dialogs.TFileDialog.Filter">TFileDialog.Filter</link>
</seealso>
</element>
<element name="GraphicFilter.Result">
<short>
String with a filter value compatible with file dialogs.
</short>
</element>
<element name="GraphicFilter.GraphicClass">
<short>
TGraphic class or descendant for the requested filter value.
</short>
</element>

<element name="GraphicExtension">
<short>
Gets a string with the file extension used for the specified graphic class type.
</short>
<descr>
<p>
Calls <var>GetPicFileFormats</var> to get the list which maps TGraphicClass 
(or descendent) references to a file extension.
</p>
<p>
GraphicExtension iterates over the values in the mapping list in reverse 
order, and compares the class name for the list item to the class name in 
<var>GraphicClass</var>. When a match is found, the <var>GetFormatExt</var> 
method for the item is called to get the return value for the function.
</p>
<p>
The return value is an empty string (<b>''</b>) when a mapping for 
GraphicClass is not found in the list.
</p>
</descr>
</element>
<seealso>
<link id="TGraphic"/>
<link id="TGraphicClass"/>
<link id="TIcon"/>
<link id="TIcnsIcon"/>
<link id="TCursorImage"/>
<link id="TBitmap"/>
<link id="TJpegImage"/>
<link id="TPortableNetworkGraphic"/>
<link id="TPortableAnyMapGraphic"/>
<link id="TPixmap"/>
<link id="TTiffImage"/>
<link id="TGifImage"/>
<link id="GraphicFilter"/>
<link id="GraphicFileMask"/>
</seealso>
<element name="GraphicExtension.Result">
<short>File extension for the image type.</short>
</element>
<element name="GraphicExtension.GraphicClass">
<short>Graphic class used to determine the file extension.</short>
</element>

<element name="GraphicFileMask">
<short>
Gets one or more file masks which can be used to select image files for the 
specified TGraphicClass instance.
</short>
<descr>
<p>
<var>GraphicFileMask</var> is a <var>String</var> function used to get a list 
of file mask(s) which can be used for files compatible with the specified 
graphics class.
</p>
<p>
<var>GraphicClass</var> is the TGraphicClass instance with the TGraphic 
descendant requested in the routine. It can contain one of the graphic classes 
like TBitmap, TCursorImage, TIcon, TPNGImage, TJPEGImage, et. al. If TGraphic 
is passed in the argument, a list with file masks for all of the registered 
image formats is returned. File masks are separated by the ';' delimiter.
</p>
<p>
For example:
</p>
<code>sMask := GraphicFileMask(TJpegImage);</code>
<p>
Returns:
</p>
<code>*.jpeg;*.jpg;*.jpe;*.jfif</code>
<p>
While:
</p>
<code>sMask := GraphicFileMask(TGraphic);</code>
<p>
Returns:
</p>
<code>
*.png;*.xpm;*.bmp;*.cur;*.ico;*.icns;*.jpeg;*.jpg;*.jpe;*.jfif;
*.tif;*.tiff;*.gif;*.pbm;*.pgm;*.ppm
</code>
<remark>
Formatted for readability; the return value is a string without line breaks. 
Content depends on the images types supported on a given platform.
</remark>
<p>
Use GraphicFilter to get a filter value for graphic class type(s) which can be 
assigned to the Filter property in a dialog.
</p>
<p>
Use GraphicExtension to get a single file extension (without the leading '.') 
for a graphic class type.
</p>
</descr>
<seealso>
<link id="TGraphic"/>
<link id="TGraphicClass"/>
<link id="TIcon"/>
<link id="TIcnsIcon"/>
<link id="TCursorImage"/>
<link id="TBitmap"/>
<link id="TJpegImage"/>
<link id="TPortableNetworkGraphic"/>
<link id="TPortableAnyMapGraphic"/>
<link id="TPixmap"/>
<link id="TTiffImage"/>
<link id="TGifImage"/>
<link id="GraphicFilter"/>
<link id="GraphicExtension"/>
<link id="#lcl.dialogs.TFileDialog.Filter">TFileDialog.Filter</link>
</seealso>
</element>
<element name="GraphicFileMask.Result">
<short>
Delimited list of file masks for the graphics class, or an empty string when 
the graphics class is not supported.
</short>
</element>
<element name="GraphicFileMask.GraphicClass">
<short>
TGraphicClass instance to locate in the registered graphic formats for the 
platform.
</short>
</element>

<element name="GetGraphicClassForFileExtension">
<short>
Gets the TGraphicClass instance used for images with the specified file 
extension.
</short>
<descr/>
<seealso/>
</element>
<element name="GetGraphicClassForFileExtension.Result">
<short>TGraphicClass descendant for the image format.</short>
</element>
<element name="GetGraphicClassForFileExtension.FileExt">
<short>
File extension used to determine the TGraphicClass for an image format.
</short>
</element>

<element name="TGetColorStringProc">
<short>
Specifies an object procedure used to process color value to color identifier 
map entries.
</short>
<descr/>
<seealso>
<link id="GetColorValues"/>
</seealso>
</element>
<element name="TGetColorStringProc.s">
<short/>
</element>

<element name="IdentEntry">
<short>Checks whether a given Entry exists in a Map of color names.
</short>
<descr>
<p>
<var>IdentEntry</var> checks whether a given Entry exists in a Map of color 
names.
</p>
<p>
A list of system <var>Colors</var> is specified as a look-up table of indices 
(Entry) and names (MapEntry).
</p>
<p>
This function checks that the value in <var>Entry</var> is within the 
permitted range, and returns the data pair <var>Value</var>, <var>Name</var> 
of the corresponding color in <var>MapEntry</var>.
</p>
<p>
If <var>Entry</var> is out of range the Result is <b>False</b>.
</p>
</descr>
<errors>
If <var>Entry</var> is out of the range [0..High(colors)] the Result is 
returned as <b>False</b>.
</errors>
<seealso/>
</element>
<element name="IdentEntry.Result">
<short>
<b>True</b> if <var>Entry</var> was a valid index into the color look-up 
table.
</short>
</element>
<element name="IdentEntry.Entry">
<short>
<var>Entry</var> - a numeric index into the table of colors.</short>
</element>
<element name="IdentEntry.MapEntry">
<short>
<var>MapEntry</var> - the record of <var>Value</var>, <var>Name</var> 
returned from the look-up table of <var>Colors</var>.
</short>
</element>

<element name="ColorToIdent">
<short>
ColorToIdent - given a Color value, find its name (<var>Ident</var>) in the 
look-up table of <var>Colors</var>.
</short>
</element>
<element name="ColorToIdent.Result">
<short>
Returns <b>True</b> if there is a valid entry in the <var>Colors</var> 
look-up table.
</short>
</element>
<element name="ColorToIdent.Color">
<short>the <var>Color</var> value to be sought in the look-up table.</short>
</element>
<element name="ColorToIdent.Ident">
<short>
<var>Ident</var> - the name of the supplied <var>Color</var> as found in the 
look-up table of <var>Colors</var>.
</short>
</element>

<element name="IdentToColor">
<short>
<var>IdentToColor</var> - given a color identifier (name) returns the color 
value.
</short>
<descr/>
<seealso/>
</element>
<element name="IdentToColor.Result">
<short>
Returns <b>True</b> if <var>Ident</var> is part of a valid entry in the 
look-up table of <var>Colors</var>.
</short>
</element>
<element name="IdentToColor.Ident">
<short>
<var>Ident</var> - the supplied name for the required <var>Color</var>.
</short>
</element>
<element name="IdentToColor.Color">
<short>
The <var>Color</var> returned from the look-up table, with the name supplied 
in <var>Ident</var>.
</short>
</element>

<element name="ColorIndex">
<short>
Finds the position in the color identifier map for the specified value.
</short>
<descr>
<p>
<var>ColorIndex</var> is a <var>Boolean</var> function used to determine if 
the color value specified in <var>Color</var> exists in the color value to 
name identifier map.
</p>
<p>
ColorIndex iterates over the values in the <var>Colors</var> constant to find 
an element in the array with the value specified in Color. The position for 
the value is assigned to the Index output parameter. The return value is 
<b>True</b> when a value is located in Colors. Otherwise, the return value is 
<b>False</b>. The value in Index is not significant when the return value is 
<b>False</b>.
</p>
</descr>
<seealso>
<link id="IdentToColor"/>
<link id="ColorToIdent"/>
</seealso>
</element>
<element name="ColorIndex.Result">
<short><b>True</b> when the color value exists in Colors.</short>
</element>
<element name="ColorIndex.Color">
<short>Color value to locate in Colors.</short>
</element>
<element name="ColorIndex.Index">
<short>Position in Colors where the color value was found.</short>
</element>

<element name="SysColorToSysColorIndex">
<short>
<var>SysColorToSysColorIndex</var> - if <var>Color</var> is one of the system 
colors, returns the <var>Index</var> of the system color.
</short>
<descr/>
<errors>
If <var>Color</var> is not a system color, returns -1.
</errors>
</element>
<element name="SysColorToSysColorIndex.Result">
<short>
Returns the Index value of the Color if it is a system color, otherwise 
returns -1
</short>
</element>
<element name="SysColorToSysColorIndex.Color">
<short>The <var>Color</var> to examine in the routine.</short>
</element>

<element name="ColorToRGB">
<short>
Converts a TColor value to an RGB color constant.
</short>
<descr>
<p>
ColorToRGB ensures that TColor values for special and system colors remove 
the non-RGB values in the constant (Alpha channel).
</p>
<p>
To get a hexadecimal string for a color value with the bytes in RGB order use:
</p>
<code>
// var ColorStr: String;
ColorStr := '$'+ Red(clMoneyGreen).ToHexString(2) + 
  Green(clMoneyGreen).ToHexString(2) + 
  Blue(clMoneyGreen).ToHexString(2);
</code>
<p>
Use RGBToColor to convert individual RGB byte values to a TColor value.
</p>
</descr>
<seealso>
<link id="SysColorToSysColorIndex"/>
<link id="Red"/>
<link id="Green"/>
<link id="Blue"/>
<link id="RGBToColor"/>
<link id="#lcl.lclintf.GetSysColor">GetSysColor</link>
</seealso>
</element>
<element name="ColorToRGB.Result">
<short>
TColor value after the Alpha channel is removed from the input value.
</short>
</element>
<element name="ColorToRGB.Color">
<short>
TColor value converted in the method.
</short>
</element>

<element name="ColorToString">
<short>
Gets a string representation for the specified TColor value.
</short>
<descr>
<p>
<var>ColorToString</var> converts the <var>TColor</var> value in the 
<var>Color</var> argument to a string representation for the color. Color may 
contain either a named color identifier, like clRed or clForm, or a custom 
color value not represented by a color identifier like TColor($00D7FF).
</p>

<!--
  TODO: Include when FPC 3.2.4 (or later) is released.

  Starting with FPC 3.2.0, additional color constants matching standard HTML 
  color names are defined in the RTL TColorRec record type. The values, like 
  TColorRec.Goldenrod and TColorRec.LightSteelBlue, can also be used in the 
  Color argument. 

  Nota Bene: Not recommended at the present time. FPC versions 3.20 and 3.2.2 
  have color constants with the wrong byte order. The byte orders are fixed in 
  3.2.4 - but that version has not seen a stable release yet.
-->

<p>
For named color identifiers, the return value contains the string 
representation for the identifier; e.g. 'clRed' or 'clForm'. For colors which 
are not recognized in the standard Colors map, the return value contains the 
hexadecimal representation for the color in ABGR (Alpha Blue Green Red) byte 
order; e.g. '$0000D7FF'.
</p>
<p>
Use StringToColor or StringToColorDef to convert the string representation for 
a color to its TColor equivalent.
</p>
</descr>
<seealso>
<link id="ColorToIdent"/>
<link id="ColorToRGB"/>
<link id="ColorIndex"/>
<link id="StringToColor"/>
<link id="StringToColorDef"/>
</seealso>
</element>
<element name="ColorToString.Result">
<short>
AnsiString with the hexadecimal byte values or the color identifier name for the specified color value.
</short>
</element>
<element name="ColorToString.Color">
<short>
The <var>TColor</var> value examined in the routine.
</short>
</element>

<element name="StringToColor">
<short>
Converts the specified string representation for a color to a TColor value.
</short>
<descr>
<p>
<var>StringToColor</var> is used to convert the string in <var>S</var> to its 
value as a <var>TColor</var> type. The S argument can contain a color 
identifier like 'clRed' or 'clForm', or a hexadecimal string with the bytes for 
the color in GBR byte order like '$00D7FF'.
</p>
<p>
The return value contains the LongInt value for the color. When S is a valid 
color identifier, the corresponding color constant is returned; e.g. clRed or 
clForm. If S is not a color identifier, it is converted to an Integer value and 
cast to the TColor type for use as the return value. The default return value 
is clNone.
</p>
<p>
Use StringToColorDef to convert a color string to its TColor value using a 
specified default TColor value.
</p>
</descr>
<seealso>
<link id="StringToColorDef"/>
<link id="IdentToColor"/>
</seealso>
</element>
<element name="StringToColor.Result">
<short>
Returns the TColor value corresponding to the value in <var>S</var>.
</short>
</element>
<element name="StringToColor.S">
<short>
String with the color identifier or hexadecimal byte values converted in the 
routine.
</short>
</element>

<element name="StringToColorDef">
<short>
Converts the specified string representation for a color to a TColor value 
using a specified default value.
</short>
<descr>
<p>
<var>StringToColorDef</var> is used to convert the string in <var>S</var> to 
its value as a <var>TColor</var> type. The S argument can contain a color 
identifier like 'clRed' or 'clForm', or a hexadecimal string with the bytes for 
the color in GBR byte order like '$00D7FF'. The DefaultValue argument contains 
the default value used when S is not a valid color string.
</p>
<p>
The return value contains the LongInt value for the color. When S is a valid 
color identifier, the corresponding color constant is returned; e.g. clRed or 
clForm. If S is not a color identifier, it is converted to an Integer value and 
cast to the TColor type for use as the return value. The default return value 
is specified in the DefaultValue argument.
</p>
</descr>
<seealso>
<link id="StringToColor"/>
<link id="ColorToString"/>
<link id="IdentToColor"/>
</seealso>
</element>
<element name="StringToColorDef.Result">
<short>
TColor value for the specified string, or the default value when S does not contain a valid representation for a color.
</short>
</element>
<element name="StringToColorDef.S">
<short>
String with the color identifier or hexadecimal byte values converted in the 
routine.
</short>
</element>
<element name="StringToColorDef.DefaultValue">
<short>
Default TColor value used when S is not a valid representation for a color.
</short>
</element>

<element name="GetColorValues">
<short>
Executes the specified procedure for each of the non-deprecated Color names 
defined for the platform.
</short>
<descr/>
<seealso/>
</element>
<element name="GetColorValues.Proc">
<short/>
</element>

<element name="InvertColor">
<short>
<var>InvertColor</var> - returns the complementary color to the supplied 
value - helps to produce a 'negative' image.
</short>
</element>
<element name="InvertColor.Result">
<short>
Returns the inverse of the original color (i.e. a 'negative' effect).
</short>
</element>
<element name="InvertColor.AColor">
<short>
<var>AColor</var> - the original color for processing.
</short>
</element>

<element name="DecColor">
<short>
Decreases the component RGB values in a color by the specified amount (results 
in a darker color overall).
</short>
<descr>
<p>
<var>DecColor</var> separates the color specified in AColor into its Red, 
Green, and Blue component Byte values. It decreases each the RGB Byte values by 
the amount specified in AQuantity with a lower limit of 0 for each of the 
Byte values. The modified RGB Byte values are reassembled using RGBToColor to 
form the return value for the routine.
</p>
<p>
For example:
</p>
<code>
DkSkyBlue := DecColor(clSkyBlue, 32); // darken by 12.5%
DkKhaki := DecColor(TColor($8CE6F0), 40); // darken custom color 
</code>
<p>
Use IncColor to increase (or lighten) the RGB component values in a color.
</p>
</descr>
<seealso>
<link id="RedGreenBlue"/>
<link id="RGBToColor"/>
<link id="IncColor"/>
</seealso>
</element>
<element name="DecColor.Result">
<short>
TColor value with RGB components decremented by the specified amount.
</short>
</element>
<element name="DecColor.AColor">
<short>
TColor value with the original color modified in the function.
</short>
</element>
<element name="DecColor.AQuantity">
<short>
The amount by which the separate RGB values in AColor are decreased.
</short>
</element>

<element name="IncColor">
<short>
Increases the component RGB values in a color by the specified amount (results 
in a lighter color overall).
</short>
<descr>
<p>
<var>IncColor</var> separates the color specified in AColor into its Red, 
Green, and Blue component Byte values. It increases each the RGB Byte values by 
the amount specified in AQuantity with an upper limit of 255 for each of the 
Byte values. The modified RGB Byte values are reassembled using RGBToColor to 
form the return value for the routine.
</p>
<p>
For example:
</p>
<code>
AColor := IncColor(clNavy, 32); // lighten by 12.5%
</code>
<p>
Use DecColor to decrease (or darken) the RGB component values in a color.
</p>
</descr>
<seealso>
<link id="RedGreenBlue"/>
<link id="RGBToColor"/>
<link id="DecColor"/>
</seealso>
</element>
<element name="IncColor.Result">
<short>
TColor value with RGB components incremented by the specified amount.
</short>
</element>
<element name="IncColor.AColor">
<short>
TColor value with the original color modified in the function.
</short>
</element>
<element name="IncColor.AQuantity">
<short>
The amount by which the separate RGB values in AColor are increased.
</short>
</element>

<element name="IsSysColor">
<short>
Indicates whether the specified color reference is one of the system colors.
</short>
<descr>
<p>
Returns <b>True</b> when <var>AColor</var> has value greater than or equal to 
the value in the <var>SYS_COLOR_BASE</var> constant.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.SYS_COLOR_BASE">SYS_COLOR_BASE</link>
</seealso>
</element>
<element name="IsSysColor.Result">
<short><b>True</b> when AColor is a system color.</short>
</element>
<element name="IsSysColor.AColor">
<short>TColorRef value examined in the routine.</short>
</element>

<element name="Blue">
<short>Finds the <var>Blue</var> component of the supplied color.</short>
<descr>
<p>
Does <b>not</b> work with system color values.
</p>
</descr>
<seealso/>
</element>
<element name="Blue.Result">
<short>Returns the Blue component of the color specified in RGB.</short>
</element>
<element name="Blue.rgb">
<short>The color for processing, expressed as a RGB value.</short>
</element>

<element name="Green">
<short>Finds the <var>Green</var> component of the supplied color.</short>
<descr>
<p>
Does <b>not</b> work with system color values.
</p>
</descr>
<seealso/>
</element>
<element name="Green.Result">
<short>Returns the Green component of the color specified in RGB.</short>
</element>
<element name="Green.rgb">
<short>The color for processing, expressed as RGB.</short>
</element>

<element name="Red">
<short>Finds the <var>Red</var> component of the supplied color.</short>
<descr>
<p>
Does <b>not</b> work with system color values.
</p>
</descr>
<seealso/>
</element>
<element name="Red.Result">
<short>Returns the Red component of the color specified in <var>RGB</var>.
</short>
</element>
<element name="Red.rgb">
<short>The color for processing, expressed as RGB.</short>
</element>

<element name="RGBToColor">
<short>Combines the values for Red, Green and Blue into a TColor value.
</short>
</element>
<element name="RGBToColor.Result">
<short>TColor value for the specified color components.</short>
</element>
<element name="RGBToColor.R">
<short>Byte with the Red color component.</short>
</element>
<element name="RGBToColor.G">
<short>Byte with the Green color component.</short>
</element>
<element name="RGBToColor.B">
<short>Byte with the Blue color component.</short>
</element>

<element name="RedGreenBlue">
<short>
<var>RedGreenBlue</var> - decomposes a composite color into its component 
Red, Green and Blue values.
</short>
<descr>
<p>Does <b>not</b> work with system color values.
</p>
</descr>
<seealso/>
</element>
<element name="RedGreenBlue.rgb">
<short>The color for processing, expressed as RGB.</short>
</element>
<element name="RedGreenBlue.Red">
<short>The <var>Red</var> component of the color defined in <var>RGB</var>.
</short>
</element>
<element name="RedGreenBlue.Green">
<short>The <var>Green</var> component of the color defined in <var>RGB</var>.
</short>
</element>
<element name="RedGreenBlue.Blue">
<short>The <var>Blue</var> component of the color defined in <var>RGB</var>.
</short>
</element>

<element name="FPColorToTColorRef">
<short>Converts a TFPColor value to a Cardinal color reference used in API 
system color constants.
</short>
<descr/>
<seealso/>
</element>
<element name="FPColorToTColorRef.Result">
<short/>
</element>
<element name="FPColorToTColorRef.FPColor">
<short/>
</element>

<element name="FPColorToTColor">
<short>
<var>FPColorToTColor</var> - converts a color specified as a
<var>FPColor</var> to a color of type
<var>TColor</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="FPColorToTColor.Result">
<short>Returns the color specified in <var>FPColor</var> as a color of type 
<var>TColor</var>.
</short>
</element>
<element name="FPColorToTColor.FPColor">
<short>The color for processing, expressed as a <var>FPColor</var>.
</short>
</element>

<element name="TColorToFPColor">
<short>
<var>TColorToFPColor</var> - converts a color of type <var>TColor</var> to 
one specified as a <var>FPColor</var>.
</short>
<descr>
<p>
Does <b>not</b> work with system color values.
</p>
</descr>
<seealso/>
</element>
<element name="TColorToFPColor.Result">
<short>Returns the color specified as a FPColor.</short>
</element>
<element name="TColorToFPColor.c">
<short>
<var>c</var> - the supplied color specified as type <var>TColor</var>.
</short>
</element>

<element name="GetCharsetValues">
<short>
Calls the specified procedure for each of the character set names in 
FontCharsets.
</short>
<descr>
<p>
Not used in the current LCL implementation.
</p>
</descr>
<seealso/>
</element>
<element name="GetCharsetValues.Proc">
<short/>
</element>

<element name="CharsetToIdent">
<short>
Converts the specified numeric character set identifier to its representation 
as a string.
</short>
<descr>
<p>
Calls the RTL IntToIdent routine to locate the TIdentMapEntry for the 
specified value in the FontCharsets constant.
</p>
</descr>
<seealso>
<link id="IdentToCharset"/>
<link id="FontCharsets"/>
<link id="#rtl.classes.IntToIdent">IntToIdent</link>
<link id="#rtl.classes.IdentToInt">IdentToInt</link>
<link id="#rtl.classes.TIdentMapEntry">TIdentMapEntry</link>
</seealso>
</element>
<element name="CharsetToIdent.Result">
<short>
<b>True</b> if the specified numeric value exists in the FontCharsets 
constant.
</short>
</element>
<element name="CharsetToIdent.Charset">
<short>
Numeric character set identifier converted in the routine.
</short>
</element>
<element name="CharsetToIdent.Ident">
<short>
Returns the string representing the specified character set number. It 
returns the value on entry if Charset is not found.
</short>
</element>

<element name="IdentToCharset">
<short>
Converts the specified character set identifier to the its numeric 
representation.
</short>
<descr>
<p>
Calls the RTL IdentToInt routine to locate the TIdentMapEntry for the 
specified value in the FontCharsets constant.
</p>
</descr>
<seealso>
<link id="CharsetToIdent"/>
<link id="FontCharsets"/>
<link id="#rtl.classes.IntToIdent">IntToIdent</link>
<link id="#rtl.classes.IdentToInt">IdentToInt</link>
<link id="#rtl.classes.TIdentMapEntry">TIdentMapEntry</link>
</seealso>
</element>
<element name="IdentToCharset.Result">
<short>
<b>True</b> if the specified string value exists in the FontCharsets 
constant.
</short>
</element>
<element name="IdentToCharset.Ident">
<short>
String with the character set identifier to locate in the FontCharsets 
constant.
</short>
</element>
<element name="IdentToCharset.Charset">
<short>
Returns the numeric representation for the specified character set name. It returns the value on entry if Ident is not found.
</short>
</element>

<element name="GetFontData">
<short>Gets font data for the specified font handle.</short>
<descr>
<p>
Values from <var>DefFontData</var> are assigned as the default return value 
for the routine. No additional actions are performed in the routine when 
<var>Font</var> contains <b>0</b> (for an unassigned font handle). When the 
font handle is valid, the following members in the return value are updated:
</p>
<ul>
<li>Name</li>
<li>Height</li>
<li>Style</li>
<li>CharSet</li>
<li>Pitch</li>
<li>Orientation</li>
<li>Handle</li>
</ul>
</descr>
<seealso/>
</element>
<element name="GetFontData.Result">
<short>TFontData structure with values read in the routine.</short>
</element>
<element name="GetFontData.Font">
<short>Font handle with the logical font data read in the routine.</short>
</element>

<element name="GetDefFontCharSet">
<short>
Gets the default TFontCharSet value for the platform.
</short>
<descr>
<p>
Returns the value for the <var>DEFAULT_CHARSET</var> constant.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.DEFAULT_CHARSET">DEFAULT_CHARSET</link>
</seealso>
</element>
<element name="GetDefFontCharSet.Result">
<short/>
</element>

<element name="IsFontNameXLogicalFontDesc">
<short>Determines if the specified font name is a valid X Logical Font 
Description.
</short>
<descr>
<p>
<var>IsFontNameXLogicalFontDesc</var> is a <var>Boolean</var> function used 
to determine whether the specified font name is a valid X Logical Font 
Description (<b>XLFD</b>).
</p>
</descr>
<seealso/>
</element>
<element name="IsFontNameXLogicalFontDesc.Result">
<short><b>True</b> when the font name is a valid XLFD font name.</short>
</element>
<element name="IsFontNameXLogicalFontDesc.LongFontName">
<short>Font name with segments examined in the routine.</short>
</element>

<element name="XLFDNameToLogFont">
<short>
Gets a logical font record with values representing the specified XLFD font 
descriptor.
</short>
<descr>
<p>
XLFDName contains the font descriptor examined in the function. Its value 
consists of delimited segments that contain the attributes for the font, 
including:
</p>
<dl>
<dt>Registry</dt>
<dd>Ignored.</dd>
<dt>Foundry</dt>
<dd>Ignored.</dd>
<dt>FamilyName</dt>
<dd>Font family.</dd>
<dt>WeightName</dt>
<dd>Font weight.</dd>
<dt>Slant</dt>
<dd>Italic, Reverse Italic, Oblique.</dd>
<dt>SetwidthName</dt>
<dd>Normal, Condensed, Narrow, Wide, Expanded.</dd>
<dt>AddStyleName</dt>
<dd>Orientation or rotation.</dd>
<dt>PixelSize</dt>
<dd>Height in pixels.</dd>
<dt>PointSize</dt>
<dd>Height in points.</dd>
<dt>ResolutionX</dt>
<dd>Horizontal resolution in points.</dd>
<dt>ResolutionY</dt>
<dd>Vertical resolution in points.</dd>
<dt>Spacing</dt>
<dd>Monospace, Proportional, Character Cell (Fixed Pitch).</dd>
<dt>AverageWidth</dt>
<dd>Average character width.</dd>
<dt>CharSetRegistry</dt>
<dd>Ignored.</dd>
<dt>CharSetCoding</dt>
<dd>Ignored.</dd>
</dl>
<p>
Values read from the segments are converted, translated, and massaged into 
the values expected in the logical font record.
</p>
</descr>
<seealso/>
</element>
<element name="XLFDNameToLogFont.Result">
<short>TLogFont instance with values for the XLFD font.</short>
</element>
<element name="XLFDNameToLogFont.XLFDName">
<short>Font descriptor examined in the routine.</short>
</element>

<element name="ExtractXLFDItem">
<short>
Gets the value for the specified segment in an XLFD font descriptor.
</short>
<descr/>
<seealso/>
</element>
<element name="ExtractXLFDItem.Result">
<short>Value for the XLFD segment, or an empty string when not found.</short>
</element>
<element name="ExtractXLFDItem.XLFDName">
<short>XLFD font descriptor examined in the routine.</short>
</element>
<element name="ExtractXLFDItem.Index">
<short>
Ordinal position (starting at 0) for the requested segment in XLFDName.
</short>
</element>

<element name="ExtractFamilyFromXLFDName">
<short>
Gets the family name for the typeface used in the XLFD font descriptor.
</short>
<descr>
<p>
Parses a font name in XLFD format and extracts the FamilyName sequence with 
the typeface family name.
</p>
</descr>
<seealso/>
</element>
<element name="ExtractFamilyFromXLFDName.Result">
<short>Typeface family name found in XLFDName.</short>
</element>
<element name="ExtractFamilyFromXLFDName.XLFDName">
<short>XLFD font descriptor examined in the routine.</short>
</element>

<element name="ClearXLFDItem">
<short>
Replaces the specified XLFD segment value with the '*' wildcard.
</short>
<descr/>
<seealso/>
</element>
<element name="ClearXLFDItem.Result">
<short/>
</element>
<element name="ClearXLFDItem.LongFontName">
<short/>
</element>
<element name="ClearXLFDItem.Index">
<short/>
</element>

<element name="ClearXLFDHeight">
<short>
Replaces the PixelSize, PointSize, ResolutionX, ResolutionY and AverageWidth 
segments in an XLFD font name with the '*' wildcard.
</short>
<descr/>
<seealso/>
</element>
<element name="ClearXLFDHeight.Result">
<short/>
</element>
<element name="ClearXLFDHeight.LongFontName">
<short/>
</element>

<element name="ClearXLFDPitch">
<short>
Replaces the spacing for a XLFD font descriptor format with a '*' wildcard.
</short>
<descr/>
<seealso/>
</element>
<element name="ClearXLFDPitch.Result">
<short/>
</element>
<element name="ClearXLFDPitch.LongFontName">
<short/>
</element>

<element name="ClearXLFDStyle">
<short>
Replaces the WeightName, Slant and SetwidthName segments in an XLFD font name 
with the '*' wildcard.
</short>
<descr/>
<seealso/>
</element>
<element name="ClearXLFDStyle.Result">
<short/>
</element>
<element name="ClearXLFDStyle.LongFontName">
<short/>
</element>

<element name="XLFDHeightIsSet">
<short>
Checks whether an explicit value is assigned to XLFD segments controlling 
font height.
</short>
<descr/>
<seealso/>
</element>
<element name="XLFDHeightIsSet.Result">
<short/>
</element>
<element name="XLFDHeightIsSet.LongFontName">
<short/>
</element>

<element name="FontNameToPangoFontDescStr">
<short>
Parses the specified font name into X Logical Font Descriptor attributes.
</short>
<descr>
<p>
Used in the implementation of the GTK2 widgetset to create font handles for 
logical fonts.
</p>
</descr>
<seealso/>
</element>
<element name="FontNameToPangoFontDescStr.LongFontName">
<short/>
</element>
<element name="FontNameToPangoFontDescStr.aFamily">
<short/>
</element>
<element name="FontNameToPangoFontDescStr.aStyle">
<short/>
</element>
<element name="FontNameToPangoFontDescStr.aSize">
<short/>
</element>
<element name="FontNameToPangoFontDescStr.aSizeInPixels">
<short/>
</element>

<element name="TOnLoadGraphicFromClipboardFormat">
<short>
Specifies a procedure type used to load a graphic image from a clipboard 
format.
</short>
<descr/>
<seealso/>
</element>
<element name="TOnLoadGraphicFromClipboardFormat.Dest">
<short/>
</element>
<element name="TOnLoadGraphicFromClipboardFormat.ClipboardType">
<short/>
</element>
<element name="TOnLoadGraphicFromClipboardFormat.FormatID">
<short/>
</element>

<element name="TOnSaveGraphicToClipboardFormat">
<short>
Specifies a procedure type used to save a graphic image to a clipboard format.
</short>
<descr/>
<seealso/>
</element>
<element name="TOnSaveGraphicToClipboardFormat.Src">
<short/>
</element>
<element name="TOnSaveGraphicToClipboardFormat.ClipboardType">
<short/>
</element>
<element name="TOnSaveGraphicToClipboardFormat.FormatID">
<short/>
</element>

<element name="TOnGetSystemFont">
<short>
Specifies a function type which returns a HFONT handle for a system font.
</short>
<descr>
<p>
<var>TOnGetSystemFont</var> is the type used to implement the 
<var>OnGetSystemFont</var> variable in the <file>graphics</file> unit.
</p>
</descr>
<seealso>
<link id="OnGetSystemFont"/>
<link id="#lcl.forms.TScreen">TScreen</link>
</seealso>
</element>
<element name="TOnGetSystemFont.Result">
<short>HFONT handle for the system font.</short>
</element>
<element name="OnLoadSaveClipBrdGraphicValid">
<short>
Indicates whether clipboard formats for graphic types have been registered 
for the application.
</short>
<descr/>
<seealso/>
</element>

<element name="OnLoadGraphicFromClipboardFormat">
<short>
Address of the routine used to load a graphic from a clipboard format.
</short>
<descr/>
<seealso/>
</element>

<element name="OnSaveGraphicToClipboardFormat">
<short>
Address of the routine used to save a graphic to a clipboard format.
</short>
<descr/>
<seealso/>
</element>

<element name="OnGetSystemFont">
<short>
Address of the routine used to get the handle for the system font.
</short>
<descr/>
<seealso/>
</element>

<element name="TestStreamIsBMP">
<short>
Examines values in the specified stream to determine if it contains a .BMP 
image.
</short>
<descr/>
<seealso/>
</element>
<element name="TestStreamIsBMP.Result">
<short>
<b>True</b> when the stream contains a valid .BMP signature at the required 
position.
</short>
</element>
<element name="TestStreamIsBMP.AStream">
<short>TStream instance examined in the routine.</short>
</element>

<element name="TestStreamIsXPM">
<short>
Examines values in the specified stream to determine if it contains a .XPM 
image.
</short>
<descr>
<p>
Skip comments and searches for the 'static [const] [unsigned] char*' 
statement in the stream.
</p>
</descr>
<seealso/>
</element>
<element name="TestStreamIsXPM.Result">
<short><b>True</b> when .XPM signature is found in the stream.</short>
</element>
<element name="TestStreamIsXPM.AStream">
<short>TStream instance examined in the routine.</short>
</element>

<element name="TestStreamIsIcon">
<short>
Examines values in the specified stream to determine if it contains a .ICO 
image.
</short>
<descr/>
<seealso/>
</element>
<element name="TestStreamIsIcon.Result">
<short><b>True</b> when the .ICO signature is found in the stream.</short>
</element>
<element name="TestStreamIsIcon.AStream">
<short>TStream instance examined in the routine.</short>
</element>

<element name="TestStreamIsCursor">
<short>
Examines values in the specified stream to determine if it contains a .CUR 
cursor image.
</short>
<descr/>
<seealso/>
</element>
<element name="TestStreamIsCursor.Result">
<short><b>True</b> when the .CUR signature is found in the stream.</short>
</element>
<element name="TestStreamIsCursor.AStream">
<short>TStream instance examined in the routine.</short>
</element>

<element name="XPMToPPChar">
<short>
Converts an XPM image file into an array of PChar values.
</short>
<descr>
<p>
Converts an XPM image file into an array of PChar values. The memory is 
allocated as one block, so freeing can simply be done using FreeMem. The data 
is just behind the array.
</p>
<p>
An XPM file can be included in a C source file, because it has a C syntax. In 
the compiled program it is simply an array of PChar. This function converts 
an XPM source file to the same array, by removing the comments and the string 
constant symbols.
</p>
</descr>
<seealso/>
</element>
<element name="XPMToPPChar.Result">
<short/>
</element>
<element name="XPMToPPChar.XPM">
<short/>
</element>
<element name="LazResourceXPMToPPChar">
<short>Loads an XPM image resource into an array.</short>
<descr>
<p>
Loads an XPM image from the specified resource name into an array of PChar 
values. See <link id="XPMToPPChar">XPMToPPChar</link> for more information.
</p>
</descr>
<seealso>
<link id="XPMToPPChar"/>
</seealso>
</element>
<element name="LazResourceXPMToPPChar.Result">
<short>Pointer to the memory allocated for the XPM image resource.</short>
</element>
<element name="LazResourceXPMToPPChar.ResourceName">
<short>Name of the XPM image resource loaded in the routine.</short>
</element>

<element name="ReadXPMFromStream">
<short>
Converts an XPM image stored in the specified stream into an array of PChar 
values.
</short>
<descr>
<p>
See <link id="XPMToPPChar">XPMToPPChar</link> for more info.
</p>
</descr>
<seealso/>
</element>
<element name="ReadXPMFromStream.Result">
<short/>
</element>
<element name="ReadXPMFromStream.Stream">
<short/>
</element>
<element name="ReadXPMFromStream.Size">
<short/>
</element>

<element name="ReadXPMSize">
<short>
Reads the first line from an XPM PChar array which contains the width, height 
and number of colors for the XPM data.
</short>
<descr/>
<seealso/>
</element>
<element name="ReadXPMSize.Result">
<short/>
</element>
<element name="ReadXPMSize.XPM">
<short/>
</element>
<element name="ReadXPMSize.Width">
<short/>
</element>
<element name="ReadXPMSize.Height">
<short/>
</element>
<element name="ReadXPMSize.ColorCount">
<short/>
</element>

<element name="LoadCursorFromLazarusResource">
<short>
<var>LoadCursorFromLazarusResource</var> - loads a named cursor handle from 
the Lazarus Resource (.LRS).
</short>
</element>
<element name="LoadCursorFromLazarusResource.Result">
<short/>
</element>
<element name="LoadCursorFromLazarusResource.ACursorName">
<short/>
</element>

<element name="LoadBitmapFromLazarusResource">
<short>Deprecated - technically a bitmap is created, not loaded.</short>
<descr/>
<seealso/>
</element>
<element name="LoadBitmapFromLazarusResource.Result">
<short/>
</element>
<element name="LoadBitmapFromLazarusResource.ResourceName">
<short/>
</element>
<element name="LoadBitmapFromLazarusResourceHandle">
<short>Deprecated - technically a bitmap is created, not loaded.</short>
<descr/>
<seealso/>
</element>
<element name="LoadBitmapFromLazarusResourceHandle.Result">
<short/>
</element>
<element name="LoadBitmapFromLazarusResourceHandle.Handle">
<short/>
</element>

<element name="CreateGraphicFromResourceName">
<short>
Creates and loads a TGraphic instance with the content from the specified 
resource instance handle and resource name.
</short>
<descr>
<p>
<var>CreateGraphicFromResourceName</var> calls the RTL FindResource routine to 
get an FPC resource handle for the LCL handle in Instance and the resource 
with the name in ResName.
</p>
<p>
Both Icon and Cursor group resource types are checked using FindResource. When 
a valid resource handle (one with a non-zero value) is available, a TIcon or 
TCursorImage instance is created and used as the return value for the routine. 
The LoadFromResourceHandle method in the class instance is called to load the 
image content for the resource.
</p>
<p>
If a handle is not found for an Icon or a Cursor resource type, the 
CreateBitmapFromResourceName routine is called to create and load the content 
in the TGraphic instance.
</p>
<p>
CreateGraphicFromResourceName is used in the implementation of the  
TCustomImageList.AddResourceName method.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="TGraphic"/>
<link id="TIcon.LoadFromResourceHandle"/>
<link id="TCursorImage.LoadFromResourceHandle"/>  
<link id="#lcl.imglist.TCustomImageList.AddResourceName">TCustomImageList.AddResourceName</link>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="CreateGraphicFromResourceName.Result">
<short>
TGraphic (or descendant) instance with the graphic content loaded for the 
specified resource.
</short>
</element>
<element name="CreateGraphicFromResourceName.Instance">
<short>
TLCLHandle instance for the application resource accessed in the routine.
</short>
</element>
<element name="CreateGraphicFromResourceName.ResName">
<short>
Name for the resource loaded from the specified resource handle.
</short>
</element>

<element name="CreateBitmapFromResourceName">
<short>
Creates a TCustomBitmap instance with the content for the named Lazarus 
resource.
</short>
<descr>
<p>
Used in the implementation of components, and the LCL, to get a bitmap image 
stored in a Lazarus resource. Typically used to load button glyphs and icons 
displayed on the component palette in the Lazarus IDE.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Instance parameter.
</version>
<seealso>
<link id="#lcl.lcltype.TLCLHandle">LCLType.TLCLHandle</link>
<link id="#lcl.wsreferences.TLCLHandle">WSReferences.TLCLHandle</link>
</seealso>
</element>
<element name="CreateBitmapFromResourceName.Result">
<short>Bitmap instance created and loaded in the routine.</short>
</element>
<element name="CreateBitmapFromResourceName.Instance">
<short>
Handle for the Lazarus resource with the content for the bitmap.
</short>
</element>
<element name="CreateBitmapFromResourceName.ResName">
<short>Name for the RT_BITMAP resource loaded in the routine.</short>
</element>

<element name="CreateBitmapFromLazarusResource">
<short>Creates and loads a Bitmap from a Lazarus Resource (.lrs) file.
</short>
<descr>
<p>
<var>CreateBitmapFromLazarusResource</var> is an overloaded 
<var>TCustomBitmap</var> function used to create and populate a bitmap with 
the content specified by the arguments to the routine.
</p>
<p>
The overloaded variants allow either a resource name (AName) or TLResource 
handle (AHandle) to be used to select the content for the bitmap. The variants 
with the AMinimumClass argument allow the class type for the graphic to be 
specified. TCustomBitmapClass is the default class type used in the overloaded 
variants.
</p>
<p>
CreateBitmapFromLazarusResource uses a temporary TLazarusResourceStream 
instance to load the content from the Lazarus resource.
</p>
<p>
CreateBitmapFromLazarusResource is used in the implementation of routines like 
LoadBitmapFromLazarusResourceHandle and GetDefaultGlyph (in 
<file>ImgList.pp</file>).
</p>
</descr>
<seealso>
<link id="TCustomBitmap"/>
<link id="TCustomBitmapClass"/>
<link id="LoadBitmapFromLazarusResourceHandle"/>
<link id="#lcl.imglist.GetDefaultGlyph">GetDefaultGlyph</link>
<link id="#lcl.lresources.TLazarusResourceStream">TLazarusResourceStream</link>
<link id="#lcl.lresources.TLResource">TLResource</link>
</seealso>
</element>
<element name="CreateBitmapFromLazarusResource.Result">
<short>
TCustomBitmap with the graphic content created in the routine.
</short>
</element>
<element name="CreateBitmapFromLazarusResource.AName">
<short>
Name for the graphic resource loaded in the routine.
</short>
</element>
<element name="CreateBitmapFromLazarusResource.AMinimumClass">
<short>
Class type required to load the content for the specified resource. The 
default class type is TCustomBitmapClass.
</short>
</element>
<element name="CreateBitmapFromLazarusResource.AHandle">
<short>
Handle for the Lazarus resource accessed in the routine.
</short>
</element>

<element name="CreateCompatibleBitmaps">
<short>
Creates a TLazIntfImage instance for the specified raw image data, and 
returns the handles to the image and optional mask information.
</short>
<descr/>
<seealso/>
</element>
<element name="CreateCompatibleBitmaps.Result">
<short>
<b>True</b> if the widgetset class was able to create handles using the raw 
image data.
</short>
</element>
<element name="CreateCompatibleBitmaps.ARawImage">
<short/>
</element>
<element name="CreateCompatibleBitmaps.ABitmap">
<short/>
</element>
<element name="CreateCompatibleBitmaps.AMask">
<short/>
</element>
<element name="CreateCompatibleBitmaps.ASkipMask">
<short/>
</element>

<element name="CreateBitmapFromFPImage">
<short>
Creates a Bitmap with the content from the specified TFPCustomImage instance.
</short>
<descr>
<p>Creates a temporary <var>TLazIntfImage</var> instance used to copy the 
image content in <var>Img</var> into the <var>TBitmap</var> instance in the 
return value.
</p>
</descr>
<seealso>
<link id="#lcl.intfgraphics.TLazIntfImage">TLazIntfImage</link>
<link id="TRasterImage.LoadFromIntfImage"/>
</seealso>
</element>
<element name="CreateBitmapFromFPImage.Result">
<short>TBitmap instance created and loaded in the routine.</short>
</element>
<element name="CreateBitmapFromFPImage.Img">
<short>TFPCustomImage with the content copied into the return value.</short>
</element>

<element name="AllocPatternBitmap">
<short>
Ensures that a Pattern Bitmap with the specified colors exists in the Pattern 
cache.
</short>
<descr>
<p>
<var>AllocPatternBitmap</var> is a <var>TBitmap</var> function used to ensure 
that a bitmap with the specified colors exists in the internal pattern cache.
</p>
<p>
AllocPatternBitmap tries to locate a <var>TPatternBitmap</var> instance with 
the colors specified in <var>colorBG</var> and <var>colorFG</var>. If the 
requested Pattern Bitmap does not already exist, it is created and added to 
the pattern cache.
</p>
<p>
The return value is the TBitmap instance stored in the Bitmap property for 
the cached TPatternBitmap instance. No actions are performed if the Pattern 
cache has not been assigned; the return value is Nil in this situation.
</p>
</descr>
<seealso>
<link id="TBitmap"/>
</seealso>
</element>
<element name="AllocPatternBitmap.Result">
<short>Bitmap retrieved or created with the specified colors.</short>
</element>
<element name="AllocPatternBitmap.colorBG">
<short>Background color for the Bitmap.</short>
</element>
<element name="AllocPatternBitmap.colorFG">
<short>Foreground color for the Bitmap.</short>
</element>
<element name="ScreenInfo">
<short>
Contains display attributes for the current screen in an application.
</short>
<descr>
<p>
<var>ScreenInfo</var> is a <var>TScreenInfo</var> variable which contains 
display attributes for the current screen in an application, including:
</p>
<dl>
<dt>PixelsPerInchX</dt>
<dd>Horizontal display density (Pixels Per Inch). Default is 72.</dd>
<dt>PixelsPerInchY</dt>
<dd>Vertical display density (Pixels Per Inch). Default is 72.</dd>
<dt>ColorDepth</dt>
<dd>Number of colors used in image data. Default is 24.</dd>
<dt>Initialized</dt>
<dd>Default value is <b>False</b>.</dd>
</dl>
<p>
Values in ScreenInfo are updated when an application initializes the 
widgetset classes used in the LCL interface.
</p>
<p>
ScreenInfo is used in the implementation of the <var>ScaleX</var> and 
<var>ScaleY</var> routines.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.TScreenInfo">TScreenInfo</link>
</seealso>
</element>
<element name="FontResourceCache">
<short>Variable used as the cache for Font resources.</short>
<descr>
<p>
<var>FontResourceCache</var> is a <var>TFontHandleCache</var> variable used 
as the cache for Font resources. FontResourceCache allows reference-counted 
font handles to be created or retrieved when the <var>ReferenceNeeded</var> 
method in <var>TFont</var> is called. Values in FontResourceCache are 
maintained when the FreeReference method in TFont is called.
</p>
<p>
Resources for FontResourceCache are allocated when the 
<file>Graphuic.pp</file> unit is initialized, and freed when the unit is 
finalized.
</p>
</descr>
<seealso>

<link id="TFontHandleCache"/>
</seealso>
</element>
<element name="PenResourceCache">
<short>Variable used as the cache for Pen resources.</short>
<descr/>
<seealso>
<link id="TPenHandleCache"/>
</seealso>
</element>

<element name="BrushResourceCache">
<short>Variable used as the cache for Brush resources.</short>
<descr/>
<seealso>
<link id="TBrushHandleCache"/>
</seealso>
</element>

<element name="FontCharsets">
<short>
Array constant with TIdentMapEntry values for character sets in TFont 
instances.
</short>
<descr>
<p>
Array elements contain <var>TIdentMapEntry</var> record instances which map 
the numeric identifier for a character set to its representation as a string 
value.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TIdentMapEntry">TIdentMapEntry</link>
</seealso>
</element>

<element name="DbgS">
<short>
Creates a formatted debugger message with values from the TFontStyles set.
</short>
<descr>
<p>
The return value contains the formatted set of font styles, with content like:
</p>
<code>'fsBold,fsItalic,fsStrikeout,fsUnderline'</code>
</descr>
<seealso/>
</element>
<element name="DbgS.Result">
<short>Message formatted for use in the debugger.</short>
</element>
<element name="DbgS.Style">
<short>Set of TFontStyle values included in the formatted string.</short>
</element>

<element name="ScaleX">
<short>
Resizes the specified horizontal size from a given display density to the 
current screen PPI.
</short>
<descr>
<p>
Multiplies the values in <var>SizeX</var> and the <var>PixelsPerInchX</var> 
member in <var>ScreenInfo</var>, and divides the product by the value in 
<var>FromDPI</var>. The return value is rounded to the nearest Integer value.
</p>
</descr>
<seealso>
<link id="TScreenInfo"/>
<link id="#lcl.lcltype.MulDiv">MulDiv</link>
</seealso>
</element>
<element name="ScaleX.Result">
<short>New horizontal size after scaling.</short>
</element>
<element name="ScaleX.SizeX">
<short>Size value scaled in the routine.</short>
</element>
<element name="ScaleX.FromDPI">
<short>Original display density (Pixels per Inch).</short>
</element>

<element name="ScaleY">
<short>
Resizes the specified vertical size from a given display density to the 
current screen PPI.
</short>
<descr>
<p>
Multiplies the values in <var>SizeY</var> and the <var>PixelsPerInchY</var> 
member in <var>ScreenInfo</var>, and divides the product by the value in 
<var>FromDPI</var>. The return value is rounded to the nearest Integer value.
</p>
</descr>
<seealso>
<link id="TScreenInfo"/>
<link id="#lcl.lcltype.MulDiv">MulDiv</link>
</seealso>
</element>
<element name="ScaleY.Result">
<short>New vertical size after scaling.</short>
</element>
<element name="ScaleY.SizeY">
<short>Size value scaled in the routine.</short>
</element>
<element name="ScaleY.FromDPI">
<short>Original display density (Pixels per Inch).</short>
</element>

<element name="Register">
<short>Registers TPersistent classes for use in the RTL.</short>
<descr>
<p>
<var>Register</var> calls <var>RegisterClasses</var> to add the following 
persistent objects to the list of classes available in the RTL:
</p>
<ul>
<li>TBitmap</li>
<li>TPixmap</li>
<li>TPortableNetworkGraphic</li>
<li>TPortableAnyMapGraphic (When DisableLCLPNM is not defined)</li>
<li>TJpegImage (When DisableLCLJPEGis not defined)</li>
<li>TGIFImage (When DisableLCLGIF is not defined)</li>
<li>TPicture</li>
<li>TFont</li>
<li>TPen</li>
<li>TBrush</li>
<li>TRegion</li>
</ul>
</descr>
<seealso>
<link id="RegisterClasses"/>
<link id="#rtl.classes.RegisterClass">RegisterClass</link>
</seealso>
</element>

<element name="UpdateHandleObjects">
<short>Renews handles for Fonts, Pens, and Brushes.</short>
<descr/>
<seealso/>
</element>

</module>
<!-- Graphics -->
</package>
</fpdoc-descriptions>
