• Home
Name Date Size #Lines LOC

..--

figures/22-Oct-2025-

include/22-Oct-2025-4,4933,086

patches/22-Oct-2025-1919

src/22-Oct-2025-15,84912,055

test/22-Oct-2025-10,9886,848

BUILD.gnD22-Oct-20255.6 KiB210190

LICENSED22-Oct-20259.9 KiB177150

OAT.xmlD22-Oct-20254 KiB6711

README.en.mdD22-Oct-20254.1 KiB7861

README.mdD22-Oct-20253.4 KiB7961

bundle.jsonD22-Oct-20251,017 5454

config.gniD22-Oct-2025962 2622

README.en.md

1# graphics_effect
2
3## Description
4graphics_effect is an important component of OpenHarmony's graphics subsystem, providing the necessary visual effects algorithm capabilities for the graphics subsystem, including blur, shadow, gradient, grayscale, brighten, invert, enhance, etc.
5
6## Software Architecture
7![GraphicsEffectArchitecture](./figures/graphics_effect_architecture_en.png)
8
9The layered description of Graphics Effect is as follows:
10
11• Interface layer: Graphics Effect opens its capabilities to the outside world through ArkUI, UIEffect, and EffectKit.
12
13• Implementation layer: divided into three modules: GERender, GEVisualEffect, and GEVisualEffectContainer.
14| Modules                                          | Capability description                                                                        |
15|--------------------------------------------------|-----------------------------------------------------------------------------------------------|
16| GERender(rendering)                              | provides drawing capabilities and draws the effects of GEVisualEffect onto the target canvas. |
17| GEVisualEffect(visual effect)                    | implementation of specific visual effect capabilities.                                        |
18| GEVisualEffectContainer(visual effect container) | convenient integration of multiple visual effects.                                            |
19
20## Directory structure
21```
22foundation/graphic/graphics_effect/
23├── figures                 # Image directory referenced by Markdown
24├── include                 # Graphics Effect interface storage directory
25│   ├── ext                 # Dynamic loading framework interface and algorithm interface storage directory
26├── src                     # Source code storage directory
27│   ├── ext                 # Dynamic loading framework and algorithm interface implementation storage directory
28└── test                    # Test case storage directory
29    ├── fuzztest            # Fuzz test case storage directory
30    └── unittest            # Unit test case storage directory
31```
32
33## Installation
34
35Not involved
36
37## Instructions
38
39The capabilities of this component have been integrated into system UI rendering scenarios such as the desktop, status bar, and control center, and users can directly operate and use it and experience the corresponding effects.
40
41### 1.Draw the specified visual effect onto the canvas
42
43Based on the specified image, apply the visual effect contained in the GEVisualEffectContainer and draw it directly onto the passed canvas.
44```
45void DrawImageEffect(Drawing::Canvas& canvas, Drawing::GEVisualEffectContainer& veContainer,
46        const std::shared_ptr<Drawing::Image>& image, const Drawing::Rect& src, const Drawing::Rect& dst,
47        const Drawing::SamplingOptions& sampling);
48```
49Example:
50```
51  Drawing::Canvas canvas;
52  auto image = std::make_shared<Drawing::Image>();
53  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
54  DrawImageRectAttributes attr;
55
56  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
57  geRender->DrawImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
58```
59
60### 2.Draw the specified visual effect onto the canvas and return the drawing result as an image
61
62Based on the specified image, apply the visual effect contained in the GEVisualEffectContainer and return the drawing result as image
63```
64std::shared_ptr<Drawing::Image> ApplyImageEffect(Drawing::Canvas& canvas,
65        Drawing::GEVisualEffectContainer& veContainer, const std::shared_ptr<Drawing::Image>& image,
66        const Drawing::Rect& src, const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling);
67```
68Example:
69```
70  Drawing::Canvas canvas;
71  auto image = std::make_shared<Drawing::Image>();
72  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
73  DrawImageRectAttributes attr;
74
75  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
76  auto outImage = geRender->ApplyImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
77```
78

README.md

1# graphics_effect
2
3## 介绍
4Graphics Effect是OpenHarmony图形子系统的重要部件,为图形子系统提供必需的动视效算法能力,包括模糊、阴影、渐变、灰阶、提亮、反色、取色等。
5
6## 软件架构
7![GraphicsEffect架构图](./figures/graphics_effect_architecture.png)
8
9Graphics Effect的分层说明如下:
10
11• 接口层:Graphics Effect通过ArkUI、UIEffect、EffectKit对外开放能力。
12
13• 实现层:分为GERender、GEVisualEffect、GEVisualEffectContainer三个模块。
14| 模块                            | 能力描述                            |
15|-------------------------------|---------------------------------------|
16| GERender(渲染)                  | 提供绘制能力,将GEVisualEffect效果绘制到canvas画布上。 |
17| GEVisualEffect(动视效)            | 具体动视效能力的实现。                          |
18| GEVisualEffectContainer(动视效容器) | 多个动视效方便集成。                           |
19
20## 目录结构
21```
22foundation/graphic/graphics_effect/
23├── figures                 # Markdown引用的图片目录
24├── include                 # Graphics Effect接口存放目录
25│   ├── ext                 # 动态加载框架及算法接口存放目录
26├── src                     # 源代码存放目录
27│   ├── ext                 # 动态加载框架及算法接口实现存放目录
28└── test                    # 测试用例存放目录
29    ├── fuzztest            # fuzz用例存放目录
30    └── unittest            # 单元测试用例存放目录
31```
32
33## 安装教程
34
35不涉及
36
37## 使用说明
38
39在桌面、状态栏、控制中心等系统UI场景中已经集成了该部件的能力,用户可直接操作使用并体验相应效果。
40
41### 1.将指定动视效绘制到画布上
42
43以Image为基础,应用GEVisualEffectContainer所包含的动视效,并直接绘制到传入的canvas画布上
44```
45void DrawImageEffect(Drawing::Canvas& canvas, Drawing::GEVisualEffectContainer& veContainer,
46        const std::shared_ptr<Drawing::Image>& image, const Drawing::Rect& src, const Drawing::Rect& dst,
47        const Drawing::SamplingOptions& sampling);
48```
49调用示例:
50```
51  Drawing::Canvas canvas;
52  auto image = std::make_shared<Drawing::Image>();
53  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
54  DrawImageRectAttributes attr;
55
56  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
57  geRender->DrawImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
58```
59
60### 2.将指定动视效绘制到画布上并以图片形式返回绘制结果
61
62以Image为基础,应用GEVisualEffectContainer所包含的动视效,并返回新的Image
63```
64std::shared_ptr<Drawing::Image> ApplyImageEffect(Drawing::Canvas& canvas,
65        Drawing::GEVisualEffectContainer& veContainer, const std::shared_ptr<Drawing::Image>& image,
66        const Drawing::Rect& src, const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling);
67```
68调用示例:
69```
70  Drawing::Canvas canvas;
71  auto image = std::make_shared<Drawing::Image>();
72  auto visualEffectContainer = std::make_shared<Drawing::GEVisualEffectContainer>();
73  DrawImageRectAttributes attr;
74
75  auto geRender = std::make_shared<GraphicsEffectEngine::GERender>();
76  auto outImage = geRender->ApplyImageEffect(canvas, *visualEffectContainer, image, attr.src, attr.src, Drawing::SamplingOptions());
77```
78
79