1 #ifndef DALI_TOOLKIT_TEXT_GEOMETRY_H
2 #define DALI_TOOLKIT_TEXT_GEOMETRY_H
5 * Copyright (c) 2021 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/public-api/math/rect.h>
25 #include <dali-toolkit/internal/text/text-model.h>
33 * @brief Get the rendered size & position of a specific text range.
34 * if the requested text is at multilines, multiple sizes/positions will be returned for each text located in a separate line.
35 * if a line contains characters with different directions, multiple sizes will be returned for each block of contiguous characters with the same direction.
37 * @param[in] textModel text model containing text info.
38 * @param[in] startIndex start index of the text requested to get position/size for.
39 * @param[in] endIndex end index(included) of the text requested to get position/size for.
40 * @param[in] sizesList list of sizes for the reuested text.
41 * @param[in] positionsList list of positions for the requested text
43 void GetTextGeometry(ModelPtr textModel, CharacterIndex startIndex, CharacterIndex endIndex, Vector<Vector2>& sizesList, Vector<Vector2>& positionsList);
46 * @brief Get the line bounding rectangle.
47 * if the requested index is out of range or the line is not yet rendered, a rect of {0, 0, 0, 0} is returned.
49 * @param[in] textModel text model containing line info.
50 * @param[in] lineIndex line index to which we want to calculate the geometry for.
51 * @return bounding rectangle.
53 Rect<float> GetLineBoundingRect(ModelPtr textModel, const uint32_t lineIndex);
56 * @brief Get the left point of the line (x).
58 * @param[in] lineRun the requested line.
59 * @return x point of the line.
61 float GetLineLeft(const LineRun& lineRun);
64 * @brief Get the top point of the line (y).
65 * if the requested line id the first; the top = 0, else the top = the heights of the previouse lines.
67 * @param[in] lines the lines in the text controller.
68 * @param[in] lineRun the requested line.
69 * @return y point of the line.
71 float GetLineTop(const Vector<LineRun>& lines, const LineRun& lineRun);
75 } // namespace Toolkit
79 #endif // DALI_TOOLKIT_TEXT_GEOMETRY_H