Spec-Zone.ru › Qt 5.14

Класс QPixelFormat

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

Заголовок: #include <QPixelFormat>
qmake: QT += gui
С момента: Qt 5.4

Этот класс был представлен в Qt 5.4.

  • Список всех членов, включая унаследованные

Типы public

перечисление AlphaPosition { ВНачале, ВКонце }
перечисление AlphaPremultiplied { БезПреумножения, СПреумножением }
перечисление AlphaUsage { ИгнорируетАльфа, ИспользуетАльфа }
перечисление ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian }
перечисление ColorModel { RGB, BGR, Indexed, Grayscale, CMYK, …, Alpha }
перечисление TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint }
перечисление YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, …, Y16 }

Public Функции

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

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

Пиксель ARGB32 без знака.

На изображении выше показан пиксель ARGB в памяти, читаемый как целое без знака. Однако, если этот пиксель был прочитан байт за байтом на системе с малой эндианностью, первый байт содержал бы байт с B-каналом. Следующий байт представлял бы G-канал, затем R-канал, и, наконец, A-канал. Это показывает, что на системах с малой эндианностью важно, как интерпретируется каждый пиксель для целочисленных форматов. На системах с большой эндианностью этого нет.

Константа Значение
QPixelFormat::UnsignedInteger 0
QPixelFormat::UnsignedShort 1
QPixelFormat::UnsignedByte 2
QPixelFormat::FloatingPoint 3

перечисление 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 — позиция альфа-канала.

END_OF_DOCUMENT_MARKER

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

END_OF_DOCUMENT_MARKER

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

QPixelFormat qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = ...)

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

Spec-Zone.ru

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