1 #ifndef DALI_TOOLKIT_TEXT_MARKUP_PROCESSOR_HELPER_FUNCTIONS_H
2 #define DALI_TOOLKIT_TEXT_MARKUP_PROCESSOR_HELPER_FUNCTIONS_H
5 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/common/dali-vector.h>
26 #include <dali-toolkit/internal/text/text-definitions.h>
27 #include <dali-toolkit/public-api/text/text-enumerations.h>
39 * @brief Stores an attribute pair: name, value.
43 const char* nameBuffer;
44 const char* valueBuffer;
50 * @brief Stores a tag and its attributes.
54 Vector<Attribute> attributes;
61 * @brief Compare if two tokens are equal.
63 * @pre @p string1 must be lower case. (The html-ish constant tokens)
64 * The @p stringBuffer2 parameter is transformed to lower case.
65 * This function is used in the mark-up parser.
66 * It has no sense to transform the constants html-ish tokens to lower case when
67 * it's known they already are.
69 * @param[in] string1 The html-ish constant token.
70 * @param[in] stringBuffer2 Pointer to the html-ish token buffer.
71 * @param[in] length The length of the html-ish token.
73 * @return @e true if both strings are equal.
75 bool TokenComparison(const std::string& string1, const char* const stringBuffer2, Length length);
78 * @brief Skips any unnecessary white space.
80 * @param[in,out] stringBuffer The string buffer. It's a const iterator pointing the current character.
81 * @param[in] stringEndBuffer Pointer to one character after the end of the string buffer.
83 void SkipWhiteSpace(const char*& stringBuffer,
84 const char* const stringEndBuffer);
87 * @Brief Jumps to the next white space.
89 * @param[in,out] stringBuffer The string buffer. It's a const iterator pointing the current character.
90 * @param[in] stringEndBuffer Pointer to one character after the end of the string buffer.
92 void JumpToWhiteSpace(const char*& stringBuffer,
93 const char* const stringEndBuffer);
96 * @brief Converts a string into an unsigned int.
98 * @param[in] uintStr An unsigned int packed inside a string.
100 * @return The unsigned int value.
102 unsigned int StringToUint(const char* const uintStr);
105 * @brief Converts a string into an hexadecimal unsigned int.
107 * @param[in] uintStr An hexadecimal unsigned int packed inside a string.
109 * @return The hexadecimal value.
111 unsigned int StringToHex(const char* const uintStr);
114 * @brief Converts a string into a float value.
116 * @param[in] floatStr A float packed inside a string.
118 * @return The float value.
120 float StringToFloat(const char* const floatStr);
123 * @brief Converts a float into a string.
125 * @param[in] value The float value.
126 * @param[out] floatStr The string.
128 void FloatToString(float value, std::string& floatStr);
131 * @brief Converts an unsigned int into a string.
133 * @param[in] value The unsigned int value.
134 * @param[out] uIntStr The string.
136 void UintToString(unsigned int value, std::string& uIntStr);
139 * @brief Converts an ARGB color packed in 4 byte unsigned int into a Vector4 color used in Dali.
141 * @param[in] color An ARGB color packed in an unsigned int.
142 * @param[out] retColor A Vector4 with the converted color.
144 void UintColorToVector4(unsigned int color, Vector4& retColor);
147 * @brief Converts a color packed inside a string into an ARGB Vector4 color.
149 * The string color could be in hexadecimal ( 0xFF0000FF ), webcolor ( #0000FF or #00F ) or some constant values:
150 * black, white, red, green, blue, yellow, magenta, cyan or transparent.
152 * @param[in] colorStr A color packed inside a string.
153 * @param[in] length The length of the color string.
154 * @param[out] retColor A color packed inside a Vector4.
156 void ColorStringToVector4(const char* const colorStr, Length length, Vector4& retColor);
159 * @brief Converts a color packed in a Vector4 into a string.
161 * Constant colors will be converted to the strings black, white, red, green, blue, yellow, magenta, cyan or transparent.
163 * If is not a constant color it will be converted to a string with hexadecimal ARGB content.
165 * @param[in] value The color value.
166 * @param[out] colorStr The string.
168 void Vector4ToColorString(const Vector4& value, std::string& vector2Str);
171 * @brief Converts a two dimension vector packed inside a string into a Vector2.
173 * @param[in] vectorStr The two dimension vector packed inside a string.
174 * @param[in] length The length of the string.
175 * @param[out] vector2 The Vector2.
177 void StringToVector2(const char* const vectorStr, Length length, Vector2& vector2);
180 * @brief Converts a Vector2 into a string.
182 * @param[in] value The vector2 value.
183 * @param[out] vector2Str The string.
185 void Vector2ToString(const Vector2& value, std::string& vector2Str);
188 * @brief Converts a string into its value in the enum Text::Underline::Type.
190 * @param[in] typeStr The underline type value packed inside a string.
191 * @param[in] length The length of the string.
192 * @param[out] retType The Underline type.
194 void UnderlineTypeStringToTypeValue(const char* const typeStr, Length length, Text::Underline::Type& retType);
198 } // namespace Toolkit
202 #endif // DALI_TOOLKIT_TEXT_MARKUP_PROCESSOR_HELPER_FUNCTIONS_H