diff --git a/graphic/graphic_2d/native_drawing/drawing_font.h b/graphic/graphic_2d/native_drawing/drawing_font.h
index 38ea644f359e53892c949eb6f499df748d079975..c4b92c34ba490272f5a82e7dccbb352265ad6ef9 100644
--- a/graphic/graphic_2d/native_drawing/drawing_font.h
+++ b/graphic/graphic_2d/native_drawing/drawing_font.h
@@ -497,6 +497,41 @@ typedef struct OH_Drawing_Font_Metrics {
*/
float OH_Drawing_FontGetMetrics(OH_Drawing_Font*, OH_Drawing_Font_Metrics*);
+/**
+ * @brief Retrieves the bound rect for each glyph in glyph array.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param font Indicates the pointer to an OH_Drawing_Font object.
+ * @param glyphs Indicates the array of glyph indices to be measured.
+ * @param count Indicates the number of glyphs.
+ * @param bounds The bound rect array for each glyph, returned to the caller.
+ * @return Returns the error code.
+ * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
+ * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, glyphs
+ * and bounds is nullptr or count is 0.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_ErrorCode OH_Drawing_FontGetBounds(const OH_Drawing_Font* font, const uint16_t* glyphs, uint32_t count,
+ OH_Drawing_Array* bounds);
+
+/**
+ * @brief Retrieves the path for specified Glyph.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param font Indicates the pointer to an OH_Drawing_Font object.
+ * @param glyph glyph index to be obtained.
+ * @param path The path object, returned to the caller.
+ * @return Returns the error code.
+ * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
+ * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of font, path
+ * is nullptr or glyph not exist.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_ErrorCode OH_Drawing_FontGetPathForGlyph(const OH_Drawing_Font* font, uint16_t glyph,
+ OH_Drawing_Path* path);
+
#ifdef __cplusplus
}
#endif
diff --git a/graphic/graphic_2d/native_drawing/drawing_rect.h b/graphic/graphic_2d/native_drawing/drawing_rect.h
index e07abff68df1f0ac2cd19ec03a9dacac6565144f..a5b99c905e02725825b6ae2d5cb60afd30c86d90 100644
--- a/graphic/graphic_2d/native_drawing/drawing_rect.h
+++ b/graphic/graphic_2d/native_drawing/drawing_rect.h
@@ -40,6 +40,7 @@
* @version 1.0
*/
+#include "drawing_error_code.h"
#include "drawing_types.h"
#ifdef __cplusplus
@@ -214,6 +215,64 @@ void OH_Drawing_RectCopy(OH_Drawing_Rect* src, OH_Drawing_Rect* dst);
*/
void OH_Drawing_RectDestroy(OH_Drawing_Rect*);
+/**
+ * @brief Creates an OH_Drawing_Array object, which is used to store multiple OH_Drawing_Rect object.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param size Indicates the size of the array object.
+ * @return Returns the pointer to the OH_Drawing_Array object created.
+ * If nullptr is returned, the creation fails.
+ * The possible cause of the failure is that the available memory is empty,
+ * or size is invalid.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_Array* OH_Drawing_RectCreateArray(size_t size);
+
+/**
+ * @brief Gets the size of an OH_Drawing_Array object.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param rectArray Indicates the array object.
+ * @param pSize Indicates the size pointer.
+ * @return Returns the error code.
+ * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
+ * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if rectArray or pSize is nullptr.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_ErrorCode OH_Drawing_RectGetArraySize(OH_Drawing_Array* rectArray, size_t* pSize);
+
+/**
+ * @brief Gets the specified OH_Drawing_Rect object from OH_Drawing_Array object.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param rectArray Indicates the array object.
+ * @param index Indicates the index of array, caller must make sure the index is valid.
+ * @param rect Pointers to Pointer of OH_Drawing_Rect object, returned to the caller.
+ * @return Returns the error code.
+ * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
+ * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if rectArray or pprect is nullptr,
+ * or index is valid.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_ErrorCode OH_Drawing_RectGetArrayElement(OH_Drawing_Array* rectArray, size_t index,
+ OH_Drawing_Rect** rect);
+
+/**
+ * @brief Destroys an array OH_Drawing_Rect object and reclaims the memory occupied by the object.
+ *
+ * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
+ * @param rectArray Indicates the pointer to an OH_Drawing_Array object.
+ * @return Returns the error code.
+ * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful.
+ * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if rectArray is nullptr.
+ * @since 14
+ * @version 1.0
+ */
+OH_Drawing_ErrorCode OH_Drawing_RectDestroyArray(OH_Drawing_Array* rectArray);
+
#ifdef __cplusplus
}
#endif
diff --git a/graphic/graphic_2d/native_drawing/drawing_types.h b/graphic/graphic_2d/native_drawing/drawing_types.h
index e040acdfc632a9a5edb7136d40d30a20b6ae16f0..e2c63d7d1789c72980db642b28263e40dbcce58d 100644
--- a/graphic/graphic_2d/native_drawing/drawing_types.h
+++ b/graphic/graphic_2d/native_drawing/drawing_types.h
@@ -168,6 +168,14 @@ typedef struct OH_Drawing_PathEffect OH_Drawing_PathEffect;
*/
typedef struct OH_Drawing_Rect OH_Drawing_Rect;
+/**
+ * @brief Defines an array object, which is used to store multiple NDK object.
+ *
+ * @since 14
+ * @version 1.0
+ */
+typedef struct OH_Drawing_Array OH_Drawing_Array;
+
/**
* @brief Defines a roundRect, which is used to describe the round rectangle.
*
diff --git a/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json b/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json
index 9c5b0d26911786bccd36ed4d9437843b3385b714..05a259280e4374d7bcf82084a092e6cb032dbd8f 100644
--- a/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json
+++ b/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json
@@ -1465,5 +1465,29 @@
{
"first_introduced": "13",
"name":"OH_Drawing_RecordCmdDestroy"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_FontGetBounds"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_FontGetPathForGlyph"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_RectCreateArray"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_RectGetArraySize"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_RectGetArrayElement"
+ },
+ {
+ "first_introduced": "14",
+ "name":"OH_Drawing_RectDestroyArray"
}
]
\ No newline at end of file