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 "cj_menu_ffi.h"
17 
18 #include "bridge/declarative_frontend/jsview/models/menu_model_impl.h"
19 #include "bridge/common/utils/utils.h"
20 
21 using namespace OHOS::Ace;
22 using namespace OHOS::Ace::Framework;
23 
24 extern "C" {
FfiOHOSAceFrameworkMenuCreate()25 void FfiOHOSAceFrameworkMenuCreate()
26 {
27     MenuModel::GetInstance()->Create();
28 }
29 
FfiOHOSAceFrameworkMenuFont(double size,int32_t unit,const char * weight,const char * family,int32_t style)30 void FfiOHOSAceFrameworkMenuFont(double size, int32_t unit, const char* weight,
31     const char* family, int32_t style)
32 {
33     MenuModel::GetInstance()->SetFontStyle(static_cast<FontStyle>(style));
34 
35     std::string familyVal = family;
36     auto fontFamilies = ConvertStrToFontFamilies(familyVal);
37     MenuModel::GetInstance()->SetFontFamily(fontFamilies);
38 
39     CalcDimension fontSize = CalcDimension(size, DimensionUnit(unit));
40     MenuModel::GetInstance()->SetFontSize(fontSize);
41 
42     std::string weightVal = weight;
43     MenuModel::GetInstance()->SetFontWeight(ConvertStrToFontWeight(weightVal));
44 }
45 
FfiOHOSAceFrameworkMenuSetFontColor(uint32_t color)46 void FfiOHOSAceFrameworkMenuSetFontColor(uint32_t color)
47 {
48     std::optional<Color> colorVal = Color(color);
49     MenuModel::GetInstance()->SetFontColor(colorVal);
50 }
51 
FfiOHOSAceFrameworkMenuSetWidth(double width,int32_t unit)52 void FfiOHOSAceFrameworkMenuSetWidth(double width, int32_t unit)
53 {
54     CalcDimension widthVal = CalcDimension(width, DimensionUnit(unit));
55     MenuModel::GetInstance()->SetWidth(widthVal);
56 }
57 
FfiOHOSAceFrameworkMenuSetRadiusByLength(double size,int32_t unit)58 void FfiOHOSAceFrameworkMenuSetRadiusByLength(double size, int32_t unit)
59 {
60     CalcDimension radius = CalcDimension(size, DimensionUnit(unit));
61     MenuModel::GetInstance()->SetBorderRadius(radius);
62 }
63 
FfiOHOSAceFrameworkMenuSetRadiusByBorderRadiuses(CBorderRadiuses radius)64 void FfiOHOSAceFrameworkMenuSetRadiusByBorderRadiuses(CBorderRadiuses radius)
65 {
66     std::optional<CalcDimension> radiusTopLeft = CalcDimension(radius.topLeftRadiuses,
67         DimensionUnit(radius.topLeftUnit));
68     std::optional<CalcDimension> radiusTopRight = CalcDimension(radius.topRightRadiuses,
69         DimensionUnit(radius.topRightUnit));
70     std::optional<CalcDimension> radiusBottomLeft = CalcDimension(radius.bottomLeftRadiuses,
71         DimensionUnit(radius.bottomLeftUnit));
72     std::optional<CalcDimension> radiusBottomRight = CalcDimension(radius.bottomRightRadiuses,
73         DimensionUnit(radius.bottomRightUnit));
74     MenuModel::GetInstance()->SetBorderRadius(radiusTopLeft, radiusTopRight, radiusBottomLeft, radiusBottomRight);
75 }
76 }