1 /*
2  * Copyright (c) 2021-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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_FONT_CONSTANTS_CONVERTER_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_FONT_CONSTANTS_CONVERTER_H
18 
19 #ifndef USE_GRAPHIC_TEXT_GINE
20 #include "txt/placeholder_run.h"
21 #include "txt/text_baseline.h"
22 #include "txt/text_decoration.h"
23 #include "txt/text_style.h"
24 #include "include/core/SkColor.h"
25 #else
26 #include "rosen_text/typography_types.h"
27 #include "third_party/skia/include/core/SkColor.h"
28 #endif
29 
30 #include "core/components/common/properties/text_style.h"
31 #include "core/pipeline/pipeline_base.h"
32 
33 #ifndef USE_GRAPHIC_TEXT_GINE
34 namespace txt {
35 enum class FontWeight;
36 enum class FontStyle;
37 enum class TextAlign;
38 enum class RectHeightStyle;
39 enum class RectWidthStyle;
40 enum class TextDirection;
41 enum class TextDecorationStyle;
42 } // namespace txt
43 #else
44 namespace OHOS::Rosen {
45 enum class FontWeight;
46 enum class FontStyle;
47 enum class TextAlign;
48 enum class TextRectHeightStyle;
49 enum class TextRectWidthStyle;
50 enum class TextBaseline;
51 enum class TextDirection;
52 enum class PlaceholderVerticalAlignment;
53 enum class TextDecorationStyle;
54 struct TextStyle;
55 struct PlaceholderSpan;
56 
57 namespace Drawing {
58 class RectF;
59 } // namespace Drawing
60 } // namespace OHOS::Rosen
61 #endif
62 
63 namespace OHOS::Ace {
64 
65 enum class FontWeight;
66 enum class FontStyle;
67 enum class TextBaseline;
68 enum class TextAlign;
69 enum class TextRectHeightStyle;
70 enum class TextRectWidthStyle;
71 enum class TextDirection;
72 enum class TextDecoration;
73 enum class TextDecorationStyle;
74 enum class WhiteSpace;
75 class Color;
76 
77 namespace Constants {
78 
79 #ifndef USE_GRAPHIC_TEXT_GINE
80 txt::FontWeight ConvertTxtFontWeight(FontWeight fontWeight);
81 
82 txt::FontStyle ConvertTxtFontStyle(FontStyle fontStyle);
83 
84 txt::TextBaseline ConvertTxtTextBaseline(TextBaseline textBaseline);
85 
86 txt::TextAlign ConvertTxtTextAlign(TextAlign textAlign);
87 
88 txt::Paragraph::RectHeightStyle ConvertTxtRectHeightStyle(RectHeightStyle heightStyle);
89 
90 txt::Paragraph::RectWidthStyle ConvertTxtRectWidthStyle(RectWidthStyle widthStyle);
91 
92 txt::TextDirection ConvertTxtTextDirection(TextDirection textDirection);
93 
94 txt::TextDecoration ConvertTxtTextDecoration(TextDecoration textDecoration);
95 
96 txt::TextDecorationStyle ConvertTxtTextDecorationStyle(TextDecorationStyle textDecorationStyle);
97 
98 void ConvertTxtStyle(const TextStyle& textStyle, const WeakPtr<PipelineBase>& context, txt::TextStyle& txtStyle);
99 
100 void ConvertTxtStyle(const TextStyle& textStyle, txt::TextStyle& txtStyle);
101 
102 void ConvertSymbolTxtStyle(const TextStyle& textStyle, txt::TextStyle& txtStyle);
103 
104 Rect ConvertSkRect(SkRect skRect);
105 
106 txt::PlaceholderAlignment ConvertPlaceholderAlignment(PlaceholderAlignment textDecoration);
107 
108 void ConvertPlaceholderRun(const PlaceholderRun& span, txt::PlaceholderRun& txtSpan);
109 
110 #else
111 OHOS::Rosen::FontWeight ConvertTxtFontWeight(FontWeight fontWeight);
112 
113 OHOS::Rosen::FontStyle ConvertTxtFontStyle(FontStyle fontStyle);
114 
115 OHOS::Rosen::TextBaseline ConvertTxtTextBaseline(TextBaseline textBaseline);
116 
117 OHOS::Rosen::TextAlign ConvertTxtTextAlign(TextAlign textAlign);
118 
119 OHOS::Rosen::TextRectHeightStyle ConvertTxtRectHeightStyle(RectHeightStyle heightStyle);
120 
121 OHOS::Rosen::TextRectWidthStyle ConvertTxtRectWidthStyle(RectWidthStyle widthStyle);
122 
123 OHOS::Rosen::TextDirection ConvertTxtTextDirection(TextDirection textDirection);
124 
125 OHOS::Rosen::TextDecoration ConvertTxtTextDecoration(TextDecoration textDecoration);
126 
127 OHOS::Rosen::TextDecorationStyle ConvertTxtTextDecorationStyle(TextDecorationStyle textDecorationStyle);
128 
129 void ConvertTxtStyle(const TextStyle &textStyle,
130     const WeakPtr<PipelineBase> &context, OHOS::Rosen::TextStyle &txtStyle);
131 void ConvertTxtStyle(const TextStyle& textStyle, OHOS::Rosen::TextStyle& txtStyle);
132 
133 void ConvertSymbolTxtStyle(const TextStyle& textStyle, OHOS::Rosen::TextStyle& txtStyle);
134 
135 Rect ConvertSkRect(const Rosen::Drawing::RectF &skRect);
136 
137 OHOS::Rosen::PlaceholderVerticalAlignment ConvertPlaceholderAlignment(PlaceholderAlignment textDecoration);
138 
139 void ConvertPlaceholderRun(const PlaceholderRun& span, OHOS::Rosen::PlaceholderSpan& txtSpan);
140 #endif
141 
142 SkColor ConvertSkColor(Color color);
143 
144 } // namespace Constants
145 
146 } // namespace OHOS::Ace
147 
148 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_FONT_CONSTANTS_CONVERTER_H
149