• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cstdint>
17 #include <cstdlib>
18 #include <vector>
19 
20 #include "native_type.h"
21 #include "node_model.h"
22 
23 #include "base/utils/utils.h"
24 #include "base/error/error_code.h"
25 #include "core/interfaces/arkoala/arkoala_api.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
OH_ArkUI_NodeUtils_GetLayoutSize(ArkUI_NodeHandle node,ArkUI_IntSize * size)31 int32_t OH_ArkUI_NodeUtils_GetLayoutSize(ArkUI_NodeHandle node, ArkUI_IntSize* size)
32 {
33     if (node == nullptr) {
34         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
35     }
36     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
37     ArkUI_Int32* tempSize = new ArkUI_Int32[2];
38     impl->getNodeModifiers()->getFrameNodeModifier()->getLayoutSize(node->uiNodeHandle, tempSize);
39     size->width = tempSize[0];
40     size->height = tempSize[1];
41     return OHOS::Ace::ERROR_CODE_NO_ERROR;
42 }
43 
OH_ArkUI_NodeUtils_GetLayoutPosition(ArkUI_NodeHandle node,ArkUI_IntOffset * localOffset)44 int32_t OH_ArkUI_NodeUtils_GetLayoutPosition(ArkUI_NodeHandle node, ArkUI_IntOffset* localOffset)
45 {
46     if (node == nullptr) {
47         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
48     }
49     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
50     auto value = impl->getNodeModifiers()->getFrameNodeModifier()->getLayoutPositionWithoutMargin(node->uiNodeHandle);
51     localOffset->x = static_cast<int32_t>(value[0]);
52     localOffset->y = static_cast<int32_t>(value[1]);
53 
54     return OHOS::Ace::ERROR_CODE_NO_ERROR;
55 }
56 
OH_ArkUI_NodeUtils_GetLayoutPositionInWindow(ArkUI_NodeHandle node,ArkUI_IntOffset * globalOffset)57 int32_t OH_ArkUI_NodeUtils_GetLayoutPositionInWindow(ArkUI_NodeHandle node, ArkUI_IntOffset* globalOffset)
58 {
59     if (node == nullptr) {
60         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
61     }
62     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
63     ArkUI_Float32 tempOffset[2];
64     impl->getNodeModifiers()->getFrameNodeModifier()->getPositionToWindow(node->uiNodeHandle, &tempOffset, false);
65     globalOffset->x = tempOffset[0];
66     globalOffset->y = tempOffset[1];
67 
68     return OHOS::Ace::ERROR_CODE_NO_ERROR;
69 }
70 
OH_ArkUI_NodeUtils_GetLayoutPositionInScreen(ArkUI_NodeHandle node,ArkUI_IntOffset * screenOffset)71 int32_t OH_ArkUI_NodeUtils_GetLayoutPositionInScreen(ArkUI_NodeHandle node, ArkUI_IntOffset* screenOffset)
72 {
73     if (node == nullptr) {
74         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
75     }
76     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
77     ArkUI_Float32 tempOffset[2];
78     impl->getNodeModifiers()->getFrameNodeModifier()->getPositionToScreen(node->uiNodeHandle, &tempOffset, false);
79     screenOffset->x = tempOffset[0];
80     screenOffset->y = tempOffset[1];
81 
82     return OHOS::Ace::ERROR_CODE_NO_ERROR;
83 }
84 
OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow(ArkUI_NodeHandle node,ArkUI_IntOffset * translateOffset)85 int32_t OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow(ArkUI_NodeHandle node, ArkUI_IntOffset* translateOffset)
86 {
87     if (node == nullptr) {
88         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
89     }
90     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
91     ArkUI_Float32 tempOffset[2];
92     impl->getNodeModifiers()->getFrameNodeModifier()->getPositionToWindowWithTransform(
93         node->uiNodeHandle, &tempOffset, false);
94     translateOffset->x = tempOffset[0];
95     translateOffset->y = tempOffset[1];
96 
97     return OHOS::Ace::ERROR_CODE_NO_ERROR;
98 }
99 
OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen(ArkUI_NodeHandle node,ArkUI_IntOffset * translateOffset)100 int32_t OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen(ArkUI_NodeHandle node, ArkUI_IntOffset* translateOffset)
101 {
102     if (node == nullptr) {
103         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
104     }
105     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
106     ArkUI_Float32 tempOffset[2];
107     impl->getNodeModifiers()->getFrameNodeModifier()->getPositionToScreenWithTransform(
108         node->uiNodeHandle, &tempOffset, false);
109     translateOffset->x = tempOffset[0];
110     translateOffset->y = tempOffset[1];
111 
112     return OHOS::Ace::ERROR_CODE_NO_ERROR;
113 }
114 
OH_ArkUI_RegisterSystemColorModeChangeEvent(ArkUI_NodeHandle node,void * userData,void (* onColorModeChange)(ArkUI_SystemColorMode colorMode,void * userData))115 int32_t OH_ArkUI_RegisterSystemColorModeChangeEvent(
116     ArkUI_NodeHandle node, void* userData, void (*onColorModeChange)(ArkUI_SystemColorMode colorMode, void* userData))
117 {
118     if (node == nullptr) {
119         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
120     }
121     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
122     impl->getNodeModifiers()->getFrameNodeModifier()->setSystemColorModeChangeEvent(
123         node->uiNodeHandle, userData, reinterpret_cast<void*>(onColorModeChange));
124 
125     return OHOS::Ace::ERROR_CODE_NO_ERROR;
126 }
127 
OH_ArkUI_UnregisterSystemColorModeChangeEvent(ArkUI_NodeHandle node)128 void OH_ArkUI_UnregisterSystemColorModeChangeEvent(ArkUI_NodeHandle node)
129 {
130     if (node == nullptr) {
131         return;
132     }
133     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
134     impl->getNodeModifiers()->getFrameNodeModifier()->resetSystemColorModeChangeEvent(node->uiNodeHandle);
135 }
136 
OH_ArkUI_RegisterSystemFontStyleChangeEvent(ArkUI_NodeHandle node,void * userData,void (* onFontStyleChange)(ArkUI_SystemFontStyleEvent * event,void * userData))137 int32_t OH_ArkUI_RegisterSystemFontStyleChangeEvent(
138     ArkUI_NodeHandle node, void* userData, void (*onFontStyleChange)(ArkUI_SystemFontStyleEvent* event, void* userData))
139 {
140     if (node == nullptr) {
141         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
142     }
143     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
144     impl->getNodeModifiers()->getFrameNodeModifier()->setSystemFontStyleChangeEvent(
145         node->uiNodeHandle, userData, reinterpret_cast<void*>(onFontStyleChange));
146 
147     return OHOS::Ace::ERROR_CODE_NO_ERROR;
148 }
149 
OH_ArkUI_UnregisterSystemFontStyleChangeEvent(ArkUI_NodeHandle node)150 void OH_ArkUI_UnregisterSystemFontStyleChangeEvent(ArkUI_NodeHandle node)
151 {
152     if (node == nullptr) {
153         return;
154     }
155     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
156     impl->getNodeModifiers()->getFrameNodeModifier()->resetSystemFontStyleChangeEvent(node->uiNodeHandle);
157 }
158 
OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(const ArkUI_SystemFontStyleEvent * event)159 float OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(const ArkUI_SystemFontStyleEvent* event)
160 {
161     return event->fontSize;
162 }
163 
OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale(const ArkUI_SystemFontStyleEvent * event)164 float OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale(const ArkUI_SystemFontStyleEvent* event)
165 {
166     return event->fontWeight;
167 }
168 
OH_ArkUI_NodeUtils_AddCustomProperty(ArkUI_NodeHandle node,const char * name,const char * value)169 void OH_ArkUI_NodeUtils_AddCustomProperty(ArkUI_NodeHandle node, const char* name, const char* value)
170 {
171     if (node == nullptr) {
172         return;
173     }
174     if (name == nullptr || value == nullptr) {
175         LOGF("AddCustomProperty input params name or value is nullptr");
176         abort();
177     }
178     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
179     impl->getNodeModifiers()->getFrameNodeModifier()->addCustomProperty(node->uiNodeHandle, name, value);
180 }
181 
OH_ArkUI_NodeUtils_RemoveCustomProperty(ArkUI_NodeHandle node,const char * name)182 void OH_ArkUI_NodeUtils_RemoveCustomProperty(ArkUI_NodeHandle node, const char* name)
183 {
184     if (node == nullptr) {
185         return;
186     }
187     if (name == nullptr) {
188         LOGF("RemoveCustomProperty input params name is nullptr");
189         abort();
190     }
191     auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
192     impl->getNodeModifiers()->getFrameNodeModifier()->removeCustomProperty(node->uiNodeHandle, name);
193 }
194 
195 #ifdef __cplusplus
196 };
197 #endif
198