Spec-Zone.ru › Qt 6.0

Класс QPixelFormat

Класс QPixelFormat предназначен для описания различных схем расположения пикселей в буферах графики. Подробнее...

Заголовок: #include <QPixelFormat>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
С тех пор: Qt 5.4
  • Список всех членов, включая унаследованные

Типы public

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

Нет поддержки описания макропикселей 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

Это перечисление описывает, используется ли альфа-канал или нет. Иногда у pixelformat есть размер для альфа-канала, но сам формат на самом деле не использует альфа-канал. Например, 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

Этот тип перечисления используется для описания цветовой модели pixelformat. Альфа был добавлен в версии 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 (и его производные), где пиксели интерпретируются как беззнаковые байты. 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 бита.

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::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 использует макропиксели. Вместо этого макет пикселей хранится как перечисление.

Связанные нечлены

[since 5.5] QPixelFormat qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

Функция-конструктор для создания формата Alpha. Формат маски может быть описан, передав 1 в channelSize. Также возможно определить очень точные форматы альфа-канала, используя 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 нуля. Каналы цвета CMYK будут все установлены в значение channelSize.

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

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

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

Функция-конструктор для создания формата Grayscale. Монохромные форматы могут быть описаны, передав 1 в channelSize. Также возможно определить очень точные форматы оттенков серого, используя 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. Каналы "первый", "второй" и т. д. до "пятого" установлены в 0. alphaUsage, premultiplied, typeInterpretation и byteOrder работают так же, как и для других форматов.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qpixelformat.html

Spec-Zone.ru

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