BGRABitmap Pixel types/ru
From Free Pascal wiki
Jump to navigationJump to search
│ English (en) │ русский (ru) │
Список типов пикселей и функций библиотеки 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; | ||
Преобразует пиксель из гамма-развернутого RGB в цветовое пространство HSL | ||
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; | ||
Создает структуру TColorF | ||
operator - (const c1, c2: TColorF): TColorF; inline; | ||
Вычитает каждый компонент отдельно | ||
operator + (const c1, c2: TColorF): TColorF; inline; | ||
Добавляет каждый компонент отдельно | ||
operator * (const c1, c2: TColorF): TColorF; inline; | ||
Умножает каждый компонент отдельно | ||
operator * (const c1: TColorF; factor: single): TColorF; inline; | ||
Умножает каждый компонент на factor | ||
TDrawMode = ( | ||
Возможные режимы при рисовании пикселя поверх другого | ||
dmSet, | ||
Пиксель заменяется | ||
dmSetExceptTransparent, | ||
Пиксель заменяется, если пиксель имеет значение альфа 255 | ||
dmLinearBlend, | ||
Пиксель смешивается с другим в соответствии с альфа-значениями, однако гамма-коррекция не применяется. Другими словами, цветовое пространство предполагается линейным | ||
dmDrawWithTransparency, | ||
Пиксель смешивается с другим в соответствии с альфа-значениями, и применяется гамма-коррекция. Другими словами, цветовое пространство предполагается sRGB | ||
dmXor); | ||
Значения всех каналов объединяются [посредством] Xor. Это полезно для вычисления двоичной разницы, однако не имеет смысла отображать на экране | ||
dmFastBlend = dmLinearBlend; | ||
Псевдоним для линейного наложения, потому что он быстрее, чем наложение с гамма-коррекцией | ||
TBlendOperation = ( | ||
Расширенные режимы наложения. См. Paint.NET blend modes и Formulas. Смешивание слоев имеет два этапа. Первый - применяются операции смешивания, перечисленные ниже, а второй - фактическое слияние цветов. | ||
boLinearBlend, | ||
Простое смешивание, за исключением того, что оно вызывает линейное объединение, поэтому оно эквивалентно dmLinearBlend | ||
boTransparent, | ||
Простое смешивание. Оно эквивалентно dmLinearBlend или dmDrawWithTransparency | ||
boLighten, boScreen, boAdditive, boLinearAdd, boColorDodge, boDivide, boNiceGlow, boSoftLight, boHardLight, | ||
Режимы смешивания яркости (имеют тенденцию увеличивать свечение) | ||
boGlow, boReflect, boOverlay, boDarkOverlay, boDarken, boMultiply, boColorBurn, | ||
Маскировка режимов наложения (имеет тенденцию уменьшать свечение) | ||
boDifference, boLinearDifference, boExclusion, boLinearExclusion, boSubtract, boLinearSubtract, boSubtractInverse, boLinearSubtractInverse, | ||
Режимы смешивания различий | ||
boNegation, boLinearNegation, | ||
Режимы наложения негатива | ||
boXor); | ||
Режим смешивания Xor. Он немного отличается от dm Xor, поскольку альфа-значение используется, как и в других режимах наложения. | ||
boGlowMask = boGlow; | ||
Псевдоним свечения, который выражает, что этот режим смешивания маскирует часть, где верхний слой черный | ||
boLinearMultiply = boMultiply; | ||
Псевдоним, потому что линейные или нелинейные режимы умножения идентичны | ||
boNonLinearOverlay = boDarkOverlay; | ||
Псевдоним, чтобы выразить это темное наложение - это просто наложение с гамма-коррекцией | ||
BlendOperationStr : array[TBlendOperation] of string | ||
Строковые константы для режимов наложения | ||
function StrToBlendOperation(str: string): TBlendOperation; | ||
Возвращает режим наложения, выраженный строкой | ||
TChannel = (cRed, cGreen, cBlue, cAlpha); | ||
Возможные каналы в растровом изображении с использованием любого цветового пространства RGBA | ||
TChannels = set of TChannel; | ||
Сочетание каналов | ||
TAlphaChannelPaletteOption = ( | ||
Определяет, как палитра обрабатывает альфа-канал | ||
acIgnore, | ||
Альфа-канал игнорируется. Считается, что альфа-канал хранится в другом месте. | ||
acTransparentEntry, | ||
Одна точка входа выделяется полностью прозрачным цветом | ||
acFullChannelInPalette); | ||
Альфа-канал полностью встроен в палитру, поэтому цвет определяется четырьмя каналами RGBA. | ||
TDitheringAlgorithm = ( | ||
Алгоритмы сглаживания, которые определяют, как обрабатывать цвета, которые не найдены в палитре | ||
daNearestNeighbor, | ||
Ближайший цвет должен использоваться вместо | ||
daFloydSteinberg); | ||
Можно использовать ближайший цвет, но можно использовать и другой цвет для компенсации ошибки, следуя алгоритму Флойда-Стейнберга | ||