BGRABitmap Pixel types/ru
From Free Pascal wiki
Список типов пикселей и функций библиотеки BGRABitmap. Они предоставляются модулем BGRABitmapTypes.
Типы пикселей и функции
PBGRAPixel = ^TBGRAPixel; | ||
Указатель для прямого доступа к пикселям. Данные хранятся в виде последовательности TBGRAPixel. См. BGRABitmap tutorial 4 | ||
TBGRAPixel = packed record blue, green, red, alpha: byte; | ||
Каждый пиксель представляет собой последовательность из 4 байтов, содержащую синий, зеленый, красный и альфа-канал. Диапазон значений от 0 до 255, цвет в цветовом пространстве sRGB. Альфа-значение: 0 - прозрачно, 255 - непрозрачно. В растровых данных, когда пиксель полностью прозрачен, значения RGB должны быть установлены на ноль. | ||
function BGRA(red, green, blue, alpha: byte): TBGRAPixel; overload; inline; | ||
Создает пиксель с заданными значениями RGBA | ||
function BGRA(red, green, blue: byte): TBGRAPixel; overload; inline; | ||
Создает непрозрачный пиксель с заданными значениями RGB | ||
operator = (const c1, c2: TBGRAPixel): boolean; inline; | ||
Проверяет, равны ли два пикселя. Если они оба прозрачны, значения RGB игнорируются | ||
function GetIntensity(c: TBGRAPixel): word; inline; | ||
Возвращает интенсивность пикселя. Интенсивность - это максимальное значение, достигаемое любым компонентом | ||
function SetIntensity(c: TBGRAPixel; intensity: word): TBGRAPixel; | ||
Устанавливает интенсивность пикселя | ||
function GetLightness(c: TBGRAPixel): word; | ||
Возвращает свечение пикселя. Свечение - это воспринимаемая яркость, 0 - черный, а 65535 - белый. | ||
function SetLightness(c: TBGRAPixel; lightness: word): TBGRAPixel; | ||
Возвращает свечение пикселя | ||
function ApplyLightnessFast(color: TBGRAPixel; lightness: word): TBGRAPixel; inline; | ||
Быстро устанавливает свечение, уменьшая в сторону черного, если lightness меньше 32768, и уменьшая в сторону белого, если lightness больше 32768 | ||
function ApplyIntensityFast(color: TBGRAPixel; lightness: longword): TBGRAPixel; | ||
Быстро устанавливает интенсивность, уменьшая в сторону черного, если lightness меньше 32768, и умножая все составляющие, если lightness больше 32768. В случае насыщения, она исчезает в сторону белого | ||
function CombineLightness(lightness1,lightness2: Int32or64): Int32or64; | ||
Объединяет две яркости вместе. Значение 32768 является нейтральным. Результат может превысить 65535 | ||
function BGRAToGrayscale(c: TBGRAPixel): TBGRAPixel; | ||
Преобразует цвет в оттенки серого | ||
function GrayscaleToBGRA(lightness: word): TBGRAPixel; | ||
Создает серый цвет с заданной яркостью | ||
function MergeBGRA(c1, c2: TBGRAPixel): TBGRAPixel; overload; | ||
Слияние двух цветов без гамма-коррекции | ||
function MergeBGRA(c1: TBGRAPixel; weight1: integer; c2: TBGRAPixel; weight2: integer): TBGRAPixel; overload; | ||
Слияние двух цветов без гамма-коррекции. weight1 и weight2 указывает на вес цветового барицентра | ||
function MergeBGRAWithGammaCorrection(c1: TBGRAPixel; weight1: byte; c2: TBGRAPixel; weight2: byte): TBGRAPixel; | ||
Слияние двух цветов с гамма-коррекцией. weight1 и weight2 указывает на вес цветового барицентра | ||
function ColorToBGRA(color: TColor): TBGRAPixel; overload; | ||
Преобразует значение TColor в непрозрачный пиксель | ||
function ColorToBGRA(color: TColor; opacity: byte): TBGRAPixel; overload; | ||
Преобразует значение TColor в пиксель с заданной непрозрачностью | ||
function BGRAToColor(c: TBGRAPixel): TColor; | ||
Преобразует пиксель в значение TColor, отбрасывая значение альфа | ||
function FPColorToBGRA(AValue: TFPColor): TBGRAPixel; | ||
Преобразует значение TFPColor в пиксель. Обратите внимание, что даже если TFPColor имеет 16-битные значения, они не считаются расширенной гаммой | ||
function BGRAToFPColor(AValue: TBGRAPixel): TFPColor; inline; | ||
Преобразует пиксель в TFPColor | ||
function BGRAWordDiff(c1, c2: TBGRAPixel): word; | ||
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 65535 | ||
function BGRADiff(c1, c2: TBGRAPixel): byte; | ||
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 255 | ||
ArrayOfTBGRAPixel = array of TBGRAPixel; | ||
Массив пикселей | ||
function MergeBGRA(const colors: array of TBGRAPixel): TBGRAPixel; overload; | ||
Объединяет данные цвета без гамма-коррекции | ||
TExpandedPixel = packed record red, green, blue, alpha: word; | ||
Хранит гамму расширенного цвета RGB. Диапазон значений от 0 до 65535 | ||
function GammaExpansion(c: TBGRAPixel): TExpandedPixel; inline; | ||
Преобразует пиксель из sRGB в расширенную гамму RGB | ||
function GammaCompression(const ec: TExpandedPixel): TBGRAPixel; inline; | ||
Преобразует пиксель из гамма-развернутого RGB в sRGB | ||
function GammaCompression(red,green,blue,alpha: word): TBGRAPixel; inline; | ||
Преобразует пиксель из гамма-развернутого RGB в sRGB | ||
function GetIntensity(const c: TExpandedPixel): word; inline; | ||
Возвращает интенсивность гамма-расширенного пикселя. Интенсивность - это максимальное значение, достигаемое любым компонентом | ||
function SetIntensity(const c: TExpandedPixel; intensity: word): TExpandedPixel; | ||
Устанавливает интенсивность гамма-расширенного пикселя | ||
function GetLightness(const c: TExpandedPixel): word; inline; | ||
Возвращает яркость гамма-расширенного пикселя. lightness - это воспринимаемая яркость, 0 - черный, а 65535 - белый. | ||
function SetLightness(const c: TExpandedPixel; lightness: word): TExpandedPixel; | ||
Устанавливает яркость гамма-развернутого пикселя | ||
function SetLightness(const c: TExpandedPixel; lightness: word; curLightness: word): TExpandedPixel; | ||
Устанавливает яркость расширенного гамма-пикселя при условии, что вы уже знаете текущее значение яркости curlightness. Это немного быстрее, чем предыдущая функция | ||
function ColorImportance(ec: TExpandedPixel): word; | ||
Возвращает важность цвета. Это похоже на насыщенность в цветовом пространстве HSL, за исключением того, что это гамма-коррекция. Значение ноль обозначает черный/серый/белый, а значение 65535 обозначает яркий цвет | ||
function MergeBGRA(ec1, ec2: TExpandedPixel): TExpandedPixel; overload; | ||
Объединение двух расширенных гамма-пикселей (с учетом коррекции гаммы) | ||
function ExpandedDiff(ec1, ec2: TExpandedPixel): word; | ||
Вычисляет разницу (с гамма-коррекцией) между двумя пикселями с учетом всех размеров, включая прозрачность. Результат варьирует от 0 до 65535 | ||
THSLAPixel = packed record | ||
Цвет пикселя определяется в цветовом пространстве HSL. Диапазон значений от 0 до 65535 | ||
hue: word; | ||
Оттенок пикселя. Экстремальные значения 0 и 65535 - красные | ||
saturation: word; | ||
Насыщенность цвета. 0 - серый, а 65535 - самый яркий цвет | ||
lightness: word; | ||
Яркость цвета. 0 черный, 32768 нормальный, 65535 белый | ||
alpha: word; | ||
Непрозрачность пикселя. 0 прозрачный и 65535 непрозрачный | ||
function HSLA(hue, saturation, lightness, alpha: word): THSLAPixel; overload; inline; | ||
Создает пиксель с заданными значениями HSLA, где A обозначает альфа | ||
function HSLA(hue, saturation, lightness: word): THSLAPixel; overload; inline; | ||
Создает непрозрачный пиксель с заданными значениями HSL | ||
function BGRAToHSLA(c: TBGRAPixel): THSLAPixel; | ||
Преобразует пиксель из sRGB в цветовое пространство HSL | ||
function ExpandedToHSLA(const ec: TExpandedPixel): THSLAPixel; | ||
Converts a pixel from gamma expanded RGB to HSL color space | ||
function HSLAToExpanded(const c: THSLAPixel): TExpandedPixel; | ||
Преобразует пиксель из гамма-развернутого RGB в цветовое пространство HSL | ||
function HSLAToBGRA(const c: THSLAPixel): TBGRAPixel; | ||
Преобразует пиксель из цветового пространства HSL в sRGB | ||
function HueDiff(h1, h2: word): word; | ||
Вычисляет разницу оттенков | ||
function GetHue(ec: TExpandedPixel): word; | ||
Возвращает оттенок расширенного гамма-пикселя | ||
TGSBAPixel = THSLAPixel; | ||
Цвет пикселя определяется в исправленном цветовом пространстве HSL. G обозначает исправленный оттенок, а B обозначает фактическую яркость. Диапазон значений от 0 до 65535 | ||
function BGRAToGSBA(c: TBGRAPixel): TGSBAPixel; | ||
Преобразует пиксель из sRGB в корректное цветовое пространство HSL | ||
function ExpandedToGSBA(ec: TExpandedPixel): TGSBAPixel; | ||
Преобразует пиксель из гамма-развернутого RGB в корректное цветовое пространство HSL | ||
function GtoH(ghue: word): word; | ||
Преобразует оттенок G (GSBA) в оттенок H (HSLA) | ||
function HtoG(hue: word): word; | ||
Преобразует оттенок H (HSLA) в оттенок G (GSBA) | ||
function GSBAToBGRA(c: TGSBAPixel): TBGRAPixel; | ||
Преобразует пиксель из исправленного HSL в sRGB | ||
function GSBAToExpanded(c: TGSBAPixel): TExpandedPixel; | ||
Преобразует пиксель из корректного HSL в расширенный гамма RGB | ||
function GSBAToHSLA(c: TGSBAPixel): THSLAPixel; | ||
Преобразует пиксель из корректного HSL в обычный HSL | ||
TColorF = packed array[1..4] of single; | ||
Цветовая переменная общего назначения со значениями с плавающей точкой одинарной точности | ||
function ColorF(red,green,blue,alpha: single): TColorF; | ||
Creates a TColorF structure | ||
operator - (const c1, c2: TColorF): TColorF; inline; | ||
Subtract each component separately | ||
operator + (const c1, c2: TColorF): TColorF; inline; | ||
Add each component separately | ||
operator * (const c1, c2: TColorF): TColorF; inline; | ||
Multiply each component separately | ||
operator * (const c1: TColorF; factor: single): TColorF; inline; | ||
Multiply each component by factor | ||
TDrawMode = ( | ||
Possible modes when drawing a pixel over another one | ||
dmSet, | ||
The pixel is replaced | ||
dmSetExceptTransparent, | ||
The pixel is replaced if the pixel over has an alpha value of 255 | ||
dmLinearBlend, | ||
The pixel is blend over the other one according to alpha values, however no gamma correction is applied. In other words, the color space is assumed to be linear | ||
dmDrawWithTransparency, | ||
The pixel is blend over the other one according to alpha values, and a gamma correction is applied. In other word, the color space is assumed to be sRGB | ||
dmXor); | ||
Values of all channels are combined with Xor. This is useful to compute the binary difference, however it is not something that makes much sense to display on the screen | ||
dmFastBlend = dmLinearBlend; | ||
An alias for the linear blend, because it is faster than blending with gamma correction | ||
TBlendOperation = ( | ||
Advanced blending modes. See Paint.NET blend modes and Formulas. Blending layers has two steps. The first one is to apply the blend operations listed below, and the second is the actual merging of the colors | ||
boLinearBlend, | ||
Simple blend, except that it forces a linear merge so it is equivalent to dmLinearBlend | ||
boTransparent, | ||
Simple blend. It is equivalent to dmLinearBlend or dmDrawWithTransparency | ||
boLighten, boScreen, boAdditive, boLinearAdd, boColorDodge, boDivide, boNiceGlow, boSoftLight, boHardLight, | ||
Lighting blend modes (tends to increase the luminosity) | ||
boGlow, boReflect, boOverlay, boDarkOverlay, boDarken, boMultiply, boColorBurn, | ||
Masking blend modes (tends to decrease the luminosity) | ||
boDifference, boLinearDifference, boExclusion, boLinearExclusion, boSubtract, boLinearSubtract, boSubtractInverse, boLinearSubtractInverse, | ||
Difference blend modes | ||
boNegation, boLinearNegation, | ||
Negation blend modes | ||
boXor); | ||
Xor blend mode. It is sightly different from dmXor because the alpha value is used like in other blends modes | ||
boGlowMask = boGlow; | ||
Alias to glow that express that this blend mode masks the part where the top layer is black | ||
boLinearMultiply = boMultiply; | ||
Alias because linear or non linear multiply modes are identical | ||
boNonLinearOverlay = boDarkOverlay; | ||
Alias to express that dark overlay is simply an overlay with gamma correction | ||
BlendOperationStr : array[TBlendOperation] of string | ||
String constants for blend modes | ||
function StrToBlendOperation(str: string): TBlendOperation; | ||
Returns the blend mode expressed by the string | ||
TChannel = (cRed, cGreen, cBlue, cAlpha); | ||
Possible channels in a bitmap using any RGBA colorspace | ||
TChannels = set of TChannel; | ||
Combination of channels | ||
TAlphaChannelPaletteOption = ( | ||
Specifies how a palette handles the alpha channel | ||
acIgnore, | ||
The alpha channel is ignored. The alpha channel is considered to be stored elsewhere | ||
acTransparentEntry, | ||
One entry is allocated the fully transparent color | ||
acFullChannelInPalette); | ||
The alpha channel is fully embedded in the palette so that a color is identified by its four RGBA channels | ||
TDitheringAlgorithm = ( | ||
Dithering algorithms that specifies how to handle colors that are not found in the palette | ||
daNearestNeighbor, | ||
The nearest color is to be used instead | ||
daFloydSteinberg); | ||
The nearest color may be used however another color may be used to compensate for the error, following Floyd-Steinberg algorithm | ||