(TextController) Refactored out Text updating methods & moved another method to the...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / text-controller-relayouter.h
1 #ifndef DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H
2 #define DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H
3
4 /*
5  * Copyright (c) 2020 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 // EXTERNAL INCLUDES
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>
25
26 // INTERNAL INCLUDES
27 #include <dali-toolkit/internal/text/text-controller.h>
28
29 namespace Dali
30 {
31
32 namespace Toolkit
33 {
34
35 namespace Text
36 {
37
38 /**
39  * Contains all the relayouting related methods for Text::Controller
40  */
41 struct Controller::Relayouter
42 {
43   /**
44    * @brief Called by the Controller to retrieve the natural size.
45    *
46    * @param[in] controller A reference to the controller class
47    * @return
48    */
49   static Vector3 GetNaturalSize(Controller& controller);
50
51   /**
52    * @brief Called by the Controller to check if the text fits.
53    *
54    * @param[in] controller A reference to the controller class
55    * @param[in] pointSize The point size
56    * @param[in] layoutSize The layout size
57    * @return
58    */
59   static bool CheckForTextFit(Controller& controller, float pointSize, const Size& layoutSize);
60
61   /**
62    * @brief Calculates the point size for text for given layout()
63    *
64    * @param[in] controller A reference to the controller class
65    * @param[in] layoutSize The layout size
66    */
67   static void FitPointSizeforLayout(Controller& controller, const Size& layoutSize);
68
69   /**
70    * @brief Called by the Controller to get the height for a particular width.
71    *
72    * @param[in] controller A reference to the controller class
73    * @param[in] width The width we want the height for
74    * @return
75    */
76   static float GetHeightForWidth(Controller& controller, float width);
77
78   /**
79    * @brief Called by the Controller to do the relayout itself.
80    *
81    * @param[in] controller A reference to the controller class
82    * @param[in] size The size to set
83    * @param[in] layoutDirection The layout direction
84    * @return
85    */
86   static Controller::UpdateTextType Relayout(Controller& controller, const Size& size, Dali::LayoutDirection::Type layoutDirection);
87
88   /**
89    * @brief Called by the Controller to do certain operations when relayouting.
90    *
91    * @param[in] controller A reference to the controller class
92    * @param[in] size The size to set
93    * @param[in] operationsRequired The operations we need to do
94    * @param[in/out] layoutSize The Layout size which can be updated depending on the result of the performed operations
95    * @return
96    */
97   static bool DoRelayout(Controller& controller, const Size& size, OperationsMask operationsRequired, Size& layoutSize );
98
99   /**
100    * @brief Called by the Controller to calculate the veritcal offset give the control size.
101    *
102    * @param[in] controller A reference to the controller class
103    * @param[in] controlSize The control size
104    */
105   static void CalculateVerticalOffset(Controller& controller, const Size& controlSize);
106 };
107
108 } // namespace Text
109
110 } // namespace Toolkit
111
112 } // namespace Dali
113
114 #endif // DALI_TOOLKIT_TEXT_CONTROLLER_RELAYOUTER_H