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_font_ffi.h"
17 
18 #include "bridge/cj_frontend/interfaces/cj_ffi/utils.h"
19 
20 using namespace OHOS::Ace;
21 using namespace OHOS::Ace::Framework;
22 
23 extern "C" {
FfiFontManagerRegisterFont(const char * familyName,const char * familySrc)24 void FfiFontManagerRegisterFont(const char* familyName, const char* familySrc)
25 {
26     auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
27     if (!frontend) {
28         LOGE("Can not get frontend.");
29         return;
30     }
31     frontend->RegisterFont(familyName, familySrc);
32 }
33 
FfiFontManagerGetSystemFontList()34 VectorStringHandle FfiFontManagerGetSystemFontList()
35 {
36     auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
37     if (!frontend) {
38         LOGE("Can not get frontend.");
39         return nullptr;
40     }
41     return frontend->GetSystemFontList();
42 }
43 
FfiFontManagerGetFontByName(const char * fontName)44 NativeOptionFontInfo FfiFontManagerGetFontByName(const char* fontName)
45 {
46     auto frontend = AceType::DynamicCast<CJFrontendAbstract>(Utils::GetCurrentFrontend());
47     if (!frontend) {
48         LOGE("Can not get frontend.");
49         return NativeOptionFontInfo { .hasValue = false, .info = nullptr };
50     }
51     return frontend->GetSystemFont(fontName);
52 }
53 }