Support line spacing & min line size in texteditor
[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) 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/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  */
56 float GetLineHeight(const LineRun lineRun);
57
58 } // namespace Text
59
60 } // namespace Toolkit
61
62 } // namespace Dali
63
64 #endif // DALI_TOOLKIT_TEXT_LINE_RUN_H