• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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_NG_PATTERN_TEXT_TEXT_LAYOUT_PROPERTY_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_TEXT_TEXT_LAYOUT_PROPERTY_H
18 
19 #include <string>
20 
21 #include "core/components/common/layout/constants.h"
22 #include "core/components_ng/layout/layout_property.h"
23 #include "core/components_ng/pattern/text/text_styles.h"
24 #include "core/components_ng/property/property.h"
25 #include "core/components_v2/inspector/utils.h"
26 
27 namespace OHOS::Ace::NG {
28 class ACE_EXPORT TextLayoutProperty : public LayoutProperty {
29     DECLARE_ACE_TYPE(TextLayoutProperty, LayoutProperty);
30 
31 public:
32     TextLayoutProperty() = default;
33 
34     ~TextLayoutProperty() override = default;
35 
Clone()36     RefPtr<LayoutProperty> Clone() const override
37     {
38         auto value = MakeRefPtr<TextLayoutProperty>();
39         Clone(value);
40         return value;
41     }
42 
Reset()43     void Reset() override
44     {
45         LayoutProperty::Reset();
46         ResetFontStyle();
47         ResetTextLineStyle();
48         ResetContent();
49         ResetForegroundColor();
50     }
51 
52     void ToJsonValue(std::unique_ptr<JsonValue>& json) const override;
53 
54     void FromJson(const std::unique_ptr<JsonValue>& json) override;
55 
56     ACE_DEFINE_PROPERTY_GROUP(FontStyle, FontStyle);
57     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, FontSize, Dimension, PROPERTY_UPDATE_MEASURE);
58     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, TextColor, Color, PROPERTY_UPDATE_MEASURE_SELF);
59     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, TextShadow, Shadow, PROPERTY_UPDATE_MEASURE);
60     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, ItalicFontStyle, Ace::FontStyle, PROPERTY_UPDATE_MEASURE);
61     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, FontWeight, FontWeight, PROPERTY_UPDATE_MEASURE);
62     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, FontFamily, std::vector<std::string>, PROPERTY_UPDATE_MEASURE);
63     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, TextDecoration, TextDecoration, PROPERTY_UPDATE_MEASURE);
64     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, TextDecorationColor, Color, PROPERTY_UPDATE_MEASURE);
65     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, TextCase, TextCase, PROPERTY_UPDATE_MEASURE);
66     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, AdaptMinFontSize, Dimension, PROPERTY_UPDATE_MEASURE);
67     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, AdaptMaxFontSize, Dimension, PROPERTY_UPDATE_MEASURE);
68     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(FontStyle, LetterSpacing, Dimension, PROPERTY_UPDATE_MEASURE);
69     ACE_DEFINE_PROPERTY_GROUP(TextLineStyle, TextLineStyle);
70     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, LineHeight, Dimension, PROPERTY_UPDATE_MEASURE);
71     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, TextBaseline, TextBaseline, PROPERTY_UPDATE_MEASURE);
72     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, BaselineOffset, Dimension, PROPERTY_UPDATE_MEASURE);
73     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, TextAlign, TextAlign, PROPERTY_UPDATE_MEASURE);
74     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, TextOverflow, TextOverflow, PROPERTY_UPDATE_MEASURE);
75     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, MaxLines, uint32_t, PROPERTY_UPDATE_MEASURE);
76     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(
77         TextLineStyle, HeightAdaptivePolicy, TextHeightAdaptivePolicy, PROPERTY_UPDATE_MEASURE);
78     ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP(TextLineStyle, TextIndent, Dimension, PROPERTY_UPDATE_MEASURE);
79     ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Content, std::string, PROPERTY_UPDATE_MEASURE);
80     ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CopyOption, CopyOptions, PROPERTY_UPDATE_MEASURE);
81     ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ForegroundColor, Color, PROPERTY_UPDATE_MEASURE_SELF);
82 
83     // for XTS inspector
InspectorGetTextFont()84     std::string InspectorGetTextFont() const
85     {
86         TextStyle font;
87         if (GetFontFamily().has_value()) {
88             font.SetFontFamilies(GetFontFamily().value());
89         }
90         if (GetFontSize().has_value()) {
91             font.SetFontSize(GetFontSize().value());
92         }
93         if (GetItalicFontStyle().has_value()) {
94             font.SetFontStyle(GetItalicFontStyle().value());
95         }
96         if (GetFontWeight().has_value()) {
97             font.SetFontWeight(GetFontWeight().value());
98         }
99         return V2::GetTextStyleInJson(font);
100     }
101     std::string GetCopyOptionString() const;
102     std::string GetFont() const;
103 
104 protected:
Clone(RefPtr<LayoutProperty> property)105     void Clone(RefPtr<LayoutProperty> property) const override
106     {
107         auto value = DynamicCast<TextLayoutProperty>(property);
108         value->LayoutProperty::UpdateLayoutProperty(DynamicCast<LayoutProperty>(this));
109         value->propFontStyle_ = CloneFontStyle();
110         value->propTextLineStyle_ = CloneTextLineStyle();
111         value->propContent_ = CloneContent();
112         value->propForegroundColor_ = CloneForegroundColor();
113     }
114 
115 private:
116     ACE_DISALLOW_COPY_AND_MOVE(TextLayoutProperty);
117 };
118 } // namespace OHOS::Ace::NG
119 
120 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_TEXT_TEXT_LAYOUT_PROPERTY_H
121