1 #ifndef DALI_TOOLKIT_TEXT_UTILS_H
2 #define DALI_TOOLKIT_TEXT_UTILS_H
5 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
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>
33 * @brief Some layout options.
42 bool align : 1; ///< Whether to align the lines.
46 * @brief Creates and fills all the vectors of a text model: characters in utf32, segmentation info,
47 * scripts, fonts, bidi info, glyphs, conversion tables, etc.
49 * @param[in] text The given text.
50 * @param[in] textArea The area where to layout the text.
51 * @param[in] fontDescriptions The fonts to be used.
52 * @param[in] options Layout options.
53 * @param[out] layoutSize The laid-out size.
54 * @param[out] textModel Pointer to a text model instance.
55 * @param[out] metrics Pointer to a wrapper around FontClient used to get metrics.
56 * @param[in] markupProcessorEnabled Enable markup processor to use markup text.
57 * @param[in] wrapMode Line wrap mode.
58 * @param[in] ellipsisEnabled Whether the ellipsis layout option is enabled.
59 * @param[in] ellipsisPosition Where is the location the text elide.
60 * @param[in] lineSpacing The height of the line in points.
61 * @param[in] characterSpacing The spacing between the characters.
63 void CreateTextModel(const std::string& text,
65 const Vector<FontDescriptionRun>& fontDescriptions,
66 const LayoutOptions& options,
70 bool markupProcessorEnabled,
71 LineWrap::Mode wrapMode,
73 DevelText::EllipsisPosition::Type ellipsisPosition,
75 float characterSpacing);
78 * @brief Configures the text @p controller similarly to the one configured by the text-label.
80 * @param[in,out] The text controller to configure.
82 void ConfigureTextLabel(ControllerPtr controller);
85 * @brief Configures the text @p controller similarly to the one configured by the text-field.
87 * @param[in,out] The text controller to configure.
89 void ConfigureTextField(ControllerPtr controller);
92 * @brief Configures the text @p controller similarly to the one configured by the text-editor.
94 * @param[in,out] The text controller to configure.
96 void ConfigureTextEditor(ControllerPtr controller);
99 * @brief Creates one FontDescriptionRun then add it to FontDescription list.
101 * @param[in] characterRun The initial character index and the number of characters of the run.
102 * @param[in] fontFamilyName The font's family name.
103 * @param[in] weight The font's weight.
104 * @param[in] width The font's width.
105 * @param[in] slant The font's slant.
106 * @param[in] size Whether the font's family is defined.
107 * @param[in] familyDefined Whether the font's weight is defined.
108 * @param[in] weightDefined Whether the font's width is defined.
109 * @param[in] widthDefined Whether the ellipsis layout option is enabled.
110 * @param[in] slantDefined Whether the font's slant is defined.
111 * @param[in] sizeDefined Whether the font's size is defined.
113 * @return vector contains one FontDescriptionRun.
115 Vector<FontDescriptionRun> CreateSingleFontDescription(
116 const CharacterRun& characterRun,
117 const std::string fontFamilyName,
118 const FontWeight weight,
119 const FontWidth width,
120 const FontSlant slant,
121 const PointSize26Dot6 size,
122 const bool familyDefined,
123 const bool weightDefined,
124 const bool widthDefined,
125 const bool slantDefined,
126 const bool sizeDefined);
130 } // namespace Toolkit
134 #endif // DALI_TOOLKIT_TEXT_UTILS_H