Revision 1 of 2, by Trev on 1-15-2020. The page as it is now.
BGRABitmap Pixel types/ru
Список типов пикселей и функций библиотеки BGRABitmap. Они предоставляются модулем BGRABitmapTypes.
Типы пикселей и функции
<table style="border-collapse: collapse;">
<tr style="background: white;">
<td colspan="3">
PBGRAPixel = ^TBGRAPixel;
</td>
</tr>
<tr style="background: white;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Указатель для прямого доступа к пикселям. Данные хранятся в виде последовательности TBGRAPixel. См. BGRABitmap tutorial 4
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TBGRAPixel = packed record blue, green, red, alpha: byte;
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Каждый пиксель представляет собой последовательность из 4 байтов, содержащую синий, зеленый, красный и альфа-канал. Диапазон значений от 0 до 255, цвет в цветовом пространстве sRGB. Альфа-значение: 0 - прозрачно, 255 - непрозрачно. В растровых данных, когда пиксель полностью прозрачен, значения RGB должны быть установлены на ноль.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function BGRA(red, green, blue, alpha: byte): TBGRAPixel; overload; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает пиксель с заданными значениями RGBA
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function BGRA(red, green, blue: byte): TBGRAPixel; overload; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает непрозрачный пиксель с заданными значениями RGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
operator = (const c1, c2: TBGRAPixel): boolean; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Проверяет, равны ли два пикселя. Если они оба прозрачны, значения RGB игнорируются
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GetIntensity(c: TBGRAPixel): word; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает интенсивность пикселя. Интенсивность - это максимальное значение, достигаемое любым компонентом
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function SetIntensity(c: TBGRAPixel; intensity: word): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Устанавливает интенсивность пикселя
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GetLightness(c: TBGRAPixel): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает свечение пикселя. Свечение - это воспринимаемая яркость, 0 - черный, а 65535 - белый.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function SetLightness(c: TBGRAPixel; lightness: word): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает свечение пикселя
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function ApplyLightnessFast(color: TBGRAPixel; lightness: word): TBGRAPixel; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Быстро устанавливает свечение, уменьшая в сторону черного, если lightness меньше 32768, и уменьшая в сторону белого, если lightness больше 32768
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function ApplyIntensityFast(color: TBGRAPixel; lightness: longword): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Быстро устанавливает интенсивность, уменьшая в сторону черного, если lightness меньше 32768, и умножая все составляющие, если lightness больше 32768. В случае насыщения, она исчезает в сторону белого
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function CombineLightness(lightness1,lightness2: Int32or64): Int32or64;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Объединяет две яркости вместе. Значение 32768 является нейтральным. Результат может превысить 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function BGRAToGrayscale(c: TBGRAPixel): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует цвет в оттенки серого
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GrayscaleToBGRA(lightness: word): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает серый цвет с заданной яркостью
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function MergeBGRA(c1, c2: TBGRAPixel): TBGRAPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Слияние двух цветов без гамма-коррекции
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function MergeBGRA(c1: TBGRAPixel; weight1: integer; c2: TBGRAPixel; weight2: integer): TBGRAPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Слияние двух цветов без гамма-коррекции. weight1 и weight2 указывает на вес цветового барицентра
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function MergeBGRAWithGammaCorrection(c1: TBGRAPixel; weight1: byte; c2: TBGRAPixel; weight2: byte): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Слияние двух цветов с гамма-коррекцией. weight1 и weight2 указывает на вес цветового барицентра
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function ColorToBGRA(color: TColor): TBGRAPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует значение TColor в непрозрачный пиксель
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function ColorToBGRA(color: TColor; opacity: byte): TBGRAPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует значение TColor в пиксель с заданной непрозрачностью
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function BGRAToColor(c: TBGRAPixel): TColor;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель в значение TColor, отбрасывая значение альфа
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function FPColorToBGRA(AValue: TFPColor): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует значение TFPColor в пиксель. Обратите внимание, что даже если TFPColor имеет 16-битные значения, они не считаются расширенной гаммой
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function BGRAToFPColor(AValue: TBGRAPixel): TFPColor; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель в TFPColor
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function BGRAWordDiff(c1, c2: TBGRAPixel): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function BGRADiff(c1, c2: TBGRAPixel): byte;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 255
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: white;">
<td colspan="3">
ArrayOfTBGRAPixel = array of TBGRAPixel;
</td>
</tr>
<tr style="background: white;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Массив пикселей
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function MergeBGRA(const colors: array of TBGRAPixel): TBGRAPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Объединяет данные цвета без гамма-коррекции
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: white;">
<td colspan="3">
TExpandedPixel = packed record red, green, blue, alpha: word;
</td>
</tr>
<tr style="background: white;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Хранит гамму расширенного цвета RGB. Диапазон значений от 0 до 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GammaExpansion(c: TBGRAPixel): TExpandedPixel; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из sRGB в расширенную гамму RGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GammaCompression(const ec: TExpandedPixel): TBGRAPixel; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из гамма-развернутого RGB в sRGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GammaCompression(red,green,blue,alpha: word): TBGRAPixel; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из гамма-развернутого RGB в sRGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GetIntensity(const c: TExpandedPixel): word; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает интенсивность гамма-расширенного пикселя. Интенсивность - это максимальное значение, достигаемое любым компонентом
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function SetIntensity(const c: TExpandedPixel; intensity: word): TExpandedPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Устанавливает интенсивность гамма-расширенного пикселя
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GetLightness(const c: TExpandedPixel): word; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает яркость гамма-расширенного пикселя. lightness - это воспринимаемая яркость, 0 - черный, а 65535 - белый.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function SetLightness(const c: TExpandedPixel; lightness: word): TExpandedPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Устанавливает яркость гамма-развернутого пикселя
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function SetLightness(const c: TExpandedPixel; lightness: word; curLightness: word): TExpandedPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Устанавливает яркость расширенного гамма-пикселя при условии, что вы уже знаете текущее значение яркости curlightness. Это немного быстрее, чем предыдущая функция
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function ColorImportance(ec: TExpandedPixel): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает важность цвета. Это похоже на насыщенность в цветовом пространстве HSL, за исключением того, что это гамма-коррекция. Значение ноль обозначает черный/серый/белый, а значение 65535 обозначает яркий цвет
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function MergeBGRA(ec1, ec2: TExpandedPixel): TExpandedPixel; overload;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Объединение двух расширенных гамма-пикселей (с учетом коррекции гаммы)
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function ExpandedDiff(ec1, ec2: TExpandedPixel): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: white;">
<td colspan="3">
THSLAPixel = packed record
</td>
</tr>
<tr style="background: white;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Цвет пикселя определяется в цветовом пространстве HSL. Диапазон значений от 0 до 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
hue: word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Оттенок пикселя. Экстремальные значения 0 и 65535 - красные
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
saturation: word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Насыщенность цвета. 0 - серый, а 65535 - самый яркий цвет
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
lightness: word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Яркость цвета. 0 черный, 32768 нормальный, 65535 белый
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
alpha: word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Непрозрачность пикселя. 0 прозрачный и 65535 непрозрачный
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function HSLA(hue, saturation, lightness, alpha: word): THSLAPixel; overload; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает пиксель с заданными значениями HSLA, где A обозначает альфа
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function HSLA(hue, saturation, lightness: word): THSLAPixel; overload; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает непрозрачный пиксель с заданными значениями HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function BGRAToHSLA(c: TBGRAPixel): THSLAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из sRGB в цветовое пространство HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function ExpandedToHSLA(const ec: TExpandedPixel): THSLAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из гамма-развернутого RGB в цветовое пространство HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function HSLAToExpanded(const c: THSLAPixel): TExpandedPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из гамма-развернутого RGB в цветовое пространство HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function HSLAToBGRA(const c: THSLAPixel): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из цветового пространства HSL в sRGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function HueDiff(h1, h2: word): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Вычисляет разницу оттенков
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GetHue(ec: TExpandedPixel): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает оттенок расширенного гамма-пикселя
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TGSBAPixel = THSLAPixel;
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Цвет пикселя определяется в исправленном цветовом пространстве HSL. G обозначает исправленный оттенок, а B обозначает фактическую яркость. Диапазон значений от 0 до 65535
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function BGRAToGSBA(c: TBGRAPixel): TGSBAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из sRGB в корректное цветовое пространство HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function ExpandedToGSBA(ec: TExpandedPixel): TGSBAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из гамма-развернутого RGB в корректное цветовое пространство HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GtoH(ghue: word): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует оттенок G (GSBA) в оттенок H (HSLA)
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function HtoG(hue: word): word;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует оттенок H (HSLA) в оттенок G (GSBA)
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GSBAToBGRA(c: TGSBAPixel): TBGRAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из исправленного HSL в sRGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
function GSBAToExpanded(c: TGSBAPixel): TExpandedPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из корректного HSL в расширенный гамма RGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function GSBAToHSLA(c: TGSBAPixel): THSLAPixel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Преобразует пиксель из корректного HSL в обычный HSL
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TColorF = packed array[1..4] of single;
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Цветовая переменная общего назначения со значениями с плавающей точкой одинарной точности
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function ColorF(red,green,blue,alpha: single): TColorF;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Создает структуру TColorF
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
operator - (const c1, c2: TColorF): TColorF; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Вычитает каждый компонент отдельно
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
operator + (const c1, c2: TColorF): TColorF; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Добавляет каждый компонент отдельно
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
operator * (const c1, c2: TColorF): TColorF; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Умножает каждый компонент отдельно
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
operator * (const c1: TColorF; factor: single): TColorF; inline;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Умножает каждый компонент на factor
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TDrawMode = (
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Возможные режимы при рисовании пикселя поверх другого
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
dmSet,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Пиксель заменяется
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
dmSetExceptTransparent,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Пиксель заменяется, если пиксель имеет значение альфа 255
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
dmLinearBlend,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Пиксель смешивается с другим в соответствии с альфа-значениями, однако гамма-коррекция не применяется. Другими словами, цветовое пространство предполагается линейным
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
dmDrawWithTransparency,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Пиксель смешивается с другим в соответствии с альфа-значениями, и применяется гамма-коррекция. Другими словами, цветовое пространство предполагается sRGB
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
dmXor);
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Значения всех каналов объединяются [посредством] Xor. Это полезно для вычисления двоичной разницы, однако не имеет смысла отображать на экране
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
dmFastBlend = dmLinearBlend;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Псевдоним для линейного наложения, потому что он быстрее, чем наложение с гамма-коррекцией
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: white;">
<td colspan="3">
TBlendOperation = (
</td>
</tr>
<tr style="background: white;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Расширенные режимы наложения. См. Paint.NET blend modes и Formulas. Смешивание слоев имеет два этапа. Первый - применяются операции смешивания, перечисленные ниже, а второй - фактическое слияние цветов.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
boLinearBlend,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Простое смешивание, за исключением того, что оно вызывает линейное объединение, поэтому оно эквивалентно dmLinearBlend
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
boTransparent,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Простое смешивание. Оно эквивалентно dmLinearBlend или dmDrawWithTransparency
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
boLighten, boScreen, boAdditive, boLinearAdd, boColorDodge, boDivide, boNiceGlow, boSoftLight, boHardLight,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Режимы смешивания яркости (имеют тенденцию увеличивать свечение)
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
boGlow, boReflect, boOverlay, boDarkOverlay, boDarken, boMultiply, boColorBurn,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Маскировка режимов наложения (имеет тенденцию уменьшать свечение)
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
boDifference, boLinearDifference, boExclusion, boLinearExclusion, boSubtract, boLinearSubtract, boSubtractInverse, boLinearSubtractInverse,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Режимы смешивания различий
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
boNegation, boLinearNegation,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Режимы наложения негатива
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
boXor);
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Режим смешивания Xor. Он немного отличается от dm Xor, поскольку альфа-значение используется, как и в других режимах наложения.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
boGlowMask = boGlow;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Псевдоним свечения, который выражает, что этот режим смешивания маскирует часть, где верхний слой черный
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
boLinearMultiply = boMultiply;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Псевдоним, потому что линейные или нелинейные режимы умножения идентичны
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
boNonLinearOverlay = boDarkOverlay;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Псевдоним, чтобы выразить это темное наложение - это просто наложение с гамма-коррекцией
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
BlendOperationStr : array[TBlendOperation] of string
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Строковые константы для режимов наложения
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
function StrToBlendOperation(str: string): TBlendOperation;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Возвращает режим наложения, выраженный строкой
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TChannel = (cRed, cGreen, cBlue, cAlpha);
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Возможные каналы в растровом изображении с использованием любого цветового пространства RGBA
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
TChannels = set of TChannel;
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Сочетание каналов
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TAlphaChannelPaletteOption = (
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Определяет, как палитра обрабатывает альфа-канал
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
acIgnore,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Альфа-канал игнорируется. Считается, что альфа-канал хранится в другом месте.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
acTransparentEntry,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Одна точка входа выделяется полностью прозрачным цветом
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
acFullChannelInPalette);
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Альфа-канал полностью встроен в палитру, поэтому цвет определяется четырьмя каналами RGBA.
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr style="background: #f0f0ff;">
<td colspan="3">
TDitheringAlgorithm = (
</td>
</tr>
<tr style="background: #f0f0ff;">
<td width="10%">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
Алгоритмы сглаживания, которые определяют, как обрабатывать цвета, которые не найдены в палитре
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: white;">
daNearestNeighbor,
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: white;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Ближайший цвет должен использоваться вместо
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
<tr>
<td width="10%">
</td>
<td colspan="2" style="background: #f0f0ff;">
daFloydSteinberg);
</td>
</tr>
<tr>
<td width="10%">
</td>
<td width="10%" style="background: #f0f0ff;">
</td>
<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
Можно использовать ближайший цвет, но можно использовать и другой цвет для компенсации ошибки, следуя алгоритму Флойда-Стейнберга
</td>
</tr>
<tr style="height: 8px;">
<td colspan="3">
</td>
</tr>
</table>
From the Free Pascal wiki, page "BGRABitmap Pixel types/ru", as it stood on 2020-01-15 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
