From 283656e2079e8bbcc41f7fd4241ade13e75364de Mon Sep 17 00:00:00 2001 From: yutanqi Date: Tue, 8 Mar 2022 10:50:27 +0800 Subject: [PATCH] native drawing head files Signed-off-by: yutanqi --- .../graphic/native_drawing/drawing_bitmap.h | 130 ++++++++++ .../graphic/native_drawing/drawing_brush.h | 114 +++++++++ .../graphic/native_drawing/drawing_canvas.h | 179 ++++++++++++++ .../graphic/native_drawing/drawing_color.h | 64 +++++ .../graphic/native_drawing/drawing_path.h | 160 ++++++++++++ .../graphic/native_drawing/drawing_pen.h | 232 ++++++++++++++++++ .../graphic/native_drawing/drawing_types.h | 128 ++++++++++ 7 files changed, 1007 insertions(+) create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_bitmap.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_color.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_path.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_types.h diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_bitmap.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_bitmap.h new file mode 100644 index 00000000..c1344b2a --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_bitmap.h @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_BITMAP_H +#define C_INCLUDE_DRAWING_BITMAP_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_bitmap.h + * + * @brief 文件中定义了与位图相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 结构体用于描述位图像素的格式,包括颜色类型和透明度类型 + * + * @since 8 + * @version 1.0 + */ +typedef struct { + /** 描述位图像素的存储格式 */ + OH_Drawing_ColorFormat colorFormat; + /** 描述位图像素的透明度分量 */ + OH_Drawing_AlphaFormat alphaFormat; +} OH_Drawing_BitmapFormat; + +/** + * @brief 函数用于创建一个位图对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的位图对象 + * @since 8 + * @version 1.0 + */ +OH_Drawing_Bitmap* OH_Drawing_BitmapCreate(void); + +/** + * @brief 函数用于销毁位图对象并回收该对象占有内存。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Bitmap 参数是一个指向位图对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_BitmapDestroy(OH_Drawing_Bitmap*); + +/** + * @brief 函数用于初始化位图对象的宽度和高度,并且为该位图设置像素格式 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Bitmap 参数是一个指向位图对象的指针 + * @param width 参数是位图要初始化设置的宽度 + * @param height 参数是位图要初始化设置的高度 + * @param OH_Drawing_BitmapFormat 参数是位图要初始化设置的像素格式,包括像素的颜色类型和透明度类型 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_BitmapBuild( + OH_Drawing_Bitmap*, const uint32_t width, const uint32_t height, const OH_Drawing_BitmapFormat*); + +/** + * @brief 该函数用于获取指定位图的宽度 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Bitmap 参数是一个指向位图对象的指针 + * @return 函数返回位图的宽度 + * @since 8 + * @version 1.0 + */ +uint32_t OH_Drawing_BitmapGetWidth(OH_Drawing_Bitmap*); + +/** + * @brief 函数用于获取指定位图的高度 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Bitmap 参数是一个指向位图对象的指针 + * @return 函数返回位图的高度 + * @since 8 + * @version 1.0 + */ +uint32_t OH_Drawing_BitmapGetHeight(OH_Drawing_Bitmap*); + +/** + * @brief 函数用于获取指定位图的像素地址,可以通过像素地址获取到位图的像素数据 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Bitmap 参数是一个指向位图对象的指针 + * @return 函数返回位图的像素地址 + * @since 8 + * @version 1.0 + */ +void* OH_Drawing_BitmapGetPixels(OH_Drawing_Bitmap*); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h new file mode 100644 index 00000000..df29ef54 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_BRUSH_H +#define C_INCLUDE_DRAWING_BRUSH_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_brush.h + * + * @brief 文件中定义了与画刷相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 函数用于创建一个画刷对象 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的画刷对象 + * @since 8 + * @version 1.0 + */ +OH_Drawing_Brush* OH_Drawing_BrushCreate(void); + +/** + * @brief 函数用于销毁画刷对象并回收该对象占有的内存。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 参数是一个指向画刷对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_BrushDestroy(OH_Drawing_Brush*); + +/** + * @brief 函数用于获取画刷是否设置抗锯齿属性,如果为真则说明画刷会启用抗锯齿功能,在绘制图形时会对图形的边缘像素进行半透明的模糊处理 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 参数是一个指向画刷对象的指针 + * @return 函数返回画刷对象是否设置抗锯齿属性,返回真则设置了抗锯齿,返回假则没有设置抗锯齿 + * @since 8 + * @version 1.0 + */ +bool OH_Drawing_BrushIsAntiAlias(const OH_Drawing_Brush*); + +/** + * @brief 函数用于设置画刷的抗锯齿属性,设置为真则画刷在绘制图形时会对图形的边缘像素进行半透明的模糊处理 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 参数是一个指向画刷对象的指针 + * @param bool 参数真为抗锯齿,参数假则不做抗锯齿处理 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_BrushSetAntiAlias(OH_Drawing_Brush*, bool); + +/** + * @brief 函数用于获取画刷的颜色属性,颜色属性描述了画刷填充图形时使用的颜色,用一个32位(ARGB)的变量表示 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 参数是一个指向画刷对象的指针 + * @return 函数返回一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +uint32_t OH_Drawing_BrushGetColor(const OH_Drawing_Brush*); + +/** + * @brief 函数用于设置画刷的颜色属性,颜色属性描述了画刷填充图形时使用的颜色,用一个32位(ARGB)的变量表示 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 参数是一个指向画刷对象的指针 + * @param color 参数是一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_BrushSetColor(OH_Drawing_Brush*, uint32_t color); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h new file mode 100644 index 00000000..af221914 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_H +#define C_INCLUDE_DRAWING_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_canvas.h + * + * @brief 文件中定义了与画布相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 函数用于创建一个画布对象 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的画布对象 + * @since 8 + * @version 1.0 + */ +OH_Drawing_Canvas* OH_Drawing_CanvasCreate(void); + +/** + * @brief 函数用于销毁画布对象并回收该对象占有的内存 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数是一个指向画布对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasDestroy(OH_Drawing_Canvas*); + +/** + * @brief 函数用于将一个位图对象绑定到画布中,使得画布绘制的内容输出到位图中(即CPU渲染) + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param OH_Drawing_Bitmap 参数为一个指向位图对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasBind(OH_Drawing_Canvas*, OH_Drawing_Bitmap*); + +/** + * @brief 函数用于设置画笔给画布,画布将会使用设置画笔的样式和颜色去绘制图形形状的轮廓 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param OH_Drawing_Pen 参数为一个指向画笔对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasAttachPen(OH_Drawing_Canvas*, const OH_Drawing_Pen*); + +/** + * @brief 函数用于去除掉画布中的画笔,使用后画布将不去绘制图形形状的轮廓 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasDetachPen(OH_Drawing_Canvas*); + +/** + * @brief 函数用于设置画刷给画布,画布将会使用设置的画刷样式和颜色去填充绘制的图形形状 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param OH_Drawing_Brush 参数为一个指向画刷对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasAttachBrush(OH_Drawing_Canvas*, const OH_Drawing_Brush*); + +/** + * @brief 函数用于去除掉画布中的画刷,使用后画布将不去填充图形形状 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasDetachBrush(OH_Drawing_Canvas*); + +/** + * @brief 函数用于保存当前画布的状态(画布矩阵)到一个栈顶 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasSave(OH_Drawing_Canvas*); + +/** + * @brief 函数用于恢复保存在栈顶的画布状态(画布矩阵) + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasRestore(OH_Drawing_Canvas*); + +/** + * @brief 函数用于画一条直线段 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param x1 参数为线段起始点的横坐标 + * @param y1 参数为线段起始点的纵坐标 + * @param x2 参数为线段结束点的横坐标 + * @param y2 参数为线段结束点的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawLine(OH_Drawing_Canvas*, float x1, float y1, float x2, float y2); + +/** + * @brief 函数用于画一个自定义路径 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawPath(OH_Drawing_Canvas*, const OH_Drawing_Path*); + +/** + * @brief 函数用于使用指定颜色去清空画布 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 参数为一个指向画布对象的指针 + * @param color 参数为一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_CanvasClear(OH_Drawing_Canvas*, uint32_t color); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_color.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_color.h new file mode 100644 index 00000000..f5a6c106 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_color.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_COLOR_H +#define C_INCLUDE_DRAWING_COLOR_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_color.h + * + * @brief 文件中定义了与颜色相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 函数用于将4个变量(分别描述透明度、红色、绿色和蓝色)转化为一个描述颜色的32位(ARGB)变量 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param alpha 参数为一个描述透明度的变量, 变量范围是0x00~0xFF + * @param red 参数为一个描述红色的变量, 变量范围是0x00~0xFF + * @param green 参数为一个描述绿色的变量, 变量范围是0x00~0xFF + * @param blue 参数为一个描述蓝色的变量, 变量范围是0x00~0xFF + * @return 函数返回一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +uint32_t OH_Drawing_ColorSetArgb(uint32_t alpha, uint32_t red, uint32_t green, uint32_t blue); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h new file mode 100644 index 00000000..11f24e8a --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_PATH_H +#define C_INCLUDE_DRAWING_PATH_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_path.h + * + * @brief 文件中定义了与自定义路径相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 函数用于创建一个路径对象 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的路径对象 + * @since 8 + * @version 1.0 + */ +OH_Drawing_Path* OH_Drawing_PathCreate(void); + +/** + * @brief 函数用于销毁路径对象并回收该对象占有的内存 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathDestroy(OH_Drawing_Path*); + +/** + * @brief 函数用于设置自定义路径的起始点位置 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @param x 参数为起始点的横坐标 + * @param y 参数为起始点的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathMoveTo(OH_Drawing_Path*, float x, float y); + +/** + * @brief 函数用于添加一条从路径的最后点位置到目标点位置的线段 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @param x 参数为目标点的横坐标 + * @param y 参数为目标点的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathLineTo(OH_Drawing_Path*, float x, float y); + +/** + * @brief 函数用于给路径添加一段弧线,绘制弧线的方式为角度弧,该方式首先会指定一个矩形边框,矩形边框会包裹椭圆, + * 然后会指定一个起始角度和扫描度数,从起始角度扫描截取的椭圆周长一部分即为绘制的弧线。另外会默认添加一条从路径的最后点位置到弧线起始点位置的线段 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @param x1 参数为包围椭圆的矩形左上角点位置的横坐标 + * @param y1 参数为包围椭圆的矩形左上角点位置的纵坐标 + * @param x2 参数为包围椭圆的矩形右下角点位置的横坐标 + * @param y3 参数为包围椭圆的矩形右下角点位置的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathArcTo(OH_Drawing_Path*, float x1, float y1, float x2, float y2, float startDeg, float sweepDeg); + +/** + * @brief 函数用于添加一条从路径最后点位置到目标点位置的二阶贝塞尔圆滑曲线 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @param ctrlX 参数为控制点位置的横坐标 + * @param ctrlY 参数为控制点位置的纵坐标 + * @param endX 参数为目标点位置的横坐标 + * @param endY 参数为目标点位置的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathQuadTo(OH_Drawing_Path*, float ctrlX, float ctrlY, float endX, float endY); + +/** + * @brief 函数用于添加一条从路径最后点位置到目标点位置的三阶贝塞尔圆滑曲线 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @param ctrlX1 参数为第一个控制点位置的横坐标 + * @param ctrlY1 参数为第一个控制点位置的纵坐标 + * @param ctrlX2 参数为第二个控制点位置的横坐标 + * @param ctrlY2 参数为第二个控制点位置的纵坐标 + * @param endX 参数为目标点位置的横坐标 + * @param endY 参数为目标点位置的纵坐标 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathCubicTo( + OH_Drawing_Path*, float ctrlX1, float ctrlY1, float ctrlX2, float ctrlY2, float endX, float endY); + +/** + * @brief 函数用于闭合路径,会添加一条从路径起点位置到最后点位置的线段 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathClose(OH_Drawing_Path*); + +/** + * @brief 函数用于重置自定义路径数据 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 参数为一个指向路径对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PathReset(OH_Drawing_Path*); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h new file mode 100644 index 00000000..8760e267 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_PEN_H +#define C_INCLUDE_DRAWING_PEN_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_pen.h + * + * @brief 文件中定义了与画笔相关的功能函数 + * + * @since 8 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 函数用于创建一个画笔对象 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的画笔对象 + * @since 8 + * @version 1.0 + */ +OH_Drawing_Pen* OH_Drawing_PenCreate(void); + +/** + * @brief 函数用于销毁画笔对象并回收该对象占有的内存 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenDestroy(OH_Drawing_Pen*); + +/** + * @brief 函数用于获取画笔是否设置抗锯齿属性,如果为真则说明画笔会启用抗锯齿功能,在绘制图形时会对图形的边缘像素进行半透明的模糊处理 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回画笔对象是否设置抗锯齿属性,返回真则设置了抗锯齿,返回假则没有设置抗锯齿 + * @since 8 + * @version 1.0 + */ +bool OH_Drawing_PenIsAntiAlias(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置画笔的抗锯齿属性,设置为真则画笔在绘制图形时会对图形的边缘像素进行半透明的模糊处理 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param bool 参数真为抗锯齿,参数假则不做抗锯齿处理 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetAntiAlias(OH_Drawing_Pen*, bool); + +/** + * @brief 函数用于获取画笔的颜色属性,颜色属性描述了画笔绘制图形轮廓时使用的颜色,用一个32位(ARGB)的变量表示 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +uint32_t OH_Drawing_PenGetColor(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置画笔的颜色属性,颜色属性描述了画笔绘制图形轮廓时使用的颜色,用一个32位(ARGB)的变量表示 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param color 参数是一个描述颜色的32位(ARGB)变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetColor(OH_Drawing_Pen*, uint32_t color); + +/** + * @brief 函数用于获取画笔的厚度属性,厚度属性描述了画笔绘制图形轮廓的宽度 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回画笔的厚度 + * @since 8 + * @version 1.0 + */ +float OH_Drawing_PenGetWidth(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置画笔的厚度属性,厚度属性描述了画笔绘制图形轮廓的宽度 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param width 参数是一个描述画笔厚度的变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetWidth(OH_Drawing_Pen*, float width); + +/** + * @brief 函数用于获取折线尖角的限制值,当画笔绘制一条折线,转角类型设置为尖角时,那么此时该属性用于限制出现尖角的长度范围,如果超出则平角显示,不超出依然为尖角 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回尖角的限制值 + * @since 8 + * @version 1.0 + */ +float OH_Drawing_PenGetMiterLimit(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置折线尖角的限制值,当画笔绘制一条折线,转角类型设置为尖角时,那么此时该属性用于限制出现尖角的长度范围,如果超出则平角显示,不超出依然为尖角 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param miter 参数是一个描述尖角限制值的变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetMiterLimit(OH_Drawing_Pen*, float miter); + +/** + * @brief 枚举集合定义了画笔笔帽的样式,即画笔在绘制线段时,在线段头尾端点的样式 + * + * @since 8 + * @version 1.0 + */ +typedef enum { + /** 没有笔帽样式,线条头尾端点处横切 */ + LINE_FLAT_CAP, + /** 笔帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度时线段厚度的一半 */ + LINE_SQUARE_CAP, + /** 笔帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段厚度一致 */ + LINE_ROUND_CAP +} OH_Drawing_PenLineCapStyle; + +/** + * @brief 函数用于获取画笔笔帽的样式 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回画笔笔帽样式 + * @since 8 + * @version 1.0 + */ +OH_Drawing_PenLineCapStyle OH_Drawing_PenGetCap(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置画笔笔帽样式 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param OH_Drawing_PenLineCapStyle 参数是一个描述画笔笔帽样式的变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetCap(OH_Drawing_Pen*, OH_Drawing_PenLineCapStyle); + +/** + * @brief 枚举集合定义了线条转角的样式,即画笔在绘制折线段时,在折线转角处的样式 + * + * @since 8 + * @version 1.0 + */ +typedef enum { + /** 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制 */ + LINE_MITER_JOIN, + /** 转角类型为圆头 */ + LINE_ROUND_JOIN, + /** 转角类型为平头 */ + LINE_BEVEL_JOIN +} OH_Drawing_PenLineJoinStyle; + +/** + * @brief 函数用于获取画笔绘制折线转角的样式 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @return 函数返回折线转角的样式 + * @since 8 + * @version 1.0 + */ +OH_Drawing_PenLineJoinStyle OH_Drawing_PenGetJoin(const OH_Drawing_Pen*); + +/** + * @brief 函数用于设置画笔绘制转角的样式 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 参数是一个指向画笔对象的指针 + * @param OH_Drawing_PenLineJoinStyle 参数值一个描述折线转角样式的变量 + * @since 8 + * @version 1.0 + */ +void OH_Drawing_PenSetJoin(OH_Drawing_Pen*, OH_Drawing_PenLineJoinStyle); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_types.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_types.h new file mode 100644 index 00000000..4d8bda58 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_types.h @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef C_INCLUDE_DRAWING_TYPES_H +#define C_INCLUDE_DRAWING_TYPES_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 8 + * @version 1.0 + */ + +/** + * @file drawing_types.h + * + * @brief 文件中定义了用于绘制2d图形的数据类型,包括画布、画笔、画刷、位图和路径 + * + * @since 8 + * @version 1.0 + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief OH_Drawing_Canvas定义为一块矩形的画布,可以结合画笔和画刷在上面绘制各种形状、图片和文字 + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_Drawing_Canvas OH_Drawing_Canvas; + +/** + * @brief OH_Drawing_Pen定义为画笔,画笔用于描述绘制图形轮廓的样式和颜色 + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_Drawing_Pen OH_Drawing_Pen; + +/** + * @brief OH_Drawing_Brush定义为画刷,画刷用于描述填充图形的样式和颜色 + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_Drawing_Brush OH_Drawing_Brush; + +/** + * @brief OH_Drawing_Path定义为路径,路径用于自定义各种形状 + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_Drawing_Path OH_Drawing_Path; + +/** + * @brief OH_Drawing_Bitmap定义为位图,位图是一块内存,内存中包含了描述一张图片的像素数据 + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_Drawing_Bitmap OH_Drawing_Bitmap; + +/** + * @brief OH_Drawing_ColorFormat用于描述位图像素的存储格式 + * + * @since 8 + * @version 1.0 + */ +typedef enum { + /** 未知格式. */ + COLOR_FORMAT_UNKNOWN, + /** 每个像素用一个8位的量表示,8个位比特位表示透明度 */ + COLOR_FORMAT_ALPHA_8, + /** 每个像素用一个16位的量表示,高位到低位依次是5个比特位表示红,6个比特位表示绿,5个比特位表示蓝 */ + COLOR_FORMAT_RGB_565, + /** 每个像素用一个16位的量表示,高位到低位依次是4个比特位表示透明度,4个比特位表示红,4个比特位表示绿,4个比特位表示蓝 */ + COLOR_FORMAT_ARGB_4444, + /** 每个像素用一个32位的量表示,高位到低位依次是8个比特位表示透明度,8个比特位表示红,8个比特位表示绿,8个比特位表示蓝 */ + COLOR_FORMAT_RGBA_8888, + /** 每个像素用一个32位的量表示,高位到低位依次是8个比特位表示蓝,8个比特位表示绿,8个比特位表示红,8个比特位表示透明度 */ + COLOR_FORMAT_BGRA_8888 +} OH_Drawing_ColorFormat; + +/** + * @brief OH_Drawing_AlphaFormat用于描述位图像素的透明度分量 + * + * @since 8 + * @version 1.0 + */ +typedef enum { + /** 未知格式 */ + ALPHA_FORMAT_UNKNOWN, + /** 位图无透明度 */ + ALPHA_FORMAT_OPAQUE, + /** 每个像素的颜色组件由透明度分量预先乘以 */ + ALPHA_FORMAT_PREMUL, + /** 每个像素的颜色组件未由透明度分量预先乘以 */ + ALPHA_FORMAT_UNPREMUL +} OH_Drawing_AlphaFormat; + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file -- Gitee