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) | |
| Image(Qul::Image &&) | |
| 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 |
| operator Qul::SharedImage() const | |
| Qul::Image & | operator=(Qul::Image &&) |
静的パブリックメンバー
| 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()の呼び出しの間でのみ行うことができます(ImageWriteGuard を参照)。
注:一部の プラットフォームでは、アドレスのアラインメントが必要であったり、画像データの 1 行あたりのバイト数が特定のピクセル数の倍数にアラインメントされている必要がある場合があります:
bytesPerLine % (bytesPerPixel * requiredPixelWidthAlignment) == 0プラットフォームによっては、すべてのPixelFormatがサポートされていない場合があります。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` の所有権を取得します。データへの最後の参照(SharedImage への参照を含む)が破棄されると、cleanupFunction が実行されます。
一部のプラットフォームでは、画像データに対して特定の要件が定められています。これらの要件が満たされない場合、アプリケーションはエラーを出力して停止します。Image::requiredAlignment およびImage::requiredPixelWidthAlignment を参照してください。
すべてのプラットフォームですべての `pixelFormat ` がサポートされているわけではありません。サポートされていない形式の画像は描画されませんが、エラーは発生しません。
bits で指定された画像データは、beginWrite() とendWrite() の呼び出しの間でのみ変更可能です。ImageWriteGuard も参照してください。
bytesPerLine が -1 の場合、width およびpixelFormat に基づいて計算されます。
[noexcept default] Image::Image(Qul::Image &&)
Image のインスタンスをMoveコンストラクタで生成します。
void Image::beginWrite()
書き込み操作のために、参照先のメモリ領域を準備します。
潜在的なアーティファクトを回避するため、割り当てられたメモリ領域への書き込みを行う前にこの関数を呼び出してください。処理が完了したら、endWrite() を呼び出してください。
多くのプラットフォームでは、非同期で実行されるハードウェアアクセラレーションによる描画操作がサポートされています。この関数は、割り当てられたメモリ領域から読み取りを行うそのような操作がすべて完了するのを待ちます。その他のプラットフォームでは、書き込み操作が完了した後、画像をGPUメモリにアップロードする必要がある場合があります。
注: endWrite() が呼び出される前に、レンダリングに画像が必要な場合 、画面には何も描画されません。
関連項目: endWrite()。
uint8_t *Image::bits()
読み取りまたは書き込み用の画像ピクセルデータを返します。
注: ピクセルデータへの変更は 、beginWrite() およびendWrite() の呼び出しの間に記述する必要があります。
const uint8_t *Image::bits() const
読み取り用の画像ピクセルデータを返します。
int Image::bitsPerPixel() const
1ピクセルあたりの画像ビット数を返します。
int Image::bytesPerLine() const
1行あたりの画像バイト数を返します。
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 に対して、ヒープ上に新しい画像データが割り当てられ、既存のデータが置き換えられます。
この Image へのすべての参照は、新しい画像データに更新されます。
int Image::width() const
画像の幅をピクセル単位で返します。
Image::operator Qul::SharedImage() const
SharedImage へ暗黙的に変換します。
ImageとSharedImage は、基となるデータに対する同じ参照カウントを使用します。
[noexcept default] Qul::Image &Image::operator=(Qul::Image &&)
other をこのImage インスタンスに代入します。
メンバ変数のドキュメント
const uintptr_t Image::requiredAlignment
プラットフォームが画像データに対して要求する最小のアライメント。
Image::requiredPixelWidthAlignmentも参照してください 。
const uintptr_t Image::requiredPixelWidthAlignment
このプラットフォームでは、画像の幅がこの値の倍数である必要があります。
Image::requiredAlignmentも参照してください 。
特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。