[dali_2.0.25] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / layouts / layout-parameters.h
1 #ifndef DALI_TOOLKIT_TEXT_LAYOUT_PARAMETERS_H
2 #define DALI_TOOLKIT_TEXT_LAYOUT_PARAMETERS_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 // EXTERNAL INCLUDES
22 #include <dali/public-api/math/vector2.h>
23
24 // INTERNAL INCLUDES
25 #include <dali-toolkit/internal/text/text-definitions.h>
26 #include <dali-toolkit/internal/text/text-model.h>
27 #include <dali-toolkit/public-api/text/text-enumerations.h>
28
29 namespace Dali
30 {
31 namespace Toolkit
32 {
33 namespace Text
34 {
35 struct BidirectionalLineInfoRun;
36
37 namespace Layout
38 {
39 /**
40  * @brief Struct used to pass parameters.
41  */
42 struct Parameters
43 {
44   /**
45    * Constructor with the needed parameters to layout the text.
46    *
47    * @param[in] boundingBox The size of the box containing the text.
48    * @param[in,out] textModel The text's model.
49    */
50   Parameters(const Vector2& boundingBox,
51              ModelPtr       textModel)
52   : boundingBox{boundingBox},
53     textModel{textModel},
54     lineBidirectionalInfoRunsBuffer{nullptr},
55     numberOfBidirectionalInfoRuns{0u},
56     startGlyphIndex{0u},
57     numberOfGlyphs{0u},
58     startLineIndex{0u},
59     estimatedNumberOfLines{0u},
60     interGlyphExtraAdvance{0.f},
61     isLastNewParagraph{false}
62   {
63   }
64
65   Vector2                   boundingBox; ///< The size of the box containing the text.
66   ModelPtr                  textModel;
67   BidirectionalLineInfoRun* lineBidirectionalInfoRunsBuffer; ///< Bidirectional conversion tables per line.
68   Length                    numberOfBidirectionalInfoRuns;   ///< The number of lines with bidirectional info.
69   GlyphIndex                startGlyphIndex;                 ///< Index to the first glyph to layout.
70   Length                    numberOfGlyphs;                  ///< The number of glyphs to layout.
71   LineIndex                 startLineIndex;                  ///< The line index where to insert the new lines.
72   Length                    estimatedNumberOfLines;          ///< The estimated number of lines.
73   float                     interGlyphExtraAdvance;          ///< Extra advance added to each glyph.
74   bool                      isLastNewParagraph : 1;          ///< Whether the last character is a new paragraph character.
75 };
76
77 } // namespace Layout
78
79 } // namespace Text
80
81 } // namespace Toolkit
82
83 } // namespace Dali
84
85 #endif // DALI_TOOLKIT_TEXT_LAYOUT_PARAMETERS_H