QPixelFormat Class

QPixelFormat は、グラフィックスバッファ内のさまざまなピクセルレイアウトを記述するためのクラスです。詳細...

Header: #include <QPixelFormat>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

パブリック型

enum AlphaPosition { AtBeginning, AtEnd }
enum AlphaPremultiplied { NotPremultiplied, Premultiplied }
enum AlphaUsage { IgnoresAlpha, UsesAlpha }
enum ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian }
enum ColorModel { RGB, BGR, Indexed, Grayscale, CMYK, …, Alpha }
enum TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint }
enum YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, …, 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 = CurrentSystemEndian, uchar subEnum = 0)
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ビットを使用することができます。

アルファ・チャンネルの位置は別の列挙型で記述する。これは、ARGB32のようなQImage 、RBGA8888のような典型的なOpenGLフォーマットを記述できるようにするためです。

ピクセルがどのように読み込まれるかは、TypeInterpretation enumによって決定される。これは、色値がバイトごとに読み込まれるのか、またはピクセルが完全なintとして読み込まれ、その後マスクされるのかを記述します。

YUVのマクロピクセルを記述するためのサポートはありません。その代わりにYUVフォーマットのリストが作られています。QPixelFormat が YUV フォーマットを記述している場合、bitsPerPixel の値は YUV Layout enum によって推測されます。また、色チャンネルは、bitsPerPixel の値を格納する5番目の色チャンネルを除いて、すべてゼロに設定する必要があります。

TypeInterpretationも参照のこと

メンバ型ドキュメント

enum QPixelFormat::AlphaPosition

この enum 型は、カラーチャンネルに対するアルファチャンネルの相対的な位置を記述するために使用される。

定数説明
QPixelFormat::AtBeginning0アルファチャンネルはカラーチャンネルの前に置かれます。例えば ARGB。
QPixelFormat::AtEnd1アルファチャンネルは色チャンネルの後ろに置かれます。例:RGBA。

enum QPixelFormat::AlphaPremultiplied

この列挙型は、アルファチャンネルが色チャンネルに乗算されるかどうかのブール状態を記述します。

定数説明
QPixelFormat::NotPremultiplied0アルファチャンネルはカラーチャンネルに乗算されない。
QPixelFormat::Premultiplied1アルファチャンネルはカラーチャンネルに乗算される。

enum QPixelFormat::AlphaUsage

この列挙型はアルファチャンネルを使用するかどうかを記述する。pixelformatはアルファチャンネル用のサイズを持っているが、ピクセルフォーマットは実際にはアルファチャンネルを使用しないことがある。例えばRGB32はそのようなフォーマットである。RGBチャンネルはそれぞれ8ビットで、アルファチャンネルはありません。しかし、各ピクセルの完全なサイズは32です。したがってアルファ・チャンネルのサイズは8ですが、アルファ・チャンネルは無視されます。このような状況では、アルファチャンネルの位置が重要であることに注意することが重要です。

定数説明
QPixelFormat::IgnoresAlpha1アルファチャンネルは使用されません。
QPixelFormat::UsesAlpha0アルファチャンネルが使用される。

enum QPixelFormat::ByteOrder

この enum はピクセルフォーマットの ByteOrder を記述する。この enum はほとんど無視されるが、YUV フォーマットでは使用例がある。BGR フォーマットは、独自のカラーモデルを持っており、RGB フォーマットの逆のエンディアンを使用して記述するべきではありません。

定数説明
QPixelFormat::LittleEndian0バイトオーダーはリトルエンディアン。
QPixelFormat::BigEndian1バイトオーダーはビッグエンディアン。
QPixelFormat::CurrentSystemEndian2この列挙型は保存されず、コンストラクタで現在のシステムの列挙型に一致するエンディアン列挙型に変換されます。

enum QPixelFormat::ColorModel

この enum 型は pixelformat のカラーモデルを記述するために使用される。Alpha は 5.5 で追加されました。

定数説明
QPixelFormat::RGB0カラーモデルはRGBです。
QPixelFormat::BGR1これは論理的にはRGBの逆エンディアン版です。しかし、使いやすくするために独自のモデルを持っています。
QPixelFormat::Indexed2カラーモデルはカラーパレットを使用します。
QPixelFormat::Grayscale3カラーモデルはグレースケールです。
QPixelFormat::CMYK4カラーモデルはCMYKです。
QPixelFormat::HSL5カラーモデルは HSL です。
QPixelFormat::HSV6カラーモデルは HSV。
QPixelFormat::YUV7カラーモデルはYUVです。
QPixelFormat::Alpha8カラーモデルはなく、アルファのみが使用されます。

enum QPixelFormat::TypeInterpretation

この列挙型は、各ピクセルがどのように解釈されるかを記述する。ピクセルを完全な32ビットの符号なし整数として読み込んでから各チャンネルをマスクする場合、または各バイトを符号なしchar値として読み込む場合です。通常、QImage フォーマットは、1 つのピクセルを符号なし整数として解釈し、カラー・チャンネルをマスクします。一方、OpenGLは通常、ピクセルを「1バイトずつ」、つまり符号なしバイトとして解釈します。

QImage また、Format_RGBA8888(およびその派生)というフォーマットもあり、そこではピクセルは符号なしバイトとして解釈されます。OpenGLには拡張機能があり、符号なし整数形式でピクセルバッファをアップロードすることができます。

An unsigned integer ARGB32 pixel.

上の画像は、メモリ上のARGBピクセルを符号なし整数として読み込んだものです。しかし、このピクセルをリトルエンディアン・システムでバイトごとに読み込むと、最初のバイトはBチャンネルを含むバイトになります。次のバイトはGチャンネルで、次にRチャンネル、最後にAチャンネルとなる。これは、リトルエンディアン・システムでは、各ピクセルがどのように解釈されるかが整数フォーマットにとって重要であることを示している。ビッグエンディアンシステムではそうではありません。

定数
QPixelFormat::UnsignedInteger0
QPixelFormat::UnsignedShort1
QPixelFormat::UnsignedByte2
QPixelFormat::FloatingPoint3

enum QPixelFormat::YUVLayout

YUVは、色チャンネルの大きさを記述することによって表現されません。これは、YUVがマクロピクセルを使用することが多く、個別のカラーチャンネルという概念が無効になるからです。その代わりに、異なるYUVレイアウトはこの列挙型で記述されます。

定数
QPixelFormat::YUV4440
QPixelFormat::YUV4221
QPixelFormat::YUV4112
QPixelFormat::YUV420P3
QPixelFormat::YUV420SP4
QPixelFormat::YV125
QPixelFormat::UYVY6
QPixelFormat::YUYV7
QPixelFormat::NV128
QPixelFormat::NV219
QPixelFormat::IMC110
QPixelFormat::IMC211
QPixelFormat::IMC312
QPixelFormat::IMC413
QPixelFormat::Y814
QPixelFormat::Y1615

メンバ関数 ドキュメント

[constexpr noexcept] QPixelFormat::QPixelFormat()

null pixelformatを作成します。このフォーマットはQImage::Format_Invalid にマップされます。

[constexpr noexcept] 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 は pixelformat のエンディアンを表します。デフォルトは です。CurrentSystemEndian

subEnum は、colorModels に enum を追加して余分な情報を格納する必要がある場合に使用します。これは YUV が YUV タイプを格納するために使用します。デフォルト値は 0 です。

[constexpr noexcept] QPixelFormat::AlphaPosition QPixelFormat::alphaPosition() const

alphaPosition のアクセサ関数です。

[constexpr noexcept] uchar QPixelFormat::alphaSize() const

alphaPosition のアクセサ関数です。

[constexpr noexcept] QPixelFormat::AlphaUsage QPixelFormat::alphaUsage() const

alphaUsageのアクセサ関数。

[constexpr noexcept] uchar QPixelFormat::bitsPerPixel() const

ピクセルあたりの使用ビット数に関するアクセサ関数です。この関数は、カラーチャンネルの合計とアルファチャンネルのサイズを返します。

[constexpr noexcept] uchar QPixelFormat::blackSize() const

黒/キーカラーチャンネルに関するアクセサ関数です。

[constexpr noexcept] uchar QPixelFormat::blueSize() const

青色チャンネルのサイズに関するアクセサ関数。

[constexpr noexcept] uchar QPixelFormat::brightnessSize() const

輝度チャンネルのサイズに関するアクセサ関数。

[constexpr noexcept] QPixelFormat::ByteOrder QPixelFormat::byteOrder() const

バイトオーダーは、ほとんどの場合、現在のシステムのバイトオーダーが設定される。しかし、いくつかのYUVフォーマットを記述するのに便利なこともある。この値はコンストラクタ内でエンディアン値に変換されるため、この関数は決してQPixelFormat::CurrentSystemEndian を返してはならない。

[constexpr noexcept] uchar QPixelFormat::channelCount() const

channelCount を取得するためのアクセサ関数です。チャンネルカウントは、サイズが > 0 のカラーチャンネルと、アルファチャンネルのサイズが > 0 の場合に推論されます。

[constexpr noexcept] QPixelFormat::ColorModel QPixelFormat::colorModel() const

colorModel を取得するアクセサ関数です。

[constexpr noexcept] uchar QPixelFormat::cyanSize() const

シアン色チャンネル用のアクセサ関数です。

[constexpr noexcept] uchar QPixelFormat::greenSize() const

緑色色チャンネルのサイズに関するアクセサ関数

[constexpr noexcept] uchar QPixelFormat::hueSize() const

色相チャネルのサイズに関するアクセサ関数

[constexpr noexcept] uchar QPixelFormat::lightnessSize() const

明度チャンネルサイズに関するアクセサ関数

[constexpr noexcept] uchar QPixelFormat::magentaSize() const

メガエンタ色チャンネルに関するアクセサ関数。

[constexpr noexcept] QPixelFormat::AlphaPremultiplied QPixelFormat::premultiplied() const

AlphaPremultiplied enum のアクセサ関数。アルファチャンネルが色チャンネルに乗算されるかどうかを示す。

[constexpr noexcept] uchar QPixelFormat::redSize() const

赤の色チャンネルの大きさのアクセサ関数。

[constexpr noexcept] uchar QPixelFormat::saturationSize() const

彩度チャンネルサイズのアクセサ関数。

[constexpr noexcept] QPixelFormat::TypeInterpretation QPixelFormat::typeInterpretation() const

色チャンネルまたはピクセルの型表現に関するアクセサ関数。

TypeInterpretationも参照

[constexpr noexcept] uchar QPixelFormat::yellowSize() const

黄色色チャンネルに関するアクセサ関数。

[constexpr noexcept] QPixelFormat::YUVLayout QPixelFormat::yuvLayout() const

YUVLayout 。 YUV カラーモデルはマクロピクセルを使うので、 YUV ピクセルフォーマットのカラーチャンネルを記述するのは難しい。その代わりに、ピクセルのレイアウトはenumとして格納される。

関連する非会員

[constexpr noexcept] QPixelFormat qPixelFormatAlpha(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

アルファフォーマットを作成するコンストラクタ関数。マスクフォーマットは、channelSize に 1 を渡すことで記述できます。また、channelSize に 8 を、FloatingPointtypeInterpretation を渡すことで、各ピクセルを記述するために倍数を使用して非常に正確なアルファフォーマットを定義することも可能です。

QPixelFormat::TypeInterpretationも参照してください

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

CMYK フォーマットを作成するコンストラクタ関数。チャンネル数は、alphaSize がゼロより大きいかどうかに応じて 4 か 5 になります。CMYK カラーチャンネルはすべてchannelSize の値に設定されます。

alphaUsage alphaPositiontypeInterpretation はすべて、同じ名前のアクセサでアクセスできます。

QPixelFormat::TypeInterpretationも参照

[constexpr noexcept] QPixelFormat qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)

グレースケール形式を作成するコンストラクタ関数。モノクロフォーマットは、channelSize に 1 を渡すことで記述できます。また、channelSize に 8 を、FloatingPointtypeInterpretation を渡すことで、各ピクセルを記述するために倍数を使用して非常に正確なグレースケールフォーマットを定義することも可能です。

QPixelFormat::TypeInterpretationも参照してください

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

HSL フォーマットを作成するコンストラクタ関数。alphaSize が 0 より大きいかどうかによって、チャンネル数は 3 か 4 になります。

channelSize は と を同じ値に設定します。hueSize saturationSize lightnessSize

alphaUsage alphaPositiontypeInterpretation はすべて同じ名前のアクセサでアクセスできます。

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

HSVフォーマットを作成するコンストラクタ関数。チャンネル数は、alphaSize が 0 より大きいかどうかに応じて 3 または 4 になります。

channelSize は と を同じ値に設定します。hueSize saturationSize brightnessSize

alphaUsage alphaPositiontypeInterpretation はすべて同じ名前のアクセサでアクセスできます。

[constexpr noexcept] 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)

redSize greenSize blueSize は各色チャンネルのサイズを表します。alphaSize はアルファチャンネルのサイズを表し、その位置はalphaPosition で表されます。alphaUsage はアルファチャンネルを使用するかどうかを決定するために使用されます。アルファチャンネルサイズを8に設定し、alphaUsageIgnoresAlpha に設定することで、rgbチャンネルが24ビットしか使用しない32ビットフォーマットを作成することができます。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)

yuvLayout でYUVフォーマットを記述したQPixelFormat を作成するコンストラクタ関数。alphaSize で潜在的なアルファチャンネルのサイズを記述し、alphaPosition でその位置を記述する。alphaUsage premultiplied typeInterpretation byteOrder は、他のフォーマットと同様に動作します。

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。