C
Qul::Image Struct
struct Qul::Imageピクセルデータに直接アクセスできる画像表現。詳細...
| Header: | #include <qul/image.h> |
| Since: | Qt Quick Ultralite 1.5 |
パブリック関数
| Image() | |
| Image(int width, int height, Qul::PixelFormat pixelFormat) | |
| Image(uint8_t *bits, int width, int height, Qul::PixelFormat pixelFormat, int bytesPerLine = -1, Qul::Image::CleanupFunction cleanupFunction = nullptr) | |
| void | beginWrite() |
| uint8_t * | bits() |
| const uint8_t * | bits() const |
| int | bitsPerPixel() const |
| int | bytesPerLine() const |
| void | endWrite() |
| int | height() const |
| Qul::PixelFormat | pixelFormat() const |
| void | reallocate(int width, int height, Qul::PixelFormat pixelFormat) |
| int | width() const |
| Qul::SharedImage | operator Qul::SharedImage() const |
静的パブリックメンバー
| const uintptr_t | requiredAlignment |
| const uintptr_t | requiredPixelWidthAlignment |
詳細説明
Image を使用して、画像データをQt Quick Ultralite レンダラーに渡すことができます。Imageは、ヒープ上に新しい画像データを割り当てるか、別途用意したメモリを受け取ります。
// Allocate new image data on the heap Qul::Image image1(drawImgSize, drawImgSize, Qul::PixelFormat_ARGB32_Premultiplied); // Uses the data at myimagedata without a copy. // (no cleanup function passed in, so lifetime of myimagedata must exceed any use) // Application should take care about memory and texture width alignment Qul::Image image2(getLogoData(), logoImgWidth, logoImgHeight, Qul::PixelFormat_ARGB32_Premultiplied);
Imageは渡されたデータの所有権を持ちます。最後の Image またはSharedImage の参照が破棄されたときにクリーンアップが必要な場合は、コンストラクタにcleanupFunctionを渡します。
Imageインスタンスが構築された後は、beginWrite() とendWrite() を呼び出す間のみ、Imageデータを変更することができます(ImageWriteGuard を参照)。
注意: プラットフォームによっては、アドレスアライメントが必要だったり、画像データの行ごとのバイト数が特定のピクセルの倍数にアライメントされている必要があったりします:
bytesPerLine % (bytesPerPixel * requiredPixelWidthAlignment) == 0
通常、プラットフォームはすべてのPixelFormatsをサポートしているわけではありません。Image::requiredAlignment とImage::requiredPixelWidthAlignment を参照。
SharedImage およびImageWriteGuardも参照 。
メンバ関数ドキュメント
Image::Image()
空の画像を作成する。
Image::Image(int width, int height, Qul::PixelFormat pixelFormat)
ヒープ上に新しいイメージデータを割り当てることによって構築する。
すべてのpixelFormat がすべてのプラットフォームでサポートされているわけではありません。サポートされていないフォーマットの画像は描画されませんが、エラーにはなりません。
Image::Image(uint8_t *bits, int width, int height, Qul::PixelFormat pixelFormat, int bytesPerLine = -1, Qul::Image::CleanupFunction cleanupFunction = nullptr)
外部所有メモリから構築する。
画像はbits の所有権を持つ。cleanupFunction は、データへの最後の参照(SharedImage 参照を含む)が破棄されたときに実行される。
プラットフォームによっては、画像データに対する特定の要件があります。これらを満たさない場合、アプリケーションはエラーを表示して停止します。Image::requiredAlignment とImage::requiredPixelWidthAlignment を参照してください。
pixelFormat 、すべてのプラットフォームでサポートされているわけではありません。サポートされていないフォーマットの画像は描画されませんが、エラーは発生しません。
bits の背後にある画像データは、beginWrite() とendWrite() の呼び出しの間でのみ変更可能である。ImageWriteGuard も参照のこと。
bytesPerLine が -1 の場合、width とpixelFormat に基づいて計算される。
void Image::beginWrite()
参照先のメモリーを書き込み操作用に準備する。
アーティファクトの可能性を避けるため、割り当てられたメモリ領域に書き込む前にこの関数を呼び出す。完了したらendWrite() を呼び出す。
多くのプラットフォームは、非同期で実行されるハードウェアアクセラレーションによる描画操作をサポートしています。この関数は、割り当てられたメモリ領域から読み込むそのような操作がすべて終了するのを待ちます。他のプラットフォームでは、書き込み操作が終了したら、画像を GPU メモリにアップロードする必要があるかもしれません。
注意: endWrite() が呼び出される前に画像のレンダリングが必要な場合、画面には何も描画されません。
endWrite()も参照してください 。
uint8_t *Image::bits()
画像のピクセル・データを読み書きできるように返す。
注意: ピクセル・データの変更は、beginWrite() とendWrite() の呼び出しの間に行わなければならない。
const uint8_t *Image::bits() const
読み込み用の画像ピクセルデータを返します。
int Image::bitsPerPixel() const
ピクセルあたりの画像ビット数を返します。
int Image::bytesPerLine() const
行あたりの画像バイト数を返します。
void Image::endWrite()
参照メモリへの書き込み操作を終了します。
これは、非同期読み込み操作の準備のためにdcacheフラッシュをトリガすることもあれば、画像データをGPUメモリにアップロードすることもあります。
画像データが現在画面に表示されている場合は、次のフレーム用に再描画されます。
beginWrite()も参照してください 。
int Image::height() const
画像の高さをピクセル単位で返します。
Qul::PixelFormat Image::pixelFormat() const
画像PixelFormat を返します。
void Image::reallocate(int width, int height, Qul::PixelFormat pixelFormat)
画像のサイズとフォーマットを変更し、既存の参照すべてに影響を与える。
これは、既存の画像データに対してクリーンアップ関数を実行し、ヒープ上に指定されたwidth 、height 、pixelFormat の新しい画像データを割り当てて置き換えます。
この画像へのすべての参照は、新しい画像データに更新されます。
int Image::width() const
画像の幅をピクセル単位で返します。
Qul::SharedImage Image::operator Qul::SharedImage() const
SharedImage に暗黙的に変換する。
Image とSharedImage は、基礎となるデータへの同じ参照カウントを使用する。
メンバ変数ドキュメント
const uintptr_t Image::requiredAlignment
プラットフォームが画像データに要求する最小アライメント。
Image::requiredPixelWidthAlignmentも参照 。
const uintptr_t Image::requiredPixelWidthAlignment
プラットフォームは、画像の幅がこの値の倍数であることを要求する。
Image::requiredAlignmentも参照して ください。
特定の Qt ライセンスの下で利用可能です。
詳細をご覧ください。