Spec-Zone.ru › Qt 5.12

Класс 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 имеет расширения, которые позволяют загружать буферы пикселей в формате беззнакового целого числа.

An unsigned integer ARGB32 pixel.

На рисунке показан пиксель 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_MARKER

firstSize 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

Spec-Zone.ru

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