Resolve cases for strikethrough when using multiple <s> tags
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / strikethrough-style-properties.h
1 #ifndef DALI_TOOLKIT_TEXT_STRIKETHROUGH_STYLE_PROPERTIES_H
2 #define DALI_TOOLKIT_TEXT_STRIKETHROUGH_STYLE_PROPERTIES_H
3
4 /*
5  * Copyright (c) 2022 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/math/vector4.h>
23
24 namespace Dali
25 {
26 namespace Toolkit
27 {
28 namespace Text
29 {
30 /**
31  * @brief Properties of strikethrough style.
32  */
33 struct StrikethroughStyleProperties
34 {
35   // Constructors
36
37   /**
38    * Default constructor to set the default values of bitfields
39    */
40   StrikethroughStyleProperties()
41   : color{Color::BLACK},
42     height{0u},
43     colorDefined{false},
44     heightDefined{false}
45   {
46   }
47
48   StrikethroughStyleProperties(Vector4 color,
49                                float   height,
50                                bool    colorDefined,
51                                bool    heightDefined)
52   : color{color},
53     height{height},
54     colorDefined{colorDefined},
55     heightDefined{heightDefined}
56
57   {
58   }
59
60   // Overloading operators
61
62   bool operator==(const StrikethroughStyleProperties& other) const
63   {
64     //The property is similar when both are not defined or when both are defined and have the same value.
65     return ((!colorDefined && !other.colorDefined) || ((colorDefined && other.colorDefined) && (color == other.color))) &&
66            ((!heightDefined && !other.heightDefined) || ((heightDefined && other.heightDefined) && (height == other.height)));
67   }
68
69   bool operator!=(const StrikethroughStyleProperties& other) const
70   {
71     return !(*this == other);
72   }
73
74   bool IsHeightEqualTo(const StrikethroughStyleProperties& other) const
75   {
76     return ((!heightDefined && !other.heightDefined) || ((heightDefined && other.heightDefined) && (height == other.height)));
77   }
78
79   //Attributes
80   Vector4 color;  ///< The color of strikethrough.
81   float   height; ///< The height of strikethrough.
82
83   bool colorDefined : 1;  ///< Whether the color is defined.
84   bool heightDefined : 1; ///< Whether the height is defined.
85 };
86
87 } // namespace Text
88
89 } // namespace Toolkit
90
91 } // namespace Dali
92
93 #endif // DALI_TOOLKIT_TEXT_STRIKETHROUGH_STYLE_PROPERTIES_H