Spec-Zone.ru › Qt

Класс QPixelFormat

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

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

Типы публичного доступа

Перечисление 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 }

Открытые функции

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

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

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

См. также TypeInterpretation.

Документация типов членов

перечисление QPixelFormat::AlphaPosition

Этот тип перечисления используется для описания расположения канала альфа относительно каналов цвета.

Постоянная Значение Описание
QPixelFormat::AtBeginning 0 Канал альфа будет помещен перед каналами цвета. Пример: ARGB.
QPixelFormat::AtEnd 1 Канал альфа будет помещен позади каналов цвета. Пример: RGBA.

перечисление QPixelFormat::AlphaPremultiplied

Этот тип перечисления описывает логическое состояние, умножается ли канал альфа на каналы цвета или нет.

Постоянная Значение Описание
QPixelFormat::NotPremultiplied 0 Канал альфа не умножается на каналы цвета.
QPixelFormat::Premultiplied 1 Канал альфа умножается на каналы цвета.

перечисление QPixelFormat::AlphaUsage

Это перечисление описывает, используется ли канал альфа или нет. Иногда формат пикселей имеет размер для канала альфа, но сам формат пикселей на самом деле не использует канал альфа. Например, RGB32 — такой формат. Каналы RGB имеют по 8 бит каждый, и нет канала альфа. Но полный размер каждого пикселя составляет 32. Следовательно, размер канала альфа равен 8, но канал альфа игнорируется. Важно отметить, что в таких ситуациях расположение канала альфа имеет значение.

Постоянная Значение Описание
QPixelFormat::IgnoresAlpha 1 Канал альфа не используется.
QPixelFormat::UsesAlpha 0 Канал альфа используется.

перечисление QPixelFormat::ByteOrder

Это перечисление описывает порядок байтов в формате пикселей. Это перечисление в основном игнорируется, но имеет некоторые варианты использования для форматов YUV. Форматы BGR имеют собственную модель цвета и не должны описываться с помощью обратного порядка байтов формата RGB.

Постоянная Значение Описание
QPixelFormat::LittleEndian 0 Порядок байтов — little endian.
QPixelFormat::BigEndian 1 Порядок байтов — big endian.
QPixelFormat::CurrentSystemEndian 2 Это перечисление не будет сохранено, а в конструкторе преобразуется в перечисление порядка байтов, соответствующее текущей системе.

перечисление 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 Модель цвета отсутствует, используется только альфа.

перечисление 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

перечисление 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.2/qpixelformat.html

Spec-Zone.ru

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