Класс QPixelFormat
QPixelFormat — это класс для описания различных макетов пикселей в буферах графики. Подробнее...
| Заголовок: | #include <QPixelFormat> |
| qmake: | QT += gui |
| С тех пор: | 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(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. Кроме того, все цветовые каналы должны быть установлены в ноль, за исключением пятого цветового канала, который должен хранить значение 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, с другой стороны, обычно интерпретирует пиксели "по одному байту", т.е. unsigned byte.
QImage также имеют формат Format_RGBA8888 (и его производные), где пиксели интерпретируются как unsigned bytes. OpenGL имеет расширения, которые позволяют загружать буферы пикселей в формате unsigned integer.
На изображении выше показан пиксель ARGB в памяти, читаемый как целое беззнаковое число. Однако, если этот пиксель читался бы байт за байтом на системе little endian, первый байт содержал бы байт с B-каналом. Следующий байт — G-канал, затем R-канал и, наконец, A-канал. Это показывает, что в системах 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()
Создает null pixelformat. Этот формат сопоставляется с 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 бита.
firstSize secondSize thirdSize fourthSize fifthSize alphaSize — все они предназначены для представления размера канала. Каналы будут использоваться для различных целей в зависимости от colorModel. Для RGB первый размер будет представлять красный канал. Для 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 использует макро-пиксели. Вместо этого макет пикселей хранится как перечисление.
Связанные нечлены
QPixelFormat qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)
Функция-конструктор для создания формата Alpha. Формат маски может быть описан, передав 1 в channelSize. Также возможно определить очень точные форматы alpha, используя double для описания каждого пикселя, передав 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. Также возможно определить очень точные форматы grayscale, используя double для описания каждого пикселя, передав 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 описывает размер канала alpha, а его положение описывается alphaPosition. alphaUsage используется для определения, используется ли канал alpha или нет. Установка размера канала alpha в 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 описывает размер потенциального канала 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/archives/qt-5.11/qpixelformat.html