C

绘图引擎类

Qul::PlatformInterface::DrawingEngine

此类为混合函数提供了抽象接口。 更多...

头文件 #include <platforminterface/drawingengine.h>
自从Qt Quick Ultralite (Platform) 1.5

公共类型

结构体路径
枚举BlendMode { BlendMode_SourceOver, BlendMode_Source }

公共函数

virtual Qul::PlatformInterface::DrawingEngine::Path *allocatePath(const Qul::PlatformInterface::PathData *pathData, Qul::PlatformInterface::PathFillRule fillRule)
virtual voidblendAlphaMap(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Point &pos, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::Rect &sourceRect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendImage(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Point &pos, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::Rect &sourceRect, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendPath(Qul::PlatformInterface::DrawingDevice *drawingDevice, Qul::PlatformInterface::DrawingEngine::Path *path, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::Rect &clipRect, const Qul::PlatformInterface::Brush *fillBrush, const Qul::PlatformInterface::Brush *strokeBrush, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendRect(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendRoundedRect(Qul::PlatformInterface::DrawingDevice *drawingDevice, const PlatformInterface::Rect &rect, const PlatformInterface::Rect &clipRect, PlatformInterface::Rgba32 color, int radius, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendTransformedAlphaMap(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::RectF &destinationRect, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::RectF &sourceRect, const Qul::PlatformInterface::Rect &clipRect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidblendTransformedImage(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::RectF &destinationRect, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::RectF &sourceRect, const Qul::PlatformInterface::Rect &clipRect, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)
virtual voidsetStrokeProperties(Qul::PlatformInterface::DrawingEngine::Path *path, const Qul::PlatformInterface::StrokeProperties &strokeProperties)
virtual voidsynchronizeForCpuAccess(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect)

详细描述

该类的实例可用于在绘图设备上混合图形元素。根据每个平台上的实现,如果存在支持给定图形元素混合操作的硬件组件,则可以加速操作。

每个平台都可以实现这些混合函数。如果平台没有特殊支持,则调用默认混合函数,该函数使用CPU执行任务。

另请参阅 支持的目标板和开发主机

成员类型文档

[自 Qt Quick Ultralite (平台) 1.5] 枚举 DrawingEngine::BlendMode

此枚举类型指定混合模式。

常量
Qul::PlatformInterface::DrawingEngine::BlendMode_SourceOver0

源被放置在目标上方。

常量
Qul::PlatformInterface::DrawingEngine::BlendMode_Source1

源在不执行混合操作的情况下被绘制到目标上。

此枚举是在 Qt Quick Ultralite (平台) 1.5 中引入或修改的。

成员函数文档

[虚拟的,自 Qt Quick Ultralite (平台) 1.8] Qul::PlatformInterface::DrawingEngine::Path *DrawingEngine::allocatePath(const Qul::PlatformInterface::PathData *pathData, Qul::PlatformInterface::PathFillRule fillRule)

为给定的路径数据分配路径句柄。

路径句柄是给定 pathData 的平台特定表示,该数据由给定的 fillRule 来填充。

平台可以使用 Path 句柄的子类来缓存与路径相关的任何平台特定数据,例如更适合硬件混合的优化表示。这样,优化表示无需每次填充或绘制路径时都重新计算。

平台可以假定 PathDataPath 句柄的整个生命周期内保持有效,这意味着从调用 allocatePath 的时间点到删除 Path 句柄的时间点。

注意: 实现应理想地等待调用 blendPath,然后生成填充路径的优化表示,因为如果未设置填充画笔,则不需要优化表示。

默认实现返回 NULL

此功能是在 Qt Quick Ultralite (平台) 1.8 中引入的。

[虚拟] void DrawingEngine::blendAlphaMap(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Point &pos, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::Rect &sourceRect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将Alpha图混合到绘图设备上。

将指定sourceRectsourcecolor相乘,并使用blendModepos处与drawingDevice混合。默认混合模式是BlendMode_SourceOver

默认实现首先调用synchronizeForCpuAccess,然后使用fallbackDrawingEngine调用blendAlphaMap。

[虚拟] void DrawingEngine::blendImage(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Point &pos, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::Rect &sourceRect, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将图像混合到绘图设备上。

将指定sourceRectsource使用blendMode混合到pos处的drawingDevice。默认混合模式是BlendMode_SourceOversourceOpacity表示源的整体透明度,范围从0到256,256表示完全不透明。

默认实现首先调用synchronizeForCpuAccess,然后使用fallbackDrawingEngine调用blendImage。

[虚拟,自Qt Quick Ultralite (Platform) 1.8以来] void DrawingEngine::blendPath(Qul::PlatformInterface::DrawingDevice *drawingDevice, Qul::PlatformInterface::DrawingEngine::Path *path, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::Rect &clipRect, const Qul::PlatformInterface::Brush *fillBrush, const Qul::PlatformInterface::Brush *strokeBrush, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将表示为路径句柄的路径混合到绘图设备上。

使用给定的transformblendMode将指定的path句柄混合到drawingDevice

如果fillBrush未设置为NULL,则路径应根据在分配路径时设置的PathFillRule使用给定的fillBrush填充。

如果 strokeBrush 没有设置为 NULL,那么路径应该根据通过 StrokeProperties 设置的属性由给定的 strokeBrush 进行描边,setStrokeProperties

结果应通过 clipRect 进行裁剪,clipRect 位于绘图设备坐标中。

sourceOpacity 指定源的整体不透明度,范围从 0 到 256,256 代表完全不透明。

默认实现不执行任何操作。

此功能是在 Qt Quick Ultralite (平台) 1.8 中引入的。

[virtual] void DrawingEngine::blendRect(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将纯色混合到绘图设备上。

color 用来在 drawingDevice 上的 rect 处使用 blendMode 进行填充。默认混合模式是 BlendMode_SourceOver

默认实现首先调用 synchronizeForCpuAccess,然后使用 fallbackDrawingEngine 调用 blendRect。

注意:此功能可能不会在所有参考板上的硬件上得到支持。有关更多信息,请参阅 Supported Features 表。

[virtual, since Qt Quick Ultralite (Platform) 1.6] void DrawingEngine::blendRoundedRect(Qul::PlatformInterface::DrawingDevice *drawingDevice, const PlatformInterface::Rect &rect, const PlatformInterface::Rect &clipRect, PlatformInterface::Rgba32 color, int radius, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将带圆角的矩形混合到绘图设备上。

color 用来在 drawingDevice 上的 rect 处使用 blendMode 进行填充。默认混合模式是 BlendMode_SourceOver。混合必须相对于提供的 clipRect 进行裁剪。 radius 定义了一个用于绘制圆角矩形的圆角半径。所有四个角使用相同的半径;目前无法为不同的角指定不同的半径。

默认实现首先调用 synchronizeForCpuAccess,然后在备用绘图引擎上调用 blendRoundedRect。

注意:此功能可能不会在所有参考板上的硬件上得到支持。有关更多信息,请参阅 Supported Features 表。

此功能是在 Qt Quick Ultralite (Platform) 1.6 中引入的。

另请参阅:DrawingDevice::fallbackDrawingEngine

(虚函数)[虚拟] void DrawingEngine::blendTransformedAlphaMap(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::RectF &destinationRect, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::RectF &sourceRect, const Qul::PlatformInterface::Rect &clipRect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将转换后的 alpha 映射混合到绘图设备上。

source 的指定 sourceRect 乘以 color 并使用 blendMode 混合到 drawingDevice 上的 destinationRect。在混合操作之前,对 source 应使用 transform。结果应通过 clipRect 剪切,clipRect 在绘图设备坐标中。

默认混合模式是 BlendMode_SourceOver

默认实现首先调用 synchronizeForCpuAccess,然后使用 fallbackDrawingEngine 调用 blendTransformedAlphaMap。

[虚函数,自 Qt Quick Ultralite (平台) 1.8] void DrawingEngine::blendTransformedImage(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Transform &transform, const Qul::PlatformInterface::RectF &destinationRect, const Qul::PlatformInterface::Texture &source, const Qul::PlatformInterface::RectF &sourceRect, const Qul::PlatformInterface::Rect &clipRect, int sourceOpacity, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver)

将转换后的图像混合到绘图设备上。

source 的指定 sourceRect 使用 blendMode 混合到 drawingDevice 上的 destinationRect。在混合操作之前,对 source 应使用 transform。结果应通过 clipRect 剪切,clipRect 在绘图设备坐标中。 sourceOpacity 指定了源的整体不透明度,范围从 0 到 256,其中 256 表示完全不透明。

默认混合模式是 BlendMode_SourceOver

默认实现首先调用 synchronizeForCpuAccess,然后使用 fallbackDrawingEngine 调用 blendTransformedImage。

[虚函数,自 Qt Quick Ultralite (平台) 1.8] void DrawingEngine::setStrokeProperties(Qul::PlatformInterface::DrawingEngine::Path *path, const Qul::PlatformInterface::StrokeProperties &strokeProperties)

为给定的 path 处理程序设置笔划属性。

属性strokeProperties包含在后续通过调用blendPath方法将path处理与融合时使用的参数,前提是在调用blendPath时设置了strokeBrush参数。

这使得平台实现能够缓存适合硬件融合的优化表示,而不是每次调用blendPath时重新计算。

注意:理想情况下,实现应该在调用blendPath之前生成已画路径的优化表示,因为如果没有设置画笔画刷,则不需要优化表示。

默认实现不执行任何操作。

此功能是在 Qt Quick Ultralite (平台) 1.8 中引入的。

[虚拟] void DrawingEngine::synchronizeForCpuAccess(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect)

同步图形硬件以便于CPU访问。

drawingDevice硬件同步以供CPU访问。这将阻塞CPU,直到图形硬件完成给定rect中的所有活动操作。

默认实现不执行任何操作。

在特定的Qt许可证下可用。
了解更多信息。