• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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_DECLARATION_SPAN_SPAN_DECLARATION_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SPAN_SPAN_DECLARATION_H
18 
19 #include "core/components/declaration/common/declaration.h"
20 #include "frameworks/bridge/common/dom/dom_type.h"
21 
22 namespace OHOS::Ace {
23 
24 struct SpanAttribute : Attribute {
25     std::string spanData;
26     bool isShow = true;
27 };
28 
29 struct SpanStyle : Style {
30     TextStyle spanStyle;
31 };
32 
33 class ACE_EXPORT SpanDeclaration : public Declaration {
34     DECLARE_ACE_TYPE(SpanDeclaration, Declaration);
35 
36 public:
37     SpanDeclaration() = default;
38     ~SpanDeclaration() override = default;
39 
GetSpanData()40     const std::string& GetSpanData() const
41     {
42         auto& attribute = static_cast<SpanAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
43         return attribute.spanData;
44     }
45 
SetSpanData(const std::string & spanData)46     void SetSpanData(const std::string& spanData)
47     {
48         auto& attribute = MaybeResetAttribute<SpanAttribute>(AttributeTag::SPECIALIZED_ATTR);
49         attribute.spanData = spanData;
50     }
51 
GetSpanStyle()52     const TextStyle& GetSpanStyle()
53     {
54         auto& style = static_cast<SpanStyle&>(GetStyle(StyleTag::SPECIALIZED_STYLE));
55         return style.spanStyle;
56     }
57 
SetTextStyle(const TextStyle & spanStyle)58     void SetTextStyle(const TextStyle& spanStyle)
59     {
60         auto& style = MaybeResetStyle<SpanStyle>(StyleTag::SPECIALIZED_STYLE);
61         style.spanStyle = spanStyle;
62     }
63 
IsShow()64     bool IsShow() const
65     {
66         auto& attribute = static_cast<SpanAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
67         return attribute.isShow;
68     }
69 
SetIsShow(bool isShow)70     void SetIsShow(bool isShow)
71     {
72         auto& attribute = MaybeResetAttribute<SpanAttribute>(AttributeTag::SPECIALIZED_ATTR);
73         attribute.isShow = isShow;
74     }
75 
SetHasSetFontStyle(bool isSetFontStyle)76     void SetHasSetFontStyle(bool isSetFontStyle)
77     {
78         isSetFontStyle_ = isSetFontStyle;
79     }
HasSetFontStyle()80     bool HasSetFontStyle() const
81     {
82         return isSetFontStyle_;
83     }
84 
SetHasSetFontColor(bool isSetFontColor)85     void SetHasSetFontColor(bool isSetFontColor)
86     {
87         isSetFontColor_ = isSetFontColor;
88     }
HasSetFontColor()89     bool HasSetFontColor() const
90     {
91         return isSetFontColor_;
92     }
93 
SetHasSetFontWeight(bool isSetFontWeight)94     void SetHasSetFontWeight(bool isSetFontWeight)
95     {
96         isSetFontWeight_ = isSetFontWeight;
97     }
HasSetFontWeight()98     bool HasSetFontWeight() const
99     {
100         return isSetFontWeight_;
101     }
102 
SetHasSetFontSize(bool isSetFontSize)103     void SetHasSetFontSize(bool isSetFontSize)
104     {
105         isSetFontSize_ = isSetFontSize;
106     }
HasSetFontSize()107     bool HasSetFontSize() const
108     {
109         return isSetFontSize_;
110     }
111 
SetHasSetFontFamily(bool isSetFontFamily)112     void SetHasSetFontFamily(bool isSetFontFamily)
113     {
114         isSetFontFamily_ = isSetFontFamily;
115     }
HasSetFontFamily()116     bool HasSetFontFamily() const
117     {
118         return isSetFontFamily_;
119     }
120 
SetHasSetTextDecoration(bool isSetTextDecoration)121     void SetHasSetTextDecoration(bool isSetTextDecoration)
122     {
123         isSetTextDecoration_ = isSetTextDecoration;
124     }
HasSetTextDecoration()125     bool HasSetTextDecoration() const
126     {
127         return isSetTextDecoration_;
128     }
129 
SetHasSetTextDecorationColor(bool isSetTextDecorationColor)130     void SetHasSetTextDecorationColor(bool isSetTextDecorationColor)
131     {
132         isSetTextDecorationColor_ = isSetTextDecorationColor;
133     }
HasSetTextDecorationColor()134     bool HasSetTextDecorationColor() const
135     {
136         return isSetTextDecorationColor_;
137     }
138 
SetHasSetTextDecorationStyle(bool isSetTextDecorationStyle)139     void SetHasSetTextDecorationStyle(bool isSetTextDecorationStyle)
140     {
141         isSetTextDecorationStyle_ = isSetTextDecorationStyle;
142     }
HasSetTextDecorationStyle()143     bool HasSetTextDecorationStyle() const
144     {
145         return isSetTextDecorationStyle_;
146     }
147 
SetHasSetAllowScale(bool isSetAllowScale)148     void SetHasSetAllowScale(bool isSetAllowScale)
149     {
150         isSetAllowScale_ = isSetAllowScale;
151     }
HasSetAllowScale()152     bool HasSetAllowScale() const
153     {
154         return isSetAllowScale_;
155     }
156 
SetHasSetFontFeatures(bool isSetFontFeatures)157     void SetHasSetFontFeatures(bool isSetFontFeatures)
158     {
159         isSetFontFeatures_ = isSetFontFeatures;
160     }
HasSetFontFeatures()161     bool HasSetFontFeatures() const
162     {
163         return isSetFontFeatures_;
164     }
165 
SetHasSetLetterSpacing(bool isSetLetterSpacing)166     void SetHasSetLetterSpacing(bool isSetLetterSpacing)
167     {
168         isSetLetterSpacing_ = isSetLetterSpacing;
169     }
HasSetLetterSpacing()170     bool HasSetLetterSpacing() const
171     {
172         return isSetLetterSpacing_;
173     }
174 
SetHasSetTextCase(bool isSetTextCase)175     void SetHasSetTextCase(bool isSetTextCase)
176     {
177         isSetTextCase_ = isSetTextCase;
178     }
HasSetTextCase()179     bool HasSetTextCase() const
180     {
181         return isSetTextCase_;
182     }
183 
184 protected:
185     void InitCommonEvent() override;
InitCommonAttribute()186     void InitCommonAttribute() override {}
InitCommonStyle()187     void InitCommonStyle() override {}
InitCommonMethod()188     void InitCommonMethod() override {}
189     void InitSpecialized() override;
190     bool SetSpecializedAttr(const std::pair<std::string, std::string>& attr) override;
191     bool SetSpecializedStyle(const std::pair<std::string, std::string>& style) override;
192 
193     bool isSetFontStyle_ = false;
194     bool isSetFontColor_ = false;
195     bool isSetFontWeight_ = false;
196     bool isSetFontSize_ = false;
197     bool isSetFontFamily_ = false;
198     bool isSetTextDecoration_ = false;
199     bool isSetTextDecorationColor_ = false;
200     bool isSetTextDecorationStyle_ = false;
201     bool isSetAllowScale_ = false;
202     bool isSetFontFeatures_ = false;
203     bool isSetLetterSpacing_ = false;
204     bool isSetTextCase_ = false;
205 };
206 
207 } // namespace OHOS::Ace
208 
209 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SPAN_SPAN_DECLARATION_H
210