Класс QPixelFormat
QPixelFormat — это класс для описания различных макетов пикселей в буферах графики. Подробнее...
| Заголовок: | #include <QPixelFormat> |
| qmake: | QT += gui |
| С версии: | Qt 5.4 |
Этот класс был представлен в Qt 5.4.
Публичные типы
| перечисление | AlphaPosition { Вначале, Вконце } |
| перечисление | AlphaPremultiplied { Непреумноженный, Преумноженный } |
| перечисление | AlphaUsage { ИгнорируетАльфу, ИспользуетАльфу } |
| перечисление | ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian } |
| перечисление | ColorModel { RGB, BGR, Indexed, Grayscale, ..., Alpha } |
| перечисление | TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint } |
| перечисление | YUVLayout { YUV444, YUV422, YUV411, YUV420P, ..., Y16 } |
Публичные функции
| 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() | |
| 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 = ...) |
Подробное описание
В Qt часто возникает необходимость представить макет пикселей в буфере графики. Внутренне QPixelFormat хранит все в структуре данных размером 64 бита. Это обеспечивает производительность, но также накладывает некоторые ограничения.
QPixelFormat может описывать 5 цветовых каналов и 1 альфа-канал, каждый может использовать 6 бит для описания размера цветового канала.
Положение альфа-канала описывается отдельным перечислением. Это позволяет описывать форматы QImage, такие как ARGB32, а также типичные форматы OpenGL, такие как RBGA8888.
Как должны считываться пиксели, определяется перечислением TypeInterpretation. Оно описывает, считываются ли цветовые значения байт за байтом, или пиксель должен считываться как целое число, а затем маскироваться.
Нет поддержки описания макропикселей YUV. Вместо этого был создан список форматов YUV. Когда QPixelFormat описывает формат YUV, значение bitsPerPixel выводится из перечисления YUVLayout. Кроме того, цветовые каналы должны быть равны нулю, за исключением пятого цветового канала, который должен хранить значение bitsPerPixel.
См. также TypeInterpretation.
Документация по типу члена
перечисление 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-битное беззнаковое число, а затем каждый канал маскируется, или если каждый байт читается как беззнаковое значение типа 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(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 бита.
firstSize, secondSize, thirdSize, fourthSize, fifthSize, alphaSize — все предназначены для представления размера канала. Каналы будут использоваться для разных целей в зависимости от colorModel. Для RGB firstSize будет представлять красный канал. В CMYK он будет представлять значение голубого канала.
alphaUsage указывает, используется ли альфа-канал.
alphaPosition — положение альфа-канала.
premultiplied указывает, умножен ли альфа-канал на цветовые каналы.
typeInterpretation — способ интерпретации пикселя.
byteOrder представляет порядок байтов пиксельного формата. По умолчанию устанавливается в CurrentSystemEndian.
subEnum используется для цветовых моделей, которые должны хранить дополнительную информацию, предоставляя дополнительный перечисление. Используется в YUV для хранения типа YUV. Значение по умолчанию равно 0.
QPixelFormat::QPixelFormat()
Создаёт нулевой пиксельный формат. Этот формат соответствует QImage::Format_Invalid.
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 использует макропиксели. Вместо этого расположение пикселей хранится как перечисление.
Связанные нечлены
QPixelFormat QPixelFormat::qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания формата Alpha. Формат маски можно описать, передав 1 в channelSize. Также можно определить очень точные форматы alpha, используя double для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в качестве typeInterpretation.
Эта функция была добавлена в Qt 5.5.
См. такжеQPixelFormat::TypeInterpretation.
QPixelFormat 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 QPixelFormat::qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания формата Градации серого. Монохромные форматы можно описать, передав 1 в channelSize. Также можно определить очень точные форматы градаций серого, используя double для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в качестве typeInterpretation.
См. такжеQPixelFormat::TypeInterpretation.
QPixelFormat QPixelFormat::qPixelFormatHsl(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания форматов HSL. Количество каналов будет 3 или 4 в зависимости от того, больше ли alphaSize 0.
channelSize установит значения hueSize, saturationSize и lightnessSize к одному значению.
alphaUsage, alphaPosition и typeInterpretation доступны с помощью аксессоров с одинаковыми именами.
QPixelFormat QPixelFormat::qPixelFormatHsv(uchar channelSize, uchar alphaSize = ..., QPixelFormat::AlphaUsage alphaUsage = ..., QPixelFormat::AlphaPosition alphaPosition = ..., QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания форматов HSV. Количество каналов будет 3 или 4 в зависимости от того, больше ли alphaSize 0.
channelSize установит значения hueSize, saturationSize и brightnessSize к одному значению.
alphaUsage, alphaPosition и typeInterpretation доступны с помощью аксессоров с одинаковыми именами.
QPixelFormat 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 описывает размер канала alpha, а его положение описано с помощью alphaPosition. alphaUsage используется для определения, используется ли канал alpha или нет. Установка размера канала alpha в 8 и alphaUsage в IgnoresAlpha — это то, как можно создать 32-битный формат, где каналы rgb используют только 24 бита в сочетании.
premultiplied и typeInterpretation доступны с помощью аксессоров с одинаковыми именами.
См. такжеQPixelFormat::TypeInterpretation.
QPixelFormat 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 описывает размер потенциального канала alpha, а его позиция описана с помощью alphaPosition. Каналы "первый", "второй" .. "пятый" все установлены в 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.13/qpixelformat.html