Sign in Join
Wiki copytemporary

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.