From ebe8b4883eb6996955c35336e3ead6eae110df9e Mon Sep 17 00:00:00 2001 From: lw19901203 Date: Wed, 31 Jan 2024 16:19:46 +0800 Subject: [PATCH 1/2] drawing ndk Data uploading Signed-off-by: lw19901203 --- .../graphic/native_drawing/drawing_brush.h | 21 ++ .../graphic/native_drawing/drawing_canvas.h | 240 ++++++++++++++++++ .../graphic/native_drawing/drawing_font.h | 100 ++++++++ .../graphic/native_drawing/drawing_image.h | 116 +++++++++ .../graphic/native_drawing/drawing_matrix.h | 12 + .../graphic/native_drawing/drawing_path.h | 50 ++++ .../graphic/native_drawing/drawing_pen.h | 32 +++ .../graphic/native_drawing/drawing_rect.h | 44 ++++ .../graphic/native_drawing/drawing_region.h | 70 +++++ .../graphic/native_drawing/drawing_surface.h | 92 +++++++ .../graphic/native_drawing/drawing_types.h | 97 +++++++ 11 files changed, 874 insertions(+) create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_image.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_region.h create mode 100644 zh-cn/native_sdk/graphic/native_drawing/drawing_surface.h diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h index f8d58cdb..c02bd42e 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_brush.h @@ -153,6 +153,27 @@ void OH_Drawing_BrushSetShaderEffect(OH_Drawing_Brush*, OH_Drawing_ShaderEffect* */ void OH_Drawing_BrushSetFilter(OH_Drawing_Brush*, OH_Drawing_Filter*); +/** + * @brief 用于复制一个画刷对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 指向画刷对象的指针。 + * @return 函数会返回一个指针,指针指向复制生成的画刷对象。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Brush* OH_Drawing_BrushCopy(OH_Drawing_Brush*); + +/** + * @brief 用于重置一个画刷对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Brush 指向画刷对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_BrushReset(OH_Drawing_Brush*); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h index 728a9f9d..ee3a05b9 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_canvas.h @@ -185,6 +185,72 @@ void OH_Drawing_CanvasDrawLine(OH_Drawing_Canvas*, float x1, float y1, float x2, */ void OH_Drawing_CanvasDrawPath(OH_Drawing_Canvas*, const OH_Drawing_Path*); +/** + * @brief 用于画一个背景. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Brush 指向画刷对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawBackground(OH_Drawing_Canvas*, const OH_Drawing_Brush*); + +/** + * @brief 用于画一块区域. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Region 指向区域对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawRegion(OH_Drawing_Canvas*, const OH_Drawing_Region*); + +/** + * @brief 用于画一个点. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Point 指向点对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawPoint(OH_Drawing_Canvas*, const OH_Drawing_Point*); + +/** + * @brief 绘制数组点的方式的枚举集合。 + * + * @since 12 + * @version 1.0 + */ +typedef enum { + /** + * 分别绘制每个点。 + */ + POINTS_POINTMODE, + /** + * 将每对点绘制为线段。 + */ + LINES_POINTMODE, + /** + * 将点阵列绘制为开放多边形。 + */ + POLYGON_POINTMODE, +} OH_Drawing_CanvasPointMode; + +/** + * @brief 用于画多个点. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param count 点的数量。 + * @param pts 多个点的数组。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawPoints(OH_Drawing_Canvas*,OH_Drawing_CanvasPointMode mode, uint32_t count, const OH_Drawing_Point pts[]); + /** * @brief 用于画一个位图,位图又称为点阵图像、像素图或栅格图像,是由像素(图片元素)的单个点组成。 * @@ -198,6 +264,66 @@ void OH_Drawing_CanvasDrawPath(OH_Drawing_Canvas*, const OH_Drawing_Path*); */ void OH_Drawing_CanvasDrawBitmap(OH_Drawing_Canvas*, const OH_Drawing_Bitmap*, float left, float top); +/** + * @brief 用于画布绘制图片 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Image 指向图片对象的指针。 + * @param left 图片对象左上角的横坐标。 + * @param top 图片对象左上角的纵坐标。 + * @param OH_Drawing_SamplingOptions 指向图片选项对象的指针. + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawImage(OH_Drawing_Canvas*, const OH_Drawing_Image*, + const float left, const float top, const OH_Drawing_SamplingOptions*); + +/** + * @brief 绘制方式。 + * + * @since 12 + * @version 1.0 + */ +typedef enum { + /** + * 最近的。 + */ + NEAREST, + /** + * 直线的。 + */ + LINEAR, +} OH_Drawing_CanvasFilterMode; + +/** + * @brief 绘制不同拉伸或收缩的图像以适应目标矩形 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Image 指向图片对象的指针。 + * @param OH_Drawing_Lattice 指向描述要拉伸或收缩的图像区域的晶格的指针。 + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @param filter 绘制方式 + * @param OH_Drawing_Brush 指向画刷对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawImageLattice(OH_Drawing_Canvas*, const OH_Drawing_Image*, + const OH_Drawing_Lattice*, const OH_Drawing_Rect*, OH_Drawing_CanvasFilterMode filter, const OH_Drawing_Brush*); + +/** + * @brief 用于画一个顶点 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Vertices 指向顶点对象的指针。 + * @param mode 混合模式枚举。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawVertices(OH_Drawing_Canvas*, const OH_Drawing_Vertices*, OH_Drawing_BlendMode mode); + /** * @brief 用于画一个矩形。 * @@ -256,6 +382,17 @@ void OH_Drawing_CanvasDrawArc(OH_Drawing_Canvas*, const OH_Drawing_Rect*, float */ void OH_Drawing_CanvasDrawRoundRect(OH_Drawing_Canvas*, const OH_Drawing_RoundRect*); +/** + * @brief 用于画一个嵌套的圆角矩形 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针 + * @param OH_Drawing_RoundRect 指向圆角矩形对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawNestedRoundRect(OH_Drawing_Canvas*, const OH_Drawing_RoundRect*, const OH_Drawing_RoundRect*); + /** * @brief 用于画一段文字。 * @@ -351,6 +488,37 @@ void OH_Drawing_CanvasTranslate(OH_Drawing_Canvas*, float dx, float dy); */ void OH_Drawing_CanvasScale(OH_Drawing_Canvas*, float sx, float sy); +/** + * @brief 用于获取画布对象的宽度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @since 12 + * @version 1.0 + */ +int32_t OH_Drawing_CanvasGetWidth(OH_Drawing_Canvas*); + +/** + * @brief 用于获取画布对象的高度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @since 12 + * @version 1.0 + */ +int32_t OH_Drawing_CanvasGetHeight(OH_Drawing_Canvas*); + +/** + * @brief 检查指定的矩形在经过当前矩阵变换后是否完全位于当前剪辑之外 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_CanvasQuickReject(OH_Drawing_Canvas*, const OH_Drawing_Rect*); + /** * @brief 用于使用指定颜色去清空画布。 * @@ -362,6 +530,78 @@ void OH_Drawing_CanvasScale(OH_Drawing_Canvas*, float sx, float sy); */ void OH_Drawing_CanvasClear(OH_Drawing_Canvas*, uint32_t color); +/** + * @brief 用于绘制背景颜色。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param color 描述颜色的32位(ARGB)变量。 + * @param cBlendMode 颜色混合模式。支持可选的混合模式具体可见{@link OH_Drawing_BlendMode}枚举。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawColor(OH_Drawing_Canvas* cCanvas, uint32_t color, OH_Drawing_BlendMode cBlendMode); + +/** + * @brief 用于读取画布中像素数据并存储到目标像素。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Image_Info 目标像素的宽度、高度、存储格式、透明度分量信息。 + * @param dstPixels 指向目标像素的指针。 + * @param dstRowBytes 一行像素的大小。 + * @param srcX 画布x轴上可编辑像素偏移量。 + * @param srcY 画布y轴上可编辑像素偏移量. + * @return 成功返回true. + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_CanvasReadPixels(OH_Drawing_Canvas*, OH_Drawing_Image_Info*, + void* dstPixels, uint32_t dstRowBytes, int32_t srcX, int32_t srcY); + +/** + * @brief 保存矩阵和剪辑,并为后续绘图分配位图。调用restore将放弃对矩阵和剪辑的更改,并绘制位图。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @param OH_Drawing_Brush 指向画刷对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasSaveLayer(OH_Drawing_Canvas*, const OH_Drawing_Rect*, const OH_Drawing_Brush*); + +/** + * @brief 用于环形光绘制路径在指定位置的聚光灯阴影和环境阴影轮廓。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param OH_Drawing_Path 指向路径对象的指针, 用于生成阴影。 + * @param OH_Drawing_Point3 指向三维坐标系点对象的指针,表示从画布到遮挡物的X,Y,Z轴方向上的偏移量。 + * @param OH_Drawing_Point3 指向三维坐标系点对象的指针,表示灯光相对于画布的位置。 + * @param lightRadius 灯光的半径。 + * @param ambientColor 环境阴影颜色。 + * @param spotColor 聚光灯阴影颜色。 + * @param flag 指示用于控制不透明遮挡物、阴影和灯光位置的标志。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasDrawShadow(OH_Drawing_Canvas*, OH_Drawing_Path*, OH_Drawing_Point3*, + OH_Drawing_Point3*, float lightRadius, uint32_t ambientColor, uint32_t spotColor, + OH_Drawing_CanvasShadowFlags flag); + +/** + * @brief 用于图像剪切变换。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas 指向画布对象的指针。 + * @param sx 水平方向倾斜值。 + * @param sy 垂直方向倾斜值。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_CanvasShear(OH_Drawing_Canvas*, float sx, float sy); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_font.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_font.h index bbc3de54..f3d68d62 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_font.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_font.h @@ -45,6 +45,26 @@ extern "C" { #endif +typedef enum { + /** 使用抗锯齿,默认值 */ + TEXT_EGDING_ALIAS, + /** 使用子像素抗锯齿 */ + TEXT_EGDING_ANTI_ALIAS, + /** 使用子像素抗锯齿,并启用子像素定位 */ + TEXT_EGDING_SUBPIXEL_ANTI_ALIAS, +} OH_Drawing_FontEdging; + +typedef enum { + /** 不使用提示 */ + TEXT_HINTING_NONE, + /** 使用轻微的提示 */ + TEXT_HINTING_SLIGHT, + /** 使用正常的提示 */ + TEXT_HINTING_NORMAL, + /** 使用完全的提示 */ + TEXT_HINTING_FULL, +} OH_Drawing_FontHinting; + /** * @brief 用于创建一个字体对象。 * @@ -110,6 +130,86 @@ void OH_Drawing_FontSetTextSkewX(OH_Drawing_Font*, float skewX); */ void OH_Drawing_FontSetFakeBoldText(OH_Drawing_Font*, bool isFakeBoldText); +/** + * @brief 用于设置字体是否使用子像素定位。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param isSubpixel 真为使用子像素定位,假为不使用。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_FontSetSubpixel(OH_Drawing_Font*, bool isSubpixel); + +/** + * @brief 用于设置字体的边缘处理方式。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param OH_Drawing_FontEdging 字体的边缘处理方式枚举值。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_FontSetEdging(OH_Drawing_Font*, OH_Drawing_FontEdging); + +/** + * @brief 用于设置字体的提示模式。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param OH_Drawing_FontHinting 字体的提示模式枚举值。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_FontSetHinting(OH_Drawing_Font*, OH_Drawing_FontHinting); + +/** + * @brief 用于设置字体的水平缩放比例。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param scaleX 字体的水平缩放比例。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_FontSetTextScaleX(OH_Drawing_Font*, float scaleX); + +/** + * @brief 用于获取字体设置的文字大小。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @since 12 + * @version 1.0 + */ +float OH_Drawing_FontGetTextSize(OH_Drawing_Font*); + +/** + * @brief 用于计算指定文本字符串中字符的数量。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param text 表示要测量的文本字符串。 + * @param byteLength 表示文本字符串的长度。 + * @param encoding 表示文本编码枚举值。 + * @since 12 + * @version 1.0 + */ +int OH_Drawing_FontCountText(OH_Drawing_Font*, const void* text, size_t byteLength, OH_Drawing_TextEncoding encoding); + +/** + * @brief 用于测量指定文本字符串的宽度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Font 指向字体对象的指针。 + * @param text 表示要测量的文本字符串。 + * @param byteLength 表示文本字符串的长度。 + * @param encoding 表示文本编码枚举值。 + * @since 12 + * @version 1.0 + */ +float OH_Drawing_FontMeasureText(OH_Drawing_Font*, const void* text, size_t byteLength, OH_Drawing_TextEncoding encoding); + /** * @brief 用于销毁字体对象并回收该对象占有的内存。 * diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_image.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_image.h new file mode 100644 index 00000000..2dfa647a --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_image.h @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2023 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_IMAGE_H +#define C_INCLUDE_DRAWING_IMAGE_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 12 + * @version 1.0 + */ + +/** + * @file drawing_image.h + * + * @brief 声明Drawing模块图像相关函数。 + * + * @since 12 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 创建一个图像对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 返回指向创建图像对象的指针。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Image* OH_Drawing_ImageCreate(void); + +/** + * @brief 使用共享或复制位图像素数据方式重建一个图像。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image 指向图片对象的指针。 + * @param OH_Drawing_Bitmap 指向位图对象的指针。 + * @return 成功返回true。 + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_ImageBuildFromBitmap(OH_Drawing_Image*, OH_Drawing_Bitmap*); + +/** + * @brief 获取图像宽度值,即图像的每行中的像素个数。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image 指向图像对象的指针。 + * @return 返回宽度值。 + * @since 12 + * @version 1.0 + */ +int32_t OH_Drawing_ImageGetWidth(OH_Drawing_Image*); + +/** + * @brief 获取图像高度值,即图像的像素行个数。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image 指向图像对象的指针。 + * @return 返回高度值。 + * @since 12 + * @version 1.0 + */ +int32_t OH_Drawing_ImageGetHeight(OH_Drawing_Image*); + +/** + * @brief 判断图像是否不透明。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image 指向图像对象的指针。 + * @return 不透明返回true。 + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_ImageIsOpaque(OH_Drawing_Image*); + +/** + * @brief 获取图像信息数据并保存到目标结构中。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image 指向图像对象的指针。 + * @param OH_Drawing_Image_Info 指向目标图像信息对象的指针. + * @since 12 + * @version 1.0 + */ +void OH_Drawing_ImageGetImageInfo(OH_Drawing_Image*, OH_Drawing_Image_Info*); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_matrix.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_matrix.h index 1d1fdb12..2668c295 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_matrix.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_matrix.h @@ -55,6 +55,18 @@ extern "C" { */ OH_Drawing_Matrix* OH_Drawing_MatrixCreate(void); +/** + * @brief 用于判断两个矩阵是否相等。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Matrix 指向矩阵对象的指针。 + * @param other 指向矩阵对象的指针。 + * @return 如果两个矩阵相等,则返回true,否则返回flase。 + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_MatrixIsEqual(OH_Drawing_Matrix*, OH_Drawing_Matrix* other); + /** * @brief 用于给矩阵对象设置参数。 * diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h index 1fbdde21..93e1395d 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_path.h @@ -45,6 +45,19 @@ extern "C" { #endif +/** + * @brief 用于添加闭合轮廓的方向。 + * + * @since 12 + * @version 1.0 + */ +typedef enum { + /** 用于添加闭合轮廓的顺时针方向 */ + PATH_DIRECTION_CW, + /** 用于添加闭合轮廓的逆时针方向 */ + PATH_DIRECTION_CCW, +} OH_Drawing_PathDirection; + /** * @brief 用于创建一个路径对象。 * @@ -106,6 +119,20 @@ void OH_Drawing_PathLineTo(OH_Drawing_Path*, float x, float y); */ void OH_Drawing_PathArcTo(OH_Drawing_Path*, float x1, float y1, float x2, float y2, float startDeg, float sweepDeg); +/** + * @brief 添加一个圆心为点(x.y),半径为r的圆。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 指向路径对象的指针。 + * @param x 指向控制测试的X轴值。 + * @param y 指向控制测试的Y轴值。 + * @param radius 指向此圆的路径半径。 + * @param OH_Drawing_PathDirection 指向路径方向。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_PathAddCircle(OH_Drawing_Path*, float x, float y, float radius, OH_Drawing_PathDirection); + /** * @brief 用于添加一条从路径最后点位置到目标点位置的二阶贝塞尔圆滑曲线。 * @@ -137,6 +164,18 @@ void OH_Drawing_PathQuadTo(OH_Drawing_Path*, float ctrlX, float ctrlY, float end 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 指向路径对象的指针。 + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @param OH_Drawing_PathDirection 指向路径方向。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_PathAddOval(OH_Drawing_Path*, const OH_Drawing_Rect*, OH_Drawing_PathDirection); + /** * @brief 用于闭合路径,会添加一条从路径起点位置到最后点位置的线段。 * @@ -157,6 +196,17 @@ void OH_Drawing_PathClose(OH_Drawing_Path*); */ void OH_Drawing_PathReset(OH_Drawing_Path*); +/** + * @brief 用于获取路径矩形对象指针。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Path 指向路径对象的指针。 + * @return 函数会返回一个指向路径矩形对象指针。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Rect* OH_Drawing_PathGetBounds(OH_Drawing_Path*); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h index 6daef580..d7fa3f62 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_pen.h @@ -250,6 +250,38 @@ OH_Drawing_PenLineJoinStyle OH_Drawing_PenGetJoin(const OH_Drawing_Pen*); */ void OH_Drawing_PenSetJoin(OH_Drawing_Pen*, OH_Drawing_PenLineJoinStyle); +/** + * @brief 用于复制一个画笔对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 指向待复制的画笔对象的指针。 + * @return 函数会返回一个指针,指针指向复制生成的画笔对象。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Pen* OH_Drawing_PenCopy(OH_Drawing_Pen*); + +/** + * @brief 用于设置画笔的路径效果。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 指向画笔对象的指针。 + * @param OH_Drawing_PathEffect 指向路径效果的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_PenSetPathEffect(OH_Drawing_Pen*, OH_Drawing_PathEffect*); + +/** + * @brief 用于重置一个画笔对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Pen 指向画笔对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_PenReset(OH_Drawing_Pen*); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_rect.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_rect.h index 539e3831..e28de4ef 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_rect.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_rect.h @@ -59,6 +59,39 @@ extern "C" { */ OH_Drawing_Rect* OH_Drawing_RectCreate(float left, float top, float right, float bottom); +/** + * @brief 用于获取矩形对象高度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @since 12 + * @version 1.0 + */ +float OH_Drawing_RectGetHeight(OH_Drawing_Rect* cRect); + +/** + * @brief 用于获取矩形对象的宽度。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @return Returns the width. + * @since 12 + * @version 1.0 + */ +float OH_Drawing_RectGetWidth(OH_Drawing_Rect*); + +/** + * @brief 如果矩形other与矩形cRect相交,则返回真并将矩形cRect设置为该交集,否则返回假且不更改矩形cRect。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param cRect 指向矩形对象的指针。 + * @param other 指向矩形对象的指针。 + * @return 真表示这两个矩形相交,假表示不相交。 + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_RectIntersect(OH_Drawing_Rect* cRect, OH_Drawing_Rect* other); + /** * @brief 用于销毁矩形对象并回收该对象占有的内存。 * @@ -69,6 +102,17 @@ OH_Drawing_Rect* OH_Drawing_RectCreate(float left, float top, float right, float */ void OH_Drawing_RectDestroy(OH_Drawing_Rect*); +/** + * @brief 用于获取矩形对象的宽度 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Rect 指向矩形对象的指针。 + * @return Returns the width. + * @since 12 + * @version 1.0 + */ +float OH_Drawing_RectGetWidth(OH_Drawing_Rect*); + #ifdef __cplusplus } #endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_region.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_region.h new file mode 100644 index 00000000..edf27e3b --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_region.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 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_REGION_H +#define C_INCLUDE_DRAWING_REGION_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Provides functions such as 2D graphics rendering, text drawing, and image display. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 12 + * @version 1.0 + */ + +/** + * @file drawing_region.h + * + * @brief Declares functions related to the region object in the drawing module. + * + * @since 12 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Creates an OH_Drawing_Region object. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return Returns the pointer to the OH_Drawing_Region object created. + * @since 12 + * @version 1.0 + */ +OH_Drawing_Region* OH_Drawing_RegionCreate(void); + +/** + * @brief Destroys an OH_Drawing_Region object and reclaims the memory occupied by the object. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Region Indicates the pointer to an OH_Drawing_Region object. + * @since 12 + * @version 1.0 + */ +void OH_Drawing_RegionDestroy(OH_Drawing_Region*); + +#ifdef __cplusplus +} +#endif +/** @} */ +#endif diff --git a/zh-cn/native_sdk/graphic/native_drawing/drawing_surface.h b/zh-cn/native_sdk/graphic/native_drawing/drawing_surface.h new file mode 100644 index 00000000..d08fa020 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_surface.h @@ -0,0 +1,92 @@ +/* + * 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_SURFACE_H +#define C_INCLUDE_DRAWING_SURFACE_H + +/** + * @addtogroup Drawing + * @{ + * + * @brief Provides functions such as 2D graphics rendering, text drawing, and image display. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * + * @since 12 + * @version 1.0 + */ + +/** + * @file drawing_surface.h + * + * @brief Declares functions related to the surface object in the drawing module. + * + * @since 12 + * @version 1.0 + */ + +#include "drawing_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 用于创建一个Surface对象。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @return 函数会返回一个指针,指针指向创建的Surface对象。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Surface* OH_Drawing_SurfaceCreate(void); + +/** + * @brief 用于销毁Surface对象并回收该对象占有的内存。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Surface 指向Surface对象的指针。 + * @since 11 + * @version 1.0 + */ +void OH_Drawing_SurfaceDestroy(OH_Drawing_Surface*); + +/** + * @brief 用于将一个位图对象绑定到Surface中。 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Surface 指向Surface的指针。 + * @param OH_Drawing_Bitmap 指向位图对象的指针。 + * @since 12 + * @version 1.0 + */ +void OH_Drawing_SurfaceBind(OH_Drawing_Surface*, OH_Drawing_Bitmap*); + +/** + * @brief 用于获取图像Surface内容. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Surface 指向位图Surface的指针。 + * @return Returns 函数会返回一个指针,指针指向获取的位图对象。 + * @since 12 + * @version 1.0 + */ +OH_Drawing_Image* OH_Drawing_SurfaceGetImageSnapshot(OH_Drawing_Surface *); + +#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 index 4fc0f7a1..511f30b1 100644 --- a/zh-cn/native_sdk/graphic/native_drawing/drawing_types.h +++ b/zh-cn/native_sdk/graphic/native_drawing/drawing_types.h @@ -61,6 +61,14 @@ typedef struct OH_Drawing_Canvas OH_Drawing_Canvas; */ typedef struct OH_Drawing_Pen OH_Drawing_Pen; +/** + * @brief 定义为区域,该区域用于表示画布图层上的封闭区域。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Region OH_Drawing_Region; + /** * @brief 定义为画刷,画刷用于描述填充图形的样式和颜色。 * @@ -77,6 +85,38 @@ typedef struct OH_Drawing_Brush OH_Drawing_Brush; */ typedef struct OH_Drawing_Path OH_Drawing_Path; +/** + * @brief 定义为顶点。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Vertices OH_Drawing_Vertices; + +/** + * @brief 定义为图片。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Image OH_Drawing_Image; + +/** + * @brief 定义描述要拉伸或收缩的图像区域的晶格。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Lattice OH_Drawing_Lattice; + +/** + * @brief 定义采样选项,用于描述采样模式。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_SamplingOptions OH_Drawing_SamplingOptions; + /** * @brief 定义为位图,位图是一块内存,内存中包含了描述一张图片的像素数据。 * @@ -93,6 +133,14 @@ typedef struct OH_Drawing_Bitmap OH_Drawing_Bitmap; */ typedef struct OH_Drawing_Point OH_Drawing_Point; +/** + * @brief 定义一个点,用于描述三维空间坐标点。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Point3 OH_Drawing_Point3; + /** * @brief 用于描述矩形。 * @@ -182,6 +230,30 @@ typedef struct OH_Drawing_TextBlob OH_Drawing_TextBlob; */ typedef struct OH_Drawing_TextBlobBuilder OH_Drawing_TextBlobBuilder; +/** + * @brief 定义图像。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Image OH_Drawing_Image; + +/** + * @brief 定义图像宽高、像素存储格式。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Image_Info OH_Drawing_Image_Info; + +/** + * @brief 定义一个Surface对象。 + * + * @since 12 + * @version 1.0 + */ +typedef struct OH_Drawing_Surface OH_Drawing_Surface; + /** * @brief 用于描述位图像素的存储格式。 * @@ -307,6 +379,31 @@ typedef enum { BLEND_MODE_LUMINOSITY, } OH_Drawing_BlendMode; +/** + * @brief 阴影标志的枚举。 + * + * @since 12 + * @version 1.0 + */ +typedef enum { + /** + * 不使用阴影标志。 + */ + SHADOW_FLAGS_NONE, + /** + * 遮挡对象是透明的标志。 + */ + SHADOW_FLAGS_TRANSPARENT_OCCLUDER, + /** + * 无需分析阴影标志。 + */ + SHADOW_FLAGS_GEOMETRIC_ONLY, + /** + * 使用所有阴影标志。 + */ + SHADOW_FLAGS_ALL, +} OH_Drawing_CanvasShadowFlags; + #ifdef __cplusplus } #endif -- Gitee From 27bcf8f7e7854e83c8b2ef66321259c0de27b99a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BC=9F?= Date: Thu, 1 Feb 2024 18:41:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0createPixelMap=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E4=BB=A5=E5=8F=8A=E5=8F=82=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘伟 --- zh-cn/native_sdk/media/image/image_pixel_map_mdk.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zh-cn/native_sdk/media/image/image_pixel_map_mdk.h b/zh-cn/native_sdk/media/image/image_pixel_map_mdk.h index 34b75105..9b0cab50 100644 --- a/zh-cn/native_sdk/media/image/image_pixel_map_mdk.h +++ b/zh-cn/native_sdk/media/image/image_pixel_map_mdk.h @@ -128,6 +128,8 @@ struct OhosPixelMapCreateOps { uint32_t width; /** 图片的高, 用pixels表示 */ uint32_t height; + /** 图片的原始数据格式 */ + int32_t srcPixelFormat; /** 图片的格式 */ int32_t pixelFormat; /** 图片的编辑类型 */ @@ -157,6 +159,7 @@ struct OhosPixelMapCreateOps { * 如果创建编码器失败则返回 IMAGE_RESULT_CREATE_ENCODER_FAILED {@link IRNdkErrCode}; * 如果检查格式失败则返回 IMAGE_RESULT_CHECK_FORMAT_ERROR {@link IRNdkErrCode}; * 如果skia能力失败则返回 IMAGE_RESULT_THIRDPART_SKIA_ERROR {@link IRNdkErrCode}; + * 如果ffmpeg能力失败则返回 IMAGE_RESULT_THIRDPART_FFMPEG_ERROR {@link IRNdkErrCode}; * 如果图像输入数据失败则返回 IMAGE_RESULT_DATA_ABNORMAL {@link IRNdkErrCode}; * 如果共享内存失败则返回 IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST {@link IRNdkErrCode}; * 如果共享内存数据错误则返回 IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL {@link IRNdkErrCode}; @@ -200,6 +203,7 @@ int32_t OH_PixelMap_CreatePixelMap(napi_env env, OhosPixelMapCreateOps info, * 如果创建编码器失败则返回 IMAGE_RESULT_CREATE_ENCODER_FAILED {@link IRNdkErrCode}; * 如果检查格式失败则返回 IMAGE_RESULT_CHECK_FORMAT_ERROR {@link IRNdkErrCode}; * 如果skia能力失败则返回 IMAGE_RESULT_THIRDPART_SKIA_ERROR {@link IRNdkErrCode}; + * 如果ffmpeg能力失败则返回 IMAGE_RESULT_THIRDPART_FFMPEG_ERROR {@link IRNdkErrCode}; * 如果图像输入数据失败则返回 IMAGE_RESULT_DATA_ABNORMAL {@link IRNdkErrCode}; * 如果共享内存失败则返回 IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST {@link IRNdkErrCode}; * 如果共享内存数据错误则返回 IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL {@link IRNdkErrCode}; -- Gitee