C
绘图引擎类
类 Qul::PlatformInterface::DrawingEngine此类为混合函数提供了抽象接口。 更多...
头文件 | #include <platforminterface/drawingengine.h> |
自从 | Qt Quick Ultralite (Platform) 1.5 |
公共类型
公共函数
virtual Qul::PlatformInterface::DrawingEngine::Path * | allocatePath(const Qul::PlatformInterface::PathData *pathData, Qul::PlatformInterface::PathFillRule fillRule) |
virtual void | 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) |
virtual void | 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) |
virtual void | 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) |
virtual void | blendRect(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect, Qul::PlatformInterface::Rgba32 color, Qul::PlatformInterface::DrawingEngine::BlendMode blendMode = BlendMode_SourceOver) |
virtual void | 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) |
virtual void | 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) |
virtual void | 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) |
virtual void | setStrokeProperties(Qul::PlatformInterface::DrawingEngine::Path *path, const Qul::PlatformInterface::StrokeProperties &strokeProperties) |
virtual void | synchronizeForCpuAccess(Qul::PlatformInterface::DrawingDevice *drawingDevice, const Qul::PlatformInterface::Rect &rect) |
详细描述
该类的实例可用于在绘图设备上混合图形元素。根据每个平台上的实现,如果存在支持给定图形元素混合操作的硬件组件,则可以加速操作。
每个平台都可以实现这些混合函数。如果平台没有特殊支持,则调用默认混合函数,该函数使用CPU执行任务。
另请参阅 支持的目标板和开发主机。
成员类型文档
[自 Qt Quick Ultralite (平台) 1.5]
枚举 DrawingEngine::BlendMode
此枚举类型指定混合模式。
常量 | 值 |
---|---|
Qul::PlatformInterface::DrawingEngine::BlendMode_SourceOver | 0 |
源被放置在目标上方。
常量 | 值 |
---|---|
Qul::PlatformInterface::DrawingEngine::BlendMode_Source | 1 |
源在不执行混合操作的情况下被绘制到目标上。
此枚举是在 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 句柄的子类来缓存与路径相关的任何平台特定数据,例如更适合硬件混合的优化表示。这样,优化表示无需每次填充或绘制路径时都重新计算。
平台可以假定 PathData 在 Path 句柄的整个生命周期内保持有效,这意味着从调用 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图混合到绘图设备上。
将指定sourceRect的source与color相乘,并使用blendMode在pos处与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)
将图像混合到绘图设备上。
将指定sourceRect的source使用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)
将表示为路径句柄的路径混合到绘图设备上。
使用给定的transform和blendMode将指定的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许可证下可用。
了解更多信息。