Spec-Zone.ru › Qt 5.15

Класс 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, CMYK, …, Alpha }
Перечисление TypeInterpretation { Неподписанное целое, Неподписанное короткое, Неподписанное байт, Число с плавающей запятой }
Перечисление YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, …, 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 = CurrentSystemEndian, uchar subEnum = 0)
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::UnsignedInteger)
QPixelFormat qPixelFormatCmyk(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)
QPixelFormat qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)
QPixelFormat qPixelFormatHsl(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint)
QPixelFormat qPixelFormatHsv(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint)
QPixelFormat qPixelFormatRgba(uchar redSize, uchar greenSize, uchar blueSize, uchar alphaSize, QPixelFormat::AlphaUsage alphaUsage, QPixelFormat::AlphaPosition alphaPosition, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)
QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout yuvLayout, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedByte, QPixelFormat::ByteOrder byteOrder = QPixelFormat::LittleEndian)

Подробное описание

В Qt часто возникает необходимость представить расположение пикселей в буфере графики. Внутри QPixelFormat всё хранится в 64-битной структуре данных. Это обеспечивает производительность, но также накладывает некоторые ограничения.

QPixelFormat может описывать 5 цветовых каналов и 1 альфа-канал, каждый из которых может использовать 6 бит для описания размера цветового канала.

Положение альфа-канала описывается отдельным перечислением. Это необходимо для описания форматов QImage, таких как ARGB32, а также типичных форматов OpenGL, таких как RBGA8888.

Способ чтения пикселей определяется перечислением TypeInterpretation. Оно описывает, читаются ли значения цветов байт за байтом или пиксель читается как целый int, а затем маскируется.

Нет поддержки описания макропикселей YUV. Вместо этого был создан список форматов YUV. Когда QPixelFormat описывает формат YUV, значение bitsPerPixel выводится из перечисления YUVLayout. Также цветовые каналы должны быть все равны нулю, за исключением пятого цветового канала, который должен хранить значение 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 имеет расширения, которые позволяют загружать буферы пикселей в формате беззнакового целого числа.

An unsigned integer ARGB32 pixel.

На рисунке показан пиксель 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(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 = CurrentSystemEndian, uchar subEnum = 0)

Создаёт 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 qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

Функция-конструктор для создания формата Alpha. Формат маски можно описать, передав 1 в channelSize. Также возможно определить очень точные форматы alpha, используя double для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в качестве typeInterpretation.

Эта функция была добавлена в Qt 5.5.

См. также QPixelFormat::TypeInterpretation.

QPixelFormat qPixelFormatCmyk(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

Функция-конструктор для создания форматов CMYK. Количество каналов будет 4 или 5 в зависимости от того, больше ли alphaSize нуля.

alphaUsage, alphaPosition и typeInterpretation доступны через методы с теми же именами.

См. также QPixelFormat::TypeInterpretation.

QPixelFormat qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

Функция-конструктор для создания формата Grayscale. Монохромные форматы можно описать, передав 1 в channelSize. Также возможно определить очень точные форматы grayscale, используя double для описания каждого пикселя, передав 8 в channelSize и FloatingPoint в качестве typeInterpretation.

См. также QPixelFormat::TypeInterpretation.

QPixelFormat qPixelFormatHsl(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint)

Функция-конструктор для создания форматов HSL. Количество каналов будет 3 или 4 в зависимости от того, больше ли alphaSize нуля.

channelSize задаст значения hueSize, saturationSize и lightnessSize одинаковыми.

alphaUsage, alphaPosition и typeInterpretation доступны через методы с теми же именами.

QPixelFormat qPixelFormatHsv(uchar channelSize, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint)

Функция-конструктор для создания форматов 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::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

Функция-конструктор, создающая формат RGB. redSize, greenSize, blueSize задают размер каждого цветового канала. alphaSize описывает размер альфа-канала, а его позиция задаётся alphaPosition. alphaUsage используется для определения того, используется ли альфа-канал. Установка размера альфа-канала в 8 и alphaUsage в IgnoresAlpha — способ создания 32-битного формата, где каналы RGB используют только 24 бита вместе.

premultiplied и typeInterpretation доступны через методы с теми же именами.

См. также QPixelFormat::TypeInterpretation.

QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout yuvLayout, uchar alphaSize = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedByte, QPixelFormat::ByteOrder byteOrder = QPixelFormat::LittleEndian)

Функция-конструктор для создания 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.15/qpixelformat.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API