Класс QPixelFormat
QPixelFormat — это класс для описания различных макетов пикселей в графических буферах. Подробнее...
| Заголовок: | #include <QPixelFormat> |
| qmake: | QT += gui |
| С версии: | Qt 5.4 |
Открытые типы
| enum | AlphaPosition { AtBeginning, AtEnd } |
| enum | AlphaPremultiplied { NotPremultiplied, Premultiplied } |
| enum | AlphaUsage { IgnoresAlpha, UsesAlpha } |
| enum | ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian } |
| enum | ColorModel { RGB, BGR, Indexed, Grayscale, ..., Alpha } |
| enum | TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint } |
| enum | YUVLayout { YUV444, YUV422, YUV411, YUV420P, ..., Y16 } |
Открытые функции
| QPixelFormat() | |
| QPixelFormat(QPixelFormat::ColorModel colorModel, uchar firstSize, uchar secondSize, uchar thirdSize, uchar fourthSize, uchar fifthSize, uchar alphaSize, QPixelFormat::AlphaUsage alphaUsage, QPixelFormat::AlphaPosition alphaPosition, QPixelFormat::AlphaPremultiplied premultiplied, QPixelFormat::TypeInterpretation typeInterpretation, QPixelFormat::ByteOrder byteOrder = ..., uchar subEnum = ...) | |
| QPixelFormat::AlphaPosition | alphaPosition() const |
| uchar | alphaSize() const |
| QPixelFormat::AlphaUsage | alphaUsage() const |
| uchar | bitsPerPixel() const |
| uchar | blackSize() const |
| uchar | blueSize() const |
| uchar | brightnessSize() const |
| QPixelFormat::ByteOrder | byteOrder() const |
| uchar | channelCount() const |
| QPixelFormat::ColorModel | colorModel() const |
| uchar | cyanSize() const |
| uchar | greenSize() const |
| uchar | hueSize() const |
| uchar | lightnessSize() const |
| uchar | magentaSize() const |
| QPixelFormat::AlphaPremultiplied | premultiplied() const |
| uchar | redSize() const |
| uchar | saturationSize() const |
| QPixelFormat::TypeInterpretation | typeInterpretation() const |
| uchar | yellowSize() const |
| QPixelFormat::YUVLayout | yuvLayout() const |
Связанные внешние функции
| QPixelFormat | qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatCmyk(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatHsl(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatHsv(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatRgba(uchar redSize, uchar greenSize, uchar blueSize, uchar alphaSize, QPixelFormat::AlphaUsage alphaUsage, QPixelFormat::AlphaPosition alphaPosition, QPixelFormat::AlphaPremultiplied premultiplied = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...) |
| QPixelFormat | qPixelFormatYuv(QPixelFormat::YUVLayout yuvLayout, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::AlphaPremultiplied premultiplied = ..., QPixelFormat::TypeInterpretation typeInterpretation = ..., QPixelFormat::ByteOrder byteOrder = ...) |
Подробное описание
QPixelFormat — это класс для описания различных макетов пикселей в графических буферах.
В Qt часто возникает необходимость представлять макет пикселей в графическом буфере. Внутренне QPixelFormat хранит все в 64-битной структуре данных. Это обеспечивает производительность, но также имеет некоторые ограничения.
QPixelFormat может описывать 5 цветовых каналов и 1 альфа-канал, каждый из которых может использовать 6 бит для описания размера цветового канала.
Положение альфа-канала описывается отдельным перечислением. Это позволяет описывать форматы QImage, такие как ARGB32, а также описывать типичные форматы OpenGL, такие как RBGA8888.
Как должны считываться пиксели, определяется перечислением TypeInterpretation. Оно описывает, должны ли значения цвета считываться побайтово или пиксель должен считываться как целое число, а затем маскироваться.
Нет поддержки описания макропикселей YUV. Вместо этого был создан список форматов YUV. Когда QPixelFormat описывает формат YUV, значение bitsPerPixel вычисляется по перечислению YUV Layout. Кроме того, все цветовые каналы должны быть установлены в ноль, за исключением пятого цветового канала, который должен хранить значение bitsPerPixel.
См. также TypeInterpretation.
Описание типа члена
enum QPixelFormat::AlphaPosition
Этот перечисляемый тип используется для описания положения альфа-канала относительно цветовых каналов.
| Константа | Значение | Описание |
|---|---|---|
QPixelFormat::AtBeginning |
0 |
Альфа-канал будет помещён перед цветовыми каналами. Например, ARGB. |
QPixelFormat::AtEnd |
1 |
Альфа-канал будет помещён позади цветовых каналов. Например, RGBA. |
enum QPixelFormat::AlphaPremultiplied
Этот тип перечисления описывает состояние булевого типа, если альфа-канал умножается на цветовые каналы или нет.
| Константа | Значение | Описание |
|---|---|---|
QPixelFormat::NotPremultiplied |
0 |
Альфа-канал не умножается на цветовые каналы. |
QPixelFormat::Premultiplied |
1 |
Альфа-канал умножается на цветовые каналы. |
enum QPixelFormat::AlphaUsage
Это перечисление описывает, используется ли альфа-канал или нет. Иногда пиксельный формат будет иметь размер для альфа-канала, но пиксельный формат фактически не использует альфа-канал. Например, формат RGB32 — это такой формат. Каждое цветовое RGB-значение имеет 8 бит, и нет альфа-канала. Но полный размер каждого пикселя — 32. Следовательно, размер альфа-канала — 8, но альфа-канал игнорируется. Важно отметить, что в таких ситуациях расположение альфа-канала имеет значение.
| Константа | Значение | Описание |
|---|---|---|
QPixelFormat::IgnoresAlpha |
1 |
Альфа-канал не используется. |
QPixelFormat::UsesAlpha |
0 |
Альфа-канал используется. |
enum QPixelFormat::ByteOrder
Это перечисление описывает порядок байтов пиксельного формата. Это перечисление в основном игнорируется, но имеет некоторые варианты использования для форматов YUV. Форматы BGR имеют свою собственную модель цвета и не должны описываться с использованием противоположного порядка байтов в формате RGB.
| Константа | Значение | Описание |
|---|---|---|
QPixelFormat::LittleEndian |
0 |
Порядок байтов — little-endian. |
QPixelFormat::BigEndian |
1 |
Порядок байтов — big-endian. |
QPixelFormat::CurrentSystemEndian |
2 |
Это перечисление не будет сохраняться, но преобразуется в конструкторе в перечисление порядка байтов, соответствующее порядку байтов текущей системы. |
enum QPixelFormat::ColorModel
Этот тип перечисления используется для описания цветовой модели пиксельного формата. Альфа-канал был добавлен в версии 5.5.
| Константа | Значение | Описание |
|---|---|---|
QPixelFormat::RGB |
0 |
Цветовая модель — RGB. |
QPixelFormat::BGR |
1 |
Это логически противоположная версия RGB по порядку байтов. Однако для удобства использования она имеет свою собственную модель. |
QPixelFormat::Indexed |
2 |
Цветовая модель использует цветовую палитру. |
QPixelFormat::Grayscale |
3 |
Цветовая модель — Градации серого. |
QPixelFormat::CMYK |
4 |
Цветовая модель — CMYK. |
QPixelFormat::HSL |
5 |
Цветовая модель — HSL. |
QPixelFormat::HSV |
6 |
Цветовая модель — HSV. |
QPixelFormat::YUV |
7 |
Цветовая модель — YUV. |
QPixelFormat::Alpha |
8 |
Цветовая модель отсутствует, используется только альфа-канал. |
enum QPixelFormat::TypeInterpretation
Это перечисление описывает, как интерпретируется каждый пиксель. Читается ли пиксель как целое 32-битное беззнаковое число, а затем каждый канал маскируется, или каждое байтовое значение читается как беззнаковое значение типа unsigned char. Обычно форматы QImage интерпретируют один пиксель как беззнаковое целое число, а затем цветовые каналы маскируются. OpenGL, с другой стороны, обычно интерпретирует пиксели «по одному байту», то есть беззнаковые байты.
QImage также имеют формат Format_RGBA8888 (и его производные), где пиксели интерпретируются как беззнаковые байты. OpenGL имеет расширения, которые позволяют загружать буферы пикселей в формате беззнакового целого числа.
На рисунке показан пиксель ARGB в памяти, читаемый как беззнаковое целое число. Однако, если этот пиксель был прочитан байт за байтом в системе little-endian, первый байт содержал бы байт, содержащий синий канал. Следующий байт — зеленый канал, затем красный и, наконец, альфа-канал. Это показывает, что в системах little-endian способ интерпретации каждого пикселя имеет значение для целочисленных форматов. В системах big-endian это не так.
| Константа | Значение |
|---|---|
QPixelFormat::UnsignedInteger |
0 |
QPixelFormat::UnsignedShort |
1 |
QPixelFormat::UnsignedByte |
2 |
QPixelFormat::FloatingPoint |
3 |
enum QPixelFormat::YUVLayout
YUV не представлен описанием размера цветовых каналов. Это связано с тем, что YUV часто использует макропиксели, делая понятие отдельных цветовых каналов недействительным. Вместо этого различные макеты YUV описываются с помощью этого перечисления.
| Константа | Значение |
|---|---|
QPixelFormat::YUV444 |
0 |
QPixelFormat::YUV422 |
1 |
QPixelFormat::YUV411 |
2 |
QPixelFormat::YUV420P |
3 |
QPixelFormat::YUV420SP |
4 |
QPixelFormat::YV12 |
5 |
QPixelFormat::UYVY |
6 |
QPixelFormat::YUYV |
7 |
QPixelFormat::NV12 |
8 |
QPixelFormat::NV21 |
9 |
QPixelFormat::IMC1 |
10 |
QPixelFormat::IMC2 |
11 |
QPixelFormat::IMC3 |
12 |
QPixelFormat::IMC4 |
13 |
QPixelFormat::Y8 |
14 |
QPixelFormat::Y16 |
15 |
Документация по членам функции
QPixelFormat::QPixelFormat()
Создаёт пустой пиксельный формат. Этот формат сопоставляется с QImage::Format_Invalid.
QPixelFormat::QPixelFormat(QPixelFormat::ColorModel colorModel, uchar firstSize, uchar secondSize, uchar thirdSize, uchar fourthSize, uchar fifthSize, uchar alphaSize, QPixelFormat::AlphaUsage alphaUsage, QPixelFormat::AlphaPosition alphaPosition, QPixelFormat::AlphaPremultiplied premultiplied, QPixelFormat::TypeInterpretation typeInterpretation, QPixelFormat::ByteOrder byteOrder = ..., uchar subEnum = ...)
Создаёт QPixelFormat, который назначает свои данные атрибутам. colorModel будет помещён в буфер длиной 4 бита.
END_OF_DOCUMENT_MARKERfirstSize secondSize thirdSize fourthSize fifthSize alphaSize все предназначены для представления размера канала. Канал будет использоваться для различных целей в зависимости от colorModel. Для RGB firstSize будет представлять красный канал. В CMYK он будет представлять значение канала голубого.
alphaUsage указывает, используется ли альфа-канал.
alphaPosition — это позиция альфа-канала.
premultiplied указывает, умножен ли альфа-канал на цветовые каналы.
typeInterpretation — способ интерпретации пикселя.
byteOrder представляет порядок байтов пиксельного формата. По умолчанию используется CurrentSystemEndian.
subEnum используется для цветовых моделей, которые должны хранить дополнительную информацию, используя дополнительный перечисление. Это используется YUV для хранения типа YUV. Значение по умолчанию — 0.
QPixelFormat::AlphaPosition QPixelFormat::alphaPosition() const
Функция-аксессор для alphaPosition.
uchar QPixelFormat::alphaSize() const
Функция-аксессор для размера альфа-канала.
QPixelFormat::AlphaUsage QPixelFormat::alphaUsage() const
Функция-аксессор для alphaUsage.
uchar QPixelFormat::bitsPerPixel() const
Функция-аксессор для количества битов на пиксель. Эта функция возвращает сумму цветовых каналов + размер альфа-канала.
uchar QPixelFormat::blackSize() const
Функция-аксессор для черного/ключевого цветового канала.
uchar QPixelFormat::blueSize() const
Функция-аксессор для размера синего цветового канала.
uchar QPixelFormat::brightnessSize() const
Функция-аксессор для размера канала яркости.
QPixelFormat::ByteOrder QPixelFormat::byteOrder() const
Порядок байтов почти всегда устанавливается в соответствии с порядком байтов текущей системы. Однако это может быть полезно для описания некоторых YUV форматов. Эта функция никогда не должна возвращать QPixelFormat::CurrentSystemEndian, так как это значение преобразуется в значение порядка байтов в конструкторе.
uchar QPixelFormat::channelCount() const
Функция-аксессор для получения channelCount. Количество каналов определяется по цветовым каналам с размером > 0 и если размер альфа-канала > 0.
QPixelFormat::ColorModel QPixelFormat::colorModel() const
Функция-аксессор для получения colorModel.
uchar QPixelFormat::cyanSize() const
Функция-аксессор для канала голубого цвета.
uchar QPixelFormat::greenSize() const
Функция-аксессор для размера зеленого цветового канала.
uchar QPixelFormat::hueSize() const
Функция-аксессор для размера канала оттенка.
uchar QPixelFormat::lightnessSize() const
Функция-аксессор для размера канала светлоты.
uchar QPixelFormat::magentaSize() const
Функция-аксессор для канала пурпурного цвета.
QPixelFormat::AlphaPremultiplied QPixelFormat::premultiplied() const
Функция-аксессор для перечисления AlphaPremultiplied. Указывает, умножен ли альфа-канал на цветовые каналы.
uchar QPixelFormat::redSize() const
Функция-аксессор для размера красного цветового канала.
uchar QPixelFormat::saturationSize() const
Функция-аксессор для размера канала насыщенности.
QPixelFormat::TypeInterpretation QPixelFormat::typeInterpretation() const
Функция-аксессор для типа представления цветового канала или пикселя.
См. также TypeInterpretation.
uchar QPixelFormat::yellowSize() const
Функция-аксессор для канала желтого цвета.
QPixelFormat::YUVLayout QPixelFormat::yuvLayout() const
Функция-аксессор для YUVLayout. Трудно описать цветовые каналы формата YUV, поскольку модель YUV использует макропиксели. Вместо этого макет пикселей хранится в виде перечисления.
END_OF_DOCUMENT_MARKERСвязанные нечлены
QPixelFormat qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания формата Alpha. Формат маски может быть описан, передав 1 в channelSize. Также возможно определить очень точные форматы альфа-канала, используя числа с плавающей точкой для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в typeInterpretation.
Эта функция была добавлена в Qt 5.5.
См. также QPixelFormat::TypeInterpretation.
QPixelFormat qPixelFormatCmyk(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания форматов CMYK. Количество каналов будет 4 или 5 в зависимости от того, больше ли alphaSize нуля. Каналы цвета CMYK будут все установлены в значение channelSize.
alphaUsage, alphaPosition и typeInterpretation доступны через соответствующие методы-аксессоры.
См. также QPixelFormat::TypeInterpretation.
QPixelFormat qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания формата Grayscale. Монохромные форматы могут быть описаны, передав 1 в channelSize. Также возможно определить очень точные форматы градаций серого, используя числа с плавающей точкой для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в typeInterpretation.
См. также QPixelFormat::TypeInterpretation.
QPixelFormat qPixelFormatHsl(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания форматов HSL. Количество каналов будет 3 или 4 в зависимости от того, больше ли alphaSize нуля.
channelSize задаст значения hueSize, saturationSize и lightnessSize одинаковыми.
alphaUsage, alphaPosition и typeInterpretation доступны через соответствующие методы-аксессоры.
QPixelFormat qPixelFormatHsv(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания форматов HSV. Количество каналов будет 3 или 4 в зависимости от того, больше ли alphaSize нуля.
channelSize задаст значения hueSize, saturationSize и brightnessSize одинаковыми.
alphaUsage, alphaPosition и typeInterpretation доступны через соответствующие методы-аксессоры.
QPixelFormat qPixelFormatRgba(uchar redSize, uchar greenSize, uchar blueSize, uchar alphaSize, QPixelFormat::AlphaUsage alphaUsage, QPixelFormat::AlphaPosition alphaPosition, QPixelFormat::AlphaPremultiplied premultiplied = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор, создающая формат RGB. redSize, greenSize, blueSize представляют размер каждого канала цвета. alphaSize описывает размер альфа-канала, а его положение описывается alphaPosition. alphaUsage используется для определения того, используется ли альфа-канал. Установка размера альфа-канала в 8 и alphaUsage в IgnoresAlpha позволяет создать 32-битный формат, где каналы RGB используют только 24 бита вместе.
premultiplied и typeInterpretation доступны через соответствующие методы-аксессоры.
См. также QPixelFormat::TypeInterpretation.
QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout yuvLayout, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::AlphaPremultiplied premultiplied = ..., QPixelFormat::TypeInterpretation typeInterpretation = ..., QPixelFormat::ByteOrder byteOrder = ...)
Функция-конструктор для создания QPixelFormat, описывающего формат YUV с yuvLayout. alphaSize описывает размер потенциального альфа-канала, а его положение описывается alphaPosition. Каналы "first", "second" .. "fifth" все установлены в 0. alphaUsage, premultiplied, typeInterpretation и byteOrder будут работать как и в других форматах.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qpixelformat.html