[dali_2.3.19] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / character-run.h
1 #ifndef DALI_TOOLKIT_TEXT_CHARACTER_RUN_H
2 #define DALI_TOOLKIT_TEXT_CHARACTER_RUN_H
3
4 /*
5  * Copyright (c) 2021 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 // INTERNAL INCLUDES
22 #include <dali-toolkit/internal/text/text-definitions.h>
23
24 namespace Dali
25 {
26 namespace Toolkit
27 {
28 namespace Text
29 {
30 /**
31  * @brief A run of consecutive characters.
32  */
33 struct CharacterRun
34 {
35   CharacterRun()
36   : characterIndex{0u},
37     numberOfCharacters{0u}
38   {
39   }
40
41   CharacterRun(CharacterIndex characterIndex, Length numberOfCharacters)
42   : characterIndex{characterIndex},
43     numberOfCharacters{numberOfCharacters}
44   {
45   }
46
47   CharacterIndex characterIndex;     ///< Index to the first character.
48   Length         numberOfCharacters; ///< Number of characters in the run.
49
50   //Methods
51
52   /**
53   * @brief Calculate the end index in run.
54   * @return the end character index in run.
55   */
56   CharacterIndex GetEndCharacterIndex() const
57   {
58     DALI_ASSERT_DEBUG(!((0u == numberOfCharacters) && (characterIndex > 0u)) &&
59                       "Toolkit::Text::CharacterRun. NumberOfCharacters should be greater than zero");
60
61     // Note: Length is uint32. Extra validation to avoid a potential defects.
62     return (numberOfCharacters == 0u ? 0u : (characterIndex + numberOfCharacters - 1u));
63   }
64 };
65
66 } // namespace Text
67
68 } // namespace Toolkit
69
70 } // namespace Dali
71
72 #endif // DALI_TOOLKIT_TEXT_CHARACTER_RUN_H