Support Emoji sequences
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / dali-toolkit-test-utils / toolkit-text-utils.h
1 #ifndef DALI_TOOLKIT_TEXT_UTILS_H
2 #define DALI_TOOLKIT_TEXT_UTILS_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/metrics.h>
23 #include <dali-toolkit/internal/text/text-controller.h>
24 #include <dali-toolkit/internal/text/text-model.h>
25
26 namespace Dali
27 {
28
29 namespace Toolkit
30 {
31
32 namespace Text
33 {
34
35 /**
36  * @brief Some layout options.
37  */
38 struct LayoutOptions
39 {
40   LayoutOptions()
41   : align{ true }
42   {}
43
44   bool align   : 1; ///< Whether to align the lines.
45 };
46
47 /**
48  * @brief Creates and fills all the vectors of a text model: characters in utf32, segmentation info,
49  * scripts, fonts, bidi info, glyphs, conversion tables, etc.
50  *
51  * @param[in] text The given text.
52  * @param[in] textArea The area where to layout the text.
53  * @param[in] fontDescriptions The fonts to be used.
54  * @param[in] options Layout options.
55  * @param[out] layoutSize The laid-out size.
56  * @param[out] textModel Pointer to a text model instance.
57  * @param[out] metrics Pointer to a wrapper around FontClient used to get metrics.
58  * @param[in] markupProcessorEnabled Enable markup processor to use markup text.
59  * @param[in] wrapMode Line wrap mode.
60  * @param[in] ellipsisEnabled Whether the ellipsis layout option is enabled.
61  * @param[in] ellipsisPosition Where is the location the text elide.
62  */
63 void CreateTextModel( const std::string& text,
64                       const Size& textArea,
65                       const Vector<FontDescriptionRun>& fontDescriptions,
66                       const LayoutOptions& options,
67                       Size& layoutSize,
68                       ModelPtr& textModel,
69                       MetricsPtr& metrics,
70                       bool markupProcessorEnabled,
71                       LineWrap::Mode wrapMode,
72                       bool ellipsisEnabled,
73                       DevelText::EllipsisPosition::Type ellipsisPosition);
74
75 /**
76  * @brief Configures the text @p controller similarly to the one configured by the text-label.
77  *
78  * @param[in,out] The text controller to configure.
79  */
80 void ConfigureTextLabel( ControllerPtr controller );
81
82 /**
83  * @brief Configures the text @p controller similarly to the one configured by the text-field.
84  *
85  * @param[in,out] The text controller to configure.
86  */
87 void ConfigureTextField( ControllerPtr controller );
88
89 /**
90  * @brief Configures the text @p controller similarly to the one configured by the text-editor.
91  *
92  * @param[in,out] The text controller to configure.
93  */
94 void ConfigureTextEditor( ControllerPtr controller );
95
96
97 /**
98  * @brief Creates one FontDescriptionRun then add it to FontDescription list.
99  *
100  * @param[in] characterRun The initial character index and the number of characters of the run.
101  * @param[in] fontFamilyName The font's family name.
102  * @param[in] weight The font's weight.
103  * @param[in] width The font's width.
104  * @param[in] slant The font's slant.
105  * @param[in] size Whether the font's family is defined.
106  * @param[in] familyDefined Whether the font's weight is defined.
107  * @param[in] weightDefined Whether the font's width is defined.
108  * @param[in] widthDefined Whether the ellipsis layout option is enabled.
109  * @param[in] slantDefined Whether the font's slant is defined.
110  * @param[in] sizeDefined Whether the font's size is defined.
111
112 * @return vector contains one FontDescriptionRun.
113  */
114 Vector<FontDescriptionRun> CreateSingleFontDescription(
115                     const CharacterRun&         characterRun,
116                     const std::string           fontFamilyName,
117                     const FontWeight            weight,
118                     const FontWidth             width,
119                     const FontSlant             slant,
120                     const PointSize26Dot6       size,
121                     const bool                  familyDefined,
122                     const bool                  weightDefined,
123                     const bool                  widthDefined,
124                     const bool                  slantDefined,
125                     const bool                  sizeDefined);
126
127 } // namespace Text
128
129 } // namespace Toolkit
130
131 } // namespace Dali
132
133 #endif // DALI_TOOLKIT_TEXT_UTILS_H