同步,消除差异

Signed-off-by: l00916518 <liuhuayi3@huawei.com>

Co-Authored-By:Agent

🤖‍ AI[100%] 👌 AI Adopted[100%] 🧑 Human[0%]
Co-authored-by: codex (gpt-5.6-sol) <ai@local>
This commit is contained in:
l00916518
2026-08-05 22:34:22 +08:00
parent 42737f85bc
commit 196eca4bb5
5 changed files with 2870 additions and 0 deletions
@@ -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 <stdint.h>
#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.h>. */
ARKUI_NATIVE_NODE,
/** API related to dialog boxes. For details, see the struct definition in <arkui/native_dialog.h>. */
ARKUI_NATIVE_DIALOG,
/** API related to gestures. For details, see the struct definition in <arkui/native_gesture.h>. */
ARKUI_NATIVE_GESTURE,
/** API related to animations. For details, see the struct definition in <arkui/native_animate.h>.*/
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, <b>ARKUI_NATIVE_NODE</b>
* and <b>ARKUI_NATIVE_GESTURE</b>.
* @param structName Indicates the name of a native struct defined in the corresponding header file, for example,
* <b>ArkUI_NativeNodeAPI_1</b> in <arkui/native_node.h>.
* @return Returns the pointer to the abstract native API, which can be used after being converted into a specific type.
* @code {.cpp}
* #include<arkui/native_interface.h>
* #include<arkui/native_node.h>
* #include<arkui/native_gesture.h>
*
* auto* anyNativeAPI = OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1");
* if (anyNativeAPI) {
* auto nativeNodeApi = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(anyNativeAPI);
* }
* auto anyGestureAPI = OH_ArkUI_QueryModuleInterface(ARKUI_NATIVE_GESTURE, "ArkUI_NativeGestureAPI_1");
* if (anyNativeAPI) {
* auto basicGestureApi = reinterpret_cast<ArkUI_NativeGestureAPI_1*>(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<arkui/native_interface.h>
* #include<arkui/native_node.h>
*
* 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
/** @} */
@@ -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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@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侧的<b>DrawableDescriptor</b>对象,并将其映射到Native侧的<b>ArkUI_DrawableDescriptor</b>对象。
*
* @param env 表示ANI环境指针。
* @param drawable 表示在ArkTS侧创建的<b>DrawableDescriptor</b>对象。
* @param drawableDescriptor 表示指向<b>ArkUI_DrawableDescriptor</b>对象的指针。
* @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侧的<b>Resource</b>对象,并将其映射到Native侧的<b>ArkUI_DrawableDescriptor</b>对象。
*
* @param env 表示ANI环境指针。
* @param resource 表示在ArkTS端创建的<b>Resource</b>对象。
* @param drawableDescriptor 表示指向<b>ArkUI_DrawableDescriptor</b>对象的指针。
* @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
/** @} */
@@ -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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_NODE_INDEX_INVALID} index为非法值。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败,可能因为当前节点未挂载在页面下。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 指定的节点或传递的索引异常。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@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}时表示实际写入到缓冲区的字符串长度。
* <br>在返回{@link ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR}时表示可以容纳目标的最小缓冲区大小。
* @return 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 函数参数异常。
* <br>{@link ARKUI_ERROR_CODE_GET_INFO_FAILED} 查询信息失败。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_CAPI_INIT_ERROR} CAPI初始化错误。
* <br>{@link ARKUI_ERROR_CODE_UI_CONTEXT_INVALID} uiContext对象无效。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@link ARKUI_ERROR_CODE_PARAM_INVALID} 参数无效(如env为null或设置白名单失败)。
* <br>{@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 错误码。
* <br>{@link ARKUI_ERROR_CODE_NO_ERROR} 成功。
* <br>{@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
/** @} */
File diff suppressed because it is too large Load Diff
@@ -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
/** @} */