• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 "core/interfaces/native/node/pattern_lock_modifier.h"
17 #include "core/components_v2/pattern_lock/pattern_lock_theme.h"
18 #include "core/components/common/layout/constants.h"
19 #include "core/components/common/properties/alignment.h"
20 #include "core/components_ng/base/frame_node.h"
21 #include "core/components_ng/base/view_abstract.h"
22 #include "core/components_ng/pattern/patternlock/patternlock_model_ng.h"
23 #include "core/pipeline/base/element_register.h"
24 namespace OHOS::Ace::NG {
SetPatternLockActiveColor(ArkUINodeHandle node,uint32_t value)25 void SetPatternLockActiveColor(ArkUINodeHandle node, uint32_t value)
26 {
27     auto *frameNode = reinterpret_cast<FrameNode*>(node);
28     CHECK_NULL_VOID(frameNode);
29     PatternLockModelNG::SetActiveColor(frameNode, Color(value));
30 }
31 
ResetPatternLockActiveColor(ArkUINodeHandle node)32 void ResetPatternLockActiveColor(ArkUINodeHandle node)
33 {
34     auto *frameNode = reinterpret_cast<FrameNode*>(node);
35     CHECK_NULL_VOID(frameNode);
36     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
37     CHECK_NULL_VOID(patternLockTheme);
38     Color activeColor = patternLockTheme->GetActiveColor();
39     PatternLockModelNG::SetActiveColor(frameNode, activeColor);
40 }
41 
ResetPatternLockCircleRadius(ArkUINodeHandle node)42 void ResetPatternLockCircleRadius(ArkUINodeHandle node)
43 {
44     auto *frameNode = reinterpret_cast<FrameNode*>(node);
45     CHECK_NULL_VOID(frameNode);
46     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
47     CHECK_NULL_VOID(patternLockTheme);
48     CalcDimension radius = patternLockTheme->GetCircleRadius();
49     PatternLockModelNG::SetCircleRadius(frameNode, Dimension(radius.Value(), radius.Unit()));
50 }
51 
SetPatternLockCircleRadius(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)52 void SetPatternLockCircleRadius(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
53 {
54     auto *frameNode = reinterpret_cast<FrameNode*>(node);
55     CHECK_NULL_VOID(frameNode);
56     PatternLockModelNG::SetCircleRadius(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
57 }
58 
SetPatternLockSelectedColor(ArkUINodeHandle node,uint32_t value)59 void SetPatternLockSelectedColor(ArkUINodeHandle node, uint32_t value)
60 {
61     auto *frameNode = reinterpret_cast<FrameNode*>(node);
62     CHECK_NULL_VOID(frameNode);
63     PatternLockModelNG::SetSelectedColor(frameNode, Color(value));
64 }
65 
ResetPatternLockSelectedColor(ArkUINodeHandle node)66 void ResetPatternLockSelectedColor(ArkUINodeHandle node)
67 {
68     auto *frameNode = reinterpret_cast<FrameNode*>(node);
69     CHECK_NULL_VOID(frameNode);
70     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
71     CHECK_NULL_VOID(patternLockTheme);
72     Color selectedColor = patternLockTheme->GetSelectedColor();
73     PatternLockModelNG::SetSelectedColor(frameNode, selectedColor);
74 }
75 
SetPatternLockSideLength(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)76 void SetPatternLockSideLength(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
77 {
78     auto *frameNode = reinterpret_cast<FrameNode*>(node);
79     CHECK_NULL_VOID(frameNode);
80     PatternLockModelNG::SetSideLength(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
81 }
82 
ResetPatternLockSideLength(ArkUINodeHandle node)83 void ResetPatternLockSideLength(ArkUINodeHandle node)
84 {
85     auto *frameNode = reinterpret_cast<FrameNode*>(node);
86     CHECK_NULL_VOID(frameNode);
87     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
88     CHECK_NULL_VOID(patternLockTheme);
89     CalcDimension sideLength = patternLockTheme->GetSideLength();
90     PatternLockModelNG::SetSideLength(frameNode, Dimension(sideLength.Value(), sideLength.Unit()));
91 }
92 
SetPatternLockAutoReset(ArkUINodeHandle node,uint32_t value)93 void SetPatternLockAutoReset(ArkUINodeHandle node, uint32_t value)
94 {
95     auto *frameNode = reinterpret_cast<FrameNode*>(node);
96     CHECK_NULL_VOID(frameNode);
97     PatternLockModelNG::SetAutoReset(frameNode, static_cast<bool>(value));
98 }
99 
ResetPatternLockAutoReset(ArkUINodeHandle node)100 void ResetPatternLockAutoReset(ArkUINodeHandle node)
101 {
102     auto *frameNode = reinterpret_cast<FrameNode*>(node);
103     CHECK_NULL_VOID(frameNode);
104     PatternLockModelNG::SetAutoReset(frameNode, true);
105 }
106 
SetPatternLockPathStrokeWidth(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)107 void SetPatternLockPathStrokeWidth(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
108 {
109     auto *frameNode = reinterpret_cast<FrameNode*>(node);
110     CHECK_NULL_VOID(frameNode);
111     PatternLockModelNG::SetStrokeWidth(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
112 }
113 
ResetPatternLockPathStrokeWidth(ArkUINodeHandle node)114 void ResetPatternLockPathStrokeWidth(ArkUINodeHandle node)
115 {
116     auto *frameNode = reinterpret_cast<FrameNode*>(node);
117     CHECK_NULL_VOID(frameNode);
118     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
119     CHECK_NULL_VOID(patternLockTheme);
120     CalcDimension lineWidth = patternLockTheme->GetPathStrokeWidth();
121     PatternLockModelNG::SetStrokeWidth(frameNode, lineWidth);
122 }
123 
SetPatternLockRegularColor(ArkUINodeHandle node,uint32_t color)124 void SetPatternLockRegularColor(ArkUINodeHandle node, uint32_t color)
125 {
126     auto *frameNode = reinterpret_cast<FrameNode*>(node);
127     CHECK_NULL_VOID(frameNode);
128     PatternLockModelNG::SetRegularColor(frameNode, Color(color));
129 }
130 
ResetPatternLockRegularColor(ArkUINodeHandle node)131 void ResetPatternLockRegularColor(ArkUINodeHandle node)
132 {
133     auto *frameNode = reinterpret_cast<FrameNode*>(node);
134     CHECK_NULL_VOID(frameNode);
135     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
136     CHECK_NULL_VOID(patternLockTheme);
137     Color regularColor = patternLockTheme->GetRegularColor();
138     PatternLockModelNG::SetRegularColor(frameNode, regularColor);
139 }
140 
SetPatternLockPathColor(ArkUINodeHandle node,uint32_t color)141 void SetPatternLockPathColor(ArkUINodeHandle node, uint32_t color)
142 {
143     auto *frameNode = reinterpret_cast<FrameNode*>(node);
144     CHECK_NULL_VOID(frameNode);
145     PatternLockModelNG::SetPathColor(frameNode, Color(color));
146 }
147 
ResetPatternLockPathColor(ArkUINodeHandle node)148 void ResetPatternLockPathColor(ArkUINodeHandle node)
149 {
150     auto *frameNode = reinterpret_cast<FrameNode*>(node);
151     CHECK_NULL_VOID(frameNode);
152     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
153     CHECK_NULL_VOID(patternLockTheme);
154     Color pathColor = patternLockTheme->GetPathColor();
155     PatternLockModelNG::SetPathColor(frameNode, pathColor);
156 }
157 
SetPatternLockActiveCircleColor(ArkUINodeHandle node,uint32_t value)158 void SetPatternLockActiveCircleColor(ArkUINodeHandle node, uint32_t value)
159 {
160     auto *frameNode = reinterpret_cast<FrameNode*>(node);
161     CHECK_NULL_VOID(frameNode);
162     PatternLockModelNG::SetActiveCircleColor(frameNode, Color(value));
163 }
164 
ResetPatternLockActiveCircleColor(ArkUINodeHandle node)165 void ResetPatternLockActiveCircleColor(ArkUINodeHandle node)
166 {
167     auto *frameNode = reinterpret_cast<FrameNode*>(node);
168     CHECK_NULL_VOID(frameNode);
169     PatternLockModelNG::SetActiveCircleColor(frameNode, Color::TRANSPARENT);
170 }
171 
SetPatternLockActiveCircleRadius(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)172 void SetPatternLockActiveCircleRadius(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
173 {
174     auto *frameNode = reinterpret_cast<FrameNode*>(node);
175     CHECK_NULL_VOID(frameNode);
176     PatternLockModelNG::SetActiveCircleRadius(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
177 }
178 
ResetPatternLockActiveCircleRadius(ArkUINodeHandle node)179 void ResetPatternLockActiveCircleRadius(ArkUINodeHandle node)
180 {
181     auto *frameNode = reinterpret_cast<FrameNode*>(node);
182     CHECK_NULL_VOID(frameNode);
183     auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
184     CHECK_NULL_VOID(patternLockTheme);
185     CalcDimension radius = patternLockTheme->GetCircleRadius();
186     PatternLockModelNG::SetActiveCircleRadius(frameNode, Dimension(0.0f, DimensionUnit::VP));
187 }
188 
SetPatternLockEnableWaveEffect(ArkUINodeHandle node,uint32_t value)189 void SetPatternLockEnableWaveEffect(ArkUINodeHandle node, uint32_t value)
190 {
191     auto *frameNode = reinterpret_cast<FrameNode*>(node);
192     CHECK_NULL_VOID(frameNode);
193     PatternLockModelNG::SetEnableWaveEffect(frameNode, static_cast<bool>(value));
194 }
195 
ResetPatternLockEnableWaveEffect(ArkUINodeHandle node)196 void ResetPatternLockEnableWaveEffect(ArkUINodeHandle node)
197 {
198     auto *frameNode = reinterpret_cast<FrameNode*>(node);
199     CHECK_NULL_VOID(frameNode);
200     PatternLockModelNG::SetEnableWaveEffect(frameNode, true);
201 }
202 
SetPatternLockEnableForeground(ArkUINodeHandle node,uint32_t value)203 void SetPatternLockEnableForeground(ArkUINodeHandle node, uint32_t value)
204 {
205     auto *frameNode = reinterpret_cast<FrameNode*>(node);
206     CHECK_NULL_VOID(frameNode);
207     PatternLockModelNG::SetEnableForeground(frameNode, static_cast<bool>(value));
208 }
209 
ResetPatternLockEnableForeground(ArkUINodeHandle node)210 void ResetPatternLockEnableForeground(ArkUINodeHandle node)
211 {
212     auto *frameNode = reinterpret_cast<FrameNode*>(node);
213     CHECK_NULL_VOID(frameNode);
214     PatternLockModelNG::SetEnableForeground(frameNode, false);
215 }
216 
SetPatternLockSkipUnselectedPoint(ArkUINodeHandle node,uint32_t value)217 void SetPatternLockSkipUnselectedPoint(ArkUINodeHandle node, uint32_t value)
218 {
219     auto *frameNode = reinterpret_cast<FrameNode*>(node);
220     CHECK_NULL_VOID(frameNode);
221     PatternLockModelNG::SetSkipUnselectedPoint(frameNode, static_cast<bool>(value));
222 }
223 
ResetPatternLockSkipUnselectedPoint(ArkUINodeHandle node)224 void ResetPatternLockSkipUnselectedPoint(ArkUINodeHandle node)
225 {
226     auto *frameNode = reinterpret_cast<FrameNode*>(node);
227     CHECK_NULL_VOID(frameNode);
228     PatternLockModelNG::SetSkipUnselectedPoint(frameNode, false);
229 }
230 
231 namespace NodeModifier {
GetPatternLockModifier()232 const ArkUIPatternLockModifier* GetPatternLockModifier()
233 {
234     static const ArkUIPatternLockModifier modifier = {
235         SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
236         ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
237         SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
238         ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
239         SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
240         ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
241         SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
242         ResetPatternLockEnableWaveEffect, SetPatternLockEnableForeground, ResetPatternLockEnableForeground,
243         SetPatternLockSkipUnselectedPoint, ResetPatternLockSkipUnselectedPoint
244     };
245     return &modifier;
246 }
247 
GetCJUIPatternLockModifier()248 const CJUIPatternLockModifier* GetCJUIPatternLockModifier()
249 {
250     static const CJUIPatternLockModifier modifier = {
251         SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
252         ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
253         SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
254         ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
255         SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
256         ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
257         SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
258         ResetPatternLockEnableWaveEffect, SetPatternLockEnableForeground, ResetPatternLockEnableForeground,
259         SetPatternLockSkipUnselectedPoint, ResetPatternLockSkipUnselectedPoint
260     };
261     return &modifier;
262 }
263 }
264 } // namespace OHOS::Ace::NG