fix incorrect calculaion of natural size in text
[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   StrikethroughStyleProperties& CopyIfNotDefined(const StrikethroughStyleProperties& other)
80   {
81     //Copy only the defined properties in other and not defined in this from other to this
82
83     if(!heightDefined && other.heightDefined)
84     {
85       height        = other.height;
86       heightDefined = true;
87     }
88
89     if(!colorDefined && other.colorDefined)
90     {
91       color        = other.color;
92       colorDefined = true;
93     }
94
95     // to chain this method
96     return *this;
97   }
98
99   StrikethroughStyleProperties& OverrideByDefinedProperties(const StrikethroughStyleProperties& other)
100   {
101     //Copy only the defined properties in other from other to this
102
103     if(other.heightDefined)
104     {
105       height        = other.height;
106       heightDefined = true;
107     }
108
109     if(other.colorDefined)
110     {
111       color        = other.color;
112       colorDefined = true;
113     }
114
115     // to chain this method
116     return *this;
117   }
118
119   //Attributes
120   Vector4 color;  ///< The color of strikethrough.
121   float   height; ///< The height of strikethrough.
122
123   bool colorDefined : 1;  ///< Whether the color is defined.
124   bool heightDefined : 1; ///< Whether the height is defined.
125 };
126
127 } // namespace Text
128
129 } // namespace Toolkit
130
131 } // namespace Dali
132
133 #endif // DALI_TOOLKIT_TEXT_STRIKETHROUGH_STYLE_PROPERTIES_H