1 #ifndef DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H
2 #define DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H
5 * Copyright (c) 2020 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>
39 * Contains all the relayouting related methods for Text::Controller
41 struct Controller::Relayouter
44 * @brief Called by the Controller to retrieve the natural size.
46 * @param[in] controller A reference to the controller class
49 static Vector3 GetNaturalSize(Controller& controller);
52 * @brief Called by the Controller to check if the text fits.
54 * @param[in] controller A reference to the controller class
55 * @param[in] pointSize The point size
56 * @param[in] layoutSize The layout size
59 static bool CheckForTextFit(Controller& controller, float pointSize, const Size& layoutSize);
62 * @brief Called by the Controller to get the height for a particular width.
64 * @param[in] controller A reference to the controller class
65 * @param[in] width The width we want the height for
68 static float GetHeightForWidth(Controller& controller, float width);
71 * @brief Called by the Controller to do the relayout itself.
73 * @param[in] controller A reference to the controller class
74 * @param[in] size The size to set
75 * @param[in] layoutDirection The layout direction
78 static Controller::UpdateTextType Relayout(Controller& controller, const Size& size, Dali::LayoutDirection::Type layoutDirection);
81 * @brief Called by the Controller to do certain operations when relayouting.
83 * @param[in] controller A reference to the controller class
84 * @param[in] size The size to set
85 * @param[in] operationsRequired The operations we need to do
86 * @param[in/out] layoutSize The Layout size which can be updated depending on the result of the performed operations
89 static bool DoRelayout(Controller& controller, const Size& size, OperationsMask operationsRequired, Size& layoutSize );
92 * @brief Called by the Controller to calculate the veritcal offset give the control size.
94 * @param[in] controller A reference to the controller class
95 * @param[in] controlSize The control size
97 static void CalculateVerticalOffset(Controller& controller, const Size& controlSize);
102 } // namespace Toolkit
106 #endif // DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H