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 }