C

图像结构

struct Qul::Image

一个允许直接访问像素数据的图像表示。 更多信息...

头文件 #include <qul/image.h>
Qt Quick Ultralite 1.5

公共函数

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)
图像()
voidbeginWrite()
const uint8_t *bits() const
uint8_t *bits()
intbitsPerPixel() const
intbytesPerLine() const
voidendWrite()
intheight() const
Qul::PixelFormatpixelFormat() const
voidreallocate(int width, int height, Qul::PixelFormat pixelFormat)
intwidth() const
Qul::SharedImageoperator Qul::SharedImage() const

静态公共成员

const uintptr_trequiredAlignment
const uintptr_trequiredPixelWidthAlignment

详细描述

您可以使用 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)。

注意:某些平台需要地址对齐或要求图像数据的 bytes-per-line 对齐到像素的特定倍数

bytesPerLine % (bytesPerPixel * requiredPixelWidthAlignment) == 0

平台通常不支持所有像素格式。请参阅Image::requiredAlignmentImage::requiredPixelWidthAlignment

另请参阅SharedImageImageWriteGuard

成员函数文档

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)

从外部拥有的内存构建。

Image将拥有bits的所有权。当最后一次引用数据(包括SharedImage引用)被销毁时,将运行cleanupFunction

某些平台对图像数据有特定要求。如果这些条件不满足,应用程序将打印错误并停止。请参阅Image::requiredAlignmentImage::requiredPixelWidthAlignment

不是所有pixelFormat在所有平台上都受支持。不支持格式的图像不会被绘制,但不会导致错误。

beginWrite()和endWrite()调用之间,可以更改bits后面的图像数据。另请参阅ImageWriteGuard

如果bytesPerLine为-1,则基于widthpixelFormat进行计算。

Image::Image()

构建一个空图像。

void Image::beginWrite()

为写操作准备引用的内存。

在写入分配的内存区域之前调用此函数以避免潜在的伪影。完成时调用endWrite

许多平台支持异步运行的硬件加速绘图操作。此函数等待所有从分配的内存区域读取的操作完成。在其他平台上,一旦写操作完成,可能需要将图像上传到GPU内存。

注意:如果在调用endWrite之前需要图像进行渲染,则屏幕上不会绘制任何内容。

另请参阅endWrite

const uint8_t *Image::bits() const

返回用于读取的图像像素数据。

uint8_t *Image::bits()

返回用于读取或写入的图像像素数据。

注意:必须在beginWrite()和endWrite调用之间放置对像素数据的修改。

int Image::bitsPerPixel() const

返回图像每像素的位数。

int Image::bytesPerLine() const

返回每行的字节数。

void Image::endWrite()

结束对引用内存的写入操作。

这可能会触发缓存刷新,为异步读取操作做准备,或者将图像数据上传到GPU内存。

如果图像数据当前可见于屏幕上,它将被重新绘制以用于下一帧。

另请参阅beginWrite

int Image::height() const

返回图像的像素高度。

Qul::PixelFormat Image::pixelFormat() const

返回图像的PixelFormat

void Image::reallocate(int width, int height, Qul::PixelFormat pixelFormat)

更改图像的大小和格式,影响所有现有引用。

这将在现有图像数据上执行清理函数,并在堆上为给定的widthheightpixelFormat分配新的图像数据以替换它。

所有对此Image的引用都将更新为新图像数据。

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许可证下可用。
了解更多。