1 #ifndef DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H
2 #define DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_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/actors/actor-enumerations.h>
23 #include <dali/public-api/math/vector2.h>
24 #include <dali/public-api/math/vector3.h>
27 #include <dali-toolkit/internal/text/text-controller.h>
36 * Contains all the relayouting related methods for Text::Controller
38 struct Controller::Relayouter
41 * @brief Called by the Controller to retrieve the natural size.
43 * @param[in] controller A reference to the controller class
46 static Vector3 GetNaturalSize(Controller& controller);
49 * @brief Called by the Controller to check if the text fits.
51 * @param[in] controller A reference to the controller class
52 * @param[in] pointSize The point size
53 * @param[in] layoutSize The layout size
56 static bool CheckForTextFit(Controller& controller, float pointSize, const Size& layoutSize);
59 * @brief Calculates the point size for text for given layout()
61 * @param[in] controller A reference to the controller class
62 * @param[in] layoutSize The layout size
64 static void FitPointSizeforLayout(Controller& controller, const Size& layoutSize);
67 * @brief Called by the Controller to get the height for a particular width.
69 * @param[in] controller A reference to the controller class
70 * @param[in] width The width we want the height for
73 static float GetHeightForWidth(Controller& controller, float width);
76 * @brief Called by the Controller to do the relayout itself.
78 * @param[in] controller A reference to the controller class
79 * @param[in] size The size to set
80 * @param[in] layoutDirection The layout direction
83 static Controller::UpdateTextType Relayout(Controller& controller, const Size& size, Dali::LayoutDirection::Type layoutDirection);
86 * @brief Called by the Controller to do certain operations when relayouting.
88 * @param[in] controller A reference to the controller class
89 * @param[in] size The size to set
90 * @param[in] operationsRequired The operations we need to do
91 * @param[in/out] layoutSize The Layout size which can be updated depending on the result of the performed operations
94 static bool DoRelayout(Controller& controller, const Size& size, OperationsMask operationsRequired, Size& layoutSize);
97 * @brief Called by the Controller to calculate the veritcal offset give the control size.
99 * @param[in] controller A reference to the controller class
100 * @param[in] controlSize The control size
102 static void CalculateVerticalOffset(Controller& controller, const Size& controlSize);
107 } // namespace Toolkit
111 #endif // DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H