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::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
この enum はピクセルフォーマットの ByteOrder を記述する。この enum はほとんど無視されるが、YUV フォーマットでは使用例がある。BGR フォーマットは、独自のカラーモデルを持っており、RGB フォーマットの逆のエンディアンを使用して記述するべきではありません。
定数 | 値 | 説明 |
---|---|---|
QPixelFormat::LittleEndian | 0 | バイトオーダーはリトルエンディアン。 |
QPixelFormat::BigEndian | 1 | バイトオーダーはビッグエンディアン。 |
QPixelFormat::CurrentSystemEndian | 2 | この列挙型は保存されず、コンストラクタで現在のシステムの列挙型に一致するエンディアン列挙型に変換されます。 |
enum QPixelFormat::ColorModel
この enum 型は pixelformat のカラーモデルを記述するために使用される。Alpha は 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 フォーマットは、1 つのピクセルを符号なし整数として解釈し、カラー・チャンネルをマスクします。一方、OpenGLは通常、ピクセルを「1バイトずつ」、つまり符号なしバイトとして解釈します。
QImage また、Format_RGBA8888(およびその派生)というフォーマットもあり、そこではピクセルは符号なしバイトとして解釈されます。OpenGLには拡張機能があり、符号なし整数形式でピクセルバッファをアップロードすることができます。
上の画像は、メモリ上のARGBピクセルを符号なし整数として読み込んだものです。しかし、このピクセルをリトルエンディアン・システムでバイトごとに読み込むと、最初のバイトはBチャンネルを含むバイトになります。次のバイトはGチャンネルで、次にRチャンネル、最後にAチャンネルとなる。これは、リトルエンディアン・システムでは、各ピクセルがどのように解釈されるかが整数フォーマットにとって重要であることを示している。ビッグエンディアンシステムではそうではありません。
定数 | 値 |
---|---|
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 |
メンバ関数 ドキュメント
[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 を、FloatingPoint にtypeInterpretation を渡すことで、各ピクセルを記述するために倍数を使用して非常に正確なアルファフォーマットを定義することも可能です。
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 alphaPosition とtypeInterpretation はすべて、同じ名前のアクセサでアクセスできます。
QPixelFormat::TypeInterpretationも参照 。
[constexpr noexcept]
QPixelFormat qPixelFormatGrayscale(uchar channelSize, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger)
グレースケール形式を作成するコンストラクタ関数。モノクロフォーマットは、channelSize に 1 を渡すことで記述できます。また、channelSize に 8 を、FloatingPoint にtypeInterpretation を渡すことで、各ピクセルを記述するために倍数を使用して非常に正確なグレースケールフォーマットを定義することも可能です。
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 alphaPosition とtypeInterpretation はすべて同じ名前のアクセサでアクセスできます。
[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 alphaPosition とtypeInterpretation はすべて同じ名前のアクセサでアクセスできます。
[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に設定し、alphaUsage をIgnoresAlpha に設定することで、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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。