From 196eca4bb5ee6258ebbca7051aede16247635efe Mon Sep 17 00:00:00 2001 From: l00916518 Date: Wed, 5 Aug 2026 22:34:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5,=E6=B6=88=E9=99=A4=E5=B7=AE?= =?UTF-8?q?=E5=BC=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: l00916518 Co-Authored-By:Agent 🤖‍ AI[100%] 👌 AI Adopted[100%] 🧑 Human[0%] Co-authored-by: codex (gpt-5.6-sol) --- .../ace_engine/native/native_interface.h | 133 ++ .../arkui/ace_engine/native/native_node_ani.h | 135 ++ .../ace_engine/native/native_node_napi.h | 390 +++ zh-cn/arkui/ace_engine/native/native_render.h | 2121 +++++++++++++++++ .../node_attributes/custom_attributes.h | 91 + 5 files changed, 2870 insertions(+) create mode 100644 zh-cn/arkui/ace_engine/native/native_interface.h create mode 100644 zh-cn/arkui/ace_engine/native/native_node_ani.h create mode 100644 zh-cn/arkui/ace_engine/native/native_node_napi.h create mode 100644 zh-cn/arkui/ace_engine/native/native_render.h create mode 100644 zh-cn/arkui/ace_engine/native/node_attributes/custom_attributes.h diff --git a/zh-cn/arkui/ace_engine/native/native_interface.h b/zh-cn/arkui/ace_engine/native/native_interface.h new file mode 100644 index 000000000..abdbcec75 --- /dev/null +++ b/zh-cn/arkui/ace_engine/native/native_interface.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2024 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. + */ + +/** + * @addtogroup ArkUI_NativeModule + * @{ + * + * @brief Provides UI capabilities of ArkUI on the native side, such as UI component creation and destruction, + * tree node operations, attribute setting, and event listening. + * + * @since 12 + */ + +/** + * @file native_interface.h + * + * @brief Provides a unified entry for the native module APIs. + * + * @library libace_ndk.z.so + * @syscap SystemCapability.ArkUI.ArkUI.Full + * @kit ArkUI + * @since 12 + */ + +#ifndef ARKUI_NATIVE_INTERFACE_H +#define ARKUI_NATIVE_INTERFACE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Defines the native API types. + * + * @since 12 + */ +typedef enum { + /** API related to UI components. For details, see the struct definition in . */ + ARKUI_NATIVE_NODE, + /** API related to dialog boxes. For details, see the struct definition in . */ + ARKUI_NATIVE_DIALOG, + /** API related to gestures. For details, see the struct definition in . */ + ARKUI_NATIVE_GESTURE, + /** API related to animations. For details, see the struct definition in .*/ + ARKUI_NATIVE_ANIMATE, + /** + * 多线程UI组件相关接口类型,详见{@link native_node.h}中的{@link 结构体}类型定义。 + * @since 22 + */ + ARKUI_MULTI_THREAD_NATIVE_NODE +} ArkUI_NativeAPIVariantKind; +/** + * @brief Obtains the native API set of a specified type. + * + * @param type Indicates the type of the native API set provided by ArkUI, for example, ARKUI_NATIVE_NODE + * and ARKUI_NATIVE_GESTURE. + * @param structName Indicates the name of a native struct defined in the corresponding header file, for example, + * ArkUI_NativeNodeAPI_1 in . + * @return Returns the pointer to the abstract native API, which can be used after being converted into a specific type. + * @code {.cpp} + * #include + * #include + * #include + * + * auto* anyNativeAPI = OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"); + * if (anyNativeAPI) { + * auto nativeNodeApi = reinterpret_cast(anyNativeAPI); + * } + * auto anyGestureAPI = OH_ArkUI_QueryModuleInterface(ARKUI_NATIVE_GESTURE, "ArkUI_NativeGestureAPI_1"); + * if (anyNativeAPI) { + * auto basicGestureApi = reinterpret_cast(anyGestureAPI); + * } + * @endcode + * + * @since 12 + */ +void* OH_ArkUI_QueryModuleInterfaceByName(ArkUI_NativeAPIVariantKind type, const char* structName); + +/** + * @brief 获取最新的错误消息,该消息包含错误码、方法名称及错误原因。 + * 当其他接口返回错误码时,会保存对应的错误信息, + * 通过此接口可获取当前存储的错误消息。 + * 此接口返回的信息可能随版本演进,仅用于输出以辅助分析和定位问题, + * 不得用于逻辑判断。 + * + * 返回的字符串为系统创建的全局字符串,可能被其他线程修改。调用方不能对其内容进行修改,如果有对齐编辑的需要,自行创建字符串拷贝内容。无需调用方进行内存释放。 + * + * @return 返回最新的错误信息。 + * @since 26.0.0 + */ +const char* OH_ArkUI_NativeModule_GetErrorMessage(); + +/** + * @brief Obtains the macro function corresponding to a struct pointer based on the struct type. + * + * @code {.cpp} + * #include + * #include + * + * ArkUI_NativeNodeAPI_1* nativeNodeApi = nullptr; + * OH_ArkUI_GetModuleInterface(ARKUI_NATIVE_NODE, ArkUI_NativeNodeAPI_1, nativeNodeApi); + * @endcode + * + * @since 12 + */ +#define OH_ArkUI_GetModuleInterface(nativeAPIVariantKind, structType, structPtr) \ + do { \ + void* anyNativeAPI = OH_ArkUI_QueryModuleInterfaceByName(nativeAPIVariantKind, #structType); \ + if (anyNativeAPI) { \ + structPtr = (structType*)(anyNativeAPI); \ + } \ + } while (0) + +#ifdef __cplusplus +}; +#endif + +#endif // ARKUI_NATIVE_INTERFACE_H +/** @} */ \ No newline at end of file diff --git a/zh-cn/arkui/ace_engine/native/native_node_ani.h b/zh-cn/arkui/ace_engine/native/native_node_ani.h new file mode 100644 index 000000000..0d79aa006 --- /dev/null +++ b/zh-cn/arkui/ace_engine/native/native_node_ani.h @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2025 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. + */ + +/** + * @addtogroup ArkUI_NativeModule + * @{ + * + * @brief Provides UI capabilities of ArkUI on the native side, such as UI component creation and destruction, + * tree node operations, attribute setting, and event listening. + * + * @since 23 + */ + +/** + * @file native_node_ani.h + * + * @brief 提供ArkTS1.2的FrameNode转换NodeHandle的方式。 + * + * @library libace_ndk.z.so + * @syscap SystemCapability.ArkUI.ArkUI.Full + * @kit ArkUI + * @since 23 + */ + +#ifndef ARKUI_NATIVE_NODE_ANI_H +#define ARKUI_NATIVE_NODE_ANI_H + +#include "ani/ani.h" + +#include "native_type.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。 + * + * @param env ANI的环境指针。 + * @param frameNode ArkTS侧创建的FrameNode对象。 + * @param handle ArkUI_NodeHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 23 + */ +int32_t OH_ArkUI_NativeModule_GetNodeHandleFromAniValue(ani_env* env, ani_object frameNode, ArkUI_NodeHandle* handle); + +/** + * @brief 获取ArkTS侧创建的UIContext对象映射到Native侧的ArkUI_ContextHandle。 + * + * @param env ANI的环境指针。 + * @param context ArkTS侧创建的UIContext对象。 + * @param handle ArkUI_ContextHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 23 + */ +int32_t OH_ArkUI_NativeModule_GetContextFromAniValue(ani_env* env, ani_object context, ArkUI_ContextHandle* handle); + +/** + * @brief 获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。 + * + * @param env ANI的环境指针。 + * @param nodeContent ArkTS侧创建的NodeContent对象。 + * @param content ArkUI_NodeContentHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 23 + */ +int32_t OH_ArkUI_NativeModule_GetNodeContentFromAniValue( + ani_env *env, ani_object nodeContent, ArkUI_NodeContentHandle *content); + +/** + * @brief 获取指定节点所在的NavDestination页面的参数。 + * + * @param node 指定的节点。 + * @param env ANI的环境指针。 + * @param param 返回的页面参数。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询页面参数信息失败。 + * @since 23 + */ +ArkUI_ErrorCode OH_ArkUI_NativeModule_GetNavDestinationAniParam(ArkUI_NodeHandle node, ani_env* env, ani_value* param); + +/** + * @brief 获取ArkTS侧的DrawableDescriptor对象,并将其映射到Native侧的ArkUI_DrawableDescriptor对象。 + * + * @param env 表示ANI环境指针。 + * @param drawable 表示在ArkTS侧创建的DrawableDescriptor对象。 + * @param drawableDescriptor 表示指向ArkUI_DrawableDescriptor对象的指针。 + * @return 返回错误代码。 + * 如果操作成功,则返回 {@link ARKUI_ERROR_CODE_NO_ERROR}。 + * 如果发生参数错误,则返回 {@link ARKUI_ERROR_CODE_PARAM_INVALID}。 + * @since 23 + */ +int32_t OH_ArkUI_NativeModule_GetDrawableDescriptorFromAniValue( + ani_env *env, ani_object drawable, ArkUI_DrawableDescriptor **drawableDescriptor); + +/** + * @brief 获取ArkTS侧的Resource对象,并将其映射到Native侧的ArkUI_DrawableDescriptor对象。 + * + * @param env 表示ANI环境指针。 + * @param resource 表示在ArkTS端创建的Resource对象。 + * @param drawableDescriptor 表示指向ArkUI_DrawableDescriptor对象的指针。 + * @return 返回错误代码。 + * 如果操作成功,则返回 {@link ARKUI_ERROR_CODE_NO_ERROR}。 + * 如果发生参数错误,则返回 {@link ARKUI_ERROR_CODE_PARAM_INVALID}。 + * @since 23 + */ +int32_t OH_ArkUI_NativeModule_GetDrawableDescriptorFromResourceAniValue( + ani_env *env, ani_object resource, ArkUI_DrawableDescriptor **drawableDescriptor); + +#ifdef __cplusplus +}; +#endif + +#endif // ARKUI_NATIVE_NODE_ANI_H +/** @} */ \ No newline at end of file diff --git a/zh-cn/arkui/ace_engine/native/native_node_napi.h b/zh-cn/arkui/ace_engine/native/native_node_napi.h new file mode 100644 index 000000000..d2dcde1c0 --- /dev/null +++ b/zh-cn/arkui/ace_engine/native/native_node_napi.h @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2024 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. + */ + +/** + * @addtogroup ArkUI_NativeModule + * @{ + * + * @brief Provides UI capabilities of ArkUI on the native side, such as UI component creation and destruction, + * tree node operations, attribute setting, and event listening. + * + * @since 12 + */ + +/** + * @file native_node_napi.h + * + * @brief 提供ArkTS侧的{@link FrameNode}转换{@link NodeHandle}的方式。 + * + * @library libace_ndk.z.so + * @syscap SystemCapability.ArkUI.ArkUI.Full + * @kit ArkUI + * @since 12 + */ + +#ifndef ARKUI_NATIVE_NODE_NAPI_H +#define ARKUI_NATIVE_NODE_NAPI_H + +#include "drawable_descriptor.h" +#include "napi/native_api.h" +#include "native_type.h" + +#ifdef __cplusplus +extern "C" { +#endif +/** + * @brief 获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。 + * + * @param env Node-API的环境指针。 + * @param frameNode ArkTS侧创建的FrameNode对象。 + * @param handle ArkUI_NodeHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 12 + */ +int32_t OH_ArkUI_GetNodeHandleFromNapiValue(napi_env env, napi_value frameNode, ArkUI_NodeHandle* handle); + +/** + * @brief 获取ArkTS侧创建的{@link UIContext}对象映射到Native侧的ArkUI_ContextHandle。 + * + * @param env napi的环境指针。 + * @param value ArkTS侧创建的context对象。 + * @param context ArkUI_ContextHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 12 + */ +int32_t OH_ArkUI_GetContextFromNapiValue(napi_env env, napi_value value, ArkUI_ContextHandle* context); + +/** + * @brief 获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。 + * + * @param env napi的环境指针。 + * @param value ArkTS侧创建的NodeContent对象。 + * @param content ArkUI_NodeContentHandle指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 12 + */ +int32_t OH_ArkUI_GetNodeContentFromNapiValue(napi_env env, napi_value value, ArkUI_NodeContentHandle* content); + +/** + * @brief 将ArkTS侧创建的{@link DrawableDescriptor}对象映射到Native侧的{@link ArkUI_DrawableDescriptor}。 + * + * @param env napi的环境指针。 + * @param value ArkTS侧创建的{@link DrawableDescriptor}对象。 + * @param drawableDescriptor 接受ArkUI_DrawableDescriptor指针的对象。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 12 + */ +int32_t OH_ArkUI_GetDrawableDescriptorFromNapiValue( + napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor); + +/** + * @brief 将ArkTS侧通过$r()获取的资源对象转换为Native侧可使用的{@link ArkUI_DrawableDescriptor}对象。 + * + * @param env napi的环境指针。 + * @param value ArkTS侧创建的$r资源对象。 + * @param drawableDescriptor 接受ArkUI_DrawableDescriptor指针的对象。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 12 + */ +int32_t OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue( + napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor); + +/** + * @brief 获取当前节点所在的{@link Navigation}组件的ID。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,NavigationID写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 数据大小超过指定的缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavigationId( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief 获取当前节点所在的{@link NavDestination}组件的名称。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,被查询的NavDestination名称写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 给定的buffer size小于可以容纳目标的最小缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavDestinationName( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief 获取当前节点所在的Navigation栈的长度。 + * + * @param node 指定的节点。 + * @param length 栈的长度。查询成功后将结果写回该参数。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavStackLength(ArkUI_NodeHandle node, int32_t* length); + +/** + * @brief 根据给定索引值,获取当前节点所在的Navigation栈中的页面名称。索引值从0开始计数,0为栈底。 + * + * @param node 指定的节点。 + * @param index 被查询NavDestination在栈中的索引。 + * @param buffer 缓冲区,被查询页面的名称写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_NODE_INDEX_INVALID} index为非法值。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 给定的buffer size小于可以容纳目标的最小缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavDestinationNameByIndex( + ArkUI_NodeHandle node, int32_t index, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief 获取当前节点所在的NavDestination组件的ID。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,NavDestinationID写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 数据大小超过指定的缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavDestinationId( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief 获取当前节点所在的NavDestination组件的状态。 + * + * @param node 指定的节点。 + * @param state NavDestination的状态值写回该参数中。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavDestinationState(ArkUI_NodeHandle node, ArkUI_NavDestinationState* state); + +/** + * @brief 获取当前节点所在的NavDestination组件在页面栈的索引。 + * + * @param node 指定的节点。 + * @param index 索引值,从0开始计数。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetNavDestinationIndex(ArkUI_NodeHandle node, int32_t* index); + +/** + * @brief 获取当前节点所在的NavDestination组件的参数。 + * + * @param node 指定的节点。 + * @return 参数对象。如返回为空,则说明参数不存在或指定的节点为空。 + * @since 12 + */ +napi_value OH_ArkUI_GetNavDestinationParam(ArkUI_NodeHandle node); + +/** + * @brief 获取当前节点所在{@link Router}页面栈中的索引。 + * + * @param node 指定的节点。 + * @param index 索引值,从1开始计数。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 指定的节点或传递的索引异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetRouterPageIndex(ArkUI_NodeHandle node, int32_t* index); + +/** + * @brief 获取当前节点所在Router页面的名称。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,页面名称写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 给定的buffer size小于可以容纳目标的最小缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetRouterPageName( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief 获取当前节点所在Router页面的路径。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,页面路径写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 给定的buffer size小于可以容纳目标的最小缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetRouterPagePath( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); +/** + * @brief 获取当前节点所在Router页面的状态。 + * + * @param node 指定的节点。 + * @param state Router页面的状态值写回该参数中。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetRouterPageState(ArkUI_NodeHandle node, ArkUI_RouterPageState* state); + +/** + * @brief 获取当前节点所在Router页面的ID。 + * + * @param node 指定的节点。 + * @param buffer 缓冲区,页面ID写入该内存区域。 + * @param bufferSize 缓冲区大小。 + * @param writeLength 在返回{@link ARKUI_ERROR_CODE_NO_ERROR}时表示实际写入到缓冲区的字符串长度。 + *
在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。 + *
{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR} 数据大小超过指定的缓冲区大小。 + * @since 12 + */ +ArkUI_ErrorCode OH_ArkUI_GetRouterPageId( + ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength); + +/** + * @brief Register a callback to be executed when rendering in the next frame. Cannot be called on + * the non-UI thread. Checking for non-UI thread calls will abort. + * + * @param uiContext ArkUI_ContextHandle. + * @param userData Indicates the custom data to be saved. + * @param callback Custom callback function. + * @param nanoTimestamp Timestamp of frame signal. + * @param frameCount Frame count. + * @return Returns the result code. + * Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful. + * Returns {@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} if the CAPI init error. + * Returns {@link ARKUI_ERROR_CODE_UI_CONTEXT_INVALID} if the uiContext is invalid. + * Returns {@link ARKUI_ERROR_CODE_CALLBACK_INVALID} if the callback function is invalid. + * @since 18 + */ +int32_t OH_ArkUI_PostFrameCallback(ArkUI_ContextHandle uiContext, void* userData, + void (*callback)(uint64_t nanoTimestamp, uint32_t frameCount, void* userData)); + +/** + * @brief 注册一个回调函数,在下一帧渲染结束后如果距离下一帧到来剩余时间大于1ms时,该回调函数将被执行;如果剩余时间小于1ms时,回调函数将被顺延至当某个下一帧的剩余时间大于1ms时再执行。如果当前没有下一帧,将自动请求下一帧。 + * + * @param uiContext UIContext对象,用以绑定实例。 + * @param userData 自定义事件参数,当自定义回调函数触发时在回调参数中携带回来。 + * @param callback 自定义回调函数,会在下一帧事件结束后剩余时间大于1ms时回调执行。 + * @param nanoTimeLeft 下一帧渲染后的剩余时间。 + * @param frameCount 帧号。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化错误。 + *
{@link ARKUI_ERROR_CODE_UI_CONTEXT_INVALID} uiContext对象无效。 + *
{@link ARKUI_ERROR_CODE_CALLBACK_INVALID} 回调函数无效。 + * @since 20 + */ +int32_t OH_ArkUI_PostIdleCallback(ArkUI_ContextHandle uiContext, void* userData, + void (*callback)(uint64_t nanoTimeLeft, uint32_t frameCount, void* userData)); + +/** + * @brief 初始化指定上下文环境的ArkUI相关接口。该函数禁止在非UI线程中调用,否则程序将主动abort。 + * + * @param env Node-API的环境指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 参数无效(如env为null或设置白名单失败)。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化错误。 + * @since 20 + */ +ArkUI_ErrorCode OH_ArkUI_InitModuleForArkTSEnv(napi_env env); + +/** + * @brief 通知指定的上下文环境已销毁。该函数禁止在非UI线程中调用,否则程序将主动abort。 + * + * @param env Node-API的环境指针。 + * @since 20 + */ +void OH_ArkUI_NotifyArkTSEnvDestroy(napi_env env); + +/** + * @brief 启用或禁用事件直通。事件直通表示在事件分发过程中,不经过{@link 重采样}直接下发给组件。 + * + * @param uiContext {@link UIContext}对象,用以绑定实例。 + * @param enabled 启用或禁用事件直通。true表示启用事件直通,false表示禁用事件直通。 + * @param type 指定启用或禁用事件直通的原始输入事件类型{@link ArkUI_RawInputEventType}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} UIContext对象无效。 + * @since 26.0.0 + */ +ArkUI_ErrorCode OH_ArkUI_EnableEventPassthrough(ArkUI_ContextHandle uiContext, bool enabled, + ArkUI_RawInputEventType type); + +#ifdef __cplusplus +}; +#endif + +#endif // ARKUI_NATIVE_NODE_NAPI_H +/** @} */ \ No newline at end of file diff --git a/zh-cn/arkui/ace_engine/native/native_render.h b/zh-cn/arkui/ace_engine/native/native_render.h new file mode 100644 index 000000000..90a0bc860 --- /dev/null +++ b/zh-cn/arkui/ace_engine/native/native_render.h @@ -0,0 +1,2121 @@ +/* + * Copyright (c) 2025 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. + */ + +/** + * @addtogroup ArkUI_RenderNodeUtils + * @{ + * + * @brief Provides RenderNode capabilities of ArkUI on the native side, such as RenderNode creation and destruction, + * tree node operations, and attribute setting. + * + * @since 20 + */ + +/** + * @file native_render.h + * + * @brief 提供NativeRender接口的类型定义。更多详细介绍请参考{@link 构建渲染节点}。 + * + * @library libace_ndk.z.so + * @syscap SystemCapability.ArkUI.ArkUI.Full + * @kit ArkUI + * @since 20 + */ + +#ifndef ARKUI_NATIVE_RENDER_H +#define ARKUI_NATIVE_RENDER_H + +#ifdef __cplusplus +#include +#else +#include +#endif + +#include "native_type.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 定义渲染节点指针,用于在ArkUI_RenderNodeUtils相关接口中表示和传递渲染节点对象。 + * + * @since 20 + */ +typedef struct ArkUI_RenderNode* ArkUI_RenderNodeHandle; + +/** + * @brief 定义渲染内容修改器指针,用于引用内容修改器。内容修改器可挂载到渲染节点,并附加渲染属性或设置onDraw回调。 + * + * @since 20 + */ +typedef struct ArkUI_RenderContentModifier* ArkUI_RenderContentModifierHandle; + +/** + * @brief 定义ArkUI原生浮点渲染属性指针,用于创建、传递并管理目标内容修改器上的浮点属性。 + * + * @since 20 + */ +typedef struct ArkUI_FloatProperty* ArkUI_FloatPropertyHandle; + +/** + * @brief 定义二维向量属性指针,用于在ArkUI原生渲染属性接口中创建、附加、设置、获取和释放二维向量属性。 + * + * @since 20 + */ +typedef struct ArkUI_Vector2Property* ArkUI_Vector2PropertyHandle; + +/** + * @brief 定义颜色属性指针,用于表示ArkUI中的颜色属性。 + * + * @since 20 + */ +typedef struct ArkUI_ColorProperty* ArkUI_ColorPropertyHandle; + +/** + * @brief 定义可动画的浮点数属性指针。 + * + * @since 20 + */ +typedef struct ArkUI_FloatAnimatableProperty* ArkUI_FloatAnimatablePropertyHandle; + +/** + * @brief 定义可动画的二维向量属性指针。 + * + * @since 20 + */ +typedef struct ArkUI_Vector2AnimatableProperty* ArkUI_Vector2AnimatablePropertyHandle; + +/** + * @brief 定义可动画的颜色属性指针。 + * + * @since 20 + */ +typedef struct ArkUI_ColorAnimatableProperty* ArkUI_ColorAnimatablePropertyHandle; + +/** + * @brief 定义矩形形状配置项,用于在ArkUI渲染节点中描述矩形或椭圆形的形状范围,可作为创建遮罩或裁剪配置项的输入。 + * + * @since 20 + */ +typedef struct ArkUI_RectShape ArkUI_RectShapeOption; + +/** + * @brief 定义边框样式配置项,用于为渲染节点的各边设置边框样式。 + * + * @since 20 + */ +typedef struct ArkUI_NodeBorderStyle ArkUI_NodeBorderStyleOption; + +/** + * @brief 定义边框宽度配置项,用于配置渲染节点各边的边框宽度。 + * + * @since 20 + */ +typedef struct ArkUI_NodeBorderWidth ArkUI_NodeBorderWidthOption; + +/** + * @brief 定义边框颜色配置项。 + * + * @since 20 + */ +typedef struct ArkUI_NodeBorderColor ArkUI_NodeBorderColorOption; + +/** + * @brief 定义边框圆角配置项。 + * + * @since 20 + */ +typedef struct ArkUI_NodeBorderRadius ArkUI_NodeBorderRadiusOption; + +/** + * @brief 定义圆形形状配置项,用于在ArkUI_RenderNodeUtils中创建圆形形状,并配置圆心坐标和半径,作为RenderNode的遮罩或裁剪形状。 + * + * @since 20 + */ +typedef struct ArkUI_CircleShape ArkUI_CircleShapeOption; + +/** + * @brief 定义圆角矩形形状配置项,用于配置圆角矩形形状,并可用于创建渲染节点遮罩或裁剪。 + * + * @since 20 + */ +typedef struct ArkUI_RoundRectShape ArkUI_RoundRectShapeOption; + +/** + * @brief 定义自定义绘制路径配置项,用于为渲染节点创建基于路径的遮罩或裁剪效果。 + * + * @since 20 + */ +typedef struct ArkUI_CommandPath ArkUI_CommandPathOption; + +/** + * @brief 定义节点遮罩配置项。 + * + * @since 20 + */ +typedef struct ArkUI_RenderNodeMaskOption ArkUI_RenderNodeMaskOption; + +/** + * @brief 定义节点裁剪配置项。 + * + * @since 20 + */ +typedef struct ArkUI_RenderNodeClipOption ArkUI_RenderNodeClipOption; + +/** + * @brief 定义模糊样式结构体。 + * + * @since 26.0.0 + */ +typedef struct ArkUI_RenderBlurStyleOption ArkUI_RenderBlurStyleOption; + +/** + * @brief 创建一个模糊样式对象。 + * + * @return 模糊样式对象的指针。模糊半径默认值是0.0。 + * @since 26.0.0 + */ +ArkUI_RenderBlurStyleOption* OH_ArkUI_RenderNodeUtils_CreateBlurStyleOption(); + +/** + * @brief 销毁一个模糊样式对象。 + * + * @param option {@link ArkUI_RenderBlurStyleOption}指针,待销毁的目标模糊样式对象的指针。 + * @since 26.0.0 + */ +void OH_ArkUI_RenderNodeUtils_DisposeBlurStyleOption(ArkUI_RenderBlurStyleOption* option); + +/** + * @brief 为目标模糊样式设置模糊半径。 + * + * @param option {@link ArkUI_RenderBlurStyleOption}指针,要设置模糊半径的目标模糊样式的指针。 + * @param radius 要设置的模糊半径。取值范围:[0, +∞)。单位:px。模糊半径用于控制模糊的密度,即半径越大,模糊处理的密度越大。设置0即表示不进行模糊处理。对于背景模糊处理,半径达到80,即可实现良好的磨砂玻璃效果。 + * 应避免使用超过200像素的模糊半径,否则将导致性能下降。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBlurStyleOptionRadius(ArkUI_RenderBlurStyleOption* option, float radius); + +/** + * @brief 为渲染节点设置背景模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要设置背景模糊样式的目标渲染节点。 + * @param option {@link ArkUI_RenderBlurStyleOption}指针,要设置的模糊样式的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBackgroundBlurOption(ArkUI_RenderNodeHandle node, ArkUI_RenderBlurStyleOption* option); + +/** + * @brief 为渲染节点重置背景模糊样式。重置后无背景模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要重置背景模糊样式的目标渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_ResetBackgroundBlurOption(ArkUI_RenderNodeHandle node); + +/** + * @brief 为渲染节点设置前景模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要设置前景模糊样式的目标渲染节点。 + * @param option {@link ArkUI_RenderBlurStyleOption}指针,要设置的模糊样式的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetForegroundBlurOption(ArkUI_RenderNodeHandle node, ArkUI_RenderBlurStyleOption* option); + +/** + * @brief 为渲染节点重置前景模糊样式。重置后无前景模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要重置前景模糊样式的目标渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_ResetForegroundBlurOption(ArkUI_RenderNodeHandle node); + +/** + * @brief 为渲染节点设置内容模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要设置内容模糊样式的目标渲染节点。 + * @param option {@link ArkUI_RenderBlurStyleOption}指针,要设置的模糊样式的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetContentBlurOption(ArkUI_RenderNodeHandle node, ArkUI_RenderBlurStyleOption* option); + +/** + * @brief 为渲染节点重置内容模糊样式。重置后无内容模糊样式。 + * + * @param node ArkUI_RenderNodeHandle指针,要重置内容模糊样式的目标渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +int32_t OH_ArkUI_RenderNodeUtils_ResetContentBlurOption(ArkUI_RenderNodeHandle node); + +/** + * @brief 向父自定义节点添加子渲染节点。 + * + * @param node 目标父节点。 + * @param child 待添加的子渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_NOT_CUSTOM_NODE} 目标节点非自定义节点。 + *
{@link ARKUI_ERROR_CODE_CHILD_EXISTED} 目标节点已存在子节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_PARENT_EXISTED} 目标渲染节点存在父节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_HAS_INVALID_FRAME_NODE} 当前渲染节点从FrameNode中获取且该FrameNode已被取消接纳为附属节点或销毁。从API + * version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AddRenderNode(ArkUI_NodeHandle node, ArkUI_RenderNodeHandle child); + +/** + * @brief 从父节点移除指定的子渲染节点。 + * + * @param node 目标父节点。 + * @param child 移除的目标子渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_NOT_CUSTOM_NODE} 目标节点非自定义节点。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_RemoveRenderNode(ArkUI_NodeHandle node, ArkUI_RenderNodeHandle child); + +/** + * @brief 清除父节点内的子渲染节点。 + * + * @param node 目标父节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_NOT_CUSTOM_NODE} 目标节点非自定义节点。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_ClearRenderNodeChildren(ArkUI_NodeHandle node); + +/** + * @brief 标记目标节点,触发其生命周期和子节点的重新渲染。 + * + * @param node 目标节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_Invalidate(ArkUI_NodeHandle node); + +/** + * @brief 创建渲染节点。 + * + * @return 目标渲染节点。 + * @since 20 + */ +ArkUI_RenderNodeHandle OH_ArkUI_RenderNodeUtils_CreateNode(); + +/** + * @brief 销毁渲染节点。 + * + * @param node 目标渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_DisposeNode(ArkUI_RenderNodeHandle node); + +/** + * @brief 向目标父渲染节点上添加子节点。 + * + * @param node 目标父渲染节点。 + * @param child 目标添加子渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + *
{@link ARKUI_ERROR_CODE_RENDER_HAS_INVALID_FRAME_NODE} 当前渲染节点从FrameNode中获取且该FrameNode已被取消接纳为附属节点或销毁。从API + * version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AddChild(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle child); + +/** + * @brief 向父节点的目标子节点后添加子节点。 + * + * @param node 目标父渲染节点。 + * @param child 待添加的子渲染节点。 + * @param sibling 目标子节点,用于确定插入位置的参考兄弟渲染节点。若该节点不在`node`的当前子节点列表中,则将`child`追加到末尾。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + *
{@link ARKUI_ERROR_CODE_RENDER_HAS_INVALID_FRAME_NODE} 当前渲染节点从FrameNode中获取且该FrameNode已被取消接纳为附属节点或销毁。从API + * version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_InsertChildAfter( + ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle child, ArkUI_RenderNodeHandle sibling); + +/** + * @brief 从指定渲染节点中移除子节点。 + * + * @param node 目标父渲染节点。 + * @param child 目标被移除子渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_RemoveChild(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle child); + +/** + * @brief 清空指定渲染节点的所有子节点。 + * + * @param node 目标渲染节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_ClearChildren(ArkUI_RenderNodeHandle node); + +/** + * @brief 获取指定索引位置的子节点。 + * + * @param node 目标父渲染节点。 + * @param index 子节点的从零开始的索引。 + * @param child 用于接收子节点的渲染节点指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_CHILD_NOT_EXIST} 未找到对应的渲染子节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetChild(ArkUI_RenderNodeHandle node, int32_t index, ArkUI_RenderNodeHandle* child); + +/** + * @brief 获取指定渲染节点的第一个子节点。 + * + * @param node 目标渲染节点。 + * @param child 用于接收第一个子节点的渲染节点指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_CHILD_NOT_EXIST} 未找到对应的渲染子节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetFirstChild(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle* child); + +/** + * @brief 获取指定节点的下一个兄弟节点。 + * + * @param node 参考节点。 + * @param sibling 用于接收下一个兄弟节点的渲染节点指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_CHILD_NOT_EXIST} 未找到对应的渲染子节点。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetNextSibling(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle* sibling); + +/** + * @brief 获取指定节点的上一个兄弟节点。 + * + * @param node 参考节点。 + * @param sibling 用于接收上一个兄弟节点的渲染节点指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_CHILD_NOT_EXIST} 未找到对应的渲染子节点。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetPreviousSibling(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle* sibling); + +/** + * @brief 获取父渲染节点的所有子渲染节点,调用者负责释放返回的子节点数组。 + * + * @param node 目标父渲染节点。 + * @param children 用于存储所有子渲染节点的指针数组。 + * @param count 用于存储获取到的子节点数量的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetChildren(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeHandle** children, int32_t* count); + +/** + * @brief 获取指定渲染节点的子渲染节点数量。 + * + * @param node 目标父渲染节点。 + * @param count 用于存储子节点数量的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetChildrenCount(ArkUI_RenderNodeHandle node, int32_t* count); + +/** + * @brief 为渲染节点设置背景颜色。 + * + * @param node 目标渲染节点。 + * @param color ARGB 颜色值(32 位无符号整数)。 + * 默认值:0x00000000。 + *
**颜色字节布局说明:** + *
- 位24-31:Alpha通道(0x00完全透明,0xFF完全不透明)。 + *
- 位16-23:红色通道。 + *
- 位8-15:绿色通道。 + *
- 位0-7:蓝色通道。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBackgroundColor(ArkUI_RenderNodeHandle node, uint32_t color); + +/** + * @brief 获取渲染节点的背景颜色。 + * + * @param node 目标渲染节点。 + * @param color 用于存储获取到的 RGBA 颜色值的整数指针。 + * 默认值:0x00000000。 + *
**颜色字节布局说明:** + *
- 位24-31:Alpha通道(0x00完全透明,0xFF完全不透明)。 + *
- 位16-23:红色通道。 + *
- 位8-15:绿色通道。 + *
- 位0-7:蓝色通道。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBackgroundColor(ArkUI_RenderNodeHandle node, uint32_t* color); + +/** + * @brief 设置是否对当前渲染节点裁剪。 + * + * @param node 目标渲染节点。 + * @param clipToFrame 整数(1 = 裁剪到框架,0 = 不裁剪)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数值超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetClipToFrame(ArkUI_RenderNodeHandle node, int32_t clipToFrame); + +/** + * @brief 获取是否对当前渲染节点裁剪。 + * + * @param node 目标渲染节点。 + * @param clipToFrame 用于接收裁剪状态(1 或 0)的整数指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetClipToFrame(ArkUI_RenderNodeHandle node, int32_t* clipToFrame); + +/** + * @brief 设置是否对当前渲染节点边界裁剪。 + * + * @param node 目标渲染节点。 + * @param clipToBounds 裁剪标志(1:裁剪到边界,0:不裁剪)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数值超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetClipToBounds(ArkUI_RenderNodeHandle node, int32_t clipToBounds); + +/** + * @brief 获取是否对当前渲染节点边界裁剪。 + * + * @param node 目标渲染节点。 + * @param clipToBounds 整数指针(1 = 根据边界裁剪,0 = 不裁剪)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetClipToBounds(ArkUI_RenderNodeHandle node, int32_t* clipToBounds); + +/** + * @brief 为渲染节点设置不透明度值。 + * + * @param node 目标渲染节点。 + * @param opacity 不透明度值(0.0-1.0)。 + * 默认值:1。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数值超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetOpacity(ArkUI_RenderNodeHandle node, float opacity); + +/** + * @brief 获取渲染节点的不透明度值。 + * + * @param node 目标渲染节点。 + * @param opacity 用于接收不透明度值(0.0-1.0)的指针。 + * 默认值:1。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetOpacity(ArkUI_RenderNodeHandle node, float* opacity); + +/** + * @brief 为渲染节点设置尺寸。 + * + * @param node 目标渲染节点。 + * @param width 宽度值(以像素为单位)。 + * 默认值:0,单位:px。取值大于等于0,传入负值时返回{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE}。 + * @param height 高度值(以像素为单位)。 + * 默认值:0,单位:px。取值大于等于0,传入负值时返回{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数值超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetSize(ArkUI_RenderNodeHandle node, int32_t width, int32_t height); + +/** + * @brief 获取渲染节点的尺寸。 + * + * @param node 目标渲染节点。 + * @param width 用于接收宽度值(以像素为单位)的指针。 + * 默认值:0,单位:px。 + * @param height 用于接收高度值(以像素为单位)的指针。 + * 默认值:0,单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetSize(ArkUI_RenderNodeHandle node, int32_t* width, int32_t* height); + +/** + * @brief 为渲染节点设置位置坐标。 + * + * @param node 目标渲染节点。 + * @param x X坐标值(以像素为单位)。 + * 默认值:0,单位:px。 + * @param y Y坐标值(以像素为单位)。 + * 默认值:0,单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetPosition(ArkUI_RenderNodeHandle node, int32_t x, int32_t y); + +/** + * @brief 获取渲染节点的位置坐标。该坐标是渲染节点布局后相对父节点的位置偏移,单位为px。该坐标是父节点对该节点进行布局之后的结果,因此布局之后生效的offset属性和不参与布局的position属性不影响该坐标。 + * + * @param node 目标渲染节点。 + * @param x 用于接收X坐标值(以像素为单位)的指针。 + * 默认值:0,单位:px。 + * @param y 用于接收Y坐标值(以像素为单位)的指针。 + * 默认值:0,单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetPosition(ArkUI_RenderNodeHandle node, int32_t* x, int32_t* y); + +/** + * @brief 为渲染节点的变换设置中心点。 + * + * @param node 目标渲染节点。 + * @param x 中心点的X坐标(标准取值范围:0.0-1.0)。 + * 默认值:0.5。 + * @param y 中心点的Y坐标(标准取值范围:0.0-1.0)。 + * 默认值:0.5。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetPivot(ArkUI_RenderNodeHandle node, float x, float y); + +/** + * @brief 获取渲染节点的中心点坐标。 + * + * @param node 目标渲染节点。 + * @param x 用于接收中心点X坐标的指针。 + * 默认值:0.5。 + * @param y 用于接收中心点Y坐标的指针。 + * 默认值:0.5。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetPivot(ArkUI_RenderNodeHandle node, float* x, float* y); + +/** + * @brief 为渲染节点设置缩放因子。 + * + * @param node 目标渲染节点。 + * @param x 水平缩放因子。 + * 默认值:1。 + * @param y 垂直缩放因子。 + * 默认值:1。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetScale(ArkUI_RenderNodeHandle node, float x, float y); + +/** + * @brief 获取渲染节点的缩放因子。 + * + * @param node 目标渲染节点。 + * @param x 用于接收水平缩放因子的指针。 + * 默认值:1。 + * @param y 用于接收垂直缩放因子的指针。 + * 默认值:1。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetScale(ArkUI_RenderNodeHandle node, float* x, float* y); + +/** + * @brief 为渲染节点设置平移偏移量。 + * + * @param node 目标渲染节点。 + * @param x 水平平移量(以像素为单位)。 + * 默认值:0。 + * @param y 垂直平移量(以像素为单位)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetTranslation(ArkUI_RenderNodeHandle node, float x, float y); + +/** + * @brief 获取渲染节点的平移偏移量。 + * + * @param node 目标渲染节点。 + * @param x 用于接收水平平移量的指针。 + * 默认值:0。 + * @param y 用于接收垂直平移量的指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetTranslation(ArkUI_RenderNodeHandle node, float* x, float* y); + +/** + * @brief 为渲染节点设置旋转角度。 + * + * @param node 目标渲染节点。 + * @param x 绕X轴的旋转角度(以度为单位)。 + * 默认值:0。 + * @param y 绕Y轴的旋转角度(以度为单位)。 + * 默认值:0。 + * @param z 绕Z轴的旋转角度(以度为单位)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetRotation(ArkUI_RenderNodeHandle node, float x, float y, float z); + +/** + * @brief 获取渲染节点的旋转角度。 + * + * @param node 目标渲染节点。 + * @param x 用于接收绕X轴旋转角度(以度为单位)的指针。 + * 默认值:0。 + * @param y 用于接收绕Y轴旋转角度(以度为单位)的指针。 + * 默认值:0。 + * @param z 用于接收绕Z轴旋转角度(以度为单位)的指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetRotation(ArkUI_RenderNodeHandle node, float* x, float* y, float* z); + +/** + * @brief 为渲染节点设置变换矩阵。 + * + * @param node 目标渲染节点。 + * @param matrix 4x4 变换矩阵的浮点数数组(16 个连续值)。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetTransform(ArkUI_RenderNodeHandle node, float* matrix); + +/** + * @brief 为渲染节点设置阴影颜色。 + * + * @param node 目标渲染节点。 + * @param color ARGB 颜色值(32位无符号整数)。 + * 默认值:0x00000000。 + *
**颜色字节布局说明:** + *
- 位24-31:Alpha通道(0x00完全透明,0xFF完全不透明)。 + *
- 位16-23:红色通道。 + *
- 位8-15:绿色通道。 + *
- 位0-7:蓝色通道。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetShadowColor(ArkUI_RenderNodeHandle node, uint32_t color); + +/** + * @brief 获取渲染节点的阴影颜色。 + * + * @param node 目标渲染节点。 + * @param color 用于存储获取到的RGBA颜色值的整数指针。 + * 默认值:0xFF000000。 + *
**颜色字节布局说明:** + *
- 位24-31:Alpha通道(0x00完全透明,0xFF完全不透明)。 + *
- 位16-23:红色通道。 + *
- 位8-15:绿色通道。 + *
- 位0-7:蓝色通道。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetShadowColor(ArkUI_RenderNodeHandle node, uint32_t* color); + +/** + * @brief 为渲染节点设置阴影偏移量。 + * + * @param node 目标渲染节点。 + * @param x 水平偏移值(以像素为单位)。 + * 默认值:0。 + * @param y 垂直偏移值(以像素为单位)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetShadowOffset(ArkUI_RenderNodeHandle node, int32_t x, int32_t y); + +/** + * @brief 获取渲染节点的阴影偏移量。 + * + * @param node 目标渲染节点。 + * @param x 用于接收水平偏移值的指针。 + * 默认值:0,单位:px。 + * @param y 用于接收垂直偏移值的指针。 + * 默认值:0,单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetShadowOffset(ArkUI_RenderNodeHandle node, int32_t* x, int32_t* y); + +/** + * @brief 为渲染节点设置阴影透明度。 + * + * @param node 目标渲染节点。 + * @param alpha 阴影 Alpha 值(0.0-1.0)。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetShadowAlpha(ArkUI_RenderNodeHandle node, float alpha); + +/** + * @brief 获取渲染节点的阴影透明度。 + * + * @param node 目标渲染节点。 + * @param alpha 用于接收阴影 Alpha 值的指针。 + * 默认值:1。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetShadowAlpha(ArkUI_RenderNodeHandle node, float* alpha); + +/** + * @brief 为渲染节点设置阴影高度。 + * + * @param node 目标渲染节点。 + * @param elevation 高度值。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetShadowElevation(ArkUI_RenderNodeHandle node, float elevation); + +/** + * @brief 获取渲染节点的阴影高度。 + * + * @param node 目标渲染节点。 + * @param elevation 用于接收高度值的指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetShadowElevation(ArkUI_RenderNodeHandle node, float* elevation); + +/** + * @brief 为渲染节点设置阴影半径。 + * + * @param node 目标渲染节点。 + * @param radius 半径值。 + * 默认值:0。取值大于等于0,传入负值时返回{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetShadowRadius(ArkUI_RenderNodeHandle node, float radius); + +/** + * @brief 获取渲染节点的阴影半径。 + * + * @param node 目标渲染节点。 + * @param radius 用于接收半径值的指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetShadowRadius(ArkUI_RenderNodeHandle node, float* radius); + +/** + * @brief 为渲染节点设置边框样式。 + * + * @param node 目标渲染节点。 + * @param borderStyle 边框样式的指针。 + * 结构体指针内默认值:{@link ARKUI_BORDER_STYLE_SOLID}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBorderStyle(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderStyleOption* borderStyle); + +/** + * @brief 获取渲染节点的边框样式。 + * + * @param node 目标渲染节点。 + * @param borderStyle 用于接收边框样式的指针。 + * 结构体指针内默认值:{@link ARKUI_BORDER_STYLE_SOLID}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBorderStyle(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderStyleOption** borderStyle); + +/** + * @brief 为渲染节点设置边框宽度,边框宽度需小于节点尺寸。 + * + * @param node 目标渲染节点。 + * @param borderWidth 边框宽度的指针。 + * 结构体指针内默认值:0。单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBorderWidth(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderWidthOption* borderWidth); + +/** + * @brief 获取渲染节点的边框宽度。 + * + * @param node 目标渲染节点。 + * @param borderWidth 用于接收边框宽度的指针。 + * 结构体指针内默认值:0。单位:px。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBorderWidth(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderWidthOption** borderWidth); + +/** + * @brief 为渲染节点设置边框颜色。 + * + * @param node 目标渲染节点。 + * @param borderColor 边框颜色的指针。 + * 结构体指针内默认值:0x00000000。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBorderColor(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderColorOption* borderColor); + +/** + * @brief 获取渲染节点的边框颜色。 + * + * @param node 目标渲染节点。 + * @param borderColor 用于接收边框颜色的指针。 + * 结构体指针内默认值:0x00000000。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBorderColor(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderColorOption** borderColor); + +/** + * @brief 为渲染节点设置边框角半径。 + * + * @param node 目标渲染节点。 + * @param borderRadius 边框半径的指针。 + * 结构体指针内默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBorderRadius(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderRadiusOption* borderRadius); + +/** + * @brief 获取渲染节点的边框角半径。 + * + * @param node 目标渲染节点。 + * @param borderRadius 用于接收边框半径的指针。 + * 结构体指针内默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBorderRadius(ArkUI_RenderNodeHandle node, ArkUI_NodeBorderRadiusOption** borderRadius); + +/** + * @brief 使用遮罩配置为渲染节点应用遮罩。 + * + * 遮罩创建方式如下: + * 1. 给遮罩图层增加亮度和线性颜色滤镜。 + * 2. 在该滤镜下绘制遮罩图形。 + * 3. 将原节点图像作为源颜色,遮罩图形为目标颜色,通过{@link BlendMode.SRC_IN}方式混合成Mask图像。 + * + * @param node 目标渲染节点。 + * @param mask 遮罩配置的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetMask(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeMaskOption* mask); + +/** + * @brief 使用裁剪配置为渲染节点应用裁剪。 + * + * @param node 目标渲染节点。 + * @param clip 裁剪配置的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetClip(ArkUI_RenderNodeHandle node, ArkUI_RenderNodeClipOption* clip); + +/** + * @brief 标记是否优先绘制该节点及其子节点。 + * + * @param node 目标渲染节点。 + * @param markNodeGroup 布尔值,是否优先绘制该节点及其子节点。 + * true:优先绘制节点及其子节点;false:不优先绘制节点及其子节点。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetMarkNodeGroup(ArkUI_RenderNodeHandle node, bool markNodeGroup); + +/** + * @brief 为渲染节点设置边界。 + * + * @param node 目标渲染节点。 + * @param x 边界左上角的X坐标(以像素为单位)。 + * 默认值:0。 + * @param y 边界左上角的Y坐标(以像素为单位)。 + * 默认值:0。 + * @param width 边界的宽度(以像素为单位)。 + * 默认值:0。取值大于等于0,传入负值时返回{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE}。 + * @param height 边界的高度(以像素为单位)。 + * 默认值:0。取值大于等于0,传入负值时返回{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE}。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_PARAM_OUT_OF_RANGE} 参数超出范围。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetBounds(ArkUI_RenderNodeHandle node, int32_t x, int32_t y, int32_t width, int32_t height); + +/** + * @brief 获取渲染节点的边界。 + * + * @param node 目标渲染节点。 + * @param x 用于接收边界左上角X坐标(以像素为单位)的指针。 + * 默认值:0。 + * @param y 用于接收边界左上角Y坐标(以像素为单位)的指针。 + * 默认值:0。 + * @param width 用于接收边界宽度(以像素为单位)的指针。 + * 默认值:0。 + * @param height 用于接收边界高度(以像素为单位)的指针。 + * 默认值:0。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetBounds(ArkUI_RenderNodeHandle node, int32_t* x, int32_t* y, int32_t* width, int32_t* height); + +/** + * @brief 为渲染节点设置绘制区域,该绘制区域主要用于超出边界导致的绘制问题,建议根据实际绘制范围设置大小。 + * + * @param node 目标渲染节点。 + * @param x 边界左上角的X坐标(以像素为单位)。 + * @param y 边界左上角的Y坐标(以像素为单位)。 + * @param w 边界的宽度(以像素为单位)。 + * @param h 边界的高度(以像素为单位)。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetDrawRegion(ArkUI_RenderNodeHandle node, float x, float y, float w, float h); + +/** + * @brief 为渲染节点添加内容修改器。 + * + * @param node 目标渲染节点。 + * @param modifier 内容修改器。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_IS_FROM_FRAME_NODE} 目标节点是从一个FrameNode获取的。从API version 22开始支持。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachContentModifier(ArkUI_RenderNodeHandle node, ArkUI_RenderContentModifierHandle modifier); + +/** + * @brief 创建内容修改器。 + * + * @return 内容修改器。 + * @since 20 + */ +ArkUI_RenderContentModifierHandle OH_ArkUI_RenderNodeUtils_CreateContentModifier(); + +/** + * @brief 释放内容修改器。 + * + * @param modifier 内容修改器。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeContentModifier(ArkUI_RenderContentModifierHandle modifier); + +/** + * @brief 为目标内容修改器附加浮点属性。 + * + * @param modifier 为目标内容修改器设置浮点属性。 + * @param property 浮点属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachFloatProperty(ArkUI_RenderContentModifierHandle modifier, ArkUI_FloatPropertyHandle property); + +/** + * @brief 为目标内容修改器附加二维向量属性。 + * + * @param modifier 为目标内容修改器设置二维向量属性。 + * @param property 二维向量属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachVector2Property(ArkUI_RenderContentModifierHandle modifier, ArkUI_Vector2PropertyHandle property); + +/** + * @brief 为目标内容修改器附加颜色属性。 + * + * @param modifier 为目标内容修改器设置颜色属性。 + * @param property 颜色属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachColorProperty(ArkUI_RenderContentModifierHandle modifier, ArkUI_ColorPropertyHandle property); + +/** + * @brief 为目标内容修改器附加可动画的浮点属性。 + * + * @param modifier 为目标内容修改器设置可动画的浮点属性。 + * @param property 可动画的浮点属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachFloatAnimatableProperty( + ArkUI_RenderContentModifierHandle modifier, ArkUI_FloatAnimatablePropertyHandle property); + +/** + * @brief 为目标内容修改器附加可动画的二维向量属性。 + * + * @param modifier 为目标内容修改器设置可动画的二维向量属性。 + * @param property 可动画的二维向量属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachVector2AnimatableProperty( + ArkUI_RenderContentModifierHandle modifier, ArkUI_Vector2AnimatablePropertyHandle property); + +/** + * @brief 为目标内容修改器附加可动画的颜色属性。 + * + * @param modifier 为目标内容修改器设置可动画的颜色属性。 + * @param property 可动画的颜色属性。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_AttachColorAnimatableProperty( + ArkUI_RenderContentModifierHandle modifier, ArkUI_ColorAnimatablePropertyHandle property); + +/** + * @brief 创建浮点属性。 + * + * @param value 属性值。 + * @return 浮点属性。 + * @since 20 + */ +ArkUI_FloatPropertyHandle OH_ArkUI_RenderNodeUtils_CreateFloatProperty(float value); + +/** + * @brief 设置浮点属性的值。 + * + * @param property 浮点属性。 + * @param value 属性值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetFloatPropertyValue(ArkUI_FloatPropertyHandle property, float value); + +/** + * @brief 获取浮点属性的值。 + * + * @param property 浮点属性。 + * @param value 用于接收属性值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetFloatPropertyValue(ArkUI_FloatPropertyHandle property, float* value); + +/** + * @brief 释放浮点属性。 + * + * @param property 浮点属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(ArkUI_FloatPropertyHandle property); + +/** + * @brief Creates a 二维向量属性。 + * + * @param x 属性的X坐标值。 + * @param y 属性的Y坐标值。 + * @return 二维向量属性。 + * @since 20 + */ +ArkUI_Vector2PropertyHandle OH_ArkUI_RenderNodeUtils_CreateVector2Property(float x, float y); + +/** + * @brief Sets the value of the 二维向量属性。 + * + * @param property 二维向量属性。 + * @param x 属性的X坐标值。 + * @param y 属性的Y坐标值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetVector2PropertyValue(ArkUI_Vector2PropertyHandle property, float x, float y); + +/** + * @brief Obtains the value of the 二维向量属性。 + * + * @param property 二维向量属性。 + * @param x 用于接收属性X坐标值的指针。 + * @param y 用于接收属性Y坐标值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetVector2PropertyValue(ArkUI_Vector2PropertyHandle property, float* x, float* y); + +/** + * @brief Disposes of the 二维向量属性。 + * + * @param property 二维向量属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeVector2Property(ArkUI_Vector2PropertyHandle property); + +/** + * @brief 创建颜色属性。 + * + * @param value 属性值。 + * @return 颜色属性。 + * @since 20 + */ +ArkUI_ColorPropertyHandle OH_ArkUI_RenderNodeUtils_CreateColorProperty(uint32_t value); + +/** + * @brief 设置颜色属性的值。 + * + * @param property 颜色属性。 + * @param value 属性值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetColorPropertyValue(ArkUI_ColorPropertyHandle property, uint32_t value); + +/** + * @brief 获取颜色属性的值。 + * + * @param property 颜色属性。 + * @param value 用于接收属性值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetColorPropertyValue(ArkUI_ColorPropertyHandle property, uint32_t* value); + +/** + * @brief 释放颜色属性。 + * + * @param property 颜色属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeColorProperty(ArkUI_ColorPropertyHandle property); + +/** + * @brief 创建可动画的浮点属性。 + * + * @param value 属性值。 + * @return 可动画的浮点属性。 + * @since 20 + */ +ArkUI_FloatAnimatablePropertyHandle OH_ArkUI_RenderNodeUtils_CreateFloatAnimatableProperty(float value); + +/** + * @brief 设置可动画的浮点属性的值。 + * + * @param property 可动画的浮点属性。 + * @param value 属性值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetFloatAnimatablePropertyValue(ArkUI_FloatAnimatablePropertyHandle property, float value); + +/** + * @brief 获取可动画的浮点属性的值。 + * + * @param property 可动画的浮点属性。 + * @param value 用于接收属性值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetFloatAnimatablePropertyValue(ArkUI_FloatAnimatablePropertyHandle property, float* value); + +/** + * @brief 释放可动画的浮点属性。 + * + * @param property 可动画的浮点属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeFloatAnimatableProperty(ArkUI_FloatAnimatablePropertyHandle property); + +/** + * @brief 创建可动画的二维向量属性。 + * + * @param x 属性的X坐标值。 + * @param y 属性的Y坐标值。 + * @return 可动画的二维向量属性。 + * @since 20 + */ +ArkUI_Vector2AnimatablePropertyHandle OH_ArkUI_RenderNodeUtils_CreateVector2AnimatableProperty(float x, float y); + +/** + * @brief 设置可动画的二维向量属性的值。 + * + * @param property 可动画的二维向量属性。 + * @param x 属性的X坐标值。 + * @param y 属性的Y坐标值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetVector2AnimatablePropertyValue(ArkUI_Vector2AnimatablePropertyHandle property, float x, float y); + +/** + * @brief 获取可动画的二维向量属性的值。 + * + * @param property 可动画的二维向量属性。 + * @param x 用于接收属性X坐标值的指针。 + * @param y 用于接收属性Y坐标值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetVector2AnimatablePropertyValue(ArkUI_Vector2AnimatablePropertyHandle property, float* x, float* y); + +/** + * @brief 释放可动画的二维向量属性。 + * + * @param property 可动画的二维向量属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeVector2AnimatableProperty(ArkUI_Vector2AnimatablePropertyHandle property); + +/** + * @brief 创建可动画的颜色属性。 + * + * @param value 属性值。 + * @return 可动画的颜色属性。 + * @since 20 + */ +ArkUI_ColorAnimatablePropertyHandle OH_ArkUI_RenderNodeUtils_CreateColorAnimatableProperty(uint32_t value); + +/** + * @brief 设置可动画的颜色属性的值。 + * + * @param property 可动画的颜色属性。 + * @param value 属性值。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetColorAnimatablePropertyValue(ArkUI_ColorAnimatablePropertyHandle property, uint32_t value); + +/** + * @brief 获取可动画的颜色属性的值。 + * + * @param property 可动画的颜色属性。 + * @param value 用于接收属性值的指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetColorAnimatablePropertyValue(ArkUI_ColorAnimatablePropertyHandle property, uint32_t* value); + +/** + * @brief 释放可动画的颜色属性。 + * + * @param property 可动画的颜色属性。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeColorAnimatableProperty(ArkUI_ColorAnimatablePropertyHandle property); + +/** + * @brief 设置内容修改器的onDraw函数。 + * + * @param modifier 目标内容修改器。 + * @param userData 要传递给回调的自定义数据。 + * @param callback The draw event receiver callback. + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 20 + */ +int32_t OH_ArkUI_RenderNodeUtils_SetContentModifierOnDraw(ArkUI_RenderContentModifierHandle modifier, void* userData, void (*callback)(ArkUI_DrawContext* context, void* userData)); + +/** + * @brief 创建矩形形状。 + * + * @return 指向矩形形状的指针。 + * @since 20 + */ +ArkUI_RectShapeOption* OH_ArkUI_RenderNodeUtils_CreateRectShapeOption(); + +/** + * @brief 释放矩形形状。 + * + * @param option 指向矩形形状的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(ArkUI_RectShapeOption* option); + +/** + * @brief 设置矩形形状的边缘值。当设置左边界和上边界为负数时,因显示涉及到图层叠加效果,会导致部分超出节点内容部分无法绘制。 + * @param option 指向矩形形状的指针。 + * @param edgeValue 矩形形状的边缘值。 + * @param direction 要设置边缘值的矩形方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRectShapeOptionEdgeValue( + ArkUI_RectShapeOption* option, float edgeValue, ArkUI_EdgeDirection direction); + +/** + * @brief 创建节点边框样式。 + * + * @return 指向节点边框样式的指针。 + * @since 20 + */ +ArkUI_NodeBorderStyleOption* OH_ArkUI_RenderNodeUtils_CreateNodeBorderStyleOption(); + +/** + * @brief 释放节点边框样式。 + * + * @param option 指向节点边框样式的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeNodeBorderStyleOption(ArkUI_NodeBorderStyleOption* option); + +/** + * @brief 设置节点边框样式的边缘值。 + * @param option 指向节点边框样式的指针。 + * @param edgeStyle 节点边框样式的边缘边框样式值。 + * @param direction 边缘的方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetNodeBorderStyleOptionEdgeStyle(ArkUI_NodeBorderStyleOption* option, ArkUI_BorderStyle edgeStyle, ArkUI_EdgeDirection direction); + +/** + * @brief 创建节点边框宽度。 + * + * @return 指向节点边框宽度的指针。 + * @since 20 + */ +ArkUI_NodeBorderWidthOption* OH_ArkUI_RenderNodeUtils_CreateNodeBorderWidthOption(); + +/** + * @brief 释放节点边框宽度。 + * + * @param option 指向节点边框宽度的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeNodeBorderWidthOption(ArkUI_NodeBorderWidthOption* option); + +/** + * @brief 设置节点边框宽度的边缘值。 + * + * @param option 指向节点边框宽度的指针。 + * @param edgeWidth 节点边框宽度的边缘宽度值。 + *
取值范围:[0, +∞) + * @param direction 边缘的方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetNodeBorderWidthOptionEdgeWidth(ArkUI_NodeBorderWidthOption* option, float edgeWidth, ArkUI_EdgeDirection direction); + +/** + * @brief 创建节点边框颜色。 + * + * @return 指向节点边框颜色的指针。 + * @since 20 + */ +ArkUI_NodeBorderColorOption* OH_ArkUI_RenderNodeUtils_CreateNodeBorderColorOption(); + +/** + * @brief 释放节点边框颜色。 + * + * @param option 指向节点边框颜色的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeNodeBorderColorOption(ArkUI_NodeBorderColorOption* option); + +/** + * @brief 设置节点边框颜色的边缘值。 + * + * @param option 指向节点边框颜色的指针。 + * @param edgeColor 节点边框颜色的边缘颜色值。 + * @param direction 边缘的方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetNodeBorderColorOptionEdgeColor(ArkUI_NodeBorderColorOption* option, uint32_t edgeColor, ArkUI_EdgeDirection direction); + +/** + * @brief 创建节点边框半径。 + * + * @return 指向节点边框半径的指针。 + * @since 20 + */ +ArkUI_NodeBorderRadiusOption* OH_ArkUI_RenderNodeUtils_CreateNodeBorderRadiusOption(); + +/** + * @brief 释放节点边框半径。 + * + * @param option 指向节点边框半径的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeNodeBorderRadiusOption(ArkUI_NodeBorderRadiusOption* option); + +/** + * @brief 设置节点边框半径的边缘值。请注意,入参cornerRadius为uint32_t,仅支持传入正整数。 + * @param option 指向节点边框半径的指针。 + * @param cornerRadius 节点边框半径的边缘半径值。 + * @param direction 边缘的方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetNodeBorderRadiusOptionCornerRadius(ArkUI_NodeBorderRadiusOption* option, uint32_t cornerRadius, ArkUI_CornerDirection direction); + +/** + * @brief 创建圆形形状。 + * + * @return 指向圆形形状的指针。 + * @since 20 + */ +ArkUI_CircleShapeOption* OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption(); + +/** + * @brief 释放圆形形状。 + * + * @param option 指向圆形形状的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(ArkUI_CircleShapeOption* option); + +/** + * @brief 设置圆形形状的圆心x轴坐标值。 + * + * @param option 指向圆形形状的指针。 + * @param centerX 圆心x轴坐标值。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterX(ArkUI_CircleShapeOption* option, float centerX); + +/** + * @brief 设置圆形形状的圆心y轴坐标值。 + * + * @param option 指向圆形形状的指针。 + * @param centerY 圆心y轴坐标值。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterY(ArkUI_CircleShapeOption* option, float centerY); + +/** + * @brief 设置圆形形状的半径值。 + * + * @param option 指向圆形形状的指针。 + * @param radius 半径值(以像素为单位)。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionRadius(ArkUI_CircleShapeOption* option, float radius); + +/** + * @brief 创建圆角矩形形状。 + * @return 指向圆角矩形形状的指针。 + * @since 20 + */ +ArkUI_RoundRectShapeOption* OH_ArkUI_RenderNodeUtils_CreateRoundRectShapeOption(); + +/** + * @brief 释放圆角矩形形状。 + * + * @param option 指向圆角矩形形状的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeRoundRectShapeOption(ArkUI_RoundRectShapeOption* option); + +/** + * @brief 设置圆角矩形形状的边缘值。 + * @param option 指向圆角矩形形状的指针。 + * @param edgeValue 圆角矩形形状的边缘值。 + * @param direction 要设置边缘值的矩形方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRoundRectShapeOptionEdgeValue( + ArkUI_RoundRectShapeOption* option, float edgeValue, ArkUI_EdgeDirection direction); + +/** + * @brief 设置目标角的坐标值。 + * @param option 指向圆角矩形形状的指针。 + * @param x 目标角的X坐标(以像素为单位)。 + * @param y 目标角的Y坐标(以像素为单位)。 + * @param direction 角的方向。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRoundRectShapeOptionCornerXY(ArkUI_RoundRectShapeOption* option, float x, float y, ArkUI_CornerDirection direction); + +/** + * @brief 创建自定义绘制路径。 + * + * @return 指向自定义绘制路径的指针。 + * @since 20 + */ +ArkUI_CommandPathOption* OH_ArkUI_RenderNodeUtils_CreateCommandPathOption(); + +/** + * @brief 释放自定义绘制路径。 + * + * @param option 指向自定义绘制路径的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeCommandPathOption(ArkUI_CommandPathOption* option); + +/** + * @brief 设置自定义绘制路径的命令值。 + * + * @param option 指向自定义绘制路径的指针。 + * @param commands 命令值。入参格式为SVG{@link 基础形状}中的\形状标签。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetCommandPathOptionCommands(ArkUI_CommandPathOption* option, char* commands); + +/** + * @brief 从矩形形状创建遮罩。 + * + * @param shape 指向矩形形状的指针。 + * @return 指向渲染节点遮罩的指针。 + * @since 20 + */ +ArkUI_RenderNodeMaskOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRectShape(ArkUI_RectShapeOption* shape); + +/** + * @brief 从圆角矩形形状创建遮罩。 + * + * @param shape 指向圆角矩形形状的指针。 + * @return 指向渲染节点遮罩的指针。 + * @since 20 + */ +ArkUI_RenderNodeMaskOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRoundRectShape(ArkUI_RoundRectShapeOption* shape); + +/** + * @brief 从圆形形状创建遮罩。 + * + * @param shape 指向圆形形状的指针。 + * @return 指向渲染节点遮罩的指针。 + * @since 20 + */ +ArkUI_RenderNodeMaskOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromCircleShape(ArkUI_CircleShapeOption* shape); + +/** + * @brief 从椭圆形形状创建遮罩。 + * + * @param shape 指向椭圆形形状的指针。 + * @return 指向渲染节点遮罩的指针。 + * @since 20 + */ +ArkUI_RenderNodeMaskOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromOvalShape(ArkUI_RectShapeOption* shape); + +/** + * @brief 从自定义绘制路径创建遮罩。 + * + * @param path 指向自定义绘制路径的指针。 + * @return 指向渲染节点遮罩的指针。 + * @since 20 + */ +ArkUI_RenderNodeMaskOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromCommandPath(ArkUI_CommandPathOption* path); + +/** + * @brief 释放渲染节点遮罩。 + * + * @param option 指向渲染节点遮罩的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(ArkUI_RenderNodeMaskOption* option); + +/** + * @brief 设置渲染节点遮罩的填充颜色。 + * + * @param mask 指向渲染节点遮罩的指针。 + * @param fillColor 遮罩的填充颜色。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionFillColor(ArkUI_RenderNodeMaskOption* mask, uint32_t fillColor); + +/** + * @brief 设置渲染节点遮罩的描边颜色。 + * + * @param mask 指向渲染节点遮罩的指针。 + * @param strokeColor 遮罩的描边颜色。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeColor(ArkUI_RenderNodeMaskOption* mask, uint32_t strokeColor); + +/** + * @brief 设置渲染节点遮罩的描边宽度。以边框路径为中心进行相应宽度的绘制。 + * + * @param mask 指向渲染节点遮罩的指针。 + * @param strokeWidth 遮罩的描边宽度。 + *
取值范围:(0, +∞),当取值为负数或0时,绘制时会被设定成1像素。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeWidth(ArkUI_RenderNodeMaskOption* mask, float strokeWidth); + +/** + * @brief 从矩形形状创建裁剪。 + * + * @param shape 指向矩形形状的指针。 + * @return 指向渲染节点裁剪的指针。 + * @since 20 + */ +ArkUI_RenderNodeClipOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromRectShape(ArkUI_RectShapeOption* shape); + +/** + * @brief 从圆角矩形形状创建裁剪。 + * + * @param shape 指向圆角矩形形状的指针。 + * @return 指向渲染节点裁剪的指针。 + * @since 20 + */ +ArkUI_RenderNodeClipOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromRoundRectShape(ArkUI_RoundRectShapeOption* shape); + +/** + * @brief 从圆形形状创建裁剪。 + * + * @param shape 指向圆形形状的指针。 + * @return 指向渲染节点裁剪的指针。 + * @since 20 + */ +ArkUI_RenderNodeClipOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromCircleShape(ArkUI_CircleShapeOption* shape); + +/** + * @brief 从椭圆形形状创建裁剪。 + * + * @param shape 指向椭圆形形状的指针。 + * @return 指向渲染节点裁剪的指针。 + * @since 20 + */ +ArkUI_RenderNodeClipOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromOvalShape(ArkUI_RectShapeOption* shape); + +/** + * @brief 从自定义绘制路径创建裁剪。 + * + * @param path 指向自定义绘制路径的指针。 + * @return 指向渲染节点裁剪的指针。 + * @since 20 + */ +ArkUI_RenderNodeClipOption* OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromCommandPath(ArkUI_CommandPathOption* path); + +/** + * @brief 释放渲染节点裁剪。 + * + * @param option 指向渲染节点裁剪的指针。 + * @since 20 + */ +void OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(ArkUI_RenderNodeClipOption* option); + +/** + * @brief 获取已被接纳为附属节点的目标节点的RenderNode。如果一个RenderNode是通过该接口获取的,调用{@link ArkUI_NativeNodeAPI_1}的{@link disposeNode} + * 接口主动销毁FrameNode时,需要额外调用{@link OH_ArkUI_RenderNodeUtils_DisposeNode}释放该RenderNode。 + * + * @param node ArkUI_NodeHandle指针,指定目标节点。 + * @param renderNode ArkUI_RenderNodeHandle*指针,目标节点的RenderNode。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_RENDER_NOT_ADOPTED_NODE} 该节点未被接纳为附属节点。 + * @since 22 + */ +int32_t OH_ArkUI_RenderNodeUtils_GetRenderNode(ArkUI_NodeHandle node, ArkUI_RenderNodeHandle* renderNode); + +/** + * @brief 为圆角矩形形状选项设置边框矩形范围。该函数通过指定位置和尺寸来定义圆角矩形的几何框架。 + * + * @param option 指向待配置圆角矩形形状选项的指针。 + * @param x 矩形左上角的X坐标,用于确定左边界位置。 + * @param y 矩形左上角的Y坐标,用于确定上边界位置。 + * @param width 矩形宽度,表示从X坐标起的水平跨度,用于确定右侧边界的位置,即矩形右下角的X坐标 = x + width。 + * @param height 矩形高度,表示从Y坐标起的垂直跨度,用于确定底部边界的位置,即矩形右下角的Y坐标 = y + height。 + * @since 26.0.0 + */ +void OH_ArkUI_RenderNodeUtils_SetRoundRectShapeOptionValue( + ArkUI_RoundRectShapeOption* option, float x, float y, float width, float height); + +/** + * @brief 为矩形形状选项设置边框矩形范围。该函数通过指定位置和尺寸来定义矩形的几何框架。 + * + * @param option 指向待配置矩形形状选项的指针。 + * @param x 矩形左上角的X坐标,用于确定左边界位置。 + * @param y 矩形左上角的Y坐标,用于确定上边界位置。 + * @param width 矩形宽度,表示从X坐标起的水平跨度,用于确定右侧边界的位置,即矩形右下角的X坐标 = x + width。 + * @param height 矩形高度,表示从Y坐标起的垂直跨度,用于确定底部边界的位置,即矩形右下角的Y坐标 = y + height。 + * @since 26.0.0 + */ +void OH_ArkUI_RenderNodeUtils_SetRectShapeOptionValue( + ArkUI_RectShapeOption* option, float x, float y, float width, float height); + +/** + * @brief 在父节点下的指定位置插入子渲染节点。 + * + * @param node 目标父节点。只支持{@link ArkUI_NodeType}中ARKUI_NODE_CUSTOM类型的节点。 + * @param child 将要插入的子渲染节点。 + * @param position 插入子渲染节点的索引。 + *
索引范围必须处于[0, 当前子节点数量]。 + *
如果索引等于当前子节点数量,那么等同于添加操作。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + *
{@link ARKUI_ERROR_CODE_NOT_CUSTOM_NODE} 目标节点非自定义节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_PARENT_EXISTED} 目标渲染节点存在父节点。 + *
{@link ARKUI_ERROR_CODE_RENDER_HAS_INVALID_FRAME_NODE} 当前渲染节点从FrameNode中获取且该FrameNode已被取消接纳为附属节点或销毁。 + * @since 26.0.0 + */ +ArkUI_ErrorCode OH_ArkUI_RenderNodeUtils_InsertRenderNodeAt( + ArkUI_NodeHandle node, ArkUI_RenderNodeHandle child, int32_t position); + +/** + * @brief 获取指定父节点的子渲染节点数量。 + * + * @param node 待查询的父节点。 + * @param count 子渲染节点的数量。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +ArkUI_ErrorCode OH_ArkUI_RenderNodeUtils_GetRenderNodeChildrenCount(ArkUI_NodeHandle node, int32_t* count); + +/** + * @brief 获取父节点下指定位置的子渲染节点。 + * + * @param node 目标父节点。 + * @param position 子渲染节点的索引。索引范围必须处于[0, 当前子节点数量-1]。 + * @param child 接收子渲染节点的函数出参。不可为空指针。 + * @return 错误码。 + *
{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。 + *
{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。 + *
{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化失败。 + * @since 26.0.0 + */ +ArkUI_ErrorCode OH_ArkUI_RenderNodeUtils_GetRenderNodeAt( + ArkUI_NodeHandle node, int32_t position, ArkUI_RenderNodeHandle* child); +#ifdef __cplusplus +}; +#endif + +#endif // ARKUI_NATIVE_RENDER_H +/** @} */ \ No newline at end of file diff --git a/zh-cn/arkui/ace_engine/native/node_attributes/custom_attributes.h b/zh-cn/arkui/ace_engine/native/node_attributes/custom_attributes.h new file mode 100644 index 000000000..edfbc146a --- /dev/null +++ b/zh-cn/arkui/ace_engine/native/node_attributes/custom_attributes.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2026 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. + */ + +/** + * @addtogroup ArkUI_NativeModule + * @{ + * + * @brief ArkUI Custom Node event type on the native side. + * + * @since 12 + */ + +/** + * @file custom_attributes.h + * + * @brief 为NativeNode API提供自定义节点事件定义。 + * + * @library libace_ndk.z.so + * @syscap SystemCapability.ArkUI.ArkUI.Full + * @kit ArkUI + * @since 12 + */ + +#ifndef ARKUI_NATIVE_NODE_ATTRIBUTES_CUSTOM_ATTRIBUTES_H +#define ARKUI_NATIVE_NODE_ATTRIBUTES_CUSTOM_ATTRIBUTES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 定义自定义组件事件类型。 + * + * @since 12 + */ +typedef enum { +/** + * 自定义测量类型。 + * @since 12 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE = 1 << 0, +/** + * 自定义布局类型。 + * @since 12 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_LAYOUT = 1 << 1, +/** + * 自定义内容层绘制类型。 + * @since 12 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_DRAW = 1 << 2, +/** + * 自定义前景绘制类型。 + * @since 12 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_FOREGROUND_DRAW = 1 << 3, +/** + * 自定义浮层绘制类型。 + * @since 12 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_OVERLAY_DRAW = 1 << 4, +/** + * 自定义内容层前景绘制类型。 + * @since 20 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_DRAW_FRONT = 1 << 5, +/** + * 自定义内容层背景绘制类型。 + * @since 20 + */ +ARKUI_NODE_CUSTOM_EVENT_ON_DRAW_BEHIND = 1 << 6 +} ArkUI_NodeCustomEventType; + +#ifdef __cplusplus +} +#endif + +#endif // ARKUI_NATIVE_NODE_ATTRIBUTES_CUSTOM_ATTRIBUTES_H +/** @} */ \ No newline at end of file