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 #ifndef OHOS_ROSEN_JS_FONT_H 17 #define OHOS_ROSEN_JS_FONT_H 18 19 #include <memory> 20 #include <native_engine/native_engine.h> 21 #include <native_engine/native_value.h> 22 23 #include "text/font.h" 24 #include "text/typeface.h" 25 26 namespace OHOS::Rosen { 27 namespace Drawing { 28 class JsFont final { 29 public: JsFont(std::shared_ptr<Font> font)30 explicit JsFont(std::shared_ptr<Font> font) : m_font(font) {}; 31 ~JsFont(); 32 33 static napi_value Init(napi_env env, napi_value exportObj); 34 static napi_value CreateFont(napi_env env, napi_callback_info info); 35 static napi_value Constructor(napi_env env, napi_callback_info info); 36 static void Destructor(napi_env env, void *nativeObject, void *finalize); 37 38 static napi_value EnableSubpixel(napi_env env, napi_callback_info info); 39 static napi_value EnableEmbolden(napi_env env, napi_callback_info info); 40 static napi_value EnableLinearMetrics(napi_env env, napi_callback_info info); 41 static napi_value SetBaselineSnap(napi_env env, napi_callback_info info); 42 static napi_value SetEmbeddedBitmaps(napi_env env, napi_callback_info info); 43 static napi_value SetForceAutoHinting(napi_env env, napi_callback_info info); 44 static napi_value SetSize(napi_env env, napi_callback_info info); 45 static napi_value SetTypeface(napi_env env, napi_callback_info info); 46 static napi_value GetTypeface(napi_env env, napi_callback_info info); 47 static napi_value GetSize(napi_env env, napi_callback_info info); 48 static napi_value GetMetrics(napi_env env, napi_callback_info info); 49 static napi_value GetWidths(napi_env env, napi_callback_info info); 50 static napi_value IsBaselineSnap(napi_env env, napi_callback_info info); 51 static napi_value IsEmbeddedBitmaps(napi_env env, napi_callback_info info); 52 static napi_value IsForceAutoHinting(napi_env env, napi_callback_info info); 53 static napi_value MeasureSingleCharacter(napi_env env, napi_callback_info info); 54 static napi_value MeasureText(napi_env env, napi_callback_info info); 55 static napi_value SetScaleX(napi_env env, napi_callback_info info); 56 static napi_value SetSkewX(napi_env env, napi_callback_info info); 57 static napi_value SetEdging(napi_env env, napi_callback_info info); 58 static napi_value SetHinting(napi_env env, napi_callback_info info); 59 static napi_value CountText(napi_env env, napi_callback_info info); 60 static napi_value IsSubpixel(napi_env env, napi_callback_info info); 61 static napi_value IsLinearMetrics(napi_env env, napi_callback_info info); 62 static napi_value GetSkewX(napi_env env, napi_callback_info info); 63 static napi_value IsEmbolden(napi_env env, napi_callback_info info); 64 static napi_value GetScaleX(napi_env env, napi_callback_info info); 65 static napi_value GetHinting(napi_env env, napi_callback_info info); 66 static napi_value GetEdging(napi_env env, napi_callback_info info); 67 static napi_value TextToGlyphs(napi_env env, napi_callback_info info); 68 69 std::shared_ptr<Font> GetFont(); 70 void SetFont(std::shared_ptr<Font> font); 71 72 private: 73 napi_value OnEnableSubpixel(napi_env env, napi_callback_info info); 74 napi_value OnEnableEmbolden(napi_env env, napi_callback_info info); 75 napi_value OnEnableLinearMetrics(napi_env env, napi_callback_info info); 76 napi_value OnSetBaselineSnap(napi_env env, napi_callback_info info); 77 napi_value OnSetEmbeddedBitmaps(napi_env env, napi_callback_info info); 78 napi_value OnSetForceAutoHinting(napi_env env, napi_callback_info info); 79 napi_value OnSetSize(napi_env env, napi_callback_info info); 80 napi_value OnSetTypeface(napi_env env, napi_callback_info info); 81 napi_value OnGetTypeface(napi_env env, napi_callback_info info); 82 napi_value OnGetSize(napi_env env, napi_callback_info info); 83 napi_value OnGetMetrics(napi_env env, napi_callback_info info); 84 napi_value OnGetWidths(napi_env env, napi_callback_info info); 85 napi_value OnIsBaselineSnap(napi_env env, napi_callback_info info); 86 napi_value OnIsEmbeddedBitmaps(napi_env env, napi_callback_info info); 87 napi_value OnIsForceAutoHinting(napi_env env, napi_callback_info info); 88 napi_value OnMeasureSingleCharacter(napi_env env, napi_callback_info info); 89 napi_value OnMeasureText(napi_env env, napi_callback_info info); 90 napi_value OnSetScaleX(napi_env env, napi_callback_info info); 91 napi_value OnSetSkewX(napi_env env, napi_callback_info info); 92 napi_value OnSetEdging(napi_env env, napi_callback_info info); 93 napi_value OnSetHinting(napi_env env, napi_callback_info info); 94 napi_value OnCountText(napi_env env, napi_callback_info info); 95 napi_value OnIsSubpixel(napi_env env, napi_callback_info info); 96 napi_value OnIsLinearMetrics(napi_env env, napi_callback_info info); 97 napi_value OnGetSkewX(napi_env env, napi_callback_info info); 98 napi_value OnIsEmbolden(napi_env env, napi_callback_info info); 99 napi_value OnGetScaleX(napi_env env, napi_callback_info info); 100 napi_value OnGetHinting(napi_env env, napi_callback_info info); 101 napi_value OnGetEdging(napi_env env, napi_callback_info info); 102 napi_value OnTextToGlyphs(napi_env env, napi_callback_info info); 103 104 static thread_local napi_ref constructor_; 105 std::shared_ptr<Font> m_font = nullptr; 106 }; 107 } // namespace Drawing 108 } // namespace OHOS::Rosen 109 #endif // OHOS_ROSEN_JS_FONT_H