Fix key event propagation in text controller
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / line-run.h
1 #ifndef DALI_TOOLKIT_TEXT_LINE_RUN_H
2 #define DALI_TOOLKIT_TEXT_LINE_RUN_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 // INTERNAL INCLUDES
22 #include <dali-toolkit/internal/text/character-run.h>
23 #include <dali-toolkit/internal/text/glyph-run.h>
24
25 namespace Dali
26 {
27 namespace Toolkit
28 {
29 namespace Text
30 {
31 /**
32  * @brief LineRun
33  */
34 struct LineRun
35 {
36   GlyphRun           glyphRun;                      ///< The initial glyph index and the number of glyphs of the run.
37   CharacterRun       characterRun;                  ///< The initial character index and the number of characters of the run.
38   float              width;                         ///< The line's width.
39   float              ascender;                      ///< The line's ascender.
40   float              descender;                     ///< The line's descender.
41   float              extraLength;                   ///< The length of the white spaces at the end of the line.
42   float              alignmentOffset;               ///< The horizontal alignment offset.
43   float              lineSpacing;                   ///< The line's spacing
44   CharacterDirection direction : 1;                 ///< Direction of the first character of the paragraph.
45   bool               ellipsis : 1;                  ///< Wheter ellipsis is added to the line.
46   bool               isSplitToTwoHalves;            ///< Whether the second half is defined. When split line to two halves to set Ellipsis in the MIDDLE of line. The second half is the second part of line after Ellipsis.
47   GlyphRun           glyphRunSecondHalf;            ///< The initial glyph index and the number of glyphs of the run for the second half of line.
48   CharacterRun       characterRunForSecondHalfLine; ///< The initial character index and the number of characters of the run for the second half of line.
49 };
50
51 /**
52  * @brief Get the line height for the specified line run.
53  *
54  * @param[in] lineRun The line runs to get the height for.
55  * @param[in] isLastLine whether this is the last line in the text.
56  */
57 float GetLineHeight(const LineRun lineRun, bool isLastLine);
58
59 } // namespace Text
60
61 } // namespace Toolkit
62
63 } // namespace Dali
64
65 #endif // DALI_TOOLKIT_TEXT_LINE_RUN_H